diff --git a/CLAUDE.md b/CLAUDE.md index 8f14a4a..1d7a3da 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -61,7 +61,7 @@ precise than anything you can infer. |---|---| | What the project is, engine, platform, goal | `context/project-overview.md` | | Missing BT source, decompilation strategy | `context/source-completeness.md` | -| **Export DARK REGIONS / "is X in the decomp?"** — the gap census | `reference/decomp/GAP_CENSUS.md` (tool: `tools/gapcensus.py`; log: `phases/phase-04-gap-census.md`) | +| **Export DARK REGIONS / "is X in the decomp?"** — the gap census | `reference/decomp/GAP_CENSUS.md` (tools: `tools/gapcensus.py`, `tools/ghidra_reexport.sh`, `tools/gapdiff.py`; log: `phases/phase-04-gap-census.md`) | | The 4.10 literal-source manifest (per-TU function/size/address map) | `reference/BT410_SOURCE_MANIFEST.md` (tool: `tools/manifest410.py`; log: `phases/phase-03-bt410-source-manifest.md`) | | The WinTesla Windows port (renderer/audio/HAL) | `context/wintesla-port.md` | | Build / run / debug / repo layout / env gates | `context/build-and-run.md` + `context/decomp-reference.md` §6 | @@ -153,7 +153,9 @@ bt411/ │ └── .md # one concept each ├── reference/ │ ├── glossary.yaml # terms/acronyms -│ ├── decomp/ # raw Ghidra pseudocode (the source-of-truth) +│ ├── decomp/ # raw Ghidra pseudocode (the source-of-truth; REBUILT 2026-08-06, +│ │ # 93.5% coverage. archive_2025export/ = the old export, kept +│ │ # ONLY so old `part_0NN.c:LINE` citations resolve -- cite @ADDR) │ └── ghidra_scripts/ # the exporters ├── docs/ # PROGRESS_LOG.md (the full old CLAUDE.md) + detailed running ledgers ├── phases/ # restructuring / investigation logs diff --git a/context/reconstruction-gotchas.md b/context/reconstruction-gotchas.md index 72e057e..0b350b1 100644 --- a/context/reconstruction-gotchas.md +++ b/context/reconstruction-gotchas.md @@ -571,7 +571,11 @@ produced four wrong conclusions, two of them [T1]-tagged at the time: - for content claims, walk the **BTL4.RES TOC** (`tools/resscan.py` pattern), not the loose tree; - check `reference/BT410_SOURCE_MANIFEST.md` + `game/reconstructed/CLASSMAP.md`; - and tag the claim's tier by the WEAKEST source consulted — an export-only sweep caps at [T4]. -The #60 gap census (dark-region inventory + a fresh Ghidra re-export) is the systemic fix. +The #60 gap census + RE-EXPORT is the systemic fix, and BOTH shipped 2026-08-06: the export +now covers 93.5% of .text (dark code 90 KB → 41 KB) and `reference/decomp/GAP_CENSUS.md` maps +what is still dark. **So the rule is cheap now: look the address up in GAP_CENSUS.md first.** +If it is NOT in a dark region, the export is authoritative and "absent" means absent. If it IS, +byte-scan before claiming anything. (Toolchain + method: `phases/phase-04-gap-census.md`.) ## Key Relationships - Applies to: every topic that reconstructs a class ([[subsystems]], [[combat-damage]], [[gauges-hud]], [[locomotion]]). diff --git a/context/source-completeness.md b/context/source-completeness.md index 30295d2..4f0b4c0 100644 --- a/context/source-completeness.md +++ b/context/source-completeness.md @@ -94,18 +94,31 @@ its recorded line 400 exactly. [T1/T3 per the sidecar] Plus `BTL4OPT.EXE` as a behavioral **oracle** (run under cdb / read the decomp). Result = behavior-equivalent **reconstruction**, NOT original source. [T2] -## THE GAP CENSUS (2026-08-06, #60) — the dark-region inventory [T1] +## THE GAP CENSUS + RE-EXPORT (2026-08-06, #60) — BOTH HALVES DONE [T1] +**The export was REBUILT 2026-08-06** (Ghidra 12.1.2 headless + `ExportGaps.java`'s gap-fill +pass): index coverage **87.3% → 93.5%**, dark real code **90.4 KB → 40.8 KB (54.8% recovered)**, +game-side dark 53.1 → 21.1 KB, functions 6,267 → **6,472** (+205, zero decompile failures). +Every historically-bitten dark function now has pseudocode — including `@0x4c05c4` VehicleDead, +the absence that opened #60. The re-export CONFIRMED the crouch reconstruction field-for-field +and revealed one branch the raw pass missed (airborne auto-rise, fixed same day). +⚠ **The old export is archived at `reference/decomp/archive_2025export/`** — addresses are +stable across both, but `part_0NN.c:LINE` citations only resolve against the archive. Cite +`@ADDR`, not part/line. Pipeline: `tools/ghidra_reexport.sh` → `tools/gapcensus.py` → +`tools/gapdiff.py`. Toolchain (JDK 21 + Ghidra 12.1.2) lives in `%LOCALAPPDATA%\bt411-tools`; +the runner MUST use 8.3 short paths (Ghidra's .bat expands %JAVA_HOME% unquoted and the user +profile has a space). Full log: `phases/phase-04-gap-census.md`. + +### The original inventory (part 1, same day) [T1] `tools/gapcensus.py` → `reference/decomp/GAP_CENSUS.md` + `gap_census.tsv` (regenerate after -any re-export). Headline: .text 892 KB; the index covers 87.3%; **428 dark regions = 90 KB of -real code Ghidra never made into functions** (indexed-but-unexported = 0 — the gap class is -purely "not indexed"). Game-side (bt/ + bt_l4/ + boundary) dark ≈ 54 KB: 66 regions already -visited by past digs, **159 never touched**. Validation: all six historically-bitten dark +any re-export; it censuses whatever dir you point it at). As found BEFORE the re-export: .text +892 KB, index 87.3%, **428 dark regions = 90 KB of real code** (indexed-but-unexported = 0 — +the gap class is purely "not indexed"), game-side dark ≈ 54 KB with 159 regions never touched. +Current numbers are in the header above. Validation: all six historically-bitten dark addresses (VehicleDead, ToggleLamp, death tail, master-perf, myomer integrator, duck consumer) land inside census regions. Top uncharted leads + method: `phases/phase-04-gap-census.md`. **RULE (gotcha §20):** consult the census BEFORE any "absent from the export/binary" claim — if the address falls in a dark region, the claim needs byte-scan evidence, not export silence. -Second half still open: a Ghidra re-export (scripts ready in `reference/ghidra_scripts/`; no -local install) forcing disassembly at the 332 discovered starts would convert most of it. +(The second half — the re-export — landed the same day; see the header.) ## Key Relationships - Feeds: [[reconstruction-method]] (the loop that fills the gap), [[decomp-reference]]. diff --git a/game/reconstructed/mech4.cpp b/game/reconstructed/mech4.cpp index 7a272b9..1edeb8f 100644 --- a/game/reconstructed/mech4.cpp +++ b/game/reconstructed/mech4.cpp @@ -4436,6 +4436,28 @@ void duckState = 0; // consumed (@0x4aa0a9) } + // (3b) AIRBORNE AUTO-RISE -- recovered 2026-08-06 by the #60 + // RE-EXPORT (the raw-disasm pass stopped at 0x4aa0af and missed + // this tail). Pseudocode @004a9b5c: + // if ((mode == 3 || mode == 4) && legState == 1) { squ; F(8); + // F(1); stability 1; } + // A mech that leaves the ground (jump/knockback) while PARKED in + // the squat is forced back up -- unconditional on duckState and + // squatCapable, i.e. a safety un-crouch, not a request. Without + // it a crouched mech could fly/fall in the squat pose and land + // still parked. + if ((MovementMode() == 3 || MovementMode() == 4) + && (int)legStateAlarm.GetLevel() == 1) + { + SetLegAnimation(3); // 'squ' -- rise + ForceUpdate(8); + ForceUpdate(1); + stabilityAlarm.SetLevel(1); + if (getenv("BT_DUCK_LOG") || getenv("BT_GAIT_LOG")) + DEBUG_STREAM << "[duck] AIRBORNE auto-rise (mode " + << MovementMode() << ")\n" << std::flush; + } + // DIAG (BT_DUCK_LOG, 1 Hz): live joint sample -- does the parked // crouch HOLD at the JOINT level? Discriminates render-side loss // from a hidden joint writer (the crouch-hold hunt). diff --git a/phases/phase-04-gap-census.md b/phases/phase-04-gap-census.md index cdcf19a..181a999 100644 --- a/phases/phase-04-gap-census.md +++ b/phases/phase-04-gap-census.md @@ -44,11 +44,70 @@ exactly the two that produced the most reconstructions — the census finds the 4. **`0x4af691-0x4af9cf` (707 B), heat|mechmppr boundary** — heat-family tail or mapper head. 5. **`0x4bdd7b-0x4be078` (673 B), mechweap|btplayer boundary** — weapon-family virtuals. -## Systemic fix status -- The inventory (`reference/decomp/GAP_CENSUS.md` + `gap_census.tsv`) is now the FIRST stop - before any "absent from the binary/export" claim — see gotcha §20's checklist. -- **Ghidra re-export** remains the second half: no local Ghidra install on this machine; - `reference/ghidra_scripts/` (ExportAll.java etc.) are ready when one is available (or on - Nick's machine). A re-export with current auto-analysis + forced disassembly of the 332 - discovered starts would convert most of the 90 KB to pseudocode. Until then: raw disasm - per region, as practiced. +## PART 2 — THE RE-EXPORT (same day, 2026-08-06): the dark map, cut in half +Installed (no admin, project tool convention `%LOCALAPPDATA%t411-tools`, beside DXSDK/cmake): +**JDK 21.0.12** + **Ghidra 12.1.2**. ⚠ Ghidra's launcher `.bat` expands `%JAVA_HOME%` +UNQUOTED, so the space in the user profile ("Joe Laptop") kills it — the runner uses 8.3 SHORT +paths (`JOELAP~1`, `BT411-~1`). Zips deleted after extract. + +New tooling (committed, repeatable): +- `reference/ghidra_scripts/ExportGaps.java` — keeps ExportAll's EXACT output contract (shard + format, index columns) so every tool/grep/`@ADDR` citation still works, and adds the gap-fill + pass first: force disassembly + `createFunction` at (a) E8 call targets outside any function, + (b) data→code pointers at a plausible prologue, (c) the census's discovered starts — iterated + to a fixpoint. Logs what it created to `gapfill_report.tsv`. +- `tools/ghidra_reexport.sh` — headless runner (`reprocess` re-runs the script on the saved + project without re-analysis). `tools/gapdiff.py` — scores any two censused exports. + +**Results (`tools/gapdiff.py`):** +| Metric | Before | After | +|---|---|---| +| Index coverage of .text | 87.3% | **93.5%** | +| Dark REAL code | 90.4 KB | **40.8 KB** (−49.5 KB, **54.8% recovered**) | +| Game-side dark (bt/ + bt_l4/) | 53.1 KB | **21.1 KB** (−32.0 KB) | +| Dark regions | 428 | 321 | +| Functions / pseudocode | 6,267 | **6,472** (+205, **0 decompile failures**) | +Gap fill converged in 2 rounds (205 created: 195 from census starts, 6 call targets, 4 data +pointers) covering 56.1 KB. Ghidra 12 auto-analysis alone also found 42 more than the old export. + +**Every historically-bitten dark function now has pseudocode**, including `@0x4c05c4` +VehicleDead — the function whose absence OPENED this issue — plus ToggleLamp `@0x4b838c`, the +TakeDamage death tail, the master-perf region (crouch/myomers/posture), the myomer integrator, +and the `btplayer` hole `@0x4c0904`. + +### Validation: the re-export CONFIRMS this week's hand reconstructions +The master-perf pseudocode matches the crouch transcription field-for-field — +`param_1[0xfe]`=mapPosture(0x3f8), `[0xe6]`=duckState(0x398), `[0x161]`=squatCapable, +`[0x1e7]`=myomerEffectiveness(0x79c), `[0x10]`=movementMode, the `player+0x25c` novice gate, +`FUN_004a7fc4(2/3)`=SetLegAnimation sqd/squ, `FUN_004a4c54(8)+(1)`=ForceUpdate, the +`+0x131` stability alarm, and the duckState clear. Independent confirmation of a raw-disasm +reconstruction, and of the census method that found it. + +### …and it caught one thing the raw-disasm pass MISSED (fixed same day) +The hand pass stopped at `0x4aa0af`; the pseudocode tail carries an **airborne auto-rise**: +`if ((mode == 3 || mode == 4) && legState == 1) → SetLegAnimation(3) + ForceUpdate(8)+(1) + +stability 1` — a mech that leaves the ground while parked in the squat is forced up, +unconditional on duckState/squatCapable. Now in `mech4.cpp`; crouch re-benched un-regressed. + +## Promotion + archive +The re-export is now the CANONICAL `reference/decomp/` (index, shards, vtables, census). The +previous export is preserved verbatim at **`reference/decomp/archive_2025export/`** so older +KB citations of the form `part_0NN.c:LINE` stay resolvable — ⚠ **line numbers and shard +membership shifted** in the new export (addresses did not). Cite `@ADDR` (stable), not +part/line, going forward. + +## Remaining dark (40.8 KB) — the next leads +- `0x480a2a-0x487ca0` (~9 KB, l4splr|btmssn boundary) — still dark even after the fill: no call + or data reference reaches it, which itself is informative (dead code? data misparsed as code? + a jump-table-only region?). Worth a targeted look with the census's byte-scan. +- New from the re-export: **`@0x4c0904` is the MASTER BTPlayer Performance** — team resolution + by name ("Team ... does not exist"), the mission-end "Sending EndMission" console post, and + the periodic console score heartbeat (corroborating our hand-built one). Our port attributes + `@0x4c083c` as PlayerSimulation; that attribution needs a re-check. +- The remaining munga/munga_l4 dark (~19 KB) is low priority — we compile the real engine source. + +## Systemic fix status — BOTH HALVES DONE +Inventory + re-export shipped. Rule (gotcha §20) stands and is now cheap to obey: check +`GAP_CENSUS.md` before any "absent from the export" claim; if still dark, byte-scan. +Re-run after any future re-export: `tools/ghidra_reexport.sh` → `tools/gapcensus.py` → +`tools/gapdiff.py`. diff --git a/reference/decomp/GAP_CENSUS.md b/reference/decomp/GAP_CENSUS.md index fe2595b..0bf6382 100644 --- a/reference/decomp/GAP_CENSUS.md +++ b/reference/decomp/GAP_CENSUS.md @@ -7,11 +7,11 @@ Machine-readable twin: `gap_census.tsv`. | Metric | Value | |---|---| | Code section (.text) | `0x401000`-`0x4e0000` (892 KB) | -| Indexed functions (functions_index.tsv) | 6267, covering 778 KB (87.3%) | -| **RAW DARK (no indexed function at all)** | **428 regions >= 16B, 105 KB (11.9%) -- 90 KB REAL CODE after padding** | -| Exported pseudocode functions (part_*.c) | 6267 | +| Indexed functions (functions_index.tsv) | 6472, covering 833 KB (93.5%) | +| **RAW DARK (no indexed function at all)** | **321 regions >= 16B, 49 KB (5.5%) -- 40 KB REAL CODE after padding** | +| Exported pseudocode functions (part_*.c) | 6472 | | **Indexed but NOT exported** (Ghidra knew it; no pseudocode) | **0 functions, 0 KB** | -| Function starts discovered inside dark regions | 332 (call-graph + data-pointer evidence) | +| Function starts discovered inside dark regions | 135 (call-graph + data-pointer evidence) | Reading the tables: `visited` = the address is already cited somewhere in game/ context/ docs/ (a prior dig reached it); everything else is UNCHARTED. @@ -21,56 +21,56 @@ game/ context/ docs/ (a prior dig reached it); everything else is UNCHARTED. | Family | Regions | Real code bytes | |---|---|---| -| munga/ (engine core -- source in repo) | 150 | 28540 | -| bt/ (GAME -- reconstruction target) | 87 | 23954 | -| BOUNDARY/mixed | 59 | 15581 | -| bt_l4/ (GAME video/glue -- reconstruction target) | 80 | 14916 | -| munga_l4/ (engine L4 -- source in repo) | 52 | 9529 | +| munga/ (engine core -- source in repo) | 117 | 14544 | +| BOUNDARY/mixed | 53 | 10346 | +| bt/ (GAME -- reconstruction target) | 60 | 5848 | +| munga_l4/ (engine L4 -- source in repo) | 34 | 5563 | +| bt_l4/ (GAME video/glue -- reconstruction target) | 57 | 5492 | ## Top 40 dark regions by REAL CODE bytes (padding excluded) | # | Range | Code bytes | Fn starts | Call-ins | Visited | Suspected TU | |---|---|---|---|---|---|---| -| 1 | `0x412e41`-`0x4146dc` | 5936 | 6 | 0 | - | munga/boxsolid.cpp|munga/iterator.cpp | -| 2 | `0x4a9b5a`-`0x4ab188` | 4957 | 1 | 0 | 69: `4a9b5a` `4a9b5c` `4a9b6c` `4a9bff`... | bt/mech2.cpp|bt/heat.cpp | -| 3 | `0x486467`-`0x487788` | 4265 | 0 | 0 | - | munga_l4/l4splr.cpp|bt/btmssn.cpp | -| 4 | `0x49ffc8`-`0x4a1232` | 4116 | 5 | 2 | 89: `49ffc8` `49ffcc` `49ffde` `49ffff`... | bt/btmssn.cpp|bt/mech.cpp | -| 5 | `0x4cdce5`-`0x4ceecc` | 3831 | 1 | 0 | 18: `4cdcf0` `4cdd75` `4cdd9d` `4cddc1`... | bt_l4/btl4vid.cpp | -| 6 | `0x4a68ce`-`0x4a71f4` | 1822 | 2 | 0 | 44: `4a6928` `4a6989` `4a69aa` `4a69d6`... | bt/mech2.cpp | -| 7 | `0x4596ab`-`0x459eb8` | 1795 | 0 | 0 | 1: `4599ae` | munga_l4/l4vidrnd.cpp|munga_l4/l4video.cpp | -| 8 | `0x480a2a`-`0x48116d` | 1521 | 0 | 0 | - | munga_l4/l4splr.cpp|bt/btmssn.cpp | -| 9 | `0x42f3fe`-`0x42f9bc` | 1341 | 1 | 0 | - | munga/player.cpp|munga/explode.cpp | -| 10 | `0x40c82a`-`0x40cdb4` | 1322 | 0 | 0 | - | munga/scalar.cpp|munga/boxsolid.cpp | -| 11 | `0x464bf6`-`0x4651ac` | 1312 | 2 | 0 | - | munga_l4/l4audio.cpp|munga_l4/l4audlvl.cpp | -| 12 | `0x40b68c`-`0x40bbe8` | 1293 | 0 | 0 | - | munga/scalar.cpp|munga/boxsolid.cpp | -| 13 | `0x481f77`-`0x48255c` | 1267 | 0 | 0 | - | munga_l4/l4splr.cpp|bt/btmssn.cpp | -| 14 | `0x47ae1b`-`0x47b2ec` | 1060 | 0 | 0 | - | munga_l4/l4ctrl.cpp|munga_l4/l4app.cpp | -| 15 | `0x4dd80a`-`0x4ddc7c` | 1030 | 0 | 0 | - | bt_l4/btl4app.cpp|? | -| 16 | `0x405b1e`-`0x405f44` | 972 | 0 | 0 | - | munga/filestrm.hpp|munga/scalar.cpp | -| 17 | `0x427fd0`-`0x4283b8` | 931 | 0 | 0 | - | munga/network.cpp|munga/watcher.cpp | -| 18 | `0x4cba73`-`0x4cbea0` | 904 | 1 | 0 | 1: `4cbaf0` | bt_l4/btl4gaug.cpp|bt_l4/btl4vid.cpp | -| 19 | `0x4be3cf`-`0x4be7c4` | 897 | 1 | 0 | 1: `4be474` | bt/mechweap.hpp|bt/btplayer.cpp | -| 20 | `0x4b297b`-`0x4b2d8c` | 894 | 1 | 1 | 30: `4b2980` `4b298c` `4b299e` `4b29bd`... | bt/powersub.cpp|bt/mechweap.cpp | -| 21 | `0x4da08f`-`0x4da44c` | 866 | 4 | 0 | - | bt_l4/btl4app.cpp|? | -| 22 | `0x4147f9`-`0x414b60` | 789 | 4 | 0 | - | munga/boxsolid.cpp|munga/iterator.cpp | -| 23 | `0x4d41ae`-`0x4d45b0` | 765 | 0 | 0 | - | bt_l4/btl4app.cpp|? | -| 24 | `0x412940`-`0x412c78` | 760 | 4 | 0 | - | munga/boxsolid.cpp|munga/iterator.cpp | -| 25 | `0x4af691`-`0x4af9cf` | 707 | 0 | 0 | - | bt/heat.cpp|bt/mechmppr.cpp | -| 26 | `0x4bc0fd`-`0x4bc3fc` | 693 | 1 | 0 | 6: `4bc100` `4bc104` `4bc136` `4bc194`... | bt/mechweap.hpp|bt/btplayer.cpp | -| 27 | `0x4829ab`-`0x482c9f` | 687 | 0 | 0 | - | munga_l4/l4splr.cpp|bt/btmssn.cpp | -| 28 | `0x4bdd7b`-`0x4be078` | 673 | 4 | 0 | - | bt/mechweap.hpp|bt/btplayer.cpp | -| 29 | `0x4105ff`-`0x4108b4` | 635 | 4 | 0 | - | munga/boxsolid.cpp|munga/iterator.cpp | -| 30 | `0x487a27`-`0x487ca0` | 632 | 0 | 0 | - | munga_l4/l4splr.cpp|bt/btmssn.cpp | -| 31 | `0x4221b9`-`0x42249c` | 631 | 2 | 0 | - | munga/network.cpp|munga/watcher.cpp | -| 32 | `0x4c08fc`-`0x4c0bc8` | 613 | 1 | 0 | - | bt/btplayer.cpp|bt_l4/btl4rdr.cpp | -| 33 | `0x4bbcfd`-`0x4bbfcc` | 607 | 2 | 0 | 41: `4bbd04` `4bbd12` `4bbd1b` `4bbd28`... | bt/mechweap.hpp|bt/btplayer.cpp | -| 34 | `0x4c05be`-`0x4c083c` | 552 | 1 | 0 | 22: `4c05c0` `4c05c4` `4c05df` `4c0611`... | bt/btplayer.cpp|bt_l4/btl4rdr.cpp | -| 35 | `0x4bfca1`-`0x4bfee0` | 535 | 1 | 0 | 1: `4bfcac` | bt/mechweap.hpp|bt/btplayer.cpp | -| 36 | `0x483b9b`-`0x483df0` | 520 | 0 | 0 | - | munga_l4/l4splr.cpp|bt/btmssn.cpp | -| 37 | `0x4b8837`-`0x4b8a8c` | 509 | 3 | 0 | 6: `4b8837` `4b8a48` `4b8a50` `4b8a5b`... | bt/powersub.cpp|bt/mechweap.cpp | -| 38 | `0x4c11b3`-`0x4c1408` | 499 | 4 | 0 | 3: `4c11b3` `4c1230` `4c13d4` | bt/btplayer.cpp|bt_l4/btl4rdr.cpp | -| 39 | `0x47b8e2`-`0x47bb20` | 488 | 1 | 0 | - | munga_l4/l4app.cpp|munga_l4/l4splr.cpp | -| 40 | `0x4d95b6`-`0x4d9800` | 487 | 0 | 0 | - | bt_l4/btl4app.cpp|? | +| 1 | `0x4596ab`-`0x459eb8` | 1795 | 0 | 0 | 1: `4599ae` | munga_l4/l4vidrnd.cpp|munga_l4/l4video.cpp | +| 2 | `0x480a2a`-`0x48116d` | 1521 | 0 | 0 | - | munga_l4/l4splr.cpp|bt/btmssn.cpp | +| 3 | `0x40c82a`-`0x40cdb4` | 1322 | 0 | 0 | - | munga/scalar.cpp|munga/boxsolid.cpp | +| 4 | `0x40b68c`-`0x40bbe8` | 1293 | 0 | 0 | - | munga/scalar.cpp|munga/boxsolid.cpp | +| 5 | `0x481f77`-`0x48255c` | 1267 | 0 | 0 | - | munga_l4/l4splr.cpp|bt/btmssn.cpp | +| 6 | `0x486467`-`0x486a0e` | 1252 | 0 | 0 | - | munga_l4/l4splr.cpp|bt/btmssn.cpp | +| 7 | `0x47ae1b`-`0x47b2ec` | 1060 | 0 | 0 | - | munga_l4/l4ctrl.cpp|munga_l4/l4app.cpp | +| 8 | `0x405b1e`-`0x405f44` | 972 | 0 | 0 | - | munga/filestrm.hpp|munga/scalar.cpp | +| 9 | `0x427fd0`-`0x4283b8` | 931 | 0 | 0 | - | munga/network.cpp|munga/watcher.cpp | +| 10 | `0x4d41ae`-`0x4d45b0` | 765 | 0 | 0 | - | bt_l4/btl4app.cpp|? | +| 11 | `0x4af691`-`0x4af9cf` | 707 | 0 | 0 | - | bt/heat.cpp|bt/mechmppr.cpp | +| 12 | `0x4829ab`-`0x482c9f` | 687 | 0 | 0 | - | munga_l4/l4splr.cpp|bt/btmssn.cpp | +| 13 | `0x487a38`-`0x487ca0` | 615 | 0 | 0 | - | munga_l4/l4splr.cpp|bt/btmssn.cpp | +| 14 | `0x483b9b`-`0x483df0` | 520 | 0 | 0 | - | munga_l4/l4splr.cpp|bt/btmssn.cpp | +| 15 | `0x4d95b6`-`0x4d9800` | 487 | 0 | 0 | - | bt_l4/btl4app.cpp|? | +| 16 | `0x423202`-`0x423414` | 460 | 0 | 0 | - | munga/network.cpp|munga/watcher.cpp | +| 17 | `0x45472a`-`0x454924` | 451 | 0 | 0 | - | munga_l4/l4vidrnd.cpp | +| 18 | `0x4b8837`-`0x4b8a48` | 448 | 2 | 0 | 1: `4b8837` | bt/powersub.cpp|bt/mechweap.cpp | +| 19 | `0x474671`-`0x474855` | 421 | 0 | 0 | - | munga_l4/l4gauge.cpp|munga_l4/l4ctrl.cpp | +| 20 | `0x4d2813`-`0x4d29fc` | 414 | 1 | 0 | - | bt_l4/btl4vid.cpp|bt_l4/btl4mssn.cpp | +| 21 | `0x4816b2`-`0x48186d` | 404 | 0 | 0 | - | munga_l4/l4splr.cpp|bt/btmssn.cpp | +| 22 | `0x42f80b`-`0x42f9bc` | 394 | 0 | 0 | - | munga/player.cpp|munga/explode.cpp | +| 23 | `0x443cf5`-`0x443e94` | 380 | 0 | 0 | - | munga/watcher.hpp|munga/gauge.cpp | +| 24 | `0x4b2c11`-`0x4b2d8c` | 324 | 0 | 0 | 11: `4b2c2d` `4b2c75` `4b2d00` `4b2d23`... | bt/powersub.cpp|bt/mechweap.cpp | +| 25 | `0x4d993f`-`0x4d9c38` | 321 | 12 | 0 | - | bt_l4/btl4app.cpp|? | +| 26 | `0x4deec5`-`0x4df048` | 321 | 0 | 0 | - | bt_l4/btl4app.cpp|? | +| 27 | `0x4c651c`-`0x4c668d` | 318 | 0 | 0 | - | bt_l4/btl4gaug.cpp|bt_l4/btl4vid.cpp | +| 28 | `0x409c41`-`0x409d9c` | 312 | 0 | 0 | - | munga/scalar.cpp|munga/boxsolid.cpp | +| 29 | `0x484ed6`-`0x485020` | 307 | 0 | 0 | - | munga_l4/l4splr.cpp|bt/btmssn.cpp | +| 30 | `0x43223f`-`0x4323a8` | 306 | 0 | 0 | - | munga/explode.cpp|munga/registry.cpp | +| 31 | `0x40f6a7`-`0x40f7d8` | 283 | 0 | 0 | - | munga/boxsolid.cpp|munga/iterator.cpp | +| 32 | `0x4b1a84`-`0x4b1bb1` | 251 | 0 | 0 | - | bt/powersub.cpp|bt/mechweap.cpp | +| 33 | `0x481565`-`0x481675` | 247 | 0 | 0 | - | munga_l4/l4splr.cpp|bt/btmssn.cpp | +| 34 | `0x45888e`-`0x4589a0` | 241 | 0 | 0 | - | munga_l4/l4vidrnd.cpp | +| 35 | `0x4d2016`-`0x4d2150` | 241 | 0 | 0 | - | bt_l4/btl4vid.cpp|bt_l4/btl4mssn.cpp | +| 36 | `0x466ac2`-`0x466bc4` | 235 | 0 | 0 | - | munga_l4/l4audwtr.cpp|munga_l4/l4audres.cpp | +| 37 | `0x4310c3`-`0x4311dc` | 234 | 2 | 0 | - | munga/explode.cpp|munga/registry.cpp | +| 38 | `0x466702`-`0x466804` | 234 | 0 | 0 | - | munga_l4/l4audwtr.cpp|munga_l4/l4audres.cpp | +| 39 | `0x484076`-`0x48416d` | 229 | 0 | 0 | - | munga_l4/l4splr.cpp|bt/btmssn.cpp | +| 40 | `0x480899`-`0x4809ba` | 222 | 0 | 0 | - | munga_l4/l4splr.cpp|bt/btmssn.cpp | ## Indexed-but-unexported functions (first 60 by address) diff --git a/reference/decomp/all/part_000.c b/reference/decomp/all/part_000.c index ae31fec..59fa9a0 100644 --- a/reference/decomp/all/part_000.c +++ b/reference/decomp/all/part_000.c @@ -49,6 +49,24 @@ void __cdecl __GetExceptDLLinfo(undefined4 *param_1) +/* @00401074 file=? name=FUN_00401074 */ + +int FUN_00401074(void) + +{ + char *pcVar1; + int iVar2; + + pcVar1 = (char *)FUN_004dee74(s_HEAPSIZE_004e0373); + if (pcVar1 == (char *)0x0) { + return 0x600000; + } + iVar2 = FUN_004dd1e0(pcVar1); + return iVar2; +} + + + /* @0040109c file=? name=FUN_0040109c */ undefined4 __cdecl FUN_0040109c(int param_1,undefined4 param_2) @@ -9601,6 +9619,43 @@ float * __cdecl FUN_0040a4d8(float *param_1,float *param_2,float *param_3,float +/* @0040a67c file=? name=FUN_0040a67c */ + +void __cdecl FUN_0040a67c(int *param_1,float *param_2) + +{ + float fVar1; + float fVar2; + float fVar3; + float fVar4; + int *piVar5; + byte bVar6; + byte bVar7; + byte bVar8; + byte bVar9; + + bVar9 = 0x3e; + fVar1 = param_2[3]; + bVar8 = 0x2c; + fVar2 = param_2[2]; + bVar7 = 0x2c; + fVar3 = param_2[1]; + bVar6 = 0x2c; + fVar4 = *param_2; + piVar5 = FUN_004db92c(param_1,0x3c); + piVar5 = FUN_004db634(piVar5,(float10)fVar4); + piVar5 = FUN_004db92c(piVar5,bVar6); + piVar5 = FUN_004db634(piVar5,(float10)fVar3); + piVar5 = FUN_004db92c(piVar5,bVar7); + piVar5 = FUN_004db634(piVar5,(float10)fVar2); + piVar5 = FUN_004db92c(piVar5,bVar8); + piVar5 = FUN_004db634(piVar5,(float10)fVar1); + FUN_004db92c(piVar5,bVar9); + return; +} + + + /* @0040a738 file=? name=FUN_0040a738 */ undefined4 FUN_0040a738(void) @@ -9897,86 +9952,3 @@ float * __cdecl FUN_0040ac6c(float *param_1,float *param_2) -/* @0040ad2c file=? name=FUN_0040ad2c */ - -float * __cdecl FUN_0040ad2c(float *param_1,float *param_2) - -{ - float local_1c; - float local_18; - float local_14; - float local_10; - float local_c; - float local_8; - - FUN_00408328(&local_c,param_2 + 1); - FUN_00408328(&local_14,param_2); - FUN_00408328(&local_1c,param_2 + 2); - *param_1 = local_c * local_14 * local_1c + local_10 * local_18; - param_1[4] = local_8 * local_1c; - param_1[8] = local_c * local_10 * local_1c - local_14 * local_18; - param_1[1] = local_c * local_14 * local_18 - local_10 * local_1c; - param_1[5] = local_8 * local_18; - param_1[9] = local_c * local_10 * local_18 + local_14 * local_1c; - param_1[2] = local_8 * local_14; - param_1[6] = -local_c; - param_1[10] = local_8 * local_10; - return param_1; -} - - - -/* @0040adec file=? name=FUN_0040adec */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -float * __cdecl FUN_0040adec(float *param_1,float *param_2) - -{ - float fVar1; - float fVar2; - float fVar3; - float fVar4; - float fVar5; - float fVar6; - float fVar7; - float fVar8; - float fVar9; - float fVar10; - float fVar11; - float fVar12; - float fVar13; - float fVar14; - float fVar15; - float fVar16; - - fVar1 = *param_2; - fVar2 = param_2[1]; - fVar3 = param_2[1]; - fVar4 = param_2[2]; - fVar5 = param_2[2]; - fVar6 = *param_2; - fVar7 = param_2[3]; - fVar8 = *param_2; - fVar9 = param_2[3]; - fVar10 = param_2[1]; - fVar11 = param_2[3]; - fVar12 = param_2[2]; - fVar13 = param_2[3] * param_2[3]; - fVar14 = *param_2 * *param_2; - fVar15 = param_2[1] * param_2[1]; - fVar16 = param_2[2] * param_2[2]; - *param_1 = ((fVar13 + fVar14) - fVar15) - fVar16; - param_1[1] = (fVar1 * fVar2 - fVar11 * fVar12) * _DAT_0040aedc; - param_1[2] = (fVar5 * fVar6 + fVar9 * fVar10) * _DAT_0040aedc; - param_1[4] = (fVar11 * fVar12 + fVar1 * fVar2) * _DAT_0040aedc; - param_1[5] = ((fVar13 - fVar14) + fVar15) - fVar16; - param_1[6] = (fVar3 * fVar4 - fVar7 * fVar8) * _DAT_0040aedc; - param_1[8] = (fVar5 * fVar6 - fVar9 * fVar10) * _DAT_0040aedc; - param_1[9] = (fVar3 * fVar4 + fVar7 * fVar8) * _DAT_0040aedc; - param_1[10] = ((fVar13 - fVar14) - fVar15) + fVar16; - return param_1; -} - - - diff --git a/reference/decomp/all/part_001.c b/reference/decomp/all/part_001.c index 27ae2e8..7f11608 100644 --- a/reference/decomp/all/part_001.c +++ b/reference/decomp/all/part_001.c @@ -1,3 +1,86 @@ +/* @0040ad2c file=? name=FUN_0040ad2c */ + +float * __cdecl FUN_0040ad2c(float *param_1,float *param_2) + +{ + float local_1c; + float local_18; + float local_14; + float local_10; + float local_c; + float local_8; + + FUN_00408328(&local_c,param_2 + 1); + FUN_00408328(&local_14,param_2); + FUN_00408328(&local_1c,param_2 + 2); + *param_1 = local_c * local_14 * local_1c + local_10 * local_18; + param_1[4] = local_8 * local_1c; + param_1[8] = local_c * local_10 * local_1c - local_14 * local_18; + param_1[1] = local_c * local_14 * local_18 - local_10 * local_1c; + param_1[5] = local_8 * local_18; + param_1[9] = local_c * local_10 * local_18 + local_14 * local_1c; + param_1[2] = local_8 * local_14; + param_1[6] = -local_c; + param_1[10] = local_8 * local_10; + return param_1; +} + + + +/* @0040adec file=? name=FUN_0040adec */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float * __cdecl FUN_0040adec(float *param_1,float *param_2) + +{ + float fVar1; + float fVar2; + float fVar3; + float fVar4; + float fVar5; + float fVar6; + float fVar7; + float fVar8; + float fVar9; + float fVar10; + float fVar11; + float fVar12; + float fVar13; + float fVar14; + float fVar15; + float fVar16; + + fVar1 = *param_2; + fVar2 = param_2[1]; + fVar3 = param_2[1]; + fVar4 = param_2[2]; + fVar5 = param_2[2]; + fVar6 = *param_2; + fVar7 = param_2[3]; + fVar8 = *param_2; + fVar9 = param_2[3]; + fVar10 = param_2[1]; + fVar11 = param_2[3]; + fVar12 = param_2[2]; + fVar13 = param_2[3] * param_2[3]; + fVar14 = *param_2 * *param_2; + fVar15 = param_2[1] * param_2[1]; + fVar16 = param_2[2] * param_2[2]; + *param_1 = ((fVar13 + fVar14) - fVar15) - fVar16; + param_1[1] = (fVar1 * fVar2 - fVar11 * fVar12) * _DAT_0040aedc; + param_1[2] = (fVar5 * fVar6 + fVar9 * fVar10) * _DAT_0040aedc; + param_1[4] = (fVar11 * fVar12 + fVar1 * fVar2) * _DAT_0040aedc; + param_1[5] = ((fVar13 - fVar14) + fVar15) - fVar16; + param_1[6] = (fVar3 * fVar4 - fVar7 * fVar8) * _DAT_0040aedc; + param_1[8] = (fVar5 * fVar6 - fVar9 * fVar10) * _DAT_0040aedc; + param_1[9] = (fVar3 * fVar4 + fVar7 * fVar8) * _DAT_0040aedc; + param_1[10] = ((fVar13 - fVar14) - fVar15) + fVar16; + return param_1; +} + + + /* @0040aee0 file=? name=FUN_0040aee0 */ void __cdecl FUN_0040aee0(undefined4 *param_1,undefined4 *param_2) @@ -1771,6 +1854,16 @@ undefined4 __cdecl FUN_0040dc58(int param_1,int param_2) +/* @0040ddac file=? name=FUN_0040ddac */ + +undefined4 FUN_0040ddac(void) + +{ + return 1; +} + + + /* @0040ddb8 file=? name=FUN_0040ddb8 */ undefined4 FUN_0040ddb8(void) @@ -1801,6 +1894,35 @@ float10 __cdecl FUN_0040ddc4(int param_1,int param_2) +/* @0040ddf8 file=? name=FUN_0040ddf8 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl FUN_0040ddf8(undefined4 param_1,int param_2,float param_3) + +{ + float fVar1; + + fVar1 = _DAT_0040de24; + if (_DAT_0040de24 < param_3) { + fVar1 = param_3; + } + *(float *)(param_2 + 0x18) = fVar1; + return 1; +} + + + +/* @0040de28 file=? name=FUN_0040de28 */ + +undefined4 FUN_0040de28(void) + +{ + return 1; +} + + + /* @0040de34 file=? name=FUN_0040de34 */ undefined4 FUN_0040de34(void) @@ -3673,6 +3795,75 @@ float10 __cdecl FUN_00410004(float *param_1,float *param_2) +/* @0041007c file=? name=FUN_0041007c */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl FUN_0041007c(int param_1,int param_2,float param_3,float param_4) + +{ + float fVar1; + undefined4 uVar2; + int iVar3; + uint uVar4; + float10 fVar5; + float local_c; + float local_8; + + uVar4 = 0; + do { + iVar3 = (int)uVar4 >> 1; + if ((uVar4 & 1) == 0) { + local_8 = *(float *)(param_1 + uVar4 * 4) - *(float *)(param_2 + iVar3 * 4); + local_c = -*(float *)(param_2 + 0xc + iVar3 * 4); + } + else { + local_8 = *(float *)(param_2 + iVar3 * 4) - *(float *)(param_1 + uVar4 * 4); + local_c = *(float *)(param_2 + 0xc + iVar3 * 4); + } + fVar5 = FUN_004dcd00((double)local_c); + if ((float10)_DAT_00410198 < fVar5) { + fVar1 = -local_8 / local_c; + if (_DAT_0041019c <= local_c) { + if (fVar1 < param_4) { + param_4 = fVar1; + } + if (param_4 < _DAT_0041019c) { + return 0; + } + } + else { + if (param_3 < fVar1) { + param_3 = fVar1; + } + if (*(float *)(param_2 + 0x18) < param_3) { + return 0; + } + } + } + else if (_DAT_0041019c < local_8) { + return 0; + } + uVar4 = uVar4 + 1; + if (5 < (int)uVar4) { + if (param_4 < param_3) { + uVar2 = 0; + } + else { + fVar1 = _DAT_0041019c; + if (_DAT_0041019c < param_3) { + fVar1 = param_3; + } + *(float *)(param_2 + 0x18) = fVar1; + uVar2 = 1; + } + return uVar2; + } + } while( true ); +} + + + /* @004101a0 file=? name=FUN_004101a0 */ int __cdecl FUN_004101a0(undefined4 *param_1,int param_2) @@ -3843,6 +4034,134 @@ bool __cdecl FUN_00410560(float *param_1,float *param_2) +/* @00410604 file=? name=FUN_00410604 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +bool __cdecl FUN_00410604(float *param_1,float *param_2) + +{ + float local_14; + float local_10; + float local_c; + float local_8; + + local_14 = (*param_1 + param_1[1]) * _DAT_00410684; + local_10 = (param_1[2] + param_1[3]) * _DAT_00410684; + local_c = (param_1[4] + param_1[5]) * _DAT_00410684; + local_8 = param_1[1] - local_14; + FUN_00408644(&local_14,&local_14,param_2); + return local_c * local_c + local_10 * local_10 + local_14 * local_14 <= local_8 * local_8; +} + + + +/* @00410688 file=? name=FUN_00410688 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 __cdecl FUN_00410688(float *param_1,float *param_2) + +{ + float fVar1; + float fVar2; + float fVar3; + float fVar4; + float10 fVar5; + + fVar2 = (*param_1 + param_1[1]) * _DAT_00410744; + fVar4 = (param_1[2] + param_1[3]) * _DAT_00410744; + fVar1 = param_1[1] - fVar2; + fVar2 = fVar2 - *param_2; + fVar3 = (param_1[4] + param_1[5]) * _DAT_00410744 - param_2[2]; + fVar1 = (fVar1 * fVar1 - fVar2 * fVar2) - fVar3 * fVar3; + if (_DAT_00410748 <= fVar1) { + fVar5 = FUN_004dd138((double)fVar1); + fVar1 = (float)((float10)param_2[1] - (fVar5 + (float10)fVar4)); + if (fVar1 <= _DAT_00410750) { + fVar5 = -(float10)fVar1; + } + else { + fVar5 = (float10)fVar1; + } + } + else { + fVar5 = (float10)_DAT_0041074c; + } + return fVar5; +} + + + +/* @00410754 file=? name=FUN_00410754 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl FUN_00410754(float *param_1,float *param_2,float param_3,float param_4) + +{ + float fVar1; + undefined4 uVar2; + float10 fVar3; + float local_30; + float local_2c; + float local_28; + float local_24; + float local_20; + float local_1c; + float local_10; + float local_c; + float local_8; + + local_24 = (*param_1 + param_1[1]) * _DAT_00410898; + local_20 = (param_1[2] + param_1[3]) * _DAT_00410898; + local_1c = (param_1[4] + param_1[5]) * _DAT_00410898; + local_8 = param_1[1] - local_24; + fVar3 = FUN_0040ce2c(param_2,&local_24); + local_c = (float)fVar3; + FUN_0040cdf4(param_2,local_c,&local_30); + FUN_00408644(&local_30,&local_30,&local_24); + local_10 = local_8 * local_8 - (local_28 * local_28 + local_2c * local_2c + local_30 * local_30); + if (_DAT_0041089c <= local_10) { + fVar3 = FUN_004dd138((double)local_10); + fVar1 = local_c - (float)fVar3; + if (param_3 < fVar1) { + param_3 = fVar1; + } + local_c = local_c + (float)fVar3; + if (local_c < param_4) { + param_4 = local_c; + } + if (((param_4 < param_3) || (param_2[6] < param_3)) || (param_4 < _DAT_0041089c)) { + uVar2 = 0; + } + else { + fVar1 = _DAT_0041089c; + if (_DAT_0041089c < param_3) { + fVar1 = param_3; + } + param_2[6] = fVar1; + uVar2 = 1; + } + } + else { + uVar2 = 0; + } + return uVar2; +} + + + +/* @004108a0 file=? name=FUN_004108a0 */ + +bool __cdecl FUN_004108a0(int param_1) + +{ + return *(int *)(param_1 + 0x20) == 1; +} + + + /* @004108b4 file=? name=FUN_004108b4 */ undefined4 * __cdecl @@ -3915,6 +4234,83 @@ bool __cdecl FUN_00410914(float *param_1,float *param_2) +/* @004109e8 file=? name=FUN_004109e8 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +bool __cdecl FUN_004109e8(float *param_1,float *param_2) + +{ + bool bVar1; + float10 fVar2; + float local_28; + float local_24; + float local_20; + float local_1c; + float local_18; + float local_14; + float local_c; + float local_8; + + local_1c = (*param_1 + param_1[1]) * _DAT_00410a90; + local_18 = param_1[3]; + local_14 = (param_1[4] + param_1[5]) * _DAT_00410a90; + local_8 = param_1[1] - local_1c; + FUN_00408644(&local_28,&local_1c,param_2); + local_c = local_20 * local_20 + local_28 * local_28; + if (local_c <= local_8 * local_8) { + fVar2 = FUN_004dd138((double)local_c); + bVar1 = (float)fVar2 * (param_1[3] - param_1[2]) <= local_24 * local_8; + } + else { + bVar1 = false; + } + return bVar1; +} + + + +/* @00410a94 file=? name=FUN_00410a94 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 __cdecl FUN_00410a94(float *param_1,float *param_2) + +{ + float10 fVar1; + float local_28; + float local_24; + float local_20; + float local_1c; + float local_18; + float local_14; + float local_c; + float local_8; + + local_1c = (*param_1 + param_1[1]) * _DAT_00410b50; + local_18 = param_1[3]; + local_14 = (param_1[4] + param_1[5]) * _DAT_00410b50; + local_8 = param_1[1] - local_1c; + FUN_00408644(&local_28,param_2,&local_1c); + local_c = local_20 * local_20 + local_28 * local_28; + if (local_c <= local_8 * local_8) { + fVar1 = FUN_004dd138((double)local_c); + local_24 = ((param_1[3] - param_1[2]) / local_8) * (float)fVar1 + local_24; + if (local_24 <= _DAT_00410b58) { + fVar1 = (float10)_DAT_00410b58; + } + else { + fVar1 = (float10)local_24; + } + } + else { + fVar1 = (float10)_DAT_00410b54; + } + return fVar1; +} + + + /* @00410b5c file=? name=FUN_00410b5c */ float10 __cdecl FUN_00410b5c(float *param_1,float *param_2,float param_3) @@ -4047,6 +4443,16 @@ undefined4 __cdecl FUN_00410b80(float *param_1,float *param_2,float param_3,floa +/* @00410eb0 file=? name=FUN_00410eb0 */ + +bool __cdecl FUN_00410eb0(int param_1) + +{ + return *(int *)(param_1 + 0x20) == 2; +} + + + /* @00410ec8 file=? name=FUN_00410ec8 */ /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ @@ -4190,6 +4596,33 @@ float10 __cdecl FUN_0041111c(int param_1,int param_2) +/* @0041117c file=? name=FUN_0041117c */ + +void __cdecl FUN_0041117c(int param_1,float *param_2,float param_3,float param_4) + +{ + float10 fVar1; + float local_18; + float local_14; + float local_10; + float local_c; + float local_8; + + local_18 = 0.0; + local_14 = *(float *)(param_1 + 0x14) - *(float *)(param_1 + 0x10); + local_10 = *(float *)(param_1 + 0xc) - *(float *)(param_1 + 8); + local_8 = local_10 * local_10 + local_14 * local_14; + fVar1 = FUN_004dd138((double)local_8); + local_8 = (float)fVar1; + local_14 = local_14 / local_8; + local_10 = local_10 / local_8; + local_c = *(float *)(param_1 + 0x10) * local_10 + *(float *)(param_1 + 0xc) * local_14; + FUN_00410ec8(param_2,&local_18,param_3,param_4); + return; +} + + + /* @00411200 file=? name=FUN_00411200 */ bool __cdecl FUN_00411200(int param_1) @@ -4280,6 +4713,33 @@ float10 __cdecl FUN_00411310(int param_1,int param_2) +/* @00411370 file=? name=FUN_00411370 */ + +void __cdecl FUN_00411370(int param_1,float *param_2,float param_3,float param_4) + +{ + float10 fVar1; + float local_18; + float local_14; + float local_10; + float local_c; + float local_8; + + local_18 = 0.0; + local_14 = *(float *)(param_1 + 0x14) - *(float *)(param_1 + 0x10); + local_10 = *(float *)(param_1 + 8) - *(float *)(param_1 + 0xc); + local_8 = local_10 * local_10 + local_14 * local_14; + fVar1 = FUN_004dd138((double)local_8); + local_8 = (float)fVar1; + local_14 = local_14 / local_8; + local_10 = local_10 / local_8; + local_c = *(float *)(param_1 + 0x10) * local_10 + *(float *)(param_1 + 8) * local_14; + FUN_00410ec8(param_2,&local_18,param_3,param_4); + return; +} + + + /* @004113f4 file=? name=FUN_004113f4 */ bool __cdecl FUN_004113f4(int param_1) @@ -4364,6 +4824,33 @@ float10 __cdecl FUN_00411504(float *param_1,float *param_2) +/* @00411564 file=? name=FUN_00411564 */ + +void __cdecl FUN_00411564(float *param_1,float *param_2,float param_3,float param_4) + +{ + float10 fVar1; + float local_18; + float local_14; + undefined4 local_10; + float local_c; + float local_8; + + local_14 = param_1[1] - *param_1; + local_18 = param_1[3] - param_1[2]; + local_10 = 0; + local_8 = local_18 * local_18 + local_14 * local_14; + fVar1 = FUN_004dd138((double)local_8); + local_8 = (float)fVar1; + local_14 = local_14 / local_8; + local_18 = local_18 / local_8; + local_c = *param_1 * local_18 + param_1[3] * local_14; + FUN_00410ec8(param_2,&local_18,param_3,param_4); + return; +} + + + /* @004115e8 file=? name=FUN_004115e8 */ bool __cdecl FUN_004115e8(int param_1) @@ -4448,6 +4935,33 @@ float10 __cdecl FUN_004116f4(float *param_1,float *param_2) +/* @00411754 file=? name=FUN_00411754 */ + +void __cdecl FUN_00411754(float *param_1,float *param_2,float param_3,float param_4) + +{ + float10 fVar1; + float local_18; + float local_14; + undefined4 local_10; + float local_c; + float local_8; + + local_14 = param_1[1] - *param_1; + local_18 = param_1[2] - param_1[3]; + local_10 = 0; + local_8 = local_18 * local_18 + local_14 * local_14; + fVar1 = FUN_004dd138((double)local_8); + local_8 = (float)fVar1; + local_14 = local_14 / local_8; + local_18 = local_18 / local_8; + local_c = *param_1 * local_18 + param_1[2] * local_14; + FUN_00410ec8(param_2,&local_18,param_3,param_4); + return; +} + + + /* @004117d8 file=? name=FUN_004117d8 */ bool __cdecl FUN_004117d8(int param_1) @@ -4543,6 +5057,33 @@ float10 __cdecl FUN_004118e8(int param_1,int param_2) +/* @00411958 file=? name=FUN_00411958 */ + +void __cdecl FUN_00411958(int param_1,float *param_2,float param_3,float param_4) + +{ + float10 fVar1; + float local_18; + float local_14; + float local_10; + float local_c; + float local_8; + + local_18 = 0.0; + local_14 = *(float *)(param_1 + 0x10) - *(float *)(param_1 + 0x14); + local_10 = *(float *)(param_1 + 0xc) - *(float *)(param_1 + 8); + local_8 = local_10 * local_10 + local_14 * local_14; + fVar1 = FUN_004dd138((double)local_8); + local_8 = (float)fVar1; + local_14 = local_14 / local_8; + local_10 = local_10 / local_8; + local_c = *(float *)(param_1 + 0x14) * local_10 + *(float *)(param_1 + 0xc) * local_14; + FUN_00410ec8(param_2,&local_18,param_3,param_4); + return; +} + + + /* @004119dc file=? name=FUN_004119dc */ bool __cdecl FUN_004119dc(int param_1) @@ -4638,6 +5179,33 @@ float10 __cdecl FUN_00411aec(int param_1,int param_2) +/* @00411b5c file=? name=FUN_00411b5c */ + +void __cdecl FUN_00411b5c(int param_1,float *param_2,float param_3,float param_4) + +{ + float10 fVar1; + float local_18; + float local_14; + float local_10; + float local_c; + float local_8; + + local_18 = 0.0; + local_14 = *(float *)(param_1 + 0x10) - *(float *)(param_1 + 0x14); + local_10 = *(float *)(param_1 + 8) - *(float *)(param_1 + 0xc); + local_8 = local_10 * local_10 + local_14 * local_14; + fVar1 = FUN_004dd138((double)local_8); + local_8 = (float)fVar1; + local_14 = local_14 / local_8; + local_10 = local_10 / local_8; + local_c = *(float *)(param_1 + 0x14) * local_10 + *(float *)(param_1 + 8) * local_14; + FUN_00410ec8(param_2,&local_18,param_3,param_4); + return; +} + + + /* @00411be0 file=? name=FUN_00411be0 */ bool __cdecl FUN_00411be0(int param_1) @@ -4727,6 +5295,33 @@ float10 __cdecl FUN_00411ce8(float *param_1,float *param_2) +/* @00411d58 file=? name=FUN_00411d58 */ + +void __cdecl FUN_00411d58(float *param_1,float *param_2,float param_3,float param_4) + +{ + float10 fVar1; + float local_18; + float local_14; + undefined4 local_10; + float local_c; + float local_8; + + local_14 = *param_1 - param_1[1]; + local_18 = param_1[3] - param_1[2]; + local_10 = 0; + local_8 = local_18 * local_18 + local_14 * local_14; + fVar1 = FUN_004dd138((double)local_8); + local_8 = (float)fVar1; + local_14 = local_14 / local_8; + local_18 = local_18 / local_8; + local_c = *param_1 * local_18 + param_1[2] * local_14; + FUN_00410ec8(param_2,&local_18,param_3,param_4); + return; +} + + + /* @00411ddc file=? name=FUN_00411ddc */ bool __cdecl FUN_00411ddc(int param_1) @@ -4816,6 +5411,33 @@ float10 __cdecl FUN_00411eec(float *param_1,float *param_2) +/* @00411f5c file=? name=FUN_00411f5c */ + +void __cdecl FUN_00411f5c(float *param_1,float *param_2,float param_3,float param_4) + +{ + float10 fVar1; + float local_18; + float local_14; + undefined4 local_10; + float local_c; + float local_8; + + local_14 = *param_1 - param_1[1]; + local_18 = param_1[2] - param_1[3]; + local_10 = 0; + local_8 = local_18 * local_18 + local_14 * local_14; + fVar1 = FUN_004dd138((double)local_8); + local_8 = (float)fVar1; + local_14 = local_14 / local_8; + local_18 = local_18 / local_8; + local_c = *param_1 * local_18 + param_1[3] * local_14; + FUN_00410ec8(param_2,&local_18,param_3,param_4); + return; +} + + + /* @00411fe0 file=? name=FUN_00411fe0 */ bool __cdecl FUN_00411fe0(int param_1) @@ -4903,6 +5525,31 @@ float10 __cdecl FUN_004120ec(float *param_1,float *param_2) +/* @00412164 file=? name=FUN_00412164 */ + +void __cdecl FUN_00412164(float *param_1,float *param_2,float param_3,float param_4) + +{ + float10 fVar1; + float local_18 [3]; + float local_c; + float local_8; + + local_18[0] = param_1[4] - param_1[5]; + local_18[1] = 0.0; + local_18[2] = param_1[1] - *param_1; + local_8 = local_18[2] * local_18[2] + local_18[0] * local_18[0]; + fVar1 = FUN_004dd138((double)local_8); + local_8 = (float)fVar1; + local_18[0] = local_18[0] / local_8; + local_18[2] = local_18[2] / local_8; + local_c = param_1[5] * local_18[2] + param_1[1] * local_18[0]; + FUN_00410ec8(param_2,local_18,param_3,param_4); + return; +} + + + /* @004121e8 file=? name=FUN_004121e8 */ bool __cdecl FUN_004121e8(int param_1) @@ -4990,6 +5637,31 @@ float10 __cdecl FUN_004122f8(float *param_1,float *param_2) +/* @00412370 file=? name=FUN_00412370 */ + +void __cdecl FUN_00412370(float *param_1,float *param_2,float param_3,float param_4) + +{ + float10 fVar1; + float local_18 [3]; + float local_c; + float local_8; + + local_18[0] = param_1[5] - param_1[4]; + local_18[1] = 0.0; + local_18[2] = *param_1 - param_1[1]; + local_8 = local_18[2] * local_18[2] + local_18[0] * local_18[0]; + fVar1 = FUN_004dd138((double)local_8); + local_8 = (float)fVar1; + local_18[0] = local_18[0] / local_8; + local_18[2] = local_18[2] / local_8; + local_c = param_1[5] * local_18[2] + param_1[1] * local_18[0]; + FUN_00410ec8(param_2,local_18,param_3,param_4); + return; +} + + + /* @004123f4 file=? name=FUN_004123f4 */ bool __cdecl FUN_004123f4(int param_1) @@ -5077,6 +5749,31 @@ float10 __cdecl FUN_00412500(float *param_1,float *param_2) +/* @00412578 file=? name=FUN_00412578 */ + +void __cdecl FUN_00412578(float *param_1,float *param_2,float param_3,float param_4) + +{ + float10 fVar1; + float local_18 [3]; + float local_c; + float local_8; + + local_18[0] = param_1[4] - param_1[5]; + local_18[1] = 0.0; + local_18[2] = *param_1 - param_1[1]; + local_8 = local_18[2] * local_18[2] + local_18[0] * local_18[0]; + fVar1 = FUN_004dd138((double)local_8); + local_8 = (float)fVar1; + local_18[0] = local_18[0] / local_8; + local_18[2] = local_18[2] / local_8; + local_c = param_1[4] * local_18[2] + param_1[1] * local_18[0]; + FUN_00410ec8(param_2,local_18,param_3,param_4); + return; +} + + + /* @004125fc file=? name=FUN_004125fc */ bool __cdecl FUN_004125fc(int param_1) @@ -5164,6 +5861,31 @@ float10 __cdecl FUN_0041270c(float *param_1,float *param_2) +/* @00412784 file=? name=FUN_00412784 */ + +void __cdecl FUN_00412784(float *param_1,float *param_2,float param_3,float param_4) + +{ + float10 fVar1; + float local_18 [3]; + float local_c; + float local_8; + + local_18[0] = param_1[5] - param_1[4]; + local_18[1] = 0.0; + local_18[2] = param_1[1] - *param_1; + local_8 = local_18[2] * local_18[2] + local_18[0] * local_18[0]; + fVar1 = FUN_004dd138((double)local_8); + local_8 = (float)fVar1; + local_18[0] = local_18[0] / local_8; + local_18[2] = local_18[2] / local_8; + local_c = param_1[5] * local_18[2] + *param_1 * local_18[0]; + FUN_00410ec8(param_2,local_18,param_3,param_4); + return; +} + + + /* @00412808 file=? name=FUN_00412808 */ bool __cdecl FUN_00412808(int param_1) @@ -5244,6 +5966,148 @@ bool __cdecl FUN_00412880(int param_1,int param_2) +/* @00412944 file=? name=FUN_00412944 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +bool __cdecl FUN_00412944(int param_1,int param_2) + +{ + float fVar1; + float fVar2; + float fVar3; + + fVar2 = (*(float *)(param_1 + 8) + *(float *)(param_1 + 0xc)) * _DAT_004129ac; + fVar1 = *(float *)(param_1 + 0xc) - fVar2; + fVar2 = fVar2 - *(float *)(param_2 + 4); + fVar3 = (*(float *)(param_1 + 0x10) + *(float *)(param_1 + 0x14)) * _DAT_004129ac - + *(float *)(param_2 + 8); + return fVar3 * fVar3 + fVar2 * fVar2 <= fVar1 * fVar1; +} + + + +/* @004129b0 file=? name=FUN_004129b0 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 __cdecl FUN_004129b0(int param_1,int param_2) + +{ + float fVar1; + float fVar2; + float10 fVar3; + + fVar2 = (*(float *)(param_1 + 0x10) + *(float *)(param_1 + 0x14)) * _DAT_00412a3c; + fVar1 = *(float *)(param_1 + 0x14) - fVar2; + fVar2 = *(float *)(param_2 + 8) - fVar2; + fVar3 = FUN_004dd138((double)(fVar1 * fVar1 - fVar2 * fVar2)); + fVar1 = (float)((float10)fVar1 - fVar3); + if (*(float *)(param_2 + 4) <= *(float *)(param_1 + 0xc) - fVar1) { + if (*(float *)(param_1 + 8) + fVar1 <= *(float *)(param_2 + 4)) { + fVar3 = (float10)_DAT_00412a44; + } + else { + fVar3 = (float10)_DAT_00412a40; + } + } + else { + fVar3 = ((float10)*(float *)(param_2 + 4) - (float10)*(float *)(param_1 + 0xc)) + (float10)fVar1 + ; + } + return fVar3; +} + + + +/* @00412a48 file=? name=FUN_00412a48 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl FUN_00412a48(int param_1,int param_2,float param_3,float param_4) + +{ + float fVar1; + float fVar2; + float fVar3; + float fVar4; + float fVar5; + undefined4 uVar6; + float10 fVar7; + + fVar3 = (*(float *)(param_1 + 8) + *(float *)(param_1 + 0xc)) * _DAT_00412c4c; + fVar4 = (*(float *)(param_1 + 0x10) + *(float *)(param_1 + 0x14)) * _DAT_00412c4c; + fVar2 = *(float *)(param_1 + 0xc) - fVar3; + fVar1 = *(float *)(param_2 + 0x14) * *(float *)(param_2 + 0x14) + + *(float *)(param_2 + 0x10) * *(float *)(param_2 + 0x10); + fVar7 = FUN_004dcd00((double)fVar1); + if ((float10)_DAT_00412c50 < fVar7) { + fVar3 = *(float *)(param_2 + 4) - fVar3; + fVar4 = *(float *)(param_2 + 8) - fVar4; + fVar5 = (*(float *)(param_2 + 0x14) * fVar4 + *(float *)(param_2 + 0x10) * fVar3) * + _DAT_00412c58; + fVar2 = fVar5 * fVar5 - + _DAT_00412c5c * fVar1 * ((fVar4 * fVar4 + fVar3 * fVar3) - fVar2 * fVar2); + if (_DAT_00412c50 <= fVar2) { + fVar7 = FUN_004dd138((double)fVar1); + fVar1 = (float)(fVar7 / ((float10)fVar1 * (float10)fVar1)); + fVar7 = FUN_004dd138((double)fVar2); + fVar2 = fVar1 * (float)fVar7; + fVar1 = (-fVar1 * fVar5 - fVar2) * _DAT_00412c4c; + if (param_3 < fVar1) { + param_3 = fVar1; + } + fVar1 = fVar1 + fVar2; + if (fVar1 < param_4) { + param_4 = fVar1; + } + if (((param_4 < param_3) || (*(float *)(param_2 + 0x18) < param_3)) || + (param_4 < _DAT_00412c54)) { + uVar6 = 0; + } + else { + fVar2 = _DAT_00412c54; + if (_DAT_00412c54 < param_3) { + fVar2 = param_3; + } + *(float *)(param_2 + 0x18) = fVar2; + uVar6 = 1; + } + } + else { + uVar6 = 0; + } + } + else { + fVar3 = fVar3 - *(float *)(param_2 + 4); + fVar4 = fVar4 - *(float *)(param_2 + 8); + if (fVar4 * fVar4 + fVar3 * fVar3 <= fVar2 * fVar2) { + fVar2 = _DAT_00412c54; + if (_DAT_00412c54 < param_3) { + fVar2 = param_3; + } + *(float *)(param_2 + 0x18) = fVar2; + uVar6 = 1; + } + else { + uVar6 = 0; + } + } + return uVar6; +} + + + +/* @00412c60 file=? name=FUN_00412c60 */ + +bool __cdecl FUN_00412c60(int param_1) + +{ + return *(int *)(param_1 + 0x20) == 0x10; +} + + + /* @00412c78 file=? name=FUN_00412c78 */ undefined4 * __cdecl @@ -5336,6 +6200,723 @@ uint __cdecl FUN_00412cd8(float *param_1,undefined4 *param_2) +/* @00412e6c file=? name=FUN_00412e6c */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +uint __cdecl +FUN_00412e6c(float *param_1,float *param_2,float *param_3,undefined4 *param_4,float *param_5, + float *param_6) + +{ + float fVar1; + int iVar2; + undefined4 *puVar3; + float *pfVar4; + uint uVar5; + float *pfVar6; + uint unaff_ESI; + float10 fVar7; + float10 fVar8; + float local_48 [3]; + float *local_3c; + float local_38; + float local_34; + float local_30; + float local_2c; + float local_28; + float local_24; + float local_20; + float local_1c; + float *local_18; + uint local_14; + uint local_10; + float local_c; + float local_8; + + local_10 = 0; + local_14 = 0; + local_18 = (float *)*param_2; + local_1c = param_3[2] * param_3[2] + param_3[1] * param_3[1] + *param_3 * *param_3; + fVar7 = FUN_004dcd00((double)local_1c); + if (fVar7 <= (float10)_DAT_004142c8) { + return 0; + } + iVar2 = (**(code **)((int)param_1[6] + 0x18))(param_1,param_2); + if (iVar2 == 0) { + return 0; + } + iVar2 = 0; + local_3c = param_5; + pfVar4 = param_3; + do { + *local_3c = 0.0; + local_14 = local_14 << 1; + local_20 = *pfVar4; + fVar7 = FUN_004dcd00((double)local_20); + if ((float10)_DAT_004142c8 < fVar7) { + unaff_ESI = (uint)(_DAT_004142cc < *pfVar4) + iVar2 * 2; + uVar5 = unaff_ESI ^ 1; + if ((param_2[unaff_ESI + 1] == param_1[unaff_ESI]) && + ((((unaff_ESI & 1) != 0 && (param_1[uVar5] < param_2[uVar5 + 1])) || + (((unaff_ESI & 1) == 0 && (param_2[uVar5 + 1] < param_1[uVar5])))))) { + local_14 = local_14 | 1; + } + } + iVar2 = iVar2 + 1; + pfVar4 = pfVar4 + 1; + local_3c = local_3c + 1; + } while (iVar2 < 3); + switch(local_18[8]) { + case 0.0: + case 4.2039e-45: + iVar2 = 0; + for (uVar5 = local_14; uVar5 != 0; uVar5 = (int)uVar5 >> 1) { + if ((uVar5 & 1) != 0) { + iVar2 = iVar2 + 1; + } + } + if (iVar2 == 0) { + iVar2 = 0; + if (param_4 != (undefined4 *)0x0) { + iVar2 = 0; + for (puVar3 = (undefined4 *)*param_4; + (iVar2 < (int)(param_4[2] - param_4[3]) && ((float *)*puVar3 != local_18)); + puVar3 = puVar3 + 7) { + iVar2 = iVar2 + 1; + } + } + uVar5 = local_10; + if ((param_4 != (undefined4 *)0x0) && (iVar2 != param_4[2] - param_4[3])) { + local_48[0] = (param_1[1] + *param_1) * _DAT_004142dc; + local_48[1] = (param_1[3] + param_1[2]) * _DAT_004142dc; + local_48[2] = (param_1[5] + param_1[4]) * _DAT_004142dc; + uVar5 = 0; + do { + param_2 = param_2 + 1; + iVar2 = (int)uVar5 >> 1; + if ((uVar5 & 1) == 0) { + if (((*param_1 < *param_2) && (local_48[iVar2] < *param_2)) && + (_DAT_004142e4 < param_3[iVar2])) break; + } + else if (((*param_2 < *param_1) && (*param_2 < local_48[iVar2])) && + (param_3[iVar2] < _DAT_004142e0)) break; + uVar5 = uVar5 + 1; + param_1 = param_1 + 1; + } while ((int)uVar5 < 6); + if (uVar5 != 6) goto switchD_00412fc1_default; + *param_5 = local_48[0] - (*local_18 + local_18[1]) * _DAT_004142dc; + param_5[1] = local_48[1] - (local_18[2] + local_18[3]) * _DAT_004142dc; + iVar2 = 0; + param_5[2] = local_48[2] - (local_18[4] + local_18[5]) * _DAT_004142dc; + pfVar4 = param_5; + pfVar6 = param_3; + do { + if (_DAT_004142cc <= *pfVar4 * *pfVar6) { + *pfVar4 = 0.0; + } + iVar2 = iVar2 + 1; + pfVar6 = pfVar6 + 1; + pfVar4 = pfVar4 + 1; + } while (iVar2 < 3); + fVar7 = FUN_004dd138((double)(param_5[2] * param_5[2] + + param_5[1] * param_5[1] + *param_5 * *param_5)); + local_38 = (float)fVar7; + local_8 = local_38; + fVar7 = FUN_004dcd00((double)local_38); + if (fVar7 <= (float10)_DAT_004142c8) goto switchD_00412fc1_default; + *param_5 = *param_5 / local_8; + param_5[1] = param_5[1] / local_8; + param_5[2] = param_5[2] / local_8; + *param_6 = 1.0; + goto LAB_00413fd7; + } + break; + } + if (iVar2 == 1) { +LAB_00413dc4: + local_48[0] = (*param_1 + param_1[1]) * _DAT_004142dc; + local_48[2] = (param_1[4] + param_1[5]) * _DAT_004142dc; + if (local_14 == 1) { + unaff_ESI = 4; + if (param_2[1] <= local_48[0]) { + if (param_2[2] < local_48[0]) { + *param_5 = local_48[0] - param_2[2]; + } + } + else { + *param_5 = local_48[0] - param_2[1]; + } + local_c = param_1[1] - local_48[0]; + param_5[2] = local_c * local_c - *param_5 * *param_5; + fVar7 = FUN_004dd138((double)param_5[2]); + param_5[2] = (float)fVar7; + *param_5 = *param_5 / local_c; + param_5[2] = param_5[2] / local_c; + if (_DAT_004142cc < param_3[2]) { + param_5[2] = -param_5[2]; + } + } + else { + if (local_14 == 2) { + iVar2 = 2; + fVar7 = FUN_004dcd00((double)((param_2[3] - param_2[4]) / param_3[1])); + *param_6 = (float)fVar7; + goto LAB_0041426e; + } + if (local_14 == 4) { + unaff_ESI = 0; + if (param_2[5] <= local_48[2]) { + if (param_2[6] < local_48[2]) { + param_5[2] = local_48[2] - param_2[6]; + } + } + else { + param_5[2] = local_48[2] - param_2[5]; + } + local_c = param_1[1] - local_48[0]; + *param_5 = local_c * local_c - param_5[2] * param_5[2]; + fVar7 = FUN_004dd138((double)*param_5); + *param_5 = (float)fVar7; + *param_5 = *param_5 / local_c; + param_5[2] = param_5[2] / local_c; + if (_DAT_004142cc < *param_3) { + *param_5 = -*param_5; + } + } + } + fVar7 = FUN_004dcd00((double)((param_2[unaff_ESI + 1] - param_2[(unaff_ESI ^ 1) + 1]) / + param_3[(int)unaff_ESI >> 1])); + *param_6 = (float)fVar7; + } + else { + if (iVar2 == 2) { + if (local_14 == 3) { + uVar5 = 2; + local_48[1] = param_2[4] - param_2[3]; + local_48[2] = param_2[6] - param_2[5]; + fVar7 = FUN_004dcd00((double)(local_48[1] * param_3[2])); + fVar8 = FUN_004dcd00((double)(local_48[2] * param_3[1])); + if ((float10)(double)fVar7 <= fVar8) { + uVar5 = 1; + } + local_14 = local_14 ^ uVar5; + } + else if (local_14 == 5) { + uVar5 = 1; + local_48[0] = param_2[2] - param_2[1]; + local_48[2] = param_2[6] - param_2[5]; + fVar7 = FUN_004dcd00((double)(local_48[2] * *param_3)); + fVar8 = FUN_004dcd00((double)(local_48[0] * param_3[2])); + if ((float10)(double)fVar7 <= fVar8) { + uVar5 = 4; + } + local_14 = local_14 ^ uVar5; + } + else if (local_14 == 6) { + uVar5 = 2; + local_48[0] = param_2[2] - param_2[1]; + local_48[1] = param_2[4] - param_2[3]; + fVar7 = FUN_004dcd00((double)(local_48[1] * *param_3)); + fVar8 = FUN_004dcd00((double)(local_48[0] * param_3[1])); + if ((float10)(double)fVar7 <= fVar8) { + uVar5 = 4; + } + local_14 = local_14 ^ uVar5; + } + goto LAB_00413dc4; + } + local_48[0] = param_2[2] - param_2[1]; + local_48[1] = param_2[4] - param_2[3]; + local_48[2] = param_2[6] - param_2[5]; + fVar7 = FUN_004dcd00((double)(local_48[0] / *param_3)); + local_48[0] = (float)fVar7; + fVar7 = FUN_004dcd00((double)(local_48[1] / param_3[1])); + local_48[1] = (float)fVar7; + fVar7 = FUN_004dcd00((double)(local_48[2] / param_3[2])); + local_48[2] = (float)fVar7; + if (local_48[1] <= local_48[0]) { + iVar2 = 2; + if (local_48[2] <= local_48[1]) { + iVar2 = 4; + } + } + else { + iVar2 = 0; + if (local_48[2] <= local_48[0]) { + iVar2 = 4; + } + } + *param_6 = local_48[iVar2 >> 1]; +LAB_0041426e: + iVar2 = iVar2 >> 1; + if (param_3[iVar2] <= _DAT_004142cc) { + param_5[iVar2] = 1.0; + } + else { + param_5[iVar2] = -1.0; + } + } + goto LAB_00413fd7; + case 1.4013e-45: + *param_5 = ((*param_1 + param_1[1]) - *local_18) - local_18[1]; + param_5[1] = ((param_1[2] + param_1[3]) - local_18[2]) - local_18[3]; + param_5[2] = ((param_1[4] + param_1[5]) - local_18[4]) - local_18[5]; + local_34 = param_5[2] * param_5[2] + param_5[1] * param_5[1] + *param_5 * *param_5; + local_c = local_34; + fVar7 = FUN_004dcd00((double)local_34); + uVar5 = local_10; + if ((float10)_DAT_004142c8 < fVar7) { + fVar7 = FUN_004dd138((double)local_c); + local_c = (float)fVar7; + *param_5 = *param_5 / local_c; + param_5[1] = param_5[1] / local_c; + param_5[2] = param_5[2] / local_c; + *param_6 = 1.0; + goto LAB_00413fd7; + } + break; + case 2.8026e-45: + *param_5 = ((*param_1 + param_1[1]) - *local_18) - local_18[1]; + param_5[2] = ((param_1[4] + param_1[5]) - local_18[4]) - local_18[5]; + local_30 = param_5[2] * param_5[2] + *param_5 * *param_5; + *param_6 = 1.0; + local_c = local_30; + fVar7 = FUN_004dcd00((double)local_30); + uVar5 = local_10; + if ((float10)_DAT_004142c8 < fVar7) { + fVar7 = FUN_004dd138((double)local_c); + param_5[1] = (float)((((float10)local_18[1] - (float10)*local_18) * (float10)_DAT_004142dc * + fVar7) / ((float10)local_18[3] - (float10)local_18[2])); + FUN_004087f4(param_5,param_5); + goto LAB_00413fd7; + } + break; + case 5.60519e-45: + param_5[1] = local_18[5] - local_18[4]; + param_5[2] = local_18[3] - local_18[2]; + local_48[1] = param_2[3] - local_18[3]; + local_48[2] = param_2[5] - local_18[4]; + goto LAB_00413056; + case 7.00649e-45: + *param_5 = local_18[3] - local_18[2]; + param_5[1] = local_18[1] - *local_18; + local_48[1] = param_2[3] - local_18[3]; + local_48[0] = param_2[1] - *local_18; + goto LAB_00413289; + case 8.40779e-45: + param_5[1] = local_18[5] - local_18[4]; + param_5[2] = local_18[2] - local_18[3]; + local_48[1] = param_2[3] - local_18[3]; + local_48[2] = param_2[6] - local_18[5]; + goto LAB_00413056; + case 9.80909e-45: + *param_5 = local_18[2] - local_18[3]; + param_5[1] = local_18[1] - *local_18; + local_48[1] = param_2[3] - local_18[3]; + local_48[0] = param_2[2] - local_18[1]; + goto LAB_00413289; + case 1.12104e-44: + param_5[1] = local_18[4] - local_18[5]; + param_5[2] = local_18[3] - local_18[2]; + local_48[1] = param_2[4] - local_18[3]; + local_48[2] = param_2[5] - local_18[5]; + goto LAB_00413056; + case 1.26117e-44: + *param_5 = local_18[3] - local_18[2]; + param_5[1] = *local_18 - local_18[1]; + local_48[1] = param_2[4] - local_18[3]; + local_48[0] = param_2[1] - local_18[1]; + goto LAB_00413289; + case 1.4013e-44: + param_5[1] = local_18[4] - local_18[5]; + param_5[2] = local_18[2] - local_18[3]; + local_48[1] = param_2[4] - local_18[3]; + local_48[2] = param_2[6] - local_18[4]; +LAB_00413056: + fVar7 = FUN_004dd138((double)(param_5[2] * param_5[2] + param_5[1] * param_5[1])); + local_c = (float)fVar7; + param_5[1] = param_5[1] / local_c; + param_5[2] = param_5[2] / local_c; + local_8 = param_3[2] * param_5[2] + param_3[1] * param_5[1]; + if (local_8 <= _DAT_004142d0) { + fVar7 = FUN_004dcd00((double)((local_48[2] * param_5[2] + local_48[1] * param_5[1]) / local_8) + ); + *param_6 = (float)fVar7; + if ((local_14 & 4) != 0) { + fVar7 = FUN_004dcd00((double)((local_18[1] - *local_18) / *param_3)); + local_8 = (float)fVar7; + if (local_8 < *param_6) goto LAB_00413135; + } + } + else { + if ((local_14 & 4) == 0) goto switchD_00412fc1_default; +LAB_00413135: + fVar1 = _DAT_004142d8; + if (_DAT_004142cc < *param_3) { + fVar1 = _DAT_004142d4; + } + *param_5 = fVar1; + param_5[1] = 0.0; + param_5[2] = 0.0; + *param_6 = local_8; + } +LAB_00413fd7: + local_10 = (uint)(param_5[2] * param_3[2] + param_5[1] * param_3[1] + *param_5 * *param_3 < + _DAT_004142cc); + if (local_10 != 0) goto switchD_00412fc1_default; + iVar2 = 0; + if (param_4 != (undefined4 *)0x0) { + iVar2 = 0; + for (puVar3 = (undefined4 *)*param_4; + (iVar2 < (int)(param_4[2] - param_4[3]) && ((float *)*puVar3 != local_18)); + puVar3 = puVar3 + 7) { + iVar2 = iVar2 + 1; + } + } + uVar5 = 0; + if ((param_4 != (undefined4 *)0x0) && (iVar2 != param_4[2] - param_4[3])) + goto switchD_00412fc1_default; + break; + case 1.54143e-44: + *param_5 = local_18[2] - local_18[3]; + param_5[1] = *local_18 - local_18[1]; + local_48[1] = param_2[4] - local_18[3]; + local_48[0] = param_2[2] - *local_18; +LAB_00413289: + fVar7 = FUN_004dd138((double)(param_5[1] * param_5[1] + *param_5 * *param_5)); + local_c = (float)fVar7; + *param_5 = *param_5 / local_c; + param_5[1] = param_5[1] / local_c; + local_8 = *param_3 * *param_5 + param_3[1] * param_5[1]; + if (local_8 <= _DAT_004142d0) { + fVar7 = FUN_004dcd00((double)((local_48[0] * *param_5 + local_48[1] * param_5[1]) / local_8)); + *param_6 = (float)fVar7; + if ((local_14 & 1) != 0) { + fVar7 = FUN_004dcd00((double)((local_18[5] - local_18[4]) / param_3[2])); + local_8 = (float)fVar7; + if (local_8 < *param_6) goto LAB_00413363; + } + } + else { + if ((local_14 & 1) == 0) goto switchD_00412fc1_default; +LAB_00413363: + *param_5 = 0.0; + param_5[1] = 0.0; + fVar1 = _DAT_004142d8; + if (_DAT_004142cc < param_3[2]) { + fVar1 = _DAT_004142d4; + } + param_5[2] = fVar1; + *param_6 = local_8; + } + goto LAB_00413fd7; + case 1.68156e-44: + *param_5 = local_18[4] - local_18[5]; + param_5[2] = local_18[1] - *local_18; + local_48[0] = param_2[2] - *local_18; + local_48[2] = param_2[5] - local_18[4]; + goto LAB_004134b1; + case 1.82169e-44: + *param_5 = local_18[5] - local_18[4]; + param_5[2] = local_18[1] - *local_18; + local_48[0] = param_2[1] - local_18[1]; + local_48[2] = param_2[5] - local_18[4]; + goto LAB_004134b1; + case 1.96182e-44: + *param_5 = local_18[5] - local_18[4]; + param_5[2] = *local_18 - local_18[1]; + local_48[0] = param_2[1] - *local_18; + local_48[2] = param_2[6] - local_18[4]; + goto LAB_004134b1; + case 2.10195e-44: + *param_5 = local_18[4] - local_18[5]; + param_5[2] = *local_18 - local_18[1]; + local_48[0] = param_2[2] - local_18[1]; + local_48[2] = param_2[6] - local_18[4]; +LAB_004134b1: + fVar7 = FUN_004dd138((double)(param_5[2] * param_5[2] + *param_5 * *param_5)); + local_c = (float)fVar7; + *param_5 = *param_5 / local_c; + param_5[2] = param_5[2] / local_c; + local_8 = param_3[2] * param_5[2] + *param_3 * *param_5; + if (local_8 <= _DAT_004142d0) { + fVar7 = FUN_004dcd00((double)((local_48[2] * param_5[2] + local_48[0] * *param_5) / local_8)); + *param_6 = (float)fVar7; + if ((local_14 & 2) != 0) { + fVar7 = FUN_004dcd00((double)((local_18[3] - local_18[2]) / param_3[1])); + local_8 = (float)fVar7; + if (local_8 < *param_6) goto LAB_0041358b; + } + } + else { + if ((local_14 & 2) == 0) goto switchD_00412fc1_default; +LAB_0041358b: + *param_5 = 0.0; + fVar1 = _DAT_004142d8; + if (_DAT_004142cc < param_3[1]) { + fVar1 = _DAT_004142d4; + } + param_5[1] = fVar1; + param_5[2] = 0.0; + *param_6 = local_8; + } + goto LAB_00413fd7; + case 2.24208e-44: + param_5[1] = ((param_1[2] + param_1[3]) - local_18[2]) - local_18[3]; + param_5[2] = ((param_1[4] + param_1[5]) - local_18[4]) - local_18[5]; + local_24 = param_5[2] * param_5[2] + param_5[1] * param_5[1]; + local_c = local_24; + fVar7 = FUN_004dcd00((double)local_24); + uVar5 = local_10; + if ((float10)_DAT_004142c8 < fVar7) { + fVar7 = FUN_004dd138((double)local_c); + local_c = (float)fVar7; + param_5[1] = param_5[1] / local_c; + param_5[2] = param_5[2] / local_c; + *param_6 = 1.0; + goto LAB_00413fd7; + } + break; + case 2.38221e-44: + *param_5 = ((*param_1 + param_1[1]) - *local_18) - local_18[1]; + param_5[2] = ((param_1[4] + param_1[5]) - local_18[4]) - local_18[5]; + local_2c = param_5[2] * param_5[2] + *param_5 * *param_5; + local_c = local_2c; + fVar7 = FUN_004dcd00((double)local_2c); + uVar5 = local_10; + if ((float10)_DAT_004142c8 < fVar7) { + fVar7 = FUN_004dd138((double)local_c); + local_c = (float)fVar7; + *param_5 = *param_5 / local_c; + param_5[2] = param_5[2] / local_c; + *param_6 = 1.0; + if ((local_14 & 2) != 0) { + local_c = _DAT_004142d8; + if (_DAT_004142cc < param_3[2]) { + local_c = _DAT_004142d4; + } + if (local_c * param_3[1] < param_3[2] * param_5[2] + *param_3 * *param_5) { + *param_5 = 0.0; + param_5[1] = local_c; + param_5[2] = 0.0; + } + } + goto LAB_00413fd7; + } + break; + case 2.52234e-44: + *param_5 = ((*param_1 + param_1[1]) - *local_18) - local_18[1]; + param_5[1] = ((param_1[2] + param_1[3]) - local_18[2]) - local_18[3]; + local_28 = param_5[1] * param_5[1] + *param_5 * *param_5; + local_c = local_28; + fVar7 = FUN_004dcd00((double)local_28); + uVar5 = local_10; + if ((float10)_DAT_004142c8 < fVar7) { + fVar7 = FUN_004dd138((double)local_c); + local_c = (float)fVar7; + *param_5 = *param_5 / local_c; + param_5[1] = param_5[1] / local_c; + *param_6 = 1.0; + goto LAB_00413fd7; + } + break; + default: + goto switchD_00412fc1_default; + } + local_10 = uVar5; + *param_6 = 1.0; + fVar7 = FUN_004dd138((double)(param_3[2] * param_3[2] + + param_3[1] * param_3[1] + *param_3 * *param_3)); + fVar1 = (float)((float10)_DAT_004142d4 / fVar7); + *param_5 = *param_3 * fVar1; + param_5[1] = param_3[1] * fVar1; + param_5[2] = param_3[2] * fVar1; + local_10 = 1; +switchD_00412fc1_default: + if ((local_10 != 0) && (*param_6 < _DAT_004142cc)) { + local_10 = 0; + } + return local_10; +} + + + +/* @004142e8 file=? name=FUN_004142e8 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +bool __cdecl FUN_004142e8(float *param_1,float *param_2) + +{ + float fVar1; + float fVar2; + float fVar3; + float fVar4; + + fVar3 = (*param_1 + param_1[1]) * _DAT_004143a8; + fVar4 = (param_1[4] + param_1[5]) * _DAT_004143a8; + if (*param_2 <= fVar3) { + fVar1 = fVar3; + if (param_2[1] < fVar3) { + fVar1 = param_2[1]; + } + } + else { + fVar1 = *param_2; + } + if (param_2[4] <= fVar4) { + fVar2 = fVar4; + if (param_2[5] < fVar4) { + fVar2 = param_2[5]; + } + } + else { + fVar2 = param_2[4]; + } + return (fVar2 - fVar4) * (fVar2 - fVar4) + (fVar1 - fVar3) * (fVar1 - fVar3) <= + (param_1[1] - fVar3) * (param_1[1] - fVar3); +} + + + +/* @004143ac file=? name=FUN_004143ac */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +bool __cdecl FUN_004143ac(float *param_1,float *param_2) + +{ + float fVar1; + float fVar2; + float fVar3; + + fVar2 = (*param_1 + param_1[1]) * _DAT_00414414; + fVar1 = param_1[1] - fVar2; + fVar2 = fVar2 - *param_2; + fVar3 = (param_1[4] + param_1[5]) * _DAT_00414414 - param_2[2]; + return fVar3 * fVar3 + fVar2 * fVar2 <= fVar1 * fVar1; +} + + + +/* @00414418 file=? name=FUN_00414418 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 __cdecl FUN_00414418(float *param_1,float *param_2) + +{ + float fVar1; + float fVar2; + float fVar3; + float10 fVar4; + + fVar2 = (*param_1 + param_1[1]) * _DAT_004144a4; + fVar1 = param_1[1] - fVar2; + fVar2 = fVar2 - *param_2; + fVar3 = (param_1[4] + param_1[5]) * _DAT_004144a4 - param_2[2]; + if (fVar3 * fVar3 + fVar2 * fVar2 <= fVar1 * fVar1) { + fVar1 = param_2[1] - param_1[3]; + if (fVar1 <= _DAT_004144ac) { + fVar4 = -(float10)fVar1; + } + else { + fVar4 = (float10)fVar1; + } + } + else { + fVar4 = (float10)_DAT_004144a8; + } + return fVar4; +} + + + +/* @004144b0 file=? name=FUN_004144b0 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl FUN_004144b0(float *param_1,float *param_2,float param_3,float param_4) + +{ + float fVar1; + float fVar2; + float fVar3; + float fVar4; + float fVar5; + undefined4 uVar6; + float10 fVar7; + + fVar4 = (*param_1 + param_1[1]) * _DAT_004146b0; + fVar3 = (param_1[4] + param_1[5]) * _DAT_004146b0; + fVar2 = param_1[1] - fVar4; + fVar1 = param_2[5] * param_2[5] + param_2[3] * param_2[3]; + fVar7 = FUN_004dcd00((double)fVar1); + if ((float10)_DAT_004146b4 < fVar7) { + fVar4 = *param_2 - fVar4; + fVar3 = param_2[2] - fVar3; + fVar5 = (param_2[5] * fVar3 + param_2[3] * fVar4) * _DAT_004146bc; + fVar2 = fVar5 * fVar5 - + _DAT_004146c0 * fVar1 * ((fVar3 * fVar3 + fVar4 * fVar4) - fVar2 * fVar2); + if (_DAT_004146b4 <= fVar2) { + fVar7 = FUN_004dd138((double)fVar1); + fVar1 = (float)(fVar7 / ((float10)fVar1 * (float10)fVar1)); + fVar7 = FUN_004dd138((double)fVar2); + fVar2 = fVar1 * (float)fVar7; + fVar1 = (-fVar1 * fVar5 - fVar2) * _DAT_004146b0; + if (param_3 < fVar1) { + param_3 = fVar1; + } + fVar1 = fVar1 + fVar2; + if (fVar1 < param_4) { + param_4 = fVar1; + } + if (((param_4 < param_3) || (param_2[6] < param_3)) || (param_4 < _DAT_004146b8)) { + uVar6 = 0; + } + else { + fVar2 = _DAT_004146b8; + if (_DAT_004146b8 < param_3) { + fVar2 = param_3; + } + param_2[6] = fVar2; + uVar6 = 1; + } + } + else { + uVar6 = 0; + } + } + else { + fVar3 = fVar3 - param_2[2]; + if (fVar3 * fVar3 + (fVar4 - *param_2) * (fVar4 - *param_2) <= fVar2 * fVar2) { + fVar2 = _DAT_004146b8; + if (_DAT_004146b8 < param_3) { + fVar2 = param_3; + } + param_2[6] = fVar2; + uVar6 = 1; + } + else { + uVar6 = 0; + } + } + return uVar6; +} + + + +/* @004146c4 file=? name=FUN_004146c4 */ + +bool __cdecl FUN_004146c4(int param_1) + +{ + return *(int *)(param_1 + 0x20) == 0x11; +} + + + /* @004146dc file=? name=FUN_004146dc */ undefined4 * __cdecl @@ -5405,6 +6986,142 @@ bool __cdecl FUN_0041473c(float *param_1,float *param_2) +/* @00414800 file=? name=FUN_00414800 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +bool __cdecl FUN_00414800(float *param_1,float *param_2) + +{ + float fVar1; + float fVar2; + float fVar3; + + fVar2 = (*param_1 + param_1[1]) * _DAT_00414868; + fVar1 = param_1[1] - fVar2; + fVar2 = fVar2 - *param_2; + fVar3 = (param_1[2] + param_1[3]) * _DAT_00414868 - param_2[1]; + return fVar3 * fVar3 + fVar2 * fVar2 <= fVar1 * fVar1; +} + + + +/* @0041486c file=? name=FUN_0041486c */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 __cdecl FUN_0041486c(float *param_1,float *param_2) + +{ + float fVar1; + float fVar2; + float10 fVar3; + + fVar2 = (*param_1 + param_1[1]) * _DAT_004148f8; + fVar1 = param_1[1] - fVar2; + fVar2 = *param_2 - fVar2; + fVar3 = FUN_004dd138((double)(fVar1 * fVar1 - fVar2 * fVar2)); + fVar1 = (float)((float10)fVar1 - fVar3); + if (param_2[1] <= param_1[3] - fVar1) { + if (param_1[2] + fVar1 <= param_2[1]) { + fVar3 = (float10)_DAT_00414900; + } + else { + fVar3 = (float10)_DAT_004148fc; + } + } + else { + fVar3 = ((float10)param_2[1] - (float10)param_1[3]) + (float10)fVar1; + } + return fVar3; +} + + + +/* @00414904 file=? name=FUN_00414904 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl FUN_00414904(float *param_1,float *param_2,float param_3,float param_4) + +{ + float fVar1; + float fVar2; + float fVar3; + float fVar4; + float fVar5; + undefined4 uVar6; + float10 fVar7; + + fVar4 = (*param_1 + param_1[1]) * _DAT_00414b04; + fVar3 = (param_1[2] + param_1[3]) * _DAT_00414b04; + fVar2 = param_1[1] - fVar4; + fVar1 = param_2[3] * param_2[3] + param_2[4] * param_2[4]; + fVar7 = FUN_004dcd00((double)fVar1); + if ((float10)_DAT_00414b08 < fVar7) { + fVar3 = param_2[1] - fVar3; + fVar4 = *param_2 - fVar4; + fVar5 = (param_2[3] * fVar4 + param_2[4] * fVar3) * _DAT_00414b10; + fVar2 = fVar5 * fVar5 - + _DAT_00414b14 * fVar1 * ((fVar4 * fVar4 + fVar3 * fVar3) - fVar2 * fVar2); + if (_DAT_00414b08 <= fVar2) { + fVar7 = FUN_004dd138((double)fVar1); + fVar1 = (float)(fVar7 / ((float10)fVar1 * (float10)fVar1)); + fVar7 = FUN_004dd138((double)fVar2); + fVar2 = fVar1 * (float)fVar7; + fVar1 = (-fVar1 * fVar5 - fVar2) * _DAT_00414b04; + if (param_3 < fVar1) { + param_3 = fVar1; + } + fVar1 = fVar1 + fVar2; + if (fVar1 < param_4) { + param_4 = fVar1; + } + if (((param_4 < param_3) || (param_2[6] < param_3)) || (param_4 < _DAT_00414b0c)) { + uVar6 = 0; + } + else { + fVar2 = _DAT_00414b0c; + if (_DAT_00414b0c < param_3) { + fVar2 = param_3; + } + param_2[6] = fVar2; + uVar6 = 1; + } + } + else { + uVar6 = 0; + } + } + else { + fVar3 = fVar3 - param_2[1]; + if ((fVar4 - *param_2) * (fVar4 - *param_2) + fVar3 * fVar3 <= fVar2 * fVar2) { + fVar2 = _DAT_00414b0c; + if (_DAT_00414b0c < param_3) { + fVar2 = param_3; + } + param_2[6] = fVar2; + uVar6 = 1; + } + else { + uVar6 = 0; + } + } + return uVar6; +} + + + +/* @00414b18 file=? name=FUN_00414b18 */ + +bool __cdecl FUN_00414b18(int param_1) + +{ + return *(int *)(param_1 + 0x20) == 0x12; +} + + + /* @00414b60 file=? name=FUN_00414b60 */ /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ @@ -8993,634 +10710,3 @@ undefined4 FUN_0041774c(void) -/* @00417758 file=munga/socket.cpp name=FUN_00417758 */ - -void FUN_00417758(void) - -{ - FUN_0040385c(s_Socket__AddImplementation___Shou_004e2278,s_d__tesla_bt_munga_SOCKET_CPP_004e22ac, - 0x46); - return; -} - - - -/* @00417774 file=? name=FUN_00417774 */ - -undefined4 * __cdecl FUN_00417774(undefined4 *param_1,undefined4 param_2) - -{ - FUN_00415c70(param_1); - *param_1 = &PTR_FUN_004e2374; - param_1[1] = param_2; - return param_1; -} - - - -/* @00417794 file=? name=FUN_00417794 */ - -void __cdecl FUN_00417794(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_004e2374; - FUN_00415c80(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @004177c0 file=? name=FUN_004177c0 */ - -undefined4 FUN_004177c0(void) - -{ - return 1; -} - - - -/* @004177cc file=munga/socket.cpp name=FUN_004177cc */ - -void FUN_004177cc(void) - -{ - FUN_0040385c(s_SocketIterator__Remove___Should_n_004e22c9,s_d__tesla_bt_munga_SOCKET_CPP_004e22fa, - 0x6f); - return; -} - - - -/* @004177e8 file=? name=FUN_004177e8 */ - -undefined4 __cdecl FUN_004177e8(int *param_1,int param_2) - -{ - int iVar1; - - (**(code **)(*param_1 + 4))(param_1); - do { - iVar1 = (**(code **)(*param_1 + 0x28))(param_1); - if (iVar1 == 0) { - return 0; - } - } while (param_2 != iVar1); - return 1; -} - - - -/* @0041781c file=? name=FUN_0041781c */ - -void __cdecl FUN_0041781c(int *param_1,int param_2) - -{ - int iVar1; - - (**(code **)(*param_1 + 4))(param_1); - while( true ) { - iVar1 = (**(code **)(*param_1 + 0x30))(param_1); - if (iVar1 == 0) { - return; - } - if (param_2 == iVar1) break; - (**(code **)(*param_1 + 0xc))(param_1); - } - (**(code **)(*param_1 + 0x48))(param_1); - return; -} - - - -/* @00417858 file=? name=FUN_00417858 */ - -void __thiscall FUN_00417858(void *this,int *param_1,int param_2) - -{ - undefined4 *puVar1; - void *local_8; - - local_8 = this; - if (param_2 != 0) { - local_8 = *(void **)(param_1[1] + 4); - *(undefined4 *)(param_1[1] + 4) = 0; - } - (**(code **)(*param_1 + 4))(param_1); - while( true ) { - puVar1 = (undefined4 *)(**(code **)(*param_1 + 0x28))(param_1); - if (puVar1 == (undefined4 *)0x0) break; - if (puVar1 != (undefined4 *)0x0) { - (**(code **)*puVar1)(puVar1,3); - } - } - if (param_2 != 0) { - *(void **)(param_1[1] + 4) = local_8; - } - return; -} - - - -/* @004178b0 file=munga/socket.cpp name=FUN_004178b0 */ - -void FUN_004178b0(void) - -{ - FUN_0040385c(s_SocketIterator__InsertImplementa_004e2317,s_d__tesla_bt_munga_SOCKET_CPP_004e2356, - 0x116); - return; -} - - - -/* @004178cc file=? name=FUN_004178cc */ - -undefined4 * __cdecl FUN_004178cc(undefined4 *param_1,undefined4 param_2) - -{ - FUN_00415e90(param_1,param_2); - *param_1 = &PTR_FUN_004e23cc; - return param_1; -} - - - -/* @004178ec file=? name=FUN_004178ec */ - -undefined4 * __cdecl FUN_004178ec(undefined4 *param_1,int *param_2) - -{ - FUN_00415eb4(param_1,param_2); - *param_1 = &PTR_FUN_004e23cc; - return param_1; -} - - - -/* @0041790c file=? name=FUN_0041790c */ - -void __cdecl FUN_0041790c(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_004e23cc; - FUN_00415ed8(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @00417938 file=? name=FUN_00417938 */ - -void FUN_00417938(void) - -{ - return; -} - - - -/* @00417940 file=? name=FUN_00417940 */ - -undefined4 * __cdecl FUN_00417940(undefined4 *param_1,undefined4 param_2,int param_3) - -{ - FUN_00415ddc(param_1,param_2,param_3); - *param_1 = &PTR_FUN_004e2414; - return param_1; -} - - - -/* @00417964 file=? name=FUN_00417964 */ - -void __cdecl FUN_00417964(int *param_1,byte param_2) - -{ - int iVar1; - int *piVar2; - - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_004e2414; - iVar1 = param_1[1]; - *(undefined4 *)(iVar1 + 8) = 0; - FUN_00415e38((int)param_1); - piVar2 = *(int **)(iVar1 + 4); - if (piVar2 != (int *)0x0) { - (**(code **)(*piVar2 + 8))(piVar2,iVar1,param_1[2]); - } - FUN_00415e04(param_1,0); - if ((param_2 & 1) != 0) { - FUN_00402f98(0x4e23d8,param_1); - } - } - return; -} - - - -/* @004179c0 file=? name=FUN_004179c0 */ - -undefined4 FUN_004179c0(void) - -{ - FUN_00415e2c(); - return 1; -} - - - -/* @004179d4 file=? name=FUN_004179d4 */ - -undefined4 * __cdecl FUN_004179d4(undefined4 *param_1,undefined4 param_2) - -{ - FUN_00417718(param_1,param_2); - *param_1 = &PTR_FUN_004e240c; - param_1[2] = 0; - return param_1; -} - - - -/* @004179f8 file=? name=FUN_004179f8 */ - -void __cdecl FUN_004179f8(int *param_1,byte param_2) - -{ - undefined4 *puVar1; - - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_004e240c; - param_1[1] = 0; - puVar1 = (undefined4 *)param_1[2]; - if ((puVar1 != (undefined4 *)0x0) && (puVar1 != (undefined4 *)0x0)) { - (**(code **)*puVar1)(puVar1,3); - } - FUN_0041772c(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @00417a40 file=? name=FUN_00417a40 */ - -undefined4 FUN_00417a40(void) - -{ - FUN_0041774c(); - return 1; -} - - - -/* @00417a5c file=? name=FUN_00417a5c */ - -void __cdecl FUN_00417a5c(int param_1) - -{ - undefined4 *puVar1; - - puVar1 = *(undefined4 **)(param_1 + 8); - if (puVar1 != (undefined4 *)0x0) { - if (puVar1 != (undefined4 *)0x0) { - (**(code **)*puVar1)(puVar1,3); - } - *(undefined4 *)(param_1 + 8) = 0; - } - return; -} - - - -/* @00417a80 file=? name=FUN_00417a80 */ - -void __cdecl FUN_00417a80(int param_1,int param_2) - -{ - undefined4 *puVar1; - - puVar1 = FUN_00402f74(0x4e23d8); - if (puVar1 == (undefined4 *)0x0) { - puVar1 = (undefined4 *)0x0; - } - else { - puVar1 = FUN_00417940(puVar1,param_1,param_2); - } - *(undefined4 **)(param_1 + 8) = puVar1; - return; -} - - - -/* @00417ab4 file=? name=FUN_00417ab4 */ - -undefined4 __cdecl FUN_00417ab4(int param_1) - -{ - if (*(int *)(param_1 + 8) != 0) { - return *(undefined4 *)(*(int *)(param_1 + 8) + 8); - } - return 0; -} - - - -/* @00417af8 file=? name=FUN_00417af8 */ - -undefined4 * __cdecl -FUN_00417af8(undefined4 *param_1,undefined4 param_2,int param_3,int param_4,int param_5) - -{ - FUN_00415ddc(param_1,param_2,param_3); - *param_1 = &PTR_FUN_004e24a4; - param_1[5] = param_4; - if (param_4 != 0) { - *(undefined4 **)(param_4 + 0x18) = param_1; - } - param_1[6] = param_5; - if (param_5 != 0) { - *(undefined4 **)(param_5 + 0x14) = param_1; - } - return param_1; -} - - - -/* @00417b38 file=? name=FUN_00417b38 */ - -void __cdecl FUN_00417b38(int *param_1,byte param_2) - -{ - int iVar1; - int *piVar2; - - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_004e24a4; - iVar1 = param_1[1]; - if (param_1[6] == 0) { - *(int *)(iVar1 + 8) = param_1[5]; - } - else { - *(int *)(param_1[6] + 0x14) = param_1[5]; - } - if (param_1[5] == 0) { - *(int *)(iVar1 + 0xc) = param_1[6]; - } - else { - *(int *)(param_1[5] + 0x18) = param_1[6]; - } - param_1[5] = 0; - param_1[6] = 0; - FUN_00415e38((int)param_1); - piVar2 = *(int **)(iVar1 + 4); - if (piVar2 != (int *)0x0) { - (**(code **)(*piVar2 + 8))(piVar2,iVar1,param_1[2]); - } - FUN_00415e04(param_1,0); - if ((param_2 & 1) != 0) { - FUN_00402f98(0x4e2418,param_1); - } - } - return; -} - - - -/* @00417bc0 file=? name=FUN_00417bc0 */ - -undefined4 FUN_00417bc0(void) - -{ - FUN_00415e2c(); - return 1; -} - - - -/* @00417be0 file=? name=FUN_00417be0 */ - -undefined4 * __cdecl FUN_00417be0(undefined4 *param_1,undefined4 param_2) - -{ - FUN_00417718(param_1,param_2); - *param_1 = &PTR_FUN_004e249c; - param_1[2] = 0; - param_1[3] = 0; - return param_1; -} - - - -/* @00417c0c file=? name=FUN_00417c0c */ - -void __cdecl FUN_00417c0c(int *param_1,byte param_2) - -{ - undefined4 *puVar1; - - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_004e249c; - param_1[1] = 0; - while (puVar1 = (undefined4 *)param_1[2], puVar1 != (undefined4 *)0x0) { - if (puVar1 != (undefined4 *)0x0) { - (**(code **)*puVar1)(puVar1,3); - } - } - FUN_0041772c(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @00417c54 file=? name=FUN_00417c54 */ - -undefined4 FUN_00417c54(void) - -{ - FUN_0041774c(); - return 1; -} - - - -/* @00417c74 file=? name=FUN_00417c74 */ - -void __cdecl FUN_00417c74(int param_1,int param_2) - -{ - undefined4 *puVar1; - - puVar1 = FUN_00402f74(0x4e2418); - if (puVar1 == (undefined4 *)0x0) { - puVar1 = (undefined4 *)0x0; - } - else { - puVar1 = FUN_00417af8(puVar1,param_1,param_2,0,*(int *)(param_1 + 0xc)); - } - *(undefined4 **)(param_1 + 0xc) = puVar1; - if (*(int *)(param_1 + 8) == 0) { - *(undefined4 **)(param_1 + 8) = puVar1; - } - return; -} - - - -/* @00417cbc file=? name=FUN_00417cbc */ - -void __cdecl FUN_00417cbc(int param_1,int param_2,int param_3) - -{ - undefined4 *puVar1; - - puVar1 = FUN_00402f74(0x4e2418); - if (puVar1 == (undefined4 *)0x0) { - puVar1 = (undefined4 *)0x0; - } - else { - puVar1 = FUN_00417af8(puVar1,param_1,param_2,param_3,*(int *)(param_3 + 0x18)); - } - if (param_3 == *(int *)(param_1 + 8)) { - *(undefined4 **)(param_1 + 8) = puVar1; - } - return; -} - - - -/* @00417d00 file=? name=FUN_00417d00 */ - -undefined4 * __cdecl FUN_00417d00(undefined4 *param_1,int param_2) - -{ - FUN_00417774(param_1,param_2); - *param_1 = &PTR_FUN_004e244c; - param_1[2] = *(undefined4 *)(param_2 + 8); - return param_1; -} - - - -/* @00417d28 file=? name=FUN_00417d28 */ - -undefined4 * __cdecl FUN_00417d28(undefined4 *param_1,int param_2) - -{ - FUN_00417774(param_1,*(undefined4 *)(param_2 + 4)); - *param_1 = &PTR_FUN_004e244c; - param_1[2] = *(undefined4 *)(param_2 + 8); - return param_1; -} - - - -/* @00417d54 file=? name=FUN_00417d54 */ - -void __cdecl FUN_00417d54(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_004e244c; - FUN_00417794(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @00417d80 file=? name=FUN_00417d80 */ - -undefined4 FUN_00417d80(void) - -{ - FUN_004177c0(); - return 1; -} - - - -/* @00417d9c file=? name=FUN_00417d9c */ - -void __cdecl FUN_00417d9c(int param_1) - -{ - *(undefined4 *)(param_1 + 8) = *(undefined4 *)(*(int *)(param_1 + 4) + 8); - return; -} - - - -/* @00417db0 file=? name=FUN_00417db0 */ - -void __cdecl FUN_00417db0(int param_1) - -{ - *(undefined4 *)(param_1 + 8) = *(undefined4 *)(*(int *)(param_1 + 4) + 0xc); - return; -} - - - -/* @00417dc4 file=? name=FUN_00417dc4 */ - -void __cdecl FUN_00417dc4(int param_1) - -{ - *(undefined4 *)(param_1 + 8) = *(undefined4 *)(*(int *)(param_1 + 8) + 0x14); - return; -} - - - -/* @00417dd8 file=? name=FUN_00417dd8 */ - -void __cdecl FUN_00417dd8(int param_1) - -{ - *(undefined4 *)(param_1 + 8) = *(undefined4 *)(*(int *)(param_1 + 8) + 0x18); - return; -} - - - -/* @00417dec file=? name=FUN_00417dec */ - -undefined4 __cdecl FUN_00417dec(int param_1) - -{ - int iVar1; - undefined4 uVar2; - - iVar1 = *(int *)(param_1 + 8); - if (iVar1 != 0) { - uVar2 = *(undefined4 *)(iVar1 + 8); - *(undefined4 *)(param_1 + 8) = *(undefined4 *)(iVar1 + 0x14); - return uVar2; - } - return 0; -} - - - diff --git a/reference/decomp/all/part_002.c b/reference/decomp/all/part_002.c index 41486fb..928851d 100644 --- a/reference/decomp/all/part_002.c +++ b/reference/decomp/all/part_002.c @@ -1,3 +1,634 @@ +/* @00417758 file=munga/socket.cpp name=FUN_00417758 */ + +void FUN_00417758(void) + +{ + FUN_0040385c(s_Socket__AddImplementation___Shou_004e2278,s_d__tesla_bt_munga_SOCKET_CPP_004e22ac, + 0x46); + return; +} + + + +/* @00417774 file=? name=FUN_00417774 */ + +undefined4 * __cdecl FUN_00417774(undefined4 *param_1,undefined4 param_2) + +{ + FUN_00415c70(param_1); + *param_1 = &PTR_FUN_004e2374; + param_1[1] = param_2; + return param_1; +} + + + +/* @00417794 file=? name=FUN_00417794 */ + +void __cdecl FUN_00417794(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e2374; + FUN_00415c80(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004177c0 file=? name=FUN_004177c0 */ + +undefined4 FUN_004177c0(void) + +{ + return 1; +} + + + +/* @004177cc file=munga/socket.cpp name=FUN_004177cc */ + +void FUN_004177cc(void) + +{ + FUN_0040385c(s_SocketIterator__Remove___Should_n_004e22c9,s_d__tesla_bt_munga_SOCKET_CPP_004e22fa, + 0x6f); + return; +} + + + +/* @004177e8 file=? name=FUN_004177e8 */ + +undefined4 __cdecl FUN_004177e8(int *param_1,int param_2) + +{ + int iVar1; + + (**(code **)(*param_1 + 4))(param_1); + do { + iVar1 = (**(code **)(*param_1 + 0x28))(param_1); + if (iVar1 == 0) { + return 0; + } + } while (param_2 != iVar1); + return 1; +} + + + +/* @0041781c file=? name=FUN_0041781c */ + +void __cdecl FUN_0041781c(int *param_1,int param_2) + +{ + int iVar1; + + (**(code **)(*param_1 + 4))(param_1); + while( true ) { + iVar1 = (**(code **)(*param_1 + 0x30))(param_1); + if (iVar1 == 0) { + return; + } + if (param_2 == iVar1) break; + (**(code **)(*param_1 + 0xc))(param_1); + } + (**(code **)(*param_1 + 0x48))(param_1); + return; +} + + + +/* @00417858 file=? name=FUN_00417858 */ + +void __thiscall FUN_00417858(void *this,int *param_1,int param_2) + +{ + undefined4 *puVar1; + void *local_8; + + local_8 = this; + if (param_2 != 0) { + local_8 = *(void **)(param_1[1] + 4); + *(undefined4 *)(param_1[1] + 4) = 0; + } + (**(code **)(*param_1 + 4))(param_1); + while( true ) { + puVar1 = (undefined4 *)(**(code **)(*param_1 + 0x28))(param_1); + if (puVar1 == (undefined4 *)0x0) break; + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + } + if (param_2 != 0) { + *(void **)(param_1[1] + 4) = local_8; + } + return; +} + + + +/* @004178b0 file=munga/socket.cpp name=FUN_004178b0 */ + +void FUN_004178b0(void) + +{ + FUN_0040385c(s_SocketIterator__InsertImplementa_004e2317,s_d__tesla_bt_munga_SOCKET_CPP_004e2356, + 0x116); + return; +} + + + +/* @004178cc file=? name=FUN_004178cc */ + +undefined4 * __cdecl FUN_004178cc(undefined4 *param_1,undefined4 param_2) + +{ + FUN_00415e90(param_1,param_2); + *param_1 = &PTR_FUN_004e23cc; + return param_1; +} + + + +/* @004178ec file=? name=FUN_004178ec */ + +undefined4 * __cdecl FUN_004178ec(undefined4 *param_1,int *param_2) + +{ + FUN_00415eb4(param_1,param_2); + *param_1 = &PTR_FUN_004e23cc; + return param_1; +} + + + +/* @0041790c file=? name=FUN_0041790c */ + +void __cdecl FUN_0041790c(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e23cc; + FUN_00415ed8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00417938 file=? name=FUN_00417938 */ + +void FUN_00417938(void) + +{ + return; +} + + + +/* @00417940 file=? name=FUN_00417940 */ + +undefined4 * __cdecl FUN_00417940(undefined4 *param_1,undefined4 param_2,int param_3) + +{ + FUN_00415ddc(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004e2414; + return param_1; +} + + + +/* @00417964 file=? name=FUN_00417964 */ + +void __cdecl FUN_00417964(int *param_1,byte param_2) + +{ + int iVar1; + int *piVar2; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e2414; + iVar1 = param_1[1]; + *(undefined4 *)(iVar1 + 8) = 0; + FUN_00415e38((int)param_1); + piVar2 = *(int **)(iVar1 + 4); + if (piVar2 != (int *)0x0) { + (**(code **)(*piVar2 + 8))(piVar2,iVar1,param_1[2]); + } + FUN_00415e04(param_1,0); + if ((param_2 & 1) != 0) { + FUN_00402f98(0x4e23d8,param_1); + } + } + return; +} + + + +/* @004179c0 file=? name=FUN_004179c0 */ + +undefined4 FUN_004179c0(void) + +{ + FUN_00415e2c(); + return 1; +} + + + +/* @004179d4 file=? name=FUN_004179d4 */ + +undefined4 * __cdecl FUN_004179d4(undefined4 *param_1,undefined4 param_2) + +{ + FUN_00417718(param_1,param_2); + *param_1 = &PTR_FUN_004e240c; + param_1[2] = 0; + return param_1; +} + + + +/* @004179f8 file=? name=FUN_004179f8 */ + +void __cdecl FUN_004179f8(int *param_1,byte param_2) + +{ + undefined4 *puVar1; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e240c; + param_1[1] = 0; + puVar1 = (undefined4 *)param_1[2]; + if ((puVar1 != (undefined4 *)0x0) && (puVar1 != (undefined4 *)0x0)) { + (**(code **)*puVar1)(puVar1,3); + } + FUN_0041772c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00417a40 file=? name=FUN_00417a40 */ + +undefined4 FUN_00417a40(void) + +{ + FUN_0041774c(); + return 1; +} + + + +/* @00417a5c file=? name=FUN_00417a5c */ + +void __cdecl FUN_00417a5c(int param_1) + +{ + undefined4 *puVar1; + + puVar1 = *(undefined4 **)(param_1 + 8); + if (puVar1 != (undefined4 *)0x0) { + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + *(undefined4 *)(param_1 + 8) = 0; + } + return; +} + + + +/* @00417a80 file=? name=FUN_00417a80 */ + +void __cdecl FUN_00417a80(int param_1,int param_2) + +{ + undefined4 *puVar1; + + puVar1 = FUN_00402f74(0x4e23d8); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_00417940(puVar1,param_1,param_2); + } + *(undefined4 **)(param_1 + 8) = puVar1; + return; +} + + + +/* @00417ab4 file=? name=FUN_00417ab4 */ + +undefined4 __cdecl FUN_00417ab4(int param_1) + +{ + if (*(int *)(param_1 + 8) != 0) { + return *(undefined4 *)(*(int *)(param_1 + 8) + 8); + } + return 0; +} + + + +/* @00417af8 file=? name=FUN_00417af8 */ + +undefined4 * __cdecl +FUN_00417af8(undefined4 *param_1,undefined4 param_2,int param_3,int param_4,int param_5) + +{ + FUN_00415ddc(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004e24a4; + param_1[5] = param_4; + if (param_4 != 0) { + *(undefined4 **)(param_4 + 0x18) = param_1; + } + param_1[6] = param_5; + if (param_5 != 0) { + *(undefined4 **)(param_5 + 0x14) = param_1; + } + return param_1; +} + + + +/* @00417b38 file=? name=FUN_00417b38 */ + +void __cdecl FUN_00417b38(int *param_1,byte param_2) + +{ + int iVar1; + int *piVar2; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e24a4; + iVar1 = param_1[1]; + if (param_1[6] == 0) { + *(int *)(iVar1 + 8) = param_1[5]; + } + else { + *(int *)(param_1[6] + 0x14) = param_1[5]; + } + if (param_1[5] == 0) { + *(int *)(iVar1 + 0xc) = param_1[6]; + } + else { + *(int *)(param_1[5] + 0x18) = param_1[6]; + } + param_1[5] = 0; + param_1[6] = 0; + FUN_00415e38((int)param_1); + piVar2 = *(int **)(iVar1 + 4); + if (piVar2 != (int *)0x0) { + (**(code **)(*piVar2 + 8))(piVar2,iVar1,param_1[2]); + } + FUN_00415e04(param_1,0); + if ((param_2 & 1) != 0) { + FUN_00402f98(0x4e2418,param_1); + } + } + return; +} + + + +/* @00417bc0 file=? name=FUN_00417bc0 */ + +undefined4 FUN_00417bc0(void) + +{ + FUN_00415e2c(); + return 1; +} + + + +/* @00417be0 file=? name=FUN_00417be0 */ + +undefined4 * __cdecl FUN_00417be0(undefined4 *param_1,undefined4 param_2) + +{ + FUN_00417718(param_1,param_2); + *param_1 = &PTR_FUN_004e249c; + param_1[2] = 0; + param_1[3] = 0; + return param_1; +} + + + +/* @00417c0c file=? name=FUN_00417c0c */ + +void __cdecl FUN_00417c0c(int *param_1,byte param_2) + +{ + undefined4 *puVar1; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e249c; + param_1[1] = 0; + while (puVar1 = (undefined4 *)param_1[2], puVar1 != (undefined4 *)0x0) { + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + } + FUN_0041772c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00417c54 file=? name=FUN_00417c54 */ + +undefined4 FUN_00417c54(void) + +{ + FUN_0041774c(); + return 1; +} + + + +/* @00417c74 file=? name=FUN_00417c74 */ + +void __cdecl FUN_00417c74(int param_1,int param_2) + +{ + undefined4 *puVar1; + + puVar1 = FUN_00402f74(0x4e2418); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_00417af8(puVar1,param_1,param_2,0,*(int *)(param_1 + 0xc)); + } + *(undefined4 **)(param_1 + 0xc) = puVar1; + if (*(int *)(param_1 + 8) == 0) { + *(undefined4 **)(param_1 + 8) = puVar1; + } + return; +} + + + +/* @00417cbc file=? name=FUN_00417cbc */ + +void __cdecl FUN_00417cbc(int param_1,int param_2,int param_3) + +{ + undefined4 *puVar1; + + puVar1 = FUN_00402f74(0x4e2418); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_00417af8(puVar1,param_1,param_2,param_3,*(int *)(param_3 + 0x18)); + } + if (param_3 == *(int *)(param_1 + 8)) { + *(undefined4 **)(param_1 + 8) = puVar1; + } + return; +} + + + +/* @00417d00 file=? name=FUN_00417d00 */ + +undefined4 * __cdecl FUN_00417d00(undefined4 *param_1,int param_2) + +{ + FUN_00417774(param_1,param_2); + *param_1 = &PTR_FUN_004e244c; + param_1[2] = *(undefined4 *)(param_2 + 8); + return param_1; +} + + + +/* @00417d28 file=? name=FUN_00417d28 */ + +undefined4 * __cdecl FUN_00417d28(undefined4 *param_1,int param_2) + +{ + FUN_00417774(param_1,*(undefined4 *)(param_2 + 4)); + *param_1 = &PTR_FUN_004e244c; + param_1[2] = *(undefined4 *)(param_2 + 8); + return param_1; +} + + + +/* @00417d54 file=? name=FUN_00417d54 */ + +void __cdecl FUN_00417d54(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e244c; + FUN_00417794(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00417d80 file=? name=FUN_00417d80 */ + +undefined4 FUN_00417d80(void) + +{ + FUN_004177c0(); + return 1; +} + + + +/* @00417d9c file=? name=FUN_00417d9c */ + +void __cdecl FUN_00417d9c(int param_1) + +{ + *(undefined4 *)(param_1 + 8) = *(undefined4 *)(*(int *)(param_1 + 4) + 8); + return; +} + + + +/* @00417db0 file=? name=FUN_00417db0 */ + +void __cdecl FUN_00417db0(int param_1) + +{ + *(undefined4 *)(param_1 + 8) = *(undefined4 *)(*(int *)(param_1 + 4) + 0xc); + return; +} + + + +/* @00417dc4 file=? name=FUN_00417dc4 */ + +void __cdecl FUN_00417dc4(int param_1) + +{ + *(undefined4 *)(param_1 + 8) = *(undefined4 *)(*(int *)(param_1 + 8) + 0x14); + return; +} + + + +/* @00417dd8 file=? name=FUN_00417dd8 */ + +void __cdecl FUN_00417dd8(int param_1) + +{ + *(undefined4 *)(param_1 + 8) = *(undefined4 *)(*(int *)(param_1 + 8) + 0x18); + return; +} + + + +/* @00417dec file=? name=FUN_00417dec */ + +undefined4 __cdecl FUN_00417dec(int param_1) + +{ + int iVar1; + undefined4 uVar2; + + iVar1 = *(int *)(param_1 + 8); + if (iVar1 != 0) { + uVar2 = *(undefined4 *)(iVar1 + 8); + *(undefined4 *)(param_1 + 8) = *(undefined4 *)(iVar1 + 0x14); + return uVar2; + } + return 0; +} + + + /* @00417e0c file=? name=FUN_00417e0c */ undefined4 __cdecl FUN_00417e0c(int param_1) @@ -2781,6 +3412,16 @@ void __cdecl FUN_00419b40(int param_1,int param_2) +/* @00419bb4 file=? name=FUN_00419bb4 */ + +void FUN_00419bb4(void) + +{ + return; +} + + + /* @00419bbc file=? name=FUN_00419bbc */ void __cdecl FUN_00419bbc(int param_1,int param_2) @@ -7039,1408 +7680,3 @@ void __cdecl FUN_0041ddd8(int param_1,int param_2) -/* @0041de1c file=? name=FUN_0041de1c */ - -undefined4 * __cdecl FUN_0041de1c(undefined4 *param_1,undefined4 param_2,undefined4 param_3) - -{ - int *piVar1; - undefined4 *puVar2; - int iVar3; - int *local_8; - - FUN_004178cc(param_1,0x4e); - *param_1 = &PTR_FUN_004e3cf0; - FUN_0041b9ec(param_1 + 4,2); - FUN_0041b9ec(param_1 + 0x19,3); - FUN_0041f39f(param_1 + 0x2f,0,0); - FUN_0041f449(param_1 + 0x36,0); - FUN_0041f449(param_1 + 0x3b,0); - FUN_0041f449(param_1 + 0x40,0); - FUN_0041f449(param_1 + 0x45,0); - FUN_0041f449(param_1 + 0x4a,0); - puVar2 = (undefined4 *)FUN_00402298(0x10); - if (puVar2 == (undefined4 *)0x0) { - iVar3 = 0; - } - else { - iVar3 = FUN_004023f4(puVar2); - } - param_1[0x57] = iVar3; - piVar1 = (int *)(param_1[0x57] + 0xc); - *piVar1 = *piVar1 + 1; - param_1[0x4f] = param_3; - param_1[3] = param_2; - param_1[0x56] = 0; - param_1[0x35] = 0; - iVar3 = 0; - puVar2 = param_1 + 0x51; - do { - *puVar2 = 0; - iVar3 = iVar3 + 1; - puVar2 = puVar2 + 1; - } while (iVar3 < 5); - FUN_00402a98((int *)&local_8,param_1 + 0x57,s_TrivialDamageZone_Name_004e396c); - piVar1 = local_8 + 3; - *piVar1 = *piVar1 + -1; - if (*piVar1 == 0) { - FUN_004024d8(local_8,3); - } - param_1[0x2e] = 0; - FUN_0041dd68((int)param_1); - return param_1; -} - - - -/* @0041df5c file=? name=FUN_0041df5c */ - -undefined4 * __cdecl -FUN_0041df5c(undefined4 *param_1,undefined4 param_2,undefined4 param_3,int *param_4) - -{ - int *piVar1; - int iVar2; - undefined4 uVar3; - undefined4 *puVar4; - int local_84 [7]; - undefined4 local_68; - int *local_64; - int local_60; - undefined4 *local_5c; - int local_58; - int *local_54; - undefined4 local_50; - int local_4c; - int local_48; - int *local_44; - undefined4 *local_40; - undefined1 local_3c [4]; - undefined4 local_38; - undefined4 local_34; - undefined4 local_30; - undefined4 local_2c; - undefined4 local_28; - undefined4 local_24; - int local_20; - undefined4 local_1c; - int local_18; - int local_14; - int *local_10; - int *local_c; - undefined4 *local_8; - - FUN_004178cc(param_1,0x4e); - *param_1 = &PTR_FUN_004e3cf0; - FUN_0041b9ec(param_1 + 4,2); - FUN_0041b9ec(param_1 + 0x19,3); - FUN_0041f39f(param_1 + 0x2f,0,0); - FUN_0041f449(param_1 + 0x36,0); - FUN_0041f449(param_1 + 0x3b,0); - FUN_0041f449(param_1 + 0x40,0); - FUN_0041f449(param_1 + 0x45,0); - FUN_0041f449(param_1 + 0x4a,0); - local_8 = (undefined4 *)FUN_00402298(0x10); - if (local_8 == (undefined4 *)0x0) { - iVar2 = 0; - } - else { - iVar2 = FUN_004023f4(local_8); - } - param_1[0x57] = iVar2; - piVar1 = (int *)(param_1[0x57] + 0xc); - *piVar1 = *piVar1 + 1; - param_1[3] = param_2; - param_1[0x4f] = param_3; - param_1[0x56] = 0; - param_1[0x35] = 0; - FUN_0041dd68((int)param_1); - local_c = param_1 + 0x57; - local_10 = param_4; - FUN_00402aec(param_4,local_c); - iVar2 = FUN_0041a1a4(**(int **)(param_1[3] + 0xc),0x4e4afc); - if (iVar2 == 0) { - iVar2 = 0; - do { - (**(code **)(*param_4 + 0x1c))(param_4,local_3c,4); - iVar2 = iVar2 + 1; - } while (iVar2 < 5); - } - else { - local_14 = param_1[3]; - local_20 = 0; - do { - (**(code **)(*param_4 + 0x1c))(param_4,&local_18,4); - iVar2 = 0; - if (0 < local_18) { - do { - (**(code **)(*param_4 + 0x1c))(param_4,&local_1c,4); - local_24 = local_1c; - FUN_0041f216(local_84,local_14 + 0x300); - uVar3 = (**(code **)(local_84[0] + 0x34))(local_84,local_24); - FUN_0041f235(local_84,2); - switch(local_20) { - case 0: - local_28 = uVar3; - (**(code **)(param_1[0x36] + 4))(param_1 + 0x36,uVar3); - break; - case 1: - local_2c = uVar3; - (**(code **)(param_1[0x40] + 4))(param_1 + 0x40,uVar3); - break; - case 2: - local_30 = uVar3; - (**(code **)(param_1[0x3b] + 4))(param_1 + 0x3b,uVar3); - break; - case 3: - local_34 = uVar3; - (**(code **)(param_1[0x4a] + 4))(param_1 + 0x4a,uVar3); - break; - case 4: - local_38 = uVar3; - (**(code **)(param_1[0x45] + 4))(param_1 + 0x45,uVar3); - } - iVar2 = iVar2 + 1; - } while (iVar2 < local_18); - } - local_20 = local_20 + 1; - } while (local_20 < 5); - } - local_40 = param_1 + 0x50; - local_44 = param_4; - (**(code **)(*param_4 + 0x1c))(param_4,local_40,4); - local_48 = 0; - do { - (**(code **)(*param_4 + 0x1c))(param_4,param_1 + local_48 + 0x51,4); - local_48 = local_48 + 1; - } while (local_48 < 5); - local_54 = param_4; - (**(code **)(*param_4 + 0x1c))(param_4,&local_4c,4); - local_48 = 0; - if (0 < local_4c) { - do { - (**(code **)(*param_4 + 0x1c))(param_4,&local_50,4); - (**(code **)(*param_4 + 0x1c))(param_4,&local_58,4); - if (local_58 != 0) { - puVar4 = (undefined4 *)FUN_00402298(0x24); - if (puVar4 == (undefined4 *)0x0) { - local_5c = (undefined4 *)0x0; - } - else { - local_5c = FUN_0041dad0(puVar4); - } - local_60 = 0; - if (0 < local_58) { - do { - puVar4 = (undefined4 *)FUN_00402298(0x10); - if (puVar4 == (undefined4 *)0x0) { - local_64 = (int *)0x0; - } - else { - local_64 = (int *)FUN_004023f4(puVar4); - } - local_64[3] = local_64[3] + 1; - FUN_00402aec(param_4,(int *)&local_64); - puVar4 = (undefined4 *)FUN_00402298(0x10); - if (puVar4 == (undefined4 *)0x0) { - puVar4 = (undefined4 *)0x0; - } - else { - puVar4 = FUN_0041547b(puVar4,(int *)&local_64); - } - (**(code **)(local_5c[4] + 4))(local_5c + 4,puVar4); - piVar1 = local_64 + 3; - *piVar1 = *piVar1 + -1; - if (*piVar1 == 0) { - FUN_004024d8(local_64,3); - } - local_60 = local_60 + 1; - } while (local_60 < local_58); - } - (**(code **)(*(int *)local_5c[3] + 4))((int *)local_5c[3]); - local_68 = local_50; - (**(code **)(param_1[0x2f] + 8))(param_1 + 0x2f,local_5c,&local_68); - } - local_48 = local_48 + 1; - } while (local_48 < local_4c); - } - param_1[0x2e] = 0; - return param_1; -} - - - -/* @0041e394 file=? name=FUN_0041e394 */ - -void __cdecl FUN_0041e394(int *param_1,byte param_2) - -{ - int *piVar1; - undefined4 *puVar2; - int *piVar3; - void *this; - int local_20 [7]; - - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_004e3cf0; - FUN_004012c7(local_20,(int)(param_1 + 0x2f)); - FUN_00417858(this,local_20,1); - puVar2 = (undefined4 *)param_1[0x35]; - if ((puVar2 != (undefined4 *)0x0) && (puVar2 != (undefined4 *)0x0)) { - (**(code **)*puVar2)(puVar2,3); - } - FUN_004012e6(local_20,2); - piVar3 = (int *)param_1[0x57]; - piVar1 = piVar3 + 3; - *piVar1 = *piVar1 + -1; - if (*piVar1 == 0) { - FUN_004024d8(piVar3,3); - } - FUN_0041f468(param_1 + 0x4a,2); - FUN_0041f468(param_1 + 0x45,2); - FUN_0041f468(param_1 + 0x40,2); - FUN_0041f468(param_1 + 0x3b,2); - FUN_0041f468(param_1 + 0x36,2); - FUN_0041f3c2(param_1 + 0x2f,2); - FUN_0041baa4(param_1 + 0x19,2); - FUN_0041baa4(param_1 + 4,2); - FUN_0041790c(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @0041e4a8 file=? name=FUN_0041e4a8 */ - -int * __cdecl FUN_0041e4a8(int param_1,int *param_2) - -{ - int *piVar1; - - piVar1 = (int *)FUN_00402298(0x18); - if (piVar1 == (int *)0x0) { - piVar1 = (int *)0x0; - } - else { - piVar1 = FUN_0042a748(piVar1,param_2); - } - *(int **)(param_1 + 0xd4) = piVar1; - return piVar1; -} - - - -/* @0041e4e0 file=? name=FUN_0041e4e0 */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -void __cdecl FUN_0041e4e0(int *param_1,int *param_2) - -{ - float fVar1; - - param_1[0x56] = (int)((float)param_2[1] * (float)param_1[*param_2 + 0x51] + (float)param_1[0x56]); - fVar1 = _DAT_0041e57c; - if ((_DAT_0041e57c <= (float)param_1[0x56]) && - (fVar1 = _DAT_0041e580, (float)param_1[0x56] <= _DAT_0041e580)) { - fVar1 = (float)param_1[0x56]; - } - param_1[0x56] = (int)fVar1; - param_1[0x2e] = param_1[0x2e] | 4; - if (_DAT_0041e580 <= (float)param_1[0x56]) { - FUN_0041bbd8((int)(param_1 + 4),1); - (**(code **)(*param_1 + 0xc))(param_1,1); - param_1[0x2e] = param_1[0x2e] | 8; - } - return; -} - - - -/* @0041e590 file=? name=FUN_0041e590 */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -undefined4 __cdecl -FUN_0041e590(int param_1,undefined4 param_2,int param_3,int *param_4,int *param_5,int param_6, - int param_7) - -{ - undefined4 *puVar1; - int iVar2; - undefined4 *puVar3; - uint *puVar4; - int *piVar5; - char cVar6; - undefined4 uVar7; - int *local_d4; - undefined4 *local_d0; - int *local_cc; - int *local_c8; - int local_c4; - int *local_c0; - int *local_bc; - int *local_b8; - int *local_b4; - uint *local_b0; - uint *local_ac; - uint *local_a8; - uint *local_a4; - uint *local_a0; - uint *local_9c; - uint *local_98; - uint *local_94; - uint *local_90; - uint *local_8c; - uint *local_88; - uint *local_84; - uint *local_80; - uint *local_7c; - uint *local_78; - uint *local_74; - undefined4 local_70; - int *local_6c; - int *local_68; - int *local_64; - int local_60; - int *local_5c; - int *local_58; - undefined4 local_54; - int *local_50; - int *local_4c; - int *local_48; - int *local_44; - int *local_40; - int *local_3c; - float local_38; - float local_34; - int *local_30; - int *local_2c; - int *local_28; - char *local_24; - int *local_20; - float local_1c; - undefined4 local_18; - int *local_14; - char *local_10; - int *local_c; - int *local_8; - - local_8 = param_5; - FUN_004029b0(param_5,(int)param_4); - iVar2 = FUN_00403f84(param_6,(char *)param_4[2]); - if (iVar2 == 0) { - local_c = param_4; - local_10 = (char *)param_4[2]; - FUN_004dbb24((int *)&DAT_00524e68,local_10,(char *)0x0); - FUN_004dbb24((int *)&DAT_00524e68,s_listed_in__skl__does_not_exist_i_004e3983,(char *)0x0); - FUN_004d9c38((int *)&DAT_00524e68); - uVar7 = 0xffffffff; - local_14 = param_4; - piVar5 = param_4 + 3; - *piVar5 = *piVar5 + -1; - if (*piVar5 == 0) { - FUN_004024d8(param_4,3); - } - } - else { - if (param_3 == 0) { - local_18 = 0; - iVar2 = 0; - do { - (**(code **)(*param_5 + 0x20))(param_5,&local_18,4); - iVar2 = iVar2 + 1; - } while (iVar2 < 5); - } - else { - FUN_0041f07c(param_5,(char *)param_4[2],param_6,param_3,s_DefaultEffectSiteName_004e39b0); - FUN_0041f07c(param_5,(char *)param_4[2],param_6,param_3,s_ExternalVideoEffectSiteName_004e39c6 - ); - FUN_0041f07c(param_5,(char *)param_4[2],param_6,param_3,s_InternalVideoEffectSiteName_004e39e2 - ); - FUN_0041f07c(param_5,(char *)param_4[2],param_6,param_3,s_ExternalAudioEffectSiteName_004e39fe - ); - FUN_0041f07c(param_5,(char *)param_4[2],param_6,param_3,s_InternalAudioEffectSiteName_004e3a1a - ); - } - iVar2 = FUN_00404118(param_6,(char *)param_4[2],s_WeaponDamagePoints_004e3a36,&local_1c); - if (iVar2 == 0) { - local_20 = param_4; - local_24 = (char *)param_4[2]; - FUN_004dbb24((int *)&DAT_00524e68,local_24,(char *)0x0); - FUN_004dbb24((int *)&DAT_00524e68,s_Must_have_a_WeaponDamagePoints_004e3a49,(char *)0x0); - FUN_004d9c38((int *)&DAT_00524e68); - uVar7 = 0; - local_28 = param_4; - piVar5 = param_4 + 3; - *piVar5 = *piVar5 + -1; - if (*piVar5 == 0) { - FUN_004024d8(param_4,3); - } - } - else if (local_1c == _DAT_0041f074) { - FUN_004dbb24((int *)&DAT_00524e68,s_DefaultDamagePoints_must_have_a_n_004e3a69,(char *)0x0); - FUN_004d9c38((int *)&DAT_00524e68); - uVar7 = 0; - local_2c = param_4; - piVar5 = param_4 + 3; - *piVar5 = *piVar5 + -1; - if (*piVar5 == 0) { - FUN_004024d8(param_4,3); - } - } - else { - local_30 = param_5; - (**(code **)(*param_5 + 0x20))(param_5,&local_1c,4); - iVar2 = FUN_00404118(param_6,(char *)param_4[2],s_CollisionDamagePoints_004e3a9a,&local_34); - if (iVar2 == 0) { - local_38 = _DAT_0041f078 / local_1c; - } - else if (local_34 == _DAT_0041f074) { - local_38 = _DAT_0041f078 / local_1c; - } - else { - local_38 = _DAT_0041f078 / local_34; - } - local_3c = param_5; - (**(code **)(*param_5 + 0x20))(param_5,&local_38,4); - iVar2 = FUN_00404118(param_6,(char *)param_4[2],s_BallisticDamagePoints_004e3ab0,&local_34); - local_38 = local_34; - if (iVar2 == 0) { - local_38 = local_1c; - } - local_38 = _DAT_0041f078 / local_38; - local_40 = param_5; - (**(code **)(*param_5 + 0x20))(param_5,&local_38,4); - iVar2 = FUN_00404118(param_6,(char *)param_4[2],s_ExplosiveDamagePoints_004e3ac6,&local_34); - local_38 = local_34; - if (iVar2 == 0) { - local_38 = local_1c; - } - local_38 = _DAT_0041f078 / local_38; - local_44 = param_5; - (**(code **)(*param_5 + 0x20))(param_5,&local_38,4); - iVar2 = FUN_00404118(param_6,(char *)param_4[2],s_LaserDamagePoints_004e3adc,&local_34); - local_38 = local_34; - if (iVar2 == 0) { - local_38 = local_1c; - } - local_38 = _DAT_0041f078 / local_38; - local_48 = param_5; - (**(code **)(*param_5 + 0x20))(param_5,&local_38,4); - iVar2 = FUN_00404118(param_6,(char *)param_4[2],s_EnergyDamagePoints_004e3aee,&local_34); - if (iVar2 == 0) { - local_34 = local_1c; - } - local_38 = _DAT_0041f078 / local_34; - local_4c = param_5; - (**(code **)(*param_5 + 0x20))(param_5,&local_38,4); - local_50 = FUN_00404720(param_1,s_video_004e3b01,&DAT_004e3b07); - if (local_50 == (int *)0x0) { - local_54 = 0; - local_58 = param_5; - (**(code **)(*param_5 + 0x20))(param_5,&local_54,4); - uVar7 = 1; - local_5c = param_4; - piVar5 = param_4 + 3; - *piVar5 = *piVar5 + -1; - if (*piVar5 == 0) { - FUN_004024d8(param_4,3); - } - } - else { - local_60 = FUN_00403b60((int)local_50); - local_64 = param_5; - (**(code **)(*param_5 + 0x20))(param_5,&local_60,4); - if (local_60 != 0) { - puVar1 = (undefined4 *)local_50[1]; - while (puVar1 != (undefined4 *)0x0) { - puVar3 = (undefined4 *)FUN_00402298(0x10); - if (puVar3 == (undefined4 *)0x0) { - local_68 = (int *)0x0; - } - else { - local_68 = (int *)FUN_004023f4(puVar3); - } - local_68[3] = local_68[3] + 1; - FUN_00402a98((int *)&local_6c,(int *)&local_68,(char *)(puVar1 + 2)); - piVar5 = local_6c + 3; - *piVar5 = *piVar5 + -1; - if (*piVar5 == 0) { - FUN_004024d8(local_6c,3); - } - puVar4 = (uint *)FUN_00402298(0x10); - if (puVar4 == (uint *)0x0) { - local_74 = (uint *)0x0; - } - else { - local_74 = FUN_00402460(puVar4,&DAT_004e3b0b); - } - local_74[3] = local_74[3] + 1; - iVar2 = FUN_004027d8((int)local_68,(int)local_74); - cVar6 = iVar2 == 0; - local_78 = local_74; - puVar4 = local_74 + 3; - *puVar4 = *puVar4 - 1; - if (*puVar4 == 0) { - FUN_004024d8((int *)local_74,3); - } - if (cVar6 == '\0') { - puVar4 = (uint *)FUN_00402298(0x10); - if (puVar4 == (uint *)0x0) { - local_7c = (uint *)0x0; - } - else { - local_7c = FUN_00402460(puVar4,&DAT_004e3b0f); - } - local_7c[3] = local_7c[3] + 1; - iVar2 = FUN_004027d8((int)local_68,(int)local_7c); - cVar6 = iVar2 == 0; - local_80 = local_7c; - puVar4 = local_7c + 3; - *puVar4 = *puVar4 - 1; - if (*puVar4 == 0) { - FUN_004024d8((int *)local_7c,3); - } - if (cVar6 == '\0') { - puVar4 = (uint *)FUN_00402298(0x10); - if (puVar4 == (uint *)0x0) { - local_84 = (uint *)0x0; - } - else { - local_84 = FUN_00402460(puVar4,&DAT_004e3b14); - } - local_84[3] = local_84[3] + 1; - iVar2 = FUN_004027d8((int)local_68,(int)local_84); - cVar6 = iVar2 == 0; - local_88 = local_84; - puVar4 = local_84 + 3; - *puVar4 = *puVar4 - 1; - if (*puVar4 == 0) { - FUN_004024d8((int *)local_84,3); - } - if (cVar6 == '\0') { - puVar4 = (uint *)FUN_00402298(0x10); - if (puVar4 == (uint *)0x0) { - local_8c = (uint *)0x0; - } - else { - local_8c = FUN_00402460(puVar4,&DAT_004e3b19); - } - local_8c[3] = local_8c[3] + 1; - iVar2 = FUN_004027d8((int)local_68,(int)local_8c); - cVar6 = iVar2 == 0; - local_90 = local_8c; - puVar4 = local_8c + 3; - *puVar4 = *puVar4 - 1; - if (*puVar4 == 0) { - FUN_004024d8((int *)local_8c,3); - } - if (cVar6 == '\0') { - puVar4 = (uint *)FUN_00402298(0x10); - if (puVar4 == (uint *)0x0) { - local_94 = (uint *)0x0; - } - else { - local_94 = FUN_00402460(puVar4,&DAT_004e3b1e); - } - local_94[3] = local_94[3] + 1; - iVar2 = FUN_004027d8((int)local_68,(int)local_94); - cVar6 = iVar2 == 0; - local_98 = local_94; - puVar4 = local_94 + 3; - *puVar4 = *puVar4 - 1; - if (*puVar4 == 0) { - FUN_004024d8((int *)local_94,3); - } - if (cVar6 == '\0') { - puVar4 = (uint *)FUN_00402298(0x10); - if (puVar4 == (uint *)0x0) { - local_9c = (uint *)0x0; - } - else { - local_9c = FUN_00402460(puVar4,&DAT_004e3b23); - } - local_9c[3] = local_9c[3] + 1; - iVar2 = FUN_004027d8((int)local_68,(int)local_9c); - cVar6 = iVar2 == 0; - local_a0 = local_9c; - puVar4 = local_9c + 3; - *puVar4 = *puVar4 - 1; - if (*puVar4 == 0) { - FUN_004024d8((int *)local_9c,3); - } - if (cVar6 == '\0') { - puVar4 = (uint *)FUN_00402298(0x10); - if (puVar4 == (uint *)0x0) { - local_a4 = (uint *)0x0; - } - else { - local_a4 = FUN_00402460(puVar4,&DAT_004e3b28); - } - local_a4[3] = local_a4[3] + 1; - iVar2 = FUN_004027d8((int)local_68,(int)local_a4); - cVar6 = iVar2 == 0; - local_a8 = local_a4; - puVar4 = local_a4 + 3; - *puVar4 = *puVar4 - 1; - if (*puVar4 == 0) { - FUN_004024d8((int *)local_a4,3); - } - if (cVar6 == '\0') { - puVar4 = (uint *)FUN_00402298(0x10); - if (puVar4 == (uint *)0x0) { - local_ac = (uint *)0x0; - } - else { - local_ac = FUN_00402460(puVar4,&DAT_004e3b2d); - } - local_ac[3] = local_ac[3] + 1; - iVar2 = FUN_004027d8((int)local_68,(int)local_ac); - cVar6 = iVar2 == 0; - local_b0 = local_ac; - puVar4 = local_ac + 3; - *puVar4 = *puVar4 - 1; - if (*puVar4 == 0) { - FUN_004024d8((int *)local_ac,3); - } - if (cVar6 != '\0') { - local_70 = 7; - } - } - else { - local_70 = 6; - } - } - else { - local_70 = 5; - } - } - else { - local_70 = 4; - } - } - else { - local_70 = 3; - } - } - else { - local_70 = 2; - } - } - else { - local_70 = 1; - } - } - else { - local_70 = 0; - } - local_b4 = param_5; - (**(code **)(*param_5 + 0x20))(param_5,&local_70,4); - local_b8 = (int *)FUN_004064fc(*(char **)(param_7 + 0x10),(char *)puVar1[1]); - piVar5 = (int *)FUN_00402298(0x20); - if (piVar5 == (int *)0x0) { - local_bc = (int *)0x0; - } - else { - local_bc = FUN_00403e84(piVar5,(char *)local_b8,1); - } - local_c0 = FUN_00404720((int)local_bc,(char *)param_4[2],s_material_004e3b32); - local_c4 = 0; - if (local_c0 == (int *)0x0) { - (**(code **)(*param_5 + 0x20))(param_5,&local_c4,4); - } - else { - local_c4 = FUN_00403b60((int)local_c0); - local_c8 = param_5; - (**(code **)(*param_5 + 0x20))(param_5,&local_c4,4); - if (local_c4 != 0) { - puVar3 = (undefined4 *)local_c0[1]; - local_d0 = (undefined4 *)FUN_00402298(0x10); - if (local_d0 == (undefined4 *)0x0) { - local_cc = (int *)0x0; - } - else { - local_cc = (int *)FUN_004023f4(local_d0); - } - local_cc[3] = local_cc[3] + 1; - for (; puVar3 != (undefined4 *)0x0; puVar3 = (undefined4 *)*puVar3) { - FUN_00402a98((int *)&local_d4,(int *)&local_cc,(char *)puVar3[1]); - piVar5 = local_d4 + 3; - *piVar5 = *piVar5 + -1; - if (*piVar5 == 0) { - FUN_004024d8(local_d4,3); - } - FUN_004029b0(param_5,(int)local_cc); - } - piVar5 = local_cc + 3; - *piVar5 = *piVar5 + -1; - if (*piVar5 == 0) { - FUN_004024d8(local_cc,3); - } - } - if (local_c0 != (int *)0x0) { - (**(code **)*local_c0)(local_c0,3); - } - } - puVar1 = (undefined4 *)*puVar1; - FUN_004022d0(local_b8); - FUN_00403ecc(local_bc,3); - piVar5 = local_68 + 3; - *piVar5 = *piVar5 + -1; - if (*piVar5 == 0) { - FUN_004024d8(local_68,3); - } - } - } - if (local_50 != (int *)0x0) { - (**(code **)*local_50)(local_50,3); - } - uVar7 = 1; - piVar5 = param_4 + 3; - *piVar5 = *piVar5 + -1; - if (*piVar5 == 0) { - FUN_004024d8(param_4,3); - } - } - } - } - return uVar7; -} - - - -/* @0041f07c file=? name=FUN_0041f07c */ - -undefined4 __cdecl FUN_0041f07c(int *param_1,char *param_2,int param_3,int param_4,char *param_5) - -{ - int *piVar1; - undefined4 *puVar2; - int *piVar3; - undefined4 *puVar4; - undefined4 uVar5; - int *local_14; - int local_10; - int *local_c; - int local_8; - - local_8 = 0; - piVar3 = FUN_00404720(param_3,param_2,param_5); - if (piVar3 == (int *)0x0) { - (**(code **)(*param_1 + 0x20))(param_1,&local_8,4); - } - else { - local_8 = FUN_00403b60((int)piVar3); - (**(code **)(*param_1 + 0x20))(param_1,&local_8,4); - puVar2 = (undefined4 *)piVar3[1]; - puVar4 = (undefined4 *)FUN_00402298(0x10); - if (puVar4 == (undefined4 *)0x0) { - local_c = (int *)0x0; - } - else { - local_c = (int *)FUN_004023f4(puVar4); - } - local_c[3] = local_c[3] + 1; - for (; puVar2 != (undefined4 *)0x0; puVar2 = (undefined4 *)*puVar2) { - FUN_00402a98((int *)&local_14,(int *)&local_c,(char *)puVar2[1]); - piVar1 = local_14 + 3; - *piVar1 = *piVar1 + -1; - if (*piVar1 == 0) { - FUN_004024d8(local_14,3); - } - local_c[3] = local_c[3] + 1; - local_10 = FUN_0042760c(local_c,param_4); - if (local_10 == -1) { - FUN_004dbb24((int *)&DAT_00524e68,(char *)local_c[2],(char *)0x0); - FUN_004dbb24((int *)&DAT_00524e68,s_not_found_in_skl_file___004e3b3b,(char *)0x0); - FUN_004d9c38((int *)&DAT_00524e68); - if (piVar3 != (int *)0x0) { - (**(code **)*piVar3)(piVar3,3); - } - uVar5 = 0xffffffff; - piVar3 = local_c + 3; - *piVar3 = *piVar3 + -1; - if (*piVar3 == 0) { - FUN_004024d8(local_c,3); - return uVar5; - } - return 0xffffffff; - } - (**(code **)(*param_1 + 0x20))(param_1,&local_10,4); - } - if (piVar3 != (int *)0x0) { - (**(code **)*piVar3)(piVar3,3); - } - piVar3 = local_c + 3; - *piVar3 = *piVar3 + -1; - if (*piVar3 == 0) { - FUN_004024d8(local_c,3); - } - } - return 1; -} - - - -/* @0041f1f7 file=? name=FUN_0041f1f7 */ - -undefined4 * __cdecl FUN_0041f1f7(undefined4 *param_1,int param_2) - -{ - FUN_004194d8(param_1,param_2); - *param_1 = &PTR_FUN_004e3c94; - return param_1; -} - - - -/* @0041f216 file=? name=FUN_0041f216 */ - -undefined4 * __cdecl FUN_0041f216(undefined4 *param_1,int param_2) - -{ - FUN_004194d8(param_1,param_2); - *param_1 = &PTR_FUN_004e3c94; - return param_1; -} - - - -/* @0041f235 file=? name=FUN_0041f235 */ - -void __cdecl FUN_0041f235(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_004e3c94; - FUN_0041951c(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @0041f261 file=? name=FUN_0041f261 */ - -undefined4 * __cdecl FUN_0041f261(undefined4 *param_1,int param_2) - -{ - FUN_004194d8(param_1,param_2); - *param_1 = &PTR_FUN_004e3c38; - return param_1; -} - - - -/* @0041f280 file=? name=FUN_0041f280 */ - -undefined4 * __cdecl FUN_0041f280(undefined4 *param_1,int param_2) - -{ - FUN_004194d8(param_1,param_2); - *param_1 = &PTR_FUN_004e3c38; - return param_1; -} - - - -/* @0041f29f file=? name=FUN_0041f29f */ - -void __cdecl FUN_0041f29f(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_004e3c38; - FUN_0041951c(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @0041f2cb file=? name=FUN_0041f2cb */ - -undefined4 * __cdecl FUN_0041f2cb(undefined4 *param_1,undefined4 param_2) - -{ - FUN_0041827c(param_1,param_2); - *param_1 = &PTR_FUN_004e3c30; - return param_1; -} - - - -/* @0041f2ea file=? name=FUN_0041f2ea */ - -void __cdecl FUN_0041f2ea(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_004e3c30; - FUN_004182a8(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @0041f316 file=? name=FUN_0041f316 */ - -undefined4 * __cdecl FUN_0041f316(undefined4 *param_1,int param_2) - -{ - FUN_00418398(param_1,param_2); - *param_1 = &PTR_FUN_004e3bdc; - return param_1; -} - - - -/* @0041f335 file=? name=FUN_0041f335 */ - -undefined4 * __cdecl FUN_0041f335(undefined4 *param_1,int param_2) - -{ - FUN_00418398(param_1,param_2); - *param_1 = &PTR_FUN_004e3bdc; - return param_1; -} - - - -/* @0041f354 file=? name=FUN_0041f354 */ - -undefined4 * __cdecl FUN_0041f354(undefined4 *param_1,int param_2) - -{ - FUN_004183c0(param_1,param_2); - *param_1 = &PTR_FUN_004e3bdc; - return param_1; -} - - - -/* @0041f373 file=? name=FUN_0041f373 */ - -void __cdecl FUN_0041f373(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_004e3bdc; - FUN_004183ec(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @0041f39f file=? name=FUN_0041f39f */ - -undefined4 * __cdecl FUN_0041f39f(undefined4 *param_1,undefined4 param_2,undefined4 param_3) - -{ - FUN_00419184(param_1,param_2,param_3); - *param_1 = &PTR_FUN_004e3bc0; - return param_1; -} - - - -/* @0041f3c2 file=? name=FUN_0041f3c2 */ - -void __cdecl FUN_0041f3c2(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_004e3bc0; - FUN_004191b4(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @0041f3ee file=? name=FUN_0041f3ee */ - -undefined4 __cdecl FUN_0041f3ee(undefined4 param_1,int param_2,int param_3) - -{ - undefined4 uVar1; - - if (*(int *)(param_3 + 0x14) == *(int *)(param_2 + 0x14)) { - uVar1 = 0; - } - else { - uVar1 = 1; - if (*(int *)(param_2 + 0x14) <= *(int *)(param_3 + 0x14)) { - uVar1 = 0xffffffff; - } - } - return uVar1; -} - - - -/* @0041f41d file=? name=FUN_0041f41d */ - -undefined4 __cdecl FUN_0041f41d(undefined4 param_1,int *param_2,int param_3) - -{ - undefined4 uVar1; - - if (*(int *)(param_3 + 0x14) == *param_2) { - uVar1 = 0; - } - else { - uVar1 = 1; - if (*param_2 <= *(int *)(param_3 + 0x14)) { - uVar1 = 0xffffffff; - } - } - return uVar1; -} - - - -/* @0041f449 file=? name=FUN_0041f449 */ - -undefined4 * __cdecl FUN_0041f449(undefined4 *param_1,undefined4 param_2) - -{ - FUN_0041827c(param_1,param_2); - *param_1 = &PTR_FUN_004e3bb8; - return param_1; -} - - - -/* @0041f468 file=? name=FUN_0041f468 */ - -void __cdecl FUN_0041f468(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_004e3bb8; - FUN_004182a8(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @0041f494 file=? name=FUN_0041f494 */ - -undefined4 * __cdecl FUN_0041f494(undefined4 *param_1,int param_2) - -{ - FUN_00418398(param_1,param_2); - *param_1 = &PTR_FUN_004e3b64; - return param_1; -} - - - -/* @0041f4b3 file=? name=FUN_0041f4b3 */ - -undefined4 * __cdecl FUN_0041f4b3(undefined4 *param_1,int param_2) - -{ - FUN_00418398(param_1,param_2); - *param_1 = &PTR_FUN_004e3b64; - return param_1; -} - - - -/* @0041f4d2 file=? name=FUN_0041f4d2 */ - -undefined4 * __cdecl FUN_0041f4d2(undefined4 *param_1,int param_2) - -{ - FUN_004183c0(param_1,param_2); - *param_1 = &PTR_FUN_004e3b64; - return param_1; -} - - - -/* @0041f4f1 file=? name=FUN_0041f4f1 */ - -void __cdecl FUN_0041f4f1(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_004e3b64; - FUN_004183ec(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @0041f51d file=? name=FUN_0041f51d */ - -undefined4 * __cdecl FUN_0041f51d(undefined4 param_1,int param_2,undefined4 *param_3) - -{ - undefined4 *puVar1; - - puVar1 = (undefined4 *)FUN_0041d485(); - if (puVar1 == (undefined4 *)0x0) { - puVar1 = (undefined4 *)0x0; - } - else { - puVar1 = FUN_0041d42e(puVar1,param_1,param_2,param_3); - } - return puVar1; -} - - - -/* @0041f54d file=? name=FUN_0041f54d */ - -void __cdecl FUN_0041f54d(int param_1,int param_2) - -{ - FUN_0041bbd8(param_1 + 100,param_2); - *(uint *)(param_1 + 0xb8) = *(uint *)(param_1 + 0xb8) | 8; - return; -} - - - -/* @0041f59c file=? name=FUN_0041f59c */ - -void __cdecl FUN_0041f59c(int param_1,uint *param_2) - -{ - if ((int)param_2[1] < 3) { - FUN_00419bbc(param_1,(int)param_2); - } - FUN_00420ef4(param_2 + 3,(undefined4 *)(param_1 + 0x184)); - param_2[5] = *(uint *)(param_1 + 0x194); - if ((*(uint *)(param_1 + 0x28) & 0xc) == 4) { - (**(code **)(**(int **)(DAT_004efc94 + 0x20) + 0x18)) - (*(int **)(DAT_004efc94 + 0x20),param_2,1,*(undefined4 *)(param_1 + 0x18c)); - } - else if ((*(byte *)(param_1 + 0x28) & 0x10) == 0) { - FUN_0041acbc(*(int *)(DAT_004efc94 + 0x60),1,param_1,param_2,DAT_004e17f4); - } - else { - FUN_00419bbc(param_1,(int)param_2); - } - return; -} - - - -/* @0041f640 file=? name=FUN_0041f640 */ - -void __cdecl FUN_0041f640(int param_1,uint *param_2) - -{ - FUN_00420ef4(param_2 + 3,(undefined4 *)(param_1 + 0x184)); - param_2[5] = *(uint *)(param_1 + 0x194); - FUN_00434ea0(*(undefined4 *)(DAT_004efc94 + 0x30),param_1,param_2); - return; -} - - - -/* @0041f680 file=? name=FUN_0041f680 */ - -void __cdecl FUN_0041f680(int param_1,int *param_2,int param_3) - -{ - if (param_3 == 0) { - FUN_0041bd60(param_1,param_2,0); - FUN_0040a938(param_2 + 4,(undefined4 *)(param_1 + 0x100)); - FUN_0040a938((undefined4 *)(param_1 + 300),(undefined4 *)(param_1 + 0x100)); - *param_2 = 0x2c; - } - else if (param_3 == 1) { - param_2[2] = *(int *)(param_1 + 0x10); - *(undefined2 *)((int)param_2 + 6) = 1; - FUN_0041f858(param_1,param_2); - } - else { - FUN_0041bd60(param_1,param_2,(short)param_3); - } - *(undefined2 *)(param_2 + 1) = 0; - return; -} - - - -/* @0041f710 file=? name=FUN_0041f710 */ - -void __cdecl FUN_0041f710(int param_1,undefined4 *param_2) - -{ - int *piVar1; - int *piVar2; - undefined4 local_14; - int local_10; - int *local_c; - int local_8; - - FUN_004030dc(&local_14,param_2,*param_2,0x1c); - for (; piVar1 = local_c, local_8 != (int)local_c - local_10; - local_c = (int *)((int)local_c + *piVar1)) { - piVar2 = (int *)FUN_0041f964(param_1,*(ushort *)(local_c + 1) - 1); - (**(code **)(*piVar2 + 0x18))(piVar2,piVar1); - } - return; -} - - - -/* @0041f76c file=? name=FUN_0041f76c */ - -void __cdecl FUN_0041f76c(int param_1,undefined4 *param_2) - -{ - if (*(short *)((int)param_2 + 6) == 0) { - FUN_0040a938((undefined4 *)(param_1 + 300),param_2 + 4); - if ((*(int *)(DAT_004efc94 + 0x88) < 5) || (*(int *)(DAT_004efc94 + 0x88) == 0xb)) { - FUN_0040a938((undefined4 *)(param_1 + 0x100),(undefined4 *)(param_1 + 300)); - FUN_0040ab44((float *)(param_1 + 0xd0),(undefined4 *)(param_1 + 0x100)); - } - FUN_0041bd34(param_1,(int)param_2); - } - else if (*(short *)((int)param_2 + 6) == 1) { - FUN_0041f800(param_1,param_2); - } - else { - FUN_0041bd34(param_1,(int)param_2); - } - return; -} - - - -/* @0041f800 file=? name=FUN_0041f800 */ - -void __cdecl FUN_0041f800(int param_1,undefined4 *param_2) - -{ - int *piVar1; - int *piVar2; - undefined4 local_14; - int local_10; - int *local_c; - int local_8; - - FUN_004030dc(&local_14,param_2,*param_2,0x10); - for (; piVar2 = local_c, local_8 != (int)local_c - local_10; - local_c = (int *)((int)local_c + *piVar2)) { - piVar1 = *(int **)(*(int *)(param_1 + 0x120) + local_c[1] * 4); - (**(code **)(*piVar1 + 0x10))(piVar1,local_c); - } - return; -} - - - -/* @0041f858 file=? name=FUN_0041f858 */ - -void __cdecl FUN_0041f858(int param_1,int *param_2) - -{ - int *piVar1; - int *piVar2; - int iVar3; - undefined4 local_18 [2]; - int *local_10; - int *local_8; - - FUN_004030dc(local_18,param_2,0x578 - (int)(param_2 + -0x1487eb),0x10); - local_8 = local_10; - for (iVar3 = 0; piVar2 = local_10, iVar3 < *(int *)(param_1 + 0x11c); iVar3 = iVar3 + 1) { - piVar1 = *(int **)(*(int *)(param_1 + 0x120) + iVar3 * 4); - (**(code **)(*piVar1 + 0x14))(piVar1,local_10); - local_10 = (int *)((int)local_10 + *piVar2); - } - if (local_10 != local_8) { - *param_2 = (int)local_10 - (int)param_2; - } - return; -} - - - -/* @0041f8d4 file=? name=FUN_0041f8d4 */ - -undefined4 * __cdecl FUN_0041f8d4(int *param_1,undefined4 param_2) - -{ - int iVar1; - undefined4 *puVar2; - int local_14 [2]; - int local_c; - - FUN_004030dc(local_14,&DAT_00521fac,0x578,0x1c); - iVar1 = local_c; - if (((*(int *)(DAT_004efc94 + 0x88) == 5) || (*(int *)(DAT_004efc94 + 0x88) == 6)) || - ((*(byte *)((int)param_1 + 0x29) & 0x10) != 0)) { - (**(code **)(*param_1 + 0x14))(param_1,param_2,local_14); - } - else { - FUN_0041bd98(param_1,local_14); - } - if (iVar1 == local_c) { - puVar2 = (undefined4 *)0x0; - } - else { - puVar2 = &DAT_00521fac; - DAT_00521fb0 = 0xf; - DAT_00521fac = local_c + -0x521fac; - DAT_00521fb4 = 0; - } - return puVar2; -} - - - -/* @0041f964 file=? name=FUN_0041f964 */ - -int __cdecl FUN_0041f964(int param_1,uint param_2) - -{ - if (param_2 != 0xffffffff) { - if (param_2 < *(uint *)(param_1 + 0x124)) { - return *(int *)(*(int *)(param_1 + 0x128) + param_2 * 4); - } - param_1 = 0; - } - return param_1; -} - - - diff --git a/reference/decomp/all/part_003.c b/reference/decomp/all/part_003.c index d0dc085..2f87e69 100644 --- a/reference/decomp/all/part_003.c +++ b/reference/decomp/all/part_003.c @@ -1,3 +1,1423 @@ +/* @0041de1c file=? name=FUN_0041de1c */ + +undefined4 * __cdecl FUN_0041de1c(undefined4 *param_1,undefined4 param_2,undefined4 param_3) + +{ + int *piVar1; + undefined4 *puVar2; + int iVar3; + int *local_8; + + FUN_004178cc(param_1,0x4e); + *param_1 = &PTR_FUN_004e3cf0; + FUN_0041b9ec(param_1 + 4,2); + FUN_0041b9ec(param_1 + 0x19,3); + FUN_0041f39f(param_1 + 0x2f,0,0); + FUN_0041f449(param_1 + 0x36,0); + FUN_0041f449(param_1 + 0x3b,0); + FUN_0041f449(param_1 + 0x40,0); + FUN_0041f449(param_1 + 0x45,0); + FUN_0041f449(param_1 + 0x4a,0); + puVar2 = (undefined4 *)FUN_00402298(0x10); + if (puVar2 == (undefined4 *)0x0) { + iVar3 = 0; + } + else { + iVar3 = FUN_004023f4(puVar2); + } + param_1[0x57] = iVar3; + piVar1 = (int *)(param_1[0x57] + 0xc); + *piVar1 = *piVar1 + 1; + param_1[0x4f] = param_3; + param_1[3] = param_2; + param_1[0x56] = 0; + param_1[0x35] = 0; + iVar3 = 0; + puVar2 = param_1 + 0x51; + do { + *puVar2 = 0; + iVar3 = iVar3 + 1; + puVar2 = puVar2 + 1; + } while (iVar3 < 5); + FUN_00402a98((int *)&local_8,param_1 + 0x57,s_TrivialDamageZone_Name_004e396c); + piVar1 = local_8 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_8,3); + } + param_1[0x2e] = 0; + FUN_0041dd68((int)param_1); + return param_1; +} + + + +/* @0041df5c file=? name=FUN_0041df5c */ + +undefined4 * __cdecl +FUN_0041df5c(undefined4 *param_1,undefined4 param_2,undefined4 param_3,int *param_4) + +{ + int *piVar1; + int iVar2; + undefined4 uVar3; + undefined4 *puVar4; + int local_84 [7]; + undefined4 local_68; + int *local_64; + int local_60; + undefined4 *local_5c; + int local_58; + int *local_54; + undefined4 local_50; + int local_4c; + int local_48; + int *local_44; + undefined4 *local_40; + undefined1 local_3c [4]; + undefined4 local_38; + undefined4 local_34; + undefined4 local_30; + undefined4 local_2c; + undefined4 local_28; + undefined4 local_24; + int local_20; + undefined4 local_1c; + int local_18; + int local_14; + int *local_10; + int *local_c; + undefined4 *local_8; + + FUN_004178cc(param_1,0x4e); + *param_1 = &PTR_FUN_004e3cf0; + FUN_0041b9ec(param_1 + 4,2); + FUN_0041b9ec(param_1 + 0x19,3); + FUN_0041f39f(param_1 + 0x2f,0,0); + FUN_0041f449(param_1 + 0x36,0); + FUN_0041f449(param_1 + 0x3b,0); + FUN_0041f449(param_1 + 0x40,0); + FUN_0041f449(param_1 + 0x45,0); + FUN_0041f449(param_1 + 0x4a,0); + local_8 = (undefined4 *)FUN_00402298(0x10); + if (local_8 == (undefined4 *)0x0) { + iVar2 = 0; + } + else { + iVar2 = FUN_004023f4(local_8); + } + param_1[0x57] = iVar2; + piVar1 = (int *)(param_1[0x57] + 0xc); + *piVar1 = *piVar1 + 1; + param_1[3] = param_2; + param_1[0x4f] = param_3; + param_1[0x56] = 0; + param_1[0x35] = 0; + FUN_0041dd68((int)param_1); + local_c = param_1 + 0x57; + local_10 = param_4; + FUN_00402aec(param_4,local_c); + iVar2 = FUN_0041a1a4(**(int **)(param_1[3] + 0xc),0x4e4afc); + if (iVar2 == 0) { + iVar2 = 0; + do { + (**(code **)(*param_4 + 0x1c))(param_4,local_3c,4); + iVar2 = iVar2 + 1; + } while (iVar2 < 5); + } + else { + local_14 = param_1[3]; + local_20 = 0; + do { + (**(code **)(*param_4 + 0x1c))(param_4,&local_18,4); + iVar2 = 0; + if (0 < local_18) { + do { + (**(code **)(*param_4 + 0x1c))(param_4,&local_1c,4); + local_24 = local_1c; + FUN_0041f216(local_84,local_14 + 0x300); + uVar3 = (**(code **)(local_84[0] + 0x34))(local_84,local_24); + FUN_0041f235(local_84,2); + switch(local_20) { + case 0: + local_28 = uVar3; + (**(code **)(param_1[0x36] + 4))(param_1 + 0x36,uVar3); + break; + case 1: + local_2c = uVar3; + (**(code **)(param_1[0x40] + 4))(param_1 + 0x40,uVar3); + break; + case 2: + local_30 = uVar3; + (**(code **)(param_1[0x3b] + 4))(param_1 + 0x3b,uVar3); + break; + case 3: + local_34 = uVar3; + (**(code **)(param_1[0x4a] + 4))(param_1 + 0x4a,uVar3); + break; + case 4: + local_38 = uVar3; + (**(code **)(param_1[0x45] + 4))(param_1 + 0x45,uVar3); + } + iVar2 = iVar2 + 1; + } while (iVar2 < local_18); + } + local_20 = local_20 + 1; + } while (local_20 < 5); + } + local_40 = param_1 + 0x50; + local_44 = param_4; + (**(code **)(*param_4 + 0x1c))(param_4,local_40,4); + local_48 = 0; + do { + (**(code **)(*param_4 + 0x1c))(param_4,param_1 + local_48 + 0x51,4); + local_48 = local_48 + 1; + } while (local_48 < 5); + local_54 = param_4; + (**(code **)(*param_4 + 0x1c))(param_4,&local_4c,4); + local_48 = 0; + if (0 < local_4c) { + do { + (**(code **)(*param_4 + 0x1c))(param_4,&local_50,4); + (**(code **)(*param_4 + 0x1c))(param_4,&local_58,4); + if (local_58 != 0) { + puVar4 = (undefined4 *)FUN_00402298(0x24); + if (puVar4 == (undefined4 *)0x0) { + local_5c = (undefined4 *)0x0; + } + else { + local_5c = FUN_0041dad0(puVar4); + } + local_60 = 0; + if (0 < local_58) { + do { + puVar4 = (undefined4 *)FUN_00402298(0x10); + if (puVar4 == (undefined4 *)0x0) { + local_64 = (int *)0x0; + } + else { + local_64 = (int *)FUN_004023f4(puVar4); + } + local_64[3] = local_64[3] + 1; + FUN_00402aec(param_4,(int *)&local_64); + puVar4 = (undefined4 *)FUN_00402298(0x10); + if (puVar4 == (undefined4 *)0x0) { + puVar4 = (undefined4 *)0x0; + } + else { + puVar4 = FUN_0041547b(puVar4,(int *)&local_64); + } + (**(code **)(local_5c[4] + 4))(local_5c + 4,puVar4); + piVar1 = local_64 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_64,3); + } + local_60 = local_60 + 1; + } while (local_60 < local_58); + } + (**(code **)(*(int *)local_5c[3] + 4))((int *)local_5c[3]); + local_68 = local_50; + (**(code **)(param_1[0x2f] + 8))(param_1 + 0x2f,local_5c,&local_68); + } + local_48 = local_48 + 1; + } while (local_48 < local_4c); + } + param_1[0x2e] = 0; + return param_1; +} + + + +/* @0041e394 file=? name=FUN_0041e394 */ + +void __cdecl FUN_0041e394(int *param_1,byte param_2) + +{ + int *piVar1; + undefined4 *puVar2; + int *piVar3; + void *this; + int local_20 [7]; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e3cf0; + FUN_004012c7(local_20,(int)(param_1 + 0x2f)); + FUN_00417858(this,local_20,1); + puVar2 = (undefined4 *)param_1[0x35]; + if ((puVar2 != (undefined4 *)0x0) && (puVar2 != (undefined4 *)0x0)) { + (**(code **)*puVar2)(puVar2,3); + } + FUN_004012e6(local_20,2); + piVar3 = (int *)param_1[0x57]; + piVar1 = piVar3 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(piVar3,3); + } + FUN_0041f468(param_1 + 0x4a,2); + FUN_0041f468(param_1 + 0x45,2); + FUN_0041f468(param_1 + 0x40,2); + FUN_0041f468(param_1 + 0x3b,2); + FUN_0041f468(param_1 + 0x36,2); + FUN_0041f3c2(param_1 + 0x2f,2); + FUN_0041baa4(param_1 + 0x19,2); + FUN_0041baa4(param_1 + 4,2); + FUN_0041790c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0041e4a8 file=? name=FUN_0041e4a8 */ + +int * __cdecl FUN_0041e4a8(int param_1,int *param_2) + +{ + int *piVar1; + + piVar1 = (int *)FUN_00402298(0x18); + if (piVar1 == (int *)0x0) { + piVar1 = (int *)0x0; + } + else { + piVar1 = FUN_0042a748(piVar1,param_2); + } + *(int **)(param_1 + 0xd4) = piVar1; + return piVar1; +} + + + +/* @0041e4e0 file=? name=FUN_0041e4e0 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_0041e4e0(int *param_1,int *param_2) + +{ + float fVar1; + + param_1[0x56] = (int)((float)param_2[1] * (float)param_1[*param_2 + 0x51] + (float)param_1[0x56]); + fVar1 = _DAT_0041e57c; + if ((_DAT_0041e57c <= (float)param_1[0x56]) && + (fVar1 = _DAT_0041e580, (float)param_1[0x56] <= _DAT_0041e580)) { + fVar1 = (float)param_1[0x56]; + } + param_1[0x56] = (int)fVar1; + param_1[0x2e] = param_1[0x2e] | 4; + if (_DAT_0041e580 <= (float)param_1[0x56]) { + FUN_0041bbd8((int)(param_1 + 4),1); + (**(code **)(*param_1 + 0xc))(param_1,1); + param_1[0x2e] = param_1[0x2e] | 8; + } + return; +} + + + +/* @0041e590 file=? name=FUN_0041e590 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl +FUN_0041e590(int param_1,undefined4 param_2,int param_3,int *param_4,int *param_5,int param_6, + int param_7) + +{ + undefined4 *puVar1; + int iVar2; + undefined4 *puVar3; + uint *puVar4; + int *piVar5; + char cVar6; + undefined4 uVar7; + int *local_d4; + undefined4 *local_d0; + int *local_cc; + int *local_c8; + int local_c4; + int *local_c0; + int *local_bc; + int *local_b8; + int *local_b4; + uint *local_b0; + uint *local_ac; + uint *local_a8; + uint *local_a4; + uint *local_a0; + uint *local_9c; + uint *local_98; + uint *local_94; + uint *local_90; + uint *local_8c; + uint *local_88; + uint *local_84; + uint *local_80; + uint *local_7c; + uint *local_78; + uint *local_74; + undefined4 local_70; + int *local_6c; + int *local_68; + int *local_64; + int local_60; + int *local_5c; + int *local_58; + undefined4 local_54; + int *local_50; + int *local_4c; + int *local_48; + int *local_44; + int *local_40; + int *local_3c; + float local_38; + float local_34; + int *local_30; + int *local_2c; + int *local_28; + char *local_24; + int *local_20; + float local_1c; + undefined4 local_18; + int *local_14; + char *local_10; + int *local_c; + int *local_8; + + local_8 = param_5; + FUN_004029b0(param_5,(int)param_4); + iVar2 = FUN_00403f84(param_6,(char *)param_4[2]); + if (iVar2 == 0) { + local_c = param_4; + local_10 = (char *)param_4[2]; + FUN_004dbb24((int *)&DAT_00524e68,local_10,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_listed_in__skl__does_not_exist_i_004e3983,(char *)0x0); + FUN_004d9c38((int *)&DAT_00524e68); + uVar7 = 0xffffffff; + local_14 = param_4; + piVar5 = param_4 + 3; + *piVar5 = *piVar5 + -1; + if (*piVar5 == 0) { + FUN_004024d8(param_4,3); + } + } + else { + if (param_3 == 0) { + local_18 = 0; + iVar2 = 0; + do { + (**(code **)(*param_5 + 0x20))(param_5,&local_18,4); + iVar2 = iVar2 + 1; + } while (iVar2 < 5); + } + else { + FUN_0041f07c(param_5,(char *)param_4[2],param_6,param_3,s_DefaultEffectSiteName_004e39b0); + FUN_0041f07c(param_5,(char *)param_4[2],param_6,param_3,s_ExternalVideoEffectSiteName_004e39c6 + ); + FUN_0041f07c(param_5,(char *)param_4[2],param_6,param_3,s_InternalVideoEffectSiteName_004e39e2 + ); + FUN_0041f07c(param_5,(char *)param_4[2],param_6,param_3,s_ExternalAudioEffectSiteName_004e39fe + ); + FUN_0041f07c(param_5,(char *)param_4[2],param_6,param_3,s_InternalAudioEffectSiteName_004e3a1a + ); + } + iVar2 = FUN_00404118(param_6,(char *)param_4[2],s_WeaponDamagePoints_004e3a36,&local_1c); + if (iVar2 == 0) { + local_20 = param_4; + local_24 = (char *)param_4[2]; + FUN_004dbb24((int *)&DAT_00524e68,local_24,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_Must_have_a_WeaponDamagePoints_004e3a49,(char *)0x0); + FUN_004d9c38((int *)&DAT_00524e68); + uVar7 = 0; + local_28 = param_4; + piVar5 = param_4 + 3; + *piVar5 = *piVar5 + -1; + if (*piVar5 == 0) { + FUN_004024d8(param_4,3); + } + } + else if (local_1c == _DAT_0041f074) { + FUN_004dbb24((int *)&DAT_00524e68,s_DefaultDamagePoints_must_have_a_n_004e3a69,(char *)0x0); + FUN_004d9c38((int *)&DAT_00524e68); + uVar7 = 0; + local_2c = param_4; + piVar5 = param_4 + 3; + *piVar5 = *piVar5 + -1; + if (*piVar5 == 0) { + FUN_004024d8(param_4,3); + } + } + else { + local_30 = param_5; + (**(code **)(*param_5 + 0x20))(param_5,&local_1c,4); + iVar2 = FUN_00404118(param_6,(char *)param_4[2],s_CollisionDamagePoints_004e3a9a,&local_34); + if (iVar2 == 0) { + local_38 = _DAT_0041f078 / local_1c; + } + else if (local_34 == _DAT_0041f074) { + local_38 = _DAT_0041f078 / local_1c; + } + else { + local_38 = _DAT_0041f078 / local_34; + } + local_3c = param_5; + (**(code **)(*param_5 + 0x20))(param_5,&local_38,4); + iVar2 = FUN_00404118(param_6,(char *)param_4[2],s_BallisticDamagePoints_004e3ab0,&local_34); + local_38 = local_34; + if (iVar2 == 0) { + local_38 = local_1c; + } + local_38 = _DAT_0041f078 / local_38; + local_40 = param_5; + (**(code **)(*param_5 + 0x20))(param_5,&local_38,4); + iVar2 = FUN_00404118(param_6,(char *)param_4[2],s_ExplosiveDamagePoints_004e3ac6,&local_34); + local_38 = local_34; + if (iVar2 == 0) { + local_38 = local_1c; + } + local_38 = _DAT_0041f078 / local_38; + local_44 = param_5; + (**(code **)(*param_5 + 0x20))(param_5,&local_38,4); + iVar2 = FUN_00404118(param_6,(char *)param_4[2],s_LaserDamagePoints_004e3adc,&local_34); + local_38 = local_34; + if (iVar2 == 0) { + local_38 = local_1c; + } + local_38 = _DAT_0041f078 / local_38; + local_48 = param_5; + (**(code **)(*param_5 + 0x20))(param_5,&local_38,4); + iVar2 = FUN_00404118(param_6,(char *)param_4[2],s_EnergyDamagePoints_004e3aee,&local_34); + if (iVar2 == 0) { + local_34 = local_1c; + } + local_38 = _DAT_0041f078 / local_34; + local_4c = param_5; + (**(code **)(*param_5 + 0x20))(param_5,&local_38,4); + local_50 = FUN_00404720(param_1,s_video_004e3b01,&DAT_004e3b07); + if (local_50 == (int *)0x0) { + local_54 = 0; + local_58 = param_5; + (**(code **)(*param_5 + 0x20))(param_5,&local_54,4); + uVar7 = 1; + local_5c = param_4; + piVar5 = param_4 + 3; + *piVar5 = *piVar5 + -1; + if (*piVar5 == 0) { + FUN_004024d8(param_4,3); + } + } + else { + local_60 = FUN_00403b60((int)local_50); + local_64 = param_5; + (**(code **)(*param_5 + 0x20))(param_5,&local_60,4); + if (local_60 != 0) { + puVar1 = (undefined4 *)local_50[1]; + while (puVar1 != (undefined4 *)0x0) { + puVar3 = (undefined4 *)FUN_00402298(0x10); + if (puVar3 == (undefined4 *)0x0) { + local_68 = (int *)0x0; + } + else { + local_68 = (int *)FUN_004023f4(puVar3); + } + local_68[3] = local_68[3] + 1; + FUN_00402a98((int *)&local_6c,(int *)&local_68,(char *)(puVar1 + 2)); + piVar5 = local_6c + 3; + *piVar5 = *piVar5 + -1; + if (*piVar5 == 0) { + FUN_004024d8(local_6c,3); + } + puVar4 = (uint *)FUN_00402298(0x10); + if (puVar4 == (uint *)0x0) { + local_74 = (uint *)0x0; + } + else { + local_74 = FUN_00402460(puVar4,&DAT_004e3b0b); + } + local_74[3] = local_74[3] + 1; + iVar2 = FUN_004027d8((int)local_68,(int)local_74); + cVar6 = iVar2 == 0; + local_78 = local_74; + puVar4 = local_74 + 3; + *puVar4 = *puVar4 - 1; + if (*puVar4 == 0) { + FUN_004024d8((int *)local_74,3); + } + if (cVar6 == '\0') { + puVar4 = (uint *)FUN_00402298(0x10); + if (puVar4 == (uint *)0x0) { + local_7c = (uint *)0x0; + } + else { + local_7c = FUN_00402460(puVar4,&DAT_004e3b0f); + } + local_7c[3] = local_7c[3] + 1; + iVar2 = FUN_004027d8((int)local_68,(int)local_7c); + cVar6 = iVar2 == 0; + local_80 = local_7c; + puVar4 = local_7c + 3; + *puVar4 = *puVar4 - 1; + if (*puVar4 == 0) { + FUN_004024d8((int *)local_7c,3); + } + if (cVar6 == '\0') { + puVar4 = (uint *)FUN_00402298(0x10); + if (puVar4 == (uint *)0x0) { + local_84 = (uint *)0x0; + } + else { + local_84 = FUN_00402460(puVar4,&DAT_004e3b14); + } + local_84[3] = local_84[3] + 1; + iVar2 = FUN_004027d8((int)local_68,(int)local_84); + cVar6 = iVar2 == 0; + local_88 = local_84; + puVar4 = local_84 + 3; + *puVar4 = *puVar4 - 1; + if (*puVar4 == 0) { + FUN_004024d8((int *)local_84,3); + } + if (cVar6 == '\0') { + puVar4 = (uint *)FUN_00402298(0x10); + if (puVar4 == (uint *)0x0) { + local_8c = (uint *)0x0; + } + else { + local_8c = FUN_00402460(puVar4,&DAT_004e3b19); + } + local_8c[3] = local_8c[3] + 1; + iVar2 = FUN_004027d8((int)local_68,(int)local_8c); + cVar6 = iVar2 == 0; + local_90 = local_8c; + puVar4 = local_8c + 3; + *puVar4 = *puVar4 - 1; + if (*puVar4 == 0) { + FUN_004024d8((int *)local_8c,3); + } + if (cVar6 == '\0') { + puVar4 = (uint *)FUN_00402298(0x10); + if (puVar4 == (uint *)0x0) { + local_94 = (uint *)0x0; + } + else { + local_94 = FUN_00402460(puVar4,&DAT_004e3b1e); + } + local_94[3] = local_94[3] + 1; + iVar2 = FUN_004027d8((int)local_68,(int)local_94); + cVar6 = iVar2 == 0; + local_98 = local_94; + puVar4 = local_94 + 3; + *puVar4 = *puVar4 - 1; + if (*puVar4 == 0) { + FUN_004024d8((int *)local_94,3); + } + if (cVar6 == '\0') { + puVar4 = (uint *)FUN_00402298(0x10); + if (puVar4 == (uint *)0x0) { + local_9c = (uint *)0x0; + } + else { + local_9c = FUN_00402460(puVar4,&DAT_004e3b23); + } + local_9c[3] = local_9c[3] + 1; + iVar2 = FUN_004027d8((int)local_68,(int)local_9c); + cVar6 = iVar2 == 0; + local_a0 = local_9c; + puVar4 = local_9c + 3; + *puVar4 = *puVar4 - 1; + if (*puVar4 == 0) { + FUN_004024d8((int *)local_9c,3); + } + if (cVar6 == '\0') { + puVar4 = (uint *)FUN_00402298(0x10); + if (puVar4 == (uint *)0x0) { + local_a4 = (uint *)0x0; + } + else { + local_a4 = FUN_00402460(puVar4,&DAT_004e3b28); + } + local_a4[3] = local_a4[3] + 1; + iVar2 = FUN_004027d8((int)local_68,(int)local_a4); + cVar6 = iVar2 == 0; + local_a8 = local_a4; + puVar4 = local_a4 + 3; + *puVar4 = *puVar4 - 1; + if (*puVar4 == 0) { + FUN_004024d8((int *)local_a4,3); + } + if (cVar6 == '\0') { + puVar4 = (uint *)FUN_00402298(0x10); + if (puVar4 == (uint *)0x0) { + local_ac = (uint *)0x0; + } + else { + local_ac = FUN_00402460(puVar4,&DAT_004e3b2d); + } + local_ac[3] = local_ac[3] + 1; + iVar2 = FUN_004027d8((int)local_68,(int)local_ac); + cVar6 = iVar2 == 0; + local_b0 = local_ac; + puVar4 = local_ac + 3; + *puVar4 = *puVar4 - 1; + if (*puVar4 == 0) { + FUN_004024d8((int *)local_ac,3); + } + if (cVar6 != '\0') { + local_70 = 7; + } + } + else { + local_70 = 6; + } + } + else { + local_70 = 5; + } + } + else { + local_70 = 4; + } + } + else { + local_70 = 3; + } + } + else { + local_70 = 2; + } + } + else { + local_70 = 1; + } + } + else { + local_70 = 0; + } + local_b4 = param_5; + (**(code **)(*param_5 + 0x20))(param_5,&local_70,4); + local_b8 = (int *)FUN_004064fc(*(char **)(param_7 + 0x10),(char *)puVar1[1]); + piVar5 = (int *)FUN_00402298(0x20); + if (piVar5 == (int *)0x0) { + local_bc = (int *)0x0; + } + else { + local_bc = FUN_00403e84(piVar5,(char *)local_b8,1); + } + local_c0 = FUN_00404720((int)local_bc,(char *)param_4[2],s_material_004e3b32); + local_c4 = 0; + if (local_c0 == (int *)0x0) { + (**(code **)(*param_5 + 0x20))(param_5,&local_c4,4); + } + else { + local_c4 = FUN_00403b60((int)local_c0); + local_c8 = param_5; + (**(code **)(*param_5 + 0x20))(param_5,&local_c4,4); + if (local_c4 != 0) { + puVar3 = (undefined4 *)local_c0[1]; + local_d0 = (undefined4 *)FUN_00402298(0x10); + if (local_d0 == (undefined4 *)0x0) { + local_cc = (int *)0x0; + } + else { + local_cc = (int *)FUN_004023f4(local_d0); + } + local_cc[3] = local_cc[3] + 1; + for (; puVar3 != (undefined4 *)0x0; puVar3 = (undefined4 *)*puVar3) { + FUN_00402a98((int *)&local_d4,(int *)&local_cc,(char *)puVar3[1]); + piVar5 = local_d4 + 3; + *piVar5 = *piVar5 + -1; + if (*piVar5 == 0) { + FUN_004024d8(local_d4,3); + } + FUN_004029b0(param_5,(int)local_cc); + } + piVar5 = local_cc + 3; + *piVar5 = *piVar5 + -1; + if (*piVar5 == 0) { + FUN_004024d8(local_cc,3); + } + } + if (local_c0 != (int *)0x0) { + (**(code **)*local_c0)(local_c0,3); + } + } + puVar1 = (undefined4 *)*puVar1; + FUN_004022d0(local_b8); + FUN_00403ecc(local_bc,3); + piVar5 = local_68 + 3; + *piVar5 = *piVar5 + -1; + if (*piVar5 == 0) { + FUN_004024d8(local_68,3); + } + } + } + if (local_50 != (int *)0x0) { + (**(code **)*local_50)(local_50,3); + } + uVar7 = 1; + piVar5 = param_4 + 3; + *piVar5 = *piVar5 + -1; + if (*piVar5 == 0) { + FUN_004024d8(param_4,3); + } + } + } + } + return uVar7; +} + + + +/* @0041f07c file=? name=FUN_0041f07c */ + +undefined4 __cdecl FUN_0041f07c(int *param_1,char *param_2,int param_3,int param_4,char *param_5) + +{ + int *piVar1; + undefined4 *puVar2; + int *piVar3; + undefined4 *puVar4; + undefined4 uVar5; + int *local_14; + int local_10; + int *local_c; + int local_8; + + local_8 = 0; + piVar3 = FUN_00404720(param_3,param_2,param_5); + if (piVar3 == (int *)0x0) { + (**(code **)(*param_1 + 0x20))(param_1,&local_8,4); + } + else { + local_8 = FUN_00403b60((int)piVar3); + (**(code **)(*param_1 + 0x20))(param_1,&local_8,4); + puVar2 = (undefined4 *)piVar3[1]; + puVar4 = (undefined4 *)FUN_00402298(0x10); + if (puVar4 == (undefined4 *)0x0) { + local_c = (int *)0x0; + } + else { + local_c = (int *)FUN_004023f4(puVar4); + } + local_c[3] = local_c[3] + 1; + for (; puVar2 != (undefined4 *)0x0; puVar2 = (undefined4 *)*puVar2) { + FUN_00402a98((int *)&local_14,(int *)&local_c,(char *)puVar2[1]); + piVar1 = local_14 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_14,3); + } + local_c[3] = local_c[3] + 1; + local_10 = FUN_0042760c(local_c,param_4); + if (local_10 == -1) { + FUN_004dbb24((int *)&DAT_00524e68,(char *)local_c[2],(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_not_found_in_skl_file___004e3b3b,(char *)0x0); + FUN_004d9c38((int *)&DAT_00524e68); + if (piVar3 != (int *)0x0) { + (**(code **)*piVar3)(piVar3,3); + } + uVar5 = 0xffffffff; + piVar3 = local_c + 3; + *piVar3 = *piVar3 + -1; + if (*piVar3 == 0) { + FUN_004024d8(local_c,3); + return uVar5; + } + return 0xffffffff; + } + (**(code **)(*param_1 + 0x20))(param_1,&local_10,4); + } + if (piVar3 != (int *)0x0) { + (**(code **)*piVar3)(piVar3,3); + } + piVar3 = local_c + 3; + *piVar3 = *piVar3 + -1; + if (*piVar3 == 0) { + FUN_004024d8(local_c,3); + } + } + return 1; +} + + + +/* @0041f1f7 file=? name=FUN_0041f1f7 */ + +undefined4 * __cdecl FUN_0041f1f7(undefined4 *param_1,int param_2) + +{ + FUN_004194d8(param_1,param_2); + *param_1 = &PTR_FUN_004e3c94; + return param_1; +} + + + +/* @0041f216 file=? name=FUN_0041f216 */ + +undefined4 * __cdecl FUN_0041f216(undefined4 *param_1,int param_2) + +{ + FUN_004194d8(param_1,param_2); + *param_1 = &PTR_FUN_004e3c94; + return param_1; +} + + + +/* @0041f235 file=? name=FUN_0041f235 */ + +void __cdecl FUN_0041f235(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e3c94; + FUN_0041951c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0041f261 file=? name=FUN_0041f261 */ + +undefined4 * __cdecl FUN_0041f261(undefined4 *param_1,int param_2) + +{ + FUN_004194d8(param_1,param_2); + *param_1 = &PTR_FUN_004e3c38; + return param_1; +} + + + +/* @0041f280 file=? name=FUN_0041f280 */ + +undefined4 * __cdecl FUN_0041f280(undefined4 *param_1,int param_2) + +{ + FUN_004194d8(param_1,param_2); + *param_1 = &PTR_FUN_004e3c38; + return param_1; +} + + + +/* @0041f29f file=? name=FUN_0041f29f */ + +void __cdecl FUN_0041f29f(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e3c38; + FUN_0041951c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0041f2cb file=? name=FUN_0041f2cb */ + +undefined4 * __cdecl FUN_0041f2cb(undefined4 *param_1,undefined4 param_2) + +{ + FUN_0041827c(param_1,param_2); + *param_1 = &PTR_FUN_004e3c30; + return param_1; +} + + + +/* @0041f2ea file=? name=FUN_0041f2ea */ + +void __cdecl FUN_0041f2ea(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e3c30; + FUN_004182a8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0041f316 file=? name=FUN_0041f316 */ + +undefined4 * __cdecl FUN_0041f316(undefined4 *param_1,int param_2) + +{ + FUN_00418398(param_1,param_2); + *param_1 = &PTR_FUN_004e3bdc; + return param_1; +} + + + +/* @0041f335 file=? name=FUN_0041f335 */ + +undefined4 * __cdecl FUN_0041f335(undefined4 *param_1,int param_2) + +{ + FUN_00418398(param_1,param_2); + *param_1 = &PTR_FUN_004e3bdc; + return param_1; +} + + + +/* @0041f354 file=? name=FUN_0041f354 */ + +undefined4 * __cdecl FUN_0041f354(undefined4 *param_1,int param_2) + +{ + FUN_004183c0(param_1,param_2); + *param_1 = &PTR_FUN_004e3bdc; + return param_1; +} + + + +/* @0041f373 file=? name=FUN_0041f373 */ + +void __cdecl FUN_0041f373(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e3bdc; + FUN_004183ec(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0041f39f file=? name=FUN_0041f39f */ + +undefined4 * __cdecl FUN_0041f39f(undefined4 *param_1,undefined4 param_2,undefined4 param_3) + +{ + FUN_00419184(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004e3bc0; + return param_1; +} + + + +/* @0041f3c2 file=? name=FUN_0041f3c2 */ + +void __cdecl FUN_0041f3c2(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e3bc0; + FUN_004191b4(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0041f3ee file=? name=FUN_0041f3ee */ + +undefined4 __cdecl FUN_0041f3ee(undefined4 param_1,int param_2,int param_3) + +{ + undefined4 uVar1; + + if (*(int *)(param_3 + 0x14) == *(int *)(param_2 + 0x14)) { + uVar1 = 0; + } + else { + uVar1 = 1; + if (*(int *)(param_2 + 0x14) <= *(int *)(param_3 + 0x14)) { + uVar1 = 0xffffffff; + } + } + return uVar1; +} + + + +/* @0041f41d file=? name=FUN_0041f41d */ + +undefined4 __cdecl FUN_0041f41d(undefined4 param_1,int *param_2,int param_3) + +{ + undefined4 uVar1; + + if (*(int *)(param_3 + 0x14) == *param_2) { + uVar1 = 0; + } + else { + uVar1 = 1; + if (*param_2 <= *(int *)(param_3 + 0x14)) { + uVar1 = 0xffffffff; + } + } + return uVar1; +} + + + +/* @0041f449 file=? name=FUN_0041f449 */ + +undefined4 * __cdecl FUN_0041f449(undefined4 *param_1,undefined4 param_2) + +{ + FUN_0041827c(param_1,param_2); + *param_1 = &PTR_FUN_004e3bb8; + return param_1; +} + + + +/* @0041f468 file=? name=FUN_0041f468 */ + +void __cdecl FUN_0041f468(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e3bb8; + FUN_004182a8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0041f494 file=? name=FUN_0041f494 */ + +undefined4 * __cdecl FUN_0041f494(undefined4 *param_1,int param_2) + +{ + FUN_00418398(param_1,param_2); + *param_1 = &PTR_FUN_004e3b64; + return param_1; +} + + + +/* @0041f4b3 file=? name=FUN_0041f4b3 */ + +undefined4 * __cdecl FUN_0041f4b3(undefined4 *param_1,int param_2) + +{ + FUN_00418398(param_1,param_2); + *param_1 = &PTR_FUN_004e3b64; + return param_1; +} + + + +/* @0041f4d2 file=? name=FUN_0041f4d2 */ + +undefined4 * __cdecl FUN_0041f4d2(undefined4 *param_1,int param_2) + +{ + FUN_004183c0(param_1,param_2); + *param_1 = &PTR_FUN_004e3b64; + return param_1; +} + + + +/* @0041f4f1 file=? name=FUN_0041f4f1 */ + +void __cdecl FUN_0041f4f1(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e3b64; + FUN_004183ec(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0041f51d file=? name=FUN_0041f51d */ + +undefined4 * __cdecl FUN_0041f51d(undefined4 param_1,int param_2,undefined4 *param_3) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_0041d485(); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_0041d42e(puVar1,param_1,param_2,param_3); + } + return puVar1; +} + + + +/* @0041f54d file=? name=FUN_0041f54d */ + +void __cdecl FUN_0041f54d(int param_1,int param_2) + +{ + FUN_0041bbd8(param_1 + 100,param_2); + *(uint *)(param_1 + 0xb8) = *(uint *)(param_1 + 0xb8) | 8; + return; +} + + + +/* @0041f570 file=? name=FUN_0041f570 */ + +void __cdecl FUN_0041f570(int param_1,undefined4 *param_2) + +{ + if ((*(byte *)(param_1 + 0x28) & 0x10) == 0) { + FUN_0041a92c((int)param_2); + return; + } + FUN_00419c90(param_1,param_2); + return; +} + + + +/* @0041f59c file=? name=FUN_0041f59c */ + +void __cdecl FUN_0041f59c(int param_1,uint *param_2) + +{ + if ((int)param_2[1] < 3) { + FUN_00419bbc(param_1,(int)param_2); + } + FUN_00420ef4(param_2 + 3,(undefined4 *)(param_1 + 0x184)); + param_2[5] = *(uint *)(param_1 + 0x194); + if ((*(uint *)(param_1 + 0x28) & 0xc) == 4) { + (**(code **)(**(int **)(DAT_004efc94 + 0x20) + 0x18)) + (*(int **)(DAT_004efc94 + 0x20),param_2,1,*(undefined4 *)(param_1 + 0x18c)); + } + else if ((*(byte *)(param_1 + 0x28) & 0x10) == 0) { + FUN_0041acbc(*(int *)(DAT_004efc94 + 0x60),1,param_1,param_2,DAT_004e17f4); + } + else { + FUN_00419bbc(param_1,(int)param_2); + } + return; +} + + + +/* @0041f640 file=? name=FUN_0041f640 */ + +void __cdecl FUN_0041f640(int param_1,uint *param_2) + +{ + FUN_00420ef4(param_2 + 3,(undefined4 *)(param_1 + 0x184)); + param_2[5] = *(uint *)(param_1 + 0x194); + FUN_00434ea0(*(undefined4 *)(DAT_004efc94 + 0x30),param_1,param_2); + return; +} + + + +/* @0041f680 file=? name=FUN_0041f680 */ + +void __cdecl FUN_0041f680(int param_1,int *param_2,int param_3) + +{ + if (param_3 == 0) { + FUN_0041bd60(param_1,param_2,0); + FUN_0040a938(param_2 + 4,(undefined4 *)(param_1 + 0x100)); + FUN_0040a938((undefined4 *)(param_1 + 300),(undefined4 *)(param_1 + 0x100)); + *param_2 = 0x2c; + } + else if (param_3 == 1) { + param_2[2] = *(int *)(param_1 + 0x10); + *(undefined2 *)((int)param_2 + 6) = 1; + FUN_0041f858(param_1,param_2); + } + else { + FUN_0041bd60(param_1,param_2,(short)param_3); + } + *(undefined2 *)(param_2 + 1) = 0; + return; +} + + + +/* @0041f710 file=? name=FUN_0041f710 */ + +void __cdecl FUN_0041f710(int param_1,undefined4 *param_2) + +{ + int *piVar1; + int *piVar2; + undefined4 local_14; + int local_10; + int *local_c; + int local_8; + + FUN_004030dc(&local_14,param_2,*param_2,0x1c); + for (; piVar1 = local_c, local_8 != (int)local_c - local_10; + local_c = (int *)((int)local_c + *piVar1)) { + piVar2 = (int *)FUN_0041f964(param_1,*(ushort *)(local_c + 1) - 1); + (**(code **)(*piVar2 + 0x18))(piVar2,piVar1); + } + return; +} + + + +/* @0041f76c file=? name=FUN_0041f76c */ + +void __cdecl FUN_0041f76c(int param_1,undefined4 *param_2) + +{ + if (*(short *)((int)param_2 + 6) == 0) { + FUN_0040a938((undefined4 *)(param_1 + 300),param_2 + 4); + if ((*(int *)(DAT_004efc94 + 0x88) < 5) || (*(int *)(DAT_004efc94 + 0x88) == 0xb)) { + FUN_0040a938((undefined4 *)(param_1 + 0x100),(undefined4 *)(param_1 + 300)); + FUN_0040ab44((float *)(param_1 + 0xd0),(undefined4 *)(param_1 + 0x100)); + } + FUN_0041bd34(param_1,(int)param_2); + } + else if (*(short *)((int)param_2 + 6) == 1) { + FUN_0041f800(param_1,param_2); + } + else { + FUN_0041bd34(param_1,(int)param_2); + } + return; +} + + + +/* @0041f800 file=? name=FUN_0041f800 */ + +void __cdecl FUN_0041f800(int param_1,undefined4 *param_2) + +{ + int *piVar1; + int *piVar2; + undefined4 local_14; + int local_10; + int *local_c; + int local_8; + + FUN_004030dc(&local_14,param_2,*param_2,0x10); + for (; piVar2 = local_c, local_8 != (int)local_c - local_10; + local_c = (int *)((int)local_c + *piVar2)) { + piVar1 = *(int **)(*(int *)(param_1 + 0x120) + local_c[1] * 4); + (**(code **)(*piVar1 + 0x10))(piVar1,local_c); + } + return; +} + + + +/* @0041f858 file=? name=FUN_0041f858 */ + +void __cdecl FUN_0041f858(int param_1,int *param_2) + +{ + int *piVar1; + int *piVar2; + int iVar3; + undefined4 local_18 [2]; + int *local_10; + int *local_8; + + FUN_004030dc(local_18,param_2,0x578 - (int)(param_2 + -0x1487eb),0x10); + local_8 = local_10; + for (iVar3 = 0; piVar2 = local_10, iVar3 < *(int *)(param_1 + 0x11c); iVar3 = iVar3 + 1) { + piVar1 = *(int **)(*(int *)(param_1 + 0x120) + iVar3 * 4); + (**(code **)(*piVar1 + 0x14))(piVar1,local_10); + local_10 = (int *)((int)local_10 + *piVar2); + } + if (local_10 != local_8) { + *param_2 = (int)local_10 - (int)param_2; + } + return; +} + + + +/* @0041f8d4 file=? name=FUN_0041f8d4 */ + +undefined4 * __cdecl FUN_0041f8d4(int *param_1,undefined4 param_2) + +{ + int iVar1; + undefined4 *puVar2; + int local_14 [2]; + int local_c; + + FUN_004030dc(local_14,&DAT_00521fac,0x578,0x1c); + iVar1 = local_c; + if (((*(int *)(DAT_004efc94 + 0x88) == 5) || (*(int *)(DAT_004efc94 + 0x88) == 6)) || + ((*(byte *)((int)param_1 + 0x29) & 0x10) != 0)) { + (**(code **)(*param_1 + 0x14))(param_1,param_2,local_14); + } + else { + FUN_0041bd98(param_1,local_14); + } + if (iVar1 == local_c) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = &DAT_00521fac; + DAT_00521fb0 = 0xf; + DAT_00521fac = local_c + -0x521fac; + DAT_00521fb4 = 0; + } + return puVar2; +} + + + +/* @0041f964 file=? name=FUN_0041f964 */ + +int __cdecl FUN_0041f964(int param_1,uint param_2) + +{ + if (param_2 != 0xffffffff) { + if (param_2 < *(uint *)(param_1 + 0x124)) { + return *(int *)(*(int *)(param_1 + 0x128) + param_2 * 4); + } + param_1 = 0; + } + return param_1; +} + + + /* @0041f98c file=? name=FUN_0041f98c */ undefined4 __cdecl FUN_0041f98c(int param_1,char *param_2) @@ -2482,6 +3902,92 @@ undefined4 __cdecl FUN_00422060(int param_1) +/* @004221c0 file=? name=FUN_004221c0 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004221c0(int *param_1,float param_2) + +{ + float fVar1; + int iVar2; + + if ((param_1[0x95] != 0 || param_1[0x96] != 0) || param_1[0x97] != 0) { + iVar2 = (*(code *)param_1[0x95])(param_1); + if (iVar2 == 0) { + FUN_0040a938(param_1 + 0x40,param_1 + 0x98); + FUN_00408440(param_1 + 0x7d,param_1 + 0xa6); + FUN_00408440(param_1 + 0x74,param_1 + 0xa9); + } + else { + fVar1 = param_2 / ((float)(param_1[0xb8] - param_1[4]) / DAT_0052140c + param_2); + FUN_0040a4d8((float *)(param_1 + 0x43),(float *)(param_1 + 0x43),(float *)(param_1 + 0x9b), + fVar1); + FUN_00408848((float *)(param_1 + 0x74),(float *)(param_1 + 0x74),_DAT_0042235c - fVar1, + (float *)(param_1 + 0xa9),fVar1); + FUN_00408848((float *)(param_1 + 0x40),(float *)(param_1 + 0x40),_DAT_0042235c - fVar1, + (float *)(param_1 + 0x98),fVar1); + FUN_00408848((float *)(param_1 + 0x7d),(float *)(param_1 + 0x7d),_DAT_0042235c - fVar1, + (float *)(param_1 + 0xa6),fVar1); + } + if ((*(byte *)((int)param_1 + 0x29) & 0x40) == 0) { + (**(code **)(*param_1 + 0x34))(param_1); + } + else { + FUN_0040ab44((float *)(param_1 + 0x34),param_1 + 0x40); + } + FUN_00421b6c((int)param_1); + } + return; +} + + + +/* @00422360 file=? name=FUN_00422360 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_00422360(int *param_1,int *param_2,int *param_3) + +{ + int iVar1; + float fVar2; + int iVar3; + + fVar2 = (float)(*param_2 - param_1[4]) / DAT_0052140c; + if (_DAT_00422494 <= fVar2) { + if ((param_1[0x10] != 1) && (fVar2 <= _DAT_00422498)) { + FUN_0040879c((float *)(param_1 + 0x71),(float *)(param_1 + 0x7d),(float *)(param_1 + 0x34)); + FUN_0040a7f4(param_1 + 0x77,(undefined4 *)&DAT_004e0fd4); + FUN_0040a938(param_1 + 0x9f,param_1 + 0x40); + FUN_0041fc58(param_1,param_2,param_3); + param_1[0x93] = param_1[0x93] + 1; + if (param_1[0x93] != 0x14) { + return; + } + FUN_0040a138((float *)(param_1 + 0x43)); + param_1[0x93] = 0; + return; + } + param_1[4] = *param_2; + if (param_1[0x10] == 1) { + param_1[5] = *param_2; + } + if (param_1[0x4a] != 0) { + for (iVar3 = 0; iVar3 < param_1[0x49]; iVar3 = iVar3 + 1) { + iVar1 = *(int *)(param_1[0x4a] + iVar3 * 4); + if (iVar1 != 0) { + *(int *)(iVar1 + 0x10) = *param_2; + } + } + } + } + FUN_0041bd98(param_1,param_3); + return; +} + + + /* @0042249c file=? name=FUN_0042249c */ /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ @@ -2982,6 +4488,38 @@ LAB_00422f1e: +/* @00422f44 file=? name=FUN_00422f44 */ + +void __cdecl +FUN_00422f44(int param_1,float param_2,undefined4 param_3,undefined4 param_4,int param_5) + +{ + int iVar1; + float10 fVar2; + float local_14; + float local_10; + float local_c; + float local_8; + + iVar1 = (**(code **)(*(int *)(*(int *)(param_1 + 0x2e8) + 0x18) + 0x1c)) + (*(int *)(param_1 + 0x2e8),param_3,param_1 + 500, + *(undefined4 *)(param_1 + 0x2f8),param_5 + 0x14,&local_8); + if (iVar1 != 0) { + if (param_2 < local_8) { + local_8 = param_2; + } + local_c = local_8 / param_2; + local_10 = *(float *)(param_1 + 0x244); + local_14 = *(float *)(param_1 + 0x240); + fVar2 = FUN_00422ff8(param_1,param_4,param_2,local_c,(float *)(param_5 + 0x14),&local_10, + *(float *)(param_1 + 0x248),&local_14); + *(float *)(param_5 + 4) = (float)fVar2; + } + return; +} + + + /* @00422fe0 file=? name=FUN_00422fe0 */ void __cdecl FUN_00422fe0(int param_1) @@ -11043,6 +12581,32 @@ void __cdecl FUN_0042c55f(int *param_1,byte param_2) +/* @0042c58c file=? name=FUN_0042c58c */ + +void __cdecl FUN_0042c58c(int param_1,int param_2) + +{ + int *piVar1; + int iVar2; + int *piVar3; + + iVar2 = (**(code **)(*(int *)(*(int *)(DAT_004efc94 + 0x2c) + 0x54) + 0xc)) + (*(int *)(DAT_004efc94 + 0x2c) + 0x54,param_2 + 0x1c); + *(int *)(param_1 + 0x3ac) = iVar2; + *(int *)(param_1 + 0x304) = iVar2 + 0x100; + FUN_00408440((undefined4 *)(param_1 + 0x3b4),(undefined4 *)(param_2 + 0x28)); + FUN_0041bbd8(param_1 + 0x2c,0); + *(undefined4 *)(param_1 + 0x310) = *(undefined4 *)(param_2 + 0x24); + piVar3 = (int *)FUN_00414b60(); + piVar1 = (int *)(param_1 + 0x30c); + *piVar1 = *piVar3; + iVar2 = FUN_004dcd94(); + *piVar1 = *piVar1 - iVar2; + return; +} + + + /* @0042c630 file=? name=FUN_0042c630 */ void __cdecl FUN_0042c630(int param_1,undefined4 param_2) @@ -11171,6 +12735,41 @@ void __cdecl FUN_0042c870(int param_1,int param_2,float param_3) +/* @0042c93c file=? name=FUN_0042c93c */ + +void __cdecl FUN_0042c93c(int param_1,float param_2) + +{ + int iVar1; + float local_10 [3]; + + if (*(int *)(param_1 + 0x3ac) == 0) { + return; + } + FUN_00408b98(local_10,(float *)(param_1 + 0x3b4),(float *)(*(int *)(param_1 + 0x3ac) + 0xd0)); + if ((*(float *)(param_1 + 0x310) < + (float)(*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x30c)) / DAT_0052140c) || + (iVar1 = (**(code **)(**(int **)(param_1 + 0x3b0) + 4))(*(int **)(param_1 + 0x3b0),local_10), + iVar1 == 0)) { + iVar1 = *(int *)(param_1 + 0x3b0); + FUN_0042ca20(param_1,local_10); + if (*(int *)(param_1 + 0x3b0) == 0) { + *(int *)(param_1 + 0x3b0) = iVar1; + } + if (iVar1 != *(int *)(param_1 + 0x3b0)) { + FUN_0042ca44(param_1,local_10); + *(int *)(param_1 + 0x30c) = *(int *)(param_1 + 0x10); + goto LAB_0042ca01; + } + } + FUN_0042ca7c(param_1,param_2,local_10); +LAB_0042ca01: + FUN_0040ab44((float *)(param_1 + 0xd0),(undefined4 *)(param_1 + 0x100)); + return; +} + + + /* @0042ca20 file=? name=FUN_0042ca20 */ void __cdecl FUN_0042ca20(int param_1,float *param_2) @@ -11464,7 +13063,7 @@ int * __cdecl FUN_0042cfdc(int *param_1,int param_2,undefined4 param_3) piVar2 = (int *)FUN_00414b60(); param_1[0xc3] = *piVar2; param_1[0xc4] = 0; - param_1[7] = (int)PTR_LAB_004e6310; + param_1[7] = (int)PTR_FUN_004e6310; param_1[8] = DAT_004e6314; param_1[9] = DAT_004e6318; FUN_0041bbd8((int)(param_1 + 0xb),0); @@ -11493,1060 +13092,3 @@ int * __cdecl FUN_0042d16c(int param_1) -/* @0042d19c file=? name=FUN_0042d19c */ - -void __cdecl FUN_0042d19c(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_004e6360; - FUN_0042bab4(param_1 + 0xc5,2); - FUN_00423c18(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @0042d1dc file=? name=FUN_0042d1dc */ - -void __cdecl FUN_0042d1dc(int param_1) - -{ - FUN_0041a1a4(**(int **)(param_1 + 0xc),0x4e6278); - return; -} - - - -/* @0042d2c0 file=? name=FUN_0042d2c0 */ - -void __cdecl FUN_0042d2c0(int *param_1,int param_2) - -{ - int iVar1; - undefined4 local_24; - undefined4 local_20; - undefined4 local_1c; - undefined4 local_18; - undefined4 local_14; - undefined4 local_10; - undefined4 local_c; - undefined4 local_8; - - iVar1 = *(int *)(param_2 + 0xc); - if (iVar1 == 0x44) { -LAB_0042d2e5: - local_14 = 0x10; - local_10 = 4; - local_c = 1; - local_8 = 1; - (**(code **)(*param_1 + 0xc))(param_1,&local_14); - } - else { - if (iVar1 != 0x4f) { - if (iVar1 == 100) goto LAB_0042d2e5; - if (iVar1 != 0x6f) { - return; - } - } - local_24 = 0x10; - local_20 = 9; - local_1c = 1; - local_18 = 1; - (**(code **)(*param_1 + 0xc))(param_1,&local_24); - } - return; -} - - - -/* @0042d340 file=? name=FUN_0042d340 */ - -void __cdecl FUN_0042d340(int param_1,int param_2) - -{ - int iVar1; - undefined4 *puVar2; - - if (0 < *(int *)(param_2 + 0xc)) { - iVar1 = *(int *)(param_1 + 0xd0); - if (*(int *)(iVar1 + 0x40) != 2) { - *(undefined **)(iVar1 + 0x1c) = PTR_FUN_004e6474; - *(undefined4 *)(iVar1 + 0x20) = DAT_004e6478; - *(undefined4 *)(iVar1 + 0x24) = DAT_004e647c; - FUN_0041bbd8(iVar1 + 0x2c,2); - FUN_004dbb24(&DAT_00524e20,(char *)(*(int *)(iVar1 + 0x3b0) + 0x70),(char *)0x0); - FUN_004d9c38(&DAT_00524e20); - return; - } - *(undefined **)(iVar1 + 0x1c) = PTR_LAB_004e6480; - *(undefined4 *)(iVar1 + 0x20) = DAT_004e6484; - *(undefined4 *)(iVar1 + 0x24) = DAT_004e6488; - FUN_0041bbd8(iVar1 + 0x2c,0); - puVar2 = (undefined4 *)FUN_00414b60(); - *(undefined4 *)(iVar1 + 0x30c) = *puVar2; - } - return; -} - - - -/* @0042d3f0 file=? name=FUN_0042d3f0 */ - -void __cdecl FUN_0042d3f0(int param_1,int param_2) - -{ - if (0 < *(int *)(param_2 + 0xc)) { - FUN_0042ce64(*(int *)(param_1 + 0xd0)); - } - return; -} - - - -/* @0042d410 file=? name=FUN_0042d410 */ - -void __cdecl FUN_0042d410(int param_1,int param_2) - -{ - if (0 < *(int *)(param_2 + 0xc)) { - FUN_0042cf20(*(int *)(param_1 + 0xd0)); - } - return; -} - - - -/* @0042d430 file=? name=FUN_0042d430 */ - -void __cdecl FUN_0042d430(int param_1,int param_2) - -{ - if (0 < *(int *)(param_2 + 0xc)) { - FUN_0042cd48(*(int *)(param_1 + 0xd0)); - } - return; -} - - - -/* @0042d450 file=? name=FUN_0042d450 */ - -void __cdecl FUN_0042d450(int param_1,int param_2) - -{ - if (0 < *(int *)(param_2 + 0xc)) { - FUN_0042cd94(*(int *)(param_1 + 0xd0)); - } - return; -} - - - -/* @0042d470 file=? name=FUN_0042d470 */ - -void __cdecl FUN_0042d470(int param_1,int param_2) - -{ - if (0 < *(int *)(param_2 + 0xc)) { - FUN_0042c150(*(int *)(param_1 + 0xd0) + 0x314); - } - return; -} - - - -/* @0042d494 file=? name=FUN_0042d494 */ - -undefined4 * __cdecl -FUN_0042d494(undefined4 *param_1,undefined4 param_2,undefined4 param_3,char *param_4, - undefined4 param_5) - -{ - FUN_0041c52c(param_1,param_2,param_3,param_4,param_5); - *param_1 = &PTR_FUN_004e65d4; - param_1[0x39] = 0; - param_1[0x3a] = 0; - param_1[0x3b] = 0; - param_1[0x3c] = 0; - param_1[0x3e] = 0; - param_1[0x3f] = 0; - param_1[0x3d] = 0; - return param_1; -} - - - -/* @0042d4f8 file=? name=FUN_0042d4f8 */ - -void __cdecl FUN_0042d4f8(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_004e65d4; - FUN_0041c648(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @0042d524 file=? name=FUN_0042d524 */ - -void __cdecl FUN_0042d524(int param_1) - -{ - FUN_0041a1a4(**(int **)(param_1 + 0xc),0x4e63b0); - return; -} - - - -/* @0042d600 file=? name=FUN_0042d600 */ - -void __cdecl FUN_0042d600(int param_1) - -{ - float fVar1; - int *piVar2; - float10 fVar3; - - if (*(int *)(param_1 + 0x40) == 2) { - FUN_0041bbd8(param_1 + 0x2c,1); - } - piVar2 = (int *)FUN_00414b60(); - fVar1 = (float)*piVar2 / DAT_0052140c; - if (*(float *)(param_1 + 0x1cc) <= fVar1 - *(float *)(param_1 + 0x1d0)) { - FUN_0041bbd8(param_1 + 0x2c,2); - *(float *)(param_1 + 0x1d0) = fVar1; - if (DAT_004e0f5c == -1) { - FUN_00407f68(); - } - fVar3 = FUN_00408050(); - *(float *)(param_1 + 0x1cc) = - (float)(((float10)*(float *)(param_1 + 0x1c4) - (float10)*(float *)(param_1 + 0x1c8)) * - fVar3 + (float10)*(float *)(param_1 + 0x1c8)); - } - return; -} - - - -/* @0042d698 file=? name=FUN_0042d698 */ - -undefined4 * __cdecl FUN_0042d698(undefined4 *param_1,int param_2,undefined4 param_3) - -{ - int iVar1; - undefined4 *puVar2; - int iVar3; - int *piVar4; - float10 fVar5; - - FUN_0041ff38(param_1,param_2,param_3); - *param_1 = &PTR_FUN_004e66b0; - param_1[7] = PTR_FUN_004e6648; - param_1[8] = DAT_004e664c; - param_1[9] = DAT_004e6650; - param_1[10] = param_1[10] | 0x10; - iVar3 = FUN_00407064(*(int *)(DAT_004efc94 + 0x68),param_1[0x6f],0xf); - iVar1 = *(int *)(iVar3 + 4); - *(int *)(iVar3 + 4) = *(int *)(iVar3 + 4) + 1; - if (iVar1 == 0) { - FUN_00406cd0(iVar3); - } - puVar2 = *(undefined4 **)(iVar3 + 0x3c); - param_1[0x71] = *puVar2; - param_1[0x72] = puVar2[1]; - *(int *)(iVar3 + 4) = *(int *)(iVar3 + 4) + -1; - fVar5 = FUN_00408050(); - param_1[0x73] = - (float)(((float10)(float)param_1[0x71] - (float10)(float)param_1[0x72]) * fVar5 + - (float10)(float)param_1[0x72]); - FUN_0041bbd8((int)(param_1 + 0xb),1); - piVar4 = (int *)FUN_00414b60(); - param_1[0x74] = (float)*piVar4 / DAT_0052140c; - return param_1; -} - - - -/* @0042d768 file=? name=FUN_0042d768 */ - -undefined4 * __cdecl FUN_0042d768(int param_1) - -{ - undefined4 *puVar1; - - puVar1 = (undefined4 *)FUN_00402298(0x1d4); - if (puVar1 == (undefined4 *)0x0) { - puVar1 = (undefined4 *)0x0; - } - else { - puVar1 = FUN_0042d698(puVar1,param_1,&DAT_004e6604); - } - return puVar1; -} - - - -/* @0042d798 file=? name=FUN_0042d798 */ - -undefined4 __cdecl FUN_0042d798(undefined4 *param_1) - -{ - int iVar1; - - iVar1 = FUN_00420234(param_1); - if (iVar1 == 0) { - return 0; - } - param_1[7] = 0x3f; - param_1[0xb] = 0x30c; - return 1; -} - - - -/* @0042d7d0 file=? name=FUN_0042d7d0 */ - -void __cdecl FUN_0042d7d0(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_004e66b0; - FUN_00420508(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @0042d7fc file=? name=FUN_0042d7fc */ - -undefined4 __cdecl -FUN_0042d7fc(int param_1,char *param_2,int param_3,undefined4 param_4,float *param_5) - -{ - float *pfVar1; - int iVar2; - undefined4 *puVar3; - - pfVar1 = param_5; - if (param_5 == (float *)0x0) { - pfVar1 = (float *)FUN_00402298(8); - } - iVar2 = FUN_00404118(param_3,s_gamedata_004e665d,s_MaxWaitTime_004e6666,pfVar1); - if (iVar2 == 0) { - FUN_004dbb24((int *)&DAT_00524e68,param_2,(char *)0x0); - FUN_004dbb24((int *)&DAT_00524e68,s_Missing_MaxWaitTime_004e6672,(char *)0x0); - FUN_004d9c38((int *)&DAT_00524e68); - } - else { - iVar2 = FUN_00404118(param_3,s_gamedata_004e6686,s_MinWaitTime_004e668f,pfVar1 + 1); - if (iVar2 != 0) { - if (param_5 == (float *)0x0) { - puVar3 = (undefined4 *)FUN_00406db4(param_1,param_2,0xf,1,0,pfVar1,8,-1); - FUN_004022d0((int *)pfVar1); - return *puVar3; - } - return 0; - } - FUN_004dbb24((int *)&DAT_00524e68,param_2,(char *)0x0); - FUN_004dbb24((int *)&DAT_00524e68,s_Missing_MinWaitTime_004e669b,(char *)0x0); - FUN_004d9c38((int *)&DAT_00524e68); - } - if (param_5 == (float *)0x0) { - FUN_004022d0((int *)pfVar1); - } - return 0xffffffff; -} - - - -/* @0042d8f8 file=? name=FUN_0042d8f8 */ - -void __cdecl FUN_0042d8f8(int param_1) - -{ - FUN_0041a1a4(**(int **)(param_1 + 0xc),0x4e6618); - return; -} - - - -/* @0042d990 file=? name=FUN_0042d990 */ - -undefined4 * __cdecl -FUN_0042d990(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) - -{ - FUN_004178cc(param_1,2); - *param_1 = &PTR_FUN_004e6a8c; - param_1[4] = param_2; - param_1[3] = param_3; - param_1[5] = param_4; - return param_1; -} - - - -/* @0042d9c0 file=? name=FUN_0042d9c0 */ - -void __cdecl FUN_0042d9c0(int param_1) - -{ - *(undefined4 *)(param_1 + 500) = 0x40400000; - FUN_0041bbd8(param_1 + 0x2c,3); - return; -} - - - -/* @0042d9e0 file=? name=FUN_0042d9e0 */ - -void __cdecl FUN_0042d9e0(int param_1) - -{ - *(undefined4 *)(param_1 + 500) = 0x40400000; - *(ushort *)(param_1 + 0x18) = *(ushort *)(param_1 + 0x18) | 1; - FUN_0041bbd8(param_1 + 0x2c,4); - return; -} - - - -/* @0042da08 file=? name=FUN_0042da08 */ - -bool __cdecl FUN_0042da08(int param_1) - -{ - return (*(uint *)(param_1 + 0x28) & 0xc) != 0; -} - - - -/* @0042da20 file=? name=FUN_0042da20 */ - -void __cdecl FUN_0042da20(int param_1,int param_2) - -{ - *(float *)(param_1 + 0x1c8) = *(float *)(param_2 + 0x1c) + *(float *)(param_1 + 0x1c8); - (**(code **)(**(int **)(param_1 + 0x1fc) + 0x30))(*(int **)(param_1 + 0x1fc),param_2); - return; -} - - - -/* @0042da4c file=munga/player.cpp name=FUN_0042da4c */ - -void FUN_0042da4c(void) - -{ - FUN_0040385c(s_Drop_zone_reply_should_not_be_ha_004e68ca,s_d__tesla_bt_munga_PLAYER_CPP_004e6907, - 0xd8); - return; -} - - - -/* @0042da68 file=? name=FUN_0042da68 */ - -void __cdecl -FUN_0042da68(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5 - ,undefined4 param_6,undefined4 param_7,undefined4 param_8) - -{ - int iVar1; - undefined4 *puVar2; - undefined4 uVar3; - undefined4 uVar4; - undefined4 local_88; - undefined4 local_84; - undefined4 local_80; - undefined4 local_7c [2]; - undefined4 local_74; - undefined4 local_70; - undefined4 local_6c; - undefined4 local_68 [2]; - undefined4 local_60; - undefined4 local_5c; - undefined4 local_58; - undefined4 local_54; - undefined4 local_50; - undefined4 local_4c; - undefined4 local_48; - undefined4 local_44; - undefined4 local_40; - undefined4 local_3c [6]; - undefined4 local_24 [6]; - undefined4 local_c [2]; - - if ((*(uint *)(param_1 + 0x28) & 0x8000) != 0) { - iVar1 = DAT_004efc94[0xb]; - puVar2 = (undefined4 *) - FUN_00406ff8(DAT_004efc94[0x1a],*(char **)(*(int *)(param_1 + 0x1f8) + 0x2c),1,-1); - uVar4 = *puVar2; - uVar3 = FUN_0042904c(iVar1); - puVar2 = (undefined4 *)FUN_00420ebc(local_c,uVar3); - local_88 = 0x7c; - local_84 = 3; - local_80 = 1; - FUN_00420ea4(local_7c,puVar2); - local_74 = 0; - local_70 = 0; - local_6c = 0x45; - FUN_00420ea4(local_68,(undefined4 *)&DAT_00522524); - local_5c = 0x1c100; - local_58 = param_2; - local_54 = param_3; - local_50 = param_4; - local_4c = param_5; - local_48 = param_6; - local_44 = param_7; - local_40 = param_8; - local_60 = uVar4; - FUN_0040a7c0(local_3c,(undefined4 *)&DAT_004e0fd4); - FUN_0040a7c0(local_24,(undefined4 *)&DAT_004e0fd4); - uVar4 = (**(code **)(*DAT_004efc94 + 0x30))(DAT_004efc94,&local_88); - *(undefined4 *)(param_1 + 0x1fc) = uVar4; - } - return; -} - - - -/* @0042db80 file=? name=FUN_0042db80 */ - -void __cdecl FUN_0042db80(int param_1,uint *param_2) - -{ - undefined4 uVar1; - int iVar2; - int *piVar3; - int *unaff_EDI; - undefined4 local_58; - undefined4 local_54; - undefined4 local_50; - undefined4 local_4c [2]; - undefined4 local_44; - undefined4 local_40; - undefined4 local_3c [2]; - undefined4 local_34; - undefined4 local_30; - float local_2c; - float local_28; - float local_24; - int local_20 [3]; - int local_14; - undefined4 *local_10; - float local_c; - float local_8; - - if ((param_2[7] == *(uint *)(param_1 + 0x200)) && (*(int *)(param_1 + 0x40) != 1)) { - iVar2 = FUN_0042104c((int *)(param_2 + 8),(int *)&DAT_00522524); - if (iVar2 == 0) { - unaff_EDI = (int *)(**(code **)(*(int *)(*(int *)(DAT_004efc94 + 0x2c) + 0x54) + 0xc)) - (*(int *)(DAT_004efc94 + 0x2c) + 0x54,param_2 + 8); - } - else { - iVar2 = FUN_00403ad0(*(int *)(DAT_004efc94 + 0x24) + 0x18,s_DropZones_004e6924); - FUN_00421414(local_20,iVar2 + 0x10); - do { - piVar3 = (int *)(**(code **)(local_20[0] + 0x28))(local_20); - if (piVar3 == (int *)0x0) goto LAB_0042dcb8; - iVar2 = FUN_004d4bec((char *)(piVar3 + 0x72),&DAT_004e692e,3); - } while (iVar2 == 0); - FUN_00408644(&local_2c,(float *)(param_1 + 0x100),(float *)(piVar3 + 0x40)); - local_8 = local_24 * local_24 + local_28 * local_28 + local_2c * local_2c; - unaff_EDI = piVar3; -LAB_0042dcb8: - while (piVar3 = (int *)(**(code **)(local_20[0] + 0x28))(local_20), piVar3 != (int *)0x0) { - iVar2 = FUN_004d4bec((char *)(piVar3 + 0x72),&DAT_004e6932,3); - if (iVar2 != 0) { - FUN_00408644(&local_2c,(float *)(param_1 + 0x100),(float *)(piVar3 + 0x40)); - local_c = local_24 * local_24 + local_28 * local_28 + local_2c * local_2c; - if (local_c < local_8) { - unaff_EDI = piVar3; - local_8 = local_c; - } - } - } - FUN_00420ef4(param_2 + 8,unaff_EDI + 0x61); - FUN_00421452(local_20,2); - } - uVar1 = *(undefined4 *)(param_1 + 0x200); - local_10 = (undefined4 *)(param_1 + 0x184); - local_58 = 0x2c; - local_54 = 0x15; - local_50 = 1; - FUN_00420ea4(local_4c,(undefined4 *)&DAT_00522524); - local_44 = 0; - local_40 = 0; - FUN_00420ea4(local_3c,local_10); - local_34 = 0x15; - local_30 = uVar1; - (**(code **)(*unaff_EDI + 0xc))(unaff_EDI,&local_58); - piVar3 = (int *)FUN_00414b60(); - local_14 = *piVar3; - iVar2 = FUN_004dcd94(); - local_14 = local_14 + iVar2; - FUN_0041acbc(*(int *)(DAT_004efc94 + 0x60),3,param_1,param_2,local_14); - } - return; -} - - - -/* @0042df8c file=? name=FUN_0042df8c */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -void __cdecl FUN_0042df8c(int param_1,float param_2) - -{ - int iVar1; - undefined4 local_48 [3]; - undefined4 local_3c [4]; - undefined4 local_2c [4]; - undefined4 local_1c [3]; - undefined4 local_10 [3]; - - if (*(int *)(param_1 + 0x40) == 3) { - *(float *)(param_1 + 500) = *(float *)(param_1 + 500) - param_2; - if (*(float *)(param_1 + 500) <= _DAT_0042e0dc) { - FUN_0041bbd8(param_1 + 0x2c,2); - if (DAT_004efc94[0x22] == 4) { - FUN_0044f5b4(local_10); - (**(code **)(*DAT_004efc94 + 0xc))(DAT_004efc94,local_10); - } - else if (DAT_004efc94[0x22] == 9) { - FUN_0044f634(local_1c); - (**(code **)(*DAT_004efc94 + 0xc))(DAT_004efc94,local_1c); - } - } - } - else if ((*(int *)(param_1 + 0x40) == 4) && - (*(float *)(param_1 + 500) = *(float *)(param_1 + 500) - param_2, - *(float *)(param_1 + 500) <= _DAT_0042e0dc)) { - iVar1 = DAT_004efc94[0x22]; - if (iVar1 == 6) { - FUN_0044f5d0(local_2c,0); - (**(code **)(*DAT_004efc94 + 0xc))(DAT_004efc94,local_2c); - } - else if (iVar1 == 8) { - FUN_0044f618(local_48); - (**(code **)(*DAT_004efc94 + 0xc))(DAT_004efc94,local_48); - } - else if (iVar1 == 10) { - FUN_0044f5f4(local_3c,0); - (**(code **)(*DAT_004efc94 + 0xc))(DAT_004efc94,local_3c); - } - } - return; -} - - - -/* @0042e100 file=? name=FUN_0042e100 */ - -void __cdecl FUN_0042e100(int *param_1,float param_2) - -{ - (**(code **)(*param_1 + 0x34))(param_1); - FUN_0042df8c((int)param_1,param_2); - if (param_1[0x7f] != 0) { - FUN_0040a938(param_1 + 0x40,(undefined4 *)(param_1[0x7f] + 0x100)); - FUN_0040ab28(param_1 + 0x34,(undefined4 *)(param_1[0x7f] + 0xd0)); - } - FUN_0042e5a0((int)param_1,param_2); - return; -} - - - -/* @0042e168 file=? name=FUN_0042e168 */ - -void __cdecl FUN_0042e168(int param_1) - -{ - if (*(int *)(param_1 + 0x1fc) != 0) { - FUN_0040a938((undefined4 *)(param_1 + 0x100),(undefined4 *)(*(int *)(param_1 + 0x1fc) + 0x100)); - FUN_0040ab28((undefined4 *)(param_1 + 0xd0),(undefined4 *)(*(int *)(param_1 + 0x1fc) + 0xd0)); - } - return; -} - - - -/* @0042e1ac file=? name=FUN_0042e1ac */ - -undefined4 FUN_0042e1ac(void) - -{ - int iVar1; - int iVar2; - int local_3c [5]; - int local_28 [6]; - int local_10 [3]; - - iVar1 = FUN_00403ad0(*(int *)(DAT_004efc94 + 0x24) + 0x18,s_Players_004e6940); - if (iVar1 != 0) { - iVar2 = 0; - FUN_00421414(local_10,iVar1 + 0x10); - FUN_0042e763(local_28,0,0); - while (iVar1 = (**(code **)(local_10[0] + 0x28))(local_10), iVar1 != 0) { - if ((*(byte *)(iVar1 + 0x29) & 0x40) == 0) { - (**(code **)(local_28[0] + 8))(local_28,iVar1,iVar1 + 0x1c8); - iVar2 = iVar2 + 1; - *(undefined4 *)(iVar1 + 0x1c4) = 0; - } - else { - *(undefined4 *)(iVar1 + 0x1cc) = 0xffffffff; - } - } - FUN_0042e8cb(local_3c,(int)local_28); - while( true ) { - iVar2 = iVar2 + -1; - iVar1 = (**(code **)(local_3c[0] + 0x28))(local_3c); - if (iVar1 == 0) break; - *(int *)(iVar1 + 0x1cc) = iVar2; - if (iVar2 == 0) { - *(undefined4 *)(iVar1 + 0x1c4) = 1; - } - } - FUN_0042e909(local_3c,2); - FUN_0042e786(local_28,2); - FUN_00421452(local_10,2); - } - return 1; -} - - - -/* @0042e2ac file=? name=FUN_0042e2ac */ - -void __cdecl FUN_0042e2ac(int param_1,undefined4 *param_2) - -{ - FUN_0041f76c(param_1,param_2); - *(undefined4 *)(param_1 + 0x1c8) = param_2[0xb]; - FUN_00408440((undefined4 *)(param_1 + 0x1d0),param_2 + 0xc); - return; -} - - - -/* @0042e2e4 file=? name=FUN_0042e2e4 */ - -void __cdecl FUN_0042e2e4(int param_1,int *param_2,int param_3) - -{ - FUN_0041f680(param_1,param_2,param_3); - *param_2 = 0x3c; - param_2[0xb] = *(int *)(param_1 + 0x1c8); - FUN_00408440(param_2 + 0xc,(undefined4 *)(param_1 + 0x1d0)); - return; -} - - - -/* @0042e328 file=? name=FUN_0042e328 */ - -undefined4 * __cdecl FUN_0042e328(undefined4 *param_1,int param_2,undefined4 param_3) - -{ - undefined4 *puVar1; - undefined4 uVar2; - code *in_stack_0000004c; - - FUN_0041ff38(param_1,param_2,param_3); - *param_1 = &PTR_FUN_004e6a48; - FUN_0042e718(param_1 + 0x79,0); - param_1[0x82] = 0; - param_1[0x77] = 0; - param_1[0x7e] = *(undefined4 *)(DAT_004efc94 + 200); - puVar1 = (undefined4 *)FUN_00406ff8(*(int *)(DAT_004efc94 + 0x68),s_player_004e6948,1,-1); - if (puVar1 != (undefined4 *)0x0) { - param_1[0x6f] = *puVar1; - } - if (*(int *)(*(int *)(*(int *)(DAT_004efc94 + 0x2c) + 0x14) + 0xc) != param_1[0x61]) { - FUN_0042939c((undefined4 *)&stack0xffffffdc,*(int *)(DAT_004efc94 + 0x2c)); - (*in_stack_0000004c)(&stack0xffffffdc); - FUN_004293c0((int *)&stack0xffffffdc,2); - } - if ((param_1[10] & 0x8000) == 0) { - puVar1 = FUN_004212b0(*(int *)(DAT_004efc94 + 0x24),s_Players_004e694f); - (**(code **)(puVar1[4] + 4))(puVar1 + 4); - param_1[0x78] = *(undefined4 *)(param_2 + 0x4c); - } - else { - param_1[0x78] = 0xffffffff; - } - param_1[10] = param_1[10] | 0x10; - param_1[0x7f] = 0; - if ((param_1[10] & 0xc) == 4) { - param_1[7] = PTR_FUN_004e6814; - param_1[8] = DAT_004e6818; - param_1[9] = DAT_004e681c; - param_1[0x7e] = 0; - } - else { - param_1[0x7e] = *(undefined4 *)(DAT_004efc94 + 200); - param_1[7] = PTR_LAB_004e6808; - param_1[8] = DAT_004e680c; - param_1[9] = DAT_004e6810; - } - param_1[0x73] = 0; - param_1[0x80] = 0xfffffffe; - param_1[0x72] = 0; - uVar2 = (**(code **)(**(int **)(DAT_004efc94 + 0x40) + 0x18)) - (*(int **)(DAT_004efc94 + 0x40),param_1[99]); - param_1[0x81] = uVar2; - param_1[0x71] = 0; - param_1[0x7d] = 0; - return param_1; -} - - - -/* @0042e4f4 file=? name=FUN_0042e4f4 */ - -undefined4 * __cdecl FUN_0042e4f4(int param_1) - -{ - undefined4 *puVar1; - - puVar1 = (undefined4 *)FUN_00402298(0x20c); - if (puVar1 == (undefined4 *)0x0) { - puVar1 = (undefined4 *)0x0; - } - else { - puVar1 = FUN_0042e328(puVar1,param_1,&DAT_004e6714); - } - return puVar1; -} - - - -/* @0042e524 file=? name=FUN_0042e524 */ - -void __cdecl FUN_0042e524(int *param_1,byte param_2) - -{ - undefined4 *puVar1; - - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_004e6a48; - puVar1 = (undefined4 *)param_1[0x81]; - if (puVar1 != (undefined4 *)0x0) { - (**(code **)*puVar1)(puVar1,3); - } - param_1[0x81] = 0; - FUN_0042e737(param_1 + 0x79,2); - FUN_00420508(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @0042e580 file=? name=FUN_0042e580 */ - -void __cdecl FUN_0042e580(int param_1,undefined4 param_2) - -{ - (**(code **)(*(int *)(param_1 + 0x1e4) + 4))(param_1 + 0x1e4,param_2); - return; -} - - - -/* @0042e5a0 file=? name=FUN_0042e5a0 */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -void __cdecl FUN_0042e5a0(int param_1,float param_2) - -{ - undefined4 *puVar1; - int iVar2; - int local_10 [3]; - - FUN_0042e954(local_10,param_1 + 0x1e4); - *(undefined4 *)(param_1 + 0x1dc) = 0; - while( true ) { - iVar2 = (**(code **)(local_10[0] + 0x28))(local_10); - if (iVar2 == 0) break; - *(int *)(param_1 + 0x1dc) = iVar2; - } - iVar2 = *(int *)(param_1 + 0x1dc); - if (iVar2 != 0) { - *(float *)(iVar2 + 0x14) = *(float *)(iVar2 + 0x14) - param_2; - puVar1 = *(undefined4 **)(param_1 + 0x1dc); - if ((float)puVar1[5] <= _DAT_0042e630) { - if (puVar1 != (undefined4 *)0x0) { - (**(code **)*puVar1)(puVar1,3); - } - *(undefined4 *)(param_1 + 0x1dc) = 0; - } - } - FUN_0042e992(local_10,2); - return; -} - - - -/* @0042e718 file=? name=FUN_0042e718 */ - -undefined4 * __cdecl FUN_0042e718(undefined4 *param_1,undefined4 param_2) - -{ - FUN_00417be0(param_1,param_2); - *param_1 = &PTR_FUN_004e6a40; - return param_1; -} - - - -/* @0042e737 file=? name=FUN_0042e737 */ - -void __cdecl FUN_0042e737(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_004e6a40; - FUN_00417c0c(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @0042e763 file=? name=FUN_0042e763 */ - -undefined4 * __cdecl FUN_0042e763(undefined4 *param_1,undefined4 param_2,undefined4 param_3) - -{ - FUN_004186ac(param_1,param_2,param_3); - *param_1 = &PTR_FUN_004e6a24; - return param_1; -} - - - -/* @0042e786 file=? name=FUN_0042e786 */ - -void __cdecl FUN_0042e786(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_004e6a24; - FUN_004186dc(param_1,0); - if ((param_2 & 1) != 0) { - FUN_0042e861(param_1); - } - } - return; -} - - - -/* @0042e7b2 file=? name=FUN_0042e7b2 */ - -undefined4 __cdecl FUN_0042e7b2(undefined4 param_1,int param_2,int param_3) - -{ - undefined4 uVar1; - - if (*(float *)(param_2 + 0x1c) == *(float *)(param_3 + 0x1c)) { - return 0; - } - if (*(float *)(param_2 + 0x1c) <= *(float *)(param_3 + 0x1c)) { - uVar1 = 0xffffffff; - } - else { - uVar1 = 1; - } - return uVar1; -} - - - -/* @0042e7e3 file=? name=FUN_0042e7e3 */ - -undefined4 __cdecl FUN_0042e7e3(undefined4 param_1,float *param_2,int param_3) - -{ - undefined4 uVar1; - - if (*param_2 == *(float *)(param_3 + 0x1c)) { - return 0; - } - if (*param_2 <= *(float *)(param_3 + 0x1c)) { - uVar1 = 0xffffffff; - } - else { - uVar1 = 1; - } - return uVar1; -} - - - -/* @0042e811 file=? name=FUN_0042e811 */ - -void FUN_0042e811(void) - -{ - int iVar1; - undefined4 *puVar2; - - iVar1 = DAT_004e6974; - DAT_004e6974 = DAT_004e6974 + 1; - puVar2 = DAT_004e6970; - if ((iVar1 == 0) && (puVar2 = (undefined4 *)FUN_00402298(0x28), puVar2 != (undefined4 *)0x0)) { - FUN_00402b98(puVar2,0x18,100,100,s_VChainOf_004e6957); - } - DAT_004e6970 = puVar2; - FUN_00402f74((int)DAT_004e6970); - return; -} - - - -/* @0042e861 file=? name=FUN_0042e861 */ - -void __cdecl FUN_0042e861(undefined4 *param_1) - -{ - FUN_00402f98((int)DAT_004e6970,param_1); - DAT_004e6974 = DAT_004e6974 + -1; - if (DAT_004e6974 == 0) { - if (DAT_004e6970 != (int *)0x0) { - FUN_00402c28(DAT_004e6970,0); - FUN_004022d0(DAT_004e6970); - } - DAT_004e6970 = (int *)0x0; - } - return; -} - - - diff --git a/reference/decomp/all/part_004.c b/reference/decomp/all/part_004.c index c793667..ee12db5 100644 --- a/reference/decomp/all/part_004.c +++ b/reference/decomp/all/part_004.c @@ -1,3 +1,1162 @@ +/* @0042d19c file=? name=FUN_0042d19c */ + +void __cdecl FUN_0042d19c(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e6360; + FUN_0042bab4(param_1 + 0xc5,2); + FUN_00423c18(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0042d1dc file=? name=FUN_0042d1dc */ + +void __cdecl FUN_0042d1dc(int param_1) + +{ + FUN_0041a1a4(**(int **)(param_1 + 0xc),0x4e6278); + return; +} + + + +/* @0042d2c0 file=? name=FUN_0042d2c0 */ + +void __cdecl FUN_0042d2c0(int *param_1,int param_2) + +{ + int iVar1; + undefined4 local_24; + undefined4 local_20; + undefined4 local_1c; + undefined4 local_18; + undefined4 local_14; + undefined4 local_10; + undefined4 local_c; + undefined4 local_8; + + iVar1 = *(int *)(param_2 + 0xc); + if (iVar1 == 0x44) { +LAB_0042d2e5: + local_14 = 0x10; + local_10 = 4; + local_c = 1; + local_8 = 1; + (**(code **)(*param_1 + 0xc))(param_1,&local_14); + } + else { + if (iVar1 != 0x4f) { + if (iVar1 == 100) goto LAB_0042d2e5; + if (iVar1 != 0x6f) { + return; + } + } + local_24 = 0x10; + local_20 = 9; + local_1c = 1; + local_18 = 1; + (**(code **)(*param_1 + 0xc))(param_1,&local_24); + } + return; +} + + + +/* @0042d340 file=? name=FUN_0042d340 */ + +void __cdecl FUN_0042d340(int param_1,int param_2) + +{ + int iVar1; + undefined4 *puVar2; + + if (0 < *(int *)(param_2 + 0xc)) { + iVar1 = *(int *)(param_1 + 0xd0); + if (*(int *)(iVar1 + 0x40) != 2) { + *(undefined **)(iVar1 + 0x1c) = PTR_FUN_004e6474; + *(undefined4 *)(iVar1 + 0x20) = DAT_004e6478; + *(undefined4 *)(iVar1 + 0x24) = DAT_004e647c; + FUN_0041bbd8(iVar1 + 0x2c,2); + FUN_004dbb24(&DAT_00524e20,(char *)(*(int *)(iVar1 + 0x3b0) + 0x70),(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + return; + } + *(undefined **)(iVar1 + 0x1c) = PTR_FUN_004e6480; + *(undefined4 *)(iVar1 + 0x20) = DAT_004e6484; + *(undefined4 *)(iVar1 + 0x24) = DAT_004e6488; + FUN_0041bbd8(iVar1 + 0x2c,0); + puVar2 = (undefined4 *)FUN_00414b60(); + *(undefined4 *)(iVar1 + 0x30c) = *puVar2; + } + return; +} + + + +/* @0042d3f0 file=? name=FUN_0042d3f0 */ + +void __cdecl FUN_0042d3f0(int param_1,int param_2) + +{ + if (0 < *(int *)(param_2 + 0xc)) { + FUN_0042ce64(*(int *)(param_1 + 0xd0)); + } + return; +} + + + +/* @0042d410 file=? name=FUN_0042d410 */ + +void __cdecl FUN_0042d410(int param_1,int param_2) + +{ + if (0 < *(int *)(param_2 + 0xc)) { + FUN_0042cf20(*(int *)(param_1 + 0xd0)); + } + return; +} + + + +/* @0042d430 file=? name=FUN_0042d430 */ + +void __cdecl FUN_0042d430(int param_1,int param_2) + +{ + if (0 < *(int *)(param_2 + 0xc)) { + FUN_0042cd48(*(int *)(param_1 + 0xd0)); + } + return; +} + + + +/* @0042d450 file=? name=FUN_0042d450 */ + +void __cdecl FUN_0042d450(int param_1,int param_2) + +{ + if (0 < *(int *)(param_2 + 0xc)) { + FUN_0042cd94(*(int *)(param_1 + 0xd0)); + } + return; +} + + + +/* @0042d470 file=? name=FUN_0042d470 */ + +void __cdecl FUN_0042d470(int param_1,int param_2) + +{ + if (0 < *(int *)(param_2 + 0xc)) { + FUN_0042c150(*(int *)(param_1 + 0xd0) + 0x314); + } + return; +} + + + +/* @0042d494 file=? name=FUN_0042d494 */ + +undefined4 * __cdecl +FUN_0042d494(undefined4 *param_1,undefined4 param_2,undefined4 param_3,char *param_4, + undefined4 param_5) + +{ + FUN_0041c52c(param_1,param_2,param_3,param_4,param_5); + *param_1 = &PTR_FUN_004e65d4; + param_1[0x39] = 0; + param_1[0x3a] = 0; + param_1[0x3b] = 0; + param_1[0x3c] = 0; + param_1[0x3e] = 0; + param_1[0x3f] = 0; + param_1[0x3d] = 0; + return param_1; +} + + + +/* @0042d4f8 file=? name=FUN_0042d4f8 */ + +void __cdecl FUN_0042d4f8(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e65d4; + FUN_0041c648(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0042d524 file=? name=FUN_0042d524 */ + +void __cdecl FUN_0042d524(int param_1) + +{ + FUN_0041a1a4(**(int **)(param_1 + 0xc),0x4e63b0); + return; +} + + + +/* @0042d600 file=? name=FUN_0042d600 */ + +void __cdecl FUN_0042d600(int param_1) + +{ + float fVar1; + int *piVar2; + float10 fVar3; + + if (*(int *)(param_1 + 0x40) == 2) { + FUN_0041bbd8(param_1 + 0x2c,1); + } + piVar2 = (int *)FUN_00414b60(); + fVar1 = (float)*piVar2 / DAT_0052140c; + if (*(float *)(param_1 + 0x1cc) <= fVar1 - *(float *)(param_1 + 0x1d0)) { + FUN_0041bbd8(param_1 + 0x2c,2); + *(float *)(param_1 + 0x1d0) = fVar1; + if (DAT_004e0f5c == -1) { + FUN_00407f68(); + } + fVar3 = FUN_00408050(); + *(float *)(param_1 + 0x1cc) = + (float)(((float10)*(float *)(param_1 + 0x1c4) - (float10)*(float *)(param_1 + 0x1c8)) * + fVar3 + (float10)*(float *)(param_1 + 0x1c8)); + } + return; +} + + + +/* @0042d698 file=? name=FUN_0042d698 */ + +undefined4 * __cdecl FUN_0042d698(undefined4 *param_1,int param_2,undefined4 param_3) + +{ + int iVar1; + undefined4 *puVar2; + int iVar3; + int *piVar4; + float10 fVar5; + + FUN_0041ff38(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004e66b0; + param_1[7] = PTR_FUN_004e6648; + param_1[8] = DAT_004e664c; + param_1[9] = DAT_004e6650; + param_1[10] = param_1[10] | 0x10; + iVar3 = FUN_00407064(*(int *)(DAT_004efc94 + 0x68),param_1[0x6f],0xf); + iVar1 = *(int *)(iVar3 + 4); + *(int *)(iVar3 + 4) = *(int *)(iVar3 + 4) + 1; + if (iVar1 == 0) { + FUN_00406cd0(iVar3); + } + puVar2 = *(undefined4 **)(iVar3 + 0x3c); + param_1[0x71] = *puVar2; + param_1[0x72] = puVar2[1]; + *(int *)(iVar3 + 4) = *(int *)(iVar3 + 4) + -1; + fVar5 = FUN_00408050(); + param_1[0x73] = + (float)(((float10)(float)param_1[0x71] - (float10)(float)param_1[0x72]) * fVar5 + + (float10)(float)param_1[0x72]); + FUN_0041bbd8((int)(param_1 + 0xb),1); + piVar4 = (int *)FUN_00414b60(); + param_1[0x74] = (float)*piVar4 / DAT_0052140c; + return param_1; +} + + + +/* @0042d768 file=? name=FUN_0042d768 */ + +undefined4 * __cdecl FUN_0042d768(int param_1) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00402298(0x1d4); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_0042d698(puVar1,param_1,&DAT_004e6604); + } + return puVar1; +} + + + +/* @0042d798 file=? name=FUN_0042d798 */ + +undefined4 __cdecl FUN_0042d798(undefined4 *param_1) + +{ + int iVar1; + + iVar1 = FUN_00420234(param_1); + if (iVar1 == 0) { + return 0; + } + param_1[7] = 0x3f; + param_1[0xb] = 0x30c; + return 1; +} + + + +/* @0042d7d0 file=? name=FUN_0042d7d0 */ + +void __cdecl FUN_0042d7d0(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e66b0; + FUN_00420508(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0042d7fc file=? name=FUN_0042d7fc */ + +undefined4 __cdecl +FUN_0042d7fc(int param_1,char *param_2,int param_3,undefined4 param_4,float *param_5) + +{ + float *pfVar1; + int iVar2; + undefined4 *puVar3; + + pfVar1 = param_5; + if (param_5 == (float *)0x0) { + pfVar1 = (float *)FUN_00402298(8); + } + iVar2 = FUN_00404118(param_3,s_gamedata_004e665d,s_MaxWaitTime_004e6666,pfVar1); + if (iVar2 == 0) { + FUN_004dbb24((int *)&DAT_00524e68,param_2,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_Missing_MaxWaitTime_004e6672,(char *)0x0); + FUN_004d9c38((int *)&DAT_00524e68); + } + else { + iVar2 = FUN_00404118(param_3,s_gamedata_004e6686,s_MinWaitTime_004e668f,pfVar1 + 1); + if (iVar2 != 0) { + if (param_5 == (float *)0x0) { + puVar3 = (undefined4 *)FUN_00406db4(param_1,param_2,0xf,1,0,pfVar1,8,-1); + FUN_004022d0((int *)pfVar1); + return *puVar3; + } + return 0; + } + FUN_004dbb24((int *)&DAT_00524e68,param_2,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_Missing_MinWaitTime_004e669b,(char *)0x0); + FUN_004d9c38((int *)&DAT_00524e68); + } + if (param_5 == (float *)0x0) { + FUN_004022d0((int *)pfVar1); + } + return 0xffffffff; +} + + + +/* @0042d8f8 file=? name=FUN_0042d8f8 */ + +void __cdecl FUN_0042d8f8(int param_1) + +{ + FUN_0041a1a4(**(int **)(param_1 + 0xc),0x4e6618); + return; +} + + + +/* @0042d990 file=? name=FUN_0042d990 */ + +undefined4 * __cdecl +FUN_0042d990(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) + +{ + FUN_004178cc(param_1,2); + *param_1 = &PTR_FUN_004e6a8c; + param_1[4] = param_2; + param_1[3] = param_3; + param_1[5] = param_4; + return param_1; +} + + + +/* @0042d9c0 file=? name=FUN_0042d9c0 */ + +void __cdecl FUN_0042d9c0(int param_1) + +{ + *(undefined4 *)(param_1 + 500) = 0x40400000; + FUN_0041bbd8(param_1 + 0x2c,3); + return; +} + + + +/* @0042d9e0 file=? name=FUN_0042d9e0 */ + +void __cdecl FUN_0042d9e0(int param_1) + +{ + *(undefined4 *)(param_1 + 500) = 0x40400000; + *(ushort *)(param_1 + 0x18) = *(ushort *)(param_1 + 0x18) | 1; + FUN_0041bbd8(param_1 + 0x2c,4); + return; +} + + + +/* @0042da08 file=? name=FUN_0042da08 */ + +bool __cdecl FUN_0042da08(int param_1) + +{ + return (*(uint *)(param_1 + 0x28) & 0xc) != 0; +} + + + +/* @0042da20 file=? name=FUN_0042da20 */ + +void __cdecl FUN_0042da20(int param_1,int param_2) + +{ + *(float *)(param_1 + 0x1c8) = *(float *)(param_2 + 0x1c) + *(float *)(param_1 + 0x1c8); + (**(code **)(**(int **)(param_1 + 0x1fc) + 0x30))(*(int **)(param_1 + 0x1fc),param_2); + return; +} + + + +/* @0042da4c file=munga/player.cpp name=FUN_0042da4c */ + +void FUN_0042da4c(void) + +{ + FUN_0040385c(s_Drop_zone_reply_should_not_be_ha_004e68ca,s_d__tesla_bt_munga_PLAYER_CPP_004e6907, + 0xd8); + return; +} + + + +/* @0042da68 file=? name=FUN_0042da68 */ + +void __cdecl +FUN_0042da68(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5 + ,undefined4 param_6,undefined4 param_7,undefined4 param_8) + +{ + int iVar1; + undefined4 *puVar2; + undefined4 uVar3; + undefined4 uVar4; + undefined4 local_88; + undefined4 local_84; + undefined4 local_80; + undefined4 local_7c [2]; + undefined4 local_74; + undefined4 local_70; + undefined4 local_6c; + undefined4 local_68 [2]; + undefined4 local_60; + undefined4 local_5c; + undefined4 local_58; + undefined4 local_54; + undefined4 local_50; + undefined4 local_4c; + undefined4 local_48; + undefined4 local_44; + undefined4 local_40; + undefined4 local_3c [6]; + undefined4 local_24 [6]; + undefined4 local_c [2]; + + if ((*(uint *)(param_1 + 0x28) & 0x8000) != 0) { + iVar1 = DAT_004efc94[0xb]; + puVar2 = (undefined4 *) + FUN_00406ff8(DAT_004efc94[0x1a],*(char **)(*(int *)(param_1 + 0x1f8) + 0x2c),1,-1); + uVar4 = *puVar2; + uVar3 = FUN_0042904c(iVar1); + puVar2 = (undefined4 *)FUN_00420ebc(local_c,uVar3); + local_88 = 0x7c; + local_84 = 3; + local_80 = 1; + FUN_00420ea4(local_7c,puVar2); + local_74 = 0; + local_70 = 0; + local_6c = 0x45; + FUN_00420ea4(local_68,(undefined4 *)&DAT_00522524); + local_5c = 0x1c100; + local_58 = param_2; + local_54 = param_3; + local_50 = param_4; + local_4c = param_5; + local_48 = param_6; + local_44 = param_7; + local_40 = param_8; + local_60 = uVar4; + FUN_0040a7c0(local_3c,(undefined4 *)&DAT_004e0fd4); + FUN_0040a7c0(local_24,(undefined4 *)&DAT_004e0fd4); + uVar4 = (**(code **)(*DAT_004efc94 + 0x30))(DAT_004efc94,&local_88); + *(undefined4 *)(param_1 + 0x1fc) = uVar4; + } + return; +} + + + +/* @0042db80 file=? name=FUN_0042db80 */ + +void __cdecl FUN_0042db80(int param_1,uint *param_2) + +{ + undefined4 uVar1; + int iVar2; + int *piVar3; + int *unaff_EDI; + undefined4 local_58; + undefined4 local_54; + undefined4 local_50; + undefined4 local_4c [2]; + undefined4 local_44; + undefined4 local_40; + undefined4 local_3c [2]; + undefined4 local_34; + undefined4 local_30; + float local_2c; + float local_28; + float local_24; + int local_20 [3]; + int local_14; + undefined4 *local_10; + float local_c; + float local_8; + + if ((param_2[7] == *(uint *)(param_1 + 0x200)) && (*(int *)(param_1 + 0x40) != 1)) { + iVar2 = FUN_0042104c((int *)(param_2 + 8),(int *)&DAT_00522524); + if (iVar2 == 0) { + unaff_EDI = (int *)(**(code **)(*(int *)(*(int *)(DAT_004efc94 + 0x2c) + 0x54) + 0xc)) + (*(int *)(DAT_004efc94 + 0x2c) + 0x54,param_2 + 8); + } + else { + iVar2 = FUN_00403ad0(*(int *)(DAT_004efc94 + 0x24) + 0x18,s_DropZones_004e6924); + FUN_00421414(local_20,iVar2 + 0x10); + do { + piVar3 = (int *)(**(code **)(local_20[0] + 0x28))(local_20); + if (piVar3 == (int *)0x0) goto LAB_0042dcb8; + iVar2 = FUN_004d4bec((char *)(piVar3 + 0x72),&DAT_004e692e,3); + } while (iVar2 == 0); + FUN_00408644(&local_2c,(float *)(param_1 + 0x100),(float *)(piVar3 + 0x40)); + local_8 = local_24 * local_24 + local_28 * local_28 + local_2c * local_2c; + unaff_EDI = piVar3; +LAB_0042dcb8: + while (piVar3 = (int *)(**(code **)(local_20[0] + 0x28))(local_20), piVar3 != (int *)0x0) { + iVar2 = FUN_004d4bec((char *)(piVar3 + 0x72),&DAT_004e6932,3); + if (iVar2 != 0) { + FUN_00408644(&local_2c,(float *)(param_1 + 0x100),(float *)(piVar3 + 0x40)); + local_c = local_24 * local_24 + local_28 * local_28 + local_2c * local_2c; + if (local_c < local_8) { + unaff_EDI = piVar3; + local_8 = local_c; + } + } + } + FUN_00420ef4(param_2 + 8,unaff_EDI + 0x61); + FUN_00421452(local_20,2); + } + uVar1 = *(undefined4 *)(param_1 + 0x200); + local_10 = (undefined4 *)(param_1 + 0x184); + local_58 = 0x2c; + local_54 = 0x15; + local_50 = 1; + FUN_00420ea4(local_4c,(undefined4 *)&DAT_00522524); + local_44 = 0; + local_40 = 0; + FUN_00420ea4(local_3c,local_10); + local_34 = 0x15; + local_30 = uVar1; + (**(code **)(*unaff_EDI + 0xc))(unaff_EDI,&local_58); + piVar3 = (int *)FUN_00414b60(); + local_14 = *piVar3; + iVar2 = FUN_004dcd94(); + local_14 = local_14 + iVar2; + FUN_0041acbc(*(int *)(DAT_004efc94 + 0x60),3,param_1,param_2,local_14); + } + return; +} + + + +/* @0042ddcc file=? name=FUN_0042ddcc */ + +void __cdecl FUN_0042ddcc(int param_1) + +{ + char *pcVar1; + char *pcVar2; + undefined4 uVar3; + int iVar4; + int *piVar5; + int *piVar6; + char *pcVar7; + bool bVar8; + undefined4 local_6c; + undefined4 local_68; + undefined4 local_64; + undefined4 local_60 [2]; + undefined4 local_58; + undefined4 local_54; + undefined4 local_50 [2]; + undefined4 local_48; + undefined4 local_44; + uint local_40 [5]; + undefined4 local_2c; + undefined4 local_28; + undefined4 local_24; + undefined4 local_20 [2]; + int local_18 [3]; + int local_c; + undefined4 *local_8; + + iVar4 = FUN_00403ad0(*(int *)(DAT_004efc94 + 0x24) + 0x18,s_DropZones_004e6936); + if (iVar4 != 0) { + FUN_00421414(local_18,iVar4 + 0x10); + pcVar2 = *(char **)(*(int *)(param_1 + 0x1f8) + 0x28); +LAB_0042de3a: + do { + piVar6 = (int *)(**(code **)(local_18[0] + 0x28))(local_18); + if (piVar6 == (int *)0x0) break; + piVar5 = piVar6 + 0x72; + pcVar7 = pcVar2; + do { + if ((char)*piVar5 != *pcVar7) goto LAB_0042de3a; + bVar8 = true; + if ((char)*piVar5 == '\0') break; + pcVar1 = (char *)((int)piVar5 + 1); + if (*pcVar1 != pcVar7[1]) goto LAB_0042de3a; + piVar5 = (int *)((int)piVar5 + 2); + pcVar7 = pcVar7 + 2; + bVar8 = *pcVar1 == '\0'; + } while (!bVar8); + } while (!bVar8); + if (piVar6 != (int *)0x0) { + *(undefined **)(param_1 + 0x1c) = PTR_FUN_004e67fc; + *(undefined4 *)(param_1 + 0x20) = DAT_004e6800; + *(undefined4 *)(param_1 + 0x24) = DAT_004e6804; + local_40[0] = 0x28; + local_40[1] = 0x17; + local_40[2] = 1; + FUN_00420ea4(local_40 + 3,(undefined4 *)&DAT_00522524); + local_2c = 0; + local_28 = 0; + local_24 = 0xffffffff; + FUN_00420ea4(local_20,piVar6 + 0x61); + local_24 = 0xfffffffe; + uVar3 = *(undefined4 *)(param_1 + 0x200); + local_8 = (undefined4 *)(param_1 + 0x184); + local_6c = 0x2c; + local_68 = 0x15; + local_64 = 1; + FUN_00420ea4(local_60,(undefined4 *)&DAT_00522524); + local_58 = 0; + local_54 = 0; + FUN_00420ea4(local_50,local_8); + local_48 = 0x15; + local_44 = uVar3; + (**(code **)(*piVar6 + 0xc))(piVar6,&local_6c); + piVar6 = (int *)FUN_00414b60(); + local_c = *piVar6; + iVar4 = FUN_004dcd94(); + local_c = local_c + iVar4; + FUN_0041acbc(*(int *)(DAT_004efc94 + 0x60),3,param_1,local_40,local_c); + } + FUN_00421452(local_18,2); + } + return; +} + + + +/* @0042df8c file=? name=FUN_0042df8c */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_0042df8c(int param_1,float param_2) + +{ + int iVar1; + undefined4 local_48 [3]; + undefined4 local_3c [4]; + undefined4 local_2c [4]; + undefined4 local_1c [3]; + undefined4 local_10 [3]; + + if (*(int *)(param_1 + 0x40) == 3) { + *(float *)(param_1 + 500) = *(float *)(param_1 + 500) - param_2; + if (*(float *)(param_1 + 500) <= _DAT_0042e0dc) { + FUN_0041bbd8(param_1 + 0x2c,2); + if (DAT_004efc94[0x22] == 4) { + FUN_0044f5b4(local_10); + (**(code **)(*DAT_004efc94 + 0xc))(DAT_004efc94,local_10); + } + else if (DAT_004efc94[0x22] == 9) { + FUN_0044f634(local_1c); + (**(code **)(*DAT_004efc94 + 0xc))(DAT_004efc94,local_1c); + } + } + } + else if ((*(int *)(param_1 + 0x40) == 4) && + (*(float *)(param_1 + 500) = *(float *)(param_1 + 500) - param_2, + *(float *)(param_1 + 500) <= _DAT_0042e0dc)) { + iVar1 = DAT_004efc94[0x22]; + if (iVar1 == 6) { + FUN_0044f5d0(local_2c,0); + (**(code **)(*DAT_004efc94 + 0xc))(DAT_004efc94,local_2c); + } + else if (iVar1 == 8) { + FUN_0044f618(local_48); + (**(code **)(*DAT_004efc94 + 0xc))(DAT_004efc94,local_48); + } + else if (iVar1 == 10) { + FUN_0044f5f4(local_3c,0); + (**(code **)(*DAT_004efc94 + 0xc))(DAT_004efc94,local_3c); + } + } + return; +} + + + +/* @0042e0e0 file=? name=FUN_0042e0e0 */ + +void __cdecl FUN_0042e0e0(int *param_1,float param_2) + +{ + (**(code **)(*param_1 + 0x34))(param_1); + FUN_0042df8c((int)param_1,param_2); + return; +} + + + +/* @0042e100 file=? name=FUN_0042e100 */ + +void __cdecl FUN_0042e100(int *param_1,float param_2) + +{ + (**(code **)(*param_1 + 0x34))(param_1); + FUN_0042df8c((int)param_1,param_2); + if (param_1[0x7f] != 0) { + FUN_0040a938(param_1 + 0x40,(undefined4 *)(param_1[0x7f] + 0x100)); + FUN_0040ab28(param_1 + 0x34,(undefined4 *)(param_1[0x7f] + 0xd0)); + } + FUN_0042e5a0((int)param_1,param_2); + return; +} + + + +/* @0042e168 file=? name=FUN_0042e168 */ + +void __cdecl FUN_0042e168(int param_1) + +{ + if (*(int *)(param_1 + 0x1fc) != 0) { + FUN_0040a938((undefined4 *)(param_1 + 0x100),(undefined4 *)(*(int *)(param_1 + 0x1fc) + 0x100)); + FUN_0040ab28((undefined4 *)(param_1 + 0xd0),(undefined4 *)(*(int *)(param_1 + 0x1fc) + 0xd0)); + } + return; +} + + + +/* @0042e1ac file=? name=FUN_0042e1ac */ + +undefined4 FUN_0042e1ac(void) + +{ + int iVar1; + int iVar2; + int local_3c [5]; + int local_28 [6]; + int local_10 [3]; + + iVar1 = FUN_00403ad0(*(int *)(DAT_004efc94 + 0x24) + 0x18,s_Players_004e6940); + if (iVar1 != 0) { + iVar2 = 0; + FUN_00421414(local_10,iVar1 + 0x10); + FUN_0042e763(local_28,0,0); + while (iVar1 = (**(code **)(local_10[0] + 0x28))(local_10), iVar1 != 0) { + if ((*(byte *)(iVar1 + 0x29) & 0x40) == 0) { + (**(code **)(local_28[0] + 8))(local_28,iVar1,iVar1 + 0x1c8); + iVar2 = iVar2 + 1; + *(undefined4 *)(iVar1 + 0x1c4) = 0; + } + else { + *(undefined4 *)(iVar1 + 0x1cc) = 0xffffffff; + } + } + FUN_0042e8cb(local_3c,(int)local_28); + while( true ) { + iVar2 = iVar2 + -1; + iVar1 = (**(code **)(local_3c[0] + 0x28))(local_3c); + if (iVar1 == 0) break; + *(int *)(iVar1 + 0x1cc) = iVar2; + if (iVar2 == 0) { + *(undefined4 *)(iVar1 + 0x1c4) = 1; + } + } + FUN_0042e909(local_3c,2); + FUN_0042e786(local_28,2); + FUN_00421452(local_10,2); + } + return 1; +} + + + +/* @0042e2ac file=? name=FUN_0042e2ac */ + +void __cdecl FUN_0042e2ac(int param_1,undefined4 *param_2) + +{ + FUN_0041f76c(param_1,param_2); + *(undefined4 *)(param_1 + 0x1c8) = param_2[0xb]; + FUN_00408440((undefined4 *)(param_1 + 0x1d0),param_2 + 0xc); + return; +} + + + +/* @0042e2e4 file=? name=FUN_0042e2e4 */ + +void __cdecl FUN_0042e2e4(int param_1,int *param_2,int param_3) + +{ + FUN_0041f680(param_1,param_2,param_3); + *param_2 = 0x3c; + param_2[0xb] = *(int *)(param_1 + 0x1c8); + FUN_00408440(param_2 + 0xc,(undefined4 *)(param_1 + 0x1d0)); + return; +} + + + +/* @0042e328 file=? name=FUN_0042e328 */ + +undefined4 * __cdecl FUN_0042e328(undefined4 *param_1,int param_2,undefined4 param_3) + +{ + undefined4 *puVar1; + undefined4 uVar2; + code *in_stack_0000004c; + + FUN_0041ff38(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004e6a48; + FUN_0042e718(param_1 + 0x79,0); + param_1[0x82] = 0; + param_1[0x77] = 0; + param_1[0x7e] = *(undefined4 *)(DAT_004efc94 + 200); + puVar1 = (undefined4 *)FUN_00406ff8(*(int *)(DAT_004efc94 + 0x68),s_player_004e6948,1,-1); + if (puVar1 != (undefined4 *)0x0) { + param_1[0x6f] = *puVar1; + } + if (*(int *)(*(int *)(*(int *)(DAT_004efc94 + 0x2c) + 0x14) + 0xc) != param_1[0x61]) { + FUN_0042939c((undefined4 *)&stack0xffffffdc,*(int *)(DAT_004efc94 + 0x2c)); + (*in_stack_0000004c)(&stack0xffffffdc); + FUN_004293c0((int *)&stack0xffffffdc,2); + } + if ((param_1[10] & 0x8000) == 0) { + puVar1 = FUN_004212b0(*(int *)(DAT_004efc94 + 0x24),s_Players_004e694f); + (**(code **)(puVar1[4] + 4))(puVar1 + 4); + param_1[0x78] = *(undefined4 *)(param_2 + 0x4c); + } + else { + param_1[0x78] = 0xffffffff; + } + param_1[10] = param_1[10] | 0x10; + param_1[0x7f] = 0; + if ((param_1[10] & 0xc) == 4) { + param_1[7] = PTR_FUN_004e6814; + param_1[8] = DAT_004e6818; + param_1[9] = DAT_004e681c; + param_1[0x7e] = 0; + } + else { + param_1[0x7e] = *(undefined4 *)(DAT_004efc94 + 200); + param_1[7] = PTR_FUN_004e6808; + param_1[8] = DAT_004e680c; + param_1[9] = DAT_004e6810; + } + param_1[0x73] = 0; + param_1[0x80] = 0xfffffffe; + param_1[0x72] = 0; + uVar2 = (**(code **)(**(int **)(DAT_004efc94 + 0x40) + 0x18)) + (*(int **)(DAT_004efc94 + 0x40),param_1[99]); + param_1[0x81] = uVar2; + param_1[0x71] = 0; + param_1[0x7d] = 0; + return param_1; +} + + + +/* @0042e4f4 file=? name=FUN_0042e4f4 */ + +undefined4 * __cdecl FUN_0042e4f4(int param_1) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00402298(0x20c); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_0042e328(puVar1,param_1,&DAT_004e6714); + } + return puVar1; +} + + + +/* @0042e524 file=? name=FUN_0042e524 */ + +void __cdecl FUN_0042e524(int *param_1,byte param_2) + +{ + undefined4 *puVar1; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e6a48; + puVar1 = (undefined4 *)param_1[0x81]; + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + param_1[0x81] = 0; + FUN_0042e737(param_1 + 0x79,2); + FUN_00420508(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0042e580 file=? name=FUN_0042e580 */ + +void __cdecl FUN_0042e580(int param_1,undefined4 param_2) + +{ + (**(code **)(*(int *)(param_1 + 0x1e4) + 4))(param_1 + 0x1e4,param_2); + return; +} + + + +/* @0042e5a0 file=? name=FUN_0042e5a0 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_0042e5a0(int param_1,float param_2) + +{ + undefined4 *puVar1; + int iVar2; + int local_10 [3]; + + FUN_0042e954(local_10,param_1 + 0x1e4); + *(undefined4 *)(param_1 + 0x1dc) = 0; + while( true ) { + iVar2 = (**(code **)(local_10[0] + 0x28))(local_10); + if (iVar2 == 0) break; + *(int *)(param_1 + 0x1dc) = iVar2; + } + iVar2 = *(int *)(param_1 + 0x1dc); + if (iVar2 != 0) { + *(float *)(iVar2 + 0x14) = *(float *)(iVar2 + 0x14) - param_2; + puVar1 = *(undefined4 **)(param_1 + 0x1dc); + if ((float)puVar1[5] <= _DAT_0042e630) { + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + *(undefined4 *)(param_1 + 0x1dc) = 0; + } + } + FUN_0042e992(local_10,2); + return; +} + + + +/* @0042e718 file=? name=FUN_0042e718 */ + +undefined4 * __cdecl FUN_0042e718(undefined4 *param_1,undefined4 param_2) + +{ + FUN_00417be0(param_1,param_2); + *param_1 = &PTR_FUN_004e6a40; + return param_1; +} + + + +/* @0042e737 file=? name=FUN_0042e737 */ + +void __cdecl FUN_0042e737(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e6a40; + FUN_00417c0c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0042e763 file=? name=FUN_0042e763 */ + +undefined4 * __cdecl FUN_0042e763(undefined4 *param_1,undefined4 param_2,undefined4 param_3) + +{ + FUN_004186ac(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004e6a24; + return param_1; +} + + + +/* @0042e786 file=? name=FUN_0042e786 */ + +void __cdecl FUN_0042e786(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e6a24; + FUN_004186dc(param_1,0); + if ((param_2 & 1) != 0) { + FUN_0042e861(param_1); + } + } + return; +} + + + +/* @0042e7b2 file=? name=FUN_0042e7b2 */ + +undefined4 __cdecl FUN_0042e7b2(undefined4 param_1,int param_2,int param_3) + +{ + undefined4 uVar1; + + if (*(float *)(param_2 + 0x1c) == *(float *)(param_3 + 0x1c)) { + return 0; + } + if (*(float *)(param_2 + 0x1c) <= *(float *)(param_3 + 0x1c)) { + uVar1 = 0xffffffff; + } + else { + uVar1 = 1; + } + return uVar1; +} + + + +/* @0042e7e3 file=? name=FUN_0042e7e3 */ + +undefined4 __cdecl FUN_0042e7e3(undefined4 param_1,float *param_2,int param_3) + +{ + undefined4 uVar1; + + if (*param_2 == *(float *)(param_3 + 0x1c)) { + return 0; + } + if (*param_2 <= *(float *)(param_3 + 0x1c)) { + uVar1 = 0xffffffff; + } + else { + uVar1 = 1; + } + return uVar1; +} + + + +/* @0042e811 file=? name=FUN_0042e811 */ + +void FUN_0042e811(void) + +{ + int iVar1; + undefined4 *puVar2; + + iVar1 = DAT_004e6974; + DAT_004e6974 = DAT_004e6974 + 1; + puVar2 = DAT_004e6970; + if ((iVar1 == 0) && (puVar2 = (undefined4 *)FUN_00402298(0x28), puVar2 != (undefined4 *)0x0)) { + FUN_00402b98(puVar2,0x18,100,100,s_VChainOf_004e6957); + } + DAT_004e6970 = puVar2; + FUN_00402f74((int)DAT_004e6970); + return; +} + + + +/* @0042e861 file=? name=FUN_0042e861 */ + +void __cdecl FUN_0042e861(undefined4 *param_1) + +{ + FUN_00402f98((int)DAT_004e6970,param_1); + DAT_004e6974 = DAT_004e6974 + -1; + if (DAT_004e6974 == 0) { + if (DAT_004e6970 != (int *)0x0) { + FUN_00402c28(DAT_004e6970,0); + FUN_004022d0(DAT_004e6970); + } + DAT_004e6970 = (int *)0x0; + } + return; +} + + + /* @0042e8ac file=? name=FUN_0042e8ac */ undefined4 * __cdecl FUN_0042e8ac(undefined4 *param_1,int param_2) @@ -210,6 +1369,21 @@ void __cdecl FUN_0042eabb(undefined4 *param_1) +/* @0042eb08 file=? name=FUN_0042eb08 */ + +void __cdecl FUN_0042eb08(int param_1,int param_2) + +{ + undefined4 uVar1; + + uVar1 = (**(code **)(*(int *)(*(int *)(DAT_004efc94 + 0x2c) + 0x54) + 0xc)) + (*(int *)(DAT_004efc94 + 0x2c) + 0x54,param_2 + 0x1c); + *(undefined4 *)(param_1 + 0x21c) = uVar1; + return; +} + + + /* @0042eb38 file=? name=FUN_0042eb38 */ /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ @@ -253,6 +1427,63 @@ void __cdecl FUN_0042eb38(int param_1,float param_2) +/* @0042ec34 file=? name=FUN_0042ec34 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_0042ec34(int *param_1,float param_2) + +{ + int *piVar1; + int iVar2; + int iVar3; + undefined4 uStack_38; + undefined4 uStack_34; + undefined4 uStack_30; + undefined4 auStack_2c [2]; + undefined4 uStack_24; + undefined4 uStack_20; + undefined4 auStack_1c [2]; + undefined4 uStack_14; + undefined4 uStack_10; + undefined4 uStack_c; + undefined4 uStack_8; + + FUN_0042e100(param_1,param_2); + FUN_0042eb38((int)param_1,param_2); + if (((float)param_1[0x86] <= _DAT_0042ed64) || (*(int *)(DAT_004efc94 + 0x88) != 5)) { + iVar2 = FUN_0042efe4(0); + if ((iVar2 != 0) && (iVar2 = *(int *)(iVar2 + 0x1fc), iVar2 != 0)) { + piVar1 = param_1 + 0x83; + iVar3 = FUN_00417ab4((int)piVar1); + if (iVar2 != iVar3) { + FUN_00417a5c((int)piVar1); + (**(code **)(param_1[0x83] + 4))(piVar1,iVar2); + param_1[0x86] = 0x41200000; + iVar2 = FUN_00417ab4((int)piVar1); + uStack_38 = 0x34; + uStack_34 = 0x15; + uStack_30 = 1; + FUN_00420ea4(auStack_2c,(undefined4 *)&DAT_00522524); + uStack_24 = 0; + uStack_20 = 0; + FUN_00420ea4(auStack_1c,(undefined4 *)(iVar2 + 0x184)); + uStack_14 = 0; + uStack_10 = DAT_004e0f80; + uStack_c = DAT_004e0f84; + uStack_8 = DAT_004e0f88; + (**(code **)(*(int *)param_1[0x87] + 0xc))((int *)param_1[0x87],&uStack_38); + } + } + } + else { + param_1[0x86] = (int)((float)param_1[0x86] - param_2); + } + return; +} + + + /* @0042ec3a file=? name=FUN_0042ec3a */ /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ @@ -335,7 +1566,7 @@ void __cdecl FUN_0042ed68(int *param_1) FUN_00420ef4(local_1c,local_c); (**(code **)(*(int *)param_1[0x7f] + 0xc))((int *)param_1[0x7f],local_38); FUN_0041f640(param_1[0x7f],local_38); - param_1[7] = (int)PTR_LAB_004e6b04; + param_1[7] = (int)PTR_FUN_004e6b04; param_1[8] = DAT_004e6b08; param_1[9] = DAT_004e6b0c; param_1[0x80] = 0; @@ -621,6 +1852,163 @@ undefined4 __cdecl FUN_0042f38c(int param_1,int param_2) +/* @0042f404 file=? name=FUN_0042f404 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_0042f404(int param_1,uint *param_2) + +{ + uint uVar1; + int iVar2; + int *piVar3; + undefined4 *puVar4; + int iVar5; + undefined4 local_88; + uint local_84; + undefined4 local_80; + undefined4 local_7c [2]; + undefined4 local_74; + undefined4 local_70; + undefined4 local_6c; + undefined4 local_68; + undefined4 local_64; + undefined4 local_60; + undefined4 local_5c; + undefined4 local_58; + undefined4 local_54; + uint local_50; + float local_4c; + float local_48; + float local_44; + int local_40 [3]; + int local_34; + uint *local_30; + int local_2c; + int *local_28; + undefined4 *local_24; + undefined4 local_20 [2]; + int local_18; + uint local_14; + int local_10; + undefined4 *local_c; + int *local_8; + + local_8 = (int *)(**(code **)(*(int *)(*(int *)(DAT_004efc94 + 0x2c) + 0x54) + 0xc)) + (*(int *)(DAT_004efc94 + 0x2c) + 0x54,param_2 + 7); + local_c = (undefined4 *)0x0; + for (iVar5 = 0; iVar5 < *(int *)(param_1 + 0x1c4); iVar5 = iVar5 + 1) { + iVar2 = FUN_0042f38c(param_1,iVar5); + if (iVar2 == 0) { + iVar2 = FUN_0042104c((int *)(iVar5 * 8 + *(int *)(param_1 + 0x1f0)),(int *)(param_2 + 7)); + if ((iVar2 != 0) && (*(uint *)(*(int *)(param_1 + 500) + iVar5 * 4) == param_2[10])) { + puVar4 = (undefined4 *)FUN_00414b60(); + *(undefined4 *)(iVar5 * 4 + *(int *)(param_1 + 0x1ec)) = *puVar4; + local_c = (undefined4 *)(iVar5 * 0x1c + *(int *)(param_1 + 0x1e8)); + goto LAB_0042f785; + } + } + } + local_10 = *(int *)(param_1 + 0x1c4); + local_14 = -1; + local_18 = 0; + for (iVar5 = 0; iVar5 < *(int *)(param_1 + 0x1c4); iVar5 = iVar5 + 1) { + iVar2 = FUN_0042f38c(param_1,iVar5); + if (iVar2 != 0) { + local_18 = local_18 + 1; + if (iVar5 < local_10) { + local_10 = iVar5; + } + if ((int)local_14 < iVar5) { + local_14 = iVar5; + } + } + } + local_14 = (local_14 - local_10) + 1; +LAB_0042f50f: + if (local_18 != 0) { + do { + iVar5 = FUN_0040807c(&DAT_00521f5c,local_14); + iVar5 = iVar5 + local_10; + iVar2 = FUN_0042f38c(param_1,iVar5); + if (iVar2 != 0) { + iVar2 = FUN_00403ad0(*(int *)(DAT_004efc94 + 0x24) + 0x18,s_Players_004e6c12); + if ((iVar2 != 0) && (*(int *)(DAT_004efc94 + 0x88) == 5)) { + FUN_00421414(local_40,iVar2 + 0x10); + do { + do { + piVar3 = (int *)(**(code **)(local_40[0] + 0x28))(local_40); + if (piVar3 == (int *)0x0) goto LAB_0042f69c; + } while ((piVar3[0x7f] == 0) || (piVar3 == local_8)); + FUN_00408644(&local_4c,(float *)(piVar3[0x7f] + 0x100), + (float *)(iVar5 * 0x1c + *(int *)(param_1 + 0x1e8))); + } while (_DAT_0042f80c < local_44 * local_44 + local_48 * local_48 + local_4c * local_4c); + FUN_00420ebc(local_20,0); + FUN_00420ef4((undefined4 *)(iVar5 * 8 + *(int *)(param_1 + 0x1f0)),local_20); + local_24 = (undefined4 *)FUN_00414b60(); + *(undefined4 *)(iVar5 * 4 + *(int *)(param_1 + 0x1ec)) = *local_24; + local_28 = (int *)(iVar5 * 4 + *(int *)(param_1 + 0x1ec)); + iVar2 = FUN_004dcd94(); + *local_28 = *local_28 - iVar2; + local_18 = local_18 + -1; + if (iVar5 == local_10) { + local_10 = local_10 + 1; + local_14 = local_14 - 1; + } + else if (iVar5 == local_10 + local_14 + -1) { + local_14 = local_14 - 1; + } +LAB_0042f69c: + if (piVar3 != (int *)0x0) goto code_r0x0042f6a0; + FUN_00421452(local_40,2); + } + puVar4 = (undefined4 *)FUN_00414b60(); + *(undefined4 *)(iVar5 * 4 + *(int *)(param_1 + 0x1ec)) = *puVar4; + local_c = (undefined4 *)(iVar5 * 0x1c + *(int *)(param_1 + 0x1e8)); + FUN_00420ef4((undefined4 *)(iVar5 * 8 + *(int *)(param_1 + 0x1f0)),param_2 + 7); + *(uint *)(*(int *)(param_1 + 500) + iVar5 * 4) = param_2[10]; + local_18 = 0; + } + if (local_18 == 0) break; + } while( true ); + } + if (local_c == (undefined4 *)0x0) { + piVar3 = (int *)FUN_00414b60(); + local_2c = *piVar3; + iVar5 = FUN_004dcd94(); + local_2c = local_2c + iVar5; + local_30 = param_2; + local_34 = param_1; + FUN_0041acbc(*(int *)(DAT_004efc94 + 0x60),4,param_1,param_2,local_2c); + } + else { +LAB_0042f785: + puVar4 = local_c; + local_84 = param_2[9]; + uVar1 = param_2[10]; + local_88 = 0x3c; + local_80 = 1; + FUN_00420ea4(local_7c,(undefined4 *)&DAT_00522524); + local_74 = 0; + local_70 = 0; + local_6c = *puVar4; + local_68 = puVar4[1]; + local_64 = puVar4[2]; + local_60 = puVar4[3]; + local_5c = puVar4[4]; + local_58 = puVar4[5]; + local_54 = puVar4[6]; + local_50 = uVar1; + (**(code **)(*local_8 + 0xc))(local_8,&local_88); + } + return; +code_r0x0042f6a0: + FUN_00421452(local_40,2); + goto LAB_0042f50f; +} + + + /* @0042f9bc file=? name=FUN_0042f9bc */ void __cdecl FUN_0042f9bc(int param_1) @@ -1853,6 +3241,19 @@ void __cdecl FUN_004310a8(int param_1) +/* @004311dc file=? name=FUN_004311dc */ + +void __cdecl FUN_004311dc(int param_1) + +{ + FUN_0041bbd8(param_1 + 0x2c,1); + *(ushort *)(param_1 + 0x18) = *(ushort *)(param_1 + 0x18) | 1; + *(uint *)(param_1 + 0x28) = *(uint *)(param_1 + 0x28) & 0xfffffffd; + return; +} + + + /* @00431200 file=? name=FUN_00431200 */ void __cdecl FUN_00431200(int param_1,int param_2) @@ -3215,6 +4616,34 @@ LAB_00432820: +/* @00432974 file=? name=FUN_00432974 */ + +void __cdecl FUN_00432974(int param_1,int param_2) + +{ + int iVar1; + + FUN_0041bd34(param_1,param_2); + *(undefined4 *)(param_1 + 0xe4) = *(undefined4 *)(param_2 + 0x10); + iVar1 = *(int *)(param_1 + 0x40); + if (iVar1 == 1) { +LAB_004329a5: + *(undefined4 *)(param_1 + 0x11c) = *(undefined4 *)(param_1 + 0x120); + } + else { + if (iVar1 != 2) { + if (iVar1 == 3) goto LAB_004329a5; + if (iVar1 != 4) goto LAB_004329bf; + } + *(undefined4 *)(param_1 + 0x11c) = *(undefined4 *)(param_1 + 0x124); + } +LAB_004329bf: + FUN_00432c18(param_1,*(float *)(param_1 + 0xe4)); + return; +} + + + /* @004329d4 file=? name=FUN_004329d4 */ void __cdecl FUN_004329d4(int param_1,undefined4 *param_2,undefined2 param_3) @@ -6680,6 +8109,22 @@ void __cdecl FUN_00435ff0(int *param_1,int param_2,undefined4 param_3) +/* @004360e4 file=? name=FUN_004360e4 */ + +void __cdecl FUN_004360e4(int *param_1,int param_2) + +{ + int iVar1; + + iVar1 = FUN_00436584(param_2); + if (iVar1 != 0) { + (**(code **)(*param_1 + 0x24))(param_1,iVar1); + } + return; +} + + + /* @0043610c file=? name=FUN_0043610c */ void __cdecl FUN_0043610c(int *param_1,int param_2) @@ -7995,1274 +9440,3 @@ undefined4 * __cdecl FUN_004370b0(undefined4 *param_1,int param_2,undefined4 par -/* @00437154 file=? name=FUN_00437154 */ - -void __cdecl FUN_00437154(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_004e884c; - FUN_0042f140(param_1 + 0x77,2); - FUN_00430340(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @00437194 file=? name=FUN_00437194 */ - -undefined4 __cdecl FUN_00437194(int param_1) - -{ - int iVar1; - - iVar1 = FUN_0041a1a4(**(int **)(param_1 + 0xc),0x4e87f0); - if (iVar1 == 0) { - return 0; - } - return 1; -} - - - -/* @004371c8 file=? name=FUN_004371c8 */ - -undefined4 * __cdecl FUN_004371c8(int param_1) - -{ - undefined4 *puVar1; - - puVar1 = (undefined4 *)FUN_00402298(0x1ec); - if (puVar1 == (undefined4 *)0x0) { - puVar1 = (undefined4 *)0x0; - } - else { - puVar1 = FUN_004370b0(puVar1,param_1,&DAT_004e8820); - } - return puVar1; -} - - - -/* @004371f8 file=? name=FUN_004371f8 */ - -void __cdecl FUN_004371f8(int param_1) - -{ - int iVar1; - - iVar1 = FUN_00417ab4(param_1 + 0x1dc); - if (iVar1 == 0) { - FUN_0042061c(param_1); - } - else { - FUN_00424da8(iVar1,*(int *)(param_1 + 0x1e8),(float *)(param_1 + 0xd0)); - FUN_0040a968((undefined4 *)(param_1 + 0x100),(float *)(param_1 + 0xd0)); - FUN_0040a938((undefined4 *)(param_1 + 300),(undefined4 *)(param_1 + 0x100)); - FUN_0042fa8c(param_1); - } - return; -} - - - -/* @00437268 file=? name=FUN_00437268 */ - -undefined4 * __cdecl -FUN_00437268(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4) - -{ - *param_1 = 0x68; - param_1[1] = 3; - param_1[2] = 1; - FUN_00420ea4(param_1 + 3,(undefined4 *)&DAT_00522524); - param_1[5] = 0; - param_1[6] = 0; - param_1[7] = 0x54; - FUN_00420ea4(param_1 + 8,(undefined4 *)&DAT_00522524); - param_1[10] = param_2; - param_1[0xb] = 0x10c; - param_1[0xc] = *(undefined4 *)(param_3 + 0x100); - param_1[0xd] = *(undefined4 *)(param_3 + 0x104); - param_1[0xe] = *(undefined4 *)(param_3 + 0x108); - param_1[0xf] = *(undefined4 *)(param_3 + 0x10c); - param_1[0x10] = *(undefined4 *)(param_3 + 0x110); - param_1[0x11] = *(undefined4 *)(param_3 + 0x114); - param_1[0x12] = *(undefined4 *)(param_3 + 0x118); - FUN_00420ea4(param_1 + 0x13,(undefined4 *)(param_3 + 0x184)); - FUN_00420ea4(param_1 + 0x15,(undefined4 *)&DAT_00522524); - FUN_00420ea4(param_1 + 0x17,(undefined4 *)(param_3 + 0x184)); - param_1[0x19] = param_4; - return param_1; -} - - - -/* @004373e8 file=? name=FUN_004373e8 */ - -void __cdecl FUN_004373e8(undefined4 *param_1) - -{ - *param_1 = *(undefined4 *)(*(int *)(*(int *)(DAT_004efc94 + 0x44) + 0x4c) + 4); - return; -} - - - -/* @00437404 file=? name=FUN_00437404 */ - -void FUN_00437404(void) - -{ - FUN_004dcd94(); - return; -} - - - -/* @00437428 file=? name=FUN_00437428 */ - -float10 __cdecl FUN_00437428(undefined4 param_1,int param_2) - -{ - return (float10)param_2 / (float10)*(float *)(*(int *)(DAT_004efc94 + 0x44) + 0x14); -} - - - -/* @0043744c file=? name=FUN_0043744c */ - -undefined4 * __cdecl FUN_0043744c(undefined4 *param_1,int *param_2) - -{ - undefined4 uVar1; - undefined1 local_8 [4]; - - FUN_00415eb4(param_1,param_2); - *param_1 = &PTR_FUN_004e8b6c; - (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 3,4); - (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 4,4); - (**(code **)(*param_2 + 0x1c))(param_2,local_8,4); - uVar1 = FUN_004dcd94(); - param_1[5] = uVar1; - return param_1; -} - - - -/* @004374c4 file=munga/audlvl.cpp name=FUN_004374c4 */ - -void __cdecl FUN_004374c4(int *param_1,int param_2) - -{ - char *pcVar1; - uint *puVar2; - int iVar3; - float *pfVar4; - float local_14; - uint *local_10; - int local_c; - int local_8; - - FUN_00414c58(param_1); - pcVar1 = (char *)FUN_00403ad0(param_2,s_voice_count_004e8880); - if (pcVar1 == (char *)0x0) { - FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004e888c,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s_voice_count_004e88b1,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,&DAT_004e88bd,(char *)0x0); - FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004e88bf,s_d__tesla_bt_munga_AUDLVL_CPP_004e88ff - ,0x58); - } - FUN_00407ae0(pcVar1,&local_8); - (**(code **)(*param_1 + 0x20))(param_1,&local_8,4); - pcVar1 = (char *)FUN_00403ad0(param_2,s_render_type_004e891c); - if (pcVar1 == (char *)0x0) { - FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004e8928,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s_render_type_004e894d,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,&DAT_004e8959,(char *)0x0); - FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004e895b,s_d__tesla_bt_munga_AUDLVL_CPP_004e899b - ,0x59); - } - FUN_00407ae0(pcVar1,&local_c); - (**(code **)(*param_1 + 0x20))(param_1,&local_c,4); - puVar2 = (uint *)FUN_00402298(0x10); - if (puVar2 == (uint *)0x0) { - local_10 = (uint *)0x0; - } - else { - local_10 = FUN_00402460(puVar2,s_suspend_delay_004e89b8); - } - local_10[3] = local_10[3] + 1; - local_14 = 0.33; - iVar3 = FUN_00403ad0(param_2,(char *)local_10[2]); - if (iVar3 != 0) { - pfVar4 = &local_14; - pcVar1 = (char *)FUN_00403ad0(param_2,(char *)local_10[2]); - FUN_00407b78(pcVar1,pfVar4); - } - (**(code **)(*param_1 + 0x20))(param_1,&local_14,4); - puVar2 = local_10 + 3; - *puVar2 = *puVar2 - 1; - if (*puVar2 == 0) { - FUN_004024d8((int *)local_10,3); - } - return; -} - - - -/* @00437678 file=? name=FUN_00437678 */ - -void __cdecl FUN_00437678(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_004e8b6c; - FUN_00415ed8(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @004376a4 file=? name=FUN_004376a4 */ - -undefined4 FUN_004376a4(void) - -{ - FUN_00415f1c(); - return 1; -} - - - -/* @004376b8 file=? name=FUN_004376b8 */ - -undefined4 * __cdecl FUN_004376b8(undefined4 *param_1,int *param_2) - -{ - undefined4 uVar1; - int iVar2; - int local_2c [7]; - int local_10; - undefined1 local_c [4]; - int local_8; - - FUN_004178ec(param_1,param_2); - *param_1 = &PTR_FUN_004e8b60; - FUN_00437c84(param_1 + 4,0,1); - (**(code **)(*param_2 + 0x1c))(param_2,&local_8,4); - iVar2 = 0; - if (0 < local_8) { - do { - (**(code **)(*param_2 + 0x1c))(param_2,local_c,4); - FUN_00437ddc(param_2,&local_10); - (**(code **)(param_1[4] + 8))(param_1 + 4,local_10,local_c); - iVar2 = iVar2 + 1; - } while (iVar2 < local_8); - } - FUN_00437e0b(local_2c,(int)(param_1 + 4)); - uVar1 = (**(code **)(local_2c[0] + 0x30))(local_2c); - param_1[3] = uVar1; - FUN_00437e49(local_2c,2); - return param_1; -} - - - -/* @00437774 file=? name=FUN_00437774 */ - -void __cdecl FUN_00437774(int *param_1,int param_2) - -{ - int *piVar1; - undefined4 *puVar2; - bool bVar3; - undefined3 extraout_var; - undefined3 extraout_var_00; - undefined4 *puVar4; - uint *puVar5; - float *pfVar6; - uint local_48 [2]; - char *local_40; - uint local_38 [2]; - char *local_30; - uint *local_28; - char *local_24; - uint *local_20; - char *local_1c; - int *local_18; - undefined4 local_14; - float local_10; - uint *local_c; - int local_8; - - FUN_00414c58(param_1); - local_8 = 0; - for (puVar2 = *(undefined4 **)(param_2 + 4); puVar2 != (undefined4 *)0x0; - puVar2 = (undefined4 *)*puVar2) { - bVar3 = FUN_00403c20((int)puVar2,s_audio_level_of_detail_004e89c6); - if (CONCAT31(extraout_var,bVar3) != 0) { - local_8 = local_8 + 1; - } - } - (**(code **)(*param_1 + 0x20))(param_1,&local_8,4); - for (puVar2 = *(undefined4 **)(param_2 + 4); puVar2 != (undefined4 *)0x0; - puVar2 = (undefined4 *)*puVar2) { - bVar3 = FUN_00403c20((int)puVar2,s_audio_level_of_detail_004e89dc); - if (CONCAT31(extraout_var_00,bVar3) != 0) { - puVar4 = (undefined4 *)FUN_00402298(0x10); - if (puVar4 == (undefined4 *)0x0) { - local_c = (uint *)0x0; - } - else { - local_c = (uint *)FUN_004023f4(puVar4); - } - local_c[3] = local_c[3] + 1; - FUN_00402a98((int *)&local_18,(int *)&local_c,(char *)puVar2[1]); - piVar1 = local_18 + 3; - *piVar1 = *piVar1 + -1; - if (*piVar1 == 0) { - FUN_004024d8(local_18,3); - } - pfVar6 = &local_10; - FUN_00402838(local_38,local_c,0,(char *)0x0); - local_1c = local_30; - puVar5 = (uint *)FUN_00402298(0x10); - if (puVar5 == (uint *)0x0) { - local_20 = (uint *)0x0; - } - else { - local_20 = FUN_00402460(puVar5,local_1c); - } - local_20[3] = local_20[3] + 1; - FUN_004024d8((int *)local_38,2); - FUN_00407b78((char *)local_20[2],pfVar6); - puVar5 = local_20 + 3; - *puVar5 = *puVar5 - 1; - if (*puVar5 == 0) { - FUN_004024d8((int *)local_20,3); - } - (**(code **)(*param_1 + 0x20))(param_1,&local_10,4); - FUN_00402838(local_48,local_c,1,(char *)0x0); - local_24 = local_40; - puVar5 = (uint *)FUN_00402298(0x10); - if (puVar5 == (uint *)0x0) { - local_28 = (uint *)0x0; - } - else { - local_28 = FUN_00402460(puVar5,local_24); - } - local_28[3] = local_28[3] + 1; - FUN_004024d8((int *)local_48,2); - local_14 = FUN_00417208((int)param_1,&local_28); - puVar5 = local_28 + 3; - *puVar5 = *puVar5 - 1; - if (*puVar5 == 0) { - FUN_004024d8((int *)local_28,3); - } - (**(code **)(*param_1 + 0x20))(param_1,&local_14,4); - puVar5 = local_c + 3; - *puVar5 = *puVar5 - 1; - if (*puVar5 == 0) { - FUN_004024d8((int *)local_c,3); - } - } - } - return; -} - - - -/* @00437968 file=? name=FUN_00437968 */ - -void __cdecl FUN_00437968(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_004e8b60; - FUN_00437ca7(param_1 + 4,2); - FUN_0041790c(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @004379a4 file=? name=FUN_004379a4 */ - -undefined4 FUN_004379a4(void) - -{ - FUN_00415f1c(); - return 1; -} - - - -/* @004379b8 file=? name=FUN_004379b8 */ - -void __cdecl FUN_004379b8(int param_1,float param_2) - -{ - undefined4 uVar1; - int local_20 [4]; - int local_10; - int local_8; - - FUN_00437e0b(local_20,param_1 + 0x10); - (**(code **)(local_20[0] + 8))(local_20); - while (param_2 < *(float *)(*(int *)(local_10 + local_8 * 4) + 0x14)) { - (**(code **)(local_20[0] + 0x10))(local_20); - } - uVar1 = (**(code **)(local_20[0] + 0x30))(local_20); - *(undefined4 *)(param_1 + 0xc) = uVar1; - FUN_00437e49(local_20,2); - return; -} - - - -/* @00437a20 file=? name=FUN_00437a20 */ - -undefined4 * __cdecl FUN_00437a20(undefined4 *param_1,int *param_2) - -{ - int iVar1; - int local_c; - int local_8; - - FUN_004178ec(param_1,param_2); - *param_1 = &PTR_FUN_004e8b54; - FUN_00437d32(param_1 + 3,0,1); - (**(code **)(*param_2 + 0x1c))(param_2,&local_8,4); - iVar1 = 0; - if (0 < local_8) { - do { - FUN_00437e75(param_2,&local_c); - FUN_00437bec((int)param_1,local_c); - iVar1 = iVar1 + 1; - } while (iVar1 < local_8); - } - return param_1; -} - - - -/* @00437a98 file=? name=FUN_00437a98 */ - -void __cdecl FUN_00437a98(int *param_1,int param_2) - -{ - int *piVar1; - undefined4 *puVar2; - bool bVar3; - undefined3 extraout_var; - undefined3 extraout_var_00; - undefined4 *puVar4; - int *local_14; - undefined4 local_10; - int *local_c; - int local_8; - - FUN_00414c58(param_1); - local_8 = 0; - for (puVar2 = *(undefined4 **)(param_2 + 4); puVar2 != (undefined4 *)0x0; - puVar2 = (undefined4 *)*puVar2) { - bVar3 = FUN_00403c20((int)puVar2,s_audio_resource_004e89f2); - if (CONCAT31(extraout_var,bVar3) != 0) { - local_8 = local_8 + 1; - } - } - (**(code **)(*param_1 + 0x20))(param_1,&local_8,4); - for (puVar2 = *(undefined4 **)(param_2 + 4); puVar2 != (undefined4 *)0x0; - puVar2 = (undefined4 *)*puVar2) { - bVar3 = FUN_00403c20((int)puVar2,s_audio_resource_004e8a01); - if (CONCAT31(extraout_var_00,bVar3) != 0) { - puVar4 = (undefined4 *)FUN_00402298(0x10); - if (puVar4 == (undefined4 *)0x0) { - local_c = (int *)0x0; - } - else { - local_c = (int *)FUN_004023f4(puVar4); - } - local_c[3] = local_c[3] + 1; - FUN_00402a98((int *)&local_14,(int *)&local_c,(char *)puVar2[1]); - piVar1 = local_14 + 3; - *piVar1 = *piVar1 + -1; - if (*piVar1 == 0) { - FUN_004024d8(local_14,3); - } - local_10 = FUN_00417208((int)param_1,&local_c); - (**(code **)(*param_1 + 0x20))(param_1,&local_10,4); - piVar1 = local_c + 3; - *piVar1 = *piVar1 + -1; - if (*piVar1 == 0) { - FUN_004024d8(local_c,3); - } - } - } - return; -} - - - -/* @00437b9c file=? name=FUN_00437b9c */ - -void __cdecl FUN_00437b9c(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_004e8b54; - FUN_00437d55(param_1 + 3,2); - FUN_0041790c(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @00437bd8 file=? name=FUN_00437bd8 */ - -undefined4 FUN_00437bd8(void) - -{ - FUN_00415f1c(); - return 1; -} - - - -/* @00437bec file=? name=FUN_00437bec */ - -void __cdecl FUN_00437bec(int param_1,undefined4 param_2) - -{ - (**(code **)(*(int *)(param_1 + 0xc) + 8))(param_1 + 0xc,param_2,&stack0x0000000c); - return; -} - - - -/* @00437c0c file=? name=FUN_00437c0c */ - -undefined4 __cdecl FUN_00437c0c(int param_1,undefined4 param_2) - -{ - undefined4 uVar1; - int local_20 [7]; - - FUN_00437ea4(local_20,param_1 + 0xc); - uVar1 = (**(code **)(local_20[0] + 0x34))(local_20,param_2); - FUN_00437ee2(local_20,2); - return uVar1; -} - - - -/* @00437c4c file=? name=FUN_00437c4c */ - -undefined4 __cdecl FUN_00437c4c(int param_1) - -{ - undefined4 uVar1; - int local_20 [7]; - - FUN_00437ea4(local_20,param_1 + 0xc); - uVar1 = (**(code **)(local_20[0] + 0x14))(local_20); - FUN_00437ee2(local_20,2); - return uVar1; -} - - - -/* @00437c84 file=? name=FUN_00437c84 */ - -undefined4 * __cdecl FUN_00437c84(undefined4 *param_1,undefined4 param_2,undefined4 param_3) - -{ - FUN_00419184(param_1,param_2,param_3); - *param_1 = &PTR_FUN_004e8b38; - return param_1; -} - - - -/* @00437ca7 file=? name=FUN_00437ca7 */ - -void __cdecl FUN_00437ca7(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_004e8b38; - FUN_004191b4(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @00437cd3 file=? name=FUN_00437cd3 */ - -undefined4 __cdecl FUN_00437cd3(undefined4 param_1,int param_2,int param_3) - -{ - undefined4 uVar1; - - if (*(float *)(param_2 + 0x14) == *(float *)(param_3 + 0x14)) { - return 0; - } - if (*(float *)(param_2 + 0x14) <= *(float *)(param_3 + 0x14)) { - uVar1 = 0xffffffff; - } - else { - uVar1 = 1; - } - return uVar1; -} - - - -/* @00437d04 file=? name=FUN_00437d04 */ - -undefined4 __cdecl FUN_00437d04(undefined4 param_1,float *param_2,int param_3) - -{ - undefined4 uVar1; - - if (*param_2 == *(float *)(param_3 + 0x14)) { - return 0; - } - if (*param_2 <= *(float *)(param_3 + 0x14)) { - uVar1 = 0xffffffff; - } - else { - uVar1 = 1; - } - return uVar1; -} - - - -/* @00437d32 file=? name=FUN_00437d32 */ - -undefined4 * __cdecl FUN_00437d32(undefined4 *param_1,undefined4 param_2,undefined4 param_3) - -{ - FUN_00419184(param_1,param_2,param_3); - *param_1 = &PTR_FUN_004e8b1c; - return param_1; -} - - - -/* @00437d55 file=? name=FUN_00437d55 */ - -void __cdecl FUN_00437d55(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_004e8b1c; - FUN_004191b4(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @00437d81 file=? name=FUN_00437d81 */ - -undefined4 __cdecl FUN_00437d81(undefined4 param_1,int param_2,int param_3) - -{ - undefined4 uVar1; - - if (*(int *)(param_3 + 0x14) == *(int *)(param_2 + 0x14)) { - uVar1 = 0; - } - else { - uVar1 = 1; - if (*(int *)(param_2 + 0x14) <= *(int *)(param_3 + 0x14)) { - uVar1 = 0xffffffff; - } - } - return uVar1; -} - - - -/* @00437db0 file=? name=FUN_00437db0 */ - -undefined4 __cdecl FUN_00437db0(undefined4 param_1,int *param_2,int param_3) - -{ - undefined4 uVar1; - - if (*(int *)(param_3 + 0x14) == *param_2) { - uVar1 = 0; - } - else { - uVar1 = 1; - if (*param_2 <= *(int *)(param_3 + 0x14)) { - uVar1 = 0xffffffff; - } - } - return uVar1; -} - - - -/* @00437ddc file=? name=FUN_00437ddc */ - -void __cdecl FUN_00437ddc(int *param_1,int *param_2) - -{ - int iVar1; - undefined4 local_8; - - (**(code **)(*param_1 + 0x1c))(param_1,&local_8,4); - iVar1 = FUN_004170e4((int)param_1,local_8); - *param_2 = iVar1; - return; -} - - - -/* @00437e0b file=? name=FUN_00437e0b */ - -undefined4 * __cdecl FUN_00437e0b(undefined4 *param_1,int param_2) - -{ - FUN_004194d8(param_1,param_2); - *param_1 = &PTR_FUN_004e8ac0; - return param_1; -} - - - -/* @00437e2a file=? name=FUN_00437e2a */ - -undefined4 * __cdecl FUN_00437e2a(undefined4 *param_1,int param_2) - -{ - FUN_004194d8(param_1,param_2); - *param_1 = &PTR_FUN_004e8ac0; - return param_1; -} - - - -/* @00437e49 file=? name=FUN_00437e49 */ - -void __cdecl FUN_00437e49(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_004e8ac0; - FUN_0041951c(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @00437e75 file=? name=FUN_00437e75 */ - -void __cdecl FUN_00437e75(int *param_1,int *param_2) - -{ - int iVar1; - undefined4 local_8; - - (**(code **)(*param_1 + 0x1c))(param_1,&local_8,4); - iVar1 = FUN_004170e4((int)param_1,local_8); - *param_2 = iVar1; - return; -} - - - -/* @00437ea4 file=? name=FUN_00437ea4 */ - -undefined4 * __cdecl FUN_00437ea4(undefined4 *param_1,int param_2) - -{ - FUN_004194d8(param_1,param_2); - *param_1 = &PTR_FUN_004e8a64; - return param_1; -} - - - -/* @00437ec3 file=? name=FUN_00437ec3 */ - -undefined4 * __cdecl FUN_00437ec3(undefined4 *param_1,int param_2) - -{ - FUN_004194d8(param_1,param_2); - *param_1 = &PTR_FUN_004e8a64; - return param_1; -} - - - -/* @00437ee2 file=? name=FUN_00437ee2 */ - -void __cdecl FUN_00437ee2(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_004e8a64; - FUN_0041951c(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @00437f0e file=? name=FUN_00437f0e */ - -undefined4 * __cdecl FUN_00437f0e(undefined4 param_1,int param_2,undefined4 *param_3) - -{ - undefined4 *puVar1; - - puVar1 = (undefined4 *)FUN_0041d485(); - if (puVar1 == (undefined4 *)0x0) { - puVar1 = (undefined4 *)0x0; - } - else { - puVar1 = FUN_0041d42e(puVar1,param_1,param_2,param_3); - } - return puVar1; -} - - - -/* @00437f3e file=? name=FUN_00437f3e */ - -undefined4 * __cdecl FUN_00437f3e(undefined4 param_1,int param_2,undefined4 *param_3) - -{ - undefined4 *puVar1; - - puVar1 = (undefined4 *)FUN_00437fc5(); - if (puVar1 == (undefined4 *)0x0) { - puVar1 = (undefined4 *)0x0; - } - else { - puVar1 = FUN_00437f6e(puVar1,param_1,param_2,param_3); - } - return puVar1; -} - - - -/* @00437f6e file=? name=FUN_00437f6e */ - -undefined4 * __cdecl -FUN_00437f6e(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 *param_4) - -{ - FUN_004190e8(param_1,param_2,param_3); - *param_1 = &PTR_FUN_004e8b78; - param_1[5] = *param_4; - return param_1; -} - - - -/* @00437f99 file=? name=FUN_00437f99 */ - -void __cdecl FUN_00437f99(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_004e8b78; - FUN_0041910c(param_1,0); - if ((param_2 & 1) != 0) { - FUN_00438015(param_1); - } - } - return; -} - - - -/* @00437fc5 file=? name=FUN_00437fc5 */ - -void FUN_00437fc5(void) - -{ - int iVar1; - undefined4 *puVar2; - - iVar1 = DAT_004e8b74; - DAT_004e8b74 = DAT_004e8b74 + 1; - puVar2 = DAT_004e8b70; - if ((iVar1 == 0) && (puVar2 = (undefined4 *)FUN_00402298(0x28), puVar2 != (undefined4 *)0x0)) { - FUN_00402b98(puVar2,0x18,100,100,s_TableEntryOf_004e8a2f); - } - DAT_004e8b70 = puVar2; - FUN_00402f74((int)DAT_004e8b70); - return; -} - - - -/* @00438015 file=? name=FUN_00438015 */ - -void __cdecl FUN_00438015(undefined4 *param_1) - -{ - FUN_00402f98((int)DAT_004e8b70,param_1); - DAT_004e8b74 = DAT_004e8b74 + -1; - if (DAT_004e8b74 == 0) { - if (DAT_004e8b70 != (int *)0x0) { - FUN_00402c28(DAT_004e8b70,0); - FUN_004022d0(DAT_004e8b70); - } - DAT_004e8b70 = (int *)0x0; - } - return; -} - - - -/* @00438060 file=? name=FUN_00438060 */ - -undefined4 * __cdecl FUN_00438060(undefined4 *param_1,int *param_2,int param_3) - -{ - undefined4 local_c; - undefined4 local_8; - - FUN_00436d14(param_1,param_2,&DAT_004e8698); - *param_1 = &PTR_FUN_004e8c74; - param_1[10] = 0; - param_1[0xb] = 0; - param_1[0xc] = 0; - param_1[0xf] = 0; - param_1[0x10] = 0; - param_1[0x11] = 0; - (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 10,0xc); - (**(code **)(*param_2 + 0x1c))(param_2,&local_8,4); - (**(code **)(*param_2 + 0x1c))(param_2,&local_c,4); - FUN_00438124((int)param_1,param_3,local_8,local_c); - return param_1; -} - - - -/* @004380f8 file=? name=FUN_004380f8 */ - -void __cdecl FUN_004380f8(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_004e8c74; - FUN_00436d4c(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @00438124 file=? name=FUN_00438124 */ - -void __cdecl FUN_00438124(int param_1,int param_2,undefined4 param_3,undefined4 param_4) - -{ - *(int *)(param_1 + 0x24) = param_2; - FUN_004206b4(param_2,param_1); - *(undefined4 *)(param_1 + 0x34) = param_4; - *(undefined4 *)(param_1 + 0x38) = 0; - *(undefined4 *)(param_1 + 0x48) = 0x3f800000; - *(undefined4 *)(param_1 + 0x58) = 0; - *(undefined4 *)(param_1 + 0x4c) = 0; - *(undefined4 *)(param_1 + 0x50) = 0x3f800000; - *(undefined4 *)(param_1 + 0x54) = 0x3f800000; - *(undefined4 *)(param_1 + 0x5c) = param_3; - *(undefined4 *)(param_1 + 0x60) = 0xffffffff; - return; -} - - - -/* @00438178 file=? name=FUN_00438178 */ - -undefined4 __cdecl FUN_00438178(int param_1) - -{ - FUN_0041b8e0(param_1); - return 1; -} - - - -/* @0043818c file=munga/audloc.cpp name=FUN_0043818c */ - -void __cdecl FUN_0043818c(int *param_1,int param_2) - -{ - char *pcVar1; - uint *puVar2; - int iVar3; - int *piVar4; - float *pfVar5; - float local_20 [3]; - float local_14; - uint *local_10; - int local_c; - uint *local_8; - - FUN_00414c58(param_1); - pcVar1 = (char *)FUN_00403ad0(param_2,s_location_offset_004e8b7c); - if (pcVar1 == (char *)0x0) { - FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004e8b8c,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s_location_offset_004e8bb1,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,&DAT_004e8bc1,(char *)0x0); - FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004e8bc3,s_d__tesla_bt_munga_AUDLOC_CPP_004e8c03 - ,0x77); - } - FUN_00408944(pcVar1,local_20); - (**(code **)(*param_1 + 0x20))(param_1,local_20,0xc); - puVar2 = (uint *)FUN_00402298(0x10); - if (puVar2 == (uint *)0x0) { - local_8 = (uint *)0x0; - } - else { - local_8 = FUN_00402460(puVar2,s_update_delay_004e8c20); - } - local_8[3] = local_8[3] + 1; - local_c = 2; - iVar3 = FUN_00403ad0(param_2,(char *)local_8[2]); - if (iVar3 != 0) { - piVar4 = &local_c; - pcVar1 = (char *)FUN_00403ad0(param_2,(char *)local_8[2]); - FUN_00407b30(pcVar1,piVar4); - } - (**(code **)(*param_1 + 0x20))(param_1,&local_c,4); - puVar2 = (uint *)FUN_00402298(0x10); - if (puVar2 == (uint *)0x0) { - local_10 = (uint *)0x0; - } - else { - local_10 = FUN_00402460(puVar2,s_clipping_scale_004e8c2d); - } - local_10[3] = local_10[3] + 1; - local_14 = 1.0; - iVar3 = FUN_00403ad0(param_2,(char *)local_10[2]); - if (iVar3 != 0) { - pfVar5 = &local_14; - pcVar1 = (char *)FUN_00403ad0(param_2,(char *)local_10[2]); - FUN_00407b78(pcVar1,pfVar5); - } - (**(code **)(*param_1 + 0x20))(param_1,&local_14,4); - puVar2 = local_10 + 3; - *puVar2 = *puVar2 - 1; - if (*puVar2 == 0) { - FUN_004024d8((int *)local_10,3); - } - puVar2 = local_8 + 3; - *puVar2 = *puVar2 - 1; - if (*puVar2 == 0) { - FUN_004024d8((int *)local_8,3); - } - return; -} - - - -/* @00438340 file=? name=FUN_00438340 */ - -void FUN_00438340(void) - -{ - return; -} - - - -/* @00438348 file=? name=FUN_00438348 */ - -bool __cdecl FUN_00438348(int param_1,int param_2) - -{ - float fVar1; - int iVar2; - float local_14; - float local_10; - float local_c; - - iVar2 = FUN_00417ab4(param_2 + 8); - FUN_00408644(&local_14,(float *)(iVar2 + 0x100),(float *)(*(int *)(param_1 + 0x24) + 0x100)); - fVar1 = *(float *)(param_2 + 0x14) * *(float *)(param_1 + 0x34); - return fVar1 * fVar1 < local_c * local_c + local_10 * local_10 + local_14 * local_14; -} - - - -/* @004383b4 file=? name=FUN_004383b4 */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -void __cdecl FUN_004383b4(int param_1,int *param_2) - -{ - bool bVar1; - int iVar2; - undefined3 extraout_var; - float10 fVar3; - float *pfVar4; - float local_cc [3]; - float local_c0 [3]; - float local_b4; - float local_b0; - float local_ac; - float local_a8 [3]; - float local_9c; - float local_98; - float local_94; - float local_90 [3]; - float local_84 [3]; - float local_78 [3]; - float local_6c [12]; - float local_3c; - float local_38; - float local_34; - float local_30; - float local_2c; - float local_28; - float local_24; - float local_20; - float local_1c; - float local_18; - float local_14; - float local_10; - int *local_c; - int *local_8; - - local_8 = *(int **)(param_1 + 0x24); - local_c = (int *)FUN_00417ab4((int)(param_2 + 2)); - if ((local_c == local_8) && - (iVar2 = FUN_004084fc((float *)(param_1 + 0x28),(float *)&DAT_004e0f74,0.0001), iVar2 != 0)) { - *(undefined4 *)(param_1 + 0x38) = 1; - FUN_00408440((undefined4 *)(param_1 + 0x3c),&DAT_004e0f74); - *(undefined4 *)(param_1 + 0x48) = 0; - *(undefined4 *)(param_1 + 0x58) = 0; - *(undefined4 *)(param_1 + 0x4c) = 0; - *(undefined4 *)(param_1 + 0x50) = 0x3f800000; - *(undefined4 *)(param_1 + 0x54) = 0x3f800000; - return; - } - *(undefined4 *)(param_1 + 0x38) = 0; - (**(code **)(*param_2 + 4))(local_6c); - FUN_00408744(local_78,(float *)(param_1 + 0x28),(float *)(local_8 + 0x34)); - FUN_004085ec(local_84,(float *)(local_8 + 0x40),local_78); - FUN_00408644(local_90,local_84,(float *)(local_c + 0x40)); - FUN_0040879c((float *)(param_1 + 0x3c),local_90,local_6c); - fVar3 = FUN_004dd138((double)(*(float *)(param_1 + 0x44) * *(float *)(param_1 + 0x44) + - *(float *)(param_1 + 0x40) * *(float *)(param_1 + 0x40) + - *(float *)(param_1 + 0x3c) * *(float *)(param_1 + 0x3c))); - *(float *)(param_1 + 0x48) = (float)fVar3; - local_9c = 0.0; - local_98 = 0.0; - local_94 = -1.0; - local_10 = *(float *)(param_1 + 0x48); - fVar3 = FUN_004dcd00((double)local_10); - if ((float10)_DAT_00438768 < fVar3) { - FUN_004087f4(&local_9c,(float *)(param_1 + 0x3c)); - } - local_14 = *(float *)(param_1 + 0x3c); - fVar3 = FUN_004dcd00((double)local_14); - if (fVar3 <= (float10)_DAT_00438768) { - local_18 = *(float *)(param_1 + 0x44); - fVar3 = FUN_004dcd00((double)local_18); - if (fVar3 <= (float10)_DAT_00438768) { - *(undefined4 *)(param_1 + 0x4c) = 0; - goto LAB_004385b4; - } - } - fVar3 = FUN_004dc8ec((double)*(float *)(param_1 + 0x3c), - SUB84((double)*(float *)(param_1 + 0x44),0), - (uint)((ulonglong)(double)*(float *)(param_1 + 0x44) >> 0x20)); - local_1c = (float)fVar3; - *(float *)(param_1 + 0x4c) = local_1c; -LAB_004385b4: - if (*(float *)(param_1 + 0x48) <= (float)param_2[8]) { - *(undefined4 *)(param_1 + 0x50) = 0x3f800000; - } - else { - local_20 = (*(float *)(param_1 + 0x48) - (float)param_2[8]) * - ((float)param_2[9] / *(float *)(param_1 + 0x34)); - fVar3 = FUN_004dce94((double)local_20,SUB84((double)(float)param_2[7],0), - (uint)((ulonglong)(double)(float)param_2[7] >> 0x20)); - local_24 = (float)(fVar3 + (float10)_DAT_0043876c); - *(float *)(param_1 + 0x50) = _DAT_0043876c / local_24; - } - if (*(float *)(param_1 + 0x48) <= (float)param_2[0xb]) { - *(undefined4 *)(param_1 + 0x54) = 0x3f800000; - } - else { - local_28 = (*(float *)(param_1 + 0x48) - (float)param_2[0xb]) * - ((float)param_2[0xc] / *(float *)(param_1 + 0x34)); - fVar3 = FUN_004dce94((double)local_28,SUB84((double)(float)param_2[10],0), - (uint)((ulonglong)(double)(float)param_2[10] >> 0x20)); - local_2c = (float)(fVar3 + (float10)_DAT_0043876c); - *(float *)(param_1 + 0x54) = _DAT_0043876c / local_2c; - } - (**(code **)(*local_c + 0x20))(local_cc); - pfVar4 = local_cc; - (**(code **)(*local_8 + 0x20))(); - FUN_00408644(local_a8,local_c0,pfVar4); - FUN_0040879c(&local_b4,local_a8,(float *)(local_c + 0x34)); - local_30 = *(float *)(param_1 + 0x48); - fVar3 = FUN_004dcd00((double)local_30); - if (fVar3 <= (float10)_DAT_00438768) { - *(undefined4 *)(param_1 + 0x58) = 0; - } - else { - local_38 = local_94 * local_ac + local_98 * local_b0 + local_9c * local_b4; - local_3c = (float)param_2[6] * _DAT_00438770; - if (*(float *)(param_1 + 0x48) < local_3c) { - local_38 = (*(float *)(param_1 + 0x48) / local_3c) * local_38; - } - bVar1 = FUN_00438774(param_1,(int)param_2,local_38,&local_34); - if (CONCAT31(extraout_var,bVar1) != 0) { - *(float *)(param_1 + 0x58) = local_34; - } - } - return; -} - - - diff --git a/reference/decomp/all/part_005.c b/reference/decomp/all/part_005.c index 559545d..9e95ae7 100644 --- a/reference/decomp/all/part_005.c +++ b/reference/decomp/all/part_005.c @@ -1,3 +1,1274 @@ +/* @00437154 file=? name=FUN_00437154 */ + +void __cdecl FUN_00437154(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e884c; + FUN_0042f140(param_1 + 0x77,2); + FUN_00430340(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00437194 file=? name=FUN_00437194 */ + +undefined4 __cdecl FUN_00437194(int param_1) + +{ + int iVar1; + + iVar1 = FUN_0041a1a4(**(int **)(param_1 + 0xc),0x4e87f0); + if (iVar1 == 0) { + return 0; + } + return 1; +} + + + +/* @004371c8 file=? name=FUN_004371c8 */ + +undefined4 * __cdecl FUN_004371c8(int param_1) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00402298(0x1ec); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_004370b0(puVar1,param_1,&DAT_004e8820); + } + return puVar1; +} + + + +/* @004371f8 file=? name=FUN_004371f8 */ + +void __cdecl FUN_004371f8(int param_1) + +{ + int iVar1; + + iVar1 = FUN_00417ab4(param_1 + 0x1dc); + if (iVar1 == 0) { + FUN_0042061c(param_1); + } + else { + FUN_00424da8(iVar1,*(int *)(param_1 + 0x1e8),(float *)(param_1 + 0xd0)); + FUN_0040a968((undefined4 *)(param_1 + 0x100),(float *)(param_1 + 0xd0)); + FUN_0040a938((undefined4 *)(param_1 + 300),(undefined4 *)(param_1 + 0x100)); + FUN_0042fa8c(param_1); + } + return; +} + + + +/* @00437268 file=? name=FUN_00437268 */ + +undefined4 * __cdecl +FUN_00437268(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4) + +{ + *param_1 = 0x68; + param_1[1] = 3; + param_1[2] = 1; + FUN_00420ea4(param_1 + 3,(undefined4 *)&DAT_00522524); + param_1[5] = 0; + param_1[6] = 0; + param_1[7] = 0x54; + FUN_00420ea4(param_1 + 8,(undefined4 *)&DAT_00522524); + param_1[10] = param_2; + param_1[0xb] = 0x10c; + param_1[0xc] = *(undefined4 *)(param_3 + 0x100); + param_1[0xd] = *(undefined4 *)(param_3 + 0x104); + param_1[0xe] = *(undefined4 *)(param_3 + 0x108); + param_1[0xf] = *(undefined4 *)(param_3 + 0x10c); + param_1[0x10] = *(undefined4 *)(param_3 + 0x110); + param_1[0x11] = *(undefined4 *)(param_3 + 0x114); + param_1[0x12] = *(undefined4 *)(param_3 + 0x118); + FUN_00420ea4(param_1 + 0x13,(undefined4 *)(param_3 + 0x184)); + FUN_00420ea4(param_1 + 0x15,(undefined4 *)&DAT_00522524); + FUN_00420ea4(param_1 + 0x17,(undefined4 *)(param_3 + 0x184)); + param_1[0x19] = param_4; + return param_1; +} + + + +/* @004373e8 file=? name=FUN_004373e8 */ + +void __cdecl FUN_004373e8(undefined4 *param_1) + +{ + *param_1 = *(undefined4 *)(*(int *)(*(int *)(DAT_004efc94 + 0x44) + 0x4c) + 4); + return; +} + + + +/* @00437404 file=? name=FUN_00437404 */ + +void FUN_00437404(void) + +{ + FUN_004dcd94(); + return; +} + + + +/* @00437428 file=? name=FUN_00437428 */ + +float10 __cdecl FUN_00437428(undefined4 param_1,int param_2) + +{ + return (float10)param_2 / (float10)*(float *)(*(int *)(DAT_004efc94 + 0x44) + 0x14); +} + + + +/* @0043744c file=? name=FUN_0043744c */ + +undefined4 * __cdecl FUN_0043744c(undefined4 *param_1,int *param_2) + +{ + undefined4 uVar1; + undefined1 local_8 [4]; + + FUN_00415eb4(param_1,param_2); + *param_1 = &PTR_FUN_004e8b6c; + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 3,4); + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 4,4); + (**(code **)(*param_2 + 0x1c))(param_2,local_8,4); + uVar1 = FUN_004dcd94(); + param_1[5] = uVar1; + return param_1; +} + + + +/* @004374c4 file=munga/audlvl.cpp name=FUN_004374c4 */ + +void __cdecl FUN_004374c4(int *param_1,int param_2) + +{ + char *pcVar1; + uint *puVar2; + int iVar3; + float *pfVar4; + float local_14; + uint *local_10; + int local_c; + int local_8; + + FUN_00414c58(param_1); + pcVar1 = (char *)FUN_00403ad0(param_2,s_voice_count_004e8880); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004e888c,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_voice_count_004e88b1,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004e88bd,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004e88bf,s_d__tesla_bt_munga_AUDLVL_CPP_004e88ff + ,0x58); + } + FUN_00407ae0(pcVar1,&local_8); + (**(code **)(*param_1 + 0x20))(param_1,&local_8,4); + pcVar1 = (char *)FUN_00403ad0(param_2,s_render_type_004e891c); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004e8928,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_render_type_004e894d,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004e8959,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004e895b,s_d__tesla_bt_munga_AUDLVL_CPP_004e899b + ,0x59); + } + FUN_00407ae0(pcVar1,&local_c); + (**(code **)(*param_1 + 0x20))(param_1,&local_c,4); + puVar2 = (uint *)FUN_00402298(0x10); + if (puVar2 == (uint *)0x0) { + local_10 = (uint *)0x0; + } + else { + local_10 = FUN_00402460(puVar2,s_suspend_delay_004e89b8); + } + local_10[3] = local_10[3] + 1; + local_14 = 0.33; + iVar3 = FUN_00403ad0(param_2,(char *)local_10[2]); + if (iVar3 != 0) { + pfVar4 = &local_14; + pcVar1 = (char *)FUN_00403ad0(param_2,(char *)local_10[2]); + FUN_00407b78(pcVar1,pfVar4); + } + (**(code **)(*param_1 + 0x20))(param_1,&local_14,4); + puVar2 = local_10 + 3; + *puVar2 = *puVar2 - 1; + if (*puVar2 == 0) { + FUN_004024d8((int *)local_10,3); + } + return; +} + + + +/* @00437678 file=? name=FUN_00437678 */ + +void __cdecl FUN_00437678(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e8b6c; + FUN_00415ed8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004376a4 file=? name=FUN_004376a4 */ + +undefined4 FUN_004376a4(void) + +{ + FUN_00415f1c(); + return 1; +} + + + +/* @004376b8 file=? name=FUN_004376b8 */ + +undefined4 * __cdecl FUN_004376b8(undefined4 *param_1,int *param_2) + +{ + undefined4 uVar1; + int iVar2; + int local_2c [7]; + int local_10; + undefined1 local_c [4]; + int local_8; + + FUN_004178ec(param_1,param_2); + *param_1 = &PTR_FUN_004e8b60; + FUN_00437c84(param_1 + 4,0,1); + (**(code **)(*param_2 + 0x1c))(param_2,&local_8,4); + iVar2 = 0; + if (0 < local_8) { + do { + (**(code **)(*param_2 + 0x1c))(param_2,local_c,4); + FUN_00437ddc(param_2,&local_10); + (**(code **)(param_1[4] + 8))(param_1 + 4,local_10,local_c); + iVar2 = iVar2 + 1; + } while (iVar2 < local_8); + } + FUN_00437e0b(local_2c,(int)(param_1 + 4)); + uVar1 = (**(code **)(local_2c[0] + 0x30))(local_2c); + param_1[3] = uVar1; + FUN_00437e49(local_2c,2); + return param_1; +} + + + +/* @00437774 file=? name=FUN_00437774 */ + +void __cdecl FUN_00437774(int *param_1,int param_2) + +{ + int *piVar1; + undefined4 *puVar2; + bool bVar3; + undefined3 extraout_var; + undefined3 extraout_var_00; + undefined4 *puVar4; + uint *puVar5; + float *pfVar6; + uint local_48 [2]; + char *local_40; + uint local_38 [2]; + char *local_30; + uint *local_28; + char *local_24; + uint *local_20; + char *local_1c; + int *local_18; + undefined4 local_14; + float local_10; + uint *local_c; + int local_8; + + FUN_00414c58(param_1); + local_8 = 0; + for (puVar2 = *(undefined4 **)(param_2 + 4); puVar2 != (undefined4 *)0x0; + puVar2 = (undefined4 *)*puVar2) { + bVar3 = FUN_00403c20((int)puVar2,s_audio_level_of_detail_004e89c6); + if (CONCAT31(extraout_var,bVar3) != 0) { + local_8 = local_8 + 1; + } + } + (**(code **)(*param_1 + 0x20))(param_1,&local_8,4); + for (puVar2 = *(undefined4 **)(param_2 + 4); puVar2 != (undefined4 *)0x0; + puVar2 = (undefined4 *)*puVar2) { + bVar3 = FUN_00403c20((int)puVar2,s_audio_level_of_detail_004e89dc); + if (CONCAT31(extraout_var_00,bVar3) != 0) { + puVar4 = (undefined4 *)FUN_00402298(0x10); + if (puVar4 == (undefined4 *)0x0) { + local_c = (uint *)0x0; + } + else { + local_c = (uint *)FUN_004023f4(puVar4); + } + local_c[3] = local_c[3] + 1; + FUN_00402a98((int *)&local_18,(int *)&local_c,(char *)puVar2[1]); + piVar1 = local_18 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_18,3); + } + pfVar6 = &local_10; + FUN_00402838(local_38,local_c,0,(char *)0x0); + local_1c = local_30; + puVar5 = (uint *)FUN_00402298(0x10); + if (puVar5 == (uint *)0x0) { + local_20 = (uint *)0x0; + } + else { + local_20 = FUN_00402460(puVar5,local_1c); + } + local_20[3] = local_20[3] + 1; + FUN_004024d8((int *)local_38,2); + FUN_00407b78((char *)local_20[2],pfVar6); + puVar5 = local_20 + 3; + *puVar5 = *puVar5 - 1; + if (*puVar5 == 0) { + FUN_004024d8((int *)local_20,3); + } + (**(code **)(*param_1 + 0x20))(param_1,&local_10,4); + FUN_00402838(local_48,local_c,1,(char *)0x0); + local_24 = local_40; + puVar5 = (uint *)FUN_00402298(0x10); + if (puVar5 == (uint *)0x0) { + local_28 = (uint *)0x0; + } + else { + local_28 = FUN_00402460(puVar5,local_24); + } + local_28[3] = local_28[3] + 1; + FUN_004024d8((int *)local_48,2); + local_14 = FUN_00417208((int)param_1,&local_28); + puVar5 = local_28 + 3; + *puVar5 = *puVar5 - 1; + if (*puVar5 == 0) { + FUN_004024d8((int *)local_28,3); + } + (**(code **)(*param_1 + 0x20))(param_1,&local_14,4); + puVar5 = local_c + 3; + *puVar5 = *puVar5 - 1; + if (*puVar5 == 0) { + FUN_004024d8((int *)local_c,3); + } + } + } + return; +} + + + +/* @00437968 file=? name=FUN_00437968 */ + +void __cdecl FUN_00437968(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e8b60; + FUN_00437ca7(param_1 + 4,2); + FUN_0041790c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004379a4 file=? name=FUN_004379a4 */ + +undefined4 FUN_004379a4(void) + +{ + FUN_00415f1c(); + return 1; +} + + + +/* @004379b8 file=? name=FUN_004379b8 */ + +void __cdecl FUN_004379b8(int param_1,float param_2) + +{ + undefined4 uVar1; + int local_20 [4]; + int local_10; + int local_8; + + FUN_00437e0b(local_20,param_1 + 0x10); + (**(code **)(local_20[0] + 8))(local_20); + while (param_2 < *(float *)(*(int *)(local_10 + local_8 * 4) + 0x14)) { + (**(code **)(local_20[0] + 0x10))(local_20); + } + uVar1 = (**(code **)(local_20[0] + 0x30))(local_20); + *(undefined4 *)(param_1 + 0xc) = uVar1; + FUN_00437e49(local_20,2); + return; +} + + + +/* @00437a20 file=? name=FUN_00437a20 */ + +undefined4 * __cdecl FUN_00437a20(undefined4 *param_1,int *param_2) + +{ + int iVar1; + int local_c; + int local_8; + + FUN_004178ec(param_1,param_2); + *param_1 = &PTR_FUN_004e8b54; + FUN_00437d32(param_1 + 3,0,1); + (**(code **)(*param_2 + 0x1c))(param_2,&local_8,4); + iVar1 = 0; + if (0 < local_8) { + do { + FUN_00437e75(param_2,&local_c); + FUN_00437bec((int)param_1,local_c); + iVar1 = iVar1 + 1; + } while (iVar1 < local_8); + } + return param_1; +} + + + +/* @00437a98 file=? name=FUN_00437a98 */ + +void __cdecl FUN_00437a98(int *param_1,int param_2) + +{ + int *piVar1; + undefined4 *puVar2; + bool bVar3; + undefined3 extraout_var; + undefined3 extraout_var_00; + undefined4 *puVar4; + int *local_14; + undefined4 local_10; + int *local_c; + int local_8; + + FUN_00414c58(param_1); + local_8 = 0; + for (puVar2 = *(undefined4 **)(param_2 + 4); puVar2 != (undefined4 *)0x0; + puVar2 = (undefined4 *)*puVar2) { + bVar3 = FUN_00403c20((int)puVar2,s_audio_resource_004e89f2); + if (CONCAT31(extraout_var,bVar3) != 0) { + local_8 = local_8 + 1; + } + } + (**(code **)(*param_1 + 0x20))(param_1,&local_8,4); + for (puVar2 = *(undefined4 **)(param_2 + 4); puVar2 != (undefined4 *)0x0; + puVar2 = (undefined4 *)*puVar2) { + bVar3 = FUN_00403c20((int)puVar2,s_audio_resource_004e8a01); + if (CONCAT31(extraout_var_00,bVar3) != 0) { + puVar4 = (undefined4 *)FUN_00402298(0x10); + if (puVar4 == (undefined4 *)0x0) { + local_c = (int *)0x0; + } + else { + local_c = (int *)FUN_004023f4(puVar4); + } + local_c[3] = local_c[3] + 1; + FUN_00402a98((int *)&local_14,(int *)&local_c,(char *)puVar2[1]); + piVar1 = local_14 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_14,3); + } + local_10 = FUN_00417208((int)param_1,&local_c); + (**(code **)(*param_1 + 0x20))(param_1,&local_10,4); + piVar1 = local_c + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_c,3); + } + } + } + return; +} + + + +/* @00437b9c file=? name=FUN_00437b9c */ + +void __cdecl FUN_00437b9c(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e8b54; + FUN_00437d55(param_1 + 3,2); + FUN_0041790c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00437bd8 file=? name=FUN_00437bd8 */ + +undefined4 FUN_00437bd8(void) + +{ + FUN_00415f1c(); + return 1; +} + + + +/* @00437bec file=? name=FUN_00437bec */ + +void __cdecl FUN_00437bec(int param_1,undefined4 param_2) + +{ + (**(code **)(*(int *)(param_1 + 0xc) + 8))(param_1 + 0xc,param_2,&stack0x0000000c); + return; +} + + + +/* @00437c0c file=? name=FUN_00437c0c */ + +undefined4 __cdecl FUN_00437c0c(int param_1,undefined4 param_2) + +{ + undefined4 uVar1; + int local_20 [7]; + + FUN_00437ea4(local_20,param_1 + 0xc); + uVar1 = (**(code **)(local_20[0] + 0x34))(local_20,param_2); + FUN_00437ee2(local_20,2); + return uVar1; +} + + + +/* @00437c4c file=? name=FUN_00437c4c */ + +undefined4 __cdecl FUN_00437c4c(int param_1) + +{ + undefined4 uVar1; + int local_20 [7]; + + FUN_00437ea4(local_20,param_1 + 0xc); + uVar1 = (**(code **)(local_20[0] + 0x14))(local_20); + FUN_00437ee2(local_20,2); + return uVar1; +} + + + +/* @00437c84 file=? name=FUN_00437c84 */ + +undefined4 * __cdecl FUN_00437c84(undefined4 *param_1,undefined4 param_2,undefined4 param_3) + +{ + FUN_00419184(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004e8b38; + return param_1; +} + + + +/* @00437ca7 file=? name=FUN_00437ca7 */ + +void __cdecl FUN_00437ca7(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e8b38; + FUN_004191b4(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00437cd3 file=? name=FUN_00437cd3 */ + +undefined4 __cdecl FUN_00437cd3(undefined4 param_1,int param_2,int param_3) + +{ + undefined4 uVar1; + + if (*(float *)(param_2 + 0x14) == *(float *)(param_3 + 0x14)) { + return 0; + } + if (*(float *)(param_2 + 0x14) <= *(float *)(param_3 + 0x14)) { + uVar1 = 0xffffffff; + } + else { + uVar1 = 1; + } + return uVar1; +} + + + +/* @00437d04 file=? name=FUN_00437d04 */ + +undefined4 __cdecl FUN_00437d04(undefined4 param_1,float *param_2,int param_3) + +{ + undefined4 uVar1; + + if (*param_2 == *(float *)(param_3 + 0x14)) { + return 0; + } + if (*param_2 <= *(float *)(param_3 + 0x14)) { + uVar1 = 0xffffffff; + } + else { + uVar1 = 1; + } + return uVar1; +} + + + +/* @00437d32 file=? name=FUN_00437d32 */ + +undefined4 * __cdecl FUN_00437d32(undefined4 *param_1,undefined4 param_2,undefined4 param_3) + +{ + FUN_00419184(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004e8b1c; + return param_1; +} + + + +/* @00437d55 file=? name=FUN_00437d55 */ + +void __cdecl FUN_00437d55(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e8b1c; + FUN_004191b4(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00437d81 file=? name=FUN_00437d81 */ + +undefined4 __cdecl FUN_00437d81(undefined4 param_1,int param_2,int param_3) + +{ + undefined4 uVar1; + + if (*(int *)(param_3 + 0x14) == *(int *)(param_2 + 0x14)) { + uVar1 = 0; + } + else { + uVar1 = 1; + if (*(int *)(param_2 + 0x14) <= *(int *)(param_3 + 0x14)) { + uVar1 = 0xffffffff; + } + } + return uVar1; +} + + + +/* @00437db0 file=? name=FUN_00437db0 */ + +undefined4 __cdecl FUN_00437db0(undefined4 param_1,int *param_2,int param_3) + +{ + undefined4 uVar1; + + if (*(int *)(param_3 + 0x14) == *param_2) { + uVar1 = 0; + } + else { + uVar1 = 1; + if (*param_2 <= *(int *)(param_3 + 0x14)) { + uVar1 = 0xffffffff; + } + } + return uVar1; +} + + + +/* @00437ddc file=? name=FUN_00437ddc */ + +void __cdecl FUN_00437ddc(int *param_1,int *param_2) + +{ + int iVar1; + undefined4 local_8; + + (**(code **)(*param_1 + 0x1c))(param_1,&local_8,4); + iVar1 = FUN_004170e4((int)param_1,local_8); + *param_2 = iVar1; + return; +} + + + +/* @00437e0b file=? name=FUN_00437e0b */ + +undefined4 * __cdecl FUN_00437e0b(undefined4 *param_1,int param_2) + +{ + FUN_004194d8(param_1,param_2); + *param_1 = &PTR_FUN_004e8ac0; + return param_1; +} + + + +/* @00437e2a file=? name=FUN_00437e2a */ + +undefined4 * __cdecl FUN_00437e2a(undefined4 *param_1,int param_2) + +{ + FUN_004194d8(param_1,param_2); + *param_1 = &PTR_FUN_004e8ac0; + return param_1; +} + + + +/* @00437e49 file=? name=FUN_00437e49 */ + +void __cdecl FUN_00437e49(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e8ac0; + FUN_0041951c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00437e75 file=? name=FUN_00437e75 */ + +void __cdecl FUN_00437e75(int *param_1,int *param_2) + +{ + int iVar1; + undefined4 local_8; + + (**(code **)(*param_1 + 0x1c))(param_1,&local_8,4); + iVar1 = FUN_004170e4((int)param_1,local_8); + *param_2 = iVar1; + return; +} + + + +/* @00437ea4 file=? name=FUN_00437ea4 */ + +undefined4 * __cdecl FUN_00437ea4(undefined4 *param_1,int param_2) + +{ + FUN_004194d8(param_1,param_2); + *param_1 = &PTR_FUN_004e8a64; + return param_1; +} + + + +/* @00437ec3 file=? name=FUN_00437ec3 */ + +undefined4 * __cdecl FUN_00437ec3(undefined4 *param_1,int param_2) + +{ + FUN_004194d8(param_1,param_2); + *param_1 = &PTR_FUN_004e8a64; + return param_1; +} + + + +/* @00437ee2 file=? name=FUN_00437ee2 */ + +void __cdecl FUN_00437ee2(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e8a64; + FUN_0041951c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00437f0e file=? name=FUN_00437f0e */ + +undefined4 * __cdecl FUN_00437f0e(undefined4 param_1,int param_2,undefined4 *param_3) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_0041d485(); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_0041d42e(puVar1,param_1,param_2,param_3); + } + return puVar1; +} + + + +/* @00437f3e file=? name=FUN_00437f3e */ + +undefined4 * __cdecl FUN_00437f3e(undefined4 param_1,int param_2,undefined4 *param_3) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00437fc5(); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_00437f6e(puVar1,param_1,param_2,param_3); + } + return puVar1; +} + + + +/* @00437f6e file=? name=FUN_00437f6e */ + +undefined4 * __cdecl +FUN_00437f6e(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 *param_4) + +{ + FUN_004190e8(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004e8b78; + param_1[5] = *param_4; + return param_1; +} + + + +/* @00437f99 file=? name=FUN_00437f99 */ + +void __cdecl FUN_00437f99(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e8b78; + FUN_0041910c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_00438015(param_1); + } + } + return; +} + + + +/* @00437fc5 file=? name=FUN_00437fc5 */ + +void FUN_00437fc5(void) + +{ + int iVar1; + undefined4 *puVar2; + + iVar1 = DAT_004e8b74; + DAT_004e8b74 = DAT_004e8b74 + 1; + puVar2 = DAT_004e8b70; + if ((iVar1 == 0) && (puVar2 = (undefined4 *)FUN_00402298(0x28), puVar2 != (undefined4 *)0x0)) { + FUN_00402b98(puVar2,0x18,100,100,s_TableEntryOf_004e8a2f); + } + DAT_004e8b70 = puVar2; + FUN_00402f74((int)DAT_004e8b70); + return; +} + + + +/* @00438015 file=? name=FUN_00438015 */ + +void __cdecl FUN_00438015(undefined4 *param_1) + +{ + FUN_00402f98((int)DAT_004e8b70,param_1); + DAT_004e8b74 = DAT_004e8b74 + -1; + if (DAT_004e8b74 == 0) { + if (DAT_004e8b70 != (int *)0x0) { + FUN_00402c28(DAT_004e8b70,0); + FUN_004022d0(DAT_004e8b70); + } + DAT_004e8b70 = (int *)0x0; + } + return; +} + + + +/* @00438060 file=? name=FUN_00438060 */ + +undefined4 * __cdecl FUN_00438060(undefined4 *param_1,int *param_2,int param_3) + +{ + undefined4 local_c; + undefined4 local_8; + + FUN_00436d14(param_1,param_2,&DAT_004e8698); + *param_1 = &PTR_FUN_004e8c74; + param_1[10] = 0; + param_1[0xb] = 0; + param_1[0xc] = 0; + param_1[0xf] = 0; + param_1[0x10] = 0; + param_1[0x11] = 0; + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 10,0xc); + (**(code **)(*param_2 + 0x1c))(param_2,&local_8,4); + (**(code **)(*param_2 + 0x1c))(param_2,&local_c,4); + FUN_00438124((int)param_1,param_3,local_8,local_c); + return param_1; +} + + + +/* @004380f8 file=? name=FUN_004380f8 */ + +void __cdecl FUN_004380f8(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e8c74; + FUN_00436d4c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00438124 file=? name=FUN_00438124 */ + +void __cdecl FUN_00438124(int param_1,int param_2,undefined4 param_3,undefined4 param_4) + +{ + *(int *)(param_1 + 0x24) = param_2; + FUN_004206b4(param_2,param_1); + *(undefined4 *)(param_1 + 0x34) = param_4; + *(undefined4 *)(param_1 + 0x38) = 0; + *(undefined4 *)(param_1 + 0x48) = 0x3f800000; + *(undefined4 *)(param_1 + 0x58) = 0; + *(undefined4 *)(param_1 + 0x4c) = 0; + *(undefined4 *)(param_1 + 0x50) = 0x3f800000; + *(undefined4 *)(param_1 + 0x54) = 0x3f800000; + *(undefined4 *)(param_1 + 0x5c) = param_3; + *(undefined4 *)(param_1 + 0x60) = 0xffffffff; + return; +} + + + +/* @00438178 file=? name=FUN_00438178 */ + +undefined4 __cdecl FUN_00438178(int param_1) + +{ + FUN_0041b8e0(param_1); + return 1; +} + + + +/* @0043818c file=munga/audloc.cpp name=FUN_0043818c */ + +void __cdecl FUN_0043818c(int *param_1,int param_2) + +{ + char *pcVar1; + uint *puVar2; + int iVar3; + int *piVar4; + float *pfVar5; + float local_20 [3]; + float local_14; + uint *local_10; + int local_c; + uint *local_8; + + FUN_00414c58(param_1); + pcVar1 = (char *)FUN_00403ad0(param_2,s_location_offset_004e8b7c); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004e8b8c,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_location_offset_004e8bb1,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004e8bc1,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004e8bc3,s_d__tesla_bt_munga_AUDLOC_CPP_004e8c03 + ,0x77); + } + FUN_00408944(pcVar1,local_20); + (**(code **)(*param_1 + 0x20))(param_1,local_20,0xc); + puVar2 = (uint *)FUN_00402298(0x10); + if (puVar2 == (uint *)0x0) { + local_8 = (uint *)0x0; + } + else { + local_8 = FUN_00402460(puVar2,s_update_delay_004e8c20); + } + local_8[3] = local_8[3] + 1; + local_c = 2; + iVar3 = FUN_00403ad0(param_2,(char *)local_8[2]); + if (iVar3 != 0) { + piVar4 = &local_c; + pcVar1 = (char *)FUN_00403ad0(param_2,(char *)local_8[2]); + FUN_00407b30(pcVar1,piVar4); + } + (**(code **)(*param_1 + 0x20))(param_1,&local_c,4); + puVar2 = (uint *)FUN_00402298(0x10); + if (puVar2 == (uint *)0x0) { + local_10 = (uint *)0x0; + } + else { + local_10 = FUN_00402460(puVar2,s_clipping_scale_004e8c2d); + } + local_10[3] = local_10[3] + 1; + local_14 = 1.0; + iVar3 = FUN_00403ad0(param_2,(char *)local_10[2]); + if (iVar3 != 0) { + pfVar5 = &local_14; + pcVar1 = (char *)FUN_00403ad0(param_2,(char *)local_10[2]); + FUN_00407b78(pcVar1,pfVar5); + } + (**(code **)(*param_1 + 0x20))(param_1,&local_14,4); + puVar2 = local_10 + 3; + *puVar2 = *puVar2 - 1; + if (*puVar2 == 0) { + FUN_004024d8((int *)local_10,3); + } + puVar2 = local_8 + 3; + *puVar2 = *puVar2 - 1; + if (*puVar2 == 0) { + FUN_004024d8((int *)local_8,3); + } + return; +} + + + +/* @00438340 file=? name=FUN_00438340 */ + +void FUN_00438340(void) + +{ + return; +} + + + +/* @00438348 file=? name=FUN_00438348 */ + +bool __cdecl FUN_00438348(int param_1,int param_2) + +{ + float fVar1; + int iVar2; + float local_14; + float local_10; + float local_c; + + iVar2 = FUN_00417ab4(param_2 + 8); + FUN_00408644(&local_14,(float *)(iVar2 + 0x100),(float *)(*(int *)(param_1 + 0x24) + 0x100)); + fVar1 = *(float *)(param_2 + 0x14) * *(float *)(param_1 + 0x34); + return fVar1 * fVar1 < local_c * local_c + local_10 * local_10 + local_14 * local_14; +} + + + +/* @004383b4 file=? name=FUN_004383b4 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004383b4(int param_1,int *param_2) + +{ + bool bVar1; + int iVar2; + undefined3 extraout_var; + float10 fVar3; + float *pfVar4; + float local_cc [3]; + float local_c0 [3]; + float local_b4; + float local_b0; + float local_ac; + float local_a8 [3]; + float local_9c; + float local_98; + float local_94; + float local_90 [3]; + float local_84 [3]; + float local_78 [3]; + float local_6c [12]; + float local_3c; + float local_38; + float local_34; + float local_30; + float local_2c; + float local_28; + float local_24; + float local_20; + float local_1c; + float local_18; + float local_14; + float local_10; + int *local_c; + int *local_8; + + local_8 = *(int **)(param_1 + 0x24); + local_c = (int *)FUN_00417ab4((int)(param_2 + 2)); + if ((local_c == local_8) && + (iVar2 = FUN_004084fc((float *)(param_1 + 0x28),(float *)&DAT_004e0f74,0.0001), iVar2 != 0)) { + *(undefined4 *)(param_1 + 0x38) = 1; + FUN_00408440((undefined4 *)(param_1 + 0x3c),&DAT_004e0f74); + *(undefined4 *)(param_1 + 0x48) = 0; + *(undefined4 *)(param_1 + 0x58) = 0; + *(undefined4 *)(param_1 + 0x4c) = 0; + *(undefined4 *)(param_1 + 0x50) = 0x3f800000; + *(undefined4 *)(param_1 + 0x54) = 0x3f800000; + return; + } + *(undefined4 *)(param_1 + 0x38) = 0; + (**(code **)(*param_2 + 4))(local_6c); + FUN_00408744(local_78,(float *)(param_1 + 0x28),(float *)(local_8 + 0x34)); + FUN_004085ec(local_84,(float *)(local_8 + 0x40),local_78); + FUN_00408644(local_90,local_84,(float *)(local_c + 0x40)); + FUN_0040879c((float *)(param_1 + 0x3c),local_90,local_6c); + fVar3 = FUN_004dd138((double)(*(float *)(param_1 + 0x44) * *(float *)(param_1 + 0x44) + + *(float *)(param_1 + 0x40) * *(float *)(param_1 + 0x40) + + *(float *)(param_1 + 0x3c) * *(float *)(param_1 + 0x3c))); + *(float *)(param_1 + 0x48) = (float)fVar3; + local_9c = 0.0; + local_98 = 0.0; + local_94 = -1.0; + local_10 = *(float *)(param_1 + 0x48); + fVar3 = FUN_004dcd00((double)local_10); + if ((float10)_DAT_00438768 < fVar3) { + FUN_004087f4(&local_9c,(float *)(param_1 + 0x3c)); + } + local_14 = *(float *)(param_1 + 0x3c); + fVar3 = FUN_004dcd00((double)local_14); + if (fVar3 <= (float10)_DAT_00438768) { + local_18 = *(float *)(param_1 + 0x44); + fVar3 = FUN_004dcd00((double)local_18); + if (fVar3 <= (float10)_DAT_00438768) { + *(undefined4 *)(param_1 + 0x4c) = 0; + goto LAB_004385b4; + } + } + fVar3 = FUN_004dc8ec((double)*(float *)(param_1 + 0x3c), + SUB84((double)*(float *)(param_1 + 0x44),0), + (uint)((ulonglong)(double)*(float *)(param_1 + 0x44) >> 0x20)); + local_1c = (float)fVar3; + *(float *)(param_1 + 0x4c) = local_1c; +LAB_004385b4: + if (*(float *)(param_1 + 0x48) <= (float)param_2[8]) { + *(undefined4 *)(param_1 + 0x50) = 0x3f800000; + } + else { + local_20 = (*(float *)(param_1 + 0x48) - (float)param_2[8]) * + ((float)param_2[9] / *(float *)(param_1 + 0x34)); + fVar3 = FUN_004dce94((double)local_20,SUB84((double)(float)param_2[7],0), + (uint)((ulonglong)(double)(float)param_2[7] >> 0x20)); + local_24 = (float)(fVar3 + (float10)_DAT_0043876c); + *(float *)(param_1 + 0x50) = _DAT_0043876c / local_24; + } + if (*(float *)(param_1 + 0x48) <= (float)param_2[0xb]) { + *(undefined4 *)(param_1 + 0x54) = 0x3f800000; + } + else { + local_28 = (*(float *)(param_1 + 0x48) - (float)param_2[0xb]) * + ((float)param_2[0xc] / *(float *)(param_1 + 0x34)); + fVar3 = FUN_004dce94((double)local_28,SUB84((double)(float)param_2[10],0), + (uint)((ulonglong)(double)(float)param_2[10] >> 0x20)); + local_2c = (float)(fVar3 + (float10)_DAT_0043876c); + *(float *)(param_1 + 0x54) = _DAT_0043876c / local_2c; + } + (**(code **)(*local_c + 0x20))(local_cc); + pfVar4 = local_cc; + (**(code **)(*local_8 + 0x20))(); + FUN_00408644(local_a8,local_c0,pfVar4); + FUN_0040879c(&local_b4,local_a8,(float *)(local_c + 0x34)); + local_30 = *(float *)(param_1 + 0x48); + fVar3 = FUN_004dcd00((double)local_30); + if (fVar3 <= (float10)_DAT_00438768) { + *(undefined4 *)(param_1 + 0x58) = 0; + } + else { + local_38 = local_94 * local_ac + local_98 * local_b0 + local_9c * local_b4; + local_3c = (float)param_2[6] * _DAT_00438770; + if (*(float *)(param_1 + 0x48) < local_3c) { + local_38 = (*(float *)(param_1 + 0x48) / local_3c) * local_38; + } + bVar1 = FUN_00438774(param_1,(int)param_2,local_38,&local_34); + if (CONCAT31(extraout_var,bVar1) != 0) { + *(float *)(param_1 + 0x58) = local_34; + } + } + return; +} + + + /* @00438774 file=? name=FUN_00438774 */ /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ @@ -4324,6 +5595,36 @@ void __cdecl FUN_0043d62c(int *param_1,undefined2 param_2,short param_3,undefine +/* @0043d730 file=? name=FUN_0043d730 */ + +void __cdecl FUN_0043d730(int param_1,undefined4 param_2,short param_3) + +{ + undefined4 *puVar1; + undefined4 local_8; + + local_8 = FUN_0043c208(param_1); + puVar1 = (undefined4 *)FUN_00402298(0x18); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_0043caf0(puVar1,local_8,8,(float)param_3); + } + (**(code **)(*(int *)(param_1 + 0x34) + 8))(param_1 + 0x34,puVar1,&local_8); + puVar1 = (undefined4 *)FUN_00402298(0x18); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_0043caf0(puVar1,local_8,2,0); + } + (**(code **)(*(int *)(param_1 + 0x34) + 8))(param_1 + 0x34,puVar1,&local_8); + return; +} + + + /* @0043d7bc file=? name=FUN_0043d7bc */ void FUN_0043d7bc(void) @@ -4907,6 +6208,27 @@ float10 __cdecl FUN_0043ded4(int param_1,float *param_2) +/* @0043dfcc file=? name=FUN_0043dfcc */ + +void __cdecl FUN_0043dfcc(int param_1) + +{ + int iVar1; + + if (*(int *)(param_1 + 0x60) == 0) { + iVar1 = *(int *)(param_1 + 100); + if ((((iVar1 != 0) && (iVar1 != 1)) && (iVar1 != 2)) && (iVar1 != 3)) { + return; + } + } + else if (*(int *)(param_1 + 0x60) != 1) { + return; + } + return; +} + + + /* @0043e004 file=? name=FUN_0043e004 */ int * __cdecl FUN_0043e004(int *param_1,int *param_2,int param_3) @@ -5025,6 +6347,27 @@ float10 __cdecl FUN_0043e1b4(int param_1,float *param_2) +/* @0043e2ac file=? name=FUN_0043e2ac */ + +void __cdecl FUN_0043e2ac(int param_1) + +{ + int iVar1; + + if (*(int *)(param_1 + 0x5c) == 0) { + iVar1 = *(int *)(param_1 + 0x60); + if ((((iVar1 != 0) && (iVar1 != 1)) && (iVar1 != 2)) && (iVar1 != 3)) { + return; + } + } + else if (*(int *)(param_1 + 0x5c) != 1) { + return; + } + return; +} + + + /* @0043e2e4 file=? name=FUN_0043e2e4 */ int * __cdecl FUN_0043e2e4(int *param_1,int *param_2,int param_3) @@ -6172,6 +7515,20 @@ void __cdecl FUN_0043f7a3(int *param_1) +/* @0043f883 file=munga/audwthr.hpp name=FUN_0043f883 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 FUN_0043f883(void) + +{ + FUN_0040385c(s_AudioScaleOf__ExtractInterest_004ebcc6,s_d__tesla_bt_munga_audwthr_hpp_004ebd09, + 0x29e); + return (float10)_DAT_0043f8a7; +} + + + /* @0043f8ab file=? name=FUN_0043f8ab */ undefined4 * __cdecl FUN_0043f8ab(undefined4 *param_1,int *param_2,int param_3) @@ -6333,6 +7690,20 @@ void __cdecl FUN_0043fcc2(int *param_1) +/* @0043fda2 file=munga/audwthr.hpp name=FUN_0043fda2 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 FUN_0043fda2(void) + +{ + FUN_0040385c(s_AudioScaleOf__ExtractInterest_004ec135,s_d__tesla_bt_munga_audwthr_hpp_004ec178, + 0x29e); + return (float10)_DAT_0043fdc6; +} + + + /* @0043fdca file=? name=FUN_0043fdca */ undefined4 * __cdecl FUN_0043fdca(undefined4 *param_1,int *param_2,int param_3) @@ -7183,6 +8554,20 @@ void __cdecl FUN_00440ed3(int *param_1) +/* @00440fb3 file=munga/audwthr.hpp name=FUN_00440fb3 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 FUN_00440fb3(void) + +{ + FUN_0040385c(s_AudioScaleOf__ExtractInterest_004ecca7,s_d__tesla_bt_munga_audwthr_hpp_004eccea, + 0x29e); + return (float10)_DAT_00440fd7; +} + + + /* @00440fdb file=? name=FUN_00440fdb */ undefined4 * __cdecl FUN_00440fdb(undefined4 *param_1,int *param_2,int param_3) @@ -7366,1207 +8751,3 @@ undefined4 __cdecl FUN_00441381(int param_1) -/* @00441395 file=? name=FUN_00441395 */ - -void __cdecl FUN_00441395(undefined4 *param_1,undefined4 *param_2) - -{ - if (param_2 == param_1 + 9) { - if (param_1 != (undefined4 *)0x0) { - (**(code **)*param_1)(param_1,3); - return; - } - } - else { - FUN_00417938(); - } - return; -} - - - -/* @004413c5 file=? name=FUN_004413c5 */ - -void __cdecl FUN_004413c5(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_004ed714; - FUN_0042864c(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @004413f1 file=? name=FUN_004413f1 */ - -undefined4 * __cdecl FUN_004413f1(undefined4 *param_1,int *param_2,int param_3) - -{ - undefined1 local_8 [4]; - - FUN_00428678(param_1,param_2,param_3); - *param_1 = &PTR_FUN_004ed714; - (**(code **)(*param_2 + 0x1c))(param_2,local_8,4); - FUN_00441502((int)param_1); - return param_1; -} - - - -/* @00441430 file=munga/watcher.hpp name=FUN_00441430 */ - -void __cdecl FUN_00441430(int *param_1,int param_2) - -{ - char *pcVar1; - int local_8; - - FUN_0042887c(param_1,param_2); - pcVar1 = (char *)FUN_00403ad0(param_2,s_dump_value_004ecf66); - if (pcVar1 == (char *)0x0) { - FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004ecf71,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s_dump_value_004ecf96,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,&DAT_004ecfa1,(char *)0x0); - FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004ecfa3, - s_d__tesla_bt_munga_watcher_hpp_004ecfe3,0x108); - } - FUN_00407ae0(pcVar1,&local_8); - (**(code **)(*param_1 + 0x20))(param_1,&local_8,4); - return; -} - - - -/* @004414d8 file=? name=FUN_004414d8 */ - -void __cdecl FUN_004414d8(int *param_1) - -{ - FUN_00441512(param_1); - return; -} - - - -/* @004414e7 file=? name=FUN_004414e7 */ - -void __cdecl FUN_004414e7(int *param_1) - -{ - if (*(int *)param_1[5] != param_1[8]) { - FUN_00441512(param_1); - } - return; -} - - - -/* @00441502 file=? name=FUN_00441502 */ - -void __cdecl FUN_00441502(int param_1) - -{ - *(undefined4 *)(param_1 + 0x20) = **(undefined4 **)(param_1 + 0x14); - return; -} - - - -/* @00441512 file=? name=FUN_00441512 */ - -void __cdecl FUN_00441512(int *param_1) - -{ - FUN_00441502((int)param_1); - param_1[6] = 1; - if (param_1[7] != 0) { - (**(code **)(*param_1 + 0x18))(param_1); - } - return; -} - - - -/* @00441537 file=? name=FUN_00441537 */ - -void FUN_00441537(void) - -{ - return; -} - - - -/* @0044153c file=? name=FUN_0044153c */ - -undefined4 * __cdecl FUN_0044153c(undefined4 *param_1,int *param_2,int param_3) - -{ - FUN_00441287(param_1,param_2,param_3); - *param_1 = &PTR_FUN_004ed6f4; - (**(code **)(*(int *)(param_1[4] + 0x80) + 4))(param_1[4] + 0x80,param_1); - (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0xe,4); - (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0xf,4); - (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0xd,4); - param_1[0xc] = param_1[8]; - return param_1; -} - - - -/* @004415b5 file=? name=FUN_004415b5 */ - -void __cdecl FUN_004415b5(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_004ed6f4; - FUN_004412d8(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @004415e1 file=munga/audwthr.hpp name=FUN_004415e1 */ - -void __cdecl FUN_004415e1(int *param_1,int param_2) - -{ - char *pcVar1; - int iVar2; - int *piVar3; - int local_10; - float local_c; - int local_8; - - FUN_00441312(param_1,param_2); - pcVar1 = (char *)FUN_00403ad0(param_2,s_control_ID_004ed001); - if (pcVar1 == (char *)0x0) { - FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004ed00c,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s_control_ID_004ed031,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,&DAT_004ed03c,(char *)0x0); - FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004ed03e, - s_d__tesla_bt_munga_audwthr_hpp_004ed07e,0x39d); - } - FUN_00407ae0(pcVar1,&local_8); - (**(code **)(*param_1 + 0x20))(param_1,&local_8,4); - pcVar1 = (char *)FUN_00403ad0(param_2,s_control_value_004ed09c); - if (pcVar1 == (char *)0x0) { - FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004ed0aa,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s_control_value_004ed0cf,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,&DAT_004ed0dd,(char *)0x0); - FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004ed0df, - s_d__tesla_bt_munga_audwthr_hpp_004ed11f,0x3a0); - } - FUN_00407b78(pcVar1,&local_c); - (**(code **)(*param_1 + 0x20))(param_1,&local_c,4); - local_10 = 0; - iVar2 = FUN_00403ad0(param_2,s_delta_trigger_004ed13d); - if (iVar2 != 0) { - piVar3 = &local_10; - pcVar1 = (char *)FUN_00403ad0(param_2,s_delta_trigger_004ed14b); - FUN_00407ae0(pcVar1,piVar3); - } - (**(code **)(*param_1 + 0x20))(param_1,&local_10,4); - return; -} - - - -/* @00441756 file=? name=FUN_00441756 */ - -void __cdecl FUN_00441756(int param_1) - -{ - int iVar1; - int *piVar2; - - iVar1 = *(int *)(param_1 + 0x20) - *(int *)(param_1 + 0x30); - if (iVar1 < 1) { - iVar1 = -iVar1; - } - if (*(int *)(param_1 + 0x34) <= iVar1) { - *(int *)(param_1 + 0x30) = *(int *)(param_1 + 0x20); - piVar2 = (int *)FUN_00417ab4(param_1 + 0x24); - (**(code **)(*piVar2 + 0x18)) - (piVar2,*(undefined4 *)(param_1 + 0x38),*(undefined4 *)(param_1 + 0x3c)); - } - return; -} - - - -/* @0044179a file=? name=FUN_0044179a */ - -undefined4 * __cdecl FUN_0044179a(undefined4 *param_1,int *param_2,int param_3) - -{ - FUN_00441287(param_1,param_2,param_3); - *param_1 = &PTR_FUN_004ed6d0; - (**(code **)(*(int *)(param_1[4] + 0x80) + 4))(param_1[4] + 0x80,param_1); - (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0xc,4); - (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0xd,4); - (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0xe,4); - (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0xf,4); - (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0x10,4); - (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0x11,4); - param_1[0x12] = 0; - return param_1; -} - - - -/* @00441845 file=? name=FUN_00441845 */ - -void __cdecl FUN_00441845(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_004ed6d0; - FUN_004412d8(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @00441871 file=munga/audwthr.hpp name=FUN_00441871 */ - -void __cdecl FUN_00441871(int *param_1,int param_2) - -{ - char *pcVar1; - float local_1c; - float local_18; - int local_14; - int local_10; - int local_c; - float local_8; - - FUN_00441312(param_1,param_2); - pcVar1 = (char *)FUN_00403ad0(param_2,s_attribute_value_threshold_004ed159); - if (pcVar1 == (char *)0x0) { - FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004ed173,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s_attribute_value_threshold_004ed198,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,&DAT_004ed1b2,(char *)0x0); - FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004ed1b4, - s_d__tesla_bt_munga_audwthr_hpp_004ed1f4,0x16b); - } - FUN_00407b78(pcVar1,&local_8); - (**(code **)(*param_1 + 0x20))(param_1,&local_8,4); - pcVar1 = (char *)FUN_00403ad0(param_2,s_inverse_trigger_004ed212); - if (pcVar1 == (char *)0x0) { - FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004ed222,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s_inverse_trigger_004ed247,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,&DAT_004ed257,(char *)0x0); - FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004ed259, - s_d__tesla_bt_munga_audwthr_hpp_004ed299,0x16e); - } - FUN_00407ae0(pcVar1,&local_c); - (**(code **)(*param_1 + 0x20))(param_1,&local_c,4); - pcVar1 = (char *)FUN_00403ad0(param_2,s_control_ID_on_004ed2b7); - if (pcVar1 == (char *)0x0) { - FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004ed2c5,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s_control_ID_on_004ed2ea,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,&DAT_004ed2f8,(char *)0x0); - FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004ed2fa, - s_d__tesla_bt_munga_audwthr_hpp_004ed33a,0x171); - } - FUN_00407ae0(pcVar1,&local_10); - (**(code **)(*param_1 + 0x20))(param_1,&local_10,4); - pcVar1 = (char *)FUN_00403ad0(param_2,s_control_ID_off_004ed358); - if (pcVar1 == (char *)0x0) { - FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004ed367,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s_control_ID_off_004ed38c,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,&DAT_004ed39b,(char *)0x0); - FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004ed39d, - s_d__tesla_bt_munga_audwthr_hpp_004ed3dd,0x174); - } - FUN_00407ae0(pcVar1,&local_14); - (**(code **)(*param_1 + 0x20))(param_1,&local_14,4); - pcVar1 = (char *)FUN_00403ad0(param_2,s_control_value_on_004ed3fb); - if (pcVar1 == (char *)0x0) { - FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004ed40c,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s_control_value_on_004ed431,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,&DAT_004ed442,(char *)0x0); - FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004ed444, - s_d__tesla_bt_munga_audwthr_hpp_004ed484,0x177); - } - FUN_00407b78(pcVar1,&local_18); - (**(code **)(*param_1 + 0x20))(param_1,&local_18,4); - pcVar1 = (char *)FUN_00403ad0(param_2,s_control_value_off_004ed4a2); - if (pcVar1 == (char *)0x0) { - FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004ed4b4,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s_control_value_off_004ed4d9,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,&DAT_004ed4eb,(char *)0x0); - FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004ed4ed, - s_d__tesla_bt_munga_audwthr_hpp_004ed52d,0x17a); - } - FUN_00407b78(pcVar1,&local_1c); - (**(code **)(*param_1 + 0x20))(param_1,&local_1c,4); - return; -} - - - -/* @00441bb7 file=? name=FUN_00441bb7 */ - -void __cdecl FUN_00441bb7(int *param_1) - -{ - float fVar1; - int *piVar2; - float10 fVar3; - - fVar3 = (float10)(**(code **)(*param_1 + 0x20))(param_1,param_1 + 8); - fVar1 = (float)fVar3; - if (param_1[0x12] == 0) { - if (((param_1[0xd] == 0) && ((float)param_1[0xc] < fVar1)) || - ((param_1[0xd] != 0 && (fVar1 < (float)param_1[0xc])))) { - piVar2 = (int *)FUN_00417ab4((int)(param_1 + 9)); - (**(code **)(*piVar2 + 0x18))(piVar2,param_1[0xe],param_1[0x10]); - param_1[0x12] = 1; - } - } - else if (((param_1[0xd] == 0) && (fVar1 <= (float)param_1[0xc])) || - ((param_1[0xd] != 0 && ((float)param_1[0xc] <= fVar1)))) { - piVar2 = (int *)FUN_00417ab4((int)(param_1 + 9)); - (**(code **)(*piVar2 + 0x18))(piVar2,param_1[0xf],param_1[0x11]); - param_1[0x12] = 0; - } - return; -} - - - -/* @00441c64 file=munga/audwthr.hpp name=FUN_00441c64 */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -float10 FUN_00441c64(void) - -{ - FUN_0040385c(s_AudioTriggerOf__ExtractIntere_004ed54b,s_d__tesla_bt_munga_audwthr_hpp_004ed590, - 0x1bc); - return (float10)_DAT_00441c88; -} - - - -/* @00441c8c file=? name=FUN_00441c8c */ - -undefined4 * __cdecl FUN_00441c8c(undefined4 *param_1,int *param_2,int param_3) - -{ - int local_8; - - FUN_00441e04(param_1,param_2,param_3); - *param_1 = &PTR_FUN_004ed6b0; - FUN_0043acac(param_1 + 0x1d,param_1); - FUN_0043afbc(param_2,&local_8); - (**(code **)(param_1[0x1d] + 4))(param_1 + 0x1d,local_8); - return param_1; -} - - - -/* @00441cdd file=? name=FUN_00441cdd */ - -void __cdecl FUN_00441cdd(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_004ed6b0; - FUN_0043accb(param_1 + 0x1d,2); - FUN_00441dca(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @00441d17 file=? name=FUN_00441d17 */ - -void __cdecl FUN_00441d17(int *param_1,int param_2) - -{ - uint *puVar1; - uint *local_8; - - FUN_00441e4d(param_1,param_2); - puVar1 = (uint *)FUN_00402298(0x10); - if (puVar1 == (uint *)0x0) { - local_8 = (uint *)0x0; - } - else { - local_8 = FUN_00402460(puVar1,s_audio_component_004ed5ae); - } - local_8[3] = local_8[3] + 1; - FUN_00417240(param_1,param_2,(int *)&local_8); - puVar1 = local_8 + 3; - *puVar1 = *puVar1 - 1; - if (*puVar1 == 0) { - FUN_004024d8((int *)local_8,3); - } - return; -} - - - -/* @00441d86 file=? name=FUN_00441d86 */ - -undefined4 __cdecl FUN_00441d86(int param_1) - -{ - FUN_00428a2c(param_1); - return 1; -} - - - -/* @00441d9a file=? name=FUN_00441d9a */ - -void __cdecl FUN_00441d9a(undefined4 *param_1,undefined4 *param_2) - -{ - if (param_2 == param_1 + 0x1d) { - if (param_1 != (undefined4 *)0x0) { - (**(code **)*param_1)(param_1,3); - return; - } - } - else { - FUN_00417938(); - } - return; -} - - - -/* @00441dca file=? name=FUN_00441dca */ - -void __cdecl FUN_00441dca(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_004ed690; - FUN_0041baa4(param_1 + 8,2); - FUN_0042864c(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @00441e04 file=? name=FUN_00441e04 */ - -undefined4 * __cdecl FUN_00441e04(undefined4 *param_1,int *param_2,int param_3) - -{ - undefined1 local_8 [4]; - - FUN_00428678(param_1,param_2,param_3); - *param_1 = &PTR_FUN_004ed690; - FUN_0041b994(param_1 + 8); - (**(code **)(*param_2 + 0x1c))(param_2,local_8,4); - FUN_00441f29((int)param_1); - return param_1; -} - - - -/* @00441e4d file=munga/watcher.hpp name=FUN_00441e4d */ - -void __cdecl FUN_00441e4d(int *param_1,int param_2) - -{ - char *pcVar1; - int local_8; - - FUN_0042887c(param_1,param_2); - pcVar1 = (char *)FUN_00403ad0(param_2,s_dump_value_004ed5be); - if (pcVar1 == (char *)0x0) { - FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004ed5c9,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s_dump_value_004ed5ee,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,&DAT_004ed5f9,(char *)0x0); - FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004ed5fb, - s_d__tesla_bt_munga_watcher_hpp_004ed63b,0x108); - } - FUN_00407ae0(pcVar1,&local_8); - (**(code **)(*param_1 + 0x20))(param_1,&local_8,4); - return; -} - - - -/* @00441ef5 file=? name=FUN_00441ef5 */ - -void __cdecl FUN_00441ef5(int *param_1) - -{ - FUN_00441f41(param_1); - return; -} - - - -/* @00441f04 file=? name=FUN_00441f04 */ - -void __cdecl FUN_00441f04(int *param_1) - -{ - int iVar1; - - iVar1 = FUN_0041bba8((int)(param_1 + 8),param_1[5]); - if (iVar1 == 0) { - FUN_00441f41(param_1); - } - return; -} - - - -/* @00441f29 file=? name=FUN_00441f29 */ - -void __cdecl FUN_00441f29(int param_1) - -{ - FUN_0041bb88(param_1 + 0x20,*(int *)(param_1 + 0x14)); - return; -} - - - -/* @00441f41 file=? name=FUN_00441f41 */ - -void __cdecl FUN_00441f41(int *param_1) - -{ - FUN_00441f29((int)param_1); - param_1[6] = 1; - if (param_1[7] != 0) { - (**(code **)(*param_1 + 0x18))(param_1); - } - return; -} - - - -/* @00441f66 file=? name=FUN_00441f66 */ - -void FUN_00441f66(void) - -{ - return; -} - - - -/* @00441f6c file=? name=FUN_00441f6c */ - -undefined4 * __cdecl FUN_00441f6c(undefined4 *param_1,undefined4 param_2) - -{ - FUN_00435d30(param_1,param_2,DAT_004e823c,1,1,1,0x1e,&DAT_004e82f8); - *param_1 = &PTR_FUN_004edb74; - FUN_0044242c(param_1 + 0x14,0,0); - param_1[0x13] = 0; - return param_1; -} - - - -/* @00441fb4 file=? name=FUN_00441fb4 */ - -void __cdecl FUN_00441fb4(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_004edb74; - FUN_00436b9c((int *)param_1[0x13],3); - FUN_0044244f(param_1 + 0x14,2); - FUN_00435df8(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @00441ffc file=? name=FUN_00441ffc */ - -void __cdecl FUN_00441ffc(int *param_1) - -{ - int iVar1; - - iVar1 = (**(code **)(*param_1 + 0x4c))(param_1); - param_1[0x13] = iVar1; - return; -} - - - -/* @00442010 file=? name=FUN_00442010 */ - -undefined4 __cdecl FUN_00442010(int param_1) - -{ - FUN_00435e48(param_1); - return 1; -} - - - -/* @0044202c file=? name=FUN_0044202c */ - -void __cdecl FUN_0044202c(int *param_1,int param_2) - -{ - (*(code *)**(undefined4 **)param_1[0x13])((undefined4 *)param_1[0x13],param_2); - FUN_00435e70(param_1,param_2); - return; -} - - - -/* @00442054 file=? name=FUN_00442054 */ - -void __cdecl FUN_00442054(int param_1) - -{ - (**(code **)(**(int **)(param_1 + 0x4c) + 8))(*(int **)(param_1 + 0x4c)); - return; -} - - - -/* @00442068 file=? name=FUN_00442068 */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -void __cdecl FUN_00442068(int param_1,int *param_2,uint *param_3) - -{ - bool bVar1; - undefined3 extraout_var; - undefined4 *puVar2; - int iVar3; - float10 fVar4; - float local_c; - float local_8; - - bVar1 = FUN_00438348(param_2[9],*(int *)(param_1 + 0x4c)); - if (CONCAT31(extraout_var,bVar1) == 0) { - iVar3 = param_2[0x1b]; - fVar4 = (float10)(**(code **)(*param_2 + 0x1c))(param_2); - local_8 = (float)fVar4; - } - else { - if (*(int *)(*(int *)(param_2[10] + 0xc) + 0x10) == 0) { - return; - } - iVar3 = param_2[0x1b]; - local_8 = 0.0; - } - if (((param_3[3] != 1) || (*(int *)(*(int *)(param_2[10] + 0xc) + 0x10) != 0)) || - (_DAT_004e8638 <= local_8)) { - local_c = (_DAT_00442130 - (float)iVar3) - local_8; - puVar2 = FUN_00402f74(0x4edaf0); - if (puVar2 == (undefined4 *)0x0) { - puVar2 = (undefined4 *)0x0; - } - else { - puVar2 = FUN_00442330(puVar2,param_2,param_3); - } - (**(code **)(*(int *)(param_1 + 0x50) + 8))(param_1 + 0x50,puVar2,&local_c); - } - return; -} - - - -/* @00442134 file=? name=FUN_00442134 */ - -undefined4 __cdecl FUN_00442134(int param_1) - -{ - undefined4 *puVar1; - int iVar2; - int iVar3; - undefined4 uVar4; - int local_18 [5]; - - FUN_00436f9c(local_18,param_1 + 0x50); - puVar1 = (undefined4 *)(**(code **)(local_18[0] + 0x30))(local_18); - if (puVar1 == (undefined4 *)0x0) { - uVar4 = 0; - FUN_00436ff9(local_18,2); - } - else { - iVar3 = puVar1[3]; - iVar2 = FUN_00417ab4((int)(puVar1 + 4)); - FUN_00419bbc(iVar2,iVar3); - if (puVar1 != (undefined4 *)0x0) { - (**(code **)*puVar1)(puVar1,3); - } - uVar4 = 1; - FUN_00436ff9(local_18,2); - } - return uVar4; -} - - - -/* @004421b4 file=? name=FUN_004421b4 */ - -void __cdecl FUN_004421b4(int param_1,int param_2) - -{ - int iVar1; - int iVar2; - undefined4 *puVar3; - int local_18 [5]; - - FUN_00436f9c(local_18,param_1 + 0x50); - while( true ) { - puVar3 = (undefined4 *)(**(code **)(local_18[0] + 0x28))(local_18); - if (puVar3 == (undefined4 *)0x0) break; - iVar1 = FUN_00417ab4((int)(puVar3 + 4)); - if (param_2 == iVar1) { - if (*(int *)(puVar3[3] + 0xc) == 2) { - iVar1 = puVar3[3]; - iVar2 = FUN_00417ab4((int)(puVar3 + 4)); - FUN_00419bbc(iVar2,iVar1); - if (puVar3 != (undefined4 *)0x0) { - (**(code **)*puVar3)(puVar3,3); - } - } - else if (puVar3 != (undefined4 *)0x0) { - (**(code **)*puVar3)(puVar3,3); - } - } - } - FUN_00436ff9(local_18,2); - return; -} - - - -/* @00442248 file=? name=FUN_00442248 */ - -undefined4 * FUN_00442248(void) - -{ - undefined4 *puVar1; - - puVar1 = (undefined4 *)FUN_00402298(0x50); - if (puVar1 == (undefined4 *)0x0) { - puVar1 = (undefined4 *)0x0; - } - else { - puVar1 = FUN_00436b1c(puVar1); - } - return puVar1; -} - - - -/* @00442268 file=? name=FUN_00442268 */ - -void __cdecl FUN_00442268(int param_1,int *param_2,int param_3,int param_4) - -{ - int *piVar1; - undefined4 *puVar2; - undefined4 uVar3; - int iVar4; - undefined4 local_6c [26]; - - piVar1 = (int *)FUN_00407064(*(int *)(DAT_004efc94 + 0x68),param_4,3); - if (piVar1 != (int *)0x0) { - puVar2 = (undefined4 *)FUN_00407064(*(int *)(DAT_004efc94 + 0x68),*piVar1,1); - if (puVar2 != (undefined4 *)0x0) { - iVar4 = puVar2[1]; - puVar2[1] = puVar2[1] + 1; - if (iVar4 == 0) { - FUN_00406cd0((int)puVar2); - } - iVar4 = piVar1[1]; - piVar1[1] = piVar1[1] + 1; - if (iVar4 == 0) { - FUN_00406cd0((int)piVar1); - } - uVar3 = FUN_00417ab4(param_1 + 0x40); - iVar4 = (**(code **)(*param_2 + 0x28))(param_2,uVar3); - uVar3 = 4; - if (iVar4 != 0) { - uVar3 = 3; - } - iVar4 = FUN_0041dbd0(param_3,uVar3); - FUN_00437268(local_6c,*puVar2,(int)param_2,iVar4); - FUN_004371c8((int)local_6c); - puVar2[1] = puVar2[1] + -1; - piVar1[1] = piVar1[1] + -1; - } - } - return; -} - - - -/* @00442330 file=? name=FUN_00442330 */ - -undefined4 * __cdecl FUN_00442330(undefined4 *param_1,undefined4 param_2,uint *param_3) - -{ - undefined4 uVar1; - - FUN_004178cc(param_1,2); - *param_1 = &PTR_FUN_004edb68; - FUN_004425fa(param_1 + 4,param_1); - uVar1 = FUN_004022b0(*param_3 + 3 & 0xfffffffc); - param_1[3] = uVar1; - FUN_004d4918((undefined4 *)param_1[3],param_3,*param_3); - (**(code **)(param_1[4] + 4))(param_1 + 4,param_2); - return param_1; -} - - - -/* @00442398 file=? name=FUN_00442398 */ - -void __cdecl FUN_00442398(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_004edb68; - FUN_004022d0((int *)param_1[3]); - FUN_00442619(param_1 + 4,2); - FUN_0041790c(param_1,0); - if ((param_2 & 1) != 0) { - FUN_00402f98(0x4edaf0,param_1); - } - } - return; -} - - - -/* @004423e8 file=? name=FUN_004423e8 */ - -void __cdecl FUN_004423e8(undefined4 *param_1) - -{ - if (param_1 != (undefined4 *)0x0) { - (**(code **)*param_1)(param_1,3); - } - return; -} - - - -/* @0044242c file=? name=FUN_0044242c */ - -undefined4 * __cdecl FUN_0044242c(undefined4 *param_1,undefined4 param_2,undefined4 param_3) - -{ - FUN_004186ac(param_1,param_2,param_3); - *param_1 = &PTR_FUN_004edb4c; - return param_1; -} - - - -/* @0044244f file=? name=FUN_0044244f */ - -void __cdecl FUN_0044244f(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_004edb4c; - FUN_004186dc(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004425af(param_1); - } - } - return; -} - - - -/* @0044247b file=? name=FUN_0044247b */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -undefined4 __cdecl FUN_0044247b(undefined4 param_1,int param_2,int param_3) - -{ - undefined4 uVar1; - float10 fVar2; - - fVar2 = FUN_004dcd00((double)(*(float *)(param_2 + 0x1c) - *(float *)(param_3 + 0x1c))); - if ((float10)_DAT_004424eb < fVar2) { - if (*(float *)(param_2 + 0x1c) <= *(float *)(param_3 + 0x1c)) { - uVar1 = 0xffffffff; - } - else { - uVar1 = 1; - } - } - else { - uVar1 = 0; - } - return uVar1; -} - - - -/* @004425af file=? name=FUN_004425af */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -void __cdecl FUN_004425af(undefined4 *param_1) - -{ - FUN_00402f98((int)DAT_004edb3c,param_1); - _DAT_004edb40 = _DAT_004edb40 + -1; - if (_DAT_004edb40 == 0) { - if (DAT_004edb3c != (int *)0x0) { - FUN_00402c28(DAT_004edb3c,0); - FUN_004022d0(DAT_004edb3c); - } - DAT_004edb3c = (int *)0x0; - } - return; -} - - - -/* @004425fa file=? name=FUN_004425fa */ - -undefined4 * __cdecl FUN_004425fa(undefined4 *param_1,undefined4 param_2) - -{ - FUN_004179d4(param_1,param_2); - *param_1 = &PTR_FUN_004edb44; - return param_1; -} - - - -/* @00442619 file=? name=FUN_00442619 */ - -void __cdecl FUN_00442619(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_004edb44; - FUN_004179f8(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @00442645 file=? name=FUN_00442645 */ - -undefined4 * __cdecl FUN_00442645(undefined4 param_1,int param_2,undefined4 *param_3) - -{ - undefined4 *puVar1; - - puVar1 = (undefined4 *)FUN_004426e5(); - if (puVar1 == (undefined4 *)0x0) { - puVar1 = (undefined4 *)0x0; - } - else { - puVar1 = FUN_00442684(puVar1,param_1,param_2,param_3); - } - return puVar1; -} - - - -/* @00442675 file=? name=FUN_00442675 */ - -void __cdecl FUN_00442675(int param_1) - -{ - FUN_00442134(param_1); - return; -} - - - -/* @00442684 file=? name=FUN_00442684 */ - -undefined4 * __cdecl -FUN_00442684(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 *param_4) - -{ - FUN_004185bc(param_1,param_2,param_3); - *param_1 = &PTR_FUN_004edbcc; - param_1[7] = 0; - param_1[7] = *param_4; - return param_1; -} - - - -/* @004426b9 file=? name=FUN_004426b9 */ - -void __cdecl FUN_004426b9(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_004edbcc; - FUN_004185ec(param_1,0); - if ((param_2 & 1) != 0) { - FUN_00442735(param_1); - } - } - return; -} - - - -/* @004426e5 file=? name=FUN_004426e5 */ - -void FUN_004426e5(void) - -{ - int iVar1; - undefined4 *puVar2; - - iVar1 = DAT_004edbc8; - DAT_004edbc8 = DAT_004edbc8 + 1; - puVar2 = DAT_004edbc4; - if ((iVar1 == 0) && (puVar2 = (undefined4 *)FUN_00402298(0x28), puVar2 != (undefined4 *)0x0)) { - FUN_00402b98(puVar2,0x20,100,100,s_VChainLinkOf_004edb2d); - } - DAT_004edbc4 = puVar2; - FUN_00402f74((int)DAT_004edbc4); - return; -} - - - -/* @00442735 file=? name=FUN_00442735 */ - -void __cdecl FUN_00442735(undefined4 *param_1) - -{ - FUN_00402f98((int)DAT_004edbc4,param_1); - DAT_004edbc8 = DAT_004edbc8 + -1; - if (DAT_004edbc8 == 0) { - if (DAT_004edbc4 != (int *)0x0) { - FUN_00402c28(DAT_004edbc4,0); - FUN_004022d0(DAT_004edbc4); - } - DAT_004edbc4 = (int *)0x0; - } - return; -} - - - -/* @00442780 file=? name=FUN_00442780 */ - -undefined4 * __cdecl FUN_00442780(undefined4 *param_1,char *param_2,undefined4 param_3) - -{ - char cVar1; - uint uVar2; - uint uVar3; - char *pcVar4; - char *pcVar5; - - FUN_00415e90(param_1,0x40); - *param_1 = &PTR_FUN_004edc6c; - uVar2 = 0xffffffff; - do { - pcVar4 = param_2; - if (uVar2 == 0) break; - uVar2 = uVar2 - 1; - pcVar4 = param_2 + 1; - cVar1 = *param_2; - param_2 = pcVar4; - } while (cVar1 != '\0'); - uVar2 = ~uVar2; - pcVar4 = pcVar4 + -uVar2; - pcVar5 = (char *)(param_1 + 3); - for (uVar3 = uVar2 >> 2; uVar3 != 0; uVar3 = uVar3 - 1) { - *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4; - pcVar4 = pcVar4 + 4; - pcVar5 = pcVar5 + 4; - } - for (uVar2 = uVar2 & 3; uVar2 != 0; uVar2 = uVar2 - 1) { - *pcVar5 = *pcVar4; - pcVar4 = pcVar4 + 1; - pcVar5 = pcVar5 + 1; - } - param_1[0xb] = 0; - param_1[0xc] = 1; - param_1[0xd] = param_3; - return param_1; -} - - - -/* @004427dc file=? name=FUN_004427dc */ - -undefined4 * __cdecl FUN_004427dc(undefined4 *param_1,undefined4 param_2,undefined4 param_3) - -{ - FUN_00415e90(param_1,0x40); - *param_1 = &PTR_FUN_004edc6c; - *(undefined1 *)(param_1 + 3) = 0; - param_1[0xb] = param_2; - param_1[0xc] = 1; - param_1[0xd] = param_3; - return param_1; -} - - - -/* @00442810 file=? name=FUN_00442810 */ - -void __cdecl FUN_00442810(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_004edc6c; - FUN_00415ed8(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - diff --git a/reference/decomp/all/part_006.c b/reference/decomp/all/part_006.c index 82e1812..6efe4b2 100644 --- a/reference/decomp/all/part_006.c +++ b/reference/decomp/all/part_006.c @@ -1,3 +1,1234 @@ +/* @00441395 file=? name=FUN_00441395 */ + +void __cdecl FUN_00441395(undefined4 *param_1,undefined4 *param_2) + +{ + if (param_2 == param_1 + 9) { + if (param_1 != (undefined4 *)0x0) { + (**(code **)*param_1)(param_1,3); + return; + } + } + else { + FUN_00417938(); + } + return; +} + + + +/* @004413c5 file=? name=FUN_004413c5 */ + +void __cdecl FUN_004413c5(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004ed714; + FUN_0042864c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004413f1 file=? name=FUN_004413f1 */ + +undefined4 * __cdecl FUN_004413f1(undefined4 *param_1,int *param_2,int param_3) + +{ + undefined1 local_8 [4]; + + FUN_00428678(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004ed714; + (**(code **)(*param_2 + 0x1c))(param_2,local_8,4); + FUN_00441502((int)param_1); + return param_1; +} + + + +/* @00441430 file=munga/watcher.hpp name=FUN_00441430 */ + +void __cdecl FUN_00441430(int *param_1,int param_2) + +{ + char *pcVar1; + int local_8; + + FUN_0042887c(param_1,param_2); + pcVar1 = (char *)FUN_00403ad0(param_2,s_dump_value_004ecf66); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004ecf71,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_dump_value_004ecf96,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004ecfa1,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004ecfa3, + s_d__tesla_bt_munga_watcher_hpp_004ecfe3,0x108); + } + FUN_00407ae0(pcVar1,&local_8); + (**(code **)(*param_1 + 0x20))(param_1,&local_8,4); + return; +} + + + +/* @004414d8 file=? name=FUN_004414d8 */ + +void __cdecl FUN_004414d8(int *param_1) + +{ + FUN_00441512(param_1); + return; +} + + + +/* @004414e7 file=? name=FUN_004414e7 */ + +void __cdecl FUN_004414e7(int *param_1) + +{ + if (*(int *)param_1[5] != param_1[8]) { + FUN_00441512(param_1); + } + return; +} + + + +/* @00441502 file=? name=FUN_00441502 */ + +void __cdecl FUN_00441502(int param_1) + +{ + *(undefined4 *)(param_1 + 0x20) = **(undefined4 **)(param_1 + 0x14); + return; +} + + + +/* @00441512 file=? name=FUN_00441512 */ + +void __cdecl FUN_00441512(int *param_1) + +{ + FUN_00441502((int)param_1); + param_1[6] = 1; + if (param_1[7] != 0) { + (**(code **)(*param_1 + 0x18))(param_1); + } + return; +} + + + +/* @00441537 file=? name=FUN_00441537 */ + +void FUN_00441537(void) + +{ + return; +} + + + +/* @0044153c file=? name=FUN_0044153c */ + +undefined4 * __cdecl FUN_0044153c(undefined4 *param_1,int *param_2,int param_3) + +{ + FUN_00441287(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004ed6f4; + (**(code **)(*(int *)(param_1[4] + 0x80) + 4))(param_1[4] + 0x80,param_1); + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0xe,4); + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0xf,4); + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0xd,4); + param_1[0xc] = param_1[8]; + return param_1; +} + + + +/* @004415b5 file=? name=FUN_004415b5 */ + +void __cdecl FUN_004415b5(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004ed6f4; + FUN_004412d8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004415e1 file=munga/audwthr.hpp name=FUN_004415e1 */ + +void __cdecl FUN_004415e1(int *param_1,int param_2) + +{ + char *pcVar1; + int iVar2; + int *piVar3; + int local_10; + float local_c; + int local_8; + + FUN_00441312(param_1,param_2); + pcVar1 = (char *)FUN_00403ad0(param_2,s_control_ID_004ed001); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004ed00c,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_control_ID_004ed031,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004ed03c,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004ed03e, + s_d__tesla_bt_munga_audwthr_hpp_004ed07e,0x39d); + } + FUN_00407ae0(pcVar1,&local_8); + (**(code **)(*param_1 + 0x20))(param_1,&local_8,4); + pcVar1 = (char *)FUN_00403ad0(param_2,s_control_value_004ed09c); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004ed0aa,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_control_value_004ed0cf,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004ed0dd,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004ed0df, + s_d__tesla_bt_munga_audwthr_hpp_004ed11f,0x3a0); + } + FUN_00407b78(pcVar1,&local_c); + (**(code **)(*param_1 + 0x20))(param_1,&local_c,4); + local_10 = 0; + iVar2 = FUN_00403ad0(param_2,s_delta_trigger_004ed13d); + if (iVar2 != 0) { + piVar3 = &local_10; + pcVar1 = (char *)FUN_00403ad0(param_2,s_delta_trigger_004ed14b); + FUN_00407ae0(pcVar1,piVar3); + } + (**(code **)(*param_1 + 0x20))(param_1,&local_10,4); + return; +} + + + +/* @00441756 file=? name=FUN_00441756 */ + +void __cdecl FUN_00441756(int param_1) + +{ + int iVar1; + int *piVar2; + + iVar1 = *(int *)(param_1 + 0x20) - *(int *)(param_1 + 0x30); + if (iVar1 < 1) { + iVar1 = -iVar1; + } + if (*(int *)(param_1 + 0x34) <= iVar1) { + *(int *)(param_1 + 0x30) = *(int *)(param_1 + 0x20); + piVar2 = (int *)FUN_00417ab4(param_1 + 0x24); + (**(code **)(*piVar2 + 0x18)) + (piVar2,*(undefined4 *)(param_1 + 0x38),*(undefined4 *)(param_1 + 0x3c)); + } + return; +} + + + +/* @0044179a file=? name=FUN_0044179a */ + +undefined4 * __cdecl FUN_0044179a(undefined4 *param_1,int *param_2,int param_3) + +{ + FUN_00441287(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004ed6d0; + (**(code **)(*(int *)(param_1[4] + 0x80) + 4))(param_1[4] + 0x80,param_1); + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0xc,4); + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0xd,4); + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0xe,4); + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0xf,4); + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0x10,4); + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0x11,4); + param_1[0x12] = 0; + return param_1; +} + + + +/* @00441845 file=? name=FUN_00441845 */ + +void __cdecl FUN_00441845(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004ed6d0; + FUN_004412d8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00441871 file=munga/audwthr.hpp name=FUN_00441871 */ + +void __cdecl FUN_00441871(int *param_1,int param_2) + +{ + char *pcVar1; + float local_1c; + float local_18; + int local_14; + int local_10; + int local_c; + float local_8; + + FUN_00441312(param_1,param_2); + pcVar1 = (char *)FUN_00403ad0(param_2,s_attribute_value_threshold_004ed159); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004ed173,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_attribute_value_threshold_004ed198,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004ed1b2,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004ed1b4, + s_d__tesla_bt_munga_audwthr_hpp_004ed1f4,0x16b); + } + FUN_00407b78(pcVar1,&local_8); + (**(code **)(*param_1 + 0x20))(param_1,&local_8,4); + pcVar1 = (char *)FUN_00403ad0(param_2,s_inverse_trigger_004ed212); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004ed222,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_inverse_trigger_004ed247,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004ed257,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004ed259, + s_d__tesla_bt_munga_audwthr_hpp_004ed299,0x16e); + } + FUN_00407ae0(pcVar1,&local_c); + (**(code **)(*param_1 + 0x20))(param_1,&local_c,4); + pcVar1 = (char *)FUN_00403ad0(param_2,s_control_ID_on_004ed2b7); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004ed2c5,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_control_ID_on_004ed2ea,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004ed2f8,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004ed2fa, + s_d__tesla_bt_munga_audwthr_hpp_004ed33a,0x171); + } + FUN_00407ae0(pcVar1,&local_10); + (**(code **)(*param_1 + 0x20))(param_1,&local_10,4); + pcVar1 = (char *)FUN_00403ad0(param_2,s_control_ID_off_004ed358); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004ed367,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_control_ID_off_004ed38c,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004ed39b,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004ed39d, + s_d__tesla_bt_munga_audwthr_hpp_004ed3dd,0x174); + } + FUN_00407ae0(pcVar1,&local_14); + (**(code **)(*param_1 + 0x20))(param_1,&local_14,4); + pcVar1 = (char *)FUN_00403ad0(param_2,s_control_value_on_004ed3fb); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004ed40c,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_control_value_on_004ed431,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004ed442,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004ed444, + s_d__tesla_bt_munga_audwthr_hpp_004ed484,0x177); + } + FUN_00407b78(pcVar1,&local_18); + (**(code **)(*param_1 + 0x20))(param_1,&local_18,4); + pcVar1 = (char *)FUN_00403ad0(param_2,s_control_value_off_004ed4a2); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004ed4b4,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_control_value_off_004ed4d9,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004ed4eb,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004ed4ed, + s_d__tesla_bt_munga_audwthr_hpp_004ed52d,0x17a); + } + FUN_00407b78(pcVar1,&local_1c); + (**(code **)(*param_1 + 0x20))(param_1,&local_1c,4); + return; +} + + + +/* @00441bb7 file=? name=FUN_00441bb7 */ + +void __cdecl FUN_00441bb7(int *param_1) + +{ + float fVar1; + int *piVar2; + float10 fVar3; + + fVar3 = (float10)(**(code **)(*param_1 + 0x20))(param_1,param_1 + 8); + fVar1 = (float)fVar3; + if (param_1[0x12] == 0) { + if (((param_1[0xd] == 0) && ((float)param_1[0xc] < fVar1)) || + ((param_1[0xd] != 0 && (fVar1 < (float)param_1[0xc])))) { + piVar2 = (int *)FUN_00417ab4((int)(param_1 + 9)); + (**(code **)(*piVar2 + 0x18))(piVar2,param_1[0xe],param_1[0x10]); + param_1[0x12] = 1; + } + } + else if (((param_1[0xd] == 0) && (fVar1 <= (float)param_1[0xc])) || + ((param_1[0xd] != 0 && ((float)param_1[0xc] <= fVar1)))) { + piVar2 = (int *)FUN_00417ab4((int)(param_1 + 9)); + (**(code **)(*piVar2 + 0x18))(piVar2,param_1[0xf],param_1[0x11]); + param_1[0x12] = 0; + } + return; +} + + + +/* @00441c64 file=munga/audwthr.hpp name=FUN_00441c64 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 FUN_00441c64(void) + +{ + FUN_0040385c(s_AudioTriggerOf__ExtractIntere_004ed54b,s_d__tesla_bt_munga_audwthr_hpp_004ed590, + 0x1bc); + return (float10)_DAT_00441c88; +} + + + +/* @00441c8c file=? name=FUN_00441c8c */ + +undefined4 * __cdecl FUN_00441c8c(undefined4 *param_1,int *param_2,int param_3) + +{ + int local_8; + + FUN_00441e04(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004ed6b0; + FUN_0043acac(param_1 + 0x1d,param_1); + FUN_0043afbc(param_2,&local_8); + (**(code **)(param_1[0x1d] + 4))(param_1 + 0x1d,local_8); + return param_1; +} + + + +/* @00441cdd file=? name=FUN_00441cdd */ + +void __cdecl FUN_00441cdd(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004ed6b0; + FUN_0043accb(param_1 + 0x1d,2); + FUN_00441dca(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00441d17 file=? name=FUN_00441d17 */ + +void __cdecl FUN_00441d17(int *param_1,int param_2) + +{ + uint *puVar1; + uint *local_8; + + FUN_00441e4d(param_1,param_2); + puVar1 = (uint *)FUN_00402298(0x10); + if (puVar1 == (uint *)0x0) { + local_8 = (uint *)0x0; + } + else { + local_8 = FUN_00402460(puVar1,s_audio_component_004ed5ae); + } + local_8[3] = local_8[3] + 1; + FUN_00417240(param_1,param_2,(int *)&local_8); + puVar1 = local_8 + 3; + *puVar1 = *puVar1 - 1; + if (*puVar1 == 0) { + FUN_004024d8((int *)local_8,3); + } + return; +} + + + +/* @00441d86 file=? name=FUN_00441d86 */ + +undefined4 __cdecl FUN_00441d86(int param_1) + +{ + FUN_00428a2c(param_1); + return 1; +} + + + +/* @00441d9a file=? name=FUN_00441d9a */ + +void __cdecl FUN_00441d9a(undefined4 *param_1,undefined4 *param_2) + +{ + if (param_2 == param_1 + 0x1d) { + if (param_1 != (undefined4 *)0x0) { + (**(code **)*param_1)(param_1,3); + return; + } + } + else { + FUN_00417938(); + } + return; +} + + + +/* @00441dca file=? name=FUN_00441dca */ + +void __cdecl FUN_00441dca(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004ed690; + FUN_0041baa4(param_1 + 8,2); + FUN_0042864c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00441e04 file=? name=FUN_00441e04 */ + +undefined4 * __cdecl FUN_00441e04(undefined4 *param_1,int *param_2,int param_3) + +{ + undefined1 local_8 [4]; + + FUN_00428678(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004ed690; + FUN_0041b994(param_1 + 8); + (**(code **)(*param_2 + 0x1c))(param_2,local_8,4); + FUN_00441f29((int)param_1); + return param_1; +} + + + +/* @00441e4d file=munga/watcher.hpp name=FUN_00441e4d */ + +void __cdecl FUN_00441e4d(int *param_1,int param_2) + +{ + char *pcVar1; + int local_8; + + FUN_0042887c(param_1,param_2); + pcVar1 = (char *)FUN_00403ad0(param_2,s_dump_value_004ed5be); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004ed5c9,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_dump_value_004ed5ee,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004ed5f9,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004ed5fb, + s_d__tesla_bt_munga_watcher_hpp_004ed63b,0x108); + } + FUN_00407ae0(pcVar1,&local_8); + (**(code **)(*param_1 + 0x20))(param_1,&local_8,4); + return; +} + + + +/* @00441ef5 file=? name=FUN_00441ef5 */ + +void __cdecl FUN_00441ef5(int *param_1) + +{ + FUN_00441f41(param_1); + return; +} + + + +/* @00441f04 file=? name=FUN_00441f04 */ + +void __cdecl FUN_00441f04(int *param_1) + +{ + int iVar1; + + iVar1 = FUN_0041bba8((int)(param_1 + 8),param_1[5]); + if (iVar1 == 0) { + FUN_00441f41(param_1); + } + return; +} + + + +/* @00441f29 file=? name=FUN_00441f29 */ + +void __cdecl FUN_00441f29(int param_1) + +{ + FUN_0041bb88(param_1 + 0x20,*(int *)(param_1 + 0x14)); + return; +} + + + +/* @00441f41 file=? name=FUN_00441f41 */ + +void __cdecl FUN_00441f41(int *param_1) + +{ + FUN_00441f29((int)param_1); + param_1[6] = 1; + if (param_1[7] != 0) { + (**(code **)(*param_1 + 0x18))(param_1); + } + return; +} + + + +/* @00441f66 file=? name=FUN_00441f66 */ + +void FUN_00441f66(void) + +{ + return; +} + + + +/* @00441f6c file=? name=FUN_00441f6c */ + +undefined4 * __cdecl FUN_00441f6c(undefined4 *param_1,undefined4 param_2) + +{ + FUN_00435d30(param_1,param_2,DAT_004e823c,1,1,1,0x1e,&DAT_004e82f8); + *param_1 = &PTR_FUN_004edb74; + FUN_0044242c(param_1 + 0x14,0,0); + param_1[0x13] = 0; + return param_1; +} + + + +/* @00441fb4 file=? name=FUN_00441fb4 */ + +void __cdecl FUN_00441fb4(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004edb74; + FUN_00436b9c((int *)param_1[0x13],3); + FUN_0044244f(param_1 + 0x14,2); + FUN_00435df8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00441ffc file=? name=FUN_00441ffc */ + +void __cdecl FUN_00441ffc(int *param_1) + +{ + int iVar1; + + iVar1 = (**(code **)(*param_1 + 0x4c))(param_1); + param_1[0x13] = iVar1; + return; +} + + + +/* @00442010 file=? name=FUN_00442010 */ + +undefined4 __cdecl FUN_00442010(int param_1) + +{ + FUN_00435e48(param_1); + return 1; +} + + + +/* @0044202c file=? name=FUN_0044202c */ + +void __cdecl FUN_0044202c(int *param_1,int param_2) + +{ + (*(code *)**(undefined4 **)param_1[0x13])((undefined4 *)param_1[0x13],param_2); + FUN_00435e70(param_1,param_2); + return; +} + + + +/* @00442054 file=? name=FUN_00442054 */ + +void __cdecl FUN_00442054(int param_1) + +{ + (**(code **)(**(int **)(param_1 + 0x4c) + 8))(*(int **)(param_1 + 0x4c)); + return; +} + + + +/* @00442068 file=? name=FUN_00442068 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_00442068(int param_1,int *param_2,uint *param_3) + +{ + bool bVar1; + undefined3 extraout_var; + undefined4 *puVar2; + int iVar3; + float10 fVar4; + float local_c; + float local_8; + + bVar1 = FUN_00438348(param_2[9],*(int *)(param_1 + 0x4c)); + if (CONCAT31(extraout_var,bVar1) == 0) { + iVar3 = param_2[0x1b]; + fVar4 = (float10)(**(code **)(*param_2 + 0x1c))(param_2); + local_8 = (float)fVar4; + } + else { + if (*(int *)(*(int *)(param_2[10] + 0xc) + 0x10) == 0) { + return; + } + iVar3 = param_2[0x1b]; + local_8 = 0.0; + } + if (((param_3[3] != 1) || (*(int *)(*(int *)(param_2[10] + 0xc) + 0x10) != 0)) || + (_DAT_004e8638 <= local_8)) { + local_c = (_DAT_00442130 - (float)iVar3) - local_8; + puVar2 = FUN_00402f74(0x4edaf0); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_00442330(puVar2,param_2,param_3); + } + (**(code **)(*(int *)(param_1 + 0x50) + 8))(param_1 + 0x50,puVar2,&local_c); + } + return; +} + + + +/* @00442134 file=? name=FUN_00442134 */ + +undefined4 __cdecl FUN_00442134(int param_1) + +{ + undefined4 *puVar1; + int iVar2; + int iVar3; + undefined4 uVar4; + int local_18 [5]; + + FUN_00436f9c(local_18,param_1 + 0x50); + puVar1 = (undefined4 *)(**(code **)(local_18[0] + 0x30))(local_18); + if (puVar1 == (undefined4 *)0x0) { + uVar4 = 0; + FUN_00436ff9(local_18,2); + } + else { + iVar3 = puVar1[3]; + iVar2 = FUN_00417ab4((int)(puVar1 + 4)); + FUN_00419bbc(iVar2,iVar3); + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + uVar4 = 1; + FUN_00436ff9(local_18,2); + } + return uVar4; +} + + + +/* @004421b4 file=? name=FUN_004421b4 */ + +void __cdecl FUN_004421b4(int param_1,int param_2) + +{ + int iVar1; + int iVar2; + undefined4 *puVar3; + int local_18 [5]; + + FUN_00436f9c(local_18,param_1 + 0x50); + while( true ) { + puVar3 = (undefined4 *)(**(code **)(local_18[0] + 0x28))(local_18); + if (puVar3 == (undefined4 *)0x0) break; + iVar1 = FUN_00417ab4((int)(puVar3 + 4)); + if (param_2 == iVar1) { + if (*(int *)(puVar3[3] + 0xc) == 2) { + iVar1 = puVar3[3]; + iVar2 = FUN_00417ab4((int)(puVar3 + 4)); + FUN_00419bbc(iVar2,iVar1); + if (puVar3 != (undefined4 *)0x0) { + (**(code **)*puVar3)(puVar3,3); + } + } + else if (puVar3 != (undefined4 *)0x0) { + (**(code **)*puVar3)(puVar3,3); + } + } + } + FUN_00436ff9(local_18,2); + return; +} + + + +/* @00442248 file=? name=FUN_00442248 */ + +undefined4 * FUN_00442248(void) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00402298(0x50); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_00436b1c(puVar1); + } + return puVar1; +} + + + +/* @00442268 file=? name=FUN_00442268 */ + +void __cdecl FUN_00442268(int param_1,int *param_2,int param_3,int param_4) + +{ + int *piVar1; + undefined4 *puVar2; + undefined4 uVar3; + int iVar4; + undefined4 local_6c [26]; + + piVar1 = (int *)FUN_00407064(*(int *)(DAT_004efc94 + 0x68),param_4,3); + if (piVar1 != (int *)0x0) { + puVar2 = (undefined4 *)FUN_00407064(*(int *)(DAT_004efc94 + 0x68),*piVar1,1); + if (puVar2 != (undefined4 *)0x0) { + iVar4 = puVar2[1]; + puVar2[1] = puVar2[1] + 1; + if (iVar4 == 0) { + FUN_00406cd0((int)puVar2); + } + iVar4 = piVar1[1]; + piVar1[1] = piVar1[1] + 1; + if (iVar4 == 0) { + FUN_00406cd0((int)piVar1); + } + uVar3 = FUN_00417ab4(param_1 + 0x40); + iVar4 = (**(code **)(*param_2 + 0x28))(param_2,uVar3); + uVar3 = 4; + if (iVar4 != 0) { + uVar3 = 3; + } + iVar4 = FUN_0041dbd0(param_3,uVar3); + FUN_00437268(local_6c,*puVar2,(int)param_2,iVar4); + FUN_004371c8((int)local_6c); + puVar2[1] = puVar2[1] + -1; + piVar1[1] = piVar1[1] + -1; + } + } + return; +} + + + +/* @00442330 file=? name=FUN_00442330 */ + +undefined4 * __cdecl FUN_00442330(undefined4 *param_1,undefined4 param_2,uint *param_3) + +{ + undefined4 uVar1; + + FUN_004178cc(param_1,2); + *param_1 = &PTR_FUN_004edb68; + FUN_004425fa(param_1 + 4,param_1); + uVar1 = FUN_004022b0(*param_3 + 3 & 0xfffffffc); + param_1[3] = uVar1; + FUN_004d4918((undefined4 *)param_1[3],param_3,*param_3); + (**(code **)(param_1[4] + 4))(param_1 + 4,param_2); + return param_1; +} + + + +/* @00442398 file=? name=FUN_00442398 */ + +void __cdecl FUN_00442398(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004edb68; + FUN_004022d0((int *)param_1[3]); + FUN_00442619(param_1 + 4,2); + FUN_0041790c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_00402f98(0x4edaf0,param_1); + } + } + return; +} + + + +/* @004423e8 file=? name=FUN_004423e8 */ + +void __cdecl FUN_004423e8(undefined4 *param_1) + +{ + if (param_1 != (undefined4 *)0x0) { + (**(code **)*param_1)(param_1,3); + } + return; +} + + + +/* @0044242c file=? name=FUN_0044242c */ + +undefined4 * __cdecl FUN_0044242c(undefined4 *param_1,undefined4 param_2,undefined4 param_3) + +{ + FUN_004186ac(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004edb4c; + return param_1; +} + + + +/* @0044244f file=? name=FUN_0044244f */ + +void __cdecl FUN_0044244f(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004edb4c; + FUN_004186dc(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004425af(param_1); + } + } + return; +} + + + +/* @0044247b file=? name=FUN_0044247b */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl FUN_0044247b(undefined4 param_1,int param_2,int param_3) + +{ + undefined4 uVar1; + float10 fVar2; + + fVar2 = FUN_004dcd00((double)(*(float *)(param_2 + 0x1c) - *(float *)(param_3 + 0x1c))); + if ((float10)_DAT_004424eb < fVar2) { + if (*(float *)(param_2 + 0x1c) <= *(float *)(param_3 + 0x1c)) { + uVar1 = 0xffffffff; + } + else { + uVar1 = 1; + } + } + else { + uVar1 = 0; + } + return uVar1; +} + + + +/* @004424ef file=? name=FUN_004424ef */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl FUN_004424ef(undefined4 param_1,float *param_2,int param_3) + +{ + undefined4 uVar1; + float10 fVar2; + + fVar2 = FUN_004dcd00((double)(*param_2 - *(float *)(param_3 + 0x1c))); + if ((float10)_DAT_0044255b < fVar2) { + if (*param_2 <= *(float *)(param_3 + 0x1c)) { + uVar1 = 0xffffffff; + } + else { + uVar1 = 1; + } + } + else { + uVar1 = 0; + } + return uVar1; +} + + + +/* @004425af file=? name=FUN_004425af */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004425af(undefined4 *param_1) + +{ + FUN_00402f98((int)DAT_004edb3c,param_1); + _DAT_004edb40 = _DAT_004edb40 + -1; + if (_DAT_004edb40 == 0) { + if (DAT_004edb3c != (int *)0x0) { + FUN_00402c28(DAT_004edb3c,0); + FUN_004022d0(DAT_004edb3c); + } + DAT_004edb3c = (int *)0x0; + } + return; +} + + + +/* @004425fa file=? name=FUN_004425fa */ + +undefined4 * __cdecl FUN_004425fa(undefined4 *param_1,undefined4 param_2) + +{ + FUN_004179d4(param_1,param_2); + *param_1 = &PTR_FUN_004edb44; + return param_1; +} + + + +/* @00442619 file=? name=FUN_00442619 */ + +void __cdecl FUN_00442619(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004edb44; + FUN_004179f8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00442645 file=? name=FUN_00442645 */ + +undefined4 * __cdecl FUN_00442645(undefined4 param_1,int param_2,undefined4 *param_3) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_004426e5(); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_00442684(puVar1,param_1,param_2,param_3); + } + return puVar1; +} + + + +/* @00442675 file=? name=FUN_00442675 */ + +void __cdecl FUN_00442675(int param_1) + +{ + FUN_00442134(param_1); + return; +} + + + +/* @00442684 file=? name=FUN_00442684 */ + +undefined4 * __cdecl +FUN_00442684(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 *param_4) + +{ + FUN_004185bc(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004edbcc; + param_1[7] = 0; + param_1[7] = *param_4; + return param_1; +} + + + +/* @004426b9 file=? name=FUN_004426b9 */ + +void __cdecl FUN_004426b9(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004edbcc; + FUN_004185ec(param_1,0); + if ((param_2 & 1) != 0) { + FUN_00442735(param_1); + } + } + return; +} + + + +/* @004426e5 file=? name=FUN_004426e5 */ + +void FUN_004426e5(void) + +{ + int iVar1; + undefined4 *puVar2; + + iVar1 = DAT_004edbc8; + DAT_004edbc8 = DAT_004edbc8 + 1; + puVar2 = DAT_004edbc4; + if ((iVar1 == 0) && (puVar2 = (undefined4 *)FUN_00402298(0x28), puVar2 != (undefined4 *)0x0)) { + FUN_00402b98(puVar2,0x20,100,100,s_VChainLinkOf_004edb2d); + } + DAT_004edbc4 = puVar2; + FUN_00402f74((int)DAT_004edbc4); + return; +} + + + +/* @00442735 file=? name=FUN_00442735 */ + +void __cdecl FUN_00442735(undefined4 *param_1) + +{ + FUN_00402f98((int)DAT_004edbc4,param_1); + DAT_004edbc8 = DAT_004edbc8 + -1; + if (DAT_004edbc8 == 0) { + if (DAT_004edbc4 != (int *)0x0) { + FUN_00402c28(DAT_004edbc4,0); + FUN_004022d0(DAT_004edbc4); + } + DAT_004edbc4 = (int *)0x0; + } + return; +} + + + +/* @00442780 file=? name=FUN_00442780 */ + +undefined4 * __cdecl FUN_00442780(undefined4 *param_1,char *param_2,undefined4 param_3) + +{ + char cVar1; + uint uVar2; + uint uVar3; + char *pcVar4; + char *pcVar5; + + FUN_00415e90(param_1,0x40); + *param_1 = &PTR_FUN_004edc6c; + uVar2 = 0xffffffff; + do { + pcVar4 = param_2; + if (uVar2 == 0) break; + uVar2 = uVar2 - 1; + pcVar4 = param_2 + 1; + cVar1 = *param_2; + param_2 = pcVar4; + } while (cVar1 != '\0'); + uVar2 = ~uVar2; + pcVar4 = pcVar4 + -uVar2; + pcVar5 = (char *)(param_1 + 3); + for (uVar3 = uVar2 >> 2; uVar3 != 0; uVar3 = uVar3 - 1) { + *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4; + pcVar4 = pcVar4 + 4; + pcVar5 = pcVar5 + 4; + } + for (uVar2 = uVar2 & 3; uVar2 != 0; uVar2 = uVar2 - 1) { + *pcVar5 = *pcVar4; + pcVar4 = pcVar4 + 1; + pcVar5 = pcVar5 + 1; + } + param_1[0xb] = 0; + param_1[0xc] = 1; + param_1[0xd] = param_3; + return param_1; +} + + + +/* @004427dc file=? name=FUN_004427dc */ + +undefined4 * __cdecl FUN_004427dc(undefined4 *param_1,undefined4 param_2,undefined4 param_3) + +{ + FUN_00415e90(param_1,0x40); + *param_1 = &PTR_FUN_004edc6c; + *(undefined1 *)(param_1 + 3) = 0; + param_1[0xb] = param_2; + param_1[0xc] = 1; + param_1[0xd] = param_3; + return param_1; +} + + + +/* @00442810 file=? name=FUN_00442810 */ + +void __cdecl FUN_00442810(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004edc6c; + FUN_00415ed8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + /* @0044283c file=? name=FUN_0044283c */ undefined4 FUN_0044283c(void) @@ -2214,6 +3445,33 @@ void __cdecl FUN_00444720(int param_1,float param_2) +/* @00444764 file=? name=FUN_00444764 */ + +void __cdecl FUN_00444764(int param_1) + +{ + int iVar1; + char local_58 [80]; + float local_8; + + FUN_004dbb24(&DAT_00524e20,*(char **)(param_1 + 0x20),(char *)0x0); + for (iVar1 = FUN_004d4a78(*(char **)(param_1 + 0x20)); iVar1 < 0x20; iVar1 = iVar1 + 1) { + FUN_004dbb24(&DAT_00524e20,&DAT_004edffe,(char *)0x0); + } + if (*(int *)(param_1 + 0x44) < 1) { + FUN_004dbb24(&DAT_00524e20,s_never_ran__004ee011,(char *)0x0); + } + else { + local_8 = *(float *)(param_1 + 0x3c) / (float)*(int *)(param_1 + 0x44); + FUN_004d7f10(local_58,s__6d__6_4f__6_4f_004ee000); + FUN_004dbb24(&DAT_00524e20,local_58,(char *)0x0); + } + *(undefined4 *)(param_1 + 0x40) = 0; + return; +} + + + /* @00444818 file=? name=FUN_00444818 */ undefined4 * __cdecl @@ -5878,6 +7136,18 @@ undefined4 __cdecl FUN_00448468(int *param_1) +/* @00448538 file=? name=FUN_00448538 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 FUN_00448538(void) + +{ + return (float10)_DAT_00448544; +} + + + /* @00448548 file=? name=FUN_00448548 */ float10 __cdecl FUN_00448548(int param_1,int param_2,int param_3,int param_4) @@ -8493,1446 +9763,3 @@ FUN_0044ae2c(undefined4 *param_1,undefined4 param_2,undefined4 param_3,int param -/* @0044aeb0 file=? name=FUN_0044aeb0 */ - -undefined4 FUN_0044aeb0(void) - -{ - return 1; -} - - - -/* @0044aebc file=? name=FUN_0044aebc */ - -void __cdecl FUN_0044aebc(int param_1,char *param_2) - -{ - char cVar1; - int iVar2; - int *piVar3; - uint uVar4; - uint uVar5; - char *pcVar6; - char *pcVar7; - undefined8 uVar8; - uint *puVar9; - char local_54 [80]; - - FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s_GraphicsView__004ef4b6,(char *)0x0); - uVar4 = 0xffffffff; - do { - pcVar6 = param_2; - if (uVar4 == 0) break; - uVar4 = uVar4 - 1; - pcVar6 = param_2 + 1; - cVar1 = *param_2; - param_2 = pcVar6; - } while (cVar1 != '\0'); - uVar4 = ~uVar4; - pcVar6 = pcVar6 + -uVar4; - pcVar7 = local_54; - for (uVar5 = uVar4 >> 2; uVar5 != 0; uVar5 = uVar5 - 1) { - *(undefined4 *)pcVar7 = *(undefined4 *)pcVar6; - pcVar6 = pcVar6 + 4; - pcVar7 = pcVar7 + 4; - } - for (uVar4 = uVar4 & 3; uVar4 != 0; uVar4 = uVar4 - 1) { - *pcVar7 = *pcVar6; - pcVar6 = pcVar6 + 1; - pcVar7 = pcVar7 + 1; - } - FUN_004d49b8(local_54,&DAT_004ef4c5); - puVar9 = (uint *)(param_1 + 4); - FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s_areaWithinPort___004ef4c9,(char *)0x0); - piVar3 = (int *)FUN_00407d78(&DAT_00524e20,puVar9); - FUN_004dbb24(piVar3,&DAT_004ef4dd,(char *)0x0); - puVar9 = (uint *)(param_1 + 0x14); - FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s_origin___004ef4df,(char *)0x0); - piVar3 = (int *)FUN_00407f08(&DAT_00524e20,puVar9); - FUN_004dbb24(piVar3,&DAT_004ef4f3,(char *)0x0); - puVar9 = (uint *)(param_1 + 0x1c); - FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s_currentPosition___004ef4f5,(char *)0x0); - piVar3 = (int *)FUN_00407f08(&DAT_00524e20,puVar9); - FUN_004dbb24(piVar3,&DAT_004ef509,(char *)0x0); - uVar4 = *(uint *)(param_1 + 0x24); - FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s_currentFontID___004ef50b,(char *)0x0); - piVar3 = FUN_004db78c(&DAT_00524e20,uVar4); - FUN_004dbb24(piVar3,&DAT_004ef51f,(char *)0x0); - uVar4 = *(uint *)(param_1 + 0x28); - FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s_currentColor___004ef521,(char *)0x0); - piVar3 = FUN_004db78c(&DAT_00524e20,uVar4); - FUN_004dbb24(piVar3,&DAT_004ef535,(char *)0x0); - puVar9 = (uint *)(param_1 + 0x2c); - FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s_clippingRectangle___004ef537,(char *)0x0); - piVar3 = (int *)FUN_00407d78(&DAT_00524e20,puVar9); - FUN_004dbb24(piVar3,&DAT_004ef54b,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s_currentOperation___004ef54d,(char *)0x0); - iVar2 = *(int *)(param_1 + 0x3c); - if (iVar2 == 0) { - FUN_004dbb24(&DAT_00524e20,s_REPLACE_004ef56a,(char *)0x0); - } - else if (iVar2 == 1) { - FUN_004dbb24(&DAT_00524e20,&DAT_004ef561,(char *)0x0); - } - else if (iVar2 == 2) { - FUN_004dbb24(&DAT_00524e20,&DAT_004ef566,(char *)0x0); - } - else { - uVar4 = *(uint *)(param_1 + 0x3c); - FUN_004dbb24(&DAT_00524e20,s_Unsupported_type__004ef573,(char *)0x0); - piVar3 = FUN_004db78c(&DAT_00524e20,uVar4); - FUN_004dbb24(piVar3,&DAT_004ef585,(char *)0x0); - } - uVar4 = *(uint *)(param_1 + 0x40); - FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s_graphicsPort___004ef587,(char *)0x0); - uVar8 = FUN_004dbd4c(&DAT_00524e20,uVar4); - FUN_004dbb24((int *)uVar8,&DAT_004ef598,(char *)0x0); - return; -} - - - -/* @0044b1e8 file=? name=FUN_0044b1e8 */ - -void __cdecl FUN_0044b1e8(int param_1,undefined4 param_2) - -{ - *(undefined4 *)(param_1 + 0x3c) = param_2; - return; -} - - - -/* @0044b1f8 file=? name=FUN_0044b1f8 */ - -void __cdecl FUN_0044b1f8(int param_1,int param_2,int param_3) - -{ - int *piVar1; - - piVar1 = (int *)(param_1 + 0x1c); - FUN_00407e04(piVar1,piVar1,(int *)(param_1 + 0x14)); - *(int *)(param_1 + 0x14) = param_2 + *(int *)(param_1 + 4); - *(int *)(param_1 + 0x18) = param_3 + *(int *)(param_1 + 8); - FUN_00407de3(piVar1,piVar1,(int *)(param_1 + 0x14)); - return; -} - - - -/* @0044b240 file=? name=FUN_0044b240 */ - -void __cdecl FUN_0044b240(int param_1,undefined4 param_2) - -{ - *(undefined4 *)(param_1 + 0x24) = param_2; - return; -} - - - -/* @0044b250 file=? name=FUN_0044b250 */ - -void __cdecl FUN_0044b250(int param_1,undefined4 param_2) - -{ - *(undefined4 *)(param_1 + 0x28) = param_2; - return; -} - - - -/* @0044b260 file=? name=FUN_0044b260 */ - -void __cdecl FUN_0044b260(int param_1,int *param_2) - -{ - int iVar1; - int *piVar2; - int local_14 [4]; - - FUN_00407b9c(local_14); - piVar2 = local_14; - for (iVar1 = 4; iVar1 != 0; iVar1 = iVar1 + -1) { - *piVar2 = *param_2; - param_2 = param_2 + 1; - piVar2 = piVar2 + 1; - } - FUN_00407de3(local_14,local_14,(int *)(param_1 + 0x14)); - FUN_00407de3(local_14 + 2,local_14 + 2,(int *)(param_1 + 0x14)); - if (*(int *)(param_1 + 0x40) == 0) { - *(undefined4 *)(param_1 + 0x2c) = 1; - *(undefined4 *)(param_1 + 0x34) = 0; - } - else { - FUN_00407cd0((int *)(param_1 + 0x2c),(int *)(*(int *)(param_1 + 0x40) + 4),local_14); - } - return; -} - - - -/* @0044b2e0 file=? name=FUN_0044b2e0 */ - -void __cdecl FUN_0044b2e0(undefined4 *param_1) - -{ - int iVar1; - undefined4 *puVar2; - - puVar2 = param_1 + 0xb; - for (iVar1 = 4; param_1 = param_1 + 1, iVar1 != 0; iVar1 = iVar1 + -1) { - *puVar2 = *param_1; - puVar2 = puVar2 + 1; - } - return; -} - - - -/* @0044b2fc file=? name=FUN_0044b2fc */ - -void __cdecl FUN_0044b2fc(int param_1,int param_2,int param_3) - -{ - *(int *)(param_1 + 0x1c) = *(int *)(param_1 + 0x14) + param_2; - *(int *)(param_1 + 0x20) = *(int *)(param_1 + 0x18) + param_3; - return; -} - - - -/* @0044b318 file=? name=FUN_0044b318 */ - -void __cdecl FUN_0044b318(int param_1,int param_2,int param_3) - -{ - *(int *)(param_1 + 0x1c) = *(int *)(param_1 + 0x1c) + param_2; - *(int *)(param_1 + 0x20) = *(int *)(param_1 + 0x20) + param_3; - return; -} - - - -/* @0044b32c file=? name=FUN_0044b32c */ - -void __cdecl FUN_0044b32c(int *param_1) - -{ - int *piVar1; - int iVar2; - - iVar2 = (**(code **)(*param_1 + 0x6c))(param_1,param_1[7],param_1[8]); - piVar1 = (int *)param_1[0x10]; - if ((piVar1 != (int *)0x0) && (iVar2 == 0)) { - (**(code **)(*piVar1 + 0x10))(piVar1,param_1[10],param_1[0xf],param_1[7],param_1[8]); - if ((int *)param_1[0x11] != (int *)0x0) { - FUN_0044aab0((int *)param_1[0x11],1); - FUN_0044ab9c((int *)param_1[0x11],param_1[10]); - FUN_0044aab0((int *)param_1[0x11],param_1[0xf]); - FUN_0044ab9c((int *)param_1[0x11],param_1[7]); - FUN_0044ab9c((int *)param_1[0x11],param_1[8]); - } - } - return; -} - - - -/* @0044b3c8 file=? name=FUN_0044b3c8 */ - -void __cdecl FUN_0044b3c8(int *param_1,int param_2,int param_3) - -{ - int iVar1; - int iVar2; - - iVar1 = param_1[5]; - iVar2 = param_1[6]; - FUN_0044bdfc(param_1,param_1[7],param_1[8],iVar1 + param_2,iVar2 + param_3,1); - param_1[7] = iVar1 + param_2; - param_1[8] = iVar2 + param_3; - return; -} - - - -/* @0044b428 file=? name=FUN_0044b428 */ - -void __cdecl FUN_0044b428(int *param_1,int param_2,int param_3) - -{ - int iVar1; - int iVar2; - - iVar1 = param_1[7]; - iVar2 = param_1[8]; - FUN_0044bdfc(param_1,param_1[7],param_1[8],iVar1 + param_2,iVar2 + param_3,1); - param_1[7] = iVar1 + param_2; - param_1[8] = iVar2 + param_3; - return; -} - - - -/* @0044b488 file=? name=FUN_0044b488 */ - -void __cdecl FUN_0044b488(int *param_1,int param_2,int param_3) - -{ - int iVar1; - int iVar2; - - iVar1 = param_1[5]; - iVar2 = param_1[6]; - FUN_0044bcf0(param_1,param_1[7],param_1[8],iVar1 + param_2,iVar2 + param_3); - param_1[7] = iVar1 + param_2; - param_1[8] = iVar2 + param_3; - return; -} - - - -/* @0044b4f8 file=? name=FUN_0044b4f8 */ - -void __cdecl FUN_0044b4f8(int *param_1,int param_2,int param_3) - -{ - int iVar1; - int iVar2; - - iVar2 = param_1[7] + param_2; - iVar1 = param_1[8] + param_3; - FUN_0044bcf0(param_1,param_1[7],param_1[8],iVar2,iVar1); - param_1[7] = iVar2; - param_1[8] = iVar1; - return; -} - - - -/* @0044b568 file=? name=FUN_0044b568 */ - -void __cdecl FUN_0044b568(int *param_1,int param_2,int param_3) - -{ - int local_c; - int local_8; - - local_c = param_1[7]; - local_8 = param_1[8]; - FUN_00407e04(&local_c,&local_c,param_1 + 5); - (**(code **)(*param_1 + 0x30))(param_1,local_c,param_3); - (**(code **)(*param_1 + 0x30))(param_1,param_2,param_3); - (**(code **)(*param_1 + 0x30))(param_1,param_2,local_8); - (**(code **)(*param_1 + 0x30))(param_1,local_c,local_8); - param_1[7] = param_2; - param_1[8] = param_3; - return; -} - - - -/* @0044b5e0 file=? name=FUN_0044b5e0 */ - -void __cdecl FUN_0044b5e0(int *param_1,int param_2,int param_3) - -{ - int local_c; - int local_8; - - local_c = param_1[7]; - local_8 = param_1[8]; - FUN_00407e04(&local_c,&local_c,param_1 + 5); - (**(code **)(*param_1 + 0x34))(param_1,0,param_3); - (**(code **)(*param_1 + 0x34))(param_1,param_2,0); - (**(code **)(*param_1 + 0x34))(param_1,0,-param_3); - (**(code **)(*param_1 + 0x34))(param_1,-param_2,0); - param_1[7] = param_2 + local_c; - param_1[8] = param_3 + local_8; - return; -} - - - -/* @0044b664 file=? name=FUN_0044b664 */ - -void __cdecl FUN_0044b664(int param_1,int param_2,int param_3) - -{ - int local_14; - int local_10; - int local_c; - int local_8; - - FUN_00407b9c(&local_14); - local_14 = *(int *)(param_1 + 0x1c); - local_10 = *(int *)(param_1 + 0x20); - local_c = *(int *)(param_1 + 0x14) + param_2; - local_8 = *(int *)(param_1 + 0x18) + param_3; - FUN_0044c074(param_1,local_14,local_10,local_c,local_8); - *(int *)(param_1 + 0x1c) = local_c; - *(int *)(param_1 + 0x20) = local_8; - return; -} - - - -/* @0044b6d0 file=? name=FUN_0044b6d0 */ - -void __cdecl FUN_0044b6d0(int param_1,int param_2,int param_3) - -{ - int local_14; - int local_10; - int local_c; - int local_8; - - FUN_00407b9c(&local_14); - local_14 = *(int *)(param_1 + 0x1c); - local_10 = *(int *)(param_1 + 0x20); - local_c = *(int *)(param_1 + 0x1c) + param_2; - local_8 = *(int *)(param_1 + 0x20) + param_3; - FUN_0044c074(param_1,local_14,local_10,local_c,local_8); - *(int *)(param_1 + 0x1c) = local_c; - *(int *)(param_1 + 0x20) = local_8; - return; -} - - - -/* @0044b73c file=? name=FUN_0044b73c */ - -void FUN_0044b73c(void) - -{ - return; -} - - - -/* @0044b744 file=? name=FUN_0044b744 */ - -void __cdecl -FUN_0044b744(int param_1,int param_2,int param_3,undefined4 param_4,undefined4 param_5, - undefined4 param_6,undefined4 param_7) - -{ - int iVar1; - int local_1c; - int local_18; - int local_14; - int local_10; - int local_c; - int local_8; - - FUN_00407bd0(&local_1c,param_4,param_5,param_6,param_7); - if (param_3 != 0) { - iVar1 = FUN_0044c174(param_1,&local_1c,&local_c,*(int *)(param_3 + 0xc),*(int *)(param_3 + 0x10) - ); - if (iVar1 != 0) { - (**(code **)(**(int **)(param_1 + 0x40) + 0x20)) - (*(int **)(param_1 + 0x40),*(undefined4 *)(param_1 + 0x28), - *(undefined4 *)(param_1 + 0x3c),param_2,local_c,local_8,param_3,local_1c,local_18, - local_14,local_10); - if (*(int **)(param_1 + 0x44) != (int *)0x0) { - FUN_0044aab0(*(int **)(param_1 + 0x44),4); - FUN_0044ab9c(*(int **)(param_1 + 0x44),*(int *)(param_1 + 0x28)); - FUN_0044aab0(*(int **)(param_1 + 0x44),*(undefined4 *)(param_1 + 0x3c)); - FUN_0044ab9c(*(int **)(param_1 + 0x44),param_2); - FUN_0044ab9c(*(int **)(param_1 + 0x44),local_c); - FUN_0044ab9c(*(int **)(param_1 + 0x44),local_8); - FUN_0044abf8(*(int **)(param_1 + 0x44),param_3); - FUN_0044ab9c(*(int **)(param_1 + 0x44),local_1c); - FUN_0044ab9c(*(int **)(param_1 + 0x44),local_18); - FUN_0044ab9c(*(int **)(param_1 + 0x44),local_14); - FUN_0044ab9c(*(int **)(param_1 + 0x44),local_10); - } - } - } - return; -} - - - -/* @0044b88c file=? name=FUN_0044b88c */ - -void __cdecl -FUN_0044b88c(int param_1,int param_2,int param_3,int param_4,undefined4 param_5,undefined4 param_6, - undefined4 param_7,undefined4 param_8) - -{ - int iVar1; - int local_1c; - int local_18; - int local_14; - int local_10; - int local_c; - int local_8; - - FUN_00407bd0(&local_1c,param_5,param_6,param_7,param_8); - if (param_4 != 0) { - iVar1 = FUN_0044c174(param_1,&local_1c,&local_c,*(int *)(param_4 + 0xc),*(int *)(param_4 + 0x10) - ); - if (iVar1 != 0) { - (**(code **)(**(int **)(param_1 + 0x40) + 0x24)) - (*(int **)(param_1 + 0x40),*(undefined4 *)(param_1 + 0x28),param_2, - *(undefined4 *)(param_1 + 0x3c),param_3,local_c,local_8,param_4,local_1c,local_18, - local_14,local_10); - if (*(int **)(param_1 + 0x44) != (int *)0x0) { - FUN_0044aab0(*(int **)(param_1 + 0x44),5); - FUN_0044ab9c(*(int **)(param_1 + 0x44),*(int *)(param_1 + 0x28)); - FUN_0044ab9c(*(int **)(param_1 + 0x44),param_2); - FUN_0044aab0(*(int **)(param_1 + 0x44),*(undefined4 *)(param_1 + 0x3c)); - FUN_0044ab9c(*(int **)(param_1 + 0x44),param_3); - FUN_0044ab9c(*(int **)(param_1 + 0x44),local_c); - FUN_0044ab9c(*(int **)(param_1 + 0x44),local_8); - FUN_0044abf8(*(int **)(param_1 + 0x44),param_4); - FUN_0044ab9c(*(int **)(param_1 + 0x44),local_1c); - FUN_0044ab9c(*(int **)(param_1 + 0x44),local_18); - FUN_0044ab9c(*(int **)(param_1 + 0x44),local_14); - FUN_0044ab9c(*(int **)(param_1 + 0x44),local_10); - } - } - } - return; -} - - - -/* @0044b9e8 file=? name=FUN_0044b9e8 */ - -void __cdecl -FUN_0044b9e8(int param_1,int param_2,int param_3,int *param_4,undefined4 param_5,undefined4 param_6, - undefined4 param_7,undefined4 param_8) - -{ - int iVar1; - int local_1c; - int local_18; - int local_14; - int local_10; - int local_c; - int local_8; - - FUN_00407bd0(&local_1c,param_5,param_6,param_7,param_8); - if (param_4 != (int *)0x0) { - iVar1 = FUN_0044c174(param_1,&local_1c,&local_c,*param_4,param_4[1]); - if (iVar1 != 0) { - (**(code **)(**(int **)(param_1 + 0x40) + 0x28)) - (*(int **)(param_1 + 0x40),*(undefined4 *)(param_1 + 0x3c),param_2,param_3,local_c, - local_8,param_4,local_1c,local_18,local_14,local_10); - if (*(int **)(param_1 + 0x44) != (int *)0x0) { - FUN_0044aab0(*(int **)(param_1 + 0x44),6); - FUN_0044aab0(*(int **)(param_1 + 0x44),*(undefined4 *)(param_1 + 0x3c)); - FUN_0044ab9c(*(int **)(param_1 + 0x44),param_2); - FUN_0044ab9c(*(int **)(param_1 + 0x44),param_3); - FUN_0044ab9c(*(int **)(param_1 + 0x44),local_c); - FUN_0044ab9c(*(int **)(param_1 + 0x44),local_8); - FUN_0044abf8(*(int **)(param_1 + 0x44),(int)param_4); - FUN_0044ab9c(*(int **)(param_1 + 0x44),local_1c); - FUN_0044ab9c(*(int **)(param_1 + 0x44),local_18); - FUN_0044ab9c(*(int **)(param_1 + 0x44),local_14); - FUN_0044ab9c(*(int **)(param_1 + 0x44),local_10); - } - } - } - return; -} - - - -/* @0044bb30 file=? name=FUN_0044bb30 */ - -void __cdecl -FUN_0044bb30(int param_1,int param_2,int *param_3,undefined4 param_4,undefined4 param_5, - undefined4 param_6,undefined4 param_7) - -{ - int iVar1; - int local_1c; - int local_18; - int local_14; - int local_10; - int local_c; - int local_8; - - FUN_00407bd0(&local_1c,param_4,param_5,param_6,param_7); - if (param_3 != (int *)0x0) { - iVar1 = FUN_0044c174(param_1,&local_1c,&local_c,*param_3,param_3[1]); - if (iVar1 != 0) { - (**(code **)(**(int **)(param_1 + 0x40) + 0x2c)) - (*(int **)(param_1 + 0x40),*(undefined4 *)(param_1 + 0x28), - *(undefined4 *)(param_1 + 0x3c),param_2,local_c,local_8,param_3,local_1c,local_18, - local_14,local_10); - if (*(int **)(param_1 + 0x44) != (int *)0x0) { - FUN_0044aab0(*(int **)(param_1 + 0x44),7); - FUN_0044ab9c(*(int **)(param_1 + 0x44),*(int *)(param_1 + 0x28)); - FUN_0044aab0(*(int **)(param_1 + 0x44),*(undefined4 *)(param_1 + 0x3c)); - FUN_0044ab9c(*(int **)(param_1 + 0x44),param_2); - FUN_0044ab9c(*(int **)(param_1 + 0x44),local_c); - FUN_0044ab9c(*(int **)(param_1 + 0x44),local_8); - FUN_0044abf8(*(int **)(param_1 + 0x44),(int)param_3); - FUN_0044ab9c(*(int **)(param_1 + 0x44),local_1c); - FUN_0044ab9c(*(int **)(param_1 + 0x44),local_18); - FUN_0044ab9c(*(int **)(param_1 + 0x44),local_14); - FUN_0044ab9c(*(int **)(param_1 + 0x44),local_10); - } - } - } - return; -} - - - -/* @0044bc78 file=? name=FUN_0044bc78 */ - -void __cdecl FUN_0044bc78(int param_1,undefined4 param_2,undefined4 param_3) - -{ - int *piVar1; - - piVar1 = *(int **)(param_1 + 0x40); - if (piVar1 != (int *)0x0) { - (**(code **)(*piVar1 + 0xc))(piVar1,param_2,param_3); - } - return; -} - - - -/* @0044bc98 file=? name=FUN_0044bc98 */ - -void __cdecl FUN_0044bc98(int param_1,undefined4 param_2) - -{ - *(undefined4 *)(param_1 + 0x44) = param_2; - return; -} - - - -/* @0044bca8 file=? name=FUN_0044bca8 */ - -void __cdecl FUN_0044bca8(int param_1) - -{ - *(undefined4 *)(param_1 + 0x44) = 0; - return; -} - - - -/* @0044bcb8 file=? name=FUN_0044bcb8 */ - -uint __cdecl FUN_0044bcb8(int param_1,int param_2,int param_3) - -{ - uint uVar1; - - uVar1 = 0; - if (param_2 < *(int *)(param_1 + 0x2c)) { - uVar1 = 1; - } - else if (*(int *)(param_1 + 0x34) < param_2) { - uVar1 = 2; - } - if (param_3 < *(int *)(param_1 + 0x30)) { - uVar1 = uVar1 | 4; - } - else if (*(int *)(param_1 + 0x38) < param_3) { - uVar1 = uVar1 | 8; - } - return uVar1; -} - - - -/* @0044bcf0 file=? name=FUN_0044bcf0 */ - -void __cdecl FUN_0044bcf0(int *param_1,int param_2,int param_3,int param_4,int param_5) - -{ - FUN_0044bdfc(param_1,param_2,param_3,param_4,param_5,1); - FUN_0044bdfc(param_1,param_2 + -1,param_3,param_4 + -1,param_5,1); - FUN_0044bdfc(param_1,param_2,param_3 + 1,param_4,param_5 + 1,1); - FUN_0044bdfc(param_1,param_2 + 1,param_3,param_4 + 1,param_5,1); - FUN_0044bdfc(param_1,param_2,param_3 + -1,param_4,param_5 + -1,1); - return; -} - - - -/* @0044bdfc file=? name=FUN_0044bdfc */ - -void __cdecl FUN_0044bdfc(int *param_1,int param_2,int param_3,int param_4,int param_5,int param_6) - -{ - bool bVar1; - bool bVar2; - bool bVar3; - uint uVar4; - int iVar5; - int iVar6; - uint uVar7; - uint local_8; - - bVar3 = false; - bVar1 = false; - bVar2 = false; - if (param_1[0x10] != 0) { - uVar4 = (**(code **)(*param_1 + 0x6c))(param_1,param_2,param_3); - local_8 = (**(code **)(*param_1 + 0x6c))(param_1,param_4,param_5); - while (iVar6 = param_3, iVar5 = param_2, local_8 != 0 || uVar4 != 0) { - if ((local_8 & uVar4) != 0) { - return; - } - uVar7 = uVar4; - if (uVar4 == 0) { - param_2 = param_4; - param_3 = param_5; - param_4 = iVar5; - param_5 = iVar6; - bVar1 = (bool)(bVar1 ^ 1); - uVar7 = local_8; - local_8 = uVar4; - bVar2 = bVar3; - } - if ((uVar7 & 1) == 0) { - if ((uVar7 & 2) == 0) { - if ((uVar7 & 8) == 0) { - if ((uVar7 & 4) != 0) { - bVar3 = true; - param_2 = param_2 + ((param_4 - param_2) * (param_1[0xc] - param_3)) / - (param_5 - param_3); - param_3 = param_1[0xc]; - } - } - else { - param_2 = param_2 + ((param_4 - param_2) * (param_1[0xe] - param_3)) / - (param_5 - param_3); - bVar3 = true; - param_3 = param_1[0xe]; - } - } - else { - iVar5 = param_1[0xd] - param_2; - iVar6 = param_4 - param_2; - bVar3 = true; - param_2 = param_1[0xd]; - param_3 = param_3 + ((param_5 - param_3) * iVar5) / iVar6; - } - } - else { - iVar5 = param_1[0xb] - param_2; - iVar6 = param_4 - param_2; - bVar3 = true; - param_2 = param_1[0xb]; - param_3 = param_3 + ((param_5 - param_3) * iVar5) / iVar6; - } - uVar4 = (**(code **)(*param_1 + 0x6c))(param_1,param_2,param_3); - } - if (bVar1) { - param_2 = param_4; - param_3 = param_5; - param_4 = iVar5; - param_5 = iVar6; - bVar2 = bVar3; - } - if (bVar2) { - param_6 = 1; - } - (**(code **)(*(int *)param_1[0x10] + 0x14)) - ((int *)param_1[0x10],param_1[10],param_1[0xf],param_2,param_3,param_4,param_5,param_6 - ); - if ((int *)param_1[0x11] != (int *)0x0) { - FUN_0044aab0((int *)param_1[0x11],2); - FUN_0044ab9c((int *)param_1[0x11],param_1[10]); - FUN_0044aab0((int *)param_1[0x11],param_1[0xf]); - FUN_0044ab9c((int *)param_1[0x11],param_2); - FUN_0044ab9c((int *)param_1[0x11],param_3); - FUN_0044ab9c((int *)param_1[0x11],param_4); - FUN_0044ab9c((int *)param_1[0x11],param_5); - FUN_0044ab58((int *)param_1[0x11],param_6); - } - } - return; -} - - - -/* @0044c074 file=? name=FUN_0044c074 */ - -void __cdecl FUN_0044c074(int param_1,int param_2,int param_3,int param_4,int param_5) - -{ - bool bVar1; - int iVar2; - int iVar3; - - iVar3 = param_3; - iVar2 = param_2; - if (*(int *)(param_1 + 0x40) != 0) { - if (param_4 < param_2) { - param_2 = param_4; - param_4 = iVar2; - } - if (param_5 < param_3) { - param_3 = param_5; - param_5 = iVar3; - } - FUN_00407cd0(¶m_2,(int *)(param_1 + 0x2c),¶m_2); - bVar1 = true; - if ((param_2 <= param_4) && (param_3 <= param_5)) { - bVar1 = false; - } - if (!bVar1) { - (**(code **)(**(int **)(param_1 + 0x40) + 0x18)) - (*(int **)(param_1 + 0x40),*(undefined4 *)(param_1 + 0x28), - *(undefined4 *)(param_1 + 0x3c),param_2,param_3,param_4,param_5); - if (*(int **)(param_1 + 0x44) != (int *)0x0) { - FUN_0044aab0(*(int **)(param_1 + 0x44),3); - FUN_0044ab9c(*(int **)(param_1 + 0x44),*(int *)(param_1 + 0x28)); - FUN_0044aab0(*(int **)(param_1 + 0x44),*(undefined4 *)(param_1 + 0x3c)); - FUN_0044ab9c(*(int **)(param_1 + 0x44),param_2); - FUN_0044ab9c(*(int **)(param_1 + 0x44),param_3); - FUN_0044ab9c(*(int **)(param_1 + 0x44),param_4); - FUN_0044ab9c(*(int **)(param_1 + 0x44),param_5); - } - } - } - return; -} - - - -/* @0044c174 file=? name=FUN_0044c174 */ - -undefined4 __cdecl FUN_0044c174(int param_1,int *param_2,int *param_3,int param_4,int param_5) - -{ - bool bVar1; - int iVar2; - int *piVar3; - int *piVar4; - int local_34 [4]; - int local_24 [4]; - int local_14; - int local_10; - int local_c; - int local_8; - - if (*(int *)(param_1 + 0x40) != 0) { - FUN_00407b9c(local_24); - if (*param_2 < 0) { - *param_2 = 0; - } - if (param_4 <= param_2[2]) { - param_2[2] = param_4 + -1; - } - if (param_2[1] < 0) { - param_2[1] = 0; - } - if (param_5 <= param_2[3]) { - param_2[3] = param_5 + -1; - } - local_c = *param_2; - local_8 = param_2[1]; - local_14 = param_2[2]; - local_10 = param_2[3]; - FUN_00407e04(&local_14,&local_14,param_2); - local_24[0] = *(int *)(param_1 + 0x1c); - local_24[1] = *(int *)(param_1 + 0x20); - local_24[2] = *(int *)(param_1 + 0x1c); - local_24[3] = *(int *)(param_1 + 0x20); - FUN_00407de3(local_24 + 2,local_24 + 2,&local_14); - FUN_00407b9c(local_34); - piVar3 = local_24; - piVar4 = local_34; - for (iVar2 = 4; iVar2 != 0; iVar2 = iVar2 + -1) { - *piVar4 = *piVar3; - piVar3 = piVar3 + 1; - piVar4 = piVar4 + 1; - } - FUN_00407cd0(local_24,local_34,(int *)(param_1 + 0x2c)); - bVar1 = true; - if ((local_24[0] <= local_24[2]) && (local_24[1] <= local_24[3])) { - bVar1 = false; - } - if (!bVar1) { - *param_3 = local_24[0]; - param_3[1] = local_24[1]; - local_14 = local_24[2]; - local_10 = local_24[3]; - FUN_00407e04(&local_14,&local_14,local_24); - *param_2 = local_c; - param_2[1] = local_8; - param_2[2] = local_c; - param_2[3] = local_8; - FUN_00407de3(param_2 + 2,param_2 + 2,&local_14); - return 1; - } - } - return 0; -} - - - -/* @0044c2d0 file=? name=FUN_0044c2d0 */ - -void __cdecl FUN_0044c2d0(undefined4 *param_1,undefined4 param_2) - -{ - *param_1 = &PTR_FUN_004ef68c; - param_1[1] = param_2; - return; -} - - - -/* @0044c2e4 file=? name=FUN_0044c2e4 */ - -void __cdecl FUN_0044c2e4(int *param_1,byte param_2) - -{ - if ((param_1 != (int *)0x0) && (*param_1 = (int)&PTR_FUN_004ef68c, (param_2 & 1) != 0)) { - FUN_004022d0(param_1); - } - return; -} - - - -/* @0044c304 file=? name=FUN_0044c304 */ - -undefined4 FUN_0044c304(void) - -{ - return 1; -} - - - -/* @0044c310 file=? name=FUN_0044c310 */ - -undefined4 __cdecl FUN_0044c310(undefined4 param_1,char *param_2,undefined4 *param_3) - -{ - int iVar1; - - iVar1 = FUN_004d4b58(param_2,s_ModeAlwaysActive_004ef678); - if (iVar1 == 0) { - *param_3 = 0xffffffff; - return 1; - } - *param_3 = 0; - return 0; -} - - - -/* @0044c344 file=? name=FUN_0044c344 */ - -undefined4 * __cdecl -FUN_0044c344(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) - -{ - FUN_004178cc(param_1,param_2); - *param_1 = &PTR_FUN_004ef8d4; - FUN_0044ca72(param_1 + 4,param_1); - param_1[3] = param_3; - (**(code **)(param_1[4] + 4))(param_1 + 4,param_4); - return param_1; -} - - - -/* @0044c388 file=? name=FUN_0044c388 */ - -void __cdecl FUN_0044c388(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_004ef8d4; - FUN_0044ca91(param_1 + 4,2); - FUN_0041790c(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @0044c3c4 file=munga/controls.cpp name=FUN_0044c3c4 */ - -void FUN_0044c3c4(void) - -{ - FUN_0040385c(s_ControlsInstance__Update_not_ove_004ef6cc,s_d__tesla_bt_munga_CONTROLS_CPP_004ef6f5 - ,0x3d); - return; -} - - - -/* @0044c3e0 file=? name=FUN_0044c3e0 */ - -void __cdecl FUN_0044c3e0(undefined4 *param_1) - -{ - if (param_1 != (undefined4 *)0x0) { - (**(code **)*param_1)(param_1,3); - } - return; -} - - - -/* @0044c3f8 file=? name=FUN_0044c3f8 */ - -undefined4 * __cdecl FUN_0044c3f8(undefined4 *param_1) - -{ - FUN_004178cc(param_1,0x18); - *param_1 = &PTR_FUN_004ef8c0; - FUN_0044cabd(param_1 + 3,param_1); - return param_1; -} - - - -/* @0044c424 file=? name=FUN_0044c424 */ - -void __cdecl FUN_0044c424(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_004ef8c0; - (**(code **)(*param_1 + 0xc))(param_1,0); - FUN_0044cadc(param_1 + 3,2); - FUN_0041790c(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @0044c46c file=? name=FUN_0044c46c */ - -void __cdecl FUN_0044c46c(int param_1,uint param_2) - -{ - undefined4 *puVar1; - int local_10 [3]; - - FUN_0044cb72(local_10,param_1 + 0xc); - while( true ) { - puVar1 = (undefined4 *)(**(code **)(local_10[0] + 0x28))(local_10); - if (puVar1 == (undefined4 *)0x0) break; - puVar1[3] = puVar1[3] & ~param_2; - if ((puVar1[3] == 0) && (puVar1 != (undefined4 *)0x0)) { - (**(code **)*puVar1)(puVar1,3); - } - } - FUN_0044cbb0(local_10,2); - return; -} - - - -/* @0044c4d0 file=? name=FUN_0044c4d0 */ - -void __cdecl FUN_0044c4d0(int param_1,undefined4 param_2,uint param_3) - -{ - int *piVar1; - int local_10 [3]; - - FUN_0044cb72(local_10,param_1 + 0xc); - while( true ) { - piVar1 = (int *)(**(code **)(local_10[0] + 0x28))(local_10); - if (piVar1 == (int *)0x0) break; - if ((piVar1[3] & param_3) != 0) { - (**(code **)(*piVar1 + 0xc))(piVar1,param_2); - } - } - FUN_0044cbb0(local_10,2); - return; -} - - - -/* @0044c52c file=? name=FUN_0044c52c */ - -undefined4 __cdecl FUN_0044c52c(int param_1,uint param_2) - -{ - int iVar1; - undefined4 uVar2; - int local_10 [3]; - - FUN_0044cb72(local_10,param_1 + 0xc); - do { - iVar1 = (**(code **)(local_10[0] + 0x28))(local_10); - if (iVar1 == 0) { - uVar2 = 0; - FUN_0044cbb0(local_10,2); - return uVar2; - } - } while ((*(uint *)(iVar1 + 0xc) & param_2) == 0); - uVar2 = 1; - FUN_0044cbb0(local_10,2); - return uVar2; -} - - - -/* @0044c594 file=? name=FUN_0044c594 */ - -undefined4 * __cdecl FUN_0044c594(undefined4 *param_1,undefined4 param_2,undefined4 param_3) - -{ - FUN_004178cc(param_1,param_2); - *param_1 = &PTR_FUN_004e3320; - param_1[3] = param_3; - *param_1 = &PTR_FUN_004ef894; - param_1[4] = 0; - param_1[5] = 0; - param_1[6] = 0; - param_1[7] = 0; - param_1[8] = DAT_004ef6c4; - DAT_004ef6c4 = param_1; - return param_1; -} - - - -/* @0044c5e4 file=? name=FUN_0044c5e4 */ - -void __cdecl FUN_0044c5e4(int *param_1,byte param_2) - -{ - int *piVar1; - int *piVar2; - - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_004ef894; - piVar1 = (int *)0x0; - for (piVar2 = DAT_004ef6c4; piVar2 != (int *)0x0; piVar2 = (int *)piVar2[8]) { - if (param_1 == piVar2) { - if (piVar1 == (int *)0x0) { - DAT_004ef6c4 = (int *)param_1[8]; - } - else { - piVar1[8] = param_1[8]; - } - break; - } - piVar1 = piVar2; - } - FUN_0041790c(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @0044c640 file=munga/controls.cpp name=FUN_0044c640 */ - -void FUN_0044c640(void) - -{ - FUN_0040385c(s_ControlsManager__Remove_should_n_004ef724,s_d__tesla_bt_munga_CONTROLS_CPP_004ef753 - ,0x120); - return; -} - - - -/* @0044c65c file=munga/controls.cpp name=FUN_0044c65c */ - -void FUN_0044c65c(void) - -{ - FUN_0040385c(s_ControlsManager__Execute_should_n_004ef772, - s_d__tesla_bt_munga_CONTROLS_CPP_004ef7a2,0x126); - return; -} - - - -/* @0044c678 file=? name=FUN_0044c678 */ - -void __cdecl -FUN_0044c678(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5 - ,uint param_6,uint param_7) - -{ - int iVar1; - - *(undefined4 *)(param_1 + 0x14) = param_3; - *(undefined4 *)(param_1 + 0x18) = param_5; - *(undefined4 *)(param_1 + 0x10) = param_2; - *(undefined4 *)(param_1 + 0x1c) = param_4; - iVar1 = *(int *)(DAT_004efc94 + 0x50); - *(undefined4 *)(iVar1 + 8) = *(undefined4 *)(iVar1 + 4); - *(uint *)(iVar1 + 4) = *(uint *)(iVar1 + 4) & ~param_6; - *(undefined4 *)(iVar1 + 8) = *(undefined4 *)(iVar1 + 4); - *(uint *)(iVar1 + 4) = *(uint *)(iVar1 + 4) | param_7; - return; -} - - - -/* @0044c6fc file=? name=FUN_0044c6fc */ - -void FUN_0044c6fc(void) - -{ - return; -} - - - -/* @0044c704 file=? name=FUN_0044c704 */ - -void __cdecl FUN_0044c704(int param_1) - -{ - FUN_0041a1a4(**(int **)(param_1 + 0xc),0x4ef690); - return; -} - - - -/* @0044c720 file=? name=FUN_0044c720 */ - -void FUN_0044c720(void) - -{ - int *piVar1; - - for (piVar1 = DAT_004ef6c4; piVar1 != (int *)0x0; piVar1 = (int *)piVar1[8]) { - (**(code **)(*piVar1 + 0x1c))(piVar1); - } - return; -} - - - -/* @0044c73c file=? name=FUN_0044c73c */ - -void FUN_0044c73c(void) - -{ - return; -} - - - -/* @0044c744 file=? name=FUN_0044c744 */ - -undefined4 * __cdecl -FUN_0044c744(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4, - undefined4 param_5,undefined4 param_6) - -{ - FUN_004178cc(param_1,0x52); - *param_1 = &PTR_FUN_004ef888; - param_1[3] = DAT_004ef6c8; - DAT_004ef6c8 = DAT_004ef6c8 + 1; - param_1[4] = param_2; - param_1[0xb] = param_3; - param_1[0xd] = param_4; - param_1[0xe] = param_5; - param_1[0xc] = param_6; - *(undefined1 *)(param_1 + 5) = 0; - param_1[10] = 0; - return param_1; -} - - - -/* @0044c798 file=? name=FUN_0044c798 */ - -void __cdecl FUN_0044c798(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_004ef888; - FUN_0041790c(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @0044c7c4 file=? name=FUN_0044c7c4 */ - -undefined4 FUN_0044c7c4(void) - -{ - return 1; -} - - - -/* @0044c7d0 file=? name=FUN_0044c7d0 */ - -void __cdecl FUN_0044c7d0(int param_1,int param_2,undefined1 param_3) - -{ - int iVar1; - int iVar2; - undefined4 local_14; - undefined4 local_10; - undefined4 local_c; - undefined4 local_8; - - if (param_2 == *(int *)(param_1 + 0x2c)) { - iVar2 = FUN_004d4a78(*(char **)(param_1 + 0x10)); - if (0x10 < iVar2) { - iVar2 = 0x10; - } - if (iVar2 < *(int *)(param_1 + 0x28)) { - *(int *)(param_1 + 0x28) = iVar2; - *(undefined1 *)(param_1 + 0x14 + iVar2) = 0; - } - if (*(int *)(param_1 + 0x28) < iVar2) { - iVar1 = *(int *)(param_1 + 0x28); - *(int *)(param_1 + 0x28) = *(int *)(param_1 + 0x28) + 1; - *(undefined1 *)(param_1 + 0x14 + iVar1) = param_3; - *(undefined1 *)(param_1 + 0x14 + *(int *)(param_1 + 0x28)) = 0; - } - else { - if (1 < iVar2) { - FUN_004d493c((undefined4 *)(param_1 + 0x14),(undefined4 *)(param_1 + 0x15),iVar2 - 1); - } - *(undefined1 *)(param_1 + 0x13 + iVar2) = param_3; - } - iVar2 = FUN_004d4bec((char *)(param_1 + 0x14),*(char **)(param_1 + 0x10),iVar2); - if (iVar2 == 0) { - local_8 = *(undefined4 *)(param_1 + 0x30); - local_10 = *(undefined4 *)(param_1 + 0x38); - local_14 = 0x10; - local_c = 1; - (**(code **)(**(int **)(param_1 + 0x34) + 0xc))(*(int **)(param_1 + 0x34),&local_14); - *(undefined1 *)(param_1 + 0x14) = 0; - *(undefined4 *)(param_1 + 0x28) = 0; - } - } - return; -} - - - -/* @0044c8a0 file=? name=FUN_0044c8a0 */ - -undefined4 * __cdecl FUN_0044c8a0(undefined4 *param_1) - -{ - FUN_004178cc(param_1,0x53); - *param_1 = &PTR_FUN_004ef87c; - FUN_0044cb08(param_1 + 3,param_1); - return param_1; -} - - - -/* @0044c8cc file=? name=FUN_0044c8cc */ - -void __cdecl FUN_0044c8cc(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_004ef87c; - FUN_0044c970((int)param_1,0); - FUN_0044cb27(param_1 + 3,2); - FUN_0041790c(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @0044c914 file=? name=FUN_0044c914 */ - -undefined4 FUN_0044c914(void) - -{ - return 1; -} - - - -/* @0044c920 file=? name=FUN_0044c920 */ - -undefined4 __cdecl -FUN_0044c920(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5 - ,undefined4 param_6) - -{ - undefined4 *puVar1; - - puVar1 = (undefined4 *)FUN_00402298(0x3c); - if (puVar1 == (undefined4 *)0x0) { - puVar1 = (undefined4 *)0x0; - } - else { - puVar1 = FUN_0044c744(puVar1,param_2,param_3,param_4,param_5,param_6); - } - (**(code **)(*(int *)(param_1 + 0xc) + 4))(param_1 + 0xc,puVar1); - return puVar1[3]; -} - - - -/* @0044c970 file=? name=FUN_0044c970 */ - -void __cdecl FUN_0044c970(int param_1,int param_2) - -{ - undefined4 *puVar1; - int local_10 [3]; - - FUN_0044cbfb(local_10,param_1 + 0xc); - do { - do { - puVar1 = (undefined4 *)(**(code **)(local_10[0] + 0x28))(local_10); - if (puVar1 == (undefined4 *)0x0) goto LAB_0044c9be; - } while ((param_2 != 0) && (param_2 != puVar1[3])); - if (puVar1 != (undefined4 *)0x0) { - (**(code **)*puVar1)(puVar1,3); - } - } while (param_2 == 0); -LAB_0044c9be: - FUN_0044cc39(local_10,2); - return; -} - - - diff --git a/reference/decomp/all/part_007.c b/reference/decomp/all/part_007.c index c66691a..cf9f44a 100644 --- a/reference/decomp/all/part_007.c +++ b/reference/decomp/all/part_007.c @@ -1,3 +1,1446 @@ +/* @0044aeb0 file=? name=FUN_0044aeb0 */ + +undefined4 FUN_0044aeb0(void) + +{ + return 1; +} + + + +/* @0044aebc file=? name=FUN_0044aebc */ + +void __cdecl FUN_0044aebc(int param_1,char *param_2) + +{ + char cVar1; + int iVar2; + int *piVar3; + uint uVar4; + uint uVar5; + char *pcVar6; + char *pcVar7; + undefined8 uVar8; + uint *puVar9; + char local_54 [80]; + + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_GraphicsView__004ef4b6,(char *)0x0); + uVar4 = 0xffffffff; + do { + pcVar6 = param_2; + if (uVar4 == 0) break; + uVar4 = uVar4 - 1; + pcVar6 = param_2 + 1; + cVar1 = *param_2; + param_2 = pcVar6; + } while (cVar1 != '\0'); + uVar4 = ~uVar4; + pcVar6 = pcVar6 + -uVar4; + pcVar7 = local_54; + for (uVar5 = uVar4 >> 2; uVar5 != 0; uVar5 = uVar5 - 1) { + *(undefined4 *)pcVar7 = *(undefined4 *)pcVar6; + pcVar6 = pcVar6 + 4; + pcVar7 = pcVar7 + 4; + } + for (uVar4 = uVar4 & 3; uVar4 != 0; uVar4 = uVar4 - 1) { + *pcVar7 = *pcVar6; + pcVar6 = pcVar6 + 1; + pcVar7 = pcVar7 + 1; + } + FUN_004d49b8(local_54,&DAT_004ef4c5); + puVar9 = (uint *)(param_1 + 4); + FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_areaWithinPort___004ef4c9,(char *)0x0); + piVar3 = (int *)FUN_00407d78(&DAT_00524e20,puVar9); + FUN_004dbb24(piVar3,&DAT_004ef4dd,(char *)0x0); + puVar9 = (uint *)(param_1 + 0x14); + FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_origin___004ef4df,(char *)0x0); + piVar3 = (int *)FUN_00407f08(&DAT_00524e20,puVar9); + FUN_004dbb24(piVar3,&DAT_004ef4f3,(char *)0x0); + puVar9 = (uint *)(param_1 + 0x1c); + FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_currentPosition___004ef4f5,(char *)0x0); + piVar3 = (int *)FUN_00407f08(&DAT_00524e20,puVar9); + FUN_004dbb24(piVar3,&DAT_004ef509,(char *)0x0); + uVar4 = *(uint *)(param_1 + 0x24); + FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_currentFontID___004ef50b,(char *)0x0); + piVar3 = FUN_004db78c(&DAT_00524e20,uVar4); + FUN_004dbb24(piVar3,&DAT_004ef51f,(char *)0x0); + uVar4 = *(uint *)(param_1 + 0x28); + FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_currentColor___004ef521,(char *)0x0); + piVar3 = FUN_004db78c(&DAT_00524e20,uVar4); + FUN_004dbb24(piVar3,&DAT_004ef535,(char *)0x0); + puVar9 = (uint *)(param_1 + 0x2c); + FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_clippingRectangle___004ef537,(char *)0x0); + piVar3 = (int *)FUN_00407d78(&DAT_00524e20,puVar9); + FUN_004dbb24(piVar3,&DAT_004ef54b,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_currentOperation___004ef54d,(char *)0x0); + iVar2 = *(int *)(param_1 + 0x3c); + if (iVar2 == 0) { + FUN_004dbb24(&DAT_00524e20,s_REPLACE_004ef56a,(char *)0x0); + } + else if (iVar2 == 1) { + FUN_004dbb24(&DAT_00524e20,&DAT_004ef561,(char *)0x0); + } + else if (iVar2 == 2) { + FUN_004dbb24(&DAT_00524e20,&DAT_004ef566,(char *)0x0); + } + else { + uVar4 = *(uint *)(param_1 + 0x3c); + FUN_004dbb24(&DAT_00524e20,s_Unsupported_type__004ef573,(char *)0x0); + piVar3 = FUN_004db78c(&DAT_00524e20,uVar4); + FUN_004dbb24(piVar3,&DAT_004ef585,(char *)0x0); + } + uVar4 = *(uint *)(param_1 + 0x40); + FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_graphicsPort___004ef587,(char *)0x0); + uVar8 = FUN_004dbd4c(&DAT_00524e20,uVar4); + FUN_004dbb24((int *)uVar8,&DAT_004ef598,(char *)0x0); + return; +} + + + +/* @0044b1e8 file=? name=FUN_0044b1e8 */ + +void __cdecl FUN_0044b1e8(int param_1,undefined4 param_2) + +{ + *(undefined4 *)(param_1 + 0x3c) = param_2; + return; +} + + + +/* @0044b1f8 file=? name=FUN_0044b1f8 */ + +void __cdecl FUN_0044b1f8(int param_1,int param_2,int param_3) + +{ + int *piVar1; + + piVar1 = (int *)(param_1 + 0x1c); + FUN_00407e04(piVar1,piVar1,(int *)(param_1 + 0x14)); + *(int *)(param_1 + 0x14) = param_2 + *(int *)(param_1 + 4); + *(int *)(param_1 + 0x18) = param_3 + *(int *)(param_1 + 8); + FUN_00407de3(piVar1,piVar1,(int *)(param_1 + 0x14)); + return; +} + + + +/* @0044b240 file=? name=FUN_0044b240 */ + +void __cdecl FUN_0044b240(int param_1,undefined4 param_2) + +{ + *(undefined4 *)(param_1 + 0x24) = param_2; + return; +} + + + +/* @0044b250 file=? name=FUN_0044b250 */ + +void __cdecl FUN_0044b250(int param_1,undefined4 param_2) + +{ + *(undefined4 *)(param_1 + 0x28) = param_2; + return; +} + + + +/* @0044b260 file=? name=FUN_0044b260 */ + +void __cdecl FUN_0044b260(int param_1,int *param_2) + +{ + int iVar1; + int *piVar2; + int local_14 [4]; + + FUN_00407b9c(local_14); + piVar2 = local_14; + for (iVar1 = 4; iVar1 != 0; iVar1 = iVar1 + -1) { + *piVar2 = *param_2; + param_2 = param_2 + 1; + piVar2 = piVar2 + 1; + } + FUN_00407de3(local_14,local_14,(int *)(param_1 + 0x14)); + FUN_00407de3(local_14 + 2,local_14 + 2,(int *)(param_1 + 0x14)); + if (*(int *)(param_1 + 0x40) == 0) { + *(undefined4 *)(param_1 + 0x2c) = 1; + *(undefined4 *)(param_1 + 0x34) = 0; + } + else { + FUN_00407cd0((int *)(param_1 + 0x2c),(int *)(*(int *)(param_1 + 0x40) + 4),local_14); + } + return; +} + + + +/* @0044b2e0 file=? name=FUN_0044b2e0 */ + +void __cdecl FUN_0044b2e0(undefined4 *param_1) + +{ + int iVar1; + undefined4 *puVar2; + + puVar2 = param_1 + 0xb; + for (iVar1 = 4; param_1 = param_1 + 1, iVar1 != 0; iVar1 = iVar1 + -1) { + *puVar2 = *param_1; + puVar2 = puVar2 + 1; + } + return; +} + + + +/* @0044b2fc file=? name=FUN_0044b2fc */ + +void __cdecl FUN_0044b2fc(int param_1,int param_2,int param_3) + +{ + *(int *)(param_1 + 0x1c) = *(int *)(param_1 + 0x14) + param_2; + *(int *)(param_1 + 0x20) = *(int *)(param_1 + 0x18) + param_3; + return; +} + + + +/* @0044b318 file=? name=FUN_0044b318 */ + +void __cdecl FUN_0044b318(int param_1,int param_2,int param_3) + +{ + *(int *)(param_1 + 0x1c) = *(int *)(param_1 + 0x1c) + param_2; + *(int *)(param_1 + 0x20) = *(int *)(param_1 + 0x20) + param_3; + return; +} + + + +/* @0044b32c file=? name=FUN_0044b32c */ + +void __cdecl FUN_0044b32c(int *param_1) + +{ + int *piVar1; + int iVar2; + + iVar2 = (**(code **)(*param_1 + 0x6c))(param_1,param_1[7],param_1[8]); + piVar1 = (int *)param_1[0x10]; + if ((piVar1 != (int *)0x0) && (iVar2 == 0)) { + (**(code **)(*piVar1 + 0x10))(piVar1,param_1[10],param_1[0xf],param_1[7],param_1[8]); + if ((int *)param_1[0x11] != (int *)0x0) { + FUN_0044aab0((int *)param_1[0x11],1); + FUN_0044ab9c((int *)param_1[0x11],param_1[10]); + FUN_0044aab0((int *)param_1[0x11],param_1[0xf]); + FUN_0044ab9c((int *)param_1[0x11],param_1[7]); + FUN_0044ab9c((int *)param_1[0x11],param_1[8]); + } + } + return; +} + + + +/* @0044b3c8 file=? name=FUN_0044b3c8 */ + +void __cdecl FUN_0044b3c8(int *param_1,int param_2,int param_3) + +{ + int iVar1; + int iVar2; + + iVar1 = param_1[5]; + iVar2 = param_1[6]; + FUN_0044bdfc(param_1,param_1[7],param_1[8],iVar1 + param_2,iVar2 + param_3,1); + param_1[7] = iVar1 + param_2; + param_1[8] = iVar2 + param_3; + return; +} + + + +/* @0044b428 file=? name=FUN_0044b428 */ + +void __cdecl FUN_0044b428(int *param_1,int param_2,int param_3) + +{ + int iVar1; + int iVar2; + + iVar1 = param_1[7]; + iVar2 = param_1[8]; + FUN_0044bdfc(param_1,param_1[7],param_1[8],iVar1 + param_2,iVar2 + param_3,1); + param_1[7] = iVar1 + param_2; + param_1[8] = iVar2 + param_3; + return; +} + + + +/* @0044b488 file=? name=FUN_0044b488 */ + +void __cdecl FUN_0044b488(int *param_1,int param_2,int param_3) + +{ + int iVar1; + int iVar2; + + iVar1 = param_1[5]; + iVar2 = param_1[6]; + FUN_0044bcf0(param_1,param_1[7],param_1[8],iVar1 + param_2,iVar2 + param_3); + param_1[7] = iVar1 + param_2; + param_1[8] = iVar2 + param_3; + return; +} + + + +/* @0044b4f8 file=? name=FUN_0044b4f8 */ + +void __cdecl FUN_0044b4f8(int *param_1,int param_2,int param_3) + +{ + int iVar1; + int iVar2; + + iVar2 = param_1[7] + param_2; + iVar1 = param_1[8] + param_3; + FUN_0044bcf0(param_1,param_1[7],param_1[8],iVar2,iVar1); + param_1[7] = iVar2; + param_1[8] = iVar1; + return; +} + + + +/* @0044b568 file=? name=FUN_0044b568 */ + +void __cdecl FUN_0044b568(int *param_1,int param_2,int param_3) + +{ + int local_c; + int local_8; + + local_c = param_1[7]; + local_8 = param_1[8]; + FUN_00407e04(&local_c,&local_c,param_1 + 5); + (**(code **)(*param_1 + 0x30))(param_1,local_c,param_3); + (**(code **)(*param_1 + 0x30))(param_1,param_2,param_3); + (**(code **)(*param_1 + 0x30))(param_1,param_2,local_8); + (**(code **)(*param_1 + 0x30))(param_1,local_c,local_8); + param_1[7] = param_2; + param_1[8] = param_3; + return; +} + + + +/* @0044b5e0 file=? name=FUN_0044b5e0 */ + +void __cdecl FUN_0044b5e0(int *param_1,int param_2,int param_3) + +{ + int local_c; + int local_8; + + local_c = param_1[7]; + local_8 = param_1[8]; + FUN_00407e04(&local_c,&local_c,param_1 + 5); + (**(code **)(*param_1 + 0x34))(param_1,0,param_3); + (**(code **)(*param_1 + 0x34))(param_1,param_2,0); + (**(code **)(*param_1 + 0x34))(param_1,0,-param_3); + (**(code **)(*param_1 + 0x34))(param_1,-param_2,0); + param_1[7] = param_2 + local_c; + param_1[8] = param_3 + local_8; + return; +} + + + +/* @0044b664 file=? name=FUN_0044b664 */ + +void __cdecl FUN_0044b664(int param_1,int param_2,int param_3) + +{ + int local_14; + int local_10; + int local_c; + int local_8; + + FUN_00407b9c(&local_14); + local_14 = *(int *)(param_1 + 0x1c); + local_10 = *(int *)(param_1 + 0x20); + local_c = *(int *)(param_1 + 0x14) + param_2; + local_8 = *(int *)(param_1 + 0x18) + param_3; + FUN_0044c074(param_1,local_14,local_10,local_c,local_8); + *(int *)(param_1 + 0x1c) = local_c; + *(int *)(param_1 + 0x20) = local_8; + return; +} + + + +/* @0044b6d0 file=? name=FUN_0044b6d0 */ + +void __cdecl FUN_0044b6d0(int param_1,int param_2,int param_3) + +{ + int local_14; + int local_10; + int local_c; + int local_8; + + FUN_00407b9c(&local_14); + local_14 = *(int *)(param_1 + 0x1c); + local_10 = *(int *)(param_1 + 0x20); + local_c = *(int *)(param_1 + 0x1c) + param_2; + local_8 = *(int *)(param_1 + 0x20) + param_3; + FUN_0044c074(param_1,local_14,local_10,local_c,local_8); + *(int *)(param_1 + 0x1c) = local_c; + *(int *)(param_1 + 0x20) = local_8; + return; +} + + + +/* @0044b73c file=? name=FUN_0044b73c */ + +void FUN_0044b73c(void) + +{ + return; +} + + + +/* @0044b744 file=? name=FUN_0044b744 */ + +void __cdecl +FUN_0044b744(int param_1,int param_2,int param_3,undefined4 param_4,undefined4 param_5, + undefined4 param_6,undefined4 param_7) + +{ + int iVar1; + int local_1c; + int local_18; + int local_14; + int local_10; + int local_c; + int local_8; + + FUN_00407bd0(&local_1c,param_4,param_5,param_6,param_7); + if (param_3 != 0) { + iVar1 = FUN_0044c174(param_1,&local_1c,&local_c,*(int *)(param_3 + 0xc),*(int *)(param_3 + 0x10) + ); + if (iVar1 != 0) { + (**(code **)(**(int **)(param_1 + 0x40) + 0x20)) + (*(int **)(param_1 + 0x40),*(undefined4 *)(param_1 + 0x28), + *(undefined4 *)(param_1 + 0x3c),param_2,local_c,local_8,param_3,local_1c,local_18, + local_14,local_10); + if (*(int **)(param_1 + 0x44) != (int *)0x0) { + FUN_0044aab0(*(int **)(param_1 + 0x44),4); + FUN_0044ab9c(*(int **)(param_1 + 0x44),*(int *)(param_1 + 0x28)); + FUN_0044aab0(*(int **)(param_1 + 0x44),*(undefined4 *)(param_1 + 0x3c)); + FUN_0044ab9c(*(int **)(param_1 + 0x44),param_2); + FUN_0044ab9c(*(int **)(param_1 + 0x44),local_c); + FUN_0044ab9c(*(int **)(param_1 + 0x44),local_8); + FUN_0044abf8(*(int **)(param_1 + 0x44),param_3); + FUN_0044ab9c(*(int **)(param_1 + 0x44),local_1c); + FUN_0044ab9c(*(int **)(param_1 + 0x44),local_18); + FUN_0044ab9c(*(int **)(param_1 + 0x44),local_14); + FUN_0044ab9c(*(int **)(param_1 + 0x44),local_10); + } + } + } + return; +} + + + +/* @0044b88c file=? name=FUN_0044b88c */ + +void __cdecl +FUN_0044b88c(int param_1,int param_2,int param_3,int param_4,undefined4 param_5,undefined4 param_6, + undefined4 param_7,undefined4 param_8) + +{ + int iVar1; + int local_1c; + int local_18; + int local_14; + int local_10; + int local_c; + int local_8; + + FUN_00407bd0(&local_1c,param_5,param_6,param_7,param_8); + if (param_4 != 0) { + iVar1 = FUN_0044c174(param_1,&local_1c,&local_c,*(int *)(param_4 + 0xc),*(int *)(param_4 + 0x10) + ); + if (iVar1 != 0) { + (**(code **)(**(int **)(param_1 + 0x40) + 0x24)) + (*(int **)(param_1 + 0x40),*(undefined4 *)(param_1 + 0x28),param_2, + *(undefined4 *)(param_1 + 0x3c),param_3,local_c,local_8,param_4,local_1c,local_18, + local_14,local_10); + if (*(int **)(param_1 + 0x44) != (int *)0x0) { + FUN_0044aab0(*(int **)(param_1 + 0x44),5); + FUN_0044ab9c(*(int **)(param_1 + 0x44),*(int *)(param_1 + 0x28)); + FUN_0044ab9c(*(int **)(param_1 + 0x44),param_2); + FUN_0044aab0(*(int **)(param_1 + 0x44),*(undefined4 *)(param_1 + 0x3c)); + FUN_0044ab9c(*(int **)(param_1 + 0x44),param_3); + FUN_0044ab9c(*(int **)(param_1 + 0x44),local_c); + FUN_0044ab9c(*(int **)(param_1 + 0x44),local_8); + FUN_0044abf8(*(int **)(param_1 + 0x44),param_4); + FUN_0044ab9c(*(int **)(param_1 + 0x44),local_1c); + FUN_0044ab9c(*(int **)(param_1 + 0x44),local_18); + FUN_0044ab9c(*(int **)(param_1 + 0x44),local_14); + FUN_0044ab9c(*(int **)(param_1 + 0x44),local_10); + } + } + } + return; +} + + + +/* @0044b9e8 file=? name=FUN_0044b9e8 */ + +void __cdecl +FUN_0044b9e8(int param_1,int param_2,int param_3,int *param_4,undefined4 param_5,undefined4 param_6, + undefined4 param_7,undefined4 param_8) + +{ + int iVar1; + int local_1c; + int local_18; + int local_14; + int local_10; + int local_c; + int local_8; + + FUN_00407bd0(&local_1c,param_5,param_6,param_7,param_8); + if (param_4 != (int *)0x0) { + iVar1 = FUN_0044c174(param_1,&local_1c,&local_c,*param_4,param_4[1]); + if (iVar1 != 0) { + (**(code **)(**(int **)(param_1 + 0x40) + 0x28)) + (*(int **)(param_1 + 0x40),*(undefined4 *)(param_1 + 0x3c),param_2,param_3,local_c, + local_8,param_4,local_1c,local_18,local_14,local_10); + if (*(int **)(param_1 + 0x44) != (int *)0x0) { + FUN_0044aab0(*(int **)(param_1 + 0x44),6); + FUN_0044aab0(*(int **)(param_1 + 0x44),*(undefined4 *)(param_1 + 0x3c)); + FUN_0044ab9c(*(int **)(param_1 + 0x44),param_2); + FUN_0044ab9c(*(int **)(param_1 + 0x44),param_3); + FUN_0044ab9c(*(int **)(param_1 + 0x44),local_c); + FUN_0044ab9c(*(int **)(param_1 + 0x44),local_8); + FUN_0044abf8(*(int **)(param_1 + 0x44),(int)param_4); + FUN_0044ab9c(*(int **)(param_1 + 0x44),local_1c); + FUN_0044ab9c(*(int **)(param_1 + 0x44),local_18); + FUN_0044ab9c(*(int **)(param_1 + 0x44),local_14); + FUN_0044ab9c(*(int **)(param_1 + 0x44),local_10); + } + } + } + return; +} + + + +/* @0044bb30 file=? name=FUN_0044bb30 */ + +void __cdecl +FUN_0044bb30(int param_1,int param_2,int *param_3,undefined4 param_4,undefined4 param_5, + undefined4 param_6,undefined4 param_7) + +{ + int iVar1; + int local_1c; + int local_18; + int local_14; + int local_10; + int local_c; + int local_8; + + FUN_00407bd0(&local_1c,param_4,param_5,param_6,param_7); + if (param_3 != (int *)0x0) { + iVar1 = FUN_0044c174(param_1,&local_1c,&local_c,*param_3,param_3[1]); + if (iVar1 != 0) { + (**(code **)(**(int **)(param_1 + 0x40) + 0x2c)) + (*(int **)(param_1 + 0x40),*(undefined4 *)(param_1 + 0x28), + *(undefined4 *)(param_1 + 0x3c),param_2,local_c,local_8,param_3,local_1c,local_18, + local_14,local_10); + if (*(int **)(param_1 + 0x44) != (int *)0x0) { + FUN_0044aab0(*(int **)(param_1 + 0x44),7); + FUN_0044ab9c(*(int **)(param_1 + 0x44),*(int *)(param_1 + 0x28)); + FUN_0044aab0(*(int **)(param_1 + 0x44),*(undefined4 *)(param_1 + 0x3c)); + FUN_0044ab9c(*(int **)(param_1 + 0x44),param_2); + FUN_0044ab9c(*(int **)(param_1 + 0x44),local_c); + FUN_0044ab9c(*(int **)(param_1 + 0x44),local_8); + FUN_0044abf8(*(int **)(param_1 + 0x44),(int)param_3); + FUN_0044ab9c(*(int **)(param_1 + 0x44),local_1c); + FUN_0044ab9c(*(int **)(param_1 + 0x44),local_18); + FUN_0044ab9c(*(int **)(param_1 + 0x44),local_14); + FUN_0044ab9c(*(int **)(param_1 + 0x44),local_10); + } + } + } + return; +} + + + +/* @0044bc78 file=? name=FUN_0044bc78 */ + +void __cdecl FUN_0044bc78(int param_1,undefined4 param_2,undefined4 param_3) + +{ + int *piVar1; + + piVar1 = *(int **)(param_1 + 0x40); + if (piVar1 != (int *)0x0) { + (**(code **)(*piVar1 + 0xc))(piVar1,param_2,param_3); + } + return; +} + + + +/* @0044bc98 file=? name=FUN_0044bc98 */ + +void __cdecl FUN_0044bc98(int param_1,undefined4 param_2) + +{ + *(undefined4 *)(param_1 + 0x44) = param_2; + return; +} + + + +/* @0044bca8 file=? name=FUN_0044bca8 */ + +void __cdecl FUN_0044bca8(int param_1) + +{ + *(undefined4 *)(param_1 + 0x44) = 0; + return; +} + + + +/* @0044bcb8 file=? name=FUN_0044bcb8 */ + +uint __cdecl FUN_0044bcb8(int param_1,int param_2,int param_3) + +{ + uint uVar1; + + uVar1 = 0; + if (param_2 < *(int *)(param_1 + 0x2c)) { + uVar1 = 1; + } + else if (*(int *)(param_1 + 0x34) < param_2) { + uVar1 = 2; + } + if (param_3 < *(int *)(param_1 + 0x30)) { + uVar1 = uVar1 | 4; + } + else if (*(int *)(param_1 + 0x38) < param_3) { + uVar1 = uVar1 | 8; + } + return uVar1; +} + + + +/* @0044bcf0 file=? name=FUN_0044bcf0 */ + +void __cdecl FUN_0044bcf0(int *param_1,int param_2,int param_3,int param_4,int param_5) + +{ + FUN_0044bdfc(param_1,param_2,param_3,param_4,param_5,1); + FUN_0044bdfc(param_1,param_2 + -1,param_3,param_4 + -1,param_5,1); + FUN_0044bdfc(param_1,param_2,param_3 + 1,param_4,param_5 + 1,1); + FUN_0044bdfc(param_1,param_2 + 1,param_3,param_4 + 1,param_5,1); + FUN_0044bdfc(param_1,param_2,param_3 + -1,param_4,param_5 + -1,1); + return; +} + + + +/* @0044bdfc file=? name=FUN_0044bdfc */ + +void __cdecl FUN_0044bdfc(int *param_1,int param_2,int param_3,int param_4,int param_5,int param_6) + +{ + bool bVar1; + bool bVar2; + bool bVar3; + uint uVar4; + int iVar5; + int iVar6; + uint uVar7; + uint local_8; + + bVar3 = false; + bVar1 = false; + bVar2 = false; + if (param_1[0x10] != 0) { + uVar4 = (**(code **)(*param_1 + 0x6c))(param_1,param_2,param_3); + local_8 = (**(code **)(*param_1 + 0x6c))(param_1,param_4,param_5); + while (iVar6 = param_3, iVar5 = param_2, local_8 != 0 || uVar4 != 0) { + if ((local_8 & uVar4) != 0) { + return; + } + uVar7 = uVar4; + if (uVar4 == 0) { + param_2 = param_4; + param_3 = param_5; + param_4 = iVar5; + param_5 = iVar6; + bVar1 = (bool)(bVar1 ^ 1); + uVar7 = local_8; + local_8 = uVar4; + bVar2 = bVar3; + } + if ((uVar7 & 1) == 0) { + if ((uVar7 & 2) == 0) { + if ((uVar7 & 8) == 0) { + if ((uVar7 & 4) != 0) { + bVar3 = true; + param_2 = param_2 + ((param_4 - param_2) * (param_1[0xc] - param_3)) / + (param_5 - param_3); + param_3 = param_1[0xc]; + } + } + else { + param_2 = param_2 + ((param_4 - param_2) * (param_1[0xe] - param_3)) / + (param_5 - param_3); + bVar3 = true; + param_3 = param_1[0xe]; + } + } + else { + iVar5 = param_1[0xd] - param_2; + iVar6 = param_4 - param_2; + bVar3 = true; + param_2 = param_1[0xd]; + param_3 = param_3 + ((param_5 - param_3) * iVar5) / iVar6; + } + } + else { + iVar5 = param_1[0xb] - param_2; + iVar6 = param_4 - param_2; + bVar3 = true; + param_2 = param_1[0xb]; + param_3 = param_3 + ((param_5 - param_3) * iVar5) / iVar6; + } + uVar4 = (**(code **)(*param_1 + 0x6c))(param_1,param_2,param_3); + } + if (bVar1) { + param_2 = param_4; + param_3 = param_5; + param_4 = iVar5; + param_5 = iVar6; + bVar2 = bVar3; + } + if (bVar2) { + param_6 = 1; + } + (**(code **)(*(int *)param_1[0x10] + 0x14)) + ((int *)param_1[0x10],param_1[10],param_1[0xf],param_2,param_3,param_4,param_5,param_6 + ); + if ((int *)param_1[0x11] != (int *)0x0) { + FUN_0044aab0((int *)param_1[0x11],2); + FUN_0044ab9c((int *)param_1[0x11],param_1[10]); + FUN_0044aab0((int *)param_1[0x11],param_1[0xf]); + FUN_0044ab9c((int *)param_1[0x11],param_2); + FUN_0044ab9c((int *)param_1[0x11],param_3); + FUN_0044ab9c((int *)param_1[0x11],param_4); + FUN_0044ab9c((int *)param_1[0x11],param_5); + FUN_0044ab58((int *)param_1[0x11],param_6); + } + } + return; +} + + + +/* @0044c074 file=? name=FUN_0044c074 */ + +void __cdecl FUN_0044c074(int param_1,int param_2,int param_3,int param_4,int param_5) + +{ + bool bVar1; + int iVar2; + int iVar3; + + iVar3 = param_3; + iVar2 = param_2; + if (*(int *)(param_1 + 0x40) != 0) { + if (param_4 < param_2) { + param_2 = param_4; + param_4 = iVar2; + } + if (param_5 < param_3) { + param_3 = param_5; + param_5 = iVar3; + } + FUN_00407cd0(¶m_2,(int *)(param_1 + 0x2c),¶m_2); + bVar1 = true; + if ((param_2 <= param_4) && (param_3 <= param_5)) { + bVar1 = false; + } + if (!bVar1) { + (**(code **)(**(int **)(param_1 + 0x40) + 0x18)) + (*(int **)(param_1 + 0x40),*(undefined4 *)(param_1 + 0x28), + *(undefined4 *)(param_1 + 0x3c),param_2,param_3,param_4,param_5); + if (*(int **)(param_1 + 0x44) != (int *)0x0) { + FUN_0044aab0(*(int **)(param_1 + 0x44),3); + FUN_0044ab9c(*(int **)(param_1 + 0x44),*(int *)(param_1 + 0x28)); + FUN_0044aab0(*(int **)(param_1 + 0x44),*(undefined4 *)(param_1 + 0x3c)); + FUN_0044ab9c(*(int **)(param_1 + 0x44),param_2); + FUN_0044ab9c(*(int **)(param_1 + 0x44),param_3); + FUN_0044ab9c(*(int **)(param_1 + 0x44),param_4); + FUN_0044ab9c(*(int **)(param_1 + 0x44),param_5); + } + } + } + return; +} + + + +/* @0044c174 file=? name=FUN_0044c174 */ + +undefined4 __cdecl FUN_0044c174(int param_1,int *param_2,int *param_3,int param_4,int param_5) + +{ + bool bVar1; + int iVar2; + int *piVar3; + int *piVar4; + int local_34 [4]; + int local_24 [4]; + int local_14; + int local_10; + int local_c; + int local_8; + + if (*(int *)(param_1 + 0x40) != 0) { + FUN_00407b9c(local_24); + if (*param_2 < 0) { + *param_2 = 0; + } + if (param_4 <= param_2[2]) { + param_2[2] = param_4 + -1; + } + if (param_2[1] < 0) { + param_2[1] = 0; + } + if (param_5 <= param_2[3]) { + param_2[3] = param_5 + -1; + } + local_c = *param_2; + local_8 = param_2[1]; + local_14 = param_2[2]; + local_10 = param_2[3]; + FUN_00407e04(&local_14,&local_14,param_2); + local_24[0] = *(int *)(param_1 + 0x1c); + local_24[1] = *(int *)(param_1 + 0x20); + local_24[2] = *(int *)(param_1 + 0x1c); + local_24[3] = *(int *)(param_1 + 0x20); + FUN_00407de3(local_24 + 2,local_24 + 2,&local_14); + FUN_00407b9c(local_34); + piVar3 = local_24; + piVar4 = local_34; + for (iVar2 = 4; iVar2 != 0; iVar2 = iVar2 + -1) { + *piVar4 = *piVar3; + piVar3 = piVar3 + 1; + piVar4 = piVar4 + 1; + } + FUN_00407cd0(local_24,local_34,(int *)(param_1 + 0x2c)); + bVar1 = true; + if ((local_24[0] <= local_24[2]) && (local_24[1] <= local_24[3])) { + bVar1 = false; + } + if (!bVar1) { + *param_3 = local_24[0]; + param_3[1] = local_24[1]; + local_14 = local_24[2]; + local_10 = local_24[3]; + FUN_00407e04(&local_14,&local_14,local_24); + *param_2 = local_c; + param_2[1] = local_8; + param_2[2] = local_c; + param_2[3] = local_8; + FUN_00407de3(param_2 + 2,param_2 + 2,&local_14); + return 1; + } + } + return 0; +} + + + +/* @0044c2d0 file=? name=FUN_0044c2d0 */ + +void __cdecl FUN_0044c2d0(undefined4 *param_1,undefined4 param_2) + +{ + *param_1 = &PTR_FUN_004ef68c; + param_1[1] = param_2; + return; +} + + + +/* @0044c2e4 file=? name=FUN_0044c2e4 */ + +void __cdecl FUN_0044c2e4(int *param_1,byte param_2) + +{ + if ((param_1 != (int *)0x0) && (*param_1 = (int)&PTR_FUN_004ef68c, (param_2 & 1) != 0)) { + FUN_004022d0(param_1); + } + return; +} + + + +/* @0044c304 file=? name=FUN_0044c304 */ + +undefined4 FUN_0044c304(void) + +{ + return 1; +} + + + +/* @0044c310 file=? name=FUN_0044c310 */ + +undefined4 __cdecl FUN_0044c310(undefined4 param_1,char *param_2,undefined4 *param_3) + +{ + int iVar1; + + iVar1 = FUN_004d4b58(param_2,s_ModeAlwaysActive_004ef678); + if (iVar1 == 0) { + *param_3 = 0xffffffff; + return 1; + } + *param_3 = 0; + return 0; +} + + + +/* @0044c344 file=? name=FUN_0044c344 */ + +undefined4 * __cdecl +FUN_0044c344(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) + +{ + FUN_004178cc(param_1,param_2); + *param_1 = &PTR_FUN_004ef8d4; + FUN_0044ca72(param_1 + 4,param_1); + param_1[3] = param_3; + (**(code **)(param_1[4] + 4))(param_1 + 4,param_4); + return param_1; +} + + + +/* @0044c388 file=? name=FUN_0044c388 */ + +void __cdecl FUN_0044c388(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004ef8d4; + FUN_0044ca91(param_1 + 4,2); + FUN_0041790c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0044c3c4 file=munga/controls.cpp name=FUN_0044c3c4 */ + +void FUN_0044c3c4(void) + +{ + FUN_0040385c(s_ControlsInstance__Update_not_ove_004ef6cc,s_d__tesla_bt_munga_CONTROLS_CPP_004ef6f5 + ,0x3d); + return; +} + + + +/* @0044c3e0 file=? name=FUN_0044c3e0 */ + +void __cdecl FUN_0044c3e0(undefined4 *param_1) + +{ + if (param_1 != (undefined4 *)0x0) { + (**(code **)*param_1)(param_1,3); + } + return; +} + + + +/* @0044c3f8 file=? name=FUN_0044c3f8 */ + +undefined4 * __cdecl FUN_0044c3f8(undefined4 *param_1) + +{ + FUN_004178cc(param_1,0x18); + *param_1 = &PTR_FUN_004ef8c0; + FUN_0044cabd(param_1 + 3,param_1); + return param_1; +} + + + +/* @0044c424 file=? name=FUN_0044c424 */ + +void __cdecl FUN_0044c424(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004ef8c0; + (**(code **)(*param_1 + 0xc))(param_1,0); + FUN_0044cadc(param_1 + 3,2); + FUN_0041790c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0044c46c file=? name=FUN_0044c46c */ + +void __cdecl FUN_0044c46c(int param_1,uint param_2) + +{ + undefined4 *puVar1; + int local_10 [3]; + + FUN_0044cb72(local_10,param_1 + 0xc); + while( true ) { + puVar1 = (undefined4 *)(**(code **)(local_10[0] + 0x28))(local_10); + if (puVar1 == (undefined4 *)0x0) break; + puVar1[3] = puVar1[3] & ~param_2; + if ((puVar1[3] == 0) && (puVar1 != (undefined4 *)0x0)) { + (**(code **)*puVar1)(puVar1,3); + } + } + FUN_0044cbb0(local_10,2); + return; +} + + + +/* @0044c4d0 file=? name=FUN_0044c4d0 */ + +void __cdecl FUN_0044c4d0(int param_1,undefined4 param_2,uint param_3) + +{ + int *piVar1; + int local_10 [3]; + + FUN_0044cb72(local_10,param_1 + 0xc); + while( true ) { + piVar1 = (int *)(**(code **)(local_10[0] + 0x28))(local_10); + if (piVar1 == (int *)0x0) break; + if ((piVar1[3] & param_3) != 0) { + (**(code **)(*piVar1 + 0xc))(piVar1,param_2); + } + } + FUN_0044cbb0(local_10,2); + return; +} + + + +/* @0044c52c file=? name=FUN_0044c52c */ + +undefined4 __cdecl FUN_0044c52c(int param_1,uint param_2) + +{ + int iVar1; + undefined4 uVar2; + int local_10 [3]; + + FUN_0044cb72(local_10,param_1 + 0xc); + do { + iVar1 = (**(code **)(local_10[0] + 0x28))(local_10); + if (iVar1 == 0) { + uVar2 = 0; + FUN_0044cbb0(local_10,2); + return uVar2; + } + } while ((*(uint *)(iVar1 + 0xc) & param_2) == 0); + uVar2 = 1; + FUN_0044cbb0(local_10,2); + return uVar2; +} + + + +/* @0044c594 file=? name=FUN_0044c594 */ + +undefined4 * __cdecl FUN_0044c594(undefined4 *param_1,undefined4 param_2,undefined4 param_3) + +{ + FUN_004178cc(param_1,param_2); + *param_1 = &PTR_FUN_004e3320; + param_1[3] = param_3; + *param_1 = &PTR_FUN_004ef894; + param_1[4] = 0; + param_1[5] = 0; + param_1[6] = 0; + param_1[7] = 0; + param_1[8] = DAT_004ef6c4; + DAT_004ef6c4 = param_1; + return param_1; +} + + + +/* @0044c5e4 file=? name=FUN_0044c5e4 */ + +void __cdecl FUN_0044c5e4(int *param_1,byte param_2) + +{ + int *piVar1; + int *piVar2; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004ef894; + piVar1 = (int *)0x0; + for (piVar2 = DAT_004ef6c4; piVar2 != (int *)0x0; piVar2 = (int *)piVar2[8]) { + if (param_1 == piVar2) { + if (piVar1 == (int *)0x0) { + DAT_004ef6c4 = (int *)param_1[8]; + } + else { + piVar1[8] = param_1[8]; + } + break; + } + piVar1 = piVar2; + } + FUN_0041790c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0044c640 file=munga/controls.cpp name=FUN_0044c640 */ + +void FUN_0044c640(void) + +{ + FUN_0040385c(s_ControlsManager__Remove_should_n_004ef724,s_d__tesla_bt_munga_CONTROLS_CPP_004ef753 + ,0x120); + return; +} + + + +/* @0044c65c file=munga/controls.cpp name=FUN_0044c65c */ + +void FUN_0044c65c(void) + +{ + FUN_0040385c(s_ControlsManager__Execute_should_n_004ef772, + s_d__tesla_bt_munga_CONTROLS_CPP_004ef7a2,0x126); + return; +} + + + +/* @0044c678 file=? name=FUN_0044c678 */ + +void __cdecl +FUN_0044c678(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5 + ,uint param_6,uint param_7) + +{ + int iVar1; + + *(undefined4 *)(param_1 + 0x14) = param_3; + *(undefined4 *)(param_1 + 0x18) = param_5; + *(undefined4 *)(param_1 + 0x10) = param_2; + *(undefined4 *)(param_1 + 0x1c) = param_4; + iVar1 = *(int *)(DAT_004efc94 + 0x50); + *(undefined4 *)(iVar1 + 8) = *(undefined4 *)(iVar1 + 4); + *(uint *)(iVar1 + 4) = *(uint *)(iVar1 + 4) & ~param_6; + *(undefined4 *)(iVar1 + 8) = *(undefined4 *)(iVar1 + 4); + *(uint *)(iVar1 + 4) = *(uint *)(iVar1 + 4) | param_7; + return; +} + + + +/* @0044c6fc file=? name=FUN_0044c6fc */ + +void FUN_0044c6fc(void) + +{ + return; +} + + + +/* @0044c704 file=? name=FUN_0044c704 */ + +void __cdecl FUN_0044c704(int param_1) + +{ + FUN_0041a1a4(**(int **)(param_1 + 0xc),0x4ef690); + return; +} + + + +/* @0044c720 file=? name=FUN_0044c720 */ + +void FUN_0044c720(void) + +{ + int *piVar1; + + for (piVar1 = DAT_004ef6c4; piVar1 != (int *)0x0; piVar1 = (int *)piVar1[8]) { + (**(code **)(*piVar1 + 0x1c))(piVar1); + } + return; +} + + + +/* @0044c73c file=? name=FUN_0044c73c */ + +void FUN_0044c73c(void) + +{ + return; +} + + + +/* @0044c744 file=? name=FUN_0044c744 */ + +undefined4 * __cdecl +FUN_0044c744(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4, + undefined4 param_5,undefined4 param_6) + +{ + FUN_004178cc(param_1,0x52); + *param_1 = &PTR_FUN_004ef888; + param_1[3] = DAT_004ef6c8; + DAT_004ef6c8 = DAT_004ef6c8 + 1; + param_1[4] = param_2; + param_1[0xb] = param_3; + param_1[0xd] = param_4; + param_1[0xe] = param_5; + param_1[0xc] = param_6; + *(undefined1 *)(param_1 + 5) = 0; + param_1[10] = 0; + return param_1; +} + + + +/* @0044c798 file=? name=FUN_0044c798 */ + +void __cdecl FUN_0044c798(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004ef888; + FUN_0041790c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0044c7c4 file=? name=FUN_0044c7c4 */ + +undefined4 FUN_0044c7c4(void) + +{ + return 1; +} + + + +/* @0044c7d0 file=? name=FUN_0044c7d0 */ + +void __cdecl FUN_0044c7d0(int param_1,int param_2,undefined1 param_3) + +{ + int iVar1; + int iVar2; + undefined4 local_14; + undefined4 local_10; + undefined4 local_c; + undefined4 local_8; + + if (param_2 == *(int *)(param_1 + 0x2c)) { + iVar2 = FUN_004d4a78(*(char **)(param_1 + 0x10)); + if (0x10 < iVar2) { + iVar2 = 0x10; + } + if (iVar2 < *(int *)(param_1 + 0x28)) { + *(int *)(param_1 + 0x28) = iVar2; + *(undefined1 *)(param_1 + 0x14 + iVar2) = 0; + } + if (*(int *)(param_1 + 0x28) < iVar2) { + iVar1 = *(int *)(param_1 + 0x28); + *(int *)(param_1 + 0x28) = *(int *)(param_1 + 0x28) + 1; + *(undefined1 *)(param_1 + 0x14 + iVar1) = param_3; + *(undefined1 *)(param_1 + 0x14 + *(int *)(param_1 + 0x28)) = 0; + } + else { + if (1 < iVar2) { + FUN_004d493c((undefined4 *)(param_1 + 0x14),(undefined4 *)(param_1 + 0x15),iVar2 - 1); + } + *(undefined1 *)(param_1 + 0x13 + iVar2) = param_3; + } + iVar2 = FUN_004d4bec((char *)(param_1 + 0x14),*(char **)(param_1 + 0x10),iVar2); + if (iVar2 == 0) { + local_8 = *(undefined4 *)(param_1 + 0x30); + local_10 = *(undefined4 *)(param_1 + 0x38); + local_14 = 0x10; + local_c = 1; + (**(code **)(**(int **)(param_1 + 0x34) + 0xc))(*(int **)(param_1 + 0x34),&local_14); + *(undefined1 *)(param_1 + 0x14) = 0; + *(undefined4 *)(param_1 + 0x28) = 0; + } + } + return; +} + + + +/* @0044c8a0 file=? name=FUN_0044c8a0 */ + +undefined4 * __cdecl FUN_0044c8a0(undefined4 *param_1) + +{ + FUN_004178cc(param_1,0x53); + *param_1 = &PTR_FUN_004ef87c; + FUN_0044cb08(param_1 + 3,param_1); + return param_1; +} + + + +/* @0044c8cc file=? name=FUN_0044c8cc */ + +void __cdecl FUN_0044c8cc(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004ef87c; + FUN_0044c970((int)param_1,0); + FUN_0044cb27(param_1 + 3,2); + FUN_0041790c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0044c914 file=? name=FUN_0044c914 */ + +undefined4 FUN_0044c914(void) + +{ + return 1; +} + + + +/* @0044c920 file=? name=FUN_0044c920 */ + +undefined4 __cdecl +FUN_0044c920(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5 + ,undefined4 param_6) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00402298(0x3c); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_0044c744(puVar1,param_2,param_3,param_4,param_5,param_6); + } + (**(code **)(*(int *)(param_1 + 0xc) + 4))(param_1 + 0xc,puVar1); + return puVar1[3]; +} + + + +/* @0044c970 file=? name=FUN_0044c970 */ + +void __cdecl FUN_0044c970(int param_1,int param_2) + +{ + undefined4 *puVar1; + int local_10 [3]; + + FUN_0044cbfb(local_10,param_1 + 0xc); + do { + do { + puVar1 = (undefined4 *)(**(code **)(local_10[0] + 0x28))(local_10); + if (puVar1 == (undefined4 *)0x0) goto LAB_0044c9be; + } while ((param_2 != 0) && (param_2 != puVar1[3])); + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + } while (param_2 == 0); +LAB_0044c9be: + FUN_0044cc39(local_10,2); + return; +} + + + /* @0044c9d4 file=? name=FUN_0044c9d4 */ void __cdecl FUN_0044c9d4(int param_1,int param_2,undefined1 param_3) @@ -1734,6 +3177,52 @@ undefined4 __cdecl FUN_0044e488(int param_1,int param_2) +/* @0044e5a8 file=? name=FUN_0044e5a8 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_0044e5a8(int param_1) + +{ + int iVar1; + undefined4 *puVar2; + int *piVar3; + + if (*(int *)(param_1 + 0x88) == 0xb) { + iVar1 = FUN_0041d8a8(*(int **)(param_1 + 0x20)); + if ((iVar1 == 0) && (iVar1 = FUN_0041b07c(*(int *)(param_1 + 0x60),2), iVar1 == 0)) { + iVar1 = FUN_0041b07c(*(int *)(param_1 + 0x60),1); + if (iVar1 == 0) { + piVar3 = (int *)FUN_00414b60(); + if (_DAT_0044e6bc < (float)(*piVar3 - *(int *)(param_1 + 0x1c)) / DAT_0052140c) { + FUN_0041bbd8(param_1 + 0x74,2); + (**(code **)(**(int **)(param_1 + 0x20) + 0x2c)) + (*(int **)(param_1 + 0x20),s_MUNGA_MARKER___Starting_renderer_004effa5); + (**(code **)(**(int **)(param_1 + 0x20) + 0x30))(*(int **)(param_1 + 0x20),1); + } + } + else { + puVar2 = (undefined4 *)FUN_00414b60(); + *(undefined4 *)(param_1 + 0x1c) = *puVar2; + } + } + } + else { + iVar1 = FUN_0041b07c(*(int *)(param_1 + 0x60),3); + if (iVar1 == 0) { + if (((*(int *)(param_1 + 0xcc) == 0) || (*(int *)(param_1 + 0x88) != 5)) && + (iVar1 = FUN_0041d8a8(*(int **)(param_1 + 0x20)), iVar1 != 0)) { + return; + } + *(undefined4 *)(param_1 + 0xcc) = 1; + (**(code **)(**(int **)(param_1 + 100) + 0x14))(*(int **)(param_1 + 100)); + } + } + return; +} + + + /* @0044e6c0 file=? name=FUN_0044e6c0 */ void __cdecl FUN_0044e6c0(int param_1) @@ -7209,7 +8698,7 @@ FUN_00454a70(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined undefined4 local_8; FUN_004530ec(param_1,param_2,param_3); - *param_1 = &PTR_LAB_004f1910; + *param_1 = &PTR_FUN_004f1910; iVar1 = FUN_00498448(s_PNAME1_bgf_004f142a,0); param_1[0xe] = iVar1; iVar1 = FUN_00498448(s_PNAME2_bgf_004f1435,0); @@ -7380,6 +8869,65 @@ FUN_00454a70(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined +/* @004551c0 file=? name=FUN_004551c0 */ + +void __cdecl FUN_004551c0(int *param_1,byte param_2) + +{ + int iVar1; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f1910; + FUN_0048a130(param_1[0x26],param_1[0x28]); + FUN_00489e58(param_1[0x26]); + FUN_004898f8((int *)param_1[0x28]); + FUN_004898b8((int *)param_1[0x26]); + FUN_0048a130(param_1[0x27],param_1[0x29]); + FUN_00489e58(param_1[0x27]); + FUN_004898f8((int *)param_1[0x29]); + FUN_004898b8((int *)param_1[0x27]); + for (iVar1 = 0; iVar1 < param_1[7]; iVar1 = iVar1 + 1) { + FUN_0048a130(*(int *)(param_1[0x2c] + iVar1 * 4),*(int *)(param_1[0x2e] + iVar1 * 4)); + FUN_0048a068(*(int *)(param_1[0x2b] + iVar1 * 4),*(int *)(param_1[0x2c] + iVar1 * 4)); + FUN_004898f8(*(int **)(param_1[0x2e] + iVar1 * 4)); + FUN_004898b8(*(int **)(param_1[0x2c] + iVar1 * 4)); + FUN_0048a130(*(int *)(param_1[0x2b] + iVar1 * 4),*(int *)(param_1[0x2d] + iVar1 * 4)); + FUN_0048a068(param_1[0x2a],*(int *)(param_1[0x2b] + iVar1 * 4)); + FUN_004898f8(*(int **)(param_1[0x2d] + iVar1 * 4)); + FUN_004898b8(*(int **)(param_1[0x2b] + iVar1 * 4)); + } + if ((int *)param_1[0x2c] != (int *)0x0) { + FUN_004022e8((int *)param_1[0x2c]); + } + if ((int *)param_1[0x2b] != (int *)0x0) { + FUN_004022e8((int *)param_1[0x2b]); + } + if ((int *)param_1[0x2e] != (int *)0x0) { + FUN_004022e8((int *)param_1[0x2e]); + } + if ((int *)param_1[0x2d] != (int *)0x0) { + FUN_004022e8((int *)param_1[0x2d]); + } + if (param_1[0x2a] != 0) { + FUN_00489e58(param_1[0x2a]); + FUN_004898b8((int *)param_1[0x2a]); + } + if ((int *)param_1[0xb] != (int *)0x0) { + FUN_004022e8((int *)param_1[0xb]); + } + if ((int *)param_1[10] != (int *)0x0) { + FUN_004022e8((int *)param_1[10]); + } + FUN_00453198(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + /* @004553ac file=? name=FUN_004553ac */ void __cdecl FUN_004553ac(int param_1) @@ -8346,7 +9894,7 @@ FUN_0045635c(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined { FUN_004530ec(param_1,param_2,param_3); - *param_1 = &PTR_LAB_004f1808; + *param_1 = &PTR_FUN_004f1808; if (param_6 == (undefined4 *)0x0) { param_1[9] = 1; param_1[8] = param_1 + 9; @@ -8364,6 +9912,23 @@ FUN_0045635c(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined +/* @004563d0 file=? name=FUN_004563d0 */ + +void __cdecl FUN_004563d0(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f1808; + FUN_00453198(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + /* @004563fc file=? name=FUN_004563fc */ undefined4 __cdecl FUN_004563fc(int param_1) @@ -8413,7 +9978,7 @@ FUN_004564a8(undefined4 *param_1,undefined4 param_2,undefined4 param_3,float par float10 fVar1; FUN_004530ec(param_1,param_2,param_3); - *param_1 = &PTR_LAB_004f17f0; + *param_1 = &PTR_FUN_004f17f0; param_1[7] = 0; fVar1 = FUN_004dcd00((double)param_5); param_1[8] = (uint)((float10)_DAT_00456528 < fVar1); @@ -8426,6 +9991,23 @@ FUN_004564a8(undefined4 *param_1,undefined4 param_2,undefined4 param_3,float par +/* @0045652c file=? name=FUN_0045652c */ + +void __cdecl FUN_0045652c(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f17f0; + FUN_00453198(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + /* @00456558 file=? name=FUN_00456558 */ undefined4 __cdecl FUN_00456558(int param_1) @@ -8437,1870 +10019,3 @@ undefined4 __cdecl FUN_00456558(int param_1) -/* @0045656c file=munga_l4/l4vidrnd.cpp name=FUN_0045656c */ - -void __cdecl FUN_0045656c(int param_1) - -{ - float fVar1; - - if (*(int *)(param_1 + 0x1c) != 2) { - fVar1 = *(float *)(*(int *)(param_1 + 0x10) + 0x80); - if (*(int *)(param_1 + 0x1c) == 0) { - if (*(float *)(param_1 + 0x24) < fVar1) { - *(undefined4 *)(param_1 + 0x2c) = 1; - if (*(int *)(param_1 + 0x20) != 0) { - *(undefined4 *)(param_1 + 0x1c) = 1; - return; - } - *(undefined4 *)(param_1 + 0x1c) = 2; - FUN_0045a764(*(int *)(param_1 + 0x10),param_1); - return; - } - } - else if (*(int *)(param_1 + 0x1c) == 1) { - if (*(float *)(param_1 + 0x28) < fVar1) { - *(undefined4 *)(param_1 + 0x2c) = 0; - *(undefined4 *)(param_1 + 0x1c) = 2; - FUN_0045a764(*(int *)(param_1 + 0x10),param_1); - return; - } - } - else { - FUN_0040385c(s_invalid_myState_004f14f0,s_d__tesla_bt_munga_l4_L4VIDRND_CP_004f1500,0xfb4); - } - } - return; -} - - - -/* @00456610 file=? name=FUN_00456610 */ - -undefined4 * __cdecl -FUN_00456610(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4, - undefined4 param_5,undefined4 *param_6,undefined4 param_7,undefined4 param_8, - undefined4 param_9) - -{ - FUN_004530ec(param_1,param_2,param_3); - *param_1 = &PTR_FUN_004f17d8; - if (param_6 == (undefined4 *)0x0) { - param_1[7] = 1; - param_1[9] = param_1 + 7; - param_1[8] = 0; - } - else { - param_1[9] = param_6; - param_1[8] = *param_6; - } - param_1[0xc] = param_9; - param_1[0xd] = param_7; - param_1[0xe] = param_8; - param_1[10] = param_5; - param_1[0x10] = param_4; - param_1[0x11] = param_1[0xd]; - return param_1; -} - - - -/* @00456684 file=? name=FUN_00456684 */ - -void __cdecl FUN_00456684(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_004f17d8; - FUN_00453198(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @004566b0 file=? name=FUN_004566b0 */ - -undefined4 __cdecl FUN_004566b0(int param_1) - -{ - FUN_004531c4(param_1); - return 1; -} - - - -/* @004566c4 file=? name=FUN_004566c4 */ - -void __cdecl FUN_004566c4(int param_1) - -{ - float fVar1; - float10 fVar2; - - if (**(int **)(param_1 + 0x24) != *(int *)(param_1 + 0x20)) { - if (*(int *)(param_1 + 0x20) == 0) { - *(undefined4 *)(param_1 + 0x3c) = *(undefined4 *)(*(int *)(param_1 + 0x10) + 0x80); - *(undefined4 *)(param_1 + 0x44) = *(undefined4 *)(param_1 + 0x34); - *(undefined4 *)(param_1 + 0x2c) = *(undefined4 *)(param_1 + 0x28); - } - *(undefined4 *)(param_1 + 0x20) = **(undefined4 **)(param_1 + 0x24); - } - if ((*(int *)(param_1 + 0x20) != 0) && (0 < *(int *)(param_1 + 0x2c))) { - fVar1 = *(float *)(*(int *)(param_1 + 0x10) + 0x80); - if ((*(float *)(param_1 + 0x38) <= *(float *)(param_1 + 0x44)) && - (*(int *)(param_1 + 0x2c) = *(int *)(param_1 + 0x2c) + -1, 0 < *(int *)(param_1 + 0x2c))) { - *(float *)(param_1 + 0x3c) = fVar1; - } - *(float *)(param_1 + 0x44) = - ((fVar1 - *(float *)(param_1 + 0x3c)) * - (*(float *)(param_1 + 0x38) - *(float *)(param_1 + 0x34))) / *(float *)(param_1 + 0x40) + - *(float *)(param_1 + 0x34); - if (*(int *)(param_1 + 0x30) == 1) { - fVar2 = FUN_004dd138((double)*(float *)(param_1 + 0x44)); - *(float *)(param_1 + 0x44) = (float)fVar2; - } - if (*(float *)(param_1 + 0x38) < *(float *)(param_1 + 0x44)) { - *(undefined4 *)(param_1 + 0x44) = *(undefined4 *)(param_1 + 0x38); - } - } - return; -} - - - -/* @00456778 file=? name=FUN_00456778 */ - -undefined4 * __cdecl -FUN_00456778(undefined4 *param_1,undefined4 param_2,undefined4 param_3,int *param_4,int param_5) - -{ - FUN_004530ec(param_1,param_2,param_3); - *param_1 = &PTR_FUN_004f17c0; - param_1[7] = param_4; - param_1[9] = (uint)(*param_4 == 0); - if (param_5 == 0) { - param_1[8] = param_1[7]; - } - else { - param_1[8] = param_5; - } - param_1[10] = (uint)(*(int *)param_1[8] == 0); - return param_1; -} - - - -/* @004567d4 file=? name=FUN_004567d4 */ - -void __cdecl FUN_004567d4(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_004f17c0; - FUN_00453198(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @00456800 file=? name=FUN_00456800 */ - -undefined4 __cdecl FUN_00456800(int param_1) - -{ - FUN_004531c4(param_1); - return 1; -} - - - -/* @00456814 file=? name=FUN_00456814 */ - -void __cdecl FUN_00456814(int param_1) - -{ - if ((**(int **)(param_1 + 0x1c) != *(int *)(param_1 + 0x24)) || - (**(int **)(param_1 + 0x20) != *(int *)(param_1 + 0x28))) { - *(int *)(param_1 + 0x24) = **(int **)(param_1 + 0x1c); - *(undefined4 *)(param_1 + 0x28) = **(undefined4 **)(param_1 + 0x20); - if ((*(int *)(param_1 + 0x24) != 0) || (*(int *)(param_1 + 0x28) != 0)) { - FUN_0045a7a8(*(int *)(param_1 + 0x10),2); - return; - } - FUN_0045a7a8(*(int *)(param_1 + 0x10),3); - } - return; -} - - - -/* @00456868 file=? name=FUN_00456868 */ - -undefined4 * __cdecl -FUN_00456868(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 *param_4, - undefined4 param_5,undefined4 param_6,undefined4 *param_7) - -{ - FUN_004530ec(param_1,param_2,param_3); - *param_1 = &PTR_FUN_004f17a8; - param_1[7] = param_4; - param_1[8] = *param_4; - param_1[9] = param_5; - param_1[10] = param_6; - FUN_00408440(param_1 + 0xb,param_7); - return param_1; -} - - - -/* @004568b8 file=? name=FUN_004568b8 */ - -void __cdecl FUN_004568b8(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_004f17a8; - FUN_00453198(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @004568e4 file=? name=FUN_004568e4 */ - -undefined4 __cdecl FUN_004568e4(int param_1) - -{ - FUN_004531c4(param_1); - return 1; -} - - - -/* @004568f8 file=? name=FUN_004568f8 */ - -void __cdecl FUN_004568f8(int param_1) - -{ - undefined4 local_18; - undefined4 local_14; - undefined4 local_10; - undefined4 local_c; - - if (**(int **)(param_1 + 0x1c) != *(int *)(param_1 + 0x20)) { - *(int *)(param_1 + 0x20) = **(int **)(param_1 + 0x1c); - local_c = *(undefined4 *)(param_1 + 0x24); - local_18 = *(undefined4 *)(param_1 + 0x2c); - local_14 = *(undefined4 *)(param_1 + 0x30); - local_10 = *(undefined4 *)(param_1 + 0x34); - FUN_0048d060(0,*(int *)(param_1 + 0x28),&local_18); - } - return; -} - - - -/* @0045693c file=munga_l4/l4vidrnd.cpp name=FUN_0045693c */ - -undefined4 * __cdecl -FUN_0045693c(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 *param_4, - undefined4 *param_5,undefined4 param_6,undefined4 *param_7) - -{ - int iVar1; - undefined4 *puVar2; - - FUN_004530ec(param_1,param_2,param_3); - *param_1 = &PTR_FUN_004f1790; - if (param_5 == (undefined4 *)0x0) { - FUN_0040385c(s_A_pfx_was_not_defined_in_the__in_004f1522, - s_d__tesla_bt_munga_l4_L4VIDRND_CP_004f154a,0x10f5); - } - param_1[0x48] = param_4; - param_1[0x49] = *param_4; - param_1[0x4a] = param_6; - FUN_00408440(param_1 + 0x4b,param_7); - puVar2 = param_1 + 7; - for (iVar1 = 0x41; iVar1 != 0; iVar1 = iVar1 + -1) { - *puVar2 = *param_5; - param_5 = param_5 + 1; - puVar2 = puVar2 + 1; - } - return param_1; -} - - - -/* @004569bc file=? name=FUN_004569bc */ - -void __cdecl FUN_004569bc(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_004f1790; - FUN_0048d060(2,0,param_1 + 7); - FUN_00453198(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @004569f8 file=? name=FUN_004569f8 */ - -undefined4 __cdecl FUN_004569f8(int param_1) - -{ - FUN_004531c4(param_1); - return 1; -} - - - -/* @00456a0c file=? name=FUN_00456a0c */ - -void __cdecl FUN_00456a0c(int param_1) - -{ - int iVar1; - uint uVar2; - - iVar1 = **(int **)(param_1 + 0x120); - if ((iVar1 != *(int *)(param_1 + 0x124)) && (*(int *)(param_1 + 0x124) = iVar1, iVar1 == 1)) { - uVar2 = FUN_00460ae4(*(int *)(DAT_004efc94 + 0x48)); - *(uint *)(param_1 + 0x1c) = uVar2 | *(uint *)(param_1 + 0x1c) & 0xffff0000; - FUN_0048d060(1,*(int *)(param_1 + 0x128),(undefined4 *)(param_1 + 0x1c)); - } - return; -} - - - -/* @00456a68 file=munga_l4/l4vidrnd.cpp name=FUN_00456a68 */ - -undefined4 * __cdecl -FUN_00456a68(undefined4 *param_1,undefined4 param_2,undefined4 param_3,int param_4, - undefined4 param_5,undefined4 *param_6,undefined4 param_7,undefined4 *param_8) - -{ - int iVar1; - undefined4 *puVar2; - - FUN_004530ec(param_1,param_2,param_3); - *param_1 = &PTR_FUN_004f1778; - if (param_6 == (undefined4 *)0x0) { - FUN_0040385c(s_A_pfx_was_not_defined_in_the__in_004f156c, - s_d__tesla_bt_munga_l4_L4VIDRND_CP_004f1594,0x1154); - } - param_1[0x48] = param_5; - param_1[0x49] = param_4; - param_1[0x4a] = param_7; - FUN_00408440(param_1 + 0x4b,param_8); - puVar2 = param_1 + 7; - for (iVar1 = 0x41; iVar1 != 0; iVar1 = iVar1 + -1) { - *puVar2 = *param_6; - param_6 = param_6 + 1; - puVar2 = puVar2 + 1; - } - (**(code **)(*(int *)(param_4 + 0x2c) + 4))(param_4 + 0x2c,param_1); - return param_1; -} - - - -/* @00456afc file=? name=FUN_00456afc */ - -void __cdecl FUN_00456afc(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_004f1778; - FUN_0048d060(2,0,param_1 + 7); - FUN_00453198(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @00456b38 file=? name=FUN_00456b38 */ - -undefined4 __cdecl FUN_00456b38(int param_1) - -{ - FUN_004531c4(param_1); - return 1; -} - - - -/* @00456b4c file=? name=FUN_00456b4c */ - -void __cdecl FUN_00456b4c(int param_1) - -{ - uint uVar1; - - if (*(int *)(*(int *)(param_1 + 0x124) + 0x14) == *(int *)(param_1 + 0x120)) { - uVar1 = FUN_00460ae4(*(int *)(DAT_004efc94 + 0x48)); - *(uint *)(param_1 + 0x1c) = uVar1 | *(uint *)(param_1 + 0x1c) & 0xffff0000; - FUN_0048d060(1,*(int *)(param_1 + 0x128),(undefined4 *)(param_1 + 0x1c)); - } - return; -} - - - -/* @00456ba0 file=? name=FUN_00456ba0 */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -undefined4 * __cdecl -FUN_00456ba0(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4, - undefined4 param_5,undefined4 param_6,undefined4 param_7,undefined4 param_8, - undefined4 param_9,undefined4 param_10,undefined4 param_11,undefined4 param_12, - undefined4 param_13,undefined4 param_14,undefined4 param_15,undefined4 param_16, - undefined4 param_17,undefined4 param_18,undefined4 param_19,int param_20,float param_21, - int param_22) - -{ - int iVar1; - - FUN_004530ec(param_1,param_2,param_3); - *param_1 = &PTR_FUN_004f1760; - iVar1 = FUN_004897a0(); - param_1[7] = iVar1; - if (param_3 == 0) { - FUN_0048ba98(iVar1,param_4,param_5,param_6); - FUN_0048bb54(param_1[7],param_7,param_8,param_9); - FUN_0048bc10(param_1[7],param_10,param_11,param_12); - FUN_0048bccc(param_1[7],param_13,param_14,param_15,param_16); - FUN_0048bd94(param_1[7],param_17,param_18,param_19); - if (param_20 != 0) { - FUN_0048be50(param_1[7],param_20); - } - if (param_21 != _DAT_00456c98) { - FUN_0048fe94(param_1[7],param_21); - } - if (param_22 != 0) { - FUN_004902a0(param_1[7],param_22); - } - FUN_0048d4d4((undefined4 *)param_1[7]); - } - return param_1; -} - - - -/* @00456c9c file=? name=FUN_00456c9c */ - -void __cdecl FUN_00456c9c(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_004f1760; - FUN_00489a28((int *)param_1[7]); - FUN_00453198(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @00456cd4 file=? name=FUN_00456cd4 */ - -undefined4 __cdecl FUN_00456cd4(int param_1) - -{ - FUN_004531c4(param_1); - return 1; -} - - - -/* @00456ce8 file=? name=FUN_00456ce8 */ - -void FUN_00456ce8(void) - -{ - return; -} - - - -/* @00456cf0 file=? name=FUN_00456cf0 */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -undefined4 * __cdecl -FUN_00456cf0(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4, - undefined4 param_5,undefined4 param_6,undefined4 param_7,undefined4 param_8, - undefined4 param_9,undefined4 param_10,undefined4 param_11,undefined4 param_12, - undefined4 param_13,undefined4 param_14,undefined4 param_15,undefined4 param_16, - undefined4 param_17,undefined4 param_18,undefined4 param_19,int param_20,float param_21, - int param_22,undefined4 param_23,undefined4 param_24,undefined4 param_25, - undefined4 param_26,undefined4 param_27,undefined4 param_28,undefined4 param_29, - undefined4 param_30,undefined4 param_31,undefined4 param_32,undefined4 param_33, - undefined4 param_34,undefined4 param_35,undefined4 param_36,undefined4 param_37, - undefined4 param_38,undefined4 param_39,undefined4 *param_40) - -{ - float fVar1; - float fVar2; - - FUN_00456ba0(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9,param_10, - param_11,param_12,param_13,param_14,param_15,param_16,param_17,param_18,param_19, - param_20,param_21,param_22); - *param_1 = &PTR_LAB_004f1748; - param_1[10] = param_4; - param_1[0xb] = param_5; - param_1[0xc] = param_6; - param_1[0xd] = param_7; - param_1[0xe] = param_8; - param_1[0xf] = param_9; - param_1[0x10] = param_10; - param_1[0x11] = param_11; - param_1[0x12] = param_12; - param_1[0x13] = param_13; - param_1[0x14] = param_14; - param_1[0x15] = param_15; - param_1[0x16] = param_16; - param_1[0x17] = param_17; - param_1[0x18] = param_18; - param_1[0x19] = param_19; - param_1[9] = param_20; - param_1[0x1a] = param_21; - param_1[8] = param_22; - param_1[0x1b] = param_23; - param_1[0x1c] = param_24; - param_1[0x1d] = param_25; - param_1[0x1e] = param_26; - param_1[0x1f] = param_27; - param_1[0x20] = param_28; - param_1[0x21] = param_29; - param_1[0x22] = param_30; - param_1[0x23] = param_31; - param_1[0x24] = param_32; - param_1[0x25] = param_33; - param_1[0x26] = param_34; - param_1[0x27] = param_35; - param_1[0x28] = param_36; - param_1[0x29] = param_37; - param_1[0x2a] = param_38; - param_1[0x2b] = param_39; - param_1[0x2c] = param_40; - param_1[0x2d] = *param_40; - fVar2 = _DAT_00457104 - (float)param_1[0x2d]; - fVar1 = (float)param_1[0x2d]; - param_1[0x2e] = (float)param_1[0x1b] * fVar1 + (float)param_1[10] * fVar2; - param_1[0x2f] = (float)param_1[0x1c] * fVar1 + (float)param_1[0xb] * fVar2; - param_1[0x30] = (float)param_1[0x1d] * fVar1 + (float)param_1[0xc] * fVar2; - param_1[0x31] = (float)param_1[0x1e] * fVar1 + (float)param_1[0xd] * fVar2; - param_1[0x32] = (float)param_1[0x1f] * fVar1 + (float)param_1[0xe] * fVar2; - param_1[0x33] = (float)param_1[0x20] * fVar1 + (float)param_1[0xf] * fVar2; - param_1[0x34] = (float)param_1[0x21] * fVar1 + (float)param_1[0x10] * fVar2; - param_1[0x35] = (float)param_1[0x22] * fVar1 + (float)param_1[0x11] * fVar2; - param_1[0x36] = (float)param_1[0x23] * fVar1 + (float)param_1[0x12] * fVar2; - param_1[0x37] = (float)param_1[0x24] * fVar1 + (float)param_1[0x13] * fVar2; - param_1[0x38] = (float)param_1[0x25] * fVar1 + (float)param_1[0x14] * fVar2; - param_1[0x39] = (float)param_1[0x26] * fVar1 + (float)param_1[0x15] * fVar2; - param_1[0x3a] = (float)param_1[0x27] * fVar1 + (float)param_1[0x16] * fVar2; - param_1[0x3b] = (float)param_1[0x28] * fVar1 + (float)param_1[0x17] * fVar2; - param_1[0x3c] = (float)param_1[0x29] * fVar1 + (float)param_1[0x18] * fVar2; - param_1[0x3d] = (float)param_1[0x2a] * fVar1 + (float)param_1[0x19] * fVar2; - param_1[0x3e] = (float)param_1[0x2b] * fVar1 + (float)param_1[0x1a] * fVar2; - FUN_0048ba98(param_1[7],param_1[0x2e],param_1[0x2f],param_1[0x30]); - FUN_0048bb54(param_1[7],param_1[0x31],param_1[0x32],param_1[0x33]); - FUN_0048bc10(param_1[7],param_1[0x34],param_1[0x35],param_1[0x36]); - FUN_0048bccc(param_1[7],param_1[0x37],param_1[0x38],param_1[0x39],param_1[0x3a]); - FUN_0048bd94(param_1[7],param_1[0x3b],param_1[0x3c],param_1[0x3d]); - if (param_1[9] != 0) { - FUN_0048be50(param_1[7],param_1[9]); - } - if ((float)param_1[0x3e] != _DAT_00457108) { - FUN_0048fe94(param_1[7],param_1[0x3e]); - } - if (param_1[8] != 0) { - FUN_004902a0(param_1[7],param_1[8]); - } - FUN_0048d4d4((undefined4 *)param_1[7]); - return param_1; -} - - - -/* @00457138 file=? name=FUN_00457138 */ - -undefined4 __cdecl FUN_00457138(int param_1) - -{ - FUN_004531c4(param_1); - return 1; -} - - - -/* @0045714c file=? name=FUN_0045714c */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -void __cdecl FUN_0045714c(int param_1) - -{ - float fVar1; - float fVar2; - - if (*(float *)(param_1 + 0xb4) != **(float **)(param_1 + 0xb0)) { - *(undefined4 *)(param_1 + 0xb4) = **(undefined4 **)(param_1 + 0xb0); - fVar2 = _DAT_004573dc - *(float *)(param_1 + 0xb4); - fVar1 = *(float *)(param_1 + 0xb4); - *(float *)(param_1 + 0xb8) = - *(float *)(param_1 + 0x6c) * fVar1 + *(float *)(param_1 + 0x28) * fVar2; - *(float *)(param_1 + 0xbc) = - *(float *)(param_1 + 0x70) * fVar1 + *(float *)(param_1 + 0x2c) * fVar2; - *(float *)(param_1 + 0xc0) = - *(float *)(param_1 + 0x74) * fVar1 + *(float *)(param_1 + 0x30) * fVar2; - *(float *)(param_1 + 0xc4) = - *(float *)(param_1 + 0x78) * fVar1 + *(float *)(param_1 + 0x34) * fVar2; - *(float *)(param_1 + 200) = - *(float *)(param_1 + 0x7c) * fVar1 + *(float *)(param_1 + 0x38) * fVar2; - *(float *)(param_1 + 0xcc) = - *(float *)(param_1 + 0x80) * fVar1 + *(float *)(param_1 + 0x3c) * fVar2; - *(float *)(param_1 + 0xd0) = - *(float *)(param_1 + 0x84) * fVar1 + *(float *)(param_1 + 0x40) * fVar2; - *(float *)(param_1 + 0xd4) = - *(float *)(param_1 + 0x88) * fVar1 + *(float *)(param_1 + 0x44) * fVar2; - *(float *)(param_1 + 0xd8) = - *(float *)(param_1 + 0x8c) * fVar1 + *(float *)(param_1 + 0x48) * fVar2; - *(float *)(param_1 + 0xdc) = - *(float *)(param_1 + 0x90) * fVar1 + *(float *)(param_1 + 0x4c) * fVar2; - *(float *)(param_1 + 0xe0) = - *(float *)(param_1 + 0x94) * fVar1 + *(float *)(param_1 + 0x50) * fVar2; - *(float *)(param_1 + 0xe4) = - *(float *)(param_1 + 0x98) * fVar1 + *(float *)(param_1 + 0x54) * fVar2; - *(float *)(param_1 + 0xe8) = - *(float *)(param_1 + 0x9c) * fVar1 + *(float *)(param_1 + 0x58) * fVar2; - *(float *)(param_1 + 0xec) = - *(float *)(param_1 + 0xa0) * fVar1 + *(float *)(param_1 + 0x5c) * fVar2; - *(float *)(param_1 + 0xf0) = - *(float *)(param_1 + 0xa4) * fVar1 + *(float *)(param_1 + 0x60) * fVar2; - *(float *)(param_1 + 0xf4) = - *(float *)(param_1 + 0xa8) * fVar1 + *(float *)(param_1 + 100) * fVar2; - *(float *)(param_1 + 0xf8) = - *(float *)(param_1 + 0xac) * fVar1 + *(float *)(param_1 + 0x68) * fVar2; - FUN_0048ba98(*(int *)(param_1 + 0x1c),*(undefined4 *)(param_1 + 0xb8), - *(undefined4 *)(param_1 + 0xbc),*(undefined4 *)(param_1 + 0xc0)); - FUN_0048bb54(*(int *)(param_1 + 0x1c),*(undefined4 *)(param_1 + 0xc4), - *(undefined4 *)(param_1 + 200),*(undefined4 *)(param_1 + 0xcc)); - FUN_0048bc10(*(int *)(param_1 + 0x1c),*(undefined4 *)(param_1 + 0xd0), - *(undefined4 *)(param_1 + 0xd4),*(undefined4 *)(param_1 + 0xd8)); - FUN_0048bccc(*(int *)(param_1 + 0x1c),*(undefined4 *)(param_1 + 0xdc), - *(undefined4 *)(param_1 + 0xe0),*(undefined4 *)(param_1 + 0xe4), - *(undefined4 *)(param_1 + 0xe8)); - FUN_0048bd94(*(int *)(param_1 + 0x1c),*(undefined4 *)(param_1 + 0xec), - *(undefined4 *)(param_1 + 0xf0),*(undefined4 *)(param_1 + 0xf4)); - if (*(float *)(param_1 + 0xf8) != _DAT_004573e0) { - FUN_0048fe94(*(int *)(param_1 + 0x1c),*(undefined4 *)(param_1 + 0xf8)); - } - FUN_0048d4d4(*(undefined4 **)(param_1 + 0x1c)); - } - return; -} - - - -/* @004573e4 file=? name=FUN_004573e4 */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -undefined4 * __cdecl -FUN_004573e4(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4, - undefined4 *param_5,float param_6) - -{ - float fVar1; - float fVar2; - - FUN_004530ec(param_1,param_2,param_3); - *param_1 = &PTR_LAB_004f1730; - param_1[7] = param_4; - param_1[8] = param_5; - param_1[9] = *param_5; - FUN_0048baf4(param_1[7],param_1 + 10,param_1 + 0xb,param_1 + 0xc); - FUN_0048bbb0(param_1[7],param_1 + 0xd,param_1 + 0xe,param_1 + 0xf); - FUN_0048bc6c(param_1[7],param_1 + 0x10,param_1 + 0x11,param_1 + 0x12); - FUN_0048bd2c(param_1[7],param_1 + 0x13,param_1 + 0x14,param_1 + 0x15,param_1 + 0x16); - FUN_0048bdf0(param_1[7],param_1 + 0x17,param_1 + 0x18,param_1 + 0x19); - param_1[0x1a] = param_6 * (float)param_1[10]; - param_1[0x1b] = param_6 * (float)param_1[0xb]; - param_1[0x1c] = param_6 * (float)param_1[0xc]; - param_1[0x1d] = param_6 * (float)param_1[0xd]; - param_1[0x1e] = param_6 * (float)param_1[0xe]; - param_1[0x1f] = param_6 * (float)param_1[0xf]; - param_1[0x20] = param_6 * (float)param_1[0x10]; - param_1[0x21] = param_6 * (float)param_1[0x11]; - param_1[0x22] = param_6 * (float)param_1[0x12]; - param_1[0x23] = param_6 * (float)param_1[0x13]; - param_1[0x24] = param_6 * (float)param_1[0x14]; - param_1[0x25] = param_6 * (float)param_1[0x15]; - param_1[0x26] = param_6 * (float)param_1[0x16]; - param_1[0x27] = param_6 * (float)param_1[0x17]; - param_1[0x28] = param_6 * (float)param_1[0x18]; - param_1[0x29] = param_6 * (float)param_1[0x19]; - fVar2 = _DAT_00457740 - (float)param_1[9]; - fVar1 = (float)param_1[9]; - param_1[0x2a] = (float)param_1[0x1a] * fVar1 + (float)param_1[10] * fVar2; - param_1[0x2b] = (float)param_1[0x1b] * fVar1 + (float)param_1[0xb] * fVar2; - param_1[0x2c] = (float)param_1[0x1c] * fVar1 + (float)param_1[0xc] * fVar2; - param_1[0x2d] = (float)param_1[0x1d] * fVar1 + (float)param_1[0xd] * fVar2; - param_1[0x2e] = (float)param_1[0x1e] * fVar1 + (float)param_1[0xe] * fVar2; - param_1[0x2f] = (float)param_1[0x1f] * fVar1 + (float)param_1[0xf] * fVar2; - param_1[0x30] = (float)param_1[0x20] * fVar1 + (float)param_1[0x10] * fVar2; - param_1[0x31] = (float)param_1[0x21] * fVar1 + (float)param_1[0x11] * fVar2; - param_1[0x32] = (float)param_1[0x22] * fVar1 + (float)param_1[0x12] * fVar2; - param_1[0x33] = (float)param_1[0x23] * fVar1 + (float)param_1[0x13] * fVar2; - param_1[0x34] = (float)param_1[0x24] * fVar1 + (float)param_1[0x14] * fVar2; - param_1[0x35] = (float)param_1[0x25] * fVar1 + (float)param_1[0x15] * fVar2; - param_1[0x36] = (float)param_1[0x26] * fVar1 + (float)param_1[0x16] * fVar2; - param_1[0x37] = (float)param_1[0x27] * fVar1 + (float)param_1[0x17] * fVar2; - param_1[0x38] = (float)param_1[0x28] * fVar1 + (float)param_1[0x18] * fVar2; - param_1[0x39] = (float)param_1[0x29] * fVar1 + (float)param_1[0x19] * fVar2; - FUN_0048ba98(param_1[7],param_1[0x2a],param_1[0x2b],param_1[0x2c]); - FUN_0048bb54(param_1[7],param_1[0x2d],param_1[0x2e],param_1[0x2f]); - FUN_0048bc10(param_1[7],param_1[0x30],param_1[0x31],param_1[0x32]); - FUN_0048bccc(param_1[7],param_1[0x33],param_1[0x34],param_1[0x35],param_1[0x36]); - FUN_0048d4d4((undefined4 *)param_1[7]); - return param_1; -} - - - -/* @00457770 file=? name=FUN_00457770 */ - -undefined4 __cdecl FUN_00457770(int param_1) - -{ - FUN_004531c4(param_1); - return 1; -} - - - -/* @00457784 file=? name=FUN_00457784 */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -void __cdecl FUN_00457784(int param_1) - -{ - float fVar1; - float fVar2; - - if (*(float *)(param_1 + 0x24) != **(float **)(param_1 + 0x20)) { - *(undefined4 *)(param_1 + 0x24) = **(undefined4 **)(param_1 + 0x20); - fVar2 = _DAT_004579a4 - *(float *)(param_1 + 0x24); - fVar1 = *(float *)(param_1 + 0x24); - *(float *)(param_1 + 0xa8) = - *(float *)(param_1 + 0x68) * fVar1 + *(float *)(param_1 + 0x28) * fVar2; - *(float *)(param_1 + 0xac) = - *(float *)(param_1 + 0x6c) * fVar1 + *(float *)(param_1 + 0x2c) * fVar2; - *(float *)(param_1 + 0xb0) = - *(float *)(param_1 + 0x70) * fVar1 + *(float *)(param_1 + 0x30) * fVar2; - *(float *)(param_1 + 0xb4) = - *(float *)(param_1 + 0x74) * fVar1 + *(float *)(param_1 + 0x34) * fVar2; - *(float *)(param_1 + 0xb8) = - *(float *)(param_1 + 0x78) * fVar1 + *(float *)(param_1 + 0x38) * fVar2; - *(float *)(param_1 + 0xbc) = - *(float *)(param_1 + 0x7c) * fVar1 + *(float *)(param_1 + 0x3c) * fVar2; - *(float *)(param_1 + 0xc0) = - *(float *)(param_1 + 0x80) * fVar1 + *(float *)(param_1 + 0x40) * fVar2; - *(float *)(param_1 + 0xc4) = - *(float *)(param_1 + 0x84) * fVar1 + *(float *)(param_1 + 0x44) * fVar2; - *(float *)(param_1 + 200) = - *(float *)(param_1 + 0x88) * fVar1 + *(float *)(param_1 + 0x48) * fVar2; - *(float *)(param_1 + 0xcc) = - *(float *)(param_1 + 0x8c) * fVar1 + *(float *)(param_1 + 0x4c) * fVar2; - *(float *)(param_1 + 0xd0) = - *(float *)(param_1 + 0x90) * fVar1 + *(float *)(param_1 + 0x50) * fVar2; - *(float *)(param_1 + 0xd4) = - *(float *)(param_1 + 0x94) * fVar1 + *(float *)(param_1 + 0x54) * fVar2; - *(float *)(param_1 + 0xd8) = - *(float *)(param_1 + 0x98) * fVar1 + *(float *)(param_1 + 0x58) * fVar2; - *(float *)(param_1 + 0xdc) = - *(float *)(param_1 + 0x9c) * fVar1 + *(float *)(param_1 + 0x5c) * fVar2; - *(float *)(param_1 + 0xe0) = - *(float *)(param_1 + 0xa0) * fVar1 + *(float *)(param_1 + 0x60) * fVar2; - *(float *)(param_1 + 0xe4) = - *(float *)(param_1 + 0xa4) * fVar1 + *(float *)(param_1 + 100) * fVar2; - FUN_0048ba98(*(int *)(param_1 + 0x1c),*(undefined4 *)(param_1 + 0xa8), - *(undefined4 *)(param_1 + 0xac),*(undefined4 *)(param_1 + 0xb0)); - FUN_0048bb54(*(int *)(param_1 + 0x1c),*(undefined4 *)(param_1 + 0xb4), - *(undefined4 *)(param_1 + 0xb8),*(undefined4 *)(param_1 + 0xbc)); - FUN_0048bc10(*(int *)(param_1 + 0x1c),*(undefined4 *)(param_1 + 0xc0), - *(undefined4 *)(param_1 + 0xc4),*(undefined4 *)(param_1 + 200)); - FUN_0048bccc(*(int *)(param_1 + 0x1c),*(undefined4 *)(param_1 + 0xcc), - *(undefined4 *)(param_1 + 0xd0),*(undefined4 *)(param_1 + 0xd4), - *(undefined4 *)(param_1 + 0xd8)); - FUN_0048d4d4(*(undefined4 **)(param_1 + 0x1c)); - } - return; -} - - - -/* @004579a8 file=? name=FUN_004579a8 */ - -undefined4 * __cdecl -FUN_004579a8(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 *param_4, - undefined4 param_5,undefined4 *param_6,undefined4 *param_7) - -{ - int iVar1; - undefined4 *puVar2; - float *pfVar3; - float *pfVar4; - float local_94 [12]; - float local_64 [12]; - float local_34 [12]; - - FUN_0041b838(param_1,2,&DAT_004e32ac); - *param_1 = &PTR_FUN_004f1718; - FUN_0040aadc(param_1 + 6); - param_1[0x16] = param_2; - param_1[5] = param_5; - FUN_0040ab28(param_1 + 6,param_4); - param_1[0x12] = param_7; - if (param_7 == (undefined4 *)0x0) { - FUN_0040aadc(local_34); - FUN_00408f7c((float *)(param_1 + 0x13),local_34); - } - else { - FUN_00408e90(param_1 + 0x13,param_7); - } - iVar1 = FUN_00489708(); - param_1[4] = iVar1; - FUN_00489cec(param_1[5],iVar1); - FUN_0048a714(param_1[4],param_3); - FUN_0040aadc(local_64); - if ((float *)param_1[0x12] != (float *)0x0) { - FUN_0040ac6c(local_64,(float *)param_1[0x12]); - } - pfVar3 = local_64; - pfVar4 = local_94; - for (iVar1 = 0xc; iVar1 != 0; iVar1 = iVar1 + -1) { - *pfVar4 = *pfVar3; - pfVar3 = pfVar3 + 1; - pfVar4 = pfVar4 + 1; - } - FUN_0040b104(local_64,local_94,(float *)(param_1 + 6)); - puVar2 = (undefined4 *)FUN_0048a630(param_1[4]); - FUN_0040beb0(puVar2,local_64); - FUN_0048b4ac((int)param_6,param_1[4]); - FUN_0048d42c(param_6); - FUN_0048d3e8((undefined4 *)param_1[4]); - FUN_00420674(param_1[0x16],param_1); - FUN_0045a744(*(int *)(DAT_004efc94 + 0x48),param_1); - return param_1; -} - - - -/* @00457af4 file=? name=FUN_00457af4 */ - -void __cdecl FUN_00457af4(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_004f1718; - FUN_004898b8((int *)param_1[4]); - FUN_0041b898(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @00457b2c file=? name=FUN_00457b2c */ - -undefined4 __cdecl FUN_00457b2c(int param_1) - -{ - FUN_0041b8e0(param_1); - return 1; -} - - - -/* @00457b48 file=? name=FUN_00457b48 */ - -void __cdecl FUN_00457b48(int param_1) - -{ - int iVar1; - undefined4 *puVar2; - float *pfVar3; - float *pfVar4; - float local_64 [12]; - float local_34 [12]; - - if (*(float **)(param_1 + 0x48) != (float *)0x0) { - iVar1 = FUN_004091f4(*(float **)(param_1 + 0x48),(float *)(param_1 + 0x4c),0.0001); - if (iVar1 == 0) { - FUN_00408e90((undefined4 *)(param_1 + 0x4c),*(undefined4 **)(param_1 + 0x48)); - FUN_0040aadc(local_34); - FUN_0040ac6c(local_34,*(float **)(param_1 + 0x48)); - pfVar3 = local_34; - pfVar4 = local_64; - for (iVar1 = 0xc; iVar1 != 0; iVar1 = iVar1 + -1) { - *pfVar4 = *pfVar3; - pfVar3 = pfVar3 + 1; - pfVar4 = pfVar4 + 1; - } - FUN_0040b104(local_34,local_64,(float *)(param_1 + 0x18)); - puVar2 = (undefined4 *)FUN_0048a630(*(int *)(param_1 + 0x10)); - FUN_0040beb0(puVar2,local_34); - FUN_0045fbf4(*(int *)(DAT_004efc94 + 0x48),*(undefined4 *)(param_1 + 0x10)); - } - } - return; -} - - - -/* @00457bf4 file=? name=FUN_00457bf4 */ - -undefined4 * __cdecl -FUN_00457bf4(undefined4 *param_1,undefined4 param_2,int param_3,int param_4,undefined4 param_5, - undefined4 param_6,undefined4 *param_7,undefined4 param_8,undefined4 *param_9) - -{ - int iVar1; - undefined4 *puVar2; - undefined4 *puVar3; - - FUN_0041b838(param_1,2,&DAT_004e32ac); - puVar3 = param_1 + 8; - *param_1 = &PTR_FUN_004f1700; - FUN_0040aadc(puVar3); - param_1[0x14] = param_2; - param_1[6] = param_8; - param_1[0x15] = param_9; - FUN_0040ab28(puVar3,param_7); - FUN_00408440(param_1 + 0x16,param_9); - iVar1 = FUN_00489708(); - param_1[4] = iVar1; - FUN_00489cec(param_1[6],iVar1); - FUN_0048a714(param_1[4],param_3); - iVar1 = FUN_00489708(); - param_1[5] = iVar1; - FUN_00489cec(param_1[4],iVar1); - FUN_0048a714(param_1[5],param_3); - puVar2 = (undefined4 *)FUN_0048a630(param_1[4]); - FUN_0040beb0(puVar2,puVar3); - puVar3 = (undefined4 *)FUN_0048a630(param_1[5]); - FUN_0040c18c(puVar3,(undefined4 *)param_1[0x15]); - if (param_4 == 0) { - param_1[7] = 0; - } - else { - iVar1 = FUN_00489724(); - param_1[7] = iVar1; - FUN_0048ab0c(iVar1,param_4); - FUN_0048ad48(param_1[7],param_5); - FUN_0048add4(param_1[7],param_6); - FUN_0048ac30(param_1[7],1); - FUN_00489e04(param_1[5],param_1[7]); - FUN_0048d5d4((undefined4 *)param_1[7]); - } - FUN_0048d3e8((undefined4 *)param_1[4]); - FUN_0048d3e8((undefined4 *)param_1[5]); - FUN_00420674(param_1[0x14],param_1); - FUN_0045a744(*(int *)(DAT_004efc94 + 0x48),param_1); - return param_1; -} - - - -/* @00457d74 file=? name=FUN_00457d74 */ - -void __cdecl FUN_00457d74(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_004f1700; - FUN_004898b8((int *)param_1[5]); - FUN_004898b8((int *)param_1[4]); - if ((int *)param_1[7] != (int *)0x0) { - FUN_004898f8((int *)param_1[7]); - } - FUN_0041b898(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @00457dc4 file=? name=FUN_00457dc4 */ - -void __cdecl FUN_00457dc4(int param_1) - -{ - float *pfVar1; - int iVar2; - undefined4 *puVar3; - - pfVar1 = (float *)(param_1 + 0x58); - iVar2 = FUN_004084fc(pfVar1,*(float **)(param_1 + 0x54),0.0001); - if (iVar2 == 0) { - FUN_00408440(pfVar1,*(undefined4 **)(param_1 + 0x54)); - puVar3 = (undefined4 *)FUN_0048a630(*(int *)(param_1 + 0x14)); - FUN_0040c18c(puVar3,pfVar1); - FUN_0045fbf4(*(int *)(DAT_004efc94 + 0x48),*(undefined4 *)(param_1 + 0x14)); - } - return; -} - - - -/* @00457e24 file=? name=FUN_00457e24 */ - -undefined4 __cdecl FUN_00457e24(int param_1) - -{ - FUN_0041b8e0(param_1); - return 1; -} - - - -/* @00457e40 file=? name=FUN_00457e40 */ - -undefined4 * __cdecl -FUN_00457e40(undefined4 *param_1,undefined4 param_2,int param_3,int param_4,undefined4 param_5, - undefined4 param_6,undefined4 *param_7,undefined4 param_8,undefined4 *param_9, - undefined4 *param_10) - -{ - int iVar1; - undefined4 *puVar2; - float *pfVar3; - float *pfVar4; - float local_98 [12]; - float local_68 [12]; - float local_38 [12]; - float *local_8; - - FUN_0041b838(param_1,2,&DAT_004e32ac); - *param_1 = &PTR_FUN_004f16e8; - param_1[0x15] = param_2; - param_1[7] = param_8; - param_1[0x16] = param_9; - param_1[4] = param_10; - FUN_0040ab28(param_1 + 9,param_7); - FUN_00408440(param_1 + 0x17,param_9); - param_1[5] = *param_10; - iVar1 = FUN_00489708(); - param_1[6] = iVar1; - FUN_00489cec(param_1[7],iVar1); - FUN_0048a714(param_1[6],param_3); - puVar2 = (undefined4 *)FUN_0048a630(param_1[6]); - FUN_0040aadc(local_38); - local_8 = (float *)(param_1 + 0x17); - pfVar3 = local_38; - pfVar4 = local_68; - for (iVar1 = 0xc; iVar1 != 0; iVar1 = iVar1 + -1) { - *pfVar4 = *pfVar3; - pfVar3 = pfVar3 + 1; - pfVar4 = pfVar4 + 1; - } - FUN_0040b374(local_38,local_68,local_8); - pfVar3 = local_38; - pfVar4 = local_98; - for (iVar1 = 0xc; iVar1 != 0; iVar1 = iVar1 + -1) { - *pfVar4 = *pfVar3; - pfVar3 = pfVar3 + 1; - pfVar4 = pfVar4 + 1; - } - FUN_0040b104(local_38,local_98,(float *)(param_1 + 9)); - FUN_0040beb0(puVar2,local_38); - iVar1 = FUN_00489724(); - param_1[8] = iVar1; - FUN_0048ab0c(iVar1,param_4); - FUN_0048ad48(param_1[8],param_5); - FUN_0048add4(param_1[8],param_6); - FUN_0048ac30(param_1[8],param_1[5]); - FUN_00489e04(param_1[6],param_1[8]); - FUN_0048d5d4((undefined4 *)param_1[8]); - FUN_0048d3e8((undefined4 *)param_1[6]); - FUN_00420674(param_1[0x15],param_1); - FUN_0045a744(*(int *)(DAT_004efc94 + 0x48),param_1); - return param_1; -} - - - -/* @00457fd8 file=? name=FUN_00457fd8 */ - -void __cdecl FUN_00457fd8(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_004f16e8; - FUN_004898b8((int *)param_1[6]); - FUN_004898f8((int *)param_1[8]); - FUN_0041b898(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @00458018 file=? name=FUN_00458018 */ - -void __cdecl FUN_00458018(int param_1) - -{ - int iVar1; - undefined4 *puVar2; - float *pfVar3; - float *pfVar4; - float *pfVar5; - float local_94 [12]; - float local_64 [12]; - float local_34 [12]; - - iVar1 = **(int **)(param_1 + 0x10); - if (iVar1 != *(int *)(param_1 + 0x14)) { - *(int *)(param_1 + 0x14) = iVar1; - FUN_0048ac30(*(int *)(param_1 + 0x20),iVar1); - FUN_0048d5d4(*(undefined4 **)(param_1 + 0x20)); - } - pfVar4 = (float *)(param_1 + 0x5c); - iVar1 = FUN_004084fc(pfVar4,*(float **)(param_1 + 0x58),0.0001); - if (iVar1 == 0) { - FUN_00408440(pfVar4,*(undefined4 **)(param_1 + 0x58)); - puVar2 = (undefined4 *)FUN_0048a630(*(int *)(param_1 + 0x18)); - FUN_0040aadc(local_34); - pfVar3 = local_34; - pfVar5 = local_64; - for (iVar1 = 0xc; iVar1 != 0; iVar1 = iVar1 + -1) { - *pfVar5 = *pfVar3; - pfVar3 = pfVar3 + 1; - pfVar5 = pfVar5 + 1; - } - FUN_0040b374(local_34,local_64,pfVar4); - pfVar4 = local_34; - pfVar3 = local_94; - for (iVar1 = 0xc; iVar1 != 0; iVar1 = iVar1 + -1) { - *pfVar3 = *pfVar4; - pfVar4 = pfVar4 + 1; - pfVar3 = pfVar3 + 1; - } - FUN_0040b104(local_34,local_94,(float *)(param_1 + 0x24)); - FUN_0040beb0(puVar2,local_34); - FUN_0045fbf4(*(int *)(DAT_004efc94 + 0x48),*(undefined4 *)(param_1 + 0x18)); - } - return; -} - - - -/* @00458108 file=? name=FUN_00458108 */ - -undefined4 __cdecl FUN_00458108(int param_1) - -{ - FUN_0041b8e0(param_1); - return 1; -} - - - -/* @0045811c file=? name=FUN_0045811c */ - -undefined4 * __cdecl -FUN_0045811c(undefined4 *param_1,undefined4 param_2,int param_3,int param_4,undefined4 param_5, - undefined4 param_6,undefined4 *param_7,undefined4 param_8,undefined4 *param_9, - undefined4 *param_10,undefined4 *param_11) - -{ - int iVar1; - undefined4 *puVar2; - float *pfVar3; - float *pfVar4; - float local_dc [12]; - float local_ac [12]; - float local_7c [12]; - float local_4c [16]; - float *local_c; - float *local_8; - - FUN_0041b838(param_1,2,&DAT_004e32ac); - *param_1 = &PTR_FUN_004f16d0; - param_1[0x15] = param_2; - param_1[7] = param_8; - param_1[0x16] = param_9; - param_1[0x1b] = param_10; - param_1[4] = param_11; - FUN_0040ab28(param_1 + 9,param_7); - FUN_00409968(param_1 + 0x17,param_9); - FUN_00408440(param_1 + 0x1c,param_10); - param_1[5] = *param_11; - iVar1 = FUN_00489708(); - param_1[6] = iVar1; - FUN_00489cec(param_1[7],iVar1); - FUN_0048a714(param_1[6],param_3); - puVar2 = (undefined4 *)FUN_0048a630(param_1[6]); - FUN_0040aadc(local_4c); - local_8 = (float *)(param_1 + 0x1c); - pfVar3 = local_4c; - pfVar4 = local_7c; - for (iVar1 = 0xc; iVar1 != 0; iVar1 = iVar1 + -1) { - *pfVar4 = *pfVar3; - pfVar3 = pfVar3 + 1; - pfVar4 = pfVar4 + 1; - } - FUN_0040b374(local_4c,local_7c,local_8); - local_c = (float *)(param_1 + 0x17); - pfVar3 = local_4c; - pfVar4 = local_ac; - for (iVar1 = 0xc; iVar1 != 0; iVar1 = iVar1 + -1) { - *pfVar4 = *pfVar3; - pfVar3 = pfVar3 + 1; - pfVar4 = pfVar4 + 1; - } - FUN_0040b3e8(local_4c,local_ac,local_c); - pfVar3 = local_4c; - pfVar4 = local_dc; - for (iVar1 = 0xc; iVar1 != 0; iVar1 = iVar1 + -1) { - *pfVar4 = *pfVar3; - pfVar3 = pfVar3 + 1; - pfVar4 = pfVar4 + 1; - } - FUN_0040b104(local_4c,local_dc,(float *)(param_1 + 9)); - FUN_0040beb0(puVar2,local_4c); - iVar1 = FUN_00489724(); - param_1[8] = iVar1; - FUN_0048ab0c(iVar1,param_4); - FUN_0048ad48(param_1[8],param_5); - FUN_0048add4(param_1[8],param_6); - FUN_0048ac30(param_1[8],param_1[5]); - FUN_00489e04(param_1[6],param_1[8]); - FUN_0048d5d4((undefined4 *)param_1[8]); - FUN_0048d3e8((undefined4 *)param_1[6]); - FUN_00420674(param_1[0x15],param_1); - FUN_0045a744(*(int *)(DAT_004efc94 + 0x48),param_1); - return param_1; -} - - - -/* @004582fc file=? name=FUN_004582fc */ - -void __cdecl FUN_004582fc(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_004f16d0; - FUN_004898b8((int *)param_1[6]); - FUN_004898f8((int *)param_1[8]); - FUN_0041b898(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @0045833c file=? name=FUN_0045833c */ - -void __cdecl FUN_0045833c(int param_1) - -{ - int iVar1; - undefined4 *puVar2; - float *pfVar3; - float *pfVar4; - float *pfVar5; - float local_c4 [12]; - float local_94 [12]; - float local_64 [12]; - float local_34 [12]; - - iVar1 = **(int **)(param_1 + 0x10); - if (iVar1 != *(int *)(param_1 + 0x14)) { - *(int *)(param_1 + 0x14) = iVar1; - FUN_0048ac30(*(int *)(param_1 + 0x20),iVar1); - FUN_0048d5d4(*(undefined4 **)(param_1 + 0x20)); - } - pfVar4 = (float *)(param_1 + 0x70); - iVar1 = FUN_004084fc(pfVar4,*(float **)(param_1 + 0x6c),0.0001); - if ((iVar1 != 0) && - (iVar1 = FUN_004d4b14((byte *)(param_1 + 0x5c),*(byte **)(param_1 + 0x58),0x10), iVar1 == 0)) { - return; - } - FUN_00408440(pfVar4,*(undefined4 **)(param_1 + 0x6c)); - FUN_00409968((undefined4 *)(param_1 + 0x5c),*(undefined4 **)(param_1 + 0x58)); - puVar2 = (undefined4 *)FUN_0048a630(*(int *)(param_1 + 0x18)); - FUN_0040aadc(local_34); - pfVar3 = local_34; - pfVar5 = local_64; - for (iVar1 = 0xc; iVar1 != 0; iVar1 = iVar1 + -1) { - *pfVar5 = *pfVar3; - pfVar3 = pfVar3 + 1; - pfVar5 = pfVar5 + 1; - } - FUN_0040b374(local_34,local_64,pfVar4); - pfVar4 = local_34; - pfVar3 = local_94; - for (iVar1 = 0xc; iVar1 != 0; iVar1 = iVar1 + -1) { - *pfVar3 = *pfVar4; - pfVar4 = pfVar4 + 1; - pfVar3 = pfVar3 + 1; - } - FUN_0040b3e8(local_34,local_94,(float *)(param_1 + 0x5c)); - pfVar4 = local_34; - pfVar3 = local_c4; - for (iVar1 = 0xc; iVar1 != 0; iVar1 = iVar1 + -1) { - *pfVar3 = *pfVar4; - pfVar4 = pfVar4 + 1; - pfVar3 = pfVar3 + 1; - } - FUN_0040b104(local_34,local_c4,(float *)(param_1 + 0x24)); - FUN_0040beb0(puVar2,local_34); - FUN_0045fbf4(*(int *)(DAT_004efc94 + 0x48),*(undefined4 *)(param_1 + 0x18)); - return; -} - - - -/* @00458478 file=? name=FUN_00458478 */ - -undefined4 __cdecl FUN_00458478(int param_1) - -{ - FUN_0041b8e0(param_1); - return 1; -} - - - -/* @0045848c file=? name=FUN_0045848c */ - -undefined4 * __cdecl -FUN_0045848c(undefined4 *param_1,undefined4 param_2,int param_3,int param_4,undefined4 param_5, - undefined4 param_6,undefined4 *param_7,undefined4 param_8) - -{ - undefined4 *puVar1; - int iVar2; - undefined4 *puVar3; - - FUN_0041b838(param_1,2,&DAT_004e32ac); - puVar1 = param_1 + 7; - *param_1 = &PTR_FUN_004f16b8; - FUN_0040aadc(puVar1); - param_1[0x13] = param_2; - param_1[5] = param_8; - FUN_0040ab28(puVar1,param_7); - iVar2 = FUN_00489708(); - param_1[4] = iVar2; - FUN_00489cec(param_1[5],iVar2); - FUN_0048a714(param_1[4],param_3); - puVar3 = (undefined4 *)FUN_0048a630(param_1[4]); - FUN_0040beb0(puVar3,puVar1); - if (param_4 == 0) { - param_1[6] = 0; - } - else { - iVar2 = FUN_00489724(); - param_1[6] = iVar2; - FUN_0048ab0c(iVar2,param_4); - FUN_0048ad48(param_1[6],param_5); - FUN_0048add4(param_1[6],param_6); - FUN_0048ac30(param_1[6],1); - FUN_00489e04(param_1[4],param_1[6]); - FUN_0048d5d4((undefined4 *)param_1[6]); - } - FUN_0048d3e8((undefined4 *)param_1[4]); - FUN_00420674(param_1[0x13],param_1); - return param_1; -} - - - -/* @00458598 file=? name=FUN_00458598 */ - -void __cdecl FUN_00458598(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_004f16b8; - FUN_004898b8((int *)param_1[4]); - if ((int *)param_1[6] != (int *)0x0) { - FUN_004898f8((int *)param_1[6]); - } - FUN_0041b898(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @004585dc file=? name=FUN_004585dc */ - -undefined4 __cdecl FUN_004585dc(int param_1) - -{ - FUN_0041b8e0(param_1); - return 1; -} - - - -/* @004585f8 file=? name=FUN_004585f8 */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -undefined4 * __cdecl -FUN_004585f8(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 *param_4, - undefined4 param_5,int param_6,undefined4 param_7,undefined4 param_8,float param_9) - -{ - FUN_0041b838(param_1,2,&DAT_004e32ac); - *param_1 = &PTR_LAB_004f16a0; - param_1[0xe] = param_2; - param_1[8] = param_5; - FUN_00408440(param_1 + 9,param_4); - param_1[7] = param_6; - param_1[6] = *(undefined4 *)(param_6 + 0x14); - param_1[5] = param_7; - param_1[4] = param_8; - param_1[0xc] = _DAT_0045868c / (param_9 * _DAT_00458688); - param_1[0xd] = 0; - FUN_00420674(param_1[0xe],param_1); - FUN_0045a744(*(int *)(DAT_004efc94 + 0x48),param_1); - return param_1; -} - - - -/* @004586bc file=? name=FUN_004586bc */ - -undefined4 __cdecl FUN_004586bc(int param_1) - -{ - FUN_0041b8e0(param_1); - return 1; -} - - - -/* @004586d0 file=? name=FUN_004586d0 */ - -void __cdecl FUN_004586d0(int param_1) - -{ - int iVar1; - int *piVar2; - undefined4 local_1c; - undefined4 local_18; - undefined4 local_14; - undefined4 local_10; - float local_8; - - iVar1 = *(int *)(*(int *)(param_1 + 0x1c) + 0x14); - if (iVar1 == *(int *)(param_1 + 0x14)) { - if (iVar1 != *(int *)(param_1 + 0x18)) { - *(undefined4 *)(param_1 + 0x34) = 0; - } - piVar2 = (int *)FUN_00414b60(); - local_8 = (float)*piVar2 / DAT_0052140c; - if (*(float *)(param_1 + 0x34) + *(float *)(param_1 + 0x30) < local_8) { - local_10 = *(undefined4 *)(param_1 + 0x10); - local_1c = *(undefined4 *)(param_1 + 0x24); - local_18 = *(undefined4 *)(param_1 + 0x28); - local_14 = *(undefined4 *)(param_1 + 0x2c); - FUN_0048d060(0,*(int *)(param_1 + 0x20),&local_1c); - *(float *)(param_1 + 0x34) = local_8; - } - } - *(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(*(int *)(param_1 + 0x1c) + 0x14); - return; -} - - - -/* @00458754 file=? name=FUN_00458754 */ - -undefined4 * __cdecl -FUN_00458754(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 *param_4, - undefined4 param_5,undefined4 param_6,undefined4 param_7) - -{ - FUN_0041b838(param_1,2,&DAT_004e32ac); - *param_1 = &PTR_FUN_004f1688; - param_1[4] = param_2; - param_1[5] = param_5; - FUN_00408440(param_1 + 6,param_4); - param_1[9] = param_6; - param_1[10] = param_7; - param_1[0xb] = 0; - FUN_00420674(param_1[4],param_1); - FUN_0045a744(*(int *)(DAT_004efc94 + 0x48),param_1); - return param_1; -} - - - -/* @004587c8 file=? name=FUN_004587c8 */ - -void __cdecl FUN_004587c8(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_004f1688; - FUN_0041b898(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @004587f4 file=? name=FUN_004587f4 */ - -undefined4 __cdecl FUN_004587f4(int param_1) - -{ - FUN_0041b8e0(param_1); - return 1; -} - - - -/* @00458808 file=? name=FUN_00458808 */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -void __cdecl FUN_00458808(int param_1) - -{ - int *piVar1; - undefined4 local_1c; - undefined4 local_18; - undefined4 local_14; - undefined4 local_10; - float local_8; - - if (**(float **)(param_1 + 0x28) == _DAT_00458890) { - *(undefined4 *)(param_1 + 0x2c) = 0; - } - else { - piVar1 = (int *)FUN_00414b60(); - local_8 = (float)*piVar1 / DAT_0052140c; - if (_DAT_00458898 / (**(float **)(param_1 + 0x28) * _DAT_00458894) + *(float *)(param_1 + 0x2c) - < local_8) { - *(float *)(param_1 + 0x2c) = local_8; - local_10 = *(undefined4 *)(param_1 + 0x24); - local_1c = *(undefined4 *)(param_1 + 0x18); - local_18 = *(undefined4 *)(param_1 + 0x1c); - local_14 = *(undefined4 *)(param_1 + 0x20); - FUN_0048d060(0,*(int *)(param_1 + 0x14),&local_1c); - } - } - return; -} - - - -/* @004589a0 file=? name=FUN_004589a0 */ - -void __cdecl FUN_004589a0(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_004f1670; - FUN_0041b898(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @004589cc file=? name=FUN_004589cc */ - -undefined4 __cdecl FUN_004589cc(int param_1) - -{ - FUN_0041b8e0(param_1); - return 1; -} - - - -/* @004589e0 file=? name=FUN_004589e0 */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -void __cdecl FUN_004589e0(int param_1) - -{ - int iVar1; - undefined4 *puVar2; - float local_9c [5]; - float local_88; - float local_74; - float local_6c [5]; - float local_58; - float local_44; - float local_3c [5]; - float local_28; - float local_14; - float local_c; - float local_8; - - local_8 = *(float *)(*(int *)(DAT_004efc94 + 0x48) + 0x80); - iVar1 = *(int *)(param_1 + 0x10); - if (iVar1 == 0) { - if (*(int *)(*(int *)(param_1 + 0x24) + 0x14) == *(int *)(param_1 + 0x14)) { - *(undefined4 *)(param_1 + 0x10) = 1; - *(float *)(param_1 + 0x20) = local_8; - local_c = local_8 - *(float *)(param_1 + 0x20); - if (local_c < _DAT_00458c4c) { - local_c = 0.05; - } - puVar2 = (undefined4 *)FUN_0048a630(*(int *)(param_1 + 0x2c)); - FUN_0040aadc(local_3c); - local_3c[0] = local_c; - local_28 = local_c; - local_14 = local_c; - FUN_0040b0ac((int)local_3c,3,*(undefined4 **)(param_1 + 0x38)); - FUN_0040beb0(puVar2,local_3c); - FUN_0048ac30(*(int *)(param_1 + 0x28),1); - FUN_0048d5d4(*(undefined4 **)(param_1 + 0x28)); - FUN_0045fbf4(*(int *)(DAT_004efc94 + 0x48),*(undefined4 *)(param_1 + 0x2c)); - } - } - else if (iVar1 == 1) { - local_c = local_8 - *(float *)(param_1 + 0x20); - if (local_c < _DAT_00458c4c) { - local_c = 0.05; - } - if (_DAT_00458c50 <= local_c) { - local_c = 1.0; - *(undefined4 *)(param_1 + 0x10) = 2; - } - puVar2 = (undefined4 *)FUN_0048a630(*(int *)(param_1 + 0x2c)); - FUN_0040aadc(local_6c); - local_6c[0] = local_c; - local_58 = local_c; - local_44 = local_c; - FUN_0040b0ac((int)local_6c,3,*(undefined4 **)(param_1 + 0x38)); - FUN_0040beb0(puVar2,local_6c); - FUN_0045fbf4(*(int *)(DAT_004efc94 + 0x48),*(undefined4 *)(param_1 + 0x2c)); - } - else if (iVar1 == 2) { - if (_DAT_00458c54 <= local_8 - *(float *)(param_1 + 0x20)) { - *(undefined4 *)(param_1 + 0x10) = 3; - *(float *)(param_1 + 0x20) = local_8 + _DAT_00458c50; - } - } - else if (iVar1 == 3) { - local_c = *(float *)(param_1 + 0x20) - local_8; - if (local_c < _DAT_00458c4c) { - local_c = 0.05; - FUN_0048ac30(*(int *)(param_1 + 0x28),0); - FUN_0048d5d4(*(undefined4 **)(param_1 + 0x28)); - *(undefined4 *)(param_1 + 0x10) = 0; - } - puVar2 = (undefined4 *)FUN_0048a630(*(int *)(param_1 + 0x2c)); - FUN_0040aadc(local_9c); - local_9c[0] = local_c; - local_88 = local_c; - local_74 = local_c; - FUN_0040b0ac((int)local_9c,3,*(undefined4 **)(param_1 + 0x38)); - FUN_0040beb0(puVar2,local_9c); - FUN_0045fbf4(*(int *)(DAT_004efc94 + 0x48),*(undefined4 *)(param_1 + 0x2c)); - } - return; -} - - - -/* @00458c58 file=munga_l4/l4vidrnd.cpp name=FUN_00458c58 */ - -undefined4 * __cdecl -FUN_00458c58(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 *param_4, - int param_5) - -{ - uint uVar1; - int iVar2; - undefined4 *puVar3; - - FUN_004530ec(param_1,param_2,param_3); - *param_1 = &PTR_FUN_004f1658; - if (param_4 == (undefined4 *)0x0) { - FUN_0040385c(s_A_pfx_was_not_defined_in_the__in_004f15be, - s_d__tesla_bt_munga_l4_L4VIDRND_CP_004f15e6,0x182a); - } - puVar3 = param_1 + 7; - for (iVar2 = 0x41; iVar2 != 0; iVar2 = iVar2 + -1) { - *puVar3 = *param_4; - param_4 = param_4 + 1; - puVar3 = puVar3 + 1; - } - uVar1 = FUN_00460ae4(param_1[4]); - param_1[7] = uVar1 | param_1[7] & 0xffff0000; - FUN_0048d060(1,param_5,param_1 + 7); - return param_1; -} - - - -/* @00458cd4 file=? name=FUN_00458cd4 */ - -void __cdecl FUN_00458cd4(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_004f1658; - FUN_0048d060(2,0,param_1 + 7); - FUN_00453198(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @00458d10 file=? name=FUN_00458d10 */ - -undefined4 __cdecl FUN_00458d10(int param_1) - -{ - FUN_004531c4(param_1); - return 1; -} - - - -/* @00458d24 file=? name=FUN_00458d24 */ - -void FUN_00458d24(void) - -{ - return; -} - - - -/* @00458d2c file=? name=FUN_00458d2c */ - -undefined4 * __cdecl -FUN_00458d2c(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4, - undefined4 param_5,undefined4 param_6,undefined4 param_7) - -{ - int iVar1; - undefined4 uVar2; - int iVar3; - - FUN_004530ec(param_1,param_2,param_3); - *param_1 = &PTR_FUN_004f1640; - param_1[0xe] = param_4; - param_1[0xb] = param_5; - param_1[0xf] = param_6; - param_1[8] = param_7; - param_1[7] = 0; - iVar1 = FUN_00498448(s_tsphere_004f1608,0); - uVar2 = FUN_00489724(); - param_1[0xc] = uVar2; - iVar3 = FUN_00489708(); - param_1[0xd] = iVar3; - FUN_00489ba8(iVar3); - FUN_0048a714(param_1[0xd],param_1[0xe]); - FUN_0048ab0c(param_1[0xc],iVar1); - FUN_0048ad48(param_1[0xc],1); - FUN_0048add4(param_1[0xc],0); - FUN_0048ac30(param_1[0xc],0); - FUN_00489e04(param_1[0xd],param_1[0xc]); - FUN_0048d5d4((undefined4 *)param_1[0xc]); - FUN_0048d3e8((undefined4 *)param_1[0xd]); - (**(code **)(*(int *)(param_1[0xb] + 0x2c) + 4))(param_1[0xb] + 0x2c,param_1); - return param_1; -} - - - -/* @00458e1c file=? name=FUN_00458e1c */ - -void __cdecl FUN_00458e1c(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_004f1640; - FUN_00453198(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @00458e48 file=? name=FUN_00458e48 */ - -undefined4 __cdecl FUN_00458e48(int param_1) - -{ - FUN_0041b8e0(param_1); - return 1; -} - - - diff --git a/reference/decomp/all/part_008.c b/reference/decomp/all/part_008.c index 566d095..b6e8a46 100644 --- a/reference/decomp/all/part_008.c +++ b/reference/decomp/all/part_008.c @@ -1,3 +1,1921 @@ +/* @0045656c file=munga_l4/l4vidrnd.cpp name=FUN_0045656c */ + +void __cdecl FUN_0045656c(int param_1) + +{ + float fVar1; + + if (*(int *)(param_1 + 0x1c) != 2) { + fVar1 = *(float *)(*(int *)(param_1 + 0x10) + 0x80); + if (*(int *)(param_1 + 0x1c) == 0) { + if (*(float *)(param_1 + 0x24) < fVar1) { + *(undefined4 *)(param_1 + 0x2c) = 1; + if (*(int *)(param_1 + 0x20) != 0) { + *(undefined4 *)(param_1 + 0x1c) = 1; + return; + } + *(undefined4 *)(param_1 + 0x1c) = 2; + FUN_0045a764(*(int *)(param_1 + 0x10),param_1); + return; + } + } + else if (*(int *)(param_1 + 0x1c) == 1) { + if (*(float *)(param_1 + 0x28) < fVar1) { + *(undefined4 *)(param_1 + 0x2c) = 0; + *(undefined4 *)(param_1 + 0x1c) = 2; + FUN_0045a764(*(int *)(param_1 + 0x10),param_1); + return; + } + } + else { + FUN_0040385c(s_invalid_myState_004f14f0,s_d__tesla_bt_munga_l4_L4VIDRND_CP_004f1500,0xfb4); + } + } + return; +} + + + +/* @00456610 file=? name=FUN_00456610 */ + +undefined4 * __cdecl +FUN_00456610(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4, + undefined4 param_5,undefined4 *param_6,undefined4 param_7,undefined4 param_8, + undefined4 param_9) + +{ + FUN_004530ec(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004f17d8; + if (param_6 == (undefined4 *)0x0) { + param_1[7] = 1; + param_1[9] = param_1 + 7; + param_1[8] = 0; + } + else { + param_1[9] = param_6; + param_1[8] = *param_6; + } + param_1[0xc] = param_9; + param_1[0xd] = param_7; + param_1[0xe] = param_8; + param_1[10] = param_5; + param_1[0x10] = param_4; + param_1[0x11] = param_1[0xd]; + return param_1; +} + + + +/* @00456684 file=? name=FUN_00456684 */ + +void __cdecl FUN_00456684(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f17d8; + FUN_00453198(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004566b0 file=? name=FUN_004566b0 */ + +undefined4 __cdecl FUN_004566b0(int param_1) + +{ + FUN_004531c4(param_1); + return 1; +} + + + +/* @004566c4 file=? name=FUN_004566c4 */ + +void __cdecl FUN_004566c4(int param_1) + +{ + float fVar1; + float10 fVar2; + + if (**(int **)(param_1 + 0x24) != *(int *)(param_1 + 0x20)) { + if (*(int *)(param_1 + 0x20) == 0) { + *(undefined4 *)(param_1 + 0x3c) = *(undefined4 *)(*(int *)(param_1 + 0x10) + 0x80); + *(undefined4 *)(param_1 + 0x44) = *(undefined4 *)(param_1 + 0x34); + *(undefined4 *)(param_1 + 0x2c) = *(undefined4 *)(param_1 + 0x28); + } + *(undefined4 *)(param_1 + 0x20) = **(undefined4 **)(param_1 + 0x24); + } + if ((*(int *)(param_1 + 0x20) != 0) && (0 < *(int *)(param_1 + 0x2c))) { + fVar1 = *(float *)(*(int *)(param_1 + 0x10) + 0x80); + if ((*(float *)(param_1 + 0x38) <= *(float *)(param_1 + 0x44)) && + (*(int *)(param_1 + 0x2c) = *(int *)(param_1 + 0x2c) + -1, 0 < *(int *)(param_1 + 0x2c))) { + *(float *)(param_1 + 0x3c) = fVar1; + } + *(float *)(param_1 + 0x44) = + ((fVar1 - *(float *)(param_1 + 0x3c)) * + (*(float *)(param_1 + 0x38) - *(float *)(param_1 + 0x34))) / *(float *)(param_1 + 0x40) + + *(float *)(param_1 + 0x34); + if (*(int *)(param_1 + 0x30) == 1) { + fVar2 = FUN_004dd138((double)*(float *)(param_1 + 0x44)); + *(float *)(param_1 + 0x44) = (float)fVar2; + } + if (*(float *)(param_1 + 0x38) < *(float *)(param_1 + 0x44)) { + *(undefined4 *)(param_1 + 0x44) = *(undefined4 *)(param_1 + 0x38); + } + } + return; +} + + + +/* @00456778 file=? name=FUN_00456778 */ + +undefined4 * __cdecl +FUN_00456778(undefined4 *param_1,undefined4 param_2,undefined4 param_3,int *param_4,int param_5) + +{ + FUN_004530ec(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004f17c0; + param_1[7] = param_4; + param_1[9] = (uint)(*param_4 == 0); + if (param_5 == 0) { + param_1[8] = param_1[7]; + } + else { + param_1[8] = param_5; + } + param_1[10] = (uint)(*(int *)param_1[8] == 0); + return param_1; +} + + + +/* @004567d4 file=? name=FUN_004567d4 */ + +void __cdecl FUN_004567d4(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f17c0; + FUN_00453198(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00456800 file=? name=FUN_00456800 */ + +undefined4 __cdecl FUN_00456800(int param_1) + +{ + FUN_004531c4(param_1); + return 1; +} + + + +/* @00456814 file=? name=FUN_00456814 */ + +void __cdecl FUN_00456814(int param_1) + +{ + if ((**(int **)(param_1 + 0x1c) != *(int *)(param_1 + 0x24)) || + (**(int **)(param_1 + 0x20) != *(int *)(param_1 + 0x28))) { + *(int *)(param_1 + 0x24) = **(int **)(param_1 + 0x1c); + *(undefined4 *)(param_1 + 0x28) = **(undefined4 **)(param_1 + 0x20); + if ((*(int *)(param_1 + 0x24) != 0) || (*(int *)(param_1 + 0x28) != 0)) { + FUN_0045a7a8(*(int *)(param_1 + 0x10),2); + return; + } + FUN_0045a7a8(*(int *)(param_1 + 0x10),3); + } + return; +} + + + +/* @00456868 file=? name=FUN_00456868 */ + +undefined4 * __cdecl +FUN_00456868(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 *param_4, + undefined4 param_5,undefined4 param_6,undefined4 *param_7) + +{ + FUN_004530ec(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004f17a8; + param_1[7] = param_4; + param_1[8] = *param_4; + param_1[9] = param_5; + param_1[10] = param_6; + FUN_00408440(param_1 + 0xb,param_7); + return param_1; +} + + + +/* @004568b8 file=? name=FUN_004568b8 */ + +void __cdecl FUN_004568b8(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f17a8; + FUN_00453198(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004568e4 file=? name=FUN_004568e4 */ + +undefined4 __cdecl FUN_004568e4(int param_1) + +{ + FUN_004531c4(param_1); + return 1; +} + + + +/* @004568f8 file=? name=FUN_004568f8 */ + +void __cdecl FUN_004568f8(int param_1) + +{ + undefined4 local_18; + undefined4 local_14; + undefined4 local_10; + undefined4 local_c; + + if (**(int **)(param_1 + 0x1c) != *(int *)(param_1 + 0x20)) { + *(int *)(param_1 + 0x20) = **(int **)(param_1 + 0x1c); + local_c = *(undefined4 *)(param_1 + 0x24); + local_18 = *(undefined4 *)(param_1 + 0x2c); + local_14 = *(undefined4 *)(param_1 + 0x30); + local_10 = *(undefined4 *)(param_1 + 0x34); + FUN_0048d060(0,*(int *)(param_1 + 0x28),&local_18); + } + return; +} + + + +/* @0045693c file=munga_l4/l4vidrnd.cpp name=FUN_0045693c */ + +undefined4 * __cdecl +FUN_0045693c(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 *param_4, + undefined4 *param_5,undefined4 param_6,undefined4 *param_7) + +{ + int iVar1; + undefined4 *puVar2; + + FUN_004530ec(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004f1790; + if (param_5 == (undefined4 *)0x0) { + FUN_0040385c(s_A_pfx_was_not_defined_in_the__in_004f1522, + s_d__tesla_bt_munga_l4_L4VIDRND_CP_004f154a,0x10f5); + } + param_1[0x48] = param_4; + param_1[0x49] = *param_4; + param_1[0x4a] = param_6; + FUN_00408440(param_1 + 0x4b,param_7); + puVar2 = param_1 + 7; + for (iVar1 = 0x41; iVar1 != 0; iVar1 = iVar1 + -1) { + *puVar2 = *param_5; + param_5 = param_5 + 1; + puVar2 = puVar2 + 1; + } + return param_1; +} + + + +/* @004569bc file=? name=FUN_004569bc */ + +void __cdecl FUN_004569bc(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f1790; + FUN_0048d060(2,0,param_1 + 7); + FUN_00453198(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004569f8 file=? name=FUN_004569f8 */ + +undefined4 __cdecl FUN_004569f8(int param_1) + +{ + FUN_004531c4(param_1); + return 1; +} + + + +/* @00456a0c file=? name=FUN_00456a0c */ + +void __cdecl FUN_00456a0c(int param_1) + +{ + int iVar1; + uint uVar2; + + iVar1 = **(int **)(param_1 + 0x120); + if ((iVar1 != *(int *)(param_1 + 0x124)) && (*(int *)(param_1 + 0x124) = iVar1, iVar1 == 1)) { + uVar2 = FUN_00460ae4(*(int *)(DAT_004efc94 + 0x48)); + *(uint *)(param_1 + 0x1c) = uVar2 | *(uint *)(param_1 + 0x1c) & 0xffff0000; + FUN_0048d060(1,*(int *)(param_1 + 0x128),(undefined4 *)(param_1 + 0x1c)); + } + return; +} + + + +/* @00456a68 file=munga_l4/l4vidrnd.cpp name=FUN_00456a68 */ + +undefined4 * __cdecl +FUN_00456a68(undefined4 *param_1,undefined4 param_2,undefined4 param_3,int param_4, + undefined4 param_5,undefined4 *param_6,undefined4 param_7,undefined4 *param_8) + +{ + int iVar1; + undefined4 *puVar2; + + FUN_004530ec(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004f1778; + if (param_6 == (undefined4 *)0x0) { + FUN_0040385c(s_A_pfx_was_not_defined_in_the__in_004f156c, + s_d__tesla_bt_munga_l4_L4VIDRND_CP_004f1594,0x1154); + } + param_1[0x48] = param_5; + param_1[0x49] = param_4; + param_1[0x4a] = param_7; + FUN_00408440(param_1 + 0x4b,param_8); + puVar2 = param_1 + 7; + for (iVar1 = 0x41; iVar1 != 0; iVar1 = iVar1 + -1) { + *puVar2 = *param_6; + param_6 = param_6 + 1; + puVar2 = puVar2 + 1; + } + (**(code **)(*(int *)(param_4 + 0x2c) + 4))(param_4 + 0x2c,param_1); + return param_1; +} + + + +/* @00456afc file=? name=FUN_00456afc */ + +void __cdecl FUN_00456afc(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f1778; + FUN_0048d060(2,0,param_1 + 7); + FUN_00453198(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00456b38 file=? name=FUN_00456b38 */ + +undefined4 __cdecl FUN_00456b38(int param_1) + +{ + FUN_004531c4(param_1); + return 1; +} + + + +/* @00456b4c file=? name=FUN_00456b4c */ + +void __cdecl FUN_00456b4c(int param_1) + +{ + uint uVar1; + + if (*(int *)(*(int *)(param_1 + 0x124) + 0x14) == *(int *)(param_1 + 0x120)) { + uVar1 = FUN_00460ae4(*(int *)(DAT_004efc94 + 0x48)); + *(uint *)(param_1 + 0x1c) = uVar1 | *(uint *)(param_1 + 0x1c) & 0xffff0000; + FUN_0048d060(1,*(int *)(param_1 + 0x128),(undefined4 *)(param_1 + 0x1c)); + } + return; +} + + + +/* @00456ba0 file=? name=FUN_00456ba0 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 * __cdecl +FUN_00456ba0(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4, + undefined4 param_5,undefined4 param_6,undefined4 param_7,undefined4 param_8, + undefined4 param_9,undefined4 param_10,undefined4 param_11,undefined4 param_12, + undefined4 param_13,undefined4 param_14,undefined4 param_15,undefined4 param_16, + undefined4 param_17,undefined4 param_18,undefined4 param_19,int param_20,float param_21, + int param_22) + +{ + int iVar1; + + FUN_004530ec(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004f1760; + iVar1 = FUN_004897a0(); + param_1[7] = iVar1; + if (param_3 == 0) { + FUN_0048ba98(iVar1,param_4,param_5,param_6); + FUN_0048bb54(param_1[7],param_7,param_8,param_9); + FUN_0048bc10(param_1[7],param_10,param_11,param_12); + FUN_0048bccc(param_1[7],param_13,param_14,param_15,param_16); + FUN_0048bd94(param_1[7],param_17,param_18,param_19); + if (param_20 != 0) { + FUN_0048be50(param_1[7],param_20); + } + if (param_21 != _DAT_00456c98) { + FUN_0048fe94(param_1[7],param_21); + } + if (param_22 != 0) { + FUN_004902a0(param_1[7],param_22); + } + FUN_0048d4d4((undefined4 *)param_1[7]); + } + return param_1; +} + + + +/* @00456c9c file=? name=FUN_00456c9c */ + +void __cdecl FUN_00456c9c(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f1760; + FUN_00489a28((int *)param_1[7]); + FUN_00453198(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00456cd4 file=? name=FUN_00456cd4 */ + +undefined4 __cdecl FUN_00456cd4(int param_1) + +{ + FUN_004531c4(param_1); + return 1; +} + + + +/* @00456ce8 file=? name=FUN_00456ce8 */ + +void FUN_00456ce8(void) + +{ + return; +} + + + +/* @00456cf0 file=? name=FUN_00456cf0 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 * __cdecl +FUN_00456cf0(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4, + undefined4 param_5,undefined4 param_6,undefined4 param_7,undefined4 param_8, + undefined4 param_9,undefined4 param_10,undefined4 param_11,undefined4 param_12, + undefined4 param_13,undefined4 param_14,undefined4 param_15,undefined4 param_16, + undefined4 param_17,undefined4 param_18,undefined4 param_19,int param_20,float param_21, + int param_22,undefined4 param_23,undefined4 param_24,undefined4 param_25, + undefined4 param_26,undefined4 param_27,undefined4 param_28,undefined4 param_29, + undefined4 param_30,undefined4 param_31,undefined4 param_32,undefined4 param_33, + undefined4 param_34,undefined4 param_35,undefined4 param_36,undefined4 param_37, + undefined4 param_38,undefined4 param_39,undefined4 *param_40) + +{ + float fVar1; + float fVar2; + + FUN_00456ba0(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9,param_10, + param_11,param_12,param_13,param_14,param_15,param_16,param_17,param_18,param_19, + param_20,param_21,param_22); + *param_1 = &PTR_FUN_004f1748; + param_1[10] = param_4; + param_1[0xb] = param_5; + param_1[0xc] = param_6; + param_1[0xd] = param_7; + param_1[0xe] = param_8; + param_1[0xf] = param_9; + param_1[0x10] = param_10; + param_1[0x11] = param_11; + param_1[0x12] = param_12; + param_1[0x13] = param_13; + param_1[0x14] = param_14; + param_1[0x15] = param_15; + param_1[0x16] = param_16; + param_1[0x17] = param_17; + param_1[0x18] = param_18; + param_1[0x19] = param_19; + param_1[9] = param_20; + param_1[0x1a] = param_21; + param_1[8] = param_22; + param_1[0x1b] = param_23; + param_1[0x1c] = param_24; + param_1[0x1d] = param_25; + param_1[0x1e] = param_26; + param_1[0x1f] = param_27; + param_1[0x20] = param_28; + param_1[0x21] = param_29; + param_1[0x22] = param_30; + param_1[0x23] = param_31; + param_1[0x24] = param_32; + param_1[0x25] = param_33; + param_1[0x26] = param_34; + param_1[0x27] = param_35; + param_1[0x28] = param_36; + param_1[0x29] = param_37; + param_1[0x2a] = param_38; + param_1[0x2b] = param_39; + param_1[0x2c] = param_40; + param_1[0x2d] = *param_40; + fVar2 = _DAT_00457104 - (float)param_1[0x2d]; + fVar1 = (float)param_1[0x2d]; + param_1[0x2e] = (float)param_1[0x1b] * fVar1 + (float)param_1[10] * fVar2; + param_1[0x2f] = (float)param_1[0x1c] * fVar1 + (float)param_1[0xb] * fVar2; + param_1[0x30] = (float)param_1[0x1d] * fVar1 + (float)param_1[0xc] * fVar2; + param_1[0x31] = (float)param_1[0x1e] * fVar1 + (float)param_1[0xd] * fVar2; + param_1[0x32] = (float)param_1[0x1f] * fVar1 + (float)param_1[0xe] * fVar2; + param_1[0x33] = (float)param_1[0x20] * fVar1 + (float)param_1[0xf] * fVar2; + param_1[0x34] = (float)param_1[0x21] * fVar1 + (float)param_1[0x10] * fVar2; + param_1[0x35] = (float)param_1[0x22] * fVar1 + (float)param_1[0x11] * fVar2; + param_1[0x36] = (float)param_1[0x23] * fVar1 + (float)param_1[0x12] * fVar2; + param_1[0x37] = (float)param_1[0x24] * fVar1 + (float)param_1[0x13] * fVar2; + param_1[0x38] = (float)param_1[0x25] * fVar1 + (float)param_1[0x14] * fVar2; + param_1[0x39] = (float)param_1[0x26] * fVar1 + (float)param_1[0x15] * fVar2; + param_1[0x3a] = (float)param_1[0x27] * fVar1 + (float)param_1[0x16] * fVar2; + param_1[0x3b] = (float)param_1[0x28] * fVar1 + (float)param_1[0x17] * fVar2; + param_1[0x3c] = (float)param_1[0x29] * fVar1 + (float)param_1[0x18] * fVar2; + param_1[0x3d] = (float)param_1[0x2a] * fVar1 + (float)param_1[0x19] * fVar2; + param_1[0x3e] = (float)param_1[0x2b] * fVar1 + (float)param_1[0x1a] * fVar2; + FUN_0048ba98(param_1[7],param_1[0x2e],param_1[0x2f],param_1[0x30]); + FUN_0048bb54(param_1[7],param_1[0x31],param_1[0x32],param_1[0x33]); + FUN_0048bc10(param_1[7],param_1[0x34],param_1[0x35],param_1[0x36]); + FUN_0048bccc(param_1[7],param_1[0x37],param_1[0x38],param_1[0x39],param_1[0x3a]); + FUN_0048bd94(param_1[7],param_1[0x3b],param_1[0x3c],param_1[0x3d]); + if (param_1[9] != 0) { + FUN_0048be50(param_1[7],param_1[9]); + } + if ((float)param_1[0x3e] != _DAT_00457108) { + FUN_0048fe94(param_1[7],param_1[0x3e]); + } + if (param_1[8] != 0) { + FUN_004902a0(param_1[7],param_1[8]); + } + FUN_0048d4d4((undefined4 *)param_1[7]); + return param_1; +} + + + +/* @0045710c file=? name=FUN_0045710c */ + +void __cdecl FUN_0045710c(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f1748; + FUN_00456c9c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00457138 file=? name=FUN_00457138 */ + +undefined4 __cdecl FUN_00457138(int param_1) + +{ + FUN_004531c4(param_1); + return 1; +} + + + +/* @0045714c file=? name=FUN_0045714c */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_0045714c(int param_1) + +{ + float fVar1; + float fVar2; + + if (*(float *)(param_1 + 0xb4) != **(float **)(param_1 + 0xb0)) { + *(undefined4 *)(param_1 + 0xb4) = **(undefined4 **)(param_1 + 0xb0); + fVar2 = _DAT_004573dc - *(float *)(param_1 + 0xb4); + fVar1 = *(float *)(param_1 + 0xb4); + *(float *)(param_1 + 0xb8) = + *(float *)(param_1 + 0x6c) * fVar1 + *(float *)(param_1 + 0x28) * fVar2; + *(float *)(param_1 + 0xbc) = + *(float *)(param_1 + 0x70) * fVar1 + *(float *)(param_1 + 0x2c) * fVar2; + *(float *)(param_1 + 0xc0) = + *(float *)(param_1 + 0x74) * fVar1 + *(float *)(param_1 + 0x30) * fVar2; + *(float *)(param_1 + 0xc4) = + *(float *)(param_1 + 0x78) * fVar1 + *(float *)(param_1 + 0x34) * fVar2; + *(float *)(param_1 + 200) = + *(float *)(param_1 + 0x7c) * fVar1 + *(float *)(param_1 + 0x38) * fVar2; + *(float *)(param_1 + 0xcc) = + *(float *)(param_1 + 0x80) * fVar1 + *(float *)(param_1 + 0x3c) * fVar2; + *(float *)(param_1 + 0xd0) = + *(float *)(param_1 + 0x84) * fVar1 + *(float *)(param_1 + 0x40) * fVar2; + *(float *)(param_1 + 0xd4) = + *(float *)(param_1 + 0x88) * fVar1 + *(float *)(param_1 + 0x44) * fVar2; + *(float *)(param_1 + 0xd8) = + *(float *)(param_1 + 0x8c) * fVar1 + *(float *)(param_1 + 0x48) * fVar2; + *(float *)(param_1 + 0xdc) = + *(float *)(param_1 + 0x90) * fVar1 + *(float *)(param_1 + 0x4c) * fVar2; + *(float *)(param_1 + 0xe0) = + *(float *)(param_1 + 0x94) * fVar1 + *(float *)(param_1 + 0x50) * fVar2; + *(float *)(param_1 + 0xe4) = + *(float *)(param_1 + 0x98) * fVar1 + *(float *)(param_1 + 0x54) * fVar2; + *(float *)(param_1 + 0xe8) = + *(float *)(param_1 + 0x9c) * fVar1 + *(float *)(param_1 + 0x58) * fVar2; + *(float *)(param_1 + 0xec) = + *(float *)(param_1 + 0xa0) * fVar1 + *(float *)(param_1 + 0x5c) * fVar2; + *(float *)(param_1 + 0xf0) = + *(float *)(param_1 + 0xa4) * fVar1 + *(float *)(param_1 + 0x60) * fVar2; + *(float *)(param_1 + 0xf4) = + *(float *)(param_1 + 0xa8) * fVar1 + *(float *)(param_1 + 100) * fVar2; + *(float *)(param_1 + 0xf8) = + *(float *)(param_1 + 0xac) * fVar1 + *(float *)(param_1 + 0x68) * fVar2; + FUN_0048ba98(*(int *)(param_1 + 0x1c),*(undefined4 *)(param_1 + 0xb8), + *(undefined4 *)(param_1 + 0xbc),*(undefined4 *)(param_1 + 0xc0)); + FUN_0048bb54(*(int *)(param_1 + 0x1c),*(undefined4 *)(param_1 + 0xc4), + *(undefined4 *)(param_1 + 200),*(undefined4 *)(param_1 + 0xcc)); + FUN_0048bc10(*(int *)(param_1 + 0x1c),*(undefined4 *)(param_1 + 0xd0), + *(undefined4 *)(param_1 + 0xd4),*(undefined4 *)(param_1 + 0xd8)); + FUN_0048bccc(*(int *)(param_1 + 0x1c),*(undefined4 *)(param_1 + 0xdc), + *(undefined4 *)(param_1 + 0xe0),*(undefined4 *)(param_1 + 0xe4), + *(undefined4 *)(param_1 + 0xe8)); + FUN_0048bd94(*(int *)(param_1 + 0x1c),*(undefined4 *)(param_1 + 0xec), + *(undefined4 *)(param_1 + 0xf0),*(undefined4 *)(param_1 + 0xf4)); + if (*(float *)(param_1 + 0xf8) != _DAT_004573e0) { + FUN_0048fe94(*(int *)(param_1 + 0x1c),*(undefined4 *)(param_1 + 0xf8)); + } + FUN_0048d4d4(*(undefined4 **)(param_1 + 0x1c)); + } + return; +} + + + +/* @004573e4 file=? name=FUN_004573e4 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 * __cdecl +FUN_004573e4(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4, + undefined4 *param_5,float param_6) + +{ + float fVar1; + float fVar2; + + FUN_004530ec(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004f1730; + param_1[7] = param_4; + param_1[8] = param_5; + param_1[9] = *param_5; + FUN_0048baf4(param_1[7],param_1 + 10,param_1 + 0xb,param_1 + 0xc); + FUN_0048bbb0(param_1[7],param_1 + 0xd,param_1 + 0xe,param_1 + 0xf); + FUN_0048bc6c(param_1[7],param_1 + 0x10,param_1 + 0x11,param_1 + 0x12); + FUN_0048bd2c(param_1[7],param_1 + 0x13,param_1 + 0x14,param_1 + 0x15,param_1 + 0x16); + FUN_0048bdf0(param_1[7],param_1 + 0x17,param_1 + 0x18,param_1 + 0x19); + param_1[0x1a] = param_6 * (float)param_1[10]; + param_1[0x1b] = param_6 * (float)param_1[0xb]; + param_1[0x1c] = param_6 * (float)param_1[0xc]; + param_1[0x1d] = param_6 * (float)param_1[0xd]; + param_1[0x1e] = param_6 * (float)param_1[0xe]; + param_1[0x1f] = param_6 * (float)param_1[0xf]; + param_1[0x20] = param_6 * (float)param_1[0x10]; + param_1[0x21] = param_6 * (float)param_1[0x11]; + param_1[0x22] = param_6 * (float)param_1[0x12]; + param_1[0x23] = param_6 * (float)param_1[0x13]; + param_1[0x24] = param_6 * (float)param_1[0x14]; + param_1[0x25] = param_6 * (float)param_1[0x15]; + param_1[0x26] = param_6 * (float)param_1[0x16]; + param_1[0x27] = param_6 * (float)param_1[0x17]; + param_1[0x28] = param_6 * (float)param_1[0x18]; + param_1[0x29] = param_6 * (float)param_1[0x19]; + fVar2 = _DAT_00457740 - (float)param_1[9]; + fVar1 = (float)param_1[9]; + param_1[0x2a] = (float)param_1[0x1a] * fVar1 + (float)param_1[10] * fVar2; + param_1[0x2b] = (float)param_1[0x1b] * fVar1 + (float)param_1[0xb] * fVar2; + param_1[0x2c] = (float)param_1[0x1c] * fVar1 + (float)param_1[0xc] * fVar2; + param_1[0x2d] = (float)param_1[0x1d] * fVar1 + (float)param_1[0xd] * fVar2; + param_1[0x2e] = (float)param_1[0x1e] * fVar1 + (float)param_1[0xe] * fVar2; + param_1[0x2f] = (float)param_1[0x1f] * fVar1 + (float)param_1[0xf] * fVar2; + param_1[0x30] = (float)param_1[0x20] * fVar1 + (float)param_1[0x10] * fVar2; + param_1[0x31] = (float)param_1[0x21] * fVar1 + (float)param_1[0x11] * fVar2; + param_1[0x32] = (float)param_1[0x22] * fVar1 + (float)param_1[0x12] * fVar2; + param_1[0x33] = (float)param_1[0x23] * fVar1 + (float)param_1[0x13] * fVar2; + param_1[0x34] = (float)param_1[0x24] * fVar1 + (float)param_1[0x14] * fVar2; + param_1[0x35] = (float)param_1[0x25] * fVar1 + (float)param_1[0x15] * fVar2; + param_1[0x36] = (float)param_1[0x26] * fVar1 + (float)param_1[0x16] * fVar2; + param_1[0x37] = (float)param_1[0x27] * fVar1 + (float)param_1[0x17] * fVar2; + param_1[0x38] = (float)param_1[0x28] * fVar1 + (float)param_1[0x18] * fVar2; + param_1[0x39] = (float)param_1[0x29] * fVar1 + (float)param_1[0x19] * fVar2; + FUN_0048ba98(param_1[7],param_1[0x2a],param_1[0x2b],param_1[0x2c]); + FUN_0048bb54(param_1[7],param_1[0x2d],param_1[0x2e],param_1[0x2f]); + FUN_0048bc10(param_1[7],param_1[0x30],param_1[0x31],param_1[0x32]); + FUN_0048bccc(param_1[7],param_1[0x33],param_1[0x34],param_1[0x35],param_1[0x36]); + FUN_0048d4d4((undefined4 *)param_1[7]); + return param_1; +} + + + +/* @00457744 file=? name=FUN_00457744 */ + +void __cdecl FUN_00457744(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f1730; + FUN_00453198(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00457770 file=? name=FUN_00457770 */ + +undefined4 __cdecl FUN_00457770(int param_1) + +{ + FUN_004531c4(param_1); + return 1; +} + + + +/* @00457784 file=? name=FUN_00457784 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_00457784(int param_1) + +{ + float fVar1; + float fVar2; + + if (*(float *)(param_1 + 0x24) != **(float **)(param_1 + 0x20)) { + *(undefined4 *)(param_1 + 0x24) = **(undefined4 **)(param_1 + 0x20); + fVar2 = _DAT_004579a4 - *(float *)(param_1 + 0x24); + fVar1 = *(float *)(param_1 + 0x24); + *(float *)(param_1 + 0xa8) = + *(float *)(param_1 + 0x68) * fVar1 + *(float *)(param_1 + 0x28) * fVar2; + *(float *)(param_1 + 0xac) = + *(float *)(param_1 + 0x6c) * fVar1 + *(float *)(param_1 + 0x2c) * fVar2; + *(float *)(param_1 + 0xb0) = + *(float *)(param_1 + 0x70) * fVar1 + *(float *)(param_1 + 0x30) * fVar2; + *(float *)(param_1 + 0xb4) = + *(float *)(param_1 + 0x74) * fVar1 + *(float *)(param_1 + 0x34) * fVar2; + *(float *)(param_1 + 0xb8) = + *(float *)(param_1 + 0x78) * fVar1 + *(float *)(param_1 + 0x38) * fVar2; + *(float *)(param_1 + 0xbc) = + *(float *)(param_1 + 0x7c) * fVar1 + *(float *)(param_1 + 0x3c) * fVar2; + *(float *)(param_1 + 0xc0) = + *(float *)(param_1 + 0x80) * fVar1 + *(float *)(param_1 + 0x40) * fVar2; + *(float *)(param_1 + 0xc4) = + *(float *)(param_1 + 0x84) * fVar1 + *(float *)(param_1 + 0x44) * fVar2; + *(float *)(param_1 + 200) = + *(float *)(param_1 + 0x88) * fVar1 + *(float *)(param_1 + 0x48) * fVar2; + *(float *)(param_1 + 0xcc) = + *(float *)(param_1 + 0x8c) * fVar1 + *(float *)(param_1 + 0x4c) * fVar2; + *(float *)(param_1 + 0xd0) = + *(float *)(param_1 + 0x90) * fVar1 + *(float *)(param_1 + 0x50) * fVar2; + *(float *)(param_1 + 0xd4) = + *(float *)(param_1 + 0x94) * fVar1 + *(float *)(param_1 + 0x54) * fVar2; + *(float *)(param_1 + 0xd8) = + *(float *)(param_1 + 0x98) * fVar1 + *(float *)(param_1 + 0x58) * fVar2; + *(float *)(param_1 + 0xdc) = + *(float *)(param_1 + 0x9c) * fVar1 + *(float *)(param_1 + 0x5c) * fVar2; + *(float *)(param_1 + 0xe0) = + *(float *)(param_1 + 0xa0) * fVar1 + *(float *)(param_1 + 0x60) * fVar2; + *(float *)(param_1 + 0xe4) = + *(float *)(param_1 + 0xa4) * fVar1 + *(float *)(param_1 + 100) * fVar2; + FUN_0048ba98(*(int *)(param_1 + 0x1c),*(undefined4 *)(param_1 + 0xa8), + *(undefined4 *)(param_1 + 0xac),*(undefined4 *)(param_1 + 0xb0)); + FUN_0048bb54(*(int *)(param_1 + 0x1c),*(undefined4 *)(param_1 + 0xb4), + *(undefined4 *)(param_1 + 0xb8),*(undefined4 *)(param_1 + 0xbc)); + FUN_0048bc10(*(int *)(param_1 + 0x1c),*(undefined4 *)(param_1 + 0xc0), + *(undefined4 *)(param_1 + 0xc4),*(undefined4 *)(param_1 + 200)); + FUN_0048bccc(*(int *)(param_1 + 0x1c),*(undefined4 *)(param_1 + 0xcc), + *(undefined4 *)(param_1 + 0xd0),*(undefined4 *)(param_1 + 0xd4), + *(undefined4 *)(param_1 + 0xd8)); + FUN_0048d4d4(*(undefined4 **)(param_1 + 0x1c)); + } + return; +} + + + +/* @004579a8 file=? name=FUN_004579a8 */ + +undefined4 * __cdecl +FUN_004579a8(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 *param_4, + undefined4 param_5,undefined4 *param_6,undefined4 *param_7) + +{ + int iVar1; + undefined4 *puVar2; + float *pfVar3; + float *pfVar4; + float local_94 [12]; + float local_64 [12]; + float local_34 [12]; + + FUN_0041b838(param_1,2,&DAT_004e32ac); + *param_1 = &PTR_FUN_004f1718; + FUN_0040aadc(param_1 + 6); + param_1[0x16] = param_2; + param_1[5] = param_5; + FUN_0040ab28(param_1 + 6,param_4); + param_1[0x12] = param_7; + if (param_7 == (undefined4 *)0x0) { + FUN_0040aadc(local_34); + FUN_00408f7c((float *)(param_1 + 0x13),local_34); + } + else { + FUN_00408e90(param_1 + 0x13,param_7); + } + iVar1 = FUN_00489708(); + param_1[4] = iVar1; + FUN_00489cec(param_1[5],iVar1); + FUN_0048a714(param_1[4],param_3); + FUN_0040aadc(local_64); + if ((float *)param_1[0x12] != (float *)0x0) { + FUN_0040ac6c(local_64,(float *)param_1[0x12]); + } + pfVar3 = local_64; + pfVar4 = local_94; + for (iVar1 = 0xc; iVar1 != 0; iVar1 = iVar1 + -1) { + *pfVar4 = *pfVar3; + pfVar3 = pfVar3 + 1; + pfVar4 = pfVar4 + 1; + } + FUN_0040b104(local_64,local_94,(float *)(param_1 + 6)); + puVar2 = (undefined4 *)FUN_0048a630(param_1[4]); + FUN_0040beb0(puVar2,local_64); + FUN_0048b4ac((int)param_6,param_1[4]); + FUN_0048d42c(param_6); + FUN_0048d3e8((undefined4 *)param_1[4]); + FUN_00420674(param_1[0x16],param_1); + FUN_0045a744(*(int *)(DAT_004efc94 + 0x48),param_1); + return param_1; +} + + + +/* @00457af4 file=? name=FUN_00457af4 */ + +void __cdecl FUN_00457af4(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f1718; + FUN_004898b8((int *)param_1[4]); + FUN_0041b898(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00457b2c file=? name=FUN_00457b2c */ + +undefined4 __cdecl FUN_00457b2c(int param_1) + +{ + FUN_0041b8e0(param_1); + return 1; +} + + + +/* @00457b48 file=? name=FUN_00457b48 */ + +void __cdecl FUN_00457b48(int param_1) + +{ + int iVar1; + undefined4 *puVar2; + float *pfVar3; + float *pfVar4; + float local_64 [12]; + float local_34 [12]; + + if (*(float **)(param_1 + 0x48) != (float *)0x0) { + iVar1 = FUN_004091f4(*(float **)(param_1 + 0x48),(float *)(param_1 + 0x4c),0.0001); + if (iVar1 == 0) { + FUN_00408e90((undefined4 *)(param_1 + 0x4c),*(undefined4 **)(param_1 + 0x48)); + FUN_0040aadc(local_34); + FUN_0040ac6c(local_34,*(float **)(param_1 + 0x48)); + pfVar3 = local_34; + pfVar4 = local_64; + for (iVar1 = 0xc; iVar1 != 0; iVar1 = iVar1 + -1) { + *pfVar4 = *pfVar3; + pfVar3 = pfVar3 + 1; + pfVar4 = pfVar4 + 1; + } + FUN_0040b104(local_34,local_64,(float *)(param_1 + 0x18)); + puVar2 = (undefined4 *)FUN_0048a630(*(int *)(param_1 + 0x10)); + FUN_0040beb0(puVar2,local_34); + FUN_0045fbf4(*(int *)(DAT_004efc94 + 0x48),*(undefined4 *)(param_1 + 0x10)); + } + } + return; +} + + + +/* @00457bf4 file=? name=FUN_00457bf4 */ + +undefined4 * __cdecl +FUN_00457bf4(undefined4 *param_1,undefined4 param_2,int param_3,int param_4,undefined4 param_5, + undefined4 param_6,undefined4 *param_7,undefined4 param_8,undefined4 *param_9) + +{ + int iVar1; + undefined4 *puVar2; + undefined4 *puVar3; + + FUN_0041b838(param_1,2,&DAT_004e32ac); + puVar3 = param_1 + 8; + *param_1 = &PTR_FUN_004f1700; + FUN_0040aadc(puVar3); + param_1[0x14] = param_2; + param_1[6] = param_8; + param_1[0x15] = param_9; + FUN_0040ab28(puVar3,param_7); + FUN_00408440(param_1 + 0x16,param_9); + iVar1 = FUN_00489708(); + param_1[4] = iVar1; + FUN_00489cec(param_1[6],iVar1); + FUN_0048a714(param_1[4],param_3); + iVar1 = FUN_00489708(); + param_1[5] = iVar1; + FUN_00489cec(param_1[4],iVar1); + FUN_0048a714(param_1[5],param_3); + puVar2 = (undefined4 *)FUN_0048a630(param_1[4]); + FUN_0040beb0(puVar2,puVar3); + puVar3 = (undefined4 *)FUN_0048a630(param_1[5]); + FUN_0040c18c(puVar3,(undefined4 *)param_1[0x15]); + if (param_4 == 0) { + param_1[7] = 0; + } + else { + iVar1 = FUN_00489724(); + param_1[7] = iVar1; + FUN_0048ab0c(iVar1,param_4); + FUN_0048ad48(param_1[7],param_5); + FUN_0048add4(param_1[7],param_6); + FUN_0048ac30(param_1[7],1); + FUN_00489e04(param_1[5],param_1[7]); + FUN_0048d5d4((undefined4 *)param_1[7]); + } + FUN_0048d3e8((undefined4 *)param_1[4]); + FUN_0048d3e8((undefined4 *)param_1[5]); + FUN_00420674(param_1[0x14],param_1); + FUN_0045a744(*(int *)(DAT_004efc94 + 0x48),param_1); + return param_1; +} + + + +/* @00457d74 file=? name=FUN_00457d74 */ + +void __cdecl FUN_00457d74(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f1700; + FUN_004898b8((int *)param_1[5]); + FUN_004898b8((int *)param_1[4]); + if ((int *)param_1[7] != (int *)0x0) { + FUN_004898f8((int *)param_1[7]); + } + FUN_0041b898(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00457dc4 file=? name=FUN_00457dc4 */ + +void __cdecl FUN_00457dc4(int param_1) + +{ + float *pfVar1; + int iVar2; + undefined4 *puVar3; + + pfVar1 = (float *)(param_1 + 0x58); + iVar2 = FUN_004084fc(pfVar1,*(float **)(param_1 + 0x54),0.0001); + if (iVar2 == 0) { + FUN_00408440(pfVar1,*(undefined4 **)(param_1 + 0x54)); + puVar3 = (undefined4 *)FUN_0048a630(*(int *)(param_1 + 0x14)); + FUN_0040c18c(puVar3,pfVar1); + FUN_0045fbf4(*(int *)(DAT_004efc94 + 0x48),*(undefined4 *)(param_1 + 0x14)); + } + return; +} + + + +/* @00457e24 file=? name=FUN_00457e24 */ + +undefined4 __cdecl FUN_00457e24(int param_1) + +{ + FUN_0041b8e0(param_1); + return 1; +} + + + +/* @00457e40 file=? name=FUN_00457e40 */ + +undefined4 * __cdecl +FUN_00457e40(undefined4 *param_1,undefined4 param_2,int param_3,int param_4,undefined4 param_5, + undefined4 param_6,undefined4 *param_7,undefined4 param_8,undefined4 *param_9, + undefined4 *param_10) + +{ + int iVar1; + undefined4 *puVar2; + float *pfVar3; + float *pfVar4; + float local_98 [12]; + float local_68 [12]; + float local_38 [12]; + float *local_8; + + FUN_0041b838(param_1,2,&DAT_004e32ac); + *param_1 = &PTR_FUN_004f16e8; + param_1[0x15] = param_2; + param_1[7] = param_8; + param_1[0x16] = param_9; + param_1[4] = param_10; + FUN_0040ab28(param_1 + 9,param_7); + FUN_00408440(param_1 + 0x17,param_9); + param_1[5] = *param_10; + iVar1 = FUN_00489708(); + param_1[6] = iVar1; + FUN_00489cec(param_1[7],iVar1); + FUN_0048a714(param_1[6],param_3); + puVar2 = (undefined4 *)FUN_0048a630(param_1[6]); + FUN_0040aadc(local_38); + local_8 = (float *)(param_1 + 0x17); + pfVar3 = local_38; + pfVar4 = local_68; + for (iVar1 = 0xc; iVar1 != 0; iVar1 = iVar1 + -1) { + *pfVar4 = *pfVar3; + pfVar3 = pfVar3 + 1; + pfVar4 = pfVar4 + 1; + } + FUN_0040b374(local_38,local_68,local_8); + pfVar3 = local_38; + pfVar4 = local_98; + for (iVar1 = 0xc; iVar1 != 0; iVar1 = iVar1 + -1) { + *pfVar4 = *pfVar3; + pfVar3 = pfVar3 + 1; + pfVar4 = pfVar4 + 1; + } + FUN_0040b104(local_38,local_98,(float *)(param_1 + 9)); + FUN_0040beb0(puVar2,local_38); + iVar1 = FUN_00489724(); + param_1[8] = iVar1; + FUN_0048ab0c(iVar1,param_4); + FUN_0048ad48(param_1[8],param_5); + FUN_0048add4(param_1[8],param_6); + FUN_0048ac30(param_1[8],param_1[5]); + FUN_00489e04(param_1[6],param_1[8]); + FUN_0048d5d4((undefined4 *)param_1[8]); + FUN_0048d3e8((undefined4 *)param_1[6]); + FUN_00420674(param_1[0x15],param_1); + FUN_0045a744(*(int *)(DAT_004efc94 + 0x48),param_1); + return param_1; +} + + + +/* @00457fd8 file=? name=FUN_00457fd8 */ + +void __cdecl FUN_00457fd8(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f16e8; + FUN_004898b8((int *)param_1[6]); + FUN_004898f8((int *)param_1[8]); + FUN_0041b898(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00458018 file=? name=FUN_00458018 */ + +void __cdecl FUN_00458018(int param_1) + +{ + int iVar1; + undefined4 *puVar2; + float *pfVar3; + float *pfVar4; + float *pfVar5; + float local_94 [12]; + float local_64 [12]; + float local_34 [12]; + + iVar1 = **(int **)(param_1 + 0x10); + if (iVar1 != *(int *)(param_1 + 0x14)) { + *(int *)(param_1 + 0x14) = iVar1; + FUN_0048ac30(*(int *)(param_1 + 0x20),iVar1); + FUN_0048d5d4(*(undefined4 **)(param_1 + 0x20)); + } + pfVar4 = (float *)(param_1 + 0x5c); + iVar1 = FUN_004084fc(pfVar4,*(float **)(param_1 + 0x58),0.0001); + if (iVar1 == 0) { + FUN_00408440(pfVar4,*(undefined4 **)(param_1 + 0x58)); + puVar2 = (undefined4 *)FUN_0048a630(*(int *)(param_1 + 0x18)); + FUN_0040aadc(local_34); + pfVar3 = local_34; + pfVar5 = local_64; + for (iVar1 = 0xc; iVar1 != 0; iVar1 = iVar1 + -1) { + *pfVar5 = *pfVar3; + pfVar3 = pfVar3 + 1; + pfVar5 = pfVar5 + 1; + } + FUN_0040b374(local_34,local_64,pfVar4); + pfVar4 = local_34; + pfVar3 = local_94; + for (iVar1 = 0xc; iVar1 != 0; iVar1 = iVar1 + -1) { + *pfVar3 = *pfVar4; + pfVar4 = pfVar4 + 1; + pfVar3 = pfVar3 + 1; + } + FUN_0040b104(local_34,local_94,(float *)(param_1 + 0x24)); + FUN_0040beb0(puVar2,local_34); + FUN_0045fbf4(*(int *)(DAT_004efc94 + 0x48),*(undefined4 *)(param_1 + 0x18)); + } + return; +} + + + +/* @00458108 file=? name=FUN_00458108 */ + +undefined4 __cdecl FUN_00458108(int param_1) + +{ + FUN_0041b8e0(param_1); + return 1; +} + + + +/* @0045811c file=? name=FUN_0045811c */ + +undefined4 * __cdecl +FUN_0045811c(undefined4 *param_1,undefined4 param_2,int param_3,int param_4,undefined4 param_5, + undefined4 param_6,undefined4 *param_7,undefined4 param_8,undefined4 *param_9, + undefined4 *param_10,undefined4 *param_11) + +{ + int iVar1; + undefined4 *puVar2; + float *pfVar3; + float *pfVar4; + float local_dc [12]; + float local_ac [12]; + float local_7c [12]; + float local_4c [16]; + float *local_c; + float *local_8; + + FUN_0041b838(param_1,2,&DAT_004e32ac); + *param_1 = &PTR_FUN_004f16d0; + param_1[0x15] = param_2; + param_1[7] = param_8; + param_1[0x16] = param_9; + param_1[0x1b] = param_10; + param_1[4] = param_11; + FUN_0040ab28(param_1 + 9,param_7); + FUN_00409968(param_1 + 0x17,param_9); + FUN_00408440(param_1 + 0x1c,param_10); + param_1[5] = *param_11; + iVar1 = FUN_00489708(); + param_1[6] = iVar1; + FUN_00489cec(param_1[7],iVar1); + FUN_0048a714(param_1[6],param_3); + puVar2 = (undefined4 *)FUN_0048a630(param_1[6]); + FUN_0040aadc(local_4c); + local_8 = (float *)(param_1 + 0x1c); + pfVar3 = local_4c; + pfVar4 = local_7c; + for (iVar1 = 0xc; iVar1 != 0; iVar1 = iVar1 + -1) { + *pfVar4 = *pfVar3; + pfVar3 = pfVar3 + 1; + pfVar4 = pfVar4 + 1; + } + FUN_0040b374(local_4c,local_7c,local_8); + local_c = (float *)(param_1 + 0x17); + pfVar3 = local_4c; + pfVar4 = local_ac; + for (iVar1 = 0xc; iVar1 != 0; iVar1 = iVar1 + -1) { + *pfVar4 = *pfVar3; + pfVar3 = pfVar3 + 1; + pfVar4 = pfVar4 + 1; + } + FUN_0040b3e8(local_4c,local_ac,local_c); + pfVar3 = local_4c; + pfVar4 = local_dc; + for (iVar1 = 0xc; iVar1 != 0; iVar1 = iVar1 + -1) { + *pfVar4 = *pfVar3; + pfVar3 = pfVar3 + 1; + pfVar4 = pfVar4 + 1; + } + FUN_0040b104(local_4c,local_dc,(float *)(param_1 + 9)); + FUN_0040beb0(puVar2,local_4c); + iVar1 = FUN_00489724(); + param_1[8] = iVar1; + FUN_0048ab0c(iVar1,param_4); + FUN_0048ad48(param_1[8],param_5); + FUN_0048add4(param_1[8],param_6); + FUN_0048ac30(param_1[8],param_1[5]); + FUN_00489e04(param_1[6],param_1[8]); + FUN_0048d5d4((undefined4 *)param_1[8]); + FUN_0048d3e8((undefined4 *)param_1[6]); + FUN_00420674(param_1[0x15],param_1); + FUN_0045a744(*(int *)(DAT_004efc94 + 0x48),param_1); + return param_1; +} + + + +/* @004582fc file=? name=FUN_004582fc */ + +void __cdecl FUN_004582fc(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f16d0; + FUN_004898b8((int *)param_1[6]); + FUN_004898f8((int *)param_1[8]); + FUN_0041b898(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0045833c file=? name=FUN_0045833c */ + +void __cdecl FUN_0045833c(int param_1) + +{ + int iVar1; + undefined4 *puVar2; + float *pfVar3; + float *pfVar4; + float *pfVar5; + float local_c4 [12]; + float local_94 [12]; + float local_64 [12]; + float local_34 [12]; + + iVar1 = **(int **)(param_1 + 0x10); + if (iVar1 != *(int *)(param_1 + 0x14)) { + *(int *)(param_1 + 0x14) = iVar1; + FUN_0048ac30(*(int *)(param_1 + 0x20),iVar1); + FUN_0048d5d4(*(undefined4 **)(param_1 + 0x20)); + } + pfVar4 = (float *)(param_1 + 0x70); + iVar1 = FUN_004084fc(pfVar4,*(float **)(param_1 + 0x6c),0.0001); + if ((iVar1 != 0) && + (iVar1 = FUN_004d4b14((byte *)(param_1 + 0x5c),*(byte **)(param_1 + 0x58),0x10), iVar1 == 0)) { + return; + } + FUN_00408440(pfVar4,*(undefined4 **)(param_1 + 0x6c)); + FUN_00409968((undefined4 *)(param_1 + 0x5c),*(undefined4 **)(param_1 + 0x58)); + puVar2 = (undefined4 *)FUN_0048a630(*(int *)(param_1 + 0x18)); + FUN_0040aadc(local_34); + pfVar3 = local_34; + pfVar5 = local_64; + for (iVar1 = 0xc; iVar1 != 0; iVar1 = iVar1 + -1) { + *pfVar5 = *pfVar3; + pfVar3 = pfVar3 + 1; + pfVar5 = pfVar5 + 1; + } + FUN_0040b374(local_34,local_64,pfVar4); + pfVar4 = local_34; + pfVar3 = local_94; + for (iVar1 = 0xc; iVar1 != 0; iVar1 = iVar1 + -1) { + *pfVar3 = *pfVar4; + pfVar4 = pfVar4 + 1; + pfVar3 = pfVar3 + 1; + } + FUN_0040b3e8(local_34,local_94,(float *)(param_1 + 0x5c)); + pfVar4 = local_34; + pfVar3 = local_c4; + for (iVar1 = 0xc; iVar1 != 0; iVar1 = iVar1 + -1) { + *pfVar3 = *pfVar4; + pfVar4 = pfVar4 + 1; + pfVar3 = pfVar3 + 1; + } + FUN_0040b104(local_34,local_c4,(float *)(param_1 + 0x24)); + FUN_0040beb0(puVar2,local_34); + FUN_0045fbf4(*(int *)(DAT_004efc94 + 0x48),*(undefined4 *)(param_1 + 0x18)); + return; +} + + + +/* @00458478 file=? name=FUN_00458478 */ + +undefined4 __cdecl FUN_00458478(int param_1) + +{ + FUN_0041b8e0(param_1); + return 1; +} + + + +/* @0045848c file=? name=FUN_0045848c */ + +undefined4 * __cdecl +FUN_0045848c(undefined4 *param_1,undefined4 param_2,int param_3,int param_4,undefined4 param_5, + undefined4 param_6,undefined4 *param_7,undefined4 param_8) + +{ + undefined4 *puVar1; + int iVar2; + undefined4 *puVar3; + + FUN_0041b838(param_1,2,&DAT_004e32ac); + puVar1 = param_1 + 7; + *param_1 = &PTR_FUN_004f16b8; + FUN_0040aadc(puVar1); + param_1[0x13] = param_2; + param_1[5] = param_8; + FUN_0040ab28(puVar1,param_7); + iVar2 = FUN_00489708(); + param_1[4] = iVar2; + FUN_00489cec(param_1[5],iVar2); + FUN_0048a714(param_1[4],param_3); + puVar3 = (undefined4 *)FUN_0048a630(param_1[4]); + FUN_0040beb0(puVar3,puVar1); + if (param_4 == 0) { + param_1[6] = 0; + } + else { + iVar2 = FUN_00489724(); + param_1[6] = iVar2; + FUN_0048ab0c(iVar2,param_4); + FUN_0048ad48(param_1[6],param_5); + FUN_0048add4(param_1[6],param_6); + FUN_0048ac30(param_1[6],1); + FUN_00489e04(param_1[4],param_1[6]); + FUN_0048d5d4((undefined4 *)param_1[6]); + } + FUN_0048d3e8((undefined4 *)param_1[4]); + FUN_00420674(param_1[0x13],param_1); + return param_1; +} + + + +/* @00458598 file=? name=FUN_00458598 */ + +void __cdecl FUN_00458598(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f16b8; + FUN_004898b8((int *)param_1[4]); + if ((int *)param_1[6] != (int *)0x0) { + FUN_004898f8((int *)param_1[6]); + } + FUN_0041b898(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004585dc file=? name=FUN_004585dc */ + +undefined4 __cdecl FUN_004585dc(int param_1) + +{ + FUN_0041b8e0(param_1); + return 1; +} + + + +/* @004585f8 file=? name=FUN_004585f8 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 * __cdecl +FUN_004585f8(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 *param_4, + undefined4 param_5,int param_6,undefined4 param_7,undefined4 param_8,float param_9) + +{ + FUN_0041b838(param_1,2,&DAT_004e32ac); + *param_1 = &PTR_FUN_004f16a0; + param_1[0xe] = param_2; + param_1[8] = param_5; + FUN_00408440(param_1 + 9,param_4); + param_1[7] = param_6; + param_1[6] = *(undefined4 *)(param_6 + 0x14); + param_1[5] = param_7; + param_1[4] = param_8; + param_1[0xc] = _DAT_0045868c / (param_9 * _DAT_00458688); + param_1[0xd] = 0; + FUN_00420674(param_1[0xe],param_1); + FUN_0045a744(*(int *)(DAT_004efc94 + 0x48),param_1); + return param_1; +} + + + +/* @00458690 file=? name=FUN_00458690 */ + +void __cdecl FUN_00458690(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f16a0; + FUN_0041b898(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004586bc file=? name=FUN_004586bc */ + +undefined4 __cdecl FUN_004586bc(int param_1) + +{ + FUN_0041b8e0(param_1); + return 1; +} + + + +/* @004586d0 file=? name=FUN_004586d0 */ + +void __cdecl FUN_004586d0(int param_1) + +{ + int iVar1; + int *piVar2; + undefined4 local_1c; + undefined4 local_18; + undefined4 local_14; + undefined4 local_10; + float local_8; + + iVar1 = *(int *)(*(int *)(param_1 + 0x1c) + 0x14); + if (iVar1 == *(int *)(param_1 + 0x14)) { + if (iVar1 != *(int *)(param_1 + 0x18)) { + *(undefined4 *)(param_1 + 0x34) = 0; + } + piVar2 = (int *)FUN_00414b60(); + local_8 = (float)*piVar2 / DAT_0052140c; + if (*(float *)(param_1 + 0x34) + *(float *)(param_1 + 0x30) < local_8) { + local_10 = *(undefined4 *)(param_1 + 0x10); + local_1c = *(undefined4 *)(param_1 + 0x24); + local_18 = *(undefined4 *)(param_1 + 0x28); + local_14 = *(undefined4 *)(param_1 + 0x2c); + FUN_0048d060(0,*(int *)(param_1 + 0x20),&local_1c); + *(float *)(param_1 + 0x34) = local_8; + } + } + *(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(*(int *)(param_1 + 0x1c) + 0x14); + return; +} + + + +/* @00458754 file=? name=FUN_00458754 */ + +undefined4 * __cdecl +FUN_00458754(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 *param_4, + undefined4 param_5,undefined4 param_6,undefined4 param_7) + +{ + FUN_0041b838(param_1,2,&DAT_004e32ac); + *param_1 = &PTR_FUN_004f1688; + param_1[4] = param_2; + param_1[5] = param_5; + FUN_00408440(param_1 + 6,param_4); + param_1[9] = param_6; + param_1[10] = param_7; + param_1[0xb] = 0; + FUN_00420674(param_1[4],param_1); + FUN_0045a744(*(int *)(DAT_004efc94 + 0x48),param_1); + return param_1; +} + + + +/* @004587c8 file=? name=FUN_004587c8 */ + +void __cdecl FUN_004587c8(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f1688; + FUN_0041b898(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004587f4 file=? name=FUN_004587f4 */ + +undefined4 __cdecl FUN_004587f4(int param_1) + +{ + FUN_0041b8e0(param_1); + return 1; +} + + + +/* @00458808 file=? name=FUN_00458808 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_00458808(int param_1) + +{ + int *piVar1; + undefined4 local_1c; + undefined4 local_18; + undefined4 local_14; + undefined4 local_10; + float local_8; + + if (**(float **)(param_1 + 0x28) == _DAT_00458890) { + *(undefined4 *)(param_1 + 0x2c) = 0; + } + else { + piVar1 = (int *)FUN_00414b60(); + local_8 = (float)*piVar1 / DAT_0052140c; + if (_DAT_00458898 / (**(float **)(param_1 + 0x28) * _DAT_00458894) + *(float *)(param_1 + 0x2c) + < local_8) { + *(float *)(param_1 + 0x2c) = local_8; + local_10 = *(undefined4 *)(param_1 + 0x24); + local_1c = *(undefined4 *)(param_1 + 0x18); + local_18 = *(undefined4 *)(param_1 + 0x1c); + local_14 = *(undefined4 *)(param_1 + 0x20); + FUN_0048d060(0,*(int *)(param_1 + 0x14),&local_1c); + } + } + return; +} + + + +/* @004589a0 file=? name=FUN_004589a0 */ + +void __cdecl FUN_004589a0(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f1670; + FUN_0041b898(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004589cc file=? name=FUN_004589cc */ + +undefined4 __cdecl FUN_004589cc(int param_1) + +{ + FUN_0041b8e0(param_1); + return 1; +} + + + +/* @004589e0 file=? name=FUN_004589e0 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004589e0(int param_1) + +{ + int iVar1; + undefined4 *puVar2; + float local_9c [5]; + float local_88; + float local_74; + float local_6c [5]; + float local_58; + float local_44; + float local_3c [5]; + float local_28; + float local_14; + float local_c; + float local_8; + + local_8 = *(float *)(*(int *)(DAT_004efc94 + 0x48) + 0x80); + iVar1 = *(int *)(param_1 + 0x10); + if (iVar1 == 0) { + if (*(int *)(*(int *)(param_1 + 0x24) + 0x14) == *(int *)(param_1 + 0x14)) { + *(undefined4 *)(param_1 + 0x10) = 1; + *(float *)(param_1 + 0x20) = local_8; + local_c = local_8 - *(float *)(param_1 + 0x20); + if (local_c < _DAT_00458c4c) { + local_c = 0.05; + } + puVar2 = (undefined4 *)FUN_0048a630(*(int *)(param_1 + 0x2c)); + FUN_0040aadc(local_3c); + local_3c[0] = local_c; + local_28 = local_c; + local_14 = local_c; + FUN_0040b0ac((int)local_3c,3,*(undefined4 **)(param_1 + 0x38)); + FUN_0040beb0(puVar2,local_3c); + FUN_0048ac30(*(int *)(param_1 + 0x28),1); + FUN_0048d5d4(*(undefined4 **)(param_1 + 0x28)); + FUN_0045fbf4(*(int *)(DAT_004efc94 + 0x48),*(undefined4 *)(param_1 + 0x2c)); + } + } + else if (iVar1 == 1) { + local_c = local_8 - *(float *)(param_1 + 0x20); + if (local_c < _DAT_00458c4c) { + local_c = 0.05; + } + if (_DAT_00458c50 <= local_c) { + local_c = 1.0; + *(undefined4 *)(param_1 + 0x10) = 2; + } + puVar2 = (undefined4 *)FUN_0048a630(*(int *)(param_1 + 0x2c)); + FUN_0040aadc(local_6c); + local_6c[0] = local_c; + local_58 = local_c; + local_44 = local_c; + FUN_0040b0ac((int)local_6c,3,*(undefined4 **)(param_1 + 0x38)); + FUN_0040beb0(puVar2,local_6c); + FUN_0045fbf4(*(int *)(DAT_004efc94 + 0x48),*(undefined4 *)(param_1 + 0x2c)); + } + else if (iVar1 == 2) { + if (_DAT_00458c54 <= local_8 - *(float *)(param_1 + 0x20)) { + *(undefined4 *)(param_1 + 0x10) = 3; + *(float *)(param_1 + 0x20) = local_8 + _DAT_00458c50; + } + } + else if (iVar1 == 3) { + local_c = *(float *)(param_1 + 0x20) - local_8; + if (local_c < _DAT_00458c4c) { + local_c = 0.05; + FUN_0048ac30(*(int *)(param_1 + 0x28),0); + FUN_0048d5d4(*(undefined4 **)(param_1 + 0x28)); + *(undefined4 *)(param_1 + 0x10) = 0; + } + puVar2 = (undefined4 *)FUN_0048a630(*(int *)(param_1 + 0x2c)); + FUN_0040aadc(local_9c); + local_9c[0] = local_c; + local_88 = local_c; + local_74 = local_c; + FUN_0040b0ac((int)local_9c,3,*(undefined4 **)(param_1 + 0x38)); + FUN_0040beb0(puVar2,local_9c); + FUN_0045fbf4(*(int *)(DAT_004efc94 + 0x48),*(undefined4 *)(param_1 + 0x2c)); + } + return; +} + + + +/* @00458c58 file=munga_l4/l4vidrnd.cpp name=FUN_00458c58 */ + +undefined4 * __cdecl +FUN_00458c58(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 *param_4, + int param_5) + +{ + uint uVar1; + int iVar2; + undefined4 *puVar3; + + FUN_004530ec(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004f1658; + if (param_4 == (undefined4 *)0x0) { + FUN_0040385c(s_A_pfx_was_not_defined_in_the__in_004f15be, + s_d__tesla_bt_munga_l4_L4VIDRND_CP_004f15e6,0x182a); + } + puVar3 = param_1 + 7; + for (iVar2 = 0x41; iVar2 != 0; iVar2 = iVar2 + -1) { + *puVar3 = *param_4; + param_4 = param_4 + 1; + puVar3 = puVar3 + 1; + } + uVar1 = FUN_00460ae4(param_1[4]); + param_1[7] = uVar1 | param_1[7] & 0xffff0000; + FUN_0048d060(1,param_5,param_1 + 7); + return param_1; +} + + + +/* @00458cd4 file=? name=FUN_00458cd4 */ + +void __cdecl FUN_00458cd4(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f1658; + FUN_0048d060(2,0,param_1 + 7); + FUN_00453198(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00458d10 file=? name=FUN_00458d10 */ + +undefined4 __cdecl FUN_00458d10(int param_1) + +{ + FUN_004531c4(param_1); + return 1; +} + + + +/* @00458d24 file=? name=FUN_00458d24 */ + +void FUN_00458d24(void) + +{ + return; +} + + + +/* @00458d2c file=? name=FUN_00458d2c */ + +undefined4 * __cdecl +FUN_00458d2c(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4, + undefined4 param_5,undefined4 param_6,undefined4 param_7) + +{ + int iVar1; + undefined4 uVar2; + int iVar3; + + FUN_004530ec(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004f1640; + param_1[0xe] = param_4; + param_1[0xb] = param_5; + param_1[0xf] = param_6; + param_1[8] = param_7; + param_1[7] = 0; + iVar1 = FUN_00498448(s_tsphere_004f1608,0); + uVar2 = FUN_00489724(); + param_1[0xc] = uVar2; + iVar3 = FUN_00489708(); + param_1[0xd] = iVar3; + FUN_00489ba8(iVar3); + FUN_0048a714(param_1[0xd],param_1[0xe]); + FUN_0048ab0c(param_1[0xc],iVar1); + FUN_0048ad48(param_1[0xc],1); + FUN_0048add4(param_1[0xc],0); + FUN_0048ac30(param_1[0xc],0); + FUN_00489e04(param_1[0xd],param_1[0xc]); + FUN_0048d5d4((undefined4 *)param_1[0xc]); + FUN_0048d3e8((undefined4 *)param_1[0xd]); + (**(code **)(*(int *)(param_1[0xb] + 0x2c) + 4))(param_1[0xb] + 0x2c,param_1); + return param_1; +} + + + +/* @00458e1c file=? name=FUN_00458e1c */ + +void __cdecl FUN_00458e1c(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f1640; + FUN_00453198(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00458e48 file=? name=FUN_00458e48 */ + +undefined4 __cdecl FUN_00458e48(int param_1) + +{ + FUN_0041b8e0(param_1); + return 1; +} + + + /* @00458e5c file=? name=FUN_00458e5c */ /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ @@ -3436,6 +5354,75 @@ void __cdecl FUN_0045f7dc(int param_1) +/* @0045fa08 file=? name=FUN_0045fa08 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_0045fa08(int *param_1) + +{ + float *pfVar1; + int *piVar2; + int iVar3; + undefined4 uVar4; + int local_18 [5]; + + piVar2 = (int *)FUN_00414b60(); + param_1[0x20] = (int)((float)*piVar2 / DAT_0052140c); + iVar3 = *(int *)(DAT_004efc94 + 0x88); + if (iVar3 != param_1[0x2f]) { + if (iVar3 == 5) { + FUN_0048b6b4(param_1[0x49],5,param_1[0x32],param_1[0x34],param_1[0x33],param_1[0x35], + param_1[0x36]); + FUN_0048d42c((undefined4 *)param_1[0x49]); + FUN_00490618(); + } + param_1[0x2f] = iVar3; + } + pfVar1 = (float *)param_1[0x4c]; + if (pfVar1 != (float *)0x0) { + if (pfVar1[3] == 0.0) { + param_1[0xdb] = 0; + } + else { + iVar3 = FUN_004903c8(*pfVar1 * (float)param_1[0x30] * _DAT_0045fbf0 + _DAT_0045fbf0, + pfVar1[1] * (float)param_1[0x30] * _DAT_0045fbf0 + _DAT_0045fbf0, + 0x47c35000,0xffffffff,pfVar1 + 4,pfVar1 + 5,pfVar1 + 6,param_1 + 0xdc, + param_1 + 0xdd,param_1 + 0xde); + param_1[0xdb] = iVar3; + } + if (param_1[0xdb] == 0) { + iVar3 = param_1[0x4c]; + *(undefined4 *)(iVar3 + 0x20) = 0xffffffff; + *(undefined4 *)(iVar3 + 0x1c) = 0; + } + else { + uVar4 = FUN_004904a0(param_1[0xdc]); + *(undefined4 *)(param_1[0x4c] + 0x1c) = uVar4; + iVar3 = FUN_004904a0(param_1[0xdd]); + if (iVar3 == 0) { + *(undefined4 *)(param_1[0x4c] + 0x20) = 0xffffffff; + } + else { + iVar3 = FUN_004904a0(param_1[0xdd]); + *(int *)(param_1[0x4c] + 0x20) = iVar3 + -1; + } + } + } + FUN_0045f59c((int)param_1); + FUN_0041c477(local_18,(int)(param_1 + 0xef)); + while (piVar2 = (int *)(**(code **)(local_18[0] + 0x28))(local_18), piVar2 != (int *)0x0) { + (**(code **)(*piVar2 + 0x14))(piVar2); + } + FUN_0045fc24((int)param_1); + param_1[0x2d] = 1; + (**(code **)(*param_1 + 0x20))(param_1); + FUN_0041c4d4(local_18,2); + return; +} + + + /* @0045fbf4 file=? name=FUN_0045fbf4 */ void __cdecl FUN_0045fbf4(int param_1,undefined4 param_2) @@ -3846,6 +5833,17 @@ void __cdecl FUN_0045ff4c(undefined4 *param_1,int param_2,int param_3,int param_ +/* @00460564 file=? name=FUN_00460564 */ + +void __cdecl FUN_00460564(int param_1,int param_2) + +{ + FUN_0045ff4c(*(undefined4 **)(param_1 + 0x124),DAT_004f3368,DAT_004f336c,param_2); + return; +} + + + /* @00460590 file=? name=FUN_00460590 */ /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ @@ -3971,6 +5969,18 @@ void __cdecl FUN_00460770(int param_1,float param_2) +/* @00460820 file=? name=FUN_00460820 */ + +void __cdecl FUN_00460820(int param_1,int param_2) + +{ + FUN_0045ce5c(param_1,param_2); + FUN_004609dc(param_1); + return; +} + + + /* @00460840 file=? name=FUN_00460840 */ void __cdecl FUN_00460840(undefined4 param_1) @@ -7157,6 +9167,27 @@ LAB_004638f2: +/* @00463b60 file=? name=FUN_00463b60 */ + +void __cdecl FUN_00463b60(int param_1) + +{ + undefined4 uVar1; + byte local_103; + undefined1 local_102; + undefined1 local_101; + + uVar1 = FUN_004dcd94(); + local_103 = *(byte *)(*(int *)(param_1 + 200) + 0x10) | 0x80; + local_102 = (undefined1)uVar1; + local_101 = 0; + FUN_00486402(*(int *)(*(int *)(*(int *)(param_1 + 200) + 0x18) + 0x4c),&local_103,3); + *(undefined4 *)(param_1 + 200) = 0; + return; +} + + + /* @00463bbc file=? name=FUN_00463bbc */ void __cdecl FUN_00463bbc(int *param_1,int param_2) @@ -7395,6 +9426,36 @@ void __cdecl FUN_00463ddc(int *param_1) +/* @00464178 file=? name=FUN_00464178 */ + +void __cdecl FUN_00464178(int param_1) + +{ + int iVar1; + undefined4 uVar2; + int *piVar3; + int iVar4; + byte local_103; + undefined1 local_102; + undefined1 local_101; + + iVar4 = 0; + piVar3 = (int *)(param_1 + 0xa4); + do { + iVar1 = *piVar3; + uVar2 = FUN_004dcd94(); + local_103 = *(byte *)(iVar1 + 0x10) | 0x80; + local_102 = (undefined1)uVar2; + local_101 = 0; + FUN_00486402(*(int *)(*(int *)(iVar1 + 0x18) + 0x4c),&local_103,3); + iVar4 = iVar4 + 1; + piVar3 = piVar3 + 1; + } while (iVar4 < 4); + return; +} + + + /* @004641e0 file=? name=FUN_004641e0 */ /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ @@ -7607,6 +9668,27 @@ void __cdecl FUN_004641e0(int *param_1,int param_2) +/* @00464824 file=? name=FUN_00464824 */ + +float10 __cdecl FUN_00464824(int param_1) + +{ + int *piVar1; + int iVar2; + float10 fVar3; + + fVar3 = FUN_0043bb14(param_1); + piVar1 = *(int **)(param_1 + 0x24); + iVar2 = *(int *)(*(int *)(DAT_004efc94 + 0x44) + 0x4c); + if (piVar1[0x18] <= *(int *)(iVar2 + 4)) { + piVar1[0x18] = *(int *)(iVar2 + 4) + piVar1[0x17]; + (**(code **)(*piVar1 + 0x1c))(piVar1,iVar2); + } + return (float10)(*(float *)(*(int *)(param_1 + 0x24) + 0x50) * (float)fVar3); +} + + + /* @0046487c file=? name=FUN_0046487c */ undefined4 * __cdecl FUN_0046487c(undefined4 *param_1,int *param_2,int param_3) @@ -7768,6 +9850,221 @@ void __cdecl FUN_00464a34(int *param_1) +/* @00464bfc file=? name=FUN_00464bfc */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_00464bfc(int *param_1) + +{ + int iVar1; + undefined4 uVar2; + int *piVar3; + int iVar4; + byte local_a04; + undefined1 local_a03; + undefined1 local_a02; + undefined1 local_909; + int local_908; + undefined1 local_902; + byte local_901 [255]; + byte local_802; + byte local_801 [255]; + byte local_702; + byte local_701 [227]; + byte local_61e; + undefined1 local_61d; + int local_61c; + int *local_618; + undefined1 local_611; + undefined4 local_610; + float local_60c; + undefined4 local_608; + byte local_602 [255]; + byte local_503; + byte local_502 [255]; + byte local_403 [239]; + int local_314; + undefined4 local_310; + float local_30c; + undefined4 local_308; + byte local_303 [255]; + byte local_204 [251]; + undefined1 local_109; + int local_108; + byte local_103 [251]; + undefined4 local_8; + + FUN_0043bfa4((int)param_1); + local_8 = *(undefined4 *)(*(int *)(DAT_004efc94 + 0x44) + 0x4c); + FUN_00436db0((int)param_1); + iVar4 = 0; + piVar3 = param_1 + 0x29; + do { + iVar1 = *piVar3; + if (iVar1 != 0) { + local_103[0] = *(byte *)(iVar1 + 0x10) | 0xb0; + local_103[1] = 7; + local_103[2] = 0; + FUN_00486402(*(int *)(*(int *)(iVar1 + 0x18) + 0x4c),local_103,3); + } + iVar4 = iVar4 + 1; + piVar3 = piVar3 + 1; + } while (iVar4 < 4); + local_108 = param_1[10]; + FUN_004379b8(local_108,*(float *)(param_1[9] + 0x48)); + iVar4 = 0; + piVar3 = param_1 + 0x29; + do { + if (*piVar3 != 0) { + FUN_00465cb4(local_108,*piVar3); + } + iVar4 = iVar4 + 1; + piVar3 = piVar3 + 1; + } while (iVar4 < 4); + uVar2 = FUN_004dcd94(); + local_109 = (undefined1)uVar2; + iVar4 = 0; + piVar3 = param_1 + 0x29; + do { + iVar1 = *piVar3; + if (iVar1 != 0) { + local_204[0] = *(byte *)(iVar1 + 0x10) | 0xb0; + local_204[1] = 0x5b; + local_204[2] = local_109; + FUN_00486402(*(int *)(*(int *)(iVar1 + 0x18) + 0x4c),local_204,3); + local_303[0] = *(byte *)(iVar1 + 0x10) | 0xb0; + local_303[1] = 0x5d; + local_303[2] = 0; + FUN_00486402(*(int *)(*(int *)(iVar1 + 0x18) + 0x4c),local_303,3); + } + iVar4 = iVar4 + 1; + piVar3 = piVar3 + 1; + } while (iVar4 < 4); + iVar4 = param_1[0x3e]; + if (iVar4 == 0) { + local_308 = 0x3f490fdb; + local_30c = _DAT_00465138 / (_DAT_00465134 * 0.7853982); + local_310 = 0x427e0000; + local_314 = param_1[0x35]; + uVar2 = FUN_004dcd94(); + local_403[0] = *(byte *)(param_1[0x29] + 0x10) | 0xb0; + local_403[1] = 10; + local_403[2] = (byte)uVar2; + FUN_00486402(*(int *)(*(int *)(param_1[0x29] + 0x18) + 0x4c),local_403,3); + } + else if (iVar4 == 1) { + local_502[0] = *(byte *)(param_1[0x29] + 0x10) | 0xb0; + local_502[1] = 10; + local_502[2] = 0; + FUN_00486402(*(int *)(*(int *)(param_1[0x29] + 0x18) + 0x4c),local_502,3); + local_503 = *(byte *)(param_1[0x2b] + 0x10); + local_602[0] = local_503 | 0xb0; + local_602[1] = 10; + local_602[2] = 0; + FUN_00486402(*(int *)(*(int *)(param_1[0x2b] + 0x18) + 0x4c),local_602,3); + } + else if (iVar4 == 2) { + local_608 = 0x3f490fdb; + local_60c = _DAT_0046512c / (_DAT_00465134 * 0.7853982); + local_610 = 0x427e0000; + local_618 = param_1 + 0x35; + local_61c = *local_618; + uVar2 = FUN_004dcd94(); + local_701[2] = (byte)uVar2; + local_61e = *(byte *)(param_1[0x2b] + 0x10); + local_701[0] = local_61e | 0xb0; + local_701[1] = 10; + local_61d = local_701[2]; + local_611 = local_701[2]; + FUN_00486402(*(int *)(*(int *)(param_1[0x2b] + 0x18) + 0x4c),local_701,3); + } + else if (iVar4 == 3) { + local_702 = *(byte *)(param_1[0x2a] + 0x10); + local_801[0] = local_702 | 0xb0; + local_801[1] = 10; + local_801[2] = 0x7f; + FUN_00486402(*(int *)(*(int *)(param_1[0x2a] + 0x18) + 0x4c),local_801,3); + local_802 = *(byte *)(param_1[0x2c] + 0x10); + local_901[0] = local_802 | 0xb0; + local_901[1] = 10; + local_901[2] = 0x7f; + FUN_00486402(*(int *)(*(int *)(param_1[0x2c] + 0x18) + 0x4c),local_901,3); + } + *(undefined1 *)(param_1 + 0x3f) = 0; + *(undefined1 *)((int)param_1 + 0xfd) = 0; + *(undefined1 *)((int)param_1 + 0xfe) = 0; + *(undefined1 *)((int)param_1 + 0xff) = 0; + param_1[0x40] = 0; + param_1[0x41] = 0x7f; + uVar2 = FUN_004dcd94(); + local_902 = (undefined1)uVar2; + if (param_1[0x19] != 0) { + local_908 = FUN_004dcd94(); + iVar4 = 0; + piVar3 = param_1 + 0x29; + do { + iVar1 = *piVar3; + if (iVar1 != 0) { + FUN_004628d8(*(int *)(iVar1 + 0x18),*(byte *)(iVar1 + 0x10),0xb,local_908); + } + iVar4 = iVar4 + 1; + piVar3 = piVar3 + 1; + } while (iVar4 < 4); + } + (**(code **)(*param_1 + 0x5c))(param_1,1); + iVar4 = 0; + piVar3 = param_1 + 0x29; + do { + iVar1 = *piVar3; + if (iVar1 != 0) { + local_909 = local_902; + uVar2 = FUN_004dcd94(); + local_a04 = *(byte *)(iVar1 + 0x10) | 0x90; + local_a03 = (undefined1)uVar2; + local_a02 = local_909; + FUN_00486402(*(int *)(*(int *)(iVar1 + 0x18) + 0x4c),&local_a04,3); + } + iVar4 = iVar4 + 1; + piVar3 = piVar3 + 1; + } while (iVar4 < 4); + return; +} + + + +/* @00465140 file=? name=FUN_00465140 */ + +void __cdecl FUN_00465140(int param_1) + +{ + int iVar1; + undefined4 uVar2; + int *piVar3; + int iVar4; + byte local_103; + undefined1 local_102; + undefined1 local_101; + + iVar4 = 0; + piVar3 = (int *)(param_1 + 0xa4); + do { + iVar1 = *piVar3; + if (iVar1 != 0) { + uVar2 = FUN_004dcd94(); + local_103 = *(byte *)(iVar1 + 0x10) | 0x80; + local_102 = (undefined1)uVar2; + local_101 = 0; + FUN_00486402(*(int *)(*(int *)(iVar1 + 0x18) + 0x4c),&local_103,3); + } + iVar4 = iVar4 + 1; + piVar3 = piVar3 + 1; + } while (iVar4 < 4); + return; +} + + + /* @004651ac file=? name=FUN_004651ac */ void __cdecl FUN_004651ac(int *param_1,int param_2) @@ -8307,6 +10604,23 @@ undefined4 __cdecl FUN_00465ccc(int param_1) +/* @00465cdc file=? name=FUN_00465cdc */ + +void __cdecl FUN_00465cdc(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f3fd4; + FUN_0043e770(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + /* @00465d08 file=? name=FUN_00465d08 */ int * __cdecl FUN_00465d08(int *param_1,int *param_2,int param_3) @@ -8318,7 +10632,7 @@ int * __cdecl FUN_00465d08(int *param_1,int *param_2,int param_3) int *local_8; FUN_0043e738(param_1,param_2,param_3); - *param_1 = (int)&PTR_LAB_004f3fd4; + *param_1 = (int)&PTR_FUN_004f3fd4; puVar2 = (undefined4 *)FUN_00402298(0x10); if (puVar2 == (undefined4 *)0x0) { local_8 = (int *)0x0; @@ -10393,6 +12707,33 @@ undefined4 __cdecl FUN_00468408(undefined4 param_1,int param_2,int param_3) +/* @0046847c file=? name=FUN_0046847c */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl FUN_0046847c(undefined4 param_1,float *param_2,int param_3) + +{ + undefined4 uVar1; + float10 fVar2; + + fVar2 = FUN_004dcd00((double)(*param_2 - *(float *)(param_3 + 0x1c))); + if ((float10)_DAT_004684e8 < fVar2) { + if (*param_2 <= *(float *)(param_3 + 0x1c)) { + uVar1 = 0xffffffff; + } + else { + uVar1 = 1; + } + } + else { + uVar1 = 0; + } + return uVar1; +} + + + /* @0046853c file=? name=FUN_0046853c */ /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ @@ -12658,4163 +14999,3 @@ undefined4 __cdecl FUN_0046aae0(uint *param_1) -/* @0046ab18 file=? name=FUN_0046ab18 */ - -int __cdecl FUN_0046ab18(int param_1) - -{ - uint uVar1; - int iVar2; - - iVar2 = 0; - for (uVar1 = *(uint *)(param_1 + 8); uVar1 != 0; uVar1 = uVar1 & uVar1 - 1) { - iVar2 = iVar2 + 1; - } - return iVar2; -} - - - -/* @0046ab38 file=? name=FUN_0046ab38 */ - -int __cdecl FUN_0046ab38(int param_1) - -{ - int iVar1; - - iVar1 = FUN_0046ab18(param_1); - return *(int *)(param_1 + 4) - iVar1; -} - - - -/* @0046ab50 file=? name=FUN_0046ab50 */ - -undefined4 * __cdecl FUN_0046ab50(undefined4 *param_1,int param_2,int param_3) - -{ - undefined4 uVar1; - undefined4 *puVar2; - int iVar3; - - FUN_0044a078(param_1,param_2,param_3); - *param_1 = &PTR_FUN_004f4d70; - FUN_00449ed0(param_1 + 0xb,param_2,param_3); - param_1[8] = param_3; - param_1[6] = param_2; - param_1[7] = param_2 >> 5; - iVar3 = param_1[8] * (param_2 >> 5); - param_1[10] = param_1[8] + -1; - param_1[9] = param_1[6] + -1; - uVar1 = FUN_004022b0(param_1[8]); - param_1[0xe] = uVar1; - uVar1 = FUN_004022b0(iVar3 * 4); - param_1[0xf] = uVar1; - if ((param_1[0xe] == 0) || (param_1[0xf] == 0)) { - param_1[5] = 0; - } - else { - param_1[5] = 1; - FUN_004d4988((undefined4 *)param_1[0xe],0,param_1[8]); - puVar2 = (undefined4 *)param_1[0xf]; - for (; 0 < iVar3; iVar3 = iVar3 + -1) { - *puVar2 = 0; - puVar2 = puVar2 + 1; - } - } - return param_1; -} - - - -/* @0046ac08 file=? name=FUN_0046ac08 */ - -void __cdecl FUN_0046ac08(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_004f4d70; - if ((int *)param_1[0xe] != (int *)0x0) { - FUN_004022d0((int *)param_1[0xe]); - param_1[0xe] = 0; - } - if ((int *)param_1[0xf] != (int *)0x0) { - FUN_004022d0((int *)param_1[0xf]); - param_1[0xf] = 0; - } - FUN_00449f30(param_1 + 0xb,2); - FUN_0044a0ac(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @0046ac68 file=? name=FUN_0046ac68 */ - -undefined4 FUN_0046ac68(void) - -{ - return 1; -} - - - -/* @0046ac74 file=? name=FUN_0046ac74 */ - -void __cdecl FUN_0046ac74(int param_1,char *param_2) - -{ - char cVar1; - int *piVar2; - uint uVar3; - uint uVar4; - char *pcVar5; - char *pcVar6; - undefined8 uVar7; - char local_54 [80]; - - FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s_Video16BitBuffered__004f4b3c,(char *)0x0); - uVar3 = 0xffffffff; - do { - pcVar5 = param_2; - if (uVar3 == 0) break; - uVar3 = uVar3 - 1; - pcVar5 = param_2 + 1; - cVar1 = *param_2; - param_2 = pcVar5; - } while (cVar1 != '\0'); - uVar3 = ~uVar3; - pcVar5 = pcVar5 + -uVar3; - pcVar6 = local_54; - for (uVar4 = uVar3 >> 2; uVar4 != 0; uVar4 = uVar4 - 1) { - *(undefined4 *)pcVar6 = *(undefined4 *)pcVar5; - pcVar5 = pcVar5 + 4; - pcVar6 = pcVar6 + 4; - } - for (uVar3 = uVar3 & 3; uVar3 != 0; uVar3 = uVar3 - 1) { - *pcVar6 = *pcVar5; - pcVar5 = pcVar5 + 1; - pcVar6 = pcVar6 + 1; - } - FUN_004d49b8(local_54,&DAT_004f4b51); - uVar3 = *(uint *)(param_1 + 0x18); - FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s_width___004f4b55,(char *)0x0); - piVar2 = FUN_004db78c(&DAT_00524e20,uVar3); - FUN_004dbb24(piVar2,&DAT_004f4b62,(char *)0x0); - uVar3 = *(uint *)(param_1 + 0x20); - FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s_height___004f4b64,(char *)0x0); - piVar2 = FUN_004db78c(&DAT_00524e20,uVar3); - FUN_004dbb24(piVar2,&DAT_004f4b71,(char *)0x0); - uVar3 = *(uint *)(param_1 + 0x24); - FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s_maximumX___004f4b73,(char *)0x0); - piVar2 = FUN_004db78c(&DAT_00524e20,uVar3); - FUN_004dbb24(piVar2,&DAT_004f4b80,(char *)0x0); - uVar3 = *(uint *)(param_1 + 0x28); - FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s_maximumY___004f4b82,(char *)0x0); - piVar2 = FUN_004db78c(&DAT_00524e20,uVar3); - FUN_004dbb24(piVar2,&DAT_004f4b8f,(char *)0x0); - pcVar5 = *(char **)(param_1 + 0x38); - FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s_changedLine__004f4b91,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,pcVar5,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,&DAT_004f4b9e,(char *)0x0); - uVar3 = *(uint *)(param_1 + 0x3c); - FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s_changedBit___004f4ba0,(char *)0x0); - uVar7 = FUN_004dbd4c(&DAT_00524e20,uVar3); - FUN_004dbb24((int *)uVar7,&DAT_004f4bad,(char *)0x0); - FUN_00449f74((uint *)(param_1 + 0x2c),local_54); - FUN_0044a0cc(param_1,local_54); - return; -} - - - -/* @0046aec4 file=? name=FUN_0046aec4 */ - -void __cdecl -FUN_0046aec4(int param_1,int param_2,int param_3,int *param_4,int *param_5,int *param_6) - -{ - *param_4 = param_2 * 2 + *(int *)(param_1 + 0x34) + param_3 * *(int *)(param_1 + 0x18) * 2; - *param_5 = (param_2 >> 5) * 4 + *(int *)(param_1 + 0x3c) + param_3 * *(int *)(param_1 + 0x1c) * 4; - *param_6 = 1 << (0x1f - ((byte)param_2 & 0x1f) & 0x1f); - return; -} - - - -/* @0046af20 file=? name=FUN_0046af20 */ - -void __cdecl FUN_0046af20(int param_1,int param_2,int param_3) - -{ - int iVar1; - - iVar1 = param_2; - if (param_3 < param_2) { - iVar1 = param_3; - param_3 = param_2; - } - FUN_004d4988((undefined4 *)(iVar1 + *(int *)(param_1 + 0x38)),1,(param_3 - iVar1) + 1); - return; -} - - - -/* @0046af50 file=? name=FUN_0046af50 */ - -void __cdecl -FUN_0046af50(int param_1,ushort param_2,ushort param_3,int param_4,int param_5,int param_6) - -{ - int iVar1; - uint local_10; - uint *local_c; - ushort *local_8; - - if (*(int *)(param_1 + 0x14) != 0) { - iVar1 = *(int *)(param_1 + 0x28) - param_6; - FUN_0046af20(param_1,iVar1,iVar1); - FUN_0046aec4(param_1,param_5,iVar1,(int *)&local_8,(int *)&local_c,(int *)&local_10); - if (param_4 == 0) { - *local_8 = *local_8 & ~param_3 | param_2; - } - else if (param_4 == 1) { - *local_8 = *local_8 & param_2; - } - else if (param_4 == 2) { - *local_8 = *local_8 | param_2; - } - else if (param_4 == 3) { - *local_8 = *local_8 ^ param_2; - } - *local_c = *local_c | local_10; - DAT_00522cbc = DAT_00522cbc + 1; - } - return; -} - - - -/* @0046aff8 file=? name=FUN_0046aff8 */ - -void __cdecl -FUN_0046aff8(int *param_1,undefined4 param_2,undefined4 param_3,int param_4,int param_5,int param_6, - int param_7,int param_8,int param_9) - -{ - int iVar1; - int iVar2; - int iVar3; - bool bVar4; - uint local_18; - uint *local_14; - ushort *local_10; - int local_c; - uint local_8; - - if (param_1[5] != 0) { - if ((param_7 == param_5) && (param_6 == param_8)) { - if (param_9 != 0) { - (**(code **)(*param_1 + 0x14))(param_1,param_2,param_3,param_4,param_5,param_6); - } - } - else { - iVar2 = param_1[10] - param_6; - iVar1 = param_1[10] - param_8; - FUN_0046af20((int)param_1,iVar2,iVar1); - param_3._0_2_ = ~(ushort)param_3; - iVar3 = param_7 - param_5; - bVar4 = iVar3 < 0; - if (bVar4) { - iVar3 = -iVar3; - } - local_8 = (uint)bVar4; - local_c = iVar1 - iVar2; - if (local_c < 0) { - local_8 = local_8 | 2; - local_c = -local_c; - } - if (local_c < iVar3) { - local_8 = local_8 | 4; - } - FUN_0046aec4((int)param_1,param_5,iVar2,(int *)&local_10,(int *)&local_14,(int *)&local_18); - iVar1 = 0x400; - switch(local_8) { - case 0: - iVar2 = local_c; - if (param_9 == 0) { - iVar2 = local_c + -1; - } - for (; 0 < iVar2; iVar2 = iVar2 + -1) { - if (param_4 == 0) { - *local_10 = *local_10 & (ushort)param_3 | (ushort)param_2; - } - else if (param_4 == 1) { - *local_10 = *local_10 & (ushort)param_2; - } - else if (param_4 == 2) { - *local_10 = *local_10 | (ushort)param_2; - } - else if (param_4 == 3) { - *local_10 = *local_10 ^ (ushort)param_2; - } - *local_14 = *local_14 | local_18; - DAT_00522cbc = DAT_00522cbc + 1; - local_10 = local_10 + param_1[6]; - local_14 = local_14 + param_1[7]; - iVar1 = iVar1 + (iVar3 << 0xb) / local_c; - if (0x800 < iVar1) { - local_10 = local_10 + 1; - local_18 = local_18 >> 1; - iVar1 = iVar1 + -0x800; - if (local_18 == 0) { - local_14 = local_14 + 1; - local_18 = 0x80000000; - } - } - } - break; - case 1: - iVar2 = local_c; - if (param_9 == 0) { - iVar2 = local_c + -1; - } - for (; 0 < iVar2; iVar2 = iVar2 + -1) { - if (param_4 == 0) { - *local_10 = *local_10 & (ushort)param_3 | (ushort)param_2; - } - else if (param_4 == 1) { - *local_10 = *local_10 & (ushort)param_2; - } - else if (param_4 == 2) { - *local_10 = *local_10 | (ushort)param_2; - } - else if (param_4 == 3) { - *local_10 = *local_10 ^ (ushort)param_2; - } - *local_14 = *local_14 | local_18; - DAT_00522cbc = DAT_00522cbc + 1; - local_10 = local_10 + param_1[6]; - local_14 = local_14 + param_1[7]; - iVar1 = iVar1 + (iVar3 << 0xb) / local_c; - if (0x800 < iVar1) { - local_10 = local_10 + -1; - local_18 = local_18 << 1; - iVar1 = iVar1 + -0x800; - if (local_18 == 0) { - local_14 = local_14 + -1; - local_18 = 1; - } - } - } - break; - case 2: - iVar2 = local_c; - if (param_9 == 0) { - iVar2 = local_c + -1; - } - for (; 0 < iVar2; iVar2 = iVar2 + -1) { - if (param_4 == 0) { - *local_10 = *local_10 & (ushort)param_3 | (ushort)param_2; - } - else if (param_4 == 1) { - *local_10 = *local_10 & (ushort)param_2; - } - else if (param_4 == 2) { - *local_10 = *local_10 | (ushort)param_2; - } - else if (param_4 == 3) { - *local_10 = *local_10 ^ (ushort)param_2; - } - *local_14 = *local_14 | local_18; - DAT_00522cbc = DAT_00522cbc + 1; - local_10 = local_10 + -param_1[6]; - local_14 = local_14 + -param_1[7]; - iVar1 = iVar1 + (iVar3 << 0xb) / local_c; - if (0x800 < iVar1) { - local_10 = local_10 + 1; - local_18 = local_18 >> 1; - iVar1 = iVar1 + -0x800; - if (local_18 == 0) { - local_14 = local_14 + 1; - local_18 = 0x80000000; - } - } - } - break; - case 3: - iVar2 = local_c; - if (param_9 == 0) { - iVar2 = local_c + -1; - } - for (; 0 < iVar2; iVar2 = iVar2 + -1) { - if (param_4 == 0) { - *local_10 = *local_10 & (ushort)param_3 | (ushort)param_2; - } - else if (param_4 == 1) { - *local_10 = *local_10 & (ushort)param_2; - } - else if (param_4 == 2) { - *local_10 = *local_10 | (ushort)param_2; - } - else if (param_4 == 3) { - *local_10 = *local_10 ^ (ushort)param_2; - } - *local_14 = *local_14 | local_18; - DAT_00522cbc = DAT_00522cbc + 1; - local_10 = local_10 + -param_1[6]; - local_14 = local_14 + -param_1[7]; - iVar1 = iVar1 + (iVar3 << 0xb) / local_c; - if (0x800 < iVar1) { - local_10 = local_10 + -1; - local_18 = local_18 << 1; - iVar1 = iVar1 + -0x800; - if (local_18 == 0) { - local_14 = local_14 + -1; - local_18 = 1; - } - } - } - break; - case 4: - iVar2 = iVar3; - if (param_9 == 0) { - iVar2 = iVar3 + -1; - } - for (; 0 < iVar2; iVar2 = iVar2 + -1) { - if (param_4 == 0) { - *local_10 = *local_10 & (ushort)param_3 | (ushort)param_2; - } - else if (param_4 == 1) { - *local_10 = *local_10 & (ushort)param_2; - } - else if (param_4 == 2) { - *local_10 = *local_10 | (ushort)param_2; - } - else if (param_4 == 3) { - *local_10 = *local_10 ^ (ushort)param_2; - } - *local_14 = *local_14 | local_18; - local_10 = local_10 + 1; - local_18 = local_18 >> 1; - DAT_00522cbc = DAT_00522cbc + 1; - if (local_18 == 0) { - local_14 = local_14 + 1; - local_18 = 0x80000000; - } - iVar1 = iVar1 + (local_c << 0xb) / iVar3; - if (0x800 < iVar1) { - iVar1 = iVar1 + -0x800; - local_10 = local_10 + param_1[6]; - local_14 = local_14 + param_1[7]; - } - } - break; - case 5: - iVar2 = iVar3; - if (param_9 == 0) { - iVar2 = iVar3 + -1; - } - for (; 0 < iVar2; iVar2 = iVar2 + -1) { - if (param_4 == 0) { - *local_10 = *local_10 & (ushort)param_3 | (ushort)param_2; - } - else if (param_4 == 1) { - *local_10 = *local_10 & (ushort)param_2; - } - else if (param_4 == 2) { - *local_10 = *local_10 | (ushort)param_2; - } - else if (param_4 == 3) { - *local_10 = *local_10 ^ (ushort)param_2; - } - *local_14 = *local_14 | local_18; - local_10 = local_10 + -1; - local_18 = local_18 << 1; - DAT_00522cbc = DAT_00522cbc + 1; - if (local_18 == 0) { - local_14 = local_14 + -1; - local_18 = 1; - } - iVar1 = iVar1 + (local_c << 0xb) / iVar3; - if (0x800 < iVar1) { - iVar1 = iVar1 + -0x800; - local_10 = local_10 + param_1[6]; - local_14 = local_14 + param_1[7]; - } - } - break; - case 6: - iVar2 = iVar3; - if (param_9 == 0) { - iVar2 = iVar3 + -1; - } - for (; 0 < iVar2; iVar2 = iVar2 + -1) { - if (param_4 == 0) { - *local_10 = *local_10 & (ushort)param_3 | (ushort)param_2; - } - else if (param_4 == 1) { - *local_10 = *local_10 & (ushort)param_2; - } - else if (param_4 == 2) { - *local_10 = *local_10 | (ushort)param_2; - } - else if (param_4 == 3) { - *local_10 = *local_10 ^ (ushort)param_2; - } - *local_14 = *local_14 | local_18; - local_10 = local_10 + 1; - local_18 = local_18 >> 1; - DAT_00522cbc = DAT_00522cbc + 1; - if (local_18 == 0) { - local_14 = local_14 + 1; - local_18 = 0x80000000; - } - iVar1 = iVar1 + (local_c << 0xb) / iVar3; - if (0x800 < iVar1) { - iVar1 = iVar1 + -0x800; - local_10 = local_10 + -param_1[6]; - local_14 = local_14 + -param_1[7]; - } - } - break; - case 7: - iVar2 = iVar3; - if (param_9 == 0) { - iVar2 = iVar3 + -1; - } - for (; 0 < iVar2; iVar2 = iVar2 + -1) { - if (param_4 == 0) { - *local_10 = *local_10 & (ushort)param_3 | (ushort)param_2; - } - else if (param_4 == 1) { - *local_10 = *local_10 & (ushort)param_2; - } - else if (param_4 == 2) { - *local_10 = *local_10 | (ushort)param_2; - } - else if (param_4 == 3) { - *local_10 = *local_10 ^ (ushort)param_2; - } - *local_14 = *local_14 | local_18; - local_10 = local_10 + -1; - local_18 = local_18 << 1; - DAT_00522cbc = DAT_00522cbc + 1; - if (local_18 == 0) { - local_14 = local_14 + -1; - local_18 = 1; - } - iVar1 = iVar1 + (local_c << 0xb) / iVar3; - if (0x800 < iVar1) { - iVar1 = iVar1 + -0x800; - local_10 = local_10 + -param_1[6]; - local_14 = local_14 + -param_1[7]; - } - } - } - } - } - return; -} - - - -/* @0046b6d4 file=? name=FUN_0046b6d4 */ - -void __cdecl -FUN_0046b6d4(int param_1,ushort param_2,ushort param_3,int param_4,int param_5,int param_6, - int param_7,int param_8) - -{ - uint *puVar1; - int iVar2; - uint uVar3; - int iVar4; - int iVar5; - int iVar6; - uint local_10; - uint *local_c; - ushort *local_8; - - iVar6 = param_5; - if (*(int *)(param_1 + 0x14) != 0) { - iVar2 = *(int *)(param_1 + 0x28) - param_8; - iVar4 = *(int *)(param_1 + 0x28) - param_6; - if (param_7 < param_5) { - param_5 = param_7; - param_7 = iVar6; - } - iVar6 = iVar4; - if (iVar2 < iVar4) { - iVar6 = iVar2; - iVar2 = iVar4; - } - FUN_0046af20(param_1,iVar6,iVar2); - param_3 = ~param_3; - FUN_0046aec4(param_1,param_5,iVar6,(int *)&local_8,(int *)&local_c,(int *)&local_10); - iVar6 = (iVar2 - iVar6) + 1; - iVar2 = (param_7 - param_5) + 1; - iVar4 = *(int *)(param_1 + 0x18) - iVar2; - if (param_4 == 0) { - for (; 0 < iVar6; iVar6 = iVar6 + -1) { - puVar1 = local_c + *(int *)(param_1 + 0x1c); - uVar3 = local_10; - for (iVar5 = iVar2; 0 < iVar5; iVar5 = iVar5 + -1) { - *local_8 = *local_8 & param_3 | param_2; - local_8 = local_8 + 1; - *local_c = *local_c | uVar3; - DAT_00522cbc = DAT_00522cbc + 1; - uVar3 = uVar3 >> 1; - if (uVar3 == 0) { - local_c = local_c + 1; - uVar3 = 0x80000000; - } - } - local_8 = local_8 + iVar4; - local_c = puVar1; - } - } - else if (param_4 == 1) { - for (; 0 < iVar6; iVar6 = iVar6 + -1) { - puVar1 = local_c + *(int *)(param_1 + 0x1c); - uVar3 = local_10; - for (iVar5 = iVar2; 0 < iVar5; iVar5 = iVar5 + -1) { - *local_8 = *local_8 & param_2; - local_8 = local_8 + 1; - *local_c = *local_c | uVar3; - DAT_00522cbc = DAT_00522cbc + 1; - uVar3 = uVar3 >> 1; - if (uVar3 == 0) { - local_c = local_c + 1; - uVar3 = 0x80000000; - } - } - local_8 = local_8 + iVar4; - local_c = puVar1; - } - } - else if (param_4 == 2) { - for (; 0 < iVar6; iVar6 = iVar6 + -1) { - puVar1 = local_c + *(int *)(param_1 + 0x1c); - uVar3 = local_10; - for (iVar5 = iVar2; 0 < iVar5; iVar5 = iVar5 + -1) { - *local_8 = *local_8 | param_2; - local_8 = local_8 + 1; - *local_c = *local_c | uVar3; - DAT_00522cbc = DAT_00522cbc + 1; - uVar3 = uVar3 >> 1; - if (uVar3 == 0) { - local_c = local_c + 1; - uVar3 = 0x80000000; - } - } - local_8 = local_8 + iVar4; - local_c = puVar1; - } - } - else if (param_4 == 3) { - for (; 0 < iVar6; iVar6 = iVar6 + -1) { - puVar1 = local_c + *(int *)(param_1 + 0x1c); - uVar3 = local_10; - for (iVar5 = iVar2; 0 < iVar5; iVar5 = iVar5 + -1) { - *local_8 = *local_8 ^ param_2; - local_8 = local_8 + 1; - *local_c = *local_c | uVar3; - DAT_00522cbc = DAT_00522cbc + 1; - uVar3 = uVar3 >> 1; - if (uVar3 == 0) { - local_c = local_c + 1; - uVar3 = 0x80000000; - } - } - local_8 = local_8 + iVar4; - local_c = puVar1; - } - } - } - return; -} - - - -/* @0046b91c file=? name=FUN_0046b91c */ - -undefined4 __cdecl FUN_0046b91c(int param_1) - -{ - return *(undefined4 *)(param_1 + 0x14); -} - - - -/* @0046b92c file=? name=FUN_0046b92c */ - -void __cdecl -FUN_0046b92c(int param_1,ushort param_2,ushort param_3,int param_4,int param_5,int param_6, - int param_7,int param_8,int param_9,int param_10,int param_11,int param_12) - -{ - ushort *puVar1; - uint *puVar2; - uint uVar3; - uint uVar4; - int iVar5; - int iVar6; - int iVar7; - uint *local_28; - uint *local_24; - uint local_20; - ushort *local_1c; - ushort *local_18; - ushort *local_14; - uint local_10; - uint local_c; - int local_8; - - if (*(int *)(param_1 + 0x14) != 0) { - iVar5 = *(int *)(param_1 + 0x28) - param_7; - iVar6 = *(int *)(param_8 + 0x10) + -1; - iVar7 = iVar6 - param_10; - local_8 = (param_11 - param_9) + 1; - param_3 = ~param_3; - iVar6 = (iVar7 - (iVar6 - param_12)) + 1; - local_14 = (ushort *) - (*(int *)(param_8 + 0x18) + (param_9 >> 4) * 2 + *(int *)(param_8 + 0x14) * iVar7 * 2 - ); - local_10 = 1 << (0xf - ((byte)param_9 & 0xf) & 0x1f); - FUN_0046aec4(param_1,param_6,iVar5,(int *)&local_1c,(int *)&local_24,(int *)&local_20); - if (param_5 == 0x5a) { - FUN_0046af20(param_1,iVar5,iVar5 + local_8); - puVar2 = local_24; - uVar4 = local_20; - for (; 0 < iVar6; iVar6 = iVar6 + -1) { - iVar5 = *(int *)(param_8 + 0x14); - local_20 = uVar4 >> 1; - local_24 = puVar2; - if (local_20 == 0) { - local_24 = puVar2 + 1; - local_20 = 0x80000000; - } - puVar1 = local_1c + 1; - local_c = (uint)*local_14; - local_18 = local_14 + 1; - uVar3 = local_10; - for (iVar7 = local_8; 0 < iVar7; iVar7 = iVar7 + -1) { - if (uVar3 == 0) { - uVar3 = 0x8000; - local_c = (uint)*local_18; - local_18 = local_18 + 1; - } - if ((local_c & uVar3) != 0) { - if (param_4 == 0) { - *local_1c = *local_1c & param_3 | param_2; - } - else if (param_4 == 1) { - *local_1c = *local_1c & param_2; - } - else if (param_4 == 2) { - *local_1c = *local_1c | param_2; - } - else if (param_4 == 3) { - *local_1c = *local_1c ^ param_2; - } - *puVar2 = *puVar2 | uVar4; - DAT_00522cbc = DAT_00522cbc + 1; - } - uVar3 = (int)uVar3 >> 1; - puVar2 = puVar2 + *(int *)(param_1 + 0x1c); - local_1c = local_1c + *(int *)(param_1 + 0x18); - } - puVar2 = local_24; - uVar4 = local_20; - local_1c = puVar1; - local_14 = local_14 + -iVar5; - } - } - else if (param_5 == 0xb4) { - FUN_0046af20(param_1,iVar5,iVar5 + iVar6); - local_28 = local_24; - for (; 0 < iVar6; iVar6 = iVar6 + -1) { - iVar5 = *(int *)(param_8 + 0x14); - puVar2 = local_28 + *(int *)(param_1 + 0x1c); - puVar1 = local_1c + *(int *)(param_1 + 0x18); - local_c = (uint)*local_14; - local_18 = local_14 + 1; - uVar4 = local_20; - uVar3 = local_10; - for (iVar7 = local_8; 0 < iVar7; iVar7 = iVar7 + -1) { - if (uVar3 == 0) { - uVar3 = 0x8000; - local_c = (uint)*local_18; - local_18 = local_18 + 1; - } - if ((local_c & uVar3) != 0) { - if (param_4 == 0) { - *local_1c = *local_1c & param_3 | param_2; - } - else if (param_4 == 1) { - *local_1c = *local_1c & param_2; - } - else if (param_4 == 2) { - *local_1c = *local_1c | param_2; - } - else if (param_4 == 3) { - *local_1c = *local_1c ^ param_2; - } - *local_28 = *local_28 | uVar4; - DAT_00522cbc = DAT_00522cbc + 1; - } - uVar4 = uVar4 * 2; - if (uVar4 == 0) { - local_28 = local_28 + -1; - uVar4 = 1; - } - local_1c = local_1c + -1; - uVar3 = (int)uVar3 >> 1; - } - local_28 = puVar2; - local_1c = puVar1; - local_14 = local_14 + -iVar5; - } - } - else if (param_5 == 0x10e) { - if (-1 < param_6 - iVar6) { - FUN_0046af20(param_1,iVar5 - (local_8 + -1),iVar5); - puVar2 = local_24; - uVar4 = local_20; - for (; 0 < iVar6; iVar6 = iVar6 + -1) { - iVar5 = *(int *)(param_8 + 0x14); - local_20 = uVar4 << 1; - local_24 = puVar2; - if (local_20 == 0) { - local_24 = puVar2 + -1; - local_20 = 1; - } - puVar1 = local_1c + -1; - local_c = (uint)*local_14; - local_18 = local_14 + 1; - uVar3 = local_10; - for (iVar7 = local_8; 0 < iVar7; iVar7 = iVar7 + -1) { - if (uVar3 == 0) { - uVar3 = 0x8000; - local_c = (uint)*local_18; - local_18 = local_18 + 1; - } - if ((local_c & uVar3) != 0) { - if (param_4 == 0) { - *local_1c = *local_1c & param_3 | param_2; - } - else if (param_4 == 1) { - *local_1c = *local_1c & param_2; - } - else if (param_4 == 2) { - *local_1c = *local_1c | param_2; - } - else if (param_4 == 3) { - *local_1c = *local_1c ^ param_2; - } - *puVar2 = *puVar2 | uVar4; - DAT_00522cbc = DAT_00522cbc + 1; - } - uVar3 = (int)uVar3 >> 1; - puVar2 = puVar2 + -*(int *)(param_1 + 0x1c); - local_1c = local_1c + -*(int *)(param_1 + 0x18); - } - puVar2 = local_24; - uVar4 = local_20; - local_1c = puVar1; - local_14 = local_14 + -iVar5; - } - } - } - else { - FUN_0046af20(param_1,(iVar5 - iVar6) + 1,iVar5); - local_28 = local_24; - for (; 0 < iVar6; iVar6 = iVar6 + -1) { - iVar5 = *(int *)(param_8 + 0x14); - puVar2 = local_28 + -*(int *)(param_1 + 0x1c); - puVar1 = local_1c + -*(int *)(param_1 + 0x18); - local_c = (uint)*local_14; - local_18 = local_14 + 1; - uVar4 = local_20; - uVar3 = local_10; - for (iVar7 = local_8; 0 < iVar7; iVar7 = iVar7 + -1) { - if (uVar3 == 0) { - uVar3 = 0x8000; - local_c = (uint)*local_18; - local_18 = local_18 + 1; - } - if ((local_c & uVar3) != 0) { - if (param_4 == 0) { - *local_1c = *local_1c & param_3 | param_2; - } - else if (param_4 == 1) { - *local_1c = *local_1c & param_2; - } - else if (param_4 == 2) { - *local_1c = *local_1c | param_2; - } - else if (param_4 == 3) { - *local_1c = *local_1c ^ param_2; - } - *local_28 = *local_28 | uVar4; - DAT_00522cbc = DAT_00522cbc + 1; - } - uVar4 = uVar4 >> 1; - if (uVar4 == 0) { - local_28 = local_28 + 1; - uVar4 = 0x80000000; - } - local_1c = local_1c + 1; - uVar3 = (int)uVar3 >> 1; - } - local_28 = puVar2; - local_1c = puVar1; - local_14 = local_14 + -iVar5; - } - } - } - return; -} - - - -/* @0046bdfc file=? name=FUN_0046bdfc */ - -void __cdecl -FUN_0046bdfc(int param_1,ushort param_2,ushort param_3,ushort param_4,int param_5,int param_6, - int param_7,int param_8,int param_9,int param_10,int param_11,int param_12,int param_13) - -{ - ushort *puVar1; - uint *puVar2; - uint uVar3; - ushort uVar4; - uint uVar5; - int iVar6; - int iVar7; - int iVar8; - uint *local_2c; - uint *local_28; - uint local_24 [2]; - ushort *local_1c; - ushort *local_18; - ushort *local_14; - uint local_10; - uint local_c; - int local_8; - - if (*(int *)(param_1 + 0x14) != 0) { - iVar6 = *(int *)(param_1 + 0x28) - param_8; - iVar7 = *(int *)(param_9 + 0x10) + -1; - iVar8 = iVar7 - param_11; - local_8 = (param_12 - param_10) + 1; - param_4 = ~param_4; - iVar7 = (iVar8 - (iVar7 - param_13)) + 1; - local_14 = (ushort *) - (*(int *)(param_9 + 0x18) + (param_10 >> 4) * 2 + - *(int *)(param_9 + 0x14) * iVar8 * 2); - local_10 = 1 << (0xf - ((byte)param_10 & 0xf) & 0x1f); - FUN_0046aec4(param_1,param_7,iVar6,(int *)&local_1c,(int *)&local_28,(int *)local_24); - if (param_6 == 0x5a) { - FUN_0046af20(param_1,iVar6,iVar6 + local_8); - puVar2 = local_28; - uVar5 = local_24[0]; - for (; 0 < iVar7; iVar7 = iVar7 + -1) { - iVar6 = *(int *)(param_9 + 0x14); - local_24[0] = uVar5 >> 1; - local_28 = puVar2; - if (local_24[0] == 0) { - local_28 = puVar2 + 1; - local_24[0] = 0x80000000; - } - puVar1 = local_1c + 1; - local_c = (uint)*local_14; - local_18 = local_14 + 1; - uVar3 = local_10; - for (iVar8 = local_8; 0 < iVar8; iVar8 = iVar8 + -1) { - if (uVar3 == 0) { - uVar3 = 0x8000; - local_c = (uint)*local_18; - local_18 = local_18 + 1; - } - uVar4 = param_3; - if ((local_c & uVar3) != 0) { - uVar4 = param_2; - } - if (param_5 == 0) { - *local_1c = uVar4 | *local_1c & param_4; - } - else if (param_5 == 1) { - *local_1c = *local_1c & uVar4; - } - else if (param_5 == 2) { - *local_1c = *local_1c | uVar4; - } - else if (param_5 == 3) { - *local_1c = *local_1c ^ uVar4; - } - uVar3 = (int)uVar3 >> 1; - *puVar2 = *puVar2 | uVar5; - DAT_00522cbc = DAT_00522cbc + 1; - puVar2 = puVar2 + *(int *)(param_1 + 0x1c); - local_1c = local_1c + *(int *)(param_1 + 0x18); - } - puVar2 = local_28; - uVar5 = local_24[0]; - local_1c = puVar1; - local_14 = local_14 + -iVar6; - } - } - else if (param_6 == 0xb4) { - FUN_0046af20(param_1,iVar6,iVar6 + iVar7); - local_2c = local_28; - for (; 0 < iVar7; iVar7 = iVar7 + -1) { - iVar6 = *(int *)(param_9 + 0x14); - puVar2 = local_2c + *(int *)(param_1 + 0x1c); - puVar1 = local_1c + *(int *)(param_1 + 0x18); - local_c = (uint)*local_14; - local_18 = local_14 + 1; - uVar5 = local_24[0]; - uVar3 = local_10; - for (iVar8 = local_8; 0 < iVar8; iVar8 = iVar8 + -1) { - if (uVar3 == 0) { - uVar3 = 0x8000; - local_c = (uint)*local_18; - local_18 = local_18 + 1; - } - uVar4 = param_3; - if ((local_c & uVar3) != 0) { - uVar4 = param_2; - } - if (param_5 == 0) { - *local_1c = uVar4 | *local_1c & param_4; - } - else if (param_5 == 1) { - *local_1c = *local_1c & uVar4; - } - else if (param_5 == 2) { - *local_1c = *local_1c | uVar4; - } - else if (param_5 == 3) { - *local_1c = *local_1c ^ uVar4; - } - *local_2c = *local_2c | uVar5; - DAT_00522cbc = DAT_00522cbc + 1; - uVar5 = uVar5 * 2; - if (uVar5 == 0) { - local_2c = local_2c + -1; - uVar5 = 1; - } - local_1c = local_1c + -1; - uVar3 = (int)uVar3 >> 1; - } - local_2c = puVar2; - local_1c = puVar1; - local_14 = local_14 + -iVar6; - } - } - else if (param_6 == 0x10e) { - FUN_0046af20(param_1,iVar6 - (local_8 + -1),iVar6); - puVar2 = local_28; - uVar5 = local_24[0]; - for (; 0 < iVar7; iVar7 = iVar7 + -1) { - iVar6 = *(int *)(param_9 + 0x14); - local_24[0] = uVar5 << 1; - local_28 = puVar2; - if (local_24[0] == 0) { - local_28 = puVar2 + -1; - local_24[0] = 1; - } - puVar1 = local_1c + -1; - local_c = (uint)*local_14; - local_18 = local_14 + 1; - uVar3 = local_10; - for (iVar8 = local_8; 0 < iVar8; iVar8 = iVar8 + -1) { - if (uVar3 == 0) { - uVar3 = 0x8000; - local_c = (uint)*local_18; - local_18 = local_18 + 1; - } - uVar4 = param_3; - if ((local_c & uVar3) != 0) { - uVar4 = param_2; - } - if (param_5 == 0) { - *local_1c = uVar4 | *local_1c & param_4; - } - else if (param_5 == 1) { - *local_1c = *local_1c & uVar4; - } - else if (param_5 == 2) { - *local_1c = *local_1c | uVar4; - } - else if (param_5 == 3) { - *local_1c = *local_1c ^ uVar4; - } - uVar3 = (int)uVar3 >> 1; - *puVar2 = *puVar2 | uVar5; - DAT_00522cbc = DAT_00522cbc + 1; - puVar2 = puVar2 + -*(int *)(param_1 + 0x1c); - local_1c = local_1c + -*(int *)(param_1 + 0x18); - } - puVar2 = local_28; - uVar5 = local_24[0]; - local_1c = puVar1; - local_14 = local_14 + -iVar6; - } - } - else { - FUN_0046af20(param_1,(iVar6 - iVar7) + 1,iVar6); - local_2c = local_28; - for (; 0 < iVar7; iVar7 = iVar7 + -1) { - iVar6 = *(int *)(param_9 + 0x14); - puVar2 = local_2c + -*(int *)(param_1 + 0x1c); - puVar1 = local_1c + -*(int *)(param_1 + 0x18); - local_c = (uint)*local_14; - local_18 = local_14 + 1; - uVar5 = local_24[0]; - uVar3 = local_10; - for (iVar8 = local_8; 0 < iVar8; iVar8 = iVar8 + -1) { - if (uVar3 == 0) { - uVar3 = 0x8000; - local_c = (uint)*local_18; - local_18 = local_18 + 1; - } - uVar4 = param_3; - if ((local_c & uVar3) != 0) { - uVar4 = param_2; - } - if (param_5 == 0) { - *local_1c = uVar4 | *local_1c & param_4; - } - else if (param_5 == 1) { - *local_1c = *local_1c & uVar4; - } - else if (param_5 == 2) { - *local_1c = *local_1c | uVar4; - } - else if (param_5 == 3) { - *local_1c = *local_1c ^ uVar4; - } - *local_2c = *local_2c | uVar5; - DAT_00522cbc = DAT_00522cbc + 1; - uVar5 = uVar5 >> 1; - if (uVar5 == 0) { - local_2c = local_2c + 1; - uVar5 = 0x80000000; - } - local_1c = local_1c + 1; - uVar3 = (int)uVar3 >> 1; - } - local_2c = puVar2; - local_1c = puVar1; - local_14 = local_14 + -iVar6; - } - } - } - return; -} - - - -/* @0046c324 file=? name=FUN_0046c324 */ - -void __cdecl -FUN_0046c324(int param_1,int param_2,ushort param_3,int param_4,int param_5,int param_6,int param_7, - int param_8,int *param_9,int param_10,int param_11,int param_12,int param_13) - -{ - byte *pbVar1; - ushort *puVar2; - byte bVar3; - ushort uVar4; - uint *puVar5; - uint uVar6; - int iVar7; - int iVar8; - int iVar9; - uint *local_20; - uint *local_1c; - uint local_18; - ushort *local_14 [2]; - byte *local_c; - int local_8; - - if (*(int *)(param_1 + 0x14) != 0) { - iVar7 = *(int *)(param_1 + 0x28) - param_8; - iVar8 = (param_9[1] + -1) - param_11; - local_8 = (param_12 - param_10) + 1; - param_3 = ~param_3; - iVar9 = (iVar8 - ((param_9[1] + -1) - param_13)) + 1; - local_c = (byte *)(param_10 + param_9[2] + *param_9 * iVar8); - FUN_0046aec4(param_1,param_7,iVar7,(int *)local_14,(int *)&local_1c,(int *)&local_18); - if (param_5 == 0) { - if (param_6 == 0x5a) { - FUN_0046af20(param_1,iVar7,iVar7 + local_8); - puVar5 = local_1c; - uVar6 = local_18; - for (; 0 < iVar9; iVar9 = iVar9 + -1) { - pbVar1 = local_c + -*param_9; - local_18 = uVar6 >> 1; - local_1c = puVar5; - if (local_18 == 0) { - local_1c = puVar5 + 1; - local_18 = 0x80000000; - } - puVar2 = local_14[0] + 1; - for (iVar7 = local_8; 0 < iVar7; iVar7 = iVar7 + -1) { - bVar3 = *local_c; - local_c = local_c + 1; - if (bVar3 != 0) { - uVar4 = *(ushort *)(param_2 + (uint)bVar3 * 4); - if (param_4 == 0) { - *local_14[0] = uVar4 | *local_14[0] & param_3; - } - else if (param_4 == 1) { - *local_14[0] = *local_14[0] & uVar4; - } - else if (param_4 == 2) { - *local_14[0] = *local_14[0] | uVar4; - } - else if (param_4 == 3) { - *local_14[0] = *local_14[0] ^ uVar4; - } - *puVar5 = *puVar5 | uVar6; - DAT_00522cbc = DAT_00522cbc + 1; - } - puVar5 = puVar5 + *(int *)(param_1 + 0x1c); - local_14[0] = local_14[0] + *(int *)(param_1 + 0x18); - } - puVar5 = local_1c; - uVar6 = local_18; - local_14[0] = puVar2; - local_c = pbVar1; - } - } - else if (param_6 == 0xb4) { - FUN_0046af20(param_1,iVar7,iVar7 + iVar9); - local_20 = local_1c; - for (; 0 < iVar9; iVar9 = iVar9 + -1) { - pbVar1 = local_c + -*param_9; - puVar5 = local_20 + *(int *)(param_1 + 0x1c); - puVar2 = local_14[0] + *(int *)(param_1 + 0x18); - uVar6 = local_18; - for (iVar7 = local_8; 0 < iVar7; iVar7 = iVar7 + -1) { - bVar3 = *local_c; - local_c = local_c + 1; - if (bVar3 != 0) { - uVar4 = *(ushort *)(param_2 + (uint)bVar3 * 4); - if (param_4 == 0) { - *local_14[0] = uVar4 | *local_14[0] & param_3; - } - else if (param_4 == 1) { - *local_14[0] = *local_14[0] & uVar4; - } - else if (param_4 == 2) { - *local_14[0] = *local_14[0] | uVar4; - } - else if (param_4 == 3) { - *local_14[0] = *local_14[0] ^ uVar4; - } - *local_20 = *local_20 | uVar6; - DAT_00522cbc = DAT_00522cbc + 1; - } - uVar6 = uVar6 * 2; - if (uVar6 == 0) { - local_20 = local_20 + -1; - uVar6 = 1; - } - local_14[0] = local_14[0] + -1; - } - local_20 = puVar5; - local_14[0] = puVar2; - local_c = pbVar1; - } - } - else if (param_6 == 0x10e) { - FUN_0046af20(param_1,iVar7 - (local_8 + -1),iVar7); - puVar5 = local_1c; - uVar6 = local_18; - for (; 0 < iVar9; iVar9 = iVar9 + -1) { - pbVar1 = local_c + -*param_9; - local_18 = uVar6 << 1; - local_1c = puVar5; - if (local_18 == 0) { - local_1c = puVar5 + -1; - local_18 = 1; - } - puVar2 = local_14[0] + -1; - for (iVar7 = local_8; 0 < iVar7; iVar7 = iVar7 + -1) { - bVar3 = *local_c; - local_c = local_c + 1; - if (bVar3 != 0) { - uVar4 = *(ushort *)(param_2 + (uint)bVar3 * 4); - if (param_4 == 0) { - *local_14[0] = uVar4 | *local_14[0] & param_3; - } - else if (param_4 == 1) { - *local_14[0] = *local_14[0] & uVar4; - } - else if (param_4 == 2) { - *local_14[0] = *local_14[0] | uVar4; - } - else if (param_4 == 3) { - *local_14[0] = *local_14[0] ^ uVar4; - } - *puVar5 = *puVar5 | uVar6; - DAT_00522cbc = DAT_00522cbc + 1; - } - puVar5 = puVar5 + -*(int *)(param_1 + 0x1c); - local_14[0] = local_14[0] + -*(int *)(param_1 + 0x18); - } - puVar5 = local_1c; - uVar6 = local_18; - local_14[0] = puVar2; - local_c = pbVar1; - } - } - else { - FUN_0046af20(param_1,(iVar7 - iVar9) + 1,iVar7); - local_20 = local_1c; - for (; 0 < iVar9; iVar9 = iVar9 + -1) { - pbVar1 = local_c + -*param_9; - puVar5 = local_20 + -*(int *)(param_1 + 0x1c); - puVar2 = local_14[0] + -*(int *)(param_1 + 0x18); - uVar6 = local_18; - for (iVar7 = local_8; 0 < iVar7; iVar7 = iVar7 + -1) { - bVar3 = *local_c; - local_c = local_c + 1; - if (bVar3 != 0) { - uVar4 = *(ushort *)(param_2 + (uint)bVar3 * 4); - if (param_4 == 0) { - *local_14[0] = uVar4 | *local_14[0] & param_3; - } - else if (param_4 == 1) { - *local_14[0] = *local_14[0] & uVar4; - } - else if (param_4 == 2) { - *local_14[0] = *local_14[0] | uVar4; - } - else if (param_4 == 3) { - *local_14[0] = *local_14[0] ^ uVar4; - } - *local_20 = *local_20 | uVar6; - DAT_00522cbc = DAT_00522cbc + 1; - } - uVar6 = uVar6 >> 1; - if (uVar6 == 0) { - local_20 = local_20 + 1; - uVar6 = 0x80000000; - } - local_14[0] = local_14[0] + 1; - } - local_20 = puVar5; - local_14[0] = puVar2; - local_c = pbVar1; - } - } - } - else if (param_6 == 0x5a) { - FUN_0046af20(param_1,iVar7,iVar7 + local_8); - puVar5 = local_1c; - uVar6 = local_18; - for (; 0 < iVar9; iVar9 = iVar9 + -1) { - pbVar1 = local_c + -*param_9; - local_18 = uVar6 >> 1; - local_1c = puVar5; - if (local_18 == 0) { - local_1c = puVar5 + 1; - local_18 = 0x80000000; - } - puVar2 = local_14[0] + 1; - for (iVar7 = local_8; 0 < iVar7; iVar7 = iVar7 + -1) { - bVar3 = *local_c; - local_c = local_c + 1; - uVar4 = *(ushort *)(param_2 + (uint)bVar3 * 4); - if (param_4 == 0) { - *local_14[0] = uVar4 | *local_14[0] & param_3; - } - else if (param_4 == 1) { - *local_14[0] = *local_14[0] & uVar4; - } - else if (param_4 == 2) { - *local_14[0] = *local_14[0] | uVar4; - } - else if (param_4 == 3) { - *local_14[0] = *local_14[0] ^ uVar4; - } - *puVar5 = *puVar5 | uVar6; - DAT_00522cbc = DAT_00522cbc + 1; - puVar5 = puVar5 + *(int *)(param_1 + 0x1c); - local_14[0] = local_14[0] + *(int *)(param_1 + 0x18); - } - puVar5 = local_1c; - uVar6 = local_18; - local_14[0] = puVar2; - local_c = pbVar1; - } - } - else if (param_6 == 0xb4) { - FUN_0046af20(param_1,iVar7,iVar7 + iVar9); - local_20 = local_1c; - for (; 0 < iVar9; iVar9 = iVar9 + -1) { - pbVar1 = local_c + -*param_9; - puVar5 = local_20 + *(int *)(param_1 + 0x1c); - puVar2 = local_14[0] + *(int *)(param_1 + 0x18); - uVar6 = local_18; - for (iVar7 = local_8; 0 < iVar7; iVar7 = iVar7 + -1) { - bVar3 = *local_c; - local_c = local_c + 1; - uVar4 = *(ushort *)(param_2 + (uint)bVar3 * 4); - if (param_4 == 0) { - *local_14[0] = uVar4 | *local_14[0] & param_3; - } - else if (param_4 == 1) { - *local_14[0] = *local_14[0] & uVar4; - } - else if (param_4 == 2) { - *local_14[0] = *local_14[0] | uVar4; - } - else if (param_4 == 3) { - *local_14[0] = *local_14[0] ^ uVar4; - } - *local_20 = *local_20 | uVar6; - DAT_00522cbc = DAT_00522cbc + 1; - uVar6 = uVar6 * 2; - if (uVar6 == 0) { - local_20 = local_20 + -1; - uVar6 = 1; - } - local_14[0] = local_14[0] + -1; - } - local_20 = puVar5; - local_14[0] = puVar2; - local_c = pbVar1; - } - } - else if (param_6 == 0x10e) { - FUN_0046af20(param_1,iVar7 - (local_8 + -1),iVar7); - puVar5 = local_1c; - uVar6 = local_18; - for (; 0 < iVar9; iVar9 = iVar9 + -1) { - pbVar1 = local_c + -*param_9; - local_18 = uVar6 << 1; - local_1c = puVar5; - if (local_18 == 0) { - local_1c = puVar5 + -1; - local_18 = 1; - } - puVar2 = local_14[0] + -1; - for (iVar7 = local_8; 0 < iVar7; iVar7 = iVar7 + -1) { - bVar3 = *local_c; - local_c = local_c + 1; - uVar4 = *(ushort *)(param_2 + (uint)bVar3 * 4); - if (param_4 == 0) { - *local_14[0] = uVar4 | *local_14[0] & param_3; - } - else if (param_4 == 1) { - *local_14[0] = *local_14[0] & uVar4; - } - else if (param_4 == 2) { - *local_14[0] = *local_14[0] | uVar4; - } - else if (param_4 == 3) { - *local_14[0] = *local_14[0] ^ uVar4; - } - *puVar5 = *puVar5 | uVar6; - DAT_00522cbc = DAT_00522cbc + 1; - puVar5 = puVar5 + -*(int *)(param_1 + 0x1c); - local_14[0] = local_14[0] + -*(int *)(param_1 + 0x18); - } - puVar5 = local_1c; - uVar6 = local_18; - local_14[0] = puVar2; - local_c = pbVar1; - } - } - else { - FUN_0046af20(param_1,(iVar7 - iVar9) + 1,iVar7); - local_20 = local_1c; - for (; 0 < iVar9; iVar9 = iVar9 + -1) { - pbVar1 = local_c + -*param_9; - puVar5 = local_20 + -*(int *)(param_1 + 0x1c); - puVar2 = local_14[0] + -*(int *)(param_1 + 0x18); - uVar6 = local_18; - for (iVar7 = local_8; 0 < iVar7; iVar7 = iVar7 + -1) { - bVar3 = *local_c; - local_c = local_c + 1; - uVar4 = *(ushort *)(param_2 + (uint)bVar3 * 4); - if (param_4 == 0) { - *local_14[0] = uVar4 | *local_14[0] & param_3; - } - else if (param_4 == 1) { - *local_14[0] = *local_14[0] & uVar4; - } - else if (param_4 == 2) { - *local_14[0] = *local_14[0] | uVar4; - } - else if (param_4 == 3) { - *local_14[0] = *local_14[0] ^ uVar4; - } - *local_20 = *local_20 | uVar6; - DAT_00522cbc = DAT_00522cbc + 1; - uVar6 = uVar6 >> 1; - if (uVar6 == 0) { - local_20 = local_20 + 1; - uVar6 = 0x80000000; - } - local_14[0] = local_14[0] + 1; - } - local_20 = puVar5; - local_14[0] = puVar2; - local_c = pbVar1; - } - } - } - return; -} - - - -/* @0046cac4 file=? name=FUN_0046cac4 */ - -void __cdecl -FUN_0046cac4(int param_1,ushort param_2,ushort param_3,int param_4,int param_5,int param_6, - int param_7,int *param_8,int param_9,int param_10,int param_11,int param_12) - -{ - char *pcVar1; - ushort *puVar2; - char cVar3; - uint *puVar4; - uint uVar5; - int iVar6; - int iVar7; - int iVar8; - uint *local_20; - uint *local_1c; - uint local_18; - ushort *local_14; - char *local_10; - int local_8; - - if (*(int *)(param_1 + 0x14) != 0) { - iVar6 = *(int *)(param_1 + 0x28) - param_7; - iVar7 = (param_8[1] + -1) - param_10; - local_8 = (param_11 - param_9) + 1; - param_3 = ~param_3; - iVar8 = (iVar7 - ((param_8[1] + -1) - param_12)) + 1; - local_10 = (char *)(param_9 + param_8[2] + *param_8 * iVar7); - FUN_0046aec4(param_1,param_6,iVar6,(int *)&local_14,(int *)&local_1c,(int *)&local_18); - if (param_5 == 0x5a) { - FUN_0046af20(param_1,iVar6,iVar6 + local_8); - puVar4 = local_1c; - uVar5 = local_18; - for (; 0 < iVar8; iVar8 = iVar8 + -1) { - pcVar1 = local_10 + -*param_8; - local_18 = uVar5 >> 1; - local_1c = puVar4; - if (local_18 == 0) { - local_1c = puVar4 + 1; - local_18 = 0x80000000; - } - puVar2 = local_14 + 1; - for (iVar6 = local_8; 0 < iVar6; iVar6 = iVar6 + -1) { - cVar3 = *local_10; - local_10 = local_10 + 1; - if (cVar3 != '\0') { - if (param_4 == 0) { - *local_14 = *local_14 & param_3 | param_2; - } - else if (param_4 == 1) { - *local_14 = *local_14 & param_2; - } - else if (param_4 == 2) { - *local_14 = *local_14 | param_2; - } - else if (param_4 == 3) { - *local_14 = *local_14 ^ param_2; - } - *puVar4 = *puVar4 | uVar5; - DAT_00522cbc = DAT_00522cbc + 1; - } - puVar4 = puVar4 + *(int *)(param_1 + 0x1c); - local_14 = local_14 + *(int *)(param_1 + 0x18); - } - puVar4 = local_1c; - uVar5 = local_18; - local_14 = puVar2; - local_10 = pcVar1; - } - } - else if (param_5 == 0xb4) { - FUN_0046af20(param_1,iVar6,iVar6 + iVar8); - local_20 = local_1c; - for (; 0 < iVar8; iVar8 = iVar8 + -1) { - pcVar1 = local_10 + -*param_8; - puVar4 = local_20 + *(int *)(param_1 + 0x1c); - puVar2 = local_14 + *(int *)(param_1 + 0x18); - uVar5 = local_18; - for (iVar6 = local_8; 0 < iVar6; iVar6 = iVar6 + -1) { - cVar3 = *local_10; - local_10 = local_10 + 1; - if (cVar3 != '\0') { - if (param_4 == 0) { - *local_14 = *local_14 & param_3 | param_2; - } - else if (param_4 == 1) { - *local_14 = *local_14 & param_2; - } - else if (param_4 == 2) { - *local_14 = *local_14 | param_2; - } - else if (param_4 == 3) { - *local_14 = *local_14 ^ param_2; - } - *local_20 = *local_20 | uVar5; - DAT_00522cbc = DAT_00522cbc + 1; - } - uVar5 = uVar5 * 2; - if (uVar5 == 0) { - local_20 = local_20 + -1; - uVar5 = 1; - } - local_14 = local_14 + -1; - } - local_20 = puVar4; - local_14 = puVar2; - local_10 = pcVar1; - } - } - else if (param_5 == 0x10e) { - FUN_0046af20(param_1,iVar6 - local_8,iVar6); - puVar4 = local_1c; - uVar5 = local_18; - for (; 0 < iVar8; iVar8 = iVar8 + -1) { - pcVar1 = local_10 + -*param_8; - local_18 = uVar5 << 1; - local_1c = puVar4; - if (local_18 == 0) { - local_1c = puVar4 + -1; - local_18 = 1; - } - puVar2 = local_14 + -1; - for (iVar6 = local_8; 0 < iVar6; iVar6 = iVar6 + -1) { - cVar3 = *local_10; - local_10 = local_10 + 1; - if (cVar3 != '\0') { - if (param_4 == 0) { - *local_14 = *local_14 & param_3 | param_2; - } - else if (param_4 == 1) { - *local_14 = *local_14 & param_2; - } - else if (param_4 == 2) { - *local_14 = *local_14 | param_2; - } - else if (param_4 == 3) { - *local_14 = *local_14 ^ param_2; - } - *puVar4 = *puVar4 | uVar5; - DAT_00522cbc = DAT_00522cbc + 1; - } - puVar4 = puVar4 + -*(int *)(param_1 + 0x1c); - local_14 = local_14 + -*(int *)(param_1 + 0x18); - } - puVar4 = local_1c; - uVar5 = local_18; - local_14 = puVar2; - local_10 = pcVar1; - } - } - else { - FUN_0046af20(param_1,(iVar6 - iVar8) + 1,iVar6); - local_20 = local_1c; - for (; 0 < iVar8; iVar8 = iVar8 + -1) { - pcVar1 = local_10 + -*param_8; - puVar4 = local_20 + -*(int *)(param_1 + 0x1c); - puVar2 = local_14 + -*(int *)(param_1 + 0x18); - uVar5 = local_18; - for (iVar6 = local_8; 0 < iVar6; iVar6 = iVar6 + -1) { - cVar3 = *local_10; - local_10 = local_10 + 1; - if (cVar3 != '\0') { - if (param_4 == 0) { - *local_14 = *local_14 & param_3 | param_2; - } - else if (param_4 == 1) { - *local_14 = *local_14 & param_2; - } - else if (param_4 == 2) { - *local_14 = *local_14 | param_2; - } - else if (param_4 == 3) { - *local_14 = *local_14 ^ param_2; - } - *local_20 = *local_20 | uVar5; - DAT_00522cbc = DAT_00522cbc + 1; - } - uVar5 = uVar5 >> 1; - if (uVar5 == 0) { - local_20 = local_20 + 1; - uVar5 = 0x80000000; - } - local_14 = local_14 + 1; - } - local_20 = puVar4; - local_14 = puVar2; - local_10 = pcVar1; - } - } - } - return; -} - - - -/* @0046ced4 file=? name=FUN_0046ced4 */ - -int * __cdecl -FUN_0046ced4(int *param_1,uint param_2,int param_3,int param_4,int param_5,int param_6,int param_7, - int param_8,int param_9) - -{ - int *piVar1; - undefined4 extraout_ECX; - undefined4 extraout_EDX; - int iVar2; - int *piVar3; - short *psVar4; - int local_8; - - FUN_0046ab50(param_1,param_3,param_4); - *param_1 = (int)&PTR_FUN_004f4d3c; - piVar3 = param_1 + 0x20; - FUN_004de998(piVar3,0x31c,4,1,FUN_0046e6ec); - param_1[0x10] = param_5 << 10; - param_1[0x11] = param_5 / param_6; - param_1[0x12] = param_7; - param_1[0x13] = param_8; - param_1[0x14] = param_9; - param_1[0x15] = -1; - FUN_0047d70c(param_2,param_1[0x13]); - FUN_0047d7da(extraout_ECX,extraout_EDX,1); - FUN_0046d4a0((int)param_1,0.0); - psVar4 = &DAT_004f4b34; - local_8 = 0; - do { - *(short *)piVar3 = *psVar4; - piVar3[1] = 0; - piVar3[0xc3] = 0; - piVar3[0xc4] = 0; - piVar3[0xc6] = -1; - piVar1 = piVar3 + 0xc5; - iVar2 = 0; - do { - *(undefined1 *)piVar1 = 0xff; - iVar2 = iVar2 + 1; - piVar1 = (int *)((int)piVar1 + 1); - } while (iVar2 < 4); - if (*psVar4 != 0x3c6) { - FUN_0047d8cb(0,iVar2,*psVar4); - } - psVar4 = psVar4 + 1; - local_8 = local_8 + 1; - piVar3 = piVar3 + 199; - } while (local_8 < 4); - param_1[0x15] = -1; - FUN_0046d404((int)param_1); - DAT_00522cbc = 0; - DAT_00522cc0 = 0; - DAT_00522cc4 = 0; - (**(code **)(*param_1 + 0x1c))(param_1,0,0xffff,0,0,0,param_1[9],param_1[10]); - (**(code **)(*param_1 + 8))(param_1,0); - return param_1; -} - - - -/* @0046d050 file=? name=FUN_0046d050 */ - -void __cdecl FUN_0046d050(int *param_1,byte param_2) - -{ - uint uVar1; - uint uVar2; - uint uVar3; - int *piVar4; - undefined4 extraout_ECX; - undefined4 extraout_EDX; - double local_c; - - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_004f4d3c; - FUN_0047d70c(3,0); - uVar3 = DAT_00522cc4; - uVar2 = DAT_00522cc0; - uVar1 = DAT_00522cbc; - if (DAT_00522cc0 == 0) { - local_c = 0.0; - } - else { - local_c = (double)(int)DAT_00522cbc / (double)(int)DAT_00522cc0; - } - FUN_004dbb24(&DAT_00524e20,s_SVGA16___SVGA16__pixel_managemen_004f4baf,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s_Number_of_dirty_pixels___004f4be9,(char *)0x0); - piVar4 = FUN_004db78c(&DAT_00524e20,uVar1); - FUN_004dbb24(piVar4,s_Number_of_transferred_pixels__004f4c08,(char *)0x0); - piVar4 = FUN_004db78c(piVar4,uVar2); - FUN_004dbb24(piVar4,s_Times_overflowed___004f4c27,(char *)0x0); - piVar4 = FUN_004db78c(piVar4,uVar3); - FUN_004dbb24(piVar4,s_Ratio___004f4c46,(char *)0x0); - piVar4 = FUN_004db634(piVar4,(float10)local_c); - FUN_004dbb24(piVar4,s__________________________________004f4c4f,(char *)0x0); - FUN_0047d7da(extraout_ECX,extraout_EDX,0); - FUN_004de8d4(param_1 + 0x20,0x31c,4,1,FUN_0046e702); - FUN_0046ac08(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @0046d1a8 file=? name=FUN_0046d1a8 */ - -void FUN_0046d1a8(void) - -{ - FUN_0046ac68(); - return; -} - - - -/* @0046d1b8 file=? name=FUN_0046d1b8 */ - -void __cdecl FUN_0046d1b8(int param_1,char *param_2) - -{ - char cVar1; - uint uVar2; - uint uVar3; - char *pcVar4; - char *pcVar5; - char local_54 [80]; - - FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s_SVGA16__004f4c89,(char *)0x0); - uVar2 = 0xffffffff; - do { - pcVar4 = param_2; - if (uVar2 == 0) break; - uVar2 = uVar2 - 1; - pcVar4 = param_2 + 1; - cVar1 = *param_2; - param_2 = pcVar4; - } while (cVar1 != '\0'); - uVar2 = ~uVar2; - pcVar4 = pcVar4 + -uVar2; - pcVar5 = local_54; - for (uVar3 = uVar2 >> 2; uVar3 != 0; uVar3 = uVar3 - 1) { - *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4; - pcVar4 = pcVar4 + 4; - pcVar5 = pcVar5 + 4; - } - for (uVar2 = uVar2 & 3; uVar2 != 0; uVar2 = uVar2 - 1) { - *pcVar5 = *pcVar4; - pcVar4 = pcVar4 + 1; - pcVar5 = pcVar5 + 1; - } - FUN_004d49b8(local_54,&DAT_004f4c92); - FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s_SVGA16__004f4c96,(char *)0x0); - FUN_0046ac74(param_1,local_54); - return; -} - - - -/* @0046d260 file=? name=FUN_0046d260 */ - -undefined4 __cdecl FUN_0046d260(int param_1,int param_2) - -{ - char cVar1; - int iVar2; - undefined1 *puVar3; - int iVar4; - undefined4 *puVar5; - undefined4 uVar6; - char *this; - int iVar7; - undefined8 uVar8; - int local_14; - int local_10; - char *local_c; - - if (*(int *)(param_1 + 0x14) == 0) { - uVar6 = 0; - } - else { - if (param_2 != 0) { - FUN_004d4988(*(undefined4 **)(param_1 + 0x38),1,*(uint *)(param_1 + 0x20)); - } - iVar2 = *(int *)(param_1 + 0x5c); - if (*(int *)(param_1 + 0x50) == 0) { - local_c = (char *)0x40; - local_10 = *(int *)(param_1 + 0x18) * 2; - } - else { - local_c = (char *)0x20; - local_10 = *(int *)(param_1 + 0x18); - } - local_14 = 0xf; - do { - this = *(char **)(param_1 + 100); - puVar3 = *(undefined1 **)(param_1 + 100); - cVar1 = *this; - *(int *)(param_1 + 100) = *(int *)(param_1 + 100) + 1; - *puVar3 = 0; - if (cVar1 == '\0') { - *(int *)(param_1 + 0x6c) = *(int *)(param_1 + 0x6c) + *(int *)(param_1 + 0x1c) * 4; - *(int *)(param_1 + 0x68) = *(int *)(param_1 + 0x68) + *(int *)(param_1 + 0x18) * 2; - *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) + local_10; - if (*(int *)(param_1 + 0x40) <= *(int *)(param_1 + 0x60)) { - *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) - *(int *)(param_1 + 0x40); - *(int *)(param_1 + 0x58) = *(int *)(param_1 + 0x58) + *(int *)(param_1 + 0x44); - } - } - else { - local_14 = local_14 + -1; - for (iVar7 = 0; iVar7 < *(int *)(param_1 + 0x1c); iVar7 = iVar7 + 1) { - iVar4 = **(int **)(param_1 + 0x6c); - puVar5 = *(undefined4 **)(param_1 + 0x6c); - *(int *)(param_1 + 0x6c) = *(int *)(param_1 + 0x6c) + 4; - *puVar5 = 0; - if (iVar4 != 0) { - if (*(uint *)(param_1 + 0x58) != *(uint *)(param_1 + 0x54)) { - FUN_0047d7f6(this,*(uint *)(param_1 + 0x58)); - this = *(char **)(param_1 + 0x58); - *(char **)(param_1 + 0x54) = this; - } - if (*(int *)(param_1 + 0x50) == 0) { - uVar8 = FUN_0047d848(this,*(undefined4 *)(param_1 + 0x60), - (undefined2 *)*(undefined4 *)(param_1 + 0x60), - *(undefined2 **)(param_1 + 0x68),iVar4); - DAT_00522cc0 = DAT_00522cc0 + (int)uVar8; - } - else { - uVar8 = FUN_0047d88b(*(undefined4 *)(param_1 + 0x60),*(undefined4 *)(param_1 + 0x68), - (undefined1 *)*(undefined4 *)(param_1 + 0x60), - (undefined2 *)*(undefined4 *)(param_1 + 0x68),iVar4); - DAT_00522cc0 = DAT_00522cc0 + (int)uVar8; - } - } - *(int *)(param_1 + 0x68) = *(int *)(param_1 + 0x68) + 0x40; - *(int *)(param_1 + 0x60) = (int)(local_c + *(int *)(param_1 + 0x60)); - this = local_c; - if (*(int *)(param_1 + 0x40) <= *(int *)(param_1 + 0x60)) { - *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) - *(int *)(param_1 + 0x40); - this = *(char **)(param_1 + 0x44); - *(int *)(param_1 + 0x58) = (int)(this + *(int *)(param_1 + 0x58)); - } - } - } - if ((0x10000000 < DAT_00522cc0) || (0x10000000 < DAT_00522cbc)) { - DAT_00522cc0 = DAT_00522cc0 >> 1; - DAT_00522cbc = DAT_00522cbc >> 1; - DAT_00522cc4 = DAT_00522cc4 + 1; - } - *(int *)(param_1 + 0x5c) = *(int *)(param_1 + 0x5c) + 1; - if (*(int *)(param_1 + 0x20) <= *(int *)(param_1 + 0x5c)) { - FUN_0046d404(param_1); - } - if (*(int *)(param_1 + 0x5c) == iVar2) { - return 0; - } - } while (0 < local_14); - uVar6 = 1; - } - return uVar6; -} - - - -/* @0046d404 file=? name=FUN_0046d404 */ - -void __cdecl FUN_0046d404(int param_1) - -{ - *(undefined4 *)(param_1 + 0x5c) = 0; - *(undefined4 *)(param_1 + 0x68) = *(undefined4 *)(param_1 + 0x34); - *(undefined4 *)(param_1 + 100) = *(undefined4 *)(param_1 + 0x38); - *(undefined4 *)(param_1 + 0x6c) = *(undefined4 *)(param_1 + 0x3c); - *(undefined4 *)(param_1 + 0x58) = 0; - *(undefined4 *)(param_1 + 0x60) = 0; - return; -} - - - -/* @0046d430 file=? name=FUN_0046d430 */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -void __cdecl FUN_0046d430(int param_1,float param_2) - -{ - undefined4 *puVar1; - float10 fVar2; - - puVar1 = (undefined4 *)FUN_00414b60(); - *(undefined4 *)(param_1 + 0x7c) = *puVar1; - *(undefined4 *)(param_1 + 0x70) = 3; - fVar2 = FUN_004dcd00((double)param_2); - if ((float10)_DAT_0046d498 < fVar2) { - *(float *)(param_1 + 0x78) = _DAT_0046d49c / param_2; - } - else { - *(undefined4 *)(param_1 + 0x78) = 0; - *(undefined4 *)(param_1 + 0x74) = 0x3f800000; - } - return; -} - - - -/* @0046d4a0 file=? name=FUN_0046d4a0 */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -void __cdecl FUN_0046d4a0(int param_1,float param_2) - -{ - undefined4 *puVar1; - float10 fVar2; - - puVar1 = (undefined4 *)FUN_00414b60(); - *(undefined4 *)(param_1 + 0x7c) = *puVar1; - *(undefined4 *)(param_1 + 0x70) = 1; - fVar2 = FUN_004dcd00((double)param_2); - if ((float10)_DAT_0046d504 < fVar2) { - *(float *)(param_1 + 0x78) = _DAT_0046d508 / param_2; - } - else { - *(undefined4 *)(param_1 + 0x78) = 0; - *(undefined4 *)(param_1 + 0x74) = 0; - } - return; -} - - - -/* @0046d50c file=? name=FUN_0046d50c */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -void __cdecl FUN_0046d50c(short *param_1) - -{ - undefined4 uVar1; - undefined2 extraout_var; - byte *pbVar2; - int iVar3; - int local_308; - byte local_304 [768]; - - FUN_004498a8(&local_308); - iVar3 = 0; - pbVar2 = local_304; - do { - uVar1 = FUN_004dcd94(); - *pbVar2 = (byte)uVar1; - uVar1 = FUN_004dcd94(); - pbVar2[1] = (byte)uVar1; - uVar1 = FUN_004dcd94(); - pbVar2[2] = (byte)uVar1; - iVar3 = iVar3 + 1; - pbVar2 = pbVar2 + 3; - } while (iVar3 < 0x100); - FUN_0047d8f2(CONCAT22(extraout_var,*param_1),param_1,local_304,*param_1); - FUN_00449994(&local_308,2); - return; -} - - - -/* @0046d694 file=? name=FUN_0046d694 */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -uint __cdecl FUN_0046d694(int param_1) - -{ - int *piVar1; - float fVar2; - undefined1 uVar3; - uint uVar4; - int iVar5; - float fVar6; - int *piVar7; - uint uVar8; - undefined2 extraout_var; - undefined2 extraout_var_00; - undefined4 extraout_ECX; - undefined2 *puVar9; - short *psVar10; - int iVar11; - undefined8 uVar12; - - piVar7 = (int *)FUN_00414b60(); - piVar1 = (int *)(param_1 + 0x7c); - fVar6 = (float)(*piVar7 - *piVar1) / DAT_0052140c; - *piVar1 = *piVar7; - uVar8 = CONCAT22((short)((uint)piVar1 >> 0x10), - (ushort)(fVar6 < _DAT_0046d834) << 8 | - (ushort)(NAN(fVar6) || NAN(_DAT_0046d834)) << 10 | - (ushort)(fVar6 == _DAT_0046d834) << 0xe); - if (fVar6 >= _DAT_0046d834 && (fVar6 == _DAT_0046d834) == 0) { - puVar9 = (undefined2 *)(param_1 + 0x80); - iVar11 = 0; - do { - fVar2 = *(float *)(puVar9 + 0x188); - uVar8 = CONCAT22((short)(uVar8 >> 0x10), - (ushort)(fVar2 < _DAT_0046d834) << 8 | - (ushort)(NAN(fVar2) || NAN(_DAT_0046d834)) << 10 | - (ushort)(fVar2 == _DAT_0046d834) << 0xe); - if ((fVar2 == _DAT_0046d834) == 0) { - *(float *)(puVar9 + 0x186) = *(float *)(puVar9 + 0x188) * fVar6 + *(float *)(puVar9 + 0x186) - ; - while (_DAT_0046d838 <= *(float *)(puVar9 + 0x186)) { - *(float *)(puVar9 + 0x186) = *(float *)(puVar9 + 0x186) - _DAT_0046d838; - } - uVar8 = FUN_004dcd94(); - uVar4 = *(uint *)(puVar9 + 0x18c); - if (uVar8 != uVar4) { - *(uint *)(puVar9 + 0x18c) = uVar8; - uVar3 = *(undefined1 *)((int)puVar9 + uVar8 + 0x314); - uVar12 = FUN_0047d962(CONCAT31((int3)((uint)extraout_ECX >> 8),uVar3),uVar4,*puVar9,uVar3) - ; - uVar8 = (uint)uVar12; - } - } - iVar11 = iVar11 + 1; - puVar9 = puVar9 + 0x18e; - } while (iVar11 < 4); - psVar10 = (short *)(param_1 + 0x80); - iVar11 = 0; - do { - if ((iVar11 == 1) && (uVar8 = 0, *(int *)(param_1 + 0x70) != 0)) { - psVar10[2] = 0; - psVar10[3] = 0; - iVar5 = *(int *)(param_1 + 0x70); - if (iVar5 == 1) { - *(float *)(param_1 + 0x74) = - *(float *)(param_1 + 0x74) - fVar6 * *(float *)(param_1 + 0x78); - FUN_0046d50c(psVar10); - fVar2 = *(float *)(param_1 + 0x74); - uVar8 = CONCAT22(extraout_var, - (ushort)(fVar2 < _DAT_0046d834) << 8 | - (ushort)(NAN(fVar2) || NAN(_DAT_0046d834)) << 10 | - (ushort)(fVar2 == _DAT_0046d834) << 0xe); - if (fVar2 < _DAT_0046d834 || (fVar2 == _DAT_0046d834) != 0) { - *(undefined4 *)(param_1 + 0x74) = 0; - *(undefined4 *)(param_1 + 0x70) = 2; - } - } - else { - uVar8 = 0; - if ((iVar5 != 2) && (uVar8 = iVar5 - 3, uVar8 == 0)) { - *(float *)(param_1 + 0x74) = - fVar6 * *(float *)(param_1 + 0x78) + *(float *)(param_1 + 0x74); - FUN_0046d50c(psVar10); - fVar2 = *(float *)(param_1 + 0x74); - uVar8 = CONCAT22(extraout_var_00, - (ushort)(fVar2 < _DAT_0046d83c) << 8 | - (ushort)(NAN(fVar2) || NAN(_DAT_0046d83c)) << 10 | - (ushort)(fVar2 == _DAT_0046d83c) << 0xe); - if (fVar2 >= _DAT_0046d83c) { - *(undefined4 *)(param_1 + 0x74) = 0x3f800000; - *(undefined4 *)(param_1 + 0x70) = 0; - } - } - } - } - else if (*(int *)(psVar10 + 2) != 0) { - psVar10[2] = 0; - psVar10[3] = 0; - uVar12 = FUN_0047d8f2(0,psVar10 + 6,(byte *)(psVar10 + 6),*psVar10); - uVar8 = (uint)uVar12; - } - iVar11 = iVar11 + 1; - psVar10 = psVar10 + 0x18e; - } while (iVar11 < 4); - } - return uVar8; -} - - - -/* @0046d840 file=? name=FUN_0046d840 */ - -undefined6 __cdecl FUN_0046d840(undefined4 param_1,int param_2) - -{ - undefined6 uVar1; - - uVar1 = FUN_0047d76d(param_2); - return uVar1; -} - - - -/* @0046d850 file=? name=FUN_0046d850 */ - -undefined4 * __cdecl -FUN_0046d850(undefined4 *param_1,undefined4 *param_2,char *param_3,undefined4 param_4, - undefined4 param_5,undefined4 param_6,undefined4 param_7) - -{ - uint uVar1; - undefined4 *puVar2; - int iVar3; - - FUN_0044a2d0(param_1,param_2,param_3); - *param_1 = &PTR_FUN_004f4d0c; - param_1[0x14a] = param_4; - param_1[0x14f] = param_6; - param_1[0x150] = param_7; - uVar1 = 0x8000; - param_1[0x14b] = param_5; - param_1[0x14c] = 0; - do { - if ((param_1[0x14b] & uVar1) != 0) { - param_1[0x14c] = param_1[0x14c] + 1; - } - uVar1 = (int)uVar1 >> 1; - } while (uVar1 != 0); - param_1[0x14d] = param_1[3] - param_1[1]; - param_1[0x14e] = param_1[4] - param_1[2]; - if (((param_1[0x14a] == 0x5a) || (param_1[0x14a] == 0x10e)) && (param_2 != (undefined4 *)0x0)) { - param_1[1] = param_2[2]; - param_1[2] = param_2[1]; - param_1[3] = param_2[4]; - param_1[4] = param_2[3]; - } - iVar3 = 0; - puVar2 = param_1 + 0x10a; - do { - *(undefined1 *)puVar2 = 0; - iVar3 = iVar3 + 1; - puVar2 = (undefined4 *)((int)puVar2 + 1); - } while (iVar3 < 0x100); - return param_1; -} - - - -/* @0046d91c file=? name=FUN_0046d91c */ - -void __cdecl FUN_0046d91c(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_004f4d0c; - FUN_0044a348(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @0046d948 file=? name=FUN_0046d948 */ - -undefined4 FUN_0046d948(void) - -{ - return 1; -} - - - -/* @0046d954 file=? name=FUN_0046d954 */ - -void __cdecl FUN_0046d954(int param_1,char *param_2) - -{ - char cVar1; - int *piVar2; - uint uVar3; - uint uVar4; - char *pcVar5; - char *pcVar6; - uint *puVar7; - char local_54 [80]; - - FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s_L4GraphicsPort__004f4c9f,(char *)0x0); - uVar3 = 0xffffffff; - do { - pcVar5 = param_2; - if (uVar3 == 0) break; - uVar3 = uVar3 - 1; - pcVar5 = param_2 + 1; - cVar1 = *param_2; - param_2 = pcVar5; - } while (cVar1 != '\0'); - uVar3 = ~uVar3; - pcVar5 = pcVar5 + -uVar3; - pcVar6 = local_54; - for (uVar4 = uVar3 >> 2; uVar4 != 0; uVar4 = uVar4 - 1) { - *(undefined4 *)pcVar6 = *(undefined4 *)pcVar5; - pcVar5 = pcVar5 + 4; - pcVar6 = pcVar6 + 4; - } - for (uVar3 = uVar3 & 3; uVar3 != 0; uVar3 = uVar3 - 1) { - *pcVar6 = *pcVar5; - pcVar5 = pcVar5 + 1; - pcVar6 = pcVar6 + 1; - } - FUN_004d49b8(local_54,&DAT_004f4cb0); - uVar3 = *(uint *)(param_1 + 0x52c); - FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s_bitMask___004f4cb4,(char *)0x0); - piVar2 = FUN_004db78c(&DAT_00524e20,uVar3); - FUN_004dbb24(piVar2,&DAT_004f4cc3,(char *)0x0); - uVar3 = *(uint *)(param_1 + 0x528); - FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s_baseRotation___004f4cc5,(char *)0x0); - piVar2 = FUN_004db78c(&DAT_00524e20,uVar3); - FUN_004dbb24(piVar2,&DAT_004f4cd4,(char *)0x0); - uVar3 = *(uint *)(param_1 + 0x534); - FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s_maximumX___004f4cd6,(char *)0x0); - piVar2 = FUN_004db78c(&DAT_00524e20,uVar3); - FUN_004dbb24(piVar2,&DAT_004f4ce5,(char *)0x0); - uVar3 = *(uint *)(param_1 + 0x538); - FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s_maximumY___004f4ce7,(char *)0x0); - piVar2 = FUN_004db78c(&DAT_00524e20,uVar3); - FUN_004dbb24(piVar2,&DAT_004f4cf6,(char *)0x0); - puVar7 = (uint *)(param_1 + 4); - FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s_bounds___004f4cf8,(char *)0x0); - piVar2 = (int *)FUN_00407d78(&DAT_00524e20,puVar7); - FUN_004dbb24(piVar2,&DAT_004f4d07,(char *)0x0); - FUN_004d9c70(&DAT_00524e20); - FUN_0044a374(param_1,local_54); - return; -} - - - -/* @0046db5c file=? name=FUN_0046db5c */ - -void __cdecl FUN_0046db5c(int param_1,undefined1 *param_2,int param_3) - -{ - if (1 < *(int *)(param_1 + 0x540) - 4U) { - FUN_0046e31c(param_1,param_2,param_3); - } - return; -} - - - -/* @0046db84 file=? name=FUN_0046db84 */ - -void __cdecl FUN_0046db84(int param_1,int param_2) - -{ - if (*(int *)(param_1 + 0x14) != 0) { - if (*(int *)(param_1 + 0x540) == 4) { - FUN_0046e180(param_1,param_2); - return; - } - if (*(int *)(param_1 + 0x540) == 5) { - FUN_0046e578(param_1); - FUN_0046e650(param_1); - return; - } - FUN_0046e1e4(param_1,param_2); - FUN_0046e650(param_1); - } - return; -} - - - -/* @0046dbdc file=? name=FUN_0046dbdc */ - -void __cdecl FUN_0046dbdc(int param_1) - -{ - uint uVar1; - int *piVar2; - int local_310 [193]; - undefined2 local_a; - undefined1 local_8; - undefined2 local_7; - undefined1 local_5; - - if (*(int *)(param_1 + 0x14) != 0) { - if (*(int *)(param_1 + 0x540) == 4) { - piVar2 = local_310; - uVar1 = FUN_004498a8(piVar2); - local_7 = 0; - local_5 = 0; - local_a = 0xffff; - local_8 = 0xff; - FUN_004499e4((int)local_310,0,0xff,(uVar1 & 0xffffff00) << 0x10, - CONCAT22((short)CONCAT31((int3)((uint)piVar2 >> 8),0xff),0xffff)); - FUN_0046e180(param_1,(int)local_310); - FUN_00449994(local_310,2); - } - else if (*(int *)(param_1 + 0x540) == 5) { - FUN_0046e578(param_1); - FUN_0046e694(param_1); - } - else { - FUN_0046e444(param_1); - FUN_0046e694(param_1); - } - } - return; -} - - - -/* @0046dca0 file=? name=FUN_0046dca0 */ - -void __cdecl FUN_0046dca0(int param_1,int param_2,undefined4 param_3,int param_4,int param_5) - -{ - int local_c; - int local_8; - - if (*(int *)(param_1 + 0x14) != 0) { - FUN_0046e114(param_1,&local_8,&local_c,param_4,param_5); - (**(code **)(**(int **)(param_1 + 0x14) + 0x14)) - (*(int **)(param_1 + 0x14),*(undefined4 *)(param_1 + 0x28 + param_2 * 4), - *(undefined4 *)(param_1 + 0x52c),param_3,local_8 + *(int *)(param_1 + 4), - local_c + *(int *)(param_1 + 8)); - } - return; -} - - - -/* @0046dd00 file=? name=FUN_0046dd00 */ - -void __cdecl -FUN_0046dd00(int param_1,int param_2,undefined4 param_3,int param_4,int param_5,int param_6, - int param_7,undefined4 param_8) - -{ - int local_14; - int local_10; - int local_c; - int local_8; - - if (*(int *)(param_1 + 0x14) != 0) { - FUN_0046e114(param_1,&local_8,&local_c,param_4,param_5); - FUN_0046e114(param_1,&local_10,&local_14,param_6,param_7); - (**(code **)(**(int **)(param_1 + 0x14) + 0x18)) - (*(int **)(param_1 + 0x14),*(undefined4 *)(param_1 + 0x28 + param_2 * 4), - *(undefined4 *)(param_1 + 0x52c),param_3,local_8 + *(int *)(param_1 + 4), - local_c + *(int *)(param_1 + 8),local_10 + *(int *)(param_1 + 4), - local_14 + *(int *)(param_1 + 8),param_8); - } - return; -} - - - -/* @0046dd8c file=? name=FUN_0046dd8c */ - -void __cdecl -FUN_0046dd8c(int param_1,int param_2,undefined4 param_3,int param_4,int param_5,int param_6, - int param_7) - -{ - int local_14; - int local_10; - int local_c; - int local_8; - - if (*(int *)(param_1 + 0x14) != 0) { - FUN_0046e114(param_1,&local_8,&local_c,param_4,param_5); - FUN_0046e114(param_1,&local_10,&local_14,param_6,param_7); - (**(code **)(**(int **)(param_1 + 0x14) + 0x1c)) - (*(int **)(param_1 + 0x14),*(undefined4 *)(param_1 + 0x28 + param_2 * 4), - *(undefined4 *)(param_1 + 0x52c),param_3,local_8 + *(int *)(param_1 + 4), - local_c + *(int *)(param_1 + 8),local_10 + *(int *)(param_1 + 4), - local_14 + *(int *)(param_1 + 8)); - } - return; -} - - - -/* @0046de14 file=? name=FUN_0046de14 */ - -void FUN_0046de14(void) - -{ - return; -} - - - -/* @0046de1c file=? name=FUN_0046de1c */ - -void __cdecl -FUN_0046de1c(int param_1,int param_2,undefined4 param_3,int param_4,int param_5,int param_6, - int param_7,undefined4 param_8,undefined4 param_9,undefined4 param_10, - undefined4 param_11) - -{ - int iVar1; - int local_c; - int local_8; - - if (((*(int *)(param_1 + 0x14) != 0) && (param_7 != 0)) && (*(int *)(param_7 + 0x18) != 0)) { - FUN_0046e114(param_1,&local_8,&local_c,param_5,param_6); - for (iVar1 = param_4 + *(int *)(param_1 + 0x528); iVar1 < 0; iVar1 = iVar1 + 0x168) { - } - for (; 0x167 < iVar1; iVar1 = iVar1 + -0x168) { - } - (**(code **)(**(int **)(param_1 + 0x14) + 0x24)) - (*(int **)(param_1 + 0x14),*(undefined4 *)(param_1 + 0x28 + param_2 * 4), - *(undefined4 *)(param_1 + 0x52c),param_3,iVar1,local_8 + *(int *)(param_1 + 4), - local_c + *(int *)(param_1 + 8),param_7,param_8,param_9,param_10,param_11); - } - return; -} - - - -/* @0046ded8 file=? name=FUN_0046ded8 */ - -void __cdecl -FUN_0046ded8(int param_1,int param_2,int param_3,undefined4 param_4,int param_5,int param_6, - int param_7,int param_8,undefined4 param_9,undefined4 param_10,undefined4 param_11, - undefined4 param_12) - -{ - int iVar1; - int local_c; - int local_8; - - if (((*(int *)(param_1 + 0x14) != 0) && (param_8 != 0)) && (*(int *)(param_8 + 0x18) != 0)) { - FUN_0046e114(param_1,&local_8,&local_c,param_6,param_7); - for (iVar1 = param_5 + *(int *)(param_1 + 0x528); iVar1 < 0; iVar1 = iVar1 + 0x168) { - } - for (; 0x167 < iVar1; iVar1 = iVar1 + -0x168) { - } - (**(code **)(**(int **)(param_1 + 0x14) + 0x28)) - (*(int **)(param_1 + 0x14),*(undefined4 *)(param_1 + 0x28 + param_2 * 4), - *(undefined4 *)(param_1 + 0x28 + param_3 * 4),*(undefined4 *)(param_1 + 0x52c), - param_4,iVar1,local_8 + *(int *)(param_1 + 4),local_c + *(int *)(param_1 + 8),param_8 - ,param_9,param_10,param_11,param_12); - } - return; -} - - - -/* @0046df9c file=? name=FUN_0046df9c */ - -void __cdecl -FUN_0046df9c(int param_1,undefined4 param_2,undefined4 param_3,int param_4,int param_5,int param_6, - int param_7,undefined4 param_8,undefined4 param_9,undefined4 param_10, - undefined4 param_11) - -{ - int iVar1; - int local_c; - int local_8; - - if (((*(int *)(param_1 + 0x14) != 0) && (param_7 != 0)) && (*(int *)(param_7 + 8) != 0)) { - FUN_0046e114(param_1,&local_8,&local_c,param_5,param_6); - for (iVar1 = param_4 + *(int *)(param_1 + 0x528); iVar1 < 0; iVar1 = iVar1 + 0x168) { - } - for (; 0x167 < iVar1; iVar1 = iVar1 + -0x168) { - } - (**(code **)(**(int **)(param_1 + 0x14) + 0x2c)) - (*(int **)(param_1 + 0x14),param_1 + 0x28,*(undefined4 *)(param_1 + 0x52c),param_2, - param_3,iVar1,local_8 + *(int *)(param_1 + 4),local_c + *(int *)(param_1 + 8),param_7 - ,param_8,param_9,param_10,param_11); - } - return; -} - - - -/* @0046e058 file=? name=FUN_0046e058 */ - -void __cdecl -FUN_0046e058(int param_1,int param_2,undefined4 param_3,int param_4,int param_5,int param_6, - int param_7,undefined4 param_8,undefined4 param_9,undefined4 param_10, - undefined4 param_11) - -{ - int iVar1; - int local_c; - int local_8; - - if (((*(int *)(param_1 + 0x14) != 0) && (param_7 != 0)) && (*(int *)(param_7 + 8) != 0)) { - FUN_0046e114(param_1,&local_8,&local_c,param_5,param_6); - for (iVar1 = param_4 + *(int *)(param_1 + 0x528); iVar1 < 0; iVar1 = iVar1 + 0x168) { - } - for (; 0x167 < iVar1; iVar1 = iVar1 + -0x168) { - } - (**(code **)(**(int **)(param_1 + 0x14) + 0x30)) - (*(int **)(param_1 + 0x14),*(undefined4 *)(param_1 + 0x28 + param_2 * 4), - *(undefined4 *)(param_1 + 0x52c),param_3,iVar1,local_8 + *(int *)(param_1 + 4), - local_c + *(int *)(param_1 + 8),param_7,param_8,param_9,param_10,param_11); - } - return; -} - - - -/* @0046e114 file=? name=FUN_0046e114 */ - -void __cdecl FUN_0046e114(int param_1,int *param_2,int *param_3,int param_4,int param_5) - -{ - int iVar1; - - iVar1 = *(int *)(param_1 + 0x528); - if (iVar1 == 0x5a) { - *param_2 = param_5; - *param_3 = *(int *)(param_1 + 0x538) - param_4; - } - else if (iVar1 == 0xb4) { - *param_2 = *(int *)(param_1 + 0x534) - param_4; - *param_3 = *(int *)(param_1 + 0x538) - param_5; - } - else if (iVar1 == 0x10e) { - *param_2 = *(int *)(param_1 + 0x534) - param_5; - *param_3 = param_4; - } - else { - *param_2 = param_4; - *param_3 = param_5; - } - return; -} - - - -/* @0046e180 file=? name=FUN_0046e180 */ - -void __cdecl FUN_0046e180(int param_1,int param_2) - -{ - byte *pbVar1; - byte *pbVar2; - byte bVar3; - byte *pbVar4; - int iVar5; - uint *puVar6; - - pbVar4 = (byte *)(param_2 + 4); - *(undefined4 *)(param_1 + 0x52c) = 0xffff; - puVar6 = (uint *)(param_1 + 0x28); - iVar5 = 0x100; - do { - pbVar1 = pbVar4 + 1; - bVar3 = *pbVar4; - pbVar2 = pbVar4 + 2; - pbVar4 = pbVar4 + 3; - iVar5 = iVar5 + -1; - *puVar6 = ((int)(uint)bVar3 >> 3) << 0xb | ((int)(uint)*pbVar1 >> 2) << 5 | - (int)(uint)*pbVar2 >> 3; - puVar6 = puVar6 + 1; - } while (0 < iVar5); - return; -} - - - -/* @0046e1e4 file=? name=FUN_0046e1e4 */ - -void __cdecl FUN_0046e1e4(int param_1,int param_2) - -{ - int iVar1; - int iVar2; - int iVar3; - undefined1 *puVar4; - uint local_14 [3]; - undefined1 *local_8; - - if (*(int *)(param_1 + 0x14) != 0) { - FUN_0046aa78(local_14,*(uint *)(param_1 + 0x52c) & 0xff,8); - iVar3 = *(int *)(param_1 + 0x53c) * 0x31c + *(int *)(param_1 + 0x14); - puVar4 = (undefined1 *)(param_2 + 4); - iVar1 = 0; - do { - *(undefined1 *)(param_1 + 0x428 + local_14[0]) = 0; - iVar1 = iVar1 + 1; - } while (iVar1 < 0x100); - if ((*(byte *)(param_1 + 0x540) & 0x80) != 0) { - puVar4 = (undefined1 *)(param_2 + 7); - FUN_0046aab0(local_14); - } - do { - do { - *(undefined1 *)(param_1 + 0x428 + local_14[0]) = 1; - iVar2 = local_14[0] * 3 + iVar3 + 0x80; - iVar1 = *(int *)(param_1 + 0x540); - if (iVar1 < 0x81) { - if ((iVar1 == 0x80) || (iVar1 == 0)) { - *(undefined1 *)(iVar2 + 0xc) = *puVar4; - } - else { - if (iVar1 == 1) goto LAB_0046e2b2; - if (iVar1 == 2) goto LAB_0046e2ba; - if (iVar1 == 3) goto LAB_0046e2c2; - } - } - else if (iVar1 == 0x81) { -LAB_0046e2b2: - *(undefined1 *)(iVar2 + 0xd) = puVar4[1]; - } - else if (iVar1 == 0x82) { -LAB_0046e2ba: - *(undefined1 *)(iVar2 + 0xe) = puVar4[2]; - } - else if (iVar1 == 0x83) { -LAB_0046e2c2: - *(undefined1 *)(iVar2 + 0xc) = *puVar4; - *(undefined1 *)(iVar2 + 0xd) = puVar4[1]; - *(undefined1 *)(iVar2 + 0xe) = puVar4[2]; - local_8 = puVar4; - } - iVar1 = FUN_0046aae0(local_14); - } while (iVar1 != 0); - puVar4 = puVar4 + 3; - iVar1 = FUN_0046aab0(local_14); - } while (iVar1 != 0); - *(undefined4 *)(iVar3 + 0x88) = 1; - *(undefined4 *)(iVar3 + 0x84) = 1; - } - return; -} - - - -/* @0046e31c file=? name=FUN_0046e31c */ - -void __cdecl FUN_0046e31c(int param_1,undefined1 *param_2,int param_3) - -{ - int iVar1; - int iVar2; - int iVar3; - uint local_10 [3]; - - if (*(int *)(param_1 + 0x14) == 0) { - return; - } - FUN_0046aa78(local_10,*(uint *)(param_1 + 0x52c) & 0xff,8); - iVar3 = 0; - iVar2 = *(int *)(param_1 + 0x53c) * 0x31c + *(int *)(param_1 + 0x14); - if ((*(byte *)(param_1 + 0x540) & 0x80) != 0) { - iVar3 = 1; - FUN_0046aab0(local_10); - } - do { - if (iVar3 == param_3) goto LAB_0046e38f; - iVar3 = iVar3 + 1; - iVar1 = FUN_0046aab0(local_10); - } while (iVar1 != 0); - goto LAB_0046e42f; -LAB_0046e38f: - do { - if (*(char *)(param_1 + 0x428 + local_10[0]) != '\0') { - iVar3 = *(int *)(param_1 + 0x540); - iVar1 = local_10[0] * 3 + iVar2; - if (iVar3 < 0x81) { - if ((iVar3 == 0x80) || (iVar3 == 0)) { - *(undefined1 *)(iVar1 + 0x8c) = *param_2; - } - else { - if (iVar3 == 1) goto LAB_0046e3df; - if (iVar3 == 2) goto LAB_0046e3ea; - if (iVar3 == 3) goto LAB_0046e3f5; - } - } - else if (iVar3 == 0x81) { -LAB_0046e3df: - *(undefined1 *)(iVar1 + 0x8d) = param_2[1]; - } - else if (iVar3 == 0x82) { -LAB_0046e3ea: - *(undefined1 *)(iVar1 + 0x8e) = param_2[2]; - } - else if (iVar3 == 0x83) { -LAB_0046e3f5: - *(undefined1 *)(iVar1 + 0x8c) = *param_2; - *(undefined1 *)(iVar1 + 0x8d) = param_2[1]; - *(undefined1 *)(iVar1 + 0x8e) = param_2[2]; - } - } - iVar3 = FUN_0046aae0(local_10); - } while (iVar3 != 0); -LAB_0046e42f: - *(undefined4 *)(iVar2 + 0x88) = 1; - *(undefined4 *)(iVar2 + 0x84) = 1; - return; -} - - - -/* @0046e444 file=? name=FUN_0046e444 */ - -void __cdecl FUN_0046e444(int param_1) - -{ - int iVar1; - int iVar2; - int iVar3; - int iVar4; - uint local_18 [3]; - undefined1 local_9; - int local_8; - - if (*(int *)(param_1 + 0x14) != 0) { - FUN_0046aa78(local_18,*(int *)(param_1 + 0x52c) >> 8 & 0xff,8); - iVar4 = *(int *)(param_1 + 0x53c) * 0x31c + *(int *)(param_1 + 0x14); - iVar1 = FUN_0046ab18((int)local_18); - iVar2 = (int)(0x1fe0 / (longlong)((1 << ((byte)iVar1 & 0x1f)) + -1)); - iVar1 = 0; - local_8 = iVar2; - if ((*(byte *)(param_1 + 0x540) & 0x80) != 0) { - FUN_0046aab0(local_18); - iVar1 = iVar2; - } - do { - local_9 = (undefined1)(iVar1 >> 5); - iVar1 = iVar1 + local_8; - do { - iVar3 = local_18[0] * 3 + iVar4 + 0x80; - iVar2 = *(int *)(param_1 + 0x540); - if (iVar2 < 0x81) { - if ((iVar2 == 0x80) || (iVar2 == 0)) { - *(undefined1 *)(iVar3 + 0xc) = local_9; - } - else { - if (iVar2 == 1) goto LAB_0046e520; - if (iVar2 == 2) goto LAB_0046e528; - if (iVar2 == 3) goto LAB_0046e530; - } - } - else if (iVar2 == 0x81) { -LAB_0046e520: - *(undefined1 *)(iVar3 + 0xd) = local_9; - } - else if (iVar2 == 0x82) { -LAB_0046e528: - *(undefined1 *)(iVar3 + 0xe) = local_9; - } - else if (iVar2 == 0x83) { -LAB_0046e530: - *(undefined1 *)(iVar3 + 0xc) = local_9; - *(undefined1 *)(iVar3 + 0xd) = local_9; - *(undefined1 *)(iVar3 + 0xe) = local_9; - } - iVar2 = FUN_0046aae0(local_18); - } while (iVar2 != 0); - iVar2 = FUN_0046aab0(local_18); - } while (iVar2 != 0); - *(undefined4 *)(iVar4 + 0x88) = 1; - *(undefined4 *)(iVar4 + 0x84) = 1; - } - return; -} - - - -/* @0046e578 file=? name=FUN_0046e578 */ - -void __cdecl FUN_0046e578(int param_1) - -{ - int iVar1; - int iVar2; - int iVar3; - uint local_10 [3]; - - if (*(int *)(param_1 + 0x14) != 0) { - FUN_0046aa78(local_10,*(int *)(param_1 + 0x52c) >> 8 & 0xff,8); - iVar3 = *(int *)(param_1 + 0x53c) * 0x31c + *(int *)(param_1 + 0x14); - do { - iVar1 = local_10[0] * 3 + iVar3 + 0x80; - iVar2 = *(int *)(param_1 + 0x540); - if (iVar2 < 0x81) { - if ((iVar2 == 0x80) || (iVar2 == 0)) { - *(undefined1 *)(iVar1 + 0xc) = 0; - } - else { - if (iVar2 == 1) goto LAB_0046e60d; - if (iVar2 == 2) goto LAB_0046e612; - if (iVar2 == 3) goto LAB_0046e617; - } - } - else if (iVar2 == 0x81) { -LAB_0046e60d: - *(undefined1 *)(iVar1 + 0xd) = 0; - } - else if (iVar2 == 0x82) { -LAB_0046e612: - *(undefined1 *)(iVar1 + 0xe) = 0; - } - else if (iVar2 == 0x83) { -LAB_0046e617: - *(undefined1 *)(iVar1 + 0xc) = 0; - *(undefined1 *)(iVar1 + 0xd) = 0; - *(undefined1 *)(iVar1 + 0xe) = 0; - } - iVar2 = FUN_0046aae0(local_10); - } while ((iVar2 != 0) || (iVar2 = FUN_0046aab0(local_10), iVar2 != 0)); - *(undefined4 *)(iVar3 + 0x88) = 1; - *(undefined4 *)(iVar3 + 0x84) = 1; - } - return; -} - - - -/* @0046e650 file=? name=FUN_0046e650 */ - -void __cdecl FUN_0046e650(int param_1) - -{ - int iVar1; - uint *puVar2; - uint local_10 [3]; - - FUN_0046aa78(local_10,*(uint *)(param_1 + 0x52c) & 0xff,8); - puVar2 = (uint *)(param_1 + 0x28); - do { - *puVar2 = local_10[0]; - puVar2 = puVar2 + 1; - iVar1 = FUN_0046aab0(local_10); - } while (iVar1 != 0); - return; -} - - - -/* @0046e694 file=? name=FUN_0046e694 */ - -void __cdecl FUN_0046e694(int param_1) - -{ - int iVar1; - int *piVar2; - int iVar3; - uint local_10 [3]; - - FUN_0046aa78(local_10,*(int *)(param_1 + 0x52c) >> 8 & 0xff,8); - piVar2 = (int *)(param_1 + 0x28); - do { - iVar3 = local_10[0] << 8; - do { - *piVar2 = iVar3; - piVar2 = piVar2 + 1; - iVar1 = FUN_0046aae0(local_10); - } while (iVar1 != 0); - iVar3 = FUN_0046aab0(local_10); - } while (iVar3 != 0); - return; -} - - - -/* @0046e6ec file=? name=FUN_0046e6ec */ - -int __cdecl FUN_0046e6ec(int param_1) - -{ - FUN_004498a8((undefined4 *)(param_1 + 8)); - return param_1; -} - - - -/* @0046e702 file=? name=FUN_0046e702 */ - -void __cdecl FUN_0046e702(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - FUN_00449994(param_1 + 2,2); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @0046e72c file=? name=FUN_0046e72c */ - -undefined4 * __cdecl -FUN_0046e72c(undefined4 *param_1,char *param_2,undefined4 param_3,undefined4 param_4) - -{ - char cVar1; - uint uVar2; - uint uVar3; - char *pcVar4; - char *pcVar5; - - *(undefined1 *)(param_1 + 2) = 0; - uVar2 = 0xffffffff; - do { - pcVar4 = param_2; - if (uVar2 == 0) break; - uVar2 = uVar2 - 1; - pcVar4 = param_2 + 1; - cVar1 = *param_2; - param_2 = pcVar4; - } while (cVar1 != '\0'); - uVar2 = ~uVar2; - pcVar4 = pcVar4 + -uVar2; - pcVar5 = (char *)(param_1 + 2); - for (uVar3 = uVar2 >> 2; uVar3 != 0; uVar3 = uVar3 - 1) { - *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4; - pcVar4 = pcVar4 + 4; - pcVar5 = pcVar5 + 4; - } - for (uVar2 = uVar2 & 3; uVar2 != 0; uVar2 = uVar2 - 1) { - *pcVar5 = *pcVar4; - pcVar4 = pcVar4 + 1; - pcVar5 = pcVar5 + 1; - } - *(undefined1 *)((int)param_1 + 0x47) = 0; - *param_1 = param_3; - param_1[1] = param_4; - param_1[0x12] = DAT_00522cc8; - DAT_00522cc8 = param_1; - return param_1; -} - - - -/* @0046e788 file=? name=FUN_0046e788 */ - -undefined4 __cdecl FUN_0046e788(char *param_1) - -{ - char *pcVar1; - bool bVar2; - int *piVar3; - char *pcVar4; - uint uVar5; - undefined4 *puVar6; - char *pcVar7; - char *pcVar8; - int iVar9; - undefined4 uVar10; - bool bVar11; - char local_120 [256]; - int local_20; - uint local_1c; - int *local_18; - int *local_14; - int *local_10; - int *local_c; - int *local_8; - - uVar10 = 0; - piVar3 = (int *)FUN_00402298(0x20); - if (piVar3 == (int *)0x0) { - local_8 = (int *)0x0; - } - else { - local_8 = FUN_00403e84(piVar3,param_1,1); - } - local_c = FUN_00404720((int)local_8,s_colors_004f4da5,(char *)0x0); - if (local_c == (int *)0x0) { - FUN_004dbb24(&DAT_00524e20,param_1,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s_has_no__colors__page__004f4dac,(char *)0x0); - FUN_004d9c38(&DAT_00524e20); - } - local_10 = FUN_00404720((int)local_8,s_attributes_004f4dc3,(char *)0x0); - if (local_10 == (int *)0x0) { - FUN_004dbb24(&DAT_00524e20,param_1,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s_has_no__attributes__page__004f4dce,(char *)0x0); - FUN_004d9c38(&DAT_00524e20); - } - local_14 = FUN_00404720((int)local_8,s_groups_004f4de9,(char *)0x0); - if (local_14 == (int *)0x0) { - FUN_004dbb24(&DAT_00524e20,param_1,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s_has_no__groups__page__004f4df0,(char *)0x0); - FUN_004d9c38(&DAT_00524e20); - } - if (((local_10 != (int *)0x0) && (local_c != (int *)0x0)) && (local_14 != (int *)0x0)) { - DAT_00522cc8 = 0; - local_18 = (int *)local_14[1]; - while (local_18 != (int *)0x0) { - pcVar8 = (char *)local_18[1]; - local_1c = 0; - local_20 = 0; - if (pcVar8 == (char *)0x0) { - FUN_004dbb24(&DAT_00524e20,(char *)0x0,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s_is_an_empty__GAT_group__004f4e07,(char *)0x0); - FUN_004d9c38(&DAT_00524e20); - } - else { - while (*pcVar8 != '\0') { - while (((&DAT_005207dd)[*pcVar8] & 1) != 0) { - pcVar8 = pcVar8 + 1; - } - iVar9 = 0; - pcVar4 = local_120; - do { - if (((&DAT_005207dd)[*pcVar8] & 0xe) == 0) break; - *pcVar4 = *pcVar8; - iVar9 = iVar9 + 1; - pcVar4 = pcVar4 + 1; - pcVar8 = pcVar8 + 1; - } while (iVar9 < 0xff); - *pcVar4 = '\0'; - bVar2 = false; - for (puVar6 = (undefined4 *)local_c[1]; puVar6 != (undefined4 *)0x0; - puVar6 = (undefined4 *)*puVar6) { - pcVar4 = (char *)(puVar6 + 2); - pcVar7 = local_120; - do { - if (*pcVar4 != *pcVar7) goto LAB_0046e9ab; - bVar11 = true; - if (*pcVar4 == '\0') break; - pcVar1 = pcVar4 + 1; - if (*pcVar1 != pcVar7[1]) goto LAB_0046e9ab; - pcVar4 = pcVar4 + 2; - pcVar7 = pcVar7 + 2; - bVar11 = *pcVar1 == '\0'; - } while (!bVar11); - if (bVar11) { - local_20 = FUN_004dd1e0((char *)puVar6[1]); - bVar2 = true; - break; - } -LAB_0046e9ab: - } - if (!bVar2) { - bVar2 = false; - for (puVar6 = (undefined4 *)local_10[1]; puVar6 != (undefined4 *)0x0; - puVar6 = (undefined4 *)*puVar6) { - pcVar4 = (char *)(puVar6 + 2); - pcVar7 = local_120; - do { - if (*pcVar4 != *pcVar7) goto LAB_0046ea00; - bVar11 = true; - if (*pcVar4 == '\0') break; - pcVar1 = pcVar4 + 1; - if (*pcVar1 != pcVar7[1]) goto LAB_0046ea00; - pcVar4 = pcVar4 + 2; - pcVar7 = pcVar7 + 2; - bVar11 = *pcVar1 == '\0'; - } while (!bVar11); - if (bVar11) { - uVar5 = FUN_004dd1e0((char *)puVar6[1]); - local_1c = local_1c | uVar5; - bVar2 = true; - break; - } -LAB_0046ea00: - } - if (!bVar2) { - FUN_004dbb24(&DAT_00524e20,s_Attribute___004f4e20,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,local_120,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s___not_found__004f4e2c,(char *)0x0); - FUN_004d9c38(&DAT_00524e20); - } - } - } - } - puVar6 = (undefined4 *)FUN_00402298(0x4c); - if (puVar6 != (undefined4 *)0x0) { - FUN_0046e72c(puVar6,(char *)(local_18 + 2),local_20,local_1c); - } - local_18 = (int *)*local_18; - } - if (local_c != (int *)0x0) { - (**(code **)*local_c)(local_c,3); - } - if (local_10 != (int *)0x0) { - (**(code **)*local_10)(local_10,3); - } - if (local_14 != (int *)0x0) { - (**(code **)*local_14)(local_14,3); - } - uVar10 = 1; - } - FUN_00403ecc(local_8,3); - return uVar10; -} - - - -/* @0046eaf0 file=? name=FUN_0046eaf0 */ - -void FUN_0046eaf0(void) - -{ - int *piVar1; - int *piVar2; - - piVar1 = DAT_00522cc8; - while (piVar2 = piVar1, piVar2 != (int *)0x0) { - piVar1 = (int *)piVar2[0x12]; - if (piVar2 != (int *)0x0) { - FUN_004022d0(piVar2); - } - } - DAT_00522cc8 = (int *)0x0; - return; -} - - - -/* @0046eb18 file=? name=FUN_0046eb18 */ - -undefined4 __cdecl FUN_0046eb18(char *param_1,undefined4 *param_2,undefined4 *param_3) - -{ - undefined4 *puVar1; - int iVar2; - - puVar1 = DAT_00522cc8; - while( true ) { - if (puVar1 == (undefined4 *)0x0) { - return 0; - } - iVar2 = FUN_004d4ae0(param_1,(char *)(puVar1 + 2),0x40); - if (iVar2 == 0) break; - puVar1 = (undefined4 *)puVar1[0x12]; - } - *param_2 = *puVar1; - *param_3 = puVar1[1]; - return 1; -} - - - -/* @0046eb64 file=? name=FUN_0046eb64 */ - -undefined4 FUN_0046eb64(void) - -{ - return 0; -} - - - -/* @0046eb6c file=? name=FUN_0046eb6c */ - -int * __cdecl FUN_0046eb6c(int param_1) - -{ - int iVar1; - int iVar2; - int *piVar3; - int local_14 [4]; - - piVar3 = (int *)0x0; - iVar2 = FUN_00407064(*(int *)(DAT_004efc94 + 0x68),param_1,0x12); - if (iVar2 != 0) { - iVar1 = *(int *)(iVar2 + 4); - *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + 1; - if (iVar1 == 0) { - FUN_00406cd0(iVar2); - } - FUN_004030dc(local_14,*(undefined4 *)(iVar2 + 0x3c),*(undefined4 *)(iVar2 + 0x40),0); - if (*(int *)(iVar2 + 0x3c) != 0) { - piVar3 = (int *)FUN_00402298(0x14); - if (piVar3 == (int *)0x0) { - piVar3 = (int *)0x0; - } - else { - piVar3 = FUN_0046ebf0(piVar3,local_14); - } - } - *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + -1; - } - return piVar3; -} - - - -/* @0046ebf0 file=? name=FUN_0046ebf0 */ - -int * __cdecl FUN_0046ebf0(int *param_1,int *param_2) - -{ - int extraout_EAX; - int *piVar1; - int iVar2; - int *piVar3; - - (**(code **)(*param_2 + 0x1c))(param_2,param_1,4); - piVar3 = FUN_004de998((int *)0x0,0xc,*param_1,1,&LAB_0046f974); - param_1[2] = extraout_EAX; - for (iVar2 = 0; iVar2 < *param_1; iVar2 = iVar2 + 1) { - (**(code **)(*piVar3 + 0x1c))(piVar3,iVar2 * 0xc + param_1[2],0xc); - } - (**(code **)(*piVar3 + 0x1c))(piVar3,param_1 + 1,4); - iVar2 = FUN_004022b0(param_1[1] << 2); - param_1[3] = iVar2; - for (iVar2 = 0; iVar2 < param_1[1]; iVar2 = iVar2 + 1) { - (**(code **)(*piVar3 + 0x1c))(piVar3,iVar2 * 4 + param_1[3],4); - } - iVar2 = FUN_004022b0(param_1[1] << 2); - param_1[4] = iVar2; - for (iVar2 = 0; iVar2 < param_1[1]; iVar2 = iVar2 + 1) { - piVar1 = (int *)FUN_00402298(8); - if (piVar1 == (int *)0x0) { - piVar1 = (int *)0x0; - } - else { - piVar1 = FUN_0046f190(piVar1,piVar3); - } - *(int **)(param_1[4] + iVar2 * 4) = piVar1; - } - return param_1; -} - - - -/* @0046ecdc file=? name=FUN_0046ecdc */ - -void __cdecl FUN_0046ecdc(int *param_1,byte param_2) - -{ - int iVar1; - - if (param_1 != (int *)0x0) { - FUN_004022e8((int *)param_1[2]); - FUN_004022e8((int *)param_1[3]); - for (iVar1 = 0; iVar1 < param_1[1]; iVar1 = iVar1 + 1) { - FUN_0046f1f0(*(int **)(param_1[4] + iVar1 * 4),3); - } - FUN_004022e8((int *)param_1[4]); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @0046ed34 file=? name=FUN_0046ed34 */ - -undefined4 __cdecl FUN_0046ed34(int param_1,char *param_2,int param_3,int param_4) - -{ - int iVar1; - int *piVar2; - int *piVar3; - int *piVar4; - undefined4 *puVar5; - int *piVar6; - char *local_10; - char *local_c; - undefined4 local_8; - - local_8 = 0xffffffff; - iVar1 = FUN_00404088(param_3,s_gauge_004f4e39,s_image_004f4e3f,&local_c); - if (iVar1 != 0) { - piVar2 = (int *)FUN_004064fc(*(char **)(param_4 + 0x14),local_c); - piVar3 = (int *)FUN_00402298(0x20); - if (piVar3 == (int *)0x0) { - piVar3 = (int *)0x0; - } - else { - piVar3 = FUN_00403e84(piVar3,(char *)piVar2,1); - } - iVar1 = FUN_00404088((int)piVar3,s_object_004f4e45,s_gatfile_004f4e4c,&local_10); - if (iVar1 == 0) { - FUN_004dbb24(&DAT_00524e20,s_Missing__gat_specification__004f4e54,(char *)0x0); - FUN_004d9c38(&DAT_00524e20); - } - else { - piVar4 = (int *)FUN_004064fc(*(char **)(param_4 + 0x14),local_10); - iVar1 = FUN_0046e788((char *)piVar4); - if (iVar1 != 0) { - puVar5 = (undefined4 *)FUN_00402298(0x18); - if (puVar5 == (undefined4 *)0x0) { - piVar6 = (int *)0x0; - } - else { - piVar6 = FUN_0040328c(puVar5,0); - } - iVar1 = FUN_0046ee84(piVar6,(int)piVar3); - if (iVar1 == 1) { - puVar5 = (undefined4 *)FUN_00406f3c(param_1,param_2,0x12,1,0,piVar6,-1); - local_8 = *puVar5; - } - FUN_0046eaf0(); - FUN_00403310(piVar6,3); - } - FUN_004022d0(piVar4); - } - FUN_00403ecc(piVar3,3); - FUN_004022d0(piVar2); - } - return local_8; -} - - - -/* @0046ee84 file=? name=FUN_0046ee84 */ - -int __cdecl FUN_0046ee84(int *param_1,int param_2) - -{ - undefined4 *puVar1; - int iVar2; - int iVar3; - float10 fVar4; - float local_28 [3]; - int local_1c; - float local_18; - int local_14; - int *local_10; - int local_c; - int *local_8; - - iVar3 = 1; - local_8 = FUN_00404720(param_2,s_vertices_004f4e70,(char *)0x0); - if (local_8 == (int *)0x0) { - FUN_004dbb24(&DAT_00524e20,s_No__vertices__page_in_the__GIM_f_004f4e79,(char *)0x0); - FUN_004d9c38(&DAT_00524e20); - iVar3 = 0; - } - else { - local_c = FUN_00403b60((int)local_8); - if (local_c < 1) { - FUN_004dbb24(&DAT_00524e20,s_The__vertices__page_in_the__GIM_f_004f4e9e,(char *)0x0); - FUN_004d9c38(&DAT_00524e20); - iVar3 = 0; - } - else { - (**(code **)(*param_1 + 0x20))(param_1,&local_c,4); - puVar1 = (undefined4 *)local_8[1]; - iVar2 = 0; - if (0 < local_c) { - do { - FUN_00408944((char *)puVar1[1],local_28); - (**(code **)(*param_1 + 0x20))(param_1,local_28,0xc); - puVar1 = (undefined4 *)*puVar1; - iVar2 = iVar2 + 1; - } while (iVar2 < local_c); - } - } - if (local_8 != (int *)0x0) { - (**(code **)*local_8)(local_8,3); - } - } - if (iVar3 == 1) { - local_10 = FUN_00404720(param_2,&DAT_004f4ed3,(char *)0x0); - if (local_10 == (int *)0x0) { - FUN_004dbb24(&DAT_00524e20,s_No__lods__page_in_the__GIM_file__004f4ed8,(char *)0x0); - FUN_004d9c38(&DAT_00524e20); - iVar3 = 0; - } - else { - local_14 = FUN_00403b60((int)local_10); - if (local_14 < 1) { - FUN_004dbb24(&DAT_00524e20,s_The__lod__page_in_the__GIM_file_h_004f4ef9,(char *)0x0); - FUN_004d9c38(&DAT_00524e20); - iVar3 = 0; - } - else { - (**(code **)(*param_1 + 0x20))(param_1,&local_14,4); - iVar2 = 0; - puVar1 = (undefined4 *)local_10[1]; - if (0 < local_14) { - do { - local_1c = puVar1[1]; - if (local_1c == 0) { - FUN_004dbb24(&DAT_00524e20,s_Missing_scale_value__004f4f29,(char *)0x0); - FUN_004d9c38(&DAT_00524e20); - iVar3 = 0; - break; - } - fVar4 = (float10)FUN_004dd1cc(local_1c); - local_18 = (float)fVar4; - (**(code **)(*param_1 + 0x20))(param_1,&local_18,4); - puVar1 = (undefined4 *)*puVar1; - iVar2 = iVar2 + 1; - } while (iVar2 < local_14); - } - iVar2 = 0; - puVar1 = (undefined4 *)local_10[1]; - if (0 < local_14) { - do { - iVar3 = FUN_0046f234(param_1,param_2,(char *)(puVar1 + 2)); - if (iVar3 == 0) break; - puVar1 = (undefined4 *)*puVar1; - iVar2 = iVar2 + 1; - } while (iVar2 < local_14); - } - } - } - if (local_10 != (int *)0x0) { - (**(code **)*local_10)(local_10,3); - } - } - return iVar3; -} - - - -/* @0046f0c0 file=? name=FUN_0046f0c0 */ - -void __cdecl -FUN_0046f0c0(int *param_1,float param_2,float param_3,int *param_4,int param_5,float *param_6, - int param_7) - -{ - int iVar1; - undefined4 *puVar2; - float *pfVar3; - int iVar4; - float local_34 [12]; - - if (DAT_004f4da4 == '\0') { - FUN_004de998((int *)&DAT_00522ccc,0xc,100,1,&LAB_0046f974); - DAT_004f4da4 = DAT_004f4da4 + '\x01'; - } - FUN_0040aadc(local_34); - iVar1 = FUN_0040af88(param_6,local_34); - if (iVar1 == 0) { - iVar1 = 0; - for (pfVar3 = (float *)param_1[3]; (iVar1 < param_1[1] && (*pfVar3 < param_2)); - pfVar3 = pfVar3 + 1) { - iVar1 = iVar1 + 1; - } - if (iVar1 < param_1[1]) { - puVar2 = &DAT_0052317c; - for (iVar4 = 0; iVar4 < *param_1; iVar4 = iVar4 + 1) { - *puVar2 = 0; - puVar2 = puVar2 + 1; - } - FUN_0046f374(*(int **)(param_1[4] + iVar1 * 4),param_4,param_5,param_6,param_1[2],0x522ccc, - 0x52317c,param_3,param_7); - } - } - return; -} - - - -/* @0046f184 file=? name=FUN_0046f184 */ - -undefined4 FUN_0046f184(void) - -{ - return 1; -} - - - -/* @0046f190 file=? name=FUN_0046f190 */ - -int * __cdecl FUN_0046f190(int *param_1,int *param_2) - -{ - int iVar1; - int iVar2; - - (**(code **)(*param_2 + 0x1c))(param_2,param_1,4); - iVar1 = FUN_004022b0(*param_1 << 2); - param_1[1] = iVar1; - for (iVar1 = 0; iVar1 < *param_1; iVar1 = iVar1 + 1) { - iVar2 = FUN_00402298(0x14); - if (iVar2 == 0) { - iVar2 = 0; - } - else { - iVar2 = FUN_0046f468(iVar2,param_2); - } - *(int *)(param_1[1] + iVar1 * 4) = iVar2; - } - return param_1; -} - - - -/* @0046f1f0 file=? name=FUN_0046f1f0 */ - -void __cdecl FUN_0046f1f0(int *param_1,byte param_2) - -{ - int iVar1; - - if (param_1 != (int *)0x0) { - for (iVar1 = 0; iVar1 < *param_1; iVar1 = iVar1 + 1) { - FUN_0046f500(*(int **)(param_1[1] + iVar1 * 4),3); - } - FUN_004022e8((int *)param_1[1]); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @0046f234 file=? name=FUN_0046f234 */ - -int __cdecl FUN_0046f234(int *param_1,int param_2,char *param_3) - -{ - undefined4 *puVar1; - int iVar2; - int iVar3; - int local_c; - int *local_8; - - iVar2 = 1; - local_8 = FUN_00404720(param_2,param_3,(char *)0x0); - if (local_8 == (int *)0x0) { - FUN_004dbb24(&DAT_00524e20,s_Can_t_find_the___004f4f3e,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s___page_in_the__GIM_file__004f4f4f,(char *)0x0); - FUN_004d9c38(&DAT_00524e20); - iVar2 = 0; - } - else { - local_c = FUN_00403b60((int)local_8); - if (local_c < 1) { - FUN_004dbb24(&DAT_00524e20,s_The___004f4f68,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s___page_in_the__GIM_file_has_no_e_004f4f6e,(char *)0x0); - FUN_004d9c38(&DAT_00524e20); - iVar2 = 0; - } - else { - (**(code **)(*param_1 + 0x20))(param_1,&local_c,4); - iVar3 = 0; - puVar1 = (undefined4 *)local_8[1]; - if (0 < local_c) { - do { - iVar2 = FUN_0046f530(param_1,(char *)(puVar1 + 2),(char *)puVar1[1]); - if (iVar2 == 0) break; - puVar1 = (undefined4 *)*puVar1; - iVar3 = iVar3 + 1; - } while (iVar3 < local_c); - } - } - if (local_8 != (int *)0x0) { - (**(code **)*local_8)(local_8,3); - } - } - return iVar2; -} - - - -/* @0046f368 file=? name=FUN_0046f368 */ - -undefined4 FUN_0046f368(void) - -{ - return 1; -} - - - -/* @0046f374 file=? name=FUN_0046f374 */ - -void __cdecl -FUN_0046f374(int *param_1,int *param_2,int param_3,float *param_4,int param_5,int param_6, - int param_7,float param_8,int param_9) - -{ - byte *pbVar1; - int iVar2; - int local_18; - int local_14; - int local_10; - int local_c; - undefined4 *local_8; - - local_8 = (undefined4 *)param_1[1]; - if (param_9 == 0) { - for (iVar2 = 0; iVar2 < *param_1; iVar2 = iVar2 + 1) { - pbVar1 = (byte *)*local_8; - local_8 = local_8 + 1; - FUN_0046f774(pbVar1,param_2,param_3,param_4,param_5,param_6,param_7,param_8,(int *)0x0); - } - } - else { - FUN_00407bd0(&local_18,9999,9999,0xffffd8f1,0xffffd8f1); - for (iVar2 = 0; iVar2 < *param_1; iVar2 = iVar2 + 1) { - pbVar1 = (byte *)*local_8; - local_8 = local_8 + 1; - FUN_0046f774(pbVar1,param_2,param_3,param_4,param_5,param_6,param_7,param_8,&local_18); - } - (**(code **)(*param_2 + 0x18))(param_2,param_9); - (**(code **)(*param_2 + 0x24))(param_2,local_18 + -4,local_14 + -4); - (**(code **)(*param_2 + 0x40))(param_2,local_10 + 4,local_c + 4); - } - return; -} - - - -/* @0046f468 file=? name=FUN_0046f468 */ - -int __cdecl FUN_0046f468(int param_1,int *param_2) - -{ - undefined4 uVar1; - int iVar2; - int local_8; - - (**(code **)(*param_2 + 0x1c))(param_2,&local_8,4); - *(int *)(param_1 + 8) = local_8; - if (local_8 == 0) { - (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 4,4); - (**(code **)(*param_2 + 0x1c))(param_2,param_1,4); - (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0xc,4); - uVar1 = FUN_004022b0(*(int *)(param_1 + 0xc) << 2); - *(undefined4 *)(param_1 + 0x10) = uVar1; - for (iVar2 = 0; iVar2 < *(int *)(param_1 + 0xc); iVar2 = iVar2 + 1) { - (**(code **)(*param_2 + 0x1c))(param_2,iVar2 * 4 + *(int *)(param_1 + 0x10),4); - } - } - return param_1; -} - - - -/* @0046f500 file=? name=FUN_0046f500 */ - -void __cdecl FUN_0046f500(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - if (param_1[2] == 0) { - FUN_004022e8((int *)param_1[4]); - } - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @0046f530 file=? name=FUN_0046f530 */ - -/* WARNING: Type propagation algorithm not settling */ - -undefined4 __cdecl FUN_0046f530(int *param_1,char *param_2,char *param_3) - -{ - char cVar1; - int iVar2; - char *pcVar3; - char local_158 [64]; - int local_118 [64]; - undefined4 local_18; - int local_14 [4]; - - local_14[2] = 0; - local_14[1] = 0; - local_14[0] = 0; - local_18 = 1; - iVar2 = FUN_004d4b58(param_2,s_linelist_004f4f96); - if (iVar2 == 0) { - local_14[3] = 0; - (**(code **)(*param_1 + 0x20))(param_1,local_14 + 3,4); - while (*param_3 != '\0') { - while (((&DAT_005207dd)[*param_3] & 1) != 0) { - param_3 = param_3 + 1; - } - if (*param_3 == 'v') { - iVar2 = 0; - while( true ) { - param_3 = param_3 + 1; - if (((&DAT_005207dd)[*param_3] & 2) == 0) break; - iVar2 = (int)*param_3 + iVar2 * 10 + -0x30; - } - if (local_14[0] < 0x40) { - local_118[local_14[0]] = iVar2; - local_14[0] = local_14[0] + 1; - } - } - else if (*param_3 == 'a') { - iVar2 = 0; - pcVar3 = local_158; - do { - cVar1 = *param_3; - if ((((&DAT_005207dd)[cVar1] & 1) != 0) || (cVar1 == '\0')) break; - *pcVar3 = cVar1; - iVar2 = iVar2 + 1; - param_3 = param_3 + 1; - pcVar3 = pcVar3 + 1; - } while (iVar2 < 0x3f); - *pcVar3 = '\0'; - iVar2 = FUN_0046eb18(local_158,local_14 + 1,local_14 + 2); - if (iVar2 == 0) { - FUN_004dbb24(&DAT_00524e20,s_Couldn_t_find_attribute_group___004f4f9f,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,local_158,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,&DAT_004f4fbf,(char *)0x0); - FUN_004d9c38(&DAT_00524e20); - } - } - } - (**(code **)(*param_1 + 0x20))(param_1,local_14 + 1,4); - (**(code **)(*param_1 + 0x20))(param_1,local_14 + 2,4); - if (local_14[0] == 0) { - FUN_004dbb24(&DAT_00524e20,s_No_vertex_indices_in_primitive__004f4fc2,(char *)0x0); - FUN_004d9c38(&DAT_00524e20); - local_18 = 0; - } - else { - (**(code **)(*param_1 + 0x20))(param_1,local_14,4); - iVar2 = 0; - if (0 < local_14[0]) { - do { - (**(code **)(*param_1 + 0x20))(param_1,local_118 + iVar2,4); - iVar2 = iVar2 + 1; - } while (iVar2 < local_14[0]); - } - } - } - else { - FUN_004dbb24(&DAT_00524e20,s_Unsupported_primitive___004f4fe2,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s___in__GIM_file__004f4ffa,(char *)0x0); - FUN_004d9c38(&DAT_00524e20); - local_18 = 0; - } - return local_18; -} - - - -/* @0046f768 file=? name=FUN_0046f768 */ - -undefined4 FUN_0046f768(void) - -{ - return 1; -} - - - -/* @0046f774 file=? name=FUN_0046f774 */ - -int __cdecl -FUN_0046f774(byte *param_1,int *param_2,int param_3,float *param_4,int param_5,int param_6, - int param_7,float param_8,int *param_9) - -{ - int iVar1; - int iVar2; - undefined4 uVar3; - undefined4 uVar4; - int *piVar5; - - iVar2 = *(int *)(param_1 + 8) + -1; - if ((*(int *)(param_1 + 8) == 0) && (1 < *(int *)(param_1 + 0xc))) { - if (*(int *)(param_1 + 4) != 0) { - param_3 = *(int *)(param_1 + 4); - } - (**(code **)(*param_2 + 0x18))(param_2,param_3); - piVar5 = *(int **)(param_1 + 0x10); - iVar2 = *piVar5; - FUN_0046f888(param_1,param_4,(float *)(iVar2 * 0xc + param_5),(float *)(iVar2 * 0xc + param_6), - (int *)(iVar2 * 4 + param_7),param_8,param_9); - uVar3 = FUN_004dcd94(); - uVar4 = FUN_004dcd94(); - (**(code **)(*param_2 + 0x24))(param_2,uVar4,uVar3); - iVar2 = *(int *)(param_1 + 0xc); - while (iVar2 = iVar2 + -1, 0 < iVar2) { - piVar5 = piVar5 + 1; - iVar1 = *piVar5; - FUN_0046f888(param_1,param_4,(float *)(iVar1 * 0xc + param_5),(float *)(iVar1 * 0xc + param_6) - ,(int *)(iVar1 * 4 + param_7),param_8,param_9); - uVar3 = FUN_004dcd94(); - uVar4 = FUN_004dcd94(); - (**(code **)(*param_2 + 0x30))(param_2,uVar4,uVar3); - } - } - return iVar2; -} - - - -/* @0046f888 file=? name=FUN_0046f888 */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -void __cdecl -FUN_0046f888(byte *param_1,float *param_2,float *param_3,float *param_4,int *param_5,float param_6, - int *param_7) - -{ - int iVar1; - float local_14 [3]; - float local_8; - - if (*param_5 == 0) { - if ((*param_1 & 1) == 0) { - FUN_00408b98(param_4,param_3,param_2); - } - else { - FUN_00408440(local_14,param_3); - local_8 = param_6; - FUN_004086ac(local_14,local_14,param_6); - FUN_00408b98(param_4,local_14,param_2); - } - *param_4 = *param_4 + _DAT_0046f970; - param_4[2] = -param_4[2] + _DAT_0046f970; - *param_5 = 1; - } - if (param_7 != (int *)0x0) { - if (*param_4 < (float)*param_7) { - iVar1 = FUN_004dcd94(); - *param_7 = iVar1; - } - if ((float)param_7[2] < *param_4) { - iVar1 = FUN_004dcd94(); - param_7[2] = iVar1; - } - if (param_4[2] < (float)param_7[1]) { - iVar1 = FUN_004dcd94(); - param_7[1] = iVar1; - } - if ((float)param_7[3] < param_4[2]) { - iVar1 = FUN_004dcd94(); - param_7[3] = iVar1; - } - } - return; -} - - - -/* @0046f97c file=? name=FUN_0046f97c */ - -undefined4 * __cdecl FUN_0046f97c(undefined4 *param_1) - -{ - bool bVar1; - bool bVar2; - bool bVar3; - bool bVar4; - bool bVar5; - bool bVar6; - bool bVar7; - bool bVar8; - char *pcVar9; - char *pcVar10; - int iVar11; - undefined4 *puVar12; - undefined3 extraout_var; - undefined3 extraout_var_00; - undefined3 extraout_var_01; - undefined3 extraout_var_02; - undefined3 extraout_var_03; - undefined3 extraout_var_04; - undefined3 extraout_var_05; - undefined3 extraout_var_06; - int *piVar13; - int local_44 [8]; - int local_24; - int local_20; - int local_1c; - int local_18; - int local_14; - int local_10; - int local_c; - uint local_8; - - FUN_00447890(param_1); - *param_1 = &PTR_FUN_004f56a4; - param_1[0x714b] = 0; - param_1[0x714c] = 0; - param_1[0x714a] = 1; - param_1[0x714d] = 0; - pcVar9 = (char *)FUN_004dee74(s_L4GAUGE_004f5631); - if (pcVar9 != (char *)0x0) { - pcVar10 = (char *)FUN_004dee74(s_L4PLASMA_004f5639); - if (pcVar10 != (char *)0x0) { - iVar11 = FUN_004d4bec(pcVar10,&DAT_004f5642,4); - if (iVar11 == 0) { - puVar12 = (undefined4 *)FUN_00402298(100); - if (puVar12 == (undefined4 *)0x0) { - puVar12 = (undefined4 *)0x0; - } - else { - puVar12 = FUN_004750b4(puVar12,0x2f8,0xb); - } - param_1[0x714c] = puVar12; - } - else { - puVar12 = (undefined4 *)FUN_00402298(100); - if (puVar12 == (undefined4 *)0x0) { - puVar12 = (undefined4 *)0x0; - } - else { - puVar12 = FUN_004750b4(puVar12,0x3f8,0xc); - } - param_1[0x714c] = puVar12; - } - } - FUN_00403e84(local_44,s_GAUGE_L4GAUGE_INI_004f5647,1); - iVar11 = FUN_00403f84((int)local_44,pcVar9); - if (iVar11 != 0) { - local_8 = 0; - local_c = 0x280; - local_10 = 0x1e0; - local_14 = 0x40; - local_18 = 0x40; - local_1c = 0x500; - local_20 = 0; - local_24 = 0; - bVar1 = FUN_004040d8((int)local_44,pcVar9,&DAT_004f5659,(int *)&local_8); - bVar2 = FUN_004040d8((int)local_44,pcVar9,s_width_004f565e,&local_c); - bVar3 = FUN_004040d8((int)local_44,pcVar9,s_height_004f5664,&local_10); - bVar4 = FUN_004040d8((int)local_44,pcVar9,s_sizeInKB_004f566b,&local_14); - bVar5 = FUN_004040d8((int)local_44,pcVar9,s_granularityInKB_004f5674,&local_18); - bVar6 = FUN_004040d8((int)local_44,pcVar9,s_bytesPerLine_004f5684,&local_1c); - bVar7 = FUN_004040d8((int)local_44,pcVar9,s_pageFcnPtr_004f5691,&local_20); - bVar8 = FUN_004040d8((int)local_44,pcVar9,s_special_004f569c,&local_24); - if (CONCAT31(extraout_var,bVar1) + CONCAT31(extraout_var_00,bVar2) + - CONCAT31(extraout_var_01,bVar3) + CONCAT31(extraout_var_02,bVar4) + - CONCAT31(extraout_var_03,bVar5) + CONCAT31(extraout_var_04,bVar6) + - CONCAT31(extraout_var_05,bVar7) + CONCAT31(extraout_var_06,bVar8) == 8) { - piVar13 = (int *)FUN_00402298(0xcf0); - if (piVar13 == (int *)0x0) { - piVar13 = (int *)0x0; - } - else { - piVar13 = FUN_0046ced4(piVar13,local_8,local_c,local_10,local_14,local_18,local_1c, - local_20,local_24); - } - param_1[0x714b] = piVar13; - } - } - FUN_00403ecc(local_44,2); - } - return param_1; -} - - - -/* @0046fbcc file=? name=FUN_0046fbcc */ - -void __cdecl FUN_0046fbcc(int *param_1,byte param_2) - -{ - undefined4 *puVar1; - int *piVar2; - int iVar3; - - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_004f56a4; - FUN_00447fc0((int)param_1,0); - iVar3 = 0; - piVar2 = param_1 + 0x15; - do { - puVar1 = (undefined4 *)*piVar2; - if ((puVar1 != (undefined4 *)0x0) && (puVar1 != (undefined4 *)0x0)) { - (**(code **)*puVar1)(puVar1,3); - } - iVar3 = iVar3 + 1; - piVar2 = piVar2 + 1; - } while (iVar3 < 0x10); - puVar1 = (undefined4 *)param_1[0x714b]; - if ((puVar1 != (undefined4 *)0x0) && (puVar1 != (undefined4 *)0x0)) { - (**(code **)*puVar1)(puVar1,3); - } - puVar1 = (undefined4 *)param_1[0x714c]; - if ((puVar1 != (undefined4 *)0x0) && (puVar1 != (undefined4 *)0x0)) { - (**(code **)*puVar1)(puVar1,3); - } - FUN_00447a14(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @0046fc5c file=? name=FUN_0046fc5c */ - -void __cdecl FUN_0046fc5c(int param_1) - -{ - undefined4 *puVar1; - - puVar1 = *(undefined4 **)(param_1 + 0x1c52c); - if ((puVar1 != (undefined4 *)0x0) && (puVar1 != (undefined4 *)0x0)) { - (**(code **)*puVar1)(puVar1,3); - } - FUN_00447b58(); - return; -} - - - -/* @0046fc88 file=? name=FUN_0046fc88 */ - -void __cdecl FUN_0046fc88(int param_1) - -{ - FUN_00447b60(param_1); - return; -} - - - -/* @0046fc98 file=? name=FUN_0046fc98 */ - -void FUN_0046fc98(void) - -{ - FUN_00447e64(); - return; -} - - - diff --git a/reference/decomp/all/part_009.c b/reference/decomp/all/part_009.c index 08f5986..0480c69 100644 --- a/reference/decomp/all/part_009.c +++ b/reference/decomp/all/part_009.c @@ -1,3 +1,4163 @@ +/* @0046ab18 file=? name=FUN_0046ab18 */ + +int __cdecl FUN_0046ab18(int param_1) + +{ + uint uVar1; + int iVar2; + + iVar2 = 0; + for (uVar1 = *(uint *)(param_1 + 8); uVar1 != 0; uVar1 = uVar1 & uVar1 - 1) { + iVar2 = iVar2 + 1; + } + return iVar2; +} + + + +/* @0046ab38 file=? name=FUN_0046ab38 */ + +int __cdecl FUN_0046ab38(int param_1) + +{ + int iVar1; + + iVar1 = FUN_0046ab18(param_1); + return *(int *)(param_1 + 4) - iVar1; +} + + + +/* @0046ab50 file=? name=FUN_0046ab50 */ + +undefined4 * __cdecl FUN_0046ab50(undefined4 *param_1,int param_2,int param_3) + +{ + undefined4 uVar1; + undefined4 *puVar2; + int iVar3; + + FUN_0044a078(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004f4d70; + FUN_00449ed0(param_1 + 0xb,param_2,param_3); + param_1[8] = param_3; + param_1[6] = param_2; + param_1[7] = param_2 >> 5; + iVar3 = param_1[8] * (param_2 >> 5); + param_1[10] = param_1[8] + -1; + param_1[9] = param_1[6] + -1; + uVar1 = FUN_004022b0(param_1[8]); + param_1[0xe] = uVar1; + uVar1 = FUN_004022b0(iVar3 * 4); + param_1[0xf] = uVar1; + if ((param_1[0xe] == 0) || (param_1[0xf] == 0)) { + param_1[5] = 0; + } + else { + param_1[5] = 1; + FUN_004d4988((undefined4 *)param_1[0xe],0,param_1[8]); + puVar2 = (undefined4 *)param_1[0xf]; + for (; 0 < iVar3; iVar3 = iVar3 + -1) { + *puVar2 = 0; + puVar2 = puVar2 + 1; + } + } + return param_1; +} + + + +/* @0046ac08 file=? name=FUN_0046ac08 */ + +void __cdecl FUN_0046ac08(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f4d70; + if ((int *)param_1[0xe] != (int *)0x0) { + FUN_004022d0((int *)param_1[0xe]); + param_1[0xe] = 0; + } + if ((int *)param_1[0xf] != (int *)0x0) { + FUN_004022d0((int *)param_1[0xf]); + param_1[0xf] = 0; + } + FUN_00449f30(param_1 + 0xb,2); + FUN_0044a0ac(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0046ac68 file=? name=FUN_0046ac68 */ + +undefined4 FUN_0046ac68(void) + +{ + return 1; +} + + + +/* @0046ac74 file=? name=FUN_0046ac74 */ + +void __cdecl FUN_0046ac74(int param_1,char *param_2) + +{ + char cVar1; + int *piVar2; + uint uVar3; + uint uVar4; + char *pcVar5; + char *pcVar6; + undefined8 uVar7; + char local_54 [80]; + + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_Video16BitBuffered__004f4b3c,(char *)0x0); + uVar3 = 0xffffffff; + do { + pcVar5 = param_2; + if (uVar3 == 0) break; + uVar3 = uVar3 - 1; + pcVar5 = param_2 + 1; + cVar1 = *param_2; + param_2 = pcVar5; + } while (cVar1 != '\0'); + uVar3 = ~uVar3; + pcVar5 = pcVar5 + -uVar3; + pcVar6 = local_54; + for (uVar4 = uVar3 >> 2; uVar4 != 0; uVar4 = uVar4 - 1) { + *(undefined4 *)pcVar6 = *(undefined4 *)pcVar5; + pcVar5 = pcVar5 + 4; + pcVar6 = pcVar6 + 4; + } + for (uVar3 = uVar3 & 3; uVar3 != 0; uVar3 = uVar3 - 1) { + *pcVar6 = *pcVar5; + pcVar5 = pcVar5 + 1; + pcVar6 = pcVar6 + 1; + } + FUN_004d49b8(local_54,&DAT_004f4b51); + uVar3 = *(uint *)(param_1 + 0x18); + FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_width___004f4b55,(char *)0x0); + piVar2 = FUN_004db78c(&DAT_00524e20,uVar3); + FUN_004dbb24(piVar2,&DAT_004f4b62,(char *)0x0); + uVar3 = *(uint *)(param_1 + 0x20); + FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_height___004f4b64,(char *)0x0); + piVar2 = FUN_004db78c(&DAT_00524e20,uVar3); + FUN_004dbb24(piVar2,&DAT_004f4b71,(char *)0x0); + uVar3 = *(uint *)(param_1 + 0x24); + FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_maximumX___004f4b73,(char *)0x0); + piVar2 = FUN_004db78c(&DAT_00524e20,uVar3); + FUN_004dbb24(piVar2,&DAT_004f4b80,(char *)0x0); + uVar3 = *(uint *)(param_1 + 0x28); + FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_maximumY___004f4b82,(char *)0x0); + piVar2 = FUN_004db78c(&DAT_00524e20,uVar3); + FUN_004dbb24(piVar2,&DAT_004f4b8f,(char *)0x0); + pcVar5 = *(char **)(param_1 + 0x38); + FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_changedLine__004f4b91,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,pcVar5,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004f4b9e,(char *)0x0); + uVar3 = *(uint *)(param_1 + 0x3c); + FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_changedBit___004f4ba0,(char *)0x0); + uVar7 = FUN_004dbd4c(&DAT_00524e20,uVar3); + FUN_004dbb24((int *)uVar7,&DAT_004f4bad,(char *)0x0); + FUN_00449f74((uint *)(param_1 + 0x2c),local_54); + FUN_0044a0cc(param_1,local_54); + return; +} + + + +/* @0046aec4 file=? name=FUN_0046aec4 */ + +void __cdecl +FUN_0046aec4(int param_1,int param_2,int param_3,int *param_4,int *param_5,int *param_6) + +{ + *param_4 = param_2 * 2 + *(int *)(param_1 + 0x34) + param_3 * *(int *)(param_1 + 0x18) * 2; + *param_5 = (param_2 >> 5) * 4 + *(int *)(param_1 + 0x3c) + param_3 * *(int *)(param_1 + 0x1c) * 4; + *param_6 = 1 << (0x1f - ((byte)param_2 & 0x1f) & 0x1f); + return; +} + + + +/* @0046af20 file=? name=FUN_0046af20 */ + +void __cdecl FUN_0046af20(int param_1,int param_2,int param_3) + +{ + int iVar1; + + iVar1 = param_2; + if (param_3 < param_2) { + iVar1 = param_3; + param_3 = param_2; + } + FUN_004d4988((undefined4 *)(iVar1 + *(int *)(param_1 + 0x38)),1,(param_3 - iVar1) + 1); + return; +} + + + +/* @0046af50 file=? name=FUN_0046af50 */ + +void __cdecl +FUN_0046af50(int param_1,ushort param_2,ushort param_3,int param_4,int param_5,int param_6) + +{ + int iVar1; + uint local_10; + uint *local_c; + ushort *local_8; + + if (*(int *)(param_1 + 0x14) != 0) { + iVar1 = *(int *)(param_1 + 0x28) - param_6; + FUN_0046af20(param_1,iVar1,iVar1); + FUN_0046aec4(param_1,param_5,iVar1,(int *)&local_8,(int *)&local_c,(int *)&local_10); + if (param_4 == 0) { + *local_8 = *local_8 & ~param_3 | param_2; + } + else if (param_4 == 1) { + *local_8 = *local_8 & param_2; + } + else if (param_4 == 2) { + *local_8 = *local_8 | param_2; + } + else if (param_4 == 3) { + *local_8 = *local_8 ^ param_2; + } + *local_c = *local_c | local_10; + DAT_00522cbc = DAT_00522cbc + 1; + } + return; +} + + + +/* @0046aff8 file=? name=FUN_0046aff8 */ + +void __cdecl +FUN_0046aff8(int *param_1,undefined4 param_2,undefined4 param_3,int param_4,int param_5,int param_6, + int param_7,int param_8,int param_9) + +{ + int iVar1; + int iVar2; + int iVar3; + bool bVar4; + uint local_18; + uint *local_14; + ushort *local_10; + int local_c; + uint local_8; + + if (param_1[5] != 0) { + if ((param_7 == param_5) && (param_6 == param_8)) { + if (param_9 != 0) { + (**(code **)(*param_1 + 0x14))(param_1,param_2,param_3,param_4,param_5,param_6); + } + } + else { + iVar2 = param_1[10] - param_6; + iVar1 = param_1[10] - param_8; + FUN_0046af20((int)param_1,iVar2,iVar1); + param_3._0_2_ = ~(ushort)param_3; + iVar3 = param_7 - param_5; + bVar4 = iVar3 < 0; + if (bVar4) { + iVar3 = -iVar3; + } + local_8 = (uint)bVar4; + local_c = iVar1 - iVar2; + if (local_c < 0) { + local_8 = local_8 | 2; + local_c = -local_c; + } + if (local_c < iVar3) { + local_8 = local_8 | 4; + } + FUN_0046aec4((int)param_1,param_5,iVar2,(int *)&local_10,(int *)&local_14,(int *)&local_18); + iVar1 = 0x400; + switch(local_8) { + case 0: + iVar2 = local_c; + if (param_9 == 0) { + iVar2 = local_c + -1; + } + for (; 0 < iVar2; iVar2 = iVar2 + -1) { + if (param_4 == 0) { + *local_10 = *local_10 & (ushort)param_3 | (ushort)param_2; + } + else if (param_4 == 1) { + *local_10 = *local_10 & (ushort)param_2; + } + else if (param_4 == 2) { + *local_10 = *local_10 | (ushort)param_2; + } + else if (param_4 == 3) { + *local_10 = *local_10 ^ (ushort)param_2; + } + *local_14 = *local_14 | local_18; + DAT_00522cbc = DAT_00522cbc + 1; + local_10 = local_10 + param_1[6]; + local_14 = local_14 + param_1[7]; + iVar1 = iVar1 + (iVar3 << 0xb) / local_c; + if (0x800 < iVar1) { + local_10 = local_10 + 1; + local_18 = local_18 >> 1; + iVar1 = iVar1 + -0x800; + if (local_18 == 0) { + local_14 = local_14 + 1; + local_18 = 0x80000000; + } + } + } + break; + case 1: + iVar2 = local_c; + if (param_9 == 0) { + iVar2 = local_c + -1; + } + for (; 0 < iVar2; iVar2 = iVar2 + -1) { + if (param_4 == 0) { + *local_10 = *local_10 & (ushort)param_3 | (ushort)param_2; + } + else if (param_4 == 1) { + *local_10 = *local_10 & (ushort)param_2; + } + else if (param_4 == 2) { + *local_10 = *local_10 | (ushort)param_2; + } + else if (param_4 == 3) { + *local_10 = *local_10 ^ (ushort)param_2; + } + *local_14 = *local_14 | local_18; + DAT_00522cbc = DAT_00522cbc + 1; + local_10 = local_10 + param_1[6]; + local_14 = local_14 + param_1[7]; + iVar1 = iVar1 + (iVar3 << 0xb) / local_c; + if (0x800 < iVar1) { + local_10 = local_10 + -1; + local_18 = local_18 << 1; + iVar1 = iVar1 + -0x800; + if (local_18 == 0) { + local_14 = local_14 + -1; + local_18 = 1; + } + } + } + break; + case 2: + iVar2 = local_c; + if (param_9 == 0) { + iVar2 = local_c + -1; + } + for (; 0 < iVar2; iVar2 = iVar2 + -1) { + if (param_4 == 0) { + *local_10 = *local_10 & (ushort)param_3 | (ushort)param_2; + } + else if (param_4 == 1) { + *local_10 = *local_10 & (ushort)param_2; + } + else if (param_4 == 2) { + *local_10 = *local_10 | (ushort)param_2; + } + else if (param_4 == 3) { + *local_10 = *local_10 ^ (ushort)param_2; + } + *local_14 = *local_14 | local_18; + DAT_00522cbc = DAT_00522cbc + 1; + local_10 = local_10 + -param_1[6]; + local_14 = local_14 + -param_1[7]; + iVar1 = iVar1 + (iVar3 << 0xb) / local_c; + if (0x800 < iVar1) { + local_10 = local_10 + 1; + local_18 = local_18 >> 1; + iVar1 = iVar1 + -0x800; + if (local_18 == 0) { + local_14 = local_14 + 1; + local_18 = 0x80000000; + } + } + } + break; + case 3: + iVar2 = local_c; + if (param_9 == 0) { + iVar2 = local_c + -1; + } + for (; 0 < iVar2; iVar2 = iVar2 + -1) { + if (param_4 == 0) { + *local_10 = *local_10 & (ushort)param_3 | (ushort)param_2; + } + else if (param_4 == 1) { + *local_10 = *local_10 & (ushort)param_2; + } + else if (param_4 == 2) { + *local_10 = *local_10 | (ushort)param_2; + } + else if (param_4 == 3) { + *local_10 = *local_10 ^ (ushort)param_2; + } + *local_14 = *local_14 | local_18; + DAT_00522cbc = DAT_00522cbc + 1; + local_10 = local_10 + -param_1[6]; + local_14 = local_14 + -param_1[7]; + iVar1 = iVar1 + (iVar3 << 0xb) / local_c; + if (0x800 < iVar1) { + local_10 = local_10 + -1; + local_18 = local_18 << 1; + iVar1 = iVar1 + -0x800; + if (local_18 == 0) { + local_14 = local_14 + -1; + local_18 = 1; + } + } + } + break; + case 4: + iVar2 = iVar3; + if (param_9 == 0) { + iVar2 = iVar3 + -1; + } + for (; 0 < iVar2; iVar2 = iVar2 + -1) { + if (param_4 == 0) { + *local_10 = *local_10 & (ushort)param_3 | (ushort)param_2; + } + else if (param_4 == 1) { + *local_10 = *local_10 & (ushort)param_2; + } + else if (param_4 == 2) { + *local_10 = *local_10 | (ushort)param_2; + } + else if (param_4 == 3) { + *local_10 = *local_10 ^ (ushort)param_2; + } + *local_14 = *local_14 | local_18; + local_10 = local_10 + 1; + local_18 = local_18 >> 1; + DAT_00522cbc = DAT_00522cbc + 1; + if (local_18 == 0) { + local_14 = local_14 + 1; + local_18 = 0x80000000; + } + iVar1 = iVar1 + (local_c << 0xb) / iVar3; + if (0x800 < iVar1) { + iVar1 = iVar1 + -0x800; + local_10 = local_10 + param_1[6]; + local_14 = local_14 + param_1[7]; + } + } + break; + case 5: + iVar2 = iVar3; + if (param_9 == 0) { + iVar2 = iVar3 + -1; + } + for (; 0 < iVar2; iVar2 = iVar2 + -1) { + if (param_4 == 0) { + *local_10 = *local_10 & (ushort)param_3 | (ushort)param_2; + } + else if (param_4 == 1) { + *local_10 = *local_10 & (ushort)param_2; + } + else if (param_4 == 2) { + *local_10 = *local_10 | (ushort)param_2; + } + else if (param_4 == 3) { + *local_10 = *local_10 ^ (ushort)param_2; + } + *local_14 = *local_14 | local_18; + local_10 = local_10 + -1; + local_18 = local_18 << 1; + DAT_00522cbc = DAT_00522cbc + 1; + if (local_18 == 0) { + local_14 = local_14 + -1; + local_18 = 1; + } + iVar1 = iVar1 + (local_c << 0xb) / iVar3; + if (0x800 < iVar1) { + iVar1 = iVar1 + -0x800; + local_10 = local_10 + param_1[6]; + local_14 = local_14 + param_1[7]; + } + } + break; + case 6: + iVar2 = iVar3; + if (param_9 == 0) { + iVar2 = iVar3 + -1; + } + for (; 0 < iVar2; iVar2 = iVar2 + -1) { + if (param_4 == 0) { + *local_10 = *local_10 & (ushort)param_3 | (ushort)param_2; + } + else if (param_4 == 1) { + *local_10 = *local_10 & (ushort)param_2; + } + else if (param_4 == 2) { + *local_10 = *local_10 | (ushort)param_2; + } + else if (param_4 == 3) { + *local_10 = *local_10 ^ (ushort)param_2; + } + *local_14 = *local_14 | local_18; + local_10 = local_10 + 1; + local_18 = local_18 >> 1; + DAT_00522cbc = DAT_00522cbc + 1; + if (local_18 == 0) { + local_14 = local_14 + 1; + local_18 = 0x80000000; + } + iVar1 = iVar1 + (local_c << 0xb) / iVar3; + if (0x800 < iVar1) { + iVar1 = iVar1 + -0x800; + local_10 = local_10 + -param_1[6]; + local_14 = local_14 + -param_1[7]; + } + } + break; + case 7: + iVar2 = iVar3; + if (param_9 == 0) { + iVar2 = iVar3 + -1; + } + for (; 0 < iVar2; iVar2 = iVar2 + -1) { + if (param_4 == 0) { + *local_10 = *local_10 & (ushort)param_3 | (ushort)param_2; + } + else if (param_4 == 1) { + *local_10 = *local_10 & (ushort)param_2; + } + else if (param_4 == 2) { + *local_10 = *local_10 | (ushort)param_2; + } + else if (param_4 == 3) { + *local_10 = *local_10 ^ (ushort)param_2; + } + *local_14 = *local_14 | local_18; + local_10 = local_10 + -1; + local_18 = local_18 << 1; + DAT_00522cbc = DAT_00522cbc + 1; + if (local_18 == 0) { + local_14 = local_14 + -1; + local_18 = 1; + } + iVar1 = iVar1 + (local_c << 0xb) / iVar3; + if (0x800 < iVar1) { + iVar1 = iVar1 + -0x800; + local_10 = local_10 + -param_1[6]; + local_14 = local_14 + -param_1[7]; + } + } + } + } + } + return; +} + + + +/* @0046b6d4 file=? name=FUN_0046b6d4 */ + +void __cdecl +FUN_0046b6d4(int param_1,ushort param_2,ushort param_3,int param_4,int param_5,int param_6, + int param_7,int param_8) + +{ + uint *puVar1; + int iVar2; + uint uVar3; + int iVar4; + int iVar5; + int iVar6; + uint local_10; + uint *local_c; + ushort *local_8; + + iVar6 = param_5; + if (*(int *)(param_1 + 0x14) != 0) { + iVar2 = *(int *)(param_1 + 0x28) - param_8; + iVar4 = *(int *)(param_1 + 0x28) - param_6; + if (param_7 < param_5) { + param_5 = param_7; + param_7 = iVar6; + } + iVar6 = iVar4; + if (iVar2 < iVar4) { + iVar6 = iVar2; + iVar2 = iVar4; + } + FUN_0046af20(param_1,iVar6,iVar2); + param_3 = ~param_3; + FUN_0046aec4(param_1,param_5,iVar6,(int *)&local_8,(int *)&local_c,(int *)&local_10); + iVar6 = (iVar2 - iVar6) + 1; + iVar2 = (param_7 - param_5) + 1; + iVar4 = *(int *)(param_1 + 0x18) - iVar2; + if (param_4 == 0) { + for (; 0 < iVar6; iVar6 = iVar6 + -1) { + puVar1 = local_c + *(int *)(param_1 + 0x1c); + uVar3 = local_10; + for (iVar5 = iVar2; 0 < iVar5; iVar5 = iVar5 + -1) { + *local_8 = *local_8 & param_3 | param_2; + local_8 = local_8 + 1; + *local_c = *local_c | uVar3; + DAT_00522cbc = DAT_00522cbc + 1; + uVar3 = uVar3 >> 1; + if (uVar3 == 0) { + local_c = local_c + 1; + uVar3 = 0x80000000; + } + } + local_8 = local_8 + iVar4; + local_c = puVar1; + } + } + else if (param_4 == 1) { + for (; 0 < iVar6; iVar6 = iVar6 + -1) { + puVar1 = local_c + *(int *)(param_1 + 0x1c); + uVar3 = local_10; + for (iVar5 = iVar2; 0 < iVar5; iVar5 = iVar5 + -1) { + *local_8 = *local_8 & param_2; + local_8 = local_8 + 1; + *local_c = *local_c | uVar3; + DAT_00522cbc = DAT_00522cbc + 1; + uVar3 = uVar3 >> 1; + if (uVar3 == 0) { + local_c = local_c + 1; + uVar3 = 0x80000000; + } + } + local_8 = local_8 + iVar4; + local_c = puVar1; + } + } + else if (param_4 == 2) { + for (; 0 < iVar6; iVar6 = iVar6 + -1) { + puVar1 = local_c + *(int *)(param_1 + 0x1c); + uVar3 = local_10; + for (iVar5 = iVar2; 0 < iVar5; iVar5 = iVar5 + -1) { + *local_8 = *local_8 | param_2; + local_8 = local_8 + 1; + *local_c = *local_c | uVar3; + DAT_00522cbc = DAT_00522cbc + 1; + uVar3 = uVar3 >> 1; + if (uVar3 == 0) { + local_c = local_c + 1; + uVar3 = 0x80000000; + } + } + local_8 = local_8 + iVar4; + local_c = puVar1; + } + } + else if (param_4 == 3) { + for (; 0 < iVar6; iVar6 = iVar6 + -1) { + puVar1 = local_c + *(int *)(param_1 + 0x1c); + uVar3 = local_10; + for (iVar5 = iVar2; 0 < iVar5; iVar5 = iVar5 + -1) { + *local_8 = *local_8 ^ param_2; + local_8 = local_8 + 1; + *local_c = *local_c | uVar3; + DAT_00522cbc = DAT_00522cbc + 1; + uVar3 = uVar3 >> 1; + if (uVar3 == 0) { + local_c = local_c + 1; + uVar3 = 0x80000000; + } + } + local_8 = local_8 + iVar4; + local_c = puVar1; + } + } + } + return; +} + + + +/* @0046b91c file=? name=FUN_0046b91c */ + +undefined4 __cdecl FUN_0046b91c(int param_1) + +{ + return *(undefined4 *)(param_1 + 0x14); +} + + + +/* @0046b92c file=? name=FUN_0046b92c */ + +void __cdecl +FUN_0046b92c(int param_1,ushort param_2,ushort param_3,int param_4,int param_5,int param_6, + int param_7,int param_8,int param_9,int param_10,int param_11,int param_12) + +{ + ushort *puVar1; + uint *puVar2; + uint uVar3; + uint uVar4; + int iVar5; + int iVar6; + int iVar7; + uint *local_28; + uint *local_24; + uint local_20; + ushort *local_1c; + ushort *local_18; + ushort *local_14; + uint local_10; + uint local_c; + int local_8; + + if (*(int *)(param_1 + 0x14) != 0) { + iVar5 = *(int *)(param_1 + 0x28) - param_7; + iVar6 = *(int *)(param_8 + 0x10) + -1; + iVar7 = iVar6 - param_10; + local_8 = (param_11 - param_9) + 1; + param_3 = ~param_3; + iVar6 = (iVar7 - (iVar6 - param_12)) + 1; + local_14 = (ushort *) + (*(int *)(param_8 + 0x18) + (param_9 >> 4) * 2 + *(int *)(param_8 + 0x14) * iVar7 * 2 + ); + local_10 = 1 << (0xf - ((byte)param_9 & 0xf) & 0x1f); + FUN_0046aec4(param_1,param_6,iVar5,(int *)&local_1c,(int *)&local_24,(int *)&local_20); + if (param_5 == 0x5a) { + FUN_0046af20(param_1,iVar5,iVar5 + local_8); + puVar2 = local_24; + uVar4 = local_20; + for (; 0 < iVar6; iVar6 = iVar6 + -1) { + iVar5 = *(int *)(param_8 + 0x14); + local_20 = uVar4 >> 1; + local_24 = puVar2; + if (local_20 == 0) { + local_24 = puVar2 + 1; + local_20 = 0x80000000; + } + puVar1 = local_1c + 1; + local_c = (uint)*local_14; + local_18 = local_14 + 1; + uVar3 = local_10; + for (iVar7 = local_8; 0 < iVar7; iVar7 = iVar7 + -1) { + if (uVar3 == 0) { + uVar3 = 0x8000; + local_c = (uint)*local_18; + local_18 = local_18 + 1; + } + if ((local_c & uVar3) != 0) { + if (param_4 == 0) { + *local_1c = *local_1c & param_3 | param_2; + } + else if (param_4 == 1) { + *local_1c = *local_1c & param_2; + } + else if (param_4 == 2) { + *local_1c = *local_1c | param_2; + } + else if (param_4 == 3) { + *local_1c = *local_1c ^ param_2; + } + *puVar2 = *puVar2 | uVar4; + DAT_00522cbc = DAT_00522cbc + 1; + } + uVar3 = (int)uVar3 >> 1; + puVar2 = puVar2 + *(int *)(param_1 + 0x1c); + local_1c = local_1c + *(int *)(param_1 + 0x18); + } + puVar2 = local_24; + uVar4 = local_20; + local_1c = puVar1; + local_14 = local_14 + -iVar5; + } + } + else if (param_5 == 0xb4) { + FUN_0046af20(param_1,iVar5,iVar5 + iVar6); + local_28 = local_24; + for (; 0 < iVar6; iVar6 = iVar6 + -1) { + iVar5 = *(int *)(param_8 + 0x14); + puVar2 = local_28 + *(int *)(param_1 + 0x1c); + puVar1 = local_1c + *(int *)(param_1 + 0x18); + local_c = (uint)*local_14; + local_18 = local_14 + 1; + uVar4 = local_20; + uVar3 = local_10; + for (iVar7 = local_8; 0 < iVar7; iVar7 = iVar7 + -1) { + if (uVar3 == 0) { + uVar3 = 0x8000; + local_c = (uint)*local_18; + local_18 = local_18 + 1; + } + if ((local_c & uVar3) != 0) { + if (param_4 == 0) { + *local_1c = *local_1c & param_3 | param_2; + } + else if (param_4 == 1) { + *local_1c = *local_1c & param_2; + } + else if (param_4 == 2) { + *local_1c = *local_1c | param_2; + } + else if (param_4 == 3) { + *local_1c = *local_1c ^ param_2; + } + *local_28 = *local_28 | uVar4; + DAT_00522cbc = DAT_00522cbc + 1; + } + uVar4 = uVar4 * 2; + if (uVar4 == 0) { + local_28 = local_28 + -1; + uVar4 = 1; + } + local_1c = local_1c + -1; + uVar3 = (int)uVar3 >> 1; + } + local_28 = puVar2; + local_1c = puVar1; + local_14 = local_14 + -iVar5; + } + } + else if (param_5 == 0x10e) { + if (-1 < param_6 - iVar6) { + FUN_0046af20(param_1,iVar5 - (local_8 + -1),iVar5); + puVar2 = local_24; + uVar4 = local_20; + for (; 0 < iVar6; iVar6 = iVar6 + -1) { + iVar5 = *(int *)(param_8 + 0x14); + local_20 = uVar4 << 1; + local_24 = puVar2; + if (local_20 == 0) { + local_24 = puVar2 + -1; + local_20 = 1; + } + puVar1 = local_1c + -1; + local_c = (uint)*local_14; + local_18 = local_14 + 1; + uVar3 = local_10; + for (iVar7 = local_8; 0 < iVar7; iVar7 = iVar7 + -1) { + if (uVar3 == 0) { + uVar3 = 0x8000; + local_c = (uint)*local_18; + local_18 = local_18 + 1; + } + if ((local_c & uVar3) != 0) { + if (param_4 == 0) { + *local_1c = *local_1c & param_3 | param_2; + } + else if (param_4 == 1) { + *local_1c = *local_1c & param_2; + } + else if (param_4 == 2) { + *local_1c = *local_1c | param_2; + } + else if (param_4 == 3) { + *local_1c = *local_1c ^ param_2; + } + *puVar2 = *puVar2 | uVar4; + DAT_00522cbc = DAT_00522cbc + 1; + } + uVar3 = (int)uVar3 >> 1; + puVar2 = puVar2 + -*(int *)(param_1 + 0x1c); + local_1c = local_1c + -*(int *)(param_1 + 0x18); + } + puVar2 = local_24; + uVar4 = local_20; + local_1c = puVar1; + local_14 = local_14 + -iVar5; + } + } + } + else { + FUN_0046af20(param_1,(iVar5 - iVar6) + 1,iVar5); + local_28 = local_24; + for (; 0 < iVar6; iVar6 = iVar6 + -1) { + iVar5 = *(int *)(param_8 + 0x14); + puVar2 = local_28 + -*(int *)(param_1 + 0x1c); + puVar1 = local_1c + -*(int *)(param_1 + 0x18); + local_c = (uint)*local_14; + local_18 = local_14 + 1; + uVar4 = local_20; + uVar3 = local_10; + for (iVar7 = local_8; 0 < iVar7; iVar7 = iVar7 + -1) { + if (uVar3 == 0) { + uVar3 = 0x8000; + local_c = (uint)*local_18; + local_18 = local_18 + 1; + } + if ((local_c & uVar3) != 0) { + if (param_4 == 0) { + *local_1c = *local_1c & param_3 | param_2; + } + else if (param_4 == 1) { + *local_1c = *local_1c & param_2; + } + else if (param_4 == 2) { + *local_1c = *local_1c | param_2; + } + else if (param_4 == 3) { + *local_1c = *local_1c ^ param_2; + } + *local_28 = *local_28 | uVar4; + DAT_00522cbc = DAT_00522cbc + 1; + } + uVar4 = uVar4 >> 1; + if (uVar4 == 0) { + local_28 = local_28 + 1; + uVar4 = 0x80000000; + } + local_1c = local_1c + 1; + uVar3 = (int)uVar3 >> 1; + } + local_28 = puVar2; + local_1c = puVar1; + local_14 = local_14 + -iVar5; + } + } + } + return; +} + + + +/* @0046bdfc file=? name=FUN_0046bdfc */ + +void __cdecl +FUN_0046bdfc(int param_1,ushort param_2,ushort param_3,ushort param_4,int param_5,int param_6, + int param_7,int param_8,int param_9,int param_10,int param_11,int param_12,int param_13) + +{ + ushort *puVar1; + uint *puVar2; + uint uVar3; + ushort uVar4; + uint uVar5; + int iVar6; + int iVar7; + int iVar8; + uint *local_2c; + uint *local_28; + uint local_24 [2]; + ushort *local_1c; + ushort *local_18; + ushort *local_14; + uint local_10; + uint local_c; + int local_8; + + if (*(int *)(param_1 + 0x14) != 0) { + iVar6 = *(int *)(param_1 + 0x28) - param_8; + iVar7 = *(int *)(param_9 + 0x10) + -1; + iVar8 = iVar7 - param_11; + local_8 = (param_12 - param_10) + 1; + param_4 = ~param_4; + iVar7 = (iVar8 - (iVar7 - param_13)) + 1; + local_14 = (ushort *) + (*(int *)(param_9 + 0x18) + (param_10 >> 4) * 2 + + *(int *)(param_9 + 0x14) * iVar8 * 2); + local_10 = 1 << (0xf - ((byte)param_10 & 0xf) & 0x1f); + FUN_0046aec4(param_1,param_7,iVar6,(int *)&local_1c,(int *)&local_28,(int *)local_24); + if (param_6 == 0x5a) { + FUN_0046af20(param_1,iVar6,iVar6 + local_8); + puVar2 = local_28; + uVar5 = local_24[0]; + for (; 0 < iVar7; iVar7 = iVar7 + -1) { + iVar6 = *(int *)(param_9 + 0x14); + local_24[0] = uVar5 >> 1; + local_28 = puVar2; + if (local_24[0] == 0) { + local_28 = puVar2 + 1; + local_24[0] = 0x80000000; + } + puVar1 = local_1c + 1; + local_c = (uint)*local_14; + local_18 = local_14 + 1; + uVar3 = local_10; + for (iVar8 = local_8; 0 < iVar8; iVar8 = iVar8 + -1) { + if (uVar3 == 0) { + uVar3 = 0x8000; + local_c = (uint)*local_18; + local_18 = local_18 + 1; + } + uVar4 = param_3; + if ((local_c & uVar3) != 0) { + uVar4 = param_2; + } + if (param_5 == 0) { + *local_1c = uVar4 | *local_1c & param_4; + } + else if (param_5 == 1) { + *local_1c = *local_1c & uVar4; + } + else if (param_5 == 2) { + *local_1c = *local_1c | uVar4; + } + else if (param_5 == 3) { + *local_1c = *local_1c ^ uVar4; + } + uVar3 = (int)uVar3 >> 1; + *puVar2 = *puVar2 | uVar5; + DAT_00522cbc = DAT_00522cbc + 1; + puVar2 = puVar2 + *(int *)(param_1 + 0x1c); + local_1c = local_1c + *(int *)(param_1 + 0x18); + } + puVar2 = local_28; + uVar5 = local_24[0]; + local_1c = puVar1; + local_14 = local_14 + -iVar6; + } + } + else if (param_6 == 0xb4) { + FUN_0046af20(param_1,iVar6,iVar6 + iVar7); + local_2c = local_28; + for (; 0 < iVar7; iVar7 = iVar7 + -1) { + iVar6 = *(int *)(param_9 + 0x14); + puVar2 = local_2c + *(int *)(param_1 + 0x1c); + puVar1 = local_1c + *(int *)(param_1 + 0x18); + local_c = (uint)*local_14; + local_18 = local_14 + 1; + uVar5 = local_24[0]; + uVar3 = local_10; + for (iVar8 = local_8; 0 < iVar8; iVar8 = iVar8 + -1) { + if (uVar3 == 0) { + uVar3 = 0x8000; + local_c = (uint)*local_18; + local_18 = local_18 + 1; + } + uVar4 = param_3; + if ((local_c & uVar3) != 0) { + uVar4 = param_2; + } + if (param_5 == 0) { + *local_1c = uVar4 | *local_1c & param_4; + } + else if (param_5 == 1) { + *local_1c = *local_1c & uVar4; + } + else if (param_5 == 2) { + *local_1c = *local_1c | uVar4; + } + else if (param_5 == 3) { + *local_1c = *local_1c ^ uVar4; + } + *local_2c = *local_2c | uVar5; + DAT_00522cbc = DAT_00522cbc + 1; + uVar5 = uVar5 * 2; + if (uVar5 == 0) { + local_2c = local_2c + -1; + uVar5 = 1; + } + local_1c = local_1c + -1; + uVar3 = (int)uVar3 >> 1; + } + local_2c = puVar2; + local_1c = puVar1; + local_14 = local_14 + -iVar6; + } + } + else if (param_6 == 0x10e) { + FUN_0046af20(param_1,iVar6 - (local_8 + -1),iVar6); + puVar2 = local_28; + uVar5 = local_24[0]; + for (; 0 < iVar7; iVar7 = iVar7 + -1) { + iVar6 = *(int *)(param_9 + 0x14); + local_24[0] = uVar5 << 1; + local_28 = puVar2; + if (local_24[0] == 0) { + local_28 = puVar2 + -1; + local_24[0] = 1; + } + puVar1 = local_1c + -1; + local_c = (uint)*local_14; + local_18 = local_14 + 1; + uVar3 = local_10; + for (iVar8 = local_8; 0 < iVar8; iVar8 = iVar8 + -1) { + if (uVar3 == 0) { + uVar3 = 0x8000; + local_c = (uint)*local_18; + local_18 = local_18 + 1; + } + uVar4 = param_3; + if ((local_c & uVar3) != 0) { + uVar4 = param_2; + } + if (param_5 == 0) { + *local_1c = uVar4 | *local_1c & param_4; + } + else if (param_5 == 1) { + *local_1c = *local_1c & uVar4; + } + else if (param_5 == 2) { + *local_1c = *local_1c | uVar4; + } + else if (param_5 == 3) { + *local_1c = *local_1c ^ uVar4; + } + uVar3 = (int)uVar3 >> 1; + *puVar2 = *puVar2 | uVar5; + DAT_00522cbc = DAT_00522cbc + 1; + puVar2 = puVar2 + -*(int *)(param_1 + 0x1c); + local_1c = local_1c + -*(int *)(param_1 + 0x18); + } + puVar2 = local_28; + uVar5 = local_24[0]; + local_1c = puVar1; + local_14 = local_14 + -iVar6; + } + } + else { + FUN_0046af20(param_1,(iVar6 - iVar7) + 1,iVar6); + local_2c = local_28; + for (; 0 < iVar7; iVar7 = iVar7 + -1) { + iVar6 = *(int *)(param_9 + 0x14); + puVar2 = local_2c + -*(int *)(param_1 + 0x1c); + puVar1 = local_1c + -*(int *)(param_1 + 0x18); + local_c = (uint)*local_14; + local_18 = local_14 + 1; + uVar5 = local_24[0]; + uVar3 = local_10; + for (iVar8 = local_8; 0 < iVar8; iVar8 = iVar8 + -1) { + if (uVar3 == 0) { + uVar3 = 0x8000; + local_c = (uint)*local_18; + local_18 = local_18 + 1; + } + uVar4 = param_3; + if ((local_c & uVar3) != 0) { + uVar4 = param_2; + } + if (param_5 == 0) { + *local_1c = uVar4 | *local_1c & param_4; + } + else if (param_5 == 1) { + *local_1c = *local_1c & uVar4; + } + else if (param_5 == 2) { + *local_1c = *local_1c | uVar4; + } + else if (param_5 == 3) { + *local_1c = *local_1c ^ uVar4; + } + *local_2c = *local_2c | uVar5; + DAT_00522cbc = DAT_00522cbc + 1; + uVar5 = uVar5 >> 1; + if (uVar5 == 0) { + local_2c = local_2c + 1; + uVar5 = 0x80000000; + } + local_1c = local_1c + 1; + uVar3 = (int)uVar3 >> 1; + } + local_2c = puVar2; + local_1c = puVar1; + local_14 = local_14 + -iVar6; + } + } + } + return; +} + + + +/* @0046c324 file=? name=FUN_0046c324 */ + +void __cdecl +FUN_0046c324(int param_1,int param_2,ushort param_3,int param_4,int param_5,int param_6,int param_7, + int param_8,int *param_9,int param_10,int param_11,int param_12,int param_13) + +{ + byte *pbVar1; + ushort *puVar2; + byte bVar3; + ushort uVar4; + uint *puVar5; + uint uVar6; + int iVar7; + int iVar8; + int iVar9; + uint *local_20; + uint *local_1c; + uint local_18; + ushort *local_14 [2]; + byte *local_c; + int local_8; + + if (*(int *)(param_1 + 0x14) != 0) { + iVar7 = *(int *)(param_1 + 0x28) - param_8; + iVar8 = (param_9[1] + -1) - param_11; + local_8 = (param_12 - param_10) + 1; + param_3 = ~param_3; + iVar9 = (iVar8 - ((param_9[1] + -1) - param_13)) + 1; + local_c = (byte *)(param_10 + param_9[2] + *param_9 * iVar8); + FUN_0046aec4(param_1,param_7,iVar7,(int *)local_14,(int *)&local_1c,(int *)&local_18); + if (param_5 == 0) { + if (param_6 == 0x5a) { + FUN_0046af20(param_1,iVar7,iVar7 + local_8); + puVar5 = local_1c; + uVar6 = local_18; + for (; 0 < iVar9; iVar9 = iVar9 + -1) { + pbVar1 = local_c + -*param_9; + local_18 = uVar6 >> 1; + local_1c = puVar5; + if (local_18 == 0) { + local_1c = puVar5 + 1; + local_18 = 0x80000000; + } + puVar2 = local_14[0] + 1; + for (iVar7 = local_8; 0 < iVar7; iVar7 = iVar7 + -1) { + bVar3 = *local_c; + local_c = local_c + 1; + if (bVar3 != 0) { + uVar4 = *(ushort *)(param_2 + (uint)bVar3 * 4); + if (param_4 == 0) { + *local_14[0] = uVar4 | *local_14[0] & param_3; + } + else if (param_4 == 1) { + *local_14[0] = *local_14[0] & uVar4; + } + else if (param_4 == 2) { + *local_14[0] = *local_14[0] | uVar4; + } + else if (param_4 == 3) { + *local_14[0] = *local_14[0] ^ uVar4; + } + *puVar5 = *puVar5 | uVar6; + DAT_00522cbc = DAT_00522cbc + 1; + } + puVar5 = puVar5 + *(int *)(param_1 + 0x1c); + local_14[0] = local_14[0] + *(int *)(param_1 + 0x18); + } + puVar5 = local_1c; + uVar6 = local_18; + local_14[0] = puVar2; + local_c = pbVar1; + } + } + else if (param_6 == 0xb4) { + FUN_0046af20(param_1,iVar7,iVar7 + iVar9); + local_20 = local_1c; + for (; 0 < iVar9; iVar9 = iVar9 + -1) { + pbVar1 = local_c + -*param_9; + puVar5 = local_20 + *(int *)(param_1 + 0x1c); + puVar2 = local_14[0] + *(int *)(param_1 + 0x18); + uVar6 = local_18; + for (iVar7 = local_8; 0 < iVar7; iVar7 = iVar7 + -1) { + bVar3 = *local_c; + local_c = local_c + 1; + if (bVar3 != 0) { + uVar4 = *(ushort *)(param_2 + (uint)bVar3 * 4); + if (param_4 == 0) { + *local_14[0] = uVar4 | *local_14[0] & param_3; + } + else if (param_4 == 1) { + *local_14[0] = *local_14[0] & uVar4; + } + else if (param_4 == 2) { + *local_14[0] = *local_14[0] | uVar4; + } + else if (param_4 == 3) { + *local_14[0] = *local_14[0] ^ uVar4; + } + *local_20 = *local_20 | uVar6; + DAT_00522cbc = DAT_00522cbc + 1; + } + uVar6 = uVar6 * 2; + if (uVar6 == 0) { + local_20 = local_20 + -1; + uVar6 = 1; + } + local_14[0] = local_14[0] + -1; + } + local_20 = puVar5; + local_14[0] = puVar2; + local_c = pbVar1; + } + } + else if (param_6 == 0x10e) { + FUN_0046af20(param_1,iVar7 - (local_8 + -1),iVar7); + puVar5 = local_1c; + uVar6 = local_18; + for (; 0 < iVar9; iVar9 = iVar9 + -1) { + pbVar1 = local_c + -*param_9; + local_18 = uVar6 << 1; + local_1c = puVar5; + if (local_18 == 0) { + local_1c = puVar5 + -1; + local_18 = 1; + } + puVar2 = local_14[0] + -1; + for (iVar7 = local_8; 0 < iVar7; iVar7 = iVar7 + -1) { + bVar3 = *local_c; + local_c = local_c + 1; + if (bVar3 != 0) { + uVar4 = *(ushort *)(param_2 + (uint)bVar3 * 4); + if (param_4 == 0) { + *local_14[0] = uVar4 | *local_14[0] & param_3; + } + else if (param_4 == 1) { + *local_14[0] = *local_14[0] & uVar4; + } + else if (param_4 == 2) { + *local_14[0] = *local_14[0] | uVar4; + } + else if (param_4 == 3) { + *local_14[0] = *local_14[0] ^ uVar4; + } + *puVar5 = *puVar5 | uVar6; + DAT_00522cbc = DAT_00522cbc + 1; + } + puVar5 = puVar5 + -*(int *)(param_1 + 0x1c); + local_14[0] = local_14[0] + -*(int *)(param_1 + 0x18); + } + puVar5 = local_1c; + uVar6 = local_18; + local_14[0] = puVar2; + local_c = pbVar1; + } + } + else { + FUN_0046af20(param_1,(iVar7 - iVar9) + 1,iVar7); + local_20 = local_1c; + for (; 0 < iVar9; iVar9 = iVar9 + -1) { + pbVar1 = local_c + -*param_9; + puVar5 = local_20 + -*(int *)(param_1 + 0x1c); + puVar2 = local_14[0] + -*(int *)(param_1 + 0x18); + uVar6 = local_18; + for (iVar7 = local_8; 0 < iVar7; iVar7 = iVar7 + -1) { + bVar3 = *local_c; + local_c = local_c + 1; + if (bVar3 != 0) { + uVar4 = *(ushort *)(param_2 + (uint)bVar3 * 4); + if (param_4 == 0) { + *local_14[0] = uVar4 | *local_14[0] & param_3; + } + else if (param_4 == 1) { + *local_14[0] = *local_14[0] & uVar4; + } + else if (param_4 == 2) { + *local_14[0] = *local_14[0] | uVar4; + } + else if (param_4 == 3) { + *local_14[0] = *local_14[0] ^ uVar4; + } + *local_20 = *local_20 | uVar6; + DAT_00522cbc = DAT_00522cbc + 1; + } + uVar6 = uVar6 >> 1; + if (uVar6 == 0) { + local_20 = local_20 + 1; + uVar6 = 0x80000000; + } + local_14[0] = local_14[0] + 1; + } + local_20 = puVar5; + local_14[0] = puVar2; + local_c = pbVar1; + } + } + } + else if (param_6 == 0x5a) { + FUN_0046af20(param_1,iVar7,iVar7 + local_8); + puVar5 = local_1c; + uVar6 = local_18; + for (; 0 < iVar9; iVar9 = iVar9 + -1) { + pbVar1 = local_c + -*param_9; + local_18 = uVar6 >> 1; + local_1c = puVar5; + if (local_18 == 0) { + local_1c = puVar5 + 1; + local_18 = 0x80000000; + } + puVar2 = local_14[0] + 1; + for (iVar7 = local_8; 0 < iVar7; iVar7 = iVar7 + -1) { + bVar3 = *local_c; + local_c = local_c + 1; + uVar4 = *(ushort *)(param_2 + (uint)bVar3 * 4); + if (param_4 == 0) { + *local_14[0] = uVar4 | *local_14[0] & param_3; + } + else if (param_4 == 1) { + *local_14[0] = *local_14[0] & uVar4; + } + else if (param_4 == 2) { + *local_14[0] = *local_14[0] | uVar4; + } + else if (param_4 == 3) { + *local_14[0] = *local_14[0] ^ uVar4; + } + *puVar5 = *puVar5 | uVar6; + DAT_00522cbc = DAT_00522cbc + 1; + puVar5 = puVar5 + *(int *)(param_1 + 0x1c); + local_14[0] = local_14[0] + *(int *)(param_1 + 0x18); + } + puVar5 = local_1c; + uVar6 = local_18; + local_14[0] = puVar2; + local_c = pbVar1; + } + } + else if (param_6 == 0xb4) { + FUN_0046af20(param_1,iVar7,iVar7 + iVar9); + local_20 = local_1c; + for (; 0 < iVar9; iVar9 = iVar9 + -1) { + pbVar1 = local_c + -*param_9; + puVar5 = local_20 + *(int *)(param_1 + 0x1c); + puVar2 = local_14[0] + *(int *)(param_1 + 0x18); + uVar6 = local_18; + for (iVar7 = local_8; 0 < iVar7; iVar7 = iVar7 + -1) { + bVar3 = *local_c; + local_c = local_c + 1; + uVar4 = *(ushort *)(param_2 + (uint)bVar3 * 4); + if (param_4 == 0) { + *local_14[0] = uVar4 | *local_14[0] & param_3; + } + else if (param_4 == 1) { + *local_14[0] = *local_14[0] & uVar4; + } + else if (param_4 == 2) { + *local_14[0] = *local_14[0] | uVar4; + } + else if (param_4 == 3) { + *local_14[0] = *local_14[0] ^ uVar4; + } + *local_20 = *local_20 | uVar6; + DAT_00522cbc = DAT_00522cbc + 1; + uVar6 = uVar6 * 2; + if (uVar6 == 0) { + local_20 = local_20 + -1; + uVar6 = 1; + } + local_14[0] = local_14[0] + -1; + } + local_20 = puVar5; + local_14[0] = puVar2; + local_c = pbVar1; + } + } + else if (param_6 == 0x10e) { + FUN_0046af20(param_1,iVar7 - (local_8 + -1),iVar7); + puVar5 = local_1c; + uVar6 = local_18; + for (; 0 < iVar9; iVar9 = iVar9 + -1) { + pbVar1 = local_c + -*param_9; + local_18 = uVar6 << 1; + local_1c = puVar5; + if (local_18 == 0) { + local_1c = puVar5 + -1; + local_18 = 1; + } + puVar2 = local_14[0] + -1; + for (iVar7 = local_8; 0 < iVar7; iVar7 = iVar7 + -1) { + bVar3 = *local_c; + local_c = local_c + 1; + uVar4 = *(ushort *)(param_2 + (uint)bVar3 * 4); + if (param_4 == 0) { + *local_14[0] = uVar4 | *local_14[0] & param_3; + } + else if (param_4 == 1) { + *local_14[0] = *local_14[0] & uVar4; + } + else if (param_4 == 2) { + *local_14[0] = *local_14[0] | uVar4; + } + else if (param_4 == 3) { + *local_14[0] = *local_14[0] ^ uVar4; + } + *puVar5 = *puVar5 | uVar6; + DAT_00522cbc = DAT_00522cbc + 1; + puVar5 = puVar5 + -*(int *)(param_1 + 0x1c); + local_14[0] = local_14[0] + -*(int *)(param_1 + 0x18); + } + puVar5 = local_1c; + uVar6 = local_18; + local_14[0] = puVar2; + local_c = pbVar1; + } + } + else { + FUN_0046af20(param_1,(iVar7 - iVar9) + 1,iVar7); + local_20 = local_1c; + for (; 0 < iVar9; iVar9 = iVar9 + -1) { + pbVar1 = local_c + -*param_9; + puVar5 = local_20 + -*(int *)(param_1 + 0x1c); + puVar2 = local_14[0] + -*(int *)(param_1 + 0x18); + uVar6 = local_18; + for (iVar7 = local_8; 0 < iVar7; iVar7 = iVar7 + -1) { + bVar3 = *local_c; + local_c = local_c + 1; + uVar4 = *(ushort *)(param_2 + (uint)bVar3 * 4); + if (param_4 == 0) { + *local_14[0] = uVar4 | *local_14[0] & param_3; + } + else if (param_4 == 1) { + *local_14[0] = *local_14[0] & uVar4; + } + else if (param_4 == 2) { + *local_14[0] = *local_14[0] | uVar4; + } + else if (param_4 == 3) { + *local_14[0] = *local_14[0] ^ uVar4; + } + *local_20 = *local_20 | uVar6; + DAT_00522cbc = DAT_00522cbc + 1; + uVar6 = uVar6 >> 1; + if (uVar6 == 0) { + local_20 = local_20 + 1; + uVar6 = 0x80000000; + } + local_14[0] = local_14[0] + 1; + } + local_20 = puVar5; + local_14[0] = puVar2; + local_c = pbVar1; + } + } + } + return; +} + + + +/* @0046cac4 file=? name=FUN_0046cac4 */ + +void __cdecl +FUN_0046cac4(int param_1,ushort param_2,ushort param_3,int param_4,int param_5,int param_6, + int param_7,int *param_8,int param_9,int param_10,int param_11,int param_12) + +{ + char *pcVar1; + ushort *puVar2; + char cVar3; + uint *puVar4; + uint uVar5; + int iVar6; + int iVar7; + int iVar8; + uint *local_20; + uint *local_1c; + uint local_18; + ushort *local_14; + char *local_10; + int local_8; + + if (*(int *)(param_1 + 0x14) != 0) { + iVar6 = *(int *)(param_1 + 0x28) - param_7; + iVar7 = (param_8[1] + -1) - param_10; + local_8 = (param_11 - param_9) + 1; + param_3 = ~param_3; + iVar8 = (iVar7 - ((param_8[1] + -1) - param_12)) + 1; + local_10 = (char *)(param_9 + param_8[2] + *param_8 * iVar7); + FUN_0046aec4(param_1,param_6,iVar6,(int *)&local_14,(int *)&local_1c,(int *)&local_18); + if (param_5 == 0x5a) { + FUN_0046af20(param_1,iVar6,iVar6 + local_8); + puVar4 = local_1c; + uVar5 = local_18; + for (; 0 < iVar8; iVar8 = iVar8 + -1) { + pcVar1 = local_10 + -*param_8; + local_18 = uVar5 >> 1; + local_1c = puVar4; + if (local_18 == 0) { + local_1c = puVar4 + 1; + local_18 = 0x80000000; + } + puVar2 = local_14 + 1; + for (iVar6 = local_8; 0 < iVar6; iVar6 = iVar6 + -1) { + cVar3 = *local_10; + local_10 = local_10 + 1; + if (cVar3 != '\0') { + if (param_4 == 0) { + *local_14 = *local_14 & param_3 | param_2; + } + else if (param_4 == 1) { + *local_14 = *local_14 & param_2; + } + else if (param_4 == 2) { + *local_14 = *local_14 | param_2; + } + else if (param_4 == 3) { + *local_14 = *local_14 ^ param_2; + } + *puVar4 = *puVar4 | uVar5; + DAT_00522cbc = DAT_00522cbc + 1; + } + puVar4 = puVar4 + *(int *)(param_1 + 0x1c); + local_14 = local_14 + *(int *)(param_1 + 0x18); + } + puVar4 = local_1c; + uVar5 = local_18; + local_14 = puVar2; + local_10 = pcVar1; + } + } + else if (param_5 == 0xb4) { + FUN_0046af20(param_1,iVar6,iVar6 + iVar8); + local_20 = local_1c; + for (; 0 < iVar8; iVar8 = iVar8 + -1) { + pcVar1 = local_10 + -*param_8; + puVar4 = local_20 + *(int *)(param_1 + 0x1c); + puVar2 = local_14 + *(int *)(param_1 + 0x18); + uVar5 = local_18; + for (iVar6 = local_8; 0 < iVar6; iVar6 = iVar6 + -1) { + cVar3 = *local_10; + local_10 = local_10 + 1; + if (cVar3 != '\0') { + if (param_4 == 0) { + *local_14 = *local_14 & param_3 | param_2; + } + else if (param_4 == 1) { + *local_14 = *local_14 & param_2; + } + else if (param_4 == 2) { + *local_14 = *local_14 | param_2; + } + else if (param_4 == 3) { + *local_14 = *local_14 ^ param_2; + } + *local_20 = *local_20 | uVar5; + DAT_00522cbc = DAT_00522cbc + 1; + } + uVar5 = uVar5 * 2; + if (uVar5 == 0) { + local_20 = local_20 + -1; + uVar5 = 1; + } + local_14 = local_14 + -1; + } + local_20 = puVar4; + local_14 = puVar2; + local_10 = pcVar1; + } + } + else if (param_5 == 0x10e) { + FUN_0046af20(param_1,iVar6 - local_8,iVar6); + puVar4 = local_1c; + uVar5 = local_18; + for (; 0 < iVar8; iVar8 = iVar8 + -1) { + pcVar1 = local_10 + -*param_8; + local_18 = uVar5 << 1; + local_1c = puVar4; + if (local_18 == 0) { + local_1c = puVar4 + -1; + local_18 = 1; + } + puVar2 = local_14 + -1; + for (iVar6 = local_8; 0 < iVar6; iVar6 = iVar6 + -1) { + cVar3 = *local_10; + local_10 = local_10 + 1; + if (cVar3 != '\0') { + if (param_4 == 0) { + *local_14 = *local_14 & param_3 | param_2; + } + else if (param_4 == 1) { + *local_14 = *local_14 & param_2; + } + else if (param_4 == 2) { + *local_14 = *local_14 | param_2; + } + else if (param_4 == 3) { + *local_14 = *local_14 ^ param_2; + } + *puVar4 = *puVar4 | uVar5; + DAT_00522cbc = DAT_00522cbc + 1; + } + puVar4 = puVar4 + -*(int *)(param_1 + 0x1c); + local_14 = local_14 + -*(int *)(param_1 + 0x18); + } + puVar4 = local_1c; + uVar5 = local_18; + local_14 = puVar2; + local_10 = pcVar1; + } + } + else { + FUN_0046af20(param_1,(iVar6 - iVar8) + 1,iVar6); + local_20 = local_1c; + for (; 0 < iVar8; iVar8 = iVar8 + -1) { + pcVar1 = local_10 + -*param_8; + puVar4 = local_20 + -*(int *)(param_1 + 0x1c); + puVar2 = local_14 + -*(int *)(param_1 + 0x18); + uVar5 = local_18; + for (iVar6 = local_8; 0 < iVar6; iVar6 = iVar6 + -1) { + cVar3 = *local_10; + local_10 = local_10 + 1; + if (cVar3 != '\0') { + if (param_4 == 0) { + *local_14 = *local_14 & param_3 | param_2; + } + else if (param_4 == 1) { + *local_14 = *local_14 & param_2; + } + else if (param_4 == 2) { + *local_14 = *local_14 | param_2; + } + else if (param_4 == 3) { + *local_14 = *local_14 ^ param_2; + } + *local_20 = *local_20 | uVar5; + DAT_00522cbc = DAT_00522cbc + 1; + } + uVar5 = uVar5 >> 1; + if (uVar5 == 0) { + local_20 = local_20 + 1; + uVar5 = 0x80000000; + } + local_14 = local_14 + 1; + } + local_20 = puVar4; + local_14 = puVar2; + local_10 = pcVar1; + } + } + } + return; +} + + + +/* @0046ced4 file=? name=FUN_0046ced4 */ + +int * __cdecl +FUN_0046ced4(int *param_1,uint param_2,int param_3,int param_4,int param_5,int param_6,int param_7, + int param_8,int param_9) + +{ + int *piVar1; + undefined4 extraout_ECX; + undefined4 extraout_EDX; + int iVar2; + int *piVar3; + short *psVar4; + int local_8; + + FUN_0046ab50(param_1,param_3,param_4); + *param_1 = (int)&PTR_FUN_004f4d3c; + piVar3 = param_1 + 0x20; + FUN_004de998(piVar3,0x31c,4,1,FUN_0046e6ec); + param_1[0x10] = param_5 << 10; + param_1[0x11] = param_5 / param_6; + param_1[0x12] = param_7; + param_1[0x13] = param_8; + param_1[0x14] = param_9; + param_1[0x15] = -1; + FUN_0047d70c(param_2,param_1[0x13]); + FUN_0047d7da(extraout_ECX,extraout_EDX,1); + FUN_0046d4a0((int)param_1,0.0); + psVar4 = &DAT_004f4b34; + local_8 = 0; + do { + *(short *)piVar3 = *psVar4; + piVar3[1] = 0; + piVar3[0xc3] = 0; + piVar3[0xc4] = 0; + piVar3[0xc6] = -1; + piVar1 = piVar3 + 0xc5; + iVar2 = 0; + do { + *(undefined1 *)piVar1 = 0xff; + iVar2 = iVar2 + 1; + piVar1 = (int *)((int)piVar1 + 1); + } while (iVar2 < 4); + if (*psVar4 != 0x3c6) { + FUN_0047d8cb(0,iVar2,*psVar4); + } + psVar4 = psVar4 + 1; + local_8 = local_8 + 1; + piVar3 = piVar3 + 199; + } while (local_8 < 4); + param_1[0x15] = -1; + FUN_0046d404((int)param_1); + DAT_00522cbc = 0; + DAT_00522cc0 = 0; + DAT_00522cc4 = 0; + (**(code **)(*param_1 + 0x1c))(param_1,0,0xffff,0,0,0,param_1[9],param_1[10]); + (**(code **)(*param_1 + 8))(param_1,0); + return param_1; +} + + + +/* @0046d050 file=? name=FUN_0046d050 */ + +void __cdecl FUN_0046d050(int *param_1,byte param_2) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + int *piVar4; + undefined4 extraout_ECX; + undefined4 extraout_EDX; + double local_c; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f4d3c; + FUN_0047d70c(3,0); + uVar3 = DAT_00522cc4; + uVar2 = DAT_00522cc0; + uVar1 = DAT_00522cbc; + if (DAT_00522cc0 == 0) { + local_c = 0.0; + } + else { + local_c = (double)(int)DAT_00522cbc / (double)(int)DAT_00522cc0; + } + FUN_004dbb24(&DAT_00524e20,s_SVGA16___SVGA16__pixel_managemen_004f4baf,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_Number_of_dirty_pixels___004f4be9,(char *)0x0); + piVar4 = FUN_004db78c(&DAT_00524e20,uVar1); + FUN_004dbb24(piVar4,s_Number_of_transferred_pixels__004f4c08,(char *)0x0); + piVar4 = FUN_004db78c(piVar4,uVar2); + FUN_004dbb24(piVar4,s_Times_overflowed___004f4c27,(char *)0x0); + piVar4 = FUN_004db78c(piVar4,uVar3); + FUN_004dbb24(piVar4,s_Ratio___004f4c46,(char *)0x0); + piVar4 = FUN_004db634(piVar4,(float10)local_c); + FUN_004dbb24(piVar4,s__________________________________004f4c4f,(char *)0x0); + FUN_0047d7da(extraout_ECX,extraout_EDX,0); + FUN_004de8d4(param_1 + 0x20,0x31c,4,1,FUN_0046e702); + FUN_0046ac08(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0046d1a8 file=? name=FUN_0046d1a8 */ + +void FUN_0046d1a8(void) + +{ + FUN_0046ac68(); + return; +} + + + +/* @0046d1b8 file=? name=FUN_0046d1b8 */ + +void __cdecl FUN_0046d1b8(int param_1,char *param_2) + +{ + char cVar1; + uint uVar2; + uint uVar3; + char *pcVar4; + char *pcVar5; + char local_54 [80]; + + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_SVGA16__004f4c89,(char *)0x0); + uVar2 = 0xffffffff; + do { + pcVar4 = param_2; + if (uVar2 == 0) break; + uVar2 = uVar2 - 1; + pcVar4 = param_2 + 1; + cVar1 = *param_2; + param_2 = pcVar4; + } while (cVar1 != '\0'); + uVar2 = ~uVar2; + pcVar4 = pcVar4 + -uVar2; + pcVar5 = local_54; + for (uVar3 = uVar2 >> 2; uVar3 != 0; uVar3 = uVar3 - 1) { + *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4; + pcVar4 = pcVar4 + 4; + pcVar5 = pcVar5 + 4; + } + for (uVar2 = uVar2 & 3; uVar2 != 0; uVar2 = uVar2 - 1) { + *pcVar5 = *pcVar4; + pcVar4 = pcVar4 + 1; + pcVar5 = pcVar5 + 1; + } + FUN_004d49b8(local_54,&DAT_004f4c92); + FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_SVGA16__004f4c96,(char *)0x0); + FUN_0046ac74(param_1,local_54); + return; +} + + + +/* @0046d260 file=? name=FUN_0046d260 */ + +undefined4 __cdecl FUN_0046d260(int param_1,int param_2) + +{ + char cVar1; + int iVar2; + undefined1 *puVar3; + int iVar4; + undefined4 *puVar5; + undefined4 uVar6; + char *this; + int iVar7; + undefined8 uVar8; + int local_14; + int local_10; + char *local_c; + + if (*(int *)(param_1 + 0x14) == 0) { + uVar6 = 0; + } + else { + if (param_2 != 0) { + FUN_004d4988(*(undefined4 **)(param_1 + 0x38),1,*(uint *)(param_1 + 0x20)); + } + iVar2 = *(int *)(param_1 + 0x5c); + if (*(int *)(param_1 + 0x50) == 0) { + local_c = (char *)0x40; + local_10 = *(int *)(param_1 + 0x18) * 2; + } + else { + local_c = (char *)0x20; + local_10 = *(int *)(param_1 + 0x18); + } + local_14 = 0xf; + do { + this = *(char **)(param_1 + 100); + puVar3 = *(undefined1 **)(param_1 + 100); + cVar1 = *this; + *(int *)(param_1 + 100) = *(int *)(param_1 + 100) + 1; + *puVar3 = 0; + if (cVar1 == '\0') { + *(int *)(param_1 + 0x6c) = *(int *)(param_1 + 0x6c) + *(int *)(param_1 + 0x1c) * 4; + *(int *)(param_1 + 0x68) = *(int *)(param_1 + 0x68) + *(int *)(param_1 + 0x18) * 2; + *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) + local_10; + if (*(int *)(param_1 + 0x40) <= *(int *)(param_1 + 0x60)) { + *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) - *(int *)(param_1 + 0x40); + *(int *)(param_1 + 0x58) = *(int *)(param_1 + 0x58) + *(int *)(param_1 + 0x44); + } + } + else { + local_14 = local_14 + -1; + for (iVar7 = 0; iVar7 < *(int *)(param_1 + 0x1c); iVar7 = iVar7 + 1) { + iVar4 = **(int **)(param_1 + 0x6c); + puVar5 = *(undefined4 **)(param_1 + 0x6c); + *(int *)(param_1 + 0x6c) = *(int *)(param_1 + 0x6c) + 4; + *puVar5 = 0; + if (iVar4 != 0) { + if (*(uint *)(param_1 + 0x58) != *(uint *)(param_1 + 0x54)) { + FUN_0047d7f6(this,*(uint *)(param_1 + 0x58)); + this = *(char **)(param_1 + 0x58); + *(char **)(param_1 + 0x54) = this; + } + if (*(int *)(param_1 + 0x50) == 0) { + uVar8 = FUN_0047d848(this,*(undefined4 *)(param_1 + 0x60), + (undefined2 *)*(undefined4 *)(param_1 + 0x60), + *(undefined2 **)(param_1 + 0x68),iVar4); + DAT_00522cc0 = DAT_00522cc0 + (int)uVar8; + } + else { + uVar8 = FUN_0047d88b(*(undefined4 *)(param_1 + 0x60),*(undefined4 *)(param_1 + 0x68), + (undefined1 *)*(undefined4 *)(param_1 + 0x60), + (undefined2 *)*(undefined4 *)(param_1 + 0x68),iVar4); + DAT_00522cc0 = DAT_00522cc0 + (int)uVar8; + } + } + *(int *)(param_1 + 0x68) = *(int *)(param_1 + 0x68) + 0x40; + *(int *)(param_1 + 0x60) = (int)(local_c + *(int *)(param_1 + 0x60)); + this = local_c; + if (*(int *)(param_1 + 0x40) <= *(int *)(param_1 + 0x60)) { + *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) - *(int *)(param_1 + 0x40); + this = *(char **)(param_1 + 0x44); + *(int *)(param_1 + 0x58) = (int)(this + *(int *)(param_1 + 0x58)); + } + } + } + if ((0x10000000 < DAT_00522cc0) || (0x10000000 < DAT_00522cbc)) { + DAT_00522cc0 = DAT_00522cc0 >> 1; + DAT_00522cbc = DAT_00522cbc >> 1; + DAT_00522cc4 = DAT_00522cc4 + 1; + } + *(int *)(param_1 + 0x5c) = *(int *)(param_1 + 0x5c) + 1; + if (*(int *)(param_1 + 0x20) <= *(int *)(param_1 + 0x5c)) { + FUN_0046d404(param_1); + } + if (*(int *)(param_1 + 0x5c) == iVar2) { + return 0; + } + } while (0 < local_14); + uVar6 = 1; + } + return uVar6; +} + + + +/* @0046d404 file=? name=FUN_0046d404 */ + +void __cdecl FUN_0046d404(int param_1) + +{ + *(undefined4 *)(param_1 + 0x5c) = 0; + *(undefined4 *)(param_1 + 0x68) = *(undefined4 *)(param_1 + 0x34); + *(undefined4 *)(param_1 + 100) = *(undefined4 *)(param_1 + 0x38); + *(undefined4 *)(param_1 + 0x6c) = *(undefined4 *)(param_1 + 0x3c); + *(undefined4 *)(param_1 + 0x58) = 0; + *(undefined4 *)(param_1 + 0x60) = 0; + return; +} + + + +/* @0046d430 file=? name=FUN_0046d430 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_0046d430(int param_1,float param_2) + +{ + undefined4 *puVar1; + float10 fVar2; + + puVar1 = (undefined4 *)FUN_00414b60(); + *(undefined4 *)(param_1 + 0x7c) = *puVar1; + *(undefined4 *)(param_1 + 0x70) = 3; + fVar2 = FUN_004dcd00((double)param_2); + if ((float10)_DAT_0046d498 < fVar2) { + *(float *)(param_1 + 0x78) = _DAT_0046d49c / param_2; + } + else { + *(undefined4 *)(param_1 + 0x78) = 0; + *(undefined4 *)(param_1 + 0x74) = 0x3f800000; + } + return; +} + + + +/* @0046d4a0 file=? name=FUN_0046d4a0 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_0046d4a0(int param_1,float param_2) + +{ + undefined4 *puVar1; + float10 fVar2; + + puVar1 = (undefined4 *)FUN_00414b60(); + *(undefined4 *)(param_1 + 0x7c) = *puVar1; + *(undefined4 *)(param_1 + 0x70) = 1; + fVar2 = FUN_004dcd00((double)param_2); + if ((float10)_DAT_0046d504 < fVar2) { + *(float *)(param_1 + 0x78) = _DAT_0046d508 / param_2; + } + else { + *(undefined4 *)(param_1 + 0x78) = 0; + *(undefined4 *)(param_1 + 0x74) = 0; + } + return; +} + + + +/* @0046d50c file=? name=FUN_0046d50c */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_0046d50c(short *param_1) + +{ + undefined4 uVar1; + undefined2 extraout_var; + byte *pbVar2; + int iVar3; + int local_308; + byte local_304 [768]; + + FUN_004498a8(&local_308); + iVar3 = 0; + pbVar2 = local_304; + do { + uVar1 = FUN_004dcd94(); + *pbVar2 = (byte)uVar1; + uVar1 = FUN_004dcd94(); + pbVar2[1] = (byte)uVar1; + uVar1 = FUN_004dcd94(); + pbVar2[2] = (byte)uVar1; + iVar3 = iVar3 + 1; + pbVar2 = pbVar2 + 3; + } while (iVar3 < 0x100); + FUN_0047d8f2(CONCAT22(extraout_var,*param_1),param_1,local_304,*param_1); + FUN_00449994(&local_308,2); + return; +} + + + +/* @0046d694 file=? name=FUN_0046d694 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +uint __cdecl FUN_0046d694(int param_1) + +{ + int *piVar1; + float fVar2; + undefined1 uVar3; + uint uVar4; + int iVar5; + float fVar6; + int *piVar7; + uint uVar8; + undefined2 extraout_var; + undefined2 extraout_var_00; + undefined4 extraout_ECX; + undefined2 *puVar9; + short *psVar10; + int iVar11; + undefined8 uVar12; + + piVar7 = (int *)FUN_00414b60(); + piVar1 = (int *)(param_1 + 0x7c); + fVar6 = (float)(*piVar7 - *piVar1) / DAT_0052140c; + *piVar1 = *piVar7; + uVar8 = CONCAT22((short)((uint)piVar1 >> 0x10), + (ushort)(fVar6 < _DAT_0046d834) << 8 | + (ushort)(NAN(fVar6) || NAN(_DAT_0046d834)) << 10 | + (ushort)(fVar6 == _DAT_0046d834) << 0xe); + if (fVar6 >= _DAT_0046d834 && (fVar6 == _DAT_0046d834) == 0) { + puVar9 = (undefined2 *)(param_1 + 0x80); + iVar11 = 0; + do { + fVar2 = *(float *)(puVar9 + 0x188); + uVar8 = CONCAT22((short)(uVar8 >> 0x10), + (ushort)(fVar2 < _DAT_0046d834) << 8 | + (ushort)(NAN(fVar2) || NAN(_DAT_0046d834)) << 10 | + (ushort)(fVar2 == _DAT_0046d834) << 0xe); + if ((fVar2 == _DAT_0046d834) == 0) { + *(float *)(puVar9 + 0x186) = *(float *)(puVar9 + 0x188) * fVar6 + *(float *)(puVar9 + 0x186) + ; + while (_DAT_0046d838 <= *(float *)(puVar9 + 0x186)) { + *(float *)(puVar9 + 0x186) = *(float *)(puVar9 + 0x186) - _DAT_0046d838; + } + uVar8 = FUN_004dcd94(); + uVar4 = *(uint *)(puVar9 + 0x18c); + if (uVar8 != uVar4) { + *(uint *)(puVar9 + 0x18c) = uVar8; + uVar3 = *(undefined1 *)((int)puVar9 + uVar8 + 0x314); + uVar12 = FUN_0047d962(CONCAT31((int3)((uint)extraout_ECX >> 8),uVar3),uVar4,*puVar9,uVar3) + ; + uVar8 = (uint)uVar12; + } + } + iVar11 = iVar11 + 1; + puVar9 = puVar9 + 0x18e; + } while (iVar11 < 4); + psVar10 = (short *)(param_1 + 0x80); + iVar11 = 0; + do { + if ((iVar11 == 1) && (uVar8 = 0, *(int *)(param_1 + 0x70) != 0)) { + psVar10[2] = 0; + psVar10[3] = 0; + iVar5 = *(int *)(param_1 + 0x70); + if (iVar5 == 1) { + *(float *)(param_1 + 0x74) = + *(float *)(param_1 + 0x74) - fVar6 * *(float *)(param_1 + 0x78); + FUN_0046d50c(psVar10); + fVar2 = *(float *)(param_1 + 0x74); + uVar8 = CONCAT22(extraout_var, + (ushort)(fVar2 < _DAT_0046d834) << 8 | + (ushort)(NAN(fVar2) || NAN(_DAT_0046d834)) << 10 | + (ushort)(fVar2 == _DAT_0046d834) << 0xe); + if (fVar2 < _DAT_0046d834 || (fVar2 == _DAT_0046d834) != 0) { + *(undefined4 *)(param_1 + 0x74) = 0; + *(undefined4 *)(param_1 + 0x70) = 2; + } + } + else { + uVar8 = 0; + if ((iVar5 != 2) && (uVar8 = iVar5 - 3, uVar8 == 0)) { + *(float *)(param_1 + 0x74) = + fVar6 * *(float *)(param_1 + 0x78) + *(float *)(param_1 + 0x74); + FUN_0046d50c(psVar10); + fVar2 = *(float *)(param_1 + 0x74); + uVar8 = CONCAT22(extraout_var_00, + (ushort)(fVar2 < _DAT_0046d83c) << 8 | + (ushort)(NAN(fVar2) || NAN(_DAT_0046d83c)) << 10 | + (ushort)(fVar2 == _DAT_0046d83c) << 0xe); + if (fVar2 >= _DAT_0046d83c) { + *(undefined4 *)(param_1 + 0x74) = 0x3f800000; + *(undefined4 *)(param_1 + 0x70) = 0; + } + } + } + } + else if (*(int *)(psVar10 + 2) != 0) { + psVar10[2] = 0; + psVar10[3] = 0; + uVar12 = FUN_0047d8f2(0,psVar10 + 6,(byte *)(psVar10 + 6),*psVar10); + uVar8 = (uint)uVar12; + } + iVar11 = iVar11 + 1; + psVar10 = psVar10 + 0x18e; + } while (iVar11 < 4); + } + return uVar8; +} + + + +/* @0046d840 file=? name=FUN_0046d840 */ + +undefined6 __cdecl FUN_0046d840(undefined4 param_1,int param_2) + +{ + undefined6 uVar1; + + uVar1 = FUN_0047d76d(param_2); + return uVar1; +} + + + +/* @0046d850 file=? name=FUN_0046d850 */ + +undefined4 * __cdecl +FUN_0046d850(undefined4 *param_1,undefined4 *param_2,char *param_3,undefined4 param_4, + undefined4 param_5,undefined4 param_6,undefined4 param_7) + +{ + uint uVar1; + undefined4 *puVar2; + int iVar3; + + FUN_0044a2d0(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004f4d0c; + param_1[0x14a] = param_4; + param_1[0x14f] = param_6; + param_1[0x150] = param_7; + uVar1 = 0x8000; + param_1[0x14b] = param_5; + param_1[0x14c] = 0; + do { + if ((param_1[0x14b] & uVar1) != 0) { + param_1[0x14c] = param_1[0x14c] + 1; + } + uVar1 = (int)uVar1 >> 1; + } while (uVar1 != 0); + param_1[0x14d] = param_1[3] - param_1[1]; + param_1[0x14e] = param_1[4] - param_1[2]; + if (((param_1[0x14a] == 0x5a) || (param_1[0x14a] == 0x10e)) && (param_2 != (undefined4 *)0x0)) { + param_1[1] = param_2[2]; + param_1[2] = param_2[1]; + param_1[3] = param_2[4]; + param_1[4] = param_2[3]; + } + iVar3 = 0; + puVar2 = param_1 + 0x10a; + do { + *(undefined1 *)puVar2 = 0; + iVar3 = iVar3 + 1; + puVar2 = (undefined4 *)((int)puVar2 + 1); + } while (iVar3 < 0x100); + return param_1; +} + + + +/* @0046d91c file=? name=FUN_0046d91c */ + +void __cdecl FUN_0046d91c(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f4d0c; + FUN_0044a348(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0046d948 file=? name=FUN_0046d948 */ + +undefined4 FUN_0046d948(void) + +{ + return 1; +} + + + +/* @0046d954 file=? name=FUN_0046d954 */ + +void __cdecl FUN_0046d954(int param_1,char *param_2) + +{ + char cVar1; + int *piVar2; + uint uVar3; + uint uVar4; + char *pcVar5; + char *pcVar6; + uint *puVar7; + char local_54 [80]; + + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_L4GraphicsPort__004f4c9f,(char *)0x0); + uVar3 = 0xffffffff; + do { + pcVar5 = param_2; + if (uVar3 == 0) break; + uVar3 = uVar3 - 1; + pcVar5 = param_2 + 1; + cVar1 = *param_2; + param_2 = pcVar5; + } while (cVar1 != '\0'); + uVar3 = ~uVar3; + pcVar5 = pcVar5 + -uVar3; + pcVar6 = local_54; + for (uVar4 = uVar3 >> 2; uVar4 != 0; uVar4 = uVar4 - 1) { + *(undefined4 *)pcVar6 = *(undefined4 *)pcVar5; + pcVar5 = pcVar5 + 4; + pcVar6 = pcVar6 + 4; + } + for (uVar3 = uVar3 & 3; uVar3 != 0; uVar3 = uVar3 - 1) { + *pcVar6 = *pcVar5; + pcVar5 = pcVar5 + 1; + pcVar6 = pcVar6 + 1; + } + FUN_004d49b8(local_54,&DAT_004f4cb0); + uVar3 = *(uint *)(param_1 + 0x52c); + FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_bitMask___004f4cb4,(char *)0x0); + piVar2 = FUN_004db78c(&DAT_00524e20,uVar3); + FUN_004dbb24(piVar2,&DAT_004f4cc3,(char *)0x0); + uVar3 = *(uint *)(param_1 + 0x528); + FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_baseRotation___004f4cc5,(char *)0x0); + piVar2 = FUN_004db78c(&DAT_00524e20,uVar3); + FUN_004dbb24(piVar2,&DAT_004f4cd4,(char *)0x0); + uVar3 = *(uint *)(param_1 + 0x534); + FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_maximumX___004f4cd6,(char *)0x0); + piVar2 = FUN_004db78c(&DAT_00524e20,uVar3); + FUN_004dbb24(piVar2,&DAT_004f4ce5,(char *)0x0); + uVar3 = *(uint *)(param_1 + 0x538); + FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_maximumY___004f4ce7,(char *)0x0); + piVar2 = FUN_004db78c(&DAT_00524e20,uVar3); + FUN_004dbb24(piVar2,&DAT_004f4cf6,(char *)0x0); + puVar7 = (uint *)(param_1 + 4); + FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_bounds___004f4cf8,(char *)0x0); + piVar2 = (int *)FUN_00407d78(&DAT_00524e20,puVar7); + FUN_004dbb24(piVar2,&DAT_004f4d07,(char *)0x0); + FUN_004d9c70(&DAT_00524e20); + FUN_0044a374(param_1,local_54); + return; +} + + + +/* @0046db5c file=? name=FUN_0046db5c */ + +void __cdecl FUN_0046db5c(int param_1,undefined1 *param_2,int param_3) + +{ + if (1 < *(int *)(param_1 + 0x540) - 4U) { + FUN_0046e31c(param_1,param_2,param_3); + } + return; +} + + + +/* @0046db84 file=? name=FUN_0046db84 */ + +void __cdecl FUN_0046db84(int param_1,int param_2) + +{ + if (*(int *)(param_1 + 0x14) != 0) { + if (*(int *)(param_1 + 0x540) == 4) { + FUN_0046e180(param_1,param_2); + return; + } + if (*(int *)(param_1 + 0x540) == 5) { + FUN_0046e578(param_1); + FUN_0046e650(param_1); + return; + } + FUN_0046e1e4(param_1,param_2); + FUN_0046e650(param_1); + } + return; +} + + + +/* @0046dbdc file=? name=FUN_0046dbdc */ + +void __cdecl FUN_0046dbdc(int param_1) + +{ + uint uVar1; + int *piVar2; + int local_310 [193]; + undefined2 local_a; + undefined1 local_8; + undefined2 local_7; + undefined1 local_5; + + if (*(int *)(param_1 + 0x14) != 0) { + if (*(int *)(param_1 + 0x540) == 4) { + piVar2 = local_310; + uVar1 = FUN_004498a8(piVar2); + local_7 = 0; + local_5 = 0; + local_a = 0xffff; + local_8 = 0xff; + FUN_004499e4((int)local_310,0,0xff,(uVar1 & 0xffffff00) << 0x10, + CONCAT22((short)CONCAT31((int3)((uint)piVar2 >> 8),0xff),0xffff)); + FUN_0046e180(param_1,(int)local_310); + FUN_00449994(local_310,2); + } + else if (*(int *)(param_1 + 0x540) == 5) { + FUN_0046e578(param_1); + FUN_0046e694(param_1); + } + else { + FUN_0046e444(param_1); + FUN_0046e694(param_1); + } + } + return; +} + + + +/* @0046dca0 file=? name=FUN_0046dca0 */ + +void __cdecl FUN_0046dca0(int param_1,int param_2,undefined4 param_3,int param_4,int param_5) + +{ + int local_c; + int local_8; + + if (*(int *)(param_1 + 0x14) != 0) { + FUN_0046e114(param_1,&local_8,&local_c,param_4,param_5); + (**(code **)(**(int **)(param_1 + 0x14) + 0x14)) + (*(int **)(param_1 + 0x14),*(undefined4 *)(param_1 + 0x28 + param_2 * 4), + *(undefined4 *)(param_1 + 0x52c),param_3,local_8 + *(int *)(param_1 + 4), + local_c + *(int *)(param_1 + 8)); + } + return; +} + + + +/* @0046dd00 file=? name=FUN_0046dd00 */ + +void __cdecl +FUN_0046dd00(int param_1,int param_2,undefined4 param_3,int param_4,int param_5,int param_6, + int param_7,undefined4 param_8) + +{ + int local_14; + int local_10; + int local_c; + int local_8; + + if (*(int *)(param_1 + 0x14) != 0) { + FUN_0046e114(param_1,&local_8,&local_c,param_4,param_5); + FUN_0046e114(param_1,&local_10,&local_14,param_6,param_7); + (**(code **)(**(int **)(param_1 + 0x14) + 0x18)) + (*(int **)(param_1 + 0x14),*(undefined4 *)(param_1 + 0x28 + param_2 * 4), + *(undefined4 *)(param_1 + 0x52c),param_3,local_8 + *(int *)(param_1 + 4), + local_c + *(int *)(param_1 + 8),local_10 + *(int *)(param_1 + 4), + local_14 + *(int *)(param_1 + 8),param_8); + } + return; +} + + + +/* @0046dd8c file=? name=FUN_0046dd8c */ + +void __cdecl +FUN_0046dd8c(int param_1,int param_2,undefined4 param_3,int param_4,int param_5,int param_6, + int param_7) + +{ + int local_14; + int local_10; + int local_c; + int local_8; + + if (*(int *)(param_1 + 0x14) != 0) { + FUN_0046e114(param_1,&local_8,&local_c,param_4,param_5); + FUN_0046e114(param_1,&local_10,&local_14,param_6,param_7); + (**(code **)(**(int **)(param_1 + 0x14) + 0x1c)) + (*(int **)(param_1 + 0x14),*(undefined4 *)(param_1 + 0x28 + param_2 * 4), + *(undefined4 *)(param_1 + 0x52c),param_3,local_8 + *(int *)(param_1 + 4), + local_c + *(int *)(param_1 + 8),local_10 + *(int *)(param_1 + 4), + local_14 + *(int *)(param_1 + 8)); + } + return; +} + + + +/* @0046de14 file=? name=FUN_0046de14 */ + +void FUN_0046de14(void) + +{ + return; +} + + + +/* @0046de1c file=? name=FUN_0046de1c */ + +void __cdecl +FUN_0046de1c(int param_1,int param_2,undefined4 param_3,int param_4,int param_5,int param_6, + int param_7,undefined4 param_8,undefined4 param_9,undefined4 param_10, + undefined4 param_11) + +{ + int iVar1; + int local_c; + int local_8; + + if (((*(int *)(param_1 + 0x14) != 0) && (param_7 != 0)) && (*(int *)(param_7 + 0x18) != 0)) { + FUN_0046e114(param_1,&local_8,&local_c,param_5,param_6); + for (iVar1 = param_4 + *(int *)(param_1 + 0x528); iVar1 < 0; iVar1 = iVar1 + 0x168) { + } + for (; 0x167 < iVar1; iVar1 = iVar1 + -0x168) { + } + (**(code **)(**(int **)(param_1 + 0x14) + 0x24)) + (*(int **)(param_1 + 0x14),*(undefined4 *)(param_1 + 0x28 + param_2 * 4), + *(undefined4 *)(param_1 + 0x52c),param_3,iVar1,local_8 + *(int *)(param_1 + 4), + local_c + *(int *)(param_1 + 8),param_7,param_8,param_9,param_10,param_11); + } + return; +} + + + +/* @0046ded8 file=? name=FUN_0046ded8 */ + +void __cdecl +FUN_0046ded8(int param_1,int param_2,int param_3,undefined4 param_4,int param_5,int param_6, + int param_7,int param_8,undefined4 param_9,undefined4 param_10,undefined4 param_11, + undefined4 param_12) + +{ + int iVar1; + int local_c; + int local_8; + + if (((*(int *)(param_1 + 0x14) != 0) && (param_8 != 0)) && (*(int *)(param_8 + 0x18) != 0)) { + FUN_0046e114(param_1,&local_8,&local_c,param_6,param_7); + for (iVar1 = param_5 + *(int *)(param_1 + 0x528); iVar1 < 0; iVar1 = iVar1 + 0x168) { + } + for (; 0x167 < iVar1; iVar1 = iVar1 + -0x168) { + } + (**(code **)(**(int **)(param_1 + 0x14) + 0x28)) + (*(int **)(param_1 + 0x14),*(undefined4 *)(param_1 + 0x28 + param_2 * 4), + *(undefined4 *)(param_1 + 0x28 + param_3 * 4),*(undefined4 *)(param_1 + 0x52c), + param_4,iVar1,local_8 + *(int *)(param_1 + 4),local_c + *(int *)(param_1 + 8),param_8 + ,param_9,param_10,param_11,param_12); + } + return; +} + + + +/* @0046df9c file=? name=FUN_0046df9c */ + +void __cdecl +FUN_0046df9c(int param_1,undefined4 param_2,undefined4 param_3,int param_4,int param_5,int param_6, + int param_7,undefined4 param_8,undefined4 param_9,undefined4 param_10, + undefined4 param_11) + +{ + int iVar1; + int local_c; + int local_8; + + if (((*(int *)(param_1 + 0x14) != 0) && (param_7 != 0)) && (*(int *)(param_7 + 8) != 0)) { + FUN_0046e114(param_1,&local_8,&local_c,param_5,param_6); + for (iVar1 = param_4 + *(int *)(param_1 + 0x528); iVar1 < 0; iVar1 = iVar1 + 0x168) { + } + for (; 0x167 < iVar1; iVar1 = iVar1 + -0x168) { + } + (**(code **)(**(int **)(param_1 + 0x14) + 0x2c)) + (*(int **)(param_1 + 0x14),param_1 + 0x28,*(undefined4 *)(param_1 + 0x52c),param_2, + param_3,iVar1,local_8 + *(int *)(param_1 + 4),local_c + *(int *)(param_1 + 8),param_7 + ,param_8,param_9,param_10,param_11); + } + return; +} + + + +/* @0046e058 file=? name=FUN_0046e058 */ + +void __cdecl +FUN_0046e058(int param_1,int param_2,undefined4 param_3,int param_4,int param_5,int param_6, + int param_7,undefined4 param_8,undefined4 param_9,undefined4 param_10, + undefined4 param_11) + +{ + int iVar1; + int local_c; + int local_8; + + if (((*(int *)(param_1 + 0x14) != 0) && (param_7 != 0)) && (*(int *)(param_7 + 8) != 0)) { + FUN_0046e114(param_1,&local_8,&local_c,param_5,param_6); + for (iVar1 = param_4 + *(int *)(param_1 + 0x528); iVar1 < 0; iVar1 = iVar1 + 0x168) { + } + for (; 0x167 < iVar1; iVar1 = iVar1 + -0x168) { + } + (**(code **)(**(int **)(param_1 + 0x14) + 0x30)) + (*(int **)(param_1 + 0x14),*(undefined4 *)(param_1 + 0x28 + param_2 * 4), + *(undefined4 *)(param_1 + 0x52c),param_3,iVar1,local_8 + *(int *)(param_1 + 4), + local_c + *(int *)(param_1 + 8),param_7,param_8,param_9,param_10,param_11); + } + return; +} + + + +/* @0046e114 file=? name=FUN_0046e114 */ + +void __cdecl FUN_0046e114(int param_1,int *param_2,int *param_3,int param_4,int param_5) + +{ + int iVar1; + + iVar1 = *(int *)(param_1 + 0x528); + if (iVar1 == 0x5a) { + *param_2 = param_5; + *param_3 = *(int *)(param_1 + 0x538) - param_4; + } + else if (iVar1 == 0xb4) { + *param_2 = *(int *)(param_1 + 0x534) - param_4; + *param_3 = *(int *)(param_1 + 0x538) - param_5; + } + else if (iVar1 == 0x10e) { + *param_2 = *(int *)(param_1 + 0x534) - param_5; + *param_3 = param_4; + } + else { + *param_2 = param_4; + *param_3 = param_5; + } + return; +} + + + +/* @0046e180 file=? name=FUN_0046e180 */ + +void __cdecl FUN_0046e180(int param_1,int param_2) + +{ + byte *pbVar1; + byte *pbVar2; + byte bVar3; + byte *pbVar4; + int iVar5; + uint *puVar6; + + pbVar4 = (byte *)(param_2 + 4); + *(undefined4 *)(param_1 + 0x52c) = 0xffff; + puVar6 = (uint *)(param_1 + 0x28); + iVar5 = 0x100; + do { + pbVar1 = pbVar4 + 1; + bVar3 = *pbVar4; + pbVar2 = pbVar4 + 2; + pbVar4 = pbVar4 + 3; + iVar5 = iVar5 + -1; + *puVar6 = ((int)(uint)bVar3 >> 3) << 0xb | ((int)(uint)*pbVar1 >> 2) << 5 | + (int)(uint)*pbVar2 >> 3; + puVar6 = puVar6 + 1; + } while (0 < iVar5); + return; +} + + + +/* @0046e1e4 file=? name=FUN_0046e1e4 */ + +void __cdecl FUN_0046e1e4(int param_1,int param_2) + +{ + int iVar1; + int iVar2; + int iVar3; + undefined1 *puVar4; + uint local_14 [3]; + undefined1 *local_8; + + if (*(int *)(param_1 + 0x14) != 0) { + FUN_0046aa78(local_14,*(uint *)(param_1 + 0x52c) & 0xff,8); + iVar3 = *(int *)(param_1 + 0x53c) * 0x31c + *(int *)(param_1 + 0x14); + puVar4 = (undefined1 *)(param_2 + 4); + iVar1 = 0; + do { + *(undefined1 *)(param_1 + 0x428 + local_14[0]) = 0; + iVar1 = iVar1 + 1; + } while (iVar1 < 0x100); + if ((*(byte *)(param_1 + 0x540) & 0x80) != 0) { + puVar4 = (undefined1 *)(param_2 + 7); + FUN_0046aab0(local_14); + } + do { + do { + *(undefined1 *)(param_1 + 0x428 + local_14[0]) = 1; + iVar2 = local_14[0] * 3 + iVar3 + 0x80; + iVar1 = *(int *)(param_1 + 0x540); + if (iVar1 < 0x81) { + if ((iVar1 == 0x80) || (iVar1 == 0)) { + *(undefined1 *)(iVar2 + 0xc) = *puVar4; + } + else { + if (iVar1 == 1) goto LAB_0046e2b2; + if (iVar1 == 2) goto LAB_0046e2ba; + if (iVar1 == 3) goto LAB_0046e2c2; + } + } + else if (iVar1 == 0x81) { +LAB_0046e2b2: + *(undefined1 *)(iVar2 + 0xd) = puVar4[1]; + } + else if (iVar1 == 0x82) { +LAB_0046e2ba: + *(undefined1 *)(iVar2 + 0xe) = puVar4[2]; + } + else if (iVar1 == 0x83) { +LAB_0046e2c2: + *(undefined1 *)(iVar2 + 0xc) = *puVar4; + *(undefined1 *)(iVar2 + 0xd) = puVar4[1]; + *(undefined1 *)(iVar2 + 0xe) = puVar4[2]; + local_8 = puVar4; + } + iVar1 = FUN_0046aae0(local_14); + } while (iVar1 != 0); + puVar4 = puVar4 + 3; + iVar1 = FUN_0046aab0(local_14); + } while (iVar1 != 0); + *(undefined4 *)(iVar3 + 0x88) = 1; + *(undefined4 *)(iVar3 + 0x84) = 1; + } + return; +} + + + +/* @0046e31c file=? name=FUN_0046e31c */ + +void __cdecl FUN_0046e31c(int param_1,undefined1 *param_2,int param_3) + +{ + int iVar1; + int iVar2; + int iVar3; + uint local_10 [3]; + + if (*(int *)(param_1 + 0x14) == 0) { + return; + } + FUN_0046aa78(local_10,*(uint *)(param_1 + 0x52c) & 0xff,8); + iVar3 = 0; + iVar2 = *(int *)(param_1 + 0x53c) * 0x31c + *(int *)(param_1 + 0x14); + if ((*(byte *)(param_1 + 0x540) & 0x80) != 0) { + iVar3 = 1; + FUN_0046aab0(local_10); + } + do { + if (iVar3 == param_3) goto LAB_0046e38f; + iVar3 = iVar3 + 1; + iVar1 = FUN_0046aab0(local_10); + } while (iVar1 != 0); + goto LAB_0046e42f; +LAB_0046e38f: + do { + if (*(char *)(param_1 + 0x428 + local_10[0]) != '\0') { + iVar3 = *(int *)(param_1 + 0x540); + iVar1 = local_10[0] * 3 + iVar2; + if (iVar3 < 0x81) { + if ((iVar3 == 0x80) || (iVar3 == 0)) { + *(undefined1 *)(iVar1 + 0x8c) = *param_2; + } + else { + if (iVar3 == 1) goto LAB_0046e3df; + if (iVar3 == 2) goto LAB_0046e3ea; + if (iVar3 == 3) goto LAB_0046e3f5; + } + } + else if (iVar3 == 0x81) { +LAB_0046e3df: + *(undefined1 *)(iVar1 + 0x8d) = param_2[1]; + } + else if (iVar3 == 0x82) { +LAB_0046e3ea: + *(undefined1 *)(iVar1 + 0x8e) = param_2[2]; + } + else if (iVar3 == 0x83) { +LAB_0046e3f5: + *(undefined1 *)(iVar1 + 0x8c) = *param_2; + *(undefined1 *)(iVar1 + 0x8d) = param_2[1]; + *(undefined1 *)(iVar1 + 0x8e) = param_2[2]; + } + } + iVar3 = FUN_0046aae0(local_10); + } while (iVar3 != 0); +LAB_0046e42f: + *(undefined4 *)(iVar2 + 0x88) = 1; + *(undefined4 *)(iVar2 + 0x84) = 1; + return; +} + + + +/* @0046e444 file=? name=FUN_0046e444 */ + +void __cdecl FUN_0046e444(int param_1) + +{ + int iVar1; + int iVar2; + int iVar3; + int iVar4; + uint local_18 [3]; + undefined1 local_9; + int local_8; + + if (*(int *)(param_1 + 0x14) != 0) { + FUN_0046aa78(local_18,*(int *)(param_1 + 0x52c) >> 8 & 0xff,8); + iVar4 = *(int *)(param_1 + 0x53c) * 0x31c + *(int *)(param_1 + 0x14); + iVar1 = FUN_0046ab18((int)local_18); + iVar2 = (int)(0x1fe0 / (longlong)((1 << ((byte)iVar1 & 0x1f)) + -1)); + iVar1 = 0; + local_8 = iVar2; + if ((*(byte *)(param_1 + 0x540) & 0x80) != 0) { + FUN_0046aab0(local_18); + iVar1 = iVar2; + } + do { + local_9 = (undefined1)(iVar1 >> 5); + iVar1 = iVar1 + local_8; + do { + iVar3 = local_18[0] * 3 + iVar4 + 0x80; + iVar2 = *(int *)(param_1 + 0x540); + if (iVar2 < 0x81) { + if ((iVar2 == 0x80) || (iVar2 == 0)) { + *(undefined1 *)(iVar3 + 0xc) = local_9; + } + else { + if (iVar2 == 1) goto LAB_0046e520; + if (iVar2 == 2) goto LAB_0046e528; + if (iVar2 == 3) goto LAB_0046e530; + } + } + else if (iVar2 == 0x81) { +LAB_0046e520: + *(undefined1 *)(iVar3 + 0xd) = local_9; + } + else if (iVar2 == 0x82) { +LAB_0046e528: + *(undefined1 *)(iVar3 + 0xe) = local_9; + } + else if (iVar2 == 0x83) { +LAB_0046e530: + *(undefined1 *)(iVar3 + 0xc) = local_9; + *(undefined1 *)(iVar3 + 0xd) = local_9; + *(undefined1 *)(iVar3 + 0xe) = local_9; + } + iVar2 = FUN_0046aae0(local_18); + } while (iVar2 != 0); + iVar2 = FUN_0046aab0(local_18); + } while (iVar2 != 0); + *(undefined4 *)(iVar4 + 0x88) = 1; + *(undefined4 *)(iVar4 + 0x84) = 1; + } + return; +} + + + +/* @0046e578 file=? name=FUN_0046e578 */ + +void __cdecl FUN_0046e578(int param_1) + +{ + int iVar1; + int iVar2; + int iVar3; + uint local_10 [3]; + + if (*(int *)(param_1 + 0x14) != 0) { + FUN_0046aa78(local_10,*(int *)(param_1 + 0x52c) >> 8 & 0xff,8); + iVar3 = *(int *)(param_1 + 0x53c) * 0x31c + *(int *)(param_1 + 0x14); + do { + iVar1 = local_10[0] * 3 + iVar3 + 0x80; + iVar2 = *(int *)(param_1 + 0x540); + if (iVar2 < 0x81) { + if ((iVar2 == 0x80) || (iVar2 == 0)) { + *(undefined1 *)(iVar1 + 0xc) = 0; + } + else { + if (iVar2 == 1) goto LAB_0046e60d; + if (iVar2 == 2) goto LAB_0046e612; + if (iVar2 == 3) goto LAB_0046e617; + } + } + else if (iVar2 == 0x81) { +LAB_0046e60d: + *(undefined1 *)(iVar1 + 0xd) = 0; + } + else if (iVar2 == 0x82) { +LAB_0046e612: + *(undefined1 *)(iVar1 + 0xe) = 0; + } + else if (iVar2 == 0x83) { +LAB_0046e617: + *(undefined1 *)(iVar1 + 0xc) = 0; + *(undefined1 *)(iVar1 + 0xd) = 0; + *(undefined1 *)(iVar1 + 0xe) = 0; + } + iVar2 = FUN_0046aae0(local_10); + } while ((iVar2 != 0) || (iVar2 = FUN_0046aab0(local_10), iVar2 != 0)); + *(undefined4 *)(iVar3 + 0x88) = 1; + *(undefined4 *)(iVar3 + 0x84) = 1; + } + return; +} + + + +/* @0046e650 file=? name=FUN_0046e650 */ + +void __cdecl FUN_0046e650(int param_1) + +{ + int iVar1; + uint *puVar2; + uint local_10 [3]; + + FUN_0046aa78(local_10,*(uint *)(param_1 + 0x52c) & 0xff,8); + puVar2 = (uint *)(param_1 + 0x28); + do { + *puVar2 = local_10[0]; + puVar2 = puVar2 + 1; + iVar1 = FUN_0046aab0(local_10); + } while (iVar1 != 0); + return; +} + + + +/* @0046e694 file=? name=FUN_0046e694 */ + +void __cdecl FUN_0046e694(int param_1) + +{ + int iVar1; + int *piVar2; + int iVar3; + uint local_10 [3]; + + FUN_0046aa78(local_10,*(int *)(param_1 + 0x52c) >> 8 & 0xff,8); + piVar2 = (int *)(param_1 + 0x28); + do { + iVar3 = local_10[0] << 8; + do { + *piVar2 = iVar3; + piVar2 = piVar2 + 1; + iVar1 = FUN_0046aae0(local_10); + } while (iVar1 != 0); + iVar3 = FUN_0046aab0(local_10); + } while (iVar3 != 0); + return; +} + + + +/* @0046e6ec file=? name=FUN_0046e6ec */ + +int __cdecl FUN_0046e6ec(int param_1) + +{ + FUN_004498a8((undefined4 *)(param_1 + 8)); + return param_1; +} + + + +/* @0046e702 file=? name=FUN_0046e702 */ + +void __cdecl FUN_0046e702(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + FUN_00449994(param_1 + 2,2); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0046e72c file=? name=FUN_0046e72c */ + +undefined4 * __cdecl +FUN_0046e72c(undefined4 *param_1,char *param_2,undefined4 param_3,undefined4 param_4) + +{ + char cVar1; + uint uVar2; + uint uVar3; + char *pcVar4; + char *pcVar5; + + *(undefined1 *)(param_1 + 2) = 0; + uVar2 = 0xffffffff; + do { + pcVar4 = param_2; + if (uVar2 == 0) break; + uVar2 = uVar2 - 1; + pcVar4 = param_2 + 1; + cVar1 = *param_2; + param_2 = pcVar4; + } while (cVar1 != '\0'); + uVar2 = ~uVar2; + pcVar4 = pcVar4 + -uVar2; + pcVar5 = (char *)(param_1 + 2); + for (uVar3 = uVar2 >> 2; uVar3 != 0; uVar3 = uVar3 - 1) { + *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4; + pcVar4 = pcVar4 + 4; + pcVar5 = pcVar5 + 4; + } + for (uVar2 = uVar2 & 3; uVar2 != 0; uVar2 = uVar2 - 1) { + *pcVar5 = *pcVar4; + pcVar4 = pcVar4 + 1; + pcVar5 = pcVar5 + 1; + } + *(undefined1 *)((int)param_1 + 0x47) = 0; + *param_1 = param_3; + param_1[1] = param_4; + param_1[0x12] = DAT_00522cc8; + DAT_00522cc8 = param_1; + return param_1; +} + + + +/* @0046e788 file=? name=FUN_0046e788 */ + +undefined4 __cdecl FUN_0046e788(char *param_1) + +{ + char *pcVar1; + bool bVar2; + int *piVar3; + char *pcVar4; + uint uVar5; + undefined4 *puVar6; + char *pcVar7; + char *pcVar8; + int iVar9; + undefined4 uVar10; + bool bVar11; + char local_120 [256]; + int local_20; + uint local_1c; + int *local_18; + int *local_14; + int *local_10; + int *local_c; + int *local_8; + + uVar10 = 0; + piVar3 = (int *)FUN_00402298(0x20); + if (piVar3 == (int *)0x0) { + local_8 = (int *)0x0; + } + else { + local_8 = FUN_00403e84(piVar3,param_1,1); + } + local_c = FUN_00404720((int)local_8,s_colors_004f4da5,(char *)0x0); + if (local_c == (int *)0x0) { + FUN_004dbb24(&DAT_00524e20,param_1,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_has_no__colors__page__004f4dac,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + } + local_10 = FUN_00404720((int)local_8,s_attributes_004f4dc3,(char *)0x0); + if (local_10 == (int *)0x0) { + FUN_004dbb24(&DAT_00524e20,param_1,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_has_no__attributes__page__004f4dce,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + } + local_14 = FUN_00404720((int)local_8,s_groups_004f4de9,(char *)0x0); + if (local_14 == (int *)0x0) { + FUN_004dbb24(&DAT_00524e20,param_1,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_has_no__groups__page__004f4df0,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + } + if (((local_10 != (int *)0x0) && (local_c != (int *)0x0)) && (local_14 != (int *)0x0)) { + DAT_00522cc8 = 0; + local_18 = (int *)local_14[1]; + while (local_18 != (int *)0x0) { + pcVar8 = (char *)local_18[1]; + local_1c = 0; + local_20 = 0; + if (pcVar8 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,(char *)0x0,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_is_an_empty__GAT_group__004f4e07,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + } + else { + while (*pcVar8 != '\0') { + while (((&DAT_005207dd)[*pcVar8] & 1) != 0) { + pcVar8 = pcVar8 + 1; + } + iVar9 = 0; + pcVar4 = local_120; + do { + if (((&DAT_005207dd)[*pcVar8] & 0xe) == 0) break; + *pcVar4 = *pcVar8; + iVar9 = iVar9 + 1; + pcVar4 = pcVar4 + 1; + pcVar8 = pcVar8 + 1; + } while (iVar9 < 0xff); + *pcVar4 = '\0'; + bVar2 = false; + for (puVar6 = (undefined4 *)local_c[1]; puVar6 != (undefined4 *)0x0; + puVar6 = (undefined4 *)*puVar6) { + pcVar4 = (char *)(puVar6 + 2); + pcVar7 = local_120; + do { + if (*pcVar4 != *pcVar7) goto LAB_0046e9ab; + bVar11 = true; + if (*pcVar4 == '\0') break; + pcVar1 = pcVar4 + 1; + if (*pcVar1 != pcVar7[1]) goto LAB_0046e9ab; + pcVar4 = pcVar4 + 2; + pcVar7 = pcVar7 + 2; + bVar11 = *pcVar1 == '\0'; + } while (!bVar11); + if (bVar11) { + local_20 = FUN_004dd1e0((char *)puVar6[1]); + bVar2 = true; + break; + } +LAB_0046e9ab: + } + if (!bVar2) { + bVar2 = false; + for (puVar6 = (undefined4 *)local_10[1]; puVar6 != (undefined4 *)0x0; + puVar6 = (undefined4 *)*puVar6) { + pcVar4 = (char *)(puVar6 + 2); + pcVar7 = local_120; + do { + if (*pcVar4 != *pcVar7) goto LAB_0046ea00; + bVar11 = true; + if (*pcVar4 == '\0') break; + pcVar1 = pcVar4 + 1; + if (*pcVar1 != pcVar7[1]) goto LAB_0046ea00; + pcVar4 = pcVar4 + 2; + pcVar7 = pcVar7 + 2; + bVar11 = *pcVar1 == '\0'; + } while (!bVar11); + if (bVar11) { + uVar5 = FUN_004dd1e0((char *)puVar6[1]); + local_1c = local_1c | uVar5; + bVar2 = true; + break; + } +LAB_0046ea00: + } + if (!bVar2) { + FUN_004dbb24(&DAT_00524e20,s_Attribute___004f4e20,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,local_120,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s___not_found__004f4e2c,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + } + } + } + } + puVar6 = (undefined4 *)FUN_00402298(0x4c); + if (puVar6 != (undefined4 *)0x0) { + FUN_0046e72c(puVar6,(char *)(local_18 + 2),local_20,local_1c); + } + local_18 = (int *)*local_18; + } + if (local_c != (int *)0x0) { + (**(code **)*local_c)(local_c,3); + } + if (local_10 != (int *)0x0) { + (**(code **)*local_10)(local_10,3); + } + if (local_14 != (int *)0x0) { + (**(code **)*local_14)(local_14,3); + } + uVar10 = 1; + } + FUN_00403ecc(local_8,3); + return uVar10; +} + + + +/* @0046eaf0 file=? name=FUN_0046eaf0 */ + +void FUN_0046eaf0(void) + +{ + int *piVar1; + int *piVar2; + + piVar1 = DAT_00522cc8; + while (piVar2 = piVar1, piVar2 != (int *)0x0) { + piVar1 = (int *)piVar2[0x12]; + if (piVar2 != (int *)0x0) { + FUN_004022d0(piVar2); + } + } + DAT_00522cc8 = (int *)0x0; + return; +} + + + +/* @0046eb18 file=? name=FUN_0046eb18 */ + +undefined4 __cdecl FUN_0046eb18(char *param_1,undefined4 *param_2,undefined4 *param_3) + +{ + undefined4 *puVar1; + int iVar2; + + puVar1 = DAT_00522cc8; + while( true ) { + if (puVar1 == (undefined4 *)0x0) { + return 0; + } + iVar2 = FUN_004d4ae0(param_1,(char *)(puVar1 + 2),0x40); + if (iVar2 == 0) break; + puVar1 = (undefined4 *)puVar1[0x12]; + } + *param_2 = *puVar1; + *param_3 = puVar1[1]; + return 1; +} + + + +/* @0046eb64 file=? name=FUN_0046eb64 */ + +undefined4 FUN_0046eb64(void) + +{ + return 0; +} + + + +/* @0046eb6c file=? name=FUN_0046eb6c */ + +int * __cdecl FUN_0046eb6c(int param_1) + +{ + int iVar1; + int iVar2; + int *piVar3; + int local_14 [4]; + + piVar3 = (int *)0x0; + iVar2 = FUN_00407064(*(int *)(DAT_004efc94 + 0x68),param_1,0x12); + if (iVar2 != 0) { + iVar1 = *(int *)(iVar2 + 4); + *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + 1; + if (iVar1 == 0) { + FUN_00406cd0(iVar2); + } + FUN_004030dc(local_14,*(undefined4 *)(iVar2 + 0x3c),*(undefined4 *)(iVar2 + 0x40),0); + if (*(int *)(iVar2 + 0x3c) != 0) { + piVar3 = (int *)FUN_00402298(0x14); + if (piVar3 == (int *)0x0) { + piVar3 = (int *)0x0; + } + else { + piVar3 = FUN_0046ebf0(piVar3,local_14); + } + } + *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + -1; + } + return piVar3; +} + + + +/* @0046ebf0 file=? name=FUN_0046ebf0 */ + +int * __cdecl FUN_0046ebf0(int *param_1,int *param_2) + +{ + int extraout_EAX; + int *piVar1; + int iVar2; + int *piVar3; + + (**(code **)(*param_2 + 0x1c))(param_2,param_1,4); + piVar3 = FUN_004de998((int *)0x0,0xc,*param_1,1,&LAB_0046f974); + param_1[2] = extraout_EAX; + for (iVar2 = 0; iVar2 < *param_1; iVar2 = iVar2 + 1) { + (**(code **)(*piVar3 + 0x1c))(piVar3,iVar2 * 0xc + param_1[2],0xc); + } + (**(code **)(*piVar3 + 0x1c))(piVar3,param_1 + 1,4); + iVar2 = FUN_004022b0(param_1[1] << 2); + param_1[3] = iVar2; + for (iVar2 = 0; iVar2 < param_1[1]; iVar2 = iVar2 + 1) { + (**(code **)(*piVar3 + 0x1c))(piVar3,iVar2 * 4 + param_1[3],4); + } + iVar2 = FUN_004022b0(param_1[1] << 2); + param_1[4] = iVar2; + for (iVar2 = 0; iVar2 < param_1[1]; iVar2 = iVar2 + 1) { + piVar1 = (int *)FUN_00402298(8); + if (piVar1 == (int *)0x0) { + piVar1 = (int *)0x0; + } + else { + piVar1 = FUN_0046f190(piVar1,piVar3); + } + *(int **)(param_1[4] + iVar2 * 4) = piVar1; + } + return param_1; +} + + + +/* @0046ecdc file=? name=FUN_0046ecdc */ + +void __cdecl FUN_0046ecdc(int *param_1,byte param_2) + +{ + int iVar1; + + if (param_1 != (int *)0x0) { + FUN_004022e8((int *)param_1[2]); + FUN_004022e8((int *)param_1[3]); + for (iVar1 = 0; iVar1 < param_1[1]; iVar1 = iVar1 + 1) { + FUN_0046f1f0(*(int **)(param_1[4] + iVar1 * 4),3); + } + FUN_004022e8((int *)param_1[4]); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0046ed34 file=? name=FUN_0046ed34 */ + +undefined4 __cdecl FUN_0046ed34(int param_1,char *param_2,int param_3,int param_4) + +{ + int iVar1; + int *piVar2; + int *piVar3; + int *piVar4; + undefined4 *puVar5; + int *piVar6; + char *local_10; + char *local_c; + undefined4 local_8; + + local_8 = 0xffffffff; + iVar1 = FUN_00404088(param_3,s_gauge_004f4e39,s_image_004f4e3f,&local_c); + if (iVar1 != 0) { + piVar2 = (int *)FUN_004064fc(*(char **)(param_4 + 0x14),local_c); + piVar3 = (int *)FUN_00402298(0x20); + if (piVar3 == (int *)0x0) { + piVar3 = (int *)0x0; + } + else { + piVar3 = FUN_00403e84(piVar3,(char *)piVar2,1); + } + iVar1 = FUN_00404088((int)piVar3,s_object_004f4e45,s_gatfile_004f4e4c,&local_10); + if (iVar1 == 0) { + FUN_004dbb24(&DAT_00524e20,s_Missing__gat_specification__004f4e54,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + } + else { + piVar4 = (int *)FUN_004064fc(*(char **)(param_4 + 0x14),local_10); + iVar1 = FUN_0046e788((char *)piVar4); + if (iVar1 != 0) { + puVar5 = (undefined4 *)FUN_00402298(0x18); + if (puVar5 == (undefined4 *)0x0) { + piVar6 = (int *)0x0; + } + else { + piVar6 = FUN_0040328c(puVar5,0); + } + iVar1 = FUN_0046ee84(piVar6,(int)piVar3); + if (iVar1 == 1) { + puVar5 = (undefined4 *)FUN_00406f3c(param_1,param_2,0x12,1,0,piVar6,-1); + local_8 = *puVar5; + } + FUN_0046eaf0(); + FUN_00403310(piVar6,3); + } + FUN_004022d0(piVar4); + } + FUN_00403ecc(piVar3,3); + FUN_004022d0(piVar2); + } + return local_8; +} + + + +/* @0046ee84 file=? name=FUN_0046ee84 */ + +int __cdecl FUN_0046ee84(int *param_1,int param_2) + +{ + undefined4 *puVar1; + int iVar2; + int iVar3; + float10 fVar4; + float local_28 [3]; + int local_1c; + float local_18; + int local_14; + int *local_10; + int local_c; + int *local_8; + + iVar3 = 1; + local_8 = FUN_00404720(param_2,s_vertices_004f4e70,(char *)0x0); + if (local_8 == (int *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_No__vertices__page_in_the__GIM_f_004f4e79,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + iVar3 = 0; + } + else { + local_c = FUN_00403b60((int)local_8); + if (local_c < 1) { + FUN_004dbb24(&DAT_00524e20,s_The__vertices__page_in_the__GIM_f_004f4e9e,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + iVar3 = 0; + } + else { + (**(code **)(*param_1 + 0x20))(param_1,&local_c,4); + puVar1 = (undefined4 *)local_8[1]; + iVar2 = 0; + if (0 < local_c) { + do { + FUN_00408944((char *)puVar1[1],local_28); + (**(code **)(*param_1 + 0x20))(param_1,local_28,0xc); + puVar1 = (undefined4 *)*puVar1; + iVar2 = iVar2 + 1; + } while (iVar2 < local_c); + } + } + if (local_8 != (int *)0x0) { + (**(code **)*local_8)(local_8,3); + } + } + if (iVar3 == 1) { + local_10 = FUN_00404720(param_2,&DAT_004f4ed3,(char *)0x0); + if (local_10 == (int *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_No__lods__page_in_the__GIM_file__004f4ed8,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + iVar3 = 0; + } + else { + local_14 = FUN_00403b60((int)local_10); + if (local_14 < 1) { + FUN_004dbb24(&DAT_00524e20,s_The__lod__page_in_the__GIM_file_h_004f4ef9,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + iVar3 = 0; + } + else { + (**(code **)(*param_1 + 0x20))(param_1,&local_14,4); + iVar2 = 0; + puVar1 = (undefined4 *)local_10[1]; + if (0 < local_14) { + do { + local_1c = puVar1[1]; + if (local_1c == 0) { + FUN_004dbb24(&DAT_00524e20,s_Missing_scale_value__004f4f29,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + iVar3 = 0; + break; + } + fVar4 = (float10)FUN_004dd1cc(local_1c); + local_18 = (float)fVar4; + (**(code **)(*param_1 + 0x20))(param_1,&local_18,4); + puVar1 = (undefined4 *)*puVar1; + iVar2 = iVar2 + 1; + } while (iVar2 < local_14); + } + iVar2 = 0; + puVar1 = (undefined4 *)local_10[1]; + if (0 < local_14) { + do { + iVar3 = FUN_0046f234(param_1,param_2,(char *)(puVar1 + 2)); + if (iVar3 == 0) break; + puVar1 = (undefined4 *)*puVar1; + iVar2 = iVar2 + 1; + } while (iVar2 < local_14); + } + } + } + if (local_10 != (int *)0x0) { + (**(code **)*local_10)(local_10,3); + } + } + return iVar3; +} + + + +/* @0046f0c0 file=? name=FUN_0046f0c0 */ + +void __cdecl +FUN_0046f0c0(int *param_1,float param_2,float param_3,int *param_4,int param_5,float *param_6, + int param_7) + +{ + int iVar1; + undefined4 *puVar2; + float *pfVar3; + int iVar4; + float local_34 [12]; + + if (DAT_004f4da4 == '\0') { + FUN_004de998((int *)&DAT_00522ccc,0xc,100,1,&LAB_0046f974); + DAT_004f4da4 = DAT_004f4da4 + '\x01'; + } + FUN_0040aadc(local_34); + iVar1 = FUN_0040af88(param_6,local_34); + if (iVar1 == 0) { + iVar1 = 0; + for (pfVar3 = (float *)param_1[3]; (iVar1 < param_1[1] && (*pfVar3 < param_2)); + pfVar3 = pfVar3 + 1) { + iVar1 = iVar1 + 1; + } + if (iVar1 < param_1[1]) { + puVar2 = &DAT_0052317c; + for (iVar4 = 0; iVar4 < *param_1; iVar4 = iVar4 + 1) { + *puVar2 = 0; + puVar2 = puVar2 + 1; + } + FUN_0046f374(*(int **)(param_1[4] + iVar1 * 4),param_4,param_5,param_6,param_1[2],0x522ccc, + 0x52317c,param_3,param_7); + } + } + return; +} + + + +/* @0046f184 file=? name=FUN_0046f184 */ + +undefined4 FUN_0046f184(void) + +{ + return 1; +} + + + +/* @0046f190 file=? name=FUN_0046f190 */ + +int * __cdecl FUN_0046f190(int *param_1,int *param_2) + +{ + int iVar1; + int iVar2; + + (**(code **)(*param_2 + 0x1c))(param_2,param_1,4); + iVar1 = FUN_004022b0(*param_1 << 2); + param_1[1] = iVar1; + for (iVar1 = 0; iVar1 < *param_1; iVar1 = iVar1 + 1) { + iVar2 = FUN_00402298(0x14); + if (iVar2 == 0) { + iVar2 = 0; + } + else { + iVar2 = FUN_0046f468(iVar2,param_2); + } + *(int *)(param_1[1] + iVar1 * 4) = iVar2; + } + return param_1; +} + + + +/* @0046f1f0 file=? name=FUN_0046f1f0 */ + +void __cdecl FUN_0046f1f0(int *param_1,byte param_2) + +{ + int iVar1; + + if (param_1 != (int *)0x0) { + for (iVar1 = 0; iVar1 < *param_1; iVar1 = iVar1 + 1) { + FUN_0046f500(*(int **)(param_1[1] + iVar1 * 4),3); + } + FUN_004022e8((int *)param_1[1]); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0046f234 file=? name=FUN_0046f234 */ + +int __cdecl FUN_0046f234(int *param_1,int param_2,char *param_3) + +{ + undefined4 *puVar1; + int iVar2; + int iVar3; + int local_c; + int *local_8; + + iVar2 = 1; + local_8 = FUN_00404720(param_2,param_3,(char *)0x0); + if (local_8 == (int *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_Can_t_find_the___004f4f3e,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s___page_in_the__GIM_file__004f4f4f,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + iVar2 = 0; + } + else { + local_c = FUN_00403b60((int)local_8); + if (local_c < 1) { + FUN_004dbb24(&DAT_00524e20,s_The___004f4f68,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s___page_in_the__GIM_file_has_no_e_004f4f6e,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + iVar2 = 0; + } + else { + (**(code **)(*param_1 + 0x20))(param_1,&local_c,4); + iVar3 = 0; + puVar1 = (undefined4 *)local_8[1]; + if (0 < local_c) { + do { + iVar2 = FUN_0046f530(param_1,(char *)(puVar1 + 2),(char *)puVar1[1]); + if (iVar2 == 0) break; + puVar1 = (undefined4 *)*puVar1; + iVar3 = iVar3 + 1; + } while (iVar3 < local_c); + } + } + if (local_8 != (int *)0x0) { + (**(code **)*local_8)(local_8,3); + } + } + return iVar2; +} + + + +/* @0046f368 file=? name=FUN_0046f368 */ + +undefined4 FUN_0046f368(void) + +{ + return 1; +} + + + +/* @0046f374 file=? name=FUN_0046f374 */ + +void __cdecl +FUN_0046f374(int *param_1,int *param_2,int param_3,float *param_4,int param_5,int param_6, + int param_7,float param_8,int param_9) + +{ + byte *pbVar1; + int iVar2; + int local_18; + int local_14; + int local_10; + int local_c; + undefined4 *local_8; + + local_8 = (undefined4 *)param_1[1]; + if (param_9 == 0) { + for (iVar2 = 0; iVar2 < *param_1; iVar2 = iVar2 + 1) { + pbVar1 = (byte *)*local_8; + local_8 = local_8 + 1; + FUN_0046f774(pbVar1,param_2,param_3,param_4,param_5,param_6,param_7,param_8,(int *)0x0); + } + } + else { + FUN_00407bd0(&local_18,9999,9999,0xffffd8f1,0xffffd8f1); + for (iVar2 = 0; iVar2 < *param_1; iVar2 = iVar2 + 1) { + pbVar1 = (byte *)*local_8; + local_8 = local_8 + 1; + FUN_0046f774(pbVar1,param_2,param_3,param_4,param_5,param_6,param_7,param_8,&local_18); + } + (**(code **)(*param_2 + 0x18))(param_2,param_9); + (**(code **)(*param_2 + 0x24))(param_2,local_18 + -4,local_14 + -4); + (**(code **)(*param_2 + 0x40))(param_2,local_10 + 4,local_c + 4); + } + return; +} + + + +/* @0046f468 file=? name=FUN_0046f468 */ + +int __cdecl FUN_0046f468(int param_1,int *param_2) + +{ + undefined4 uVar1; + int iVar2; + int local_8; + + (**(code **)(*param_2 + 0x1c))(param_2,&local_8,4); + *(int *)(param_1 + 8) = local_8; + if (local_8 == 0) { + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 4,4); + (**(code **)(*param_2 + 0x1c))(param_2,param_1,4); + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0xc,4); + uVar1 = FUN_004022b0(*(int *)(param_1 + 0xc) << 2); + *(undefined4 *)(param_1 + 0x10) = uVar1; + for (iVar2 = 0; iVar2 < *(int *)(param_1 + 0xc); iVar2 = iVar2 + 1) { + (**(code **)(*param_2 + 0x1c))(param_2,iVar2 * 4 + *(int *)(param_1 + 0x10),4); + } + } + return param_1; +} + + + +/* @0046f500 file=? name=FUN_0046f500 */ + +void __cdecl FUN_0046f500(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + if (param_1[2] == 0) { + FUN_004022e8((int *)param_1[4]); + } + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0046f530 file=? name=FUN_0046f530 */ + +/* WARNING: Type propagation algorithm not settling */ + +undefined4 __cdecl FUN_0046f530(int *param_1,char *param_2,char *param_3) + +{ + char cVar1; + int iVar2; + char *pcVar3; + char local_158 [64]; + int local_118 [64]; + undefined4 local_18; + int local_14 [4]; + + local_14[2] = 0; + local_14[1] = 0; + local_14[0] = 0; + local_18 = 1; + iVar2 = FUN_004d4b58(param_2,s_linelist_004f4f96); + if (iVar2 == 0) { + local_14[3] = 0; + (**(code **)(*param_1 + 0x20))(param_1,local_14 + 3,4); + while (*param_3 != '\0') { + while (((&DAT_005207dd)[*param_3] & 1) != 0) { + param_3 = param_3 + 1; + } + if (*param_3 == 'v') { + iVar2 = 0; + while( true ) { + param_3 = param_3 + 1; + if (((&DAT_005207dd)[*param_3] & 2) == 0) break; + iVar2 = (int)*param_3 + iVar2 * 10 + -0x30; + } + if (local_14[0] < 0x40) { + local_118[local_14[0]] = iVar2; + local_14[0] = local_14[0] + 1; + } + } + else if (*param_3 == 'a') { + iVar2 = 0; + pcVar3 = local_158; + do { + cVar1 = *param_3; + if ((((&DAT_005207dd)[cVar1] & 1) != 0) || (cVar1 == '\0')) break; + *pcVar3 = cVar1; + iVar2 = iVar2 + 1; + param_3 = param_3 + 1; + pcVar3 = pcVar3 + 1; + } while (iVar2 < 0x3f); + *pcVar3 = '\0'; + iVar2 = FUN_0046eb18(local_158,local_14 + 1,local_14 + 2); + if (iVar2 == 0) { + FUN_004dbb24(&DAT_00524e20,s_Couldn_t_find_attribute_group___004f4f9f,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,local_158,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004f4fbf,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + } + } + } + (**(code **)(*param_1 + 0x20))(param_1,local_14 + 1,4); + (**(code **)(*param_1 + 0x20))(param_1,local_14 + 2,4); + if (local_14[0] == 0) { + FUN_004dbb24(&DAT_00524e20,s_No_vertex_indices_in_primitive__004f4fc2,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + local_18 = 0; + } + else { + (**(code **)(*param_1 + 0x20))(param_1,local_14,4); + iVar2 = 0; + if (0 < local_14[0]) { + do { + (**(code **)(*param_1 + 0x20))(param_1,local_118 + iVar2,4); + iVar2 = iVar2 + 1; + } while (iVar2 < local_14[0]); + } + } + } + else { + FUN_004dbb24(&DAT_00524e20,s_Unsupported_primitive___004f4fe2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s___in__GIM_file__004f4ffa,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + local_18 = 0; + } + return local_18; +} + + + +/* @0046f768 file=? name=FUN_0046f768 */ + +undefined4 FUN_0046f768(void) + +{ + return 1; +} + + + +/* @0046f774 file=? name=FUN_0046f774 */ + +int __cdecl +FUN_0046f774(byte *param_1,int *param_2,int param_3,float *param_4,int param_5,int param_6, + int param_7,float param_8,int *param_9) + +{ + int iVar1; + int iVar2; + undefined4 uVar3; + undefined4 uVar4; + int *piVar5; + + iVar2 = *(int *)(param_1 + 8) + -1; + if ((*(int *)(param_1 + 8) == 0) && (1 < *(int *)(param_1 + 0xc))) { + if (*(int *)(param_1 + 4) != 0) { + param_3 = *(int *)(param_1 + 4); + } + (**(code **)(*param_2 + 0x18))(param_2,param_3); + piVar5 = *(int **)(param_1 + 0x10); + iVar2 = *piVar5; + FUN_0046f888(param_1,param_4,(float *)(iVar2 * 0xc + param_5),(float *)(iVar2 * 0xc + param_6), + (int *)(iVar2 * 4 + param_7),param_8,param_9); + uVar3 = FUN_004dcd94(); + uVar4 = FUN_004dcd94(); + (**(code **)(*param_2 + 0x24))(param_2,uVar4,uVar3); + iVar2 = *(int *)(param_1 + 0xc); + while (iVar2 = iVar2 + -1, 0 < iVar2) { + piVar5 = piVar5 + 1; + iVar1 = *piVar5; + FUN_0046f888(param_1,param_4,(float *)(iVar1 * 0xc + param_5),(float *)(iVar1 * 0xc + param_6) + ,(int *)(iVar1 * 4 + param_7),param_8,param_9); + uVar3 = FUN_004dcd94(); + uVar4 = FUN_004dcd94(); + (**(code **)(*param_2 + 0x30))(param_2,uVar4,uVar3); + } + } + return iVar2; +} + + + +/* @0046f888 file=? name=FUN_0046f888 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl +FUN_0046f888(byte *param_1,float *param_2,float *param_3,float *param_4,int *param_5,float param_6, + int *param_7) + +{ + int iVar1; + float local_14 [3]; + float local_8; + + if (*param_5 == 0) { + if ((*param_1 & 1) == 0) { + FUN_00408b98(param_4,param_3,param_2); + } + else { + FUN_00408440(local_14,param_3); + local_8 = param_6; + FUN_004086ac(local_14,local_14,param_6); + FUN_00408b98(param_4,local_14,param_2); + } + *param_4 = *param_4 + _DAT_0046f970; + param_4[2] = -param_4[2] + _DAT_0046f970; + *param_5 = 1; + } + if (param_7 != (int *)0x0) { + if (*param_4 < (float)*param_7) { + iVar1 = FUN_004dcd94(); + *param_7 = iVar1; + } + if ((float)param_7[2] < *param_4) { + iVar1 = FUN_004dcd94(); + param_7[2] = iVar1; + } + if (param_4[2] < (float)param_7[1]) { + iVar1 = FUN_004dcd94(); + param_7[1] = iVar1; + } + if ((float)param_7[3] < param_4[2]) { + iVar1 = FUN_004dcd94(); + param_7[3] = iVar1; + } + } + return; +} + + + +/* @0046f97c file=? name=FUN_0046f97c */ + +undefined4 * __cdecl FUN_0046f97c(undefined4 *param_1) + +{ + bool bVar1; + bool bVar2; + bool bVar3; + bool bVar4; + bool bVar5; + bool bVar6; + bool bVar7; + bool bVar8; + char *pcVar9; + char *pcVar10; + int iVar11; + undefined4 *puVar12; + undefined3 extraout_var; + undefined3 extraout_var_00; + undefined3 extraout_var_01; + undefined3 extraout_var_02; + undefined3 extraout_var_03; + undefined3 extraout_var_04; + undefined3 extraout_var_05; + undefined3 extraout_var_06; + int *piVar13; + int local_44 [8]; + int local_24; + int local_20; + int local_1c; + int local_18; + int local_14; + int local_10; + int local_c; + uint local_8; + + FUN_00447890(param_1); + *param_1 = &PTR_FUN_004f56a4; + param_1[0x714b] = 0; + param_1[0x714c] = 0; + param_1[0x714a] = 1; + param_1[0x714d] = 0; + pcVar9 = (char *)FUN_004dee74(s_L4GAUGE_004f5631); + if (pcVar9 != (char *)0x0) { + pcVar10 = (char *)FUN_004dee74(s_L4PLASMA_004f5639); + if (pcVar10 != (char *)0x0) { + iVar11 = FUN_004d4bec(pcVar10,&DAT_004f5642,4); + if (iVar11 == 0) { + puVar12 = (undefined4 *)FUN_00402298(100); + if (puVar12 == (undefined4 *)0x0) { + puVar12 = (undefined4 *)0x0; + } + else { + puVar12 = FUN_004750b4(puVar12,0x2f8,0xb); + } + param_1[0x714c] = puVar12; + } + else { + puVar12 = (undefined4 *)FUN_00402298(100); + if (puVar12 == (undefined4 *)0x0) { + puVar12 = (undefined4 *)0x0; + } + else { + puVar12 = FUN_004750b4(puVar12,0x3f8,0xc); + } + param_1[0x714c] = puVar12; + } + } + FUN_00403e84(local_44,s_GAUGE_L4GAUGE_INI_004f5647,1); + iVar11 = FUN_00403f84((int)local_44,pcVar9); + if (iVar11 != 0) { + local_8 = 0; + local_c = 0x280; + local_10 = 0x1e0; + local_14 = 0x40; + local_18 = 0x40; + local_1c = 0x500; + local_20 = 0; + local_24 = 0; + bVar1 = FUN_004040d8((int)local_44,pcVar9,&DAT_004f5659,(int *)&local_8); + bVar2 = FUN_004040d8((int)local_44,pcVar9,s_width_004f565e,&local_c); + bVar3 = FUN_004040d8((int)local_44,pcVar9,s_height_004f5664,&local_10); + bVar4 = FUN_004040d8((int)local_44,pcVar9,s_sizeInKB_004f566b,&local_14); + bVar5 = FUN_004040d8((int)local_44,pcVar9,s_granularityInKB_004f5674,&local_18); + bVar6 = FUN_004040d8((int)local_44,pcVar9,s_bytesPerLine_004f5684,&local_1c); + bVar7 = FUN_004040d8((int)local_44,pcVar9,s_pageFcnPtr_004f5691,&local_20); + bVar8 = FUN_004040d8((int)local_44,pcVar9,s_special_004f569c,&local_24); + if (CONCAT31(extraout_var,bVar1) + CONCAT31(extraout_var_00,bVar2) + + CONCAT31(extraout_var_01,bVar3) + CONCAT31(extraout_var_02,bVar4) + + CONCAT31(extraout_var_03,bVar5) + CONCAT31(extraout_var_04,bVar6) + + CONCAT31(extraout_var_05,bVar7) + CONCAT31(extraout_var_06,bVar8) == 8) { + piVar13 = (int *)FUN_00402298(0xcf0); + if (piVar13 == (int *)0x0) { + piVar13 = (int *)0x0; + } + else { + piVar13 = FUN_0046ced4(piVar13,local_8,local_c,local_10,local_14,local_18,local_1c, + local_20,local_24); + } + param_1[0x714b] = piVar13; + } + } + FUN_00403ecc(local_44,2); + } + return param_1; +} + + + +/* @0046fbcc file=? name=FUN_0046fbcc */ + +void __cdecl FUN_0046fbcc(int *param_1,byte param_2) + +{ + undefined4 *puVar1; + int *piVar2; + int iVar3; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f56a4; + FUN_00447fc0((int)param_1,0); + iVar3 = 0; + piVar2 = param_1 + 0x15; + do { + puVar1 = (undefined4 *)*piVar2; + if ((puVar1 != (undefined4 *)0x0) && (puVar1 != (undefined4 *)0x0)) { + (**(code **)*puVar1)(puVar1,3); + } + iVar3 = iVar3 + 1; + piVar2 = piVar2 + 1; + } while (iVar3 < 0x10); + puVar1 = (undefined4 *)param_1[0x714b]; + if ((puVar1 != (undefined4 *)0x0) && (puVar1 != (undefined4 *)0x0)) { + (**(code **)*puVar1)(puVar1,3); + } + puVar1 = (undefined4 *)param_1[0x714c]; + if ((puVar1 != (undefined4 *)0x0) && (puVar1 != (undefined4 *)0x0)) { + (**(code **)*puVar1)(puVar1,3); + } + FUN_00447a14(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0046fc5c file=? name=FUN_0046fc5c */ + +void __cdecl FUN_0046fc5c(int param_1) + +{ + undefined4 *puVar1; + + puVar1 = *(undefined4 **)(param_1 + 0x1c52c); + if ((puVar1 != (undefined4 *)0x0) && (puVar1 != (undefined4 *)0x0)) { + (**(code **)*puVar1)(puVar1,3); + } + FUN_00447b58(); + return; +} + + + +/* @0046fc88 file=? name=FUN_0046fc88 */ + +void __cdecl FUN_0046fc88(int param_1) + +{ + FUN_00447b60(param_1); + return; +} + + + +/* @0046fc98 file=? name=FUN_0046fc98 */ + +void FUN_0046fc98(void) + +{ + FUN_00447e64(); + return; +} + + + /* @0046fcb0 file=? name=FUN_0046fcb0 */ void __cdecl FUN_0046fcb0(int param_1) @@ -1103,6 +5263,42 @@ void __cdecl FUN_00470bd0(int param_1) +/* @00470c1c file=? name=FUN_00470c1c */ + +undefined4 __cdecl FUN_00470c1c(int param_1,int param_2,int param_3,undefined4 param_4,int param_5) + +{ + int iVar1; + undefined4 uVar2; + int *piVar3; + undefined4 *puVar4; + + iVar1 = FUN_00445034(&PTR_s_unsigned_004f5784,&DAT_004f61cc); + if (iVar1 < 0) { + uVar2 = 0; + } + else { + piVar3 = (int *)FUN_00402298(0x98); + if (piVar3 != (int *)0x0) { + FUN_00470cfc(piVar3,DAT_004f6078,DAT_004f60bc,param_5,0,param_1,param_2,param_3, + param_2 + DAT_004f6100,param_3 + DAT_004f6104,&DAT_004f6144,DAT_004f6188,iVar1, + DAT_004f6210,DAT_004f6254,DAT_004f6298,s_NumericDisplayInteger_004fadd2); + } + iVar1 = *(int *)(param_5 + 0x4c) + 4; + puVar4 = FUN_00442aec(iVar1,&DAT_004f6144,0); + if (puVar4 == (undefined4 *)0x0) { + uVar2 = 0; + } + else { + FUN_00442c12(iVar1,&DAT_004f6144); + uVar2 = 1; + } + } + return uVar2; +} + + + /* @00470cfc file=? name=FUN_00470cfc */ int * __cdecl @@ -2603,6 +6799,18 @@ void __cdecl FUN_00472480(int *param_1) +/* @00472aa8 file=munga_l4/l4gauge.cpp name=FUN_00472aa8 */ + +void FUN_00472aa8(void) + +{ + FUN_0040385c(s_WipeGaugeScalar__DrawActive_is_n_004fb317, + s_d__tesla_bt_munga_l4_L4GAUGE_CPP_004fb345,0xcae); + return; +} + + + /* @00472ac4 file=munga_l4/l4gauge.cpp name=FUN_00472ac4 */ void FUN_00472ac4(void) @@ -3847,6 +8055,25 @@ void __cdecl FUN_00474300(int param_1) +/* @00474550 file=? name=FUN_00474550 */ + +undefined4 __cdecl +FUN_00474550(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,int param_5) + +{ + int *piVar1; + + piVar1 = (int *)FUN_00402298(0xc0); + if (piVar1 != (int *)0x0) { + FUN_004745e0(piVar1,DAT_004fa940,DAT_004fa984,param_5,0,param_1,param_2,param_3,DAT_004fa9c8, + DAT_004faa0c,DAT_004faa50,DAT_004faa94,DAT_004faad8,DAT_004fab1c,DAT_004fab60, + DAT_004faba4,DAT_004fabe8,DAT_004fac2c,1,s_SegmentArcNormalized_004faef8); + } + return 1; +} + + + /* @004745e0 file=? name=FUN_004745e0 */ int * __cdecl @@ -5174,6 +9401,18 @@ void __thiscall FUN_004758cc(void *this,int param_1) +/* @00475a38 file=? name=FUN_00475a38 */ + +void __cdecl FUN_00475a38(int param_1) + +{ + (**(code **)**(undefined4 **)(param_1 + 0x28))(*(undefined4 **)(param_1 + 0x28)); + FUN_00475604(param_1); + return; +} + + + /* @00475a54 file=? name=FUN_00475a54 */ void __cdecl FUN_00475a54(int param_1) @@ -8474,2308 +12713,3 @@ void __cdecl FUN_0047936c(int param_1,float param_2) -/* @00479398 file=? name=FUN_00479398 */ - -void __cdecl FUN_00479398(int param_1) - -{ - *(undefined4 *)(param_1 + 0xc) = 0; - *(undefined4 *)(param_1 + 0x14) = 10000; - *(undefined4 *)(param_1 + 0x18) = 0xffffd8f0; - return; -} - - - -/* @004793b4 file=? name=FUN_004793b4 */ - -void __cdecl FUN_004793b4(int param_1,int param_2) - -{ - int iVar1; - - *(int *)(param_1 + 0x1c) = *(int *)(param_1 + 0x10); - iVar1 = *(int *)(param_1 + 0x18) - *(int *)(param_1 + 0x14); - if (iVar1 < 0) { - iVar1 = -iVar1; - } - if (iVar1 < 10) { - if (*(int *)(param_1 + 8) == 1) { - *(int *)(param_1 + 0x14) = *(int *)(param_1 + 0x10) + -100; - *(int *)(param_1 + 0x18) = *(int *)(param_1 + 0x1c) + 100; - } - else { - *(undefined4 *)(param_1 + 0x14) = 0; - *(undefined4 *)(param_1 + 0x18) = 100; - } - } - else { - *(int *)(param_1 + 0x18) = *(int *)(param_1 + 0x18) - iVar1 / 0x21; - *(int *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + iVar1 / 0x21; - } - if ((*(int *)(param_1 + 0x34) != 0) && (param_2 != 0)) { - FUN_00404298(param_2,*(char **)(param_1 + 4),PTR_DAT_004fcf4c,*(uint *)(param_1 + 0x18)); - FUN_00404298(param_2,*(char **)(param_1 + 4),PTR_DAT_004fcf54,*(uint *)(param_1 + 0x14)); - if (*(int *)(param_1 + 8) == 1) { - FUN_00404298(param_2,*(char **)(param_1 + 4),PTR_s_center_004fcf50,*(uint *)(param_1 + 0x1c)); - } - } - FUN_004795bc(param_1); - *(undefined4 *)(param_1 + 0xc) = 1; - return; -} - - - -/* @00479478 file=? name=FUN_00479478 */ - -float10 __cdecl FUN_00479478(int param_1,int param_2) - -{ - int iVar1; - int iVar2; - undefined4 uVar3; - float local_8; - - local_8 = 0.0; - *(int *)(param_1 + 0x10) = param_2; - FUN_0047a825((uint *)(param_1 + 0x38),param_2); - iVar1 = FUN_0047a86e((uint *)(param_1 + 0x38)); - if (iVar1 < *(int *)(param_1 + 0x14)) { - *(int *)(param_1 + 0x14) = iVar1; - } - if (*(int *)(param_1 + 0x18) < iVar1) { - *(int *)(param_1 + 0x18) = iVar1; - } - if (*(int *)(param_1 + 8) == 0) { - iVar1 = *(int *)(param_1 + 0x14); - iVar2 = FUN_004dcd94(); - iVar1 = (param_2 - iVar1) - iVar2; - if ((0 < iVar1) && (iVar2 = *(int *)(param_1 + 0x18) - iVar2, 0 < iVar2)) { - local_8 = (float)iVar1 / (float)iVar2; - } - } - else if (*(int *)(param_1 + 8) == 1) { - if (*(int *)(param_1 + 0xc) == 0) { - *(int *)(param_1 + 0x1c) = *(int *)(param_1 + 0x18) - *(int *)(param_1 + 0x14) >> 1; - uVar3 = FUN_004dcd94(); - *(undefined4 *)(param_1 + 0x2c) = uVar3; - *(undefined4 *)(param_1 + 0x24) = uVar3; - } - iVar1 = param_2 - *(int *)(param_1 + 0x1c); - if (iVar1 < 0) { - iVar1 = iVar1 + *(int *)(param_1 + 0x24); - if ((iVar1 < 0) && (iVar2 = *(int *)(param_1 + 0x20), 0 < iVar2)) { - if (-iVar2 < iVar1) { - local_8 = (float)iVar1 / (float)iVar2; - } - else { - local_8 = -1.0; - } - } - } - else { - iVar1 = iVar1 - *(int *)(param_1 + 0x2c); - if ((0 < iVar1) && (iVar2 = *(int *)(param_1 + 0x28), 0 < iVar2)) { - if (iVar1 < iVar2) { - local_8 = (float)iVar1 / (float)iVar2; - } - else { - local_8 = 1.0; - } - } - } - } - return (float10)local_8; -} - - - -/* @004795b0 file=? name=FUN_004795b0 */ - -undefined4 FUN_004795b0(void) - -{ - return 1; -} - - - -/* @004795bc file=? name=FUN_004795bc */ - -void __cdecl FUN_004795bc(int param_1) - -{ - int iVar1; - - iVar1 = FUN_004dcd94(); - *(int *)(param_1 + 0x24) = iVar1; - *(int *)(param_1 + 0x20) = *(int *)(param_1 + 0x1c) - (*(int *)(param_1 + 0x14) + iVar1); - iVar1 = FUN_004dcd94(); - *(int *)(param_1 + 0x2c) = iVar1; - *(int *)(param_1 + 0x28) = (*(int *)(param_1 + 0x18) - iVar1) - *(int *)(param_1 + 0x1c); - return; -} - - - -/* @0047962c file=? name=FUN_0047962c */ - -undefined4 * __cdecl -FUN_0047962c(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4, - float param_5) - -{ - *param_1 = param_2; - param_1[3] = param_3; - param_1[4] = param_4; - FUN_00479684((int)param_1,param_5); - FUN_004796b8((int)param_1); - return param_1; -} - - - -/* @0047965c file=? name=FUN_0047965c */ - -void __cdecl FUN_0047965c(int *param_1,byte param_2) - -{ - if ((param_1 != (int *)0x0) && ((param_2 & 1) != 0)) { - FUN_004022d0(param_1); - } - return; -} - - - -/* @00479678 file=? name=FUN_00479678 */ - -undefined4 FUN_00479678(void) - -{ - return 1; -} - - - -/* @00479684 file=? name=FUN_00479684 */ - -void __cdecl FUN_00479684(int param_1,float param_2) - -{ - undefined4 uVar1; - - FUN_004dcd00((double)param_2); - uVar1 = FUN_004dcd94(); - *(undefined4 *)(param_1 + 0x18) = uVar1; - return; -} - - - -/* @004796b8 file=? name=FUN_004796b8 */ - -void __cdecl FUN_004796b8(int param_1) - -{ - *(undefined4 *)(param_1 + 4) = 0; - return; -} - - - -/* @004796c8 file=? name=FUN_004796c8 */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -float10 __fastcall FUN_004796c8(undefined4 param_1,uint param_2,undefined4 *param_3,int param_4) - -{ - uint uVar1; - uint uVar2; - uint uVar3; - char *pcVar4; - int iVar5; - int *piVar6; - uint uVar7; - uint uVar8; - float local_8; - - local_8 = 0.0; - if ((int)param_3[3] < 0) { - if (param_3[1] == 0) { - param_3[1] = 1; - param_3[2] = -param_4; - iVar5 = param_3[4] * 3; - if (iVar5 < 0) { - iVar5 = iVar5 + 3; - } - param_3[7] = (iVar5 >> 2) + param_3[2]; - iVar5 = param_3[3] * 3; - if (iVar5 < 0) { - iVar5 = iVar5 + 3; - } - param_3[8] = (iVar5 >> 2) + param_3[2]; - } - uVar8 = param_4 + param_3[2]; - if ((int)param_3[7] < (int)uVar8) { - param_3[7] = uVar8; - } - if ((int)uVar8 < (int)param_3[8]) { - param_3[8] = uVar8; - } - if ((int)uVar8 < (int)-param_3[6]) { - uVar7 = (int)param_3[8] >> 0x1f; - param_2 = ((param_3[8] ^ uVar7) - uVar7) - param_3[6]; - if (0 < (int)param_2) { - local_8 = (float)(int)(param_3[6] + uVar8) / (float)(int)param_2; - } - } - else if (((int)param_3[6] < (int)uVar8) && - (uVar7 = (int)param_3[7] >> 0x1f, param_2 = ((param_3[7] ^ uVar7) - uVar7) - param_3[6], - 0 < (int)param_2)) { - local_8 = (float)(int)(uVar8 - param_3[6]) / (float)(int)param_2; - } - } - else { - if (param_3[1] == 0) { - param_3[1] = 1; - param_3[2] = -param_4; - iVar5 = param_3[4] * 3; - if (iVar5 < 0) { - iVar5 = iVar5 + 3; - } - param_3[7] = iVar5 >> 2; - param_3[8] = param_3[3]; - } - iVar5 = param_4 + param_3[2]; - if ((int)param_3[4] < iVar5) { - param_3[2] = param_3[2] - (iVar5 - param_3[4]); - iVar5 = param_3[4]; - } - else if (iVar5 < (int)param_3[3]) { - param_3[2] = param_3[2] - (iVar5 - param_3[3]); - iVar5 = param_3[3]; - } - if ((int)param_3[7] < iVar5) { - param_3[7] = iVar5; - } - uVar8 = iVar5 - param_3[3]; - iVar5 = param_3[6]; - if ((iVar5 < (int)uVar8) && (param_2 = (param_3[7] - param_3[8]) - iVar5, 0 < (int)param_2)) { - local_8 = (float)(int)(uVar8 - iVar5) / (float)(int)param_2; - } - } - if (local_8 <= _DAT_00479af0) { - if (local_8 < _DAT_00479af4) { - uVar7 = param_3[6]; - uVar1 = param_3[7]; - uVar2 = param_3[8]; - pcVar4 = (char *)*param_3; - FUN_004dbb24(&DAT_00524e20,s_Too_low__004fd08b,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s_input__004fd094,(char *)0x0); - piVar6 = FUN_004db78c(&DAT_00524e20,uVar8); - FUN_004dbb24(piVar6,s_result__004fd09c,(char *)0x0); - piVar6 = FUN_004db634(piVar6,(float10)local_8); - FUN_004dbb24(piVar6,&DAT_004fd0a5,(char *)0x0); - FUN_004dbb24(piVar6,pcVar4,(char *)0x0); - FUN_004dbb24(piVar6,s_lowestInput__004fd0a7,(char *)0x0); - piVar6 = FUN_004db78c(piVar6,uVar2); - FUN_004dbb24(piVar6,s_highestInput__004fd0b5,(char *)0x0); - piVar6 = FUN_004db78c(piVar6,uVar1); - FUN_004dbb24(piVar6,s_deadbandInteger__004fd0c4,(char *)0x0); - piVar6 = FUN_004db78c(piVar6,uVar7); - FUN_004dbb24(piVar6,s_range__004fd0d6,(char *)0x0); - piVar6 = FUN_004db78c(piVar6,param_2); - FUN_004dbb24(piVar6,&DAT_004fd0de,(char *)0x0); - local_8 = -1.0; - } - } - else { - uVar7 = param_3[6]; - uVar1 = param_3[7]; - uVar2 = param_3[8]; - uVar3 = param_3[2]; - pcVar4 = (char *)*param_3; - FUN_004dbb24(&DAT_00524e20,s_Too_high__004fd02c,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s_input__004fd036,(char *)0x0); - piVar6 = FUN_004db78c(&DAT_00524e20,uVar8); - FUN_004dbb24(piVar6,s_result__004fd03e,(char *)0x0); - piVar6 = FUN_004db634(piVar6,(float10)local_8); - FUN_004dbb24(piVar6,&DAT_004fd047,(char *)0x0); - FUN_004dbb24(piVar6,pcVar4,(char *)0x0); - FUN_004dbb24(piVar6,s_offset__004fd049,(char *)0x0); - piVar6 = FUN_004db78c(piVar6,uVar3); - FUN_004dbb24(piVar6,s_lowestInput__004fd052,(char *)0x0); - piVar6 = FUN_004db78c(piVar6,uVar2); - FUN_004dbb24(piVar6,s_highestInput__004fd060,(char *)0x0); - piVar6 = FUN_004db78c(piVar6,uVar1); - FUN_004dbb24(piVar6,s_deadbandInteger__004fd06f,(char *)0x0); - piVar6 = FUN_004db78c(piVar6,uVar7); - FUN_004dbb24(piVar6,s_range__004fd081,(char *)0x0); - piVar6 = FUN_004db78c(piVar6,param_2); - FUN_004dbb24(piVar6,&DAT_004fd089,(char *)0x0); - local_8 = 1.0; - } - return (float10)local_8; -} - - - -/* @00479b78 file=? name=FUN_00479b78 */ - -short * __cdecl FUN_00479b78(short *param_1,short param_2,short param_3,int param_4) - -{ - bool bVar1; - undefined4 *puVar2; - uint uVar3; - int *piVar4; - int iVar5; - undefined4 extraout_ECX; - undefined4 extraout_ECX_00; - undefined4 extraout_ECX_01; - undefined4 extraout_ECX_02; - undefined4 extraout_ECX_03; - undefined4 extraout_ECX_04; - undefined4 extraout_ECX_05; - undefined4 extraout_ECX_06; - undefined4 extraout_ECX_07; - undefined4 extraout_ECX_08; - undefined4 uVar6; - short extraout_DX; - short extraout_DX_00; - short extraout_DX_01; - short sVar7; - int extraout_EDX; - int extraout_EDX_00; - undefined8 uVar8; - undefined4 local_14 [3]; - int local_8; - - param_1[0x21e] = 0; - param_1[0x21f] = 0; - param_1[0x220] = 0; - param_1[0x221] = 0; - param_1[0x222] = 0; - param_1[0x223] = 0; - param_1[0x224] = 0; - param_1[0x225] = 0; - param_1[0x226] = 0; - param_1[0x227] = 0; - param_1[0x228] = 0; - param_1[0x229] = 0; - param_1[0x22e] = 0; - param_1[0x22f] = 0; - param_1[0x230] = 0; - param_1[0x231] = 0; - param_1[0x232] = 0; - param_1[0x233] = 0; - param_1[0x234] = 0; - param_1[0x235] = 0; - param_1[0x238] = 0; - param_1[0x239] = 0; - param_1[0x236] = 0; - param_1[0x237] = 0; - param_1[0x23c] = 1; - param_1[0x23d] = 0; - param_1[0x248] = 0; - param_1[0x249] = 0; - param_1[0x24a] = 0; - param_1[0x24b] = 0; - FUN_0047a70c((int)param_1); - FUN_00404bc0(*(int *)(param_1 + 0x248),s_RIOBoardErrors_004fd0f5); - FUN_00404bc0(*(int *)(param_1 + 0x248),s_RIODeadLamps_004fd104); - FUN_00404bc0(*(int *)(param_1 + 0x248),s_RIOErrors_004fd111); - FUN_0047a750((int)param_1); - puVar2 = (undefined4 *)FUN_00402298(0x24); - if (puVar2 == (undefined4 *)0x0) { - puVar2 = (undefined4 *)0x0; - } - else { - puVar2 = FUN_0047962c(puVar2,s_LeftPedal_004fd11b,0,0x1d6,0.0); - } - *(undefined4 **)(param_1 + 0x23e) = puVar2; - puVar2 = (undefined4 *)FUN_00402298(0x24); - if (puVar2 == (undefined4 *)0x0) { - puVar2 = (undefined4 *)0x0; - } - else { - puVar2 = FUN_0047962c(puVar2,s_RightPedal_004fd125,0,0x1d6,0.0); - } - *(undefined4 **)(param_1 + 0x240) = puVar2; - puVar2 = (undefined4 *)FUN_00402298(0x24); - if (puVar2 == (undefined4 *)0x0) { - puVar2 = (undefined4 *)0x0; - } - else { - puVar2 = FUN_0047962c(puVar2,s_Throttle_004fd130,0,800,0.05); - } - *(undefined4 **)(param_1 + 0x242) = puVar2; - puVar2 = (undefined4 *)FUN_00402298(0x24); - if (puVar2 == (undefined4 *)0x0) { - puVar2 = (undefined4 *)0x0; - } - else { - puVar2 = FUN_0047962c(puVar2,s_JoystickX_004fd139,0xffffffa0,0x60,0.05); - } - *(undefined4 **)(param_1 + 0x244) = puVar2; - puVar2 = (undefined4 *)FUN_00402298(0x24); - if (puVar2 == (undefined4 *)0x0) { - puVar2 = (undefined4 *)0x0; - } - else { - puVar2 = FUN_0047962c(puVar2,s_JoystickY_004fd143,0xffffff9f,0x6c,0.05); - } - *(undefined4 **)(param_1 + 0x246) = puVar2; - uVar8 = FUN_0047d9f4(param_1,0xc,param_2,param_3,&DAT_004fcf20,0xd,&DAT_004fcf20,0xd); - uVar3 = (uint)uVar8; - if (uVar3 == 0xfffffffe) { - FUN_004dbb24(&DAT_00524e20,s_RIO__RIO_DPMI_error__004fd14d,(char *)0x0); - uVar6 = extraout_ECX_00; - sVar7 = extraout_DX; - } - else if (uVar3 == 0xffffffff) { - FUN_004dbb24(&DAT_00524e20,s_RIO__RIO_buffer_allocation_error_004fd163,(char *)0x0); - uVar6 = extraout_ECX_01; - sVar7 = extraout_DX_00; - } - else if (uVar3 == 0) { - sVar7 = 0; - uVar6 = extraout_ECX; - } - else { - FUN_004dbb24(&DAT_00524e20,s_RIO__RIO_unexpected_init_result__004fd186,(char *)0x0); - piVar4 = FUN_004db78c(&DAT_00524e20,uVar3); - FUN_004dbb24(piVar4,&DAT_004fd1a7,(char *)0x0); - uVar6 = extraout_ECX_02; - sVar7 = extraout_DX_01; - } - param_1[0x22a] = 0xff; - param_1[0x22b] = 0; - param_1[0x22c] = 0xff; - param_1[0x22d] = 0; - if (param_4 != 0) { - bVar1 = false; - FUN_0047df93(uVar6,sVar7,param_1,1); - piVar4 = (int *)FUN_00414b60(); - local_8 = *piVar4; - iVar5 = FUN_004dcd94(); - local_8 = local_8 + iVar5; - do { - piVar4 = (int *)FUN_00414b60(); - } while (*piVar4 < local_8); - FUN_0047df93(local_8,(short)*piVar4,param_1,0); - piVar4 = (int *)FUN_00414b60(); - local_8 = *piVar4; - iVar5 = FUN_004dcd94(); - local_8 = local_8 + iVar5; - do { - piVar4 = (int *)FUN_00414b60(); - } while (*piVar4 < local_8); - FUN_0047a56c(local_8,*piVar4,param_1); - piVar4 = (int *)FUN_00414b60(); - local_8 = *piVar4; - iVar5 = FUN_004dcd94(); - local_8 = local_8 + iVar5; - uVar6 = extraout_ECX_03; - while (iVar5 = *(int *)(param_1 + 0x21e), iVar5 == 0) { - piVar4 = (int *)FUN_00414b60(); - if (local_8 < *piVar4) { - bVar1 = true; - FUN_004dbb24(&DAT_00524e20,s_RIO_never_came_back_from_check_r_004fd1aa,(char *)0x0); - uVar6 = extraout_ECX_04; - iVar5 = extraout_EDX; - break; - } - FUN_0047a0e8(local_8,*piVar4,(int)param_1,local_14); - uVar6 = extraout_ECX_05; - } - if (!bVar1) { - piVar4 = (int *)FUN_00414b60(); - local_8 = *piVar4; - iVar5 = FUN_004dcd94(); - local_8 = local_8 + iVar5; - uVar6 = extraout_ECX_06; - while (iVar5 = 0, *(int *)(param_1 + 0x21e) != 0) { - piVar4 = (int *)FUN_00414b60(); - if (local_8 < *piVar4) { - bVar1 = true; - FUN_004dbb24(&DAT_00524e20,s_RIO_never_came_back_from_test_mo_004fd1d3,(char *)0x0); - uVar6 = extraout_ECX_07; - iVar5 = extraout_EDX_00; - break; - } - FUN_0047a0e8(local_8,*piVar4,(int)param_1,local_14); - uVar6 = extraout_ECX_08; - } - } - if (!bVar1) { - FUN_0047a594(uVar6,iVar5,param_1); - piVar4 = (int *)FUN_00414b60(); - local_8 = *piVar4; - iVar5 = FUN_004dcd94(); - local_8 = local_8 + iVar5; - while (*(int *)(param_1 + 0x22a) == 0xff) { - piVar4 = (int *)FUN_00414b60(); - if (local_8 < *piVar4) { - FUN_004dbb24(&DAT_00524e20,s_RIO_never_came_back_from_version_004fd1f8,(char *)0x0); - return param_1; - } - FUN_0047a0e8(local_8,*piVar4,(int)param_1,local_14); - } - } - } - return param_1; -} - - - -/* @00479fd0 file=? name=FUN_00479fd0 */ - -void __cdecl FUN_00479fd0(int *param_1,byte param_2) - -{ - int *piVar1; - undefined2 uVar2; - int *piVar3; - int iVar4; - short extraout_var; - undefined4 extraout_ECX; - undefined4 extraout_EDX; - undefined8 uVar5; - undefined1 local_14 [12]; - int local_8; - - if (param_1 != (int *)0x0) { - piVar3 = (int *)FUN_00414b60(); - local_8 = *piVar3; - iVar4 = FUN_004dcd94(); - local_8 = local_8 + iVar4; - while( true ) { - piVar3 = (int *)FUN_00414b60(); - if (local_8 <= *piVar3) break; - piVar3 = param_1; - uVar2 = FUN_0047df82((int)param_1); - if (CONCAT22(extraout_var,uVar2) == 0 || extraout_var < 0) { - piVar1 = param_1; - uVar5 = FUN_0047def5(piVar3,extraout_EDX,(short *)param_1); - piVar3 = piVar1; - if ((int)uVar5 == 0) break; - } - FUN_0047a0e8(piVar3,local_14,(int)param_1,(undefined4 *)local_14); - } - FUN_0047965c((int *)param_1[0x11f],3); - param_1[0x11f] = 0; - FUN_0047965c((int *)param_1[0x120],3); - param_1[0x120] = 0; - FUN_0047965c((int *)param_1[0x121],3); - param_1[0x121] = 0; - FUN_0047965c((int *)param_1[0x122],3); - param_1[0x122] = 0; - FUN_0047965c((int *)param_1[0x123],3); - param_1[0x123] = 0; - FUN_0047dc71(extraout_ECX,0,(short *)param_1); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @0047a0e8 file=? name=FUN_0047a0e8 */ - -int __fastcall FUN_0047a0e8(undefined4 param_1,undefined4 param_2,int param_3,undefined4 *param_4) - -{ - bool bVar1; - int iVar2; - char *pcVar3; - uint uVar4; - undefined4 extraout_ECX; - undefined4 extraout_ECX_00; - undefined4 extraout_ECX_01; - undefined4 extraout_ECX_02; - undefined4 extraout_ECX_03; - uint extraout_EDX; - uint extraout_EDX_00; - uint extraout_EDX_01; - uint extraout_EDX_02; - uint extraout_EDX_03; - float10 fVar5; - ulonglong uVar6; - undefined8 uVar7; - int local_124 [8]; - byte local_104; - byte local_103; - byte local_102; - byte local_101; - byte local_100; - byte local_ff; - byte local_fe; - byte local_fd; - byte local_fc; - byte local_fb; - byte local_fa; - - if (*(int *)(param_3 + 0x478) == 0) { - iVar2 = 0; - } - else { - uVar6 = FUN_0047df1a(param_1,param_2,param_3); - if ((short)uVar6 != 0) { - if ((uVar6 & 0x100) == 0) { - if ((uVar6 & 0x400) != 0) { - *(int *)(param_3 + 0x46c) = *(int *)(param_3 + 0x46c) + 1; - } - if ((uVar6 & 2) != 0) { - *(int *)(param_3 + 0x470) = *(int *)(param_3 + 0x470) + 1; - } - if ((uVar6 & 0xe) != 0) { - *(int *)(param_3 + 0x468) = *(int *)(param_3 + 0x468) + 1; - } - } - else { - FUN_00403e84(local_124,s_FAILURE_LOG_004fd223,1); - FUN_00404204((int)local_124,s_RIOErrors_004fd22f,s_error_004fd239,s_initialization_004fd23f) - ; - *(undefined4 *)(param_3 + 0x478) = 0; - FUN_00403ecc(local_124,2); - } - } - do { - bVar1 = false; - uVar7 = FUN_0047dce3(param_3,&local_104); - iVar2 = (int)uVar7; - if (iVar2 != 0) { - switch(local_104) { - case 0x85: - switch(local_103) { - case 1: - FUN_0047a70c(param_3); - FUN_004790c8(*(int *)(param_3 + 0x490)); - FUN_0047a750(param_3); - break; - case 2: - FUN_0047a70c(param_3); - FUN_004790c8(*(int *)(param_3 + 0x490)); - FUN_0047a750(param_3); - break; - case 3: - FUN_0047a70c(param_3); - pcVar3 = FUN_00476f34((uint)local_102); - FUN_00404490(*(int *)(param_3 + 0x490),s_RIODeadLamps_004fd267,&DAT_004fd274,pcVar3); - FUN_0047a750(param_3); - break; - case 4: - *(int *)(param_3 + 0x45c) = *(int *)(param_3 + 0x45c) + (uint)local_102; - break; - case 5: - *(int *)(param_3 + 0x460) = *(int *)(param_3 + 0x460) + (uint)local_102; - break; - case 6: - *(int *)(param_3 + 0x464) = *(int *)(param_3 + 0x464) + (uint)local_102; - } - bVar1 = true; - break; - case 0x86: - *param_4 = 4; - *(uint *)(param_3 + 0x454) = (uint)local_103; - *(uint *)(param_3 + 0x458) = (uint)local_102; - break; - case 0x87: - *param_4 = 3; - uVar4 = FUN_004790a4(local_103,local_102); - fVar5 = FUN_004796c8(extraout_ECX,extraout_EDX,*(undefined4 **)(param_3 + 0x484),-uVar4); - *(float *)(param_3 + 0x440) = (float)fVar5; - uVar4 = FUN_004790a4(local_101,local_100); - fVar5 = FUN_004796c8(extraout_ECX_00,extraout_EDX_00,*(undefined4 **)(param_3 + 0x47c), - uVar4); - *(float *)(param_3 + 0x444) = (float)fVar5; - uVar4 = FUN_004790a4(local_ff,local_fe); - fVar5 = FUN_004796c8(extraout_ECX_01,extraout_EDX_01,*(undefined4 **)(param_3 + 0x480), - uVar4); - *(float *)(param_3 + 0x448) = (float)fVar5; - uVar4 = FUN_004790a4(local_fd,local_fc); - fVar5 = FUN_004796c8(extraout_ECX_02,extraout_EDX_02,*(undefined4 **)(param_3 + 0x48c), - uVar4); - *(float *)(param_3 + 0x450) = (float)fVar5; - uVar4 = FUN_004790a4(local_fb,local_fa); - fVar5 = FUN_004796c8(extraout_ECX_03,extraout_EDX_03,*(undefined4 **)(param_3 + 0x488), - uVar4); - *(float *)(param_3 + 0x44c) = (float)fVar5; - break; - case 0x88: - *param_4 = 0; - param_4[1] = (uint)local_103; - break; - case 0x89: - *param_4 = 1; - param_4[1] = (uint)local_103; - break; - case 0x8a: - *param_4 = 2; - param_4[1] = (uint)local_103; - param_4[2] = (uint)local_102; - break; - default: - bVar1 = true; - break; - case 0x8c: - if (local_103 == 0) { - *(undefined4 *)(param_3 + 0x43c) = 0; - FUN_0047a750(param_3); - } - else { - *(undefined4 *)(param_3 + 0x43c) = 1; - FUN_0047a70c(param_3); - FUN_00404bc0(*(int *)(param_3 + 0x490),s_RIOBoardErrors_004fd279); - FUN_00404bc0(*(int *)(param_3 + 0x490),s_RIODeadLamps_004fd288); - } - bVar1 = true; - } - } - } while (bVar1); - } - return iVar2; -} - - - -/* @0047a4cc file=? name=FUN_0047a4cc */ - -void __cdecl FUN_0047a4cc(int param_1) - -{ - FUN_004796b8(*(int *)(param_1 + 0x488)); - FUN_004796b8(*(int *)(param_1 + 0x48c)); - return; -} - - - -/* @0047a4f0 file=? name=FUN_0047a4f0 */ - -void __cdecl FUN_0047a4f0(int param_1,float param_2) - -{ - FUN_00479684(*(int *)(param_1 + 0x488),param_2); - FUN_00479684(*(int *)(param_1 + 0x48c),param_2); - return; -} - - - -/* @0047a520 file=? name=FUN_0047a520 */ - -void __cdecl FUN_0047a520(int param_1,float param_2) - -{ - FUN_00479684(*(int *)(param_1 + 0x484),param_2); - return; -} - - - -/* @0047a53c file=? name=FUN_0047a53c */ - -void __cdecl FUN_0047a53c(int param_1,float param_2) - -{ - FUN_00479684(*(int *)(param_1 + 0x47c),param_2); - FUN_00479684(*(int *)(param_1 + 0x480),param_2); - return; -} - - - -/* @0047a56c file=? name=FUN_0047a56c */ - -undefined8 __fastcall FUN_0047a56c(undefined4 param_1,undefined4 param_2,short *param_3) - -{ - undefined8 uVar1; - - uVar1 = CONCAT44(param_2,param_3); - if ((*(int *)(param_3 + 0x23c) != 0) && - (uVar1 = CONCAT44(param_2,param_3), *(int *)(param_3 + 0x21e) == 0)) { - uVar1 = FUN_0047ddda(param_1,param_2,param_3,&DAT_004fcf6c); - } - return uVar1; -} - - - -/* @0047a594 file=? name=FUN_0047a594 */ - -undefined8 __fastcall FUN_0047a594(undefined4 param_1,undefined4 param_2,short *param_3) - -{ - undefined8 uVar1; - - uVar1 = CONCAT44(param_2,param_3); - if ((*(int *)(param_3 + 0x23c) != 0) && - (uVar1 = CONCAT44(param_2,param_3), *(int *)(param_3 + 0x21e) == 0)) { - uVar1 = FUN_0047ddda(param_1,param_2,param_3,&DAT_004fcf6d); - } - return uVar1; -} - - - -/* @0047a5bc file=? name=FUN_0047a5bc */ - -undefined8 __fastcall FUN_0047a5bc(undefined4 param_1,undefined4 param_2,short *param_3) - -{ - undefined8 uVar1; - - uVar1 = CONCAT44(param_2,param_3); - if ((*(int *)(param_3 + 0x23c) != 0) && - (uVar1 = CONCAT44(param_2,param_3), *(int *)(param_3 + 0x21e) == 0)) { - uVar1 = FUN_0047ddda(param_1,param_2,param_3,&DAT_004fcf6e); - } - return uVar1; -} - - - -/* @0047a5e4 file=? name=FUN_0047a5e4 */ - -undefined8 __fastcall FUN_0047a5e4(undefined4 param_1,undefined4 param_2,short *param_3) - -{ - undefined8 uVar1; - - uVar1 = CONCAT44(param_2,param_3); - if ((*(int *)(param_3 + 0x23c) != 0) && - (uVar1 = CONCAT44(param_2,param_3), *(int *)(param_3 + 0x21e) == 0)) { - uVar1 = FUN_0047ddda(param_1,param_2,param_3,&DAT_004fcf6f); - } - return uVar1; -} - - - -/* @0047a60c file=? name=FUN_0047a60c */ - -undefined8 __fastcall FUN_0047a60c(undefined4 param_1,undefined4 param_2,short *param_3) - -{ - undefined8 uVar1; - - uVar1 = CONCAT44(param_2,param_3); - if ((*(int *)(param_3 + 0x23c) != 0) && - (uVar1 = CONCAT44(param_2,param_3), *(int *)(param_3 + 0x21e) == 0)) { - uVar1 = FUN_0047ddda(param_1,param_2,param_3,&DAT_004fcf71); - } - return uVar1; -} - - - -/* @0047a634 file=? name=FUN_0047a634 */ - -undefined8 __fastcall FUN_0047a634(undefined4 param_1,undefined4 param_2,short *param_3) - -{ - undefined8 uVar1; - - uVar1 = CONCAT44(param_2,param_3); - if ((*(int *)(param_3 + 0x23c) != 0) && - (uVar1 = CONCAT44(param_2,param_3), *(int *)(param_3 + 0x21e) == 0)) { - uVar1 = FUN_0047ddda(param_1,param_2,param_3,&DAT_004fcf73); - } - return uVar1; -} - - - -/* @0047a65c file=? name=FUN_0047a65c */ - -undefined8 __fastcall FUN_0047a65c(undefined4 param_1,undefined4 param_2,short *param_3) - -{ - undefined8 uVar1; - - uVar1 = CONCAT44(param_2,param_3); - if ((*(int *)(param_3 + 0x23c) != 0) && - (uVar1 = CONCAT44(param_2,param_3), *(int *)(param_3 + 0x21e) == 0)) { - uVar1 = FUN_0047ddda(param_1,param_2,param_3,&DAT_004fcf75); - } - return uVar1; -} - - - -/* @0047a684 file=? name=FUN_0047a684 */ - -undefined8 __fastcall FUN_0047a684(undefined4 param_1,undefined4 param_2,short *param_3) - -{ - undefined8 uVar1; - - uVar1 = CONCAT44(param_2,param_3); - if ((*(int *)(param_3 + 0x23c) != 0) && - (uVar1 = CONCAT44(param_2,param_3), *(int *)(param_3 + 0x21e) == 0)) { - uVar1 = FUN_0047ddda(param_1,param_2,param_3,&DAT_004fcf77); - } - return uVar1; -} - - - -/* @0047a6ac file=? name=FUN_0047a6ac */ - -undefined8 __fastcall FUN_0047a6ac(undefined4 param_1,undefined4 param_2,short *param_3) - -{ - undefined8 uVar1; - - uVar1 = CONCAT44(param_2,param_3); - if ((*(int *)(param_3 + 0x23c) != 0) && - (uVar1 = CONCAT44(param_2,param_3), *(int *)(param_3 + 0x21e) == 0)) { - uVar1 = FUN_0047ddda(param_1,param_2,param_3,&DAT_004fcf79); - } - return uVar1; -} - - - -/* @0047a6d4 file=? name=FUN_0047a6d4 */ - -undefined8 __fastcall -FUN_0047a6d4(undefined4 param_1,undefined4 param_2,short *param_3,undefined1 param_4, - undefined1 param_5) - -{ - uint uVar1; - uint uVar2; - undefined8 uVar3; - - uVar3 = CONCAT44(param_2,param_3); - if (*(int *)(param_3 + 0x23c) != 0) { - uVar2 = CONCAT31((int3)((uint)param_2 >> 8),param_4) & 0xffffff7f; - uVar1 = CONCAT31((int3)((uint)param_1 >> 8),param_5) & 0xffffff7f; - DAT_004fcf7c = (undefined1)uVar2; - DAT_004fcf7d = (undefined1)uVar1; - uVar3 = FUN_0047ddda(uVar1,uVar2,param_3,&DAT_004fcf7b); - } - return uVar3; -} - - - -/* @0047a70c file=? name=FUN_0047a70c */ - -void __cdecl FUN_0047a70c(int param_1) - -{ - int *piVar1; - - if (*(int *)(param_1 + 0x494) == 0) { - piVar1 = (int *)FUN_00402298(0x20); - if (piVar1 == (int *)0x0) { - piVar1 = (int *)0x0; - } - else { - piVar1 = FUN_00403e84(piVar1,s_FAILURE_LOG_004fd295,1); - } - *(int **)(param_1 + 0x490) = piVar1; - } - *(int *)(param_1 + 0x494) = *(int *)(param_1 + 0x494) + 1; - return; -} - - - -/* @0047a750 file=? name=FUN_0047a750 */ - -void __cdecl FUN_0047a750(int param_1) - -{ - *(int *)(param_1 + 0x494) = *(int *)(param_1 + 0x494) + -1; - if (*(int *)(param_1 + 0x494) < 1) { - *(undefined4 *)(param_1 + 0x494) = 0; - FUN_00403ecc(*(int **)(param_1 + 0x490),3); - } - return; -} - - - -/* @0047a780 file=? name=FUN_0047a780 */ - -void __cdecl FUN_0047a780(int param_1) - -{ - *(undefined4 *)(param_1 + 8) = 0; - return; -} - - - -/* @0047a78d file=? name=FUN_0047a78d */ - -uint * __cdecl FUN_0047a78d(uint *param_1,uint param_2,undefined4 param_3) - -{ - param_1[2] = 0; - FUN_0047a7af(param_1,param_2,param_3); - return param_1; -} - - - -/* @0047a7af file=? name=FUN_0047a7af */ - -void __cdecl FUN_0047a7af(uint *param_1,uint param_2,undefined4 param_3) - -{ - uint uVar1; - - if ((int *)param_1[2] != (int *)0x0) { - FUN_004022e8((int *)param_1[2]); - } - *param_1 = param_2; - uVar1 = FUN_004022b0(param_2 << 2); - param_1[2] = uVar1; - param_1[1] = 0; - for (uVar1 = 0; uVar1 < *param_1; uVar1 = uVar1 + 1) { - *(undefined4 *)(param_1[2] + uVar1 * 4) = param_3; - } - return; -} - - - -/* @0047a7f6 file=? name=FUN_0047a7f6 */ - -void __cdecl FUN_0047a7f6(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - FUN_004022e8((int *)param_1[2]); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @0047a81b file=? name=FUN_0047a81b */ - -undefined4 FUN_0047a81b(void) - -{ - return 1; -} - - - -/* @0047a825 file=? name=FUN_0047a825 */ - -void __cdecl FUN_0047a825(uint *param_1,undefined4 param_2) - -{ - *(undefined4 *)(param_1[2] + param_1[1] * 4) = param_2; - param_1[1] = param_1[1] + 1; - if (*param_1 <= param_1[1]) { - param_1[1] = 0; - } - return; -} - - - -/* @0047a84c file=? name=FUN_0047a84c */ - -int __cdecl FUN_0047a84c(uint *param_1) - -{ - int *piVar1; - uint uVar2; - int iVar3; - - iVar3 = 0; - piVar1 = (int *)param_1[2]; - for (uVar2 = 0; uVar2 < *param_1; uVar2 = uVar2 + 1) { - iVar3 = iVar3 + *piVar1; - piVar1 = piVar1 + 1; - } - return iVar3 / (int)*param_1; -} - - - -/* @0047a86e file=? name=FUN_0047a86e */ - -int __cdecl FUN_0047a86e(uint *param_1) - -{ - int *piVar1; - int iVar2; - int iVar3; - uint uVar4; - int local_8; - - iVar2 = *(int *)param_1[2]; - local_8 = 0; - piVar1 = (int *)param_1[2]; - iVar3 = iVar2; - for (uVar4 = 0; uVar4 < *param_1; uVar4 = uVar4 + 1) { - local_8 = local_8 + *piVar1; - if (*piVar1 < iVar3) { - iVar3 = *piVar1; - } - if (iVar2 < *piVar1) { - iVar2 = *piVar1; - } - piVar1 = piVar1 + 1; - } - return ((local_8 - iVar3) - iVar2) / (int)(*param_1 - 2); -} - - - -/* @0047a8d3 file=? name=FUN_0047a8d3 */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -float10 __cdecl FUN_0047a8d3(uint *param_1) - -{ - uint uVar1; - float fVar2; - float fVar3; - uint uVar4; - float local_1c; - float local_c; - float local_8; - - local_8 = 0.0; - local_c = 0.0; - uVar1 = *param_1; - fVar2 = (float)uVar1; - fVar3 = fVar2 * fVar2 * _DAT_0047a99b; - fVar2 = fVar2 * _DAT_0047a99b + fVar3; - uVar4 = param_1[1]; - local_1c = 1.0; - do { - local_8 = (float)*(int *)(param_1[2] + uVar4 * 4) + local_8; - local_c = (float)*(int *)(param_1[2] + uVar4 * 4) * local_1c + local_c; - local_1c = _DAT_0047a9b7 + local_1c; - uVar4 = uVar4 + 1; - if (uVar4 == *param_1) { - uVar4 = 0; - } - } while (uVar4 != param_1[1]); - return ((float10)uVar1 * (float10)local_c - (float10)fVar2 * (float10)local_8) / - ((float10)uVar1 * - (float10)(float)(_DAT_0047a9ab * (float10)uVar1 + - _DAT_0047a99f * (float10)uVar1 * (float10)uVar1 * (float10)uVar1 + - (float10)fVar3) - (float10)fVar2 * (float10)fVar2); -} - - - -/* @0047aa48 file=? name=FUN_0047aa48 */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -void __cdecl FUN_0047aa48(int param_1) - -{ - *(float *)(param_1 + 0xf0) = *(float *)(param_1 + 0x104) - *(float *)(param_1 + 0x100); - *(float *)(param_1 + 0xf0) = _DAT_0047aa74 * *(float *)(param_1 + 0xf0); - return; -} - - - -/* @0047aa78 file=? name=FUN_0047aa78 */ - -undefined4 * __cdecl -FUN_0047aa78(undefined4 *param_1,undefined4 param_2,undefined4 param_3,char *param_4, - undefined4 param_5) - -{ - int iVar1; - - FUN_0042d494(param_1,param_2,param_3,param_4,param_5); - *param_1 = &PTR_FUN_004fd488; - param_1[7] = PTR_FUN_004fd30c; - param_1[8] = DAT_004fd310; - param_1[9] = DAT_004fd314; - param_1[0x40] = 0; - param_1[0x41] = 0; - iVar1 = *(int *)(DAT_004efc94 + 0x3c); - (**(code **)(*(int *)(iVar1 + 0x104) + 0x18))(iVar1 + 0x104,0xffffffff,param_1 + 0x39,param_1); - (**(code **)(*(int *)(iVar1 + 0x9c0) + 0x18))(iVar1 + 0x9c0,0xffffffff,param_1 + 0x3e,param_1); - (**(code **)(*(int *)(iVar1 + 0xaa0) + 0x18))(iVar1 + 0xaa0,0xffffffff,param_1 + 0x3f,param_1); - (**(code **)(*(int *)(iVar1 + 0xa40) + 0x14))(iVar1 + 0xa40,0xffffffff,param_1,6,param_1); - (**(code **)(*(int *)(iVar1 + 0xa20) + 0x14))(iVar1 + 0xa20,0xffffffff,param_1,5,param_1); - (**(code **)(*(int *)(iVar1 + 0xa60) + 0x14))(iVar1 + 0xa60,0xffffffff,param_1,8,param_1); - (**(code **)(*(int *)(iVar1 + 0xa80) + 0x14))(iVar1 + 0xa80,0xffffffff,param_1,7,param_1); - (**(code **)(*(int *)(iVar1 + 0x1a0) + 0x14))(iVar1 + 0x1a0,0xffffffff,param_1,3,param_1); - return param_1; -} - - - -/* @0047abb0 file=? name=FUN_0047abb0 */ - -void __cdecl FUN_0047abb0(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_004fd488; - FUN_0042d4f8(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @0047abdc file=? name=FUN_0047abdc */ - -void __cdecl FUN_0047abdc(int param_1) - -{ - FUN_0041a1a4(**(int **)(param_1 + 0xc),0x4fd2c0); - return; -} - - - -/* @0047abf8 file=? name=FUN_0047abf8 */ - -void __cdecl FUN_0047abf8(int param_1) - -{ - if (*(int *)(param_1 + 0x108) < 1) { - if (*(int *)(param_1 + 0x10c) < 1) { - *(undefined4 *)(param_1 + 0xec) = 0; - *(undefined4 *)(param_1 + 0xf4) = 0; - } - else { - *(undefined4 *)(param_1 + 0xec) = 0x3f800000; - *(undefined4 *)(param_1 + 0xf4) = 1; - } - } - else { - *(undefined4 *)(param_1 + 0xec) = 0x3f800000; - *(undefined4 *)(param_1 + 0xf4) = 0; - } - FUN_0047aa48(param_1); - return; -} - - - -/* @0047ac5c file=? name=FUN_0047ac5c */ - -undefined4 * __cdecl -FUN_0047ac5c(undefined4 *param_1,undefined4 param_2,undefined4 param_3,char *param_4, - undefined4 param_5) - -{ - int iVar1; - - FUN_0047aa78(param_1,param_2,param_3,param_4,param_5); - *param_1 = &PTR_FUN_004fd458; - param_1[7] = PTR_FUN_004fd358; - param_1[8] = DAT_004fd35c; - param_1[9] = DAT_004fd360; - param_1[0x43] = 0; - param_1[0x42] = 0; - iVar1 = *(int *)(DAT_004efc94 + 0x3c); - (**(code **)(*(int *)(iVar1 + 0xa00) + 0x18))(iVar1 + 0xa00,0xffffffff,param_1 + 0x42,param_1); - (**(code **)(*(int *)(iVar1 + 0x9e0) + 0x18))(iVar1 + 0x9e0,0xffffffff,param_1 + 0x43,param_1); - return param_1; -} - - - -/* @0047acf4 file=? name=FUN_0047acf4 */ - -void __cdecl FUN_0047acf4(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_004fd458; - FUN_0047abb0(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @0047ad20 file=? name=FUN_0047ad20 */ - -void __cdecl FUN_0047ad20(int param_1) - -{ - FUN_0041a1a4(**(int **)(param_1 + 0xc),0x4fd328); - return; -} - - - -/* @0047ad3c file=? name=FUN_0047ad3c */ - -undefined4 * __cdecl -FUN_0047ad3c(undefined4 *param_1,undefined4 param_2,undefined4 param_3,char *param_4, - undefined4 param_5) - -{ - int iVar1; - - FUN_0047aa78(param_1,param_2,param_3,param_4,param_5); - *param_1 = &PTR_FUN_004fd428; - iVar1 = *(int *)(DAT_004efc94 + 0x3c); - (**(code **)(*(int *)(iVar1 + 0x24) + 0x18))(iVar1 + 0x24,0xffffffff,param_1 + 0x3b,param_1); - (**(code **)(*(int *)(iVar1 + 0x9a0) + 0x18))(iVar1 + 0x9a0,0xffffffff,param_1 + 0x3d,param_1); - (**(code **)(*(int *)(iVar1 + 0x44) + 0x18))(iVar1 + 0x44,0xffffffff,param_1 + 0x40,param_1); - (**(code **)(*(int *)(iVar1 + 100) + 0x18))(iVar1 + 100,0xffffffff,param_1 + 0x41,param_1); - return param_1; -} - - - -/* @0047add4 file=? name=FUN_0047add4 */ - -void __cdecl FUN_0047add4(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_004fd428; - FUN_0047abb0(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @0047ae00 file=? name=FUN_0047ae00 */ - -void __cdecl FUN_0047ae00(int param_1) - -{ - FUN_0041a1a4(**(int **)(param_1 + 0xc),0x4fd374); - return; -} - - - -/* @0047b2ec file=? name=FUN_0047b2ec */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -undefined4 __cdecl FUN_0047b2ec(int param_1,undefined4 param_2,undefined *param_3) - -{ - int *piVar1; - char *pcVar2; - char *pcVar3; - char *pcVar4; - int iVar5; - char *pcVar6; - bool bVar7; - int local_c; - int *local_8; - - _DAT_004fd54c = 0; - FUN_00402a98((int *)&local_8,&DAT_0052330c,&DAT_004fd700); - piVar1 = local_8 + 3; - *piVar1 = *piVar1 + -1; - if (*piVar1 == 0) { - FUN_004024d8(local_8,3); - } - DAT_00523310 = 0; - pcVar3 = (char *)FUN_004dee74(s_REVIEW_004fd701); - DAT_004fd550 = 0; - if (pcVar3 != (char *)0x0) { - pcVar6 = &DAT_004fd708; - pcVar4 = pcVar3; - do { - if (*pcVar4 != *pcVar6) goto LAB_0047b37c; - bVar7 = true; - if (*pcVar4 == '\0') break; - pcVar2 = pcVar4 + 1; - if (*pcVar2 != pcVar6[1]) goto LAB_0047b37c; - pcVar4 = pcVar4 + 2; - pcVar6 = pcVar6 + 2; - bVar7 = *pcVar2 == '\0'; - } while (!bVar7); - if (bVar7) { - DAT_004fd550 = 1; - } - else { -LAB_0047b37c: - pcVar4 = &DAT_004fd70a; - do { - if (*pcVar3 != *pcVar4) goto LAB_0047b3ab; - bVar7 = true; - if (*pcVar3 == '\0') break; - pcVar6 = pcVar3 + 1; - if (*pcVar6 != pcVar4[1]) goto LAB_0047b3ab; - pcVar3 = pcVar3 + 2; - pcVar4 = pcVar4 + 2; - bVar7 = *pcVar6 == '\0'; - } while (!bVar7); - if (bVar7) { - DAT_004fd550 = 2; - } - } - } -LAB_0047b3ab: - if ((1 < param_1) && (local_c = 1, 1 < param_1)) { - do { - iVar5 = (*(code *)param_3)(&local_c,param_1,param_2); - if (iVar5 == 0) { - return 0; - } - local_c = local_c + 1; - } while (local_c < param_1); - } - return 1; -} - - - -/* @0047b3e8 file=? name=FUN_0047b3e8 */ - -undefined4 __cdecl FUN_0047b3e8(int param_1) - -{ - int iVar1; - - iVar1 = FUN_0041a1a4(**(int **)(param_1 + 0xc),0x4fd514); - if (iVar1 == 0) { - return 0; - } - return 1; -} - - - -/* @0047b410 file=? name=FUN_0047b410 */ - -undefined4 * __cdecl -FUN_0047b410(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4, - undefined4 param_5) - -{ - int iVar1; - - FUN_0044dfe0(param_1,param_2,param_3,param_4,param_5); - *param_1 = &PTR_FUN_004fd8bc; - iVar1 = FUN_004dee74(s_DPLARG_004fd70c); - param_1[0x34] = iVar1; - return param_1; -} - - - -/* @0047b44c file=? name=FUN_0047b44c */ - -void __cdecl FUN_0047b44c(int *param_1) - -{ - FUN_0047b468(param_1); - FUN_0045046c(param_1[8]); - return; -} - - - -/* @0047b468 file=? name=FUN_0047b468 */ - -void __cdecl FUN_0047b468(int *param_1) - -{ - FUN_0044e1b0(param_1); - return; -} - - - -/* @0047b478 file=? name=FUN_0047b478 */ - -undefined4 FUN_0047b478(void) - -{ - undefined4 *puVar1; - undefined4 uVar2; - - puVar1 = (undefined4 *)FUN_00402298(0xc); - if (puVar1 == (undefined4 *)0x0) { - uVar2 = 0; - } - else { - uVar2 = FUN_0044c2d0(puVar1,0xffffffff); - } - return uVar2; -} - - - -/* @0047b49c file=? name=FUN_0047b49c */ - -int * FUN_0047b49c(void) - -{ - int *piVar1; - - piVar1 = (int *)FUN_00402298(0x80); - if (piVar1 == (int *)0x0) { - piVar1 = (int *)0x0; - } - else { - piVar1 = FUN_004501d4(piVar1); - } - return piVar1; -} - - - -/* @0047b4c0 file=? name=FUN_0047b4c0 */ - -undefined4 * __cdecl FUN_0047b4c0(undefined4 param_1) - -{ - undefined4 *puVar1; - - puVar1 = (undefined4 *)FUN_00402298(0xd10); - if (puVar1 == (undefined4 *)0x0) { - puVar1 = (undefined4 *)0x0; - } - else { - puVar1 = FUN_00475c18(puVar1); - } - (**(code **)(puVar1[0x68] + 0x14))(puVar1 + 0x68,0xffffffff,param_1,7,param_1); - return puVar1; -} - - - -/* @0047b508 file=? name=FUN_0047b508 */ - -undefined4 * FUN_0047b508(void) - -{ - undefined4 *puVar1; - - puVar1 = (undefined4 *)FUN_00402298(0x38); - if (puVar1 == (undefined4 *)0x0) { - puVar1 = (undefined4 *)0x0; - } - else { - puVar1 = FUN_0047ce3c(puVar1,&DAT_004fdc6c); - } - return puVar1; -} - - - -/* @0047b530 file=? name=FUN_0047b530 */ - -undefined4 * __cdecl FUN_0047b530(int param_1) - -{ - undefined4 *puVar1; - - if (*(int *)(param_1 + 0xd0) == 0) { - puVar1 = (undefined4 *)0x0; - } - else { - puVar1 = (undefined4 *)FUN_00402298(0x3e0); - if (puVar1 == (undefined4 *)0x0) { - return (undefined4 *)0x0; - } - puVar1 = FUN_0045a180(puVar1,DAT_004e8238,DAT_004e823c,1,0,1); - } - return puVar1; -} - - - -/* @0047b57c file=? name=FUN_0047b57c */ - -undefined4 * FUN_0047b57c(void) - -{ - int iVar1; - int iVar2; - undefined4 *puVar3; - - iVar1 = FUN_004dee74(s_AWE_FRONT_004fd713); - iVar2 = FUN_004dee74(s_AWE_REAR_004fd71d); - if ((iVar1 == 0) || (iVar2 == 0)) { - puVar3 = (undefined4 *)0x0; - } - else { - puVar3 = (undefined4 *)FUN_00402298(0x1b0); - if (puVar3 == (undefined4 *)0x0) { - return (undefined4 *)0x0; - } - puVar3 = FUN_0046739c(puVar3,DAT_004e8238,0); - } - return puVar3; -} - - - -/* @0047b5d0 file=? name=FUN_0047b5d0 */ - -undefined4 * FUN_0047b5d0(void) - -{ - int iVar1; - undefined4 *puVar2; - - iVar1 = FUN_004dee74(s_L4GAUGE_004fd726); - if (iVar1 == 0) { - puVar2 = (undefined4 *)0x0; - } - else { - puVar2 = (undefined4 *)FUN_00402298(0x1c53c); - if (puVar2 == (undefined4 *)0x0) { - return (undefined4 *)0x0; - } - puVar2 = FUN_0046f97c(puVar2); - } - return puVar2; -} - - - -/* @0047b608 file=? name=FUN_0047b608 */ - -void __cdecl FUN_0047b608(int param_1) - -{ - FUN_0047bba8(param_1,0); - FUN_0044e7ac(param_1); - return; -} - - - -/* @0047b624 file=? name=FUN_0047b624 */ - -void __cdecl FUN_0047b624(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_004fd8bc; - FUN_0044e8a0(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @0047b650 file=? name=FUN_0047b650 */ - -int __cdecl FUN_0047b650(int *param_1,undefined4 param_2) - -{ - FUN_0044ea8c(param_1,param_2); - FUN_0047bba8((int)param_1,1); - return param_1[0x1b]; -} - - - -/* @0047b678 file=munga_l4/l4app.cpp name=FUN_0047b678 */ - -int * __cdecl FUN_0047b678(int param_1,int param_2) - -{ - undefined4 *puVar1; - int iVar2; - int *piVar3; - char *pcVar4; - char *pcVar5; - char local_3c [2]; - char acStack_3a [30]; - undefined4 local_1c; - undefined4 local_18; - undefined4 *local_c; - undefined4 *local_8; - - piVar3 = (int *)0x0; - if (*(int *)(param_2 + 0x1c) == 0x45) { - piVar3 = FUN_0042d16c(param_2); - pcVar4 = s_ControlsMapper_004fd72e; - pcVar5 = local_3c; - for (iVar2 = 3; iVar2 != 0; iVar2 = iVar2 + -1) { - *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4; - pcVar4 = pcVar4 + 4; - pcVar5 = pcVar5 + 4; - } - *(undefined2 *)pcVar5 = *(undefined2 *)pcVar4; - pcVar5[2] = pcVar4[2]; - local_1c = 0xf; - local_18 = 0x30; - iVar2 = *(int *)(*(int *)(param_1 + 0x3c) + 0xc98); - if (iVar2 == 2) { - local_8 = (undefined4 *)FUN_00402298(0x110); - if (local_8 == (undefined4 *)0x0) { - puVar1 = (undefined4 *)0x0; - } - else { - puVar1 = FUN_0047ac5c(local_8,piVar3,0,local_3c,&DAT_004fd318); - } - FUN_0042c630((int)piVar3,puVar1); - } - else if (iVar2 == 4) { - local_c = (undefined4 *)FUN_00402298(0x108); - if (local_c == (undefined4 *)0x0) { - puVar1 = (undefined4 *)0x0; - } - else { - puVar1 = FUN_0047ad3c(local_c,piVar3,0,local_3c,&DAT_004fd364); - } - FUN_0042c630((int)piVar3,puVar1); - } - else { - FUN_0040385c(s_L4Application__MakeViewpointEnti_004fd73d, - s_d__tesla_bt_munga_l4_L4APP_CPP_004fd775,0x231); - } - if (*(int **)(param_1 + 0x4c) != (int *)0x0) { - FUN_0046ff64(*(int **)(param_1 + 0x4c),&DAT_004fd794,piVar3); - } - } - return piVar3; -} - - - -/* @0047b788 file=munga_l4/l4app.cpp name=FUN_0047b788 */ - -void __cdecl FUN_0047b788(int param_1) - -{ - int iVar1; - bool bVar2; - undefined4 *puVar3; - - iVar1 = *(int *)(param_1 + 0x88); - if (iVar1 == 3) { - FUN_0047bba8(param_1,0); - } - else if (iVar1 == 4) { - iVar1 = *(int *)(param_1 + 0x3c); - if ((*(int *)(iVar1 + 0xcec) == 0) || (*(int *)(iVar1 + 0xcf4) != 0)) { - bVar2 = false; - } - else { - bVar2 = true; - } - if (bVar2) { - puVar3 = (undefined4 *)FUN_00414b60(); - *(undefined4 *)(iVar1 + 0xcf0) = *puVar3; - *(undefined4 *)(iVar1 + 0xcf8) = 1; - } - else { - if ((*(int *)(iVar1 + 0xcec) == 0) || (*(int *)(iVar1 + 0xcf4) == 0)) { - bVar2 = false; - } - else { - bVar2 = true; - } - if (bVar2) { - puVar3 = (undefined4 *)FUN_00414b60(); - *(undefined4 *)(iVar1 + 0xcf0) = *puVar3; - *(undefined4 *)(iVar1 + 0xcf8) = 1; - } - } - } - else if (iVar1 != 5) { - FUN_0040385c(s_Application__RunMissionMessageHa_004fd799, - s_d__tesla_bt_munga_l4_L4APP_CPP_004fd7d4,0x277); - } - FUN_0044ecdc(param_1); - return; -} - - - -/* @0047b864 file=? name=FUN_0047b864 */ - -void __cdecl FUN_0047b864(int param_1) - -{ - int *piVar1; - int iVar2; - uint local_14 [4]; - - FUN_0044eeb4(param_1); - FUN_0047bba8(param_1,1); - local_14[0] = 0xc; - local_14[1] = 0xc; - local_14[2] = 1; - piVar1 = (int *)FUN_00414b60(); - local_14[3] = *piVar1; - iVar2 = FUN_004dcd94(); - local_14[3] = local_14[3] + iVar2; - FUN_0041acbc(*(int *)(param_1 + 0x60),1,param_1,local_14,local_14[3]); - return; -} - - - -/* @0047bb20 file=? name=FUN_0047bb20 */ - -void __cdecl FUN_0047bb20(int param_1) - -{ - FUN_0047bba8(param_1,0); - return; -} - - - -/* @0047bb34 file=? name=FUN_0047bb34 */ - -undefined8 __cdecl FUN_0047bb34(int param_1,int param_2) - -{ - undefined8 uVar1; - - if (param_2 != 0) { - FUN_00476568(*(int *)(param_1 + 0x3c),0x16,0x3c); - FUN_00476568(*(int *)(param_1 + 0x3c),0x17,0x3c); - uVar1 = FUN_00476568(*(int *)(param_1 + 0x3c),0x1e,0x3c); - return uVar1; - } - FUN_00476568(*(int *)(param_1 + 0x3c),0x16,0); - FUN_00476568(*(int *)(param_1 + 0x3c),0x17,0); - uVar1 = FUN_00476568(*(int *)(param_1 + 0x3c),0x1e,0); - return uVar1; -} - - - -/* @0047bba8 file=? name=FUN_0047bba8 */ - -void __cdecl FUN_0047bba8(int param_1,int param_2) - -{ - FUN_0047bb34(param_1,param_2); - if (param_2 == 0) { - FUN_00476568(*(int *)(param_1 + 0x3c),0x3e,0); - if (*(int *)(param_1 + 0x4c) != 0) { - FUN_0046ff44(*(int *)(param_1 + 0x4c),1.5); - } - } - else { - FUN_00476568(*(int *)(param_1 + 0x3c),0x3e,0x3c); - if (*(int *)(param_1 + 0x4c) != 0) { - FUN_0046ff24(*(int *)(param_1 + 0x4c),1.5); - } - } - return; -} - - - -/* @0047bd48 file=? name=FUN_0047bd48 */ - -undefined4 * __cdecl FUN_0047bd48(undefined4 *param_1) - -{ - FUN_0043457c(param_1); - *param_1 = &PTR_FUN_004fdbfc; - return param_1; -} - - - -/* @0047bd64 file=? name=FUN_0047bd64 */ - -void __cdecl FUN_0047bd64(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_004fdbfc; - FUN_004345c0(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @0047bd90 file=? name=FUN_0047bd90 */ - -void FUN_0047bd90(void) - -{ - return; -} - - - -/* @0047bd98 file=? name=FUN_0047bd98 */ - -void FUN_0047bd98(void) - -{ - return; -} - - - -/* @0047bda0 file=? name=FUN_0047bda0 */ - -void __cdecl FUN_0047bda0(undefined4 param_1,undefined4 *param_2) - -{ - undefined4 *puVar1; - - puVar1 = (undefined4 *)FUN_00414b60(); - param_2[3] = *puVar1; - FUN_0044f7f4(*(int **)(*(int *)PTR_DAT_004fd91c + 0x18),param_2); - return; -} - - - -/* @0047bdcc file=? name=FUN_0047bdcc */ - -void FUN_0047bdcc(void) - -{ - return; -} - - - -/* @0047bdd4 file=? name=FUN_0047bdd4 */ - -int * __cdecl FUN_0047bdd4(int *param_1) - -{ - FUN_004501d4(param_1); - *param_1 = (int)&PTR_FUN_004fdbc0; - return param_1; -} - - - -/* @0047bdf0 file=? name=FUN_0047bdf0 */ - -void __cdecl FUN_0047bdf0(int *param_1,int param_2) - -{ - int *piVar1; - byte bVar2; - int *piVar3; - int iVar4; - undefined4 *puVar5; - uint *puVar6; - int iVar7; - int local_20 [5]; - int *local_c; - int *local_8; - - FUN_00450554(param_1,param_2); - piVar3 = *(int **)(*(int *)PTR_DAT_004fd91c + 0x18); - puVar5 = (undefined4 *)(**(code **)*piVar3)(piVar3); - *puVar5 = *(undefined4 *)(DAT_004efc94 + 0x54); - (**(code **)(*piVar3 + 0x14))(piVar3,4); - bVar2 = *(byte *)(*(int *)(DAT_004efc94 + 0x68) + 5); - puVar6 = (uint *)(**(code **)*piVar3)(piVar3); - *puVar6 = (uint)bVar2; - (**(code **)(*piVar3 + 0x14))(piVar3,4); - iVar4 = *(int *)(DAT_004efc94 + 0x2c); - FUN_0044d834(local_20,param_2); - while( true ) { - iVar7 = (**(code **)(local_20[0] + 0x28))(local_20); - if (iVar7 == 0) break; - local_c = *(int **)(iVar7 + 0xc); - local_c[3] = local_c[3] + 1; - local_c[3] = local_c[3] + 1; - local_c[3] = local_c[3] + 1; - local_8 = local_c; - iVar7 = FUN_00452244(param_1,local_c); - iVar7 = FUN_004290d8(iVar4,iVar7); - puVar6 = (uint *)(**(code **)*piVar3)(piVar3); - *puVar6 = (uint)(iVar7 != *(int *)(iVar4 + 0x14)); - (**(code **)(*piVar3 + 0x14))(piVar3,4); - puVar5 = (undefined4 *)(**(code **)*piVar3)(piVar3); - *puVar5 = *(undefined4 *)(iVar7 + 0xc); - (**(code **)(*piVar3 + 0x14))(piVar3,4); - piVar1 = local_8 + 3; - *piVar1 = *piVar1 + -1; - if (*piVar1 == 0) { - FUN_004024d8(local_8,3); - } - piVar1 = local_c + 3; - *piVar1 = *piVar1 + -1; - if (*piVar1 == 0) { - FUN_004024d8(local_c,3); - } - } - FUN_0044d858(local_20,2); - return; -} - - - -/* @0047bf28 file=? name=FUN_0047bf28 */ - -void __cdecl FUN_0047bf28(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_004fdbc0; - FUN_00450960(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @0047bf54 file=? name=FUN_0047bf54 */ - -void __cdecl FUN_0047bf54(int *param_1,undefined4 *param_2,int param_3) - -{ - int *piVar1; - undefined4 *puVar2; - - if (*(int *)(param_3 + 4) == 3) { - piVar1 = *(int **)(*(int *)PTR_DAT_004fd91c + 0x18); - if (*(int *)(param_3 + 0xc) == 0) { - (**(code **)(*piVar1 + 0xc))(piVar1,0); - } - puVar2 = (undefined4 *)FUN_00414b60(); - param_2[3] = *puVar2; - FUN_0044f7f4(piVar1,param_2); - } - FUN_0041d59c(param_1,param_2,param_3); - return; -} - - - -/* @0047bfc4 file=? name=FUN_0047bfc4 */ - -undefined4 * __cdecl FUN_0047bfc4(undefined4 *param_1) - -{ - FUN_0041d5b4(param_1,&DAT_004e3744); - *param_1 = &PTR_FUN_004fdb84; - return param_1; -} - - - -/* @0047bfe4 file=? name=FUN_0047bfe4 */ - -void FUN_0047bfe4(undefined4 param_1,int param_2) - -{ - int *piVar1; - uint uVar2; - int *piVar3; - uint *puVar4; - undefined4 *puVar5; - int iVar6; - uint uVar7; - uint auStack_38 [8]; - undefined4 uStack_18; - int iStack_14; - int *piStack_10; - int *piStack_c; - int iStack_8; - - FUN_0044d834(auStack_38 + 3,param_2); - piVar1 = *(int **)(DAT_004efc94 + 0x18); - piVar3 = (int *)(**(code **)*piVar1)(piVar1); - iVar6 = *piVar3; - (**(code **)(*piVar1 + 0x14))(piVar1,4); - puVar4 = (uint *)(**(code **)*piVar1)(piVar1); - uVar2 = *puVar4; - (**(code **)(*piVar1 + 0x14))(piVar1,4); - if (iVar6 != *(int *)(DAT_004efc94 + 0x54)) { - FUN_004dbb24(&DAT_00524e20,s_Error___Not_a_spool_file_for_thi_004fd9b0,(char *)0x0); - FUN_004036a0(1); - } - uVar7 = (uint)*(byte *)(*(int *)(DAT_004efc94 + 0x68) + 5); - if (uVar2 != uVar7) { - FUN_004dbb24(&DAT_00524e20,s_Error___Spool_file_major_data_ve_004fd9e2,(char *)0x0); - piVar3 = FUN_004db78c(&DAT_00524e20,uVar7); - FUN_004dbb24(piVar3,s___not_004fda15,(char *)0x0); - piVar3 = FUN_004db78c(piVar3,uVar2); - FUN_004dbb24(piVar3,&DAT_004fda1c,(char *)0x0); - FUN_004036a0(1); - } - iStack_8 = *(int *)(DAT_004efc94 + 0x2c); - while( true ) { - iVar6 = (**(code **)(auStack_38[3] + 0x28))(auStack_38 + 3); - if (iVar6 == 0) break; - piStack_10 = *(int **)(iVar6 + 0xc); - piStack_10[3] = piStack_10[3] + 1; - piStack_10[3] = piStack_10[3] + 1; - piStack_c = piStack_10; - piVar3 = (int *)(**(code **)*piVar1)(piVar1); - iStack_14 = *piVar3; - (**(code **)(*piVar1 + 0x14))(piVar1,4); - puVar5 = (undefined4 *)(**(code **)*piVar1)(piVar1); - uStack_18 = *puVar5; - (**(code **)(*piVar1 + 0x14))(piVar1,4); - puVar5 = (undefined4 *)FUN_00402298(0x1068); - if (puVar5 == (undefined4 *)0x0) { - puVar5 = (undefined4 *)0x0; - } - else { - puVar5 = FUN_00450134(puVar5,uStack_18,*(undefined4 *)(iVar6 + 0x10),0,0,(int *)&piStack_c); - } - if (iStack_14 == 0) { - FUN_00428ee0(iStack_8,(int)puVar5); - } - else { - FUN_00428f94(iStack_8,(int)puVar5); - } - piVar3 = piStack_c + 3; - *piVar3 = *piVar3 + -1; - if (*piVar3 == 0) { - FUN_004024d8(piStack_c,3); - } - piVar3 = piStack_10 + 3; - *piVar3 = *piVar3 + -1; - if (*piVar3 == 0) { - FUN_004024d8(piStack_10,3); - } - } - auStack_38[0] = 0xc; - auStack_38[1] = 10; - auStack_38[2] = 1; - FUN_0041acbc(*(int *)(DAT_004efc94 + 0x60),2,DAT_004efc94,auStack_38,DAT_004e17f4); - FUN_0044d858((int *)(auStack_38 + 3),2); - return; -} - - - -/* @0047bfea file=? name=FUN_0047bfea */ - -void FUN_0047bfea(void) - -{ - int *piVar1; - uint uVar2; - int iVar3; - int *piVar4; - undefined4 uVar5; - int *piVar6; - uint *puVar7; - undefined4 *puVar8; - int iVar9; - uint uVar10; - int unaff_EBP; - - FUN_0044d834((undefined4 *)(unaff_EBP + -0x28),*(int *)(unaff_EBP + 0xc)); - piVar1 = *(int **)(DAT_004efc94 + 0x18); - piVar6 = (int *)(**(code **)*piVar1)(piVar1); - iVar9 = *piVar6; - (**(code **)(*piVar1 + 0x14))(piVar1,4); - puVar7 = (uint *)(**(code **)*piVar1)(piVar1); - uVar2 = *puVar7; - (**(code **)(*piVar1 + 0x14))(piVar1,4); - if (iVar9 != *(int *)(DAT_004efc94 + 0x54)) { - FUN_004dbb24(&DAT_00524e20,s_Error___Not_a_spool_file_for_thi_004fd9b0,(char *)0x0); - FUN_004036a0(1); - } - uVar10 = (uint)*(byte *)(*(int *)(DAT_004efc94 + 0x68) + 5); - if (uVar2 != uVar10) { - FUN_004dbb24(&DAT_00524e20,s_Error___Spool_file_major_data_ve_004fd9e2,(char *)0x0); - piVar6 = FUN_004db78c(&DAT_00524e20,uVar10); - FUN_004dbb24(piVar6,s___not_004fda15,(char *)0x0); - piVar6 = FUN_004db78c(piVar6,uVar2); - FUN_004dbb24(piVar6,&DAT_004fda1c,(char *)0x0); - FUN_004036a0(1); - } - *(undefined4 *)(unaff_EBP + -4) = *(undefined4 *)(DAT_004efc94 + 0x2c); - while( true ) { - iVar9 = (**(code **)(*(int *)(unaff_EBP + -0x28) + 0x28))(unaff_EBP + -0x28); - if (iVar9 == 0) break; - iVar3 = *(int *)(iVar9 + 0xc); - *(int *)(unaff_EBP + -0xc) = iVar3; - piVar6 = (int *)(iVar3 + 0xc); - *piVar6 = *piVar6 + 1; - *(int *)(unaff_EBP + -8) = *(int *)(unaff_EBP + -0xc); - piVar6 = (int *)(*(int *)(unaff_EBP + -0xc) + 0xc); - *piVar6 = *piVar6 + 1; - puVar8 = (undefined4 *)(**(code **)*piVar1)(piVar1); - *(undefined4 *)(unaff_EBP + -0x10) = *puVar8; - (**(code **)(*piVar1 + 0x14))(piVar1,4); - puVar8 = (undefined4 *)(**(code **)*piVar1)(piVar1); - *(undefined4 *)(unaff_EBP + -0x14) = *puVar8; - (**(code **)(*piVar1 + 0x14))(piVar1,4); - puVar8 = (undefined4 *)FUN_00402298(0x1068); - if (puVar8 == (undefined4 *)0x0) { - puVar8 = (undefined4 *)0x0; - } - else { - puVar8 = FUN_00450134(puVar8,*(undefined4 *)(unaff_EBP + -0x14),*(undefined4 *)(iVar9 + 0x10), - 0,0,(int *)(unaff_EBP + -8)); - } - if (*(int *)(unaff_EBP + -0x10) == 0) { - FUN_00428ee0(*(int *)(unaff_EBP + -4),(int)puVar8); - } - else { - FUN_00428f94(*(int *)(unaff_EBP + -4),(int)puVar8); - } - piVar4 = *(int **)(unaff_EBP + -8); - piVar6 = piVar4 + 3; - *piVar6 = *piVar6 + -1; - if (*piVar6 == 0) { - FUN_004024d8(piVar4,3); - } - piVar4 = *(int **)(unaff_EBP + -0xc); - piVar6 = piVar4 + 3; - *piVar6 = *piVar6 + -1; - if (*piVar6 == 0) { - FUN_004024d8(piVar4,3); - } - } - *(undefined4 *)(unaff_EBP + -0x34) = 0xc; - *(undefined4 *)(unaff_EBP + -0x30) = 10; - uVar5 = DAT_004e17f4; - *(undefined4 *)(unaff_EBP + -0x2c) = 1; - FUN_0041acbc(*(int *)(DAT_004efc94 + 0x60),2,DAT_004efc94,(uint *)(unaff_EBP + -0x34),uVar5); - FUN_0044d858((int *)(unaff_EBP + -0x28),2); - return; -} - - - diff --git a/reference/decomp/all/part_010.c b/reference/decomp/all/part_010.c index 3dfa02f..a6e46f6 100644 --- a/reference/decomp/all/part_010.c +++ b/reference/decomp/all/part_010.c @@ -1,3 +1,2483 @@ +/* @00479398 file=? name=FUN_00479398 */ + +void __cdecl FUN_00479398(int param_1) + +{ + *(undefined4 *)(param_1 + 0xc) = 0; + *(undefined4 *)(param_1 + 0x14) = 10000; + *(undefined4 *)(param_1 + 0x18) = 0xffffd8f0; + return; +} + + + +/* @004793b4 file=? name=FUN_004793b4 */ + +void __cdecl FUN_004793b4(int param_1,int param_2) + +{ + int iVar1; + + *(int *)(param_1 + 0x1c) = *(int *)(param_1 + 0x10); + iVar1 = *(int *)(param_1 + 0x18) - *(int *)(param_1 + 0x14); + if (iVar1 < 0) { + iVar1 = -iVar1; + } + if (iVar1 < 10) { + if (*(int *)(param_1 + 8) == 1) { + *(int *)(param_1 + 0x14) = *(int *)(param_1 + 0x10) + -100; + *(int *)(param_1 + 0x18) = *(int *)(param_1 + 0x1c) + 100; + } + else { + *(undefined4 *)(param_1 + 0x14) = 0; + *(undefined4 *)(param_1 + 0x18) = 100; + } + } + else { + *(int *)(param_1 + 0x18) = *(int *)(param_1 + 0x18) - iVar1 / 0x21; + *(int *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + iVar1 / 0x21; + } + if ((*(int *)(param_1 + 0x34) != 0) && (param_2 != 0)) { + FUN_00404298(param_2,*(char **)(param_1 + 4),PTR_DAT_004fcf4c,*(uint *)(param_1 + 0x18)); + FUN_00404298(param_2,*(char **)(param_1 + 4),PTR_DAT_004fcf54,*(uint *)(param_1 + 0x14)); + if (*(int *)(param_1 + 8) == 1) { + FUN_00404298(param_2,*(char **)(param_1 + 4),PTR_s_center_004fcf50,*(uint *)(param_1 + 0x1c)); + } + } + FUN_004795bc(param_1); + *(undefined4 *)(param_1 + 0xc) = 1; + return; +} + + + +/* @00479478 file=? name=FUN_00479478 */ + +float10 __cdecl FUN_00479478(int param_1,int param_2) + +{ + int iVar1; + int iVar2; + undefined4 uVar3; + float local_8; + + local_8 = 0.0; + *(int *)(param_1 + 0x10) = param_2; + FUN_0047a825((uint *)(param_1 + 0x38),param_2); + iVar1 = FUN_0047a86e((uint *)(param_1 + 0x38)); + if (iVar1 < *(int *)(param_1 + 0x14)) { + *(int *)(param_1 + 0x14) = iVar1; + } + if (*(int *)(param_1 + 0x18) < iVar1) { + *(int *)(param_1 + 0x18) = iVar1; + } + if (*(int *)(param_1 + 8) == 0) { + iVar1 = *(int *)(param_1 + 0x14); + iVar2 = FUN_004dcd94(); + iVar1 = (param_2 - iVar1) - iVar2; + if ((0 < iVar1) && (iVar2 = *(int *)(param_1 + 0x18) - iVar2, 0 < iVar2)) { + local_8 = (float)iVar1 / (float)iVar2; + } + } + else if (*(int *)(param_1 + 8) == 1) { + if (*(int *)(param_1 + 0xc) == 0) { + *(int *)(param_1 + 0x1c) = *(int *)(param_1 + 0x18) - *(int *)(param_1 + 0x14) >> 1; + uVar3 = FUN_004dcd94(); + *(undefined4 *)(param_1 + 0x2c) = uVar3; + *(undefined4 *)(param_1 + 0x24) = uVar3; + } + iVar1 = param_2 - *(int *)(param_1 + 0x1c); + if (iVar1 < 0) { + iVar1 = iVar1 + *(int *)(param_1 + 0x24); + if ((iVar1 < 0) && (iVar2 = *(int *)(param_1 + 0x20), 0 < iVar2)) { + if (-iVar2 < iVar1) { + local_8 = (float)iVar1 / (float)iVar2; + } + else { + local_8 = -1.0; + } + } + } + else { + iVar1 = iVar1 - *(int *)(param_1 + 0x2c); + if ((0 < iVar1) && (iVar2 = *(int *)(param_1 + 0x28), 0 < iVar2)) { + if (iVar1 < iVar2) { + local_8 = (float)iVar1 / (float)iVar2; + } + else { + local_8 = 1.0; + } + } + } + } + return (float10)local_8; +} + + + +/* @004795b0 file=? name=FUN_004795b0 */ + +undefined4 FUN_004795b0(void) + +{ + return 1; +} + + + +/* @004795bc file=? name=FUN_004795bc */ + +void __cdecl FUN_004795bc(int param_1) + +{ + int iVar1; + + iVar1 = FUN_004dcd94(); + *(int *)(param_1 + 0x24) = iVar1; + *(int *)(param_1 + 0x20) = *(int *)(param_1 + 0x1c) - (*(int *)(param_1 + 0x14) + iVar1); + iVar1 = FUN_004dcd94(); + *(int *)(param_1 + 0x2c) = iVar1; + *(int *)(param_1 + 0x28) = (*(int *)(param_1 + 0x18) - iVar1) - *(int *)(param_1 + 0x1c); + return; +} + + + +/* @0047962c file=? name=FUN_0047962c */ + +undefined4 * __cdecl +FUN_0047962c(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4, + float param_5) + +{ + *param_1 = param_2; + param_1[3] = param_3; + param_1[4] = param_4; + FUN_00479684((int)param_1,param_5); + FUN_004796b8((int)param_1); + return param_1; +} + + + +/* @0047965c file=? name=FUN_0047965c */ + +void __cdecl FUN_0047965c(int *param_1,byte param_2) + +{ + if ((param_1 != (int *)0x0) && ((param_2 & 1) != 0)) { + FUN_004022d0(param_1); + } + return; +} + + + +/* @00479678 file=? name=FUN_00479678 */ + +undefined4 FUN_00479678(void) + +{ + return 1; +} + + + +/* @00479684 file=? name=FUN_00479684 */ + +void __cdecl FUN_00479684(int param_1,float param_2) + +{ + undefined4 uVar1; + + FUN_004dcd00((double)param_2); + uVar1 = FUN_004dcd94(); + *(undefined4 *)(param_1 + 0x18) = uVar1; + return; +} + + + +/* @004796b8 file=? name=FUN_004796b8 */ + +void __cdecl FUN_004796b8(int param_1) + +{ + *(undefined4 *)(param_1 + 4) = 0; + return; +} + + + +/* @004796c8 file=? name=FUN_004796c8 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 __fastcall FUN_004796c8(undefined4 param_1,uint param_2,undefined4 *param_3,int param_4) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + char *pcVar4; + int iVar5; + int *piVar6; + uint uVar7; + uint uVar8; + float local_8; + + local_8 = 0.0; + if ((int)param_3[3] < 0) { + if (param_3[1] == 0) { + param_3[1] = 1; + param_3[2] = -param_4; + iVar5 = param_3[4] * 3; + if (iVar5 < 0) { + iVar5 = iVar5 + 3; + } + param_3[7] = (iVar5 >> 2) + param_3[2]; + iVar5 = param_3[3] * 3; + if (iVar5 < 0) { + iVar5 = iVar5 + 3; + } + param_3[8] = (iVar5 >> 2) + param_3[2]; + } + uVar8 = param_4 + param_3[2]; + if ((int)param_3[7] < (int)uVar8) { + param_3[7] = uVar8; + } + if ((int)uVar8 < (int)param_3[8]) { + param_3[8] = uVar8; + } + if ((int)uVar8 < (int)-param_3[6]) { + uVar7 = (int)param_3[8] >> 0x1f; + param_2 = ((param_3[8] ^ uVar7) - uVar7) - param_3[6]; + if (0 < (int)param_2) { + local_8 = (float)(int)(param_3[6] + uVar8) / (float)(int)param_2; + } + } + else if (((int)param_3[6] < (int)uVar8) && + (uVar7 = (int)param_3[7] >> 0x1f, param_2 = ((param_3[7] ^ uVar7) - uVar7) - param_3[6], + 0 < (int)param_2)) { + local_8 = (float)(int)(uVar8 - param_3[6]) / (float)(int)param_2; + } + } + else { + if (param_3[1] == 0) { + param_3[1] = 1; + param_3[2] = -param_4; + iVar5 = param_3[4] * 3; + if (iVar5 < 0) { + iVar5 = iVar5 + 3; + } + param_3[7] = iVar5 >> 2; + param_3[8] = param_3[3]; + } + iVar5 = param_4 + param_3[2]; + if ((int)param_3[4] < iVar5) { + param_3[2] = param_3[2] - (iVar5 - param_3[4]); + iVar5 = param_3[4]; + } + else if (iVar5 < (int)param_3[3]) { + param_3[2] = param_3[2] - (iVar5 - param_3[3]); + iVar5 = param_3[3]; + } + if ((int)param_3[7] < iVar5) { + param_3[7] = iVar5; + } + uVar8 = iVar5 - param_3[3]; + iVar5 = param_3[6]; + if ((iVar5 < (int)uVar8) && (param_2 = (param_3[7] - param_3[8]) - iVar5, 0 < (int)param_2)) { + local_8 = (float)(int)(uVar8 - iVar5) / (float)(int)param_2; + } + } + if (local_8 <= _DAT_00479af0) { + if (local_8 < _DAT_00479af4) { + uVar7 = param_3[6]; + uVar1 = param_3[7]; + uVar2 = param_3[8]; + pcVar4 = (char *)*param_3; + FUN_004dbb24(&DAT_00524e20,s_Too_low__004fd08b,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_input__004fd094,(char *)0x0); + piVar6 = FUN_004db78c(&DAT_00524e20,uVar8); + FUN_004dbb24(piVar6,s_result__004fd09c,(char *)0x0); + piVar6 = FUN_004db634(piVar6,(float10)local_8); + FUN_004dbb24(piVar6,&DAT_004fd0a5,(char *)0x0); + FUN_004dbb24(piVar6,pcVar4,(char *)0x0); + FUN_004dbb24(piVar6,s_lowestInput__004fd0a7,(char *)0x0); + piVar6 = FUN_004db78c(piVar6,uVar2); + FUN_004dbb24(piVar6,s_highestInput__004fd0b5,(char *)0x0); + piVar6 = FUN_004db78c(piVar6,uVar1); + FUN_004dbb24(piVar6,s_deadbandInteger__004fd0c4,(char *)0x0); + piVar6 = FUN_004db78c(piVar6,uVar7); + FUN_004dbb24(piVar6,s_range__004fd0d6,(char *)0x0); + piVar6 = FUN_004db78c(piVar6,param_2); + FUN_004dbb24(piVar6,&DAT_004fd0de,(char *)0x0); + local_8 = -1.0; + } + } + else { + uVar7 = param_3[6]; + uVar1 = param_3[7]; + uVar2 = param_3[8]; + uVar3 = param_3[2]; + pcVar4 = (char *)*param_3; + FUN_004dbb24(&DAT_00524e20,s_Too_high__004fd02c,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_input__004fd036,(char *)0x0); + piVar6 = FUN_004db78c(&DAT_00524e20,uVar8); + FUN_004dbb24(piVar6,s_result__004fd03e,(char *)0x0); + piVar6 = FUN_004db634(piVar6,(float10)local_8); + FUN_004dbb24(piVar6,&DAT_004fd047,(char *)0x0); + FUN_004dbb24(piVar6,pcVar4,(char *)0x0); + FUN_004dbb24(piVar6,s_offset__004fd049,(char *)0x0); + piVar6 = FUN_004db78c(piVar6,uVar3); + FUN_004dbb24(piVar6,s_lowestInput__004fd052,(char *)0x0); + piVar6 = FUN_004db78c(piVar6,uVar2); + FUN_004dbb24(piVar6,s_highestInput__004fd060,(char *)0x0); + piVar6 = FUN_004db78c(piVar6,uVar1); + FUN_004dbb24(piVar6,s_deadbandInteger__004fd06f,(char *)0x0); + piVar6 = FUN_004db78c(piVar6,uVar7); + FUN_004dbb24(piVar6,s_range__004fd081,(char *)0x0); + piVar6 = FUN_004db78c(piVar6,param_2); + FUN_004dbb24(piVar6,&DAT_004fd089,(char *)0x0); + local_8 = 1.0; + } + return (float10)local_8; +} + + + +/* @00479b78 file=? name=FUN_00479b78 */ + +short * __cdecl FUN_00479b78(short *param_1,short param_2,short param_3,int param_4) + +{ + bool bVar1; + undefined4 *puVar2; + uint uVar3; + int *piVar4; + int iVar5; + undefined4 extraout_ECX; + undefined4 extraout_ECX_00; + undefined4 extraout_ECX_01; + undefined4 extraout_ECX_02; + undefined4 extraout_ECX_03; + undefined4 extraout_ECX_04; + undefined4 extraout_ECX_05; + undefined4 extraout_ECX_06; + undefined4 extraout_ECX_07; + undefined4 extraout_ECX_08; + undefined4 uVar6; + short extraout_DX; + short extraout_DX_00; + short extraout_DX_01; + short sVar7; + int extraout_EDX; + int extraout_EDX_00; + undefined8 uVar8; + undefined4 local_14 [3]; + int local_8; + + param_1[0x21e] = 0; + param_1[0x21f] = 0; + param_1[0x220] = 0; + param_1[0x221] = 0; + param_1[0x222] = 0; + param_1[0x223] = 0; + param_1[0x224] = 0; + param_1[0x225] = 0; + param_1[0x226] = 0; + param_1[0x227] = 0; + param_1[0x228] = 0; + param_1[0x229] = 0; + param_1[0x22e] = 0; + param_1[0x22f] = 0; + param_1[0x230] = 0; + param_1[0x231] = 0; + param_1[0x232] = 0; + param_1[0x233] = 0; + param_1[0x234] = 0; + param_1[0x235] = 0; + param_1[0x238] = 0; + param_1[0x239] = 0; + param_1[0x236] = 0; + param_1[0x237] = 0; + param_1[0x23c] = 1; + param_1[0x23d] = 0; + param_1[0x248] = 0; + param_1[0x249] = 0; + param_1[0x24a] = 0; + param_1[0x24b] = 0; + FUN_0047a70c((int)param_1); + FUN_00404bc0(*(int *)(param_1 + 0x248),s_RIOBoardErrors_004fd0f5); + FUN_00404bc0(*(int *)(param_1 + 0x248),s_RIODeadLamps_004fd104); + FUN_00404bc0(*(int *)(param_1 + 0x248),s_RIOErrors_004fd111); + FUN_0047a750((int)param_1); + puVar2 = (undefined4 *)FUN_00402298(0x24); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_0047962c(puVar2,s_LeftPedal_004fd11b,0,0x1d6,0.0); + } + *(undefined4 **)(param_1 + 0x23e) = puVar2; + puVar2 = (undefined4 *)FUN_00402298(0x24); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_0047962c(puVar2,s_RightPedal_004fd125,0,0x1d6,0.0); + } + *(undefined4 **)(param_1 + 0x240) = puVar2; + puVar2 = (undefined4 *)FUN_00402298(0x24); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_0047962c(puVar2,s_Throttle_004fd130,0,800,0.05); + } + *(undefined4 **)(param_1 + 0x242) = puVar2; + puVar2 = (undefined4 *)FUN_00402298(0x24); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_0047962c(puVar2,s_JoystickX_004fd139,0xffffffa0,0x60,0.05); + } + *(undefined4 **)(param_1 + 0x244) = puVar2; + puVar2 = (undefined4 *)FUN_00402298(0x24); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_0047962c(puVar2,s_JoystickY_004fd143,0xffffff9f,0x6c,0.05); + } + *(undefined4 **)(param_1 + 0x246) = puVar2; + uVar8 = FUN_0047d9f4(param_1,0xc,param_2,param_3,&DAT_004fcf20,0xd,&DAT_004fcf20,0xd); + uVar3 = (uint)uVar8; + if (uVar3 == 0xfffffffe) { + FUN_004dbb24(&DAT_00524e20,s_RIO__RIO_DPMI_error__004fd14d,(char *)0x0); + uVar6 = extraout_ECX_00; + sVar7 = extraout_DX; + } + else if (uVar3 == 0xffffffff) { + FUN_004dbb24(&DAT_00524e20,s_RIO__RIO_buffer_allocation_error_004fd163,(char *)0x0); + uVar6 = extraout_ECX_01; + sVar7 = extraout_DX_00; + } + else if (uVar3 == 0) { + sVar7 = 0; + uVar6 = extraout_ECX; + } + else { + FUN_004dbb24(&DAT_00524e20,s_RIO__RIO_unexpected_init_result__004fd186,(char *)0x0); + piVar4 = FUN_004db78c(&DAT_00524e20,uVar3); + FUN_004dbb24(piVar4,&DAT_004fd1a7,(char *)0x0); + uVar6 = extraout_ECX_02; + sVar7 = extraout_DX_01; + } + param_1[0x22a] = 0xff; + param_1[0x22b] = 0; + param_1[0x22c] = 0xff; + param_1[0x22d] = 0; + if (param_4 != 0) { + bVar1 = false; + FUN_0047df93(uVar6,sVar7,param_1,1); + piVar4 = (int *)FUN_00414b60(); + local_8 = *piVar4; + iVar5 = FUN_004dcd94(); + local_8 = local_8 + iVar5; + do { + piVar4 = (int *)FUN_00414b60(); + } while (*piVar4 < local_8); + FUN_0047df93(local_8,(short)*piVar4,param_1,0); + piVar4 = (int *)FUN_00414b60(); + local_8 = *piVar4; + iVar5 = FUN_004dcd94(); + local_8 = local_8 + iVar5; + do { + piVar4 = (int *)FUN_00414b60(); + } while (*piVar4 < local_8); + FUN_0047a56c(local_8,*piVar4,param_1); + piVar4 = (int *)FUN_00414b60(); + local_8 = *piVar4; + iVar5 = FUN_004dcd94(); + local_8 = local_8 + iVar5; + uVar6 = extraout_ECX_03; + while (iVar5 = *(int *)(param_1 + 0x21e), iVar5 == 0) { + piVar4 = (int *)FUN_00414b60(); + if (local_8 < *piVar4) { + bVar1 = true; + FUN_004dbb24(&DAT_00524e20,s_RIO_never_came_back_from_check_r_004fd1aa,(char *)0x0); + uVar6 = extraout_ECX_04; + iVar5 = extraout_EDX; + break; + } + FUN_0047a0e8(local_8,*piVar4,(int)param_1,local_14); + uVar6 = extraout_ECX_05; + } + if (!bVar1) { + piVar4 = (int *)FUN_00414b60(); + local_8 = *piVar4; + iVar5 = FUN_004dcd94(); + local_8 = local_8 + iVar5; + uVar6 = extraout_ECX_06; + while (iVar5 = 0, *(int *)(param_1 + 0x21e) != 0) { + piVar4 = (int *)FUN_00414b60(); + if (local_8 < *piVar4) { + bVar1 = true; + FUN_004dbb24(&DAT_00524e20,s_RIO_never_came_back_from_test_mo_004fd1d3,(char *)0x0); + uVar6 = extraout_ECX_07; + iVar5 = extraout_EDX_00; + break; + } + FUN_0047a0e8(local_8,*piVar4,(int)param_1,local_14); + uVar6 = extraout_ECX_08; + } + } + if (!bVar1) { + FUN_0047a594(uVar6,iVar5,param_1); + piVar4 = (int *)FUN_00414b60(); + local_8 = *piVar4; + iVar5 = FUN_004dcd94(); + local_8 = local_8 + iVar5; + while (*(int *)(param_1 + 0x22a) == 0xff) { + piVar4 = (int *)FUN_00414b60(); + if (local_8 < *piVar4) { + FUN_004dbb24(&DAT_00524e20,s_RIO_never_came_back_from_version_004fd1f8,(char *)0x0); + return param_1; + } + FUN_0047a0e8(local_8,*piVar4,(int)param_1,local_14); + } + } + } + return param_1; +} + + + +/* @00479fd0 file=? name=FUN_00479fd0 */ + +void __cdecl FUN_00479fd0(int *param_1,byte param_2) + +{ + int *piVar1; + undefined2 uVar2; + int *piVar3; + int iVar4; + short extraout_var; + undefined4 extraout_ECX; + undefined4 extraout_EDX; + undefined8 uVar5; + undefined1 local_14 [12]; + int local_8; + + if (param_1 != (int *)0x0) { + piVar3 = (int *)FUN_00414b60(); + local_8 = *piVar3; + iVar4 = FUN_004dcd94(); + local_8 = local_8 + iVar4; + while( true ) { + piVar3 = (int *)FUN_00414b60(); + if (local_8 <= *piVar3) break; + piVar3 = param_1; + uVar2 = FUN_0047df82((int)param_1); + if (CONCAT22(extraout_var,uVar2) == 0 || extraout_var < 0) { + piVar1 = param_1; + uVar5 = FUN_0047def5(piVar3,extraout_EDX,(short *)param_1); + piVar3 = piVar1; + if ((int)uVar5 == 0) break; + } + FUN_0047a0e8(piVar3,local_14,(int)param_1,(undefined4 *)local_14); + } + FUN_0047965c((int *)param_1[0x11f],3); + param_1[0x11f] = 0; + FUN_0047965c((int *)param_1[0x120],3); + param_1[0x120] = 0; + FUN_0047965c((int *)param_1[0x121],3); + param_1[0x121] = 0; + FUN_0047965c((int *)param_1[0x122],3); + param_1[0x122] = 0; + FUN_0047965c((int *)param_1[0x123],3); + param_1[0x123] = 0; + FUN_0047dc71(extraout_ECX,0,(short *)param_1); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0047a0e8 file=? name=FUN_0047a0e8 */ + +int __fastcall FUN_0047a0e8(undefined4 param_1,undefined4 param_2,int param_3,undefined4 *param_4) + +{ + bool bVar1; + int iVar2; + char *pcVar3; + uint uVar4; + undefined4 extraout_ECX; + undefined4 extraout_ECX_00; + undefined4 extraout_ECX_01; + undefined4 extraout_ECX_02; + undefined4 extraout_ECX_03; + uint extraout_EDX; + uint extraout_EDX_00; + uint extraout_EDX_01; + uint extraout_EDX_02; + uint extraout_EDX_03; + float10 fVar5; + ulonglong uVar6; + undefined8 uVar7; + int local_124 [8]; + byte local_104; + byte local_103; + byte local_102; + byte local_101; + byte local_100; + byte local_ff; + byte local_fe; + byte local_fd; + byte local_fc; + byte local_fb; + byte local_fa; + + if (*(int *)(param_3 + 0x478) == 0) { + iVar2 = 0; + } + else { + uVar6 = FUN_0047df1a(param_1,param_2,param_3); + if ((short)uVar6 != 0) { + if ((uVar6 & 0x100) == 0) { + if ((uVar6 & 0x400) != 0) { + *(int *)(param_3 + 0x46c) = *(int *)(param_3 + 0x46c) + 1; + } + if ((uVar6 & 2) != 0) { + *(int *)(param_3 + 0x470) = *(int *)(param_3 + 0x470) + 1; + } + if ((uVar6 & 0xe) != 0) { + *(int *)(param_3 + 0x468) = *(int *)(param_3 + 0x468) + 1; + } + } + else { + FUN_00403e84(local_124,s_FAILURE_LOG_004fd223,1); + FUN_00404204((int)local_124,s_RIOErrors_004fd22f,s_error_004fd239,s_initialization_004fd23f) + ; + *(undefined4 *)(param_3 + 0x478) = 0; + FUN_00403ecc(local_124,2); + } + } + do { + bVar1 = false; + uVar7 = FUN_0047dce3(param_3,&local_104); + iVar2 = (int)uVar7; + if (iVar2 != 0) { + switch(local_104) { + case 0x85: + switch(local_103) { + case 1: + FUN_0047a70c(param_3); + FUN_004790c8(*(int *)(param_3 + 0x490)); + FUN_0047a750(param_3); + break; + case 2: + FUN_0047a70c(param_3); + FUN_004790c8(*(int *)(param_3 + 0x490)); + FUN_0047a750(param_3); + break; + case 3: + FUN_0047a70c(param_3); + pcVar3 = FUN_00476f34((uint)local_102); + FUN_00404490(*(int *)(param_3 + 0x490),s_RIODeadLamps_004fd267,&DAT_004fd274,pcVar3); + FUN_0047a750(param_3); + break; + case 4: + *(int *)(param_3 + 0x45c) = *(int *)(param_3 + 0x45c) + (uint)local_102; + break; + case 5: + *(int *)(param_3 + 0x460) = *(int *)(param_3 + 0x460) + (uint)local_102; + break; + case 6: + *(int *)(param_3 + 0x464) = *(int *)(param_3 + 0x464) + (uint)local_102; + } + bVar1 = true; + break; + case 0x86: + *param_4 = 4; + *(uint *)(param_3 + 0x454) = (uint)local_103; + *(uint *)(param_3 + 0x458) = (uint)local_102; + break; + case 0x87: + *param_4 = 3; + uVar4 = FUN_004790a4(local_103,local_102); + fVar5 = FUN_004796c8(extraout_ECX,extraout_EDX,*(undefined4 **)(param_3 + 0x484),-uVar4); + *(float *)(param_3 + 0x440) = (float)fVar5; + uVar4 = FUN_004790a4(local_101,local_100); + fVar5 = FUN_004796c8(extraout_ECX_00,extraout_EDX_00,*(undefined4 **)(param_3 + 0x47c), + uVar4); + *(float *)(param_3 + 0x444) = (float)fVar5; + uVar4 = FUN_004790a4(local_ff,local_fe); + fVar5 = FUN_004796c8(extraout_ECX_01,extraout_EDX_01,*(undefined4 **)(param_3 + 0x480), + uVar4); + *(float *)(param_3 + 0x448) = (float)fVar5; + uVar4 = FUN_004790a4(local_fd,local_fc); + fVar5 = FUN_004796c8(extraout_ECX_02,extraout_EDX_02,*(undefined4 **)(param_3 + 0x48c), + uVar4); + *(float *)(param_3 + 0x450) = (float)fVar5; + uVar4 = FUN_004790a4(local_fb,local_fa); + fVar5 = FUN_004796c8(extraout_ECX_03,extraout_EDX_03,*(undefined4 **)(param_3 + 0x488), + uVar4); + *(float *)(param_3 + 0x44c) = (float)fVar5; + break; + case 0x88: + *param_4 = 0; + param_4[1] = (uint)local_103; + break; + case 0x89: + *param_4 = 1; + param_4[1] = (uint)local_103; + break; + case 0x8a: + *param_4 = 2; + param_4[1] = (uint)local_103; + param_4[2] = (uint)local_102; + break; + default: + bVar1 = true; + break; + case 0x8c: + if (local_103 == 0) { + *(undefined4 *)(param_3 + 0x43c) = 0; + FUN_0047a750(param_3); + } + else { + *(undefined4 *)(param_3 + 0x43c) = 1; + FUN_0047a70c(param_3); + FUN_00404bc0(*(int *)(param_3 + 0x490),s_RIOBoardErrors_004fd279); + FUN_00404bc0(*(int *)(param_3 + 0x490),s_RIODeadLamps_004fd288); + } + bVar1 = true; + } + } + } while (bVar1); + } + return iVar2; +} + + + +/* @0047a4cc file=? name=FUN_0047a4cc */ + +void __cdecl FUN_0047a4cc(int param_1) + +{ + FUN_004796b8(*(int *)(param_1 + 0x488)); + FUN_004796b8(*(int *)(param_1 + 0x48c)); + return; +} + + + +/* @0047a4f0 file=? name=FUN_0047a4f0 */ + +void __cdecl FUN_0047a4f0(int param_1,float param_2) + +{ + FUN_00479684(*(int *)(param_1 + 0x488),param_2); + FUN_00479684(*(int *)(param_1 + 0x48c),param_2); + return; +} + + + +/* @0047a520 file=? name=FUN_0047a520 */ + +void __cdecl FUN_0047a520(int param_1,float param_2) + +{ + FUN_00479684(*(int *)(param_1 + 0x484),param_2); + return; +} + + + +/* @0047a53c file=? name=FUN_0047a53c */ + +void __cdecl FUN_0047a53c(int param_1,float param_2) + +{ + FUN_00479684(*(int *)(param_1 + 0x47c),param_2); + FUN_00479684(*(int *)(param_1 + 0x480),param_2); + return; +} + + + +/* @0047a56c file=? name=FUN_0047a56c */ + +undefined8 __fastcall FUN_0047a56c(undefined4 param_1,undefined4 param_2,short *param_3) + +{ + undefined8 uVar1; + + uVar1 = CONCAT44(param_2,param_3); + if ((*(int *)(param_3 + 0x23c) != 0) && + (uVar1 = CONCAT44(param_2,param_3), *(int *)(param_3 + 0x21e) == 0)) { + uVar1 = FUN_0047ddda(param_1,param_2,param_3,&DAT_004fcf6c); + } + return uVar1; +} + + + +/* @0047a594 file=? name=FUN_0047a594 */ + +undefined8 __fastcall FUN_0047a594(undefined4 param_1,undefined4 param_2,short *param_3) + +{ + undefined8 uVar1; + + uVar1 = CONCAT44(param_2,param_3); + if ((*(int *)(param_3 + 0x23c) != 0) && + (uVar1 = CONCAT44(param_2,param_3), *(int *)(param_3 + 0x21e) == 0)) { + uVar1 = FUN_0047ddda(param_1,param_2,param_3,&DAT_004fcf6d); + } + return uVar1; +} + + + +/* @0047a5bc file=? name=FUN_0047a5bc */ + +undefined8 __fastcall FUN_0047a5bc(undefined4 param_1,undefined4 param_2,short *param_3) + +{ + undefined8 uVar1; + + uVar1 = CONCAT44(param_2,param_3); + if ((*(int *)(param_3 + 0x23c) != 0) && + (uVar1 = CONCAT44(param_2,param_3), *(int *)(param_3 + 0x21e) == 0)) { + uVar1 = FUN_0047ddda(param_1,param_2,param_3,&DAT_004fcf6e); + } + return uVar1; +} + + + +/* @0047a5e4 file=? name=FUN_0047a5e4 */ + +undefined8 __fastcall FUN_0047a5e4(undefined4 param_1,undefined4 param_2,short *param_3) + +{ + undefined8 uVar1; + + uVar1 = CONCAT44(param_2,param_3); + if ((*(int *)(param_3 + 0x23c) != 0) && + (uVar1 = CONCAT44(param_2,param_3), *(int *)(param_3 + 0x21e) == 0)) { + uVar1 = FUN_0047ddda(param_1,param_2,param_3,&DAT_004fcf6f); + } + return uVar1; +} + + + +/* @0047a60c file=? name=FUN_0047a60c */ + +undefined8 __fastcall FUN_0047a60c(undefined4 param_1,undefined4 param_2,short *param_3) + +{ + undefined8 uVar1; + + uVar1 = CONCAT44(param_2,param_3); + if ((*(int *)(param_3 + 0x23c) != 0) && + (uVar1 = CONCAT44(param_2,param_3), *(int *)(param_3 + 0x21e) == 0)) { + uVar1 = FUN_0047ddda(param_1,param_2,param_3,&DAT_004fcf71); + } + return uVar1; +} + + + +/* @0047a634 file=? name=FUN_0047a634 */ + +undefined8 __fastcall FUN_0047a634(undefined4 param_1,undefined4 param_2,short *param_3) + +{ + undefined8 uVar1; + + uVar1 = CONCAT44(param_2,param_3); + if ((*(int *)(param_3 + 0x23c) != 0) && + (uVar1 = CONCAT44(param_2,param_3), *(int *)(param_3 + 0x21e) == 0)) { + uVar1 = FUN_0047ddda(param_1,param_2,param_3,&DAT_004fcf73); + } + return uVar1; +} + + + +/* @0047a65c file=? name=FUN_0047a65c */ + +undefined8 __fastcall FUN_0047a65c(undefined4 param_1,undefined4 param_2,short *param_3) + +{ + undefined8 uVar1; + + uVar1 = CONCAT44(param_2,param_3); + if ((*(int *)(param_3 + 0x23c) != 0) && + (uVar1 = CONCAT44(param_2,param_3), *(int *)(param_3 + 0x21e) == 0)) { + uVar1 = FUN_0047ddda(param_1,param_2,param_3,&DAT_004fcf75); + } + return uVar1; +} + + + +/* @0047a684 file=? name=FUN_0047a684 */ + +undefined8 __fastcall FUN_0047a684(undefined4 param_1,undefined4 param_2,short *param_3) + +{ + undefined8 uVar1; + + uVar1 = CONCAT44(param_2,param_3); + if ((*(int *)(param_3 + 0x23c) != 0) && + (uVar1 = CONCAT44(param_2,param_3), *(int *)(param_3 + 0x21e) == 0)) { + uVar1 = FUN_0047ddda(param_1,param_2,param_3,&DAT_004fcf77); + } + return uVar1; +} + + + +/* @0047a6ac file=? name=FUN_0047a6ac */ + +undefined8 __fastcall FUN_0047a6ac(undefined4 param_1,undefined4 param_2,short *param_3) + +{ + undefined8 uVar1; + + uVar1 = CONCAT44(param_2,param_3); + if ((*(int *)(param_3 + 0x23c) != 0) && + (uVar1 = CONCAT44(param_2,param_3), *(int *)(param_3 + 0x21e) == 0)) { + uVar1 = FUN_0047ddda(param_1,param_2,param_3,&DAT_004fcf79); + } + return uVar1; +} + + + +/* @0047a6d4 file=? name=FUN_0047a6d4 */ + +undefined8 __fastcall +FUN_0047a6d4(undefined4 param_1,undefined4 param_2,short *param_3,undefined1 param_4, + undefined1 param_5) + +{ + uint uVar1; + uint uVar2; + undefined8 uVar3; + + uVar3 = CONCAT44(param_2,param_3); + if (*(int *)(param_3 + 0x23c) != 0) { + uVar2 = CONCAT31((int3)((uint)param_2 >> 8),param_4) & 0xffffff7f; + uVar1 = CONCAT31((int3)((uint)param_1 >> 8),param_5) & 0xffffff7f; + DAT_004fcf7c = (undefined1)uVar2; + DAT_004fcf7d = (undefined1)uVar1; + uVar3 = FUN_0047ddda(uVar1,uVar2,param_3,&DAT_004fcf7b); + } + return uVar3; +} + + + +/* @0047a70c file=? name=FUN_0047a70c */ + +void __cdecl FUN_0047a70c(int param_1) + +{ + int *piVar1; + + if (*(int *)(param_1 + 0x494) == 0) { + piVar1 = (int *)FUN_00402298(0x20); + if (piVar1 == (int *)0x0) { + piVar1 = (int *)0x0; + } + else { + piVar1 = FUN_00403e84(piVar1,s_FAILURE_LOG_004fd295,1); + } + *(int **)(param_1 + 0x490) = piVar1; + } + *(int *)(param_1 + 0x494) = *(int *)(param_1 + 0x494) + 1; + return; +} + + + +/* @0047a750 file=? name=FUN_0047a750 */ + +void __cdecl FUN_0047a750(int param_1) + +{ + *(int *)(param_1 + 0x494) = *(int *)(param_1 + 0x494) + -1; + if (*(int *)(param_1 + 0x494) < 1) { + *(undefined4 *)(param_1 + 0x494) = 0; + FUN_00403ecc(*(int **)(param_1 + 0x490),3); + } + return; +} + + + +/* @0047a780 file=? name=FUN_0047a780 */ + +void __cdecl FUN_0047a780(int param_1) + +{ + *(undefined4 *)(param_1 + 8) = 0; + return; +} + + + +/* @0047a78d file=? name=FUN_0047a78d */ + +uint * __cdecl FUN_0047a78d(uint *param_1,uint param_2,undefined4 param_3) + +{ + param_1[2] = 0; + FUN_0047a7af(param_1,param_2,param_3); + return param_1; +} + + + +/* @0047a7af file=? name=FUN_0047a7af */ + +void __cdecl FUN_0047a7af(uint *param_1,uint param_2,undefined4 param_3) + +{ + uint uVar1; + + if ((int *)param_1[2] != (int *)0x0) { + FUN_004022e8((int *)param_1[2]); + } + *param_1 = param_2; + uVar1 = FUN_004022b0(param_2 << 2); + param_1[2] = uVar1; + param_1[1] = 0; + for (uVar1 = 0; uVar1 < *param_1; uVar1 = uVar1 + 1) { + *(undefined4 *)(param_1[2] + uVar1 * 4) = param_3; + } + return; +} + + + +/* @0047a7f6 file=? name=FUN_0047a7f6 */ + +void __cdecl FUN_0047a7f6(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + FUN_004022e8((int *)param_1[2]); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0047a81b file=? name=FUN_0047a81b */ + +undefined4 FUN_0047a81b(void) + +{ + return 1; +} + + + +/* @0047a825 file=? name=FUN_0047a825 */ + +void __cdecl FUN_0047a825(uint *param_1,undefined4 param_2) + +{ + *(undefined4 *)(param_1[2] + param_1[1] * 4) = param_2; + param_1[1] = param_1[1] + 1; + if (*param_1 <= param_1[1]) { + param_1[1] = 0; + } + return; +} + + + +/* @0047a84c file=? name=FUN_0047a84c */ + +int __cdecl FUN_0047a84c(uint *param_1) + +{ + int *piVar1; + uint uVar2; + int iVar3; + + iVar3 = 0; + piVar1 = (int *)param_1[2]; + for (uVar2 = 0; uVar2 < *param_1; uVar2 = uVar2 + 1) { + iVar3 = iVar3 + *piVar1; + piVar1 = piVar1 + 1; + } + return iVar3 / (int)*param_1; +} + + + +/* @0047a86e file=? name=FUN_0047a86e */ + +int __cdecl FUN_0047a86e(uint *param_1) + +{ + int *piVar1; + int iVar2; + int iVar3; + uint uVar4; + int local_8; + + iVar2 = *(int *)param_1[2]; + local_8 = 0; + piVar1 = (int *)param_1[2]; + iVar3 = iVar2; + for (uVar4 = 0; uVar4 < *param_1; uVar4 = uVar4 + 1) { + local_8 = local_8 + *piVar1; + if (*piVar1 < iVar3) { + iVar3 = *piVar1; + } + if (iVar2 < *piVar1) { + iVar2 = *piVar1; + } + piVar1 = piVar1 + 1; + } + return ((local_8 - iVar3) - iVar2) / (int)(*param_1 - 2); +} + + + +/* @0047a8d3 file=? name=FUN_0047a8d3 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 __cdecl FUN_0047a8d3(uint *param_1) + +{ + uint uVar1; + float fVar2; + float fVar3; + uint uVar4; + float local_1c; + float local_c; + float local_8; + + local_8 = 0.0; + local_c = 0.0; + uVar1 = *param_1; + fVar2 = (float)uVar1; + fVar3 = fVar2 * fVar2 * _DAT_0047a99b; + fVar2 = fVar2 * _DAT_0047a99b + fVar3; + uVar4 = param_1[1]; + local_1c = 1.0; + do { + local_8 = (float)*(int *)(param_1[2] + uVar4 * 4) + local_8; + local_c = (float)*(int *)(param_1[2] + uVar4 * 4) * local_1c + local_c; + local_1c = _DAT_0047a9b7 + local_1c; + uVar4 = uVar4 + 1; + if (uVar4 == *param_1) { + uVar4 = 0; + } + } while (uVar4 != param_1[1]); + return ((float10)uVar1 * (float10)local_c - (float10)fVar2 * (float10)local_8) / + ((float10)uVar1 * + (float10)(float)(_DAT_0047a9ab * (float10)uVar1 + + _DAT_0047a99f * (float10)uVar1 * (float10)uVar1 * (float10)uVar1 + + (float10)fVar3) - (float10)fVar2 * (float10)fVar2); +} + + + +/* @0047a9bc file=? name=FUN_0047a9bc */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_0047a9bc(int *param_1,int param_2) + +{ + int iVar1; + int iVar2; + + iVar2 = _DAT_0047aa44; + iVar1 = *(int *)(param_2 + 0xc); + if (iVar1 < 0x3f) { + if (iVar1 == 0x3e) { + param_1[0x41] = 0x3f800000; + return; + } + if (iVar1 == 0x20) { + param_1[0x41] = _DAT_0047aa44; + param_1[0x40] = iVar2; + return; + } + if (iVar1 == 0x3c) { + param_1[0x40] = 0x3f800000; + return; + } + } + else { + if (iVar1 == 0x13b) { + FUN_00476e34(*(int *)(DAT_004efc94 + 0x3c)); + return; + } + if (iVar1 == 0x13c) { + FUN_00476e54(*(int *)(DAT_004efc94 + 0x3c)); + return; + } + } + FUN_0042d2c0(param_1,param_2); + return; +} + + + +/* @0047aa48 file=? name=FUN_0047aa48 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_0047aa48(int param_1) + +{ + *(float *)(param_1 + 0xf0) = *(float *)(param_1 + 0x104) - *(float *)(param_1 + 0x100); + *(float *)(param_1 + 0xf0) = _DAT_0047aa74 * *(float *)(param_1 + 0xf0); + return; +} + + + +/* @0047aa78 file=? name=FUN_0047aa78 */ + +undefined4 * __cdecl +FUN_0047aa78(undefined4 *param_1,undefined4 param_2,undefined4 param_3,char *param_4, + undefined4 param_5) + +{ + int iVar1; + + FUN_0042d494(param_1,param_2,param_3,param_4,param_5); + *param_1 = &PTR_FUN_004fd488; + param_1[7] = PTR_FUN_004fd30c; + param_1[8] = DAT_004fd310; + param_1[9] = DAT_004fd314; + param_1[0x40] = 0; + param_1[0x41] = 0; + iVar1 = *(int *)(DAT_004efc94 + 0x3c); + (**(code **)(*(int *)(iVar1 + 0x104) + 0x18))(iVar1 + 0x104,0xffffffff,param_1 + 0x39,param_1); + (**(code **)(*(int *)(iVar1 + 0x9c0) + 0x18))(iVar1 + 0x9c0,0xffffffff,param_1 + 0x3e,param_1); + (**(code **)(*(int *)(iVar1 + 0xaa0) + 0x18))(iVar1 + 0xaa0,0xffffffff,param_1 + 0x3f,param_1); + (**(code **)(*(int *)(iVar1 + 0xa40) + 0x14))(iVar1 + 0xa40,0xffffffff,param_1,6,param_1); + (**(code **)(*(int *)(iVar1 + 0xa20) + 0x14))(iVar1 + 0xa20,0xffffffff,param_1,5,param_1); + (**(code **)(*(int *)(iVar1 + 0xa60) + 0x14))(iVar1 + 0xa60,0xffffffff,param_1,8,param_1); + (**(code **)(*(int *)(iVar1 + 0xa80) + 0x14))(iVar1 + 0xa80,0xffffffff,param_1,7,param_1); + (**(code **)(*(int *)(iVar1 + 0x1a0) + 0x14))(iVar1 + 0x1a0,0xffffffff,param_1,3,param_1); + return param_1; +} + + + +/* @0047abb0 file=? name=FUN_0047abb0 */ + +void __cdecl FUN_0047abb0(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004fd488; + FUN_0042d4f8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0047abdc file=? name=FUN_0047abdc */ + +void __cdecl FUN_0047abdc(int param_1) + +{ + FUN_0041a1a4(**(int **)(param_1 + 0xc),0x4fd2c0); + return; +} + + + +/* @0047abf8 file=? name=FUN_0047abf8 */ + +void __cdecl FUN_0047abf8(int param_1) + +{ + if (*(int *)(param_1 + 0x108) < 1) { + if (*(int *)(param_1 + 0x10c) < 1) { + *(undefined4 *)(param_1 + 0xec) = 0; + *(undefined4 *)(param_1 + 0xf4) = 0; + } + else { + *(undefined4 *)(param_1 + 0xec) = 0x3f800000; + *(undefined4 *)(param_1 + 0xf4) = 1; + } + } + else { + *(undefined4 *)(param_1 + 0xec) = 0x3f800000; + *(undefined4 *)(param_1 + 0xf4) = 0; + } + FUN_0047aa48(param_1); + return; +} + + + +/* @0047ac5c file=? name=FUN_0047ac5c */ + +undefined4 * __cdecl +FUN_0047ac5c(undefined4 *param_1,undefined4 param_2,undefined4 param_3,char *param_4, + undefined4 param_5) + +{ + int iVar1; + + FUN_0047aa78(param_1,param_2,param_3,param_4,param_5); + *param_1 = &PTR_FUN_004fd458; + param_1[7] = PTR_FUN_004fd358; + param_1[8] = DAT_004fd35c; + param_1[9] = DAT_004fd360; + param_1[0x43] = 0; + param_1[0x42] = 0; + iVar1 = *(int *)(DAT_004efc94 + 0x3c); + (**(code **)(*(int *)(iVar1 + 0xa00) + 0x18))(iVar1 + 0xa00,0xffffffff,param_1 + 0x42,param_1); + (**(code **)(*(int *)(iVar1 + 0x9e0) + 0x18))(iVar1 + 0x9e0,0xffffffff,param_1 + 0x43,param_1); + return param_1; +} + + + +/* @0047acf4 file=? name=FUN_0047acf4 */ + +void __cdecl FUN_0047acf4(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004fd458; + FUN_0047abb0(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0047ad20 file=? name=FUN_0047ad20 */ + +void __cdecl FUN_0047ad20(int param_1) + +{ + FUN_0041a1a4(**(int **)(param_1 + 0xc),0x4fd328); + return; +} + + + +/* @0047ad3c file=? name=FUN_0047ad3c */ + +undefined4 * __cdecl +FUN_0047ad3c(undefined4 *param_1,undefined4 param_2,undefined4 param_3,char *param_4, + undefined4 param_5) + +{ + int iVar1; + + FUN_0047aa78(param_1,param_2,param_3,param_4,param_5); + *param_1 = &PTR_FUN_004fd428; + iVar1 = *(int *)(DAT_004efc94 + 0x3c); + (**(code **)(*(int *)(iVar1 + 0x24) + 0x18))(iVar1 + 0x24,0xffffffff,param_1 + 0x3b,param_1); + (**(code **)(*(int *)(iVar1 + 0x9a0) + 0x18))(iVar1 + 0x9a0,0xffffffff,param_1 + 0x3d,param_1); + (**(code **)(*(int *)(iVar1 + 0x44) + 0x18))(iVar1 + 0x44,0xffffffff,param_1 + 0x40,param_1); + (**(code **)(*(int *)(iVar1 + 100) + 0x18))(iVar1 + 100,0xffffffff,param_1 + 0x41,param_1); + return param_1; +} + + + +/* @0047add4 file=? name=FUN_0047add4 */ + +void __cdecl FUN_0047add4(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004fd428; + FUN_0047abb0(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0047ae00 file=? name=FUN_0047ae00 */ + +void __cdecl FUN_0047ae00(int param_1) + +{ + FUN_0041a1a4(**(int **)(param_1 + 0xc),0x4fd374); + return; +} + + + +/* @0047b2ec file=? name=FUN_0047b2ec */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl FUN_0047b2ec(int param_1,undefined4 param_2,undefined *param_3) + +{ + int *piVar1; + char *pcVar2; + char *pcVar3; + char *pcVar4; + int iVar5; + char *pcVar6; + bool bVar7; + int local_c; + int *local_8; + + _DAT_004fd54c = 0; + FUN_00402a98((int *)&local_8,&DAT_0052330c,&DAT_004fd700); + piVar1 = local_8 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_8,3); + } + DAT_00523310 = 0; + pcVar3 = (char *)FUN_004dee74(s_REVIEW_004fd701); + DAT_004fd550 = 0; + if (pcVar3 != (char *)0x0) { + pcVar6 = &DAT_004fd708; + pcVar4 = pcVar3; + do { + if (*pcVar4 != *pcVar6) goto LAB_0047b37c; + bVar7 = true; + if (*pcVar4 == '\0') break; + pcVar2 = pcVar4 + 1; + if (*pcVar2 != pcVar6[1]) goto LAB_0047b37c; + pcVar4 = pcVar4 + 2; + pcVar6 = pcVar6 + 2; + bVar7 = *pcVar2 == '\0'; + } while (!bVar7); + if (bVar7) { + DAT_004fd550 = 1; + } + else { +LAB_0047b37c: + pcVar4 = &DAT_004fd70a; + do { + if (*pcVar3 != *pcVar4) goto LAB_0047b3ab; + bVar7 = true; + if (*pcVar3 == '\0') break; + pcVar6 = pcVar3 + 1; + if (*pcVar6 != pcVar4[1]) goto LAB_0047b3ab; + pcVar3 = pcVar3 + 2; + pcVar4 = pcVar4 + 2; + bVar7 = *pcVar6 == '\0'; + } while (!bVar7); + if (bVar7) { + DAT_004fd550 = 2; + } + } + } +LAB_0047b3ab: + if ((1 < param_1) && (local_c = 1, 1 < param_1)) { + do { + iVar5 = (*(code *)param_3)(&local_c,param_1,param_2); + if (iVar5 == 0) { + return 0; + } + local_c = local_c + 1; + } while (local_c < param_1); + } + return 1; +} + + + +/* @0047b3e8 file=? name=FUN_0047b3e8 */ + +undefined4 __cdecl FUN_0047b3e8(int param_1) + +{ + int iVar1; + + iVar1 = FUN_0041a1a4(**(int **)(param_1 + 0xc),0x4fd514); + if (iVar1 == 0) { + return 0; + } + return 1; +} + + + +/* @0047b410 file=? name=FUN_0047b410 */ + +undefined4 * __cdecl +FUN_0047b410(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4, + undefined4 param_5) + +{ + int iVar1; + + FUN_0044dfe0(param_1,param_2,param_3,param_4,param_5); + *param_1 = &PTR_FUN_004fd8bc; + iVar1 = FUN_004dee74(s_DPLARG_004fd70c); + param_1[0x34] = iVar1; + return param_1; +} + + + +/* @0047b44c file=? name=FUN_0047b44c */ + +void __cdecl FUN_0047b44c(int *param_1) + +{ + FUN_0047b468(param_1); + FUN_0045046c(param_1[8]); + return; +} + + + +/* @0047b468 file=? name=FUN_0047b468 */ + +void __cdecl FUN_0047b468(int *param_1) + +{ + FUN_0044e1b0(param_1); + return; +} + + + +/* @0047b478 file=? name=FUN_0047b478 */ + +undefined4 FUN_0047b478(void) + +{ + undefined4 *puVar1; + undefined4 uVar2; + + puVar1 = (undefined4 *)FUN_00402298(0xc); + if (puVar1 == (undefined4 *)0x0) { + uVar2 = 0; + } + else { + uVar2 = FUN_0044c2d0(puVar1,0xffffffff); + } + return uVar2; +} + + + +/* @0047b49c file=? name=FUN_0047b49c */ + +int * FUN_0047b49c(void) + +{ + int *piVar1; + + piVar1 = (int *)FUN_00402298(0x80); + if (piVar1 == (int *)0x0) { + piVar1 = (int *)0x0; + } + else { + piVar1 = FUN_004501d4(piVar1); + } + return piVar1; +} + + + +/* @0047b4c0 file=? name=FUN_0047b4c0 */ + +undefined4 * __cdecl FUN_0047b4c0(undefined4 param_1) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00402298(0xd10); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_00475c18(puVar1); + } + (**(code **)(puVar1[0x68] + 0x14))(puVar1 + 0x68,0xffffffff,param_1,7,param_1); + return puVar1; +} + + + +/* @0047b508 file=? name=FUN_0047b508 */ + +undefined4 * FUN_0047b508(void) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00402298(0x38); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_0047ce3c(puVar1,&DAT_004fdc6c); + } + return puVar1; +} + + + +/* @0047b530 file=? name=FUN_0047b530 */ + +undefined4 * __cdecl FUN_0047b530(int param_1) + +{ + undefined4 *puVar1; + + if (*(int *)(param_1 + 0xd0) == 0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = (undefined4 *)FUN_00402298(0x3e0); + if (puVar1 == (undefined4 *)0x0) { + return (undefined4 *)0x0; + } + puVar1 = FUN_0045a180(puVar1,DAT_004e8238,DAT_004e823c,1,0,1); + } + return puVar1; +} + + + +/* @0047b57c file=? name=FUN_0047b57c */ + +undefined4 * FUN_0047b57c(void) + +{ + int iVar1; + int iVar2; + undefined4 *puVar3; + + iVar1 = FUN_004dee74(s_AWE_FRONT_004fd713); + iVar2 = FUN_004dee74(s_AWE_REAR_004fd71d); + if ((iVar1 == 0) || (iVar2 == 0)) { + puVar3 = (undefined4 *)0x0; + } + else { + puVar3 = (undefined4 *)FUN_00402298(0x1b0); + if (puVar3 == (undefined4 *)0x0) { + return (undefined4 *)0x0; + } + puVar3 = FUN_0046739c(puVar3,DAT_004e8238,0); + } + return puVar3; +} + + + +/* @0047b5d0 file=? name=FUN_0047b5d0 */ + +undefined4 * FUN_0047b5d0(void) + +{ + int iVar1; + undefined4 *puVar2; + + iVar1 = FUN_004dee74(s_L4GAUGE_004fd726); + if (iVar1 == 0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = (undefined4 *)FUN_00402298(0x1c53c); + if (puVar2 == (undefined4 *)0x0) { + return (undefined4 *)0x0; + } + puVar2 = FUN_0046f97c(puVar2); + } + return puVar2; +} + + + +/* @0047b608 file=? name=FUN_0047b608 */ + +void __cdecl FUN_0047b608(int param_1) + +{ + FUN_0047bba8(param_1,0); + FUN_0044e7ac(param_1); + return; +} + + + +/* @0047b624 file=? name=FUN_0047b624 */ + +void __cdecl FUN_0047b624(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004fd8bc; + FUN_0044e8a0(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0047b650 file=? name=FUN_0047b650 */ + +int __cdecl FUN_0047b650(int *param_1,undefined4 param_2) + +{ + FUN_0044ea8c(param_1,param_2); + FUN_0047bba8((int)param_1,1); + return param_1[0x1b]; +} + + + +/* @0047b678 file=munga_l4/l4app.cpp name=FUN_0047b678 */ + +int * __cdecl FUN_0047b678(int param_1,int param_2) + +{ + undefined4 *puVar1; + int iVar2; + int *piVar3; + char *pcVar4; + char *pcVar5; + char local_3c [2]; + char acStack_3a [30]; + undefined4 local_1c; + undefined4 local_18; + undefined4 *local_c; + undefined4 *local_8; + + piVar3 = (int *)0x0; + if (*(int *)(param_2 + 0x1c) == 0x45) { + piVar3 = FUN_0042d16c(param_2); + pcVar4 = s_ControlsMapper_004fd72e; + pcVar5 = local_3c; + for (iVar2 = 3; iVar2 != 0; iVar2 = iVar2 + -1) { + *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4; + pcVar4 = pcVar4 + 4; + pcVar5 = pcVar5 + 4; + } + *(undefined2 *)pcVar5 = *(undefined2 *)pcVar4; + pcVar5[2] = pcVar4[2]; + local_1c = 0xf; + local_18 = 0x30; + iVar2 = *(int *)(*(int *)(param_1 + 0x3c) + 0xc98); + if (iVar2 == 2) { + local_8 = (undefined4 *)FUN_00402298(0x110); + if (local_8 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_0047ac5c(local_8,piVar3,0,local_3c,&DAT_004fd318); + } + FUN_0042c630((int)piVar3,puVar1); + } + else if (iVar2 == 4) { + local_c = (undefined4 *)FUN_00402298(0x108); + if (local_c == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_0047ad3c(local_c,piVar3,0,local_3c,&DAT_004fd364); + } + FUN_0042c630((int)piVar3,puVar1); + } + else { + FUN_0040385c(s_L4Application__MakeViewpointEnti_004fd73d, + s_d__tesla_bt_munga_l4_L4APP_CPP_004fd775,0x231); + } + if (*(int **)(param_1 + 0x4c) != (int *)0x0) { + FUN_0046ff64(*(int **)(param_1 + 0x4c),&DAT_004fd794,piVar3); + } + } + return piVar3; +} + + + +/* @0047b788 file=munga_l4/l4app.cpp name=FUN_0047b788 */ + +void __cdecl FUN_0047b788(int param_1) + +{ + int iVar1; + bool bVar2; + undefined4 *puVar3; + + iVar1 = *(int *)(param_1 + 0x88); + if (iVar1 == 3) { + FUN_0047bba8(param_1,0); + } + else if (iVar1 == 4) { + iVar1 = *(int *)(param_1 + 0x3c); + if ((*(int *)(iVar1 + 0xcec) == 0) || (*(int *)(iVar1 + 0xcf4) != 0)) { + bVar2 = false; + } + else { + bVar2 = true; + } + if (bVar2) { + puVar3 = (undefined4 *)FUN_00414b60(); + *(undefined4 *)(iVar1 + 0xcf0) = *puVar3; + *(undefined4 *)(iVar1 + 0xcf8) = 1; + } + else { + if ((*(int *)(iVar1 + 0xcec) == 0) || (*(int *)(iVar1 + 0xcf4) == 0)) { + bVar2 = false; + } + else { + bVar2 = true; + } + if (bVar2) { + puVar3 = (undefined4 *)FUN_00414b60(); + *(undefined4 *)(iVar1 + 0xcf0) = *puVar3; + *(undefined4 *)(iVar1 + 0xcf8) = 1; + } + } + } + else if (iVar1 != 5) { + FUN_0040385c(s_Application__RunMissionMessageHa_004fd799, + s_d__tesla_bt_munga_l4_L4APP_CPP_004fd7d4,0x277); + } + FUN_0044ecdc(param_1); + return; +} + + + +/* @0047b864 file=? name=FUN_0047b864 */ + +void __cdecl FUN_0047b864(int param_1) + +{ + int *piVar1; + int iVar2; + uint local_14 [4]; + + FUN_0044eeb4(param_1); + FUN_0047bba8(param_1,1); + local_14[0] = 0xc; + local_14[1] = 0xc; + local_14[2] = 1; + piVar1 = (int *)FUN_00414b60(); + local_14[3] = *piVar1; + iVar2 = FUN_004dcd94(); + local_14[3] = local_14[3] + iVar2; + FUN_0041acbc(*(int *)(param_1 + 0x60),1,param_1,local_14,local_14[3]); + return; +} + + + +/* @0047b8ec file=? name=FUN_0047b8ec */ + +void __cdecl FUN_0047b8ec(int param_1,int param_2) + +{ + int iVar1; + uint uVar2; + uint uVar3; + int *piVar4; + int iVar5; + uint uVar6; + byte bVar7; + + iVar5 = *(int *)(param_2 + 0xc); + if (iVar5 < 0x122) { + if (iVar5 == 0x121) { + if (*(int *)(*(int *)PTR_DAT_004fd4b8 + 0x48) == 0) { + return; + } + FUN_00460564(*(int *)(*(int *)PTR_DAT_004fd4b8 + 0x48),1); + return; + } + if (iVar5 == 0x45) { + FUN_0041b27c(*(int *)(DAT_004efc94 + 0x60)); + return; + } + if (iVar5 == 0x111) { + if (*(int *)(*(int *)PTR_DAT_004fd4b8 + 0x48) == 0) { + return; + } + FUN_0045fdd8(); + return; + } + if ((iVar5 == 0x113) || (iVar5 == 0x119)) { + FUN_004dbb24(&DAT_00524e20,s_Function_net_yet_enabled__004fd869,(char *)0x0); + return; + } + } + else { + if (iVar5 == 0x125) { + if (*(int *)(*(int *)PTR_DAT_004fd4b8 + 0x48) != 0) { + FUN_0045fc58(*(int *)(*(int *)PTR_DAT_004fd4b8 + 0x48),&DAT_00524e20); + iVar5 = DAT_004f1ab0; + iVar1 = FUN_00401cb8(DAT_004f1ab0); + iVar5 = *(int *)(iVar5 + 0x10); + uVar2 = FUN_00401cdc(DAT_004f1ab0); + bVar7 = 0x28; + uVar3 = FUN_00401cb8(DAT_004f1ab0); + piVar4 = FUN_004db880(&DAT_00524e20,uVar3); + piVar4 = FUN_004db92c(piVar4,bVar7); + piVar4 = FUN_004db880(piVar4,uVar2); + FUN_004dbb24(piVar4,s_contiguous__bytes_of_DPL_core_le_004fd7f3,(char *)0x0); + piVar4 = FUN_004db880(piVar4,iVar5 - iVar1); + FUN_004dbb24(piVar4,s_bytes_of_heap_used_004fd818,(char *)0x0); + } + iVar5 = FUN_00401cb8(0x4e06a0); + uVar6 = DAT_004e06b0 - iVar5; + uVar2 = FUN_00401cdc(0x4e06a0); + bVar7 = 0x28; + uVar3 = FUN_00401cb8(0x4e06a0); + piVar4 = FUN_004db880(&DAT_00524e20,uVar3); + piVar4 = FUN_004db92c(piVar4,bVar7); + piVar4 = FUN_004db880(piVar4,uVar2); + FUN_004dbb24(piVar4,s_contiguous__bytes_of_MUNGA_core_l_004fd82d,(char *)0x0); + piVar4 = FUN_004db880(piVar4,uVar6); + FUN_004dbb24(piVar4,s_bytes_of_heap_used_004fd854,(char *)0x0); + FUN_00402cec(); + return; + } + if (iVar5 == 0x12f) { + if (*(int *)(*(int *)PTR_DAT_004fd4b8 + 0x48) == 0) { + return; + } + FUN_0045fe44(); + return; + } + if (iVar5 == 0x135) { + if (*(int *)(*(int *)PTR_DAT_004fd4b8 + 0x48) == 0) { + return; + } + FUN_0045fca0(*(int *)(*(int *)PTR_DAT_004fd4b8 + 0x48),&DAT_00524e20); + return; + } + } + FUN_0044efd8(param_1,param_2); + return; +} + + + +/* @0047bb20 file=? name=FUN_0047bb20 */ + +void __cdecl FUN_0047bb20(int param_1) + +{ + FUN_0047bba8(param_1,0); + return; +} + + + +/* @0047bb34 file=? name=FUN_0047bb34 */ + +undefined8 __cdecl FUN_0047bb34(int param_1,int param_2) + +{ + undefined8 uVar1; + + if (param_2 != 0) { + FUN_00476568(*(int *)(param_1 + 0x3c),0x16,0x3c); + FUN_00476568(*(int *)(param_1 + 0x3c),0x17,0x3c); + uVar1 = FUN_00476568(*(int *)(param_1 + 0x3c),0x1e,0x3c); + return uVar1; + } + FUN_00476568(*(int *)(param_1 + 0x3c),0x16,0); + FUN_00476568(*(int *)(param_1 + 0x3c),0x17,0); + uVar1 = FUN_00476568(*(int *)(param_1 + 0x3c),0x1e,0); + return uVar1; +} + + + +/* @0047bba8 file=? name=FUN_0047bba8 */ + +void __cdecl FUN_0047bba8(int param_1,int param_2) + +{ + FUN_0047bb34(param_1,param_2); + if (param_2 == 0) { + FUN_00476568(*(int *)(param_1 + 0x3c),0x3e,0); + if (*(int *)(param_1 + 0x4c) != 0) { + FUN_0046ff44(*(int *)(param_1 + 0x4c),1.5); + } + } + else { + FUN_00476568(*(int *)(param_1 + 0x3c),0x3e,0x3c); + if (*(int *)(param_1 + 0x4c) != 0) { + FUN_0046ff24(*(int *)(param_1 + 0x4c),1.5); + } + } + return; +} + + + +/* @0047bc14 file=? name=FUN_0047bc14 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_0047bc14(void) + +{ + undefined4 *puVar1; + + FUN_00419fa0((int *)&DAT_004fd50c,4,(int *)&DAT_004fd4bc,(int *)&DAT_004efd50); + FUN_0041a0f0((undefined4 *)&DAT_004fd514,0x4efd58,s_L4Application_004fd5c1); + _DAT_004fd544 = &DAT_004fd514; + _DAT_004fd548 = &DAT_004fd50c; + puVar1 = (undefined4 *)FUN_00402298(0x10); + if (puVar1 == (undefined4 *)0x0) { + DAT_0052330c = 0; + } + else { + DAT_0052330c = FUN_004023f4(puVar1); + } + *(int *)(DAT_0052330c + 0xc) = *(int *)(DAT_0052330c + 0xc) + 1; + puVar1 = (undefined4 *)FUN_00402298(0x10); + if (puVar1 == (undefined4 *)0x0) { + DAT_00523314 = 0; + } + else { + DAT_00523314 = FUN_004023f4(puVar1); + } + *(int *)(DAT_00523314 + 0xc) = *(int *)(DAT_00523314 + 0xc) + 1; + puVar1 = (undefined4 *)FUN_00402298(0x10); + if (puVar1 == (undefined4 *)0x0) { + DAT_00523318 = 0; + } + else { + DAT_00523318 = FUN_004023f4(puVar1); + } + *(int *)(DAT_00523318 + 0xc) = *(int *)(DAT_00523318 + 0xc) + 1; + return; +} + + + +/* @0047bd48 file=? name=FUN_0047bd48 */ + +undefined4 * __cdecl FUN_0047bd48(undefined4 *param_1) + +{ + FUN_0043457c(param_1); + *param_1 = &PTR_FUN_004fdbfc; + return param_1; +} + + + +/* @0047bd64 file=? name=FUN_0047bd64 */ + +void __cdecl FUN_0047bd64(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004fdbfc; + FUN_004345c0(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0047bd90 file=? name=FUN_0047bd90 */ + +void FUN_0047bd90(void) + +{ + return; +} + + + +/* @0047bd98 file=? name=FUN_0047bd98 */ + +void FUN_0047bd98(void) + +{ + return; +} + + + +/* @0047bda0 file=? name=FUN_0047bda0 */ + +void __cdecl FUN_0047bda0(undefined4 param_1,undefined4 *param_2) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00414b60(); + param_2[3] = *puVar1; + FUN_0044f7f4(*(int **)(*(int *)PTR_DAT_004fd91c + 0x18),param_2); + return; +} + + + +/* @0047bdcc file=? name=FUN_0047bdcc */ + +void FUN_0047bdcc(void) + +{ + return; +} + + + +/* @0047bdd4 file=? name=FUN_0047bdd4 */ + +int * __cdecl FUN_0047bdd4(int *param_1) + +{ + FUN_004501d4(param_1); + *param_1 = (int)&PTR_FUN_004fdbc0; + return param_1; +} + + + +/* @0047bdf0 file=? name=FUN_0047bdf0 */ + +void __cdecl FUN_0047bdf0(int *param_1,int param_2) + +{ + int *piVar1; + byte bVar2; + int *piVar3; + int iVar4; + undefined4 *puVar5; + uint *puVar6; + int iVar7; + int local_20 [5]; + int *local_c; + int *local_8; + + FUN_00450554(param_1,param_2); + piVar3 = *(int **)(*(int *)PTR_DAT_004fd91c + 0x18); + puVar5 = (undefined4 *)(**(code **)*piVar3)(piVar3); + *puVar5 = *(undefined4 *)(DAT_004efc94 + 0x54); + (**(code **)(*piVar3 + 0x14))(piVar3,4); + bVar2 = *(byte *)(*(int *)(DAT_004efc94 + 0x68) + 5); + puVar6 = (uint *)(**(code **)*piVar3)(piVar3); + *puVar6 = (uint)bVar2; + (**(code **)(*piVar3 + 0x14))(piVar3,4); + iVar4 = *(int *)(DAT_004efc94 + 0x2c); + FUN_0044d834(local_20,param_2); + while( true ) { + iVar7 = (**(code **)(local_20[0] + 0x28))(local_20); + if (iVar7 == 0) break; + local_c = *(int **)(iVar7 + 0xc); + local_c[3] = local_c[3] + 1; + local_c[3] = local_c[3] + 1; + local_c[3] = local_c[3] + 1; + local_8 = local_c; + iVar7 = FUN_00452244(param_1,local_c); + iVar7 = FUN_004290d8(iVar4,iVar7); + puVar6 = (uint *)(**(code **)*piVar3)(piVar3); + *puVar6 = (uint)(iVar7 != *(int *)(iVar4 + 0x14)); + (**(code **)(*piVar3 + 0x14))(piVar3,4); + puVar5 = (undefined4 *)(**(code **)*piVar3)(piVar3); + *puVar5 = *(undefined4 *)(iVar7 + 0xc); + (**(code **)(*piVar3 + 0x14))(piVar3,4); + piVar1 = local_8 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_8,3); + } + piVar1 = local_c + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_c,3); + } + } + FUN_0044d858(local_20,2); + return; +} + + + +/* @0047bf28 file=? name=FUN_0047bf28 */ + +void __cdecl FUN_0047bf28(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004fdbc0; + FUN_00450960(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0047bf54 file=? name=FUN_0047bf54 */ + +void __cdecl FUN_0047bf54(int *param_1,undefined4 *param_2,int param_3) + +{ + int *piVar1; + undefined4 *puVar2; + + if (*(int *)(param_3 + 4) == 3) { + piVar1 = *(int **)(*(int *)PTR_DAT_004fd91c + 0x18); + if (*(int *)(param_3 + 0xc) == 0) { + (**(code **)(*piVar1 + 0xc))(piVar1,0); + } + puVar2 = (undefined4 *)FUN_00414b60(); + param_2[3] = *puVar2; + FUN_0044f7f4(piVar1,param_2); + } + FUN_0041d59c(param_1,param_2,param_3); + return; +} + + + +/* @0047bfc4 file=? name=FUN_0047bfc4 */ + +undefined4 * __cdecl FUN_0047bfc4(undefined4 *param_1) + +{ + FUN_0041d5b4(param_1,&DAT_004e3744); + *param_1 = &PTR_FUN_004fdb84; + return param_1; +} + + + +/* @0047bfe4 file=? name=FUN_0047bfe4 */ + +void FUN_0047bfe4(undefined4 param_1,int param_2) + +{ + int *piVar1; + uint uVar2; + int *piVar3; + uint *puVar4; + undefined4 *puVar5; + int iVar6; + uint uVar7; + uint auStack_38 [8]; + undefined4 uStack_18; + int iStack_14; + int *piStack_10; + int *piStack_c; + int iStack_8; + + FUN_0044d834(auStack_38 + 3,param_2); + piVar1 = *(int **)(DAT_004efc94 + 0x18); + piVar3 = (int *)(**(code **)*piVar1)(piVar1); + iVar6 = *piVar3; + (**(code **)(*piVar1 + 0x14))(piVar1,4); + puVar4 = (uint *)(**(code **)*piVar1)(piVar1); + uVar2 = *puVar4; + (**(code **)(*piVar1 + 0x14))(piVar1,4); + if (iVar6 != *(int *)(DAT_004efc94 + 0x54)) { + FUN_004dbb24(&DAT_00524e20,s_Error___Not_a_spool_file_for_thi_004fd9b0,(char *)0x0); + FUN_004036a0(1); + } + uVar7 = (uint)*(byte *)(*(int *)(DAT_004efc94 + 0x68) + 5); + if (uVar2 != uVar7) { + FUN_004dbb24(&DAT_00524e20,s_Error___Spool_file_major_data_ve_004fd9e2,(char *)0x0); + piVar3 = FUN_004db78c(&DAT_00524e20,uVar7); + FUN_004dbb24(piVar3,s___not_004fda15,(char *)0x0); + piVar3 = FUN_004db78c(piVar3,uVar2); + FUN_004dbb24(piVar3,&DAT_004fda1c,(char *)0x0); + FUN_004036a0(1); + } + iStack_8 = *(int *)(DAT_004efc94 + 0x2c); + while( true ) { + iVar6 = (**(code **)(auStack_38[3] + 0x28))(auStack_38 + 3); + if (iVar6 == 0) break; + piStack_10 = *(int **)(iVar6 + 0xc); + piStack_10[3] = piStack_10[3] + 1; + piStack_10[3] = piStack_10[3] + 1; + piStack_c = piStack_10; + piVar3 = (int *)(**(code **)*piVar1)(piVar1); + iStack_14 = *piVar3; + (**(code **)(*piVar1 + 0x14))(piVar1,4); + puVar5 = (undefined4 *)(**(code **)*piVar1)(piVar1); + uStack_18 = *puVar5; + (**(code **)(*piVar1 + 0x14))(piVar1,4); + puVar5 = (undefined4 *)FUN_00402298(0x1068); + if (puVar5 == (undefined4 *)0x0) { + puVar5 = (undefined4 *)0x0; + } + else { + puVar5 = FUN_00450134(puVar5,uStack_18,*(undefined4 *)(iVar6 + 0x10),0,0,(int *)&piStack_c); + } + if (iStack_14 == 0) { + FUN_00428ee0(iStack_8,(int)puVar5); + } + else { + FUN_00428f94(iStack_8,(int)puVar5); + } + piVar3 = piStack_c + 3; + *piVar3 = *piVar3 + -1; + if (*piVar3 == 0) { + FUN_004024d8(piStack_c,3); + } + piVar3 = piStack_10 + 3; + *piVar3 = *piVar3 + -1; + if (*piVar3 == 0) { + FUN_004024d8(piStack_10,3); + } + } + auStack_38[0] = 0xc; + auStack_38[1] = 10; + auStack_38[2] = 1; + FUN_0041acbc(*(int *)(DAT_004efc94 + 0x60),2,DAT_004efc94,auStack_38,DAT_004e17f4); + FUN_0044d858((int *)(auStack_38 + 3),2); + return; +} + + + +/* @0047bfea file=? name=FUN_0047bfea */ + +void FUN_0047bfea(void) + +{ + int *piVar1; + uint uVar2; + int iVar3; + int *piVar4; + undefined4 uVar5; + int *piVar6; + uint *puVar7; + undefined4 *puVar8; + int iVar9; + uint uVar10; + int unaff_EBP; + + FUN_0044d834((undefined4 *)(unaff_EBP + -0x28),*(int *)(unaff_EBP + 0xc)); + piVar1 = *(int **)(DAT_004efc94 + 0x18); + piVar6 = (int *)(**(code **)*piVar1)(piVar1); + iVar9 = *piVar6; + (**(code **)(*piVar1 + 0x14))(piVar1,4); + puVar7 = (uint *)(**(code **)*piVar1)(piVar1); + uVar2 = *puVar7; + (**(code **)(*piVar1 + 0x14))(piVar1,4); + if (iVar9 != *(int *)(DAT_004efc94 + 0x54)) { + FUN_004dbb24(&DAT_00524e20,s_Error___Not_a_spool_file_for_thi_004fd9b0,(char *)0x0); + FUN_004036a0(1); + } + uVar10 = (uint)*(byte *)(*(int *)(DAT_004efc94 + 0x68) + 5); + if (uVar2 != uVar10) { + FUN_004dbb24(&DAT_00524e20,s_Error___Spool_file_major_data_ve_004fd9e2,(char *)0x0); + piVar6 = FUN_004db78c(&DAT_00524e20,uVar10); + FUN_004dbb24(piVar6,s___not_004fda15,(char *)0x0); + piVar6 = FUN_004db78c(piVar6,uVar2); + FUN_004dbb24(piVar6,&DAT_004fda1c,(char *)0x0); + FUN_004036a0(1); + } + *(undefined4 *)(unaff_EBP + -4) = *(undefined4 *)(DAT_004efc94 + 0x2c); + while( true ) { + iVar9 = (**(code **)(*(int *)(unaff_EBP + -0x28) + 0x28))(unaff_EBP + -0x28); + if (iVar9 == 0) break; + iVar3 = *(int *)(iVar9 + 0xc); + *(int *)(unaff_EBP + -0xc) = iVar3; + piVar6 = (int *)(iVar3 + 0xc); + *piVar6 = *piVar6 + 1; + *(int *)(unaff_EBP + -8) = *(int *)(unaff_EBP + -0xc); + piVar6 = (int *)(*(int *)(unaff_EBP + -0xc) + 0xc); + *piVar6 = *piVar6 + 1; + puVar8 = (undefined4 *)(**(code **)*piVar1)(piVar1); + *(undefined4 *)(unaff_EBP + -0x10) = *puVar8; + (**(code **)(*piVar1 + 0x14))(piVar1,4); + puVar8 = (undefined4 *)(**(code **)*piVar1)(piVar1); + *(undefined4 *)(unaff_EBP + -0x14) = *puVar8; + (**(code **)(*piVar1 + 0x14))(piVar1,4); + puVar8 = (undefined4 *)FUN_00402298(0x1068); + if (puVar8 == (undefined4 *)0x0) { + puVar8 = (undefined4 *)0x0; + } + else { + puVar8 = FUN_00450134(puVar8,*(undefined4 *)(unaff_EBP + -0x14),*(undefined4 *)(iVar9 + 0x10), + 0,0,(int *)(unaff_EBP + -8)); + } + if (*(int *)(unaff_EBP + -0x10) == 0) { + FUN_00428ee0(*(int *)(unaff_EBP + -4),(int)puVar8); + } + else { + FUN_00428f94(*(int *)(unaff_EBP + -4),(int)puVar8); + } + piVar4 = *(int **)(unaff_EBP + -8); + piVar6 = piVar4 + 3; + *piVar6 = *piVar6 + -1; + if (*piVar6 == 0) { + FUN_004024d8(piVar4,3); + } + piVar4 = *(int **)(unaff_EBP + -0xc); + piVar6 = piVar4 + 3; + *piVar6 = *piVar6 + -1; + if (*piVar6 == 0) { + FUN_004024d8(piVar4,3); + } + } + *(undefined4 *)(unaff_EBP + -0x34) = 0xc; + *(undefined4 *)(unaff_EBP + -0x30) = 10; + uVar5 = DAT_004e17f4; + *(undefined4 *)(unaff_EBP + -0x2c) = 1; + FUN_0041acbc(*(int *)(DAT_004efc94 + 0x60),2,DAT_004efc94,(uint *)(unaff_EBP + -0x34),uVar5); + FUN_0044d858((int *)(unaff_EBP + -0x28),2); + return; +} + + + /* @0047c1f0 file=? name=FUN_0047c1f0 */ undefined4 __cdecl FUN_0047c1f0(int param_1) @@ -102,6 +2582,18 @@ void __cdecl FUN_0047c2c4(int param_1,uint *param_2) +/* @0047c358 file=? name=FUN_0047c358 */ + +void __cdecl FUN_0047c358(int param_1) + +{ + (**(code **)(**(int **)(param_1 + 0x18) + 0xc))(*(int **)(param_1 + 0x18),0); + FUN_0044ef4c(param_1); + return; +} + + + /* @0047c380 file=? name=FUN_0047c380 */ void __cdecl FUN_0047c380(int *param_1,undefined4 *param_2,int param_3) @@ -4875,6 +7367,39 @@ int __cdecl FUN_00482587(int param_1) +/* @004825f5 file=? name=FUN_004825f5 */ + +undefined4 __cdecl FUN_004825f5(uint param_1) + +{ + undefined4 uVar1; + undefined4 local_c; + undefined4 local_8; + + if (param_1 < 8) { + if (*(int *)(&DAT_005015e8 + param_1 * 4) != -1) { + FUN_00481c82(*(int *)(&DAT_005015e8 + param_1 * 4)); + } + (&DAT_004fef78)[*(int *)(&DAT_005015e8 + param_1 * 4)] = 0xff; + *(undefined4 *)(&DAT_005015e8 + param_1 * 4) = 0xffffffff; + if ((&DAT_00501588)[param_1] != 0) { + local_c = *(undefined4 *)(&DAT_005015c8 + param_1 * 4); + local_8 = *(undefined4 *)(*(int *)(&DAT_005015c8 + param_1 * 4) + 0x380); + FUN_00485f3e(param_1); + (&DAT_00501588)[param_1] = 0; + *(undefined4 *)(&DAT_005015c8 + param_1 * 4) = 0; + FUN_004826d1(param_1,&local_c); + } + uVar1 = 0; + } + else { + uVar1 = 10; + } + return uVar1; +} + + + /* @004826d1 file=? name=FUN_004826d1 */ undefined4 __cdecl FUN_004826d1(int param_1,undefined4 *param_2) @@ -6946,6 +9471,487 @@ void FUN_00486462(void) +/* @00486a0e file=? name=FUN_00486a0e */ + +/* WARNING (jumptable): Unable to track spacebase fully for stack */ + +void FUN_00486a0e(void) + +{ + char *pcVar1; + byte bVar2; + byte bVar3; + undefined4 uVar4; + uint uVar5; + int iVar6; + uint uVar7; + int iVar8; + int iVar9; + int unaff_EBP; + + do { + if ((**(byte **)(&DAT_005006e0 + + (uint)DAT_004fef88 * 0x80 + (uint)*(byte *)(unaff_EBP + -0x14) * 4) & 0xf0) == + 0xb0) { + switch(*(undefined1 *) + (*(int *)(&DAT_005006e0 + + (uint)DAT_004fef88 * 0x80 + (uint)*(byte *)(unaff_EBP + -0x14) * 4) + 1)) { + case 0x67: + *(undefined1 *) + (*(int *)(&DAT_005015c8 + (uint)DAT_004fef88 * 4) + 0x300 + + (uint)*(byte *)(*(int *)(&DAT_005006e0 + + (uint)DAT_004fef88 * 0x80 + (uint)*(byte *)(unaff_EBP + -0x14) * 4) + + 2)) = 0; + break; + case 0x68: + *(undefined1 *) + (*(int *)(&DAT_005015c8 + (uint)DAT_004fef88 * 4) + 0x300 + + (uint)*(byte *)(*(int *)(&DAT_005006e0 + + (uint)DAT_004fef88 * 0x80 + (uint)*(byte *)(unaff_EBP + -0x14) * 4) + + 2)) = 1; + break; + default: + goto LAB_004875d9; + case 0x6c: + break; + case 0x6d: + *(uint *)(unaff_EBP + -0x1c) = + (uint)*(byte *)(*(int *)(&DAT_005006e0 + + (uint)DAT_004fef88 * 0x80 + + (uint)*(byte *)(unaff_EBP + -0x14) * 4) + 2); + iVar9 = 0; + while ((uint)*(byte *)(*(int *)(&DAT_00503fbc + + (uint)DAT_004fef88 * 0x80 + + (uint)*(byte *)(unaff_EBP + -0x14) * 4) + 4 + iVar9 * 0x18) + != *(uint *)(unaff_EBP + -0x1c)) { + iVar9 = iVar9 + 1; + } + *(undefined1 *) + (*(int *)(&DAT_00503fbc + + (uint)DAT_004fef88 * 0x80 + (uint)*(byte *)(unaff_EBP + -0x14) * 4) + 6 + + iVar9 * 0x18) = + *(undefined1 *) + (*(int *)(&DAT_005006e0 + + (uint)DAT_004fef88 * 0x80 + (uint)*(byte *)(unaff_EBP + -0x14) * 4) + 6); + break; + case 0x6e: + break; + case 0x6f: + case 0x70: + *(uint *)(unaff_EBP + -0x1c) = + (uint)*(byte *)(*(int *)(&DAT_005006e0 + + (uint)DAT_004fef88 * 0x80 + + (uint)*(byte *)(unaff_EBP + -0x14) * 4) + 2); + iVar9 = 0; + while ((uint)*(byte *)(*(int *)(&DAT_00503fbc + + (uint)DAT_004fef88 * 0x80 + + (uint)*(byte *)(unaff_EBP + -0x14) * 4) + 4 + iVar9 * 0x18) + != *(uint *)(unaff_EBP + -0x1c)) { + iVar9 = iVar9 + 1; + } + uVar5 = (uint)*(byte *)(*(int *)(&DAT_00503fbc + + (uint)DAT_004fef88 * 0x80 + + (uint)*(byte *)(unaff_EBP + -0x14) * 4) + 6 + iVar9 * 0x18); + *(uint *)(unaff_EBP + -0x20) = uVar5; + if ((uVar5 != 0xff) && (*(int *)(unaff_EBP + -0x20) != 0)) { + pcVar1 = (char *)(*(int *)(&DAT_00503fbc + + (uint)DAT_004fef88 * 0x80 + + (uint)*(byte *)(unaff_EBP + -0x14) * 4) + 6 + iVar9 * 0x18); + *pcVar1 = *pcVar1 + -1; + *(int *)(unaff_EBP + -0x20) = *(int *)(unaff_EBP + -0x20) + -1; + } + bVar2 = DAT_004fef88; + if (*(int *)(&DAT_005043dc + (uint)DAT_004fef88 * 4) != 0) { + DAT_005053dc = '\x01'; + *(undefined4 *)(unaff_EBP + -0x24) = + *(undefined4 *)(&DAT_005043dc + (uint)DAT_004fef88 * 4); + iVar9 = (**(code **)(unaff_EBP + -0x24)) + (bVar2,*(undefined1 *)(unaff_EBP + -0x14), + *(undefined1 *)(unaff_EBP + -0x1c),*(undefined1 *)(unaff_EBP + -0x20)); + if (iVar9 == 0) { + *(undefined4 *)(unaff_EBP + -0x20) = 0; + } + if (DAT_005053dc == '\0') { + *(undefined4 *)(unaff_EBP + -4) = 0; + *(undefined4 *)(unaff_EBP + -0x18) = 0; + } + else { + DAT_005053dc = '\0'; + } + } + if (*(int *)(unaff_EBP + -0x20) != 0) { + for (uVar5 = 1; uVar5 < *(uint *)(&DAT_00501320 + (uint)DAT_004fef88 * 4); + uVar5 = uVar5 + 1) { + if (*(int *)(&DAT_005006e0 + (uint)DAT_004fef88 * 0x80 + uVar5 * 4) != 0) { + iVar9 = 0; + while ((uint)*(byte *)(*(int *)(&DAT_00503fbc + (uint)DAT_004fef88 * 0x80 + uVar5 * 4) + + 4 + iVar9 * 0x18) != *(uint *)(unaff_EBP + -0x1c)) { + iVar9 = iVar9 + 1; + } + iVar8 = *(int *)(*(int *)(&DAT_00503fbc + (uint)DAT_004fef88 * 0x80 + uVar5 * 4) + + iVar9 * 0x18) + 0xc; + iVar6 = *(int *)(&DAT_00502bd8 + (uint)DAT_004fef88 * 0x80 + uVar5 * 4); + uVar7 = (uint)DAT_004fef88; + *(int *)(unaff_EBP + -0x28) = iVar8; + *(int *)(&DAT_005006e0 + uVar7 * 0x80 + uVar5 * 4) = iVar6 + iVar8; + iVar8 = FUN_004828ab(*(byte **)(&DAT_005006e0 + (uint)DAT_004fef88 * 0x80 + uVar5 * 4) + ,(uint *)(&DAT_00500ae0 + (uint)DAT_004fef88 * 0x80 + uVar5 * 4)) + ; + iVar6 = *(int *)(&DAT_005006e0 + (uint)DAT_004fef88 * 0x80 + uVar5 * 4); + uVar7 = (uint)DAT_004fef88; + *(int *)(unaff_EBP + -0x18) = iVar8; + *(int *)(&DAT_005006e0 + uVar7 * 0x80 + uVar5 * 4) = iVar6 + iVar8; + *(undefined4 *)(&DAT_00500ee0 + (uint)DAT_004fef88 * 0x80 + uVar5 * 4) = 0; + *(undefined4 *)(unaff_EBP + -4) = 0; + FUN_00487788((uint)DAT_004fef88,uVar5,iVar9); + } + } + *(undefined4 *)(unaff_EBP + -0x18) = 0; + } + break; + case 0x71: + break; + case 0x72: + *(uint *)(unaff_EBP + -0x1c) = + *(byte *)(*(int *)(&DAT_005006e0 + + (uint)DAT_004fef88 * 0x80 + (uint)*(byte *)(unaff_EBP + -0x14) * 4) + + 2) | 0x80; + iVar9 = 0; + while ((uint)*(byte *)(*(int *)(&DAT_00503fbc + + (uint)DAT_004fef88 * 0x80 + + (uint)*(byte *)(unaff_EBP + -0x14) * 4) + 4 + iVar9 * 0x18) + != *(uint *)(unaff_EBP + -0x1c)) { + iVar9 = iVar9 + 1; + } + *(undefined4 *)(unaff_EBP + -0x20) = 1; + iVar9 = *(int *)(&DAT_005043bc + (uint)DAT_004fef88 * 4); + *(int *)(unaff_EBP + -0x2c) = iVar9; + bVar2 = DAT_004fef88; + if (iVar9 != 0) { + DAT_005053dc = '\x01'; + *(undefined4 *)(unaff_EBP + -0x2c) = + *(undefined4 *)(&DAT_005043bc + (uint)DAT_004fef88 * 4); + iVar9 = (**(code **)(unaff_EBP + -0x2c)) + (bVar2,*(undefined1 *)(unaff_EBP + -0x14), + *(undefined1 *)(unaff_EBP + -0x1c)); + if (iVar9 == 0) { + *(undefined4 *)(unaff_EBP + -0x20) = 0; + } + if (DAT_005053dc == '\0') { + *(undefined4 *)(unaff_EBP + -4) = 0; + *(undefined4 *)(unaff_EBP + -0x18) = 0; + } + else { + DAT_005053dc = '\0'; + } + } + if (*(int *)(unaff_EBP + -0x20) != 0) { + for (uVar5 = 1; uVar5 < *(uint *)(&DAT_00501320 + (uint)DAT_004fef88 * 4); + uVar5 = uVar5 + 1) { + if (*(int *)(&DAT_005006e0 + (uint)DAT_004fef88 * 0x80 + uVar5 * 4) != 0) { + iVar9 = 0; + while ((uint)*(byte *)(*(int *)(&DAT_00503fbc + (uint)DAT_004fef88 * 0x80 + uVar5 * 4) + + 4 + iVar9 * 0x18) != *(uint *)(unaff_EBP + -0x1c)) { + iVar9 = iVar9 + 1; + } + iVar8 = *(int *)(*(int *)(&DAT_00503fbc + (uint)DAT_004fef88 * 0x80 + uVar5 * 4) + + iVar9 * 0x18) + 0xc; + iVar6 = *(int *)(&DAT_00502bd8 + (uint)DAT_004fef88 * 0x80 + uVar5 * 4); + uVar7 = (uint)DAT_004fef88; + *(int *)(unaff_EBP + -0x28) = iVar8; + *(int *)(&DAT_005006e0 + uVar7 * 0x80 + uVar5 * 4) = iVar6 + iVar8; + iVar8 = FUN_004828ab(*(byte **)(&DAT_005006e0 + (uint)DAT_004fef88 * 0x80 + uVar5 * 4) + ,(uint *)(&DAT_00500ae0 + (uint)DAT_004fef88 * 0x80 + uVar5 * 4)) + ; + iVar6 = *(int *)(&DAT_005006e0 + (uint)DAT_004fef88 * 0x80 + uVar5 * 4); + uVar7 = (uint)DAT_004fef88; + *(int *)(unaff_EBP + -0x18) = iVar8; + *(int *)(&DAT_005006e0 + uVar7 * 0x80 + uVar5 * 4) = iVar6 + iVar8; + *(undefined4 *)(&DAT_00500ee0 + (uint)DAT_004fef88 * 0x80 + uVar5 * 4) = 0; + *(undefined4 *)(unaff_EBP + -4) = 0; + FUN_00487788((uint)DAT_004fef88,uVar5,iVar9); + } + } + *(undefined4 *)(unaff_EBP + -0x18) = 0; + } + break; + case 0x73: + *(uint *)(unaff_EBP + -0x1c) = + (uint)*(byte *)(*(int *)(&DAT_005006e0 + + (uint)DAT_004fef88 * 0x80 + + (uint)*(byte *)(unaff_EBP + -0x14) * 4) + 2); + iVar9 = 0; + while ((uint)*(byte *)(*(int *)(&DAT_00503fbc + + (uint)DAT_004fef88 * 0x80 + + (uint)*(byte *)(unaff_EBP + -0x14) * 4) + 4 + iVar9 * 0x18) + != *(uint *)(unaff_EBP + -0x1c)) { + iVar9 = iVar9 + 1; + } + *(undefined1 *) + (*(int *)(&DAT_00503fbc + + (uint)DAT_004fef88 * 0x80 + (uint)*(byte *)(unaff_EBP + -0x14) * 4) + 6 + + iVar9 * 0x18) = + *(undefined1 *) + (*(int *)(&DAT_005006e0 + + (uint)DAT_004fef88 * 0x80 + (uint)*(byte *)(unaff_EBP + -0x14) * 4) + 6); + break; + case 0x74: + break; + case 0x75: + case 0x76: + *(uint *)(unaff_EBP + -0x1c) = + (uint)*(byte *)(*(int *)(&DAT_005006e0 + + (uint)DAT_004fef88 * 0x80 + + (uint)*(byte *)(unaff_EBP + -0x14) * 4) + 2); + iVar9 = 0; + while ((uint)*(byte *)(*(int *)(&DAT_00503fbc + + (uint)DAT_004fef88 * 0x80 + + (uint)*(byte *)(unaff_EBP + -0x14) * 4) + 4 + iVar9 * 0x18) + != *(uint *)(unaff_EBP + -0x1c)) { + iVar9 = iVar9 + 1; + } + uVar5 = (uint)*(byte *)(*(int *)(&DAT_00503fbc + + (uint)DAT_004fef88 * 0x80 + + (uint)*(byte *)(unaff_EBP + -0x14) * 4) + 6 + iVar9 * 0x18); + *(uint *)(unaff_EBP + -0x20) = uVar5; + if ((uVar5 != 0xff) && (*(int *)(unaff_EBP + -0x20) != 0)) { + pcVar1 = (char *)(*(int *)(&DAT_00503fbc + + (uint)DAT_004fef88 * 0x80 + + (uint)*(byte *)(unaff_EBP + -0x14) * 4) + 6 + iVar9 * 0x18); + *pcVar1 = *pcVar1 + -1; + *(int *)(unaff_EBP + -0x20) = *(int *)(unaff_EBP + -0x20) + -1; + } + bVar2 = DAT_004fef88; + if (*(int *)(&DAT_005043dc + (uint)DAT_004fef88 * 4) != 0) { + DAT_005053dc = '\x01'; + *(undefined4 *)(unaff_EBP + -0x30) = + *(undefined4 *)(&DAT_005043dc + (uint)DAT_004fef88 * 4); + iVar6 = (**(code **)(unaff_EBP + -0x30)) + (bVar2,*(undefined1 *)(unaff_EBP + -0x14), + *(undefined1 *)(unaff_EBP + -0x1c),*(undefined1 *)(unaff_EBP + -0x20)); + if (iVar6 == 0) { + *(undefined4 *)(unaff_EBP + -0x20) = 0; + } + if (DAT_005053dc == '\0') { + *(undefined4 *)(unaff_EBP + -0x18) = 0; + } + else { + DAT_005053dc = '\0'; + } + } + bVar2 = DAT_004fef88; + if (*(int *)(unaff_EBP + -0x20) != 0) { + bVar3 = *(byte *)(unaff_EBP + -0x14); + iVar8 = *(int *)(*(int *)(&DAT_00503fbc + (uint)DAT_004fef88 * 0x80 + (uint)bVar3 * 4) + + iVar9 * 0x18) + 0xc; + iVar6 = *(int *)(&DAT_00502bd8 + (uint)DAT_004fef88 * 0x80 + (uint)bVar3 * 4); + *(int *)(unaff_EBP + -0x28) = iVar8; + *(int *)(&DAT_005006e0 + (uint)bVar2 * 0x80 + (uint)bVar3 * 4) = iVar6 + iVar8; + FUN_00487788((uint)DAT_004fef88,(uint)*(byte *)(unaff_EBP + -0x14),iVar9); + *(undefined4 *)(unaff_EBP + -0x18) = 0; + } + break; + case 0x77: + iVar9 = *(int *)(&DAT_005043fc + + (uint)DAT_004fef88 * 0x1fc + + (uint)*(byte *)(*(int *)(&DAT_005006e0 + + (uint)DAT_004fef88 * 0x80 + + (uint)*(byte *)(unaff_EBP + -0x14) * 4) + 2) * 4); + *(uint *)(unaff_EBP + -0x20) = + (uint)*(byte *)(*(int *)(&DAT_005006e0 + + (uint)DAT_004fef88 * 0x80 + + (uint)*(byte *)(unaff_EBP + -0x14) * 4) + 2); + bVar2 = DAT_004fef88; + if (iVar9 != 0) { + DAT_005053dc = '\x01'; + *(undefined4 *)(unaff_EBP + -0x34) = + *(undefined4 *) + (&DAT_005043fc + (uint)DAT_004fef88 * 0x1fc + *(uint *)(unaff_EBP + -0x20) * 4); + (**(code **)(unaff_EBP + -0x34)) + (bVar2,*(undefined1 *)(unaff_EBP + -0x14),*(uint *)(unaff_EBP + -0x20) & 0xff); + if (DAT_005053dc == '\0') { + *(undefined4 *)(unaff_EBP + -4) = 0; + *(undefined4 *)(unaff_EBP + -0x18) = 0; + } + else { + DAT_005053dc = '\0'; + } + } + break; + case 0x78: + break; + case 0x79: + *(uint *)(unaff_EBP + -0x1c) = + (uint)*(byte *)(*(int *)(&DAT_005006e0 + + (uint)DAT_004fef88 * 0x80 + + (uint)*(byte *)(unaff_EBP + -0x14) * 4) + 2); + iVar9 = 0; + while ((uint)*(byte *)(*(int *)(&DAT_00503fbc + + (uint)DAT_004fef88 * 0x80 + + (uint)*(byte *)(unaff_EBP + -0x14) * 4) + 4 + iVar9 * 0x18) + != *(uint *)(unaff_EBP + -0x1c)) { + iVar9 = iVar9 + 1; + } + *(undefined4 *)(unaff_EBP + -0x20) = 1; + iVar6 = *(int *)(&DAT_005043bc + (uint)DAT_004fef88 * 4); + *(int *)(unaff_EBP + -0x38) = iVar6; + bVar2 = DAT_004fef88; + if (iVar6 != 0) { + DAT_005053dc = '\x01'; + *(undefined4 *)(unaff_EBP + -0x38) = + *(undefined4 *)(&DAT_005043bc + (uint)DAT_004fef88 * 4); + iVar6 = (**(code **)(unaff_EBP + -0x38)) + (bVar2,*(undefined1 *)(unaff_EBP + -0x14), + *(undefined1 *)(unaff_EBP + -0x1c)); + if (iVar6 == 0) { + *(undefined4 *)(unaff_EBP + -0x20) = 0; + } + if (DAT_005053dc == '\0') { + *(undefined4 *)(unaff_EBP + -0x18) = 0; + } + else { + DAT_005053dc = '\0'; + } + } + bVar2 = DAT_004fef88; + if (*(int *)(unaff_EBP + -0x20) != 0) { + bVar3 = *(byte *)(unaff_EBP + -0x14); + iVar8 = *(int *)(*(int *)(&DAT_00503fbc + (uint)DAT_004fef88 * 0x80 + (uint)bVar3 * 4) + + iVar9 * 0x18) + 0xc; + iVar6 = *(int *)(&DAT_00502bd8 + (uint)DAT_004fef88 * 0x80 + (uint)bVar3 * 4); + *(int *)(unaff_EBP + -0x28) = iVar8; + *(int *)(&DAT_005006e0 + (uint)bVar2 * 0x80 + (uint)bVar3 * 4) = iVar6 + iVar8; + FUN_00487788((uint)DAT_004fef88,(uint)*(byte *)(unaff_EBP + -0x14),iVar9); + *(undefined4 *)(unaff_EBP + -0x18) = 0; + } + } + } + else { +LAB_004875d9: + if (*(char *)(unaff_EBP + -0x14) != '\0') { + FUN_004852c7((uint)DAT_004fef88, + *(byte **)(&DAT_005006e0 + + (uint)DAT_004fef88 * 0x80 + (uint)*(byte *)(unaff_EBP + -0x14) * 4), + *(int *)(*(int *)(&DAT_005012e0 + (uint)DAT_004fef88 * 4) + + (uint)*(byte *)(unaff_EBP + -0x14) * 4), + *(undefined4 *)(unaff_EBP + -0x18)); + } + } +LAB_0048762a: + if (DAT_005053dc == '\0') { + *(undefined4 *) + (&DAT_00500ee0 + (uint)DAT_004fef88 * 0x80 + (uint)*(byte *)(unaff_EBP + -0x14) * 4) = 0; + } + if (*(int *)(&DAT_005006e0 + (uint)DAT_004fef88 * 0x80 + (uint)*(byte *)(unaff_EBP + -0x14) * 4) + == 0) { +LAB_00487764: + do { + *(char *)(unaff_EBP + -0x14) = *(char *)(unaff_EBP + -0x14) + '\x01'; + if (*(uint *)(&DAT_00501320 + (uint)DAT_004fef88 * 4) <= (uint)*(byte *)(unaff_EBP + -0x14)) + { + return; + } + bVar2 = *(byte *)(unaff_EBP + -0x14); + *(int *)(&DAT_00500ee0 + (uint)DAT_004fef88 * 0x80 + (uint)bVar2 * 4) = + *(int *)(&DAT_00500ee0 + (uint)DAT_004fef88 * 0x80 + (uint)bVar2 * 4) + 1; + } while ((*(int *)(&DAT_005006e0 + (uint)DAT_004fef88 * 0x80 + (uint)bVar2 * 4) == 0) || + (*(uint *)(&DAT_00500ee0 + + (uint)DAT_004fef88 * 0x80 + (uint)*(byte *)(unaff_EBP + -0x14) * 4) < + *(uint *)(&DAT_00500ae0 + + (uint)DAT_004fef88 * 0x80 + (uint)*(byte *)(unaff_EBP + -0x14) * 4))); + } + else { + iVar9 = *(int *)(&DAT_005006e0 + + (uint)DAT_004fef88 * 0x80 + (uint)*(byte *)(unaff_EBP + -0x14) * 4) + + *(int *)(unaff_EBP + -0x18); + *(int *)(&DAT_005006e0 + (uint)DAT_004fef88 * 0x80 + (uint)*(byte *)(unaff_EBP + -0x14) * 4) = + iVar9; + *(int *)(unaff_EBP + -0x3c) = iVar9; + if (*(int *)(unaff_EBP + -4) != 0) { + iVar6 = FUN_004828ab(*(byte **)(&DAT_005006e0 + + (uint)DAT_004fef88 * 0x80 + + (uint)*(byte *)(unaff_EBP + -0x14) * 4), + (uint *)(&DAT_00500ae0 + + (uint)DAT_004fef88 * 0x80 + + (uint)*(byte *)(unaff_EBP + -0x14) * 4)); + iVar9 = *(int *)(&DAT_005006e0 + + (uint)DAT_004fef88 * 0x80 + (uint)*(byte *)(unaff_EBP + -0x14) * 4); + *(int *)(&DAT_005006e0 + (uint)DAT_004fef88 * 0x80 + (uint)*(byte *)(unaff_EBP + -0x14) * 4) + = iVar9 + iVar6; + *(int *)(unaff_EBP + -0x18) = iVar6; + *(int *)(unaff_EBP + -0x3c) = iVar9 + iVar6; + } + if (*(int *)(&DAT_00500ae0 + + (uint)DAT_004fef88 * 0x80 + (uint)*(byte *)(unaff_EBP + -0x14) * 4) != 0) + goto LAB_00487764; + } + DAT_005053dc = '\0'; + *(undefined4 *)(unaff_EBP + -4) = 1; + if (**(byte **)(&DAT_005006e0 + + (uint)DAT_004fef88 * 0x80 + (uint)*(byte *)(unaff_EBP + -0x14) * 4) < 0xf0) { + *(uint *)(unaff_EBP + -0x18) = + (uint)(byte)(&DAT_005015a8) + [(int)(uint)**(byte **)(&DAT_005006e0 + + (uint)DAT_004fef88 * 0x80 + + (uint)*(byte *)(unaff_EBP + -0x14) * 4) >> 4]; + } + else { + *(uint *)(unaff_EBP + -0x18) = + (uint)(byte)(&DAT_005015b8) + [**(byte **)(&DAT_005006e0 + + (uint)DAT_004fef88 * 0x80 + + (uint)*(byte *)(unaff_EBP + -0x14) * 4) & 0xf]; + } + if (**(char **)(&DAT_005006e0 + + (uint)DAT_004fef88 * 0x80 + (uint)*(byte *)(unaff_EBP + -0x14) * 4) == -1) { + if (*(char *)(*(int *)(&DAT_005006e0 + + (uint)DAT_004fef88 * 0x80 + (uint)*(byte *)(unaff_EBP + -0x14) * 4) + 1) + == '/') { + *(undefined4 *) + (&DAT_005006e0 + (uint)DAT_004fef88 * 0x80 + (uint)*(byte *)(unaff_EBP + -0x14) * 4) = 0; + if ((*(int *)(&DAT_00501300 + (uint)DAT_004fef88 * 4) == 2) && + (*(int *)(&DAT_005006e0 + (uint)DAT_004fef88 * 0x80) != 0)) { + *(int *)(&DAT_00501300 + (uint)DAT_004fef88 * 4) = + *(int *)(&DAT_00501300 + (uint)DAT_004fef88 * 4) + -1; + *(undefined4 *)(&DAT_005006e0 + (uint)DAT_004fef88 * 0x80) = 0; + } + iVar9 = *(int *)(&DAT_00501300 + (uint)DAT_004fef88 * 4); + *(int *)(&DAT_00501300 + (uint)DAT_004fef88 * 4) = iVar9 + -1; + if (iVar9 + -1 == 0) { + (&DAT_00501588)[DAT_004fef88] = 0; + FUN_00485f3e((uint)DAT_004fef88); + if (*(int *)(&DAT_005015e8 + (uint)DAT_004fef88 * 4) != -1) { + FUN_00481c82(*(int *)(&DAT_005015e8 + (uint)DAT_004fef88 * 4)); + } + (&DAT_004fef78)[*(int *)(&DAT_005015e8 + (uint)DAT_004fef88 * 4)] = 0xff; + *(undefined4 *)(&DAT_005015e8 + (uint)DAT_004fef88 * 4) = 0xffffffff; + uVar4 = *(undefined4 *)(*(int *)(&DAT_005015c8 + (uint)DAT_004fef88 * 4) + 0x380); + *(undefined4 *)(unaff_EBP + -0xc) = + *(undefined4 *)(&DAT_005015c8 + (uint)DAT_004fef88 * 4); + *(undefined4 *)(unaff_EBP + -8) = uVar4; + *(undefined4 *)(&DAT_005015c8 + (uint)DAT_004fef88 * 4) = 0; + uVar5 = (uint)DAT_004fef88; + *(undefined4 *)(unaff_EBP + -0x10) = uVar4; + FUN_004826d1(uVar5,(undefined4 *)(unaff_EBP + -0xc)); + if (*(int *)(unaff_EBP + -0x10) != 0) { + (**(code **)(unaff_EBP + -0x10))(DAT_004fef88); + } + return; + } + *(undefined4 *)(unaff_EBP + -0x18) = 3; + } + else if (*(char *)(*(int *)(&DAT_005006e0 + + (uint)DAT_004fef88 * 0x80 + (uint)*(byte *)(unaff_EBP + -0x14) * 4) + + 1) == 'Q') { + *(undefined4 *)(unaff_EBP + -0x18) = 5; + } + goto LAB_0048762a; + } + } while( true ); +} + + + /* @00487788 file=? name=FUN_00487788 */ void __cdecl FUN_00487788(int param_1,int param_2,int param_3) @@ -8240,1930 +11246,3 @@ void __cdecl FUN_00488b80(undefined4 *param_1) -/* @00488bac file=? name=FUN_00488bac */ - -void __cdecl FUN_00488bac(int param_1,float param_2,float param_3) - -{ - *(float *)(param_1 + 0x10) = param_2 + *(float *)(param_1 + 0x10); - *(float *)(param_1 + 0x14) = param_3 + *(float *)(param_1 + 0x14); - return; -} - - - -/* @00488bc8 file=? name=FUN_00488bc8 */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -void __cdecl FUN_00488bc8(undefined4 *param_1,float param_2) - -{ - double dVar1; - float fVar2; - float10 fVar3; - float local_24; - float local_20; - float local_1c; - float local_18; - undefined4 local_14; - undefined4 local_10; - float local_c; - float local_8; - - fVar2 = _DAT_00488c40 * param_2; - dVar1 = (double)fVar2; - fVar3 = (float10)FUN_004dd0f4(SUB84(dVar1,0),(int)((ulonglong)dVar1 >> 0x20)); - local_8 = (float)fVar3; - dVar1 = (double)fVar2; - fVar3 = (float10)FUN_004dc9b4(SUB84(dVar1,0),(int)((ulonglong)dVar1 >> 0x20)); - local_24 = (float)fVar3; - local_20 = local_8; - local_1c = -local_8; - local_14 = 0; - local_10 = 0; - local_18 = local_24; - local_c = local_24; - FUN_00488af4(param_1,(float *)param_1,&local_24); - return; -} - - - -/* @00488c80 file=? name=FUN_00488c80 */ - -void __cdecl FUN_00488c80(int *param_1,int param_2) - -{ - if (param_1 != (int *)0x0) { - param_1[2] = 0; - param_1[3] = 0; - *param_1 = param_2; - param_1[1] = *(int *)(param_2 + 0xc); - return; - } - FUN_0049a300(1,s_Attempt_to_init_NULL_list_00505b84); - return; -} - - - -/* @00488cb4 file=? name=FUN_00488cb4 */ - -void __cdecl FUN_00488cb4(undefined4 param_1,undefined4 *param_2) - -{ - if (param_2 != (undefined4 *)0x0) { - *param_2 = param_1; - param_2[1] = 0; - param_2[3] = 0; - param_2[2] = 0; - return; - } - FUN_0049a300(1,s_Attempt_to_init_NULL_superlist_00505b9f); - return; -} - - - -/* @00488cec file=? name=FUN_00488cec */ - -int * __cdecl FUN_00488cec(int param_1) - -{ - int *piVar1; - - piVar1 = (int *)FUN_00452c38(0x10); - if (piVar1 != (int *)0x0) { - FUN_00488c80(piVar1,param_1); - return piVar1; - } - return (int *)0x0; -} - - - -/* @00488d18 file=? name=FUN_00488d18 */ - -undefined4 __cdecl FUN_00488d18(int param_1) - -{ - if (param_1 == 0) { - FUN_0049a300(1,s_Attempt_to_get_first_on_NULL_sup_00505bbf); - return 0; - } - *(undefined4 *)(param_1 + 4) = *(undefined4 *)(param_1 + 8); - if (*(undefined4 **)(param_1 + 8) != (undefined4 *)0x0) { - return **(undefined4 **)(param_1 + 8); - } - return 0; -} - - - -/* @00488d50 file=? name=FUN_00488d50 */ - -undefined4 __cdecl FUN_00488d50(int param_1) - -{ - undefined4 *puVar1; - - if (*(int *)(param_1 + 4) == 0) { - FUN_0049a300(1,s_Attempt_to_get_next_on_NULL_supe_00505be7); - return 0; - } - puVar1 = *(undefined4 **)(*(int *)(param_1 + 4) + 8); - *(undefined4 **)(param_1 + 4) = puVar1; - if (puVar1 != (undefined4 *)0x0) { - return *puVar1; - } - return 0; -} - - - -/* @00488d88 file=? name=FUN_00488d88 */ - -void __cdecl FUN_00488d88(int *param_1,int param_2) - -{ - int iVar1; - int *piVar2; - - if (param_1 == (int *)0x0) { - FUN_0049a300(1,s_Attempt_to_add_to_NULL_superlist_00505c0e); - } - else { - piVar2 = FUN_00488cec(param_2); - FUN_0048d7e0(param_1,param_2); - if (param_1[2] == param_1[3]) { - if (param_1[2] == 0) { - param_1[2] = (int)piVar2; - param_1[3] = (int)piVar2; - } - else { - *(int **)(param_1[3] + 8) = piVar2; - param_1[3] = (int)piVar2; - piVar2[3] = param_1[2]; - } - } - else { - iVar1 = param_1[3]; - *(int **)(iVar1 + 8) = piVar2; - piVar2[3] = iVar1; - param_1[3] = (int)piVar2; - } - } - return; -} - - - -/* @00488df8 file=? name=FUN_00488df8 */ - -int * __cdecl FUN_00488df8(int param_1,int param_2,int *param_3) - -{ - int *piVar1; - int iVar2; - - iVar2 = 0; - if (param_1 == 0) { - FUN_0049a300(1,s_Attempt_to_find_item_in_NULL_sup_00505c30); - return (int *)0x0; - } - piVar1 = *(int **)(param_1 + 8); - if (piVar1 == (int *)0x0) { - return (int *)0x0; - } - do { - if (param_2 == *piVar1) { - *param_3 = iVar2; - return piVar1; - } - piVar1 = (int *)piVar1[2]; - iVar2 = iVar2 + 1; - } while (piVar1 != (int *)0x0); - return (int *)0x0; -} - - - -/* @00488e44 file=? name=FUN_00488e44 */ - -void __cdecl FUN_00488e44(int param_1,int param_2) - -{ - if (param_2 == *(int *)(param_1 + 8)) { - if (*(int *)(param_1 + 8) == *(int *)(param_1 + 0xc)) { - *(undefined4 *)(param_1 + 8) = 0; - *(undefined4 *)(param_1 + 0xc) = 0; - } - else { - if (*(int *)(param_2 + 0xc) != 0) { - FUN_004d771c(s_Bad_error__head_of_list_has_a_pr_00505c58); - } - *(undefined4 *)(param_1 + 8) = *(undefined4 *)(param_2 + 8); - *(undefined4 *)(*(int *)(param_2 + 8) + 0xc) = 0; - } - } - else { - *(undefined4 *)(*(int *)(param_2 + 0xc) + 8) = *(undefined4 *)(param_2 + 8); - if (param_2 == *(int *)(param_1 + 0xc)) { - if (*(int *)(param_2 + 8) != 0) { - FUN_004d771c(s_Bad_error__tail_of_list_has_a_ne_00505c7c); - } - *(undefined4 *)(param_1 + 0xc) = *(undefined4 *)(param_2 + 0xc); - } - else { - *(undefined4 *)(*(int *)(param_2 + 8) + 0xc) = *(undefined4 *)(param_2 + 0xc); - } - } - return; -} - - - -/* @00488ebc file=? name=FUN_00488ebc */ - -undefined4 __cdecl FUN_00488ebc(int *param_1,int param_2) - -{ - int *piVar1; - undefined4 uVar2; - int local_8; - - if (param_1 == (int *)0x0) { - FUN_0049a300(1,s_Attempt_to_remove_from_NULL_supe_00505cbd); - uVar2 = 0; - } - else { - piVar1 = FUN_00488df8((int)param_1,param_2,&local_8); - if (piVar1 == (int *)0x0) { - FUN_0049a300(1,s_item_0x_x_not_found_in_list_00505ca0); - uVar2 = 0; - } - else { - FUN_0048d838(param_1,param_2); - FUN_00488e44((int)param_1,(int)piVar1); - FUN_00452c88(piVar1); - uVar2 = 1; - } - } - return uVar2; -} - - - -/* @00488f34 file=? name=FUN_00488f34 */ - -undefined4 * __cdecl FUN_00488f34(uint param_1,int param_2,undefined *param_3) - -{ - undefined4 *puVar1; - - puVar1 = (undefined4 *)FUN_00452c38(param_1); - if (puVar1 == (undefined4 *)0x0) { - FUN_004d771c(s_Failed_to_allocate_space_in_new__00505ce4); - puVar1 = (undefined4 *)0x0; - } - else { - puVar1[3] = param_2; - if (param_2 - 1U < 0xe) { - (*(code *)param_3)(puVar1); - } - else { - FUN_004d771c(s_Deeply_erroneous___cant_create_t_00505d0a); - } - puVar1[1] = 0; - FUN_0048d294((int)puVar1); - FUN_0048d350(puVar1,param_1); - } - return puVar1; -} - - - -/* @00488f9c file=? name=FUN_00488f9c */ - -void __cdecl FUN_00488f9c(undefined4 param_1) - -{ - DAT_00505b70 = param_1; - return; -} - - - -/* @00488fac file=? name=FUN_00488fac */ - -void FUN_00488fac(void) - -{ - int *piVar1; - - while (DAT_00505b74 != (int *)0x0) { - piVar1 = (int *)DAT_00505b74[1]; - FUN_0048d30c((int)DAT_00505b74); - FUN_00452c88(DAT_00505b74); - DAT_00505b74 = piVar1; - } - return; -} - - - -/* @00488fd8 file=? name=FUN_00488fd8 */ - -undefined4 __cdecl FUN_00488fd8(int *param_1) - -{ - if (DAT_00505b70 == 0) { - FUN_0048d30c((int)param_1); - FUN_00452c88(param_1); - } - else { - param_1[1] = (int)DAT_00505b74; - DAT_00505b74 = param_1; - } - return 0; -} - - - -/* @0048900c file=? name=FUN_0048900c */ - -char * __cdecl FUN_0048900c(undefined4 param_1) - -{ - char cVar1; - uint uVar2; - uint uVar3; - int iVar4; - char *pcVar5; - char *pcVar6; - - iVar4 = DAT_00505b68 * 0x40; - DAT_00505b68 = DAT_00505b68 + 1; - DAT_00505b68 = DAT_00505b68 & 3; - switch(param_1) { - default: - pcVar5 = s_not_implemented__00505d86; - break; - case 2: - pcVar5 = &DAT_00505d34; - break; - case 3: - pcVar5 = &DAT_00505d39; - break; - case 4: - pcVar5 = s_instance_00505d3e; - break; - case 5: - pcVar5 = &DAT_00505d4d; - break; - case 6: - pcVar5 = s_light_00505d47; - break; - case 7: - pcVar5 = s_object_00505d51; - break; - case 8: - pcVar5 = &DAT_00505d58; - break; - case 9: - pcVar5 = s_geogroup_00505d5c; - break; - case 10: - pcVar5 = s_geometry_00505d65; - break; - case 0xb: - pcVar5 = s_material_00505d6e; - break; - case 0xc: - pcVar5 = s_texture_00505d7e; - break; - case 0xd: - pcVar5 = &DAT_00505d77; - } - uVar2 = 0xffffffff; - do { - pcVar6 = pcVar5; - if (uVar2 == 0) break; - uVar2 = uVar2 - 1; - pcVar6 = pcVar5 + 1; - cVar1 = *pcVar5; - pcVar5 = pcVar6; - } while (cVar1 != '\0'); - uVar2 = ~uVar2; - pcVar5 = pcVar6 + -uVar2; - pcVar6 = &DAT_00523c08 + iVar4; - for (uVar3 = uVar2 >> 2; uVar3 != 0; uVar3 = uVar3 - 1) { - *(undefined4 *)pcVar6 = *(undefined4 *)pcVar5; - pcVar5 = pcVar5 + 4; - pcVar6 = pcVar6 + 4; - } - for (uVar2 = uVar2 & 3; uVar2 != 0; uVar2 = uVar2 - 1) { - *pcVar6 = *pcVar5; - pcVar5 = pcVar5 + 1; - pcVar6 = pcVar6 + 1; - } - return &DAT_00523c08 + iVar4; -} - - - -/* @004890fc file=? name=FUN_004890fc */ - -void __cdecl FUN_004890fc(undefined4 *param_1) - -{ - undefined4 *puVar1; - int iVar2; - int iVar3; - - iVar2 = 0; - do { - iVar3 = 0; - puVar1 = param_1; - do { - *puVar1 = 0; - if (iVar3 == iVar2) { - *puVar1 = 0x3f800000; - } - iVar3 = iVar3 + 1; - puVar1 = puVar1 + 1; - } while (iVar3 < 4); - iVar2 = iVar2 + 1; - param_1 = param_1 + 4; - } while (iVar2 < 4); - return; -} - - - -/* @00489130 file=? name=FUN_00489130 */ - -void __cdecl FUN_00489130(int param_1) - -{ - FUN_00488cb4(param_1,(undefined4 *)(param_1 + 0x10)); - FUN_00488cb4(param_1,(undefined4 *)(param_1 + 0x20)); - FUN_00488cb4(param_1,(undefined4 *)(param_1 + 0x30)); - FUN_00488cb4(param_1,(undefined4 *)(param_1 + 0x40)); - return; -} - - - -/* @00489174 file=? name=FUN_00489174 */ - -void __cdecl FUN_00489174(int param_1) - -{ - *(undefined4 *)(param_1 + 0x10) = 0xffffffff; - return; -} - - - -/* @00489184 file=? name=FUN_00489184 */ - -void __cdecl FUN_00489184(int param_1) - -{ - *(undefined4 *)(param_1 + 0x14) = 0; - *(undefined4 *)(param_1 + 0x10) = 0; - *(int *)(param_1 + 0x18) = 1 << ((byte)DAT_00505b60 & 0x1f); - DAT_00505b60 = DAT_00505b60 + 1; - *(undefined4 *)(param_1 + 0x1c) = 0; - *(undefined4 *)(param_1 + 0x68) = 0; - *(undefined4 *)(param_1 + 0x28) = 0x3f800000; - *(undefined4 *)(param_1 + 0x20) = 0xbf800000; - *(undefined4 *)(param_1 + 0x2c) = 0x3f800000; - *(undefined4 *)(param_1 + 0x24) = 0xbf800000; - *(undefined4 *)(param_1 + 0x30) = 0x3f800000; - *(undefined4 *)(param_1 + 0x34) = 0x44200000; - *(undefined4 *)(param_1 + 0x38) = 0x43f80000; - *(undefined4 *)(param_1 + 0x3c) = 0x41000000; - *(undefined4 *)(param_1 + 0x40) = 0x463b8000; - *(undefined4 *)(param_1 + 0x44) = 0; - *(undefined4 *)(param_1 + 0x48) = 0x3e4ccccd; - *(undefined4 *)(param_1 + 0x50) = 0x3ecccccd; - *(undefined4 *)(param_1 + 0x50) = 1; - *(undefined4 *)(param_1 + 0x6c) = 0; - return; -} - - - -/* @00489214 file=? name=FUN_00489214 */ - -void __cdecl FUN_00489214(int param_1) - -{ - *(undefined4 *)(param_1 + 0x14) = 0; - *(undefined4 *)(param_1 + 0x10) = 0; - *(undefined4 *)(param_1 + 0x18) = 1; - *(undefined4 *)(param_1 + 0x38) = 0xffffffff; - *(undefined4 *)(param_1 + 0x28) = 0x64078678; - *(undefined4 *)(param_1 + 0x2c) = 0x64078678; - *(undefined4 *)(param_1 + 0x1c) = 0x3f800000; - *(undefined4 *)(param_1 + 0x20) = 0x3f800000; - *(undefined4 *)(param_1 + 0x24) = 0x3f800000; - return; -} - - - -/* @00489258 file=? name=FUN_00489258 */ - -void __cdecl FUN_00489258(int param_1) - -{ - *(undefined4 *)(param_1 + 0x1c) = 0; - *(undefined4 *)(param_1 + 0x10) = 0; - *(undefined4 *)(param_1 + 0x14) = 0; - *(undefined4 *)(param_1 + 0x2c) = 0x3f800000; - *(undefined4 *)(param_1 + 0x30) = 0x3f800000; - *(undefined4 *)(param_1 + 0x34) = 0x3f800000; - *(undefined4 *)(param_1 + 0x38) = 0x3f800000; - *(undefined4 *)(param_1 + 0x3c) = 0x3f800000; - *(undefined4 *)(param_1 + 0x40) = 0x3f800000; - *(undefined4 *)(param_1 + 0x20) = 0; - *(undefined4 *)(param_1 + 0x24) = 0; - *(undefined4 *)(param_1 + 0x28) = 0; - *(undefined4 *)(param_1 + 0x44) = 0x3f800000; - *(undefined4 *)(param_1 + 0x48) = 0x3f800000; - *(undefined4 *)(param_1 + 0x4c) = 0x3f800000; - *(undefined4 *)(param_1 + 0x60) = 0; - *(undefined4 *)(param_1 + 0x50) = 0; - *(undefined4 *)(param_1 + 0x54) = 0; - *(undefined4 *)(param_1 + 0x58) = 0; - *(undefined4 *)(param_1 + 0x5c) = 0; - *(undefined4 *)(param_1 + 0x18) = 3; - return; -} - - - -/* @004892e0 file=? name=FUN_004892e0 */ - -void __cdecl FUN_004892e0(int param_1) - -{ - *(undefined4 *)(param_1 + 0x10) = 0; - *(undefined4 *)(param_1 + 0x14) = 0; - *(undefined4 *)(param_1 + 0x18) = 0; - *(undefined4 *)(param_1 + 0x1c) = 0; - *(undefined4 *)(param_1 + 0x20) = 0; - return; -} - - - -/* @00489304 file=? name=FUN_00489304 */ - -void __cdecl FUN_00489304(int param_1) - -{ - *(undefined4 *)(param_1 + 0x10) = 0; - *(undefined4 *)(param_1 + 0x18) = 9; - *(undefined4 *)(param_1 + 0x14) = 9; - *(undefined4 *)(param_1 + 0x1c) = 0; - *(undefined4 *)(param_1 + 0x20) = 0; - *(undefined4 *)(param_1 + 0x24) = 0; - *(undefined4 *)(param_1 + 0x28) = 0; - *(undefined4 *)(param_1 + 0x2c) = 0; - *(undefined4 *)(param_1 + 0x30) = 0; - *(undefined4 *)(param_1 + 0x34) = 0; - *(undefined4 *)(param_1 + 0x38) = 0; - *(undefined4 *)(param_1 + 0x3c) = 0; - *(undefined4 *)(param_1 + 0x48) = 0; - *(undefined4 *)(param_1 + 0x44) = 0; - *(undefined4 *)(param_1 + 0x40) = 0; - return; -} - - - -/* @0048935c file=? name=FUN_0048935c */ - -void __cdecl FUN_0048935c(int param_1) - -{ - *(undefined4 *)(param_1 + 0x10) = 0; - *(undefined4 *)(param_1 + 0x14) = 0; - *(undefined4 *)(param_1 + 0x18) = 0; - *(undefined4 *)(param_1 + 0x1c) = 0x3f800000; - *(undefined4 *)(param_1 + 0x20) = 0x3f800000; - *(undefined4 *)(param_1 + 0x24) = 0x3f800000; - return; -} - - - -/* @00489388 file=? name=FUN_00489388 */ - -void __cdecl FUN_00489388(int param_1) - -{ - *(undefined4 *)(param_1 + 0x14) = 0; - *(undefined4 *)(param_1 + 0x10) = 0; - *(undefined4 *)(param_1 + 0x18) = 3; - *(undefined4 *)(param_1 + 0x1c) = 1; - *(undefined4 *)(param_1 + 0x34) = 0; - *(undefined4 *)(param_1 + 0x20) = 0; - *(undefined4 *)(param_1 + 0x24) = 0; - *(undefined4 *)(param_1 + 0x28) = 0; - *(undefined4 *)(param_1 + 0x2c) = 0; - return; -} - - - -/* @004893c4 file=? name=FUN_004893c4 */ - -void __cdecl FUN_004893c4(int param_1) - -{ - undefined4 *puVar1; - int iVar2; - - FUN_00488cb4(param_1,(undefined4 *)(param_1 + 0x10)); - *(undefined4 *)(param_1 + 0x20) = 0; - *(undefined4 *)(param_1 + 0x24) = 0; - *(undefined4 *)(param_1 + 0x28) = 0; - iVar2 = 0; - puVar1 = (undefined4 *)(param_1 + 0x30); - do { - *puVar1 = 0; - iVar2 = iVar2 + 1; - puVar1 = puVar1 + 1; - } while (iVar2 < 0x10); - *(undefined4 *)(param_1 + 0x70) = 0; - *(undefined4 *)(param_1 + 0x74) = 0; - *(undefined4 *)(param_1 + 0x78) = 0; - return; -} - - - -/* @00489410 file=? name=FUN_00489410 */ - -void __cdecl FUN_00489410(int param_1) - -{ - *(undefined4 *)(param_1 + 0x10) = 0; - *(undefined4 *)(param_1 + 0x14) = 0; - *(undefined4 *)(param_1 + 0x18) = 0; - *(undefined4 *)(param_1 + 0x1c) = 0x3f800000; - *(undefined4 *)(param_1 + 0x20) = 0; - *(undefined4 *)(param_1 + 0x24) = 0; - *(undefined4 *)(param_1 + 0x28) = 0; - *(undefined4 *)(param_1 + 0x2c) = 0x3f800000; - *(undefined4 *)(param_1 + 0x30) = 0; - FUN_00488cb4(param_1,(undefined4 *)(param_1 + 0x34)); - *(undefined4 *)(param_1 + 0x44) = 0; - *(undefined4 *)(param_1 + 0x48) = 0; - *(undefined4 *)(param_1 + 0x4c) = 0; - return; -} - - - -/* @0048946c file=? name=FUN_0048946c */ - -void __cdecl FUN_0048946c(int param_1) - -{ - *(undefined4 *)(param_1 + 0x10) = 0; - *(undefined4 *)(param_1 + 0x14) = 0; - *(undefined4 *)(param_1 + 0x18) = 0; - *(undefined4 *)(param_1 + 0x1c) = 0x3f800000; - *(undefined4 *)(param_1 + 0x20) = 0; - *(undefined4 *)(param_1 + 0x24) = 0; - *(undefined4 *)(param_1 + 0x28) = 0; - *(undefined4 *)(param_1 + 0x2c) = 0x3f800000; - *(undefined4 *)(param_1 + 0x30) = 0; - *(undefined4 *)(param_1 + 0x34) = 0; - FUN_00488cb4(param_1,(undefined4 *)(param_1 + 0x38)); - *(undefined4 *)(param_1 + 0x48) = 0; - *(undefined4 *)(param_1 + 0x4c) = 0; - *(undefined4 *)(param_1 + 0x50) = 0; - *(undefined4 *)(param_1 + 0x54) = 0; - return; -} - - - -/* @004894d0 file=? name=FUN_004894d0 */ - -void __cdecl FUN_004894d0(int param_1) - -{ - *(undefined4 *)(param_1 + 0x10) = 1; - *(undefined4 *)(param_1 + 0x14) = 1; - *(undefined4 *)(param_1 + 0x18) = 0; - *(undefined4 *)(param_1 + 0x1c) = 0; - *(undefined4 *)(param_1 + 0x20) = 0; - *(undefined4 *)(param_1 + 0x24) = 0; - *(undefined4 *)(param_1 + 0x28) = 0x3fb4fdf4; - *(undefined4 *)(param_1 + 0x2c) = 0x3fb4fdf4; - return; -} - - - -/* @00489508 file=? name=FUN_00489508 */ - -void __cdecl FUN_00489508(int param_1) - -{ - FUN_004890fc((undefined4 *)(param_1 + 0x18)); - *(undefined4 *)(param_1 + 0x10) = 0; - *(undefined4 *)(param_1 + 0x14) = 0; - *(undefined4 *)(param_1 + 0x58) = 3; - *(undefined4 *)(param_1 + 0x5c) = 0; - *(undefined4 *)(param_1 + 0x60) = 0; - *(undefined4 *)(param_1 + 100) = 0; - *(undefined4 *)(param_1 + 0x68) = 0xffffffff; - *(undefined4 *)(param_1 + 0x6c) = 0; - *(undefined4 *)(param_1 + 0x70) = 0; - *(undefined4 *)(param_1 + 0x74) = 0; - *(undefined4 *)(param_1 + 0x78) = 0x3f800000; - *(undefined4 *)(param_1 + 0x7c) = 0; - *(undefined4 *)(param_1 + 0x80) = 0; - *(undefined4 *)(param_1 + 0x84) = 0; - *(undefined4 *)(param_1 + 0x88) = 0x3f800000; - return; -} - - - -/* @00489578 file=? name=FUN_00489578 */ - -undefined4 __cdecl FUN_00489578(char *param_1) - -{ - FUN_004d771c(param_1); - FUN_004dee24(9); - return 0; -} - - - -/* @00489594 file=? name=FUN_00489594 */ - -void __cdecl FUN_00489594(int param_1,int param_2) - -{ - if ((param_1 != 0) && (*(int *)(param_1 + 0xc) != param_2)) { - FUN_0048900c(*(int *)(param_1 + 0xc)); - FUN_0048900c(param_2); - FUN_0049a300(0,s_inconsistent_type_check_in_point_00505d97); - FUN_0049a300(0,s_last_API_operation__s_00505dd7); - FUN_004dee24(9); - } - return; -} - - - -/* @004895f0 file=? name=FUN_004895f0 */ - -void __cdecl FUN_004895f0(int param_1) - -{ - FUN_00488d88((int *)&DAT_00523bc8,param_1); - return; -} - - - -/* @00489608 file=? name=FUN_00489608 */ - -void __cdecl FUN_00489608(int param_1) - -{ - int iVar1; - - iVar1 = FUN_00488ebc((int *)&DAT_00523bc8,param_1); - if (iVar1 == 0) { - FUN_0049a300(1,s_Failed_to_remove_zone_0x_x__0x_x_00505dee); - } - return; -} - - - -/* @00489638 file=? name=FUN_00489638 */ - -undefined4 __cdecl FUN_00489638(int param_1,int param_2) - -{ - int iVar1; - int iVar2; - - if (param_1 == 0) { - FUN_0049a300(1,s_attempt_to_remove_node_to_NULL_D_00505e6d); - } - else if (param_2 == 0) { - FUN_0049a300(1,s_attempt_to_remove_NULL_from_DCS_00505e4c); - } - else { - iVar1 = 0; - for (iVar2 = *(int *)(param_1 + 0x10); iVar2 != 0; iVar2 = *(int *)(iVar2 + 0x10)) { - if (param_2 == iVar2) { - FUN_0048d7a0(param_1,param_2); - if (iVar1 == 0) { - *(undefined4 *)(param_1 + 0x10) = *(undefined4 *)(iVar2 + 0x10); - } - else { - *(undefined4 *)(iVar1 + 0x10) = *(undefined4 *)(iVar2 + 0x10); - } - *(undefined4 *)(iVar2 + 0x10) = 0; - return 1; - } - iVar1 = iVar2; - } - FUN_0049a300(1,s_dpl_RemoveNodeFromDCS_failed_to_f_00505e1c); - } - return 0; -} - - - -/* @004896cc file=? name=FUN_004896cc */ - -undefined4 * FUN_004896cc(void) - -{ - undefined4 *puVar1; - - puVar1 = FUN_00488f34(0x14,2,FUN_00489174); - FUN_004895f0((int)puVar1); - return puVar1; -} - - - -/* @004896f0 file=? name=FUN_004896f0 */ - -void FUN_004896f0(void) - -{ - FUN_00488f34(0x70,3,FUN_00489184); - return; -} - - - -/* @00489708 file=? name=FUN_00489708 */ - -void FUN_00489708(void) - -{ - FUN_00488f34(0x8c,5,FUN_00489508); - return; -} - - - -/* @00489724 file=? name=FUN_00489724 */ - -void FUN_00489724(void) - -{ - FUN_00488f34(0x38,4,FUN_00489388); - return; -} - - - -/* @0048973c file=? name=FUN_0048973c */ - -undefined4 * FUN_0048973c(void) - -{ - undefined4 *puVar1; - - puVar1 = FUN_00488f34(0x3c,6,FUN_00489214); - FUN_00488d88((int *)&DAT_00523bf8,(int)puVar1); - return puVar1; -} - - - -/* @00489768 file=? name=FUN_00489768 */ - -void FUN_00489768(void) - -{ - DAT_005081d8 = 0; - FUN_00488f34(0x4c,0xc,FUN_00489304); - return; -} - - - -/* @00489788 file=? name=FUN_00489788 */ - -void FUN_00489788(void) - -{ - FUN_00488f34(0x24,0xd,FUN_004892e0); - return; -} - - - -/* @004897a0 file=? name=FUN_004897a0 */ - -void FUN_004897a0(void) - -{ - FUN_00488f34(100,0xb,FUN_00489258); - return; -} - - - -/* @004897b8 file=? name=FUN_004897b8 */ - -void FUN_004897b8(void) - -{ - FUN_00488f34(0x2c,0xe,FUN_0048935c); - return; -} - - - -/* @004897d0 file=? name=FUN_004897d0 */ - -void FUN_004897d0(void) - -{ - FUN_00488f34(0x7c,7,FUN_004893c4); - return; -} - - - -/* @004897e8 file=? name=FUN_004897e8 */ - -void FUN_004897e8(void) - -{ - FUN_00488f34(0x50,8,FUN_00489410); - return; -} - - - -/* @00489800 file=? name=FUN_00489800 */ - -void FUN_00489800(void) - -{ - FUN_00488f34(0x58,9,FUN_0048946c); - return; -} - - - -/* @00489818 file=? name=FUN_00489818 */ - -void FUN_00489818(void) - -{ - FUN_00488f34(0x30,10,FUN_004894d0); - return; -} - - - -/* @00489830 file=? name=FUN_00489830 */ - -void __cdecl FUN_00489830(int *param_1) - -{ - if (DAT_00505b64 != 0) { - FUN_00489594((int)param_1,2); - } - if (param_1 != (int *)0x0) { - FUN_00489608((int)param_1); - FUN_00488fd8(param_1); - return; - } - FUN_0049a300(1,s_Attempt_to_Delete_NULL_ZONE_00505e91); - return; -} - - - -/* @00489878 file=? name=FUN_00489878 */ - -void __cdecl FUN_00489878(int *param_1) - -{ - if (DAT_00505b64 != 0) { - FUN_00489594((int)param_1,3); - } - if (param_1 != (int *)0x0) { - FUN_00488fd8(param_1); - return; - } - FUN_0049a300(1,s_Attempt_to_delete_NULL_view_00505eae); - return; -} - - - -/* @004898b8 file=? name=FUN_004898b8 */ - -void __cdecl FUN_004898b8(int *param_1) - -{ - if (DAT_00505b64 != 0) { - FUN_00489594((int)param_1,5); - } - if (param_1 != (int *)0x0) { - FUN_00488fd8(param_1); - return; - } - FUN_0049a300(1,s_Attempt_to_Delete_NULL_DCS_00505ecb); - return; -} - - - -/* @004898f8 file=? name=FUN_004898f8 */ - -void __cdecl FUN_004898f8(int *param_1) - -{ - if (DAT_00505b64 != 0) { - FUN_00489594((int)param_1,4); - } - if (param_1 != (int *)0x0) { - FUN_00488fd8(param_1); - return; - } - FUN_0049a300(1,s_Attempt_to_Delete_NULL_instance_00505ee7); - return; -} - - - -/* @00489938 file=? name=FUN_00489938 */ - -void __cdecl FUN_00489938(int *param_1) - -{ - if (DAT_00505b64 != 0) { - FUN_00489594((int)param_1,6); - } - if (param_1 != (int *)0x0) { - FUN_00488ebc((int *)&DAT_00523bf8,(int)param_1); - if (param_1[5] != 0) { - FUN_00489638(param_1[5],(int)param_1); - } - FUN_00488fd8(param_1); - return; - } - FUN_0049a300(1,s_Attempt_to_delete_NULL_light_00505f08); - return; -} - - - -/* @00489998 file=? name=FUN_00489998 */ - -void __cdecl FUN_00489998(int *param_1) - -{ - if (DAT_00505b64 != 0) { - FUN_00489594((int)param_1,0xc); - } - if (param_1 != (int *)0x0) { - FUN_00488fd8(param_1); - return; - } - FUN_0049a300(1,s_Attempt_to_delete_NULL_texture_00505f26); - return; -} - - - -/* @004899d8 file=? name=FUN_004899d8 */ - -void __cdecl FUN_004899d8(int *param_1) - -{ - if (DAT_00505b64 != 0) { - FUN_00489594((int)param_1,0xd); - } - if (param_1 != (int *)0x0) { - if ((int *)param_1[4] != (int *)0x0) { - FUN_00452c88((int *)param_1[4]); - } - FUN_00488fd8(param_1); - return; - } - FUN_0049a300(1,s_Attempt_to_delete_NULL_texmap_00505f46); - return; -} - - - -/* @00489a28 file=? name=FUN_00489a28 */ - -void __cdecl FUN_00489a28(int *param_1) - -{ - if (DAT_00505b64 != 0) { - FUN_00489594((int)param_1,0xb); - } - if (param_1 != (int *)0x0) { - FUN_00488fd8(param_1); - return; - } - FUN_0049a300(1,s_Attempt_to_delete_NULL_material_00505f65); - return; -} - - - -/* @00489a68 file=? name=FUN_00489a68 */ - -void __cdecl FUN_00489a68(int *param_1) - -{ - if (DAT_00505b64 != 0) { - FUN_00489594((int)param_1,0xe); - } - if (param_1 != (int *)0x0) { - FUN_00488fd8(param_1); - return; - } - FUN_0049a300(1,s_Attempt_to_delete_NULL_ramp_00505f86); - return; -} - - - -/* @00489aa8 file=? name=FUN_00489aa8 */ - -void __cdecl FUN_00489aa8(int *param_1) - -{ - if (DAT_00505b64 != 0) { - FUN_00489594((int)param_1,7); - } - if (param_1 != (int *)0x0) { - FUN_00488fd8(param_1); - return; - } - FUN_0049a300(1,s_Attempt_to_delete_NULL_object_00505fa3); - return; -} - - - -/* @00489ae8 file=? name=FUN_00489ae8 */ - -void __cdecl FUN_00489ae8(int *param_1) - -{ - if (DAT_00505b64 != 0) { - FUN_00489594((int)param_1,8); - } - if (param_1 != (int *)0x0) { - FUN_00488fd8(param_1); - return; - } - FUN_0049a300(1,s_Attempt_to_delete_NULL_lod_00505fc2); - return; -} - - - -/* @00489b28 file=? name=FUN_00489b28 */ - -void __cdecl FUN_00489b28(int *param_1) - -{ - if (DAT_00505b64 != 0) { - FUN_00489594((int)param_1,9); - } - if (param_1 != (int *)0x0) { - FUN_00488fd8(param_1); - return; - } - FUN_0049a300(1,s_Attempt_to_delete_NULL_geogroup_00505fde); - return; -} - - - -/* @00489b68 file=? name=FUN_00489b68 */ - -void __cdecl FUN_00489b68(int *param_1) - -{ - if (DAT_00505b64 != 0) { - FUN_00489594((int)param_1,10); - } - if (param_1 != (int *)0x0) { - FUN_00488fd8(param_1); - return; - } - FUN_0049a300(1,s_Attempt_to_delete_NULL_geometry_00505fff); - return; -} - - - -/* @00489ba8 file=? name=FUN_00489ba8 */ - -void __cdecl FUN_00489ba8(int param_1) - -{ - if (DAT_00505b64 != 0) { - FUN_00489594(param_1,5); - } - FUN_00488d88((int *)&DAT_00523be8,param_1); - return; -} - - - -/* @00489bd4 file=? name=FUN_00489bd4 */ - -void __cdecl FUN_00489bd4(int param_1) - -{ - if (DAT_00505b64 != 0) { - FUN_00489594(param_1,3); - } - FUN_00488d88((int *)&DAT_00523bd8,param_1); - return; -} - - - -/* @00489c00 file=? name=FUN_00489c00 */ - -void __cdecl FUN_00489c00(int param_1,int param_2) - -{ - int local_8; - - if (DAT_00505b64 != 0) { - FUN_00489594(param_2,8); - } - if (DAT_00505b64 != 0) { - FUN_00489594(param_1,7); - } - *(int *)(param_2 + 0x30) = param_1; - FUN_00488d88((int *)(param_1 + 0x10),param_2); - FUN_00488df8(param_1 + 0x10,param_2,&local_8); - return; -} - - - -/* @00489c5c file=? name=FUN_00489c5c */ - -void __cdecl FUN_00489c5c(int param_1,int param_2) - -{ - if (DAT_00505b64 != 0) { - FUN_00489594(param_1,8); - } - if (DAT_00505b64 != 0) { - FUN_00489594(param_2,9); - } - *(int *)(param_2 + 0x30) = param_1; - FUN_00488d88((int *)(param_1 + 0x34),param_2); - return; -} - - - -/* @00489ca4 file=? name=FUN_00489ca4 */ - -void __cdecl FUN_00489ca4(int param_1,int param_2) - -{ - if (DAT_00505b64 != 0) { - FUN_00489594(param_1,9); - } - if (DAT_00505b64 != 0) { - FUN_00489594(param_2,10); - } - *(int *)(param_2 + 0x1c) = param_1; - FUN_00488d88((int *)(param_1 + 0x38),param_2); - return; -} - - - -/* @00489cec file=? name=FUN_00489cec */ - -void __cdecl FUN_00489cec(int param_1,int param_2) - -{ - int iVar1; - int iVar2; - - if (DAT_00505b64 != 0) { - FUN_00489594(param_1,5); - } - if (DAT_00505b64 != 0) { - FUN_00489594(param_2,5); - } - if (param_1 == 0) { - FUN_0049a300(1,s_attempt_to_add_dcs_0x_x_to_a_NUL_00506047); - } - else if (param_2 == 0) { - FUN_0049a300(1,s_attempt_to_add_a_NULL_dcs_to_dcs_00506020); - } - else { - if (*(int *)(param_1 + 100) == 0) { - *(int *)(param_2 + 0x5c) = param_1; - *(int *)(param_1 + 100) = param_2; - } - else { - if (*(int *)(param_2 + 0x5c) != 0) { - FUN_0048a068(*(int *)(param_2 + 0x5c),param_2); - } - *(int *)(param_2 + 0x5c) = param_1; - iVar1 = *(int *)(param_1 + 100); - do { - iVar2 = iVar1; - iVar1 = *(int *)(iVar2 + 0x60); - } while (iVar1 != 0); - *(int *)(iVar2 + 0x60) = param_2; - } - FUN_0048d8d8(param_1,param_2); - } - return; -} - - - -/* @00489d90 file=? name=FUN_00489d90 */ - -undefined4 __cdecl FUN_00489d90(int param_1,int param_2) - -{ - undefined4 uVar1; - - if (param_1 == 0) { - FUN_0049a300(1,s_attempt_to_add_node_to_NULL_DCS_005060c2); - uVar1 = 0; - } - else if (param_2 == 0) { - FUN_0049a300(1,s_attempt_to_add_NULL_node_to_DCS_005060a1); - uVar1 = 0; - } - else if (*(int *)(param_2 + 0x10) == 0) { - FUN_0048d760(param_1,param_2); - *(undefined4 *)(param_2 + 0x10) = *(undefined4 *)(param_1 + 0x10); - *(int *)(param_1 + 0x10) = param_2; - uVar1 = 1; - } - else { - FUN_0049a300(1,s_error_in_AddNodeToDCS___node_alr_00506071); - uVar1 = 0; - } - return uVar1; -} - - - -/* @00489e04 file=? name=FUN_00489e04 */ - -void __cdecl FUN_00489e04(int param_1,int param_2) - -{ - FUN_0049a300(4,s_dpl_AddInstanceToDCS_0x_x_0x_x_005060e3); - if (DAT_00505b64 != 0) { - FUN_00489594(param_1,5); - } - if (DAT_00505b64 != 0) { - FUN_00489594(param_2,4); - } - FUN_00489d90(param_1,param_2); - return; -} - - - -/* @00489e58 file=? name=FUN_00489e58 */ - -void __cdecl FUN_00489e58(int param_1) - -{ - int iVar1; - - FUN_0049a300(4,s_dpl_RemoveDCSFromScene_0x_x_00506103); - if (DAT_00505b64 != 0) { - FUN_00489594(param_1,5); - } - iVar1 = FUN_00488ebc((int *)&DAT_00523be8,param_1); - if (iVar1 == 0) { - FUN_0049a300(1,s_Failed_to_remove_dcs_0x_x__0x_x__00506120); - } - return; -} - - - -/* @00489eac file=? name=FUN_00489eac */ - -void __cdecl FUN_00489eac(int param_1) - -{ - int iVar1; - - FUN_0049a300(4,s_dpl_RemoveViewFromScene_0x_x_0050614d); - if (DAT_00505b64 != 0) { - FUN_00489594(param_1,3); - } - iVar1 = FUN_00488ebc((int *)&DAT_00523bd8,param_1); - if (iVar1 == 0) { - FUN_0049a300(1,s_Failed_to_remove_view_0x_x__0x_x_0050616b); - } - return; -} - - - -/* @00489f00 file=? name=FUN_00489f00 */ - -void __cdecl FUN_00489f00(int param_1,int param_2) - -{ - int iVar1; - - FUN_0049a300(4,s_dpl_RemoveLodFromObject_0x_x_0x__00506199); - if (DAT_00505b64 != 0) { - FUN_00489594(param_2,8); - } - if (DAT_00505b64 != 0) { - FUN_00489594(param_1,7); - } - *(undefined4 *)(param_2 + 0x30) = 0; - iVar1 = FUN_00488ebc((int *)(param_1 + 0x10),param_2); - if (iVar1 == 0) { - FUN_004d771c(s_Failed_to_remove_lod_0x_x__0x_x__005061bc); - } - return; -} - - - -/* @00489f78 file=? name=FUN_00489f78 */ - -void __cdecl FUN_00489f78(int param_1,int param_2) - -{ - int iVar1; - - FUN_0049a300(4,s_dpl_RemoveGeogroupFromLod_0x_x_0_005061f6); - if (DAT_00505b64 != 0) { - FUN_00489594(param_1,8); - } - if (DAT_00505b64 != 0) { - FUN_00489594(param_2,9); - } - *(undefined4 *)(param_2 + 0x30) = 0; - iVar1 = FUN_00488ebc((int *)(param_1 + 0x34),param_2); - if (iVar1 == 0) { - FUN_004d771c(s_Failed_to_remove_ggroup_0x_x__0x_0050621b); - } - return; -} - - - -/* @00489ff0 file=? name=FUN_00489ff0 */ - -void __cdecl FUN_00489ff0(int param_1,int param_2) - -{ - int iVar1; - - FUN_0049a300(4,s_dpl_RemoveGeometryFromGeogroup_0_00506255); - if (DAT_00505b64 != 0) { - FUN_00489594(param_1,9); - } - if (DAT_00505b64 != 0) { - FUN_00489594(param_2,10); - } - *(undefined4 *)(param_2 + 0x1c) = 0; - iVar1 = FUN_00488ebc((int *)(param_1 + 0x38),param_2); - if (iVar1 == 0) { - FUN_004d771c(s_Failed_to_remove_geometry_0x_x___0050627f); - } - return; -} - - - -/* @0048a068 file=? name=FUN_0048a068 */ - -void __cdecl FUN_0048a068(int param_1,int param_2) - -{ - int iVar1; - - FUN_0049a300(4,s_dpl_RemoveDCSFromDCS_0x_x_0x_x_005062be); - if (DAT_00505b64 != 0) { - FUN_00489594(param_1,5); - } - if (DAT_00505b64 != 0) { - FUN_00489594(param_2,5); - } - if ((param_1 == 0) || (param_2 == 0)) { - FUN_0049a300(1,s_NULL_node_in_RemoveDCSFromDCS_0x_00506344); - } - else if (param_1 == *(int *)(param_2 + 0x5c)) { - if (param_2 == *(int *)(param_1 + 100)) { - *(undefined4 *)(param_1 + 100) = *(undefined4 *)(param_2 + 0x60); - } - else { - for (iVar1 = *(int *)(param_1 + 100); param_2 != *(int *)(iVar1 + 0x60); - iVar1 = *(int *)(iVar1 + 0x60)) { - if (*(int *)(iVar1 + 0x60) == 0) { - FUN_0049a300(1,s_badly_formed_DCS_tree_in_RemoveD_00506311); - return; - } - } - *(undefined4 *)(iVar1 + 0x60) = *(undefined4 *)(param_2 + 0x60); - } - *(undefined4 *)(param_2 + 0x5c) = 0; - *(undefined4 *)(param_2 + 0x60) = 0; - FUN_0048d920(param_1,param_2); - } - else { - FUN_0049a300(1,s_badly_formed_DCS_tree_in_RemoveD_005062de); - } - return; -} - - - -/* @0048a130 file=? name=FUN_0048a130 */ - -void __cdecl FUN_0048a130(int param_1,int param_2) - -{ - FUN_0049a300(4,s_dpl_RemoveInstanceFromDCS_0x_x_0_00506372); - if (DAT_00505b64 != 0) { - FUN_00489594(param_1,5); - } - if (DAT_00505b64 != 0) { - FUN_00489594(param_2,4); - } - FUN_00489638(param_1,param_2); - return; -} - - - -/* @0048a184 file=? name=FUN_0048a184 */ - -void FUN_0048a184(void) - -{ - FUN_0049a300(4,s_dpl_DrawSceneComplete_00506397); - FUN_0048e330(); - return; -} - - - -/* @0048a1a0 file=? name=FUN_0048a1a0 */ - -void FUN_0048a1a0(void) - -{ - FUN_0049a300(4,s_dpl_WaitSceneComplete_005063ae); - FUN_0048e340(); - return; -} - - - -/* @0048a1bc file=? name=FUN_0048a1bc */ - -void FUN_0048a1bc(void) - -{ - FUN_0049a300(4,s_dpl_DrawScene_005063c5); - FUN_0048a1a0(); - FUN_00488fac(); - FUN_0048e2dc(1); - return; -} - - - -/* @0048a1e4 file=? name=FUN_0048a1e4 */ - -int __cdecl FUN_0048a1e4(int param_1) - -{ - int *piVar1; - int iVar2; - - piVar1 = DAT_00523bd0; - FUN_0049a300(4,s_dpl_GetSceneZone_005063d4); - while( true ) { - if (param_1 == 0) { - if (piVar1 == (int *)0x0) { - iVar2 = 0; - } - else { - if (DAT_00505b64 != 0) { - FUN_00489594(*piVar1,2); - } - iVar2 = *piVar1; - } - return iVar2; - } - if (piVar1 == (int *)0x0) break; - piVar1 = (int *)piVar1[2]; - param_1 = param_1 + -1; - } - return 0; -} - - - -/* @0048a23c file=? name=FUN_0048a23c */ - -int __cdecl FUN_0048a23c(int param_1) - -{ - int *piVar1; - int iVar2; - - piVar1 = DAT_00523be0; - FUN_0049a300(4,s_dpl_GetSceneView_005063e6); - while( true ) { - if (param_1 == 0) { - if (piVar1 == (int *)0x0) { - iVar2 = 0; - } - else { - if (DAT_00505b64 != 0) { - FUN_00489594(*piVar1,3); - } - iVar2 = *piVar1; - } - return iVar2; - } - if (piVar1 == (int *)0x0) break; - piVar1 = (int *)piVar1[2]; - param_1 = param_1 + -1; - } - return 0; -} - - - -/* @0048a294 file=? name=FUN_0048a294 */ - -int __cdecl FUN_0048a294(int param_1) - -{ - int *piVar1; - int iVar2; - - piVar1 = DAT_00523bf0; - FUN_0049a300(4,s_dpl_GetSceneDCS_005063f8); - while( true ) { - if (param_1 == 0) { - if (piVar1 == (int *)0x0) { - iVar2 = 0; - } - else { - if (DAT_00505b64 != 0) { - FUN_00489594(*piVar1,5); - } - iVar2 = *piVar1; - } - return iVar2; - } - if (piVar1 == (int *)0x0) break; - piVar1 = (int *)piVar1[2]; - param_1 = param_1 + -1; - } - return 0; -} - - - -/* @0048a2ec file=? name=FUN_0048a2ec */ - -int FUN_0048a2ec(int param_1,int param_2) - -{ - int iVar1; - - iVar1 = *(int *)(param_1 + 100); - FUN_0049a300(4,s_dpl_GetDCSChildDCS_00506409); - if (DAT_00505b64 != 0) { - FUN_00489594(param_1,5); - } - while( true ) { - if (param_2 == 0) { - if (DAT_00505b64 != 0) { - FUN_00489594(iVar1,5); - } - return iVar1; - } - if (iVar1 == 0) break; - iVar1 = *(int *)(iVar1 + 0x60); - param_2 = param_2 + -1; - } - return 0; -} - - - -/* @0048a350 file=? name=FUN_0048a350 */ - -undefined4 __cdecl FUN_0048a350(int param_1) - -{ - FUN_0049a300(4,s_dpl_GetDCSParentDCS_0050641d); - if (param_1 == 0) { - return 0; - } - if (DAT_00505b64 != 0) { - FUN_00489594(*(int *)(param_1 + 0x5c),5); - } - return *(undefined4 *)(param_1 + 0x5c); -} - - - -/* @0048a38c file=? name=FUN_0048a38c */ - -int __cdecl FUN_0048a38c(int param_1,int param_2) - -{ - int iVar1; - - FUN_0049a300(4,s_dpl_GetDCSInstance_00506432); - if (DAT_00505b64 != 0) { - FUN_00489594(param_1,5); - } - if (param_1 == 0) { - FUN_0049a300(1,s_NULL_dcs_in_GetDCSInstance_00506446); - } - else { - for (iVar1 = *(int *)(param_1 + 0x10); iVar1 != 0; iVar1 = *(int *)(iVar1 + 0x10)) { - if ((*(int *)(iVar1 + 0xc) == 4) && (param_2 = param_2 + -1, param_2 == 0)) { - return iVar1; - } - } - } - return 0; -} - - - -/* @0048a3f4 file=? name=FUN_0048a3f4 */ - -int __cdecl FUN_0048a3f4(int param_1,int param_2) - -{ - int *piVar1; - int iVar2; - - piVar1 = *(int **)(param_1 + 0x18); - FUN_0049a300(4,s_dpl_GetObjectLod_00506462); - if (DAT_00505b64 != 0) { - FUN_00489594(param_1,7); - } - while( true ) { - if (param_2 == 0) { - if (piVar1 == (int *)0x0) { - iVar2 = 0; - } - else { - if (DAT_00505b64 != 0) { - FUN_00489594(*piVar1,8); - } - iVar2 = *piVar1; - } - return iVar2; - } - if (piVar1 == (int *)0x0) break; - piVar1 = (int *)piVar1[2]; - param_2 = param_2 + -1; - } - return 0; -} - - - -/* @0048a464 file=? name=FUN_0048a464 */ - -int __cdecl FUN_0048a464(int param_1,int param_2) - -{ - int *piVar1; - int iVar2; - - piVar1 = *(int **)(param_1 + 0x3c); - FUN_0049a300(4,s_dpl_GetLodGeogroup_00506474); - if (DAT_00505b64 != 0) { - FUN_00489594(param_1,8); - } - while( true ) { - if (param_2 == 0) { - if (piVar1 == (int *)0x0) { - iVar2 = 0; - } - else { - if (DAT_00505b64 != 0) { - FUN_00489594(*piVar1,9); - } - iVar2 = *piVar1; - } - return iVar2; - } - if (piVar1 == (int *)0x0) break; - piVar1 = (int *)piVar1[2]; - param_2 = param_2 + -1; - } - return 0; -} - - - -/* @0048a4d4 file=? name=FUN_0048a4d4 */ - -int __cdecl FUN_0048a4d4(int param_1,int param_2) - -{ - int *piVar1; - int iVar2; - - piVar1 = *(int **)(param_1 + 0x40); - FUN_0049a300(4,s_dpl_GetGeogroupGeometry_00506488); - if (DAT_00505b64 != 0) { - FUN_00489594(param_1,9); - } - while( true ) { - if (param_2 == 0) { - if (piVar1 == (int *)0x0) { - iVar2 = 0; - } - else { - if (DAT_00505b64 != 0) { - FUN_00489594(*piVar1,10); - } - iVar2 = *piVar1; - } - return iVar2; - } - if (piVar1 == (int *)0x0) break; - piVar1 = (int *)piVar1[2]; - param_2 = param_2 + -1; - } - return 0; -} - - - -/* @0048a544 file=? name=FUN_0048a544 */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -void __cdecl FUN_0048a544(int param_1,undefined4 param_2,undefined4 *param_3) - -{ - if (param_1 < 0x10) { - FUN_0049a300(4,s_dpl_SetRenderProperty_005064a1); - (&DAT_00523d08)[param_1 * 2] = param_2; - (&DAT_00523d0c)[param_1 * 2] = param_3; - if (param_1 == 8) { - _DAT_00507930 = *param_3; - } - FUN_0048e688(param_1,param_2); - } - return; -} - - - diff --git a/reference/decomp/all/part_011.c b/reference/decomp/all/part_011.c index 25f06f4..af8ebf7 100644 --- a/reference/decomp/all/part_011.c +++ b/reference/decomp/all/part_011.c @@ -1,3 +1,1930 @@ +/* @00488bac file=? name=FUN_00488bac */ + +void __cdecl FUN_00488bac(int param_1,float param_2,float param_3) + +{ + *(float *)(param_1 + 0x10) = param_2 + *(float *)(param_1 + 0x10); + *(float *)(param_1 + 0x14) = param_3 + *(float *)(param_1 + 0x14); + return; +} + + + +/* @00488bc8 file=? name=FUN_00488bc8 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_00488bc8(undefined4 *param_1,float param_2) + +{ + double dVar1; + float fVar2; + float10 fVar3; + float local_24; + float local_20; + float local_1c; + float local_18; + undefined4 local_14; + undefined4 local_10; + float local_c; + float local_8; + + fVar2 = _DAT_00488c40 * param_2; + dVar1 = (double)fVar2; + fVar3 = (float10)FUN_004dd0f4(SUB84(dVar1,0),(int)((ulonglong)dVar1 >> 0x20)); + local_8 = (float)fVar3; + dVar1 = (double)fVar2; + fVar3 = (float10)FUN_004dc9b4(SUB84(dVar1,0),(int)((ulonglong)dVar1 >> 0x20)); + local_24 = (float)fVar3; + local_20 = local_8; + local_1c = -local_8; + local_14 = 0; + local_10 = 0; + local_18 = local_24; + local_c = local_24; + FUN_00488af4(param_1,(float *)param_1,&local_24); + return; +} + + + +/* @00488c80 file=? name=FUN_00488c80 */ + +void __cdecl FUN_00488c80(int *param_1,int param_2) + +{ + if (param_1 != (int *)0x0) { + param_1[2] = 0; + param_1[3] = 0; + *param_1 = param_2; + param_1[1] = *(int *)(param_2 + 0xc); + return; + } + FUN_0049a300(1,s_Attempt_to_init_NULL_list_00505b84); + return; +} + + + +/* @00488cb4 file=? name=FUN_00488cb4 */ + +void __cdecl FUN_00488cb4(undefined4 param_1,undefined4 *param_2) + +{ + if (param_2 != (undefined4 *)0x0) { + *param_2 = param_1; + param_2[1] = 0; + param_2[3] = 0; + param_2[2] = 0; + return; + } + FUN_0049a300(1,s_Attempt_to_init_NULL_superlist_00505b9f); + return; +} + + + +/* @00488cec file=? name=FUN_00488cec */ + +int * __cdecl FUN_00488cec(int param_1) + +{ + int *piVar1; + + piVar1 = (int *)FUN_00452c38(0x10); + if (piVar1 != (int *)0x0) { + FUN_00488c80(piVar1,param_1); + return piVar1; + } + return (int *)0x0; +} + + + +/* @00488d18 file=? name=FUN_00488d18 */ + +undefined4 __cdecl FUN_00488d18(int param_1) + +{ + if (param_1 == 0) { + FUN_0049a300(1,s_Attempt_to_get_first_on_NULL_sup_00505bbf); + return 0; + } + *(undefined4 *)(param_1 + 4) = *(undefined4 *)(param_1 + 8); + if (*(undefined4 **)(param_1 + 8) != (undefined4 *)0x0) { + return **(undefined4 **)(param_1 + 8); + } + return 0; +} + + + +/* @00488d50 file=? name=FUN_00488d50 */ + +undefined4 __cdecl FUN_00488d50(int param_1) + +{ + undefined4 *puVar1; + + if (*(int *)(param_1 + 4) == 0) { + FUN_0049a300(1,s_Attempt_to_get_next_on_NULL_supe_00505be7); + return 0; + } + puVar1 = *(undefined4 **)(*(int *)(param_1 + 4) + 8); + *(undefined4 **)(param_1 + 4) = puVar1; + if (puVar1 != (undefined4 *)0x0) { + return *puVar1; + } + return 0; +} + + + +/* @00488d88 file=? name=FUN_00488d88 */ + +void __cdecl FUN_00488d88(int *param_1,int param_2) + +{ + int iVar1; + int *piVar2; + + if (param_1 == (int *)0x0) { + FUN_0049a300(1,s_Attempt_to_add_to_NULL_superlist_00505c0e); + } + else { + piVar2 = FUN_00488cec(param_2); + FUN_0048d7e0(param_1,param_2); + if (param_1[2] == param_1[3]) { + if (param_1[2] == 0) { + param_1[2] = (int)piVar2; + param_1[3] = (int)piVar2; + } + else { + *(int **)(param_1[3] + 8) = piVar2; + param_1[3] = (int)piVar2; + piVar2[3] = param_1[2]; + } + } + else { + iVar1 = param_1[3]; + *(int **)(iVar1 + 8) = piVar2; + piVar2[3] = iVar1; + param_1[3] = (int)piVar2; + } + } + return; +} + + + +/* @00488df8 file=? name=FUN_00488df8 */ + +int * __cdecl FUN_00488df8(int param_1,int param_2,int *param_3) + +{ + int *piVar1; + int iVar2; + + iVar2 = 0; + if (param_1 == 0) { + FUN_0049a300(1,s_Attempt_to_find_item_in_NULL_sup_00505c30); + return (int *)0x0; + } + piVar1 = *(int **)(param_1 + 8); + if (piVar1 == (int *)0x0) { + return (int *)0x0; + } + do { + if (param_2 == *piVar1) { + *param_3 = iVar2; + return piVar1; + } + piVar1 = (int *)piVar1[2]; + iVar2 = iVar2 + 1; + } while (piVar1 != (int *)0x0); + return (int *)0x0; +} + + + +/* @00488e44 file=? name=FUN_00488e44 */ + +void __cdecl FUN_00488e44(int param_1,int param_2) + +{ + if (param_2 == *(int *)(param_1 + 8)) { + if (*(int *)(param_1 + 8) == *(int *)(param_1 + 0xc)) { + *(undefined4 *)(param_1 + 8) = 0; + *(undefined4 *)(param_1 + 0xc) = 0; + } + else { + if (*(int *)(param_2 + 0xc) != 0) { + FUN_004d771c(s_Bad_error__head_of_list_has_a_pr_00505c58); + } + *(undefined4 *)(param_1 + 8) = *(undefined4 *)(param_2 + 8); + *(undefined4 *)(*(int *)(param_2 + 8) + 0xc) = 0; + } + } + else { + *(undefined4 *)(*(int *)(param_2 + 0xc) + 8) = *(undefined4 *)(param_2 + 8); + if (param_2 == *(int *)(param_1 + 0xc)) { + if (*(int *)(param_2 + 8) != 0) { + FUN_004d771c(s_Bad_error__tail_of_list_has_a_ne_00505c7c); + } + *(undefined4 *)(param_1 + 0xc) = *(undefined4 *)(param_2 + 0xc); + } + else { + *(undefined4 *)(*(int *)(param_2 + 8) + 0xc) = *(undefined4 *)(param_2 + 0xc); + } + } + return; +} + + + +/* @00488ebc file=? name=FUN_00488ebc */ + +undefined4 __cdecl FUN_00488ebc(int *param_1,int param_2) + +{ + int *piVar1; + undefined4 uVar2; + int local_8; + + if (param_1 == (int *)0x0) { + FUN_0049a300(1,s_Attempt_to_remove_from_NULL_supe_00505cbd); + uVar2 = 0; + } + else { + piVar1 = FUN_00488df8((int)param_1,param_2,&local_8); + if (piVar1 == (int *)0x0) { + FUN_0049a300(1,s_item_0x_x_not_found_in_list_00505ca0); + uVar2 = 0; + } + else { + FUN_0048d838(param_1,param_2); + FUN_00488e44((int)param_1,(int)piVar1); + FUN_00452c88(piVar1); + uVar2 = 1; + } + } + return uVar2; +} + + + +/* @00488f34 file=? name=FUN_00488f34 */ + +undefined4 * __cdecl FUN_00488f34(uint param_1,int param_2,undefined *param_3) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00452c38(param_1); + if (puVar1 == (undefined4 *)0x0) { + FUN_004d771c(s_Failed_to_allocate_space_in_new__00505ce4); + puVar1 = (undefined4 *)0x0; + } + else { + puVar1[3] = param_2; + if (param_2 - 1U < 0xe) { + (*(code *)param_3)(puVar1); + } + else { + FUN_004d771c(s_Deeply_erroneous___cant_create_t_00505d0a); + } + puVar1[1] = 0; + FUN_0048d294((int)puVar1); + FUN_0048d350(puVar1,param_1); + } + return puVar1; +} + + + +/* @00488f9c file=? name=FUN_00488f9c */ + +void __cdecl FUN_00488f9c(undefined4 param_1) + +{ + DAT_00505b70 = param_1; + return; +} + + + +/* @00488fac file=? name=FUN_00488fac */ + +void FUN_00488fac(void) + +{ + int *piVar1; + + while (DAT_00505b74 != (int *)0x0) { + piVar1 = (int *)DAT_00505b74[1]; + FUN_0048d30c((int)DAT_00505b74); + FUN_00452c88(DAT_00505b74); + DAT_00505b74 = piVar1; + } + return; +} + + + +/* @00488fd8 file=? name=FUN_00488fd8 */ + +undefined4 __cdecl FUN_00488fd8(int *param_1) + +{ + if (DAT_00505b70 == 0) { + FUN_0048d30c((int)param_1); + FUN_00452c88(param_1); + } + else { + param_1[1] = (int)DAT_00505b74; + DAT_00505b74 = param_1; + } + return 0; +} + + + +/* @0048900c file=? name=FUN_0048900c */ + +char * __cdecl FUN_0048900c(undefined4 param_1) + +{ + char cVar1; + uint uVar2; + uint uVar3; + int iVar4; + char *pcVar5; + char *pcVar6; + + iVar4 = DAT_00505b68 * 0x40; + DAT_00505b68 = DAT_00505b68 + 1; + DAT_00505b68 = DAT_00505b68 & 3; + switch(param_1) { + default: + pcVar5 = s_not_implemented__00505d86; + break; + case 2: + pcVar5 = &DAT_00505d34; + break; + case 3: + pcVar5 = &DAT_00505d39; + break; + case 4: + pcVar5 = s_instance_00505d3e; + break; + case 5: + pcVar5 = &DAT_00505d4d; + break; + case 6: + pcVar5 = s_light_00505d47; + break; + case 7: + pcVar5 = s_object_00505d51; + break; + case 8: + pcVar5 = &DAT_00505d58; + break; + case 9: + pcVar5 = s_geogroup_00505d5c; + break; + case 10: + pcVar5 = s_geometry_00505d65; + break; + case 0xb: + pcVar5 = s_material_00505d6e; + break; + case 0xc: + pcVar5 = s_texture_00505d7e; + break; + case 0xd: + pcVar5 = &DAT_00505d77; + } + uVar2 = 0xffffffff; + do { + pcVar6 = pcVar5; + if (uVar2 == 0) break; + uVar2 = uVar2 - 1; + pcVar6 = pcVar5 + 1; + cVar1 = *pcVar5; + pcVar5 = pcVar6; + } while (cVar1 != '\0'); + uVar2 = ~uVar2; + pcVar5 = pcVar6 + -uVar2; + pcVar6 = &DAT_00523c08 + iVar4; + for (uVar3 = uVar2 >> 2; uVar3 != 0; uVar3 = uVar3 - 1) { + *(undefined4 *)pcVar6 = *(undefined4 *)pcVar5; + pcVar5 = pcVar5 + 4; + pcVar6 = pcVar6 + 4; + } + for (uVar2 = uVar2 & 3; uVar2 != 0; uVar2 = uVar2 - 1) { + *pcVar6 = *pcVar5; + pcVar5 = pcVar5 + 1; + pcVar6 = pcVar6 + 1; + } + return &DAT_00523c08 + iVar4; +} + + + +/* @004890fc file=? name=FUN_004890fc */ + +void __cdecl FUN_004890fc(undefined4 *param_1) + +{ + undefined4 *puVar1; + int iVar2; + int iVar3; + + iVar2 = 0; + do { + iVar3 = 0; + puVar1 = param_1; + do { + *puVar1 = 0; + if (iVar3 == iVar2) { + *puVar1 = 0x3f800000; + } + iVar3 = iVar3 + 1; + puVar1 = puVar1 + 1; + } while (iVar3 < 4); + iVar2 = iVar2 + 1; + param_1 = param_1 + 4; + } while (iVar2 < 4); + return; +} + + + +/* @00489130 file=? name=FUN_00489130 */ + +void __cdecl FUN_00489130(int param_1) + +{ + FUN_00488cb4(param_1,(undefined4 *)(param_1 + 0x10)); + FUN_00488cb4(param_1,(undefined4 *)(param_1 + 0x20)); + FUN_00488cb4(param_1,(undefined4 *)(param_1 + 0x30)); + FUN_00488cb4(param_1,(undefined4 *)(param_1 + 0x40)); + return; +} + + + +/* @00489174 file=? name=FUN_00489174 */ + +void __cdecl FUN_00489174(int param_1) + +{ + *(undefined4 *)(param_1 + 0x10) = 0xffffffff; + return; +} + + + +/* @00489184 file=? name=FUN_00489184 */ + +void __cdecl FUN_00489184(int param_1) + +{ + *(undefined4 *)(param_1 + 0x14) = 0; + *(undefined4 *)(param_1 + 0x10) = 0; + *(int *)(param_1 + 0x18) = 1 << ((byte)DAT_00505b60 & 0x1f); + DAT_00505b60 = DAT_00505b60 + 1; + *(undefined4 *)(param_1 + 0x1c) = 0; + *(undefined4 *)(param_1 + 0x68) = 0; + *(undefined4 *)(param_1 + 0x28) = 0x3f800000; + *(undefined4 *)(param_1 + 0x20) = 0xbf800000; + *(undefined4 *)(param_1 + 0x2c) = 0x3f800000; + *(undefined4 *)(param_1 + 0x24) = 0xbf800000; + *(undefined4 *)(param_1 + 0x30) = 0x3f800000; + *(undefined4 *)(param_1 + 0x34) = 0x44200000; + *(undefined4 *)(param_1 + 0x38) = 0x43f80000; + *(undefined4 *)(param_1 + 0x3c) = 0x41000000; + *(undefined4 *)(param_1 + 0x40) = 0x463b8000; + *(undefined4 *)(param_1 + 0x44) = 0; + *(undefined4 *)(param_1 + 0x48) = 0x3e4ccccd; + *(undefined4 *)(param_1 + 0x50) = 0x3ecccccd; + *(undefined4 *)(param_1 + 0x50) = 1; + *(undefined4 *)(param_1 + 0x6c) = 0; + return; +} + + + +/* @00489214 file=? name=FUN_00489214 */ + +void __cdecl FUN_00489214(int param_1) + +{ + *(undefined4 *)(param_1 + 0x14) = 0; + *(undefined4 *)(param_1 + 0x10) = 0; + *(undefined4 *)(param_1 + 0x18) = 1; + *(undefined4 *)(param_1 + 0x38) = 0xffffffff; + *(undefined4 *)(param_1 + 0x28) = 0x64078678; + *(undefined4 *)(param_1 + 0x2c) = 0x64078678; + *(undefined4 *)(param_1 + 0x1c) = 0x3f800000; + *(undefined4 *)(param_1 + 0x20) = 0x3f800000; + *(undefined4 *)(param_1 + 0x24) = 0x3f800000; + return; +} + + + +/* @00489258 file=? name=FUN_00489258 */ + +void __cdecl FUN_00489258(int param_1) + +{ + *(undefined4 *)(param_1 + 0x1c) = 0; + *(undefined4 *)(param_1 + 0x10) = 0; + *(undefined4 *)(param_1 + 0x14) = 0; + *(undefined4 *)(param_1 + 0x2c) = 0x3f800000; + *(undefined4 *)(param_1 + 0x30) = 0x3f800000; + *(undefined4 *)(param_1 + 0x34) = 0x3f800000; + *(undefined4 *)(param_1 + 0x38) = 0x3f800000; + *(undefined4 *)(param_1 + 0x3c) = 0x3f800000; + *(undefined4 *)(param_1 + 0x40) = 0x3f800000; + *(undefined4 *)(param_1 + 0x20) = 0; + *(undefined4 *)(param_1 + 0x24) = 0; + *(undefined4 *)(param_1 + 0x28) = 0; + *(undefined4 *)(param_1 + 0x44) = 0x3f800000; + *(undefined4 *)(param_1 + 0x48) = 0x3f800000; + *(undefined4 *)(param_1 + 0x4c) = 0x3f800000; + *(undefined4 *)(param_1 + 0x60) = 0; + *(undefined4 *)(param_1 + 0x50) = 0; + *(undefined4 *)(param_1 + 0x54) = 0; + *(undefined4 *)(param_1 + 0x58) = 0; + *(undefined4 *)(param_1 + 0x5c) = 0; + *(undefined4 *)(param_1 + 0x18) = 3; + return; +} + + + +/* @004892e0 file=? name=FUN_004892e0 */ + +void __cdecl FUN_004892e0(int param_1) + +{ + *(undefined4 *)(param_1 + 0x10) = 0; + *(undefined4 *)(param_1 + 0x14) = 0; + *(undefined4 *)(param_1 + 0x18) = 0; + *(undefined4 *)(param_1 + 0x1c) = 0; + *(undefined4 *)(param_1 + 0x20) = 0; + return; +} + + + +/* @00489304 file=? name=FUN_00489304 */ + +void __cdecl FUN_00489304(int param_1) + +{ + *(undefined4 *)(param_1 + 0x10) = 0; + *(undefined4 *)(param_1 + 0x18) = 9; + *(undefined4 *)(param_1 + 0x14) = 9; + *(undefined4 *)(param_1 + 0x1c) = 0; + *(undefined4 *)(param_1 + 0x20) = 0; + *(undefined4 *)(param_1 + 0x24) = 0; + *(undefined4 *)(param_1 + 0x28) = 0; + *(undefined4 *)(param_1 + 0x2c) = 0; + *(undefined4 *)(param_1 + 0x30) = 0; + *(undefined4 *)(param_1 + 0x34) = 0; + *(undefined4 *)(param_1 + 0x38) = 0; + *(undefined4 *)(param_1 + 0x3c) = 0; + *(undefined4 *)(param_1 + 0x48) = 0; + *(undefined4 *)(param_1 + 0x44) = 0; + *(undefined4 *)(param_1 + 0x40) = 0; + return; +} + + + +/* @0048935c file=? name=FUN_0048935c */ + +void __cdecl FUN_0048935c(int param_1) + +{ + *(undefined4 *)(param_1 + 0x10) = 0; + *(undefined4 *)(param_1 + 0x14) = 0; + *(undefined4 *)(param_1 + 0x18) = 0; + *(undefined4 *)(param_1 + 0x1c) = 0x3f800000; + *(undefined4 *)(param_1 + 0x20) = 0x3f800000; + *(undefined4 *)(param_1 + 0x24) = 0x3f800000; + return; +} + + + +/* @00489388 file=? name=FUN_00489388 */ + +void __cdecl FUN_00489388(int param_1) + +{ + *(undefined4 *)(param_1 + 0x14) = 0; + *(undefined4 *)(param_1 + 0x10) = 0; + *(undefined4 *)(param_1 + 0x18) = 3; + *(undefined4 *)(param_1 + 0x1c) = 1; + *(undefined4 *)(param_1 + 0x34) = 0; + *(undefined4 *)(param_1 + 0x20) = 0; + *(undefined4 *)(param_1 + 0x24) = 0; + *(undefined4 *)(param_1 + 0x28) = 0; + *(undefined4 *)(param_1 + 0x2c) = 0; + return; +} + + + +/* @004893c4 file=? name=FUN_004893c4 */ + +void __cdecl FUN_004893c4(int param_1) + +{ + undefined4 *puVar1; + int iVar2; + + FUN_00488cb4(param_1,(undefined4 *)(param_1 + 0x10)); + *(undefined4 *)(param_1 + 0x20) = 0; + *(undefined4 *)(param_1 + 0x24) = 0; + *(undefined4 *)(param_1 + 0x28) = 0; + iVar2 = 0; + puVar1 = (undefined4 *)(param_1 + 0x30); + do { + *puVar1 = 0; + iVar2 = iVar2 + 1; + puVar1 = puVar1 + 1; + } while (iVar2 < 0x10); + *(undefined4 *)(param_1 + 0x70) = 0; + *(undefined4 *)(param_1 + 0x74) = 0; + *(undefined4 *)(param_1 + 0x78) = 0; + return; +} + + + +/* @00489410 file=? name=FUN_00489410 */ + +void __cdecl FUN_00489410(int param_1) + +{ + *(undefined4 *)(param_1 + 0x10) = 0; + *(undefined4 *)(param_1 + 0x14) = 0; + *(undefined4 *)(param_1 + 0x18) = 0; + *(undefined4 *)(param_1 + 0x1c) = 0x3f800000; + *(undefined4 *)(param_1 + 0x20) = 0; + *(undefined4 *)(param_1 + 0x24) = 0; + *(undefined4 *)(param_1 + 0x28) = 0; + *(undefined4 *)(param_1 + 0x2c) = 0x3f800000; + *(undefined4 *)(param_1 + 0x30) = 0; + FUN_00488cb4(param_1,(undefined4 *)(param_1 + 0x34)); + *(undefined4 *)(param_1 + 0x44) = 0; + *(undefined4 *)(param_1 + 0x48) = 0; + *(undefined4 *)(param_1 + 0x4c) = 0; + return; +} + + + +/* @0048946c file=? name=FUN_0048946c */ + +void __cdecl FUN_0048946c(int param_1) + +{ + *(undefined4 *)(param_1 + 0x10) = 0; + *(undefined4 *)(param_1 + 0x14) = 0; + *(undefined4 *)(param_1 + 0x18) = 0; + *(undefined4 *)(param_1 + 0x1c) = 0x3f800000; + *(undefined4 *)(param_1 + 0x20) = 0; + *(undefined4 *)(param_1 + 0x24) = 0; + *(undefined4 *)(param_1 + 0x28) = 0; + *(undefined4 *)(param_1 + 0x2c) = 0x3f800000; + *(undefined4 *)(param_1 + 0x30) = 0; + *(undefined4 *)(param_1 + 0x34) = 0; + FUN_00488cb4(param_1,(undefined4 *)(param_1 + 0x38)); + *(undefined4 *)(param_1 + 0x48) = 0; + *(undefined4 *)(param_1 + 0x4c) = 0; + *(undefined4 *)(param_1 + 0x50) = 0; + *(undefined4 *)(param_1 + 0x54) = 0; + return; +} + + + +/* @004894d0 file=? name=FUN_004894d0 */ + +void __cdecl FUN_004894d0(int param_1) + +{ + *(undefined4 *)(param_1 + 0x10) = 1; + *(undefined4 *)(param_1 + 0x14) = 1; + *(undefined4 *)(param_1 + 0x18) = 0; + *(undefined4 *)(param_1 + 0x1c) = 0; + *(undefined4 *)(param_1 + 0x20) = 0; + *(undefined4 *)(param_1 + 0x24) = 0; + *(undefined4 *)(param_1 + 0x28) = 0x3fb4fdf4; + *(undefined4 *)(param_1 + 0x2c) = 0x3fb4fdf4; + return; +} + + + +/* @00489508 file=? name=FUN_00489508 */ + +void __cdecl FUN_00489508(int param_1) + +{ + FUN_004890fc((undefined4 *)(param_1 + 0x18)); + *(undefined4 *)(param_1 + 0x10) = 0; + *(undefined4 *)(param_1 + 0x14) = 0; + *(undefined4 *)(param_1 + 0x58) = 3; + *(undefined4 *)(param_1 + 0x5c) = 0; + *(undefined4 *)(param_1 + 0x60) = 0; + *(undefined4 *)(param_1 + 100) = 0; + *(undefined4 *)(param_1 + 0x68) = 0xffffffff; + *(undefined4 *)(param_1 + 0x6c) = 0; + *(undefined4 *)(param_1 + 0x70) = 0; + *(undefined4 *)(param_1 + 0x74) = 0; + *(undefined4 *)(param_1 + 0x78) = 0x3f800000; + *(undefined4 *)(param_1 + 0x7c) = 0; + *(undefined4 *)(param_1 + 0x80) = 0; + *(undefined4 *)(param_1 + 0x84) = 0; + *(undefined4 *)(param_1 + 0x88) = 0x3f800000; + return; +} + + + +/* @00489578 file=? name=FUN_00489578 */ + +undefined4 __cdecl FUN_00489578(char *param_1) + +{ + FUN_004d771c(param_1); + FUN_004dee24(9); + return 0; +} + + + +/* @00489594 file=? name=FUN_00489594 */ + +void __cdecl FUN_00489594(int param_1,int param_2) + +{ + if ((param_1 != 0) && (*(int *)(param_1 + 0xc) != param_2)) { + FUN_0048900c(*(int *)(param_1 + 0xc)); + FUN_0048900c(param_2); + FUN_0049a300(0,s_inconsistent_type_check_in_point_00505d97); + FUN_0049a300(0,s_last_API_operation__s_00505dd7); + FUN_004dee24(9); + } + return; +} + + + +/* @004895f0 file=? name=FUN_004895f0 */ + +void __cdecl FUN_004895f0(int param_1) + +{ + FUN_00488d88((int *)&DAT_00523bc8,param_1); + return; +} + + + +/* @00489608 file=? name=FUN_00489608 */ + +void __cdecl FUN_00489608(int param_1) + +{ + int iVar1; + + iVar1 = FUN_00488ebc((int *)&DAT_00523bc8,param_1); + if (iVar1 == 0) { + FUN_0049a300(1,s_Failed_to_remove_zone_0x_x__0x_x_00505dee); + } + return; +} + + + +/* @00489638 file=? name=FUN_00489638 */ + +undefined4 __cdecl FUN_00489638(int param_1,int param_2) + +{ + int iVar1; + int iVar2; + + if (param_1 == 0) { + FUN_0049a300(1,s_attempt_to_remove_node_to_NULL_D_00505e6d); + } + else if (param_2 == 0) { + FUN_0049a300(1,s_attempt_to_remove_NULL_from_DCS_00505e4c); + } + else { + iVar1 = 0; + for (iVar2 = *(int *)(param_1 + 0x10); iVar2 != 0; iVar2 = *(int *)(iVar2 + 0x10)) { + if (param_2 == iVar2) { + FUN_0048d7a0(param_1,param_2); + if (iVar1 == 0) { + *(undefined4 *)(param_1 + 0x10) = *(undefined4 *)(iVar2 + 0x10); + } + else { + *(undefined4 *)(iVar1 + 0x10) = *(undefined4 *)(iVar2 + 0x10); + } + *(undefined4 *)(iVar2 + 0x10) = 0; + return 1; + } + iVar1 = iVar2; + } + FUN_0049a300(1,s_dpl_RemoveNodeFromDCS_failed_to_f_00505e1c); + } + return 0; +} + + + +/* @004896cc file=? name=FUN_004896cc */ + +undefined4 * FUN_004896cc(void) + +{ + undefined4 *puVar1; + + puVar1 = FUN_00488f34(0x14,2,FUN_00489174); + FUN_004895f0((int)puVar1); + return puVar1; +} + + + +/* @004896f0 file=? name=FUN_004896f0 */ + +void FUN_004896f0(void) + +{ + FUN_00488f34(0x70,3,FUN_00489184); + return; +} + + + +/* @00489708 file=? name=FUN_00489708 */ + +void FUN_00489708(void) + +{ + FUN_00488f34(0x8c,5,FUN_00489508); + return; +} + + + +/* @00489724 file=? name=FUN_00489724 */ + +void FUN_00489724(void) + +{ + FUN_00488f34(0x38,4,FUN_00489388); + return; +} + + + +/* @0048973c file=? name=FUN_0048973c */ + +undefined4 * FUN_0048973c(void) + +{ + undefined4 *puVar1; + + puVar1 = FUN_00488f34(0x3c,6,FUN_00489214); + FUN_00488d88((int *)&DAT_00523bf8,(int)puVar1); + return puVar1; +} + + + +/* @00489768 file=? name=FUN_00489768 */ + +void FUN_00489768(void) + +{ + DAT_005081d8 = 0; + FUN_00488f34(0x4c,0xc,FUN_00489304); + return; +} + + + +/* @00489788 file=? name=FUN_00489788 */ + +void FUN_00489788(void) + +{ + FUN_00488f34(0x24,0xd,FUN_004892e0); + return; +} + + + +/* @004897a0 file=? name=FUN_004897a0 */ + +void FUN_004897a0(void) + +{ + FUN_00488f34(100,0xb,FUN_00489258); + return; +} + + + +/* @004897b8 file=? name=FUN_004897b8 */ + +void FUN_004897b8(void) + +{ + FUN_00488f34(0x2c,0xe,FUN_0048935c); + return; +} + + + +/* @004897d0 file=? name=FUN_004897d0 */ + +void FUN_004897d0(void) + +{ + FUN_00488f34(0x7c,7,FUN_004893c4); + return; +} + + + +/* @004897e8 file=? name=FUN_004897e8 */ + +void FUN_004897e8(void) + +{ + FUN_00488f34(0x50,8,FUN_00489410); + return; +} + + + +/* @00489800 file=? name=FUN_00489800 */ + +void FUN_00489800(void) + +{ + FUN_00488f34(0x58,9,FUN_0048946c); + return; +} + + + +/* @00489818 file=? name=FUN_00489818 */ + +void FUN_00489818(void) + +{ + FUN_00488f34(0x30,10,FUN_004894d0); + return; +} + + + +/* @00489830 file=? name=FUN_00489830 */ + +void __cdecl FUN_00489830(int *param_1) + +{ + if (DAT_00505b64 != 0) { + FUN_00489594((int)param_1,2); + } + if (param_1 != (int *)0x0) { + FUN_00489608((int)param_1); + FUN_00488fd8(param_1); + return; + } + FUN_0049a300(1,s_Attempt_to_Delete_NULL_ZONE_00505e91); + return; +} + + + +/* @00489878 file=? name=FUN_00489878 */ + +void __cdecl FUN_00489878(int *param_1) + +{ + if (DAT_00505b64 != 0) { + FUN_00489594((int)param_1,3); + } + if (param_1 != (int *)0x0) { + FUN_00488fd8(param_1); + return; + } + FUN_0049a300(1,s_Attempt_to_delete_NULL_view_00505eae); + return; +} + + + +/* @004898b8 file=? name=FUN_004898b8 */ + +void __cdecl FUN_004898b8(int *param_1) + +{ + if (DAT_00505b64 != 0) { + FUN_00489594((int)param_1,5); + } + if (param_1 != (int *)0x0) { + FUN_00488fd8(param_1); + return; + } + FUN_0049a300(1,s_Attempt_to_Delete_NULL_DCS_00505ecb); + return; +} + + + +/* @004898f8 file=? name=FUN_004898f8 */ + +void __cdecl FUN_004898f8(int *param_1) + +{ + if (DAT_00505b64 != 0) { + FUN_00489594((int)param_1,4); + } + if (param_1 != (int *)0x0) { + FUN_00488fd8(param_1); + return; + } + FUN_0049a300(1,s_Attempt_to_Delete_NULL_instance_00505ee7); + return; +} + + + +/* @00489938 file=? name=FUN_00489938 */ + +void __cdecl FUN_00489938(int *param_1) + +{ + if (DAT_00505b64 != 0) { + FUN_00489594((int)param_1,6); + } + if (param_1 != (int *)0x0) { + FUN_00488ebc((int *)&DAT_00523bf8,(int)param_1); + if (param_1[5] != 0) { + FUN_00489638(param_1[5],(int)param_1); + } + FUN_00488fd8(param_1); + return; + } + FUN_0049a300(1,s_Attempt_to_delete_NULL_light_00505f08); + return; +} + + + +/* @00489998 file=? name=FUN_00489998 */ + +void __cdecl FUN_00489998(int *param_1) + +{ + if (DAT_00505b64 != 0) { + FUN_00489594((int)param_1,0xc); + } + if (param_1 != (int *)0x0) { + FUN_00488fd8(param_1); + return; + } + FUN_0049a300(1,s_Attempt_to_delete_NULL_texture_00505f26); + return; +} + + + +/* @004899d8 file=? name=FUN_004899d8 */ + +void __cdecl FUN_004899d8(int *param_1) + +{ + if (DAT_00505b64 != 0) { + FUN_00489594((int)param_1,0xd); + } + if (param_1 != (int *)0x0) { + if ((int *)param_1[4] != (int *)0x0) { + FUN_00452c88((int *)param_1[4]); + } + FUN_00488fd8(param_1); + return; + } + FUN_0049a300(1,s_Attempt_to_delete_NULL_texmap_00505f46); + return; +} + + + +/* @00489a28 file=? name=FUN_00489a28 */ + +void __cdecl FUN_00489a28(int *param_1) + +{ + if (DAT_00505b64 != 0) { + FUN_00489594((int)param_1,0xb); + } + if (param_1 != (int *)0x0) { + FUN_00488fd8(param_1); + return; + } + FUN_0049a300(1,s_Attempt_to_delete_NULL_material_00505f65); + return; +} + + + +/* @00489a68 file=? name=FUN_00489a68 */ + +void __cdecl FUN_00489a68(int *param_1) + +{ + if (DAT_00505b64 != 0) { + FUN_00489594((int)param_1,0xe); + } + if (param_1 != (int *)0x0) { + FUN_00488fd8(param_1); + return; + } + FUN_0049a300(1,s_Attempt_to_delete_NULL_ramp_00505f86); + return; +} + + + +/* @00489aa8 file=? name=FUN_00489aa8 */ + +void __cdecl FUN_00489aa8(int *param_1) + +{ + if (DAT_00505b64 != 0) { + FUN_00489594((int)param_1,7); + } + if (param_1 != (int *)0x0) { + FUN_00488fd8(param_1); + return; + } + FUN_0049a300(1,s_Attempt_to_delete_NULL_object_00505fa3); + return; +} + + + +/* @00489ae8 file=? name=FUN_00489ae8 */ + +void __cdecl FUN_00489ae8(int *param_1) + +{ + if (DAT_00505b64 != 0) { + FUN_00489594((int)param_1,8); + } + if (param_1 != (int *)0x0) { + FUN_00488fd8(param_1); + return; + } + FUN_0049a300(1,s_Attempt_to_delete_NULL_lod_00505fc2); + return; +} + + + +/* @00489b28 file=? name=FUN_00489b28 */ + +void __cdecl FUN_00489b28(int *param_1) + +{ + if (DAT_00505b64 != 0) { + FUN_00489594((int)param_1,9); + } + if (param_1 != (int *)0x0) { + FUN_00488fd8(param_1); + return; + } + FUN_0049a300(1,s_Attempt_to_delete_NULL_geogroup_00505fde); + return; +} + + + +/* @00489b68 file=? name=FUN_00489b68 */ + +void __cdecl FUN_00489b68(int *param_1) + +{ + if (DAT_00505b64 != 0) { + FUN_00489594((int)param_1,10); + } + if (param_1 != (int *)0x0) { + FUN_00488fd8(param_1); + return; + } + FUN_0049a300(1,s_Attempt_to_delete_NULL_geometry_00505fff); + return; +} + + + +/* @00489ba8 file=? name=FUN_00489ba8 */ + +void __cdecl FUN_00489ba8(int param_1) + +{ + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,5); + } + FUN_00488d88((int *)&DAT_00523be8,param_1); + return; +} + + + +/* @00489bd4 file=? name=FUN_00489bd4 */ + +void __cdecl FUN_00489bd4(int param_1) + +{ + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,3); + } + FUN_00488d88((int *)&DAT_00523bd8,param_1); + return; +} + + + +/* @00489c00 file=? name=FUN_00489c00 */ + +void __cdecl FUN_00489c00(int param_1,int param_2) + +{ + int local_8; + + if (DAT_00505b64 != 0) { + FUN_00489594(param_2,8); + } + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,7); + } + *(int *)(param_2 + 0x30) = param_1; + FUN_00488d88((int *)(param_1 + 0x10),param_2); + FUN_00488df8(param_1 + 0x10,param_2,&local_8); + return; +} + + + +/* @00489c5c file=? name=FUN_00489c5c */ + +void __cdecl FUN_00489c5c(int param_1,int param_2) + +{ + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,8); + } + if (DAT_00505b64 != 0) { + FUN_00489594(param_2,9); + } + *(int *)(param_2 + 0x30) = param_1; + FUN_00488d88((int *)(param_1 + 0x34),param_2); + return; +} + + + +/* @00489ca4 file=? name=FUN_00489ca4 */ + +void __cdecl FUN_00489ca4(int param_1,int param_2) + +{ + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,9); + } + if (DAT_00505b64 != 0) { + FUN_00489594(param_2,10); + } + *(int *)(param_2 + 0x1c) = param_1; + FUN_00488d88((int *)(param_1 + 0x38),param_2); + return; +} + + + +/* @00489cec file=? name=FUN_00489cec */ + +void __cdecl FUN_00489cec(int param_1,int param_2) + +{ + int iVar1; + int iVar2; + + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,5); + } + if (DAT_00505b64 != 0) { + FUN_00489594(param_2,5); + } + if (param_1 == 0) { + FUN_0049a300(1,s_attempt_to_add_dcs_0x_x_to_a_NUL_00506047); + } + else if (param_2 == 0) { + FUN_0049a300(1,s_attempt_to_add_a_NULL_dcs_to_dcs_00506020); + } + else { + if (*(int *)(param_1 + 100) == 0) { + *(int *)(param_2 + 0x5c) = param_1; + *(int *)(param_1 + 100) = param_2; + } + else { + if (*(int *)(param_2 + 0x5c) != 0) { + FUN_0048a068(*(int *)(param_2 + 0x5c),param_2); + } + *(int *)(param_2 + 0x5c) = param_1; + iVar1 = *(int *)(param_1 + 100); + do { + iVar2 = iVar1; + iVar1 = *(int *)(iVar2 + 0x60); + } while (iVar1 != 0); + *(int *)(iVar2 + 0x60) = param_2; + } + FUN_0048d8d8(param_1,param_2); + } + return; +} + + + +/* @00489d90 file=? name=FUN_00489d90 */ + +undefined4 __cdecl FUN_00489d90(int param_1,int param_2) + +{ + undefined4 uVar1; + + if (param_1 == 0) { + FUN_0049a300(1,s_attempt_to_add_node_to_NULL_DCS_005060c2); + uVar1 = 0; + } + else if (param_2 == 0) { + FUN_0049a300(1,s_attempt_to_add_NULL_node_to_DCS_005060a1); + uVar1 = 0; + } + else if (*(int *)(param_2 + 0x10) == 0) { + FUN_0048d760(param_1,param_2); + *(undefined4 *)(param_2 + 0x10) = *(undefined4 *)(param_1 + 0x10); + *(int *)(param_1 + 0x10) = param_2; + uVar1 = 1; + } + else { + FUN_0049a300(1,s_error_in_AddNodeToDCS___node_alr_00506071); + uVar1 = 0; + } + return uVar1; +} + + + +/* @00489e04 file=? name=FUN_00489e04 */ + +void __cdecl FUN_00489e04(int param_1,int param_2) + +{ + FUN_0049a300(4,s_dpl_AddInstanceToDCS_0x_x_0x_x_005060e3); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,5); + } + if (DAT_00505b64 != 0) { + FUN_00489594(param_2,4); + } + FUN_00489d90(param_1,param_2); + return; +} + + + +/* @00489e58 file=? name=FUN_00489e58 */ + +void __cdecl FUN_00489e58(int param_1) + +{ + int iVar1; + + FUN_0049a300(4,s_dpl_RemoveDCSFromScene_0x_x_00506103); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,5); + } + iVar1 = FUN_00488ebc((int *)&DAT_00523be8,param_1); + if (iVar1 == 0) { + FUN_0049a300(1,s_Failed_to_remove_dcs_0x_x__0x_x__00506120); + } + return; +} + + + +/* @00489eac file=? name=FUN_00489eac */ + +void __cdecl FUN_00489eac(int param_1) + +{ + int iVar1; + + FUN_0049a300(4,s_dpl_RemoveViewFromScene_0x_x_0050614d); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,3); + } + iVar1 = FUN_00488ebc((int *)&DAT_00523bd8,param_1); + if (iVar1 == 0) { + FUN_0049a300(1,s_Failed_to_remove_view_0x_x__0x_x_0050616b); + } + return; +} + + + +/* @00489f00 file=? name=FUN_00489f00 */ + +void __cdecl FUN_00489f00(int param_1,int param_2) + +{ + int iVar1; + + FUN_0049a300(4,s_dpl_RemoveLodFromObject_0x_x_0x__00506199); + if (DAT_00505b64 != 0) { + FUN_00489594(param_2,8); + } + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,7); + } + *(undefined4 *)(param_2 + 0x30) = 0; + iVar1 = FUN_00488ebc((int *)(param_1 + 0x10),param_2); + if (iVar1 == 0) { + FUN_004d771c(s_Failed_to_remove_lod_0x_x__0x_x__005061bc); + } + return; +} + + + +/* @00489f78 file=? name=FUN_00489f78 */ + +void __cdecl FUN_00489f78(int param_1,int param_2) + +{ + int iVar1; + + FUN_0049a300(4,s_dpl_RemoveGeogroupFromLod_0x_x_0_005061f6); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,8); + } + if (DAT_00505b64 != 0) { + FUN_00489594(param_2,9); + } + *(undefined4 *)(param_2 + 0x30) = 0; + iVar1 = FUN_00488ebc((int *)(param_1 + 0x34),param_2); + if (iVar1 == 0) { + FUN_004d771c(s_Failed_to_remove_ggroup_0x_x__0x_0050621b); + } + return; +} + + + +/* @00489ff0 file=? name=FUN_00489ff0 */ + +void __cdecl FUN_00489ff0(int param_1,int param_2) + +{ + int iVar1; + + FUN_0049a300(4,s_dpl_RemoveGeometryFromGeogroup_0_00506255); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,9); + } + if (DAT_00505b64 != 0) { + FUN_00489594(param_2,10); + } + *(undefined4 *)(param_2 + 0x1c) = 0; + iVar1 = FUN_00488ebc((int *)(param_1 + 0x38),param_2); + if (iVar1 == 0) { + FUN_004d771c(s_Failed_to_remove_geometry_0x_x___0050627f); + } + return; +} + + + +/* @0048a068 file=? name=FUN_0048a068 */ + +void __cdecl FUN_0048a068(int param_1,int param_2) + +{ + int iVar1; + + FUN_0049a300(4,s_dpl_RemoveDCSFromDCS_0x_x_0x_x_005062be); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,5); + } + if (DAT_00505b64 != 0) { + FUN_00489594(param_2,5); + } + if ((param_1 == 0) || (param_2 == 0)) { + FUN_0049a300(1,s_NULL_node_in_RemoveDCSFromDCS_0x_00506344); + } + else if (param_1 == *(int *)(param_2 + 0x5c)) { + if (param_2 == *(int *)(param_1 + 100)) { + *(undefined4 *)(param_1 + 100) = *(undefined4 *)(param_2 + 0x60); + } + else { + for (iVar1 = *(int *)(param_1 + 100); param_2 != *(int *)(iVar1 + 0x60); + iVar1 = *(int *)(iVar1 + 0x60)) { + if (*(int *)(iVar1 + 0x60) == 0) { + FUN_0049a300(1,s_badly_formed_DCS_tree_in_RemoveD_00506311); + return; + } + } + *(undefined4 *)(iVar1 + 0x60) = *(undefined4 *)(param_2 + 0x60); + } + *(undefined4 *)(param_2 + 0x5c) = 0; + *(undefined4 *)(param_2 + 0x60) = 0; + FUN_0048d920(param_1,param_2); + } + else { + FUN_0049a300(1,s_badly_formed_DCS_tree_in_RemoveD_005062de); + } + return; +} + + + +/* @0048a130 file=? name=FUN_0048a130 */ + +void __cdecl FUN_0048a130(int param_1,int param_2) + +{ + FUN_0049a300(4,s_dpl_RemoveInstanceFromDCS_0x_x_0_00506372); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,5); + } + if (DAT_00505b64 != 0) { + FUN_00489594(param_2,4); + } + FUN_00489638(param_1,param_2); + return; +} + + + +/* @0048a184 file=? name=FUN_0048a184 */ + +void FUN_0048a184(void) + +{ + FUN_0049a300(4,s_dpl_DrawSceneComplete_00506397); + FUN_0048e330(); + return; +} + + + +/* @0048a1a0 file=? name=FUN_0048a1a0 */ + +void FUN_0048a1a0(void) + +{ + FUN_0049a300(4,s_dpl_WaitSceneComplete_005063ae); + FUN_0048e340(); + return; +} + + + +/* @0048a1bc file=? name=FUN_0048a1bc */ + +void FUN_0048a1bc(void) + +{ + FUN_0049a300(4,s_dpl_DrawScene_005063c5); + FUN_0048a1a0(); + FUN_00488fac(); + FUN_0048e2dc(1); + return; +} + + + +/* @0048a1e4 file=? name=FUN_0048a1e4 */ + +int __cdecl FUN_0048a1e4(int param_1) + +{ + int *piVar1; + int iVar2; + + piVar1 = DAT_00523bd0; + FUN_0049a300(4,s_dpl_GetSceneZone_005063d4); + while( true ) { + if (param_1 == 0) { + if (piVar1 == (int *)0x0) { + iVar2 = 0; + } + else { + if (DAT_00505b64 != 0) { + FUN_00489594(*piVar1,2); + } + iVar2 = *piVar1; + } + return iVar2; + } + if (piVar1 == (int *)0x0) break; + piVar1 = (int *)piVar1[2]; + param_1 = param_1 + -1; + } + return 0; +} + + + +/* @0048a23c file=? name=FUN_0048a23c */ + +int __cdecl FUN_0048a23c(int param_1) + +{ + int *piVar1; + int iVar2; + + piVar1 = DAT_00523be0; + FUN_0049a300(4,s_dpl_GetSceneView_005063e6); + while( true ) { + if (param_1 == 0) { + if (piVar1 == (int *)0x0) { + iVar2 = 0; + } + else { + if (DAT_00505b64 != 0) { + FUN_00489594(*piVar1,3); + } + iVar2 = *piVar1; + } + return iVar2; + } + if (piVar1 == (int *)0x0) break; + piVar1 = (int *)piVar1[2]; + param_1 = param_1 + -1; + } + return 0; +} + + + +/* @0048a294 file=? name=FUN_0048a294 */ + +int __cdecl FUN_0048a294(int param_1) + +{ + int *piVar1; + int iVar2; + + piVar1 = DAT_00523bf0; + FUN_0049a300(4,s_dpl_GetSceneDCS_005063f8); + while( true ) { + if (param_1 == 0) { + if (piVar1 == (int *)0x0) { + iVar2 = 0; + } + else { + if (DAT_00505b64 != 0) { + FUN_00489594(*piVar1,5); + } + iVar2 = *piVar1; + } + return iVar2; + } + if (piVar1 == (int *)0x0) break; + piVar1 = (int *)piVar1[2]; + param_1 = param_1 + -1; + } + return 0; +} + + + +/* @0048a2ec file=? name=FUN_0048a2ec */ + +int FUN_0048a2ec(int param_1,int param_2) + +{ + int iVar1; + + iVar1 = *(int *)(param_1 + 100); + FUN_0049a300(4,s_dpl_GetDCSChildDCS_00506409); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,5); + } + while( true ) { + if (param_2 == 0) { + if (DAT_00505b64 != 0) { + FUN_00489594(iVar1,5); + } + return iVar1; + } + if (iVar1 == 0) break; + iVar1 = *(int *)(iVar1 + 0x60); + param_2 = param_2 + -1; + } + return 0; +} + + + +/* @0048a350 file=? name=FUN_0048a350 */ + +undefined4 __cdecl FUN_0048a350(int param_1) + +{ + FUN_0049a300(4,s_dpl_GetDCSParentDCS_0050641d); + if (param_1 == 0) { + return 0; + } + if (DAT_00505b64 != 0) { + FUN_00489594(*(int *)(param_1 + 0x5c),5); + } + return *(undefined4 *)(param_1 + 0x5c); +} + + + +/* @0048a38c file=? name=FUN_0048a38c */ + +int __cdecl FUN_0048a38c(int param_1,int param_2) + +{ + int iVar1; + + FUN_0049a300(4,s_dpl_GetDCSInstance_00506432); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,5); + } + if (param_1 == 0) { + FUN_0049a300(1,s_NULL_dcs_in_GetDCSInstance_00506446); + } + else { + for (iVar1 = *(int *)(param_1 + 0x10); iVar1 != 0; iVar1 = *(int *)(iVar1 + 0x10)) { + if ((*(int *)(iVar1 + 0xc) == 4) && (param_2 = param_2 + -1, param_2 == 0)) { + return iVar1; + } + } + } + return 0; +} + + + +/* @0048a3f4 file=? name=FUN_0048a3f4 */ + +int __cdecl FUN_0048a3f4(int param_1,int param_2) + +{ + int *piVar1; + int iVar2; + + piVar1 = *(int **)(param_1 + 0x18); + FUN_0049a300(4,s_dpl_GetObjectLod_00506462); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,7); + } + while( true ) { + if (param_2 == 0) { + if (piVar1 == (int *)0x0) { + iVar2 = 0; + } + else { + if (DAT_00505b64 != 0) { + FUN_00489594(*piVar1,8); + } + iVar2 = *piVar1; + } + return iVar2; + } + if (piVar1 == (int *)0x0) break; + piVar1 = (int *)piVar1[2]; + param_2 = param_2 + -1; + } + return 0; +} + + + +/* @0048a464 file=? name=FUN_0048a464 */ + +int __cdecl FUN_0048a464(int param_1,int param_2) + +{ + int *piVar1; + int iVar2; + + piVar1 = *(int **)(param_1 + 0x3c); + FUN_0049a300(4,s_dpl_GetLodGeogroup_00506474); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,8); + } + while( true ) { + if (param_2 == 0) { + if (piVar1 == (int *)0x0) { + iVar2 = 0; + } + else { + if (DAT_00505b64 != 0) { + FUN_00489594(*piVar1,9); + } + iVar2 = *piVar1; + } + return iVar2; + } + if (piVar1 == (int *)0x0) break; + piVar1 = (int *)piVar1[2]; + param_2 = param_2 + -1; + } + return 0; +} + + + +/* @0048a4d4 file=? name=FUN_0048a4d4 */ + +int __cdecl FUN_0048a4d4(int param_1,int param_2) + +{ + int *piVar1; + int iVar2; + + piVar1 = *(int **)(param_1 + 0x40); + FUN_0049a300(4,s_dpl_GetGeogroupGeometry_00506488); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,9); + } + while( true ) { + if (param_2 == 0) { + if (piVar1 == (int *)0x0) { + iVar2 = 0; + } + else { + if (DAT_00505b64 != 0) { + FUN_00489594(*piVar1,10); + } + iVar2 = *piVar1; + } + return iVar2; + } + if (piVar1 == (int *)0x0) break; + piVar1 = (int *)piVar1[2]; + param_2 = param_2 + -1; + } + return 0; +} + + + +/* @0048a544 file=? name=FUN_0048a544 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_0048a544(int param_1,undefined4 param_2,undefined4 *param_3) + +{ + if (param_1 < 0x10) { + FUN_0049a300(4,s_dpl_SetRenderProperty_005064a1); + (&DAT_00523d08)[param_1 * 2] = param_2; + (&DAT_00523d0c)[param_1 * 2] = param_3; + if (param_1 == 8) { + _DAT_00507930 = *param_3; + } + FUN_0048e688(param_1,param_2); + } + return; +} + + + /* @0048a598 file=? name=FUN_0048a598 */ /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ @@ -6980,4589 +8907,3 @@ undefined4 * __cdecl FUN_00490a24(undefined4 *param_1,undefined4 *param_2,uint p -/* @00490a90 file=? name=FUN_00490a90 */ - -char * __cdecl FUN_00490a90(char *param_1,undefined4 *param_2) - -{ - int iVar1; - - iVar1 = FUN_004d4a78(param_1); - FUN_004d4918(param_2,(undefined4 *)param_1,iVar1 + 1U); - return param_1 + iVar1 + 1U; -} - - - -/* @00490ab8 file=? name=FUN_00490ab8 */ - -void FUN_00490ab8(void) - -{ - DAT_00508568 = 1; - return; -} - - - -/* @00490adc file=? name=FUN_00490adc */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -void __cdecl FUN_00490adc(char *param_1) - -{ - FUN_004d771c(param_1); - _DAT_0050856c = 1; - return; -} - - - -/* @00490af8 file=? name=FUN_00490af8 */ - -int * __thiscall FUN_00490af8(void *this,undefined4 param_1) - -{ - int *piVar1; - - piVar1 = (int *)FUN_00452c38(0x1c); - if (piVar1 == (int *)0x0) { - FUN_004d771c(s_Failed_to_init_dbi_interface_dev_00508580); - piVar1 = (int *)0x0; - } - else { - FUN_004d7f84(param_1,&DAT_005085a8); - *piVar1 = (int)this; - piVar1[1] = (int)this; - piVar1[2] = (int)this + 1; - piVar1[3] = (int)this + 2; - piVar1[4] = (int)this + 3; - piVar1[5] = (int)this + 0x10; - piVar1[6] = (int)this + 0x11; - } - return piVar1; -} - - - -/* @00490b64 file=? name=FUN_00490b64 */ - -void FUN_00490b64(void) - -{ - int iVar1; - int iVar2; - - iVar1 = FUN_004dfd90(); - do { - iVar2 = FUN_004dfd90(); - } while (iVar1 == iVar2); - do { - iVar2 = FUN_004dfd90(); - } while (iVar1 == iVar2); - return; -} - - - -/* @00490b84 file=? name=FUN_00490b84 */ - -undefined6 __cdecl FUN_00490b84(int param_1) - -{ - undefined6 uVar1; - - FUN_004d46ed((short)*(undefined4 *)(param_1 + 0x18),0); - FUN_004d46ed((short)*(undefined4 *)(param_1 + 0x14),0); - FUN_00490b64(); - FUN_004d46ed((short)*(undefined4 *)(param_1 + 0x14),1); - FUN_00490b64(); - FUN_004d46ed((short)*(undefined4 *)(param_1 + 0x10),0); - FUN_004d46ed((short)*(undefined4 *)(param_1 + 0xc),0); - uVar1 = FUN_004d46ed((short)*(undefined4 *)(param_1 + 0x14),0); - return uVar1; -} - - - -/* @00490bec file=? name=FUN_00490bec */ - -byte __cdecl FUN_00490bec(int param_1) - -{ - byte bVar1; - - bVar1 = FUN_004d45ec((short)*(undefined4 *)(param_1 + 0x10)); - return bVar1 & 1; -} - - - -/* @00490c04 file=? name=FUN_00490c04 */ - -undefined4 __cdecl FUN_00490c04(int param_1,byte *param_2,int param_3) - -{ - bool bVar1; - byte bVar2; - int iVar3; - int iVar4; - int local_c; - int local_8; - - bVar1 = true; - local_8 = 0; - if (0 < param_3) { - do { - iVar4 = 0; - while (bVar2 = FUN_004d45ec((short)*(undefined4 *)(param_1 + 0x10)), (bVar2 & 1) == 0) { - if (39999 < iVar4) { - iVar4 = 0; - if (bVar1) { - bVar1 = false; - local_c = FUN_004dfd90(); - } - iVar3 = FUN_004dfd90(); - if (5000 < iVar3 - local_c) { - FUN_00490adc(s_timeout_in_outRecord_005085ac); - return 0; - } - } - iVar4 = iVar4 + 1; - } - FUN_004d46ed((short)*(undefined4 *)(param_1 + 8),*param_2); - local_8 = local_8 + 1; - param_2 = param_2 + 1; - } while (local_8 < param_3); - } - return 1; -} - - - -/* @00490c9c file=? name=FUN_00490c9c */ - -/* WARNING: Removing unreachable block (ram,0x00490e78) */ -/* WARNING: Removing unreachable block (ram,0x00490e85) */ -/* WARNING: Removing unreachable block (ram,0x00490e93) */ -/* WARNING: Removing unreachable block (ram,0x00490eaa) */ -/* WARNING: Removing unreachable block (ram,0x00490eb2) */ -/* WARNING: Removing unreachable block (ram,0x00490eb8) */ -/* WARNING: Removing unreachable block (ram,0x00490ec2) */ -/* WARNING: Removing unreachable block (ram,0x00490ed1) */ -/* WARNING: Removing unreachable block (ram,0x00490ee0) */ - -undefined4 __cdecl FUN_00490c9c(int param_1,undefined4 param_2) - -{ - bool bVar1; - byte bVar2; - int iVar3; - int iVar4; - int local_10; - - bVar1 = true; - iVar4 = 0; - while (bVar2 = FUN_004d45ec((short)*(undefined4 *)(param_1 + 0x10)), (bVar2 & 1) == 0) { - if (39999 < iVar4) { - iVar4 = 0; - if (bVar1) { - bVar1 = false; - local_10 = FUN_004dfd90(); - } - iVar3 = FUN_004dfd90(); - if (5000 < iVar3 - local_10) { - FUN_00490adc(s_timeout_in_outRecord_005085c2); - return 0; - } - } - iVar4 = iVar4 + 1; - } - FUN_004d46ed((short)*(undefined4 *)(param_1 + 8),(byte)param_2); - bVar1 = true; - iVar4 = 0; - while (bVar2 = FUN_004d45ec((short)*(undefined4 *)(param_1 + 0x10)), (bVar2 & 1) == 0) { - if (39999 < iVar4) { - iVar4 = 0; - if (bVar1) { - bVar1 = false; - local_10 = FUN_004dfd90(); - } - iVar3 = FUN_004dfd90(); - if (5000 < iVar3 - local_10) { - FUN_00490adc(s_timeout_in_outRecord_005085d8); - return 0; - } - } - iVar4 = iVar4 + 1; - } - FUN_004d46ed((short)*(undefined4 *)(param_1 + 8),(byte)((uint)param_2 >> 8)); - bVar1 = true; - iVar4 = 0; - do { - bVar2 = FUN_004d45ec((short)*(undefined4 *)(param_1 + 0x10)); - if ((bVar2 & 1) != 0) { - FUN_004d46ed((short)*(undefined4 *)(param_1 + 8),(byte)((uint)param_2 >> 0x10)); - bVar1 = true; - iVar4 = 0; - do { - bVar2 = FUN_004d45ec((short)*(undefined4 *)(param_1 + 0x10)); - if ((bVar2 & 1) != 0) { - FUN_004d46ed((short)*(undefined4 *)(param_1 + 8),(byte)((uint)param_2 >> 0x18)); - return 1; - } - if (39999 < iVar4) { - iVar4 = 0; - if (bVar1) { - bVar1 = false; - local_10 = FUN_004dfd90(); - } - iVar3 = FUN_004dfd90(); - if (5000 < iVar3 - local_10) { - FUN_00490adc(s_timeout_in_outRecord_00508604); - return 0; - } - } - iVar4 = iVar4 + 1; - } while( true ); - } - if (39999 < iVar4) { - iVar4 = 0; - if (bVar1) { - bVar1 = false; - local_10 = FUN_004dfd90(); - } - iVar3 = FUN_004dfd90(); - if (5000 < iVar3 - local_10) { - FUN_00490adc(s_timeout_in_outRecord_005085ee); - return 0; - } - } - iVar4 = iVar4 + 1; - } while( true ); -} - - - -/* @00490ef0 file=? name=FUN_00490ef0 */ - -byte __cdecl FUN_00490ef0(int param_1) - -{ - byte bVar1; - - bVar1 = FUN_004d45ec((short)*(undefined4 *)(param_1 + 0xc)); - return bVar1 & 1; -} - - - -/* @00490f08 file=? name=FUN_00490f08 */ - -undefined4 __cdecl FUN_00490f08(int param_1,undefined1 *param_2,int param_3) - -{ - byte bVar1; - undefined1 uVar2; - int iVar3; - undefined3 extraout_var; - int iVar4; - int iVar5; - int local_8; - - iVar3 = FUN_004dfd90(); - local_8 = 0; - if (0 < param_3) { - do { - iVar5 = 0; - while (bVar1 = FUN_00490ef0(param_1), CONCAT31(extraout_var,bVar1) == 0) { - if (39999 < iVar5) { - iVar5 = 0; - iVar4 = FUN_004dfd90(); - if (5000 < iVar4 - iVar3) { - FUN_00490adc(s_timeout_in_inRecord_00508630); - return 0; - } - } - iVar5 = iVar5 + 1; - } - uVar2 = FUN_004d45ec((short)*(undefined4 *)(param_1 + 4)); - *param_2 = uVar2; - param_2 = param_2 + 1; - local_8 = local_8 + 1; - } while (local_8 < param_3); - } - return 1; -} - - - -/* @00490f8c file=? name=FUN_00490f8c */ - -undefined4 __cdecl FUN_00490f8c(int param_1,undefined1 *param_2,int param_3) - -{ - byte bVar1; - undefined1 uVar2; - undefined3 extraout_var; - int iVar3; - - iVar3 = 0; - if (0 < param_3) { - do { - do { - bVar1 = FUN_00490ef0(param_1); - } while (CONCAT31(extraout_var,bVar1) == 0); - uVar2 = FUN_004d45ec((short)*(undefined4 *)(param_1 + 4)); - *param_2 = uVar2; - param_2 = param_2 + 1; - iVar3 = iVar3 + 1; - } while (iVar3 < param_3); - } - return 1; -} - - - -/* @00490fc8 file=? name=FUN_00490fc8 */ - -void __cdecl FUN_00490fc8(undefined4 *param_1,undefined2 *param_2,uint param_3) - -{ - uint uVar1; - - uVar1 = param_3 >> 1; - while (uVar1 != 0) { - uVar1 = uVar1 - 1; - out(*param_2,(ushort)*param_1 ^ 4); - param_2 = param_2 + 1; - } - return; -} - - - -/* @00490fec file=? name=FUN_00490fec */ - -void __cdecl -FUN_00490fec(undefined4 *param_1,int param_2,undefined4 *param_3,undefined4 param_4,uint param_5, - int param_6,int param_7) - -{ - undefined4 *puVar1; - uint local_14; - undefined4 local_c; - undefined4 local_8; - - local_8 = 0; - if (0x400 < (int)param_5) { - FUN_004d771c(s_Attempt_to_send__d_bytes_in_pack_00508645); - FUN_004dee24(9); - } - if (param_6 == 0) { - FUN_004907a4((undefined1 *)&local_c,param_5 + 4 | 0x40ff0000); - } - else { - if ((param_5 & 1) != 0) { - param_5 = param_5 + 1; - } - FUN_004907a4((undefined1 *)&local_c,param_2 << 0x10 | param_5 | 0xc0000000); - } - DAT_00508570 = local_c; - if (param_7 == 0) { - puVar1 = (undefined4 *)&DAT_00524694; - local_14 = param_5; - if (param_6 == 0) { - puVar1 = (undefined4 *)FUN_004907a4(&DAT_00524694,param_4); - local_14 = param_5 + 4; - } - FUN_0049088c(puVar1,param_3,param_5); - FUN_00490fc8(param_1,(undefined2 *)&DAT_00524694,local_14 + 3 & 0xfffffffc); - FUN_00490c9c((int)param_1,local_c); - } - else { - if (param_6 == 0) { - FUN_004907a4((undefined1 *)&local_8,param_4); - FUN_00490fc8(param_1,(undefined2 *)&local_8,4); - } - FUN_00490fc8(param_1,(undefined2 *)param_3,param_5 + 3 & 0xfffffffc); - FUN_00490c9c((int)param_1,local_c); - } - return; -} - - - -/* @00491118 file=? name=FUN_00491118 */ - -undefined4 __cdecl -FUN_00491118(int *param_1,int param_2,byte *param_3,undefined4 param_4,uint param_5,int param_6, - int param_7) - -{ - undefined4 uVar1; - int iVar2; - byte local_8 [4]; - - if (param_1[1] == 0) { - uVar1 = FUN_00490c04(param_1[2],param_3,param_5); - } - else if (*param_1 == 0) { - if (0x400 < (int)param_5) { - FUN_004d771c(s_Attempt_to_send__d_bytes_in_pack_00508672); - FUN_004dee24(9); - } - if (param_6 == 0) { - FUN_004907a4(local_8,param_5 + 4 | 0xff0000); - } - else { - if ((param_5 & 1) != 0) { - param_5 = param_5 + 1; - } - FUN_004907a4(local_8,param_2 << 0x10 | param_5 | 0x80000000); - } - iVar2 = FUN_00490c04(param_1[2],local_8,4); - if (iVar2 == 0) { - FUN_004d771c(s_send_protocol_failed_to_squirt_l_0050869f); - uVar1 = 0; - } - else { - if (param_6 == 0) { - FUN_004907a4(local_8,param_4); - iVar2 = FUN_00490c04(param_1[2],local_8,4); - if (iVar2 == 0) { - FUN_004d771c(s_send_protocol_failed_to_squirt_a_005086da); - return 0; - } - } - if (param_7 == 0) { - FUN_0049088c((undefined4 *)&DAT_00524694,(undefined4 *)param_3,param_5); - param_3 = &DAT_00524694; - } - iVar2 = FUN_00490c04(param_1[2],param_3,param_5); - if (iVar2 == 0) { - FUN_004d771c(s_send_protocol_failed_to_squirt_d_00508714); - uVar1 = 0; - } - else { - if (param_6 == 0) { - DAT_00508574 = DAT_00508574 + 1; - } - uVar1 = 1; - } - } - } - else { - uVar1 = FUN_00490fec((undefined4 *)param_1[2],param_2,(undefined4 *)param_3,param_4,param_5, - param_6,param_7); - } - return uVar1; -} - - - -/* @00491294 file=? name=FUN_00491294 */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -undefined4 __cdecl -FUN_00491294(int param_1,uint *param_2,undefined4 *param_3,uint *param_4,int *param_5) - -{ - int iVar1; - undefined4 uVar2; - uint uVar3; - uint local_c; - undefined1 local_8 [4]; - - _DAT_00508578 = _DAT_00508578 + 1; - iVar1 = FUN_00490f08(*(int *)(param_1 + 8),local_8,4); - if (iVar1 == 0) { - FUN_004d771c(s_Protocol_error___length_word_not_005087af); - uVar2 = 0; - } - else { - FUN_00490974(local_8,(undefined1 *)&local_c); - _DAT_0050857c = local_c; - *param_2 = (int)local_c >> 0x10 & 0xff; - if ((local_c & 0x80000000) == 0) { - *param_5 = 0; - } - else { - *param_5 = 1; - } - uVar3 = local_c & 0xffff; - if (uVar3 < 0x411) { - iVar1 = FUN_00490f8c(*(int *)(param_1 + 8),(undefined1 *)param_3,uVar3); - if (iVar1 == 0) { - FUN_004d771c(s_Protocol_error____d_bytes_not_co_0050877e); - uVar2 = 0; - } - else { - if (*param_5 == 0) { - FUN_0049088c(param_3,param_3,uVar3); - } - *param_4 = uVar3; - uVar2 = 1; - } - } - else { - FUN_004d771c(s_Protocol_error___length__d_too_b_00508748); - uVar2 = 0; - } - } - return uVar2; -} - - - -/* @00491380 file=? name=FUN_00491380 */ - -undefined8 __cdecl FUN_00491380(undefined4 *param_1,undefined4 param_2) - -{ - byte bVar1; - undefined3 extraout_var; - undefined4 extraout_EDX; - undefined2 extraout_var_00; - undefined6 uVar2; - - switch(param_2) { - case 0: - uVar2 = FUN_00490b84(param_1[2]); - param_2 = CONCAT22(extraout_var_00,(short)((uint6)uVar2 >> 0x20)); - break; - case 1: - param_2 = 0; - *param_1 = 0; - param_1[1] = 1; - break; - case 2: - *param_1 = 1; - param_1[1] = 1; - break; - case 3: - *param_1 = 0; - param_2 = 0; - param_1[1] = 0; - break; - case 4: - bVar1 = FUN_00490ef0(param_1[2]); - return CONCAT44(extraout_EDX,CONCAT31(extraout_var,bVar1)); - } - return CONCAT44(param_2,1); -} - - - -/* @004913f0 file=? name=FUN_004913f0 */ - -undefined4 * __thiscall FUN_004913f0(void *this,undefined4 param_1) - -{ - int *piVar1; - undefined4 *puVar2; - - piVar1 = FUN_00490af8(this,param_1); - if (piVar1 == (int *)0x0) { - puVar2 = (undefined4 *)0x0; - } - else { - puVar2 = (undefined4 *)FUN_00452c38(0xc); - if (puVar2 == (undefined4 *)0x0) { - puVar2 = (undefined4 *)0x0; - } - else { - puVar2[2] = piVar1; - *puVar2 = 0; - puVar2[1] = 0; - DAT_00508568 = 1; - } - } - return puVar2; -} - - - -/* @00491454 file=? name=FUN_00491454 */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -void FUN_00491454(void) - -{ - _DAT_0050856c = 1; - DAT_00508570 = 1; - return; -} - - - -/* @0049146c file=? name=FUN_0049146c */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -void __cdecl FUN_0049146c(float *param_1,float *param_2,float param_3) - -{ - float10 fVar1; - undefined4 local_8; - - if (DAT_005087dc == 0) { - local_8 = param_3; - } - else { - local_8 = param_3 * _DAT_004914bc; - } - fVar1 = (float10)FUN_004dd0f4(SUB84((double)local_8,0),(int)((ulonglong)(double)local_8 >> 0x20)); - *param_1 = (float)fVar1; - fVar1 = (float10)FUN_004dc9b4(SUB84((double)local_8,0),(int)((ulonglong)(double)local_8 >> 0x20)); - *param_2 = (float)fVar1; - return; -} - - - -/* @004914c0 file=? name=FUN_004914c0 */ - -void __cdecl FUN_004914c0(undefined4 *param_1,float *param_2,float *param_3) - -{ - float *pfVar1; - int iVar2; - float local_54 [16]; - float local_14; - float local_10; - float local_c; - float local_8; - - pfVar1 = local_54; - iVar2 = 0; - do { - local_8 = *param_2; - local_c = param_2[1]; - local_10 = param_2[2]; - local_14 = param_2[3]; - *pfVar1 = local_14 * param_3[0xc] + - local_10 * param_3[8] + local_c * param_3[4] + local_8 * *param_3; - pfVar1[1] = local_14 * param_3[0xd] + - local_10 * param_3[9] + local_c * param_3[5] + local_8 * param_3[1]; - pfVar1[2] = local_14 * param_3[0xe] + - local_10 * param_3[10] + local_c * param_3[6] + local_8 * param_3[2]; - pfVar1[3] = local_14 * param_3[0xf] + - local_10 * param_3[0xb] + local_c * param_3[7] + local_8 * param_3[3]; - param_2 = param_2 + 4; - pfVar1 = pfVar1 + 4; - iVar2 = iVar2 + 1; - } while (iVar2 < 4); - FUN_004d4918(param_1,local_54,0x40); - return; -} - - - -/* @00491594 file=? name=FUN_00491594 */ - -void __cdecl FUN_00491594(int param_1,float param_2) - -{ - float fVar1; - float local_c; - float local_8; - - FUN_0049146c(&local_c,&local_8,param_2); - fVar1 = *(float *)(param_1 + 4); - *(float *)(param_1 + 4) = fVar1 * local_8 - *(float *)(param_1 + 8) * local_c; - *(float *)(param_1 + 8) = *(float *)(param_1 + 8) * local_8 + fVar1 * local_c; - fVar1 = *(float *)(param_1 + 0x14); - *(float *)(param_1 + 0x14) = fVar1 * local_8 - *(float *)(param_1 + 0x18) * local_c; - *(float *)(param_1 + 0x18) = *(float *)(param_1 + 0x18) * local_8 + fVar1 * local_c; - fVar1 = *(float *)(param_1 + 0x24); - *(float *)(param_1 + 0x24) = fVar1 * local_8 - *(float *)(param_1 + 0x28) * local_c; - *(float *)(param_1 + 0x28) = *(float *)(param_1 + 0x28) * local_8 + fVar1 * local_c; - fVar1 = *(float *)(param_1 + 0x34); - *(float *)(param_1 + 0x34) = fVar1 * local_8 - *(float *)(param_1 + 0x38) * local_c; - *(float *)(param_1 + 0x38) = *(float *)(param_1 + 0x38) * local_8 + fVar1 * local_c; - return; -} - - - -/* @00491670 file=? name=FUN_00491670 */ - -void __cdecl FUN_00491670(float *param_1,float param_2) - -{ - float fVar1; - float local_c; - float local_8; - - FUN_0049146c(&local_c,&local_8,param_2); - fVar1 = *param_1; - *param_1 = param_1[2] * local_c + fVar1 * local_8; - param_1[2] = param_1[2] * local_8 - fVar1 * local_c; - fVar1 = param_1[4]; - param_1[4] = param_1[6] * local_c + fVar1 * local_8; - param_1[6] = param_1[6] * local_8 - fVar1 * local_c; - fVar1 = param_1[8]; - param_1[8] = param_1[10] * local_c + fVar1 * local_8; - param_1[10] = param_1[10] * local_8 - fVar1 * local_c; - fVar1 = param_1[0xc]; - param_1[0xc] = param_1[0xe] * local_c + fVar1 * local_8; - param_1[0xe] = param_1[0xe] * local_8 - fVar1 * local_c; - return; -} - - - -/* @00491748 file=? name=FUN_00491748 */ - -void __cdecl FUN_00491748(float *param_1,float param_2) - -{ - float fVar1; - float local_c; - float local_8; - - FUN_0049146c(&local_c,&local_8,param_2); - fVar1 = *param_1; - *param_1 = fVar1 * local_8 - param_1[1] * local_c; - param_1[1] = param_1[1] * local_8 + fVar1 * local_c; - fVar1 = param_1[4]; - param_1[4] = fVar1 * local_8 - param_1[5] * local_c; - param_1[5] = param_1[5] * local_8 + fVar1 * local_c; - fVar1 = param_1[8]; - param_1[8] = fVar1 * local_8 - param_1[9] * local_c; - param_1[9] = param_1[9] * local_8 + fVar1 * local_c; - fVar1 = param_1[0xc]; - param_1[0xc] = fVar1 * local_8 - param_1[0xd] * local_c; - param_1[0xd] = param_1[0xd] * local_8 + fVar1 * local_c; - return; -} - - - -/* @00491820 file=? name=FUN_00491820 */ - -void __cdecl FUN_00491820(undefined4 param_1) - -{ - DAT_005087dc = param_1; - return; -} - - - -/* @00491830 file=? name=FUN_00491830 */ - -void __cdecl FUN_00491830(undefined4 *param_1) - -{ - *param_1 = 0x3f800000; - param_1[1] = 0; - param_1[2] = 0; - param_1[3] = 0; - param_1[4] = 0; - param_1[5] = 0x3f800000; - param_1[6] = 0; - param_1[7] = 0; - param_1[8] = 0; - param_1[9] = 0; - param_1[10] = 0x3f800000; - param_1[0xb] = 0; - param_1[0xc] = 0; - param_1[0xd] = 0; - param_1[0xe] = 0; - param_1[0xf] = 0x3f800000; - return; -} - - - -/* @00491890 file=? name=FUN_00491890 */ - -void __cdecl -FUN_00491890(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) - -{ - float local_44 [13]; - undefined4 local_10; - undefined4 local_c; - undefined4 local_8; - - local_44[0] = 1.0; - local_44[1] = 0.0; - local_44[2] = 0.0; - local_44[3] = 0.0; - local_44[4] = 0.0; - local_44[5] = 1.0; - local_44[6] = 0.0; - local_44[7] = 0.0; - local_44[8] = 0.0; - local_44[9] = 0.0; - local_44[10] = 1.0; - local_44[0xb] = 0.0; - local_8 = 0x3f800000; - local_44[0xc] = (float)param_2; - local_10 = param_3; - local_c = param_4; - FUN_004914c0(param_1,(float *)param_1,local_44); - return; -} - - - -/* @00491914 file=? name=FUN_00491914 */ - -void __cdecl FUN_00491914(float *param_1,float param_2,int param_3) - -{ - if (param_3 == 0) { - FUN_00491594((int)param_1,param_2); - return; - } - if (param_3 == 1) { - FUN_00491670(param_1,param_2); - return; - } - FUN_00491748(param_1,param_2); - return; -} - - - -/* @00491950 file=? name=FUN_00491950 */ - -void __cdecl FUN_00491950(undefined4 *param_1,float param_2,undefined4 param_3,undefined4 param_4) - -{ - float local_44 [6]; - undefined4 local_2c; - undefined4 local_28; - undefined4 local_24; - undefined4 local_20; - undefined4 local_1c; - undefined4 local_18; - undefined4 local_14; - undefined4 local_10; - undefined4 local_c; - undefined4 local_8; - - local_44[1] = 0.0; - local_44[2] = 0.0; - local_44[3] = 0.0; - local_44[4] = 0.0; - local_2c = 0; - local_28 = 0; - local_24 = 0; - local_20 = 0; - local_18 = 0; - local_14 = 0; - local_10 = 0; - local_c = 0; - local_8 = 0x3f800000; - local_44[0] = param_2; - local_44[5] = (float)param_3; - local_1c = param_4; - FUN_004914c0(param_1,(float *)param_1,local_44); - return; -} - - - -/* @004919d4 file=? name=FUN_004919d4 */ - -void __cdecl FUN_004919d4(undefined4 *param_1,float *param_2,float *param_3) - -{ - FUN_004914c0(param_1,param_2,param_3); - return; -} - - - -/* @004919f0 file=? name=FUN_004919f0 */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -void __cdecl FUN_004919f0(float *param_1,float *param_2) - -{ - float fVar1; - float fVar2; - float fVar3; - float fVar4; - float fVar5; - float fVar6; - float fVar7; - float fVar8; - float fVar9; - float fVar10; - float fVar11; - float fVar12; - float fVar13; - float fVar14; - float fVar15; - float fVar16; - - param_1[3] = 0.0; - param_1[7] = 0.0; - param_1[0xb] = 0.0; - param_1[0xf] = 1.0; - fVar1 = *param_2; - fVar2 = param_2[1]; - fVar3 = param_2[2]; - fVar4 = param_2[4]; - fVar5 = param_2[5]; - fVar6 = param_2[6]; - fVar7 = param_2[8]; - fVar8 = param_2[9]; - fVar9 = param_2[10]; - fVar10 = param_2[0xc]; - fVar11 = param_2[0xd]; - fVar12 = param_2[0xe]; - fVar13 = fVar5 * fVar9 - fVar8 * fVar6; - fVar14 = -(fVar4 * fVar9 - fVar7 * fVar6); - fVar15 = fVar4 * fVar8 - fVar7 * fVar5; - fVar16 = _DAT_00491bd8 / (fVar3 * fVar15 + fVar2 * fVar14 + fVar1 * fVar13); - fVar13 = fVar16 * fVar13; - fVar14 = fVar16 * fVar14; - fVar15 = fVar16 * fVar15; - *param_1 = fVar13; - param_1[4] = fVar14; - param_1[8] = fVar15; - param_1[0xc] = -(fVar12 * fVar15 + fVar11 * fVar14 + fVar10 * fVar13); - fVar13 = -fVar16 * (fVar2 * fVar9 - fVar8 * fVar3); - fVar9 = (fVar1 * fVar9 - fVar7 * fVar3) * fVar16; - fVar7 = -fVar16 * (fVar1 * fVar8 - fVar7 * fVar2); - param_1[1] = fVar13; - param_1[5] = fVar9; - param_1[9] = fVar7; - param_1[0xd] = -(fVar12 * fVar7 + fVar11 * fVar9 + fVar10 * fVar13); - fVar7 = (fVar2 * fVar6 - fVar5 * fVar3) * fVar16; - fVar3 = -fVar16 * (fVar1 * fVar6 - fVar4 * fVar3); - fVar16 = (fVar1 * fVar5 - fVar4 * fVar2) * fVar16; - param_1[2] = fVar7; - param_1[6] = fVar3; - param_1[10] = fVar16; - param_1[0xe] = -(fVar12 * fVar16 + fVar11 * fVar3 + fVar10 * fVar7); - return; -} - - - -/* @00491c2c file=? name=FUN_00491c2c */ - -void __cdecl FUN_00491c2c(int param_1) - -{ - if (param_1 != 0) { - FUN_00491830((undefined4 *)(param_1 + 0x18)); - return; - } - FUN_004d771c(s_dpl_error___NULL_dcs_in_dpl_IdMa_005087e0); - FUN_004dee24(9); - return; -} - - - -/* @00491c58 file=? name=FUN_00491c58 */ - -void __cdecl FUN_00491c58(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) - -{ - if (param_1 != 0) { - FUN_00491890((undefined4 *)(param_1 + 0x18),param_2,param_3,param_4); - return; - } - FUN_004d771c(s_dpl_error___NULL_dcs_in_dpl_Tran_00508809); - FUN_004dee24(9); - return; -} - - - -/* @00491c90 file=? name=FUN_00491c90 */ - -void __cdecl FUN_00491c90(int param_1,float param_2,int param_3) - -{ - if (param_1 != 0) { - FUN_00491914((float *)(param_1 + 0x18),param_2,param_3); - return; - } - FUN_004d771c(s_dpl_error___NULL_dcs_in_dpl_Rota_00508833); - FUN_004dee24(9); - return; -} - - - -/* @00491cc4 file=? name=FUN_00491cc4 */ - -void __cdecl FUN_00491cc4(int param_1,float param_2,undefined4 param_3,undefined4 param_4) - -{ - if (param_1 != 0) { - FUN_00491950((undefined4 *)(param_1 + 0x18),param_2,param_3,param_4); - return; - } - FUN_004d771c(s_dpl_error___NULL_dcs_in_dpl_Scal_0050885a); - FUN_004dee24(9); - return; -} - - - -/* @00491cfc file=? name=FUN_00491cfc */ - -void FUN_00491cfc(void) - -{ - DAT_005087dc = 1; - return; -} - - - -/* @00491d08 file=? name=FUN_00491d08 */ - -void __cdecl FUN_00491d08(uint *param_1) - -{ - DAT_00524ad8 = (*param_1 & 0xffff) << 4; - DAT_00524adc = ((int)*param_1 >> 0x10 & 0xffffU) << 4; - DAT_00524ae0 = (param_1[1] & 0xffff) << 4; - DAT_00524ae4 = ((int)param_1[1] >> 0x10 & 0xffffU) << 4; - DAT_00524ae8 = param_1[2]; - DAT_00524aec = FUN_00487e7c(&DAT_005088a8,param_1[3],4); - if (DAT_00524aec == 0) { - DAT_00524af0 = 0; - DAT_00524af4 = 0; - DAT_00524af8 = 0; - } - else { - DAT_00524af0 = FUN_00487e7c(&DAT_005088ad,param_1[7],5); - DAT_00524af8 = FUN_00487e7c(&DAT_005088b2,param_1[8],9); - DAT_00524af4 = FUN_00487e7c(&DAT_005088b7,param_1[9],10); - FUN_004d4918(&DAT_00524afc,param_1 + 4,0xc); - } - return; -} - - - -/* @00491df4 file=? name=FUN_00491df4 */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -undefined4 __cdecl FUN_00491df4(int param_1,byte *param_2) - -{ - int iVar1; - undefined4 *puVar2; - undefined1 *puVar3; - char *pcVar4; - undefined4 uVar5; - int local_10; - int local_c; - short local_6; - - local_6 = 0; - _DAT_0050889c = _DAT_0050889c + 1; - DAT_00508898 = (int)(char)*param_2; - switch(DAT_00508898) { - case 0xd: - puVar3 = FUN_00490974(param_2 + 1,(undefined1 *)&local_10); - puVar3 = FUN_00490944(puVar3,(undefined1 *)&local_6); - puVar3[local_6] = 0; - if ((local_10 == 1) || (local_10 == 2)) { - FUN_004d771c(s__d___s_00508901); - puVar3 = FUN_00490764(param_2,0); - FUN_00490774(puVar3,CONCAT22((short)((uint)puVar3 >> 0x10),local_6)); - uVar5 = FUN_00491118(DAT_00508894,param_1,param_2,0,3,1,1); - } - else { - FUN_004d771c(s____ERROR___i860_attempting_to_fw_00508908); - uVar5 = 0; - } - break; - default: - FUN_004d771c(s_iserver_transaction__unexpected_t_0050894c); - uVar5 = 0; - break; - case 0x10: - puVar3 = FUN_00490764(param_2,0); - puVar3 = FUN_00490764(puVar3,1); - FUN_00490764(puVar3,0); - uVar5 = FUN_00491118(DAT_00508894,param_1,param_2,0,3,1,1); - break; - case 0x18: - puVar3 = FUN_00490974(param_2 + 1,(undefined1 *)&local_c); - puVar3 = FUN_00490944(puVar3,(undefined1 *)&local_6); - puVar3[local_6] = 0; - if ((local_c == 1) || (local_c == 2)) { - FUN_004d771c(s__d___s_005088c9); - puVar3 = FUN_00490764(param_2,0); - FUN_00490774(puVar3,CONCAT22((short)((uint)puVar3 >> 0x10),local_6)); - uVar5 = FUN_00491118(DAT_00508894,param_1,param_2,0,3,1,1); - } - else { - FUN_004d771c(s_i860_error___attempt_to_fputbloc_005088d0); - uVar5 = 0; - } - break; - case 0x20: - pcVar4 = FUN_00490944(param_2 + 1,(undefined1 *)&local_6); - pcVar4[local_6] = '\0'; - pcVar4 = (char *)FUN_004dee74(pcVar4); - iVar1 = FUN_004d4a78(pcVar4); - local_6 = (short)iVar1; - puVar3 = FUN_00490764(param_2,0); - puVar2 = (undefined4 *)FUN_00490774(puVar3,CONCAT22((short)((uint)puVar3 >> 0x10),local_6)); - FUN_0049086c(puVar2,(undefined4 *)pcVar4,(int)local_6); - uVar5 = FUN_00491118(DAT_00508894,param_1,param_2,0,(int)local_6 + 3,1,1); - break; - case 0x23: - FUN_004d771c(s_i860_has_unexpectedly_exited_0050892e); - FUN_004dee24(9); - uVar5 = 0; - break; - case 0x28: - iVar1 = FUN_004d4a78(s_VelociRender_005088bc); - local_6 = (short)iVar1; - puVar3 = FUN_00490754(param_2,0); - puVar2 = (undefined4 *)FUN_00490774(puVar3,CONCAT22((short)((uint)puVar3 >> 0x10),local_6)); - FUN_0049086c(puVar2,(undefined4 *)s_VelociRender_005088bc,(int)local_6); - uVar5 = FUN_00491118(DAT_00508894,param_1,param_2,0,(int)local_6 + 3,1,1); - break; - case 0x2a: - puVar3 = FUN_00490754(param_2,0); - puVar3 = FUN_00490754(puVar3,0xf); - puVar3 = FUN_00490754(puVar3,1); - puVar3 = FUN_00490754(puVar3,1); - FUN_00490754(puVar3,1); - uVar5 = FUN_00491118(DAT_00508894,param_1,param_2,0,5,1,1); - } - return uVar5; -} - - - -/* @00492150 file=? name=FUN_00492150 */ - -void FUN_00492150(void) - -{ - byte *pbVar1; - int iVar2; - undefined8 uVar3; - uint local_c; - int local_8; - - while( true ) { - pbVar1 = DAT_00524ad4; - if (DAT_00508884 != 0) { - return; - } - uVar3 = FUN_00491380(DAT_00508894,4); - if ((int)uVar3 == 0) break; - iVar2 = FUN_00491294((int)DAT_00508894,&local_c,(undefined4 *)pbVar1,(uint *)&DAT_00508884, - &local_8); - if (iVar2 == 0) { - FUN_004d771c(s____ERROR___rcv_protocol_fail_dur_0050897c); - FUN_004dee24(9); - } - if (local_8 != 0) { - DAT_00508884 = 0; - iVar2 = FUN_00491df4(local_c,pbVar1); - if (iVar2 == 0) { - FUN_004d771c(s____ERROR___iserver_transaction_f_005089bc); - FUN_004dee24(9); - } - } - } - return; -} - - - -/* @004921ec file=? name=FUN_004921ec */ - -undefined4 __cdecl FUN_004921ec(undefined4 *param_1,uint *param_2) - -{ - byte *pbVar1; - int iVar2; - uint uVar3; - int local_c; - uint local_8; - - pbVar1 = DAT_00524ad4; - local_c = 1; - FUN_00492150(); - if (DAT_00508884 == 0) { - do { - iVar2 = FUN_00491294(DAT_00508894,&local_8,(undefined4 *)pbVar1,&DAT_00508884,&local_c); - if (iVar2 == 0) { - FUN_004d771c(s____ERROR___velocirender_receive_t_005089f8); - return 0; - } - if ((local_c != 0) && (iVar2 = FUN_00491df4(local_8,pbVar1), iVar2 == 0)) { - FUN_004d771c(s____ERROR___velocirender_receive_f_00508a35); - return 0; - } - } while (local_c != 0); - uVar3 = DAT_00508884 & 0xff; - *param_2 = uVar3; - DAT_00508884 = 0; - if (uVar3 < 8) { - FUN_004d771c(s____ERROR___velocirender_received_00508a77); - FUN_004dee24(9); - } - *param_1 = *(undefined4 *)pbVar1; - } - else { - *param_1 = *(undefined4 *)pbVar1; - *param_2 = DAT_00508884 & 0xff; - DAT_00508884 = 0; - } - return 1; -} - - - -/* @004922e0 file=? name=FUN_004922e0 */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -undefined4 __thiscall -FUN_004922e0(void *this,int *param_1,undefined4 *param_2,uint *param_3,uint param_4) - -{ - int iVar1; - int iVar2; - void *local_8; - - iVar1 = DAT_00524ad4; - _DAT_00508890 = _DAT_00508890 + 1; - local_8 = this; - do { - iVar2 = FUN_004921ec(param_1,(uint *)&local_8); - if (iVar2 == 0) { - return 0; - } - if (*param_1 == 9) { - if (DAT_00508880 == 0) { - FUN_004d4918((undefined4 *)&DAT_00524a94,(undefined4 *)(iVar1 + 4),(uint)local_8); - FUN_00491d08((uint *)&DAT_00524a94); - DAT_00508880 = 1; - } - else { - FUN_004d771c(s_dpl_internal_error___2_frame_ack_00508aa7); - FUN_004dee24(9); - } - } - } while (*param_1 == 9); - DAT_005088a4 = 0; - local_8 = (void *)((int)local_8 - 4); - if ((int)param_4 < (int)local_8) { - FUN_004d771c(s____ERROR___Message_too_long___d__00508ad4); - FUN_004d4918(param_2,(undefined4 *)(iVar1 + 4),param_4); - *param_3 = param_4; - } - else { - FUN_004d4918(param_2,(undefined4 *)(iVar1 + 4),(uint)local_8); - *param_3 = (uint)local_8; - } - return 1; -} - - - -/* @004923cc file=? name=FUN_004923cc */ - -undefined4 __cdecl FUN_004923cc(int param_1) - -{ - int *piVar1; - int iVar2; - uint local_c; - int local_8; - - piVar1 = DAT_00524ad4; - if (DAT_00508880 != 0) { - return 1; - } - FUN_00492150(); - if (DAT_00508884 == 0) { - if (param_1 == 0) { - return 0; - } - iVar2 = FUN_004921ec(&local_8,&local_c); - if (iVar2 == 0) { - FUN_004d771c(s_velocirender_input_failed_in_vr__00508b6c); - FUN_004dee24(9); - } - if (local_8 == 9) { - FUN_004d4918((undefined4 *)&DAT_00524a94,piVar1 + 1,local_c); - FUN_00491d08((uint *)&DAT_00524a94); - DAT_00508880 = 1; - DAT_00508884 = 0; - return 1; - } - if (local_8 == 0x1f) { - FUN_004d771c(s_flush_artic___00508b96); - } - FUN_004d771c(s_dpl_error___unsolicited_input_du_00508ba5); - iVar2 = 0; - if (0 < (int)local_c) { - do { - FUN_004d771c(s_0x_x_00508be0); - iVar2 = iVar2 + 1; - } while (iVar2 < (int)local_c); - } - FUN_004dee24(9); - } - else { - local_8 = *piVar1; - if (local_8 == 9) { - FUN_004d4918((undefined4 *)&DAT_00524a94,piVar1 + 1,DAT_00508884); - FUN_00491d08((uint *)&DAT_00524a94); - DAT_00508880 = 1; - DAT_00508884 = 0; - return 1; - } - FUN_004d771c(s_dpl_error___unsolicited_input_du_00508b1c); - if (local_8 == 0x1f) { - FUN_004d771c(s_flush_artic___00508b56); - } - for (iVar2 = 0; iVar2 < (int)DAT_00508884; iVar2 = iVar2 + 1) { - FUN_004d771c(s_0x_x_00508b65); - } - FUN_004dee24(9); - } - return 0; -} - - - -/* @00492580 file=? name=FUN_00492580 */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -undefined4 __cdecl FUN_00492580(int param_1,byte *param_2,uint param_3,int param_4) - -{ - int iVar1; - - FUN_00492150(); - DAT_005088a4 = DAT_005088a4 + 1; - if (param_1 == 9) { - if (DAT_00508880 == 0) { - FUN_004923cc(1); - } - DAT_00508880 = 0; - DAT_005088a0 = -1; - } - DAT_005088a0 = DAT_005088a0 + 1; - _DAT_0050888c = _DAT_0050888c + 1; - if ((param_4 == 0) && (DAT_00508568 == 0)) { - iVar1 = 0; - } - else { - iVar1 = 1; - } - iVar1 = FUN_00491118(DAT_00508894,0xff,param_2,param_1,param_3,0,iVar1); - if (iVar1 == 0) { - FUN_004d771c(s____ERROR___send_protocol_failed_d_00508be7); - FUN_004dee24(9); - } - return 1; -} - - - -/* @00492624 file=? name=FUN_00492624 */ - -undefined4 __cdecl FUN_00492624(int param_1,byte *param_2,uint param_3) - -{ - int iVar1; - undefined4 uVar2; - - while( true ) { - if ((int)param_3 < 0x1fd) { - if ((param_3 == 0) || (iVar1 = FUN_00492580(param_1,param_2,param_3,1), iVar1 != 0)) { - uVar2 = 1; - } - else { - uVar2 = 0; - } - return uVar2; - } - iVar1 = FUN_00492580(param_1,param_2,0x1fc,1); - if (iVar1 == 0) break; - param_3 = param_3 - 0x1fc; - param_2 = param_2 + 0x1fc; - } - return 0; -} - - - -/* @00492680 file=? name=FUN_00492680 */ - -undefined4 __cdecl FUN_00492680(LPCSTR param_1) - -{ - int *piVar1; - undefined4 uVar2; - uint uVar3; - int iVar4; - - FUN_00491380(DAT_00508894,0); - piVar1 = FUN_004d6f54(param_1,&DAT_00508c2d); - if (piVar1 == (int *)0x0) { - FUN_004d771c(s_Couldnt_open__s_00508c30); - uVar2 = 0; - } - else { - uVar3 = FUN_004d71e0((char *)DAT_00524b0c,1,0x800,piVar1); - while (uVar3 == 0x800) { - iVar4 = FUN_00491118(DAT_00508894,0xff,DAT_00524b0c,0,0x800,0,1); - if (iVar4 == 0) { - FUN_004d6b08(piVar1); - return 0; - } - uVar3 = FUN_004d71e0((char *)DAT_00524b0c,1,0x800,piVar1); - } - FUN_004d6b08(piVar1); - if ((uVar3 == 0) || - (iVar4 = FUN_00491118(DAT_00508894,0xff,DAT_00524b0c,0,uVar3,0,1), iVar4 != 0)) { - uVar2 = 1; - } - else { - uVar2 = 0; - } - } - return uVar2; -} - - - -/* @0049276c file=? name=FUN_0049276c */ - -void __cdecl FUN_0049276c(int param_1) - -{ - int iVar1; - int iVar2; - int iVar3; - - iVar1 = FUN_004dfd90(); - iVar3 = 0; - if (0 < param_1) { - do { - do { - iVar2 = FUN_004dfd90(); - } while (iVar1 == iVar2); - iVar1 = FUN_004dfd90(); - iVar3 = iVar3 + 1; - } while (iVar3 < param_1); - } - return; -} - - - -/* @0049279c file=? name=FUN_0049279c */ - -void __cdecl FUN_0049279c(byte *param_1) - -{ - int iVar1; - - iVar1 = FUN_004d4a78((char *)param_1); - FUN_00492580(0x15,param_1,iVar1 + 1,1); - return; -} - - - -/* @004927bc file=? name=FUN_004927bc */ - -void __cdecl FUN_004927bc(int *param_1,uint param_2,int param_3) - -{ - byte *pbVar1; - uint uVar2; - - pbVar1 = DAT_00524b0c; - while( true ) { - if ((int)param_2 < 0x801) { - if (param_2 != 0) { - uVar2 = FUN_004d71e0((char *)pbVar1,1,param_2,param_1); - if (param_2 == uVar2) { - FUN_00492624(param_3,pbVar1,uVar2); - } - else { - FUN_004d771c(s_i860_MNG_file_error__file_corrup_00508c72); - } - } - return; - } - uVar2 = FUN_004d71e0((char *)pbVar1,1,0x800,param_1); - if (uVar2 != 0x800) break; - FUN_00492624(param_3,pbVar1,0x800); - param_2 = param_2 - 0x800; - } - FUN_004d771c(s_i860_MNG_file_error__file_corrup_00508c41); - return; -} - - - -/* @00492844 file=? name=FUN_00492844 */ - -undefined4 __cdecl FUN_00492844(LPCSTR param_1,byte *param_2) - -{ - byte *pbVar1; - int *piVar2; - undefined1 *puVar3; - undefined4 uVar4; - undefined8 uVar5; - undefined1 local_20 [4]; - undefined1 local_1c [4]; - undefined1 local_18 [4]; - undefined1 local_14 [4]; - uint local_10; - uint local_c; - uint local_8; - - pbVar1 = DAT_00524b0c; - FUN_0049279c(param_2); - piVar2 = FUN_004d6f54(param_1,&DAT_00508ca3); - if (piVar2 == (int *)0x0) { - uVar4 = FUN_004d771c(s_Couldnt_open_i860_file__s_00508ca6); - } - else { - FUN_004d71e0((char *)pbVar1,7,4,piVar2); - FUN_00492580(0x12,pbVar1,0x28,1); - puVar3 = FUN_00490974(pbVar1,(undefined1 *)&local_8); - puVar3 = FUN_00490974(puVar3,(undefined1 *)&local_c); - puVar3 = FUN_00490974(puVar3,(undefined1 *)&local_10); - puVar3 = FUN_00490974(puVar3,local_14); - puVar3 = FUN_00490974(puVar3,local_18); - puVar3 = FUN_00490974(puVar3,local_1c); - FUN_00490974(puVar3,local_20); - FUN_004927bc(piVar2,local_8,0x12); - FUN_004927bc(piVar2,local_c,0x13); - FUN_004927bc(piVar2,local_10,0x14); - FUN_004d6b08(piVar2); - uVar5 = FUN_00491380(DAT_00508894,2); - uVar4 = (undefined4)uVar5; - } - return uVar4; -} - - - -/* @0049295c file=? name=FUN_0049295c */ - -undefined4 __fastcall FUN_0049295c(undefined4 param_1) - -{ - int iVar1; - byte *pbVar2; - - iVar1 = FUN_004dee74(s_TRANSPUTER_00508cc1); - if (iVar1 == 0) { - return 0x150; - } - pbVar2 = &DAT_00508cd7; - iVar1 = FUN_004dee74(s_TRANSPUTER_00508ccc); - iVar1 = FUN_004d7f84(iVar1,pbVar2); - if (iVar1 == 1) { - return param_1; - } - return 0x150; -} - - - -/* @004929a8 file=? name=FUN_004929a8 */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -undefined8 __cdecl FUN_004929a8(LPCSTR param_1,int param_2,LPCSTR param_3,undefined4 param_4) - -{ - int iVar1; - undefined8 uVar2; - void *this; - undefined4 local_c; - uint local_8; - - FUN_00490ab8(); - DAT_00524ad4 = FUN_00452c38(0x800); - _DAT_00524b10 = FUN_00452c38(0x800); - this = (void *)0x800; - DAT_00524b0c = FUN_00452c38(0x800); - DAT_00508894 = FUN_004913f0(this,param_4); - FUN_00491380(DAT_00508894,3); - FUN_00492680(param_1); - FUN_00491380(DAT_00508894,1); - iVar1 = FUN_004921ec(&local_c,&local_8); - if (iVar1 == 0) { - FUN_004d771c(s_velocirender_input_failed_in_sta_00508cda); - FUN_004dee24(9); - } - if (param_2 != 0) { - FUN_004d771c(s_HSP_____get_outta_here__s_00508d0b); - FUN_004d6b9c((int *)&DAT_0051f818); - } - if (param_3 != (LPCSTR)0x0) { - FUN_00492844(param_3,(byte *)s_i860_50MHz_and_kicking_00508d27); - } - uVar2 = FUN_00491380(DAT_00508894,2); - return uVar2; -} - - - -/* @00492a90 file=? name=FUN_00492a90 */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -void FUN_00492a90(void) - -{ - DAT_00508880 = 1; - DAT_00508884 = 0; - _DAT_00508888 = 0; - _DAT_0050888c = 0; - _DAT_00508890 = 0; - DAT_00508894 = 0; - DAT_005088a4 = 0; - DAT_00508898 = 0; - _DAT_0050889c = 0; - DAT_005088a0 = 0; - return; -} - - - -/* @00492adc file=? name=FUN_00492adc */ - -void FUN_00492adc(void) - -{ - FUN_0049517c(); - FUN_00496558(); - FUN_00496600(); - FUN_00498c68(); - FUN_00499b48(); - FUN_0049a2d4(); - FUN_004987a4(); - FUN_004991f8(); - FUN_00497924(); - FUN_00496d10(); - FUN_00496664(); - FUN_0049a3a8(); - return; -} - - - -/* @00492b20 file=? name=FUN_00492b20 */ - -void __cdecl FUN_00492b20(undefined4 *param_1) - -{ - uint uVar1; - uint uVar2; - - uVar1 = param_1[9]; - if (uVar1 != param_1[3]) { - if (((undefined4 *)param_1[7] != (undefined4 *)param_1[6]) && (uVar1 != 0)) { - FUN_004d493c((undefined4 *)param_1[6],(undefined4 *)param_1[7],uVar1); - } - param_1[5] = param_1[5] + (param_1[8] - uVar1); - uVar2 = FUN_004d71e0((char *)(param_1[6] + uVar1),1,param_1[3] - uVar1,(int *)*param_1); - if (uVar2 == 0) { - param_1[2] = 1; - FUN_0049a300(1,s_failed_to_read_from_file_descrip_00508d85); - } - param_1[9] = param_1[9] + uVar2; - param_1[8] = uVar1 + uVar2; - param_1[7] = param_1[6]; - } - return; -} - - - -/* @00492ba0 file=? name=FUN_00492ba0 */ - -uint __cdecl FUN_00492ba0(undefined4 *param_1,uint param_2) - -{ - int iVar1; - int iVar2; - - if ((uint)param_1[9] < param_2) { - iVar1 = param_1[9]; - iVar2 = FUN_004d7270((int *)*param_1,param_2 - iVar1,1); - if (iVar2 == 0) { - param_1[5] = param_1[5] + (param_2 - iVar1) + param_1[8]; - param_1[8] = 0; - param_1[9] = 0; - } - else { - param_1[2] = 1; - FUN_0049a300(1,s_failed_to_move_file_position_for_00508daf); - param_2 = 0; - } - } - else { - param_1[9] = param_1[9] - param_2; - param_1[7] = param_1[7] + param_2; - } - return param_2; -} - - - -/* @00492c0c file=? name=FUN_00492c0c */ - -uint __cdecl FUN_00492c0c(undefined4 *param_1,uint param_2) - -{ - uint uVar1; - int iVar2; - - uVar1 = param_1[5]; - if ((param_2 < uVar1) || ((uint)param_1[8] < param_2 - uVar1)) { - iVar2 = FUN_004d7270((int *)*param_1,param_2,0); - if (iVar2 == 0) { - param_1[5] = param_2; - param_1[9] = 0; - } - else { - param_1[2] = 1; - FUN_0049a300(1,s_failed_to_move_file_position_for_00508de6); - param_2 = 0; - } - } - else { - param_1[7] = param_1[6] + (param_2 - uVar1); - param_1[9] = param_1[8] - (param_2 - uVar1); - } - return param_2; -} - - - -/* @00492c84 file=? name=FUN_00492c84 */ - -undefined4 __cdecl FUN_00492c84(undefined4 *param_1) - -{ - undefined1 *puVar1; - - if ((int)param_1[9] < 1) { - FUN_00492b20(param_1); - if (param_1[2] != 0) { - return 0; - } - } - param_1[9] = param_1[9] + -1; - puVar1 = (undefined1 *)param_1[7]; - param_1[7] = param_1[7] + 1; - return CONCAT31((int3)((uint)puVar1 >> 8),*puVar1); -} - - - -/* @00492cb4 file=? name=FUN_00492cb4 */ - -undefined4 __cdecl FUN_00492cb4(undefined4 *param_1) - -{ - undefined1 uVar1; - undefined1 *puVar2; - undefined2 uVar3; - undefined2 local_6; - - if (((int)param_1[9] < 2) && (FUN_00492b20(param_1), param_1[2] != 0)) { - return 0; - } - if (param_1[1] == 0) { - local_6 = *(undefined2 *)param_1[7]; - uVar3 = (undefined2)((uint)param_1[7] >> 0x10); - param_1[7] = param_1[7] + 2; - } - else { - uVar3 = (undefined2)((uint)&local_6 >> 0x10); - puVar2 = (undefined1 *)param_1[7]; - param_1[7] = param_1[7] + 1; - uVar1 = *puVar2; - puVar2 = (undefined1 *)param_1[7]; - param_1[7] = param_1[7] + 1; - local_6 = CONCAT11(uVar1,*puVar2); - } - param_1[9] = param_1[9] + -2; - return CONCAT22(uVar3,local_6); -} - - - -/* @00492d10 file=? name=FUN_00492d10 */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -float10 __cdecl FUN_00492d10(undefined4 *param_1) - -{ - undefined1 uVar1; - undefined1 uVar2; - undefined1 uVar3; - undefined1 *puVar4; - float local_8; - - if ((3 < (int)param_1[9]) || (FUN_00492b20(param_1), local_8 = _DAT_00492d80, param_1[2] == 0)) { - if (param_1[1] == 0) { - local_8 = *(float *)param_1[7]; - param_1[7] = param_1[7] + 4; - } - else { - puVar4 = (undefined1 *)param_1[7]; - param_1[7] = param_1[7] + 1; - uVar1 = *puVar4; - puVar4 = (undefined1 *)param_1[7]; - param_1[7] = param_1[7] + 1; - uVar2 = *puVar4; - puVar4 = (undefined1 *)param_1[7]; - param_1[7] = param_1[7] + 1; - uVar3 = *puVar4; - puVar4 = (undefined1 *)param_1[7]; - param_1[7] = param_1[7] + 1; - local_8 = (float)CONCAT31(CONCAT21(CONCAT11(uVar1,uVar2),uVar3),*puVar4); - } - param_1[9] = param_1[9] + -4; - } - return (float10)local_8; -} - - - -/* @00492d84 file=? name=FUN_00492d84 */ - -undefined4 __cdecl FUN_00492d84(undefined4 *param_1) - -{ - undefined1 uVar1; - undefined1 uVar2; - undefined1 uVar3; - undefined1 *puVar4; - undefined4 local_8; - - if (((int)param_1[9] < 4) && (FUN_00492b20(param_1), param_1[2] != 0)) { - return 0; - } - if (param_1[1] == 0) { - local_8 = *(undefined4 *)param_1[7]; - param_1[7] = param_1[7] + 4; - } - else { - puVar4 = (undefined1 *)param_1[7]; - param_1[7] = param_1[7] + 1; - uVar1 = *puVar4; - puVar4 = (undefined1 *)param_1[7]; - param_1[7] = param_1[7] + 1; - uVar2 = *puVar4; - puVar4 = (undefined1 *)param_1[7]; - param_1[7] = param_1[7] + 1; - uVar3 = *puVar4; - puVar4 = (undefined1 *)param_1[7]; - param_1[7] = param_1[7] + 1; - local_8 = CONCAT31(CONCAT21(CONCAT11(uVar1,uVar2),uVar3),*puVar4); - } - param_1[9] = param_1[9] + -4; - return local_8; -} - - - -/* @00492df0 file=? name=FUN_00492df0 */ - -undefined4 __cdecl FUN_00492df0(undefined4 *param_1,char *param_2,int param_3) - -{ - char *pcVar1; - uint uVar2; - uint uVar3; - - uVar3 = param_3 * 4; - if (param_1[1] == 0) { - uVar2 = param_1[9]; - if (uVar2 < uVar3) { - if (uVar2 != 0) { - FUN_004d4918((undefined4 *)param_2,(undefined4 *)param_1[7],uVar2); - param_2 = param_2 + uVar2; - uVar3 = uVar3 - uVar2; - param_1[9] = 0; - } - if ((uint)param_1[3] < uVar3) { - uVar2 = FUN_004d71e0(param_2,1,uVar3,(int *)*param_1); - if (uVar3 != uVar2) { - return 0; - } - param_1[5] = param_1[5] + uVar3 + param_1[8]; - param_1[8] = 0; - } - else { - FUN_00492b20(param_1); - if (param_1[2] != 0) { - return 0; - } - FUN_004d4918((undefined4 *)param_2,(undefined4 *)param_1[7],uVar3); - param_1[7] = param_1[7] + uVar3; - param_1[9] = param_1[9] - uVar3; - } - } - else { - FUN_004d4918((undefined4 *)param_2,(undefined4 *)param_1[7],uVar3); - param_1[7] = param_1[7] + uVar3; - param_1[9] = param_1[9] + param_3 * -4; - } - } - else { - while (param_3 != 0) { - if (((int)param_1[9] < 4) && (FUN_00492b20(param_1), param_1[2] != 0)) { - return 0; - } - pcVar1 = (char *)param_1[7]; - param_1[7] = param_1[7] + 1; - param_2[3] = *pcVar1; - pcVar1 = (char *)param_1[7]; - param_1[7] = param_1[7] + 1; - param_2[2] = *pcVar1; - pcVar1 = (char *)param_1[7]; - param_1[7] = param_1[7] + 1; - param_2[1] = *pcVar1; - pcVar1 = (char *)param_1[7]; - param_1[7] = param_1[7] + 1; - *param_2 = *pcVar1; - param_1[9] = param_1[9] + -4; - param_2 = param_2 + 4; - param_3 = param_3 + -1; - } - } - return 1; -} - - - -/* @00492f10 file=? name=FUN_00492f10 */ - -undefined4 __cdecl FUN_00492f10(undefined4 *param_1,char *param_2,uint param_3) - -{ - uint uVar1; - - uVar1 = param_1[9]; - if (uVar1 < param_3) { - if (uVar1 != 0) { - FUN_004d4918((undefined4 *)param_2,(undefined4 *)param_1[7],uVar1); - param_2 = param_2 + uVar1; - param_3 = param_3 - uVar1; - param_1[9] = 0; - } - if ((uint)param_1[3] < param_3) { - uVar1 = FUN_004d71e0(param_2,1,param_3,(int *)*param_1); - if (param_3 != uVar1) { - return 0; - } - param_1[5] = param_1[5] + param_3 + param_1[8]; - param_1[8] = 0; - } - else { - FUN_00492b20(param_1); - if (param_1[2] != 0) { - return 0; - } - FUN_004d4918((undefined4 *)param_2,(undefined4 *)param_1[7],param_3); - param_1[7] = param_1[7] + param_3; - param_1[9] = param_1[9] - param_3; - } - } - else { - FUN_004d4918((undefined4 *)param_2,(undefined4 *)param_1[7],param_3); - param_1[7] = param_1[7] + param_3; - param_1[9] = param_1[9] - param_3; - } - return 1; -} - - - -/* @00492fc4 file=? name=FUN_00492fc4 */ - -undefined4 __cdecl FUN_00492fc4(undefined4 *param_1,int *param_2,uint *param_3,uint param_4) - -{ - uint local_c; - int *local_8; - - if ((int)param_4 < (int)*param_3) { - FUN_00492f10(param_1,(char *)*param_2,param_4); - *(undefined1 *)(*param_2 + param_4) = 0; - } - else { - if ((int)param_4 < 0x100) { - local_c = 0x100; - } - else { - local_c = param_4 + 1; - } - if (*param_3 == 0) { - local_8 = FUN_004de55c(local_c); - } - else { - local_8 = FUN_004de760((int *)*param_2,local_c); - } - if (local_8 == (int *)0x0) { - if ((char *)*param_2 == (char *)0x0) { - return 0; - } - FUN_00492f10(param_1,(char *)*param_2,*param_3); - FUN_00492ba0(param_1,param_4 - *param_3); - *(undefined1 *)(*param_2 + -1 + *param_3) = 0; - } - else { - *param_2 = (int)local_8; - *param_3 = local_c; - FUN_00492f10(param_1,(char *)local_8,param_4); - *(undefined1 *)((int)local_8 + param_4) = 0; - } - } - return 1; -} - - - -/* @0049309c file=? name=FUN_0049309c */ - -void __cdecl FUN_0049309c(undefined4 *param_1,undefined4 *param_2) - -{ - *param_2 = 0; - if ((int *)*param_1 != (int *)0x0) { - FUN_004de420((int *)*param_1); - *param_1 = 0; - } - return; -} - - - -/* @004930c0 file=? name=FUN_004930c0 */ - -int * __cdecl FUN_004930c0(LPCSTR param_1,uint param_2,int *param_3,int param_4) - -{ - int *piVar1; - int *piVar2; - - while (piVar1 = FUN_004d6f54(param_1,&DAT_00508e1d), piVar1 == (int *)0x0) { - if (DAT_00520bcc != 0x27) { - return (int *)0x0; - } - } - piVar2 = FUN_004de2bc(1,0x34); - if (piVar2 == (int *)0x0) { - FUN_004d6b08(piVar1); - return (int *)0x0; - } - if ((param_3 == (int *)0x0) || (param_2 < 0x400)) { - if (param_2 < 0x400) { - param_2 = 0x400; - } - param_3 = FUN_004de55c(param_2); - if (param_3 == (int *)0x0) { - FUN_004d6b08(piVar1); - FUN_004de420(piVar2); - return (int *)0x0; - } - piVar2[4] = 1; - } - *piVar2 = (int)piVar1; - piVar2[6] = (int)param_3; - piVar2[3] = param_2; - *(undefined1 *)(piVar2 + 1) = 1; - piVar2[1] = piVar2[1] & 1; - piVar2[1] = piVar2[1] ^ (uint)(param_4 != 0); - return piVar2; -} - - - -/* @00493188 file=? name=FUN_00493188 */ - -void __cdecl FUN_00493188(int *param_1) - -{ - int iVar1; - - iVar1 = FUN_004d6b08((int *)*param_1); - if (iVar1 != 0) { - FUN_0049a300(1,s_failed_to_close_file_descriptor_0_00508e20); - } - if (param_1[4] != 0) { - FUN_004de420((int *)param_1[6]); - } - FUN_004de420(param_1); - return; -} - - - -/* @004931c8 file=? name=FUN_004931c8 */ - -void __cdecl FUN_004931c8(undefined1 *param_1,uint param_2) - -{ - undefined1 uVar1; - uint uVar2; - - uVar2 = 0; - if (param_2 != 0) { - do { - uVar1 = *param_1; - *param_1 = param_1[3]; - param_1[3] = uVar1; - uVar1 = param_1[1]; - param_1[1] = param_1[2]; - param_1[2] = uVar1; - param_1 = param_1 + 4; - uVar2 = uVar2 + 1; - } while (uVar2 < param_2); - } - return; -} - - - -/* @004931fc file=? name=FUN_004931fc */ - -void * __thiscall FUN_004931fc(void *this,undefined4 *param_1,uint *param_2,uint *param_3) - -{ - uint uVar1; - uint uVar2; - uint uVar3; - void *local_8; - - uVar3 = 0; - uVar1 = FUN_00492cb4(param_1); - uVar2 = (int)(uVar1 & 0xffff) >> 0xc & 0xc; - if (uVar2 == 0) { - uVar3 = FUN_00492c84(param_1); - uVar3 = uVar3 & 0xff; - local_8 = (void *)0x3; - } - else if (uVar2 == 4) { - uVar3 = FUN_00492cb4(param_1); - uVar3 = uVar3 & 0xffff; - local_8 = (void *)0x4; - } - else if (uVar2 == 8) { - uVar3 = FUN_00492d84(param_1); - local_8 = (void *)0x6; - } - else { - FUN_0049a300(1,s_dpl_bgfRead_got_unrecognised_blo_00508ee8); - param_1[2] = 1; - local_8 = this; - } - *param_2 = uVar1 & 0x3fff; - *param_3 = uVar3; - return local_8; -} - - - -/* @004932a4 file=? name=FUN_004932a4 */ - -undefined4 __thiscall FUN_004932a4(void *this,undefined4 *param_1,int param_2) - -{ - int iVar1; - undefined4 uVar2; - undefined4 *extraout_ECX; - undefined4 *extraout_ECX_00; - undefined4 *extraout_ECX_01; - undefined4 *extraout_ECX_02; - undefined4 *extraout_ECX_03; - undefined4 *extraout_ECX_04; - int iVar3; - float10 fVar4; - float local_10; - uint local_c; - uint local_8; - - iVar3 = 0; - local_10 = 0.0254; - do { - if ((param_1[2] != 0) || (param_2 <= iVar3)) { - param_1[10] = local_10 * (float)param_1[10]; - return 1; - } - iVar1 = FUN_004931fc(this,param_1,&local_8,&local_c); - if (param_1[2] != 0) { - return 0; - } - this = param_1; - if ((int)local_8 < 0x2006) { - if (local_8 == 0x2005) { - fVar4 = FUN_00492d10(param_1); - param_1[10] = (float)fVar4; - } - else if ((int)local_8 < 0x2003) { - if (local_8 == 0x2002) { - FUN_00492ba0(param_1,local_c); - this = extraout_ECX; - } - else if ((local_8 == 0) || (local_8 == 0x2000)) { - FUN_00492ba0(param_1,local_c); - this = extraout_ECX_03; - } - else { -LAB_00493446: - FUN_0049a300(1,s_dpl_bgfRead_got_unrecognized_blo_00508fa5); - FUN_00492ba0(param_1,local_c); - this = extraout_ECX_04; - } - } - else if (local_8 == 0x2003) { - FUN_00492ba0(param_1,local_c); - this = extraout_ECX_00; - } - else { - if (local_8 != 0x2004) goto LAB_00493446; - FUN_00492ba0(param_1,local_c); - this = extraout_ECX_01; - } - } - else if (local_8 == 0x2006) { - uVar2 = FUN_00492c84(param_1); - *(char *)(param_1 + 0xb) = (char)uVar2; - if (*(char *)(param_1 + 0xb) != '\0') { - FUN_0049a300(1,s_dpl_bgfRead_cannot_process_doubl_00508f18); - param_1[2] = 1; - return 0; - } - } - else if (local_8 == 0x2007) { - uVar2 = FUN_00492c84(param_1); - if ((char)uVar2 != '\0') { - FUN_0049a300(1,s_dpl_bgfRead___file_is_not_a_geom_00508f4b); - param_1[2] = 1; - return 0; - } - } - else if (local_8 == 0x2009) { - uVar2 = FUN_00492c84(param_1); - if ((char)uVar2 == '\0') { - local_10 = 0.0254; - } - else { - if ((char)uVar2 != '\x01') { - FUN_0049a300(1,s_dpl_bgfRead_got_unrecognized_uni_00508f76); - param_1[2] = 1; - return 0; - } - local_10 = 1.0; - } - } - else { - if (local_8 != 0x2037) goto LAB_00493446; - FUN_00492ba0(param_1,local_c); - this = extraout_ECX_02; - } - iVar3 = iVar3 + iVar1 + local_c; - } while( true ); -} - - - -/* @0049348c file=? name=FUN_0049348c */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -undefined4 __cdecl -FUN_0049348c(undefined4 *param_1,int param_2,int param_3,uint param_4,uint param_5) - -{ - float fVar1; - bool bVar2; - int iVar3; - int iVar4; - float *pfVar5; - float *pfVar6; - uint uVar7; - int iVar8; - int iVar9; - int local_14; - int local_8; - - local_8 = 3; - bVar2 = false; - uVar7 = 1; - if (param_4 == 0x49) { - uVar7 = 0x41; - local_8 = 4; - bVar2 = true; - } - else { - if ((param_4 & 0x1f) != (int)*(char *)(param_3 + 0xc)) { - FUN_0049a300(1,s_dpl_bgfRead_got_vertices_of_inco_00508fdb); - FUN_00492ba0(param_1,param_5); - return 0; - } - if ((param_4 & 1) != 0) { - uVar7 = 3; - local_8 = 6; - } - if ((param_4 & 2) != 0) { - uVar7 = uVar7 | 4; - local_8 = local_8 + 4; - } - if ((param_4 & 4) != 0) { - uVar7 = uVar7 | 8; - local_8 = local_8 + 2; - } - if ((param_4 & 8) != 0) { - uVar7 = uVar7 | 0x10; - local_8 = local_8 + 2; - } - if ((param_4 & 0x10) != 0) { - uVar7 = uVar7 | 0x20; - local_8 = local_8 + 3; - } - } - iVar3 = local_8 * 4; - iVar4 = (int)param_5 / iVar3; - FUN_0048c910(param_2,uVar7); - FUN_0048cae0(param_2,iVar4); - if ((int)param_1[9] < (int)param_5) { - if ((*(byte *)(param_1 + 7) & 3) != 0) { - FUN_004d493c((undefined4 *)param_1[6],(undefined4 *)param_1[7],param_1[9]); - param_1[7] = param_1[6]; - } - local_14 = 0; - for (; (param_1[2] == 0 && (0 < iVar4)); iVar4 = iVar4 - iVar9) { - if ((int)param_1[9] < iVar3) { - FUN_00492b20(param_1); - } - iVar9 = (int)param_1[9] / iVar3; - if (iVar4 < (int)param_1[9] / iVar3) { - iVar9 = iVar4; - } - if (param_1[1] != 0) { - FUN_004931c8((undefined1 *)param_1[7],iVar9 * local_8); - } - if ((float)param_1[10] != _DAT_0049371c) { - pfVar6 = (float *)param_1[7]; - fVar1 = (float)param_1[10]; - iVar8 = 0; - if (0 < iVar9) { - do { - *pfVar6 = fVar1 * *pfVar6; - pfVar6[1] = fVar1 * pfVar6[1]; - pfVar6[2] = fVar1 * pfVar6[2]; - if (bVar2) { - pfVar6[3] = fVar1 * pfVar6[3]; - } - pfVar6 = pfVar6 + local_8; - iVar8 = iVar8 + 1; - } while (iVar8 < iVar9); - } - } - FUN_0048cc48(param_2,(byte *)param_1[7],local_14,iVar9); - FUN_00492ba0(param_1,iVar9 * iVar3); - local_14 = local_14 + iVar9; - } - if (0 < iVar4) { - FUN_0049a300(1,s_dpl_bgfRead_failed_to_read_in_al_00509022); - } - } - else { - if ((*(byte *)(param_1 + 7) & 3) == 0) { - pfVar6 = (float *)param_1[7]; - } - else { - FUN_004d493c((undefined4 *)param_1[6],(undefined4 *)param_1[7],param_5); - pfVar6 = (float *)param_1[6]; - } - if (param_1[1] != 0) { - FUN_004931c8((undefined1 *)pfVar6,iVar4 * local_8); - } - if ((float)param_1[10] != _DAT_0049371c) { - fVar1 = (float)param_1[10]; - iVar3 = 0; - pfVar5 = pfVar6; - if (0 < iVar4) { - do { - *pfVar5 = fVar1 * *pfVar5; - pfVar5[1] = fVar1 * pfVar5[1]; - pfVar5[2] = fVar1 * pfVar5[2]; - if (bVar2) { - pfVar5[3] = fVar1 * pfVar5[3]; - } - pfVar5 = pfVar5 + local_8; - iVar3 = iVar3 + 1; - } while (iVar3 < iVar4); - } - } - FUN_0048cc48(param_2,(byte *)pfVar6,0,iVar4); - FUN_00492ba0(param_1,param_5); - } - return 1; -} - - - -/* @00493720 file=? name=FUN_00493720 */ - -undefined4 __cdecl FUN_00493720(undefined4 *param_1,int param_2,int param_3,uint param_4) - -{ - int iVar1; - int iVar2; - int iVar3; - byte *local_10; - - iVar1 = param_3 * 4; - iVar2 = (int)param_4 / iVar1; - if ((int)param_1[9] < (int)param_4) { - if ((*(byte *)(param_1 + 7) & 3) != 0) { - FUN_004d493c((undefined4 *)param_1[6],(undefined4 *)param_1[7],param_1[9]); - param_1[7] = param_1[6]; - } - for (; (param_1[2] == 0 && (0 < iVar2)); iVar2 = iVar2 - iVar3) { - if ((int)param_1[9] < iVar1) { - FUN_00492b20(param_1); - } - iVar3 = (int)param_1[9] / iVar1; - if (iVar2 < (int)param_1[9] / iVar1) { - iVar3 = iVar2; - } - if (param_1[1] != 0) { - FUN_004931c8((undefined1 *)param_1[7],iVar3 * param_3); - } - FUN_0048cd68(param_2,(byte *)param_1[7],iVar3,param_3); - FUN_00492ba0(param_1,iVar3 * iVar1); - } - if (0 < iVar2) { - FUN_0049a300(1,s_dpl_bgfRead_failed_to_read_in_al_00509052); - } - } - else { - if ((*(byte *)(param_1 + 7) & 3) == 0) { - local_10 = (byte *)param_1[7]; - } - else { - FUN_004d493c((undefined4 *)param_1[6],(undefined4 *)param_1[7],param_4); - local_10 = (byte *)param_1[6]; - } - if (param_1[1] != 0) { - FUN_004931c8(local_10,iVar2 * param_3); - } - FUN_0048cd68(param_2,local_10,iVar2,param_3); - FUN_00492ba0(param_1,param_4); - } - return 1; -} - - - -/* @00493854 file=? name=FUN_00493854 */ - -undefined4 __cdecl FUN_00493854(undefined4 *param_1,int param_2,int param_3,uint param_4) - -{ - uint uVar1; - uint uVar2; - undefined4 uVar3; - byte *pbVar4; - int local_c; - - uVar1 = param_4; - if ((int)param_4 < 0) { - uVar1 = param_4 + 3; - } - uVar2 = (int)uVar1 >> 2; - if (param_3 == 3) { - local_c = uVar2 - 2; - } - else { - if (param_3 != 4) { - FUN_0049a300(1,s_dpl_bgfRead_got_unrecognised_typ_00509085); - FUN_00492ba0(param_1,param_4); - return 0; - } - local_c = (int)uVar1 >> 3; - if (local_c < 0) { - local_c = local_c + (uint)((uVar2 & 1) != 0); - } - local_c = local_c + -1; - } - if (local_c < 1) { - FUN_0049a300(1,s_dpl_bgfRead_got_an_invalid_numbe_005090bb); - FUN_00492ba0(param_1,param_4); - uVar3 = 0; - } - else { - if ((uint)param_1[3] < param_4) { - pbVar4 = (byte *)FUN_004de55c(param_4); - if (pbVar4 == (byte *)0x0) { - FUN_0049a300(1,s_dpl_bgfRead_failed_to_allocate_m_005090f8); - FUN_00492ba0(param_1,param_4); - return 0; - } - FUN_00492df0(param_1,(char *)pbVar4,uVar2); - FUN_0048cdac(param_2,pbVar4,local_c,param_3); - FUN_004de420((int *)pbVar4); - } - else { - pbVar4 = (byte *)param_1[6]; - if ((int)param_1[9] < (int)param_4) { - FUN_00492b20(param_1); - } - else if ((*(byte *)(param_1 + 7) & 3) == 0) { - pbVar4 = (byte *)param_1[7]; - } - else { - FUN_004d493c((undefined4 *)param_1[6],(undefined4 *)param_1[7],param_4); - } - if (param_1[1] != 0) { - FUN_004931c8(pbVar4,uVar2); - } - FUN_0048cdac(param_2,pbVar4,local_c,param_3); - FUN_00492ba0(param_1,param_4); - } - if (param_1[2] == 0) { - uVar3 = 1; - } - else { - uVar3 = 0; - } - } - return uVar3; -} - - - -/* @004939b8 file=? name=FUN_004939b8 */ - -undefined4 __thiscall -FUN_004939b8(void *this,undefined4 *param_1,int param_2,int param_3,int param_4) - -{ - bool bVar1; - int iVar2; - void *extraout_ECX; - void *extraout_ECX_00; - void *extraout_ECX_01; - void *extraout_ECX_02; - int iVar3; - uint local_c; - uint local_8; - - bVar1 = false; - for (iVar3 = 0; (param_1[2] == 0 && (iVar3 < param_4)); iVar3 = iVar3 + iVar2 + local_c) { - iVar2 = FUN_004931fc(this,param_1,&local_8,&local_c); - if (param_1[2] != 0) { - return 0; - } - if ((local_8 & 0x80) == 0) { - if ((local_8 == 0) || (local_8 == 0x2000)) { - FUN_00492ba0(param_1,local_c); - this = extraout_ECX_01; - } - else { - FUN_0049a300(1,s_dpl_bgfRead_got_unrecognized_blo_00509167); - FUN_00492ba0(param_1,local_c); - this = extraout_ECX_02; - } - } - else if (bVar1) { - FUN_0049a300(1,s_dpl_bgfRead_vertices_already_def_0050912e); - FUN_00492ba0(param_1,local_c); - this = extraout_ECX_00; - } - else { - FUN_0049348c(param_1,param_2,param_3,local_8,local_c); - bVar1 = true; - this = extraout_ECX; - } - } - return 1; -} - - - -/* @00493a90 file=? name=FUN_00493a90 */ - -undefined4 __thiscall -FUN_00493a90(void *this,undefined4 *param_1,int param_2,int param_3,int param_4) - -{ - bool bVar1; - int iVar2; - undefined4 uVar3; - void *extraout_ECX; - void *extraout_ECX_00; - void *extraout_ECX_01; - void *extraout_ECX_02; - void *extraout_ECX_03; - void *extraout_ECX_04; - void *extraout_ECX_05; - int iVar4; - uint local_c; - uint local_8; - - bVar1 = false; - for (iVar4 = 0; (param_1[2] == 0 && (iVar4 < param_4)); iVar4 = iVar4 + iVar2 + local_c) { - iVar2 = FUN_004931fc(this,param_1,&local_8,&local_c); - if (param_1[2] != 0) { - return 0; - } - if ((local_8 & 0x80) == 0) { - if (local_8 == 0x47) { - FUN_00493720(param_1,param_2,3,local_c); - this = extraout_ECX_01; - } - else if (local_8 == 0x4d) { - uVar3 = FUN_00492c84(param_1); - FUN_00493720(param_1,param_2,(int)(char)uVar3,local_c - 1); - this = extraout_ECX_02; - } - else if (local_8 == 0x4e) { - uVar3 = FUN_00492c84(param_1); - FUN_00493854(param_1,param_2,(int)(char)uVar3,local_c - 1); - this = extraout_ECX_03; - } - else if ((local_8 == 0) || (local_8 == 0x2000)) { - FUN_00492ba0(param_1,local_c); - this = extraout_ECX_04; - } - else { - FUN_0049a300(1,s_dpl_bgfRead_got_unrecognized_blo_005091dd); - FUN_00492ba0(param_1,local_c); - this = extraout_ECX_05; - } - } - else if (bVar1) { - FUN_0049a300(1,s_dpl_bgfRead_vertices_already_def_005091a4); - FUN_00492ba0(param_1,local_c); - this = extraout_ECX_00; - } - else { - FUN_0049348c(param_1,param_2,param_3,local_8,local_c); - bVar1 = true; - this = extraout_ECX; - } - } - return 1; -} - - - -/* @00493bd4 file=? name=FUN_00493bd4 */ - -undefined4 __thiscall -FUN_00493bd4(void *this,undefined4 *param_1,int param_2,int param_3,int param_4) - -{ - bool bVar1; - int iVar2; - undefined4 *extraout_ECX; - undefined4 *extraout_ECX_00; - undefined4 *extraout_ECX_01; - undefined4 *extraout_ECX_02; - int iVar3; - uint local_c; - uint local_8; - - bVar1 = false; - for (iVar3 = 0; (param_1[2] == 0 && (iVar3 < param_4)); iVar3 = iVar3 + iVar2 + local_c) { - iVar2 = FUN_004931fc(this,param_1,&local_8,&local_c); - if (param_1[2] != 0) { - return 0; - } - if ((local_8 & 0x80) == 0) { - if (local_8 == 0x2042) { - this = param_1; - FUN_00492c84(param_1); - } - else if ((local_8 == 0) || (local_8 == 0x2000)) { - FUN_00492ba0(param_1,local_c); - this = extraout_ECX_01; - } - else { - FUN_0049a300(1,s_dpl_bgfRead_got_unrecognized_blo_00509254); - FUN_00492ba0(param_1,local_c); - this = extraout_ECX_02; - } - } - else if (bVar1) { - FUN_0049a300(1,s_dpl_bgfRead_vertices_already_def_0050921b); - FUN_00492ba0(param_1,local_c); - this = extraout_ECX_00; - } - else { - FUN_0049348c(param_1,param_2,param_3,local_8,local_c); - bVar1 = true; - this = extraout_ECX; - } - } - return 1; -} - - - -/* @00493cbc file=? name=FUN_00493cbc */ - -undefined4 __thiscall -FUN_00493cbc(void *this,undefined4 *param_1,int param_2,int param_3,int param_4) - -{ - bool bVar1; - int iVar2; - undefined4 *extraout_ECX; - undefined4 *extraout_ECX_00; - undefined4 *extraout_ECX_01; - undefined4 *extraout_ECX_02; - int iVar3; - uint local_c; - uint local_8; - - bVar1 = false; - for (iVar3 = 0; (param_1[2] == 0 && (iVar3 < param_4)); iVar3 = iVar3 + iVar2 + local_c) { - iVar2 = FUN_004931fc(this,param_1,&local_8,&local_c); - if (param_1[2] != 0) { - return 0; - } - if ((local_8 & 0x80) == 0) { - if (local_8 == 0x2049) { - this = param_1; - FUN_00492d10(param_1); - } - else if ((local_8 == 0) || (local_8 == 0x2000)) { - FUN_00492ba0(param_1,local_c); - this = extraout_ECX_01; - } - else { - FUN_0049a300(1,s_dpl_bgfRead_got_unrecognized_blo_005092cf); - FUN_00492ba0(param_1,local_c); - this = extraout_ECX_02; - } - } - else if (bVar1) { - FUN_0049a300(1,s_dpl_bgfRead_vertices_already_def_00509296); - FUN_00492ba0(param_1,local_c); - this = extraout_ECX_00; - } - else { - FUN_0049348c(param_1,param_2,param_3,local_8,local_c); - bVar1 = true; - this = extraout_ECX; - } - } - return 1; -} - - - -/* @00493da8 file=? name=FUN_00493da8 */ - -undefined4 __thiscall -FUN_00493da8(void *this,undefined4 *param_1,int param_2,int param_3,int param_4) - -{ - bool bVar1; - int iVar2; - undefined4 *extraout_ECX; - undefined4 *extraout_ECX_00; - undefined4 *extraout_ECX_01; - undefined4 *extraout_ECX_02; - int iVar3; - uint local_c; - uint local_8; - - bVar1 = false; - for (iVar3 = 0; (param_1[2] == 0 && (iVar3 < param_4)); iVar3 = iVar3 + iVar2 + local_c) { - iVar2 = FUN_004931fc(this,param_1,&local_8,&local_c); - if (param_1[2] != 0) { - return 0; - } - if (local_8 == 0x49) { - if (bVar1) { - FUN_0049a300(1,s_dpl_bgfRead_vertices_already_def_00509312); - FUN_00492ba0(param_1,local_c); - this = extraout_ECX_00; - } - else { - FUN_0049348c(param_1,param_2,param_3,0x49,local_c); - bVar1 = true; - this = extraout_ECX; - } - } - else { - this = param_1; - if (local_8 == 0x2041) { - FUN_00492cb4(param_1); - } - else if (local_8 == 0x2040) { - FUN_00492cb4(param_1); - } - else if ((local_8 == 0) || (local_8 == 0x2000)) { - FUN_00492ba0(param_1,local_c); - this = extraout_ECX_01; - } - else { - FUN_0049a300(1,s_dpl_bgfRead_got_unrecognized_blo_0050934b); - FUN_00492ba0(param_1,local_c); - this = extraout_ECX_02; - } - } - } - FUN_0048cb44(param_2); - return 1; -} - - - -/* @00493ed0 file=? name=FUN_00493ed0 */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -undefined4 __cdecl FUN_00493ed0(undefined4 *param_1,int param_2,int param_3) - -{ - int iVar1; - float *pfVar2; - int iVar3; - undefined4 *extraout_ECX; - undefined4 *extraout_ECX_00; - undefined4 *extraout_ECX_01; - undefined4 *extraout_ECX_02; - undefined4 *extraout_ECX_03; - undefined4 *extraout_ECX_04; - undefined4 *extraout_ECX_05; - undefined4 *this; - float *pfVar4; - int *piVar5; - float local_34 [3]; - char local_28 [12]; - char local_1c [12]; - float local_10; - uint local_c; - uint local_8; - - pfVar2 = (float *)&DAT_00508eb0; - pfVar4 = local_34; - for (iVar3 = 9; iVar3 != 0; iVar3 = iVar3 + -1) { - *pfVar4 = *pfVar2; - pfVar2 = pfVar2 + 1; - pfVar4 = pfVar4 + 1; - } - iVar3 = 0; - piVar5 = (int *)0x0; - this = (undefined4 *)0x0; - do { - if ((param_1[2] != 0) || (param_3 <= iVar3)) { - if (piVar5 != (int *)0x0) { - if ((float)param_1[10] != _DAT_004940c4) { - local_10 = (float)param_1[10]; - iVar3 = 0; - pfVar2 = local_34; - do { - *pfVar2 = local_10 * *pfVar2; - iVar3 = iVar3 + 1; - pfVar2 = pfVar2 + 1; - } while (iVar3 < 6); - } - FUN_0048c910(param_2,1); - FUN_0048cae0(param_2,3); - FUN_0048cc48(param_2,(byte *)local_34,0,3); - FUN_0048c9c8(param_2,(char *)piVar5); - FUN_004de420(piVar5); - } - return 1; - } - iVar1 = FUN_004931fc(this,param_1,&local_8,&local_c); - if (param_1[2] != 0) { - if (piVar5 != (int *)0x0) { - FUN_004de420(piVar5); - } - return 0; - } - if ((int)local_8 < 0x2044) { - if (local_8 == 0x2043) { - this = param_1; - FUN_00492c84(param_1); - } - else { - if (local_8 != 0) { - if (local_8 == 0x4c) { - if (piVar5 == (int *)0x0) { - FUN_00492df0(param_1,(char *)local_34,3); - piVar5 = FUN_004de55c(local_c - 0xb); - if (piVar5 == (int *)0x0) { - FUN_0049a300(1,s_dpl_bgfRead_failed_to_allocate_m_0050938f); - FUN_00492ba0(param_1,local_c - 0xc); - this = extraout_ECX_01; - } - else { - FUN_00492f10(param_1,(char *)piVar5,local_c - 0xc); - this = extraout_ECX_02; - } - } - else { - FUN_0049a300(1,s_dpl_bgfRead_already_defined_stri_005093cb); - FUN_00492ba0(param_1,local_c); - this = extraout_ECX_03; - } - goto LAB_00494035; - } - if (local_8 != 0x2000) goto LAB_00494015; - } - FUN_00492ba0(param_1,local_c); - this = extraout_ECX_04; - } - } - else if (local_8 == 0x2044) { - FUN_00492df0(param_1,local_28,3); - this = extraout_ECX; - } - else if (local_8 == 0x2045) { - FUN_00492df0(param_1,local_1c,3); - this = extraout_ECX_00; - } - else { -LAB_00494015: - FUN_0049a300(1,s_dpl_bgfRead_got_unrecognized_blo_005093f9); - FUN_00492ba0(param_1,local_c); - this = extraout_ECX_05; - } -LAB_00494035: - iVar3 = iVar3 + iVar1 + local_c; - } while( true ); -} - - - -/* @004940c8 file=? name=FUN_004940c8 */ - -undefined4 __cdecl -FUN_004940c8(undefined4 *param_1,int param_2,int param_3,uint param_4,undefined4 param_5) - -{ - undefined4 *puVar1; - undefined4 uVar2; - void *this; - - puVar1 = (undefined4 *)FUN_00489818(); - if (puVar1 == (undefined4 *)0x0) { - FUN_0049a300(1,s_dpl_bgfRead_failed_to_create_dpl_00509436); - FUN_00492ba0(param_1,param_4); - uVar2 = 0; - } - else { - FUN_0048c8ac((int)puVar1,param_5); - switch(param_5) { - case 2: - case 3: - case 4: - FUN_004939b8(this,param_1,(int)puVar1,param_3,param_4); - break; - case 5: - FUN_00493a90(this,param_1,(int)puVar1,param_3,param_4); - break; - case 6: - FUN_00493ed0(param_1,(int)puVar1,param_4); - break; - case 8: - FUN_00493bd4(this,param_1,(int)puVar1,param_3,param_4); - break; - case 9: - FUN_00493cbc(this,param_1,(int)puVar1,param_3,param_4); - break; - case 10: - FUN_00493da8(this,param_1,(int)puVar1,param_3,param_4); - } - FUN_0048d728(puVar1); - FUN_00489ca4(param_2,(int)puVar1); - if (param_1[2] == 0) { - uVar2 = 1; - } - else { - uVar2 = 0; - } - } - return uVar2; -} - - - -/* @004941e4 file=? name=FUN_004941e4 */ - -undefined4 __cdecl FUN_004941e4(undefined4 *param_1,int param_2,undefined4 *param_3,uint param_4) - -{ - char cVar1; - undefined4 *puVar2; - undefined4 uVar3; - code *pcVar4; - int iVar5; - int iVar6; - undefined4 *extraout_ECX; - undefined4 *extraout_ECX_00; - undefined4 *extraout_ECX_01; - undefined4 *extraout_ECX_02; - undefined4 *extraout_ECX_03; - undefined4 *extraout_ECX_04; - undefined4 *extraout_ECX_05; - undefined4 *extraout_ECX_06; - undefined4 *extraout_ECX_07; - undefined4 *extraout_ECX_08; - undefined4 *extraout_ECX_09; - undefined4 *puVar7; - undefined4 *extraout_ECX_10; - undefined4 local_2c [2]; - undefined1 local_24; - byte local_23; - undefined1 local_22; - undefined1 local_21; - undefined1 local_20; - char local_1f; - int local_1c; - int *local_18; - int local_14; - uint local_10; - uint local_c; - uint local_8; - - puVar2 = local_2c; - for (iVar6 = 5; iVar6 != 0; iVar6 = iVar6 + -1) { - *puVar2 = *param_3; - param_3 = param_3 + 1; - puVar2 = puVar2 + 1; - } - iVar6 = 0; - local_18 = (int *)0x0; - if (DAT_00508ea0 != (char *)0x0) { - *DAT_00508ea0 = '\0'; - } - puVar2 = (undefined4 *)FUN_00489800(); - if (puVar2 == (undefined4 *)0x0) { - FUN_0049a300(1,s_dpl_bgfRead_failed_to_create_dpl_00509461); - FUN_00492ba0(param_1,param_4); - uVar3 = 0; - } - else { - pcVar4 = (code *)FUN_00496614(); - puVar7 = extraout_ECX; - if (pcVar4 != (code *)0x0) { - (*pcVar4)(9,puVar2); - puVar7 = extraout_ECX_00; - } - for (; (param_1[2] == 0 && (iVar6 < (int)param_4)); iVar6 = iVar6 + iVar5 + local_c) { - iVar5 = FUN_004931fc(puVar7,param_1,&local_8,&local_c); - if (param_1[2] != 0) break; - local_14 = 0; - if ((int)local_8 < 0x2009) { - if (local_8 == 0x2008) { - FUN_00492fc4(param_1,(int *)&DAT_00508ea0,(uint *)&DAT_00508ea4,local_c); - puVar7 = extraout_ECX_02; - } - else { - puVar7 = extraout_ECX_01; - if ((int)local_8 < 0x49) { - if (local_8 == 0x48) { - local_14 = 10; - } - else if ((int)local_8 < 0x45) { - if (local_8 == 0x44) { - local_14 = 2; - } - else if (local_8 == 0) { -LAB_0049453e: - FUN_00492ba0(param_1,local_c); - puVar7 = extraout_ECX_08; - } - else { - if (local_8 != 0x43) goto switchD_00494307_caseD_2038; - local_14 = 4; - } - } - else if (local_8 == 0x45) { - local_14 = 3; - } - else if (local_8 == 0x46) { - local_14 = 5; - } - else { -switchD_00494307_caseD_2038: - FUN_0049a300(1,s_dpl_bgfRead_got_unrecognized_blo_005094cf); - FUN_00492ba0(param_1,local_c); - puVar7 = extraout_ECX_09; - } - } - else if (local_8 == 0x4a) { - local_14 = 8; - } - else if (local_8 == 0x4b) { - local_14 = 6; - } - else { - if (local_8 != 0x50) { - if (local_8 == 0x2000) goto LAB_0049453e; - goto switchD_00494307_caseD_2038; - } - local_14 = 9; - } - } - } - else { - puVar7 = param_1; - switch(local_8) { - case 0x2030: - uVar3 = FUN_00492c84(param_1); - cVar1 = (char)uVar3; - if ((cVar1 < '\x01') || ('\x02' < cVar1)) { - local_2c[0] = 0; - } - else if (cVar1 == '\x01') { - FUN_00492fc4(param_1,(int *)&DAT_00508e8c,(uint *)&DAT_00508e98,local_c - 1); - local_2c[0] = FUN_00497678(DAT_00508e8c,0,(int *)0x0); - puVar7 = extraout_ECX_03; - } - else { - local_2c[0] = FUN_00497678(s_DEFAULT_0050948c,0,(int *)0x0); - puVar7 = extraout_ECX_04; - } - break; - case 0x2031: - uVar3 = FUN_00492c84(param_1); - cVar1 = (char)uVar3; - if ((cVar1 < '\x01') || ('\x03' < cVar1)) { - local_2c[1] = 0; - } - else if (cVar1 == '\x01') { - FUN_00492fc4(param_1,(int *)&DAT_00508e90,(uint *)&DAT_00508e9c,local_c - 1); - local_2c[1] = FUN_00497678(DAT_00508e90,0,(int *)0x0); - puVar7 = extraout_ECX_05; - } - else if (cVar1 == '\x02') { - local_2c[1] = FUN_00497678(s_DEFAULT_00509494,0,(int *)0x0); - puVar7 = extraout_ECX_06; - } - else { - local_2c[1] = local_2c[0]; - } - break; - case 0x2032: - uVar3 = FUN_00492c84(param_1); - local_24 = (undefined1)uVar3; - break; - case 0x2033: - uVar3 = FUN_00492c84(param_1); - local_23 = (byte)uVar3; - if (local_23 == 0) { - FUN_00492c84(param_1); - } - else { - uVar3 = FUN_00492c84(param_1); - local_22 = (undefined1)uVar3; - } - break; - case 0x2034: - local_1c = FUN_00492d84(param_1); - break; - case 0x2035: - uVar3 = FUN_00492c84(param_1); - local_21 = (undefined1)uVar3; - break; - case 0x2036: - uVar3 = FUN_00492c84(param_1); - local_20 = (undefined1)uVar3; - break; - case 0x2037: - local_18 = FUN_004de55c(local_c); - if (local_18 == (int *)0x0) { - FUN_0049a300(1,s_dpl_bgfRead_failed_to_allocate_m_0050949c); - FUN_00492ba0(param_1,local_c); - return 0; - } - FUN_00492f10(param_1,(char *)local_18,local_c); - local_10 = local_c; - puVar7 = extraout_ECX_07; - break; - default: - goto switchD_00494307_caseD_2038; - case 0x2039: - uVar3 = FUN_00492c84(param_1); - local_1f = (char)uVar3; - } - } - if (local_14 != 0) { - FUN_004940c8(param_1,(int)puVar2,(int)local_2c,local_c,local_14); - puVar7 = extraout_ECX_10; - } - } - FUN_0048c654((int)puVar2,local_2c[0]); - FUN_0048c688((int)puVar2,local_2c[1]); - if (local_1f == '\x01') { - FUN_0048c71c((int)puVar2); - } - else { - FUN_0048c750((int)puVar2); - } - if (local_1c != 0) { - FUN_0048c7b4((int)puVar2,local_1c); - } - if ((local_23 & 1) != 0) { - FUN_0048c820((int)puVar2,1); - } - FUN_0048d6c4(puVar2); - FUN_00489c5c(param_2,(int)puVar2); - if ((DAT_00508ea0 != (char *)0x0) && (*DAT_00508ea0 != '\0')) { - FUN_00497c7c(1,DAT_00508ea0,local_18,local_10,param_2,(int)puVar2); - } - if (local_18 != (int *)0x0) { - pcVar4 = (code *)FUN_00496644(); - if (pcVar4 != (code *)0x0) { - (*pcVar4)(9,puVar2,local_18,local_10); - } - FUN_004de420(local_18); - } - if (param_1[2] == 0) { - uVar3 = 1; - } - else { - uVar3 = 0; - } - } - return uVar3; -} - - - -/* @00494668 file=? name=FUN_00494668 */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -undefined4 __cdecl -FUN_00494668(undefined4 *param_1,int param_2,undefined4 *param_3,int *param_4,uint param_5) - -{ - undefined4 *puVar1; - undefined4 uVar2; - code *pcVar3; - int iVar4; - undefined4 *extraout_ECX; - undefined4 *extraout_ECX_00; - undefined4 *extraout_ECX_01; - undefined4 *extraout_ECX_02; - undefined4 *extraout_ECX_03; - undefined4 *extraout_ECX_04; - undefined4 *extraout_ECX_05; - undefined4 *extraout_ECX_06; - undefined4 *extraout_ECX_07; - undefined4 *this; - int iVar5; - float local_30; - float local_2c; - float local_28; - int *local_24; - undefined4 *local_20; - float local_1c; - float local_18; - char local_11; - uint local_10; - uint local_c; - uint local_8; - - iVar5 = 0; - local_11 = '\0'; - local_20 = (undefined4 *)param_1[0xc]; - local_24 = (int *)0x0; - if (DAT_00508ea8 != (char *)0x0) { - *DAT_00508ea8 = '\0'; - } - puVar1 = (undefined4 *)FUN_004897e8(); - if (puVar1 == (undefined4 *)0x0) { - FUN_0049a300(1,s_dpl_bgfRead_failed_to_create_dpl_00509504); - FUN_00492ba0(param_1,param_5); - uVar2 = 0; - } - else { - pcVar3 = (code *)FUN_00496614(); - if (pcVar3 != (code *)0x0) { - (*pcVar3)(8,puVar1); - } - FUN_004d4918(&local_30,local_20,0xc); - this = extraout_ECX; - for (; (param_1[2] == 0 && (iVar5 < (int)param_5)); iVar5 = iVar5 + iVar4 + local_c) { - iVar4 = FUN_004931fc(this,param_1,&local_8,&local_c); - if (param_1[2] != 0) break; - if ((int)local_8 < 0x2038) { - if (local_8 == 0x2037) { - local_24 = FUN_004de55c(local_c); - if (local_24 == (int *)0x0) { - FUN_0049a300(1,s_dpl_bgfRead_failed_to_allocate_m_0050952a); - FUN_00492ba0(param_1,local_c); - return 0; - } - FUN_00492f10(param_1,(char *)local_24,local_c); - local_10 = local_c; - pcVar3 = (code *)FUN_00496644(); - this = extraout_ECX_03; - if (pcVar3 != (code *)0x0) { - (*pcVar3)(8,puVar1,local_24,local_c); - this = extraout_ECX_04; - } - } - else if (local_8 == 0) { -LAB_0049481d: - FUN_00492ba0(param_1,local_c); - this = extraout_ECX_06; - } - else if (local_8 == 0x42) { - FUN_004941e4(param_1,(int)puVar1,param_3,local_c); - this = extraout_ECX_05; - } - else { - if (local_8 == 0x2000) goto LAB_0049481d; - if (local_8 != 0x2008) goto LAB_0049482c; - FUN_00492fc4(param_1,(int *)&DAT_00508ea8,(uint *)&DAT_00508eac,local_c); - this = extraout_ECX_00; - } - } - else if (local_8 == 0x2046) { - FUN_00492df0(param_1,(char *)&local_1c,2); - local_11 = '\x01'; - this = extraout_ECX_01; - } - else if (local_8 == 0x2047) { - FUN_00492df0(param_1,(char *)&local_30,3); - this = extraout_ECX_02; - } - else if (local_8 == 0x2048) { - this = param_1; - FUN_00492c84(param_1); - } - else { -LAB_0049482c: - FUN_0049a300(1,s_dpl_bgfRead_got_unrecognized_blo_0050955d); - FUN_00492ba0(param_1,local_c); - this = extraout_ECX_07; - } - } - if (local_11 != '\0') { - if ((float)param_1[10] != _DAT_00494980) { - local_1c = (float)param_1[10] * local_1c; - local_18 = (float)param_1[10] * local_18; - } - if (local_1c < _DAT_00494984) { - local_1c = DAT_005209d0; - } - if (local_18 < _DAT_00494984) { - local_18 = DAT_005209d0; - } - FUN_0048af60(param_2,*param_4,local_1c); - FUN_0048af60(param_2,*param_4 + 1,local_18); - } - if ((float)param_1[10] != _DAT_00494980) { - local_30 = (float)param_1[10] * local_30; - local_2c = (float)param_1[10] * local_2c; - local_28 = (float)param_1[10] * local_28; - } - FUN_0048afe8(param_2,local_30,local_2c,local_28); - FUN_00489c00(param_2,(int)puVar1); - FUN_0048d68c(puVar1); - *param_4 = *param_4 + 1; - if ((DAT_00508ea8 != (char *)0x0) && (*DAT_00508ea8 != '\0')) { - FUN_00497c7c(0,DAT_00508ea8,local_24,local_10,param_2,(int)puVar1); - } - if (local_24 != (int *)0x0) { - FUN_004de420(local_24); - } - if (param_1[2] == 0) { - uVar2 = 1; - } - else { - uVar2 = 0; - } - } - return uVar2; -} - - - -/* @00494988 file=? name=FUN_00494988 */ - -undefined4 * __cdecl FUN_00494988(undefined4 *param_1,uint param_2) - -{ - char cVar1; - undefined4 *puVar2; - code *pcVar3; - int iVar4; - undefined4 uVar5; - int iVar6; - undefined4 *extraout_ECX; - undefined4 *extraout_ECX_00; - undefined4 *extraout_ECX_01; - undefined4 *extraout_ECX_02; - undefined4 *extraout_ECX_03; - undefined4 *extraout_ECX_04; - undefined4 *extraout_ECX_05; - undefined4 *extraout_ECX_06; - undefined4 *extraout_ECX_07; - undefined4 *extraout_ECX_08; - undefined4 *extraout_ECX_09; - undefined4 *extraout_ECX_10; - undefined4 *extraout_ECX_11; - undefined4 *extraout_ECX_12; - undefined4 *extraout_ECX_13; - undefined4 *extraout_ECX_14; - undefined4 *puVar7; - undefined4 local_34 [2]; - undefined1 local_2c; - char local_2b; - undefined1 local_2a; - undefined1 local_29; - undefined1 local_28; - undefined1 local_27; - undefined4 local_24; - float *local_20; - int *local_1c; - int local_18; - undefined4 *local_14; - uint local_10; - uint local_c; - uint local_8; - - local_14 = (undefined4 *)0x0; - local_18 = 0; - puVar2 = &DAT_00508ed4; - puVar7 = local_34; - for (iVar6 = 5; iVar6 != 0; iVar6 = iVar6 + -1) { - *puVar7 = *puVar2; - puVar2 = puVar2 + 1; - puVar7 = puVar7 + 1; - } - iVar6 = 0; - local_1c = (int *)0x0; - if (DAT_00508e88 != (char *)0x0) { - *DAT_00508e88 = '\0'; - } - puVar2 = (undefined4 *)FUN_004897d0(); - if (puVar2 == (undefined4 *)0x0) { - FUN_0049a300(1,s_dpl_bgfRead_failed_to_create_dpl_00509590); - FUN_00492ba0(param_1,param_2); - puVar2 = (undefined4 *)0x0; - } - else { - pcVar3 = (code *)FUN_00496614(); - puVar7 = extraout_ECX; - if (pcVar3 != (code *)0x0) { - (*pcVar3)(7,puVar2); - puVar7 = extraout_ECX_00; - } - for (; (param_1[2] == 0 && (iVar6 < (int)param_2)); iVar6 = iVar6 + iVar4 + local_c) { - iVar4 = FUN_004931fc(puVar7,param_1,&local_8,&local_c); - if (param_1[2] != 0) break; - puVar7 = param_1; - if ((int)local_8 < 0x2033) { - if (local_8 == 0x2032) { - uVar5 = FUN_00492c84(param_1); - local_2c = (undefined1)uVar5; - } - else if ((int)local_8 < 0x2001) { - if ((local_8 == 0x2000) || (local_8 == 0)) { - FUN_00492ba0(param_1,local_c); - puVar7 = extraout_ECX_13; - } - else if (local_8 == 0x41) { - FUN_00494668(param_1,(int)puVar2,local_34,&local_18,local_c); - puVar7 = extraout_ECX_12; - } - else { - if (local_8 != 0x42) goto switchD_00494a88_caseD_2038; - puVar7 = extraout_ECX_01; - if (local_14 == (undefined4 *)0x0) { - local_14 = (undefined4 *)FUN_004897e8(); - if (local_14 == (undefined4 *)0x0) { - FUN_0049a300(1,s_dpl_bgfRead_failed_to_create_dpl_005095fc); - FUN_00492ba0(param_1,local_c); - puVar7 = extraout_ECX_09; - } - else { - local_20 = (float *)param_1[0xc]; - pcVar3 = (code *)FUN_00496614(); - if (pcVar3 != (code *)0x0) { - (*pcVar3)(8,local_14); - } - FUN_00489c00((int)puVar2,(int)local_14); - FUN_0048b0fc((int)puVar2); - FUN_0048afe8((int)puVar2,*local_20 * (float)param_1[10], - local_20[1] * (float)param_1[10],local_20[2] * (float)param_1[10]); - local_18 = local_18 + 1; - puVar7 = extraout_ECX_10; - } - } - if (local_14 != (undefined4 *)0x0) { - FUN_004941e4(param_1,(int)local_14,local_34,local_c); - puVar7 = extraout_ECX_11; - } - } - } - else if (local_8 == 0x2008) { - FUN_00492fc4(param_1,(int *)&DAT_00508e88,(uint *)&DAT_00508e94,local_c); - puVar7 = extraout_ECX_02; - } - else if (local_8 == 0x2030) { - uVar5 = FUN_00492c84(param_1); - cVar1 = (char)uVar5; - if ((cVar1 < '\x01') || ('\x02' < cVar1)) { - local_34[0] = 0; - } - else if (cVar1 == '\x01') { - FUN_00492fc4(param_1,(int *)&DAT_00508e8c,(uint *)&DAT_00508e98,local_c - 1); - local_34[0] = FUN_00497678(DAT_00508e8c,0,(int *)0x0); - puVar7 = extraout_ECX_03; - } - else { - local_34[0] = FUN_00497678(s_DEFAULT_005095b9,0,(int *)0x0); - puVar7 = extraout_ECX_04; - } - } - else { - if (local_8 != 0x2031) goto switchD_00494a88_caseD_2038; - uVar5 = FUN_00492c84(param_1); - cVar1 = (char)uVar5; - if ((cVar1 < '\x01') || ('\x03' < cVar1)) { - local_34[1] = 0; - } - else if (cVar1 == '\x01') { - FUN_00492fc4(param_1,(int *)&DAT_00508e90,(uint *)&DAT_00508e9c,local_c - 1); - local_34[1] = FUN_00497678(DAT_00508e90,0,(int *)0x0); - puVar7 = extraout_ECX_05; - } - else if (cVar1 == '\x02') { - local_34[1] = FUN_00497678(s_DEFAULT_005095c1,0,(int *)0x0); - puVar7 = extraout_ECX_06; - } - else { - local_34[1] = local_34[0]; - } - } - } - else { - switch(local_8) { - case 0x2033: - uVar5 = FUN_00492c84(param_1); - local_2b = (char)uVar5; - if (local_2b == '\0') { - FUN_00492c84(param_1); - } - else { - uVar5 = FUN_00492c84(param_1); - local_2a = (undefined1)uVar5; - } - break; - case 0x2034: - local_24 = FUN_00492d84(param_1); - break; - case 0x2035: - uVar5 = FUN_00492c84(param_1); - local_29 = (undefined1)uVar5; - break; - case 0x2036: - uVar5 = FUN_00492c84(param_1); - local_28 = (undefined1)uVar5; - break; - case 0x2037: - local_1c = FUN_004de55c(local_c); - if (local_1c == (int *)0x0) { - FUN_0049a300(1,s_dpl_bgfRead_failed_to_allocate_m_005095c9); - FUN_00492ba0(param_1,local_c); - return (undefined4 *)0x0; - } - FUN_00492f10(param_1,(char *)local_1c,local_c); - local_10 = local_c; - pcVar3 = (code *)FUN_00496644(); - puVar7 = extraout_ECX_07; - if (pcVar3 != (code *)0x0) { - (*pcVar3)(7,puVar2,local_1c,local_c); - puVar7 = extraout_ECX_08; - } - break; - default: -switchD_00494a88_caseD_2038: - FUN_0049a300(1,s_dpl_bgfRead_got_unrecognized_blo_00509622); - FUN_00492ba0(param_1,local_c); - puVar7 = extraout_ECX_14; - break; - case 0x2039: - uVar5 = FUN_00492c84(param_1); - local_27 = (undefined1)uVar5; - } - } - } - if ((DAT_00508e88 != (char *)0x0) && (*DAT_00508e88 != '\0')) { - FUN_00497bf8(DAT_00508e88); - } - if (local_1c != (int *)0x0) { - FUN_00497c30(local_1c,local_10); - FUN_004de420(local_1c); - } - if (local_14 != (undefined4 *)0x0) { - FUN_0048d68c(local_14); - } - FUN_0048b078((int)puVar2,0); - FUN_0048d668(puVar2); - } - return puVar2; -} - - - -/* @00494e00 file=? name=FUN_00494e00 */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -bool __thiscall FUN_00494e00(void *this,undefined4 *param_1,int param_2) - -{ - int iVar1; - void *extraout_ECX; - void *extraout_ECX_00; - void *extraout_ECX_01; - void *extraout_ECX_02; - void *extraout_ECX_03; - void *extraout_ECX_04; - int iVar2; - float local_34; - float local_30; - float local_2c; - float local_28; - float local_24; - float local_20; - float *local_10; - uint local_c; - uint local_8; - - iVar2 = 0; - local_10 = (float *)param_1[0xc]; - do { - if ((param_1[2] != 0) || (param_2 <= iVar2)) { - return param_1[2] == 0; - } - iVar1 = FUN_004931fc(this,param_1,&local_8,&local_c); - if (param_1[2] != 0) { - return false; - } - if ((int)local_8 < 0x2071) { - if (local_8 == 0x2070) { - FUN_00492ba0(param_1,local_c); - this = extraout_ECX_01; - } - else if (local_8 == 0x71) { - FUN_00492df0(param_1,(char *)&local_34,9); - *local_10 = (local_34 + local_28) * _DAT_00494f30; - local_10[1] = (local_30 + local_24) * _DAT_00494f30; - local_10[2] = (local_2c + local_20) * _DAT_00494f30; - this = extraout_ECX; - } - else { - if (local_8 != 0x72) goto LAB_00494ee6; - FUN_00492ba0(param_1,local_c); - this = extraout_ECX_00; - } - } - else if (local_8 == 0x2071) { - FUN_00492ba0(param_1,local_c); - this = extraout_ECX_02; - } - else if (local_8 == 0x2072) { - FUN_00492ba0(param_1,local_c); - this = extraout_ECX_03; - } - else { -LAB_00494ee6: - FUN_0049a300(1,s_dpl_bgfRead_got_unrecognized_blo_00509658); - FUN_00492ba0(param_1,local_c); - this = extraout_ECX_04; - } - iVar2 = iVar2 + iVar1 + local_c; - } while( true ); -} - - - -/* @00494f34 file=? name=FUN_00494f34 */ - -undefined4 * __thiscall FUN_00494f34(void *this,undefined4 *param_1) - -{ - bool bVar1; - void *this_00; - void *this_01; - void *extraout_ECX; - void *extraout_ECX_00; - void *extraout_ECX_01; - void *extraout_ECX_02; - void *extraout_ECX_03; - void *extraout_ECX_04; - void *this_02; - undefined4 *puVar2; - uint local_c; - uint local_8; - - bVar1 = true; - puVar2 = (undefined4 *)0x0; - param_1[2] = 0; - param_1[10] = 0x3f800000; - *(undefined1 *)(param_1 + 0xb) = 0; - FUN_004931fc(this,param_1,&local_8,&local_c); - if (param_1[2] == 0) { - this_02 = this_00; - if (local_8 == 3) { - FUN_004932a4(this_00,param_1,local_c); - FUN_004931fc(this_01,param_1,&local_8,&local_c); - this_02 = extraout_ECX; - } - while ((param_1[2] == 0 && (bVar1))) { - if ((int)local_8 < 0x41) { - if (local_8 == 0x40) { - puVar2 = FUN_00494988(param_1,local_c); - this_02 = extraout_ECX_00; - } - else if (local_8 == 0) { -LAB_00494fe6: - FUN_00492ba0(param_1,local_c); - this_02 = extraout_ECX_02; - } - else { - if (local_8 != 5) goto LAB_00494ff9; - bVar1 = false; - } - } - else if (local_8 == 0x70) { - FUN_00494e00(this_02,param_1,local_c); - this_02 = extraout_ECX_01; - } - else { - if (local_8 == 0x2000) goto LAB_00494fe6; -LAB_00494ff9: - FUN_0049a300(1,s_dpl_bgfRead_got_unrecognized_blo_00509690); - FUN_00492ba0(param_1,local_c); - this_02 = extraout_ECX_03; - } - if (bVar1) { - FUN_004931fc(this_02,param_1,&local_8,&local_c); - this_02 = extraout_ECX_04; - } - } - } - else { - puVar2 = (undefined4 *)0x0; - } - return puVar2; -} - - - -/* @00495048 file=? name=FUN_00495048 */ - -undefined4 * __cdecl FUN_00495048(LPCSTR param_1) - -{ - char *pcVar1; - undefined4 *puVar2; - int *piVar3; - char *pcVar4; - int *piVar5; - void *this; - char *pcVar6; - bool bVar7; - char local_10 [8]; - undefined1 local_8; - - if (param_1 == (LPCSTR)0x0) { - FUN_0049a300(1,s_dpl_bgfRead_got_no_file_to_open__005096cc); - puVar2 = (undefined4 *)0x0; - } - else { - if ((DAT_00508e84 == (int *)0x0) && - (DAT_00508e84 = FUN_004de55c(0x4000), DAT_00508e84 == (int *)0x0)) { - FUN_0049a300(1,s_dpl_bgfRead_failed_to_allocate_r_005096ed); - return (undefined4 *)0x0; - } - piVar3 = FUN_004930c0(param_1,0x4000,DAT_00508e84,1); - if (piVar3 == (int *)0x0) { - FUN_0049a300(1,s_dpl_bgfRead_failed_to_open_file___00509718); - puVar2 = (undefined4 *)0x0; - } - else { - FUN_00492f10(piVar3,local_10,8); - local_8 = 0; - pcVar4 = local_10; - pcVar6 = &DAT_0050973e; - do { - bVar7 = *pcVar4 == *pcVar6; - if (!bVar7) break; - if (*pcVar4 == '\0') goto LAB_0049512a; - pcVar1 = pcVar4 + 1; - bVar7 = *pcVar1 == pcVar6[1]; - if (!bVar7) break; - pcVar4 = pcVar4 + 2; - pcVar6 = pcVar6 + 2; - bVar7 = *pcVar1 == '\0'; - } while (!bVar7); - if (bVar7) { -LAB_0049512a: - piVar5 = FUN_004de2bc(1,0xc); - piVar3[0xc] = (int)piVar5; - if (piVar5 == (int *)0x0) { - FUN_0049a300(1,s_dpl_bgfRead_failed_to_allocate_m_00509771); - FUN_00493188(piVar3); - puVar2 = (undefined4 *)0x0; - } - else { - puVar2 = FUN_00494f34(this,piVar3); - FUN_004de420((int *)piVar3[0xc]); - FUN_00493188(piVar3); - } - } - else { - FUN_0049a300(1,s_dpl_bgfRead___s__is_not_a_valid_b_00509747); - FUN_00493188(piVar3); - puVar2 = (undefined4 *)0x0; - } - } - } - return puVar2; -} - - - -/* @0049517c file=? name=FUN_0049517c */ - -void FUN_0049517c(void) - -{ - if (DAT_00508e84 != (int *)0x0) { - FUN_004de420(DAT_00508e84); - DAT_00508e84 = (int *)0x0; - } - FUN_0049309c(&DAT_00508e88,(undefined4 *)&DAT_00508e94); - FUN_0049309c(&DAT_00508e8c,(undefined4 *)&DAT_00508e98); - FUN_0049309c(&DAT_00508e90,(undefined4 *)&DAT_00508e9c); - FUN_0049309c(&DAT_00508ea0,(undefined4 *)&DAT_00508ea4); - FUN_0049309c(&DAT_00508ea8,(undefined4 *)&DAT_00508eac); - return; -} - - - -/* @004951f4 file=? name=FUN_004951f4 */ - -void * __thiscall FUN_004951f4(void *this,undefined4 *param_1,uint *param_2,uint *param_3) - -{ - uint uVar1; - uint uVar2; - uint uVar3; - void *local_8; - - uVar3 = 0; - uVar1 = FUN_00492cb4(param_1); - uVar2 = (int)(uVar1 & 0xffff) >> 0xc & 0xc; - if (uVar2 == 0) { - uVar3 = FUN_00492c84(param_1); - uVar3 = uVar3 & 0xff; - local_8 = (void *)0x3; - } - else if (uVar2 == 4) { - uVar3 = FUN_00492cb4(param_1); - uVar3 = uVar3 & 0xffff; - local_8 = (void *)0x4; - } - else if (uVar2 == 8) { - uVar3 = FUN_00492d84(param_1); - local_8 = (void *)0x6; - } - else { - FUN_0049a300(1,s__dpl_bmfRead_got_unrecognised_bl_00509867 + 1); - param_1[2] = 1; - local_8 = this; - } - *param_2 = uVar1 & 0x3fff; - *param_3 = uVar3; - return local_8; -} - - - -/* @0049529c file=? name=FUN_0049529c */ - -undefined4 __thiscall FUN_0049529c(void *this,undefined4 *param_1,int param_2) - -{ - int iVar1; - undefined4 uVar2; - undefined4 *extraout_ECX; - undefined4 *extraout_ECX_00; - undefined4 *extraout_ECX_01; - undefined4 *extraout_ECX_02; - undefined4 *extraout_ECX_03; - undefined4 *extraout_ECX_04; - undefined4 *extraout_ECX_05; - undefined4 *extraout_ECX_06; - int iVar3; - uint local_c; - uint local_8; - - iVar3 = 0; - do { - if ((param_1[2] != 0) || (param_2 <= iVar3)) { - return 1; - } - iVar1 = FUN_004951f4(this,param_1,&local_8,&local_c); - if (param_1[2] != 0) { - return 0; - } - if ((int)local_8 < 0x2006) { - if (local_8 == 0x2005) { - FUN_00492ba0(param_1,local_c); - this = extraout_ECX_02; - } - else if ((int)local_8 < 0x2003) { - if (local_8 == 0x2002) { - FUN_00492ba0(param_1,local_c); - this = extraout_ECX; - } - else if ((local_8 == 0) || (local_8 == 0x2000)) { - FUN_00492ba0(param_1,local_c); - this = extraout_ECX_05; - } - else { -LAB_00495403: - FUN_0049a300(1,s_dpl_bmfRead_got_unrecognized_blo_005098f6); - FUN_00492ba0(param_1,local_c); - this = extraout_ECX_06; - } - } - else if (local_8 == 0x2003) { - FUN_00492ba0(param_1,local_c); - this = extraout_ECX_00; - } - else { - if (local_8 != 0x2004) goto LAB_00495403; - FUN_00492ba0(param_1,local_c); - this = extraout_ECX_01; - } - } - else { - this = param_1; - if (local_8 == 0x2006) { - uVar2 = FUN_00492c84(param_1); - *(char *)(param_1 + 0xb) = (char)uVar2; - if (*(char *)(param_1 + 0xb) != '\0') { - FUN_0049a300(1,s_dpl_bmfRead_cannot_process_doubl_00509898); - param_1[2] = 1; - return 0; - } - } - else if (local_8 == 0x2007) { - uVar2 = FUN_00492c84(param_1); - if ((char)uVar2 != '\x01') { - FUN_0049a300(1,s_dpl_bmfRead___file_is_not_a_mate_005098cb); - param_1[2] = 1; - return 0; - } - } - else if (local_8 == 0x2009) { - FUN_00492ba0(param_1,local_c); - this = extraout_ECX_03; - } - else { - if (local_8 != 0x2037) goto LAB_00495403; - FUN_00492ba0(param_1,local_c); - this = extraout_ECX_04; - } - } - iVar3 = iVar3 + iVar1 + local_c; - } while( true ); -} - - - -/* @00495440 file=? name=FUN_00495440 */ - -undefined4 __cdecl FUN_00495440(undefined4 *param_1,int param_2) - -{ - int iVar1; - undefined4 uVar2; - int extraout_EAX; - int extraout_EAX_00; - int extraout_EAX_01; - int extraout_EAX_02; - int extraout_EAX_03; - code *pcVar3; - int iVar4; - undefined4 *extraout_ECX; - undefined4 *extraout_ECX_00; - undefined4 *extraout_ECX_01; - undefined4 *extraout_ECX_02; - undefined4 *extraout_ECX_03; - undefined4 *extraout_ECX_04; - undefined4 *extraout_ECX_05; - undefined4 *extraout_ECX_06; - undefined4 *extraout_ECX_07; - undefined4 *extraout_ECX_08; - undefined4 *extraout_ECX_09; - undefined4 *extraout_ECX_10; - undefined4 *puVar5; - int *piVar6; - undefined4 *puVar7; - undefined4 local_6c; - undefined4 local_68; - undefined4 local_64; - undefined4 local_60 [4]; - undefined4 local_50; - undefined4 local_4c; - undefined4 local_48; - undefined4 local_44; - undefined4 local_40; - undefined4 local_3c; - undefined4 local_38; - undefined4 local_34; - undefined4 local_30; - int local_2c; - int local_28; - int local_24; - int local_20; - int local_1c; - uint local_18; - int *local_14; - char local_e; - char local_d; - uint local_c; - uint local_8; - - local_d = '\0'; - local_e = '\0'; - local_38 = DAT_00509810; - local_34 = DAT_00509814; - local_30 = DAT_00509818; - local_44 = DAT_0050981c; - local_40 = DAT_00509820; - local_3c = DAT_00509824; - local_50 = DAT_00509828; - local_4c = DAT_0050982c; - local_48 = DAT_00509830; - puVar5 = &DAT_00509834; - puVar7 = local_60; - for (iVar4 = 4; iVar4 != 0; iVar4 = iVar4 + -1) { - *puVar7 = *puVar5; - puVar5 = puVar5 + 1; - puVar7 = puVar7 + 1; - } - iVar4 = 0; - local_6c = DAT_00509844; - local_68 = DAT_00509848; - local_64 = DAT_0050984c; - local_14 = (int *)0x0; - if (DAT_005097e0 != (char *)0x0) { - *DAT_005097e0 = '\0'; - } - puVar5 = (undefined4 *)0x0; - if (DAT_005097e8 != (char *)0x0) { - *DAT_005097e8 = '\0'; - } - for (; (param_1[2] == 0 && (iVar4 < param_2)); iVar4 = iVar4 + iVar1 + local_c) { - iVar1 = FUN_004951f4(puVar5,param_1,&local_8,&local_c); - if (param_1[2] != 0) break; - puVar5 = param_1; - if ((int)local_8 < 0x27) { - if (local_8 == 0x26) { - FUN_00492df0(param_1,(char *)&local_50,3); - puVar5 = extraout_ECX_05; - } - else if ((int)local_8 < 0x24) { - if (local_8 == 0x23) { - FUN_00492df0(param_1,(char *)&local_38,3); - puVar5 = extraout_ECX_02; - } - else if (local_8 == 0) { -LAB_004956f8: - FUN_00492ba0(param_1,local_c); - puVar5 = extraout_ECX_09; - } - else if (local_8 == 0x21) { - uVar2 = FUN_00492c84(param_1); - local_d = (char)uVar2; - if (local_d == '\x02') { - FUN_00492fc4(param_1,(int *)&DAT_005097e4,(uint *)&DAT_005097f4,local_c - 1); - puVar5 = extraout_ECX_00; - } - } - else { - if (local_8 != 0x22) goto LAB_00495707; - uVar2 = FUN_00492c84(param_1); - local_e = (char)uVar2; - if (local_e == '\x01') { - FUN_00492fc4(param_1,(int *)&DAT_005097ec,(uint *)&DAT_005097fc,local_c - 1); - puVar5 = extraout_ECX_01; - } - } - } - else if (local_8 == 0x24) { - FUN_00492df0(param_1,(char *)&local_44,3); - puVar5 = extraout_ECX_03; - } - else { - if (local_8 != 0x25) goto LAB_00495707; - FUN_00492df0(param_1,(char *)local_60,4); - puVar5 = extraout_ECX_04; - } - } - else if ((int)local_8 < 0x2009) { - if (local_8 == 0x2008) { - FUN_00492fc4(param_1,(int *)&DAT_005097e0,(uint *)&DAT_005097f0,local_c); - puVar5 = extraout_ECX; - } - else if (local_8 == 0x27) { - FUN_00492df0(param_1,(char *)&local_6c,3); - puVar5 = extraout_ECX_06; - } - else { - if (local_8 != 0x28) { - if (local_8 == 0x2000) goto LAB_004956f8; - goto LAB_00495707; - } - FUN_00492fc4(param_1,(int *)&DAT_005097e8,(uint *)&DAT_005097f8,local_c); - puVar5 = extraout_ECX_07; - } - } - else if (local_8 == 0x200a) { - FUN_00492c84(param_1); - } - else if (local_8 == 0x2037) { - local_14 = FUN_004de55c(local_c); - if (local_14 == (int *)0x0) { - FUN_0049a300(1,s_dpl_bmfRead_failed_to_allocate_m_0050992c); - FUN_00492ba0(param_1,local_c); - return 0; - } - FUN_00492f10(param_1,(char *)local_14,local_c); - local_18 = local_c; - puVar5 = extraout_ECX_08; - } - else { -LAB_00495707: - FUN_0049a300(1,s_dpl_bmfRead_got_unrecognized_blo_0050995f); - FUN_00492ba0(param_1,local_c); - puVar5 = extraout_ECX_10; - } - } - if ((DAT_005097e0 != (char *)0x0) && (*DAT_005097e0 != '\0')) { - FUN_00497194(0,DAT_005097e0,2,(int *)param_1[0xc],&local_1c,FUN_004897a0,FUN_00489a28); - if ((local_1c == 0) && (extraout_EAX != 0)) { - local_20 = 0; - puVar5 = *(undefined4 **)(extraout_EAX + 0x18); - FUN_0048ba98((int)puVar5,local_38,local_34,local_30); - FUN_0048bc10((int)puVar5,local_44,local_40,local_3c); - FUN_0048bb54((int)puVar5,local_50,local_4c,local_48); - FUN_0048bccc((int)puVar5,local_60[0],local_60[1],local_60[2],local_60[3]); - FUN_0048bd94((int)puVar5,local_6c,local_68,local_64); - if ((local_d != '\0') && (DAT_005097d4 != 0)) { - iVar4 = 0; - if (local_d == '\x01') { - FUN_00497194(1,s_DEFAULT_00509997,0,(int *)param_1[0xc],(int *)0x0,FUN_00489768, - FUN_00489998); - iVar4 = extraout_EAX_00; - if (extraout_EAX_00 == 0) { - FUN_0049a300(1,s_dpl_bmfRead_failed_to_lookup_tex_0050999f); - } - } - else if (((local_d == '\x02') && (DAT_005097e4 != (char *)0x0)) && (*DAT_005097e4 != '\0')) - { - FUN_00497194(1,DAT_005097e4,0,(int *)param_1[0xc],&local_24,FUN_00489768,FUN_00489998); - iVar4 = extraout_EAX_01; - if (extraout_EAX_01 == 0) { - FUN_0049a300(1,s_dpl_bmfRead_failed_to_lookup_tex_005099cf); - } - else if (local_24 == 0) { - FUN_0049a300(1,s_texture___s__is_undefined__005099fa); - } - } - if (iVar4 != 0) { - local_20 = *(int *)(iVar4 + 0x18); - } - } - if (local_20 != 0) { - FUN_0048be50((int)puVar5,local_20); - } - if ((DAT_005097e8 != (char *)0x0) && (*DAT_005097e8 != '\0')) { - piVar6 = FUN_00497194(2,DAT_005097e8,0,(int *)param_1[0xc],&local_28,FUN_0049763c, - FUN_00489a68); - if (extraout_EAX_02 == 0) { - FUN_0049a300(1,s_dpl_bmfRead_failed_to_lookup_ram_00509a2d); - } - else { - piVar6 = *(int **)(extraout_EAX_02 + 0x18); - if (local_28 == 0) { - FUN_0049a300(1,s_ramp___s__is_undefined__00509a15); - } - } - FUN_0048bfb0((int)puVar5,(int)piVar6); - } - if (((local_e == '\x01') && (DAT_005097d4 != 0)) && (*DAT_005097ec != '\0')) { - FUN_00497194(1,DAT_005097ec,0,(int *)param_1[0xc],&local_2c,FUN_00489768,FUN_00489998); - if (extraout_EAX_03 == 0) { - FUN_0049a300(1,s_dpl_bmfRead_failed_to_lookup_env_00509a55); - } - else if (local_2c == 0) { - FUN_0049a300(1,s_environment_texture___s__is_unde_00509a8c); - } - if (extraout_EAX_03 != 0) { - FUN_0048bf00((int)puVar5,*(int *)(extraout_EAX_03 + 0x18)); - } - } - FUN_0048d4d4(puVar5); - if ((local_14 != (int *)0x0) && (pcVar3 = (code *)FUN_00496644(), pcVar3 != (code *)0x0)) { - (*pcVar3)(0xb,puVar5,local_14,local_18); - } - } - else if (extraout_EAX == 0) { - FUN_0049a300(1,s_dpl_bmfRead_failed_to_lookup_mat_00509ab3); - } - else { - FUN_0049a300(1,s_dpl_bmfRead___material___s__alre_00509adf); - } - } - if (local_14 != (int *)0x0) { - FUN_004de420(local_14); - } - return 1; -} - - - -/* @00495a44 file=? name=FUN_00495a44 */ - -undefined4 __thiscall FUN_00495a44(void *this,undefined4 *param_1,int param_2) - -{ - undefined4 *puVar1; - int iVar2; - undefined4 uVar3; - int extraout_EAX; - int extraout_EAX_00; - code *pcVar4; - undefined4 *extraout_ECX; - undefined4 *extraout_ECX_00; - undefined4 *extraout_ECX_01; - undefined4 *extraout_ECX_02; - undefined4 *extraout_ECX_03; - undefined4 *extraout_ECX_04; - int *piVar5; - int iVar6; - undefined4 unaff_EDI; - int local_24; - int local_20; - uint local_1c; - int *local_18; - char local_13; - char local_12; - char local_11; - char local_10; - char local_f; - char local_e; - char local_d; - uint local_c; - uint local_8; - - iVar6 = 0; - local_d = '\0'; - local_e = '\0'; - local_f = -1; - local_10 = -1; - local_11 = -1; - local_12 = '\0'; - local_13 = -1; - local_18 = (int *)0x0; - if (DAT_005097e4 != (char *)0x0) { - *DAT_005097e4 = '\0'; - } - if (DAT_00509804 != (char *)0x0) { - *DAT_00509804 = '\0'; - } - for (; (param_1[2] == 0 && (iVar6 < param_2)); iVar6 = iVar6 + iVar2 + local_c) { - iVar2 = FUN_004951f4(this,param_1,&local_8,&local_c); - if (param_1[2] != 0) break; - this = param_1; - if ((int)local_8 < 0x17) { - if (local_8 == 0x16) { - uVar3 = FUN_00492c84(param_1); - local_10 = (char)uVar3; - } - else { - switch(local_8) { - case 0: -switchD_00495ac8_caseD_0: - FUN_00492ba0(param_1,local_c); - this = extraout_ECX_03; - break; - default: -switchD_00495ac8_caseD_1: - FUN_0049a300(1,s_dpl_bmfRead_got_unrecognized_blo_00509b3f); - FUN_00492ba0(param_1,local_c); - this = extraout_ECX_04; - break; - case 0x11: - FUN_00492fc4(param_1,(int *)&DAT_00509804,(uint *)&DAT_0050980c,local_c); - this = extraout_ECX_00; - break; - case 0x12: - uVar3 = FUN_00492c84(param_1); - local_d = (char)uVar3; - break; - case 0x13: - uVar3 = FUN_00492c84(param_1); - local_e = (char)uVar3; - break; - case 0x14: - uVar3 = FUN_00492c84(param_1); - local_11 = (char)uVar3; - break; - case 0x15: - uVar3 = FUN_00492c84(param_1); - local_f = (char)uVar3; - } - } - } - else if ((int)local_8 < 0x2009) { - if (local_8 == 0x2008) { - FUN_00492fc4(param_1,(int *)&DAT_005097e4,(uint *)&DAT_005097f4,local_c); - this = extraout_ECX; - } - else if (local_8 == 0x17) { - uVar3 = FUN_00492c84(param_1); - local_12 = (char)uVar3; - if (0 < (int)(local_c - 1)) { - FUN_00492fc4(param_1,(int *)&DAT_00509800,(uint *)&DAT_00509808,local_c - 1); - this = extraout_ECX_01; - } - } - else { - if (local_8 != 0x18) { - if (local_8 == 0x2000) goto switchD_00495ac8_caseD_0; - goto switchD_00495ac8_caseD_1; - } - uVar3 = FUN_00492c84(param_1); - local_13 = (char)uVar3; - } - } - else if (local_8 == 0x200a) { - FUN_00492c84(param_1); - } - else { - if (local_8 != 0x2037) goto switchD_00495ac8_caseD_1; - local_18 = FUN_004de55c(local_c); - if (local_18 == (int *)0x0) { - FUN_0049a300(1,s_dpl_bmfRead_failed_to_allocate_m_00509b0c); - FUN_00492ba0(param_1,local_c); - return 0; - } - FUN_00492f10(param_1,(char *)local_18,local_c); - local_1c = local_c; - this = extraout_ECX_02; - } - } - if ((DAT_005097e4 != (char *)0x0) && (*DAT_005097e4 != '\0')) { - piVar5 = FUN_00497194(1,DAT_005097e4,2,(int *)param_1[0xc],&local_20,FUN_00489768,FUN_00489998); - if ((local_20 == 0) && (extraout_EAX != 0)) { - puVar1 = *(undefined4 **)(extraout_EAX + 0x18); - if (('\0' < local_d) && (local_d < '\t')) { - switch(local_d) { - case '\x01': - unaff_EDI = 9; - break; - case '\x02': - unaff_EDI = 10; - break; - case '\x03': - unaff_EDI = 0xb; - break; - case '\x04': - unaff_EDI = 0xf; - break; - case '\x05': - unaff_EDI = 0x10; - break; - case '\x06': - unaff_EDI = 0x11; - break; - case '\a': - unaff_EDI = 0x12; - break; - case '\b': - unaff_EDI = 0xe; - } - FUN_0048c144((int)puVar1,5,unaff_EDI); - } - if (('\0' < local_e) && (local_e < '\x06')) { - switch(local_e) { - case '\x01': - unaff_EDI = 9; - break; - case '\x02': - unaff_EDI = 10; - break; - case '\x03': - unaff_EDI = 0xb; - break; - case '\x04': - unaff_EDI = 0xc; - break; - case '\x05': - unaff_EDI = 0xd; - } - FUN_0048c144((int)puVar1,6,unaff_EDI); - } - if ((-1 < local_f) && (local_f < '\x03')) { - if (local_f == '\0') { - unaff_EDI = 3; - } - else if (local_f == '\x01') { - unaff_EDI = 4; - } - else if (local_f == '\x02') { - unaff_EDI = 5; - } - FUN_0048c144((int)puVar1,3,unaff_EDI); - } - if ((-1 < local_10) && (local_10 < '\x03')) { - if (local_10 == '\0') { - unaff_EDI = 3; - } - else if (local_10 == '\x01') { - unaff_EDI = 4; - } - else if (local_10 == '\x02') { - unaff_EDI = 5; - } - FUN_0048c144((int)puVar1,4,unaff_EDI); - } - if ((-1 < local_11) && (local_11 < '\x03')) { - if (local_11 == '\0') { - unaff_EDI = 6; - } - else if (local_11 == '\x01') { - unaff_EDI = 7; - } - else if (local_11 == '\x02') { - unaff_EDI = 8; - } - FUN_0048c144((int)puVar1,7,unaff_EDI); - } - if ((-1 < local_13) && (local_13 < '\t')) { - switch(local_13) { - case '\0': - unaff_EDI = 0x13; - break; - case '\x01': - unaff_EDI = 0x14; - break; - case '\x02': - unaff_EDI = 0x15; - break; - case '\x03': - unaff_EDI = 0x16; - break; - case '\x04': - unaff_EDI = 0x17; - break; - case '\x05': - unaff_EDI = 0x18; - break; - case '\x06': - unaff_EDI = 0x19; - break; - case '\a': - unaff_EDI = 0x1a; - break; - case '\b': - unaff_EDI = 0x1b; - } - FUN_0048c144((int)puVar1,10,unaff_EDI); - } - if ((((DAT_005097d8 != 0) && (local_12 != '\0')) && (DAT_00509800 != (char *)0x0)) && - (*DAT_00509800 != '\0')) { - FUN_00497194(1,DAT_00509800,0,(int *)piVar5[0xc],&local_24,FUN_00489768,FUN_00489998); - if (extraout_EAX_00 == 0) { - FUN_0049a300(1,s_dpl_bmfRead_failed_to_lookup_det_00509b91); - } - else { - FUN_0048c144((int)puVar1,8,1); - if (local_24 == 0) { - FUN_0049a300(1,s_texture___s__is_undefined__00509b76); - } - } - } - if ((DAT_00509804 != (char *)0x0) && (*DAT_00509804 != '\0')) { - iVar6 = FUN_00498eb4(DAT_00509804,0); - if (iVar6 == 0) { - FUN_0049a300(1,s_dpl_bmfRead_failed_to_load_texma_00509bc3); - } - else { - FUN_0048c2a0((int)puVar1,iVar6); - } - } - FUN_0048d55c(puVar1); - if ((local_18 != (int *)0x0) && (pcVar4 = (code *)FUN_00496644(), pcVar4 != (code *)0x0)) { - (*pcVar4)(0xc,puVar1,local_18,local_1c); - } - } - else if (extraout_EAX == 0) { - FUN_0049a300(1,s_dpl_bmfRead_failed_to_lookup_tex_00509bf0); - } - else { - FUN_0049a300(1,s_dpl_bmfRead___texture___s__alrea_00509c1b); - } - } - if (local_18 != (int *)0x0) { - FUN_004de420(local_18); - } - return 1; -} - - - diff --git a/reference/decomp/all/part_012.c b/reference/decomp/all/part_012.c index c91acc4..e02e957 100644 --- a/reference/decomp/all/part_012.c +++ b/reference/decomp/all/part_012.c @@ -1,3 +1,4619 @@ +/* @00490a90 file=? name=FUN_00490a90 */ + +char * __cdecl FUN_00490a90(char *param_1,undefined4 *param_2) + +{ + int iVar1; + + iVar1 = FUN_004d4a78(param_1); + FUN_004d4918(param_2,(undefined4 *)param_1,iVar1 + 1U); + return param_1 + iVar1 + 1U; +} + + + +/* @00490ab8 file=? name=FUN_00490ab8 */ + +void FUN_00490ab8(void) + +{ + DAT_00508568 = 1; + return; +} + + + +/* @00490adc file=? name=FUN_00490adc */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_00490adc(char *param_1) + +{ + FUN_004d771c(param_1); + _DAT_0050856c = 1; + return; +} + + + +/* @00490af8 file=? name=FUN_00490af8 */ + +int * __thiscall FUN_00490af8(void *this,undefined4 param_1) + +{ + int *piVar1; + + piVar1 = (int *)FUN_00452c38(0x1c); + if (piVar1 == (int *)0x0) { + FUN_004d771c(s_Failed_to_init_dbi_interface_dev_00508580); + piVar1 = (int *)0x0; + } + else { + FUN_004d7f84(param_1,&DAT_005085a8); + *piVar1 = (int)this; + piVar1[1] = (int)this; + piVar1[2] = (int)this + 1; + piVar1[3] = (int)this + 2; + piVar1[4] = (int)this + 3; + piVar1[5] = (int)this + 0x10; + piVar1[6] = (int)this + 0x11; + } + return piVar1; +} + + + +/* @00490b64 file=? name=FUN_00490b64 */ + +void FUN_00490b64(void) + +{ + int iVar1; + int iVar2; + + iVar1 = FUN_004dfd90(); + do { + iVar2 = FUN_004dfd90(); + } while (iVar1 == iVar2); + do { + iVar2 = FUN_004dfd90(); + } while (iVar1 == iVar2); + return; +} + + + +/* @00490b84 file=? name=FUN_00490b84 */ + +undefined6 __cdecl FUN_00490b84(int param_1) + +{ + undefined6 uVar1; + + FUN_004d46ed((short)*(undefined4 *)(param_1 + 0x18),0); + FUN_004d46ed((short)*(undefined4 *)(param_1 + 0x14),0); + FUN_00490b64(); + FUN_004d46ed((short)*(undefined4 *)(param_1 + 0x14),1); + FUN_00490b64(); + FUN_004d46ed((short)*(undefined4 *)(param_1 + 0x10),0); + FUN_004d46ed((short)*(undefined4 *)(param_1 + 0xc),0); + uVar1 = FUN_004d46ed((short)*(undefined4 *)(param_1 + 0x14),0); + return uVar1; +} + + + +/* @00490bec file=? name=FUN_00490bec */ + +byte __cdecl FUN_00490bec(int param_1) + +{ + byte bVar1; + + bVar1 = FUN_004d45ec((short)*(undefined4 *)(param_1 + 0x10)); + return bVar1 & 1; +} + + + +/* @00490c04 file=? name=FUN_00490c04 */ + +undefined4 __cdecl FUN_00490c04(int param_1,byte *param_2,int param_3) + +{ + bool bVar1; + byte bVar2; + int iVar3; + int iVar4; + int local_c; + int local_8; + + bVar1 = true; + local_8 = 0; + if (0 < param_3) { + do { + iVar4 = 0; + while (bVar2 = FUN_004d45ec((short)*(undefined4 *)(param_1 + 0x10)), (bVar2 & 1) == 0) { + if (39999 < iVar4) { + iVar4 = 0; + if (bVar1) { + bVar1 = false; + local_c = FUN_004dfd90(); + } + iVar3 = FUN_004dfd90(); + if (5000 < iVar3 - local_c) { + FUN_00490adc(s_timeout_in_outRecord_005085ac); + return 0; + } + } + iVar4 = iVar4 + 1; + } + FUN_004d46ed((short)*(undefined4 *)(param_1 + 8),*param_2); + local_8 = local_8 + 1; + param_2 = param_2 + 1; + } while (local_8 < param_3); + } + return 1; +} + + + +/* @00490c9c file=? name=FUN_00490c9c */ + +/* WARNING: Removing unreachable block (ram,0x00490e78) */ +/* WARNING: Removing unreachable block (ram,0x00490e85) */ +/* WARNING: Removing unreachable block (ram,0x00490e93) */ +/* WARNING: Removing unreachable block (ram,0x00490eaa) */ +/* WARNING: Removing unreachable block (ram,0x00490eb2) */ +/* WARNING: Removing unreachable block (ram,0x00490eb8) */ +/* WARNING: Removing unreachable block (ram,0x00490ec2) */ +/* WARNING: Removing unreachable block (ram,0x00490ed1) */ +/* WARNING: Removing unreachable block (ram,0x00490ee0) */ + +undefined4 __cdecl FUN_00490c9c(int param_1,undefined4 param_2) + +{ + bool bVar1; + byte bVar2; + int iVar3; + int iVar4; + int local_10; + + bVar1 = true; + iVar4 = 0; + while (bVar2 = FUN_004d45ec((short)*(undefined4 *)(param_1 + 0x10)), (bVar2 & 1) == 0) { + if (39999 < iVar4) { + iVar4 = 0; + if (bVar1) { + bVar1 = false; + local_10 = FUN_004dfd90(); + } + iVar3 = FUN_004dfd90(); + if (5000 < iVar3 - local_10) { + FUN_00490adc(s_timeout_in_outRecord_005085c2); + return 0; + } + } + iVar4 = iVar4 + 1; + } + FUN_004d46ed((short)*(undefined4 *)(param_1 + 8),(byte)param_2); + bVar1 = true; + iVar4 = 0; + while (bVar2 = FUN_004d45ec((short)*(undefined4 *)(param_1 + 0x10)), (bVar2 & 1) == 0) { + if (39999 < iVar4) { + iVar4 = 0; + if (bVar1) { + bVar1 = false; + local_10 = FUN_004dfd90(); + } + iVar3 = FUN_004dfd90(); + if (5000 < iVar3 - local_10) { + FUN_00490adc(s_timeout_in_outRecord_005085d8); + return 0; + } + } + iVar4 = iVar4 + 1; + } + FUN_004d46ed((short)*(undefined4 *)(param_1 + 8),(byte)((uint)param_2 >> 8)); + bVar1 = true; + iVar4 = 0; + do { + bVar2 = FUN_004d45ec((short)*(undefined4 *)(param_1 + 0x10)); + if ((bVar2 & 1) != 0) { + FUN_004d46ed((short)*(undefined4 *)(param_1 + 8),(byte)((uint)param_2 >> 0x10)); + bVar1 = true; + iVar4 = 0; + do { + bVar2 = FUN_004d45ec((short)*(undefined4 *)(param_1 + 0x10)); + if ((bVar2 & 1) != 0) { + FUN_004d46ed((short)*(undefined4 *)(param_1 + 8),(byte)((uint)param_2 >> 0x18)); + return 1; + } + if (39999 < iVar4) { + iVar4 = 0; + if (bVar1) { + bVar1 = false; + local_10 = FUN_004dfd90(); + } + iVar3 = FUN_004dfd90(); + if (5000 < iVar3 - local_10) { + FUN_00490adc(s_timeout_in_outRecord_00508604); + return 0; + } + } + iVar4 = iVar4 + 1; + } while( true ); + } + if (39999 < iVar4) { + iVar4 = 0; + if (bVar1) { + bVar1 = false; + local_10 = FUN_004dfd90(); + } + iVar3 = FUN_004dfd90(); + if (5000 < iVar3 - local_10) { + FUN_00490adc(s_timeout_in_outRecord_005085ee); + return 0; + } + } + iVar4 = iVar4 + 1; + } while( true ); +} + + + +/* @00490ef0 file=? name=FUN_00490ef0 */ + +byte __cdecl FUN_00490ef0(int param_1) + +{ + byte bVar1; + + bVar1 = FUN_004d45ec((short)*(undefined4 *)(param_1 + 0xc)); + return bVar1 & 1; +} + + + +/* @00490f08 file=? name=FUN_00490f08 */ + +undefined4 __cdecl FUN_00490f08(int param_1,undefined1 *param_2,int param_3) + +{ + byte bVar1; + undefined1 uVar2; + int iVar3; + undefined3 extraout_var; + int iVar4; + int iVar5; + int local_8; + + iVar3 = FUN_004dfd90(); + local_8 = 0; + if (0 < param_3) { + do { + iVar5 = 0; + while (bVar1 = FUN_00490ef0(param_1), CONCAT31(extraout_var,bVar1) == 0) { + if (39999 < iVar5) { + iVar5 = 0; + iVar4 = FUN_004dfd90(); + if (5000 < iVar4 - iVar3) { + FUN_00490adc(s_timeout_in_inRecord_00508630); + return 0; + } + } + iVar5 = iVar5 + 1; + } + uVar2 = FUN_004d45ec((short)*(undefined4 *)(param_1 + 4)); + *param_2 = uVar2; + param_2 = param_2 + 1; + local_8 = local_8 + 1; + } while (local_8 < param_3); + } + return 1; +} + + + +/* @00490f8c file=? name=FUN_00490f8c */ + +undefined4 __cdecl FUN_00490f8c(int param_1,undefined1 *param_2,int param_3) + +{ + byte bVar1; + undefined1 uVar2; + undefined3 extraout_var; + int iVar3; + + iVar3 = 0; + if (0 < param_3) { + do { + do { + bVar1 = FUN_00490ef0(param_1); + } while (CONCAT31(extraout_var,bVar1) == 0); + uVar2 = FUN_004d45ec((short)*(undefined4 *)(param_1 + 4)); + *param_2 = uVar2; + param_2 = param_2 + 1; + iVar3 = iVar3 + 1; + } while (iVar3 < param_3); + } + return 1; +} + + + +/* @00490fc8 file=? name=FUN_00490fc8 */ + +void __cdecl FUN_00490fc8(undefined4 *param_1,undefined2 *param_2,uint param_3) + +{ + uint uVar1; + + uVar1 = param_3 >> 1; + while (uVar1 != 0) { + uVar1 = uVar1 - 1; + out(*param_2,(ushort)*param_1 ^ 4); + param_2 = param_2 + 1; + } + return; +} + + + +/* @00490fec file=? name=FUN_00490fec */ + +void __cdecl +FUN_00490fec(undefined4 *param_1,int param_2,undefined4 *param_3,undefined4 param_4,uint param_5, + int param_6,int param_7) + +{ + undefined4 *puVar1; + uint local_14; + undefined4 local_c; + undefined4 local_8; + + local_8 = 0; + if (0x400 < (int)param_5) { + FUN_004d771c(s_Attempt_to_send__d_bytes_in_pack_00508645); + FUN_004dee24(9); + } + if (param_6 == 0) { + FUN_004907a4((undefined1 *)&local_c,param_5 + 4 | 0x40ff0000); + } + else { + if ((param_5 & 1) != 0) { + param_5 = param_5 + 1; + } + FUN_004907a4((undefined1 *)&local_c,param_2 << 0x10 | param_5 | 0xc0000000); + } + DAT_00508570 = local_c; + if (param_7 == 0) { + puVar1 = (undefined4 *)&DAT_00524694; + local_14 = param_5; + if (param_6 == 0) { + puVar1 = (undefined4 *)FUN_004907a4(&DAT_00524694,param_4); + local_14 = param_5 + 4; + } + FUN_0049088c(puVar1,param_3,param_5); + FUN_00490fc8(param_1,(undefined2 *)&DAT_00524694,local_14 + 3 & 0xfffffffc); + FUN_00490c9c((int)param_1,local_c); + } + else { + if (param_6 == 0) { + FUN_004907a4((undefined1 *)&local_8,param_4); + FUN_00490fc8(param_1,(undefined2 *)&local_8,4); + } + FUN_00490fc8(param_1,(undefined2 *)param_3,param_5 + 3 & 0xfffffffc); + FUN_00490c9c((int)param_1,local_c); + } + return; +} + + + +/* @00491118 file=? name=FUN_00491118 */ + +undefined4 __cdecl +FUN_00491118(int *param_1,int param_2,byte *param_3,undefined4 param_4,uint param_5,int param_6, + int param_7) + +{ + undefined4 uVar1; + int iVar2; + byte local_8 [4]; + + if (param_1[1] == 0) { + uVar1 = FUN_00490c04(param_1[2],param_3,param_5); + } + else if (*param_1 == 0) { + if (0x400 < (int)param_5) { + FUN_004d771c(s_Attempt_to_send__d_bytes_in_pack_00508672); + FUN_004dee24(9); + } + if (param_6 == 0) { + FUN_004907a4(local_8,param_5 + 4 | 0xff0000); + } + else { + if ((param_5 & 1) != 0) { + param_5 = param_5 + 1; + } + FUN_004907a4(local_8,param_2 << 0x10 | param_5 | 0x80000000); + } + iVar2 = FUN_00490c04(param_1[2],local_8,4); + if (iVar2 == 0) { + FUN_004d771c(s_send_protocol_failed_to_squirt_l_0050869f); + uVar1 = 0; + } + else { + if (param_6 == 0) { + FUN_004907a4(local_8,param_4); + iVar2 = FUN_00490c04(param_1[2],local_8,4); + if (iVar2 == 0) { + FUN_004d771c(s_send_protocol_failed_to_squirt_a_005086da); + return 0; + } + } + if (param_7 == 0) { + FUN_0049088c((undefined4 *)&DAT_00524694,(undefined4 *)param_3,param_5); + param_3 = &DAT_00524694; + } + iVar2 = FUN_00490c04(param_1[2],param_3,param_5); + if (iVar2 == 0) { + FUN_004d771c(s_send_protocol_failed_to_squirt_d_00508714); + uVar1 = 0; + } + else { + if (param_6 == 0) { + DAT_00508574 = DAT_00508574 + 1; + } + uVar1 = 1; + } + } + } + else { + uVar1 = FUN_00490fec((undefined4 *)param_1[2],param_2,(undefined4 *)param_3,param_4,param_5, + param_6,param_7); + } + return uVar1; +} + + + +/* @00491294 file=? name=FUN_00491294 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl +FUN_00491294(int param_1,uint *param_2,undefined4 *param_3,uint *param_4,int *param_5) + +{ + int iVar1; + undefined4 uVar2; + uint uVar3; + uint local_c; + undefined1 local_8 [4]; + + _DAT_00508578 = _DAT_00508578 + 1; + iVar1 = FUN_00490f08(*(int *)(param_1 + 8),local_8,4); + if (iVar1 == 0) { + FUN_004d771c(s_Protocol_error___length_word_not_005087af); + uVar2 = 0; + } + else { + FUN_00490974(local_8,(undefined1 *)&local_c); + _DAT_0050857c = local_c; + *param_2 = (int)local_c >> 0x10 & 0xff; + if ((local_c & 0x80000000) == 0) { + *param_5 = 0; + } + else { + *param_5 = 1; + } + uVar3 = local_c & 0xffff; + if (uVar3 < 0x411) { + iVar1 = FUN_00490f8c(*(int *)(param_1 + 8),(undefined1 *)param_3,uVar3); + if (iVar1 == 0) { + FUN_004d771c(s_Protocol_error____d_bytes_not_co_0050877e); + uVar2 = 0; + } + else { + if (*param_5 == 0) { + FUN_0049088c(param_3,param_3,uVar3); + } + *param_4 = uVar3; + uVar2 = 1; + } + } + else { + FUN_004d771c(s_Protocol_error___length__d_too_b_00508748); + uVar2 = 0; + } + } + return uVar2; +} + + + +/* @00491380 file=? name=FUN_00491380 */ + +undefined8 __cdecl FUN_00491380(undefined4 *param_1,undefined4 param_2) + +{ + byte bVar1; + undefined3 extraout_var; + undefined4 extraout_EDX; + undefined2 extraout_var_00; + undefined6 uVar2; + + switch(param_2) { + case 0: + uVar2 = FUN_00490b84(param_1[2]); + param_2 = CONCAT22(extraout_var_00,(short)((uint6)uVar2 >> 0x20)); + break; + case 1: + param_2 = 0; + *param_1 = 0; + param_1[1] = 1; + break; + case 2: + *param_1 = 1; + param_1[1] = 1; + break; + case 3: + *param_1 = 0; + param_2 = 0; + param_1[1] = 0; + break; + case 4: + bVar1 = FUN_00490ef0(param_1[2]); + return CONCAT44(extraout_EDX,CONCAT31(extraout_var,bVar1)); + } + return CONCAT44(param_2,1); +} + + + +/* @004913f0 file=? name=FUN_004913f0 */ + +undefined4 * __thiscall FUN_004913f0(void *this,undefined4 param_1) + +{ + int *piVar1; + undefined4 *puVar2; + + piVar1 = FUN_00490af8(this,param_1); + if (piVar1 == (int *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = (undefined4 *)FUN_00452c38(0xc); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2[2] = piVar1; + *puVar2 = 0; + puVar2[1] = 0; + DAT_00508568 = 1; + } + } + return puVar2; +} + + + +/* @00491454 file=? name=FUN_00491454 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_00491454(void) + +{ + _DAT_0050856c = 1; + DAT_00508570 = 1; + return; +} + + + +/* @0049146c file=? name=FUN_0049146c */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_0049146c(float *param_1,float *param_2,float param_3) + +{ + float10 fVar1; + undefined4 local_8; + + if (DAT_005087dc == 0) { + local_8 = param_3; + } + else { + local_8 = param_3 * _DAT_004914bc; + } + fVar1 = (float10)FUN_004dd0f4(SUB84((double)local_8,0),(int)((ulonglong)(double)local_8 >> 0x20)); + *param_1 = (float)fVar1; + fVar1 = (float10)FUN_004dc9b4(SUB84((double)local_8,0),(int)((ulonglong)(double)local_8 >> 0x20)); + *param_2 = (float)fVar1; + return; +} + + + +/* @004914c0 file=? name=FUN_004914c0 */ + +void __cdecl FUN_004914c0(undefined4 *param_1,float *param_2,float *param_3) + +{ + float *pfVar1; + int iVar2; + float local_54 [16]; + float local_14; + float local_10; + float local_c; + float local_8; + + pfVar1 = local_54; + iVar2 = 0; + do { + local_8 = *param_2; + local_c = param_2[1]; + local_10 = param_2[2]; + local_14 = param_2[3]; + *pfVar1 = local_14 * param_3[0xc] + + local_10 * param_3[8] + local_c * param_3[4] + local_8 * *param_3; + pfVar1[1] = local_14 * param_3[0xd] + + local_10 * param_3[9] + local_c * param_3[5] + local_8 * param_3[1]; + pfVar1[2] = local_14 * param_3[0xe] + + local_10 * param_3[10] + local_c * param_3[6] + local_8 * param_3[2]; + pfVar1[3] = local_14 * param_3[0xf] + + local_10 * param_3[0xb] + local_c * param_3[7] + local_8 * param_3[3]; + param_2 = param_2 + 4; + pfVar1 = pfVar1 + 4; + iVar2 = iVar2 + 1; + } while (iVar2 < 4); + FUN_004d4918(param_1,local_54,0x40); + return; +} + + + +/* @00491594 file=? name=FUN_00491594 */ + +void __cdecl FUN_00491594(int param_1,float param_2) + +{ + float fVar1; + float local_c; + float local_8; + + FUN_0049146c(&local_c,&local_8,param_2); + fVar1 = *(float *)(param_1 + 4); + *(float *)(param_1 + 4) = fVar1 * local_8 - *(float *)(param_1 + 8) * local_c; + *(float *)(param_1 + 8) = *(float *)(param_1 + 8) * local_8 + fVar1 * local_c; + fVar1 = *(float *)(param_1 + 0x14); + *(float *)(param_1 + 0x14) = fVar1 * local_8 - *(float *)(param_1 + 0x18) * local_c; + *(float *)(param_1 + 0x18) = *(float *)(param_1 + 0x18) * local_8 + fVar1 * local_c; + fVar1 = *(float *)(param_1 + 0x24); + *(float *)(param_1 + 0x24) = fVar1 * local_8 - *(float *)(param_1 + 0x28) * local_c; + *(float *)(param_1 + 0x28) = *(float *)(param_1 + 0x28) * local_8 + fVar1 * local_c; + fVar1 = *(float *)(param_1 + 0x34); + *(float *)(param_1 + 0x34) = fVar1 * local_8 - *(float *)(param_1 + 0x38) * local_c; + *(float *)(param_1 + 0x38) = *(float *)(param_1 + 0x38) * local_8 + fVar1 * local_c; + return; +} + + + +/* @00491670 file=? name=FUN_00491670 */ + +void __cdecl FUN_00491670(float *param_1,float param_2) + +{ + float fVar1; + float local_c; + float local_8; + + FUN_0049146c(&local_c,&local_8,param_2); + fVar1 = *param_1; + *param_1 = param_1[2] * local_c + fVar1 * local_8; + param_1[2] = param_1[2] * local_8 - fVar1 * local_c; + fVar1 = param_1[4]; + param_1[4] = param_1[6] * local_c + fVar1 * local_8; + param_1[6] = param_1[6] * local_8 - fVar1 * local_c; + fVar1 = param_1[8]; + param_1[8] = param_1[10] * local_c + fVar1 * local_8; + param_1[10] = param_1[10] * local_8 - fVar1 * local_c; + fVar1 = param_1[0xc]; + param_1[0xc] = param_1[0xe] * local_c + fVar1 * local_8; + param_1[0xe] = param_1[0xe] * local_8 - fVar1 * local_c; + return; +} + + + +/* @00491748 file=? name=FUN_00491748 */ + +void __cdecl FUN_00491748(float *param_1,float param_2) + +{ + float fVar1; + float local_c; + float local_8; + + FUN_0049146c(&local_c,&local_8,param_2); + fVar1 = *param_1; + *param_1 = fVar1 * local_8 - param_1[1] * local_c; + param_1[1] = param_1[1] * local_8 + fVar1 * local_c; + fVar1 = param_1[4]; + param_1[4] = fVar1 * local_8 - param_1[5] * local_c; + param_1[5] = param_1[5] * local_8 + fVar1 * local_c; + fVar1 = param_1[8]; + param_1[8] = fVar1 * local_8 - param_1[9] * local_c; + param_1[9] = param_1[9] * local_8 + fVar1 * local_c; + fVar1 = param_1[0xc]; + param_1[0xc] = fVar1 * local_8 - param_1[0xd] * local_c; + param_1[0xd] = param_1[0xd] * local_8 + fVar1 * local_c; + return; +} + + + +/* @00491820 file=? name=FUN_00491820 */ + +void __cdecl FUN_00491820(undefined4 param_1) + +{ + DAT_005087dc = param_1; + return; +} + + + +/* @00491830 file=? name=FUN_00491830 */ + +void __cdecl FUN_00491830(undefined4 *param_1) + +{ + *param_1 = 0x3f800000; + param_1[1] = 0; + param_1[2] = 0; + param_1[3] = 0; + param_1[4] = 0; + param_1[5] = 0x3f800000; + param_1[6] = 0; + param_1[7] = 0; + param_1[8] = 0; + param_1[9] = 0; + param_1[10] = 0x3f800000; + param_1[0xb] = 0; + param_1[0xc] = 0; + param_1[0xd] = 0; + param_1[0xe] = 0; + param_1[0xf] = 0x3f800000; + return; +} + + + +/* @00491890 file=? name=FUN_00491890 */ + +void __cdecl +FUN_00491890(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) + +{ + float local_44 [13]; + undefined4 local_10; + undefined4 local_c; + undefined4 local_8; + + local_44[0] = 1.0; + local_44[1] = 0.0; + local_44[2] = 0.0; + local_44[3] = 0.0; + local_44[4] = 0.0; + local_44[5] = 1.0; + local_44[6] = 0.0; + local_44[7] = 0.0; + local_44[8] = 0.0; + local_44[9] = 0.0; + local_44[10] = 1.0; + local_44[0xb] = 0.0; + local_8 = 0x3f800000; + local_44[0xc] = (float)param_2; + local_10 = param_3; + local_c = param_4; + FUN_004914c0(param_1,(float *)param_1,local_44); + return; +} + + + +/* @00491914 file=? name=FUN_00491914 */ + +void __cdecl FUN_00491914(float *param_1,float param_2,int param_3) + +{ + if (param_3 == 0) { + FUN_00491594((int)param_1,param_2); + return; + } + if (param_3 == 1) { + FUN_00491670(param_1,param_2); + return; + } + FUN_00491748(param_1,param_2); + return; +} + + + +/* @00491950 file=? name=FUN_00491950 */ + +void __cdecl FUN_00491950(undefined4 *param_1,float param_2,undefined4 param_3,undefined4 param_4) + +{ + float local_44 [6]; + undefined4 local_2c; + undefined4 local_28; + undefined4 local_24; + undefined4 local_20; + undefined4 local_1c; + undefined4 local_18; + undefined4 local_14; + undefined4 local_10; + undefined4 local_c; + undefined4 local_8; + + local_44[1] = 0.0; + local_44[2] = 0.0; + local_44[3] = 0.0; + local_44[4] = 0.0; + local_2c = 0; + local_28 = 0; + local_24 = 0; + local_20 = 0; + local_18 = 0; + local_14 = 0; + local_10 = 0; + local_c = 0; + local_8 = 0x3f800000; + local_44[0] = param_2; + local_44[5] = (float)param_3; + local_1c = param_4; + FUN_004914c0(param_1,(float *)param_1,local_44); + return; +} + + + +/* @004919d4 file=? name=FUN_004919d4 */ + +void __cdecl FUN_004919d4(undefined4 *param_1,float *param_2,float *param_3) + +{ + FUN_004914c0(param_1,param_2,param_3); + return; +} + + + +/* @004919f0 file=? name=FUN_004919f0 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004919f0(float *param_1,float *param_2) + +{ + float fVar1; + float fVar2; + float fVar3; + float fVar4; + float fVar5; + float fVar6; + float fVar7; + float fVar8; + float fVar9; + float fVar10; + float fVar11; + float fVar12; + float fVar13; + float fVar14; + float fVar15; + float fVar16; + + param_1[3] = 0.0; + param_1[7] = 0.0; + param_1[0xb] = 0.0; + param_1[0xf] = 1.0; + fVar1 = *param_2; + fVar2 = param_2[1]; + fVar3 = param_2[2]; + fVar4 = param_2[4]; + fVar5 = param_2[5]; + fVar6 = param_2[6]; + fVar7 = param_2[8]; + fVar8 = param_2[9]; + fVar9 = param_2[10]; + fVar10 = param_2[0xc]; + fVar11 = param_2[0xd]; + fVar12 = param_2[0xe]; + fVar13 = fVar5 * fVar9 - fVar8 * fVar6; + fVar14 = -(fVar4 * fVar9 - fVar7 * fVar6); + fVar15 = fVar4 * fVar8 - fVar7 * fVar5; + fVar16 = _DAT_00491bd8 / (fVar3 * fVar15 + fVar2 * fVar14 + fVar1 * fVar13); + fVar13 = fVar16 * fVar13; + fVar14 = fVar16 * fVar14; + fVar15 = fVar16 * fVar15; + *param_1 = fVar13; + param_1[4] = fVar14; + param_1[8] = fVar15; + param_1[0xc] = -(fVar12 * fVar15 + fVar11 * fVar14 + fVar10 * fVar13); + fVar13 = -fVar16 * (fVar2 * fVar9 - fVar8 * fVar3); + fVar9 = (fVar1 * fVar9 - fVar7 * fVar3) * fVar16; + fVar7 = -fVar16 * (fVar1 * fVar8 - fVar7 * fVar2); + param_1[1] = fVar13; + param_1[5] = fVar9; + param_1[9] = fVar7; + param_1[0xd] = -(fVar12 * fVar7 + fVar11 * fVar9 + fVar10 * fVar13); + fVar7 = (fVar2 * fVar6 - fVar5 * fVar3) * fVar16; + fVar3 = -fVar16 * (fVar1 * fVar6 - fVar4 * fVar3); + fVar16 = (fVar1 * fVar5 - fVar4 * fVar2) * fVar16; + param_1[2] = fVar7; + param_1[6] = fVar3; + param_1[10] = fVar16; + param_1[0xe] = -(fVar12 * fVar16 + fVar11 * fVar3 + fVar10 * fVar7); + return; +} + + + +/* @00491c2c file=? name=FUN_00491c2c */ + +void __cdecl FUN_00491c2c(int param_1) + +{ + if (param_1 != 0) { + FUN_00491830((undefined4 *)(param_1 + 0x18)); + return; + } + FUN_004d771c(s_dpl_error___NULL_dcs_in_dpl_IdMa_005087e0); + FUN_004dee24(9); + return; +} + + + +/* @00491c58 file=? name=FUN_00491c58 */ + +void __cdecl FUN_00491c58(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) + +{ + if (param_1 != 0) { + FUN_00491890((undefined4 *)(param_1 + 0x18),param_2,param_3,param_4); + return; + } + FUN_004d771c(s_dpl_error___NULL_dcs_in_dpl_Tran_00508809); + FUN_004dee24(9); + return; +} + + + +/* @00491c90 file=? name=FUN_00491c90 */ + +void __cdecl FUN_00491c90(int param_1,float param_2,int param_3) + +{ + if (param_1 != 0) { + FUN_00491914((float *)(param_1 + 0x18),param_2,param_3); + return; + } + FUN_004d771c(s_dpl_error___NULL_dcs_in_dpl_Rota_00508833); + FUN_004dee24(9); + return; +} + + + +/* @00491cc4 file=? name=FUN_00491cc4 */ + +void __cdecl FUN_00491cc4(int param_1,float param_2,undefined4 param_3,undefined4 param_4) + +{ + if (param_1 != 0) { + FUN_00491950((undefined4 *)(param_1 + 0x18),param_2,param_3,param_4); + return; + } + FUN_004d771c(s_dpl_error___NULL_dcs_in_dpl_Scal_0050885a); + FUN_004dee24(9); + return; +} + + + +/* @00491cfc file=? name=FUN_00491cfc */ + +void FUN_00491cfc(void) + +{ + DAT_005087dc = 1; + return; +} + + + +/* @00491d08 file=? name=FUN_00491d08 */ + +void __cdecl FUN_00491d08(uint *param_1) + +{ + DAT_00524ad8 = (*param_1 & 0xffff) << 4; + DAT_00524adc = ((int)*param_1 >> 0x10 & 0xffffU) << 4; + DAT_00524ae0 = (param_1[1] & 0xffff) << 4; + DAT_00524ae4 = ((int)param_1[1] >> 0x10 & 0xffffU) << 4; + DAT_00524ae8 = param_1[2]; + DAT_00524aec = FUN_00487e7c(&DAT_005088a8,param_1[3],4); + if (DAT_00524aec == 0) { + DAT_00524af0 = 0; + DAT_00524af4 = 0; + DAT_00524af8 = 0; + } + else { + DAT_00524af0 = FUN_00487e7c(&DAT_005088ad,param_1[7],5); + DAT_00524af8 = FUN_00487e7c(&DAT_005088b2,param_1[8],9); + DAT_00524af4 = FUN_00487e7c(&DAT_005088b7,param_1[9],10); + FUN_004d4918(&DAT_00524afc,param_1 + 4,0xc); + } + return; +} + + + +/* @00491df4 file=? name=FUN_00491df4 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl FUN_00491df4(int param_1,byte *param_2) + +{ + int iVar1; + undefined4 *puVar2; + undefined1 *puVar3; + char *pcVar4; + undefined4 uVar5; + int local_10; + int local_c; + short local_6; + + local_6 = 0; + _DAT_0050889c = _DAT_0050889c + 1; + DAT_00508898 = (int)(char)*param_2; + switch(DAT_00508898) { + case 0xd: + puVar3 = FUN_00490974(param_2 + 1,(undefined1 *)&local_10); + puVar3 = FUN_00490944(puVar3,(undefined1 *)&local_6); + puVar3[local_6] = 0; + if ((local_10 == 1) || (local_10 == 2)) { + FUN_004d771c(s__d___s_00508901); + puVar3 = FUN_00490764(param_2,0); + FUN_00490774(puVar3,CONCAT22((short)((uint)puVar3 >> 0x10),local_6)); + uVar5 = FUN_00491118(DAT_00508894,param_1,param_2,0,3,1,1); + } + else { + FUN_004d771c(s____ERROR___i860_attempting_to_fw_00508908); + uVar5 = 0; + } + break; + default: + FUN_004d771c(s_iserver_transaction__unexpected_t_0050894c); + uVar5 = 0; + break; + case 0x10: + puVar3 = FUN_00490764(param_2,0); + puVar3 = FUN_00490764(puVar3,1); + FUN_00490764(puVar3,0); + uVar5 = FUN_00491118(DAT_00508894,param_1,param_2,0,3,1,1); + break; + case 0x18: + puVar3 = FUN_00490974(param_2 + 1,(undefined1 *)&local_c); + puVar3 = FUN_00490944(puVar3,(undefined1 *)&local_6); + puVar3[local_6] = 0; + if ((local_c == 1) || (local_c == 2)) { + FUN_004d771c(s__d___s_005088c9); + puVar3 = FUN_00490764(param_2,0); + FUN_00490774(puVar3,CONCAT22((short)((uint)puVar3 >> 0x10),local_6)); + uVar5 = FUN_00491118(DAT_00508894,param_1,param_2,0,3,1,1); + } + else { + FUN_004d771c(s_i860_error___attempt_to_fputbloc_005088d0); + uVar5 = 0; + } + break; + case 0x20: + pcVar4 = FUN_00490944(param_2 + 1,(undefined1 *)&local_6); + pcVar4[local_6] = '\0'; + pcVar4 = (char *)FUN_004dee74(pcVar4); + iVar1 = FUN_004d4a78(pcVar4); + local_6 = (short)iVar1; + puVar3 = FUN_00490764(param_2,0); + puVar2 = (undefined4 *)FUN_00490774(puVar3,CONCAT22((short)((uint)puVar3 >> 0x10),local_6)); + FUN_0049086c(puVar2,(undefined4 *)pcVar4,(int)local_6); + uVar5 = FUN_00491118(DAT_00508894,param_1,param_2,0,(int)local_6 + 3,1,1); + break; + case 0x23: + FUN_004d771c(s_i860_has_unexpectedly_exited_0050892e); + FUN_004dee24(9); + uVar5 = 0; + break; + case 0x28: + iVar1 = FUN_004d4a78(s_VelociRender_005088bc); + local_6 = (short)iVar1; + puVar3 = FUN_00490754(param_2,0); + puVar2 = (undefined4 *)FUN_00490774(puVar3,CONCAT22((short)((uint)puVar3 >> 0x10),local_6)); + FUN_0049086c(puVar2,(undefined4 *)s_VelociRender_005088bc,(int)local_6); + uVar5 = FUN_00491118(DAT_00508894,param_1,param_2,0,(int)local_6 + 3,1,1); + break; + case 0x2a: + puVar3 = FUN_00490754(param_2,0); + puVar3 = FUN_00490754(puVar3,0xf); + puVar3 = FUN_00490754(puVar3,1); + puVar3 = FUN_00490754(puVar3,1); + FUN_00490754(puVar3,1); + uVar5 = FUN_00491118(DAT_00508894,param_1,param_2,0,5,1,1); + } + return uVar5; +} + + + +/* @00492150 file=? name=FUN_00492150 */ + +void FUN_00492150(void) + +{ + byte *pbVar1; + int iVar2; + undefined8 uVar3; + uint local_c; + int local_8; + + while( true ) { + pbVar1 = DAT_00524ad4; + if (DAT_00508884 != 0) { + return; + } + uVar3 = FUN_00491380(DAT_00508894,4); + if ((int)uVar3 == 0) break; + iVar2 = FUN_00491294((int)DAT_00508894,&local_c,(undefined4 *)pbVar1,(uint *)&DAT_00508884, + &local_8); + if (iVar2 == 0) { + FUN_004d771c(s____ERROR___rcv_protocol_fail_dur_0050897c); + FUN_004dee24(9); + } + if (local_8 != 0) { + DAT_00508884 = 0; + iVar2 = FUN_00491df4(local_c,pbVar1); + if (iVar2 == 0) { + FUN_004d771c(s____ERROR___iserver_transaction_f_005089bc); + FUN_004dee24(9); + } + } + } + return; +} + + + +/* @004921ec file=? name=FUN_004921ec */ + +undefined4 __cdecl FUN_004921ec(undefined4 *param_1,uint *param_2) + +{ + byte *pbVar1; + int iVar2; + uint uVar3; + int local_c; + uint local_8; + + pbVar1 = DAT_00524ad4; + local_c = 1; + FUN_00492150(); + if (DAT_00508884 == 0) { + do { + iVar2 = FUN_00491294(DAT_00508894,&local_8,(undefined4 *)pbVar1,&DAT_00508884,&local_c); + if (iVar2 == 0) { + FUN_004d771c(s____ERROR___velocirender_receive_t_005089f8); + return 0; + } + if ((local_c != 0) && (iVar2 = FUN_00491df4(local_8,pbVar1), iVar2 == 0)) { + FUN_004d771c(s____ERROR___velocirender_receive_f_00508a35); + return 0; + } + } while (local_c != 0); + uVar3 = DAT_00508884 & 0xff; + *param_2 = uVar3; + DAT_00508884 = 0; + if (uVar3 < 8) { + FUN_004d771c(s____ERROR___velocirender_received_00508a77); + FUN_004dee24(9); + } + *param_1 = *(undefined4 *)pbVar1; + } + else { + *param_1 = *(undefined4 *)pbVar1; + *param_2 = DAT_00508884 & 0xff; + DAT_00508884 = 0; + } + return 1; +} + + + +/* @004922e0 file=? name=FUN_004922e0 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __thiscall +FUN_004922e0(void *this,int *param_1,undefined4 *param_2,uint *param_3,uint param_4) + +{ + int iVar1; + int iVar2; + void *local_8; + + iVar1 = DAT_00524ad4; + _DAT_00508890 = _DAT_00508890 + 1; + local_8 = this; + do { + iVar2 = FUN_004921ec(param_1,(uint *)&local_8); + if (iVar2 == 0) { + return 0; + } + if (*param_1 == 9) { + if (DAT_00508880 == 0) { + FUN_004d4918((undefined4 *)&DAT_00524a94,(undefined4 *)(iVar1 + 4),(uint)local_8); + FUN_00491d08((uint *)&DAT_00524a94); + DAT_00508880 = 1; + } + else { + FUN_004d771c(s_dpl_internal_error___2_frame_ack_00508aa7); + FUN_004dee24(9); + } + } + } while (*param_1 == 9); + DAT_005088a4 = 0; + local_8 = (void *)((int)local_8 - 4); + if ((int)param_4 < (int)local_8) { + FUN_004d771c(s____ERROR___Message_too_long___d__00508ad4); + FUN_004d4918(param_2,(undefined4 *)(iVar1 + 4),param_4); + *param_3 = param_4; + } + else { + FUN_004d4918(param_2,(undefined4 *)(iVar1 + 4),(uint)local_8); + *param_3 = (uint)local_8; + } + return 1; +} + + + +/* @004923cc file=? name=FUN_004923cc */ + +undefined4 __cdecl FUN_004923cc(int param_1) + +{ + int *piVar1; + int iVar2; + uint local_c; + int local_8; + + piVar1 = DAT_00524ad4; + if (DAT_00508880 != 0) { + return 1; + } + FUN_00492150(); + if (DAT_00508884 == 0) { + if (param_1 == 0) { + return 0; + } + iVar2 = FUN_004921ec(&local_8,&local_c); + if (iVar2 == 0) { + FUN_004d771c(s_velocirender_input_failed_in_vr__00508b6c); + FUN_004dee24(9); + } + if (local_8 == 9) { + FUN_004d4918((undefined4 *)&DAT_00524a94,piVar1 + 1,local_c); + FUN_00491d08((uint *)&DAT_00524a94); + DAT_00508880 = 1; + DAT_00508884 = 0; + return 1; + } + if (local_8 == 0x1f) { + FUN_004d771c(s_flush_artic___00508b96); + } + FUN_004d771c(s_dpl_error___unsolicited_input_du_00508ba5); + iVar2 = 0; + if (0 < (int)local_c) { + do { + FUN_004d771c(s_0x_x_00508be0); + iVar2 = iVar2 + 1; + } while (iVar2 < (int)local_c); + } + FUN_004dee24(9); + } + else { + local_8 = *piVar1; + if (local_8 == 9) { + FUN_004d4918((undefined4 *)&DAT_00524a94,piVar1 + 1,DAT_00508884); + FUN_00491d08((uint *)&DAT_00524a94); + DAT_00508880 = 1; + DAT_00508884 = 0; + return 1; + } + FUN_004d771c(s_dpl_error___unsolicited_input_du_00508b1c); + if (local_8 == 0x1f) { + FUN_004d771c(s_flush_artic___00508b56); + } + for (iVar2 = 0; iVar2 < (int)DAT_00508884; iVar2 = iVar2 + 1) { + FUN_004d771c(s_0x_x_00508b65); + } + FUN_004dee24(9); + } + return 0; +} + + + +/* @00492580 file=? name=FUN_00492580 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl FUN_00492580(int param_1,byte *param_2,uint param_3,int param_4) + +{ + int iVar1; + + FUN_00492150(); + DAT_005088a4 = DAT_005088a4 + 1; + if (param_1 == 9) { + if (DAT_00508880 == 0) { + FUN_004923cc(1); + } + DAT_00508880 = 0; + DAT_005088a0 = -1; + } + DAT_005088a0 = DAT_005088a0 + 1; + _DAT_0050888c = _DAT_0050888c + 1; + if ((param_4 == 0) && (DAT_00508568 == 0)) { + iVar1 = 0; + } + else { + iVar1 = 1; + } + iVar1 = FUN_00491118(DAT_00508894,0xff,param_2,param_1,param_3,0,iVar1); + if (iVar1 == 0) { + FUN_004d771c(s____ERROR___send_protocol_failed_d_00508be7); + FUN_004dee24(9); + } + return 1; +} + + + +/* @00492624 file=? name=FUN_00492624 */ + +undefined4 __cdecl FUN_00492624(int param_1,byte *param_2,uint param_3) + +{ + int iVar1; + undefined4 uVar2; + + while( true ) { + if ((int)param_3 < 0x1fd) { + if ((param_3 == 0) || (iVar1 = FUN_00492580(param_1,param_2,param_3,1), iVar1 != 0)) { + uVar2 = 1; + } + else { + uVar2 = 0; + } + return uVar2; + } + iVar1 = FUN_00492580(param_1,param_2,0x1fc,1); + if (iVar1 == 0) break; + param_3 = param_3 - 0x1fc; + param_2 = param_2 + 0x1fc; + } + return 0; +} + + + +/* @00492680 file=? name=FUN_00492680 */ + +undefined4 __cdecl FUN_00492680(LPCSTR param_1) + +{ + int *piVar1; + undefined4 uVar2; + uint uVar3; + int iVar4; + + FUN_00491380(DAT_00508894,0); + piVar1 = FUN_004d6f54(param_1,&DAT_00508c2d); + if (piVar1 == (int *)0x0) { + FUN_004d771c(s_Couldnt_open__s_00508c30); + uVar2 = 0; + } + else { + uVar3 = FUN_004d71e0((char *)DAT_00524b0c,1,0x800,piVar1); + while (uVar3 == 0x800) { + iVar4 = FUN_00491118(DAT_00508894,0xff,DAT_00524b0c,0,0x800,0,1); + if (iVar4 == 0) { + FUN_004d6b08(piVar1); + return 0; + } + uVar3 = FUN_004d71e0((char *)DAT_00524b0c,1,0x800,piVar1); + } + FUN_004d6b08(piVar1); + if ((uVar3 == 0) || + (iVar4 = FUN_00491118(DAT_00508894,0xff,DAT_00524b0c,0,uVar3,0,1), iVar4 != 0)) { + uVar2 = 1; + } + else { + uVar2 = 0; + } + } + return uVar2; +} + + + +/* @0049276c file=? name=FUN_0049276c */ + +void __cdecl FUN_0049276c(int param_1) + +{ + int iVar1; + int iVar2; + int iVar3; + + iVar1 = FUN_004dfd90(); + iVar3 = 0; + if (0 < param_1) { + do { + do { + iVar2 = FUN_004dfd90(); + } while (iVar1 == iVar2); + iVar1 = FUN_004dfd90(); + iVar3 = iVar3 + 1; + } while (iVar3 < param_1); + } + return; +} + + + +/* @0049279c file=? name=FUN_0049279c */ + +void __cdecl FUN_0049279c(byte *param_1) + +{ + int iVar1; + + iVar1 = FUN_004d4a78((char *)param_1); + FUN_00492580(0x15,param_1,iVar1 + 1,1); + return; +} + + + +/* @004927bc file=? name=FUN_004927bc */ + +void __cdecl FUN_004927bc(int *param_1,uint param_2,int param_3) + +{ + byte *pbVar1; + uint uVar2; + + pbVar1 = DAT_00524b0c; + while( true ) { + if ((int)param_2 < 0x801) { + if (param_2 != 0) { + uVar2 = FUN_004d71e0((char *)pbVar1,1,param_2,param_1); + if (param_2 == uVar2) { + FUN_00492624(param_3,pbVar1,uVar2); + } + else { + FUN_004d771c(s_i860_MNG_file_error__file_corrup_00508c72); + } + } + return; + } + uVar2 = FUN_004d71e0((char *)pbVar1,1,0x800,param_1); + if (uVar2 != 0x800) break; + FUN_00492624(param_3,pbVar1,0x800); + param_2 = param_2 - 0x800; + } + FUN_004d771c(s_i860_MNG_file_error__file_corrup_00508c41); + return; +} + + + +/* @00492844 file=? name=FUN_00492844 */ + +undefined4 __cdecl FUN_00492844(LPCSTR param_1,byte *param_2) + +{ + byte *pbVar1; + int *piVar2; + undefined1 *puVar3; + undefined4 uVar4; + undefined8 uVar5; + undefined1 local_20 [4]; + undefined1 local_1c [4]; + undefined1 local_18 [4]; + undefined1 local_14 [4]; + uint local_10; + uint local_c; + uint local_8; + + pbVar1 = DAT_00524b0c; + FUN_0049279c(param_2); + piVar2 = FUN_004d6f54(param_1,&DAT_00508ca3); + if (piVar2 == (int *)0x0) { + uVar4 = FUN_004d771c(s_Couldnt_open_i860_file__s_00508ca6); + } + else { + FUN_004d71e0((char *)pbVar1,7,4,piVar2); + FUN_00492580(0x12,pbVar1,0x28,1); + puVar3 = FUN_00490974(pbVar1,(undefined1 *)&local_8); + puVar3 = FUN_00490974(puVar3,(undefined1 *)&local_c); + puVar3 = FUN_00490974(puVar3,(undefined1 *)&local_10); + puVar3 = FUN_00490974(puVar3,local_14); + puVar3 = FUN_00490974(puVar3,local_18); + puVar3 = FUN_00490974(puVar3,local_1c); + FUN_00490974(puVar3,local_20); + FUN_004927bc(piVar2,local_8,0x12); + FUN_004927bc(piVar2,local_c,0x13); + FUN_004927bc(piVar2,local_10,0x14); + FUN_004d6b08(piVar2); + uVar5 = FUN_00491380(DAT_00508894,2); + uVar4 = (undefined4)uVar5; + } + return uVar4; +} + + + +/* @0049295c file=? name=FUN_0049295c */ + +undefined4 __fastcall FUN_0049295c(undefined4 param_1) + +{ + int iVar1; + byte *pbVar2; + + iVar1 = FUN_004dee74(s_TRANSPUTER_00508cc1); + if (iVar1 == 0) { + return 0x150; + } + pbVar2 = &DAT_00508cd7; + iVar1 = FUN_004dee74(s_TRANSPUTER_00508ccc); + iVar1 = FUN_004d7f84(iVar1,pbVar2); + if (iVar1 == 1) { + return param_1; + } + return 0x150; +} + + + +/* @004929a8 file=? name=FUN_004929a8 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined8 __cdecl FUN_004929a8(LPCSTR param_1,int param_2,LPCSTR param_3,undefined4 param_4) + +{ + int iVar1; + undefined8 uVar2; + void *this; + undefined4 local_c; + uint local_8; + + FUN_00490ab8(); + DAT_00524ad4 = FUN_00452c38(0x800); + _DAT_00524b10 = FUN_00452c38(0x800); + this = (void *)0x800; + DAT_00524b0c = FUN_00452c38(0x800); + DAT_00508894 = FUN_004913f0(this,param_4); + FUN_00491380(DAT_00508894,3); + FUN_00492680(param_1); + FUN_00491380(DAT_00508894,1); + iVar1 = FUN_004921ec(&local_c,&local_8); + if (iVar1 == 0) { + FUN_004d771c(s_velocirender_input_failed_in_sta_00508cda); + FUN_004dee24(9); + } + if (param_2 != 0) { + FUN_004d771c(s_HSP_____get_outta_here__s_00508d0b); + FUN_004d6b9c((int *)&DAT_0051f818); + } + if (param_3 != (LPCSTR)0x0) { + FUN_00492844(param_3,(byte *)s_i860_50MHz_and_kicking_00508d27); + } + uVar2 = FUN_00491380(DAT_00508894,2); + return uVar2; +} + + + +/* @00492a90 file=? name=FUN_00492a90 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_00492a90(void) + +{ + DAT_00508880 = 1; + DAT_00508884 = 0; + _DAT_00508888 = 0; + _DAT_0050888c = 0; + _DAT_00508890 = 0; + DAT_00508894 = 0; + DAT_005088a4 = 0; + DAT_00508898 = 0; + _DAT_0050889c = 0; + DAT_005088a0 = 0; + return; +} + + + +/* @00492adc file=? name=FUN_00492adc */ + +void FUN_00492adc(void) + +{ + FUN_0049517c(); + FUN_00496558(); + FUN_00496600(); + FUN_00498c68(); + FUN_00499b48(); + FUN_0049a2d4(); + FUN_004987a4(); + FUN_004991f8(); + FUN_00497924(); + FUN_00496d10(); + FUN_00496664(); + FUN_0049a3a8(); + return; +} + + + +/* @00492b20 file=? name=FUN_00492b20 */ + +void __cdecl FUN_00492b20(undefined4 *param_1) + +{ + uint uVar1; + uint uVar2; + + uVar1 = param_1[9]; + if (uVar1 != param_1[3]) { + if (((undefined4 *)param_1[7] != (undefined4 *)param_1[6]) && (uVar1 != 0)) { + FUN_004d493c((undefined4 *)param_1[6],(undefined4 *)param_1[7],uVar1); + } + param_1[5] = param_1[5] + (param_1[8] - uVar1); + uVar2 = FUN_004d71e0((char *)(param_1[6] + uVar1),1,param_1[3] - uVar1,(int *)*param_1); + if (uVar2 == 0) { + param_1[2] = 1; + FUN_0049a300(1,s_failed_to_read_from_file_descrip_00508d85); + } + param_1[9] = param_1[9] + uVar2; + param_1[8] = uVar1 + uVar2; + param_1[7] = param_1[6]; + } + return; +} + + + +/* @00492ba0 file=? name=FUN_00492ba0 */ + +uint __cdecl FUN_00492ba0(undefined4 *param_1,uint param_2) + +{ + int iVar1; + int iVar2; + + if ((uint)param_1[9] < param_2) { + iVar1 = param_1[9]; + iVar2 = FUN_004d7270((int *)*param_1,param_2 - iVar1,1); + if (iVar2 == 0) { + param_1[5] = param_1[5] + (param_2 - iVar1) + param_1[8]; + param_1[8] = 0; + param_1[9] = 0; + } + else { + param_1[2] = 1; + FUN_0049a300(1,s_failed_to_move_file_position_for_00508daf); + param_2 = 0; + } + } + else { + param_1[9] = param_1[9] - param_2; + param_1[7] = param_1[7] + param_2; + } + return param_2; +} + + + +/* @00492c0a file=? name=FUN_00492c0a */ + +uint FUN_00492c0a(undefined4 *param_1,uint param_2) + +{ + uint uVar1; + int iVar2; + + uVar1 = param_1[5]; + if ((param_2 < uVar1) || ((uint)param_1[8] < param_2 - uVar1)) { + iVar2 = FUN_004d7270((int *)*param_1,param_2,0); + if (iVar2 == 0) { + param_1[5] = param_2; + param_1[9] = 0; + } + else { + param_1[2] = 1; + FUN_0049a300(1,s_failed_to_move_file_position_for_00508de6); + param_2 = 0; + } + } + else { + param_1[7] = param_1[6] + (param_2 - uVar1); + param_1[9] = param_1[8] - (param_2 - uVar1); + } + return param_2; +} + + + +/* @00492c0c file=? name=FUN_00492c0c */ + +uint __cdecl FUN_00492c0c(undefined4 *param_1,uint param_2) + +{ + uint uVar1; + int iVar2; + + uVar1 = param_1[5]; + if ((param_2 < uVar1) || ((uint)param_1[8] < param_2 - uVar1)) { + iVar2 = FUN_004d7270((int *)*param_1,param_2,0); + if (iVar2 == 0) { + param_1[5] = param_2; + param_1[9] = 0; + } + else { + param_1[2] = 1; + FUN_0049a300(1,s_failed_to_move_file_position_for_00508de6); + param_2 = 0; + } + } + else { + param_1[7] = param_1[6] + (param_2 - uVar1); + param_1[9] = param_1[8] - (param_2 - uVar1); + } + return param_2; +} + + + +/* @00492c84 file=? name=FUN_00492c84 */ + +undefined4 __cdecl FUN_00492c84(undefined4 *param_1) + +{ + undefined1 *puVar1; + + if ((int)param_1[9] < 1) { + FUN_00492b20(param_1); + if (param_1[2] != 0) { + return 0; + } + } + param_1[9] = param_1[9] + -1; + puVar1 = (undefined1 *)param_1[7]; + param_1[7] = param_1[7] + 1; + return CONCAT31((int3)((uint)puVar1 >> 8),*puVar1); +} + + + +/* @00492cb4 file=? name=FUN_00492cb4 */ + +undefined4 __cdecl FUN_00492cb4(undefined4 *param_1) + +{ + undefined1 uVar1; + undefined1 *puVar2; + undefined2 uVar3; + undefined2 local_6; + + if (((int)param_1[9] < 2) && (FUN_00492b20(param_1), param_1[2] != 0)) { + return 0; + } + if (param_1[1] == 0) { + local_6 = *(undefined2 *)param_1[7]; + uVar3 = (undefined2)((uint)param_1[7] >> 0x10); + param_1[7] = param_1[7] + 2; + } + else { + uVar3 = (undefined2)((uint)&local_6 >> 0x10); + puVar2 = (undefined1 *)param_1[7]; + param_1[7] = param_1[7] + 1; + uVar1 = *puVar2; + puVar2 = (undefined1 *)param_1[7]; + param_1[7] = param_1[7] + 1; + local_6 = CONCAT11(uVar1,*puVar2); + } + param_1[9] = param_1[9] + -2; + return CONCAT22(uVar3,local_6); +} + + + +/* @00492d10 file=? name=FUN_00492d10 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 __cdecl FUN_00492d10(undefined4 *param_1) + +{ + undefined1 uVar1; + undefined1 uVar2; + undefined1 uVar3; + undefined1 *puVar4; + float local_8; + + if ((3 < (int)param_1[9]) || (FUN_00492b20(param_1), local_8 = _DAT_00492d80, param_1[2] == 0)) { + if (param_1[1] == 0) { + local_8 = *(float *)param_1[7]; + param_1[7] = param_1[7] + 4; + } + else { + puVar4 = (undefined1 *)param_1[7]; + param_1[7] = param_1[7] + 1; + uVar1 = *puVar4; + puVar4 = (undefined1 *)param_1[7]; + param_1[7] = param_1[7] + 1; + uVar2 = *puVar4; + puVar4 = (undefined1 *)param_1[7]; + param_1[7] = param_1[7] + 1; + uVar3 = *puVar4; + puVar4 = (undefined1 *)param_1[7]; + param_1[7] = param_1[7] + 1; + local_8 = (float)CONCAT31(CONCAT21(CONCAT11(uVar1,uVar2),uVar3),*puVar4); + } + param_1[9] = param_1[9] + -4; + } + return (float10)local_8; +} + + + +/* @00492d84 file=? name=FUN_00492d84 */ + +undefined4 __cdecl FUN_00492d84(undefined4 *param_1) + +{ + undefined1 uVar1; + undefined1 uVar2; + undefined1 uVar3; + undefined1 *puVar4; + undefined4 local_8; + + if (((int)param_1[9] < 4) && (FUN_00492b20(param_1), param_1[2] != 0)) { + return 0; + } + if (param_1[1] == 0) { + local_8 = *(undefined4 *)param_1[7]; + param_1[7] = param_1[7] + 4; + } + else { + puVar4 = (undefined1 *)param_1[7]; + param_1[7] = param_1[7] + 1; + uVar1 = *puVar4; + puVar4 = (undefined1 *)param_1[7]; + param_1[7] = param_1[7] + 1; + uVar2 = *puVar4; + puVar4 = (undefined1 *)param_1[7]; + param_1[7] = param_1[7] + 1; + uVar3 = *puVar4; + puVar4 = (undefined1 *)param_1[7]; + param_1[7] = param_1[7] + 1; + local_8 = CONCAT31(CONCAT21(CONCAT11(uVar1,uVar2),uVar3),*puVar4); + } + param_1[9] = param_1[9] + -4; + return local_8; +} + + + +/* @00492df0 file=? name=FUN_00492df0 */ + +undefined4 __cdecl FUN_00492df0(undefined4 *param_1,char *param_2,int param_3) + +{ + char *pcVar1; + uint uVar2; + uint uVar3; + + uVar3 = param_3 * 4; + if (param_1[1] == 0) { + uVar2 = param_1[9]; + if (uVar2 < uVar3) { + if (uVar2 != 0) { + FUN_004d4918((undefined4 *)param_2,(undefined4 *)param_1[7],uVar2); + param_2 = param_2 + uVar2; + uVar3 = uVar3 - uVar2; + param_1[9] = 0; + } + if ((uint)param_1[3] < uVar3) { + uVar2 = FUN_004d71e0(param_2,1,uVar3,(int *)*param_1); + if (uVar3 != uVar2) { + return 0; + } + param_1[5] = param_1[5] + uVar3 + param_1[8]; + param_1[8] = 0; + } + else { + FUN_00492b20(param_1); + if (param_1[2] != 0) { + return 0; + } + FUN_004d4918((undefined4 *)param_2,(undefined4 *)param_1[7],uVar3); + param_1[7] = param_1[7] + uVar3; + param_1[9] = param_1[9] - uVar3; + } + } + else { + FUN_004d4918((undefined4 *)param_2,(undefined4 *)param_1[7],uVar3); + param_1[7] = param_1[7] + uVar3; + param_1[9] = param_1[9] + param_3 * -4; + } + } + else { + while (param_3 != 0) { + if (((int)param_1[9] < 4) && (FUN_00492b20(param_1), param_1[2] != 0)) { + return 0; + } + pcVar1 = (char *)param_1[7]; + param_1[7] = param_1[7] + 1; + param_2[3] = *pcVar1; + pcVar1 = (char *)param_1[7]; + param_1[7] = param_1[7] + 1; + param_2[2] = *pcVar1; + pcVar1 = (char *)param_1[7]; + param_1[7] = param_1[7] + 1; + param_2[1] = *pcVar1; + pcVar1 = (char *)param_1[7]; + param_1[7] = param_1[7] + 1; + *param_2 = *pcVar1; + param_1[9] = param_1[9] + -4; + param_2 = param_2 + 4; + param_3 = param_3 + -1; + } + } + return 1; +} + + + +/* @00492f10 file=? name=FUN_00492f10 */ + +undefined4 __cdecl FUN_00492f10(undefined4 *param_1,char *param_2,uint param_3) + +{ + uint uVar1; + + uVar1 = param_1[9]; + if (uVar1 < param_3) { + if (uVar1 != 0) { + FUN_004d4918((undefined4 *)param_2,(undefined4 *)param_1[7],uVar1); + param_2 = param_2 + uVar1; + param_3 = param_3 - uVar1; + param_1[9] = 0; + } + if ((uint)param_1[3] < param_3) { + uVar1 = FUN_004d71e0(param_2,1,param_3,(int *)*param_1); + if (param_3 != uVar1) { + return 0; + } + param_1[5] = param_1[5] + param_3 + param_1[8]; + param_1[8] = 0; + } + else { + FUN_00492b20(param_1); + if (param_1[2] != 0) { + return 0; + } + FUN_004d4918((undefined4 *)param_2,(undefined4 *)param_1[7],param_3); + param_1[7] = param_1[7] + param_3; + param_1[9] = param_1[9] - param_3; + } + } + else { + FUN_004d4918((undefined4 *)param_2,(undefined4 *)param_1[7],param_3); + param_1[7] = param_1[7] + param_3; + param_1[9] = param_1[9] - param_3; + } + return 1; +} + + + +/* @00492fc4 file=? name=FUN_00492fc4 */ + +undefined4 __cdecl FUN_00492fc4(undefined4 *param_1,int *param_2,uint *param_3,uint param_4) + +{ + uint local_c; + int *local_8; + + if ((int)param_4 < (int)*param_3) { + FUN_00492f10(param_1,(char *)*param_2,param_4); + *(undefined1 *)(*param_2 + param_4) = 0; + } + else { + if ((int)param_4 < 0x100) { + local_c = 0x100; + } + else { + local_c = param_4 + 1; + } + if (*param_3 == 0) { + local_8 = FUN_004de55c(local_c); + } + else { + local_8 = FUN_004de760((int *)*param_2,local_c); + } + if (local_8 == (int *)0x0) { + if ((char *)*param_2 == (char *)0x0) { + return 0; + } + FUN_00492f10(param_1,(char *)*param_2,*param_3); + FUN_00492ba0(param_1,param_4 - *param_3); + *(undefined1 *)(*param_2 + -1 + *param_3) = 0; + } + else { + *param_2 = (int)local_8; + *param_3 = local_c; + FUN_00492f10(param_1,(char *)local_8,param_4); + *(undefined1 *)((int)local_8 + param_4) = 0; + } + } + return 1; +} + + + +/* @0049309c file=? name=FUN_0049309c */ + +void __cdecl FUN_0049309c(undefined4 *param_1,undefined4 *param_2) + +{ + *param_2 = 0; + if ((int *)*param_1 != (int *)0x0) { + FUN_004de420((int *)*param_1); + *param_1 = 0; + } + return; +} + + + +/* @004930c0 file=? name=FUN_004930c0 */ + +int * __cdecl FUN_004930c0(LPCSTR param_1,uint param_2,int *param_3,int param_4) + +{ + int *piVar1; + int *piVar2; + + while (piVar1 = FUN_004d6f54(param_1,&DAT_00508e1d), piVar1 == (int *)0x0) { + if (DAT_00520bcc != 0x27) { + return (int *)0x0; + } + } + piVar2 = FUN_004de2bc(1,0x34); + if (piVar2 == (int *)0x0) { + FUN_004d6b08(piVar1); + return (int *)0x0; + } + if ((param_3 == (int *)0x0) || (param_2 < 0x400)) { + if (param_2 < 0x400) { + param_2 = 0x400; + } + param_3 = FUN_004de55c(param_2); + if (param_3 == (int *)0x0) { + FUN_004d6b08(piVar1); + FUN_004de420(piVar2); + return (int *)0x0; + } + piVar2[4] = 1; + } + *piVar2 = (int)piVar1; + piVar2[6] = (int)param_3; + piVar2[3] = param_2; + *(undefined1 *)(piVar2 + 1) = 1; + piVar2[1] = piVar2[1] & 1; + piVar2[1] = piVar2[1] ^ (uint)(param_4 != 0); + return piVar2; +} + + + +/* @00493188 file=? name=FUN_00493188 */ + +void __cdecl FUN_00493188(int *param_1) + +{ + int iVar1; + + iVar1 = FUN_004d6b08((int *)*param_1); + if (iVar1 != 0) { + FUN_0049a300(1,s_failed_to_close_file_descriptor_0_00508e20); + } + if (param_1[4] != 0) { + FUN_004de420((int *)param_1[6]); + } + FUN_004de420(param_1); + return; +} + + + +/* @004931c8 file=? name=FUN_004931c8 */ + +void __cdecl FUN_004931c8(undefined1 *param_1,uint param_2) + +{ + undefined1 uVar1; + uint uVar2; + + uVar2 = 0; + if (param_2 != 0) { + do { + uVar1 = *param_1; + *param_1 = param_1[3]; + param_1[3] = uVar1; + uVar1 = param_1[1]; + param_1[1] = param_1[2]; + param_1[2] = uVar1; + param_1 = param_1 + 4; + uVar2 = uVar2 + 1; + } while (uVar2 < param_2); + } + return; +} + + + +/* @004931fc file=? name=FUN_004931fc */ + +void * __thiscall FUN_004931fc(void *this,undefined4 *param_1,uint *param_2,uint *param_3) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + void *local_8; + + uVar3 = 0; + uVar1 = FUN_00492cb4(param_1); + uVar2 = (int)(uVar1 & 0xffff) >> 0xc & 0xc; + if (uVar2 == 0) { + uVar3 = FUN_00492c84(param_1); + uVar3 = uVar3 & 0xff; + local_8 = (void *)0x3; + } + else if (uVar2 == 4) { + uVar3 = FUN_00492cb4(param_1); + uVar3 = uVar3 & 0xffff; + local_8 = (void *)0x4; + } + else if (uVar2 == 8) { + uVar3 = FUN_00492d84(param_1); + local_8 = (void *)0x6; + } + else { + FUN_0049a300(1,s_dpl_bgfRead_got_unrecognised_blo_00508ee8); + param_1[2] = 1; + local_8 = this; + } + *param_2 = uVar1 & 0x3fff; + *param_3 = uVar3; + return local_8; +} + + + +/* @004932a4 file=? name=FUN_004932a4 */ + +undefined4 __thiscall FUN_004932a4(void *this,undefined4 *param_1,int param_2) + +{ + int iVar1; + undefined4 uVar2; + undefined4 *extraout_ECX; + undefined4 *extraout_ECX_00; + undefined4 *extraout_ECX_01; + undefined4 *extraout_ECX_02; + undefined4 *extraout_ECX_03; + undefined4 *extraout_ECX_04; + int iVar3; + float10 fVar4; + float local_10; + uint local_c; + uint local_8; + + iVar3 = 0; + local_10 = 0.0254; + do { + if ((param_1[2] != 0) || (param_2 <= iVar3)) { + param_1[10] = local_10 * (float)param_1[10]; + return 1; + } + iVar1 = FUN_004931fc(this,param_1,&local_8,&local_c); + if (param_1[2] != 0) { + return 0; + } + this = param_1; + if ((int)local_8 < 0x2006) { + if (local_8 == 0x2005) { + fVar4 = FUN_00492d10(param_1); + param_1[10] = (float)fVar4; + } + else if ((int)local_8 < 0x2003) { + if (local_8 == 0x2002) { + FUN_00492ba0(param_1,local_c); + this = extraout_ECX; + } + else if ((local_8 == 0) || (local_8 == 0x2000)) { + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_03; + } + else { +LAB_00493446: + FUN_0049a300(1,s_dpl_bgfRead_got_unrecognized_blo_00508fa5); + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_04; + } + } + else if (local_8 == 0x2003) { + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_00; + } + else { + if (local_8 != 0x2004) goto LAB_00493446; + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_01; + } + } + else if (local_8 == 0x2006) { + uVar2 = FUN_00492c84(param_1); + *(char *)(param_1 + 0xb) = (char)uVar2; + if (*(char *)(param_1 + 0xb) != '\0') { + FUN_0049a300(1,s_dpl_bgfRead_cannot_process_doubl_00508f18); + param_1[2] = 1; + return 0; + } + } + else if (local_8 == 0x2007) { + uVar2 = FUN_00492c84(param_1); + if ((char)uVar2 != '\0') { + FUN_0049a300(1,s_dpl_bgfRead___file_is_not_a_geom_00508f4b); + param_1[2] = 1; + return 0; + } + } + else if (local_8 == 0x2009) { + uVar2 = FUN_00492c84(param_1); + if ((char)uVar2 == '\0') { + local_10 = 0.0254; + } + else { + if ((char)uVar2 != '\x01') { + FUN_0049a300(1,s_dpl_bgfRead_got_unrecognized_uni_00508f76); + param_1[2] = 1; + return 0; + } + local_10 = 1.0; + } + } + else { + if (local_8 != 0x2037) goto LAB_00493446; + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_02; + } + iVar3 = iVar3 + iVar1 + local_c; + } while( true ); +} + + + +/* @0049348c file=? name=FUN_0049348c */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl +FUN_0049348c(undefined4 *param_1,int param_2,int param_3,uint param_4,uint param_5) + +{ + float fVar1; + bool bVar2; + int iVar3; + int iVar4; + float *pfVar5; + float *pfVar6; + uint uVar7; + int iVar8; + int iVar9; + int local_14; + int local_8; + + local_8 = 3; + bVar2 = false; + uVar7 = 1; + if (param_4 == 0x49) { + uVar7 = 0x41; + local_8 = 4; + bVar2 = true; + } + else { + if ((param_4 & 0x1f) != (int)*(char *)(param_3 + 0xc)) { + FUN_0049a300(1,s_dpl_bgfRead_got_vertices_of_inco_00508fdb); + FUN_00492ba0(param_1,param_5); + return 0; + } + if ((param_4 & 1) != 0) { + uVar7 = 3; + local_8 = 6; + } + if ((param_4 & 2) != 0) { + uVar7 = uVar7 | 4; + local_8 = local_8 + 4; + } + if ((param_4 & 4) != 0) { + uVar7 = uVar7 | 8; + local_8 = local_8 + 2; + } + if ((param_4 & 8) != 0) { + uVar7 = uVar7 | 0x10; + local_8 = local_8 + 2; + } + if ((param_4 & 0x10) != 0) { + uVar7 = uVar7 | 0x20; + local_8 = local_8 + 3; + } + } + iVar3 = local_8 * 4; + iVar4 = (int)param_5 / iVar3; + FUN_0048c910(param_2,uVar7); + FUN_0048cae0(param_2,iVar4); + if ((int)param_1[9] < (int)param_5) { + if ((*(byte *)(param_1 + 7) & 3) != 0) { + FUN_004d493c((undefined4 *)param_1[6],(undefined4 *)param_1[7],param_1[9]); + param_1[7] = param_1[6]; + } + local_14 = 0; + for (; (param_1[2] == 0 && (0 < iVar4)); iVar4 = iVar4 - iVar9) { + if ((int)param_1[9] < iVar3) { + FUN_00492b20(param_1); + } + iVar9 = (int)param_1[9] / iVar3; + if (iVar4 < (int)param_1[9] / iVar3) { + iVar9 = iVar4; + } + if (param_1[1] != 0) { + FUN_004931c8((undefined1 *)param_1[7],iVar9 * local_8); + } + if ((float)param_1[10] != _DAT_0049371c) { + pfVar6 = (float *)param_1[7]; + fVar1 = (float)param_1[10]; + iVar8 = 0; + if (0 < iVar9) { + do { + *pfVar6 = fVar1 * *pfVar6; + pfVar6[1] = fVar1 * pfVar6[1]; + pfVar6[2] = fVar1 * pfVar6[2]; + if (bVar2) { + pfVar6[3] = fVar1 * pfVar6[3]; + } + pfVar6 = pfVar6 + local_8; + iVar8 = iVar8 + 1; + } while (iVar8 < iVar9); + } + } + FUN_0048cc48(param_2,(byte *)param_1[7],local_14,iVar9); + FUN_00492ba0(param_1,iVar9 * iVar3); + local_14 = local_14 + iVar9; + } + if (0 < iVar4) { + FUN_0049a300(1,s_dpl_bgfRead_failed_to_read_in_al_00509022); + } + } + else { + if ((*(byte *)(param_1 + 7) & 3) == 0) { + pfVar6 = (float *)param_1[7]; + } + else { + FUN_004d493c((undefined4 *)param_1[6],(undefined4 *)param_1[7],param_5); + pfVar6 = (float *)param_1[6]; + } + if (param_1[1] != 0) { + FUN_004931c8((undefined1 *)pfVar6,iVar4 * local_8); + } + if ((float)param_1[10] != _DAT_0049371c) { + fVar1 = (float)param_1[10]; + iVar3 = 0; + pfVar5 = pfVar6; + if (0 < iVar4) { + do { + *pfVar5 = fVar1 * *pfVar5; + pfVar5[1] = fVar1 * pfVar5[1]; + pfVar5[2] = fVar1 * pfVar5[2]; + if (bVar2) { + pfVar5[3] = fVar1 * pfVar5[3]; + } + pfVar5 = pfVar5 + local_8; + iVar3 = iVar3 + 1; + } while (iVar3 < iVar4); + } + } + FUN_0048cc48(param_2,(byte *)pfVar6,0,iVar4); + FUN_00492ba0(param_1,param_5); + } + return 1; +} + + + +/* @00493720 file=? name=FUN_00493720 */ + +undefined4 __cdecl FUN_00493720(undefined4 *param_1,int param_2,int param_3,uint param_4) + +{ + int iVar1; + int iVar2; + int iVar3; + byte *local_10; + + iVar1 = param_3 * 4; + iVar2 = (int)param_4 / iVar1; + if ((int)param_1[9] < (int)param_4) { + if ((*(byte *)(param_1 + 7) & 3) != 0) { + FUN_004d493c((undefined4 *)param_1[6],(undefined4 *)param_1[7],param_1[9]); + param_1[7] = param_1[6]; + } + for (; (param_1[2] == 0 && (0 < iVar2)); iVar2 = iVar2 - iVar3) { + if ((int)param_1[9] < iVar1) { + FUN_00492b20(param_1); + } + iVar3 = (int)param_1[9] / iVar1; + if (iVar2 < (int)param_1[9] / iVar1) { + iVar3 = iVar2; + } + if (param_1[1] != 0) { + FUN_004931c8((undefined1 *)param_1[7],iVar3 * param_3); + } + FUN_0048cd68(param_2,(byte *)param_1[7],iVar3,param_3); + FUN_00492ba0(param_1,iVar3 * iVar1); + } + if (0 < iVar2) { + FUN_0049a300(1,s_dpl_bgfRead_failed_to_read_in_al_00509052); + } + } + else { + if ((*(byte *)(param_1 + 7) & 3) == 0) { + local_10 = (byte *)param_1[7]; + } + else { + FUN_004d493c((undefined4 *)param_1[6],(undefined4 *)param_1[7],param_4); + local_10 = (byte *)param_1[6]; + } + if (param_1[1] != 0) { + FUN_004931c8(local_10,iVar2 * param_3); + } + FUN_0048cd68(param_2,local_10,iVar2,param_3); + FUN_00492ba0(param_1,param_4); + } + return 1; +} + + + +/* @00493854 file=? name=FUN_00493854 */ + +undefined4 __cdecl FUN_00493854(undefined4 *param_1,int param_2,int param_3,uint param_4) + +{ + uint uVar1; + uint uVar2; + undefined4 uVar3; + byte *pbVar4; + int local_c; + + uVar1 = param_4; + if ((int)param_4 < 0) { + uVar1 = param_4 + 3; + } + uVar2 = (int)uVar1 >> 2; + if (param_3 == 3) { + local_c = uVar2 - 2; + } + else { + if (param_3 != 4) { + FUN_0049a300(1,s_dpl_bgfRead_got_unrecognised_typ_00509085); + FUN_00492ba0(param_1,param_4); + return 0; + } + local_c = (int)uVar1 >> 3; + if (local_c < 0) { + local_c = local_c + (uint)((uVar2 & 1) != 0); + } + local_c = local_c + -1; + } + if (local_c < 1) { + FUN_0049a300(1,s_dpl_bgfRead_got_an_invalid_numbe_005090bb); + FUN_00492ba0(param_1,param_4); + uVar3 = 0; + } + else { + if ((uint)param_1[3] < param_4) { + pbVar4 = (byte *)FUN_004de55c(param_4); + if (pbVar4 == (byte *)0x0) { + FUN_0049a300(1,s_dpl_bgfRead_failed_to_allocate_m_005090f8); + FUN_00492ba0(param_1,param_4); + return 0; + } + FUN_00492df0(param_1,(char *)pbVar4,uVar2); + FUN_0048cdac(param_2,pbVar4,local_c,param_3); + FUN_004de420((int *)pbVar4); + } + else { + pbVar4 = (byte *)param_1[6]; + if ((int)param_1[9] < (int)param_4) { + FUN_00492b20(param_1); + } + else if ((*(byte *)(param_1 + 7) & 3) == 0) { + pbVar4 = (byte *)param_1[7]; + } + else { + FUN_004d493c((undefined4 *)param_1[6],(undefined4 *)param_1[7],param_4); + } + if (param_1[1] != 0) { + FUN_004931c8(pbVar4,uVar2); + } + FUN_0048cdac(param_2,pbVar4,local_c,param_3); + FUN_00492ba0(param_1,param_4); + } + if (param_1[2] == 0) { + uVar3 = 1; + } + else { + uVar3 = 0; + } + } + return uVar3; +} + + + +/* @004939b8 file=? name=FUN_004939b8 */ + +undefined4 __thiscall +FUN_004939b8(void *this,undefined4 *param_1,int param_2,int param_3,int param_4) + +{ + bool bVar1; + int iVar2; + void *extraout_ECX; + void *extraout_ECX_00; + void *extraout_ECX_01; + void *extraout_ECX_02; + int iVar3; + uint local_c; + uint local_8; + + bVar1 = false; + for (iVar3 = 0; (param_1[2] == 0 && (iVar3 < param_4)); iVar3 = iVar3 + iVar2 + local_c) { + iVar2 = FUN_004931fc(this,param_1,&local_8,&local_c); + if (param_1[2] != 0) { + return 0; + } + if ((local_8 & 0x80) == 0) { + if ((local_8 == 0) || (local_8 == 0x2000)) { + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_01; + } + else { + FUN_0049a300(1,s_dpl_bgfRead_got_unrecognized_blo_00509167); + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_02; + } + } + else if (bVar1) { + FUN_0049a300(1,s_dpl_bgfRead_vertices_already_def_0050912e); + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_00; + } + else { + FUN_0049348c(param_1,param_2,param_3,local_8,local_c); + bVar1 = true; + this = extraout_ECX; + } + } + return 1; +} + + + +/* @00493a90 file=? name=FUN_00493a90 */ + +undefined4 __thiscall +FUN_00493a90(void *this,undefined4 *param_1,int param_2,int param_3,int param_4) + +{ + bool bVar1; + int iVar2; + undefined4 uVar3; + void *extraout_ECX; + void *extraout_ECX_00; + void *extraout_ECX_01; + void *extraout_ECX_02; + void *extraout_ECX_03; + void *extraout_ECX_04; + void *extraout_ECX_05; + int iVar4; + uint local_c; + uint local_8; + + bVar1 = false; + for (iVar4 = 0; (param_1[2] == 0 && (iVar4 < param_4)); iVar4 = iVar4 + iVar2 + local_c) { + iVar2 = FUN_004931fc(this,param_1,&local_8,&local_c); + if (param_1[2] != 0) { + return 0; + } + if ((local_8 & 0x80) == 0) { + if (local_8 == 0x47) { + FUN_00493720(param_1,param_2,3,local_c); + this = extraout_ECX_01; + } + else if (local_8 == 0x4d) { + uVar3 = FUN_00492c84(param_1); + FUN_00493720(param_1,param_2,(int)(char)uVar3,local_c - 1); + this = extraout_ECX_02; + } + else if (local_8 == 0x4e) { + uVar3 = FUN_00492c84(param_1); + FUN_00493854(param_1,param_2,(int)(char)uVar3,local_c - 1); + this = extraout_ECX_03; + } + else if ((local_8 == 0) || (local_8 == 0x2000)) { + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_04; + } + else { + FUN_0049a300(1,s_dpl_bgfRead_got_unrecognized_blo_005091dd); + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_05; + } + } + else if (bVar1) { + FUN_0049a300(1,s_dpl_bgfRead_vertices_already_def_005091a4); + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_00; + } + else { + FUN_0049348c(param_1,param_2,param_3,local_8,local_c); + bVar1 = true; + this = extraout_ECX; + } + } + return 1; +} + + + +/* @00493bd4 file=? name=FUN_00493bd4 */ + +undefined4 __thiscall +FUN_00493bd4(void *this,undefined4 *param_1,int param_2,int param_3,int param_4) + +{ + bool bVar1; + int iVar2; + undefined4 *extraout_ECX; + undefined4 *extraout_ECX_00; + undefined4 *extraout_ECX_01; + undefined4 *extraout_ECX_02; + int iVar3; + uint local_c; + uint local_8; + + bVar1 = false; + for (iVar3 = 0; (param_1[2] == 0 && (iVar3 < param_4)); iVar3 = iVar3 + iVar2 + local_c) { + iVar2 = FUN_004931fc(this,param_1,&local_8,&local_c); + if (param_1[2] != 0) { + return 0; + } + if ((local_8 & 0x80) == 0) { + if (local_8 == 0x2042) { + this = param_1; + FUN_00492c84(param_1); + } + else if ((local_8 == 0) || (local_8 == 0x2000)) { + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_01; + } + else { + FUN_0049a300(1,s_dpl_bgfRead_got_unrecognized_blo_00509254); + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_02; + } + } + else if (bVar1) { + FUN_0049a300(1,s_dpl_bgfRead_vertices_already_def_0050921b); + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_00; + } + else { + FUN_0049348c(param_1,param_2,param_3,local_8,local_c); + bVar1 = true; + this = extraout_ECX; + } + } + return 1; +} + + + +/* @00493cbc file=? name=FUN_00493cbc */ + +undefined4 __thiscall +FUN_00493cbc(void *this,undefined4 *param_1,int param_2,int param_3,int param_4) + +{ + bool bVar1; + int iVar2; + undefined4 *extraout_ECX; + undefined4 *extraout_ECX_00; + undefined4 *extraout_ECX_01; + undefined4 *extraout_ECX_02; + int iVar3; + uint local_c; + uint local_8; + + bVar1 = false; + for (iVar3 = 0; (param_1[2] == 0 && (iVar3 < param_4)); iVar3 = iVar3 + iVar2 + local_c) { + iVar2 = FUN_004931fc(this,param_1,&local_8,&local_c); + if (param_1[2] != 0) { + return 0; + } + if ((local_8 & 0x80) == 0) { + if (local_8 == 0x2049) { + this = param_1; + FUN_00492d10(param_1); + } + else if ((local_8 == 0) || (local_8 == 0x2000)) { + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_01; + } + else { + FUN_0049a300(1,s_dpl_bgfRead_got_unrecognized_blo_005092cf); + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_02; + } + } + else if (bVar1) { + FUN_0049a300(1,s_dpl_bgfRead_vertices_already_def_00509296); + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_00; + } + else { + FUN_0049348c(param_1,param_2,param_3,local_8,local_c); + bVar1 = true; + this = extraout_ECX; + } + } + return 1; +} + + + +/* @00493da8 file=? name=FUN_00493da8 */ + +undefined4 __thiscall +FUN_00493da8(void *this,undefined4 *param_1,int param_2,int param_3,int param_4) + +{ + bool bVar1; + int iVar2; + undefined4 *extraout_ECX; + undefined4 *extraout_ECX_00; + undefined4 *extraout_ECX_01; + undefined4 *extraout_ECX_02; + int iVar3; + uint local_c; + uint local_8; + + bVar1 = false; + for (iVar3 = 0; (param_1[2] == 0 && (iVar3 < param_4)); iVar3 = iVar3 + iVar2 + local_c) { + iVar2 = FUN_004931fc(this,param_1,&local_8,&local_c); + if (param_1[2] != 0) { + return 0; + } + if (local_8 == 0x49) { + if (bVar1) { + FUN_0049a300(1,s_dpl_bgfRead_vertices_already_def_00509312); + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_00; + } + else { + FUN_0049348c(param_1,param_2,param_3,0x49,local_c); + bVar1 = true; + this = extraout_ECX; + } + } + else { + this = param_1; + if (local_8 == 0x2041) { + FUN_00492cb4(param_1); + } + else if (local_8 == 0x2040) { + FUN_00492cb4(param_1); + } + else if ((local_8 == 0) || (local_8 == 0x2000)) { + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_01; + } + else { + FUN_0049a300(1,s_dpl_bgfRead_got_unrecognized_blo_0050934b); + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_02; + } + } + } + FUN_0048cb44(param_2); + return 1; +} + + + +/* @00493ed0 file=? name=FUN_00493ed0 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl FUN_00493ed0(undefined4 *param_1,int param_2,int param_3) + +{ + int iVar1; + float *pfVar2; + int iVar3; + undefined4 *extraout_ECX; + undefined4 *extraout_ECX_00; + undefined4 *extraout_ECX_01; + undefined4 *extraout_ECX_02; + undefined4 *extraout_ECX_03; + undefined4 *extraout_ECX_04; + undefined4 *extraout_ECX_05; + undefined4 *this; + float *pfVar4; + int *piVar5; + float local_34 [3]; + char local_28 [12]; + char local_1c [12]; + float local_10; + uint local_c; + uint local_8; + + pfVar2 = (float *)&DAT_00508eb0; + pfVar4 = local_34; + for (iVar3 = 9; iVar3 != 0; iVar3 = iVar3 + -1) { + *pfVar4 = *pfVar2; + pfVar2 = pfVar2 + 1; + pfVar4 = pfVar4 + 1; + } + iVar3 = 0; + piVar5 = (int *)0x0; + this = (undefined4 *)0x0; + do { + if ((param_1[2] != 0) || (param_3 <= iVar3)) { + if (piVar5 != (int *)0x0) { + if ((float)param_1[10] != _DAT_004940c4) { + local_10 = (float)param_1[10]; + iVar3 = 0; + pfVar2 = local_34; + do { + *pfVar2 = local_10 * *pfVar2; + iVar3 = iVar3 + 1; + pfVar2 = pfVar2 + 1; + } while (iVar3 < 6); + } + FUN_0048c910(param_2,1); + FUN_0048cae0(param_2,3); + FUN_0048cc48(param_2,(byte *)local_34,0,3); + FUN_0048c9c8(param_2,(char *)piVar5); + FUN_004de420(piVar5); + } + return 1; + } + iVar1 = FUN_004931fc(this,param_1,&local_8,&local_c); + if (param_1[2] != 0) { + if (piVar5 != (int *)0x0) { + FUN_004de420(piVar5); + } + return 0; + } + if ((int)local_8 < 0x2044) { + if (local_8 == 0x2043) { + this = param_1; + FUN_00492c84(param_1); + } + else { + if (local_8 != 0) { + if (local_8 == 0x4c) { + if (piVar5 == (int *)0x0) { + FUN_00492df0(param_1,(char *)local_34,3); + piVar5 = FUN_004de55c(local_c - 0xb); + if (piVar5 == (int *)0x0) { + FUN_0049a300(1,s_dpl_bgfRead_failed_to_allocate_m_0050938f); + FUN_00492ba0(param_1,local_c - 0xc); + this = extraout_ECX_01; + } + else { + FUN_00492f10(param_1,(char *)piVar5,local_c - 0xc); + this = extraout_ECX_02; + } + } + else { + FUN_0049a300(1,s_dpl_bgfRead_already_defined_stri_005093cb); + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_03; + } + goto LAB_00494035; + } + if (local_8 != 0x2000) goto LAB_00494015; + } + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_04; + } + } + else if (local_8 == 0x2044) { + FUN_00492df0(param_1,local_28,3); + this = extraout_ECX; + } + else if (local_8 == 0x2045) { + FUN_00492df0(param_1,local_1c,3); + this = extraout_ECX_00; + } + else { +LAB_00494015: + FUN_0049a300(1,s_dpl_bgfRead_got_unrecognized_blo_005093f9); + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_05; + } +LAB_00494035: + iVar3 = iVar3 + iVar1 + local_c; + } while( true ); +} + + + +/* @004940c8 file=? name=FUN_004940c8 */ + +undefined4 __cdecl +FUN_004940c8(undefined4 *param_1,int param_2,int param_3,uint param_4,undefined4 param_5) + +{ + undefined4 *puVar1; + undefined4 uVar2; + void *this; + + puVar1 = (undefined4 *)FUN_00489818(); + if (puVar1 == (undefined4 *)0x0) { + FUN_0049a300(1,s_dpl_bgfRead_failed_to_create_dpl_00509436); + FUN_00492ba0(param_1,param_4); + uVar2 = 0; + } + else { + FUN_0048c8ac((int)puVar1,param_5); + switch(param_5) { + case 2: + case 3: + case 4: + FUN_004939b8(this,param_1,(int)puVar1,param_3,param_4); + break; + case 5: + FUN_00493a90(this,param_1,(int)puVar1,param_3,param_4); + break; + case 6: + FUN_00493ed0(param_1,(int)puVar1,param_4); + break; + case 8: + FUN_00493bd4(this,param_1,(int)puVar1,param_3,param_4); + break; + case 9: + FUN_00493cbc(this,param_1,(int)puVar1,param_3,param_4); + break; + case 10: + FUN_00493da8(this,param_1,(int)puVar1,param_3,param_4); + } + FUN_0048d728(puVar1); + FUN_00489ca4(param_2,(int)puVar1); + if (param_1[2] == 0) { + uVar2 = 1; + } + else { + uVar2 = 0; + } + } + return uVar2; +} + + + +/* @004941e4 file=? name=FUN_004941e4 */ + +undefined4 __cdecl FUN_004941e4(undefined4 *param_1,int param_2,undefined4 *param_3,uint param_4) + +{ + char cVar1; + undefined4 *puVar2; + undefined4 uVar3; + code *pcVar4; + int iVar5; + int iVar6; + undefined4 *extraout_ECX; + undefined4 *extraout_ECX_00; + undefined4 *extraout_ECX_01; + undefined4 *extraout_ECX_02; + undefined4 *extraout_ECX_03; + undefined4 *extraout_ECX_04; + undefined4 *extraout_ECX_05; + undefined4 *extraout_ECX_06; + undefined4 *extraout_ECX_07; + undefined4 *extraout_ECX_08; + undefined4 *extraout_ECX_09; + undefined4 *puVar7; + undefined4 *extraout_ECX_10; + undefined4 local_2c [2]; + undefined1 local_24; + byte local_23; + undefined1 local_22; + undefined1 local_21; + undefined1 local_20; + char local_1f; + int local_1c; + int *local_18; + int local_14; + uint local_10; + uint local_c; + uint local_8; + + puVar2 = local_2c; + for (iVar6 = 5; iVar6 != 0; iVar6 = iVar6 + -1) { + *puVar2 = *param_3; + param_3 = param_3 + 1; + puVar2 = puVar2 + 1; + } + iVar6 = 0; + local_18 = (int *)0x0; + if (DAT_00508ea0 != (char *)0x0) { + *DAT_00508ea0 = '\0'; + } + puVar2 = (undefined4 *)FUN_00489800(); + if (puVar2 == (undefined4 *)0x0) { + FUN_0049a300(1,s_dpl_bgfRead_failed_to_create_dpl_00509461); + FUN_00492ba0(param_1,param_4); + uVar3 = 0; + } + else { + pcVar4 = (code *)FUN_00496614(); + puVar7 = extraout_ECX; + if (pcVar4 != (code *)0x0) { + (*pcVar4)(9,puVar2); + puVar7 = extraout_ECX_00; + } + for (; (param_1[2] == 0 && (iVar6 < (int)param_4)); iVar6 = iVar6 + iVar5 + local_c) { + iVar5 = FUN_004931fc(puVar7,param_1,&local_8,&local_c); + if (param_1[2] != 0) break; + local_14 = 0; + if ((int)local_8 < 0x2009) { + if (local_8 == 0x2008) { + FUN_00492fc4(param_1,(int *)&DAT_00508ea0,(uint *)&DAT_00508ea4,local_c); + puVar7 = extraout_ECX_02; + } + else { + puVar7 = extraout_ECX_01; + if ((int)local_8 < 0x49) { + if (local_8 == 0x48) { + local_14 = 10; + } + else if ((int)local_8 < 0x45) { + if (local_8 == 0x44) { + local_14 = 2; + } + else if (local_8 == 0) { +LAB_0049453e: + FUN_00492ba0(param_1,local_c); + puVar7 = extraout_ECX_08; + } + else { + if (local_8 != 0x43) goto switchD_00494307_caseD_2038; + local_14 = 4; + } + } + else if (local_8 == 0x45) { + local_14 = 3; + } + else if (local_8 == 0x46) { + local_14 = 5; + } + else { +switchD_00494307_caseD_2038: + FUN_0049a300(1,s_dpl_bgfRead_got_unrecognized_blo_005094cf); + FUN_00492ba0(param_1,local_c); + puVar7 = extraout_ECX_09; + } + } + else if (local_8 == 0x4a) { + local_14 = 8; + } + else if (local_8 == 0x4b) { + local_14 = 6; + } + else { + if (local_8 != 0x50) { + if (local_8 == 0x2000) goto LAB_0049453e; + goto switchD_00494307_caseD_2038; + } + local_14 = 9; + } + } + } + else { + puVar7 = param_1; + switch(local_8) { + case 0x2030: + uVar3 = FUN_00492c84(param_1); + cVar1 = (char)uVar3; + if ((cVar1 < '\x01') || ('\x02' < cVar1)) { + local_2c[0] = 0; + } + else if (cVar1 == '\x01') { + FUN_00492fc4(param_1,(int *)&DAT_00508e8c,(uint *)&DAT_00508e98,local_c - 1); + local_2c[0] = FUN_00497678(DAT_00508e8c,0,(int *)0x0); + puVar7 = extraout_ECX_03; + } + else { + local_2c[0] = FUN_00497678(s_DEFAULT_0050948c,0,(int *)0x0); + puVar7 = extraout_ECX_04; + } + break; + case 0x2031: + uVar3 = FUN_00492c84(param_1); + cVar1 = (char)uVar3; + if ((cVar1 < '\x01') || ('\x03' < cVar1)) { + local_2c[1] = 0; + } + else if (cVar1 == '\x01') { + FUN_00492fc4(param_1,(int *)&DAT_00508e90,(uint *)&DAT_00508e9c,local_c - 1); + local_2c[1] = FUN_00497678(DAT_00508e90,0,(int *)0x0); + puVar7 = extraout_ECX_05; + } + else if (cVar1 == '\x02') { + local_2c[1] = FUN_00497678(s_DEFAULT_00509494,0,(int *)0x0); + puVar7 = extraout_ECX_06; + } + else { + local_2c[1] = local_2c[0]; + } + break; + case 0x2032: + uVar3 = FUN_00492c84(param_1); + local_24 = (undefined1)uVar3; + break; + case 0x2033: + uVar3 = FUN_00492c84(param_1); + local_23 = (byte)uVar3; + if (local_23 == 0) { + FUN_00492c84(param_1); + } + else { + uVar3 = FUN_00492c84(param_1); + local_22 = (undefined1)uVar3; + } + break; + case 0x2034: + local_1c = FUN_00492d84(param_1); + break; + case 0x2035: + uVar3 = FUN_00492c84(param_1); + local_21 = (undefined1)uVar3; + break; + case 0x2036: + uVar3 = FUN_00492c84(param_1); + local_20 = (undefined1)uVar3; + break; + case 0x2037: + local_18 = FUN_004de55c(local_c); + if (local_18 == (int *)0x0) { + FUN_0049a300(1,s_dpl_bgfRead_failed_to_allocate_m_0050949c); + FUN_00492ba0(param_1,local_c); + return 0; + } + FUN_00492f10(param_1,(char *)local_18,local_c); + local_10 = local_c; + puVar7 = extraout_ECX_07; + break; + default: + goto switchD_00494307_caseD_2038; + case 0x2039: + uVar3 = FUN_00492c84(param_1); + local_1f = (char)uVar3; + } + } + if (local_14 != 0) { + FUN_004940c8(param_1,(int)puVar2,(int)local_2c,local_c,local_14); + puVar7 = extraout_ECX_10; + } + } + FUN_0048c654((int)puVar2,local_2c[0]); + FUN_0048c688((int)puVar2,local_2c[1]); + if (local_1f == '\x01') { + FUN_0048c71c((int)puVar2); + } + else { + FUN_0048c750((int)puVar2); + } + if (local_1c != 0) { + FUN_0048c7b4((int)puVar2,local_1c); + } + if ((local_23 & 1) != 0) { + FUN_0048c820((int)puVar2,1); + } + FUN_0048d6c4(puVar2); + FUN_00489c5c(param_2,(int)puVar2); + if ((DAT_00508ea0 != (char *)0x0) && (*DAT_00508ea0 != '\0')) { + FUN_00497c7c(1,DAT_00508ea0,local_18,local_10,param_2,(int)puVar2); + } + if (local_18 != (int *)0x0) { + pcVar4 = (code *)FUN_00496644(); + if (pcVar4 != (code *)0x0) { + (*pcVar4)(9,puVar2,local_18,local_10); + } + FUN_004de420(local_18); + } + if (param_1[2] == 0) { + uVar3 = 1; + } + else { + uVar3 = 0; + } + } + return uVar3; +} + + + +/* @00494668 file=? name=FUN_00494668 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl +FUN_00494668(undefined4 *param_1,int param_2,undefined4 *param_3,int *param_4,uint param_5) + +{ + undefined4 *puVar1; + undefined4 uVar2; + code *pcVar3; + int iVar4; + undefined4 *extraout_ECX; + undefined4 *extraout_ECX_00; + undefined4 *extraout_ECX_01; + undefined4 *extraout_ECX_02; + undefined4 *extraout_ECX_03; + undefined4 *extraout_ECX_04; + undefined4 *extraout_ECX_05; + undefined4 *extraout_ECX_06; + undefined4 *extraout_ECX_07; + undefined4 *this; + int iVar5; + float local_30; + float local_2c; + float local_28; + int *local_24; + undefined4 *local_20; + float local_1c; + float local_18; + char local_11; + uint local_10; + uint local_c; + uint local_8; + + iVar5 = 0; + local_11 = '\0'; + local_20 = (undefined4 *)param_1[0xc]; + local_24 = (int *)0x0; + if (DAT_00508ea8 != (char *)0x0) { + *DAT_00508ea8 = '\0'; + } + puVar1 = (undefined4 *)FUN_004897e8(); + if (puVar1 == (undefined4 *)0x0) { + FUN_0049a300(1,s_dpl_bgfRead_failed_to_create_dpl_00509504); + FUN_00492ba0(param_1,param_5); + uVar2 = 0; + } + else { + pcVar3 = (code *)FUN_00496614(); + if (pcVar3 != (code *)0x0) { + (*pcVar3)(8,puVar1); + } + FUN_004d4918(&local_30,local_20,0xc); + this = extraout_ECX; + for (; (param_1[2] == 0 && (iVar5 < (int)param_5)); iVar5 = iVar5 + iVar4 + local_c) { + iVar4 = FUN_004931fc(this,param_1,&local_8,&local_c); + if (param_1[2] != 0) break; + if ((int)local_8 < 0x2038) { + if (local_8 == 0x2037) { + local_24 = FUN_004de55c(local_c); + if (local_24 == (int *)0x0) { + FUN_0049a300(1,s_dpl_bgfRead_failed_to_allocate_m_0050952a); + FUN_00492ba0(param_1,local_c); + return 0; + } + FUN_00492f10(param_1,(char *)local_24,local_c); + local_10 = local_c; + pcVar3 = (code *)FUN_00496644(); + this = extraout_ECX_03; + if (pcVar3 != (code *)0x0) { + (*pcVar3)(8,puVar1,local_24,local_c); + this = extraout_ECX_04; + } + } + else if (local_8 == 0) { +LAB_0049481d: + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_06; + } + else if (local_8 == 0x42) { + FUN_004941e4(param_1,(int)puVar1,param_3,local_c); + this = extraout_ECX_05; + } + else { + if (local_8 == 0x2000) goto LAB_0049481d; + if (local_8 != 0x2008) goto LAB_0049482c; + FUN_00492fc4(param_1,(int *)&DAT_00508ea8,(uint *)&DAT_00508eac,local_c); + this = extraout_ECX_00; + } + } + else if (local_8 == 0x2046) { + FUN_00492df0(param_1,(char *)&local_1c,2); + local_11 = '\x01'; + this = extraout_ECX_01; + } + else if (local_8 == 0x2047) { + FUN_00492df0(param_1,(char *)&local_30,3); + this = extraout_ECX_02; + } + else if (local_8 == 0x2048) { + this = param_1; + FUN_00492c84(param_1); + } + else { +LAB_0049482c: + FUN_0049a300(1,s_dpl_bgfRead_got_unrecognized_blo_0050955d); + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_07; + } + } + if (local_11 != '\0') { + if ((float)param_1[10] != _DAT_00494980) { + local_1c = (float)param_1[10] * local_1c; + local_18 = (float)param_1[10] * local_18; + } + if (local_1c < _DAT_00494984) { + local_1c = DAT_005209d0; + } + if (local_18 < _DAT_00494984) { + local_18 = DAT_005209d0; + } + FUN_0048af60(param_2,*param_4,local_1c); + FUN_0048af60(param_2,*param_4 + 1,local_18); + } + if ((float)param_1[10] != _DAT_00494980) { + local_30 = (float)param_1[10] * local_30; + local_2c = (float)param_1[10] * local_2c; + local_28 = (float)param_1[10] * local_28; + } + FUN_0048afe8(param_2,local_30,local_2c,local_28); + FUN_00489c00(param_2,(int)puVar1); + FUN_0048d68c(puVar1); + *param_4 = *param_4 + 1; + if ((DAT_00508ea8 != (char *)0x0) && (*DAT_00508ea8 != '\0')) { + FUN_00497c7c(0,DAT_00508ea8,local_24,local_10,param_2,(int)puVar1); + } + if (local_24 != (int *)0x0) { + FUN_004de420(local_24); + } + if (param_1[2] == 0) { + uVar2 = 1; + } + else { + uVar2 = 0; + } + } + return uVar2; +} + + + +/* @00494988 file=? name=FUN_00494988 */ + +undefined4 * __cdecl FUN_00494988(undefined4 *param_1,uint param_2) + +{ + char cVar1; + undefined4 *puVar2; + code *pcVar3; + int iVar4; + undefined4 uVar5; + int iVar6; + undefined4 *extraout_ECX; + undefined4 *extraout_ECX_00; + undefined4 *extraout_ECX_01; + undefined4 *extraout_ECX_02; + undefined4 *extraout_ECX_03; + undefined4 *extraout_ECX_04; + undefined4 *extraout_ECX_05; + undefined4 *extraout_ECX_06; + undefined4 *extraout_ECX_07; + undefined4 *extraout_ECX_08; + undefined4 *extraout_ECX_09; + undefined4 *extraout_ECX_10; + undefined4 *extraout_ECX_11; + undefined4 *extraout_ECX_12; + undefined4 *extraout_ECX_13; + undefined4 *extraout_ECX_14; + undefined4 *puVar7; + undefined4 local_34 [2]; + undefined1 local_2c; + char local_2b; + undefined1 local_2a; + undefined1 local_29; + undefined1 local_28; + undefined1 local_27; + undefined4 local_24; + float *local_20; + int *local_1c; + int local_18; + undefined4 *local_14; + uint local_10; + uint local_c; + uint local_8; + + local_14 = (undefined4 *)0x0; + local_18 = 0; + puVar2 = &DAT_00508ed4; + puVar7 = local_34; + for (iVar6 = 5; iVar6 != 0; iVar6 = iVar6 + -1) { + *puVar7 = *puVar2; + puVar2 = puVar2 + 1; + puVar7 = puVar7 + 1; + } + iVar6 = 0; + local_1c = (int *)0x0; + if (DAT_00508e88 != (char *)0x0) { + *DAT_00508e88 = '\0'; + } + puVar2 = (undefined4 *)FUN_004897d0(); + if (puVar2 == (undefined4 *)0x0) { + FUN_0049a300(1,s_dpl_bgfRead_failed_to_create_dpl_00509590); + FUN_00492ba0(param_1,param_2); + puVar2 = (undefined4 *)0x0; + } + else { + pcVar3 = (code *)FUN_00496614(); + puVar7 = extraout_ECX; + if (pcVar3 != (code *)0x0) { + (*pcVar3)(7,puVar2); + puVar7 = extraout_ECX_00; + } + for (; (param_1[2] == 0 && (iVar6 < (int)param_2)); iVar6 = iVar6 + iVar4 + local_c) { + iVar4 = FUN_004931fc(puVar7,param_1,&local_8,&local_c); + if (param_1[2] != 0) break; + puVar7 = param_1; + if ((int)local_8 < 0x2033) { + if (local_8 == 0x2032) { + uVar5 = FUN_00492c84(param_1); + local_2c = (undefined1)uVar5; + } + else if ((int)local_8 < 0x2001) { + if ((local_8 == 0x2000) || (local_8 == 0)) { + FUN_00492ba0(param_1,local_c); + puVar7 = extraout_ECX_13; + } + else if (local_8 == 0x41) { + FUN_00494668(param_1,(int)puVar2,local_34,&local_18,local_c); + puVar7 = extraout_ECX_12; + } + else { + if (local_8 != 0x42) goto switchD_00494a88_caseD_2038; + puVar7 = extraout_ECX_01; + if (local_14 == (undefined4 *)0x0) { + local_14 = (undefined4 *)FUN_004897e8(); + if (local_14 == (undefined4 *)0x0) { + FUN_0049a300(1,s_dpl_bgfRead_failed_to_create_dpl_005095fc); + FUN_00492ba0(param_1,local_c); + puVar7 = extraout_ECX_09; + } + else { + local_20 = (float *)param_1[0xc]; + pcVar3 = (code *)FUN_00496614(); + if (pcVar3 != (code *)0x0) { + (*pcVar3)(8,local_14); + } + FUN_00489c00((int)puVar2,(int)local_14); + FUN_0048b0fc((int)puVar2); + FUN_0048afe8((int)puVar2,*local_20 * (float)param_1[10], + local_20[1] * (float)param_1[10],local_20[2] * (float)param_1[10]); + local_18 = local_18 + 1; + puVar7 = extraout_ECX_10; + } + } + if (local_14 != (undefined4 *)0x0) { + FUN_004941e4(param_1,(int)local_14,local_34,local_c); + puVar7 = extraout_ECX_11; + } + } + } + else if (local_8 == 0x2008) { + FUN_00492fc4(param_1,(int *)&DAT_00508e88,(uint *)&DAT_00508e94,local_c); + puVar7 = extraout_ECX_02; + } + else if (local_8 == 0x2030) { + uVar5 = FUN_00492c84(param_1); + cVar1 = (char)uVar5; + if ((cVar1 < '\x01') || ('\x02' < cVar1)) { + local_34[0] = 0; + } + else if (cVar1 == '\x01') { + FUN_00492fc4(param_1,(int *)&DAT_00508e8c,(uint *)&DAT_00508e98,local_c - 1); + local_34[0] = FUN_00497678(DAT_00508e8c,0,(int *)0x0); + puVar7 = extraout_ECX_03; + } + else { + local_34[0] = FUN_00497678(s_DEFAULT_005095b9,0,(int *)0x0); + puVar7 = extraout_ECX_04; + } + } + else { + if (local_8 != 0x2031) goto switchD_00494a88_caseD_2038; + uVar5 = FUN_00492c84(param_1); + cVar1 = (char)uVar5; + if ((cVar1 < '\x01') || ('\x03' < cVar1)) { + local_34[1] = 0; + } + else if (cVar1 == '\x01') { + FUN_00492fc4(param_1,(int *)&DAT_00508e90,(uint *)&DAT_00508e9c,local_c - 1); + local_34[1] = FUN_00497678(DAT_00508e90,0,(int *)0x0); + puVar7 = extraout_ECX_05; + } + else if (cVar1 == '\x02') { + local_34[1] = FUN_00497678(s_DEFAULT_005095c1,0,(int *)0x0); + puVar7 = extraout_ECX_06; + } + else { + local_34[1] = local_34[0]; + } + } + } + else { + switch(local_8) { + case 0x2033: + uVar5 = FUN_00492c84(param_1); + local_2b = (char)uVar5; + if (local_2b == '\0') { + FUN_00492c84(param_1); + } + else { + uVar5 = FUN_00492c84(param_1); + local_2a = (undefined1)uVar5; + } + break; + case 0x2034: + local_24 = FUN_00492d84(param_1); + break; + case 0x2035: + uVar5 = FUN_00492c84(param_1); + local_29 = (undefined1)uVar5; + break; + case 0x2036: + uVar5 = FUN_00492c84(param_1); + local_28 = (undefined1)uVar5; + break; + case 0x2037: + local_1c = FUN_004de55c(local_c); + if (local_1c == (int *)0x0) { + FUN_0049a300(1,s_dpl_bgfRead_failed_to_allocate_m_005095c9); + FUN_00492ba0(param_1,local_c); + return (undefined4 *)0x0; + } + FUN_00492f10(param_1,(char *)local_1c,local_c); + local_10 = local_c; + pcVar3 = (code *)FUN_00496644(); + puVar7 = extraout_ECX_07; + if (pcVar3 != (code *)0x0) { + (*pcVar3)(7,puVar2,local_1c,local_c); + puVar7 = extraout_ECX_08; + } + break; + default: +switchD_00494a88_caseD_2038: + FUN_0049a300(1,s_dpl_bgfRead_got_unrecognized_blo_00509622); + FUN_00492ba0(param_1,local_c); + puVar7 = extraout_ECX_14; + break; + case 0x2039: + uVar5 = FUN_00492c84(param_1); + local_27 = (undefined1)uVar5; + } + } + } + if ((DAT_00508e88 != (char *)0x0) && (*DAT_00508e88 != '\0')) { + FUN_00497bf8(DAT_00508e88); + } + if (local_1c != (int *)0x0) { + FUN_00497c30(local_1c,local_10); + FUN_004de420(local_1c); + } + if (local_14 != (undefined4 *)0x0) { + FUN_0048d68c(local_14); + } + FUN_0048b078((int)puVar2,0); + FUN_0048d668(puVar2); + } + return puVar2; +} + + + +/* @00494e00 file=? name=FUN_00494e00 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +bool __thiscall FUN_00494e00(void *this,undefined4 *param_1,int param_2) + +{ + int iVar1; + void *extraout_ECX; + void *extraout_ECX_00; + void *extraout_ECX_01; + void *extraout_ECX_02; + void *extraout_ECX_03; + void *extraout_ECX_04; + int iVar2; + float local_34; + float local_30; + float local_2c; + float local_28; + float local_24; + float local_20; + float *local_10; + uint local_c; + uint local_8; + + iVar2 = 0; + local_10 = (float *)param_1[0xc]; + do { + if ((param_1[2] != 0) || (param_2 <= iVar2)) { + return param_1[2] == 0; + } + iVar1 = FUN_004931fc(this,param_1,&local_8,&local_c); + if (param_1[2] != 0) { + return false; + } + if ((int)local_8 < 0x2071) { + if (local_8 == 0x2070) { + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_01; + } + else if (local_8 == 0x71) { + FUN_00492df0(param_1,(char *)&local_34,9); + *local_10 = (local_34 + local_28) * _DAT_00494f30; + local_10[1] = (local_30 + local_24) * _DAT_00494f30; + local_10[2] = (local_2c + local_20) * _DAT_00494f30; + this = extraout_ECX; + } + else { + if (local_8 != 0x72) goto LAB_00494ee6; + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_00; + } + } + else if (local_8 == 0x2071) { + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_02; + } + else if (local_8 == 0x2072) { + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_03; + } + else { +LAB_00494ee6: + FUN_0049a300(1,s_dpl_bgfRead_got_unrecognized_blo_00509658); + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_04; + } + iVar2 = iVar2 + iVar1 + local_c; + } while( true ); +} + + + +/* @00494f34 file=? name=FUN_00494f34 */ + +undefined4 * __thiscall FUN_00494f34(void *this,undefined4 *param_1) + +{ + bool bVar1; + void *this_00; + void *this_01; + void *extraout_ECX; + void *extraout_ECX_00; + void *extraout_ECX_01; + void *extraout_ECX_02; + void *extraout_ECX_03; + void *extraout_ECX_04; + void *this_02; + undefined4 *puVar2; + uint local_c; + uint local_8; + + bVar1 = true; + puVar2 = (undefined4 *)0x0; + param_1[2] = 0; + param_1[10] = 0x3f800000; + *(undefined1 *)(param_1 + 0xb) = 0; + FUN_004931fc(this,param_1,&local_8,&local_c); + if (param_1[2] == 0) { + this_02 = this_00; + if (local_8 == 3) { + FUN_004932a4(this_00,param_1,local_c); + FUN_004931fc(this_01,param_1,&local_8,&local_c); + this_02 = extraout_ECX; + } + while ((param_1[2] == 0 && (bVar1))) { + if ((int)local_8 < 0x41) { + if (local_8 == 0x40) { + puVar2 = FUN_00494988(param_1,local_c); + this_02 = extraout_ECX_00; + } + else if (local_8 == 0) { +LAB_00494fe6: + FUN_00492ba0(param_1,local_c); + this_02 = extraout_ECX_02; + } + else { + if (local_8 != 5) goto LAB_00494ff9; + bVar1 = false; + } + } + else if (local_8 == 0x70) { + FUN_00494e00(this_02,param_1,local_c); + this_02 = extraout_ECX_01; + } + else { + if (local_8 == 0x2000) goto LAB_00494fe6; +LAB_00494ff9: + FUN_0049a300(1,s_dpl_bgfRead_got_unrecognized_blo_00509690); + FUN_00492ba0(param_1,local_c); + this_02 = extraout_ECX_03; + } + if (bVar1) { + FUN_004931fc(this_02,param_1,&local_8,&local_c); + this_02 = extraout_ECX_04; + } + } + } + else { + puVar2 = (undefined4 *)0x0; + } + return puVar2; +} + + + +/* @00495048 file=? name=FUN_00495048 */ + +undefined4 * __cdecl FUN_00495048(LPCSTR param_1) + +{ + char *pcVar1; + undefined4 *puVar2; + int *piVar3; + char *pcVar4; + int *piVar5; + void *this; + char *pcVar6; + bool bVar7; + char local_10 [8]; + undefined1 local_8; + + if (param_1 == (LPCSTR)0x0) { + FUN_0049a300(1,s_dpl_bgfRead_got_no_file_to_open__005096cc); + puVar2 = (undefined4 *)0x0; + } + else { + if ((DAT_00508e84 == (int *)0x0) && + (DAT_00508e84 = FUN_004de55c(0x4000), DAT_00508e84 == (int *)0x0)) { + FUN_0049a300(1,s_dpl_bgfRead_failed_to_allocate_r_005096ed); + return (undefined4 *)0x0; + } + piVar3 = FUN_004930c0(param_1,0x4000,DAT_00508e84,1); + if (piVar3 == (int *)0x0) { + FUN_0049a300(1,s_dpl_bgfRead_failed_to_open_file___00509718); + puVar2 = (undefined4 *)0x0; + } + else { + FUN_00492f10(piVar3,local_10,8); + local_8 = 0; + pcVar4 = local_10; + pcVar6 = &DAT_0050973e; + do { + bVar7 = *pcVar4 == *pcVar6; + if (!bVar7) break; + if (*pcVar4 == '\0') goto LAB_0049512a; + pcVar1 = pcVar4 + 1; + bVar7 = *pcVar1 == pcVar6[1]; + if (!bVar7) break; + pcVar4 = pcVar4 + 2; + pcVar6 = pcVar6 + 2; + bVar7 = *pcVar1 == '\0'; + } while (!bVar7); + if (bVar7) { +LAB_0049512a: + piVar5 = FUN_004de2bc(1,0xc); + piVar3[0xc] = (int)piVar5; + if (piVar5 == (int *)0x0) { + FUN_0049a300(1,s_dpl_bgfRead_failed_to_allocate_m_00509771); + FUN_00493188(piVar3); + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_00494f34(this,piVar3); + FUN_004de420((int *)piVar3[0xc]); + FUN_00493188(piVar3); + } + } + else { + FUN_0049a300(1,s_dpl_bgfRead___s__is_not_a_valid_b_00509747); + FUN_00493188(piVar3); + puVar2 = (undefined4 *)0x0; + } + } + } + return puVar2; +} + + + +/* @0049517c file=? name=FUN_0049517c */ + +void FUN_0049517c(void) + +{ + if (DAT_00508e84 != (int *)0x0) { + FUN_004de420(DAT_00508e84); + DAT_00508e84 = (int *)0x0; + } + FUN_0049309c(&DAT_00508e88,(undefined4 *)&DAT_00508e94); + FUN_0049309c(&DAT_00508e8c,(undefined4 *)&DAT_00508e98); + FUN_0049309c(&DAT_00508e90,(undefined4 *)&DAT_00508e9c); + FUN_0049309c(&DAT_00508ea0,(undefined4 *)&DAT_00508ea4); + FUN_0049309c(&DAT_00508ea8,(undefined4 *)&DAT_00508eac); + return; +} + + + +/* @004951f4 file=? name=FUN_004951f4 */ + +void * __thiscall FUN_004951f4(void *this,undefined4 *param_1,uint *param_2,uint *param_3) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + void *local_8; + + uVar3 = 0; + uVar1 = FUN_00492cb4(param_1); + uVar2 = (int)(uVar1 & 0xffff) >> 0xc & 0xc; + if (uVar2 == 0) { + uVar3 = FUN_00492c84(param_1); + uVar3 = uVar3 & 0xff; + local_8 = (void *)0x3; + } + else if (uVar2 == 4) { + uVar3 = FUN_00492cb4(param_1); + uVar3 = uVar3 & 0xffff; + local_8 = (void *)0x4; + } + else if (uVar2 == 8) { + uVar3 = FUN_00492d84(param_1); + local_8 = (void *)0x6; + } + else { + FUN_0049a300(1,s__dpl_bmfRead_got_unrecognised_bl_00509867 + 1); + param_1[2] = 1; + local_8 = this; + } + *param_2 = uVar1 & 0x3fff; + *param_3 = uVar3; + return local_8; +} + + + +/* @0049529c file=? name=FUN_0049529c */ + +undefined4 __thiscall FUN_0049529c(void *this,undefined4 *param_1,int param_2) + +{ + int iVar1; + undefined4 uVar2; + undefined4 *extraout_ECX; + undefined4 *extraout_ECX_00; + undefined4 *extraout_ECX_01; + undefined4 *extraout_ECX_02; + undefined4 *extraout_ECX_03; + undefined4 *extraout_ECX_04; + undefined4 *extraout_ECX_05; + undefined4 *extraout_ECX_06; + int iVar3; + uint local_c; + uint local_8; + + iVar3 = 0; + do { + if ((param_1[2] != 0) || (param_2 <= iVar3)) { + return 1; + } + iVar1 = FUN_004951f4(this,param_1,&local_8,&local_c); + if (param_1[2] != 0) { + return 0; + } + if ((int)local_8 < 0x2006) { + if (local_8 == 0x2005) { + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_02; + } + else if ((int)local_8 < 0x2003) { + if (local_8 == 0x2002) { + FUN_00492ba0(param_1,local_c); + this = extraout_ECX; + } + else if ((local_8 == 0) || (local_8 == 0x2000)) { + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_05; + } + else { +LAB_00495403: + FUN_0049a300(1,s_dpl_bmfRead_got_unrecognized_blo_005098f6); + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_06; + } + } + else if (local_8 == 0x2003) { + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_00; + } + else { + if (local_8 != 0x2004) goto LAB_00495403; + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_01; + } + } + else { + this = param_1; + if (local_8 == 0x2006) { + uVar2 = FUN_00492c84(param_1); + *(char *)(param_1 + 0xb) = (char)uVar2; + if (*(char *)(param_1 + 0xb) != '\0') { + FUN_0049a300(1,s_dpl_bmfRead_cannot_process_doubl_00509898); + param_1[2] = 1; + return 0; + } + } + else if (local_8 == 0x2007) { + uVar2 = FUN_00492c84(param_1); + if ((char)uVar2 != '\x01') { + FUN_0049a300(1,s_dpl_bmfRead___file_is_not_a_mate_005098cb); + param_1[2] = 1; + return 0; + } + } + else if (local_8 == 0x2009) { + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_03; + } + else { + if (local_8 != 0x2037) goto LAB_00495403; + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_04; + } + } + iVar3 = iVar3 + iVar1 + local_c; + } while( true ); +} + + + +/* @00495440 file=? name=FUN_00495440 */ + +undefined4 __cdecl FUN_00495440(undefined4 *param_1,int param_2) + +{ + int iVar1; + undefined4 uVar2; + int extraout_EAX; + int extraout_EAX_00; + int extraout_EAX_01; + int extraout_EAX_02; + int extraout_EAX_03; + code *pcVar3; + int iVar4; + undefined4 *extraout_ECX; + undefined4 *extraout_ECX_00; + undefined4 *extraout_ECX_01; + undefined4 *extraout_ECX_02; + undefined4 *extraout_ECX_03; + undefined4 *extraout_ECX_04; + undefined4 *extraout_ECX_05; + undefined4 *extraout_ECX_06; + undefined4 *extraout_ECX_07; + undefined4 *extraout_ECX_08; + undefined4 *extraout_ECX_09; + undefined4 *extraout_ECX_10; + undefined4 *puVar5; + int *piVar6; + undefined4 *puVar7; + undefined4 local_6c; + undefined4 local_68; + undefined4 local_64; + undefined4 local_60 [4]; + undefined4 local_50; + undefined4 local_4c; + undefined4 local_48; + undefined4 local_44; + undefined4 local_40; + undefined4 local_3c; + undefined4 local_38; + undefined4 local_34; + undefined4 local_30; + int local_2c; + int local_28; + int local_24; + int local_20; + int local_1c; + uint local_18; + int *local_14; + char local_e; + char local_d; + uint local_c; + uint local_8; + + local_d = '\0'; + local_e = '\0'; + local_38 = DAT_00509810; + local_34 = DAT_00509814; + local_30 = DAT_00509818; + local_44 = DAT_0050981c; + local_40 = DAT_00509820; + local_3c = DAT_00509824; + local_50 = DAT_00509828; + local_4c = DAT_0050982c; + local_48 = DAT_00509830; + puVar5 = &DAT_00509834; + puVar7 = local_60; + for (iVar4 = 4; iVar4 != 0; iVar4 = iVar4 + -1) { + *puVar7 = *puVar5; + puVar5 = puVar5 + 1; + puVar7 = puVar7 + 1; + } + iVar4 = 0; + local_6c = DAT_00509844; + local_68 = DAT_00509848; + local_64 = DAT_0050984c; + local_14 = (int *)0x0; + if (DAT_005097e0 != (char *)0x0) { + *DAT_005097e0 = '\0'; + } + puVar5 = (undefined4 *)0x0; + if (DAT_005097e8 != (char *)0x0) { + *DAT_005097e8 = '\0'; + } + for (; (param_1[2] == 0 && (iVar4 < param_2)); iVar4 = iVar4 + iVar1 + local_c) { + iVar1 = FUN_004951f4(puVar5,param_1,&local_8,&local_c); + if (param_1[2] != 0) break; + puVar5 = param_1; + if ((int)local_8 < 0x27) { + if (local_8 == 0x26) { + FUN_00492df0(param_1,(char *)&local_50,3); + puVar5 = extraout_ECX_05; + } + else if ((int)local_8 < 0x24) { + if (local_8 == 0x23) { + FUN_00492df0(param_1,(char *)&local_38,3); + puVar5 = extraout_ECX_02; + } + else if (local_8 == 0) { +LAB_004956f8: + FUN_00492ba0(param_1,local_c); + puVar5 = extraout_ECX_09; + } + else if (local_8 == 0x21) { + uVar2 = FUN_00492c84(param_1); + local_d = (char)uVar2; + if (local_d == '\x02') { + FUN_00492fc4(param_1,(int *)&DAT_005097e4,(uint *)&DAT_005097f4,local_c - 1); + puVar5 = extraout_ECX_00; + } + } + else { + if (local_8 != 0x22) goto LAB_00495707; + uVar2 = FUN_00492c84(param_1); + local_e = (char)uVar2; + if (local_e == '\x01') { + FUN_00492fc4(param_1,(int *)&DAT_005097ec,(uint *)&DAT_005097fc,local_c - 1); + puVar5 = extraout_ECX_01; + } + } + } + else if (local_8 == 0x24) { + FUN_00492df0(param_1,(char *)&local_44,3); + puVar5 = extraout_ECX_03; + } + else { + if (local_8 != 0x25) goto LAB_00495707; + FUN_00492df0(param_1,(char *)local_60,4); + puVar5 = extraout_ECX_04; + } + } + else if ((int)local_8 < 0x2009) { + if (local_8 == 0x2008) { + FUN_00492fc4(param_1,(int *)&DAT_005097e0,(uint *)&DAT_005097f0,local_c); + puVar5 = extraout_ECX; + } + else if (local_8 == 0x27) { + FUN_00492df0(param_1,(char *)&local_6c,3); + puVar5 = extraout_ECX_06; + } + else { + if (local_8 != 0x28) { + if (local_8 == 0x2000) goto LAB_004956f8; + goto LAB_00495707; + } + FUN_00492fc4(param_1,(int *)&DAT_005097e8,(uint *)&DAT_005097f8,local_c); + puVar5 = extraout_ECX_07; + } + } + else if (local_8 == 0x200a) { + FUN_00492c84(param_1); + } + else if (local_8 == 0x2037) { + local_14 = FUN_004de55c(local_c); + if (local_14 == (int *)0x0) { + FUN_0049a300(1,s_dpl_bmfRead_failed_to_allocate_m_0050992c); + FUN_00492ba0(param_1,local_c); + return 0; + } + FUN_00492f10(param_1,(char *)local_14,local_c); + local_18 = local_c; + puVar5 = extraout_ECX_08; + } + else { +LAB_00495707: + FUN_0049a300(1,s_dpl_bmfRead_got_unrecognized_blo_0050995f); + FUN_00492ba0(param_1,local_c); + puVar5 = extraout_ECX_10; + } + } + if ((DAT_005097e0 != (char *)0x0) && (*DAT_005097e0 != '\0')) { + FUN_00497194(0,DAT_005097e0,2,(int *)param_1[0xc],&local_1c,FUN_004897a0,FUN_00489a28); + if ((local_1c == 0) && (extraout_EAX != 0)) { + local_20 = 0; + puVar5 = *(undefined4 **)(extraout_EAX + 0x18); + FUN_0048ba98((int)puVar5,local_38,local_34,local_30); + FUN_0048bc10((int)puVar5,local_44,local_40,local_3c); + FUN_0048bb54((int)puVar5,local_50,local_4c,local_48); + FUN_0048bccc((int)puVar5,local_60[0],local_60[1],local_60[2],local_60[3]); + FUN_0048bd94((int)puVar5,local_6c,local_68,local_64); + if ((local_d != '\0') && (DAT_005097d4 != 0)) { + iVar4 = 0; + if (local_d == '\x01') { + FUN_00497194(1,s_DEFAULT_00509997,0,(int *)param_1[0xc],(int *)0x0,FUN_00489768, + FUN_00489998); + iVar4 = extraout_EAX_00; + if (extraout_EAX_00 == 0) { + FUN_0049a300(1,s_dpl_bmfRead_failed_to_lookup_tex_0050999f); + } + } + else if (((local_d == '\x02') && (DAT_005097e4 != (char *)0x0)) && (*DAT_005097e4 != '\0')) + { + FUN_00497194(1,DAT_005097e4,0,(int *)param_1[0xc],&local_24,FUN_00489768,FUN_00489998); + iVar4 = extraout_EAX_01; + if (extraout_EAX_01 == 0) { + FUN_0049a300(1,s_dpl_bmfRead_failed_to_lookup_tex_005099cf); + } + else if (local_24 == 0) { + FUN_0049a300(1,s_texture___s__is_undefined__005099fa); + } + } + if (iVar4 != 0) { + local_20 = *(int *)(iVar4 + 0x18); + } + } + if (local_20 != 0) { + FUN_0048be50((int)puVar5,local_20); + } + if ((DAT_005097e8 != (char *)0x0) && (*DAT_005097e8 != '\0')) { + piVar6 = FUN_00497194(2,DAT_005097e8,0,(int *)param_1[0xc],&local_28,FUN_0049763c, + FUN_00489a68); + if (extraout_EAX_02 == 0) { + FUN_0049a300(1,s_dpl_bmfRead_failed_to_lookup_ram_00509a2d); + } + else { + piVar6 = *(int **)(extraout_EAX_02 + 0x18); + if (local_28 == 0) { + FUN_0049a300(1,s_ramp___s__is_undefined__00509a15); + } + } + FUN_0048bfb0((int)puVar5,(int)piVar6); + } + if (((local_e == '\x01') && (DAT_005097d4 != 0)) && (*DAT_005097ec != '\0')) { + FUN_00497194(1,DAT_005097ec,0,(int *)param_1[0xc],&local_2c,FUN_00489768,FUN_00489998); + if (extraout_EAX_03 == 0) { + FUN_0049a300(1,s_dpl_bmfRead_failed_to_lookup_env_00509a55); + } + else if (local_2c == 0) { + FUN_0049a300(1,s_environment_texture___s__is_unde_00509a8c); + } + if (extraout_EAX_03 != 0) { + FUN_0048bf00((int)puVar5,*(int *)(extraout_EAX_03 + 0x18)); + } + } + FUN_0048d4d4(puVar5); + if ((local_14 != (int *)0x0) && (pcVar3 = (code *)FUN_00496644(), pcVar3 != (code *)0x0)) { + (*pcVar3)(0xb,puVar5,local_14,local_18); + } + } + else if (extraout_EAX == 0) { + FUN_0049a300(1,s_dpl_bmfRead_failed_to_lookup_mat_00509ab3); + } + else { + FUN_0049a300(1,s_dpl_bmfRead___material___s__alre_00509adf); + } + } + if (local_14 != (int *)0x0) { + FUN_004de420(local_14); + } + return 1; +} + + + +/* @00495a44 file=? name=FUN_00495a44 */ + +undefined4 __thiscall FUN_00495a44(void *this,undefined4 *param_1,int param_2) + +{ + undefined4 *puVar1; + int iVar2; + undefined4 uVar3; + int extraout_EAX; + int extraout_EAX_00; + code *pcVar4; + undefined4 *extraout_ECX; + undefined4 *extraout_ECX_00; + undefined4 *extraout_ECX_01; + undefined4 *extraout_ECX_02; + undefined4 *extraout_ECX_03; + undefined4 *extraout_ECX_04; + int *piVar5; + int iVar6; + undefined4 unaff_EDI; + int local_24; + int local_20; + uint local_1c; + int *local_18; + char local_13; + char local_12; + char local_11; + char local_10; + char local_f; + char local_e; + char local_d; + uint local_c; + uint local_8; + + iVar6 = 0; + local_d = '\0'; + local_e = '\0'; + local_f = -1; + local_10 = -1; + local_11 = -1; + local_12 = '\0'; + local_13 = -1; + local_18 = (int *)0x0; + if (DAT_005097e4 != (char *)0x0) { + *DAT_005097e4 = '\0'; + } + if (DAT_00509804 != (char *)0x0) { + *DAT_00509804 = '\0'; + } + for (; (param_1[2] == 0 && (iVar6 < param_2)); iVar6 = iVar6 + iVar2 + local_c) { + iVar2 = FUN_004951f4(this,param_1,&local_8,&local_c); + if (param_1[2] != 0) break; + this = param_1; + if ((int)local_8 < 0x17) { + if (local_8 == 0x16) { + uVar3 = FUN_00492c84(param_1); + local_10 = (char)uVar3; + } + else { + switch(local_8) { + case 0: +switchD_00495ac8_caseD_0: + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_03; + break; + default: +switchD_00495ac8_caseD_1: + FUN_0049a300(1,s_dpl_bmfRead_got_unrecognized_blo_00509b3f); + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_04; + break; + case 0x11: + FUN_00492fc4(param_1,(int *)&DAT_00509804,(uint *)&DAT_0050980c,local_c); + this = extraout_ECX_00; + break; + case 0x12: + uVar3 = FUN_00492c84(param_1); + local_d = (char)uVar3; + break; + case 0x13: + uVar3 = FUN_00492c84(param_1); + local_e = (char)uVar3; + break; + case 0x14: + uVar3 = FUN_00492c84(param_1); + local_11 = (char)uVar3; + break; + case 0x15: + uVar3 = FUN_00492c84(param_1); + local_f = (char)uVar3; + } + } + } + else if ((int)local_8 < 0x2009) { + if (local_8 == 0x2008) { + FUN_00492fc4(param_1,(int *)&DAT_005097e4,(uint *)&DAT_005097f4,local_c); + this = extraout_ECX; + } + else if (local_8 == 0x17) { + uVar3 = FUN_00492c84(param_1); + local_12 = (char)uVar3; + if (0 < (int)(local_c - 1)) { + FUN_00492fc4(param_1,(int *)&DAT_00509800,(uint *)&DAT_00509808,local_c - 1); + this = extraout_ECX_01; + } + } + else { + if (local_8 != 0x18) { + if (local_8 == 0x2000) goto switchD_00495ac8_caseD_0; + goto switchD_00495ac8_caseD_1; + } + uVar3 = FUN_00492c84(param_1); + local_13 = (char)uVar3; + } + } + else if (local_8 == 0x200a) { + FUN_00492c84(param_1); + } + else { + if (local_8 != 0x2037) goto switchD_00495ac8_caseD_1; + local_18 = FUN_004de55c(local_c); + if (local_18 == (int *)0x0) { + FUN_0049a300(1,s_dpl_bmfRead_failed_to_allocate_m_00509b0c); + FUN_00492ba0(param_1,local_c); + return 0; + } + FUN_00492f10(param_1,(char *)local_18,local_c); + local_1c = local_c; + this = extraout_ECX_02; + } + } + if ((DAT_005097e4 != (char *)0x0) && (*DAT_005097e4 != '\0')) { + piVar5 = FUN_00497194(1,DAT_005097e4,2,(int *)param_1[0xc],&local_20,FUN_00489768,FUN_00489998); + if ((local_20 == 0) && (extraout_EAX != 0)) { + puVar1 = *(undefined4 **)(extraout_EAX + 0x18); + if (('\0' < local_d) && (local_d < '\t')) { + switch(local_d) { + case '\x01': + unaff_EDI = 9; + break; + case '\x02': + unaff_EDI = 10; + break; + case '\x03': + unaff_EDI = 0xb; + break; + case '\x04': + unaff_EDI = 0xf; + break; + case '\x05': + unaff_EDI = 0x10; + break; + case '\x06': + unaff_EDI = 0x11; + break; + case '\a': + unaff_EDI = 0x12; + break; + case '\b': + unaff_EDI = 0xe; + } + FUN_0048c144((int)puVar1,5,unaff_EDI); + } + if (('\0' < local_e) && (local_e < '\x06')) { + switch(local_e) { + case '\x01': + unaff_EDI = 9; + break; + case '\x02': + unaff_EDI = 10; + break; + case '\x03': + unaff_EDI = 0xb; + break; + case '\x04': + unaff_EDI = 0xc; + break; + case '\x05': + unaff_EDI = 0xd; + } + FUN_0048c144((int)puVar1,6,unaff_EDI); + } + if ((-1 < local_f) && (local_f < '\x03')) { + if (local_f == '\0') { + unaff_EDI = 3; + } + else if (local_f == '\x01') { + unaff_EDI = 4; + } + else if (local_f == '\x02') { + unaff_EDI = 5; + } + FUN_0048c144((int)puVar1,3,unaff_EDI); + } + if ((-1 < local_10) && (local_10 < '\x03')) { + if (local_10 == '\0') { + unaff_EDI = 3; + } + else if (local_10 == '\x01') { + unaff_EDI = 4; + } + else if (local_10 == '\x02') { + unaff_EDI = 5; + } + FUN_0048c144((int)puVar1,4,unaff_EDI); + } + if ((-1 < local_11) && (local_11 < '\x03')) { + if (local_11 == '\0') { + unaff_EDI = 6; + } + else if (local_11 == '\x01') { + unaff_EDI = 7; + } + else if (local_11 == '\x02') { + unaff_EDI = 8; + } + FUN_0048c144((int)puVar1,7,unaff_EDI); + } + if ((-1 < local_13) && (local_13 < '\t')) { + switch(local_13) { + case '\0': + unaff_EDI = 0x13; + break; + case '\x01': + unaff_EDI = 0x14; + break; + case '\x02': + unaff_EDI = 0x15; + break; + case '\x03': + unaff_EDI = 0x16; + break; + case '\x04': + unaff_EDI = 0x17; + break; + case '\x05': + unaff_EDI = 0x18; + break; + case '\x06': + unaff_EDI = 0x19; + break; + case '\a': + unaff_EDI = 0x1a; + break; + case '\b': + unaff_EDI = 0x1b; + } + FUN_0048c144((int)puVar1,10,unaff_EDI); + } + if ((((DAT_005097d8 != 0) && (local_12 != '\0')) && (DAT_00509800 != (char *)0x0)) && + (*DAT_00509800 != '\0')) { + FUN_00497194(1,DAT_00509800,0,(int *)piVar5[0xc],&local_24,FUN_00489768,FUN_00489998); + if (extraout_EAX_00 == 0) { + FUN_0049a300(1,s_dpl_bmfRead_failed_to_lookup_det_00509b91); + } + else { + FUN_0048c144((int)puVar1,8,1); + if (local_24 == 0) { + FUN_0049a300(1,s_texture___s__is_undefined__00509b76); + } + } + } + if ((DAT_00509804 != (char *)0x0) && (*DAT_00509804 != '\0')) { + iVar6 = FUN_00498eb4(DAT_00509804,0); + if (iVar6 == 0) { + FUN_0049a300(1,s_dpl_bmfRead_failed_to_load_texma_00509bc3); + } + else { + FUN_0048c2a0((int)puVar1,iVar6); + } + } + FUN_0048d55c(puVar1); + if ((local_18 != (int *)0x0) && (pcVar4 = (code *)FUN_00496644(), pcVar4 != (code *)0x0)) { + (*pcVar4)(0xc,puVar1,local_18,local_1c); + } + } + else if (extraout_EAX == 0) { + FUN_0049a300(1,s_dpl_bmfRead_failed_to_lookup_tex_00509bf0); + } + else { + FUN_0049a300(1,s_dpl_bmfRead___texture___s__alrea_00509c1b); + } + } + if (local_18 != (int *)0x0) { + FUN_004de420(local_18); + } + return 1; +} + + + /* @00496078 file=? name=FUN_00496078 */ /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ @@ -8384,7 +13000,7 @@ undefined4 * __cdecl FUN_0049e740(undefined4 *param_1,int param_2,int *param_3) float local_8; FUN_004178cc(param_1,2); - *param_1 = &PTR_LAB_0050bd90; + *param_1 = &PTR_FUN_0050bd90; FUN_0049f2b2(param_1 + 5,0,1); (**(code **)(*param_3 + 0x1c))(param_3,param_1 + 3,4); (**(code **)(*param_3 + 0x1c))(param_3,param_1 + 0xb,4); @@ -8408,6 +13024,30 @@ undefined4 * __cdecl FUN_0049e740(undefined4 *param_1,int param_2,int *param_3) +/* @0049e814 file=? name=FUN_0049e814 */ + +void __cdecl FUN_0049e814(int *param_1,byte param_2) + +{ + void *this; + int local_20 [7]; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0050bd90; + FUN_00401405(local_20,(int)(param_1 + 5)); + FUN_00417858(this,local_20,1); + FUN_00401424(local_20,2); + FUN_0049f2d5(param_1 + 5,2); + FUN_0041790c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + /* @0049e880 file=? name=FUN_0049e880 */ undefined4 FUN_0049e880(void) @@ -8624,6 +13264,20 @@ LAB_0049ece8: +/* @0049ed0c file=? name=FUN_0049ed0c */ + +void __cdecl FUN_0049ed0c(int param_1,float *param_2) + +{ + int iVar1; + + iVar1 = FUN_0049eb54(param_1,param_2); + FUN_0049de14(iVar1); + return; +} + + + /* @0049ed28 file=? name=FUN_0049ed28 */ undefined4 __cdecl @@ -8990,6 +13644,33 @@ undefined4 __cdecl FUN_0049f301(undefined4 param_1,int param_2,int param_3) +/* @0049f36d file=? name=FUN_0049f36d */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl FUN_0049f36d(undefined4 param_1,float *param_2,int param_3) + +{ + undefined4 uVar1; + float10 fVar2; + + fVar2 = FUN_004dcd00((double)(*param_2 - *(float *)(param_3 + 0x14))); + if ((float10)_DAT_0049f3d1 < fVar2) { + if (*param_2 <= *(float *)(param_3 + 0x14)) { + uVar1 = 0xffffffff; + } + else { + uVar1 = 1; + } + } + else { + uVar1 = 0; + } + return uVar1; +} + + + /* @0049f3d5 file=? name=FUN_0049f3d5 */ undefined4 * __cdecl FUN_0049f3d5(undefined4 *param_1,undefined4 param_2,undefined4 param_3) @@ -9189,6 +13870,19 @@ void __cdecl FUN_0049f5b8(undefined4 *param_1) +/* @0049f604 file=? name=FUN_0049f604 */ + +void __cdecl FUN_0049f604(int param_1,int param_2) + +{ + if (*(int *)(param_1 + 0x7a4) == 0) { + *(undefined4 *)(param_1 + 0x7a0) = *(undefined4 *)(param_2 + 0x1c); + } + return; +} + + + /* @0049f624 file=? name=FUN_0049f624 */ void __cdecl FUN_0049f624(int param_1,int param_2) @@ -9234,6 +13928,19 @@ void __cdecl FUN_0049f674(int *param_1) +/* @0049f700 file=? name=FUN_0049f700 */ + +void __cdecl FUN_0049f700(int param_1) + +{ + FUN_0041bbd8(param_1 + 0x2c,0); + FUN_004a4c54(param_1,1); + *(uint *)(param_1 + 0x28) = *(uint *)(param_1 + 0x28) & 0xfffffffd; + return; +} + + + /* @0049f728 file=? name=FUN_0049f728 */ void __cdecl FUN_0049f728(int param_1,int param_2) @@ -9297,6 +14004,97 @@ void __cdecl FUN_0049f788(int param_1) +/* @0049f854 file=? name=FUN_0049f854 */ + +void __cdecl FUN_0049f854(int *param_1,int param_2) + +{ + int iVar1; + undefined4 local_a8; + undefined4 local_a4; + undefined4 local_a0; + undefined4 local_9c [2]; + undefined4 local_94; + undefined4 local_90; + undefined4 local_8c [2]; + undefined4 local_84; + undefined4 local_80; + undefined4 local_7c; + undefined4 local_78; + undefined4 local_74; + undefined4 local_70; + undefined4 local_6c; + undefined4 local_68; + undefined4 local_64; + undefined4 local_60; + undefined4 local_5c; + undefined4 local_58; + undefined4 local_54; + undefined4 local_50; + undefined4 local_4c; + undefined4 local_48; + undefined4 local_44; + undefined4 local_40; + undefined4 local_3c; + undefined4 local_38; + undefined4 local_34; + undefined4 local_30; + undefined4 local_2c; + undefined4 local_28; + undefined4 local_24; + undefined4 local_20; + undefined4 local_1c; + undefined4 local_18; + undefined4 local_14 [4]; + + if ((0 < *(int *)(param_2 + 0xc)) && (param_1[0x105] != 0)) { + iVar1 = FUN_0049fb54((int)param_1); + if (iVar1 == 0) { + iVar1 = FUN_00429078(*(int *)(DAT_004efc94 + 0x2c)); + if (iVar1 != 0) { + FUN_004c198c(local_14,param_1[99]); + (**(code **)(**(int **)(DAT_004efc94 + 0x20) + 0x18)) + (*(int **)(DAT_004efc94 + 0x20),local_14,5,*(undefined4 *)(iVar1 + 0xc)); + } + FUN_0041bbd8((int)(param_1 + 0xb),10); + FUN_0041db7c((int)&local_44); + local_44 = 2; + iVar1 = param_1[100]; + local_40 = *(undefined4 *)(*(int *)(iVar1 + 0x208) + 0x1c); + local_18 = 0; + FUN_00408440(&local_24,param_1 + 0x40); + local_a8 = 100; + local_a4 = 0x12; + local_a0 = 1; + FUN_00420ea4(local_9c,(undefined4 *)&DAT_00522524); + local_94 = 0; + local_90 = 0; + FUN_00420ea4(local_8c,param_1 + 0x61); + local_84 = 0xffffffff; + local_80 = 1; + local_7c = local_44; + local_78 = local_40; + local_74 = local_3c; + local_70 = local_38; + local_6c = local_34; + local_68 = local_30; + local_64 = local_2c; + local_60 = local_28; + local_5c = local_24; + local_58 = local_20; + local_54 = local_1c; + local_50 = local_18; + local_4c = 0xffffffff; + local_48 = 1; + *(undefined4 *)(iVar1 + 600) = 1; + (**(code **)(*param_1 + 0xc))(param_1,&local_a8); + } + } + return; +} + + + /* @0049fa00 file=? name=FUN_0049fa00 */ void __cdecl FUN_0049fa00(int param_1,int param_2) @@ -9573,6 +14371,758 @@ void __cdecl FUN_0049fe80(int param_1) +/* @0049ffcc file=? name=FUN_0049ffcc */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_0049ffcc(int param_1,int param_2) + +{ + int *piVar1; + int iVar2; + int iVar3; + int iVar4; + int iVar5; + float10 fVar6; + float local_14; + + if (*(int *)(*(int *)(param_1 + 400) + 0x268) != 0) { + *(float *)(param_2 + 4) = + (((_DAT_004a0154 / *(float *)(param_1 + 0x20c)) / + ((float)(_DAT_004a0148 * (float10)100.0) * (float)(_DAT_004a0148 * (float10)100.0))) / + (_DAT_004a0158 - *(float *)(param_1 + 0x244) * *(float *)(param_1 + 0x244))) * + *(float *)(param_2 + 4); + if (_DAT_004a015c <= *(float *)(param_2 + 4)) { + iVar2 = FUN_004dcd94(); + *(float *)(param_2 + 4) = *(float *)(param_2 + 4) / (float)iVar2; + iVar5 = 0; + if (0 < iVar2) { + do { + local_14 = 0.0; + fVar6 = FUN_00408050(); + for (iVar4 = 0; iVar4 < *(int *)(param_1 + 0x124); iVar4 = iVar4 + 1) { + iVar3 = FUN_0041a1a4(**(int **)(*(int *)(*(int *)(param_1 + 0x128) + iVar4 * 4) + 0xc), + 0x50e590); + if (iVar3 == 0) { + iVar3 = FUN_0041a1a4(**(int **)(*(int *)(*(int *)(param_1 + 0x128) + iVar4 * 4) + 0xc) + ,0x50fdc0); + if (iVar3 != 0) goto LAB_004a00f2; + iVar3 = FUN_0041a1a4(**(int **)(*(int *)(*(int *)(param_1 + 0x128) + iVar4 * 4) + 0xc) + ,0x510b08); + if (iVar3 != 0) goto LAB_004a00f2; + } + else { +LAB_004a00f2: + piVar1 = *(int **)(*(int *)(param_1 + 0x128) + iVar4 * 4); + local_14 = (float)piVar1[0x43] + local_14; + if ((float)fVar6 <= local_14) { + FUN_004ac07c(piVar1,param_2); + break; + } + } + } + iVar5 = iVar5 + 1; + } while (iVar5 < iVar2); + } + } + } + return; +} + + + +/* @004a0164 file=? name=FUN_004a0164 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl FUN_004a0164(int param_1,int param_2) + +{ + int iVar1; + float fVar2; + undefined4 uVar3; + float10 fVar4; + + iVar1 = *(int *)(*(int *)(param_1 + 0x120) + param_2 * 4); + if (*(int *)(*(int *)(param_1 + 400) + 0x25c) == 0) { + uVar3 = 0; + } + else { + fVar2 = *(float *)(iVar1 + 0x158) * *(float *)(iVar1 + 0x158) * (float)_DAT_004a0208 + + (float)_DAT_004a0210; + if (_DAT_004a0218 <= fVar2) { + if (_DAT_004a0224 < fVar2) { + fVar2 = (float)_DAT_004a0228; + } + } + else { + fVar2 = (float)_DAT_004a021c; + } + fVar4 = FUN_00408050(); + if (fVar2 < (float)fVar4) { + uVar3 = 0; + } + else { + uVar3 = 1; + } + } + return uVar3; +} + + + +/* @004a0230 file=bt/mech.cpp name=FUN_004a0230 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004a0230(int param_1,int param_2) + +{ + int *piVar1; + int iVar2; + undefined4 uVar3; + undefined4 in_stack_fffffd54; + undefined4 in_stack_fffffd58; + undefined4 *puVar4; + float fVar5; + float *pfVar6; + undefined4 local_274; + undefined4 local_270; + undefined4 local_254 [3]; + undefined4 local_248; + int local_244 [5]; + uint local_230 [5]; + undefined4 local_21c; + undefined4 local_218; + undefined4 local_214; + undefined4 local_210; + undefined4 local_20c; + undefined4 local_208 [2]; + undefined4 local_200; + undefined4 local_1fc; + undefined4 local_1f8; + undefined4 local_1f4 [2]; + undefined4 local_1ec; + undefined4 local_1e8; + undefined4 local_1e4; + undefined4 local_1e0; + undefined4 local_1dc; + undefined4 local_1d8; + undefined4 local_1d4; + undefined4 local_1d0; + undefined4 local_1cc; + undefined4 local_1c8 [2]; + undefined4 local_1c0 [2]; + undefined4 local_1b8; + undefined4 local_1b4; + undefined4 local_1b0; + undefined4 local_1ac [2]; + undefined4 local_1a4; + undefined4 local_1a0; + undefined4 local_19c; + undefined4 local_198 [2]; + undefined4 local_190; + undefined4 local_18c [2]; + undefined4 local_184; + undefined4 local_180; + undefined4 local_17c; + undefined4 local_178; + undefined4 local_174 [2]; + undefined4 local_16c; + undefined4 local_168; + float local_164; + undefined4 local_160; + float local_15c; + undefined4 local_158; + undefined4 local_154; + undefined4 local_150; + undefined4 local_14c [2]; + undefined4 local_144; + undefined4 local_140; + undefined4 local_13c; + undefined4 local_138 [2]; + undefined4 local_130; + undefined4 local_12c; + float local_128; + undefined4 local_124; + float local_120; + undefined4 local_11c; + undefined4 local_118; + undefined4 local_114; + undefined4 local_110 [2]; + undefined4 local_108; + undefined4 local_104; + undefined4 local_100; + undefined4 local_fc [2]; + undefined4 local_f4; + undefined4 local_f0; + float local_ec; + undefined4 local_e8; + undefined4 local_e4; + undefined4 local_e0; + undefined4 local_dc; + undefined4 local_d8; + undefined4 local_d4 [2]; + float local_cc; + undefined4 local_c8; + undefined4 local_c4; + undefined4 local_c0; + undefined4 local_bc; + undefined4 *local_b8; + int local_b4; + int local_b0; + undefined4 local_ac; + int *local_a8; + int local_a4; + undefined4 *local_a0; + undefined4 local_9c; + undefined4 *local_98; + undefined4 *local_94; + undefined4 local_90; + undefined4 local_8c [2]; + float local_84; + undefined4 local_80 [2]; + float local_78; + undefined4 local_74; + undefined4 local_70; + undefined4 local_6c; + float local_68; + float local_64; + undefined4 local_60 [2]; + float local_58; + undefined4 local_54; + undefined4 local_50; + float local_4c; + undefined4 local_48 [2]; + undefined4 local_40; + undefined4 local_3c; + undefined4 local_38; + int local_34; + undefined4 local_30; + int local_2c; + float local_28; + int local_24; + int *local_20; + int *local_1c; + int local_18; + int local_14; + int local_10; + undefined4 *local_c; + int local_8; + + if ((*(uint *)(param_1 + 0x28) & 0xc) == 4) { + FUN_0040385c(s_Replicant_Mech_recieving_takedam_0050c3cd,s_d__tesla_bt_bt_MECH_CPP_0050c3f9, + 0x3da); + } + if (*(int *)(param_1 + 0x528) != 0) { + local_8 = param_2 + 0x34; + in_stack_fffffd54 = *(undefined4 *)(param_2 + 0x3c); + local_c = (undefined4 *)(param_2 + 0x40); + in_stack_fffffd58 = *local_c; + local_10 = param_2 + 0x4c; + FUN_004b2980(*(int *)(param_1 + 0x528),*(int *)(param_2 + 0x2c),*(float *)(param_2 + 0x30)); + } + local_14 = 0; + iVar2 = FUN_0049fb54(param_1); + if (iVar2 != 0) { + local_14 = 1; + } + iVar2 = *(int *)(DAT_004efc94 + 0x2c); + FUN_00420ef4((undefined4 *)(param_1 + 0x43c),(undefined4 *)(param_2 + 0x1c)); + local_18 = param_2 + 0x1c; + iVar2 = (**(code **)(*(int *)(iVar2 + 0x54) + 0xc))(); + local_1c = *(int **)(iVar2 + 400); + local_20 = *(int **)(param_1 + 400); + if (*(int *)(param_2 + 0x2c) == 0) { + FUN_0049ffcc(param_1,param_2 + 0x2c); + goto LAB_004a07b5; + } + if (*(int *)(param_2 + 0x28) != 0) { + uVar3 = FUN_0049ed0c(*(int *)(param_1 + 0x444),(float *)(param_2 + 0x4c)); + *(undefined4 *)(param_2 + 0x24) = uVar3; + *(undefined4 *)(param_2 + 0x28) = 0; + } + local_cc = DAT_004e0f74; + local_c8 = DAT_004e0f78; + local_c4 = DAT_004e0f7c; + FUN_00408644(&local_cc,(float *)(iVar2 + 0x100),(float *)(param_1 + 0x100)); + pfVar6 = &local_cc; + iVar2 = FUN_0049fe70(param_1); + FUN_004b7810(iVar2,pfVar6); + if ((*(int *)(param_2 + 0x2c) == 4) && (*(int **)(DAT_004efc94 + 0x4c) != (int *)0x0)) { + (**(code **)(**(int **)(DAT_004efc94 + 0x4c) + 0x4c))(); + } + local_24 = *(int *)(param_2 + 0x24); + local_28 = 0.0; + local_2c = *(int *)(param_2 + 0x58); + local_30 = 0; + do { + piVar1 = *(int **)(*(int *)(param_1 + 0x120) + local_24 * 4); + if (piVar1[9] != 1) { + iVar2 = FUN_004a0164(param_1,local_24); + if (iVar2 == 0) { + (**(code **)(*piVar1 + 0x18))(); + } + else { + iVar2 = FUN_0049ccc4(piVar1,param_2 + 0x2c); + if (iVar2 != 0) { + local_28 = *(float *)(iVar2 + 0x108) + local_28; + local_34 = iVar2; + } + } + local_28 = *(float *)(param_2 + 0x30) + local_28; + if (piVar1[9] == 1) { + local_30 = 1; + } + } + local_2c = local_2c + -1; + if (local_2c != 0) { + local_24 = FUN_0049ed0c(*(int *)(param_1 + 0x444),(float *)(param_2 + 0x4c)); + } + if (local_2c < 1) break; + iVar2 = FUN_0049fb54(param_1); + } while (iVar2 == 0); + if (local_14 == 0) { + iVar2 = FUN_0049fb54(param_1); + if (iVar2 == 0) goto LAB_004a05d9; + uVar3 = *(undefined4 *)(param_2 + 0x5c); + local_38 = local_30; + local_3c = *(undefined4 *)(param_2 + 0x24); + local_40 = *(undefined4 *)(local_20[0x82] + 0x1c); + FUN_00420ea4(local_48,(undefined4 *)(param_1 + 0x184)); + local_4c = local_28; + local_108 = 0x3c; + local_104 = 0x16; + local_100 = 1; + FUN_00420ea4(local_fc,(undefined4 *)&DAT_00522524); + local_f4 = 0; + local_f0 = 0; + local_ec = local_4c; + FUN_00420e8c(local_d4); + local_e8 = 2; + local_e4 = local_40; + FUN_00420ef4(local_d4,local_48); + local_dc = local_3c; + local_e0 = local_38; + local_d8 = uVar3; + (**(code **)(*local_1c + 0xc))(); + } + else { +LAB_004a05d9: + if (local_28 != _DAT_004a0c14) { + uVar3 = *(undefined4 *)(param_2 + 0x5c); + local_50 = local_30; + local_54 = *(undefined4 *)(param_2 + 0x24); + local_58 = local_28; + FUN_00420ea4(local_60,(undefined4 *)(param_1 + 0x184)); + local_64 = local_28; + local_144 = 0x3c; + local_140 = 0x16; + local_13c = 1; + FUN_00420ea4(local_138,(undefined4 *)&DAT_00522524); + local_130 = 0; + local_12c = 0; + local_128 = local_64; + FUN_00420e8c(local_110); + local_124 = 0; + local_120 = local_58; + FUN_00420ef4(local_110,local_60); + local_118 = local_54; + local_11c = local_50; + local_114 = uVar3; + (**(code **)(*local_1c + 0xc))(); + } + } + if (_DAT_004a0c14 < local_28) { + local_78 = (float)*(int *)(param_2 + 0x58) * *(float *)(param_2 + 0x30); + local_6c = *(undefined4 *)(param_2 + 0x5c); + local_70 = local_30; + local_74 = *(undefined4 *)(param_2 + 0x24); + local_68 = local_78; + FUN_00420ea4(local_80,(undefined4 *)(param_2 + 0x1c)); + local_84 = local_28; + local_180 = 0x3c; + local_17c = 0x16; + local_178 = 1; + FUN_00420ea4(local_174,(undefined4 *)&DAT_00522524); + local_16c = 0; + local_168 = 0; + local_164 = local_84; + FUN_00420e8c(local_14c); + local_160 = 1; + local_15c = local_78; + FUN_00420ef4(local_14c,local_80); + local_154 = local_74; + local_158 = local_70; + local_150 = local_6c; + (**(code **)(*local_20 + 0xc))(); + } +LAB_004a07b5: + if ((local_14 == 0) && ((*(int *)(param_1 + 0x40) == 9 || (*(int *)(param_1 + 0x40) == 10)))) { + FUN_00420ea4(local_8c,local_1c + 0x61); + local_90 = *(undefined4 *)(param_2 + 0x24); + local_1b8 = 0x38; + local_1b4 = 0x17; + local_1b0 = 1; + FUN_00420ea4(local_1ac,(undefined4 *)&DAT_00522524); + local_1a4 = 0; + local_1a0 = 0; + local_19c = 0xffffffff; + FUN_00420ea4(local_198,(undefined4 *)&DAT_00522524); + local_190 = 0; + FUN_00420ea4(local_18c,local_8c); + local_184 = local_90; + (**(code **)(*local_20 + 0xc))(); + local_94 = (undefined4 *)(param_1 + 0x184); + local_98 = (undefined4 *)(param_1 + 0x184); + local_9c = *(undefined4 *)(param_1 + 0x4c0); + local_214 = 0x5c; + local_210 = 3; + local_20c = 1; + FUN_00420ea4(local_208,(undefined4 *)&DAT_00522524); + local_200 = 0; + local_1fc = 0; + local_1f8 = 0x31; + FUN_00420ea4(local_1f4,(undefined4 *)&DAT_00522524); + local_1ec = local_9c; + local_1e8 = 0x100; + local_1e4 = *(undefined4 *)(param_1 + 0x100); + local_1e0 = *(undefined4 *)(param_1 + 0x104); + local_1dc = *(undefined4 *)(param_1 + 0x108); + local_1d8 = *(undefined4 *)(param_1 + 0x10c); + local_1d4 = *(undefined4 *)(param_1 + 0x110); + local_1d0 = *(undefined4 *)(param_1 + 0x114); + local_1cc = *(undefined4 *)(param_1 + 0x118); + FUN_00420ea4(local_1c8,local_98); + FUN_00420ea4(local_1c0,local_94); + local_a0 = FUN_004302ec((int)&local_214); + local_230[0] = 0x1c; + local_230[1] = 0x17; + local_230[2] = 1; + FUN_00420ea4(local_230 + 3,(undefined4 *)&DAT_00522524); + local_21c = 0; + local_218 = 0; + local_a8 = (int *)FUN_00414b60(); + local_a4 = *local_a8; + local_ac = *(undefined4 *)(param_1 + 0x430); + iVar2 = FUN_004dcd94(); + local_a4 = local_a4 + iVar2; + local_b0 = param_1; + FUN_0041acbc(*(int *)(DAT_004efc94 + 0x60),3,param_1,local_230,local_a4); + FUN_004a4eab(local_244,param_1 + 0x418); + while( true ) { + iVar2 = (**(code **)(local_244[0] + 0x30))(); + if (iVar2 == 0) break; + (**(code **)(local_244[0] + 0x48))(); + } + local_b4 = *(int *)(param_1 + 400); + if ((*(int *)(local_b4 + 0x264) != 0) && (*(int *)(local_b4 + 600) == 0)) { + FUN_0041db7c((int)&local_274); + local_b8 = (undefined4 *)(param_1 + 0x100); + local_274 = 2; + local_270 = *(undefined4 *)(param_1 + 0x520); + FUN_00408440(local_254,local_b8); + local_248 = FUN_004dcd94(); + local_c0 = *(undefined4 *)(param_1 + 0x2ec); + puVar4 = &local_274; + fVar5 = *(float *)(param_1 + 0x524); + local_bc = local_c0; + FUN_00420ea4((undefined4 *)&stack0xfffffd54,(undefined4 *)(param_1 + 0x184)); + FUN_0042fad0((int)local_a0,in_stack_fffffd54,in_stack_fffffd58,puVar4,fVar5); + } + FUN_004a4c54(param_1,1); + FUN_004a4ee9(local_244,2); + } + return; +} + + + +/* @004a0c2c file=? name=FUN_004a0c2c */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004a0c2c(int *param_1,int *param_2,int param_3) + +{ + int iVar1; + undefined2 uVar2; + uint local_68 [5]; + undefined4 local_54 [3]; + float local_48 [3]; + int *local_3c; + int *local_38; + int *local_34; + int *local_30; + int *local_2c; + int *local_28; + int *local_24; + float local_20; + int *local_1c; + int *local_18; + int *local_14; + int *local_10; + int *local_c; + int *local_8; + + iVar1 = *(int *)param_1[0x4a]; + uVar2 = (undefined2)param_3; + switch(param_3) { + case 0: + FUN_00408f44(local_48,(float *)(param_1 + 0x4e)); + FUN_00408440(local_54,param_1 + 0xb5); + FUN_004225a4((int)param_1,param_2,param_3); + *(undefined2 *)(param_2 + 1) = 0; + param_1[0x1df] = 1; + FUN_00409a00((float *)(param_1 + 0x4e),local_48); + local_8 = param_1 + 0xb5; + FUN_00408440(local_8,local_54); + if ((param_1[0xec] == 2) || (param_1[0xec] == 3)) { + FUN_0040a7f4(param_1 + 0xa6,(undefined4 *)&DAT_004e0fd4); + } + if ((param_1[0x10] != param_1[0xf]) && ((param_1[0xf] == 2 || (param_1[0x10] == 2)))) { + FUN_0040a938(param_1 + 0x98,param_1 + 0x4b); + FUN_0040a7f4(param_1 + 0xa6,param_1 + 0xb2); + param_1[0x1df] = 0; + } + param_2[0x1d] = *(int *)(iVar1 + 0x128); + param_1[0x1ad] = *(int *)(iVar1 + 0x128); + *param_2 = 0x78; + break; + default: + FUN_004225a4((int)param_1,param_2,param_3); + break; + case 2: + local_10 = param_2; + FUN_0041bd60((int)param_1,param_2,uVar2); + *local_10 = 0x14; + *(undefined2 *)(local_10 + 1) = 0; + local_10[4] = *(int *)(iVar1 + 0x128); + param_1[0x1ad] = *(int *)(iVar1 + 0x128); + break; + case 3: + local_c = param_2; + FUN_0041bd60((int)param_1,param_2,uVar2); + *local_c = 0x20; + *(undefined2 *)(local_c + 1) = 0; + local_c[4] = param_1[0x195]; + local_c[5] = param_1[0xec]; + local_c[6] = param_1[0x136]; + param_1[0x196] = local_c[4]; + if (local_c[5] == 0) { + FUN_004283b8((int)(param_1 + 0x197),1); + FUN_0041bbd8((int)(param_1 + 0x1c5),local_c[5]); + } + else if (local_c[5] == 1) { + FUN_0041bbd8((int)(param_1 + 0x1c5),local_c[5]); + } + else { + FUN_004a800c((int)param_1,local_c[5]); + } + local_c[7] = *(int *)(iVar1 + 0x128); + param_1[0x1ad] = *(int *)(iVar1 + 0x128); + break; + case 4: + local_14 = param_2; + FUN_0041bd60((int)param_1,param_2,uVar2); + *local_14 = 0x2c; + *(undefined2 *)(local_14 + 1) = 0; + FUN_0040a138((float *)(param_1 + 0x43)); + FUN_00408f44((float *)(local_14 + 4),(float *)(param_1 + 0x43)); + FUN_00408440(local_14 + 7,param_1 + 0x74); + local_18 = (int *)FUN_00414b60(); + param_1[0x1de] = *local_18; + local_1c = (int *)FUN_00414b60(); + param_1[0xb8] = *local_1c; + local_20 = (float)(param_1[0xb8] - param_1[5]) / DAT_0052140c; + if (local_20 < _DAT_004a1228) { + param_1[0xb8] = param_1[0xb8] + (param_1[0xb8] - param_1[5]); + } + FUN_00409968(param_1 + 0x4e,param_1 + 0x43); + FUN_00408440(param_1 + 0xb5,param_1 + 0x74); + local_14[10] = *(int *)(iVar1 + 0x128); + param_1[0x1ad] = *(int *)(iVar1 + 0x128); + break; + case 5: + local_24 = param_2; + FUN_0041bd60((int)param_1,param_2,uVar2); + *local_24 = 0x2c; + *(undefined2 *)(local_24 + 1) = 0; + local_24[4] = param_1[0x119]; + local_28 = param_1 + 0x12a; + local_24[5] = param_1[0x129]; + FUN_00408440(local_24 + 6,local_28); + local_24[9] = param_1[0x12d]; + FUN_004a800c((int)param_1,0x20); + FUN_0040a7f4(param_1 + 0xa6,(undefined4 *)&DAT_004e0fd4); + local_24[10] = *(int *)(iVar1 + 0x128); + param_1[0x1ad] = *(int *)(iVar1 + 0x128); + break; + case 6: + local_2c = param_2; + FUN_0041bd60((int)param_1,param_2,uVar2); + *local_2c = 0x2c; + *(undefined2 *)(local_2c + 1) = 0; + local_2c[4] = param_1[0x119]; + local_30 = param_1 + 0x12a; + local_2c[5] = param_1[0x129]; + FUN_00408440(local_2c + 6,local_30); + local_2c[9] = param_1[0x12d]; + FUN_0041bbd8((int)(param_1 + 0x1c5),0); + param_1[0x196] = 1; + FUN_0040a7f4(param_1 + 0xa6,(undefined4 *)&DAT_004e0fd4); + local_2c[10] = *(int *)(iVar1 + 0x128); + param_1[0x1ad] = *(int *)(iVar1 + 0x128); + break; + case 7: + local_34 = param_2; + FUN_0041bd60((int)param_1,param_2,uVar2); + *local_34 = 0x2c; + *(undefined2 *)(local_34 + 1) = 0; + local_34[4] = param_1[0x119]; + local_38 = param_1 + 0x12a; + local_34[5] = param_1[0x129]; + FUN_00408440(local_34 + 6,local_38); + local_34[9] = param_1[0x12d]; + local_34[10] = *(int *)(iVar1 + 0x128); + param_1[0x1ad] = *(int *)(iVar1 + 0x128); + break; + case 8: + local_3c = param_2; + FUN_0041bd60((int)param_1,param_2,uVar2); + *local_3c = 0x18; + *(undefined2 *)(local_3c + 1) = 0; + local_3c[4] = param_1[0xfd]; + local_3c[5] = *(int *)(iVar1 + 0x128); + param_1[0x1ad] = *(int *)(iVar1 + 0x128); + } + if ((param_1[0xf] != param_1[0x10]) && (param_1[0xf] == 2)) { + FUN_00436668(local_68,(int)param_1); + FUN_004364e4(*(int *)(DAT_004efc94 + 0x38),param_1,local_68); + FUN_0041bbd8((int)(param_1 + 0xb),param_1[0x10]); + } + return; +} + + + +/* @004a122c file=? name=FUN_004a122c */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_004a122c(int *param_1,undefined4 *param_2) + +{ + int *piVar1; + uint auStack_34 [5]; + undefined4 auStack_20 [3]; + float afStack_14 [3]; + float fStack_8; + + switch(*(undefined2 *)((int)param_2 + 6)) { + case 0: + FUN_00408f44(afStack_14,(float *)(param_1 + 0x4e)); + FUN_00408440(auStack_20,param_1 + 0xb5); + FUN_0042249c(param_1,param_2); + FUN_00409a00((float *)(param_1 + 0x4e),afStack_14); + FUN_00408440(param_1 + 0xb5,auStack_20); + param_1[0x1df] = 1; + if ((param_1[0x1ca] == 2) || (param_1[0x1ca] == 3)) { + FUN_0040a7f4(param_1 + 0xa6,(undefined4 *)&DAT_004e0fd4); + } + if ((param_1[0x10] != param_1[0xf]) && ((param_1[0xf] == 2 || (param_1[0x10] == 2)))) { + FUN_0040a938(param_1 + 0x40,param_1 + 0x4b); + FUN_0040a938(param_1 + 0x98,param_1 + 0x4b); + FUN_0040a7f4(param_1 + 0xa6,param_1 + 0xb2); + param_1[0x1df] = 0; + if ((*(byte *)((int)param_1 + 0x29) & 0x40) == 0) { + (**(code **)(*param_1 + 0x34))(param_1); + } + } + param_1[0x1ad] = param_2[0x1d]; + break; + default: + FUN_0042249c(param_1,param_2); + break; + case 2: + FUN_0041bd34((int)param_1,(int)param_2); + param_1[0x1ad] = param_2[4]; + break; + case 3: + FUN_0041bd34((int)param_1,(int)param_2); + param_1[0x196] = param_2[4]; + FUN_0041bbd8((int)(param_1 + 0x131),param_2[6]); + if (param_2[5] == 0) { + FUN_004283b8((int)(param_1 + 0x197),1); + FUN_0041bbd8((int)(param_1 + 0x1c5),param_2[5]); + } + else if (param_2[5] == 1) { + FUN_0041bbd8((int)(param_1 + 0x1c5),param_2[5]); + } + else { + FUN_004a800c((int)param_1,param_2[5]); + } + param_1[0x1ad] = param_2[7]; + break; + case 4: + FUN_0041bd34((int)param_1,(int)param_2); + piVar1 = (int *)FUN_00414b60(); + param_1[0x1de] = *piVar1; + FUN_00409a00((float *)(param_1 + 0x4e),(float *)(param_2 + 4)); + FUN_00408440(param_1 + 0xb5,param_2 + 7); + piVar1 = (int *)FUN_00414b60(); + param_1[0xb8] = *piVar1; + fStack_8 = (float)(param_1[0xb8] - param_1[5]) / DAT_0052140c; + if (fStack_8 < _DAT_004a1670) { + param_1[0xb8] = param_1[0xb8] + (param_1[0xb8] - param_1[5]); + } + param_1[0x1ad] = param_2[10]; + break; + case 5: + FUN_0041bd34((int)param_1,(int)param_2); + FUN_0041bbd8((int)(param_1 + 0x114),param_2[4]); + param_1[0x129] = param_2[5]; + FUN_00408440(param_1 + 0x12a,param_2 + 6); + param_1[0x12d] = param_2[9]; + FUN_004a800c((int)param_1,0x20); + FUN_0040a7f4(param_1 + 0xa6,(undefined4 *)&DAT_004e0fd4); + param_1[0x1ad] = param_2[10]; + break; + case 6: + FUN_0041bd34((int)param_1,(int)param_2); + FUN_0041bbd8((int)(param_1 + 0x114),param_2[4]); + param_1[0x129] = param_2[5]; + FUN_00408440(param_1 + 0x12a,param_2 + 6); + param_1[0x12d] = param_2[9]; + FUN_0041bbd8((int)(param_1 + 0x1c5),0); + param_1[0x195] = 1; + param_1[0x196] = 1; + FUN_0040a7f4(param_1 + 0xa6,(undefined4 *)&DAT_004e0fd4); + param_1[0x1ad] = param_2[10]; + break; + case 7: + FUN_0041bd34((int)param_1,(int)param_2); + FUN_0041bbd8((int)(param_1 + 0x114),param_2[4]); + param_1[0x129] = param_2[5]; + FUN_00408440(param_1 + 0x12a,param_2 + 6); + param_1[0x12d] = param_2[9]; + param_1[0x1ad] = param_2[10]; + break; + case 8: + FUN_0041bd34((int)param_1,(int)param_2); + param_1[0xfd] = param_2[4]; + param_1[0x1ad] = param_2[5]; + } + if ((param_1[0xf] != param_1[0x10]) && (param_1[0xf] == 2)) { + FUN_00436668(auStack_34,(int)param_1); + FUN_004364e4(*(int *)(DAT_004efc94 + 0x38),param_1,auStack_34); + FUN_0041bbd8((int)(param_1 + 0xb),param_1[0x10]); + } + return; +} + + + /* @004a1232 file=? name=FUN_004a1232 */ /* WARNING (jumptable): Unable to track spacebase fully for stack */ @@ -9945,12 +15495,12 @@ int * __cdecl FUN_004a1674(int *param_1,int param_2,undefined4 param_3) local_48 = FUN_00433ed4(*(int *)(DAT_004efc94 + 0x30) + 0x14); param_1[0x94] = *(int *)(local_48 + 0x34) + 0x2c; if ((param_1[10] & 0xcU) == 4) { - param_1[7] = (int)PTR_LAB_0050c0e8; + param_1[7] = (int)PTR_FUN_0050c0e8; param_1[8] = DAT_0050c0ec; param_1[9] = DAT_0050c0f0; } else { - param_1[7] = (int)PTR_LAB_0050c0f4; + param_1[7] = (int)PTR_FUN_0050c0f4; param_1[8] = DAT_0050c0f8; param_1[9] = DAT_0050c0fc; } @@ -12184,5835 +17734,3 @@ switchD_004a510d_caseD_2: -/* @004a5678 file=bt/mech2.cpp name=FUN_004a5678 */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -float10 __cdecl FUN_004a5678(int param_1,float param_2,int param_3) - -{ - undefined4 uVar1; - int iVar2; - float fVar3; - float10 fVar4; - float local_8; - - iVar2 = *(int *)(param_1 + 0x40); - if (*(int *)(param_1 + 0x650) == 0) { - if (iVar2 == 5) { - FUN_004a800c(param_1,0x1c); - *(undefined4 *)(param_1 + 0x650) = 1; - } - else if (iVar2 == 6) { - FUN_004a800c(param_1,0x1d); - *(undefined4 *)(param_1 + 0x650) = 1; - } - else if (iVar2 == 7) { - FUN_004a800c(param_1,0x1e); - *(undefined4 *)(param_1 + 0x650) = 1; - } - else if (iVar2 == 8) { - FUN_004a800c(param_1,0x1f); - *(undefined4 *)(param_1 + 0x650) = 1; - } - } - switch(*(undefined4 *)(param_1 + 0x728)) { - case 0: - local_8 = 0.0; - if (*(float *)(param_1 + 0x530) < *(float *)(param_1 + 0x6b4)) { - FUN_004a800c(param_1,5); - } - else { - if (_DAT_004a5bf4 <= *(float *)(param_1 + 0x6b4)) break; - FUN_004a800c(param_1,0x10); - } - case 2: - case 3: - case 4: - case 5: - case 8: - case 9: - case 10: - case 0xb: - case 0xe: - case 0xf: - case 0x10: - case 0x11: - case 0x14: - case 0x15: - case 0x1c: - case 0x1d: - case 0x1e: - case 0x1f: - case 0x20: - fVar4 = FUN_0042790c(param_1 + 0x6bc, - param_2 * *(float *)(param_1 + 0x5a8) * *(float *)(param_1 + 0x5ac),param_3 - ); - local_8 = (float)fVar4; - *(float *)(param_1 + 0x6b8) = local_8 / param_2; - break; - case 1: - local_8 = 0.0; - break; - case 6: - case 7: - if (*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x6b8)) { - if (*(float *)(param_1 + 0x6b4) < *(float *)(param_1 + 0x6b8)) { - *(float *)(param_1 + 0x6b8) = - *(float *)(param_1 + 0x6b8) - *(float *)(param_1 + 0x344) * param_2; - if (*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x6b8)) { - uVar1 = *(undefined4 *)(param_1 + 0x6b8); - } - else { - uVar1 = *(undefined4 *)(param_1 + 0x6b4); - } - *(undefined4 *)(param_1 + 0x6b8) = uVar1; - if (*(float *)(param_1 + 0x530) <= *(float *)(param_1 + 0x6b8)) { - uVar1 = *(undefined4 *)(param_1 + 0x6b8); - } - else { - uVar1 = *(undefined4 *)(param_1 + 0x530); - } - *(undefined4 *)(param_1 + 0x6b8) = uVar1; - } - } - else { - *(float *)(param_1 + 0x6b8) = - *(float *)(param_1 + 0x344) * param_2 + *(float *)(param_1 + 0x6b8); - if (*(float *)(param_1 + 0x6b8) <= *(float *)(param_1 + 0x6b4)) { - uVar1 = *(undefined4 *)(param_1 + 0x6b8); - } - else { - uVar1 = *(undefined4 *)(param_1 + 0x6b4); - } - *(undefined4 *)(param_1 + 0x6b8) = uVar1; - if (*(float *)(param_1 + 0x6b8) <= *(float *)(param_1 + 0x534)) { - uVar1 = *(undefined4 *)(param_1 + 0x6b8); - } - else { - uVar1 = *(undefined4 *)(param_1 + 0x534); - } - *(undefined4 *)(param_1 + 0x6b8) = uVar1; - } - fVar4 = FUN_0042790c(param_1 + 0x6bc, - param_2 * (*(float *)(param_1 + 0x6b8) / *(float *)(param_1 + 0x534)) * - *(float *)(param_1 + 0x5a8),param_3); - local_8 = (float)fVar4; - break; - case 0xc: - case 0xd: - if (*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x6b8)) { - if (*(float *)(param_1 + 0x6b4) < *(float *)(param_1 + 0x6b8)) { - *(float *)(param_1 + 0x6b8) = - *(float *)(param_1 + 0x6b8) - *(float *)(param_1 + 0x344) * param_2; - if (*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x6b8)) { - uVar1 = *(undefined4 *)(param_1 + 0x6b8); - } - else { - uVar1 = *(undefined4 *)(param_1 + 0x6b4); - } - *(undefined4 *)(param_1 + 0x6b8) = uVar1; - if (*(float *)(param_1 + 0x538) <= *(float *)(param_1 + 0x6b8)) { - uVar1 = *(undefined4 *)(param_1 + 0x6b8); - } - else { - uVar1 = *(undefined4 *)(param_1 + 0x538); - } - *(undefined4 *)(param_1 + 0x6b8) = uVar1; - } - } - else { - *(float *)(param_1 + 0x6b8) = - *(float *)(param_1 + 0x344) * param_2 + *(float *)(param_1 + 0x6b8); - if (*(float *)(param_1 + 0x6b8) <= *(float *)(param_1 + 0x6b4)) { - uVar1 = *(undefined4 *)(param_1 + 0x6b8); - } - else { - uVar1 = *(undefined4 *)(param_1 + 0x6b4); - } - *(undefined4 *)(param_1 + 0x6b8) = uVar1; - if (*(float *)(param_1 + 0x6b8) <= *(float *)(param_1 + 0x7a0)) { - uVar1 = *(undefined4 *)(param_1 + 0x6b8); - } - else { - uVar1 = *(undefined4 *)(param_1 + 0x7a0); - } - *(undefined4 *)(param_1 + 0x6b8) = uVar1; - } - fVar4 = FUN_0042790c(param_1 + 0x6bc, - param_2 * (*(float *)(param_1 + 0x6b8) / *(float *)(param_1 + 0x34c)) * - *(float *)(param_1 + 0x5a8),param_3); - local_8 = (float)fVar4; - break; - case 0x12: - case 0x13: - if (*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x6b8)) { - if (*(float *)(param_1 + 0x6b4) < *(float *)(param_1 + 0x6b8)) { - *(float *)(param_1 + 0x6b8) = - *(float *)(param_1 + 0x6b8) - *(float *)(param_1 + 0x5b0) * param_2; - if (*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x6b8)) { - uVar1 = *(undefined4 *)(param_1 + 0x6b8); - } - else { - uVar1 = *(undefined4 *)(param_1 + 0x6b4); - } - *(undefined4 *)(param_1 + 0x6b8) = uVar1; - if (*(float *)(param_1 + 0x350) <= *(float *)(param_1 + 0x6b8)) { - uVar1 = *(undefined4 *)(param_1 + 0x6b8); - } - else { - uVar1 = *(undefined4 *)(param_1 + 0x350); - } - *(undefined4 *)(param_1 + 0x6b8) = uVar1; - } - } - else { - *(float *)(param_1 + 0x6b8) = - *(float *)(param_1 + 0x5b0) * param_2 + *(float *)(param_1 + 0x6b8); - if (*(float *)(param_1 + 0x6b8) <= *(float *)(param_1 + 0x6b4)) { - uVar1 = *(undefined4 *)(param_1 + 0x6b8); - } - else { - uVar1 = *(undefined4 *)(param_1 + 0x6b4); - } - *(undefined4 *)(param_1 + 0x6b8) = uVar1; - if (*(float *)(param_1 + 0x6b8) <= *(float *)(param_1 + 0x52c)) { - uVar1 = *(undefined4 *)(param_1 + 0x6b8); - } - else { - uVar1 = *(undefined4 *)(param_1 + 0x52c); - } - *(undefined4 *)(param_1 + 0x6b8) = uVar1; - } - fVar3 = *(float *)(param_1 + 0x6b8) / *(float *)(param_1 + 0x350); - if (fVar3 <= _DAT_004a5bf4) { - fVar3 = -fVar3; - } - fVar4 = FUN_0042790c(param_1 + 0x6bc,fVar3 * param_2 * *(float *)(param_1 + 0x5a8),param_3); - local_8 = (float)fVar4; - break; - case 0x16: - case 0x17: - case 0x18: - case 0x19: - case 0x1a: - case 0x1b: - FUN_00408440((undefined4 *)(param_1 + 0x598),&DAT_004e0f74); - *(undefined4 *)(param_1 + 0x5a4) = 0; - *(undefined4 *)(param_1 + 0x658) = 0; - *(undefined4 *)(param_1 + 0x650) = 0; - FUN_0041bbd8(param_1 + 0x714,0); - FUN_004283b8(param_1 + 0x6bc,param_3); - break; - default: - FUN_004dbb24(&DAT_00524e20,s_StandingAnimation_0050cfe8 + *(int *)(param_1 + 0x728) * 0x3c, - (char *)0x0); - FUN_004d9c38(&DAT_00524e20); - FUN_0040385c(s_Unsupported_mech_animation__0050d833,s_d__tesla_bt_bt_MECH2_CPP_0050d850,0x206); - } - return (float10)local_8; -} - - - -/* @004a5bf8 file=bt/mech2.cpp name=FUN_004a5bf8 */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -float10 __cdecl FUN_004a5bf8(int param_1,float param_2,int param_3) - -{ - undefined4 uVar1; - int iVar2; - float fVar3; - float10 fVar4; - float local_c; - float local_8; - - iVar2 = *(int *)(param_1 + 0x728); - if (((iVar2 - 6U < 2) || (iVar2 - 0xcU < 2)) || (iVar2 - 0x12U < 2)) { - if (*(int *)(param_1 + 0x40) == 3) { - if (*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x53c)) { - uVar1 = *(undefined4 *)(param_1 + 0x6b4); - } - else { - uVar1 = *(undefined4 *)(param_1 + 0x53c); - } - *(undefined4 *)(param_1 + 0x6b4) = uVar1; - } - else { - if (*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x540)) { - uVar1 = *(undefined4 *)(param_1 + 0x6b4); - } - else { - uVar1 = *(undefined4 *)(param_1 + 0x540); - } - *(undefined4 *)(param_1 + 0x6b4) = uVar1; - } - fVar3 = _DAT_004a6340; - if (_DAT_004a6340 <= *(float *)(param_1 + 0x6b4)) { - fVar3 = *(float *)(param_1 + 0x6b4); - } - *(float *)(param_1 + 0x6b4) = fVar3; - } - switch(*(undefined4 *)(param_1 + 0x728)) { - case 0: - if (*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x530)) { - local_8 = 0.0; - break; - } - FUN_004a800c(param_1,5); - case 2: - case 3: - case 4: - case 5: - case 8: - case 9: - case 10: - case 0xb: - case 0xe: - case 0xf: - case 0x10: - case 0x11: - case 0x14: - case 0x15: - case 0x16: - case 0x17: - case 0x1a: - case 0x1b: - case 0x20: - fVar4 = FUN_0042790c(param_1 + 0x6bc, - param_2 * *(float *)(param_1 + 0x5a8) * *(float *)(param_1 + 0x5ac),param_3 - ); - local_8 = (float)fVar4; - *(float *)(param_1 + 0x6b8) = local_8 / param_2; - break; - case 1: - local_8 = 0.0; - break; - case 6: - case 7: - if (*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x6b8)) { - if (*(float *)(param_1 + 0x6b4) < *(float *)(param_1 + 0x6b8)) { - *(float *)(param_1 + 0x6b8) = - *(float *)(param_1 + 0x6b8) - *(float *)(param_1 + 0x344) * param_2; - if (*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x6b8)) { - uVar1 = *(undefined4 *)(param_1 + 0x6b8); - } - else { - uVar1 = *(undefined4 *)(param_1 + 0x6b4); - } - *(undefined4 *)(param_1 + 0x6b8) = uVar1; - if (*(float *)(param_1 + 0x530) <= *(float *)(param_1 + 0x6b8)) { - uVar1 = *(undefined4 *)(param_1 + 0x6b8); - } - else { - uVar1 = *(undefined4 *)(param_1 + 0x530); - } - *(undefined4 *)(param_1 + 0x6b8) = uVar1; - } - } - else { - *(float *)(param_1 + 0x6b8) = - *(float *)(param_1 + 0x344) * param_2 + *(float *)(param_1 + 0x6b8); - if (*(float *)(param_1 + 0x6b8) <= *(float *)(param_1 + 0x6b4)) { - uVar1 = *(undefined4 *)(param_1 + 0x6b8); - } - else { - uVar1 = *(undefined4 *)(param_1 + 0x6b4); - } - *(undefined4 *)(param_1 + 0x6b8) = uVar1; - if (*(float *)(param_1 + 0x6b8) <= *(float *)(param_1 + 0x534)) { - uVar1 = *(undefined4 *)(param_1 + 0x6b8); - } - else { - uVar1 = *(undefined4 *)(param_1 + 0x534); - } - *(undefined4 *)(param_1 + 0x6b8) = uVar1; - } - fVar4 = FUN_0042790c(param_1 + 0x6bc, - param_2 * (*(float *)(param_1 + 0x6b8) / *(float *)(param_1 + 0x534)) * - *(float *)(param_1 + 0x5a8),param_3); - local_8 = (float)fVar4; - break; - case 0xc: - case 0xd: - if (*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x6b8)) { - if (*(float *)(param_1 + 0x6b4) < *(float *)(param_1 + 0x6b8)) { - *(float *)(param_1 + 0x6b8) = - *(float *)(param_1 + 0x6b8) - *(float *)(param_1 + 0x344) * param_2; - if (*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x6b8)) { - uVar1 = *(undefined4 *)(param_1 + 0x6b8); - } - else { - uVar1 = *(undefined4 *)(param_1 + 0x6b4); - } - *(undefined4 *)(param_1 + 0x6b8) = uVar1; - if (*(float *)(param_1 + 0x538) <= *(float *)(param_1 + 0x6b8)) { - uVar1 = *(undefined4 *)(param_1 + 0x6b8); - } - else { - uVar1 = *(undefined4 *)(param_1 + 0x538); - } - *(undefined4 *)(param_1 + 0x6b8) = uVar1; - } - } - else { - *(float *)(param_1 + 0x6b8) = - *(float *)(param_1 + 0x344) * param_2 + *(float *)(param_1 + 0x6b8); - if (*(float *)(param_1 + 0x6b8) <= *(float *)(param_1 + 0x6b4)) { - uVar1 = *(undefined4 *)(param_1 + 0x6b8); - } - else { - uVar1 = *(undefined4 *)(param_1 + 0x6b4); - } - *(undefined4 *)(param_1 + 0x6b8) = uVar1; - if (*(float *)(param_1 + 0x6b8) <= *(float *)(param_1 + 0x7a0)) { - uVar1 = *(undefined4 *)(param_1 + 0x6b8); - } - else { - uVar1 = *(undefined4 *)(param_1 + 0x7a0); - } - *(undefined4 *)(param_1 + 0x6b8) = uVar1; - } - fVar4 = FUN_0042790c(param_1 + 0x6bc, - param_2 * (*(float *)(param_1 + 0x6b8) / *(float *)(param_1 + 0x34c)) * - *(float *)(param_1 + 0x5a8),param_3); - local_8 = (float)fVar4; - break; - case 0x12: - case 0x13: - if (*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x6b8)) { - if (*(float *)(param_1 + 0x6b4) < *(float *)(param_1 + 0x6b8)) { - *(float *)(param_1 + 0x6b8) = - *(float *)(param_1 + 0x6b8) - *(float *)(param_1 + 0x5b0) * param_2; - if (*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x6b8)) { - uVar1 = *(undefined4 *)(param_1 + 0x6b8); - } - else { - uVar1 = *(undefined4 *)(param_1 + 0x6b4); - } - *(undefined4 *)(param_1 + 0x6b8) = uVar1; - if (*(float *)(param_1 + 0x350) <= *(float *)(param_1 + 0x6b8)) { - uVar1 = *(undefined4 *)(param_1 + 0x6b8); - } - else { - uVar1 = *(undefined4 *)(param_1 + 0x350); - } - *(undefined4 *)(param_1 + 0x6b8) = uVar1; - } - } - else { - *(float *)(param_1 + 0x6b8) = - *(float *)(param_1 + 0x5b0) * param_2 + *(float *)(param_1 + 0x6b8); - if (*(float *)(param_1 + 0x6b8) <= *(float *)(param_1 + 0x6b4)) { - uVar1 = *(undefined4 *)(param_1 + 0x6b8); - } - else { - uVar1 = *(undefined4 *)(param_1 + 0x6b4); - } - *(undefined4 *)(param_1 + 0x6b8) = uVar1; - if (*(float *)(param_1 + 0x6b8) <= *(float *)(param_1 + 0x52c)) { - uVar1 = *(undefined4 *)(param_1 + 0x6b8); - } - else { - uVar1 = *(undefined4 *)(param_1 + 0x52c); - } - *(undefined4 *)(param_1 + 0x6b8) = uVar1; - } - fVar3 = *(float *)(param_1 + 0x6b8) / *(float *)(param_1 + 0x350); - if (fVar3 <= _DAT_004a6340) { - fVar3 = -fVar3; - } - fVar4 = FUN_0042790c(param_1 + 0x6bc,fVar3 * param_2 * *(float *)(param_1 + 0x5a8),param_3); - local_8 = (float)fVar4; - break; - case 0x18: - case 0x19: - if (*(int *)(param_1 + 0x40) == 3) { - if (*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x6b8)) { - if (*(float *)(param_1 + 0x6b4) < *(float *)(param_1 + 0x6b8)) { - *(float *)(param_1 + 0x6b8) = - *(float *)(param_1 + 0x6b8) - *(float *)(param_1 + 0x344) * param_2; - if (*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x6b8)) { - uVar1 = *(undefined4 *)(param_1 + 0x6b8); - } - else { - uVar1 = *(undefined4 *)(param_1 + 0x6b4); - } - *(undefined4 *)(param_1 + 0x6b8) = uVar1; - if (*(float *)(param_1 + 0x53c) <= *(float *)(param_1 + 0x6b8)) { - uVar1 = *(undefined4 *)(param_1 + 0x6b8); - } - else { - uVar1 = *(undefined4 *)(param_1 + 0x53c); - } - *(undefined4 *)(param_1 + 0x6b8) = uVar1; - } - } - else { - *(float *)(param_1 + 0x6b8) = - *(float *)(param_1 + 0x344) * param_2 + *(float *)(param_1 + 0x6b8); - if (*(float *)(param_1 + 0x6b8) <= *(float *)(param_1 + 0x6b4)) { - uVar1 = *(undefined4 *)(param_1 + 0x6b8); - } - else { - uVar1 = *(undefined4 *)(param_1 + 0x6b4); - } - *(undefined4 *)(param_1 + 0x6b8) = uVar1; - if (*(float *)(param_1 + 0x6b8) <= *(float *)(param_1 + 0x544)) { - uVar1 = *(undefined4 *)(param_1 + 0x6b8); - } - else { - uVar1 = *(undefined4 *)(param_1 + 0x544); - } - *(undefined4 *)(param_1 + 0x6b8) = uVar1; - } - local_c = *(float *)(param_1 + 0x6b8) / *(float *)(param_1 + 0x544); - } - else { - if (*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x6b8)) { - if (*(float *)(param_1 + 0x6b4) < *(float *)(param_1 + 0x6b8)) { - *(float *)(param_1 + 0x6b8) = - *(float *)(param_1 + 0x6b8) - *(float *)(param_1 + 0x344) * param_2; - if (*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x6b8)) { - uVar1 = *(undefined4 *)(param_1 + 0x6b8); - } - else { - uVar1 = *(undefined4 *)(param_1 + 0x6b4); - } - *(undefined4 *)(param_1 + 0x6b8) = uVar1; - if (*(float *)(param_1 + 0x540) <= *(float *)(param_1 + 0x6b8)) { - uVar1 = *(undefined4 *)(param_1 + 0x6b8); - } - else { - uVar1 = *(undefined4 *)(param_1 + 0x540); - } - *(undefined4 *)(param_1 + 0x6b8) = uVar1; - } - } - else { - *(float *)(param_1 + 0x6b8) = - *(float *)(param_1 + 0x344) * param_2 + *(float *)(param_1 + 0x6b8); - if (*(float *)(param_1 + 0x6b8) <= *(float *)(param_1 + 0x6b4)) { - uVar1 = *(undefined4 *)(param_1 + 0x6b8); - } - else { - uVar1 = *(undefined4 *)(param_1 + 0x6b4); - } - *(undefined4 *)(param_1 + 0x6b8) = uVar1; - if (*(float *)(param_1 + 0x6b8) <= *(float *)(param_1 + 0x548)) { - uVar1 = *(undefined4 *)(param_1 + 0x6b8); - } - else { - uVar1 = *(undefined4 *)(param_1 + 0x548); - } - *(undefined4 *)(param_1 + 0x6b8) = uVar1; - } - local_c = *(float *)(param_1 + 0x6b8) / *(float *)(param_1 + 0x548); - } - fVar4 = FUN_0042790c(param_1 + 0x6bc,param_2 * local_c * *(float *)(param_1 + 0x5a8),param_3); - local_8 = (float)fVar4; - break; - default: - FUN_004dbb24(&DAT_00524e20,s_StandingAnimation_0050cfe8 + *(int *)(param_1 + 0x728) * 0x3c, - (char *)0x0); - FUN_004d9c38(&DAT_00524e20); - FUN_0040385c(s_Unsupported_mech_animation__0050d869,s_d__tesla_bt_bt_MECH2_CPP_0050d886,0x2e8); - } - return (float10)local_8; -} - - - -/* @004a6344 file=? name=FUN_004a6344 */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -float10 __thiscall -FUN_004a6344(int param_1,int param_2,undefined4 param_3,float param_4,int param_5) - -{ - undefined4 uVar1; - int iVar2; - float fVar3; - int iVar4; - float10 fVar5; - float local_8; - - local_8 = 0.0; - iVar4 = *(int *)(param_2 + 0x40); - iVar2 = *(int *)(param_2 + 0x728); - if (((iVar2 - 6U < 2) || (iVar2 - 0xcU < 2)) || (iVar2 - 0x12U < 2)) { - if (iVar4 == 3) { - if (*(float *)(param_2 + 0x6b4) <= *(float *)(param_2 + 0x53c)) { - uVar1 = *(undefined4 *)(param_2 + 0x6b4); - } - else { - uVar1 = *(undefined4 *)(param_2 + 0x53c); - } - *(undefined4 *)(param_2 + 0x6b4) = uVar1; - } - else { - if (*(float *)(param_2 + 0x6b4) <= *(float *)(param_2 + 0x540)) { - uVar1 = *(undefined4 *)(param_2 + 0x6b4); - } - else { - uVar1 = *(undefined4 *)(param_2 + 0x540); - } - *(undefined4 *)(param_2 + 0x6b4) = uVar1; - } - fVar3 = _DAT_004a6924; - if (_DAT_004a6924 <= *(float *)(param_2 + 0x6b4)) { - fVar3 = *(float *)(param_2 + 0x6b4); - } - *(float *)(param_2 + 0x6b4) = fVar3; - } - switch(*(undefined4 *)(param_2 + 0x728)) { - default: - goto switchD_004a63ff_caseD_0; - case 2: - FUN_0041bbd8(param_2 + 0x714,1); - goto switchD_004a63ff_caseD_0; - case 3: - case 8: - case 9: - case 0x14: - case 0x15: - case 0x1a: - case 0x1b: - FUN_0041bbd8(param_2 + 0x714,0); - goto switchD_004a63ff_caseD_0; - case 4: - FUN_0041bbd8(param_2 + 0x714,0); - goto switchD_004a63ff_caseD_0; - case 5: - case 6: - case 0xe: - if ((*(float *)(param_2 + 0x530) <= *(float *)(param_2 + 0x6b4)) || - (*(float *)(param_2 + 0x530) <= - *(float *)(param_2 + 0x6b8) - *(float *)(param_2 + 0x344) * param_4)) { - if ((*(float *)(param_2 + 0x6b4) <= *(float *)(param_2 + 0x534)) || - (*(float *)(param_2 + 0x344) * param_4 + *(float *)(param_2 + 0x6b8) <= - *(float *)(param_2 + 0x534))) { - if (iVar4 == 4) { - param_1 = 7; - } - if (iVar4 == 3) { - param_1 = 0x16; - } -LAB_004a6505: - FUN_004a800c(param_2,param_1); - fVar5 = FUN_0042790c(param_2 + 0x6bc, - (param_4 * *(float *)(param_2 + 0x6b8) * *(float *)(param_2 + 0x5a8)) / - *(float *)(param_2 + 0x534),param_5); - local_8 = (float)fVar5; - goto switchD_004a63ff_caseD_0; - } - iVar4 = 0xb; - } - else { - iVar4 = 9; - } - break; - case 7: - case 0xf: - if ((*(float *)(param_2 + 0x530) <= *(float *)(param_2 + 0x6b4)) || - (*(float *)(param_2 + 0x530) <= - *(float *)(param_2 + 0x6b8) - *(float *)(param_2 + 0x344) * param_4)) { - if ((*(float *)(param_2 + 0x6b4) <= *(float *)(param_2 + 0x534)) || - (*(float *)(param_2 + 0x344) * param_4 + *(float *)(param_2 + 0x6b8) <= - *(float *)(param_2 + 0x534))) { - if (iVar4 == 3) { - param_1 = 6; - } - if (iVar4 == 4) { - param_1 = 0x17; - } - goto LAB_004a6505; - } - iVar4 = 10; - } - else { - iVar4 = 8; - } - break; - case 10: - case 0xc: - if ((*(float *)(param_2 + 0x538) <= *(float *)(param_2 + 0x6b4)) || - (*(float *)(param_2 + 0x538) <= - *(float *)(param_2 + 0x6b8) - *(float *)(param_2 + 0x344) * param_4)) { - iVar4 = 0xd; -LAB_004a6648: - FUN_004a800c(param_2,iVar4); - fVar5 = FUN_0042790c(param_2 + 0x6bc, - (param_4 * *(float *)(param_2 + 0x6b8) * *(float *)(param_2 + 0x5a8)) / - *(float *)(param_2 + 0x34c),param_5); - local_8 = (float)fVar5; - goto switchD_004a63ff_caseD_0; - } - iVar4 = 0xf; - break; - case 0xb: - case 0xd: - if ((*(float *)(param_2 + 0x538) <= *(float *)(param_2 + 0x6b4)) || - (*(float *)(param_2 + 0x538) <= - *(float *)(param_2 + 0x6b8) - *(float *)(param_2 + 0x344) * param_4)) { - iVar4 = 0xc; - goto LAB_004a6648; - } - iVar4 = 0xe; - break; - case 0x10: - case 0x12: - if ((*(float *)(param_2 + 0x6b4) <= *(float *)(param_2 + 0x52c)) || - (*(float *)(param_2 + 0x5b0) * param_4 + *(float *)(param_2 + 0x6b8) <= - *(float *)(param_2 + 0x52c))) { - FUN_004a800c(param_2,0x13); - if ((param_4 * *(float *)(param_2 + 0x6b8) * *(float *)(param_2 + 0x5a8)) / - *(float *)(param_2 + 0x350) <= _DAT_004a6924) { - fVar3 = (-param_4 * *(float *)(param_2 + 0x6b8) * *(float *)(param_2 + 0x5a8)) / - *(float *)(param_2 + 0x350); - } - else { - fVar3 = (param_4 * *(float *)(param_2 + 0x6b8) * *(float *)(param_2 + 0x5a8)) / - *(float *)(param_2 + 0x350); - } - fVar5 = FUN_0042790c(param_2 + 0x6bc,fVar3,param_5); - local_8 = (float)fVar5; - goto switchD_004a63ff_caseD_0; - } - iVar4 = 0x15; - break; - case 0x11: - case 0x13: - if ((*(float *)(param_2 + 0x6b4) <= *(float *)(param_2 + 0x52c)) || - (*(float *)(param_2 + 0x5b0) * param_4 + *(float *)(param_2 + 0x6b8) <= - *(float *)(param_2 + 0x52c))) { - FUN_004a800c(param_2,0x12); - if ((param_4 * *(float *)(param_2 + 0x6b8) * *(float *)(param_2 + 0x5a8)) / - *(float *)(param_2 + 0x350) <= _DAT_004a6924) { - fVar3 = (-param_4 * *(float *)(param_2 + 0x6b8) * *(float *)(param_2 + 0x5a8)) / - *(float *)(param_2 + 0x350); - } - else { - fVar3 = (param_4 * *(float *)(param_2 + 0x6b8) * *(float *)(param_2 + 0x5a8)) / - *(float *)(param_2 + 0x350); - } - fVar5 = FUN_0042790c(param_2 + 0x6bc,fVar3,param_5); - local_8 = (float)fVar5; - goto switchD_004a63ff_caseD_0; - } - iVar4 = 0x14; - break; - case 0x16: - case 0x18: - if ((*(float *)(param_2 + 0x53c) <= *(float *)(param_2 + 0x6b4)) || - (*(float *)(param_2 + 0x53c) <= - *(float *)(param_2 + 0x6b8) - *(float *)(param_2 + 0x344) * param_4)) { - FUN_004a800c(param_2,0x18); - fVar5 = FUN_0042790c(param_2 + 0x6bc, - (param_4 * *(float *)(param_2 + 0x6b8) * *(float *)(param_2 + 0x5a8)) / - *(float *)(param_2 + 0x544),param_5); - local_8 = (float)fVar5; - goto switchD_004a63ff_caseD_0; - } - iVar4 = 0x1a; - break; - case 0x17: - case 0x19: - if ((*(float *)(param_2 + 0x540) <= *(float *)(param_2 + 0x6b4)) || - (*(float *)(param_2 + 0x540) <= - *(float *)(param_2 + 0x6b8) - *(float *)(param_2 + 0x344) * param_4)) { - FUN_004a800c(param_2,0x19); - fVar5 = FUN_0042790c(param_2 + 0x6bc, - (param_4 * *(float *)(param_2 + 0x6b8) * *(float *)(param_2 + 0x5a8)) / - *(float *)(param_2 + 0x548),param_5); - local_8 = (float)fVar5; - goto switchD_004a63ff_caseD_0; - } - iVar4 = 0x1b; - break; - case 0x20: - FUN_0041bbd8(param_2 + 0x714,0); - goto switchD_004a63ff_caseD_0; - } - FUN_004a800c(param_2,iVar4); - fVar5 = FUN_0042790c(param_2 + 0x6bc,param_4 * *(float *)(param_2 + 0x5a8),param_5); - local_8 = (float)fVar5; -switchD_004a63ff_caseD_0: - return (float10)local_8; -} - - - -/* @004a71f4 file=bt/mech2.cpp name=FUN_004a71f4 */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -float10 __cdecl FUN_004a71f4(int param_1,float param_2) - -{ - undefined4 uVar1; - int iVar2; - int iVar3; - int iVar4; - float fVar5; - float10 fVar6; - float local_c; - float local_8; - - iVar2 = *(int *)(param_1 + 0x40); - iVar3 = **(int **)(param_1 + 0x128); - iVar4 = *(int *)(param_1 + 0x3b0); - if (((iVar4 - 6U < 2) || (iVar4 - 0xcU < 2)) || (iVar4 - 0x12U < 2)) { - if (iVar2 == 3) { - if (*(float *)(iVar3 + 0x128) <= *(float *)(param_1 + 0x53c)) { - uVar1 = *(undefined4 *)(iVar3 + 0x128); - } - else { - uVar1 = *(undefined4 *)(param_1 + 0x53c); - } - *(undefined4 *)(iVar3 + 0x128) = uVar1; - } - else { - if (*(float *)(iVar3 + 0x128) <= *(float *)(param_1 + 0x540)) { - uVar1 = *(undefined4 *)(iVar3 + 0x128); - } - else { - uVar1 = *(undefined4 *)(param_1 + 0x540); - } - *(undefined4 *)(iVar3 + 0x128) = uVar1; - } - fVar5 = _DAT_004a796c; - if (_DAT_004a796c <= *(float *)(iVar3 + 0x128)) { - fVar5 = *(float *)(iVar3 + 0x128); - } - *(float *)(iVar3 + 0x128) = fVar5; - } - switch(*(undefined4 *)(param_1 + 0x3b0)) { - case 0: - if (*(float *)(iVar3 + 0x128) <= *(float *)(param_1 + 0x530)) { - local_8 = 0.0; - break; - } - FUN_004a7fc4(param_1,5); - case 2: - case 3: - case 5: - case 8: - case 9: - case 10: - case 0xb: - case 0xe: - case 0xf: - case 0x10: - case 0x11: - case 0x14: - case 0x15: - case 0x16: - case 0x17: - case 0x1a: - case 0x1b: - case 0x20: -switchD_004a72b4_caseD_2: - fVar6 = FUN_0042790c(param_1 + 0x65c, - param_2 * *(float *)(param_1 + 0x5a8) * *(float *)(param_1 + 0x5ac),1); - local_8 = (float)fVar6; - *(float *)(param_1 + 0x348) = local_8 / param_2; - break; - case 1: - local_8 = 0.0; - break; - case 4: - if (*(float *)(param_1 + 0x530) < *(float *)(iVar3 + 0x128)) { - FUN_0041bbd8(param_1 + 0x39c,0); - FUN_004a4c54(param_1,8); - break; - } - goto switchD_004a72b4_caseD_2; - case 6: - case 7: - if (*(float *)(iVar3 + 0x128) <= *(float *)(param_1 + 0x348)) { - if (*(float *)(iVar3 + 0x128) < *(float *)(param_1 + 0x348)) { - *(float *)(param_1 + 0x348) = - *(float *)(param_1 + 0x348) - *(float *)(param_1 + 0x344) * param_2; - if (*(float *)(iVar3 + 0x128) <= *(float *)(param_1 + 0x348)) { - uVar1 = *(undefined4 *)(param_1 + 0x348); - } - else { - uVar1 = *(undefined4 *)(iVar3 + 0x128); - } - *(undefined4 *)(param_1 + 0x348) = uVar1; - if (*(float *)(param_1 + 0x530) <= *(float *)(param_1 + 0x348)) { - uVar1 = *(undefined4 *)(param_1 + 0x348); - } - else { - uVar1 = *(undefined4 *)(param_1 + 0x530); - } - *(undefined4 *)(param_1 + 0x348) = uVar1; - } - } - else { - *(float *)(param_1 + 0x348) = - *(float *)(param_1 + 0x344) * param_2 + *(float *)(param_1 + 0x348); - if (*(float *)(param_1 + 0x348) <= *(float *)(iVar3 + 0x128)) { - uVar1 = *(undefined4 *)(param_1 + 0x348); - } - else { - uVar1 = *(undefined4 *)(iVar3 + 0x128); - } - *(undefined4 *)(param_1 + 0x348) = uVar1; - if (*(float *)(param_1 + 0x348) <= *(float *)(param_1 + 0x534)) { - uVar1 = *(undefined4 *)(param_1 + 0x348); - } - else { - uVar1 = *(undefined4 *)(param_1 + 0x534); - } - *(undefined4 *)(param_1 + 0x348) = uVar1; - } - fVar6 = FUN_0042790c(param_1 + 0x65c, - param_2 * (*(float *)(param_1 + 0x348) / *(float *)(param_1 + 0x534)) * - *(float *)(param_1 + 0x5a8),1); - local_8 = (float)fVar6; - break; - case 0xc: - case 0xd: - if (*(float *)(iVar3 + 0x128) <= *(float *)(param_1 + 0x348)) { - if (*(float *)(iVar3 + 0x128) < *(float *)(param_1 + 0x348)) { - *(float *)(param_1 + 0x348) = - *(float *)(param_1 + 0x348) - *(float *)(param_1 + 0x344) * param_2; - if (*(float *)(iVar3 + 0x128) <= *(float *)(param_1 + 0x348)) { - uVar1 = *(undefined4 *)(param_1 + 0x348); - } - else { - uVar1 = *(undefined4 *)(iVar3 + 0x128); - } - *(undefined4 *)(param_1 + 0x348) = uVar1; - if (*(float *)(param_1 + 0x538) <= *(float *)(param_1 + 0x348)) { - uVar1 = *(undefined4 *)(param_1 + 0x348); - } - else { - uVar1 = *(undefined4 *)(param_1 + 0x538); - } - *(undefined4 *)(param_1 + 0x348) = uVar1; - } - } - else { - *(float *)(param_1 + 0x348) = - *(float *)(param_1 + 0x344) * param_2 + *(float *)(param_1 + 0x348); - if (*(float *)(param_1 + 0x348) <= *(float *)(iVar3 + 0x128)) { - uVar1 = *(undefined4 *)(param_1 + 0x348); - } - else { - uVar1 = *(undefined4 *)(iVar3 + 0x128); - } - *(undefined4 *)(param_1 + 0x348) = uVar1; - if (*(float *)(param_1 + 0x348) <= *(float *)(param_1 + 0x7a0)) { - uVar1 = *(undefined4 *)(param_1 + 0x348); - } - else { - uVar1 = *(undefined4 *)(param_1 + 0x7a0); - } - *(undefined4 *)(param_1 + 0x348) = uVar1; - } - fVar6 = FUN_0042790c(param_1 + 0x65c, - param_2 * (*(float *)(param_1 + 0x348) / *(float *)(param_1 + 0x34c)) * - *(float *)(param_1 + 0x5a8),1); - local_8 = (float)fVar6; - break; - case 0x12: - case 0x13: - if (*(float *)(iVar3 + 0x128) <= *(float *)(param_1 + 0x348)) { - if (*(float *)(iVar3 + 0x128) < *(float *)(param_1 + 0x348)) { - *(float *)(param_1 + 0x348) = - *(float *)(param_1 + 0x348) - *(float *)(param_1 + 0x5b0) * param_2; - if (*(float *)(iVar3 + 0x128) <= *(float *)(param_1 + 0x348)) { - uVar1 = *(undefined4 *)(param_1 + 0x348); - } - else { - uVar1 = *(undefined4 *)(iVar3 + 0x128); - } - *(undefined4 *)(param_1 + 0x348) = uVar1; - if (*(float *)(param_1 + 0x350) <= *(float *)(param_1 + 0x348)) { - uVar1 = *(undefined4 *)(param_1 + 0x348); - } - else { - uVar1 = *(undefined4 *)(param_1 + 0x350); - } - *(undefined4 *)(param_1 + 0x348) = uVar1; - } - } - else { - *(float *)(param_1 + 0x348) = - *(float *)(param_1 + 0x5b0) * param_2 + *(float *)(param_1 + 0x348); - if (*(float *)(param_1 + 0x348) <= *(float *)(iVar3 + 0x128)) { - uVar1 = *(undefined4 *)(param_1 + 0x348); - } - else { - uVar1 = *(undefined4 *)(iVar3 + 0x128); - } - *(undefined4 *)(param_1 + 0x348) = uVar1; - if (*(float *)(param_1 + 0x348) <= *(float *)(param_1 + 0x52c)) { - uVar1 = *(undefined4 *)(param_1 + 0x348); - } - else { - uVar1 = *(undefined4 *)(param_1 + 0x52c); - } - *(undefined4 *)(param_1 + 0x348) = uVar1; - } - fVar5 = *(float *)(param_1 + 0x348) / *(float *)(param_1 + 0x350); - if (fVar5 <= _DAT_004a796c) { - fVar5 = -fVar5; - } - fVar6 = FUN_0042790c(param_1 + 0x65c,fVar5 * param_2 * *(float *)(param_1 + 0x5a8),1); - local_8 = (float)fVar6; - break; - case 0x18: - case 0x19: - if (iVar2 == 3) { - if (*(float *)(iVar3 + 0x128) <= *(float *)(param_1 + 0x348)) { - if (*(float *)(iVar3 + 0x128) < *(float *)(param_1 + 0x348)) { - *(float *)(param_1 + 0x348) = - *(float *)(param_1 + 0x348) - *(float *)(param_1 + 0x344) * param_2; - if (*(float *)(iVar3 + 0x128) <= *(float *)(param_1 + 0x348)) { - uVar1 = *(undefined4 *)(param_1 + 0x348); - } - else { - uVar1 = *(undefined4 *)(iVar3 + 0x128); - } - *(undefined4 *)(param_1 + 0x348) = uVar1; - if (*(float *)(param_1 + 0x53c) <= *(float *)(param_1 + 0x348)) { - uVar1 = *(undefined4 *)(param_1 + 0x348); - } - else { - uVar1 = *(undefined4 *)(param_1 + 0x53c); - } - *(undefined4 *)(param_1 + 0x348) = uVar1; - } - } - else { - *(float *)(param_1 + 0x348) = - *(float *)(param_1 + 0x344) * param_2 + *(float *)(param_1 + 0x348); - if (*(float *)(param_1 + 0x348) <= *(float *)(iVar3 + 0x128)) { - uVar1 = *(undefined4 *)(param_1 + 0x348); - } - else { - uVar1 = *(undefined4 *)(iVar3 + 0x128); - } - *(undefined4 *)(param_1 + 0x348) = uVar1; - if (*(float *)(param_1 + 0x348) <= *(float *)(param_1 + 0x544)) { - uVar1 = *(undefined4 *)(param_1 + 0x348); - } - else { - uVar1 = *(undefined4 *)(param_1 + 0x544); - } - *(undefined4 *)(param_1 + 0x348) = uVar1; - } - local_c = *(float *)(param_1 + 0x348) / *(float *)(param_1 + 0x544); - } - else { - if (*(float *)(iVar3 + 0x128) <= *(float *)(param_1 + 0x348)) { - if (*(float *)(iVar3 + 0x128) < *(float *)(param_1 + 0x348)) { - *(float *)(param_1 + 0x348) = - *(float *)(param_1 + 0x348) - *(float *)(param_1 + 0x344) * param_2; - if (*(float *)(iVar3 + 0x128) <= *(float *)(param_1 + 0x348)) { - uVar1 = *(undefined4 *)(param_1 + 0x348); - } - else { - uVar1 = *(undefined4 *)(iVar3 + 0x128); - } - *(undefined4 *)(param_1 + 0x348) = uVar1; - if (*(float *)(param_1 + 0x540) <= *(float *)(param_1 + 0x348)) { - uVar1 = *(undefined4 *)(param_1 + 0x348); - } - else { - uVar1 = *(undefined4 *)(param_1 + 0x540); - } - *(undefined4 *)(param_1 + 0x348) = uVar1; - } - } - else { - *(float *)(param_1 + 0x348) = - *(float *)(param_1 + 0x344) * param_2 + *(float *)(param_1 + 0x348); - if (*(float *)(param_1 + 0x348) <= *(float *)(iVar3 + 0x128)) { - uVar1 = *(undefined4 *)(param_1 + 0x348); - } - else { - uVar1 = *(undefined4 *)(iVar3 + 0x128); - } - *(undefined4 *)(param_1 + 0x348) = uVar1; - if (*(float *)(param_1 + 0x348) <= *(float *)(param_1 + 0x548)) { - uVar1 = *(undefined4 *)(param_1 + 0x348); - } - else { - uVar1 = *(undefined4 *)(param_1 + 0x548); - } - *(undefined4 *)(param_1 + 0x348) = uVar1; - } - local_c = *(float *)(param_1 + 0x348) / *(float *)(param_1 + 0x548); - } - fVar6 = FUN_0042790c(param_1 + 0x65c,param_2 * local_c * *(float *)(param_1 + 0x5a8),1); - local_8 = (float)fVar6; - break; - default: - FUN_004dbb24(&DAT_00524e20,s_StandingAnimation_0050cfe8 + *(int *)(param_1 + 0x3b0) * 0x3c, - (char *)0x0); - FUN_004d9c38(&DAT_00524e20); - FUN_0040385c(s_Unsupported_mech_animation__0050d89f,s_d__tesla_bt_bt_MECH2_CPP_0050d8bc,0x672); - } - return (float10)local_8; -} - - - -/* @004a7970 file=? name=FUN_004a7970 */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -float10 __cdecl FUN_004a7970(int param_1,undefined4 param_2,float param_3) - -{ - undefined4 uVar1; - int iVar2; - int iVar3; - float fVar4; - int unaff_ESI; - int iVar5; - float10 fVar6; - float local_8; - - local_8 = 0.0; - iVar5 = *(int *)(param_1 + 0x3b0); - iVar2 = *(int *)(param_1 + 0x40); - iVar3 = **(int **)(param_1 + 0x128); - if (((iVar5 - 6U < 2) || (iVar5 - 0xcU < 2)) || (iVar5 - 0x12U < 2)) { - if (iVar2 == 3) { - if (*(float *)(iVar3 + 0x128) <= *(float *)(param_1 + 0x53c)) { - uVar1 = *(undefined4 *)(iVar3 + 0x128); - } - else { - uVar1 = *(undefined4 *)(param_1 + 0x53c); - } - *(undefined4 *)(iVar3 + 0x128) = uVar1; - } - else { - if (*(float *)(iVar3 + 0x128) <= *(float *)(param_1 + 0x540)) { - uVar1 = *(undefined4 *)(iVar3 + 0x128); - } - else { - uVar1 = *(undefined4 *)(param_1 + 0x540); - } - *(undefined4 *)(iVar3 + 0x128) = uVar1; - } - fVar4 = _DAT_004a7f4c; - if (_DAT_004a7f4c <= *(float *)(iVar3 + 0x128)) { - fVar4 = *(float *)(iVar3 + 0x128); - } - *(float *)(iVar3 + 0x128) = fVar4; - } - switch(*(undefined4 *)(param_1 + 0x3b0)) { - default: - goto switchD_004a7a34_caseD_0; - case 2: - FUN_0041bbd8(param_1 + 0x39c,1); - goto switchD_004a7a34_caseD_0; - case 3: - case 8: - case 9: - case 0x14: - case 0x15: - case 0x1a: - case 0x1b: - FUN_0041bbd8(param_1 + 0x39c,0); - goto switchD_004a7a34_caseD_0; - case 4: - FUN_0041bbd8(param_1 + 0x39c,0); - goto switchD_004a7a34_caseD_0; - case 5: - case 6: - case 0xe: - if ((*(float *)(param_1 + 0x530) <= *(float *)(iVar3 + 0x128)) || - (*(float *)(param_1 + 0x530) <= - *(float *)(param_1 + 0x348) - *(float *)(param_1 + 0x344) * param_3)) { - if ((*(float *)(iVar3 + 0x128) <= *(float *)(param_1 + 0x534)) || - (*(float *)(param_1 + 0x344) * param_3 + *(float *)(param_1 + 0x348) <= - *(float *)(param_1 + 0x534))) { - if (iVar2 == 4) { - unaff_ESI = 7; - } - if (iVar2 == 3) { - unaff_ESI = 0x16; - } -LAB_004a7b38: - FUN_004a7fc4(param_1,unaff_ESI); - fVar6 = FUN_0042790c(param_1 + 0x65c, - (param_3 * *(float *)(param_1 + 0x348) * *(float *)(param_1 + 0x5a8)) / - *(float *)(param_1 + 0x534),1); - local_8 = (float)fVar6; - goto switchD_004a7a34_caseD_0; - } - iVar5 = 0xb; - } - else { - iVar5 = 9; - } - break; - case 7: - case 0xf: - if ((*(float *)(param_1 + 0x530) <= *(float *)(iVar3 + 0x128)) || - (*(float *)(param_1 + 0x530) <= - *(float *)(param_1 + 0x348) - *(float *)(param_1 + 0x344) * param_3)) { - if ((*(float *)(iVar3 + 0x128) <= *(float *)(param_1 + 0x534)) || - (*(float *)(param_1 + 0x344) * param_3 + *(float *)(param_1 + 0x348) <= - *(float *)(param_1 + 0x534))) { - if (iVar2 == 3) { - unaff_ESI = 6; - } - if (iVar2 == 4) { - unaff_ESI = 0x17; - } - goto LAB_004a7b38; - } - iVar5 = 10; - } - else { - iVar5 = 8; - } - break; - case 10: - case 0xc: - if ((*(float *)(param_1 + 0x538) <= *(float *)(iVar3 + 0x128)) || - (*(float *)(param_1 + 0x538) <= - *(float *)(param_1 + 0x348) - *(float *)(param_1 + 0x344) * param_3)) { - iVar5 = 0xd; -LAB_004a7c79: - FUN_004a7fc4(param_1,iVar5); - fVar6 = FUN_0042790c(param_1 + 0x65c, - (param_3 * *(float *)(param_1 + 0x348) * *(float *)(param_1 + 0x5a8)) / - *(float *)(param_1 + 0x34c),1); - local_8 = (float)fVar6; - goto switchD_004a7a34_caseD_0; - } - iVar5 = 0xf; - break; - case 0xb: - case 0xd: - if ((*(float *)(param_1 + 0x538) <= *(float *)(iVar3 + 0x128)) || - (*(float *)(param_1 + 0x538) <= - *(float *)(param_1 + 0x348) - *(float *)(param_1 + 0x344) * param_3)) { - iVar5 = 0xc; - goto LAB_004a7c79; - } - iVar5 = 0xe; - break; - case 0x10: - case 0x12: - if ((*(float *)(iVar3 + 0x128) <= *(float *)(param_1 + 0x52c)) || - (*(float *)(param_1 + 0x5b0) * param_3 + *(float *)(param_1 + 0x348) <= - *(float *)(param_1 + 0x52c))) { - FUN_004a7fc4(param_1,0x13); - if ((param_3 * *(float *)(param_1 + 0x348) * *(float *)(param_1 + 0x5a8)) / - *(float *)(param_1 + 0x350) <= _DAT_004a7f4c) { - fVar4 = (-param_3 * *(float *)(param_1 + 0x348) * *(float *)(param_1 + 0x5a8)) / - *(float *)(param_1 + 0x350); - } - else { - fVar4 = (param_3 * *(float *)(param_1 + 0x348) * *(float *)(param_1 + 0x5a8)) / - *(float *)(param_1 + 0x350); - } - fVar6 = FUN_0042790c(param_1 + 0x65c,fVar4,1); - local_8 = (float)fVar6; - goto switchD_004a7a34_caseD_0; - } - iVar5 = 0x15; - break; - case 0x11: - case 0x13: - if ((*(float *)(iVar3 + 0x128) <= *(float *)(param_1 + 0x52c)) || - (*(float *)(param_1 + 0x5b0) * param_3 + *(float *)(param_1 + 0x348) <= - *(float *)(param_1 + 0x52c))) { - FUN_004a7fc4(param_1,0x12); - if ((param_3 * *(float *)(param_1 + 0x348) * *(float *)(param_1 + 0x5a8)) / - *(float *)(param_1 + 0x350) <= _DAT_004a7f4c) { - fVar4 = (-param_3 * *(float *)(param_1 + 0x348) * *(float *)(param_1 + 0x5a8)) / - *(float *)(param_1 + 0x350); - } - else { - fVar4 = (param_3 * *(float *)(param_1 + 0x348) * *(float *)(param_1 + 0x5a8)) / - *(float *)(param_1 + 0x350); - } - fVar6 = FUN_0042790c(param_1 + 0x65c,fVar4,1); - local_8 = (float)fVar6; - goto switchD_004a7a34_caseD_0; - } - iVar5 = 0x14; - break; - case 0x16: - case 0x18: - if ((*(float *)(param_1 + 0x53c) <= *(float *)(iVar3 + 0x128)) || - (*(float *)(param_1 + 0x53c) <= - *(float *)(param_1 + 0x348) - *(float *)(param_1 + 0x344) * param_3)) { - FUN_004a7fc4(param_1,0x18); - fVar6 = FUN_0042790c(param_1 + 0x65c, - (param_3 * *(float *)(param_1 + 0x348) * *(float *)(param_1 + 0x5a8)) / - *(float *)(param_1 + 0x544),1); - local_8 = (float)fVar6; - goto switchD_004a7a34_caseD_0; - } - iVar5 = 0x1a; - break; - case 0x17: - case 0x19: - if ((*(float *)(param_1 + 0x540) <= *(float *)(iVar3 + 0x128)) || - (*(float *)(param_1 + 0x540) <= - *(float *)(param_1 + 0x348) - *(float *)(param_1 + 0x344) * param_3)) { - FUN_004a7fc4(param_1,0x19); - fVar6 = FUN_0042790c(param_1 + 0x65c, - (param_3 * *(float *)(param_1 + 0x348) * *(float *)(param_1 + 0x5a8)) / - *(float *)(param_1 + 0x548),1); - local_8 = (float)fVar6; - goto switchD_004a7a34_caseD_0; - } - iVar5 = 0x1b; - break; - case 0x20: - FUN_0041bbd8(param_1 + 0x39c,0); - goto switchD_004a7a34_caseD_0; - } - FUN_004a7fc4(param_1,iVar5); - fVar6 = FUN_0042790c(param_1 + 0x65c,param_3 * *(float *)(param_1 + 0x5a8),1); - local_8 = (float)fVar6; -switchD_004a7a34_caseD_0: - return (float10)local_8; -} - - - -/* @004a7f50 file=? name=FUN_004a7f50 */ - -void __cdecl FUN_004a7f50(undefined4 param_1,char *param_2,char *param_3) - -{ - char cVar1; - uint uVar2; - uint uVar3; - char *pcVar4; - char *pcVar5; - char local_10 [3]; - char local_d [9]; - - uVar2 = 0xffffffff; - do { - pcVar4 = param_2; - if (uVar2 == 0) break; - uVar2 = uVar2 - 1; - pcVar4 = param_2 + 1; - cVar1 = *param_2; - param_2 = pcVar4; - } while (cVar1 != '\0'); - uVar2 = ~uVar2; - pcVar4 = pcVar4 + -uVar2; - pcVar5 = local_10; - for (uVar3 = uVar2 >> 2; uVar3 != 0; uVar3 = uVar3 - 1) { - *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4; - pcVar4 = pcVar4 + 4; - pcVar5 = pcVar5 + 4; - } - for (uVar2 = uVar2 & 3; uVar2 != 0; uVar2 = uVar2 - 1) { - *pcVar5 = *pcVar4; - pcVar4 = pcVar4 + 1; - pcVar5 = pcVar5 + 1; - } - uVar2 = 0xffffffff; - do { - pcVar4 = param_3; - if (uVar2 == 0) break; - uVar2 = uVar2 - 1; - pcVar4 = param_3 + 1; - cVar1 = *param_3; - param_3 = pcVar4; - } while (cVar1 != '\0'); - uVar2 = ~uVar2; - pcVar4 = pcVar4 + -uVar2; - pcVar5 = local_10 + 3; - for (uVar3 = uVar2 >> 2; uVar3 != 0; uVar3 = uVar3 - 1) { - *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4; - pcVar4 = pcVar4 + 4; - pcVar5 = pcVar5 + 4; - } - for (uVar2 = uVar2 & 3; uVar2 != 0; uVar2 = uVar2 - 1) { - *pcVar5 = *pcVar4; - pcVar4 = pcVar4 + 1; - pcVar5 = pcVar5 + 1; - } - FUN_00406ff8(*(int *)(DAT_004efc94 + 0x68),local_10,0x10,-1); - return; -} - - - -/* @004a7fc4 file=? name=FUN_004a7fc4 */ - -void __cdecl FUN_004a7fc4(int param_1,int param_2) - -{ - FUN_004277a8(param_1 + 0x65c,*(int *)(param_1 + 0x5cc + param_2 * 4),PTR_LAB_0050d6f0,DAT_0050d6f4 - ,DAT_0050d6f8); - FUN_0041bbd8(param_1 + 0x39c,param_2); - return; -} - - - -/* @004a800c file=? name=FUN_004a800c */ - -void __cdecl FUN_004a800c(int param_1,int param_2) - -{ - FUN_004277a8(param_1 + 0x6bc,*(int *)(param_1 + 0x5cc + param_2 * 4),PTR_LAB_0050d6fc,DAT_0050d700 - ,DAT_0050d704); - FUN_0041bbd8(param_1 + 0x714,param_2); - return; -} - - - -/* @004a8054 file=? name=FUN_004a8054 */ - -void __cdecl FUN_004a8054(int param_1,int param_2,float *param_3,float *param_4) - -{ - int iVar1; - - FUN_004277a8(param_1 + 0x65c,*(int *)(param_1 + 0x5cc + param_2 * 4),PTR_LAB_0050d708,DAT_0050d70c - ,DAT_0050d710); - *param_3 = 0.0; - *param_4 = 0.0; - for (iVar1 = 0; iVar1 < *(int *)(param_1 + 0x670); iVar1 = iVar1 + 1) { - *param_3 = (*(float *)(*(int *)(param_1 + 0x680) + iVar1 * 4) - *param_4) * - *(float *)(*(int *)(param_1 + 0x690) + 8 + iVar1 * 0xc) + *param_3; - *param_4 = *(float *)(*(int *)(param_1 + 0x680) + iVar1 * 4); - } - return; -} - - - -/* @004a80d4 file=? name=FUN_004a80d4 */ - -void __cdecl FUN_004a80d4(int param_1,int param_2) - -{ - char *pcVar1; - char cVar2; - undefined4 *puVar3; - int iVar4; - uint uVar5; - uint uVar6; - char *pcVar7; - char *pcVar8; - char local_20 [3]; - undefined4 local_1d; - float local_14; - float local_10; - float local_c; - float local_8; - - *(undefined4 *)(param_1 + 0x5c4) = 0; - pcVar1 = (char *)(param_2 + 0x40); - puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d8d5); - *(undefined4 *)(param_1 + 0x5e0) = *puVar3; - FUN_004277a8(param_1 + 0x65c,*(int *)(param_1 + 0x5e0),PTR_LAB_0050d714,DAT_0050d718,DAT_0050d71c) - ; - *(undefined4 *)(param_1 + 0x530) = - *(undefined4 *)(*(int *)(param_1 + 0x690) + 8 + *(int *)(param_1 + 0x670) * 0xc); - puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d8d9); - *(undefined4 *)(param_1 + 0x5e4) = *puVar3; - FUN_004a8054(param_1,6,&local_8,&local_c); - puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d8dd); - *(undefined4 *)(param_1 + 0x5e8) = *puVar3; - FUN_004a8054(param_1,7,&local_10,&local_14); - *(float *)(param_1 + 0x534) = (local_8 + local_10) / (local_c + local_14); - puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d8e1); - *(undefined4 *)(param_1 + 0x5ec) = *puVar3; - puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d8e5); - *(undefined4 *)(param_1 + 0x5f0) = *puVar3; - puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d8e9); - *(undefined4 *)(param_1 + 0x5f4) = *puVar3; - FUN_004277a8(param_1 + 0x65c,*(int *)(param_1 + 0x5f4),PTR_LAB_0050d720,DAT_0050d724,DAT_0050d728) - ; - *(undefined4 *)(param_1 + 0x538) = - *(undefined4 *)(*(int *)(param_1 + 0x690) + 8 + *(int *)(param_1 + 0x670) * 0xc); - puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d8ed); - *(undefined4 *)(param_1 + 0x5f8) = *puVar3; - puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d8f1); - *(undefined4 *)(param_1 + 0x5fc) = *puVar3; - FUN_004a8054(param_1,0xc,&local_8,&local_c); - puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d8f5); - *(undefined4 *)(param_1 + 0x600) = *puVar3; - FUN_004a8054(param_1,0xd,&local_10,&local_14); - *(float *)(param_1 + 0x34c) = (local_8 + local_10) / (local_c + local_14); - puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d8f9); - *(undefined4 *)(param_1 + 0x604) = *puVar3; - puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d8fd); - *(undefined4 *)(param_1 + 0x608) = *puVar3; - puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d901); - *(undefined4 *)(param_1 + 0x64c) = *puVar3; - puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d905); - *(undefined4 *)(param_1 + 0x60c) = *puVar3; - FUN_004277a8(param_1 + 0x65c,*(int *)(param_1 + 0x60c),PTR_LAB_0050d72c,DAT_0050d730,DAT_0050d734) - ; - *(undefined4 *)(param_1 + 0x52c) = - *(undefined4 *)(*(int *)(param_1 + 0x690) + 8 + *(int *)(param_1 + 0x670) * 0xc); - puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d909); - *(undefined4 *)(param_1 + 0x610) = *puVar3; - puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d90d); - *(undefined4 *)(param_1 + 0x61c) = *puVar3; - puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d911); - *(undefined4 *)(param_1 + 0x620) = *puVar3; - puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d915); - *(undefined4 *)(param_1 + 0x614) = *puVar3; - FUN_004a8054(param_1,0x12,&local_8,&local_c); - puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d919); - *(undefined4 *)(param_1 + 0x618) = *puVar3; - FUN_004a8054(param_1,0x13,&local_8,&local_c); - uVar5 = 0xffffffff; - *(float *)(param_1 + 0x350) = (local_8 + local_10) / (local_c + local_14); - *(float *)(param_1 + 0x350) = -*(float *)(param_1 + 0x350); - pcVar7 = pcVar1; - do { - pcVar8 = pcVar7; - if (uVar5 == 0) break; - uVar5 = uVar5 - 1; - pcVar8 = pcVar7 + 1; - cVar2 = *pcVar7; - pcVar7 = pcVar8; - } while (cVar2 != '\0'); - uVar5 = ~uVar5; - pcVar7 = pcVar8 + -uVar5; - pcVar8 = local_20; - for (uVar6 = uVar5 >> 2; uVar6 != 0; uVar6 = uVar6 - 1) { - *(undefined4 *)pcVar8 = *(undefined4 *)pcVar7; - pcVar7 = pcVar7 + 4; - pcVar8 = pcVar8 + 4; - } - for (uVar5 = uVar5 & 3; uVar5 != 0; uVar5 = uVar5 - 1) { - *pcVar8 = *pcVar7; - pcVar7 = pcVar7 + 1; - pcVar8 = pcVar8 + 1; - } - local_1d = DAT_0050d91d; - iVar4 = FUN_00406ff8(*(int *)(DAT_004efc94 + 0x68),local_20,0x10,-1); - if (iVar4 != 0) { - *(undefined4 *)(param_1 + 0x580) = 1; - puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d921); - *(undefined4 *)(param_1 + 0x624) = *puVar3; - FUN_004277a8(param_1 + 0x65c,*(int *)(param_1 + 0x624),PTR_LAB_0050d738,DAT_0050d73c, - DAT_0050d740); - *(undefined4 *)(param_1 + 0x53c) = - *(undefined4 *)(*(int *)(param_1 + 0x690) + 8 + *(int *)(param_1 + 0x670) * 0xc); - puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d925); - *(undefined4 *)(param_1 + 0x628) = *puVar3; - FUN_004277a8(param_1 + 0x65c,*(int *)(param_1 + 0x628),PTR_LAB_0050d744,DAT_0050d748, - DAT_0050d74c); - *(undefined4 *)(param_1 + 0x540) = - *(undefined4 *)(*(int *)(param_1 + 0x690) + 8 + *(int *)(param_1 + 0x670) * 0xc); - puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d929); - *(undefined4 *)(param_1 + 0x62c) = *puVar3; - FUN_004a8054(param_1,0x18,&local_8,&local_c); - *(float *)(param_1 + 0x544) = local_8 / local_c; - puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d92d); - *(undefined4 *)(param_1 + 0x630) = *puVar3; - FUN_004a8054(param_1,0x19,&local_8,&local_c); - *(float *)(param_1 + 0x548) = local_8 / local_c; - puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d931); - *(undefined4 *)(param_1 + 0x634) = *puVar3; - puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d935); - *(undefined4 *)(param_1 + 0x638) = *puVar3; - } - *(undefined4 *)(param_1 + 0x584) = 0; - uVar5 = 0xffffffff; - pcVar7 = pcVar1; - do { - pcVar8 = pcVar7; - if (uVar5 == 0) break; - uVar5 = uVar5 - 1; - pcVar8 = pcVar7 + 1; - cVar2 = *pcVar7; - pcVar7 = pcVar8; - } while (cVar2 != '\0'); - uVar5 = ~uVar5; - pcVar7 = pcVar8 + -uVar5; - pcVar8 = local_20; - for (uVar6 = uVar5 >> 2; uVar6 != 0; uVar6 = uVar6 - 1) { - *(undefined4 *)pcVar8 = *(undefined4 *)pcVar7; - pcVar7 = pcVar7 + 4; - pcVar8 = pcVar8 + 4; - } - for (uVar5 = uVar5 & 3; uVar5 != 0; uVar5 = uVar5 - 1) { - *pcVar8 = *pcVar7; - pcVar7 = pcVar7 + 1; - pcVar8 = pcVar8 + 1; - } - local_1d = DAT_0050d939; - iVar4 = FUN_00406ff8(*(int *)(DAT_004efc94 + 0x68),local_20,0x10,-1); - if (iVar4 != 0) { - *(undefined4 *)(param_1 + 0x584) = 1; - puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d93d); - *(undefined4 *)(param_1 + 0x5d8) = *puVar3; - puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d941); - *(undefined4 *)(param_1 + 0x5d4) = *puVar3; - } - *(undefined4 *)(param_1 + 0x588) = 0; - uVar5 = 0xffffffff; - pcVar7 = pcVar1; - do { - pcVar8 = pcVar7; - if (uVar5 == 0) break; - uVar5 = uVar5 - 1; - pcVar8 = pcVar7 + 1; - cVar2 = *pcVar7; - pcVar7 = pcVar8; - } while (cVar2 != '\0'); - uVar5 = ~uVar5; - pcVar7 = pcVar8 + -uVar5; - pcVar8 = local_20; - for (uVar6 = uVar5 >> 2; uVar6 != 0; uVar6 = uVar6 - 1) { - *(undefined4 *)pcVar8 = *(undefined4 *)pcVar7; - pcVar7 = pcVar7 + 4; - pcVar8 = pcVar8 + 4; - } - for (uVar5 = uVar5 & 3; uVar5 != 0; uVar5 = uVar5 - 1) { - *pcVar8 = *pcVar7; - pcVar7 = pcVar7 + 1; - pcVar8 = pcVar8 + 1; - } - local_1d = DAT_0050d945; - iVar4 = FUN_00406ff8(*(int *)(DAT_004efc94 + 0x68),local_20,0x10,-1); - if (iVar4 != 0) { - *(undefined4 *)(param_1 + 0x588) = 1; - puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d949); - *(undefined4 *)(param_1 + 0x5dc) = *puVar3; - } - return; -} - - - -/* @004a86c8 file=? name=FUN_004a86c8 */ - -void __cdecl FUN_004a86c8(int param_1,int param_2) - -{ - char *pcVar1; - char cVar2; - undefined4 *puVar3; - int iVar4; - uint uVar5; - uint uVar6; - char *pcVar7; - char *pcVar8; - char local_20 [3]; - undefined4 local_1d; - undefined1 uStack_19; - float local_14; - float local_10; - float local_c; - float local_8; - - *(undefined4 *)(param_1 + 0x5c4) = 0; - pcVar1 = (char *)(param_2 + 0x40); - puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d94d); - *(undefined4 *)(param_1 + 0x5e0) = *puVar3; - FUN_004277a8(param_1 + 0x65c,*(int *)(param_1 + 0x5e0),PTR_LAB_0050d750,DAT_0050d754,DAT_0050d758) - ; - *(undefined4 *)(param_1 + 0x530) = - *(undefined4 *)(*(int *)(param_1 + 0x690) + 8 + *(int *)(param_1 + 0x670) * 0xc); - puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d952); - *(undefined4 *)(param_1 + 0x5e4) = *puVar3; - FUN_004a8054(param_1,6,&local_8,&local_c); - puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d957); - *(undefined4 *)(param_1 + 0x5e8) = *puVar3; - FUN_004a8054(param_1,7,&local_10,&local_14); - *(float *)(param_1 + 0x534) = (local_8 + local_10) / (local_c + local_14); - puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d95c); - *(undefined4 *)(param_1 + 0x5ec) = *puVar3; - puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d961); - *(undefined4 *)(param_1 + 0x5f0) = *puVar3; - puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d966); - *(undefined4 *)(param_1 + 0x5f4) = *puVar3; - FUN_004277a8(param_1 + 0x65c,*(int *)(param_1 + 0x5f4),PTR_LAB_0050d75c,DAT_0050d760,DAT_0050d764) - ; - *(undefined4 *)(param_1 + 0x538) = - *(undefined4 *)(*(int *)(param_1 + 0x690) + 8 + *(int *)(param_1 + 0x670) * 0xc); - puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d96b); - *(undefined4 *)(param_1 + 0x5f8) = *puVar3; - puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d970); - *(undefined4 *)(param_1 + 0x5fc) = *puVar3; - FUN_004a8054(param_1,0xc,&local_8,&local_c); - puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d975); - *(undefined4 *)(param_1 + 0x600) = *puVar3; - FUN_004a8054(param_1,0xd,&local_10,&local_14); - *(float *)(param_1 + 0x34c) = (local_8 + local_10) / (local_c + local_14); - puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d97a); - *(undefined4 *)(param_1 + 0x604) = *puVar3; - puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d97f); - *(undefined4 *)(param_1 + 0x608) = *puVar3; - puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d984); - *(undefined4 *)(param_1 + 0x64c) = *puVar3; - puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d989); - *(undefined4 *)(param_1 + 0x60c) = *puVar3; - FUN_004277a8(param_1 + 0x65c,*(int *)(param_1 + 0x60c),PTR_LAB_0050d768,DAT_0050d76c,DAT_0050d770) - ; - *(undefined4 *)(param_1 + 0x52c) = - *(undefined4 *)(*(int *)(param_1 + 0x690) + 8 + *(int *)(param_1 + 0x670) * 0xc); - puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d98e); - *(undefined4 *)(param_1 + 0x610) = *puVar3; - puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d993); - *(undefined4 *)(param_1 + 0x61c) = *puVar3; - puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d998); - *(undefined4 *)(param_1 + 0x620) = *puVar3; - puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d99d); - *(undefined4 *)(param_1 + 0x614) = *puVar3; - FUN_004a8054(param_1,0x12,&local_8,&local_c); - puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d9a2); - *(undefined4 *)(param_1 + 0x618) = *puVar3; - FUN_004a8054(param_1,0x13,&local_8,&local_c); - uVar5 = 0xffffffff; - *(float *)(param_1 + 0x350) = (local_8 + local_10) / (local_c + local_14); - *(float *)(param_1 + 0x350) = -*(float *)(param_1 + 0x350); - pcVar7 = pcVar1; - do { - pcVar8 = pcVar7; - if (uVar5 == 0) break; - uVar5 = uVar5 - 1; - pcVar8 = pcVar7 + 1; - cVar2 = *pcVar7; - pcVar7 = pcVar8; - } while (cVar2 != '\0'); - uVar5 = ~uVar5; - pcVar7 = pcVar8 + -uVar5; - pcVar8 = local_20; - for (uVar6 = uVar5 >> 2; uVar6 != 0; uVar6 = uVar6 - 1) { - *(undefined4 *)pcVar8 = *(undefined4 *)pcVar7; - pcVar7 = pcVar7 + 4; - pcVar8 = pcVar8 + 4; - } - for (uVar5 = uVar5 & 3; uVar5 != 0; uVar5 = uVar5 - 1) { - *pcVar8 = *pcVar7; - pcVar7 = pcVar7 + 1; - pcVar8 = pcVar8 + 1; - } - local_1d = DAT_0050d9a7; - uStack_19 = DAT_0050d9ab; - iVar4 = FUN_00406ff8(*(int *)(DAT_004efc94 + 0x68),local_20,0x10,-1); - if (iVar4 != 0) { - *(undefined4 *)(param_1 + 0x580) = 1; - puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d9ac); - *(undefined4 *)(param_1 + 0x624) = *puVar3; - FUN_004277a8(param_1 + 0x65c,*(int *)(param_1 + 0x624),PTR_LAB_0050d774,DAT_0050d778, - DAT_0050d77c); - *(undefined4 *)(param_1 + 0x53c) = - *(undefined4 *)(*(int *)(param_1 + 0x690) + 8 + *(int *)(param_1 + 0x670) * 0xc); - puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d9b1); - *(undefined4 *)(param_1 + 0x628) = *puVar3; - FUN_004277a8(param_1 + 0x65c,*(int *)(param_1 + 0x628),PTR_LAB_0050d780,DAT_0050d784, - DAT_0050d788); - *(undefined4 *)(param_1 + 0x540) = - *(undefined4 *)(*(int *)(param_1 + 0x690) + 8 + *(int *)(param_1 + 0x670) * 0xc); - puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d9b6); - *(undefined4 *)(param_1 + 0x62c) = *puVar3; - FUN_004a8054(param_1,0x18,&local_8,&local_c); - *(float *)(param_1 + 0x544) = local_8 / local_c; - puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d9bb); - *(undefined4 *)(param_1 + 0x630) = *puVar3; - FUN_004a8054(param_1,0x19,&local_8,&local_c); - *(float *)(param_1 + 0x548) = local_8 / local_c; - puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d9c0); - *(undefined4 *)(param_1 + 0x634) = *puVar3; - puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d9c5); - *(undefined4 *)(param_1 + 0x638) = *puVar3; - } - *(undefined4 *)(param_1 + 0x584) = 0; - uVar5 = 0xffffffff; - pcVar7 = pcVar1; - do { - pcVar8 = pcVar7; - if (uVar5 == 0) break; - uVar5 = uVar5 - 1; - pcVar8 = pcVar7 + 1; - cVar2 = *pcVar7; - pcVar7 = pcVar8; - } while (cVar2 != '\0'); - uVar5 = ~uVar5; - pcVar7 = pcVar8 + -uVar5; - pcVar8 = local_20; - for (uVar6 = uVar5 >> 2; uVar6 != 0; uVar6 = uVar6 - 1) { - *(undefined4 *)pcVar8 = *(undefined4 *)pcVar7; - pcVar7 = pcVar7 + 4; - pcVar8 = pcVar8 + 4; - } - for (uVar5 = uVar5 & 3; uVar5 != 0; uVar5 = uVar5 - 1) { - *pcVar8 = *pcVar7; - pcVar7 = pcVar7 + 1; - pcVar8 = pcVar8 + 1; - } - local_1d = DAT_0050d9ca; - uStack_19 = DAT_0050d9ce; - iVar4 = FUN_00406ff8(*(int *)(DAT_004efc94 + 0x68),local_20,0x10,-1); - if (iVar4 != 0) { - *(undefined4 *)(param_1 + 0x584) = 1; - puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d9cf); - *(undefined4 *)(param_1 + 0x5d8) = *puVar3; - puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d9d4); - *(undefined4 *)(param_1 + 0x5d4) = *puVar3; - } - *(undefined4 *)(param_1 + 0x588) = 0; - uVar5 = 0xffffffff; - pcVar7 = pcVar1; - do { - pcVar8 = pcVar7; - if (uVar5 == 0) break; - uVar5 = uVar5 - 1; - pcVar8 = pcVar7 + 1; - cVar2 = *pcVar7; - pcVar7 = pcVar8; - } while (cVar2 != '\0'); - uVar5 = ~uVar5; - pcVar7 = pcVar8 + -uVar5; - pcVar8 = local_20; - for (uVar6 = uVar5 >> 2; uVar6 != 0; uVar6 = uVar6 - 1) { - *(undefined4 *)pcVar8 = *(undefined4 *)pcVar7; - pcVar7 = pcVar7 + 4; - pcVar8 = pcVar8 + 4; - } - for (uVar5 = uVar5 & 3; uVar5 != 0; uVar5 = uVar5 - 1) { - *pcVar8 = *pcVar7; - pcVar7 = pcVar7 + 1; - pcVar8 = pcVar8 + 1; - } - local_1d = DAT_0050d9d9; - uStack_19 = DAT_0050d9dd; - iVar4 = FUN_00406ff8(*(int *)(DAT_004efc94 + 0x68),local_20,0x10,-1); - if (iVar4 != 0) { - *(undefined4 *)(param_1 + 0x588) = 1; - puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d9de); - *(undefined4 *)(param_1 + 0x5dc) = *puVar3; - } - return; -} - - - -/* @004a8cc0 file=? name=FUN_004a8cc0 */ - -/* WARNING: Type propagation algorithm not settling */ - -undefined4 __cdecl -FUN_004a8cc0(int param_1,char *param_2,int param_3,int param_4,char *param_5,char *param_6, - char *param_7,int param_8,int param_9) - -{ - char *pcVar1; - char *pcVar2; - int iVar3; - undefined3 extraout_var; - int *piVar4; - char *pcVar5; - bool bVar6; - byte bVar7; - - pcVar5 = s_HeatSinkClassID_0050da25; - pcVar2 = param_2; - do { - bVar6 = *pcVar2 == *pcVar5; - if (!bVar6) break; - if (*pcVar2 == '\0') goto LAB_004a8cf5; - pcVar1 = pcVar2 + 1; - bVar6 = *pcVar1 == pcVar5[1]; - if (!bVar6) break; - pcVar2 = pcVar2 + 2; - pcVar5 = pcVar5 + 2; - bVar6 = *pcVar1 == '\0'; - } while (!bVar6); - if (bVar6) { -LAB_004a8cf5: - iVar3 = FUN_004ae9dc(param_4,param_5,param_6,param_7,param_8,param_9,param_1); - } - else { - pcVar5 = s_ReservoirClassID_0050da35; - pcVar2 = param_2; - do { - if (*pcVar2 != *pcVar5) goto LAB_004a8d6f; - bVar6 = true; - if (*pcVar2 == '\0') break; - pcVar1 = pcVar2 + 1; - if (*pcVar1 != pcVar5[1]) goto LAB_004a8d6f; - pcVar2 = pcVar2 + 2; - pcVar5 = pcVar5 + 2; - bVar6 = *pcVar1 == '\0'; - } while (!bVar6); - if (bVar6) { - iVar3 = FUN_004af580(param_4,param_5,param_6,param_7,param_8,param_9,param_1); - } - else { -LAB_004a8d6f: - pcVar5 = s_CondenserClassID_0050da46; - pcVar2 = param_2; - do { - if (*pcVar2 != *pcVar5) goto LAB_004a8dbf; - bVar6 = true; - if (*pcVar2 == '\0') break; - pcVar1 = pcVar2 + 1; - if (*pcVar1 != pcVar5[1]) goto LAB_004a8dbf; - pcVar2 = pcVar2 + 2; - pcVar5 = pcVar5 + 2; - bVar6 = *pcVar1 == '\0'; - } while (!bVar6); - if (bVar6) { - iVar3 = FUN_004ae658(param_4,param_5,param_6,param_7,param_8,param_9,param_1); - } - else { -LAB_004a8dbf: - pcVar5 = s_PoweredSubsystemClassID_0050da57; - pcVar2 = param_2; - do { - if (*pcVar2 != *pcVar5) goto LAB_004a8e0f; - bVar6 = true; - if (*pcVar2 == '\0') break; - pcVar1 = pcVar2 + 1; - if (*pcVar1 != pcVar5[1]) goto LAB_004a8e0f; - pcVar2 = pcVar2 + 2; - pcVar5 = pcVar5 + 2; - bVar6 = *pcVar1 == '\0'; - } while (!bVar6); - if (bVar6) { - iVar3 = FUN_004b13ac(param_4,param_5,param_6,param_7,param_8,param_9,param_1); - } - else { -LAB_004a8e0f: - pcVar5 = s_MyomersClassID_0050da6f; - pcVar2 = param_2; - do { - if (*pcVar2 != *pcVar5) goto LAB_004a8e5f; - bVar6 = true; - if (*pcVar2 == '\0') break; - pcVar1 = pcVar2 + 1; - if (*pcVar1 != pcVar5[1]) goto LAB_004a8e5f; - pcVar2 = pcVar2 + 2; - pcVar5 = pcVar5 + 2; - bVar6 = *pcVar1 == '\0'; - } while (!bVar6); - if (bVar6) { - iVar3 = FUN_004b9140(param_4,param_5,param_6,param_7,param_8,param_9,param_1); - } - else { -LAB_004a8e5f: - pcVar5 = s_GeneratorClassID_0050da7e; - pcVar2 = param_2; - do { - if (*pcVar2 != *pcVar5) goto LAB_004a8eaf; - bVar6 = true; - if (*pcVar2 == '\0') break; - pcVar1 = pcVar2 + 1; - if (*pcVar1 != pcVar5[1]) goto LAB_004a8eaf; - pcVar2 = pcVar2 + 2; - pcVar5 = pcVar5 + 2; - bVar6 = *pcVar1 == '\0'; - } while (!bVar6); - if (bVar6) { - iVar3 = FUN_004b23bc(param_4,param_5,param_6,param_7,param_8,param_9,param_1); - } - else { -LAB_004a8eaf: - pcVar5 = s_HUDClassID_0050da8f; - pcVar2 = param_2; - do { - if (*pcVar2 != *pcVar5) goto LAB_004a8eff; - bVar6 = true; - if (*pcVar2 == '\0') break; - pcVar1 = pcVar2 + 1; - if (*pcVar1 != pcVar5[1]) goto LAB_004a8eff; - pcVar2 = pcVar2 + 2; - pcVar5 = pcVar5 + 2; - bVar6 = *pcVar1 == '\0'; - } while (!bVar6); - if (bVar6) { - iVar3 = FUN_004b81d4(param_4,param_5,param_6,param_7,param_8,param_9,param_1); - } - else { -LAB_004a8eff: - pcVar5 = s_SearchlightClassID_0050da9a; - pcVar2 = param_2; - do { - if (*pcVar2 != *pcVar5) goto LAB_004a8f4f; - bVar6 = true; - if (*pcVar2 == '\0') break; - pcVar1 = pcVar2 + 1; - if (*pcVar1 != pcVar5[1]) goto LAB_004a8f4f; - pcVar2 = pcVar2 + 2; - pcVar5 = pcVar5 + 2; - bVar6 = *pcVar1 == '\0'; - } while (!bVar6); - if (bVar6) { - iVar3 = FUN_004b85a8(param_4,param_5,param_6,param_7,param_8,param_9,param_1); - } - else { -LAB_004a8f4f: - pcVar5 = s_ThermalSightClassID_0050daad; - pcVar2 = param_2; - do { - if (*pcVar2 != *pcVar5) goto LAB_004a8f9f; - bVar6 = true; - if (*pcVar2 == '\0') break; - pcVar1 = pcVar2 + 1; - if (*pcVar1 != pcVar5[1]) goto LAB_004a8f9f; - pcVar2 = pcVar2 + 2; - pcVar5 = pcVar5 + 2; - bVar6 = *pcVar1 == '\0'; - } while (!bVar6); - if (bVar6) { - iVar3 = FUN_004b87d4(param_4,param_5,param_6,param_7,param_8,param_9,param_1); - } - else { -LAB_004a8f9f: - pcVar5 = s_SensorClassID_0050dac1; - pcVar2 = param_2; - do { - if (*pcVar2 != *pcVar5) goto LAB_004a8fef; - bVar6 = true; - if (*pcVar2 == '\0') break; - pcVar1 = pcVar2 + 1; - if (*pcVar1 != pcVar5[1]) goto LAB_004a8fef; - pcVar2 = pcVar2 + 2; - pcVar5 = pcVar5 + 2; - bVar6 = *pcVar1 == '\0'; - } while (!bVar6); - if (bVar6) { - bVar6 = FUN_004b1dcc(param_4,param_5,param_6,param_7,param_8,param_9,param_1); - iVar3 = CONCAT31(extraout_var,bVar6); - } - else { -LAB_004a8fef: - pcVar5 = s_GyroscopeClassID_0050dacf; - pcVar2 = param_2; - do { - if (*pcVar2 != *pcVar5) goto LAB_004a903f; - bVar6 = true; - if (*pcVar2 == '\0') break; - pcVar1 = pcVar2 + 1; - if (*pcVar1 != pcVar5[1]) goto LAB_004a903f; - pcVar2 = pcVar2 + 2; - pcVar5 = pcVar5 + 2; - bVar6 = *pcVar1 == '\0'; - } while (!bVar6); - if (bVar6) { - iVar3 = FUN_004b3eb4(param_4,param_5,param_6,param_7,param_8,param_9,param_1 - ); - } - else { -LAB_004a903f: - pcVar5 = s_TorsoClassID_0050dae0; - pcVar2 = param_2; - do { - if (*pcVar2 != *pcVar5) goto LAB_004a908f; - bVar6 = true; - if (*pcVar2 == '\0') break; - pcVar1 = pcVar2 + 1; - if (*pcVar1 != pcVar5[1]) goto LAB_004a908f; - pcVar2 = pcVar2 + 2; - pcVar5 = pcVar5 + 2; - bVar6 = *pcVar1 == '\0'; - } while (!bVar6); - if (bVar6) { - iVar3 = FUN_004b6fec(param_4,param_5,param_6,param_7,param_8,param_9, - param_1); - } - else { -LAB_004a908f: - pcVar5 = s_EmitterClassID_0050daed; - pcVar2 = param_2; - do { - if (*pcVar2 != *pcVar5) goto LAB_004a90e3; - bVar6 = true; - if (*pcVar2 == '\0') break; - pcVar1 = pcVar2 + 1; - if (*pcVar1 != pcVar5[1]) goto LAB_004a90e3; - pcVar2 = pcVar2 + 2; - pcVar5 = pcVar5 + 2; - bVar6 = *pcVar1 == '\0'; - } while (!bVar6); - if (bVar6) { - iVar3 = FUN_004bb478(param_3,param_4,param_5,param_6,param_7,param_8, - param_9,param_1); - } - else { -LAB_004a90e3: - pcVar5 = s_PPCClassID_0050dafc; - pcVar2 = param_2; - do { - if (*pcVar2 != *pcVar5) goto LAB_004a9137; - bVar6 = true; - if (*pcVar2 == '\0') break; - pcVar1 = pcVar2 + 1; - if (*pcVar1 != pcVar5[1]) goto LAB_004a9137; - pcVar2 = pcVar2 + 2; - pcVar5 = pcVar5 + 2; - bVar6 = *pcVar1 == '\0'; - } while (!bVar6); - if (bVar6) { - iVar3 = FUN_004bb8e0(param_3,param_4,param_5,param_6,param_7,param_8, - param_9,param_1); - } - else { -LAB_004a9137: - pcVar5 = s_ProjectileWeaponClassID_0050db07; - pcVar2 = param_2; - do { - if (*pcVar2 != *pcVar5) goto LAB_004a918b; - bVar6 = true; - if (*pcVar2 == '\0') break; - pcVar1 = pcVar2 + 1; - if (*pcVar1 != pcVar5[1]) goto LAB_004a918b; - pcVar2 = pcVar2 + 2; - pcVar5 = pcVar5 + 2; - bVar6 = *pcVar1 == '\0'; - } while (!bVar6); - if (bVar6) { - iVar3 = FUN_004bc7cc(param_3,param_4,param_5,param_6,param_7,param_8 - ,param_9,param_1); - } - else { -LAB_004a918b: - pcVar5 = s_MissileLauncherClassID_0050db1f; - pcVar2 = param_2; - do { - if (*pcVar2 != *pcVar5) goto LAB_004a91df; - bVar6 = true; - if (*pcVar2 == '\0') break; - pcVar1 = pcVar2 + 1; - if (*pcVar1 != pcVar5[1]) goto LAB_004a91df; - pcVar2 = pcVar2 + 2; - pcVar5 = pcVar5 + 2; - bVar6 = *pcVar1 == '\0'; - } while (!bVar6); - if (bVar6) { - iVar3 = FUN_004bd08c(param_3,param_4,param_5,param_6,param_7, - param_8,param_9,param_1); - } - else { -LAB_004a91df: - pcVar5 = s_GaussRifleClassID_0050db36; - pcVar2 = param_2; - do { - if (*pcVar2 != *pcVar5) goto LAB_004a9233; - bVar6 = true; - if (*pcVar2 == '\0') break; - pcVar1 = pcVar2 + 1; - if (*pcVar1 != pcVar5[1]) goto LAB_004a9233; - pcVar2 = pcVar2 + 2; - pcVar5 = pcVar5 + 2; - bVar6 = *pcVar1 == '\0'; - } while (!bVar6); - if (bVar6) { - iVar3 = FUN_004bdd14(param_3,param_4,param_5,param_6,param_7, - param_8,param_9,param_1); - } - else { -LAB_004a9233: - pcVar5 = s_AmmoBinClassID_0050db48; - pcVar2 = param_2; - do { - if (*pcVar2 != *pcVar5) goto LAB_004a9287; - bVar6 = true; - if (*pcVar2 == '\0') break; - pcVar1 = pcVar2 + 1; - if (*pcVar1 != pcVar5[1]) goto LAB_004a9287; - pcVar2 = pcVar2 + 2; - pcVar5 = pcVar5 + 2; - bVar6 = *pcVar1 == '\0'; - } while (!bVar6); - if (bVar6) { - iVar3 = FUN_004bd6f0(param_3,param_4,param_5,param_6,param_7, - param_8,param_9,param_1); - } - else { -LAB_004a9287: - pcVar5 = s_SubsystemMessageManagerClassID_0050db57; - pcVar2 = param_2; - do { - if (*pcVar2 != *pcVar5) goto LAB_004a92d7; - bVar6 = true; - if (*pcVar2 == '\0') break; - pcVar1 = pcVar2 + 1; - if (*pcVar1 != pcVar5[1]) goto LAB_004a92d7; - pcVar2 = pcVar2 + 2; - pcVar5 = pcVar5 + 2; - bVar6 = *pcVar1 == '\0'; - } while (!bVar6); - if (bVar6) { - iVar3 = FUN_0049be10(param_3,param_4,param_5,param_6,param_7 - ,param_8,param_9); - } - else { -LAB_004a92d7: - pcVar5 = s_MechTechClassID_0050db76; - pcVar2 = param_2; - do { - if (*pcVar2 != *pcVar5) goto LAB_004a9324; - bVar6 = true; - if (*pcVar2 == '\0') break; - pcVar1 = pcVar2 + 1; - if (*pcVar1 != pcVar5[1]) goto LAB_004a9324; - pcVar2 = pcVar2 + 2; - pcVar5 = pcVar5 + 2; - bVar6 = *pcVar1 == '\0'; - } while (!bVar6); - if (!bVar6) { -LAB_004a9324: - bVar7 = 0x3a; - FUN_004dbb24(&DAT_00524e20,param_5,(char *)0x0); - piVar4 = FUN_004db92c(&DAT_00524e20,bVar7); - FUN_004dbb24(piVar4,param_6,(char *)0x0); - FUN_004dbb24(piVar4, - s_has_an_unknown_component_type_of_0050db86, - (char *)0x0); - FUN_004dbb24(piVar4,param_2,(char *)0x0); - FUN_004d9c38(piVar4); - return 0xffffffff; - } - iVar3 = FUN_004ad48c(param_4,param_5,param_6,param_7,param_8 - ,param_9,param_3); - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - if (iVar3 == 0) { - return 0xffffffff; - } - return 1; -} - - - -/* @004a9390 file=? name=FUN_004a9390 */ - -undefined4 __cdecl FUN_004a9390(int param_1,char *param_2,int param_3,undefined4 *param_4) - -{ - char *pcVar1; - int iVar2; - undefined4 uVar3; - int *piVar4; - undefined4 *puVar5; - byte bVar6; - undefined4 local_58 [2]; - int *local_50; - int local_48; - char *local_44; - uint local_40; - int *local_3c; - char *local_38; - int local_34; - int *local_30; - char *local_2c; - int *local_28; - char *local_24; - int *local_20; - int *local_1c; - char *local_18; - int *local_14; - int *local_10; - char *local_c; - char *local_8; - - iVar2 = FUN_00404088(param_3,s_gamedata_0050dba9,s_Subsystems_0050dbb2,&local_8); - if (iVar2 == 0) { - local_c = param_2; - FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s_is_missing__sub_file_specificati_0050dbbd,(char *)0x0); - uVar3 = 0xffffffff; - } - else { - local_10 = (int *)FUN_004064fc((char *)*param_4,local_8); - piVar4 = (int *)FUN_00402298(0x20); - if (piVar4 == (int *)0x0) { - local_14 = (int *)0x0; - } - else { - local_14 = FUN_00403e84(piVar4,(char *)local_10,1); - } - local_20 = FUN_0040485c((int)local_14,(char *)0x0); - iVar2 = 0; - for (puVar5 = (undefined4 *)local_20[1]; puVar5 != (undefined4 *)0x0; - puVar5 = (undefined4 *)*puVar5) { - iVar2 = iVar2 + 1; - } - if (iVar2 == 0) { - local_24 = param_2; - FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s_has_no_subsystems__0050dbe3,(char *)0x0); - if (local_20 != (int *)0x0) { - (**(code **)*local_20)(local_20,3); - } - FUN_004022d0(local_10); - FUN_00403ecc(local_14,3); - uVar3 = 0xffffffff; - } - else { - local_28 = (int *)FUN_004022b0(iVar2 * 0x770); - FUN_004030dc(local_58,local_28,iVar2 * 0x770,0); - *local_50 = iVar2; - local_50 = local_50 + 1; - for (puVar5 = (undefined4 *)local_20[1]; puVar5 != (undefined4 *)0x0; - puVar5 = (undefined4 *)*puVar5) { - pcVar1 = (char *)(puVar5 + 2); - iVar2 = FUN_00404088((int)local_14,pcVar1,&DAT_0050dbf8,&local_2c); - if (iVar2 == 0) { - bVar6 = 0x3a; - FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); - piVar4 = FUN_004db92c(&DAT_00524e20,bVar6); - FUN_004dbb24(piVar4,pcVar1,(char *)0x0); - FUN_004dbb24(piVar4,s_missing_Type__0050dbfd,(char *)0x0); -LAB_004a9555: - FUN_004022e8(local_28); - if (local_20 != (int *)0x0) { - (**(code **)*local_20)(local_20,3); - } - FUN_004022d0(local_10); - FUN_00403ecc(local_14,3); - return 0xffffffff; - } - iVar2 = FUN_00404088((int)local_14,pcVar1,s_Include_0050dc0d,&local_18); - if (iVar2 == 0) { - piVar4 = (int *)0x0; - local_1c = (int *)0x0; - } - else { - piVar4 = (int *)FUN_004064fc((char *)*param_4,local_18); - local_30 = (int *)FUN_00402298(0x20); - if (local_30 == (int *)0x0) { - local_1c = (int *)0x0; - } - else { - local_1c = FUN_00403e84(local_30,(char *)piVar4,1); - } - } - local_34 = 1; - if (piVar4 != (int *)0x0) { - local_38 = FUN_004d4c78(local_2c,s_ClassID_0050dc15); - iVar2 = FUN_004d4a78(local_2c); - local_3c = (int *)FUN_004022b0(iVar2 + 1); - local_40 = (int)local_38 - (int)local_2c; - local_3c = FUN_004d4b9c(local_3c,local_2c,local_40); - local_44 = (char *)((int)local_3c + local_40); - *local_44 = DAT_0050dc1d; - local_48 = FUN_004a8cc0(local_34,local_2c,param_1,param_3,param_2,(char *)local_3c, - (char *)local_50,(int)local_1c,(int)param_4); - local_34 = local_34 + 1; - FUN_004022e8(local_3c); - if (local_48 == -1) goto LAB_004a9555; - } - iVar2 = FUN_004a8cc0(local_34,local_2c,param_1,param_3,param_2,pcVar1,(char *)local_50, - (int)local_14,(int)param_4); - if (iVar2 == -1) goto LAB_004a9555; - if (piVar4 != (int *)0x0) { - FUN_004022d0(piVar4); - FUN_00403ecc(local_1c,3); - } - local_50 = (int *)((int)local_50 + local_50[9]); - } - puVar5 = (undefined4 *) - FUN_00406db4(param_1,param_2,0x11,1,0,local_28,(int)local_50 - (int)local_28,-1); - FUN_004022e8(local_28); - if (local_20 != (int *)0x0) { - (**(code **)*local_20)(local_20,3); - } - FUN_004022d0(local_10); - FUN_00403ecc(local_14,3); - uVar3 = *puVar5; - } - } - return uVar3; -} - - - -/* @004a9770 file=? name=FUN_004a9770 */ - -undefined * __cdecl FUN_004a9770(char *param_1) - -{ - char *pcVar1; - char *pcVar2; - char *pcVar3; - bool bVar4; - - pcVar3 = &DAT_0050dc1f; - pcVar2 = param_1; - do { - if (*pcVar2 != *pcVar3) goto LAB_004a97a4; - bVar4 = true; - if (*pcVar2 == '\0') break; - pcVar1 = pcVar2 + 1; - if (*pcVar1 != pcVar3[1]) goto LAB_004a97a4; - pcVar2 = pcVar2 + 2; - pcVar3 = pcVar3 + 2; - bVar4 = *pcVar1 == '\0'; - } while (!bVar4); - if (bVar4) { - return &DAT_0050bde4; - } -LAB_004a97a4: - pcVar3 = s_ControlsMapper_0050dc20; - pcVar2 = param_1; - do { - if (*pcVar2 != *pcVar3) goto LAB_004a97d1; - bVar4 = true; - if (*pcVar2 == '\0') break; - pcVar1 = pcVar2 + 1; - if (*pcVar1 != pcVar3[1]) goto LAB_004a97d1; - pcVar2 = pcVar2 + 2; - pcVar3 = pcVar3 + 2; - bVar4 = *pcVar1 == '\0'; - } while (!bVar4); - if (bVar4) { - return &DAT_0050ee00; - } -LAB_004a97d1: - pcVar3 = s_AmmoBinClassID_0050dc2f; - pcVar2 = param_1; - do { - if (*pcVar2 != *pcVar3) goto LAB_004a97fe; - bVar4 = true; - if (*pcVar2 == '\0') break; - pcVar1 = pcVar2 + 1; - if (*pcVar1 != pcVar3[1]) goto LAB_004a97fe; - pcVar2 = pcVar2 + 2; - pcVar3 = pcVar3 + 2; - bVar4 = *pcVar1 == '\0'; - } while (!bVar4); - if (bVar4) { - return &DAT_005125bc; - } -LAB_004a97fe: - pcVar3 = s_HeatSinkClassID_0050dc3e; - pcVar2 = param_1; - do { - if (*pcVar2 != *pcVar3) goto LAB_004a982b; - bVar4 = true; - if (*pcVar2 == '\0') break; - pcVar1 = pcVar2 + 1; - if (*pcVar1 != pcVar3[1]) goto LAB_004a982b; - pcVar2 = pcVar2 + 2; - pcVar3 = pcVar3 + 2; - bVar4 = *pcVar1 == '\0'; - } while (!bVar4); - if (bVar4) { - return &DAT_0050e580; - } -LAB_004a982b: - pcVar3 = s_ReservoirClassID_0050dc4e; - pcVar2 = param_1; - do { - if (*pcVar2 != *pcVar3) goto LAB_004a9858; - bVar4 = true; - if (*pcVar2 == '\0') break; - pcVar1 = pcVar2 + 1; - if (*pcVar1 != pcVar3[1]) goto LAB_004a9858; - pcVar2 = pcVar2 + 2; - pcVar3 = pcVar3 + 2; - bVar4 = *pcVar1 == '\0'; - } while (!bVar4); - if (bVar4) { - return &DAT_0050e640; - } -LAB_004a9858: - pcVar3 = s_CondenserClassID_0050dc5f; - pcVar2 = param_1; - do { - if (*pcVar2 != *pcVar3) goto LAB_004a9885; - bVar4 = true; - if (*pcVar2 == '\0') break; - pcVar1 = pcVar2 + 1; - if (*pcVar1 != pcVar3[1]) goto LAB_004a9885; - pcVar2 = pcVar2 + 2; - pcVar3 = pcVar3 + 2; - bVar4 = *pcVar1 == '\0'; - } while (!bVar4); - if (bVar4) { - return &DAT_0050e4ec; - } -LAB_004a9885: - pcVar3 = s_PoweredSubsystemClassID_0050dc70; - pcVar2 = param_1; - do { - if (*pcVar2 != *pcVar3) goto LAB_004a98b2; - bVar4 = true; - if (*pcVar2 == '\0') break; - pcVar1 = pcVar2 + 1; - if (*pcVar1 != pcVar3[1]) goto LAB_004a98b2; - pcVar2 = pcVar2 + 2; - pcVar3 = pcVar3 + 2; - bVar4 = *pcVar1 == '\0'; - } while (!bVar4); - if (bVar4) { - return &DAT_0050f4ac; - } -LAB_004a98b2: - pcVar3 = s_MyomersClassID_0050dc88; - pcVar2 = param_1; - do { - if (*pcVar2 != *pcVar3) goto LAB_004a98df; - bVar4 = true; - if (*pcVar2 == '\0') break; - pcVar1 = pcVar2 + 1; - if (*pcVar1 != pcVar3[1]) goto LAB_004a98df; - pcVar2 = pcVar2 + 2; - pcVar3 = pcVar3 + 2; - bVar4 = *pcVar1 == '\0'; - } while (!bVar4); - if (bVar4) { - return &DAT_0051154c; - } -LAB_004a98df: - pcVar3 = s_GeneratorClassID_0050dc97; - pcVar2 = param_1; - do { - if (*pcVar2 != *pcVar3) goto LAB_004a990c; - bVar4 = true; - if (*pcVar2 == '\0') break; - pcVar1 = pcVar2 + 1; - if (*pcVar1 != pcVar3[1]) goto LAB_004a990c; - pcVar2 = pcVar2 + 2; - pcVar3 = pcVar3 + 2; - bVar4 = *pcVar1 == '\0'; - } while (!bVar4); - if (bVar4) { - return &DAT_0050fb50; - } -LAB_004a990c: - pcVar3 = s_HUDClassID_0050dca8; - pcVar2 = param_1; - do { - if (*pcVar2 != *pcVar3) goto LAB_004a9939; - bVar4 = true; - if (*pcVar2 == '\0') break; - pcVar1 = pcVar2 + 1; - if (*pcVar1 != pcVar3[1]) goto LAB_004a9939; - pcVar2 = pcVar2 + 2; - pcVar3 = pcVar3 + 2; - bVar4 = *pcVar1 == '\0'; - } while (!bVar4); - if (bVar4) { - return &DAT_00511078; - } -LAB_004a9939: - pcVar3 = s_SensorClassID_0050dcb3; - pcVar2 = param_1; - do { - if (*pcVar2 != *pcVar3) goto LAB_004a9966; - bVar4 = true; - if (*pcVar2 == '\0') break; - pcVar1 = pcVar2 + 1; - if (*pcVar1 != pcVar3[1]) goto LAB_004a9966; - pcVar2 = pcVar2 + 2; - pcVar3 = pcVar3 + 2; - bVar4 = *pcVar1 == '\0'; - } while (!bVar4); - if (bVar4) { - return &DAT_0050fa1c; - } -LAB_004a9966: - pcVar3 = s_SearchlightClassID_0050dcc1; - pcVar2 = param_1; - do { - if (*pcVar2 != *pcVar3) goto LAB_004a9993; - bVar4 = true; - if (*pcVar2 == '\0') break; - pcVar1 = pcVar2 + 1; - if (*pcVar1 != pcVar3[1]) goto LAB_004a9993; - pcVar2 = pcVar2 + 2; - pcVar3 = pcVar3 + 2; - bVar4 = *pcVar1 == '\0'; - } while (!bVar4); - if (bVar4) { - return &DAT_00511198; - } -LAB_004a9993: - pcVar3 = s_ThermalSightClassID_0050dcd4; - pcVar2 = param_1; - do { - if (*pcVar2 != *pcVar3) goto LAB_004a99c0; - bVar4 = true; - if (*pcVar2 == '\0') break; - pcVar1 = pcVar2 + 1; - if (*pcVar1 != pcVar3[1]) goto LAB_004a99c0; - pcVar2 = pcVar2 + 2; - pcVar3 = pcVar3 + 2; - bVar4 = *pcVar1 == '\0'; - } while (!bVar4); - if (bVar4) { - return &DAT_00511228; - } -LAB_004a99c0: - pcVar3 = s_GyroscopeClassID_0050dce8; - pcVar2 = param_1; - do { - if (*pcVar2 != *pcVar3) goto LAB_004a99ed; - bVar4 = true; - if (*pcVar2 == '\0') break; - pcVar1 = pcVar2 + 1; - if (*pcVar1 != pcVar3[1]) goto LAB_004a99ed; - pcVar2 = pcVar2 + 2; - pcVar3 = pcVar3 + 2; - bVar4 = *pcVar1 == '\0'; - } while (!bVar4); - if (bVar4) { - return &DAT_0050fdb0; - } -LAB_004a99ed: - pcVar3 = s_TorsoClassID_0050dcf9; - pcVar2 = param_1; - do { - if (*pcVar2 != *pcVar3) goto LAB_004a9a1a; - bVar4 = true; - if (*pcVar2 == '\0') break; - pcVar1 = pcVar2 + 1; - if (*pcVar1 != pcVar3[1]) goto LAB_004a9a1a; - pcVar2 = pcVar2 + 2; - pcVar3 = pcVar3 + 2; - bVar4 = *pcVar1 == '\0'; - } while (!bVar4); - if (bVar4) { - return &DAT_00510af8; - } -LAB_004a9a1a: - pcVar3 = s_EmitterClassID_0050dd06; - pcVar2 = param_1; - do { - if (*pcVar2 != *pcVar3) goto LAB_004a9a47; - bVar4 = true; - if (*pcVar2 == '\0') break; - pcVar1 = pcVar2 + 1; - if (*pcVar1 != pcVar3[1]) goto LAB_004a9a47; - pcVar2 = pcVar2 + 2; - pcVar3 = pcVar3 + 2; - bVar4 = *pcVar1 == '\0'; - } while (!bVar4); - if (bVar4) { - return &DAT_00511d78; - } -LAB_004a9a47: - pcVar3 = s_PPCClassID_0050dd15; - pcVar2 = param_1; - do { - if (*pcVar2 != *pcVar3) goto LAB_004a9a74; - bVar4 = true; - if (*pcVar2 == '\0') break; - pcVar1 = pcVar2 + 1; - if (*pcVar1 != pcVar3[1]) goto LAB_004a9a74; - pcVar2 = pcVar2 + 2; - pcVar3 = pcVar3 + 2; - bVar4 = *pcVar1 == '\0'; - } while (!bVar4); - if (bVar4) { - return &DAT_005120c4; - } -LAB_004a9a74: - pcVar3 = s_ProjectileWeaponClassID_0050dd20; - pcVar2 = param_1; - do { - if (*pcVar2 != *pcVar3) goto LAB_004a9aa1; - bVar4 = true; - if (*pcVar2 == '\0') break; - pcVar1 = pcVar2 + 1; - if (*pcVar1 != pcVar3[1]) goto LAB_004a9aa1; - pcVar2 = pcVar2 + 2; - pcVar3 = pcVar3 + 2; - bVar4 = *pcVar1 == '\0'; - } while (!bVar4); - if (bVar4) { - return &DAT_00512198; - } -LAB_004a9aa1: - pcVar3 = s_MissileLauncherClassID_0050dd38; - pcVar2 = param_1; - do { - if (*pcVar2 != *pcVar3) goto LAB_004a9ace; - bVar4 = true; - if (*pcVar2 == '\0') break; - pcVar1 = pcVar2 + 1; - if (*pcVar1 != pcVar3[1]) goto LAB_004a9ace; - pcVar2 = pcVar2 + 2; - pcVar3 = pcVar3 + 2; - bVar4 = *pcVar1 == '\0'; - } while (!bVar4); - if (bVar4) { - return &DAT_00512478; - } -LAB_004a9ace: - pcVar3 = s_GaussRifleClassID_0050dd4f; - pcVar2 = param_1; - do { - if (*pcVar2 != *pcVar3) goto LAB_004a9afb; - bVar4 = true; - if (*pcVar2 == '\0') break; - pcVar1 = pcVar2 + 1; - if (*pcVar1 != pcVar3[1]) goto LAB_004a9afb; - pcVar2 = pcVar2 + 2; - pcVar3 = pcVar3 + 2; - bVar4 = *pcVar1 == '\0'; - } while (!bVar4); - if (bVar4) { - return &DAT_00512478; - } -LAB_004a9afb: - pcVar3 = s_ControlsMapper_0050dd61; - pcVar2 = param_1; - do { - if (*pcVar2 != *pcVar3) goto LAB_004a9b28; - bVar4 = true; - if (*pcVar2 == '\0') break; - pcVar1 = pcVar2 + 1; - if (*pcVar1 != pcVar3[1]) goto LAB_004a9b28; - pcVar2 = pcVar2 + 2; - pcVar3 = pcVar3 + 2; - bVar4 = *pcVar1 == '\0'; - } while (!bVar4); - if (bVar4) { - return &DAT_0050ee00; - } -LAB_004a9b28: - pcVar2 = s_MechTech_0050dd70; - do { - if (*param_1 != *pcVar2) { - return (undefined *)0x0; - } - bVar4 = true; - if (*param_1 == '\0') break; - pcVar3 = param_1 + 1; - if (*pcVar3 != pcVar2[1]) { - return (undefined *)0x0; - } - param_1 = param_1 + 2; - pcVar2 = pcVar2 + 2; - bVar4 = *pcVar3 == '\0'; - } while (!bVar4); - if (!bVar4) { - return (undefined *)0x0; - } - return &DAT_0050e270; -} - - - -/* @004ab188 file=? name=FUN_004ab188 */ - -void __cdecl FUN_004ab188(int param_1,float param_2) - -{ - float local_10 [3]; - - FUN_004086ac(local_10,(float *)(param_1 + 0x2d4),param_2); - FUN_00409f58((float *)(param_1 + 0x26c),(float *)(param_1 + 0x138),local_10); - return; -} - - - -/* @004ab1c8 file=? name=FUN_004ab1c8 */ - -undefined4 __cdecl FUN_004ab1c8(int param_1,float param_2,int param_3) - -{ - float *pfVar1; - int iVar2; - undefined4 uVar3; - float10 fVar4; - float local_64; - undefined4 local_60; - undefined4 local_5c; - undefined4 local_58; - float local_54 [3]; - float local_48 [3]; - float local_3c [12]; - float local_c; - float local_8; - - if (*(int *)(param_1 + 0x3f4) == 0) { - *(undefined4 *)(param_1 + 0x344) = *(undefined4 *)(param_1 + 0x5b8); - } - else { - *(undefined4 *)(param_1 + 0x344) = *(undefined4 *)(param_1 + 0x5bc); - } - iVar2 = FUN_0049fb54(param_1); - if (iVar2 == 0) { - if (((*(uint *)(param_1 + 0x28) & 0xc) == 4) && - (*(int *)(param_1 + 0x10) < *(int *)(param_1 + 0x2e0))) { - iVar2 = *(int *)(param_1 + 0x2e0) - *(int *)(param_1 + 0x778); - uVar3 = 1; - } - else { - iVar2 = *(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x778); - uVar3 = 0; - } - local_8 = (float)iVar2 / DAT_0052140c; - if (*(int *)(param_1 + 0x77c) != 0) { - if ((*(uint *)(param_1 + 0x28) & 0xc) == 4) { - FUN_00408644((float *)(param_1 + 0x598),(float *)(param_1 + 300),(float *)(param_1 + 0x100)) - ; - *(undefined4 *)(param_1 + 0x5a4) = 1; - *(undefined4 *)(param_1 + 0x77c) = 0; - } - else { - FUN_00408440((undefined4 *)(param_1 + 0x260),(undefined4 *)(param_1 + 300)); - *(undefined4 *)(param_1 + 0x77c) = 0; - } - } - if (((*(int *)(param_1 + 0x40) == 3) || (*(int *)(param_1 + 0x40) == 4)) && - (*(int *)(param_1 + 0x580) != 0)) { - fVar4 = FUN_004a5bf8(param_1,param_2,param_3); - } - else { - fVar4 = FUN_004a5678(param_1,param_2,param_3); - } - local_c = (float)fVar4; - *(float *)(param_1 + 0x2a0) = -local_c / param_2; - *(undefined4 *)(param_1 + 0x29c) = 0; - *(undefined4 *)(param_1 + 0x298) = 0; - FUN_004ab188(param_1,local_8); - FUN_00408440((undefined4 *)(param_1 + 0x2a4),(undefined4 *)(param_1 + 0x2d4)); - FUN_0040aadc(local_3c); - pfVar1 = (float *)(param_1 + 0x260); - FUN_0040ab44(local_3c,pfVar1); - FUN_00408744(local_48,(float *)(param_1 + 0x298),local_3c); - FUN_00408440(local_54,&DAT_004e0f74); - FUN_00408614(local_54,local_54,local_48,param_2); - FUN_004085ec(pfVar1,pfVar1,local_54); - FUN_00408440(local_54,&DAT_004e0f74); - FUN_00408614(local_54,local_54,(float *)(param_1 + 0x2a4),param_2); - local_64 = *(float *)(param_1 + 0x26c); - local_60 = *(undefined4 *)(param_1 + 0x270); - local_5c = *(undefined4 *)(param_1 + 0x274); - local_58 = *(undefined4 *)(param_1 + 0x278); - FUN_00409f58((float *)(param_1 + 0x26c),&local_64,local_54); - } - else { - FUN_0040a7f4((undefined4 *)(param_1 + 0x298),(undefined4 *)&DAT_004e0fd4); - uVar3 = 0; - } - return uVar3; -} - - - -/* @004ab430 file=? name=FUN_004ab430 */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -void __cdecl FUN_004ab430(int *param_1,float param_2) - -{ - float *pfVar1; - uint *puVar2; - int iVar3; - float10 fVar4; - int local_98; - float local_94; - int local_90; - float local_8c; - int local_88; - int local_84; - float local_80; - int local_7c; - int local_78; - float local_74; - float local_70; - float local_6c; - float local_68; - float local_64; - float local_60; - int *local_5c; - int local_58; - int *local_54; - int local_50; - int local_4c; - int local_48; - int *local_44; - int *local_40; - float *local_3c; - float local_38; - int *local_34; - float local_30; - float *local_2c; - float *local_28; - float local_24; - int *local_20; - float *local_1c; - float *local_18; - float local_14; - float local_10; - float local_c; - float local_8; - - FUN_0040a7f4(param_1 + 0x77,(undefined4 *)&DAT_004e0fd4); - iVar3 = FUN_004ab1c8((int)param_1,param_2,1); - if (iVar3 == 0) { - if (param_1[0x169] == 1) { - local_8c = (float)param_1[0x166]; - local_34 = param_1 + 5; - local_88 = param_1[0x167]; - local_84 = param_1[0x168]; - local_30 = (_DAT_004ab9cc - (float)(param_1[4] - *local_34) / DAT_0052140c) + param_2; - if (local_30 <= param_2) { - param_1[0x169] = 0; - } - else { - local_38 = param_2 / local_30; - FUN_004086ac(&local_8c,&local_8c,local_38); - } - pfVar1 = (float *)(param_1 + 0x98); - local_3c = pfVar1; - FUN_004085ec(pfVar1,pfVar1,&local_8c); - param_1[0x99] = param_1[0x41]; - FUN_0040a938(param_1 + 0x40,pfVar1); - FUN_00408644((float *)(param_1 + 0x166),(float *)(param_1 + 0x166),&local_8c); - } - else { - param_1[0x99] = param_1[0x41]; - FUN_0040a938(param_1 + 0x40,param_1 + 0x98); - } - local_40 = param_1 + 0xa6; - FUN_00408440(param_1 + 0x7d,local_40); - local_44 = param_1 + 0xa9; - FUN_00408440(param_1 + 0x74,local_44); - } - else { - local_8 = param_2 / ((float)(param_1[0xb8] - param_1[4]) / DAT_0052140c + param_2); - FUN_0040a4d8((float *)(param_1 + 0x43),(float *)(param_1 + 0x43),(float *)(param_1 + 0x9b), - local_8); - local_c = local_8; - FUN_00408848((float *)(param_1 + 0x74),(float *)(param_1 + 0x74),_DAT_004ab9c8 - local_8, - (float *)(param_1 + 0xa9),local_8); - if (param_1[0x169] == 1) { - local_80 = (float)param_1[0x166]; - local_7c = param_1[0x167]; - local_78 = param_1[0x168]; - local_10 = (_DAT_004ab9cc - (float)(param_1[4] - param_1[5]) / DAT_0052140c) + param_2; - if (local_10 <= param_2) { - param_1[0x169] = 0; - } - else { - local_14 = param_2 / local_10; - FUN_004086ac(&local_80,&local_80,local_14); - } - pfVar1 = (float *)(param_1 + 0x98); - local_18 = pfVar1; - FUN_004085ec(pfVar1,pfVar1,&local_80); - param_1[0x99] = param_1[0x41]; - local_1c = pfVar1; - FUN_00408440(param_1 + 0x40,pfVar1); - FUN_00408644((float *)(param_1 + 0x166),(float *)(param_1 + 0x166),&local_80); - } - else { - local_20 = param_1 + 0x98; - param_1[0x99] = param_1[0x41]; - FUN_00408440(param_1 + 0x40,local_20); - } - local_24 = local_8; - local_28 = (float *)(param_1 + 0xa6); - local_2c = (float *)(param_1 + 0x7d); - FUN_00408848((float *)(param_1 + 0x7d),local_2c,_DAT_004ab9c8 - local_8,local_28,local_8); - } - if ((*(byte *)((int)param_1 + 0x29) & 0x40) == 0) { - (**(code **)(*param_1 + 0x34))(param_1); - local_48 = *(int *)(DAT_004efc94 + 0x30); - local_50 = param_1[0x65]; - local_4c = FUN_00433ed4(local_48 + 0x14); - local_54 = *(int **)(local_4c + 0x30); - local_58 = param_1[0xba]; - iVar3 = FUN_0040e36c(*local_54,local_58); - param_1[0xbc] = iVar3; - } - else { - local_5c = param_1 + 0x40; - FUN_0040ab44((float *)(param_1 + 0x34),local_5c); - } - local_98 = param_1[0x40]; - local_90 = param_1[0x42]; - local_94 = *(float *)(param_1[0xbb] + 8) + (float)param_1[0x41]; - FUN_0040e5f0(param_1[0xbc],(int)&local_98,&local_60); - if (local_60 != _DAT_004ab9d0) { - local_60 = local_60 - *(float *)(param_1[0xbb] + 8); - param_1[0x41] = (int)((float)param_1[0x41] - local_60); - *(float *)(param_1[0xba] + 8) = *(float *)(param_1[0xba] + 8) - local_60; - *(float *)(param_1[0xba] + 0xc) = *(float *)(param_1[0xba] + 0xc) - local_60; - } - FUN_00421b6c((int)param_1); - puVar2 = (uint *)(param_1 + 0x1f8); - FUN_0043ade4(puVar2,param_1[0x73]); - FUN_0043ade4((uint *)(param_1 + 0x1fb),param_1[0x72]); - FUN_0043ade4((uint *)(param_1 + 0x1fe),param_1[0x71]); - FUN_0043ade4((uint *)(param_1 + 0x201),param_1[0x75]); - FUN_0043ade4((uint *)(param_1 + 0x204),param_2); - fVar4 = FUN_0043ae47(puVar2); - local_64 = (float)fVar4; - fVar4 = FUN_0043ae0b((uint *)(param_1 + 0x1fe)); - local_68 = (float)fVar4; - fVar4 = FUN_0043ae0b(puVar2); - local_6c = (float)fVar4; - fVar4 = FUN_0043ae0b((uint *)(param_1 + 0x201)); - local_70 = (float)fVar4; - fVar4 = FUN_0043ae0b((uint *)(param_1 + 0x204)); - local_74 = (float)fVar4; - FUN_0040a7f4(param_1 + 0x77,(undefined4 *)&DAT_004e0fd4); - if (_DAT_004ab9d4 < local_74) { - param_1[0x79] = (int)((local_64 - (float)param_1[0x207]) / local_74); - param_1[0x78] = (int)((local_6c - (float)param_1[0x20a]) / local_74); - param_1[0x77] = (int)((local_68 - (float)param_1[0x208]) / local_74); - param_1[0x7b] = (int)((local_70 - (float)param_1[0x209]) / local_74); - } - param_1[0x207] = (int)local_64; - param_1[0x20a] = (int)local_6c; - param_1[0x208] = (int)local_68; - param_1[0x209] = (int)local_70; - FUN_00421b2c((int)param_1); - return; -} - - - -/* @004abb40 file=? name=FUN_004abb40 */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -void __cdecl -FUN_004abb40(int param_1,float param_2,int *param_3,undefined4 param_4,undefined4 *param_5) - -{ - int *piVar1; - int iVar2; - float10 fVar3; - undefined4 local_17c; - undefined4 local_178; - undefined4 local_174; - undefined4 local_170 [2]; - undefined4 local_168; - undefined4 local_164; - undefined4 local_160 [2]; - int local_158; - uint local_154; - undefined4 local_150; - undefined4 local_14c; - undefined4 local_148; - undefined4 local_144; - undefined4 local_140; - undefined4 local_13c; - undefined4 local_138; - undefined4 local_134; - undefined4 local_130; - undefined4 local_12c; - undefined4 local_128; - undefined4 local_124; - undefined4 local_120; - undefined4 local_11c; - undefined4 local_118; - undefined4 local_114; - undefined4 local_110; - undefined4 local_10c; - undefined4 local_108; - undefined4 local_104; - undefined4 local_100; - undefined4 local_fc; - undefined4 local_f8; - undefined4 local_f4; - undefined4 local_f0; - undefined4 local_ec; - float local_e8; - float local_e4; - float local_e0; - undefined4 local_dc; - undefined4 local_d8; - undefined4 local_d4; - undefined4 local_d0 [2]; - undefined4 local_c8; - undefined4 local_c4; - undefined4 local_c0 [2]; - int local_b8; - uint local_b4; - undefined4 local_b0; - undefined4 local_ac; - undefined4 local_a8; - undefined4 local_a4; - undefined4 local_a0; - undefined4 local_9c; - undefined4 local_98; - undefined4 local_94; - undefined4 local_90; - undefined4 local_8c; - undefined4 local_88; - undefined4 local_84; - undefined4 local_80; - undefined4 local_7c; - undefined4 local_78; - undefined4 local_74; - undefined4 local_70; - undefined4 local_6c; - undefined4 local_68; - undefined4 local_64; - undefined4 local_60; - undefined4 local_5c; - undefined4 local_58; - undefined4 local_54; - undefined4 local_50; - undefined4 local_4c; - float local_48 [3]; - float local_3c; - float local_38; - float local_34; - undefined4 *local_30; - uint local_2c; - int *local_28; - undefined4 *local_24; - int local_20; - undefined4 *local_1c; - int *local_18; - float local_14; - float local_10; - float local_c; - float local_8; - - iVar2 = (**(code **)(*(int *)(*(int *)(param_1 + 0x2e8) + 0x18) + 0x1c)) - (*(int *)(param_1 + 0x2e8),param_3,param_1 + 500, - *(undefined4 *)(param_1 + 0x2f8),param_5 + 5,&local_10); - if (iVar2 != 0) { - if (param_2 < local_10) { - local_10 = param_2; - } - local_14 = local_10 / param_2; - local_c = *(float *)(param_1 + 0x244); - local_8 = *(float *)(param_1 + 0x240); - piVar1 = *(int **)(*param_3 + 0x1c); - fVar3 = FUN_00422ff8(param_1,param_4,param_2,local_14,(float *)(param_5 + 5),&local_c, - *(float *)(param_1 + 0x248),&local_8); - param_5[1] = (float)fVar3; - if ((piVar1 != (int *)0x0) && (iVar2 = FUN_0041a1a4(*(int *)piVar1[3],0x4e4518), iVar2 != 0)) { - local_18 = piVar1; - (**(code **)(*piVar1 + 0x20))(local_48,piVar1); - FUN_00408644(&local_3c,(float *)(param_1 + 500),local_48); - if (local_34 * (float)param_5[7] + local_38 * (float)param_5[6] + local_3c * (float)param_5[5] - < _DAT_004ac044) { - return; - } - if (local_18[1] == 0xbb9) { - FUN_0041db7c((int)&local_78); - local_1c = param_5; - local_78 = *param_5; - local_74 = param_5[1]; - local_4c = param_5[0xb]; - FUN_00408440(&local_70,param_5 + 2); - FUN_00408440(&local_64,local_1c + 5); - FUN_00408440(&local_58,local_1c + 8); - local_20 = DAT_0050b9ac; - local_24 = (undefined4 *)(param_1 + 0x184); - local_dc = 100; - local_d8 = 0x12; - local_d4 = 1; - FUN_00420ea4(local_d0,(undefined4 *)&DAT_00522524); - local_c8 = 0; - local_c4 = 0; - FUN_00420ea4(local_c0,local_24); - local_b8 = local_20; - local_b4 = (uint)(local_20 < 0); - local_b0 = local_78; - local_ac = local_74; - local_a8 = local_70; - local_a4 = local_6c; - local_a0 = local_68; - local_9c = local_64; - local_98 = local_60; - local_94 = local_5c; - local_90 = local_58; - local_8c = local_54; - local_88 = local_50; - local_84 = local_4c; - local_80 = 0xffffffff; - local_7c = 1; - (**(code **)(*local_18 + 0xc))(local_18,&local_dc); - } - } - if ((piVar1 != (int *)0x0) && (iVar2 = FUN_0041a1a4(*(int *)piVar1[3],0x4e7038), iVar2 != 0)) { - local_2c = piVar1[10] & 0x8000; - local_28 = piVar1; - FUN_00408644(&local_e8,(float *)(param_1 + 500),(float *)&DAT_004e0f74); - if (local_e0 * (float)param_5[7] + local_e4 * (float)param_5[6] + local_e8 * (float)param_5[5] - < _DAT_004ac044) { - return; - } - FUN_0041db7c((int)&local_118); - local_118 = *param_5; - local_114 = param_5[1]; - local_ec = param_5[0xb]; - FUN_00408440(&local_110,param_5 + 2); - FUN_00408440(&local_104,param_5 + 5); - FUN_00408440(&local_f8,param_5 + 8); - iVar2 = DAT_0050b9ac; - local_30 = (undefined4 *)(param_1 + 0x184); - local_17c = 100; - local_178 = 0x12; - local_174 = 1; - FUN_00420ea4(local_170,(undefined4 *)&DAT_00522524); - local_168 = 0; - local_164 = 0; - FUN_00420ea4(local_160,local_30); - local_158 = iVar2; - local_154 = (uint)(iVar2 < 0); - local_150 = local_118; - local_14c = local_114; - local_148 = local_110; - local_144 = local_10c; - local_140 = local_108; - local_13c = local_104; - local_138 = local_100; - local_134 = local_fc; - local_130 = local_f8; - local_12c = local_f4; - local_128 = local_f0; - local_124 = local_ec; - local_120 = 0xffffffff; - local_11c = 1; - (**(code **)(*local_28 + 0xc))(local_28,&local_17c); - if (local_2c == 0) { - param_5[1] = 0x3aa137f4; - } - } - if (local_c == _DAT_004ac048) { - if ((local_8 == _DAT_004ac048) && (*(int *)(param_1 + 0x44c) == 0)) { - *(undefined4 *)(param_1 + 0x44c) = 2; - } - } - else { - *(undefined4 *)(param_1 + 0x44c) = 1; - } - } - return; -} - - - -/* @004ac04c file=? name=FUN_004ac04c */ - -void __cdecl FUN_004ac04c(int param_1) - -{ - *(undefined4 *)(*(int *)(param_1 + 0x2ec) + 0xc) = *(undefined4 *)(param_1 + 0x51c); - return; -} - - - -/* @004ac064 file=? name=FUN_004ac064 */ - -void __cdecl FUN_004ac064(int param_1) - -{ - *(undefined4 *)(*(int *)(param_1 + 0x2ec) + 0xc) = *(undefined4 *)(param_1 + 0x518); - return; -} - - - -/* @004ac07c file=? name=FUN_004ac07c */ - -float10 __cdecl FUN_004ac07c(int *param_1,undefined4 param_2) - -{ - float fVar1; - - fVar1 = *(float *)(param_1[0x38] + 0x158); - (**(code **)(*param_1 + 0x24))(param_1,param_2); - return (float10)(*(float *)(param_1[0x38] + 0x158) - fVar1); -} - - - -/* @004ac0bc file=? name=FUN_004ac0bc */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -void __cdecl FUN_004ac0bc(int *param_1,undefined4 param_2) - -{ - (**(code **)(*(int *)param_1[0x38] + 0x18))((int *)param_1[0x38],param_2); - if (_DAT_004ac140 <= *(float *)(param_1[0x38] + 0x158)) { - FUN_0041bbd8((int)(param_1 + 0xb),1); - if (param_1[0x41] != 0) { - (**(code **)(*param_1 + 0x34))(param_1); - } - *(undefined4 *)(param_1[0x38] + 0x158) = 0x3f800000; - if (param_1[0x39] != 0) { - FUN_0041bbd8(param_1[0x34] + 0x2c,9); - } - } - return; -} - - - -/* @004ac144 file=? name=FUN_004ac144 */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -undefined4 __cdecl FUN_004ac144(int param_1) - -{ - if (_DAT_004ac18c <= *(float *)(*(int *)(param_1 + 0xe0) + 0x158)) { - return 1; - } - if (_DAT_004ac190 < *(float *)(*(int *)(param_1 + 0xe0) + 0x158)) { - return 2; - } - return 0; -} - - - -/* @004ac194 file=? name=FUN_004ac194 */ - -undefined4 __cdecl FUN_004ac194(char *param_1,undefined4 *param_2) - -{ - int iVar1; - undefined **ppuVar2; - - ppuVar2 = &PTR_s_Destroyed_0050de74; - while( true ) { - if (*ppuVar2 == (char *)0x0) { - return 0; - } - iVar1 = FUN_004d4b58(param_1,*ppuVar2); - if (iVar1 == 0) break; - ppuVar2 = ppuVar2 + 2; - } - *param_2 = ppuVar2[1]; - return 1; -} - - - -/* @004ac1d4 file=? name=FUN_004ac1d4 */ - -undefined4 __cdecl FUN_004ac1d4(int *param_1,int param_2) - -{ - undefined4 uVar1; - - if (param_2 == 0) { - if (param_1[0x38] != 0) { - *(undefined4 *)(param_1[0x38] + 0x158) = 0x3f800000; - } - FUN_0041bbd8((int)(param_1 + 0xb),1); - if (param_1[0x41] != 0) { - (**(code **)(*param_1 + 0x34))(param_1); - } - return 1; - } - uVar1 = FUN_0041c800(); - return uVar1; -} - - - -/* @004ac22c file=? name=FUN_004ac22c */ - -void __cdecl FUN_004ac22c(int *param_1) - -{ - int iVar1; - - iVar1 = param_1[0x38]; - *(undefined4 *)(iVar1 + 0x158) = 0; - FUN_0041bbd8(iVar1 + 0x10,0); - FUN_0041bbd8((int)(param_1 + 0xb),0); - if (param_1[0x41] != 0) { - (**(code **)(*param_1 + 0x34))(param_1); - } - return; -} - - - -/* @004ac274 file=? name=FUN_004ac274 */ - -void __cdecl FUN_004ac274(int *param_1,undefined4 *param_2) - -{ - int iVar1; - undefined4 local_dc; - undefined4 local_d8; - undefined4 local_d4; - undefined4 local_d0 [2]; - undefined4 local_c8; - undefined4 local_c4; - undefined4 local_c0 [2]; - int local_b8; - uint local_b4; - undefined4 local_b0; - undefined4 local_ac; - undefined4 local_a8; - undefined4 local_a4; - undefined4 local_a0; - undefined4 local_9c; - undefined4 local_98; - undefined4 local_94; - undefined4 local_90; - undefined4 local_8c; - undefined4 local_88; - undefined4 local_84; - int local_80; - uint local_7c; - undefined4 local_78 [15]; - int local_3c [3]; - int local_30 [4]; - int local_20 [4]; - int *local_10; - int local_c; - int *local_8; - - FUN_0041bbd8((int)(param_1 + 0xb),2); - if (param_1[0x41] != 0) { - (**(code **)(*param_1 + 0x34))(param_1); - } - FUN_0041bbd8((int)(param_1 + 0xb),1); - if (param_1[0x41] != 0) { - (**(code **)(*param_1 + 0x34))(param_1); - } - *(undefined4 *)(param_1[0x38] + 0x158) = 0x3f800000; - FUN_004acfa9(local_20,(int)param_1,0xffffffff); - FUN_004ad03a(local_30,0); - while( true ) { - iVar1 = (**(code **)(local_20[0] + 0x28))(local_20); - if (iVar1 == 0) break; - if (*(int *)(iVar1 + 4) == 0x4e) { - (**(code **)(local_30[0] + 4))(local_30,iVar1); - } - } - FUN_004ad0a4(local_3c,(int)local_30); - iVar1 = (**(code **)(local_3c[0] + 0x14))(local_3c); - param_2[1] = (float)param_2[1] / (float)iVar1; - FUN_0040aadc(local_78); - local_8 = (int *)param_1[0x34]; - while( true ) { - iVar1 = (**(code **)(local_3c[0] + 0x28))(local_3c); - if (iVar1 == 0) break; - FUN_004dbb24(&DAT_00524e20,s_ammo_explosion_damaging_0050df61,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,*(char **)(*(int *)(iVar1 + 0x15c) + 8),(char *)0x0); - FUN_004d9c38(&DAT_00524e20); - local_c = param_1[0x36]; - local_10 = local_8 + 0x61; - iVar1 = *(int *)(iVar1 + 0x13c); - local_dc = 100; - local_d8 = 0x12; - local_d4 = 1; - FUN_00420ea4(local_d0,(undefined4 *)&DAT_00522524); - local_c8 = 0; - local_c4 = 0; - FUN_00420ea4(local_c0,local_10); - local_b4 = (uint)(iVar1 < 0); - local_b0 = *param_2; - local_ac = param_2[1]; - local_a8 = param_2[2]; - local_a4 = param_2[3]; - local_a0 = param_2[4]; - local_9c = param_2[5]; - local_98 = param_2[6]; - local_94 = param_2[7]; - local_90 = param_2[8]; - local_8c = param_2[9]; - local_88 = param_2[10]; - local_84 = param_2[0xb]; - local_80 = local_c; - local_7c = (uint)(local_c < 0); - local_b8 = iVar1; - (**(code **)(*local_8 + 0xc))(local_8,&local_dc); - } - FUN_004ad0e2(local_3c,2); - FUN_004ad059(local_30,2); - FUN_004ad00e(local_20,2); - return; -} - - - -/* @004ac4fc file=? name=FUN_004ac4fc */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -float10 __cdecl -FUN_004ac4fc(undefined4 param_1,float param_2,float param_3,float param_4,float param_5) - -{ - float fVar1; - - fVar1 = (_DAT_004ac52c - param_4) / (param_2 - param_3); - return (float10)fVar1 * (float10)param_5 + (float10)(param_2 - fVar1); -} - - - -/* @004ac530 file=? name=FUN_004ac530 */ - -undefined4 * __cdecl -FUN_004ac530(undefined4 *param_1,undefined4 param_2,undefined4 param_3,int *param_4, - undefined4 param_5,undefined4 param_6,undefined4 param_7,undefined4 param_8) - -{ - int *piVar1; - undefined4 *puVar2; - int iVar3; - int *local_8; - - FUN_0041c5c0(param_1,param_2,param_3,(char *)param_4[2],param_5,param_6); - *param_1 = &PTR_FUN_0050e210; - puVar2 = (undefined4 *)FUN_00402298(0x10); - if (puVar2 == (undefined4 *)0x0) { - iVar3 = 0; - } - else { - iVar3 = FUN_004023f4(puVar2); - } - param_1[0x3d] = iVar3; - piVar1 = (int *)(param_1[0x3d] + 0xc); - *piVar1 = *piVar1 + 1; - param_1[0x3a] = param_7; - param_1[0x3b] = param_8; - param_1[0x39] = 0; - FUN_00402a98((int *)&local_8,param_1 + 0x3d,&DAT_0050df7a); - piVar1 = local_8 + 3; - *piVar1 = *piVar1 + -1; - if (*piVar1 == 0) { - FUN_004024d8(local_8,3); - } - FUN_00408440(param_1 + 0x3e,&DAT_004e0f80); - param_1[0x42] = 0; - param_1[0x43] = 0; - param_1[0x41] = 0; - param_1[0x44] = 0xffffffff; - puVar2 = (undefined4 *)FUN_00402298(0x160); - if (puVar2 == (undefined4 *)0x0) { - puVar2 = (undefined4 *)0x0; - } - else { - puVar2 = FUN_0041de1c(puVar2,param_1,0); - } - param_1[0x38] = puVar2; - piVar1 = param_4 + 3; - *piVar1 = *piVar1 + -1; - if (*piVar1 == 0) { - FUN_004024d8(param_4,3); - } - return param_1; -} - - - -/* @004ac644 file=? name=FUN_004ac644 */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -int * __cdecl -FUN_004ac644(int *param_1,undefined4 param_2,undefined4 param_3,char *param_4,undefined4 param_5, - int param_6,int param_7) - -{ - int *piVar1; - int iVar2; - int iVar3; - undefined4 *puVar4; - char *pcVar5; - float10 fVar6; - int *local_10; - int *local_c; - undefined4 *local_8; - - FUN_0041c52c(param_1,param_2,param_3,param_4,param_5); - *param_1 = (int)&PTR_FUN_0050e210; - local_8 = (undefined4 *)FUN_00402298(0x10); - if (local_8 == (undefined4 *)0x0) { - iVar3 = 0; - } - else { - iVar3 = FUN_004023f4(local_8); - } - param_1[0x3d] = iVar3; - piVar1 = (int *)(param_1[0x3d] + 0xc); - *piVar1 = *piVar1 + 1; - param_1[0x41] = 0; - FUN_0041bbd8((int)(param_1 + 0xb),0); - if (param_1[0x41] != 0) { - (**(code **)(*param_1 + 0x34))(); - } - param_1[0x3a] = param_6; - param_1[0x3b] = param_7; - param_1[0x3c] = (int)param_4; - param_1[0x44] = -1; - if (*(int *)(param_4 + 0x48) == 1) { - param_1[0x39] = 1; - } - else { - param_1[0x39] = 0; - } - FUN_00402a98((int *)&local_c,param_1 + 0x3d,param_4 + 0x4c); - piVar1 = local_c + 3; - *piVar1 = *piVar1 + -1; - if (*piVar1 == 0) { - FUN_004024d8(local_c,3); - } - FUN_00408440(param_1 + 0x3e,(undefined4 *)(param_4 + 0xcc)); - param_1[0x41] = *(int *)(param_4 + 0xd8); - param_1[0x42] = *(int *)(param_4 + 0xe0); - param_1[0x43] = *(int *)(param_4 + 0xdc); - puVar4 = (undefined4 *)FUN_00402298(0x160); - if (puVar4 == (undefined4 *)0x0) { - puVar4 = (undefined4 *)0x0; - } - else { - puVar4 = FUN_0041de1c(puVar4,param_1,0); - } - param_1[0x38] = (int)puVar4; - FUN_00402a98((int *)&local_10,(int *)(param_1[0x38] + 0x15c),(char *)param_1[0x35]); - piVar1 = local_10 + 3; - *piVar1 = *piVar1 + -1; - if (*piVar1 == 0) { - FUN_004024d8(local_10,3); - } - iVar3 = 0; - pcVar5 = param_4 + 0x30; - *(undefined4 *)(param_1[0x38] + 0x140) = *(undefined4 *)(param_4 + 0x44); - do { - *(undefined4 *)(param_1[0x38] + 0x144 + iVar3 * 4) = *(undefined4 *)pcVar5; - iVar3 = iVar3 + 1; - pcVar5 = pcVar5 + 4; - } while (iVar3 < 5); - iVar3 = 0; - do { - fVar6 = FUN_004dcd00((double)(*(float *)(param_1[0x38] + 0x144 + iVar3 * 4) - - _DAT_004ac860 / *(float *)(param_1[0x38] + 0x140))); - if ((float10)_DAT_004ac864 < fVar6) { - iVar2 = param_1[0x38]; - *(float *)(iVar2 + 0x144 + iVar3 * 4) = - _DAT_004ac860 / (*(float *)(iVar2 + 0x144 + iVar3 * 4) * *(float *)(iVar2 + 0x140)); - } - iVar3 = iVar3 + 1; - } while (iVar3 < 5); - return param_1; -} - - - -/* @004ac868 file=? name=FUN_004ac868 */ - -void __cdecl FUN_004ac868(int *param_1,byte param_2) - -{ - int *piVar1; - undefined4 *puVar2; - int *piVar3; - - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_0050e210; - puVar2 = (undefined4 *)param_1[0x38]; - if (puVar2 != (undefined4 *)0x0) { - (**(code **)*puVar2)(puVar2,3); - } - piVar3 = (int *)param_1[0x3d]; - piVar1 = piVar3 + 3; - *piVar1 = *piVar1 + -1; - if (*piVar1 == 0) { - FUN_004024d8(piVar3,3); - } - FUN_0041c648(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @004ac8c0 file=? name=FUN_004ac8c0 */ - -void __cdecl FUN_004ac8c0(int param_1) - -{ - int iVar1; - uint uVar2; - int *piVar3; - - iVar1 = *(int *)(param_1 + 0x40); - if (iVar1 == 0) { - FUN_004dbb24(&DAT_00524e20,*(char **)(param_1 + 0xd4),(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s___DefaultState_0050df99,(char *)0x0); - FUN_004d9c38(&DAT_00524e20); - return; - } - if (iVar1 != 1) { - if (iVar1 != 2) { - uVar2 = *(uint *)(param_1 + 0x40); - FUN_004dbb24(&DAT_00524e20,*(char **)(param_1 + 0xd4),(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s___UnknownState______0050dfa9,(char *)0x0); - piVar3 = FUN_004db880(&DAT_00524e20,uVar2); - FUN_004d9c38(piVar3); - return; - } - FUN_004dbb24(&DAT_00524e20,*(char **)(param_1 + 0xd4),(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s___Exploding_0050df8c,(char *)0x0); - FUN_004d9c38(&DAT_00524e20); - return; - } - FUN_004dbb24(&DAT_00524e20,*(char **)(param_1 + 0xd4),(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s___Destroyed_0050df7f,(char *)0x0); - FUN_004d9c38(&DAT_00524e20); - return; -} - - - -/* @004ac9c8 file=? name=FUN_004ac9c8 */ - -bool __cdecl FUN_004ac9c8(int param_1) - -{ - return *(int *)(*(int *)(*(int *)(param_1 + 0xd0) + 400) + 0x274) == 0; -} - - - -/* @004ac9ec file=? name=FUN_004ac9ec */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -undefined4 __cdecl -FUN_004ac9ec(int param_1,char *param_2,char *param_3,char *param_4,int param_5,int param_6, - int param_7) - -{ - char *pcVar1; - char cVar2; - int iVar3; - undefined4 uVar4; - char *pcVar5; - uint uVar6; - uint uVar7; - char *pcVar8; - bool bVar9; - float local_20; - float local_1c; - char *local_18; - char *local_14; - char *local_10; - char *local_c; - int local_8; - - iVar3 = FUN_0041c684(param_1,param_2,param_3,param_4,param_5,param_6); - if (iVar3 == 0) { - uVar4 = 0; - } - else { - param_4[0x24] = -0x1c; - param_4[0x25] = '\0'; - param_4[0x26] = '\0'; - param_4[0x27] = '\0'; - param_4[0x20] = -0x45; - param_4[0x21] = '\v'; - param_4[0x22] = '\0'; - param_4[0x23] = '\0'; - if (param_7 == 1) { - param_4[0xe0] = '\0'; - param_4[0xe1] = '\0'; - param_4[0xe2] = -0x80; - param_4[0xe3] = -0x41; - local_8 = 0; - pcVar5 = param_4 + 0x30; - do { - pcVar5[0] = '\0'; - pcVar5[1] = '\0'; - pcVar5[2] = -0x80; - pcVar5[3] = -0x41; - local_8 = local_8 + 1; - pcVar5 = pcVar5 + 4; - } while (local_8 < 5); - param_4[0x48] = -1; - param_4[0x49] = -1; - param_4[0x4a] = -1; - param_4[0x4b] = -1; - iVar3 = 0; - pcVar5 = param_4 + 0x4c; - do { - *pcVar5 = '\0'; - iVar3 = iVar3 + 1; - pcVar5 = pcVar5 + 1; - } while (iVar3 < 0x80); - *(undefined4 *)(param_4 + 0x4c) = DAT_0050dfc0; - param_4[0x50] = DAT_0050dfc4; - local_c = param_4 + 0xcc; - FUN_00408440((undefined4 *)local_c,&DAT_004e0f80); - param_4[0x44] = '\0'; - param_4[0x45] = '\0'; - param_4[0x46] = -0x80; - param_4[0x47] = -0x41; - param_4[0xd8] = '\0'; - param_4[0xd9] = '\0'; - param_4[0xda] = '\0'; - param_4[0xdb] = '\0'; - param_4[0xdc] = '\0'; - param_4[0xdd] = '\0'; - param_4[0xde] = '\0'; - param_4[0xdf] = '\0'; - } - FUN_00404190(param_5,param_3,s_PrintSimulationState_0050dfc5,(undefined4 *)(param_4 + 0xd8)); - FUN_00404118(param_5,param_3,s_CollisionCriticalHitWeight_0050dfda,(float *)(param_4 + 0xdc)); - local_10 = s_Unspecified_0050dff5; - FUN_00404088(param_5,param_3,s_VideoObjectName_0050e001,&local_10); - pcVar8 = s_Unspecified_0050e011; - pcVar5 = local_10; - do { - bVar9 = *pcVar5 == *pcVar8; - if (!bVar9) break; - if (*pcVar5 == '\0') goto LAB_004acb51; - pcVar1 = pcVar5 + 1; - bVar9 = *pcVar1 == pcVar8[1]; - if (!bVar9) break; - pcVar5 = pcVar5 + 2; - pcVar8 = pcVar8 + 2; - bVar9 = *pcVar1 == '\0'; - } while (!bVar9); - if (!bVar9) { - uVar6 = 0xffffffff; - pcVar5 = local_10; - do { - pcVar8 = pcVar5; - if (uVar6 == 0) break; - uVar6 = uVar6 - 1; - pcVar8 = pcVar5 + 1; - cVar2 = *pcVar5; - pcVar5 = pcVar8; - } while (cVar2 != '\0'); - uVar6 = ~uVar6; - pcVar5 = pcVar8 + -uVar6; - pcVar8 = param_4 + 0x4c; - for (uVar7 = uVar6 >> 2; uVar7 != 0; uVar7 = uVar7 - 1) { - *(undefined4 *)pcVar8 = *(undefined4 *)pcVar5; - pcVar5 = pcVar5 + 4; - pcVar8 = pcVar8 + 4; - } - for (uVar6 = uVar6 & 3; uVar6 != 0; uVar6 = uVar6 - 1) { - *pcVar8 = *pcVar5; - pcVar5 = pcVar5 + 1; - pcVar8 = pcVar8 + 1; - } - } -LAB_004acb51: - local_14 = s_Unspecified_0050e01d; - iVar3 = FUN_00404088(param_5,param_3,s_VitalSubsystem_0050e029,&local_14); - if ((iVar3 == 0) && (*(int *)(param_4 + 0x48) == -1)) { - FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s_missing_VitalSubsystem__0050e038,(char *)0x0); - FUN_004d9c38(&DAT_00524e20); - uVar4 = 0; - } - else { - pcVar8 = s_Unspecified_0050e052; - pcVar5 = local_14; - do { - if (*pcVar5 != *pcVar8) goto LAB_004acbd7; - bVar9 = true; - if (*pcVar5 == '\0') break; - pcVar1 = pcVar5 + 1; - if (*pcVar1 != pcVar8[1]) goto LAB_004acbd7; - pcVar5 = pcVar5 + 2; - pcVar8 = pcVar8 + 2; - bVar9 = *pcVar1 == '\0'; - } while (!bVar9); - if (!bVar9) { -LAB_004acbd7: - pcVar8 = &DAT_0050e05e; - pcVar5 = local_14; - do { - if (*pcVar5 != *pcVar8) goto LAB_004acc06; - bVar9 = true; - if (*pcVar5 == '\0') break; - pcVar1 = pcVar5 + 1; - if (*pcVar1 != pcVar8[1]) goto LAB_004acc06; - pcVar5 = pcVar5 + 2; - pcVar8 = pcVar8 + 2; - bVar9 = *pcVar1 == '\0'; - } while (!bVar9); - if (bVar9) { - param_4[0x48] = '\x01'; - param_4[0x49] = '\0'; - param_4[0x4a] = '\0'; - param_4[0x4b] = '\0'; - } - else { -LAB_004acc06: - pcVar8 = s_False_0050e063; - pcVar5 = local_14; - do { - if (*pcVar5 != *pcVar8) goto LAB_004acc33; - bVar9 = true; - if (*pcVar5 == '\0') break; - pcVar1 = pcVar5 + 1; - if (*pcVar1 != pcVar8[1]) goto LAB_004acc33; - pcVar5 = pcVar5 + 2; - pcVar8 = pcVar8 + 2; - bVar9 = *pcVar1 == '\0'; - } while (!bVar9); - if (!bVar9) { -LAB_004acc33: - FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s___VitalSubsystem_must_be_True_or_0050e069,(char *)0x0); - FUN_004d9c38(&DAT_00524e20); - return 0; - } - param_4[0x48] = '\0'; - param_4[0x49] = '\0'; - param_4[0x4a] = '\0'; - param_4[0x4b] = '\0'; - } - } - iVar3 = FUN_00404088(param_5,param_3,s_SiteOffset_0050e092,&local_18); - if (iVar3 != 0) { - FUN_00408944(local_18,(float *)(param_4 + 0xcc)); - } - iVar3 = FUN_00404118(param_5,param_3,s_WeaponDamagePoints_0050e09d,(float *)(param_4 + 0x44)); - if ((iVar3 == 0) && (_DAT_004aceec == *(float *)(param_4 + 0x44))) { - FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s_Must_have_a_WeaponDamagePoints_0050e0b0,(char *)0x0); - FUN_004d9c38(&DAT_00524e20); - uVar4 = 0; - } - else { - iVar3 = FUN_00404118(param_5,param_3,s_CriticalHitScoreBonus_0050e0d0, - (float *)(param_4 + 0xe0)); - if ((iVar3 == 0) && (_DAT_004aceec == *(float *)(param_4 + 0xe0))) { - FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s_Must_have_a_CriticalHitScoreBonu_0050e0e6,(char *)0x0); - FUN_004d9c38(&DAT_00524e20); - uVar4 = 0; - } - else { - local_1c = _DAT_004acef0 / *(float *)(param_4 + 0x44); - local_20 = -1.0; - iVar3 = FUN_00404118(param_5,param_3,s_CollisionDamagePoints_0050e109,&local_20); - if ((iVar3 == 0) && (*(float *)(param_4 + 0x30) == _DAT_004aceec)) { - *(float *)(param_4 + 0x30) = local_1c; - } - if (local_20 != _DAT_004aceec) { - *(float *)(param_4 + 0x30) = _DAT_004acef0 / local_20; - } - local_20 = -1.0; - iVar3 = FUN_00404118(param_5,param_3,s_BallisticDamagePoints_0050e11f,&local_20); - if ((iVar3 == 0) && (*(float *)(param_4 + 0x34) == _DAT_004aceec)) { - *(float *)(param_4 + 0x34) = local_1c; - } - if (local_20 != _DAT_004aceec) { - *(float *)(param_4 + 0x34) = _DAT_004acef0 / local_20; - } - local_20 = -1.0; - iVar3 = FUN_00404118(param_5,param_3,s_ExplosiveDamagePoints_0050e135,&local_20); - if ((iVar3 == 0) && (*(float *)(param_4 + 0x38) == _DAT_004aceec)) { - *(float *)(param_4 + 0x38) = local_1c; - } - if (local_20 != _DAT_004aceec) { - *(float *)(param_4 + 0x38) = _DAT_004acef0 / local_20; - } - local_20 = -1.0; - iVar3 = FUN_00404118(param_5,param_3,s_LaserDamagePoints_0050e14b,&local_20); - if ((iVar3 == 0) && (*(float *)(param_4 + 0x3c) == _DAT_004aceec)) { - *(float *)(param_4 + 0x3c) = local_1c; - } - if (local_20 != _DAT_004aceec) { - *(float *)(param_4 + 0x3c) = _DAT_004acef0 / local_20; - } - local_20 = -1.0; - iVar3 = FUN_00404118(param_5,param_3,s_EnergyDamagePoints_0050e15d,&local_20); - if ((iVar3 == 0) && (*(float *)(param_4 + 0x40) == _DAT_004aceec)) { - *(float *)(param_4 + 0x40) = local_1c; - } - if (local_20 != _DAT_004aceec) { - *(float *)(param_4 + 0x40) = _DAT_004acef0 / local_20; - } - uVar4 = 1; - } - } - } - } - return uVar4; -} - - - -/* @004acfa9 file=? name=FUN_004acfa9 */ - -undefined4 * __cdecl FUN_004acfa9(undefined4 *param_1,int param_2,undefined4 param_3) - -{ - FUN_00415f30(param_1,param_2,param_3); - *param_1 = &PTR_FUN_0050e1c8; - return param_1; -} - - - -/* @004acfcc file=? name=FUN_004acfcc */ - -undefined4 * __cdecl FUN_004acfcc(undefined4 *param_1,int param_2,undefined4 param_3) - -{ - FUN_00415f30(param_1,param_2,param_3); - *param_1 = &PTR_FUN_0050e1c8; - return param_1; -} - - - -/* @004acfef file=? name=FUN_004acfef */ - -undefined4 * __cdecl FUN_004acfef(undefined4 *param_1,int param_2) - -{ - FUN_00415f60(param_1,param_2); - *param_1 = &PTR_FUN_0050e1c8; - return param_1; -} - - - -/* @004ad00e file=? name=FUN_004ad00e */ - -void __cdecl FUN_004ad00e(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_0050e1c8; - FUN_00415f90(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @004ad03a file=? name=FUN_004ad03a */ - -undefined4 * __cdecl FUN_004ad03a(undefined4 *param_1,undefined4 param_2) - -{ - FUN_00417be0(param_1,param_2); - *param_1 = &PTR_FUN_0050e1c0; - return param_1; -} - - - -/* @004ad059 file=? name=FUN_004ad059 */ - -void __cdecl FUN_004ad059(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_0050e1c0; - FUN_00417c0c(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @004ad085 file=? name=FUN_004ad085 */ - -undefined4 * __cdecl FUN_004ad085(undefined4 *param_1,int param_2) - -{ - FUN_00417d00(param_1,param_2); - *param_1 = &PTR_FUN_0050e170; - return param_1; -} - - - -/* @004ad0a4 file=? name=FUN_004ad0a4 */ - -undefined4 * __cdecl FUN_004ad0a4(undefined4 *param_1,int param_2) - -{ - FUN_00417d00(param_1,param_2); - *param_1 = &PTR_FUN_0050e170; - return param_1; -} - - - -/* @004ad0c3 file=? name=FUN_004ad0c3 */ - -undefined4 * __cdecl FUN_004ad0c3(undefined4 *param_1,int param_2) - -{ - FUN_00417d28(param_1,param_2); - *param_1 = &PTR_FUN_0050e170; - return param_1; -} - - - -/* @004ad0e2 file=? name=FUN_004ad0e2 */ - -void __cdecl FUN_004ad0e2(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_0050e170; - FUN_00417d54(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @004ad10e file=? name=FUN_004ad10e */ - -void __cdecl FUN_004ad10e(int *param_1,undefined4 param_2) - -{ - (**(code **)(*param_1 + 0x28))(param_1,param_2); - return; -} - - - -/* @004ad124 file=? name=FUN_004ad124 */ - -undefined4 * __cdecl FUN_004ad124(undefined4 *param_1,undefined4 param_2) - -{ - undefined4 *puVar1; - int iVar2; - - FUN_00415e90(param_1,1); - *param_1 = &PTR_FUN_0050e3d0; - FUN_004de998(param_1 + 3,0x10,7,1,FUN_004ad619); - param_1[0x1f] = param_2; - iVar2 = 0; - puVar1 = param_1 + 3; - do { - *puVar1 = 0; - puVar1[2] = 0; - puVar1[1] = 0; - puVar1[3] = 0; - iVar2 = iVar2 + 1; - puVar1 = puVar1 + 4; - } while (iVar2 < 7); - return param_1; -} - - - -/* @004ad180 file=? name=FUN_004ad180 */ - -void __cdecl FUN_004ad180(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_0050e3d0; - FUN_00415ed8(param_1,0); - if ((param_2 & 1) != 0) { - FUN_00402f98(0x50e248,param_1); - } - } - return; -} - - - -/* @004ad1b8 file=? name=FUN_004ad1b8 */ - -void __cdecl FUN_004ad1b8(int *param_1,byte param_2) - -{ - void *this; - int local_10 [3]; - - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_0050e3a0; - FUN_004ad68b(local_10,(int)(param_1 + 0x39)); - FUN_00417858(this,local_10,1); - FUN_004ad6c9(local_10,2); - FUN_004ad640(param_1 + 0x39,2); - FUN_0041c648(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @004ad228 file=? name=FUN_004ad228 */ - -undefined4 * __cdecl -FUN_004ad228(undefined4 *param_1,int param_2,undefined4 param_3,char *param_4,undefined4 param_5) - -{ - int iVar1; - int iVar2; - undefined4 *puVar3; - int iVar4; - - FUN_0041c52c(param_1,param_2,param_3,param_4,param_5); - *param_1 = &PTR_FUN_0050e3a0; - FUN_004ad621(param_1 + 0x39,0); - if ((*(uint *)(param_2 + 0x28) & 0xc) == 0) { - param_1[7] = PTR_FUN_0050e2b0; - param_1[8] = DAT_0050e2b4; - param_1[9] = DAT_0050e2b8; - param_1[0x40] = *(undefined4 *)(param_4 + 0x30); - param_1[0x3d] = *(undefined4 *)(param_4 + 0x34); - param_1[0x3e] = *(undefined4 *)(param_4 + 0x38); - param_1[0x3f] = *(undefined4 *)(param_4 + 0x3c); - for (iVar4 = *(int *)(param_2 + 0x124) + -2; -1 < iVar4; iVar4 = iVar4 + -1) { - iVar1 = *(int *)(*(int *)(param_2 + 0x128) + iVar4 * 4); - if (((iVar1 != 0) && (iVar2 = FUN_0041a1a4(**(int **)(iVar1 + 0xc),0x50de2c), iVar2 != 0)) && - ((*(byte *)(iVar1 + 0x28) & 8) != 0)) { - puVar3 = FUN_00402f74(0x50e248); - if (puVar3 == (undefined4 *)0x0) { - puVar3 = (undefined4 *)0x0; - } - else { - puVar3 = FUN_004ad124(puVar3,iVar1); - } - (**(code **)(param_1[0x39] + 4))(param_1 + 0x39,puVar3); - } - } - } - else { - param_1[10] = param_1[10] | 2; - } - return param_1; -} - - - -/* @004ad33c file=? name=FUN_004ad33c */ - -void __cdecl FUN_004ad33c(int param_1) - -{ - int iVar1; - uint *puVar2; - uint uVar3; - uint local_64 [7]; - uint local_48 [8]; - int local_28 [3]; - int *local_1c; - int *local_18; - int *local_14; - uint local_10; - int *local_c; - int local_8; - - local_8 = *(int *)(DAT_004efc94 + 0x38); - FUN_004ad68b(local_28,param_1 + 0xe4); - while( true ) { - iVar1 = (**(code **)(local_28[0] + 0x28))(local_28); - if (iVar1 == 0) break; - local_c = *(int **)(iVar1 + 0x7c); - local_10 = (**(code **)(*local_c + 0x30))(local_c); - puVar2 = (uint *)(iVar1 + 0xc); - iVar1 = 0; - do { - uVar3 = local_10 & 1; - if (puVar2[1] != 0) { - if ((int)puVar2[3] < *(int *)(param_1 + 0x10)) { - puVar2[1] = 0; - } - else { - uVar3 = *puVar2; - } - } - if (uVar3 != *puVar2) { - if (uVar3 == 0) { - local_1c = *(int **)(param_1 + 0xd0); - FUN_004366b8(local_64,(int)local_1c,local_c,iVar1); - FUN_004364e4(local_8,local_1c,local_64); - } - else { - local_14 = local_c; - local_18 = *(int **)(param_1 + 0xd0); - FUN_00436688(local_48,(int)local_18,local_c,iVar1,*(undefined4 *)(param_1 + 0x100)); - FUN_004364e4(local_8,local_18,local_48); - } - } - *puVar2 = uVar3; - iVar1 = iVar1 + 1; - local_10 = (int)local_10 >> 1; - puVar2 = puVar2 + 4; - } while (iVar1 < 7); - } - FUN_004ad6c9(local_28,2); - return; -} - - - -/* @004ad470 file=? name=FUN_004ad470 */ - -void __cdecl FUN_004ad470(int param_1) - -{ - FUN_0041a1a4(**(int **)(param_1 + 0xc),0x50e280); - return; -} - - - -/* @004ad48c file=? name=FUN_004ad48c */ - -undefined4 __cdecl -FUN_004ad48c(int param_1,char *param_2,char *param_3,char *param_4,int param_5,int param_6, - int param_7) - -{ - int iVar1; - undefined4 uVar2; - undefined4 *puVar3; - char *local_8; - - iVar1 = FUN_0041c684(param_1,param_2,param_3,param_4,param_5,param_6); - if (iVar1 == 0) { - uVar2 = 0; - } - else { - param_4[0x24] = '@'; - param_4[0x25] = '\0'; - param_4[0x26] = '\0'; - param_4[0x27] = '\0'; - param_4[0x20] = -0x24; - param_4[0x21] = '\v'; - param_4[0x22] = '\0'; - param_4[0x23] = '\0'; - param_4[0x30] = -1; - param_4[0x31] = -1; - param_4[0x32] = -1; - param_4[0x33] = -1; - param_4[0x34] = '\0'; - param_4[0x35] = '\0'; - param_4[0x36] = '\0'; - param_4[0x37] = '\0'; - param_4[0x38] = '\0'; - param_4[0x39] = '\0'; - param_4[0x3a] = '\0'; - param_4[0x3b] = '\0'; - param_4[0x3c] = '\0'; - param_4[0x3d] = '\0'; - param_4[0x3e] = '\0'; - param_4[0x3f] = '\0'; - if ((*(int *)(param_4 + 0x30) == -1) && - (iVar1 = FUN_00404088(param_5,param_3,s_AlarmModel_0050e322,&local_8), iVar1 == 0)) { - return 1; - } - puVar3 = (undefined4 *)FUN_00406ff8(param_7,local_8,1,-1); - if (puVar3 == (undefined4 *)0x0) { - FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s_couldn_t_locate_0050e32d,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,local_8,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s__mod_0050e33f,(char *)0x0); - uVar2 = 0; - } - else { - uVar2 = 1; - *(undefined4 *)(param_4 + 0x30) = *puVar3; - } - } - return uVar2; -} - - - -/* @004ad619 file=? name=FUN_004ad619 */ - -undefined4 __cdecl FUN_004ad619(undefined4 param_1) - -{ - return param_1; -} - - - -/* @004ad621 file=? name=FUN_004ad621 */ - -undefined4 * __cdecl FUN_004ad621(undefined4 *param_1,undefined4 param_2) - -{ - FUN_00417be0(param_1,param_2); - *param_1 = &PTR_FUN_0050e398; - return param_1; -} - - - -/* @004ad640 file=? name=FUN_004ad640 */ - -void __cdecl FUN_004ad640(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_0050e398; - FUN_00417c0c(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @004ad66c file=? name=FUN_004ad66c */ - -undefined4 * __cdecl FUN_004ad66c(undefined4 *param_1,int param_2) - -{ - FUN_00417d00(param_1,param_2); - *param_1 = &PTR_FUN_0050e348; - return param_1; -} - - - -/* @004ad68b file=? name=FUN_004ad68b */ - -undefined4 * __cdecl FUN_004ad68b(undefined4 *param_1,int param_2) - -{ - FUN_00417d00(param_1,param_2); - *param_1 = &PTR_FUN_0050e348; - return param_1; -} - - - -/* @004ad6aa file=? name=FUN_004ad6aa */ - -undefined4 * __cdecl FUN_004ad6aa(undefined4 *param_1,int param_2) - -{ - FUN_00417d28(param_1,param_2); - *param_1 = &PTR_FUN_0050e348; - return param_1; -} - - - -/* @004ad6c9 file=? name=FUN_004ad6c9 */ - -void __cdecl FUN_004ad6c9(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_0050e348; - FUN_00417d54(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @004ad748 file=? name=FUN_004ad748 */ - -void __cdecl FUN_004ad748(int *param_1,undefined4 param_2) - -{ - FUN_004ac0bc(param_1,param_2); - return; -} - - - -/* @004ad760 file=? name=FUN_004ad760 */ - -void __cdecl FUN_004ad760(int *param_1) - -{ - param_1[0x45] = param_1[0x4f]; - param_1[0x56] = (int)((float)param_1[0x4f] * (float)param_1[0x55]); - param_1[0x4b] = param_1[0x4a]; - param_1[0x4c] = 0; - param_1[0x4d] = 1; - param_1[0x57] = 0x3f800000; - FUN_004ad884((int)param_1); - FUN_004ad7f0((int)param_1); - param_1[0x4e] = 0; - FUN_004ac22c(param_1); - return; -} - - - -/* @004ad7d4 file=? name=FUN_004ad7d4 */ - -undefined4 __cdecl FUN_004ad7d4(int param_1) - -{ - return *(undefined4 *)(*(int *)(*(int *)(param_1 + 0xd0) + 400) + 0x260); -} - - - -/* @004ad7f0 file=? name=FUN_004ad7f0 */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -void __cdecl FUN_004ad7f0(int param_1) - -{ - float fVar1; - float fVar2; - float10 fVar3; - - *(float *)(param_1 + 0x1cc) = *(float *)(param_1 + 0x114) * *(float *)(param_1 + 300); - fVar1 = (float)(_DAT_004ad870 * (float10)*(float *)(param_1 + 0x1cc)); - fVar2 = _DAT_004ad87c; - if ((_DAT_004ad87c <= fVar1) && (fVar2 = fVar1, _DAT_004ad880 < fVar1)) { - fVar2 = _DAT_004ad880; - } - FUN_0043ade4((uint *)(param_1 + 0x144),fVar2); - fVar3 = FUN_0043ae0b((uint *)(param_1 + 0x144)); - *(float *)(param_1 + 0x120) = (float)fVar3; - return; -} - - - -/* @004ad884 file=? name=FUN_004ad884 */ - -void __cdecl FUN_004ad884(int param_1) - -{ - int iVar1; - - iVar1 = 0; - do { - FUN_0043ade4((uint *)(param_1 + 0x144),0); - iVar1 = iVar1 + 1; - } while (iVar1 < 0xf); - return; -} - - - -/* @004ad8ac file=? name=FUN_004ad8ac */ - -void __cdecl FUN_004ad8ac(int param_1,float param_2) - -{ - int iVar1; - float10 fVar2; - int iVar3; - - iVar3 = param_1 + 0x164; - iVar1 = FUN_00417ab4(iVar3); - if ((iVar1 != 0) && (*(int *)(param_1 + 0x134) != 0)) { - fVar2 = FUN_004ad9ec((short)iVar3,param_1,iVar1,param_2); - *(float *)(iVar1 + 0x1c8) = (float)fVar2 + *(float *)(iVar1 + 0x1c8); - *(float *)(param_1 + 0x1c8) = -(float)fVar2 + *(float *)(param_1 + 0x1c8); - FUN_004ada94(param_1,param_2); - } - return; -} - - - -/* @004ad924 file=? name=FUN_004ad924 */ - -void __cdecl FUN_004ad924(int *param_1,float param_2) - -{ - int iVar1; - - iVar1 = FUN_004ad7d4((int)param_1); - if (iVar1 != 0) { - param_1[0x56] = (int)((float)param_1[0x72] + (float)param_1[0x56]); - param_1[0x45] = (int)((float)param_1[0x56] / (float)param_1[0x55]); - FUN_004ad7f0((int)param_1); - param_1[0x72] = 0; - FUN_004ad8ac((int)param_1,param_2); - } - iVar1 = FUN_004ad7d4((int)param_1); - if (iVar1 != 0) { - FUN_004adbf8(param_1,param_2); - } - if ((float)param_1[0x47] < (float)param_1[0x45]) { - FUN_0041bbd8((int)(param_1 + 0x5c),2); - return; - } - if ((float)param_1[0x46] < (float)param_1[0x45]) { - FUN_0041bbd8((int)(param_1 + 0x5c),1); - return; - } - FUN_0041bbd8((int)(param_1 + 0x5c),0); - return; -} - - - -/* @004ad9ec file=? name=FUN_004ad9ec */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -float10 __thiscall FUN_004ad9ec(undefined2 param_1,int param_2,int param_3,float param_4) - -{ - float fVar1; - float fVar2; - float fVar3; - float fVar4; - float fVar5; - double dVar6; - float fVar7; - float fVar8; - float10 fVar9; - - fVar7 = *(float *)(param_2 + 0x154) / *(float *)(param_2 + 0x160); - fVar8 = fVar7 + *(float *)(param_3 + 0x154); - fVar1 = *(float *)(param_2 + 0x114); - fVar2 = *(float *)(param_2 + 0x160); - fVar3 = *(float *)(param_3 + 0x158); - fVar4 = *(float *)(param_3 + 0x1c8); - fVar5 = *(float *)(param_2 + 0x158); - dVar6 = (double)((-param_4 * - *(float *)(param_2 + 0x140) * - (*(float *)(param_2 + 300) / *(float *)(param_2 + 0x128)) * - *(float *)(param_2 + 0x15c)) / fVar8); - fVar9 = (float10)FUN_004dca38(param_1,SUB84(dVar6,0),(uint)((ulonglong)dVar6 >> 0x20)); - return (float10)(float)((float10)(fVar1 * fVar2 - (fVar3 + fVar4 + fVar5) / fVar8) * - (float10)fVar7 * ((float10)_DAT_004ada90 - fVar9)); -} - - - -/* @004ada94 file=? name=FUN_004ada94 */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -void __cdecl FUN_004ada94(int param_1,float param_2) - -{ - float fVar1; - float fVar2; - float fVar3; - float fVar4; - int iVar5; - float10 fVar6; - - iVar5 = FUN_00417ab4(param_1 + 0x164); - if ((iVar5 != 0) && - (fVar6 = FUN_004dcd00((double)(*(float *)(param_1 + 0x1cc) - *(float *)(iVar5 + 0x1cc))), - (float10)_DAT_004adbf4 < fVar6)) { - fVar1 = *(float *)(iVar5 + 0x1cc) / *(float *)(param_1 + 0x114) - *(float *)(param_1 + 300); - fVar2 = *(float *)(param_1 + 0x128) * param_2; - if (-fVar2 <= fVar1) { - if (fVar2 < fVar1) { - fVar1 = fVar2; - } - } - else { - fVar1 = -fVar2; - } - fVar2 = *(float *)(param_1 + 0x128) - *(float *)(param_1 + 300); - fVar3 = -*(float *)(param_1 + 300); - fVar4 = -(*(float *)(iVar5 + 0x128) - *(float *)(iVar5 + 300)); - if ((fVar3 <= fVar1) && (fVar3 = fVar1, fVar2 < fVar1)) { - fVar3 = fVar2; - } - if ((fVar4 <= fVar3) && (fVar4 = fVar3, *(float *)(iVar5 + 300) < fVar3)) { - fVar4 = *(float *)(iVar5 + 300); - } - fVar4 = *(float *)(param_1 + 0x15c) * fVar4; - *(float *)(param_1 + 300) = fVar4 + *(float *)(param_1 + 300); - *(float *)(iVar5 + 300) = *(float *)(iVar5 + 300) - fVar4; - } - return; -} - - - -/* @004adbf8 file=? name=FUN_004adbf8 */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -void __cdecl FUN_004adbf8(int *param_1,float param_2) - -{ - float fVar1; - float10 fVar2; - - param_1[0x4c] = (int)(*(float *)(param_1[0x38] + 0x158) * (float)param_1[0x48]); - if ((float)param_1[0x4c] < _DAT_0050e3d8) { - param_1[0x4c] = 0; - } - fVar1 = (float)param_1[0x4c] * param_2; - if ((float)param_1[0x4b] < fVar1) { - fVar1 = (float)param_1[0x4b]; - } - param_1[0x4b] = (int)((float)param_1[0x4b] - fVar1); - fVar2 = FUN_004dcd00((double)fVar1); - if ((float10)_DAT_004adcfc < fVar2) { - fVar2 = (float10)(**(code **)(*param_1 + 0x38))(param_1,fVar1); - param_1[0x4b] = (int)(float)(fVar2 + (float10)(float)param_1[0x4b]); - } - if ((param_1[0x4e] != 0) || ((float)param_1[0x4c] <= _DAT_0050e3d4)) { - if ((param_1[0x4e] == 1) && ((float)param_1[0x4c] < _DAT_0050e3d8)) { - param_1[0x4e] = 0; - } - } - else { - param_1[0x4e] = 1; - } - return; -} - - - -/* @004add30 file=? name=FUN_004add30 */ - -uint __cdecl FUN_004add30(int param_1) - -{ - uint uVar1; - int iVar2; - - uVar1 = FUN_004ac144(param_1); - if (*(int *)(param_1 + 0x184) != 0) { - uVar1 = uVar1 | 8; - } - if (*(int *)(param_1 + 0x138) != 0) { - iVar2 = FUN_004ad7d4(param_1); - if (iVar2 != 0) { - uVar1 = uVar1 | 4; - } - } - return uVar1; -} - - - -/* @004add6c file=? name=FUN_004add6c */ - -undefined4 __cdecl FUN_004add6c(int *param_1,int param_2) - -{ - undefined4 uVar1; - - if (param_2 == 1) { - *(undefined4 *)(param_1[0x38] + 0x158) = 0x3f000000; - return 1; - } - uVar1 = FUN_004ac1d4(param_1,param_2); - return uVar1; -} - - - -/* @004adda0 file=bt/heat.cpp name=FUN_004adda0 */ - -int * __cdecl -FUN_004adda0(int *param_1,int param_2,undefined4 param_3,char *param_4,undefined4 param_5, - int param_6,int param_7) - -{ - int iVar1; - int local_8; - - FUN_004ac644(param_1,param_2,param_3,param_4,param_5,param_6,param_7); - *param_1 = (int)&PTR_FUN_0050edc4; - param_1[0x45] = *(int *)(param_4 + 0xe4); - param_1[0x46] = *(int *)(param_4 + 0xe8); - param_1[0x47] = *(int *)(param_4 + 0xec); - param_1[0x48] = 0; - param_1[0x49] = 0x3f000000; - param_1[0x4a] = 0x3f800000; - param_1[0x4b] = param_1[0x4a]; - param_1[0x4c] = 0; - param_1[0x4d] = 1; - param_1[0x4e] = 0; - param_1[0x4f] = param_1[0x45]; - param_1[0x50] = *(int *)(param_4 + 0xf0); - FUN_0043ad4f((uint *)(param_1 + 0x51),0xf,0); - param_1[0x54] = 0x3ecccccd; - param_1[0x55] = *(int *)(param_4 + 0xf4); - param_1[0x56] = (int)((float)param_1[0x55] * (float)param_1[0x4f]); - param_1[0x57] = 0x3f800000; - param_1[0x58] = 0x3f800000; - FUN_004af9cf(param_1 + 0x59,0); - FUN_0041b9ec(param_1 + 0x5c,3); - param_1[0x72] = 0; - if (((*(uint *)(param_2 + 0x28) & 0xc) == 0) && ((*(uint *)(param_2 + 0x28) & 0x100) != 0)) { - param_1[7] = (int)PTR_FUN_0050e4e0; - param_1[8] = DAT_0050e4e4; - param_1[9] = DAT_0050e4e8; - } - param_1[0x71] = (int)param_4; - local_8 = 0; - iVar1 = FUN_0041a1a4(*(int *)param_1[3],0x50e590); - if (iVar1 == 0) { - if (*(int *)(param_4 + 0xf8) < *(int *)(param_2 + 0x124)) { - local_8 = *(int *)(*(int *)(param_2 + 0x128) + *(int *)(param_4 + 0xf8) * 4); - } - else { - FUN_0040385c(s_Bad_subsystem_resource_>heatSink_0050e7c9,s_d__tesla_bt_bt_HEAT_CPP_0050e804, - 0x25f); - } - if (((*(uint *)(param_2 + 0x28) & 0xc) == 0) && ((*(uint *)(param_2 + 0x28) & 0x100) != 0)) { - if (local_8 == 0) { - FUN_0040385c(s_Master_heatable_subystem_is_miss_0050e81c,s_d__tesla_bt_bt_HEAT_CPP_0050e859, - 0x26b); - } - else { - (**(code **)(param_1[0x59] + 4))(param_1 + 0x59,local_8); - } - } - else if (((*(uint *)(param_2 + 0x28) & 0xc) == 4) && (local_8 != 0)) { - (**(code **)(param_1[0x59] + 4))(param_1 + 0x59,local_8); - } - } - FUN_004ad7f0((int)param_1); - return param_1; -} - - - -/* @004adfd4 file=? name=FUN_004adfd4 */ - -void __cdecl FUN_004adfd4(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_0050edc4; - FUN_0041baa4(param_1 + 0x5c,2); - FUN_004af9ee(param_1 + 0x59,2); - FUN_0043adb5(param_1 + 0x51,2); - FUN_004ac868(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @004ae034 file=? name=FUN_004ae034 */ - -void __cdecl FUN_004ae034(int param_1) - -{ - FUN_0041a1a4(**(int **)(param_1 + 0xc),0x50e3ec); - return; -} - - - -/* @004ae050 file=? name=FUN_004ae050 */ - -void __cdecl FUN_004ae050(int param_1) - -{ - int iVar1; - - FUN_004ac8c0(param_1); - iVar1 = *(int *)(param_1 + 0x184); - if (iVar1 == 0) { - FUN_004dbb24(&DAT_00524e20,*(char **)(param_1 + 0xd4),(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s___NormalHeat_0050e893,(char *)0x0); - FUN_004d9c38(&DAT_00524e20); - } - else { - if (iVar1 == 1) { - FUN_004dbb24(&DAT_00524e20,*(char **)(param_1 + 0xd4),(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s___DegradationHeat_0050e880,(char *)0x0); - FUN_004d9c38(&DAT_00524e20); - return; - } - if (iVar1 == 2) { - FUN_004dbb24(&DAT_00524e20,*(char **)(param_1 + 0xd4),(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s___FailureHeat_0050e871,(char *)0x0); - FUN_004d9c38(&DAT_00524e20); - return; - } - } - FUN_004dbb24(&DAT_00524e20,*(char **)(param_1 + 0xd4),(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s_Unknown_Heat_State__0050e8a1,(char *)0x0); - FUN_004d9c38(&DAT_00524e20); - return; -} - - - -/* @004ae150 file=? name=FUN_004ae150 */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -undefined4 __cdecl -FUN_004ae150(int param_1,char *param_2,char *param_3,char *param_4,int param_5,int param_6, - int param_7) - -{ - char *pcVar1; - int iVar2; - undefined4 uVar3; - char *pcVar4; - char *pcVar5; - bool bVar6; - char *local_8; - - iVar2 = FUN_004ac9ec(param_1,param_2,param_3,param_4,param_5,param_6,param_7); - if (iVar2 == 0) { - uVar3 = 0; - } - else { - param_4[0x24] = -4; - param_4[0x25] = '\0'; - param_4[0x26] = '\0'; - param_4[0x27] = '\0'; - param_4[0x20] = -0x44; - param_4[0x21] = '\v'; - param_4[0x22] = '\0'; - param_4[0x23] = '\0'; - if (param_7 == 1) { - param_4[0xe4] = '\0'; - param_4[0xe5] = '\0'; - param_4[0xe6] = -0x80; - param_4[0xe7] = -0x41; - param_4[0xe8] = '\0'; - param_4[0xe9] = '\0'; - param_4[0xea] = -0x80; - param_4[0xeb] = -0x41; - param_4[0xec] = '\0'; - param_4[0xed] = '\0'; - param_4[0xee] = -0x80; - param_4[0xef] = -0x41; - param_4[0xf0] = '\0'; - param_4[0xf1] = '\0'; - param_4[0xf2] = -0x80; - param_4[0xf3] = -0x41; - param_4[0xf4] = '\0'; - param_4[0xf5] = '\0'; - param_4[0xf6] = -0x80; - param_4[0xf7] = -0x41; - param_4[0xf8] = -1; - param_4[0xf9] = -1; - param_4[0xfa] = -1; - param_4[0xfb] = -1; - } - iVar2 = FUN_00404118(param_5,param_3,s_StartingTemperature_0050e8b6,(float *)(param_4 + 0xe4)); - if ((iVar2 == 0) && (_DAT_004ae460 == *(float *)(param_4 + 0xe4))) { - FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); - FUN_004dbb24((int *)&DAT_00524e68,s_missing_StartingTemperature__0050e8ca,(char *)0x0); - uVar3 = 0; - } - else { - iVar2 = FUN_00404118(param_5,param_3,s_DegradationTemperature_0050e8e9, - (float *)(param_4 + 0xe8)); - if ((iVar2 == 0) && (_DAT_004ae460 == *(float *)(param_4 + 0xe8))) { - FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); - FUN_004dbb24((int *)&DAT_00524e68,s_missing_DegradationTemperature__0050e900,(char *)0x0); - uVar3 = 0; - } - else { - iVar2 = FUN_00404118(param_5,param_3,s_FailureTemperature_0050e922,(float *)(param_4 + 0xec) - ); - if ((iVar2 == 0) && (_DAT_004ae460 == *(float *)(param_4 + 0xec))) { - FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); - FUN_004dbb24((int *)&DAT_00524e68,s_missing_FailureTemperature__0050e935,(char *)0x0); - uVar3 = 0; - } - else { - iVar2 = FUN_00404118(param_5,param_3,s_ThermalConductance_0050e953, - (float *)(param_4 + 0xf0)); - if ((iVar2 == 0) && (_DAT_004ae460 == *(float *)(param_4 + 0xf0))) { - FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); - FUN_004dbb24((int *)&DAT_00524e68,s_missing_ThermalConductance__0050e966,(char *)0x0); - uVar3 = 0; - } - else { - iVar2 = FUN_00404118(param_5,param_3,s_ThermalMass_0050e984,(float *)(param_4 + 0xf4)); - if ((iVar2 == 0) && (_DAT_004ae460 == *(float *)(param_4 + 0xf4))) { - FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); - FUN_004dbb24((int *)&DAT_00524e68,s_missing_ThermalMass__0050e990,(char *)0x0); - uVar3 = 0; - } - else { - local_8 = s_Unspecified_0050e9a7; - iVar2 = FUN_00404088(param_5,param_3,s_HeatSink_0050e9b3,&local_8); - if ((iVar2 == 0) && (*(int *)(param_4 + 0xf8) == -1)) { - FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); - FUN_004dbb24((int *)&DAT_00524e68,s_missing_HeatSink__0050e9bc,(char *)0x0); - uVar3 = 0; - } - else { - pcVar5 = s_Unspecified_0050e9d0; - pcVar4 = local_8; - do { - bVar6 = *pcVar4 == *pcVar5; - if (!bVar6) break; - if (*pcVar4 == '\0') goto LAB_004ae418; - pcVar1 = pcVar4 + 1; - bVar6 = *pcVar1 == pcVar5[1]; - if (!bVar6) break; - pcVar4 = pcVar4 + 2; - pcVar5 = pcVar5 + 2; - bVar6 = *pcVar1 == '\0'; - } while (!bVar6); - if (!bVar6) { - iVar2 = FUN_004215b0(param_5,local_8); - *(int *)(param_4 + 0xf8) = iVar2; - } -LAB_004ae418: - if (*(int *)(param_4 + 0xf8) < 0) { - FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); - FUN_004dbb24((int *)&DAT_00524e68,s_has_an_invalid_heat_sink__0050e9dc,(char *)0x0 - ); - uVar3 = 0; - } - else { - *(int *)(param_4 + 0xf8) = *(int *)(param_4 + 0xf8) + 2; - uVar3 = 1; - } - } - } - } - } - } - } - } - return uVar3; -} - - - -/* @004ae4d8 file=? name=FUN_004ae4d8 */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -void __cdecl FUN_004ae4d8(int *param_1,undefined4 param_2) - -{ - float fVar1; - - param_1[0x58] = (int)((_DAT_004ae530 - *(float *)(param_1[0x38] + 0x158)) * (float)param_1[0x76]); - fVar1 = _DAT_004ae530; - if (_DAT_004ae530 <= (float)param_1[0x58]) { - fVar1 = (float)param_1[0x58]; - } - param_1[0x58] = (int)fVar1; - FUN_004ad748(param_1,param_2); - return; -} - - - -/* @004ae568 file=? name=FUN_004ae568 */ - -int * __cdecl FUN_004ae568(int *param_1,int param_2,undefined4 param_3,char *param_4) - -{ - char *pcVar1; - int iVar2; - - FUN_004adda0(param_1,param_2,param_3,param_4,&DAT_0050e4ec,0,0); - *param_1 = (int)&PTR_FUN_0050ed88; - FUN_0041b9ec(param_1 + 0x77,3); - param_1[0x74] = 1; - param_1[0x57] = 0; - param_1[0x58] = *(int *)(param_4 + 0xfc); - param_1[0x76] = param_1[0x58]; - param_1[10] = param_1[10] | 8; - pcVar1 = (char *)param_1[0x35]; - iVar2 = FUN_004d4a78(pcVar1); - iVar2 = FUN_004dd1e0(pcVar1 + iVar2 + -1); - param_1[0x75] = iVar2; - return param_1; -} - - - -/* @004ae5fc file=? name=FUN_004ae5fc */ - -void __cdecl FUN_004ae5fc(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_0050ed88; - FUN_0041baa4(param_1 + 0x77,2); - FUN_004adfd4(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @004ae63c file=? name=FUN_004ae63c */ - -void __cdecl FUN_004ae63c(int param_1) - -{ - FUN_0041a1a4(**(int **)(param_1 + 0xc),0x50e4fc); - return; -} - - - -/* @004ae658 file=? name=FUN_004ae658 */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -undefined4 __cdecl -FUN_004ae658(int param_1,char *param_2,char *param_3,char *param_4,int param_5,int param_6, - int param_7) - -{ - int iVar1; - undefined4 uVar2; - - iVar1 = FUN_004ae150(param_1,param_2,param_3,param_4,param_5,param_6,param_7); - if (iVar1 == 0) { - uVar2 = 0; - } - else { - param_4[0x24] = '\0'; - param_4[0x25] = '\x01'; - param_4[0x26] = '\0'; - param_4[0x27] = '\0'; - param_4[0x20] = -0x43; - param_4[0x21] = '\v'; - param_4[0x22] = '\0'; - param_4[0x23] = '\0'; - if (param_7 == 1) { - param_4[0xfc] = '\0'; - param_4[0xfd] = '\0'; - param_4[0xfe] = -0x80; - param_4[0xff] = -0x41; - } - iVar1 = FUN_00404118(param_5,param_3,s_RefrigerationFactor_0050ea38,(float *)(param_4 + 0xfc)); - if ((iVar1 == 0) && (_DAT_004ae708 == *(float *)(param_4 + 0xfc))) { - FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); - FUN_004dbb24((int *)&DAT_00524e68,s_missing_RefrigerationFactor__0050ea4c,(char *)0x0); - uVar2 = 0; - } - else { - uVar2 = 1; - } - } - return uVar2; -} - - - -/* @004ae724 file=? name=FUN_004ae724 */ - -void __cdecl FUN_004ae724(int *param_1,undefined4 param_2) - -{ - FUN_004ad748(param_1,param_2); - return; -} - - - -/* @004ae73c file=? name=FUN_004ae73c */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -void __cdecl FUN_004ae73c(int *param_1,float param_2) - -{ - float fVar1; - float fVar2; - double dVar3; - float fVar4; - int iVar5; - float10 fVar6; - int *piVar7; - - iVar5 = FUN_004ad7d4((int)param_1); - if (iVar5 != 0) { - param_1[0x56] = (int)((float)param_1[0x72] + (float)param_1[0x56]); - param_1[0x45] = (int)((float)param_1[0x56] / (float)param_1[0x55]); - piVar7 = param_1; - FUN_004ad7f0((int)param_1); - param_1[0x72] = 0; - fVar4 = _DAT_004ae89c - (_DAT_004ae89c - (float)param_1[0x75]) * _DAT_004ae8a0; - fVar1 = (float)param_1[0x45]; - fVar2 = (float)param_1[0x58]; - dVar3 = (double)((-param_2 * - (float)param_1[0x50] * - (_DAT_004ae8a4 - *(float *)(param_1[0x38] + 0x158)) * - ((float)param_1[0x4b] / (float)param_1[0x4a]) * (float)param_1[0x57]) / - (float)param_1[0x55]); - fVar6 = (float10)FUN_004dca38((short)piVar7,SUB84(dVar3,0),(uint)((ulonglong)dVar3 >> 0x20)); - param_1[0x72] = - (int)(-(float)((float10)(fVar1 * fVar2 - fVar4) * (float10)(float)param_1[0x55] * - ((float10)_DAT_004ae8a4 - fVar6)) + (float)param_1[0x72]); - } - fVar1 = (float)param_1[0x4a] - (float)param_1[0x4b]; - if (_DAT_004ae8a8 < fVar1) { - fVar6 = FUN_004dcd00((double)fVar1); - if ((float10)_DAT_004ae8ac < fVar6) { - fVar6 = (float10)(**(code **)(*param_1 + 0x38))(param_1,fVar1); - param_1[0x4b] = (int)(float)(fVar6 + (float10)(float)param_1[0x4b]); - } - } - return; -} - - - -/* @004ae8d0 file=? name=FUN_004ae8d0 */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -int * __cdecl FUN_004ae8d0(int *param_1,int param_2,undefined4 param_3,char *param_4) - -{ - FUN_004adda0(param_1,param_2,param_3,param_4,&DAT_0050e580,0,0); - *param_1 = (int)&PTR_LAB_0050ed4c; - param_1[0x74] = *(int *)(param_4 + 0xfc); - param_1[0x75] = 0x43960000; - FUN_004afa1a(param_1 + 0x76,0); - param_1[0x50] = - (int)(float)(_DAT_004ae974 * (float10)param_1[0x74] * (float10)(float)param_1[0x50]); - if (((*(uint *)(param_2 + 0x28) & 0xc) == 0) && ((*(uint *)(param_2 + 0x28) & 0x100) != 0)) { - param_1[7] = (int)PTR_FUN_0050e5e8; - param_1[8] = DAT_0050e5ec; - param_1[9] = DAT_0050e5f0; - } - return param_1; -} - - - -/* @004ae9c0 file=? name=FUN_004ae9c0 */ - -void __cdecl FUN_004ae9c0(int param_1) - -{ - FUN_0041a1a4(**(int **)(param_1 + 0xc),0x50e590); - return; -} - - - -/* @004ae9dc file=? name=FUN_004ae9dc */ - -undefined4 __cdecl -FUN_004ae9dc(int param_1,char *param_2,char *param_3,char *param_4,int param_5,int param_6, - int param_7) - -{ - bool bVar1; - int iVar2; - undefined4 uVar3; - undefined3 extraout_var; - - iVar2 = FUN_004ae150(param_1,param_2,param_3,param_4,param_5,param_6,param_7); - if (iVar2 == 0) { - uVar3 = 0; - } - else { - param_4[0x24] = '\0'; - param_4[0x25] = '\x01'; - param_4[0x26] = '\0'; - param_4[0x27] = '\0'; - param_4[0x20] = -0x42; - param_4[0x21] = '\v'; - param_4[0x22] = '\0'; - param_4[0x23] = '\0'; - if (param_7 == 1) { - param_4[0xfc] = -1; - param_4[0xfd] = -1; - param_4[0xfe] = -1; - param_4[0xff] = -1; - } - bVar1 = FUN_004040d8(param_5,param_3,s_HeatSinkCount_0050ea95,(int *)(param_4 + 0xfc)); - if ((CONCAT31(extraout_var,bVar1) == 0) && (*(int *)(param_4 + 0xfc) == -1)) { - FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); - FUN_004dbb24((int *)&DAT_00524e68,s_missing_HeatSinkCount__0050eaa3,(char *)0x0); - uVar3 = 0; - } - else { - uVar3 = 1; - } - } - return uVar3; -} - - - -/* @004aea84 file=? name=FUN_004aea84 */ - -void __cdecl FUN_004aea84(int *param_1,undefined4 param_2) - -{ - FUN_004ac0bc(param_1,param_2); - return; -} - - - -/* @004aea9c file=? name=FUN_004aea9c */ - -void __cdecl FUN_004aea9c(int *param_1) - -{ - FUN_004ac22c(param_1); - FUN_0041bbd8((int)(param_1 + 0x4b),0); - return; -} - - - -/* @004aeac4 file=? name=FUN_004aeac4 */ - -void __cdecl FUN_004aeac4(int param_1) - -{ - int iVar1; - - iVar1 = FUN_00417ab4(param_1 + 0x114); - if (*(float *)(iVar1 + 0x114) <= *(float *)(param_1 + 0x124)) { - if (*(float *)(iVar1 + 0x114) <= *(float *)(param_1 + 0x120)) { - FUN_0041bbd8(param_1 + 300,0); - } - else { - FUN_0041bbd8(param_1 + 300,1); - } - } - else { - FUN_0041bbd8(param_1 + 300,2); - } - return; -} - - - -/* @004aeb40 file=? name=FUN_004aeb40 */ - -int * __cdecl -FUN_004aeb40(int *param_1,int param_2,undefined4 param_3,char *param_4,undefined4 param_5) - -{ - FUN_004ac644(param_1,param_2,param_3,param_4,param_5,0,0); - *param_1 = (int)&PTR_FUN_0050ed10; - FUN_004af9cf(param_1 + 0x45,0); - param_1[0x48] = *(int *)(param_4 + 0xe8); - param_1[0x49] = *(int *)(param_4 + 0xec); - param_1[0x4a] = *(int *)(param_4 + 0xe4); - FUN_0041b9ec(param_1 + 0x4b,3); - if (((*(uint *)(param_2 + 0x28) & 0xc) == 0) && ((*(uint *)(param_2 + 0x28) & 0x100) != 0)) { - param_1[7] = (int)PTR_FUN_0050e634; - param_1[8] = DAT_0050e638; - param_1[9] = DAT_0050e63c; - } - return param_1; -} - - - -/* @004aebe8 file=? name=FUN_004aebe8 */ - -void __cdecl FUN_004aebe8(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_0050ed10; - FUN_0041baa4(param_1 + 0x4b,2); - FUN_004af9ee(param_1 + 0x45,2); - FUN_004ac868(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @004aec38 file=? name=FUN_004aec38 */ - -void __cdecl FUN_004aec38(int param_1) - -{ - FUN_0041a1a4(**(int **)(param_1 + 0xc),0x50e604); - return; -} - - - -/* @004aec54 file=? name=FUN_004aec54 */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -undefined4 __cdecl -FUN_004aec54(int param_1,char *param_2,char *param_3,char *param_4,int param_5,int param_6, - int param_7) - -{ - char *pcVar1; - int iVar2; - undefined4 uVar3; - char *pcVar4; - char *pcVar5; - bool bVar6; - char *local_8; - - iVar2 = FUN_004ac9ec(param_1,param_2,param_3,param_4,param_5,param_6,param_7); - if (iVar2 == 0) { - uVar3 = 0; - } - else { - param_4[0x24] = -0x10; - param_4[0x25] = '\0'; - param_4[0x26] = '\0'; - param_4[0x27] = '\0'; - param_4[0x20] = -0x41; - param_4[0x21] = '\v'; - param_4[0x22] = '\0'; - param_4[0x23] = '\0'; - if (param_7 == 1) { - param_4[0xe4] = -1; - param_4[0xe5] = -1; - param_4[0xe6] = -1; - param_4[0xe7] = -1; - } - iVar2 = FUN_00404118(param_5,param_3,s_DegradationTemperature_0050eac8,(float *)(param_4 + 0xe8) - ); - if ((iVar2 == 0) && (_DAT_004aee28 == *(float *)(param_4 + 0xe8))) { - FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); - FUN_004dbb24((int *)&DAT_00524e68,s_missing_DegradationTemperature__0050eadf,(char *)0x0); - uVar3 = 0; - } - else { - iVar2 = FUN_00404118(param_5,param_3,s_FailureTemperature_0050eb01,(float *)(param_4 + 0xec)); - if ((iVar2 == 0) && (_DAT_004aee28 == *(float *)(param_4 + 0xec))) { - FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); - FUN_004dbb24((int *)&DAT_00524e68,s_missing_FailureTemperature__0050eb14,(char *)0x0); - uVar3 = 0; - } - else { - local_8 = s_Unspecified_0050eb32; - iVar2 = FUN_00404088(param_5,param_3,s_WatchedSubsystem_0050eb3e,&local_8); - if ((iVar2 == 0) && (*(int *)(param_4 + 0xe4) == -1)) { - FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); - FUN_004dbb24((int *)&DAT_00524e68,s_missing_WatchedSubsystem__0050eb4f,(char *)0x0); - uVar3 = 0; - } - else { - pcVar5 = s_Unspecified_0050eb6b; - pcVar4 = local_8; - do { - bVar6 = *pcVar4 == *pcVar5; - if (!bVar6) break; - if (*pcVar4 == '\0') goto LAB_004aede2; - pcVar1 = pcVar4 + 1; - bVar6 = *pcVar1 == pcVar5[1]; - if (!bVar6) break; - pcVar4 = pcVar4 + 2; - pcVar5 = pcVar5 + 2; - bVar6 = *pcVar1 == '\0'; - } while (!bVar6); - if (!bVar6) { - iVar2 = FUN_004215b0(param_5,local_8); - *(int *)(param_4 + 0xe4) = iVar2; - } -LAB_004aede2: - if (*(int *)(param_4 + 0xe4) < 0) { - FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); - FUN_004dbb24((int *)&DAT_00524e68,s_has_an_invalid_watched_subsystem_0050eb77, - (char *)0x0); - uVar3 = 0; - } - else { - *(int *)(param_4 + 0xe4) = *(int *)(param_4 + 0xe4) + 2; - uVar3 = 1; - } - } - } - } - } - return uVar3; -} - - - -/* @004aee70 file=? name=FUN_004aee70 */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -void __cdecl FUN_004aee70(int param_1,int param_2) - -{ - bool bVar1; - undefined3 extraout_var; - - bVar1 = FUN_004ac9c8(param_1); - if (CONCAT31(extraout_var,bVar1) == 0) { - if (*(int *)(param_2 + 0xc) < 1) { - FUN_0041bbd8(param_1 + 0x1d0,0); - } - else { - if ((*(int *)(param_1 + 0x1e4) != 1) && (_DAT_004aeedc < *(float *)(param_1 + 300))) { - FUN_0041bbd8(param_1 + 0x1d0,1); - } - *(undefined4 *)(param_1 + 0x228) = 0; - } - *(ushort *)(param_1 + 0x18) = *(ushort *)(param_1 + 0x18) | 1; - } - return; -} - - - -/* @004aeef8 file=? name=FUN_004aeef8 */ - -void __cdecl FUN_004aeef8(int param_1,int param_2) - -{ - FUN_0041bd34(param_1,param_2); - if (*(int *)(param_2 + 0x10) == 0) { - FUN_0041bbd8(param_1 + 0x1d0,0); - } - else { - FUN_0041bbd8(param_1 + 0x1d0,1); - } - return; -} - - - -/* @004aef40 file=? name=FUN_004aef40 */ - -void __cdecl FUN_004aef40(int param_1,undefined4 *param_2,undefined2 param_3) - -{ - FUN_0041c500(param_1,param_2,param_3); - *param_2 = 0x14; - param_2[4] = (uint)(*(int *)(param_1 + 0x1e4) == 1); - return; -} - - - -/* @004aef78 file=? name=FUN_004aef78 */ - -void __cdecl FUN_004aef78(int param_1,float param_2) - -{ - if (*(int *)(param_1 + 0x1e4) == 1) { - *(float *)(param_1 + 0x228) = param_2 + *(float *)(param_1 + 0x228); - FUN_004aefa4(param_1,param_2); - } - return; -} - - - -/* @004aefa4 file=? name=FUN_004aefa4 */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -void __cdecl FUN_004aefa4(int param_1,float param_2) - -{ - float fVar1; - int iVar2; - int iVar3; - float10 fVar4; - int local_6c [3]; - int local_60 [3]; - int local_54 [3]; - int local_48 [3]; - int local_3c [4]; - float local_2c; - float local_28; - float local_24; - float local_20; - float local_1c; - float local_18; - float local_14; - float local_10; - float local_c; - float local_8; - - local_8 = *(float *)(param_1 + 300); - fVar4 = FUN_004dcd00((double)local_8); - if ((float10)_DAT_004af3a0 < fVar4) { - iVar3 = *(int *)(param_1 + 0xd0); - FUN_004afa65(local_3c,0); - FUN_004a4f15(local_48,iVar3 + 0x7cc); - while (iVar2 = (**(code **)(local_48[0] + 0x28))(), iVar2 != 0) { - (**(code **)(local_3c[0] + 4))(local_3c); - } - FUN_004afab0(local_54,iVar3 + 0x7bc); - while (iVar2 = (**(code **)(local_54[0] + 0x28))(), iVar2 != 0) { - (**(code **)(local_3c[0] + 4))(local_3c); - } - FUN_004a4f9e(local_60,iVar3 + 0x7ac); - while (iVar3 = (**(code **)(local_60[0] + 0x28))(), iVar3 != 0) { - (**(code **)(local_3c[0] + 4))(local_3c); - } - FUN_00417ab4(param_1 + 0x164); - (**(code **)(local_3c[0] + 4))(local_3c); - FUN_004afb58(local_6c,(int)local_3c); - while (iVar3 = (**(code **)(local_6c[0] + 0x28))(), iVar3 != 0) { - local_c = *(float *)(param_1 + 300); - fVar4 = FUN_004dcd00((double)local_c); - if (fVar4 <= (float10)_DAT_004af3a0) { - FUN_004afb96(local_6c,2); - FUN_004a4ffb(local_60,2); - FUN_004afb0d(local_54,2); - FUN_004a4f72(local_48,2); - FUN_004afa84(local_3c,2); - return; - } - if (*(float *)(iVar3 + 0x15c) != _DAT_004af3a4) { - fVar1 = -*(float *)(param_1 + 0x224) * *(float *)(iVar3 + 0x15c) * param_2; - local_14 = -*(float *)(param_1 + 300); - local_10 = local_14; - if ((local_14 <= fVar1) && (local_10 = fVar1, _DAT_004af3a4 < fVar1)) { - local_10 = _DAT_004af3a4; - } - local_24 = *(float *)(iVar3 + 300); - fVar4 = FUN_004dcd00((double)local_24); - if ((float10)_DAT_004af3a0 < fVar4) { - local_20 = local_10; - if (local_10 <= _DAT_004af3a4) { - local_20 = -local_10; - } - local_20 = local_20 / *(float *)(iVar3 + 300); - local_1c = local_10; - if (local_10 <= _DAT_004af3a4) { - local_1c = -local_10; - } - local_1c = local_1c / *(float *)(param_1 + 300); - local_18 = *(float *)(iVar3 + 0x158) * local_20 - *(float *)(param_1 + 0x158) * local_1c; - } - else { - local_20 = local_10; - if (local_10 <= _DAT_004af3a4) { - local_20 = -local_10; - } - local_20 = local_20 / *(float *)(iVar3 + 0x128); - local_1c = local_10; - if (local_10 <= _DAT_004af3a4) { - local_1c = -local_10; - } - local_1c = local_1c / *(float *)(param_1 + 300); - local_18 = *(float *)(iVar3 + 0x158) * local_20 - *(float *)(param_1 + 0x158) * local_1c; - } - *(float *)(param_1 + 300) = local_10 + *(float *)(param_1 + 300); - *(float *)(iVar3 + 300) = *(float *)(iVar3 + 300) - local_10; - if (_DAT_004af3a4 <= *(float *)(iVar3 + 300)) { - if (*(float *)(iVar3 + 300) <= *(float *)(iVar3 + 0x128)) { - fVar1 = *(float *)(iVar3 + 300); - } - else { - fVar1 = *(float *)(iVar3 + 0x128); - } - } - else { - fVar1 = (float)_DAT_004af3a8; - } - *(float *)(iVar3 + 300) = fVar1; - if (*(float *)(iVar3 + 0x154) * *(float *)(param_1 + 0x13c) < local_18) { - local_18 = *(float *)(iVar3 + 0x154) * *(float *)(param_1 + 0x13c); - } - local_2c = -local_18; - if (_DAT_004af3a4 < local_2c) { - local_2c = _DAT_004af3a4; - } - *(float *)(iVar3 + 0x1c8) = local_2c + *(float *)(iVar3 + 0x1c8); - local_28 = local_2c; - } - } - FUN_004afb96(local_6c,2); - FUN_004a4ffb(local_60,2); - FUN_004afb0d(local_54,2); - FUN_004a4f72(local_48,2); - FUN_004afa84(local_3c,2); - } - return; -} - - - -/* @004af3b0 file=? name=FUN_004af3b0 */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -float10 __cdecl FUN_004af3b0(int param_1,float param_2) - -{ - float fVar1; - - fVar1 = _DAT_004af404; - if ((_DAT_004af404 <= param_2) && (fVar1 = param_2, *(float *)(param_1 + 300) < param_2)) { - fVar1 = *(float *)(param_1 + 300); - } - *(float *)(param_1 + 300) = *(float *)(param_1 + 300) - fVar1; - return (float10)fVar1; -} - - - -/* @004af408 file=? name=FUN_004af408 */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -int * __cdecl -FUN_004af408(int *param_1,int param_2,undefined4 param_3,char *param_4,undefined4 param_5) - -{ - int iVar1; - - FUN_004adda0(param_1,param_2,param_3,param_4,param_5,0,0); - *param_1 = (int)&PTR_LAB_0050ecd4; - FUN_0041b9ec(param_1 + 0x74,2); - param_1[0x8b] = 0x3f000000; - param_1[0x4a] = *(int *)(param_4 + 0xfc); - param_1[0x89] = *(int *)(param_4 + 0x100); - param_1[0x4b] = param_1[0x4a]; - param_1[0x57] = 0; - FUN_0041bbd8((int)(param_1 + 0x74),0); - param_1[0x8a] = 0; - if (((*(uint *)(param_2 + 0x28) & 0xc) == 0) && ((*(uint *)(param_2 + 0x28) & 0x100) != 0)) { - param_1[7] = (int)PTR_FUN_0050e6b4; - param_1[8] = DAT_0050e6b8; - param_1[9] = DAT_0050e6bc; - iVar1 = FUN_00417ab4((int)(param_1 + 0x59)); - (**(code **)(*(int *)(iVar1 + 0x1d8) + 4))(iVar1 + 0x1d8,param_1); - param_1[0x4a] = - (int)(float)(_DAT_004af518 * (float10)*(int *)(iVar1 + 0x1d0) * - (float10)(float)param_1[0x4a]); - param_1[0x4b] = param_1[0x4a]; - } - else { - param_1[10] = param_1[10] | 2; - } - return param_1; -} - - - -/* @004af564 file=? name=FUN_004af564 */ - -void __cdecl FUN_004af564(int param_1) - -{ - FUN_0041a1a4(**(int **)(param_1 + 0xc),0x50e650); - return; -} - - - -/* @004af580 file=? name=FUN_004af580 */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -undefined4 __cdecl -FUN_004af580(int param_1,char *param_2,char *param_3,char *param_4,int param_5,int param_6, - int param_7) - -{ - int iVar1; - undefined4 uVar2; - - iVar1 = FUN_004ae150(param_1,param_2,param_3,param_4,param_5,param_6,param_7); - if (iVar1 == 0) { - uVar2 = 0; - } - else { - param_4[0x24] = '\x04'; - param_4[0x25] = '\x01'; - param_4[0x26] = '\0'; - param_4[0x27] = '\0'; - param_4[0x20] = -0x40; - param_4[0x21] = '\v'; - param_4[0x22] = '\0'; - param_4[0x23] = '\0'; - if (param_7 == 1) { - param_4[0xfc] = '\0'; - param_4[0xfd] = '\0'; - param_4[0xfe] = -0x80; - param_4[0xff] = -0x41; - param_4[0x100] = '\0'; - param_4[0x101] = '\0'; - param_4[0x102] = -0x80; - param_4[0x103] = -0x41; - } - iVar1 = FUN_00404118(param_5,param_3,s_CoolantCapacity_0050ebc2,(float *)(param_4 + 0xfc)); - if ((iVar1 == 0) && (_DAT_004af694 == *(float *)(param_4 + 0xfc))) { - FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); - FUN_004dbb24((int *)&DAT_00524e68,s_missing_CoolantCapacity__0050ebd2,(char *)0x0); - uVar2 = 0; - } - else { - iVar1 = FUN_00404118(param_5,param_3,s_CoolantSquirtMass_0050ebed,(float *)(param_4 + 0x100)); - if ((iVar1 == 0) && (_DAT_004af694 == *(float *)(param_4 + 0x100))) { - FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); - FUN_004dbb24((int *)&DAT_00524e68,s_missing_CoolantSquirtMass__0050ebff,(char *)0x0); - uVar2 = 0; - } - else { - uVar2 = 1; - } - } - } - return uVar2; -} - - - diff --git a/reference/decomp/all/part_013.c b/reference/decomp/all/part_013.c index 848d461..69c584a 100644 --- a/reference/decomp/all/part_013.c +++ b/reference/decomp/all/part_013.c @@ -1,3 +1,7025 @@ +/* @004a5678 file=bt/mech2.cpp name=FUN_004a5678 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 __cdecl FUN_004a5678(int param_1,float param_2,int param_3) + +{ + undefined4 uVar1; + int iVar2; + float fVar3; + float10 fVar4; + float local_8; + + iVar2 = *(int *)(param_1 + 0x40); + if (*(int *)(param_1 + 0x650) == 0) { + if (iVar2 == 5) { + FUN_004a800c(param_1,0x1c); + *(undefined4 *)(param_1 + 0x650) = 1; + } + else if (iVar2 == 6) { + FUN_004a800c(param_1,0x1d); + *(undefined4 *)(param_1 + 0x650) = 1; + } + else if (iVar2 == 7) { + FUN_004a800c(param_1,0x1e); + *(undefined4 *)(param_1 + 0x650) = 1; + } + else if (iVar2 == 8) { + FUN_004a800c(param_1,0x1f); + *(undefined4 *)(param_1 + 0x650) = 1; + } + } + switch(*(undefined4 *)(param_1 + 0x728)) { + case 0: + local_8 = 0.0; + if (*(float *)(param_1 + 0x530) < *(float *)(param_1 + 0x6b4)) { + FUN_004a800c(param_1,5); + } + else { + if (_DAT_004a5bf4 <= *(float *)(param_1 + 0x6b4)) break; + FUN_004a800c(param_1,0x10); + } + case 2: + case 3: + case 4: + case 5: + case 8: + case 9: + case 10: + case 0xb: + case 0xe: + case 0xf: + case 0x10: + case 0x11: + case 0x14: + case 0x15: + case 0x1c: + case 0x1d: + case 0x1e: + case 0x1f: + case 0x20: + fVar4 = FUN_0042790c(param_1 + 0x6bc, + param_2 * *(float *)(param_1 + 0x5a8) * *(float *)(param_1 + 0x5ac),param_3 + ); + local_8 = (float)fVar4; + *(float *)(param_1 + 0x6b8) = local_8 / param_2; + break; + case 1: + local_8 = 0.0; + break; + case 6: + case 7: + if (*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x6b8)) { + if (*(float *)(param_1 + 0x6b4) < *(float *)(param_1 + 0x6b8)) { + *(float *)(param_1 + 0x6b8) = + *(float *)(param_1 + 0x6b8) - *(float *)(param_1 + 0x344) * param_2; + if (*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x6b8)) { + uVar1 = *(undefined4 *)(param_1 + 0x6b8); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x6b4); + } + *(undefined4 *)(param_1 + 0x6b8) = uVar1; + if (*(float *)(param_1 + 0x530) <= *(float *)(param_1 + 0x6b8)) { + uVar1 = *(undefined4 *)(param_1 + 0x6b8); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x530); + } + *(undefined4 *)(param_1 + 0x6b8) = uVar1; + } + } + else { + *(float *)(param_1 + 0x6b8) = + *(float *)(param_1 + 0x344) * param_2 + *(float *)(param_1 + 0x6b8); + if (*(float *)(param_1 + 0x6b8) <= *(float *)(param_1 + 0x6b4)) { + uVar1 = *(undefined4 *)(param_1 + 0x6b8); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x6b4); + } + *(undefined4 *)(param_1 + 0x6b8) = uVar1; + if (*(float *)(param_1 + 0x6b8) <= *(float *)(param_1 + 0x534)) { + uVar1 = *(undefined4 *)(param_1 + 0x6b8); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x534); + } + *(undefined4 *)(param_1 + 0x6b8) = uVar1; + } + fVar4 = FUN_0042790c(param_1 + 0x6bc, + param_2 * (*(float *)(param_1 + 0x6b8) / *(float *)(param_1 + 0x534)) * + *(float *)(param_1 + 0x5a8),param_3); + local_8 = (float)fVar4; + break; + case 0xc: + case 0xd: + if (*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x6b8)) { + if (*(float *)(param_1 + 0x6b4) < *(float *)(param_1 + 0x6b8)) { + *(float *)(param_1 + 0x6b8) = + *(float *)(param_1 + 0x6b8) - *(float *)(param_1 + 0x344) * param_2; + if (*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x6b8)) { + uVar1 = *(undefined4 *)(param_1 + 0x6b8); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x6b4); + } + *(undefined4 *)(param_1 + 0x6b8) = uVar1; + if (*(float *)(param_1 + 0x538) <= *(float *)(param_1 + 0x6b8)) { + uVar1 = *(undefined4 *)(param_1 + 0x6b8); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x538); + } + *(undefined4 *)(param_1 + 0x6b8) = uVar1; + } + } + else { + *(float *)(param_1 + 0x6b8) = + *(float *)(param_1 + 0x344) * param_2 + *(float *)(param_1 + 0x6b8); + if (*(float *)(param_1 + 0x6b8) <= *(float *)(param_1 + 0x6b4)) { + uVar1 = *(undefined4 *)(param_1 + 0x6b8); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x6b4); + } + *(undefined4 *)(param_1 + 0x6b8) = uVar1; + if (*(float *)(param_1 + 0x6b8) <= *(float *)(param_1 + 0x7a0)) { + uVar1 = *(undefined4 *)(param_1 + 0x6b8); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x7a0); + } + *(undefined4 *)(param_1 + 0x6b8) = uVar1; + } + fVar4 = FUN_0042790c(param_1 + 0x6bc, + param_2 * (*(float *)(param_1 + 0x6b8) / *(float *)(param_1 + 0x34c)) * + *(float *)(param_1 + 0x5a8),param_3); + local_8 = (float)fVar4; + break; + case 0x12: + case 0x13: + if (*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x6b8)) { + if (*(float *)(param_1 + 0x6b4) < *(float *)(param_1 + 0x6b8)) { + *(float *)(param_1 + 0x6b8) = + *(float *)(param_1 + 0x6b8) - *(float *)(param_1 + 0x5b0) * param_2; + if (*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x6b8)) { + uVar1 = *(undefined4 *)(param_1 + 0x6b8); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x6b4); + } + *(undefined4 *)(param_1 + 0x6b8) = uVar1; + if (*(float *)(param_1 + 0x350) <= *(float *)(param_1 + 0x6b8)) { + uVar1 = *(undefined4 *)(param_1 + 0x6b8); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x350); + } + *(undefined4 *)(param_1 + 0x6b8) = uVar1; + } + } + else { + *(float *)(param_1 + 0x6b8) = + *(float *)(param_1 + 0x5b0) * param_2 + *(float *)(param_1 + 0x6b8); + if (*(float *)(param_1 + 0x6b8) <= *(float *)(param_1 + 0x6b4)) { + uVar1 = *(undefined4 *)(param_1 + 0x6b8); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x6b4); + } + *(undefined4 *)(param_1 + 0x6b8) = uVar1; + if (*(float *)(param_1 + 0x6b8) <= *(float *)(param_1 + 0x52c)) { + uVar1 = *(undefined4 *)(param_1 + 0x6b8); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x52c); + } + *(undefined4 *)(param_1 + 0x6b8) = uVar1; + } + fVar3 = *(float *)(param_1 + 0x6b8) / *(float *)(param_1 + 0x350); + if (fVar3 <= _DAT_004a5bf4) { + fVar3 = -fVar3; + } + fVar4 = FUN_0042790c(param_1 + 0x6bc,fVar3 * param_2 * *(float *)(param_1 + 0x5a8),param_3); + local_8 = (float)fVar4; + break; + case 0x16: + case 0x17: + case 0x18: + case 0x19: + case 0x1a: + case 0x1b: + FUN_00408440((undefined4 *)(param_1 + 0x598),&DAT_004e0f74); + *(undefined4 *)(param_1 + 0x5a4) = 0; + *(undefined4 *)(param_1 + 0x658) = 0; + *(undefined4 *)(param_1 + 0x650) = 0; + FUN_0041bbd8(param_1 + 0x714,0); + FUN_004283b8(param_1 + 0x6bc,param_3); + break; + default: + FUN_004dbb24(&DAT_00524e20,s_StandingAnimation_0050cfe8 + *(int *)(param_1 + 0x728) * 0x3c, + (char *)0x0); + FUN_004d9c38(&DAT_00524e20); + FUN_0040385c(s_Unsupported_mech_animation__0050d833,s_d__tesla_bt_bt_MECH2_CPP_0050d850,0x206); + } + return (float10)local_8; +} + + + +/* @004a5bf8 file=bt/mech2.cpp name=FUN_004a5bf8 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 __cdecl FUN_004a5bf8(int param_1,float param_2,int param_3) + +{ + undefined4 uVar1; + int iVar2; + float fVar3; + float10 fVar4; + float local_c; + float local_8; + + iVar2 = *(int *)(param_1 + 0x728); + if (((iVar2 - 6U < 2) || (iVar2 - 0xcU < 2)) || (iVar2 - 0x12U < 2)) { + if (*(int *)(param_1 + 0x40) == 3) { + if (*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x53c)) { + uVar1 = *(undefined4 *)(param_1 + 0x6b4); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x53c); + } + *(undefined4 *)(param_1 + 0x6b4) = uVar1; + } + else { + if (*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x540)) { + uVar1 = *(undefined4 *)(param_1 + 0x6b4); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x540); + } + *(undefined4 *)(param_1 + 0x6b4) = uVar1; + } + fVar3 = _DAT_004a6340; + if (_DAT_004a6340 <= *(float *)(param_1 + 0x6b4)) { + fVar3 = *(float *)(param_1 + 0x6b4); + } + *(float *)(param_1 + 0x6b4) = fVar3; + } + switch(*(undefined4 *)(param_1 + 0x728)) { + case 0: + if (*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x530)) { + local_8 = 0.0; + break; + } + FUN_004a800c(param_1,5); + case 2: + case 3: + case 4: + case 5: + case 8: + case 9: + case 10: + case 0xb: + case 0xe: + case 0xf: + case 0x10: + case 0x11: + case 0x14: + case 0x15: + case 0x16: + case 0x17: + case 0x1a: + case 0x1b: + case 0x20: + fVar4 = FUN_0042790c(param_1 + 0x6bc, + param_2 * *(float *)(param_1 + 0x5a8) * *(float *)(param_1 + 0x5ac),param_3 + ); + local_8 = (float)fVar4; + *(float *)(param_1 + 0x6b8) = local_8 / param_2; + break; + case 1: + local_8 = 0.0; + break; + case 6: + case 7: + if (*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x6b8)) { + if (*(float *)(param_1 + 0x6b4) < *(float *)(param_1 + 0x6b8)) { + *(float *)(param_1 + 0x6b8) = + *(float *)(param_1 + 0x6b8) - *(float *)(param_1 + 0x344) * param_2; + if (*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x6b8)) { + uVar1 = *(undefined4 *)(param_1 + 0x6b8); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x6b4); + } + *(undefined4 *)(param_1 + 0x6b8) = uVar1; + if (*(float *)(param_1 + 0x530) <= *(float *)(param_1 + 0x6b8)) { + uVar1 = *(undefined4 *)(param_1 + 0x6b8); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x530); + } + *(undefined4 *)(param_1 + 0x6b8) = uVar1; + } + } + else { + *(float *)(param_1 + 0x6b8) = + *(float *)(param_1 + 0x344) * param_2 + *(float *)(param_1 + 0x6b8); + if (*(float *)(param_1 + 0x6b8) <= *(float *)(param_1 + 0x6b4)) { + uVar1 = *(undefined4 *)(param_1 + 0x6b8); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x6b4); + } + *(undefined4 *)(param_1 + 0x6b8) = uVar1; + if (*(float *)(param_1 + 0x6b8) <= *(float *)(param_1 + 0x534)) { + uVar1 = *(undefined4 *)(param_1 + 0x6b8); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x534); + } + *(undefined4 *)(param_1 + 0x6b8) = uVar1; + } + fVar4 = FUN_0042790c(param_1 + 0x6bc, + param_2 * (*(float *)(param_1 + 0x6b8) / *(float *)(param_1 + 0x534)) * + *(float *)(param_1 + 0x5a8),param_3); + local_8 = (float)fVar4; + break; + case 0xc: + case 0xd: + if (*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x6b8)) { + if (*(float *)(param_1 + 0x6b4) < *(float *)(param_1 + 0x6b8)) { + *(float *)(param_1 + 0x6b8) = + *(float *)(param_1 + 0x6b8) - *(float *)(param_1 + 0x344) * param_2; + if (*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x6b8)) { + uVar1 = *(undefined4 *)(param_1 + 0x6b8); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x6b4); + } + *(undefined4 *)(param_1 + 0x6b8) = uVar1; + if (*(float *)(param_1 + 0x538) <= *(float *)(param_1 + 0x6b8)) { + uVar1 = *(undefined4 *)(param_1 + 0x6b8); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x538); + } + *(undefined4 *)(param_1 + 0x6b8) = uVar1; + } + } + else { + *(float *)(param_1 + 0x6b8) = + *(float *)(param_1 + 0x344) * param_2 + *(float *)(param_1 + 0x6b8); + if (*(float *)(param_1 + 0x6b8) <= *(float *)(param_1 + 0x6b4)) { + uVar1 = *(undefined4 *)(param_1 + 0x6b8); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x6b4); + } + *(undefined4 *)(param_1 + 0x6b8) = uVar1; + if (*(float *)(param_1 + 0x6b8) <= *(float *)(param_1 + 0x7a0)) { + uVar1 = *(undefined4 *)(param_1 + 0x6b8); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x7a0); + } + *(undefined4 *)(param_1 + 0x6b8) = uVar1; + } + fVar4 = FUN_0042790c(param_1 + 0x6bc, + param_2 * (*(float *)(param_1 + 0x6b8) / *(float *)(param_1 + 0x34c)) * + *(float *)(param_1 + 0x5a8),param_3); + local_8 = (float)fVar4; + break; + case 0x12: + case 0x13: + if (*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x6b8)) { + if (*(float *)(param_1 + 0x6b4) < *(float *)(param_1 + 0x6b8)) { + *(float *)(param_1 + 0x6b8) = + *(float *)(param_1 + 0x6b8) - *(float *)(param_1 + 0x5b0) * param_2; + if (*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x6b8)) { + uVar1 = *(undefined4 *)(param_1 + 0x6b8); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x6b4); + } + *(undefined4 *)(param_1 + 0x6b8) = uVar1; + if (*(float *)(param_1 + 0x350) <= *(float *)(param_1 + 0x6b8)) { + uVar1 = *(undefined4 *)(param_1 + 0x6b8); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x350); + } + *(undefined4 *)(param_1 + 0x6b8) = uVar1; + } + } + else { + *(float *)(param_1 + 0x6b8) = + *(float *)(param_1 + 0x5b0) * param_2 + *(float *)(param_1 + 0x6b8); + if (*(float *)(param_1 + 0x6b8) <= *(float *)(param_1 + 0x6b4)) { + uVar1 = *(undefined4 *)(param_1 + 0x6b8); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x6b4); + } + *(undefined4 *)(param_1 + 0x6b8) = uVar1; + if (*(float *)(param_1 + 0x6b8) <= *(float *)(param_1 + 0x52c)) { + uVar1 = *(undefined4 *)(param_1 + 0x6b8); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x52c); + } + *(undefined4 *)(param_1 + 0x6b8) = uVar1; + } + fVar3 = *(float *)(param_1 + 0x6b8) / *(float *)(param_1 + 0x350); + if (fVar3 <= _DAT_004a6340) { + fVar3 = -fVar3; + } + fVar4 = FUN_0042790c(param_1 + 0x6bc,fVar3 * param_2 * *(float *)(param_1 + 0x5a8),param_3); + local_8 = (float)fVar4; + break; + case 0x18: + case 0x19: + if (*(int *)(param_1 + 0x40) == 3) { + if (*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x6b8)) { + if (*(float *)(param_1 + 0x6b4) < *(float *)(param_1 + 0x6b8)) { + *(float *)(param_1 + 0x6b8) = + *(float *)(param_1 + 0x6b8) - *(float *)(param_1 + 0x344) * param_2; + if (*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x6b8)) { + uVar1 = *(undefined4 *)(param_1 + 0x6b8); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x6b4); + } + *(undefined4 *)(param_1 + 0x6b8) = uVar1; + if (*(float *)(param_1 + 0x53c) <= *(float *)(param_1 + 0x6b8)) { + uVar1 = *(undefined4 *)(param_1 + 0x6b8); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x53c); + } + *(undefined4 *)(param_1 + 0x6b8) = uVar1; + } + } + else { + *(float *)(param_1 + 0x6b8) = + *(float *)(param_1 + 0x344) * param_2 + *(float *)(param_1 + 0x6b8); + if (*(float *)(param_1 + 0x6b8) <= *(float *)(param_1 + 0x6b4)) { + uVar1 = *(undefined4 *)(param_1 + 0x6b8); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x6b4); + } + *(undefined4 *)(param_1 + 0x6b8) = uVar1; + if (*(float *)(param_1 + 0x6b8) <= *(float *)(param_1 + 0x544)) { + uVar1 = *(undefined4 *)(param_1 + 0x6b8); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x544); + } + *(undefined4 *)(param_1 + 0x6b8) = uVar1; + } + local_c = *(float *)(param_1 + 0x6b8) / *(float *)(param_1 + 0x544); + } + else { + if (*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x6b8)) { + if (*(float *)(param_1 + 0x6b4) < *(float *)(param_1 + 0x6b8)) { + *(float *)(param_1 + 0x6b8) = + *(float *)(param_1 + 0x6b8) - *(float *)(param_1 + 0x344) * param_2; + if (*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x6b8)) { + uVar1 = *(undefined4 *)(param_1 + 0x6b8); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x6b4); + } + *(undefined4 *)(param_1 + 0x6b8) = uVar1; + if (*(float *)(param_1 + 0x540) <= *(float *)(param_1 + 0x6b8)) { + uVar1 = *(undefined4 *)(param_1 + 0x6b8); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x540); + } + *(undefined4 *)(param_1 + 0x6b8) = uVar1; + } + } + else { + *(float *)(param_1 + 0x6b8) = + *(float *)(param_1 + 0x344) * param_2 + *(float *)(param_1 + 0x6b8); + if (*(float *)(param_1 + 0x6b8) <= *(float *)(param_1 + 0x6b4)) { + uVar1 = *(undefined4 *)(param_1 + 0x6b8); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x6b4); + } + *(undefined4 *)(param_1 + 0x6b8) = uVar1; + if (*(float *)(param_1 + 0x6b8) <= *(float *)(param_1 + 0x548)) { + uVar1 = *(undefined4 *)(param_1 + 0x6b8); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x548); + } + *(undefined4 *)(param_1 + 0x6b8) = uVar1; + } + local_c = *(float *)(param_1 + 0x6b8) / *(float *)(param_1 + 0x548); + } + fVar4 = FUN_0042790c(param_1 + 0x6bc,param_2 * local_c * *(float *)(param_1 + 0x5a8),param_3); + local_8 = (float)fVar4; + break; + default: + FUN_004dbb24(&DAT_00524e20,s_StandingAnimation_0050cfe8 + *(int *)(param_1 + 0x728) * 0x3c, + (char *)0x0); + FUN_004d9c38(&DAT_00524e20); + FUN_0040385c(s_Unsupported_mech_animation__0050d869,s_d__tesla_bt_bt_MECH2_CPP_0050d886,0x2e8); + } + return (float10)local_8; +} + + + +/* @004a6344 file=? name=FUN_004a6344 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 __thiscall +FUN_004a6344(int param_1,int param_2,undefined4 param_3,float param_4,int param_5) + +{ + undefined4 uVar1; + int iVar2; + float fVar3; + int iVar4; + float10 fVar5; + float local_8; + + local_8 = 0.0; + iVar4 = *(int *)(param_2 + 0x40); + iVar2 = *(int *)(param_2 + 0x728); + if (((iVar2 - 6U < 2) || (iVar2 - 0xcU < 2)) || (iVar2 - 0x12U < 2)) { + if (iVar4 == 3) { + if (*(float *)(param_2 + 0x6b4) <= *(float *)(param_2 + 0x53c)) { + uVar1 = *(undefined4 *)(param_2 + 0x6b4); + } + else { + uVar1 = *(undefined4 *)(param_2 + 0x53c); + } + *(undefined4 *)(param_2 + 0x6b4) = uVar1; + } + else { + if (*(float *)(param_2 + 0x6b4) <= *(float *)(param_2 + 0x540)) { + uVar1 = *(undefined4 *)(param_2 + 0x6b4); + } + else { + uVar1 = *(undefined4 *)(param_2 + 0x540); + } + *(undefined4 *)(param_2 + 0x6b4) = uVar1; + } + fVar3 = _DAT_004a6924; + if (_DAT_004a6924 <= *(float *)(param_2 + 0x6b4)) { + fVar3 = *(float *)(param_2 + 0x6b4); + } + *(float *)(param_2 + 0x6b4) = fVar3; + } + switch(*(undefined4 *)(param_2 + 0x728)) { + default: + goto switchD_004a63ff_caseD_0; + case 2: + FUN_0041bbd8(param_2 + 0x714,1); + goto switchD_004a63ff_caseD_0; + case 3: + case 8: + case 9: + case 0x14: + case 0x15: + case 0x1a: + case 0x1b: + FUN_0041bbd8(param_2 + 0x714,0); + goto switchD_004a63ff_caseD_0; + case 4: + FUN_0041bbd8(param_2 + 0x714,0); + goto switchD_004a63ff_caseD_0; + case 5: + case 6: + case 0xe: + if ((*(float *)(param_2 + 0x530) <= *(float *)(param_2 + 0x6b4)) || + (*(float *)(param_2 + 0x530) <= + *(float *)(param_2 + 0x6b8) - *(float *)(param_2 + 0x344) * param_4)) { + if ((*(float *)(param_2 + 0x6b4) <= *(float *)(param_2 + 0x534)) || + (*(float *)(param_2 + 0x344) * param_4 + *(float *)(param_2 + 0x6b8) <= + *(float *)(param_2 + 0x534))) { + if (iVar4 == 4) { + param_1 = 7; + } + if (iVar4 == 3) { + param_1 = 0x16; + } +LAB_004a6505: + FUN_004a800c(param_2,param_1); + fVar5 = FUN_0042790c(param_2 + 0x6bc, + (param_4 * *(float *)(param_2 + 0x6b8) * *(float *)(param_2 + 0x5a8)) / + *(float *)(param_2 + 0x534),param_5); + local_8 = (float)fVar5; + goto switchD_004a63ff_caseD_0; + } + iVar4 = 0xb; + } + else { + iVar4 = 9; + } + break; + case 7: + case 0xf: + if ((*(float *)(param_2 + 0x530) <= *(float *)(param_2 + 0x6b4)) || + (*(float *)(param_2 + 0x530) <= + *(float *)(param_2 + 0x6b8) - *(float *)(param_2 + 0x344) * param_4)) { + if ((*(float *)(param_2 + 0x6b4) <= *(float *)(param_2 + 0x534)) || + (*(float *)(param_2 + 0x344) * param_4 + *(float *)(param_2 + 0x6b8) <= + *(float *)(param_2 + 0x534))) { + if (iVar4 == 3) { + param_1 = 6; + } + if (iVar4 == 4) { + param_1 = 0x17; + } + goto LAB_004a6505; + } + iVar4 = 10; + } + else { + iVar4 = 8; + } + break; + case 10: + case 0xc: + if ((*(float *)(param_2 + 0x538) <= *(float *)(param_2 + 0x6b4)) || + (*(float *)(param_2 + 0x538) <= + *(float *)(param_2 + 0x6b8) - *(float *)(param_2 + 0x344) * param_4)) { + iVar4 = 0xd; +LAB_004a6648: + FUN_004a800c(param_2,iVar4); + fVar5 = FUN_0042790c(param_2 + 0x6bc, + (param_4 * *(float *)(param_2 + 0x6b8) * *(float *)(param_2 + 0x5a8)) / + *(float *)(param_2 + 0x34c),param_5); + local_8 = (float)fVar5; + goto switchD_004a63ff_caseD_0; + } + iVar4 = 0xf; + break; + case 0xb: + case 0xd: + if ((*(float *)(param_2 + 0x538) <= *(float *)(param_2 + 0x6b4)) || + (*(float *)(param_2 + 0x538) <= + *(float *)(param_2 + 0x6b8) - *(float *)(param_2 + 0x344) * param_4)) { + iVar4 = 0xc; + goto LAB_004a6648; + } + iVar4 = 0xe; + break; + case 0x10: + case 0x12: + if ((*(float *)(param_2 + 0x6b4) <= *(float *)(param_2 + 0x52c)) || + (*(float *)(param_2 + 0x5b0) * param_4 + *(float *)(param_2 + 0x6b8) <= + *(float *)(param_2 + 0x52c))) { + FUN_004a800c(param_2,0x13); + if ((param_4 * *(float *)(param_2 + 0x6b8) * *(float *)(param_2 + 0x5a8)) / + *(float *)(param_2 + 0x350) <= _DAT_004a6924) { + fVar3 = (-param_4 * *(float *)(param_2 + 0x6b8) * *(float *)(param_2 + 0x5a8)) / + *(float *)(param_2 + 0x350); + } + else { + fVar3 = (param_4 * *(float *)(param_2 + 0x6b8) * *(float *)(param_2 + 0x5a8)) / + *(float *)(param_2 + 0x350); + } + fVar5 = FUN_0042790c(param_2 + 0x6bc,fVar3,param_5); + local_8 = (float)fVar5; + goto switchD_004a63ff_caseD_0; + } + iVar4 = 0x15; + break; + case 0x11: + case 0x13: + if ((*(float *)(param_2 + 0x6b4) <= *(float *)(param_2 + 0x52c)) || + (*(float *)(param_2 + 0x5b0) * param_4 + *(float *)(param_2 + 0x6b8) <= + *(float *)(param_2 + 0x52c))) { + FUN_004a800c(param_2,0x12); + if ((param_4 * *(float *)(param_2 + 0x6b8) * *(float *)(param_2 + 0x5a8)) / + *(float *)(param_2 + 0x350) <= _DAT_004a6924) { + fVar3 = (-param_4 * *(float *)(param_2 + 0x6b8) * *(float *)(param_2 + 0x5a8)) / + *(float *)(param_2 + 0x350); + } + else { + fVar3 = (param_4 * *(float *)(param_2 + 0x6b8) * *(float *)(param_2 + 0x5a8)) / + *(float *)(param_2 + 0x350); + } + fVar5 = FUN_0042790c(param_2 + 0x6bc,fVar3,param_5); + local_8 = (float)fVar5; + goto switchD_004a63ff_caseD_0; + } + iVar4 = 0x14; + break; + case 0x16: + case 0x18: + if ((*(float *)(param_2 + 0x53c) <= *(float *)(param_2 + 0x6b4)) || + (*(float *)(param_2 + 0x53c) <= + *(float *)(param_2 + 0x6b8) - *(float *)(param_2 + 0x344) * param_4)) { + FUN_004a800c(param_2,0x18); + fVar5 = FUN_0042790c(param_2 + 0x6bc, + (param_4 * *(float *)(param_2 + 0x6b8) * *(float *)(param_2 + 0x5a8)) / + *(float *)(param_2 + 0x544),param_5); + local_8 = (float)fVar5; + goto switchD_004a63ff_caseD_0; + } + iVar4 = 0x1a; + break; + case 0x17: + case 0x19: + if ((*(float *)(param_2 + 0x540) <= *(float *)(param_2 + 0x6b4)) || + (*(float *)(param_2 + 0x540) <= + *(float *)(param_2 + 0x6b8) - *(float *)(param_2 + 0x344) * param_4)) { + FUN_004a800c(param_2,0x19); + fVar5 = FUN_0042790c(param_2 + 0x6bc, + (param_4 * *(float *)(param_2 + 0x6b8) * *(float *)(param_2 + 0x5a8)) / + *(float *)(param_2 + 0x548),param_5); + local_8 = (float)fVar5; + goto switchD_004a63ff_caseD_0; + } + iVar4 = 0x1b; + break; + case 0x20: + FUN_0041bbd8(param_2 + 0x714,0); + goto switchD_004a63ff_caseD_0; + } + FUN_004a800c(param_2,iVar4); + fVar5 = FUN_0042790c(param_2 + 0x6bc,param_4 * *(float *)(param_2 + 0x5a8),param_5); + local_8 = (float)fVar5; +switchD_004a63ff_caseD_0: + return (float10)local_8; +} + + + +/* @004a6928 file=? name=FUN_004a6928 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 __cdecl FUN_004a6928(int param_1,undefined4 param_2,float param_3) + +{ + float fVar1; + int iVar2; + float10 fVar3; + float local_8; + + local_8 = 0.0; + if (((*(int *)(param_1 + 0x40) == 3) || (*(int *)(param_1 + 0x40) == 4)) && + (*(int *)(param_1 + 0x580) != 0)) { + fVar3 = FUN_004a7970(param_1,0,param_3); + local_8 = (float)fVar3; + goto LAB_004a6d82; + } + iVar2 = **(int **)(param_1 + 0x128); + switch(*(undefined4 *)(param_1 + 0x3b0)) { + case 2: + FUN_0041bbd8(param_1 + 0x39c,1); + break; + case 3: + case 8: + case 9: + case 0x14: + case 0x15: + case 0x1c: + case 0x1d: + case 0x1e: + case 0x1f: + FUN_0041bbd8(param_1 + 0x39c,0); + break; + case 4: + FUN_0041bbd8(param_1 + 0x39c,0); + break; + case 5: + case 6: + case 0xe: + if ((*(float *)(param_1 + 0x530) <= *(float *)(iVar2 + 0x128)) || + (*(float *)(param_1 + 0x530) <= + *(float *)(param_1 + 0x348) - *(float *)(param_1 + 0x344) * param_3)) { + if ((*(float *)(iVar2 + 0x128) <= *(float *)(param_1 + 0x534)) || + (*(float *)(param_1 + 0x344) * param_3 + *(float *)(param_1 + 0x348) <= + *(float *)(param_1 + 0x534))) { + iVar2 = 7; +LAB_004a6a6f: + FUN_004a7fc4(param_1,iVar2); + fVar3 = FUN_0042790c(param_1 + 0x65c, + (param_3 * *(float *)(param_1 + 0x348) * *(float *)(param_1 + 0x5a8)) / + *(float *)(param_1 + 0x534),1); + local_8 = (float)fVar3; + break; + } + iVar2 = 0xb; + } + else { + iVar2 = 9; + } + goto LAB_004a6a06; + case 7: + case 0xf: + if ((*(float *)(param_1 + 0x530) <= *(float *)(iVar2 + 0x128)) || + (*(float *)(param_1 + 0x530) <= + *(float *)(param_1 + 0x348) - *(float *)(param_1 + 0x344) * param_3)) { + if ((*(float *)(iVar2 + 0x128) <= *(float *)(param_1 + 0x534)) || + (*(float *)(param_1 + 0x344) * param_3 + *(float *)(param_1 + 0x348) <= + *(float *)(param_1 + 0x534))) { + iVar2 = 6; + goto LAB_004a6a6f; + } + iVar2 = 10; + } + else { + iVar2 = 8; + } + goto LAB_004a6a06; + case 10: + case 0xc: + if ((*(float *)(iVar2 + 0x128) < *(float *)(param_1 + 0x538)) && + (*(float *)(param_1 + 0x348) - *(float *)(param_1 + 0x344) * param_3 < + *(float *)(param_1 + 0x538))) { + iVar2 = 0xf; + goto LAB_004a6a06; + } + iVar2 = 0xd; +LAB_004a6b9d: + FUN_004a7fc4(param_1,iVar2); + fVar3 = FUN_0042790c(param_1 + 0x65c, + (param_3 * *(float *)(param_1 + 0x348) * *(float *)(param_1 + 0x5a8)) / + *(float *)(param_1 + 0x34c),1); + local_8 = (float)fVar3; + break; + case 0xb: + case 0xd: + if ((*(float *)(param_1 + 0x538) <= *(float *)(iVar2 + 0x128)) || + (*(float *)(param_1 + 0x538) <= + *(float *)(param_1 + 0x348) - *(float *)(param_1 + 0x344) * param_3)) { + iVar2 = 0xc; + goto LAB_004a6b9d; + } + iVar2 = 0xe; +LAB_004a6a06: + FUN_004a7fc4(param_1,iVar2); + fVar3 = FUN_0042790c(param_1 + 0x65c,param_3 * *(float *)(param_1 + 0x5a8),1); + local_8 = (float)fVar3; + break; + case 0x10: + case 0x12: + if ((*(float *)(param_1 + 0x52c) < *(float *)(iVar2 + 0x128)) && + (*(float *)(param_1 + 0x52c) < + *(float *)(param_1 + 0x5b0) * param_3 + *(float *)(param_1 + 0x348))) { + iVar2 = 0x15; + goto LAB_004a6a06; + } + FUN_004a7fc4(param_1,0x13); + if ((param_3 * *(float *)(param_1 + 0x348) * *(float *)(param_1 + 0x5a8)) / + *(float *)(param_1 + 0x350) <= _DAT_004a6d88) { + fVar1 = (-param_3 * *(float *)(param_1 + 0x348) * *(float *)(param_1 + 0x5a8)) / + *(float *)(param_1 + 0x350); + } + else { + fVar1 = (param_3 * *(float *)(param_1 + 0x348) * *(float *)(param_1 + 0x5a8)) / + *(float *)(param_1 + 0x350); + } + fVar3 = FUN_0042790c(param_1 + 0x65c,fVar1,1); + local_8 = (float)fVar3; + break; + case 0x11: + case 0x13: + if ((*(float *)(param_1 + 0x52c) < *(float *)(iVar2 + 0x128)) && + (*(float *)(param_1 + 0x52c) < + *(float *)(param_1 + 0x5b0) * param_3 + *(float *)(param_1 + 0x348))) { + iVar2 = 0x14; + goto LAB_004a6a06; + } + FUN_004a7fc4(param_1,0x12); + if ((param_3 * *(float *)(param_1 + 0x348) * *(float *)(param_1 + 0x5a8)) / + *(float *)(param_1 + 0x350) <= _DAT_004a6d88) { + fVar1 = (-param_3 * *(float *)(param_1 + 0x348) * *(float *)(param_1 + 0x5a8)) / + *(float *)(param_1 + 0x350); + } + else { + fVar1 = (param_3 * *(float *)(param_1 + 0x348) * *(float *)(param_1 + 0x5a8)) / + *(float *)(param_1 + 0x350); + } + fVar3 = FUN_0042790c(param_1 + 0x65c,fVar1,1); + local_8 = (float)fVar3; + break; + case 0x20: + FUN_0041bbd8(param_1 + 0x39c,0); + } +LAB_004a6d82: + return (float10)local_8; +} + + + +/* @004a6d8c file=? name=FUN_004a6d8c */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 __cdecl FUN_004a6d8c(int param_1,undefined4 param_2,float param_3,int param_4) + +{ + float fVar1; + int iVar2; + float10 fVar3; + float local_8; + + local_8 = 0.0; + if (((*(int *)(param_1 + 0x40) == 3) || (*(int *)(param_1 + 0x40) == 4)) && + (*(int *)(param_1 + 0x580) != 0)) { + fVar3 = FUN_004a6344(param_4,param_1,0,param_3,param_4); + local_8 = (float)fVar3; + goto LAB_004a71ec; + } + switch(*(undefined4 *)(param_1 + 0x728)) { + case 2: + FUN_0041bbd8(param_1 + 0x714,1); + break; + case 3: + case 8: + case 9: + case 0x14: + case 0x15: + case 0x1c: + case 0x1d: + case 0x1e: + case 0x1f: + FUN_0041bbd8(param_1 + 0x714,0); + break; + case 4: + FUN_0041bbd8(param_1 + 0x714,0); + break; + case 5: + case 6: + case 0xe: + if ((*(float *)(param_1 + 0x530) <= *(float *)(param_1 + 0x6b4)) || + (*(float *)(param_1 + 0x530) <= + *(float *)(param_1 + 0x6b8) - *(float *)(param_1 + 0x344) * param_3)) { + if ((*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x534)) || + (*(float *)(param_1 + 0x344) * param_3 + *(float *)(param_1 + 0x6b8) <= + *(float *)(param_1 + 0x534))) { + iVar2 = 7; +LAB_004a6ed1: + FUN_004a800c(param_1,iVar2); + fVar3 = FUN_0042790c(param_1 + 0x6bc, + (param_3 * *(float *)(param_1 + 0x6b8) * *(float *)(param_1 + 0x5a8)) / + *(float *)(param_1 + 0x534),param_4); + local_8 = (float)fVar3; + break; + } + iVar2 = 0xb; + } + else { + iVar2 = 9; + } + goto LAB_004a6e66; + case 7: + case 0xf: + if ((*(float *)(param_1 + 0x530) <= *(float *)(param_1 + 0x6b4)) || + (*(float *)(param_1 + 0x530) <= + *(float *)(param_1 + 0x6b8) - *(float *)(param_1 + 0x344) * param_3)) { + if ((*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x534)) || + (*(float *)(param_1 + 0x344) * param_3 + *(float *)(param_1 + 0x6b8) <= + *(float *)(param_1 + 0x534))) { + iVar2 = 6; + goto LAB_004a6ed1; + } + iVar2 = 10; + } + else { + iVar2 = 8; + } + goto LAB_004a6e66; + case 10: + case 0xc: + if ((*(float *)(param_1 + 0x6b4) < *(float *)(param_1 + 0x538)) && + (*(float *)(param_1 + 0x6b8) - *(float *)(param_1 + 0x344) * param_3 < + *(float *)(param_1 + 0x538))) { + iVar2 = 0xf; + goto LAB_004a6e66; + } + iVar2 = 0xd; +LAB_004a7001: + FUN_004a800c(param_1,iVar2); + fVar3 = FUN_0042790c(param_1 + 0x6bc, + (param_3 * *(float *)(param_1 + 0x6b8) * *(float *)(param_1 + 0x5a8)) / + *(float *)(param_1 + 0x34c),param_4); + local_8 = (float)fVar3; + break; + case 0xb: + case 0xd: + if ((*(float *)(param_1 + 0x538) <= *(float *)(param_1 + 0x6b4)) || + (*(float *)(param_1 + 0x538) <= + *(float *)(param_1 + 0x6b8) - *(float *)(param_1 + 0x344) * param_3)) { + iVar2 = 0xc; + goto LAB_004a7001; + } + iVar2 = 0xe; +LAB_004a6e66: + FUN_004a800c(param_1,iVar2); + fVar3 = FUN_0042790c(param_1 + 0x6bc,param_3 * *(float *)(param_1 + 0x5a8),param_4); + local_8 = (float)fVar3; + break; + case 0x10: + case 0x12: + if ((*(float *)(param_1 + 0x52c) < *(float *)(param_1 + 0x6b4)) && + (*(float *)(param_1 + 0x52c) < + *(float *)(param_1 + 0x5b0) * param_3 + *(float *)(param_1 + 0x6b8))) { + iVar2 = 0x15; + goto LAB_004a6e66; + } + FUN_004a800c(param_1,0x13); + if ((param_3 * *(float *)(param_1 + 0x6b8) * *(float *)(param_1 + 0x5a8)) / + *(float *)(param_1 + 0x350) <= _DAT_004a71f0) { + fVar1 = (-param_3 * *(float *)(param_1 + 0x6b8) * *(float *)(param_1 + 0x5a8)) / + *(float *)(param_1 + 0x350); + } + else { + fVar1 = (param_3 * *(float *)(param_1 + 0x6b8) * *(float *)(param_1 + 0x5a8)) / + *(float *)(param_1 + 0x350); + } + fVar3 = FUN_0042790c(param_1 + 0x6bc,fVar1,param_4); + local_8 = (float)fVar3; + break; + case 0x11: + case 0x13: + if ((*(float *)(param_1 + 0x52c) < *(float *)(param_1 + 0x6b4)) && + (*(float *)(param_1 + 0x52c) < + *(float *)(param_1 + 0x5b0) * param_3 + *(float *)(param_1 + 0x6b8))) { + iVar2 = 0x14; + goto LAB_004a6e66; + } + FUN_004a800c(param_1,0x12); + if ((param_3 * *(float *)(param_1 + 0x6b8) * *(float *)(param_1 + 0x5a8)) / + *(float *)(param_1 + 0x350) <= _DAT_004a71f0) { + fVar1 = (-param_3 * *(float *)(param_1 + 0x6b8) * *(float *)(param_1 + 0x5a8)) / + *(float *)(param_1 + 0x350); + } + else { + fVar1 = (param_3 * *(float *)(param_1 + 0x6b8) * *(float *)(param_1 + 0x5a8)) / + *(float *)(param_1 + 0x350); + } + fVar3 = FUN_0042790c(param_1 + 0x6bc,fVar1,param_4); + local_8 = (float)fVar3; + break; + case 0x20: + FUN_0041bbd8(param_1 + 0x714,0); + } +LAB_004a71ec: + return (float10)local_8; +} + + + +/* @004a71f4 file=bt/mech2.cpp name=FUN_004a71f4 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 __cdecl FUN_004a71f4(int param_1,float param_2) + +{ + undefined4 uVar1; + int iVar2; + int iVar3; + int iVar4; + float fVar5; + float10 fVar6; + float local_c; + float local_8; + + iVar2 = *(int *)(param_1 + 0x40); + iVar3 = **(int **)(param_1 + 0x128); + iVar4 = *(int *)(param_1 + 0x3b0); + if (((iVar4 - 6U < 2) || (iVar4 - 0xcU < 2)) || (iVar4 - 0x12U < 2)) { + if (iVar2 == 3) { + if (*(float *)(iVar3 + 0x128) <= *(float *)(param_1 + 0x53c)) { + uVar1 = *(undefined4 *)(iVar3 + 0x128); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x53c); + } + *(undefined4 *)(iVar3 + 0x128) = uVar1; + } + else { + if (*(float *)(iVar3 + 0x128) <= *(float *)(param_1 + 0x540)) { + uVar1 = *(undefined4 *)(iVar3 + 0x128); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x540); + } + *(undefined4 *)(iVar3 + 0x128) = uVar1; + } + fVar5 = _DAT_004a796c; + if (_DAT_004a796c <= *(float *)(iVar3 + 0x128)) { + fVar5 = *(float *)(iVar3 + 0x128); + } + *(float *)(iVar3 + 0x128) = fVar5; + } + switch(*(undefined4 *)(param_1 + 0x3b0)) { + case 0: + if (*(float *)(iVar3 + 0x128) <= *(float *)(param_1 + 0x530)) { + local_8 = 0.0; + break; + } + FUN_004a7fc4(param_1,5); + case 2: + case 3: + case 5: + case 8: + case 9: + case 10: + case 0xb: + case 0xe: + case 0xf: + case 0x10: + case 0x11: + case 0x14: + case 0x15: + case 0x16: + case 0x17: + case 0x1a: + case 0x1b: + case 0x20: +switchD_004a72b4_caseD_2: + fVar6 = FUN_0042790c(param_1 + 0x65c, + param_2 * *(float *)(param_1 + 0x5a8) * *(float *)(param_1 + 0x5ac),1); + local_8 = (float)fVar6; + *(float *)(param_1 + 0x348) = local_8 / param_2; + break; + case 1: + local_8 = 0.0; + break; + case 4: + if (*(float *)(param_1 + 0x530) < *(float *)(iVar3 + 0x128)) { + FUN_0041bbd8(param_1 + 0x39c,0); + FUN_004a4c54(param_1,8); + break; + } + goto switchD_004a72b4_caseD_2; + case 6: + case 7: + if (*(float *)(iVar3 + 0x128) <= *(float *)(param_1 + 0x348)) { + if (*(float *)(iVar3 + 0x128) < *(float *)(param_1 + 0x348)) { + *(float *)(param_1 + 0x348) = + *(float *)(param_1 + 0x348) - *(float *)(param_1 + 0x344) * param_2; + if (*(float *)(iVar3 + 0x128) <= *(float *)(param_1 + 0x348)) { + uVar1 = *(undefined4 *)(param_1 + 0x348); + } + else { + uVar1 = *(undefined4 *)(iVar3 + 0x128); + } + *(undefined4 *)(param_1 + 0x348) = uVar1; + if (*(float *)(param_1 + 0x530) <= *(float *)(param_1 + 0x348)) { + uVar1 = *(undefined4 *)(param_1 + 0x348); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x530); + } + *(undefined4 *)(param_1 + 0x348) = uVar1; + } + } + else { + *(float *)(param_1 + 0x348) = + *(float *)(param_1 + 0x344) * param_2 + *(float *)(param_1 + 0x348); + if (*(float *)(param_1 + 0x348) <= *(float *)(iVar3 + 0x128)) { + uVar1 = *(undefined4 *)(param_1 + 0x348); + } + else { + uVar1 = *(undefined4 *)(iVar3 + 0x128); + } + *(undefined4 *)(param_1 + 0x348) = uVar1; + if (*(float *)(param_1 + 0x348) <= *(float *)(param_1 + 0x534)) { + uVar1 = *(undefined4 *)(param_1 + 0x348); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x534); + } + *(undefined4 *)(param_1 + 0x348) = uVar1; + } + fVar6 = FUN_0042790c(param_1 + 0x65c, + param_2 * (*(float *)(param_1 + 0x348) / *(float *)(param_1 + 0x534)) * + *(float *)(param_1 + 0x5a8),1); + local_8 = (float)fVar6; + break; + case 0xc: + case 0xd: + if (*(float *)(iVar3 + 0x128) <= *(float *)(param_1 + 0x348)) { + if (*(float *)(iVar3 + 0x128) < *(float *)(param_1 + 0x348)) { + *(float *)(param_1 + 0x348) = + *(float *)(param_1 + 0x348) - *(float *)(param_1 + 0x344) * param_2; + if (*(float *)(iVar3 + 0x128) <= *(float *)(param_1 + 0x348)) { + uVar1 = *(undefined4 *)(param_1 + 0x348); + } + else { + uVar1 = *(undefined4 *)(iVar3 + 0x128); + } + *(undefined4 *)(param_1 + 0x348) = uVar1; + if (*(float *)(param_1 + 0x538) <= *(float *)(param_1 + 0x348)) { + uVar1 = *(undefined4 *)(param_1 + 0x348); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x538); + } + *(undefined4 *)(param_1 + 0x348) = uVar1; + } + } + else { + *(float *)(param_1 + 0x348) = + *(float *)(param_1 + 0x344) * param_2 + *(float *)(param_1 + 0x348); + if (*(float *)(param_1 + 0x348) <= *(float *)(iVar3 + 0x128)) { + uVar1 = *(undefined4 *)(param_1 + 0x348); + } + else { + uVar1 = *(undefined4 *)(iVar3 + 0x128); + } + *(undefined4 *)(param_1 + 0x348) = uVar1; + if (*(float *)(param_1 + 0x348) <= *(float *)(param_1 + 0x7a0)) { + uVar1 = *(undefined4 *)(param_1 + 0x348); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x7a0); + } + *(undefined4 *)(param_1 + 0x348) = uVar1; + } + fVar6 = FUN_0042790c(param_1 + 0x65c, + param_2 * (*(float *)(param_1 + 0x348) / *(float *)(param_1 + 0x34c)) * + *(float *)(param_1 + 0x5a8),1); + local_8 = (float)fVar6; + break; + case 0x12: + case 0x13: + if (*(float *)(iVar3 + 0x128) <= *(float *)(param_1 + 0x348)) { + if (*(float *)(iVar3 + 0x128) < *(float *)(param_1 + 0x348)) { + *(float *)(param_1 + 0x348) = + *(float *)(param_1 + 0x348) - *(float *)(param_1 + 0x5b0) * param_2; + if (*(float *)(iVar3 + 0x128) <= *(float *)(param_1 + 0x348)) { + uVar1 = *(undefined4 *)(param_1 + 0x348); + } + else { + uVar1 = *(undefined4 *)(iVar3 + 0x128); + } + *(undefined4 *)(param_1 + 0x348) = uVar1; + if (*(float *)(param_1 + 0x350) <= *(float *)(param_1 + 0x348)) { + uVar1 = *(undefined4 *)(param_1 + 0x348); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x350); + } + *(undefined4 *)(param_1 + 0x348) = uVar1; + } + } + else { + *(float *)(param_1 + 0x348) = + *(float *)(param_1 + 0x5b0) * param_2 + *(float *)(param_1 + 0x348); + if (*(float *)(param_1 + 0x348) <= *(float *)(iVar3 + 0x128)) { + uVar1 = *(undefined4 *)(param_1 + 0x348); + } + else { + uVar1 = *(undefined4 *)(iVar3 + 0x128); + } + *(undefined4 *)(param_1 + 0x348) = uVar1; + if (*(float *)(param_1 + 0x348) <= *(float *)(param_1 + 0x52c)) { + uVar1 = *(undefined4 *)(param_1 + 0x348); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x52c); + } + *(undefined4 *)(param_1 + 0x348) = uVar1; + } + fVar5 = *(float *)(param_1 + 0x348) / *(float *)(param_1 + 0x350); + if (fVar5 <= _DAT_004a796c) { + fVar5 = -fVar5; + } + fVar6 = FUN_0042790c(param_1 + 0x65c,fVar5 * param_2 * *(float *)(param_1 + 0x5a8),1); + local_8 = (float)fVar6; + break; + case 0x18: + case 0x19: + if (iVar2 == 3) { + if (*(float *)(iVar3 + 0x128) <= *(float *)(param_1 + 0x348)) { + if (*(float *)(iVar3 + 0x128) < *(float *)(param_1 + 0x348)) { + *(float *)(param_1 + 0x348) = + *(float *)(param_1 + 0x348) - *(float *)(param_1 + 0x344) * param_2; + if (*(float *)(iVar3 + 0x128) <= *(float *)(param_1 + 0x348)) { + uVar1 = *(undefined4 *)(param_1 + 0x348); + } + else { + uVar1 = *(undefined4 *)(iVar3 + 0x128); + } + *(undefined4 *)(param_1 + 0x348) = uVar1; + if (*(float *)(param_1 + 0x53c) <= *(float *)(param_1 + 0x348)) { + uVar1 = *(undefined4 *)(param_1 + 0x348); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x53c); + } + *(undefined4 *)(param_1 + 0x348) = uVar1; + } + } + else { + *(float *)(param_1 + 0x348) = + *(float *)(param_1 + 0x344) * param_2 + *(float *)(param_1 + 0x348); + if (*(float *)(param_1 + 0x348) <= *(float *)(iVar3 + 0x128)) { + uVar1 = *(undefined4 *)(param_1 + 0x348); + } + else { + uVar1 = *(undefined4 *)(iVar3 + 0x128); + } + *(undefined4 *)(param_1 + 0x348) = uVar1; + if (*(float *)(param_1 + 0x348) <= *(float *)(param_1 + 0x544)) { + uVar1 = *(undefined4 *)(param_1 + 0x348); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x544); + } + *(undefined4 *)(param_1 + 0x348) = uVar1; + } + local_c = *(float *)(param_1 + 0x348) / *(float *)(param_1 + 0x544); + } + else { + if (*(float *)(iVar3 + 0x128) <= *(float *)(param_1 + 0x348)) { + if (*(float *)(iVar3 + 0x128) < *(float *)(param_1 + 0x348)) { + *(float *)(param_1 + 0x348) = + *(float *)(param_1 + 0x348) - *(float *)(param_1 + 0x344) * param_2; + if (*(float *)(iVar3 + 0x128) <= *(float *)(param_1 + 0x348)) { + uVar1 = *(undefined4 *)(param_1 + 0x348); + } + else { + uVar1 = *(undefined4 *)(iVar3 + 0x128); + } + *(undefined4 *)(param_1 + 0x348) = uVar1; + if (*(float *)(param_1 + 0x540) <= *(float *)(param_1 + 0x348)) { + uVar1 = *(undefined4 *)(param_1 + 0x348); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x540); + } + *(undefined4 *)(param_1 + 0x348) = uVar1; + } + } + else { + *(float *)(param_1 + 0x348) = + *(float *)(param_1 + 0x344) * param_2 + *(float *)(param_1 + 0x348); + if (*(float *)(param_1 + 0x348) <= *(float *)(iVar3 + 0x128)) { + uVar1 = *(undefined4 *)(param_1 + 0x348); + } + else { + uVar1 = *(undefined4 *)(iVar3 + 0x128); + } + *(undefined4 *)(param_1 + 0x348) = uVar1; + if (*(float *)(param_1 + 0x348) <= *(float *)(param_1 + 0x548)) { + uVar1 = *(undefined4 *)(param_1 + 0x348); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x548); + } + *(undefined4 *)(param_1 + 0x348) = uVar1; + } + local_c = *(float *)(param_1 + 0x348) / *(float *)(param_1 + 0x548); + } + fVar6 = FUN_0042790c(param_1 + 0x65c,param_2 * local_c * *(float *)(param_1 + 0x5a8),1); + local_8 = (float)fVar6; + break; + default: + FUN_004dbb24(&DAT_00524e20,s_StandingAnimation_0050cfe8 + *(int *)(param_1 + 0x3b0) * 0x3c, + (char *)0x0); + FUN_004d9c38(&DAT_00524e20); + FUN_0040385c(s_Unsupported_mech_animation__0050d89f,s_d__tesla_bt_bt_MECH2_CPP_0050d8bc,0x672); + } + return (float10)local_8; +} + + + +/* @004a7970 file=? name=FUN_004a7970 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 __cdecl FUN_004a7970(int param_1,undefined4 param_2,float param_3) + +{ + undefined4 uVar1; + int iVar2; + int iVar3; + float fVar4; + int unaff_ESI; + int iVar5; + float10 fVar6; + float local_8; + + local_8 = 0.0; + iVar5 = *(int *)(param_1 + 0x3b0); + iVar2 = *(int *)(param_1 + 0x40); + iVar3 = **(int **)(param_1 + 0x128); + if (((iVar5 - 6U < 2) || (iVar5 - 0xcU < 2)) || (iVar5 - 0x12U < 2)) { + if (iVar2 == 3) { + if (*(float *)(iVar3 + 0x128) <= *(float *)(param_1 + 0x53c)) { + uVar1 = *(undefined4 *)(iVar3 + 0x128); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x53c); + } + *(undefined4 *)(iVar3 + 0x128) = uVar1; + } + else { + if (*(float *)(iVar3 + 0x128) <= *(float *)(param_1 + 0x540)) { + uVar1 = *(undefined4 *)(iVar3 + 0x128); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x540); + } + *(undefined4 *)(iVar3 + 0x128) = uVar1; + } + fVar4 = _DAT_004a7f4c; + if (_DAT_004a7f4c <= *(float *)(iVar3 + 0x128)) { + fVar4 = *(float *)(iVar3 + 0x128); + } + *(float *)(iVar3 + 0x128) = fVar4; + } + switch(*(undefined4 *)(param_1 + 0x3b0)) { + default: + goto switchD_004a7a34_caseD_0; + case 2: + FUN_0041bbd8(param_1 + 0x39c,1); + goto switchD_004a7a34_caseD_0; + case 3: + case 8: + case 9: + case 0x14: + case 0x15: + case 0x1a: + case 0x1b: + FUN_0041bbd8(param_1 + 0x39c,0); + goto switchD_004a7a34_caseD_0; + case 4: + FUN_0041bbd8(param_1 + 0x39c,0); + goto switchD_004a7a34_caseD_0; + case 5: + case 6: + case 0xe: + if ((*(float *)(param_1 + 0x530) <= *(float *)(iVar3 + 0x128)) || + (*(float *)(param_1 + 0x530) <= + *(float *)(param_1 + 0x348) - *(float *)(param_1 + 0x344) * param_3)) { + if ((*(float *)(iVar3 + 0x128) <= *(float *)(param_1 + 0x534)) || + (*(float *)(param_1 + 0x344) * param_3 + *(float *)(param_1 + 0x348) <= + *(float *)(param_1 + 0x534))) { + if (iVar2 == 4) { + unaff_ESI = 7; + } + if (iVar2 == 3) { + unaff_ESI = 0x16; + } +LAB_004a7b38: + FUN_004a7fc4(param_1,unaff_ESI); + fVar6 = FUN_0042790c(param_1 + 0x65c, + (param_3 * *(float *)(param_1 + 0x348) * *(float *)(param_1 + 0x5a8)) / + *(float *)(param_1 + 0x534),1); + local_8 = (float)fVar6; + goto switchD_004a7a34_caseD_0; + } + iVar5 = 0xb; + } + else { + iVar5 = 9; + } + break; + case 7: + case 0xf: + if ((*(float *)(param_1 + 0x530) <= *(float *)(iVar3 + 0x128)) || + (*(float *)(param_1 + 0x530) <= + *(float *)(param_1 + 0x348) - *(float *)(param_1 + 0x344) * param_3)) { + if ((*(float *)(iVar3 + 0x128) <= *(float *)(param_1 + 0x534)) || + (*(float *)(param_1 + 0x344) * param_3 + *(float *)(param_1 + 0x348) <= + *(float *)(param_1 + 0x534))) { + if (iVar2 == 3) { + unaff_ESI = 6; + } + if (iVar2 == 4) { + unaff_ESI = 0x17; + } + goto LAB_004a7b38; + } + iVar5 = 10; + } + else { + iVar5 = 8; + } + break; + case 10: + case 0xc: + if ((*(float *)(param_1 + 0x538) <= *(float *)(iVar3 + 0x128)) || + (*(float *)(param_1 + 0x538) <= + *(float *)(param_1 + 0x348) - *(float *)(param_1 + 0x344) * param_3)) { + iVar5 = 0xd; +LAB_004a7c79: + FUN_004a7fc4(param_1,iVar5); + fVar6 = FUN_0042790c(param_1 + 0x65c, + (param_3 * *(float *)(param_1 + 0x348) * *(float *)(param_1 + 0x5a8)) / + *(float *)(param_1 + 0x34c),1); + local_8 = (float)fVar6; + goto switchD_004a7a34_caseD_0; + } + iVar5 = 0xf; + break; + case 0xb: + case 0xd: + if ((*(float *)(param_1 + 0x538) <= *(float *)(iVar3 + 0x128)) || + (*(float *)(param_1 + 0x538) <= + *(float *)(param_1 + 0x348) - *(float *)(param_1 + 0x344) * param_3)) { + iVar5 = 0xc; + goto LAB_004a7c79; + } + iVar5 = 0xe; + break; + case 0x10: + case 0x12: + if ((*(float *)(iVar3 + 0x128) <= *(float *)(param_1 + 0x52c)) || + (*(float *)(param_1 + 0x5b0) * param_3 + *(float *)(param_1 + 0x348) <= + *(float *)(param_1 + 0x52c))) { + FUN_004a7fc4(param_1,0x13); + if ((param_3 * *(float *)(param_1 + 0x348) * *(float *)(param_1 + 0x5a8)) / + *(float *)(param_1 + 0x350) <= _DAT_004a7f4c) { + fVar4 = (-param_3 * *(float *)(param_1 + 0x348) * *(float *)(param_1 + 0x5a8)) / + *(float *)(param_1 + 0x350); + } + else { + fVar4 = (param_3 * *(float *)(param_1 + 0x348) * *(float *)(param_1 + 0x5a8)) / + *(float *)(param_1 + 0x350); + } + fVar6 = FUN_0042790c(param_1 + 0x65c,fVar4,1); + local_8 = (float)fVar6; + goto switchD_004a7a34_caseD_0; + } + iVar5 = 0x15; + break; + case 0x11: + case 0x13: + if ((*(float *)(iVar3 + 0x128) <= *(float *)(param_1 + 0x52c)) || + (*(float *)(param_1 + 0x5b0) * param_3 + *(float *)(param_1 + 0x348) <= + *(float *)(param_1 + 0x52c))) { + FUN_004a7fc4(param_1,0x12); + if ((param_3 * *(float *)(param_1 + 0x348) * *(float *)(param_1 + 0x5a8)) / + *(float *)(param_1 + 0x350) <= _DAT_004a7f4c) { + fVar4 = (-param_3 * *(float *)(param_1 + 0x348) * *(float *)(param_1 + 0x5a8)) / + *(float *)(param_1 + 0x350); + } + else { + fVar4 = (param_3 * *(float *)(param_1 + 0x348) * *(float *)(param_1 + 0x5a8)) / + *(float *)(param_1 + 0x350); + } + fVar6 = FUN_0042790c(param_1 + 0x65c,fVar4,1); + local_8 = (float)fVar6; + goto switchD_004a7a34_caseD_0; + } + iVar5 = 0x14; + break; + case 0x16: + case 0x18: + if ((*(float *)(param_1 + 0x53c) <= *(float *)(iVar3 + 0x128)) || + (*(float *)(param_1 + 0x53c) <= + *(float *)(param_1 + 0x348) - *(float *)(param_1 + 0x344) * param_3)) { + FUN_004a7fc4(param_1,0x18); + fVar6 = FUN_0042790c(param_1 + 0x65c, + (param_3 * *(float *)(param_1 + 0x348) * *(float *)(param_1 + 0x5a8)) / + *(float *)(param_1 + 0x544),1); + local_8 = (float)fVar6; + goto switchD_004a7a34_caseD_0; + } + iVar5 = 0x1a; + break; + case 0x17: + case 0x19: + if ((*(float *)(param_1 + 0x540) <= *(float *)(iVar3 + 0x128)) || + (*(float *)(param_1 + 0x540) <= + *(float *)(param_1 + 0x348) - *(float *)(param_1 + 0x344) * param_3)) { + FUN_004a7fc4(param_1,0x19); + fVar6 = FUN_0042790c(param_1 + 0x65c, + (param_3 * *(float *)(param_1 + 0x348) * *(float *)(param_1 + 0x5a8)) / + *(float *)(param_1 + 0x548),1); + local_8 = (float)fVar6; + goto switchD_004a7a34_caseD_0; + } + iVar5 = 0x1b; + break; + case 0x20: + FUN_0041bbd8(param_1 + 0x39c,0); + goto switchD_004a7a34_caseD_0; + } + FUN_004a7fc4(param_1,iVar5); + fVar6 = FUN_0042790c(param_1 + 0x65c,param_3 * *(float *)(param_1 + 0x5a8),1); + local_8 = (float)fVar6; +switchD_004a7a34_caseD_0: + return (float10)local_8; +} + + + +/* @004a7f50 file=? name=FUN_004a7f50 */ + +void __cdecl FUN_004a7f50(undefined4 param_1,char *param_2,char *param_3) + +{ + char cVar1; + uint uVar2; + uint uVar3; + char *pcVar4; + char *pcVar5; + char local_10 [3]; + char local_d [9]; + + uVar2 = 0xffffffff; + do { + pcVar4 = param_2; + if (uVar2 == 0) break; + uVar2 = uVar2 - 1; + pcVar4 = param_2 + 1; + cVar1 = *param_2; + param_2 = pcVar4; + } while (cVar1 != '\0'); + uVar2 = ~uVar2; + pcVar4 = pcVar4 + -uVar2; + pcVar5 = local_10; + for (uVar3 = uVar2 >> 2; uVar3 != 0; uVar3 = uVar3 - 1) { + *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4; + pcVar4 = pcVar4 + 4; + pcVar5 = pcVar5 + 4; + } + for (uVar2 = uVar2 & 3; uVar2 != 0; uVar2 = uVar2 - 1) { + *pcVar5 = *pcVar4; + pcVar4 = pcVar4 + 1; + pcVar5 = pcVar5 + 1; + } + uVar2 = 0xffffffff; + do { + pcVar4 = param_3; + if (uVar2 == 0) break; + uVar2 = uVar2 - 1; + pcVar4 = param_3 + 1; + cVar1 = *param_3; + param_3 = pcVar4; + } while (cVar1 != '\0'); + uVar2 = ~uVar2; + pcVar4 = pcVar4 + -uVar2; + pcVar5 = local_10 + 3; + for (uVar3 = uVar2 >> 2; uVar3 != 0; uVar3 = uVar3 - 1) { + *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4; + pcVar4 = pcVar4 + 4; + pcVar5 = pcVar5 + 4; + } + for (uVar2 = uVar2 & 3; uVar2 != 0; uVar2 = uVar2 - 1) { + *pcVar5 = *pcVar4; + pcVar4 = pcVar4 + 1; + pcVar5 = pcVar5 + 1; + } + FUN_00406ff8(*(int *)(DAT_004efc94 + 0x68),local_10,0x10,-1); + return; +} + + + +/* @004a7fc4 file=? name=FUN_004a7fc4 */ + +void __cdecl FUN_004a7fc4(int param_1,int param_2) + +{ + FUN_004277a8(param_1 + 0x65c,*(int *)(param_1 + 0x5cc + param_2 * 4),PTR_FUN_0050d6f0,DAT_0050d6f4 + ,DAT_0050d6f8); + FUN_0041bbd8(param_1 + 0x39c,param_2); + return; +} + + + +/* @004a800c file=? name=FUN_004a800c */ + +void __cdecl FUN_004a800c(int param_1,int param_2) + +{ + FUN_004277a8(param_1 + 0x6bc,*(int *)(param_1 + 0x5cc + param_2 * 4),PTR_FUN_0050d6fc,DAT_0050d700 + ,DAT_0050d704); + FUN_0041bbd8(param_1 + 0x714,param_2); + return; +} + + + +/* @004a8054 file=? name=FUN_004a8054 */ + +void __cdecl FUN_004a8054(int param_1,int param_2,float *param_3,float *param_4) + +{ + int iVar1; + + FUN_004277a8(param_1 + 0x65c,*(int *)(param_1 + 0x5cc + param_2 * 4),PTR_FUN_0050d708,DAT_0050d70c + ,DAT_0050d710); + *param_3 = 0.0; + *param_4 = 0.0; + for (iVar1 = 0; iVar1 < *(int *)(param_1 + 0x670); iVar1 = iVar1 + 1) { + *param_3 = (*(float *)(*(int *)(param_1 + 0x680) + iVar1 * 4) - *param_4) * + *(float *)(*(int *)(param_1 + 0x690) + 8 + iVar1 * 0xc) + *param_3; + *param_4 = *(float *)(*(int *)(param_1 + 0x680) + iVar1 * 4); + } + return; +} + + + +/* @004a80d4 file=? name=FUN_004a80d4 */ + +void __cdecl FUN_004a80d4(int param_1,int param_2) + +{ + char *pcVar1; + char cVar2; + undefined4 *puVar3; + int iVar4; + uint uVar5; + uint uVar6; + char *pcVar7; + char *pcVar8; + char local_20 [3]; + undefined4 local_1d; + float local_14; + float local_10; + float local_c; + float local_8; + + *(undefined4 *)(param_1 + 0x5c4) = 0; + pcVar1 = (char *)(param_2 + 0x40); + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d8d5); + *(undefined4 *)(param_1 + 0x5e0) = *puVar3; + FUN_004277a8(param_1 + 0x65c,*(int *)(param_1 + 0x5e0),PTR_FUN_0050d714,DAT_0050d718,DAT_0050d71c) + ; + *(undefined4 *)(param_1 + 0x530) = + *(undefined4 *)(*(int *)(param_1 + 0x690) + 8 + *(int *)(param_1 + 0x670) * 0xc); + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d8d9); + *(undefined4 *)(param_1 + 0x5e4) = *puVar3; + FUN_004a8054(param_1,6,&local_8,&local_c); + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d8dd); + *(undefined4 *)(param_1 + 0x5e8) = *puVar3; + FUN_004a8054(param_1,7,&local_10,&local_14); + *(float *)(param_1 + 0x534) = (local_8 + local_10) / (local_c + local_14); + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d8e1); + *(undefined4 *)(param_1 + 0x5ec) = *puVar3; + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d8e5); + *(undefined4 *)(param_1 + 0x5f0) = *puVar3; + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d8e9); + *(undefined4 *)(param_1 + 0x5f4) = *puVar3; + FUN_004277a8(param_1 + 0x65c,*(int *)(param_1 + 0x5f4),PTR_FUN_0050d720,DAT_0050d724,DAT_0050d728) + ; + *(undefined4 *)(param_1 + 0x538) = + *(undefined4 *)(*(int *)(param_1 + 0x690) + 8 + *(int *)(param_1 + 0x670) * 0xc); + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d8ed); + *(undefined4 *)(param_1 + 0x5f8) = *puVar3; + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d8f1); + *(undefined4 *)(param_1 + 0x5fc) = *puVar3; + FUN_004a8054(param_1,0xc,&local_8,&local_c); + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d8f5); + *(undefined4 *)(param_1 + 0x600) = *puVar3; + FUN_004a8054(param_1,0xd,&local_10,&local_14); + *(float *)(param_1 + 0x34c) = (local_8 + local_10) / (local_c + local_14); + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d8f9); + *(undefined4 *)(param_1 + 0x604) = *puVar3; + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d8fd); + *(undefined4 *)(param_1 + 0x608) = *puVar3; + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d901); + *(undefined4 *)(param_1 + 0x64c) = *puVar3; + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d905); + *(undefined4 *)(param_1 + 0x60c) = *puVar3; + FUN_004277a8(param_1 + 0x65c,*(int *)(param_1 + 0x60c),PTR_FUN_0050d72c,DAT_0050d730,DAT_0050d734) + ; + *(undefined4 *)(param_1 + 0x52c) = + *(undefined4 *)(*(int *)(param_1 + 0x690) + 8 + *(int *)(param_1 + 0x670) * 0xc); + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d909); + *(undefined4 *)(param_1 + 0x610) = *puVar3; + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d90d); + *(undefined4 *)(param_1 + 0x61c) = *puVar3; + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d911); + *(undefined4 *)(param_1 + 0x620) = *puVar3; + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d915); + *(undefined4 *)(param_1 + 0x614) = *puVar3; + FUN_004a8054(param_1,0x12,&local_8,&local_c); + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d919); + *(undefined4 *)(param_1 + 0x618) = *puVar3; + FUN_004a8054(param_1,0x13,&local_8,&local_c); + uVar5 = 0xffffffff; + *(float *)(param_1 + 0x350) = (local_8 + local_10) / (local_c + local_14); + *(float *)(param_1 + 0x350) = -*(float *)(param_1 + 0x350); + pcVar7 = pcVar1; + do { + pcVar8 = pcVar7; + if (uVar5 == 0) break; + uVar5 = uVar5 - 1; + pcVar8 = pcVar7 + 1; + cVar2 = *pcVar7; + pcVar7 = pcVar8; + } while (cVar2 != '\0'); + uVar5 = ~uVar5; + pcVar7 = pcVar8 + -uVar5; + pcVar8 = local_20; + for (uVar6 = uVar5 >> 2; uVar6 != 0; uVar6 = uVar6 - 1) { + *(undefined4 *)pcVar8 = *(undefined4 *)pcVar7; + pcVar7 = pcVar7 + 4; + pcVar8 = pcVar8 + 4; + } + for (uVar5 = uVar5 & 3; uVar5 != 0; uVar5 = uVar5 - 1) { + *pcVar8 = *pcVar7; + pcVar7 = pcVar7 + 1; + pcVar8 = pcVar8 + 1; + } + local_1d = DAT_0050d91d; + iVar4 = FUN_00406ff8(*(int *)(DAT_004efc94 + 0x68),local_20,0x10,-1); + if (iVar4 != 0) { + *(undefined4 *)(param_1 + 0x580) = 1; + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d921); + *(undefined4 *)(param_1 + 0x624) = *puVar3; + FUN_004277a8(param_1 + 0x65c,*(int *)(param_1 + 0x624),PTR_FUN_0050d738,DAT_0050d73c, + DAT_0050d740); + *(undefined4 *)(param_1 + 0x53c) = + *(undefined4 *)(*(int *)(param_1 + 0x690) + 8 + *(int *)(param_1 + 0x670) * 0xc); + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d925); + *(undefined4 *)(param_1 + 0x628) = *puVar3; + FUN_004277a8(param_1 + 0x65c,*(int *)(param_1 + 0x628),PTR_FUN_0050d744,DAT_0050d748, + DAT_0050d74c); + *(undefined4 *)(param_1 + 0x540) = + *(undefined4 *)(*(int *)(param_1 + 0x690) + 8 + *(int *)(param_1 + 0x670) * 0xc); + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d929); + *(undefined4 *)(param_1 + 0x62c) = *puVar3; + FUN_004a8054(param_1,0x18,&local_8,&local_c); + *(float *)(param_1 + 0x544) = local_8 / local_c; + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d92d); + *(undefined4 *)(param_1 + 0x630) = *puVar3; + FUN_004a8054(param_1,0x19,&local_8,&local_c); + *(float *)(param_1 + 0x548) = local_8 / local_c; + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d931); + *(undefined4 *)(param_1 + 0x634) = *puVar3; + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d935); + *(undefined4 *)(param_1 + 0x638) = *puVar3; + } + *(undefined4 *)(param_1 + 0x584) = 0; + uVar5 = 0xffffffff; + pcVar7 = pcVar1; + do { + pcVar8 = pcVar7; + if (uVar5 == 0) break; + uVar5 = uVar5 - 1; + pcVar8 = pcVar7 + 1; + cVar2 = *pcVar7; + pcVar7 = pcVar8; + } while (cVar2 != '\0'); + uVar5 = ~uVar5; + pcVar7 = pcVar8 + -uVar5; + pcVar8 = local_20; + for (uVar6 = uVar5 >> 2; uVar6 != 0; uVar6 = uVar6 - 1) { + *(undefined4 *)pcVar8 = *(undefined4 *)pcVar7; + pcVar7 = pcVar7 + 4; + pcVar8 = pcVar8 + 4; + } + for (uVar5 = uVar5 & 3; uVar5 != 0; uVar5 = uVar5 - 1) { + *pcVar8 = *pcVar7; + pcVar7 = pcVar7 + 1; + pcVar8 = pcVar8 + 1; + } + local_1d = DAT_0050d939; + iVar4 = FUN_00406ff8(*(int *)(DAT_004efc94 + 0x68),local_20,0x10,-1); + if (iVar4 != 0) { + *(undefined4 *)(param_1 + 0x584) = 1; + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d93d); + *(undefined4 *)(param_1 + 0x5d8) = *puVar3; + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d941); + *(undefined4 *)(param_1 + 0x5d4) = *puVar3; + } + *(undefined4 *)(param_1 + 0x588) = 0; + uVar5 = 0xffffffff; + pcVar7 = pcVar1; + do { + pcVar8 = pcVar7; + if (uVar5 == 0) break; + uVar5 = uVar5 - 1; + pcVar8 = pcVar7 + 1; + cVar2 = *pcVar7; + pcVar7 = pcVar8; + } while (cVar2 != '\0'); + uVar5 = ~uVar5; + pcVar7 = pcVar8 + -uVar5; + pcVar8 = local_20; + for (uVar6 = uVar5 >> 2; uVar6 != 0; uVar6 = uVar6 - 1) { + *(undefined4 *)pcVar8 = *(undefined4 *)pcVar7; + pcVar7 = pcVar7 + 4; + pcVar8 = pcVar8 + 4; + } + for (uVar5 = uVar5 & 3; uVar5 != 0; uVar5 = uVar5 - 1) { + *pcVar8 = *pcVar7; + pcVar7 = pcVar7 + 1; + pcVar8 = pcVar8 + 1; + } + local_1d = DAT_0050d945; + iVar4 = FUN_00406ff8(*(int *)(DAT_004efc94 + 0x68),local_20,0x10,-1); + if (iVar4 != 0) { + *(undefined4 *)(param_1 + 0x588) = 1; + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d949); + *(undefined4 *)(param_1 + 0x5dc) = *puVar3; + } + return; +} + + + +/* @004a86c8 file=? name=FUN_004a86c8 */ + +void __cdecl FUN_004a86c8(int param_1,int param_2) + +{ + char *pcVar1; + char cVar2; + undefined4 *puVar3; + int iVar4; + uint uVar5; + uint uVar6; + char *pcVar7; + char *pcVar8; + char local_20 [3]; + undefined4 local_1d; + undefined1 uStack_19; + float local_14; + float local_10; + float local_c; + float local_8; + + *(undefined4 *)(param_1 + 0x5c4) = 0; + pcVar1 = (char *)(param_2 + 0x40); + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d94d); + *(undefined4 *)(param_1 + 0x5e0) = *puVar3; + FUN_004277a8(param_1 + 0x65c,*(int *)(param_1 + 0x5e0),PTR_FUN_0050d750,DAT_0050d754,DAT_0050d758) + ; + *(undefined4 *)(param_1 + 0x530) = + *(undefined4 *)(*(int *)(param_1 + 0x690) + 8 + *(int *)(param_1 + 0x670) * 0xc); + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d952); + *(undefined4 *)(param_1 + 0x5e4) = *puVar3; + FUN_004a8054(param_1,6,&local_8,&local_c); + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d957); + *(undefined4 *)(param_1 + 0x5e8) = *puVar3; + FUN_004a8054(param_1,7,&local_10,&local_14); + *(float *)(param_1 + 0x534) = (local_8 + local_10) / (local_c + local_14); + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d95c); + *(undefined4 *)(param_1 + 0x5ec) = *puVar3; + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d961); + *(undefined4 *)(param_1 + 0x5f0) = *puVar3; + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d966); + *(undefined4 *)(param_1 + 0x5f4) = *puVar3; + FUN_004277a8(param_1 + 0x65c,*(int *)(param_1 + 0x5f4),PTR_FUN_0050d75c,DAT_0050d760,DAT_0050d764) + ; + *(undefined4 *)(param_1 + 0x538) = + *(undefined4 *)(*(int *)(param_1 + 0x690) + 8 + *(int *)(param_1 + 0x670) * 0xc); + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d96b); + *(undefined4 *)(param_1 + 0x5f8) = *puVar3; + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d970); + *(undefined4 *)(param_1 + 0x5fc) = *puVar3; + FUN_004a8054(param_1,0xc,&local_8,&local_c); + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d975); + *(undefined4 *)(param_1 + 0x600) = *puVar3; + FUN_004a8054(param_1,0xd,&local_10,&local_14); + *(float *)(param_1 + 0x34c) = (local_8 + local_10) / (local_c + local_14); + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d97a); + *(undefined4 *)(param_1 + 0x604) = *puVar3; + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d97f); + *(undefined4 *)(param_1 + 0x608) = *puVar3; + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d984); + *(undefined4 *)(param_1 + 0x64c) = *puVar3; + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d989); + *(undefined4 *)(param_1 + 0x60c) = *puVar3; + FUN_004277a8(param_1 + 0x65c,*(int *)(param_1 + 0x60c),PTR_FUN_0050d768,DAT_0050d76c,DAT_0050d770) + ; + *(undefined4 *)(param_1 + 0x52c) = + *(undefined4 *)(*(int *)(param_1 + 0x690) + 8 + *(int *)(param_1 + 0x670) * 0xc); + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d98e); + *(undefined4 *)(param_1 + 0x610) = *puVar3; + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d993); + *(undefined4 *)(param_1 + 0x61c) = *puVar3; + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d998); + *(undefined4 *)(param_1 + 0x620) = *puVar3; + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d99d); + *(undefined4 *)(param_1 + 0x614) = *puVar3; + FUN_004a8054(param_1,0x12,&local_8,&local_c); + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d9a2); + *(undefined4 *)(param_1 + 0x618) = *puVar3; + FUN_004a8054(param_1,0x13,&local_8,&local_c); + uVar5 = 0xffffffff; + *(float *)(param_1 + 0x350) = (local_8 + local_10) / (local_c + local_14); + *(float *)(param_1 + 0x350) = -*(float *)(param_1 + 0x350); + pcVar7 = pcVar1; + do { + pcVar8 = pcVar7; + if (uVar5 == 0) break; + uVar5 = uVar5 - 1; + pcVar8 = pcVar7 + 1; + cVar2 = *pcVar7; + pcVar7 = pcVar8; + } while (cVar2 != '\0'); + uVar5 = ~uVar5; + pcVar7 = pcVar8 + -uVar5; + pcVar8 = local_20; + for (uVar6 = uVar5 >> 2; uVar6 != 0; uVar6 = uVar6 - 1) { + *(undefined4 *)pcVar8 = *(undefined4 *)pcVar7; + pcVar7 = pcVar7 + 4; + pcVar8 = pcVar8 + 4; + } + for (uVar5 = uVar5 & 3; uVar5 != 0; uVar5 = uVar5 - 1) { + *pcVar8 = *pcVar7; + pcVar7 = pcVar7 + 1; + pcVar8 = pcVar8 + 1; + } + local_1d = DAT_0050d9a7; + uStack_19 = DAT_0050d9ab; + iVar4 = FUN_00406ff8(*(int *)(DAT_004efc94 + 0x68),local_20,0x10,-1); + if (iVar4 != 0) { + *(undefined4 *)(param_1 + 0x580) = 1; + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d9ac); + *(undefined4 *)(param_1 + 0x624) = *puVar3; + FUN_004277a8(param_1 + 0x65c,*(int *)(param_1 + 0x624),PTR_FUN_0050d774,DAT_0050d778, + DAT_0050d77c); + *(undefined4 *)(param_1 + 0x53c) = + *(undefined4 *)(*(int *)(param_1 + 0x690) + 8 + *(int *)(param_1 + 0x670) * 0xc); + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d9b1); + *(undefined4 *)(param_1 + 0x628) = *puVar3; + FUN_004277a8(param_1 + 0x65c,*(int *)(param_1 + 0x628),PTR_FUN_0050d780,DAT_0050d784, + DAT_0050d788); + *(undefined4 *)(param_1 + 0x540) = + *(undefined4 *)(*(int *)(param_1 + 0x690) + 8 + *(int *)(param_1 + 0x670) * 0xc); + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d9b6); + *(undefined4 *)(param_1 + 0x62c) = *puVar3; + FUN_004a8054(param_1,0x18,&local_8,&local_c); + *(float *)(param_1 + 0x544) = local_8 / local_c; + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d9bb); + *(undefined4 *)(param_1 + 0x630) = *puVar3; + FUN_004a8054(param_1,0x19,&local_8,&local_c); + *(float *)(param_1 + 0x548) = local_8 / local_c; + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d9c0); + *(undefined4 *)(param_1 + 0x634) = *puVar3; + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d9c5); + *(undefined4 *)(param_1 + 0x638) = *puVar3; + } + *(undefined4 *)(param_1 + 0x584) = 0; + uVar5 = 0xffffffff; + pcVar7 = pcVar1; + do { + pcVar8 = pcVar7; + if (uVar5 == 0) break; + uVar5 = uVar5 - 1; + pcVar8 = pcVar7 + 1; + cVar2 = *pcVar7; + pcVar7 = pcVar8; + } while (cVar2 != '\0'); + uVar5 = ~uVar5; + pcVar7 = pcVar8 + -uVar5; + pcVar8 = local_20; + for (uVar6 = uVar5 >> 2; uVar6 != 0; uVar6 = uVar6 - 1) { + *(undefined4 *)pcVar8 = *(undefined4 *)pcVar7; + pcVar7 = pcVar7 + 4; + pcVar8 = pcVar8 + 4; + } + for (uVar5 = uVar5 & 3; uVar5 != 0; uVar5 = uVar5 - 1) { + *pcVar8 = *pcVar7; + pcVar7 = pcVar7 + 1; + pcVar8 = pcVar8 + 1; + } + local_1d = DAT_0050d9ca; + uStack_19 = DAT_0050d9ce; + iVar4 = FUN_00406ff8(*(int *)(DAT_004efc94 + 0x68),local_20,0x10,-1); + if (iVar4 != 0) { + *(undefined4 *)(param_1 + 0x584) = 1; + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d9cf); + *(undefined4 *)(param_1 + 0x5d8) = *puVar3; + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d9d4); + *(undefined4 *)(param_1 + 0x5d4) = *puVar3; + } + *(undefined4 *)(param_1 + 0x588) = 0; + uVar5 = 0xffffffff; + pcVar7 = pcVar1; + do { + pcVar8 = pcVar7; + if (uVar5 == 0) break; + uVar5 = uVar5 - 1; + pcVar8 = pcVar7 + 1; + cVar2 = *pcVar7; + pcVar7 = pcVar8; + } while (cVar2 != '\0'); + uVar5 = ~uVar5; + pcVar7 = pcVar8 + -uVar5; + pcVar8 = local_20; + for (uVar6 = uVar5 >> 2; uVar6 != 0; uVar6 = uVar6 - 1) { + *(undefined4 *)pcVar8 = *(undefined4 *)pcVar7; + pcVar7 = pcVar7 + 4; + pcVar8 = pcVar8 + 4; + } + for (uVar5 = uVar5 & 3; uVar5 != 0; uVar5 = uVar5 - 1) { + *pcVar8 = *pcVar7; + pcVar7 = pcVar7 + 1; + pcVar8 = pcVar8 + 1; + } + local_1d = DAT_0050d9d9; + uStack_19 = DAT_0050d9dd; + iVar4 = FUN_00406ff8(*(int *)(DAT_004efc94 + 0x68),local_20,0x10,-1); + if (iVar4 != 0) { + *(undefined4 *)(param_1 + 0x588) = 1; + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d9de); + *(undefined4 *)(param_1 + 0x5dc) = *puVar3; + } + return; +} + + + +/* @004a8cc0 file=? name=FUN_004a8cc0 */ + +/* WARNING: Type propagation algorithm not settling */ + +undefined4 __cdecl +FUN_004a8cc0(int param_1,char *param_2,int param_3,int param_4,char *param_5,char *param_6, + char *param_7,int param_8,int param_9) + +{ + char *pcVar1; + char *pcVar2; + int iVar3; + undefined3 extraout_var; + int *piVar4; + char *pcVar5; + bool bVar6; + byte bVar7; + + pcVar5 = s_HeatSinkClassID_0050da25; + pcVar2 = param_2; + do { + bVar6 = *pcVar2 == *pcVar5; + if (!bVar6) break; + if (*pcVar2 == '\0') goto LAB_004a8cf5; + pcVar1 = pcVar2 + 1; + bVar6 = *pcVar1 == pcVar5[1]; + if (!bVar6) break; + pcVar2 = pcVar2 + 2; + pcVar5 = pcVar5 + 2; + bVar6 = *pcVar1 == '\0'; + } while (!bVar6); + if (bVar6) { +LAB_004a8cf5: + iVar3 = FUN_004ae9dc(param_4,param_5,param_6,param_7,param_8,param_9,param_1); + } + else { + pcVar5 = s_ReservoirClassID_0050da35; + pcVar2 = param_2; + do { + if (*pcVar2 != *pcVar5) goto LAB_004a8d6f; + bVar6 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar5[1]) goto LAB_004a8d6f; + pcVar2 = pcVar2 + 2; + pcVar5 = pcVar5 + 2; + bVar6 = *pcVar1 == '\0'; + } while (!bVar6); + if (bVar6) { + iVar3 = FUN_004af580(param_4,param_5,param_6,param_7,param_8,param_9,param_1); + } + else { +LAB_004a8d6f: + pcVar5 = s_CondenserClassID_0050da46; + pcVar2 = param_2; + do { + if (*pcVar2 != *pcVar5) goto LAB_004a8dbf; + bVar6 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar5[1]) goto LAB_004a8dbf; + pcVar2 = pcVar2 + 2; + pcVar5 = pcVar5 + 2; + bVar6 = *pcVar1 == '\0'; + } while (!bVar6); + if (bVar6) { + iVar3 = FUN_004ae658(param_4,param_5,param_6,param_7,param_8,param_9,param_1); + } + else { +LAB_004a8dbf: + pcVar5 = s_PoweredSubsystemClassID_0050da57; + pcVar2 = param_2; + do { + if (*pcVar2 != *pcVar5) goto LAB_004a8e0f; + bVar6 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar5[1]) goto LAB_004a8e0f; + pcVar2 = pcVar2 + 2; + pcVar5 = pcVar5 + 2; + bVar6 = *pcVar1 == '\0'; + } while (!bVar6); + if (bVar6) { + iVar3 = FUN_004b13ac(param_4,param_5,param_6,param_7,param_8,param_9,param_1); + } + else { +LAB_004a8e0f: + pcVar5 = s_MyomersClassID_0050da6f; + pcVar2 = param_2; + do { + if (*pcVar2 != *pcVar5) goto LAB_004a8e5f; + bVar6 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar5[1]) goto LAB_004a8e5f; + pcVar2 = pcVar2 + 2; + pcVar5 = pcVar5 + 2; + bVar6 = *pcVar1 == '\0'; + } while (!bVar6); + if (bVar6) { + iVar3 = FUN_004b9140(param_4,param_5,param_6,param_7,param_8,param_9,param_1); + } + else { +LAB_004a8e5f: + pcVar5 = s_GeneratorClassID_0050da7e; + pcVar2 = param_2; + do { + if (*pcVar2 != *pcVar5) goto LAB_004a8eaf; + bVar6 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar5[1]) goto LAB_004a8eaf; + pcVar2 = pcVar2 + 2; + pcVar5 = pcVar5 + 2; + bVar6 = *pcVar1 == '\0'; + } while (!bVar6); + if (bVar6) { + iVar3 = FUN_004b23bc(param_4,param_5,param_6,param_7,param_8,param_9,param_1); + } + else { +LAB_004a8eaf: + pcVar5 = s_HUDClassID_0050da8f; + pcVar2 = param_2; + do { + if (*pcVar2 != *pcVar5) goto LAB_004a8eff; + bVar6 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar5[1]) goto LAB_004a8eff; + pcVar2 = pcVar2 + 2; + pcVar5 = pcVar5 + 2; + bVar6 = *pcVar1 == '\0'; + } while (!bVar6); + if (bVar6) { + iVar3 = FUN_004b81d4(param_4,param_5,param_6,param_7,param_8,param_9,param_1); + } + else { +LAB_004a8eff: + pcVar5 = s_SearchlightClassID_0050da9a; + pcVar2 = param_2; + do { + if (*pcVar2 != *pcVar5) goto LAB_004a8f4f; + bVar6 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar5[1]) goto LAB_004a8f4f; + pcVar2 = pcVar2 + 2; + pcVar5 = pcVar5 + 2; + bVar6 = *pcVar1 == '\0'; + } while (!bVar6); + if (bVar6) { + iVar3 = FUN_004b85a8(param_4,param_5,param_6,param_7,param_8,param_9,param_1); + } + else { +LAB_004a8f4f: + pcVar5 = s_ThermalSightClassID_0050daad; + pcVar2 = param_2; + do { + if (*pcVar2 != *pcVar5) goto LAB_004a8f9f; + bVar6 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar5[1]) goto LAB_004a8f9f; + pcVar2 = pcVar2 + 2; + pcVar5 = pcVar5 + 2; + bVar6 = *pcVar1 == '\0'; + } while (!bVar6); + if (bVar6) { + iVar3 = FUN_004b87d4(param_4,param_5,param_6,param_7,param_8,param_9,param_1); + } + else { +LAB_004a8f9f: + pcVar5 = s_SensorClassID_0050dac1; + pcVar2 = param_2; + do { + if (*pcVar2 != *pcVar5) goto LAB_004a8fef; + bVar6 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar5[1]) goto LAB_004a8fef; + pcVar2 = pcVar2 + 2; + pcVar5 = pcVar5 + 2; + bVar6 = *pcVar1 == '\0'; + } while (!bVar6); + if (bVar6) { + bVar6 = FUN_004b1dcc(param_4,param_5,param_6,param_7,param_8,param_9,param_1); + iVar3 = CONCAT31(extraout_var,bVar6); + } + else { +LAB_004a8fef: + pcVar5 = s_GyroscopeClassID_0050dacf; + pcVar2 = param_2; + do { + if (*pcVar2 != *pcVar5) goto LAB_004a903f; + bVar6 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar5[1]) goto LAB_004a903f; + pcVar2 = pcVar2 + 2; + pcVar5 = pcVar5 + 2; + bVar6 = *pcVar1 == '\0'; + } while (!bVar6); + if (bVar6) { + iVar3 = FUN_004b3eb4(param_4,param_5,param_6,param_7,param_8,param_9,param_1 + ); + } + else { +LAB_004a903f: + pcVar5 = s_TorsoClassID_0050dae0; + pcVar2 = param_2; + do { + if (*pcVar2 != *pcVar5) goto LAB_004a908f; + bVar6 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar5[1]) goto LAB_004a908f; + pcVar2 = pcVar2 + 2; + pcVar5 = pcVar5 + 2; + bVar6 = *pcVar1 == '\0'; + } while (!bVar6); + if (bVar6) { + iVar3 = FUN_004b6fec(param_4,param_5,param_6,param_7,param_8,param_9, + param_1); + } + else { +LAB_004a908f: + pcVar5 = s_EmitterClassID_0050daed; + pcVar2 = param_2; + do { + if (*pcVar2 != *pcVar5) goto LAB_004a90e3; + bVar6 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar5[1]) goto LAB_004a90e3; + pcVar2 = pcVar2 + 2; + pcVar5 = pcVar5 + 2; + bVar6 = *pcVar1 == '\0'; + } while (!bVar6); + if (bVar6) { + iVar3 = FUN_004bb478(param_3,param_4,param_5,param_6,param_7,param_8, + param_9,param_1); + } + else { +LAB_004a90e3: + pcVar5 = s_PPCClassID_0050dafc; + pcVar2 = param_2; + do { + if (*pcVar2 != *pcVar5) goto LAB_004a9137; + bVar6 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar5[1]) goto LAB_004a9137; + pcVar2 = pcVar2 + 2; + pcVar5 = pcVar5 + 2; + bVar6 = *pcVar1 == '\0'; + } while (!bVar6); + if (bVar6) { + iVar3 = FUN_004bb8e0(param_3,param_4,param_5,param_6,param_7,param_8, + param_9,param_1); + } + else { +LAB_004a9137: + pcVar5 = s_ProjectileWeaponClassID_0050db07; + pcVar2 = param_2; + do { + if (*pcVar2 != *pcVar5) goto LAB_004a918b; + bVar6 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar5[1]) goto LAB_004a918b; + pcVar2 = pcVar2 + 2; + pcVar5 = pcVar5 + 2; + bVar6 = *pcVar1 == '\0'; + } while (!bVar6); + if (bVar6) { + iVar3 = FUN_004bc7cc(param_3,param_4,param_5,param_6,param_7,param_8 + ,param_9,param_1); + } + else { +LAB_004a918b: + pcVar5 = s_MissileLauncherClassID_0050db1f; + pcVar2 = param_2; + do { + if (*pcVar2 != *pcVar5) goto LAB_004a91df; + bVar6 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar5[1]) goto LAB_004a91df; + pcVar2 = pcVar2 + 2; + pcVar5 = pcVar5 + 2; + bVar6 = *pcVar1 == '\0'; + } while (!bVar6); + if (bVar6) { + iVar3 = FUN_004bd08c(param_3,param_4,param_5,param_6,param_7, + param_8,param_9,param_1); + } + else { +LAB_004a91df: + pcVar5 = s_GaussRifleClassID_0050db36; + pcVar2 = param_2; + do { + if (*pcVar2 != *pcVar5) goto LAB_004a9233; + bVar6 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar5[1]) goto LAB_004a9233; + pcVar2 = pcVar2 + 2; + pcVar5 = pcVar5 + 2; + bVar6 = *pcVar1 == '\0'; + } while (!bVar6); + if (bVar6) { + iVar3 = FUN_004bdd14(param_3,param_4,param_5,param_6,param_7, + param_8,param_9,param_1); + } + else { +LAB_004a9233: + pcVar5 = s_AmmoBinClassID_0050db48; + pcVar2 = param_2; + do { + if (*pcVar2 != *pcVar5) goto LAB_004a9287; + bVar6 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar5[1]) goto LAB_004a9287; + pcVar2 = pcVar2 + 2; + pcVar5 = pcVar5 + 2; + bVar6 = *pcVar1 == '\0'; + } while (!bVar6); + if (bVar6) { + iVar3 = FUN_004bd6f0(param_3,param_4,param_5,param_6,param_7, + param_8,param_9,param_1); + } + else { +LAB_004a9287: + pcVar5 = s_SubsystemMessageManagerClassID_0050db57; + pcVar2 = param_2; + do { + if (*pcVar2 != *pcVar5) goto LAB_004a92d7; + bVar6 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar5[1]) goto LAB_004a92d7; + pcVar2 = pcVar2 + 2; + pcVar5 = pcVar5 + 2; + bVar6 = *pcVar1 == '\0'; + } while (!bVar6); + if (bVar6) { + iVar3 = FUN_0049be10(param_3,param_4,param_5,param_6,param_7 + ,param_8,param_9); + } + else { +LAB_004a92d7: + pcVar5 = s_MechTechClassID_0050db76; + pcVar2 = param_2; + do { + if (*pcVar2 != *pcVar5) goto LAB_004a9324; + bVar6 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar5[1]) goto LAB_004a9324; + pcVar2 = pcVar2 + 2; + pcVar5 = pcVar5 + 2; + bVar6 = *pcVar1 == '\0'; + } while (!bVar6); + if (!bVar6) { +LAB_004a9324: + bVar7 = 0x3a; + FUN_004dbb24(&DAT_00524e20,param_5,(char *)0x0); + piVar4 = FUN_004db92c(&DAT_00524e20,bVar7); + FUN_004dbb24(piVar4,param_6,(char *)0x0); + FUN_004dbb24(piVar4, + s_has_an_unknown_component_type_of_0050db86, + (char *)0x0); + FUN_004dbb24(piVar4,param_2,(char *)0x0); + FUN_004d9c38(piVar4); + return 0xffffffff; + } + iVar3 = FUN_004ad48c(param_4,param_5,param_6,param_7,param_8 + ,param_9,param_3); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (iVar3 == 0) { + return 0xffffffff; + } + return 1; +} + + + +/* @004a9390 file=? name=FUN_004a9390 */ + +undefined4 __cdecl FUN_004a9390(int param_1,char *param_2,int param_3,undefined4 *param_4) + +{ + char *pcVar1; + int iVar2; + undefined4 uVar3; + int *piVar4; + undefined4 *puVar5; + byte bVar6; + undefined4 local_58 [2]; + int *local_50; + int local_48; + char *local_44; + uint local_40; + int *local_3c; + char *local_38; + int local_34; + int *local_30; + char *local_2c; + int *local_28; + char *local_24; + int *local_20; + int *local_1c; + char *local_18; + int *local_14; + int *local_10; + char *local_c; + char *local_8; + + iVar2 = FUN_00404088(param_3,s_gamedata_0050dba9,s_Subsystems_0050dbb2,&local_8); + if (iVar2 == 0) { + local_c = param_2; + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_is_missing__sub_file_specificati_0050dbbd,(char *)0x0); + uVar3 = 0xffffffff; + } + else { + local_10 = (int *)FUN_004064fc((char *)*param_4,local_8); + piVar4 = (int *)FUN_00402298(0x20); + if (piVar4 == (int *)0x0) { + local_14 = (int *)0x0; + } + else { + local_14 = FUN_00403e84(piVar4,(char *)local_10,1); + } + local_20 = FUN_0040485c((int)local_14,(char *)0x0); + iVar2 = 0; + for (puVar5 = (undefined4 *)local_20[1]; puVar5 != (undefined4 *)0x0; + puVar5 = (undefined4 *)*puVar5) { + iVar2 = iVar2 + 1; + } + if (iVar2 == 0) { + local_24 = param_2; + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_has_no_subsystems__0050dbe3,(char *)0x0); + if (local_20 != (int *)0x0) { + (**(code **)*local_20)(local_20,3); + } + FUN_004022d0(local_10); + FUN_00403ecc(local_14,3); + uVar3 = 0xffffffff; + } + else { + local_28 = (int *)FUN_004022b0(iVar2 * 0x770); + FUN_004030dc(local_58,local_28,iVar2 * 0x770,0); + *local_50 = iVar2; + local_50 = local_50 + 1; + for (puVar5 = (undefined4 *)local_20[1]; puVar5 != (undefined4 *)0x0; + puVar5 = (undefined4 *)*puVar5) { + pcVar1 = (char *)(puVar5 + 2); + iVar2 = FUN_00404088((int)local_14,pcVar1,&DAT_0050dbf8,&local_2c); + if (iVar2 == 0) { + bVar6 = 0x3a; + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + piVar4 = FUN_004db92c(&DAT_00524e20,bVar6); + FUN_004dbb24(piVar4,pcVar1,(char *)0x0); + FUN_004dbb24(piVar4,s_missing_Type__0050dbfd,(char *)0x0); +LAB_004a9555: + FUN_004022e8(local_28); + if (local_20 != (int *)0x0) { + (**(code **)*local_20)(local_20,3); + } + FUN_004022d0(local_10); + FUN_00403ecc(local_14,3); + return 0xffffffff; + } + iVar2 = FUN_00404088((int)local_14,pcVar1,s_Include_0050dc0d,&local_18); + if (iVar2 == 0) { + piVar4 = (int *)0x0; + local_1c = (int *)0x0; + } + else { + piVar4 = (int *)FUN_004064fc((char *)*param_4,local_18); + local_30 = (int *)FUN_00402298(0x20); + if (local_30 == (int *)0x0) { + local_1c = (int *)0x0; + } + else { + local_1c = FUN_00403e84(local_30,(char *)piVar4,1); + } + } + local_34 = 1; + if (piVar4 != (int *)0x0) { + local_38 = FUN_004d4c78(local_2c,s_ClassID_0050dc15); + iVar2 = FUN_004d4a78(local_2c); + local_3c = (int *)FUN_004022b0(iVar2 + 1); + local_40 = (int)local_38 - (int)local_2c; + local_3c = FUN_004d4b9c(local_3c,local_2c,local_40); + local_44 = (char *)((int)local_3c + local_40); + *local_44 = DAT_0050dc1d; + local_48 = FUN_004a8cc0(local_34,local_2c,param_1,param_3,param_2,(char *)local_3c, + (char *)local_50,(int)local_1c,(int)param_4); + local_34 = local_34 + 1; + FUN_004022e8(local_3c); + if (local_48 == -1) goto LAB_004a9555; + } + iVar2 = FUN_004a8cc0(local_34,local_2c,param_1,param_3,param_2,pcVar1,(char *)local_50, + (int)local_14,(int)param_4); + if (iVar2 == -1) goto LAB_004a9555; + if (piVar4 != (int *)0x0) { + FUN_004022d0(piVar4); + FUN_00403ecc(local_1c,3); + } + local_50 = (int *)((int)local_50 + local_50[9]); + } + puVar5 = (undefined4 *) + FUN_00406db4(param_1,param_2,0x11,1,0,local_28,(int)local_50 - (int)local_28,-1); + FUN_004022e8(local_28); + if (local_20 != (int *)0x0) { + (**(code **)*local_20)(local_20,3); + } + FUN_004022d0(local_10); + FUN_00403ecc(local_14,3); + uVar3 = *puVar5; + } + } + return uVar3; +} + + + +/* @004a9770 file=? name=FUN_004a9770 */ + +undefined * __cdecl FUN_004a9770(char *param_1) + +{ + char *pcVar1; + char *pcVar2; + char *pcVar3; + bool bVar4; + + pcVar3 = &DAT_0050dc1f; + pcVar2 = param_1; + do { + if (*pcVar2 != *pcVar3) goto LAB_004a97a4; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_004a97a4; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return &DAT_0050bde4; + } +LAB_004a97a4: + pcVar3 = s_ControlsMapper_0050dc20; + pcVar2 = param_1; + do { + if (*pcVar2 != *pcVar3) goto LAB_004a97d1; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_004a97d1; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return &DAT_0050ee00; + } +LAB_004a97d1: + pcVar3 = s_AmmoBinClassID_0050dc2f; + pcVar2 = param_1; + do { + if (*pcVar2 != *pcVar3) goto LAB_004a97fe; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_004a97fe; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return &DAT_005125bc; + } +LAB_004a97fe: + pcVar3 = s_HeatSinkClassID_0050dc3e; + pcVar2 = param_1; + do { + if (*pcVar2 != *pcVar3) goto LAB_004a982b; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_004a982b; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return &DAT_0050e580; + } +LAB_004a982b: + pcVar3 = s_ReservoirClassID_0050dc4e; + pcVar2 = param_1; + do { + if (*pcVar2 != *pcVar3) goto LAB_004a9858; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_004a9858; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return &DAT_0050e640; + } +LAB_004a9858: + pcVar3 = s_CondenserClassID_0050dc5f; + pcVar2 = param_1; + do { + if (*pcVar2 != *pcVar3) goto LAB_004a9885; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_004a9885; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return &DAT_0050e4ec; + } +LAB_004a9885: + pcVar3 = s_PoweredSubsystemClassID_0050dc70; + pcVar2 = param_1; + do { + if (*pcVar2 != *pcVar3) goto LAB_004a98b2; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_004a98b2; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return &DAT_0050f4ac; + } +LAB_004a98b2: + pcVar3 = s_MyomersClassID_0050dc88; + pcVar2 = param_1; + do { + if (*pcVar2 != *pcVar3) goto LAB_004a98df; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_004a98df; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return &DAT_0051154c; + } +LAB_004a98df: + pcVar3 = s_GeneratorClassID_0050dc97; + pcVar2 = param_1; + do { + if (*pcVar2 != *pcVar3) goto LAB_004a990c; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_004a990c; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return &DAT_0050fb50; + } +LAB_004a990c: + pcVar3 = s_HUDClassID_0050dca8; + pcVar2 = param_1; + do { + if (*pcVar2 != *pcVar3) goto LAB_004a9939; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_004a9939; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return &DAT_00511078; + } +LAB_004a9939: + pcVar3 = s_SensorClassID_0050dcb3; + pcVar2 = param_1; + do { + if (*pcVar2 != *pcVar3) goto LAB_004a9966; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_004a9966; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return &DAT_0050fa1c; + } +LAB_004a9966: + pcVar3 = s_SearchlightClassID_0050dcc1; + pcVar2 = param_1; + do { + if (*pcVar2 != *pcVar3) goto LAB_004a9993; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_004a9993; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return &DAT_00511198; + } +LAB_004a9993: + pcVar3 = s_ThermalSightClassID_0050dcd4; + pcVar2 = param_1; + do { + if (*pcVar2 != *pcVar3) goto LAB_004a99c0; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_004a99c0; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return &DAT_00511228; + } +LAB_004a99c0: + pcVar3 = s_GyroscopeClassID_0050dce8; + pcVar2 = param_1; + do { + if (*pcVar2 != *pcVar3) goto LAB_004a99ed; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_004a99ed; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return &DAT_0050fdb0; + } +LAB_004a99ed: + pcVar3 = s_TorsoClassID_0050dcf9; + pcVar2 = param_1; + do { + if (*pcVar2 != *pcVar3) goto LAB_004a9a1a; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_004a9a1a; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return &DAT_00510af8; + } +LAB_004a9a1a: + pcVar3 = s_EmitterClassID_0050dd06; + pcVar2 = param_1; + do { + if (*pcVar2 != *pcVar3) goto LAB_004a9a47; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_004a9a47; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return &DAT_00511d78; + } +LAB_004a9a47: + pcVar3 = s_PPCClassID_0050dd15; + pcVar2 = param_1; + do { + if (*pcVar2 != *pcVar3) goto LAB_004a9a74; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_004a9a74; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return &DAT_005120c4; + } +LAB_004a9a74: + pcVar3 = s_ProjectileWeaponClassID_0050dd20; + pcVar2 = param_1; + do { + if (*pcVar2 != *pcVar3) goto LAB_004a9aa1; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_004a9aa1; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return &DAT_00512198; + } +LAB_004a9aa1: + pcVar3 = s_MissileLauncherClassID_0050dd38; + pcVar2 = param_1; + do { + if (*pcVar2 != *pcVar3) goto LAB_004a9ace; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_004a9ace; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return &DAT_00512478; + } +LAB_004a9ace: + pcVar3 = s_GaussRifleClassID_0050dd4f; + pcVar2 = param_1; + do { + if (*pcVar2 != *pcVar3) goto LAB_004a9afb; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_004a9afb; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return &DAT_00512478; + } +LAB_004a9afb: + pcVar3 = s_ControlsMapper_0050dd61; + pcVar2 = param_1; + do { + if (*pcVar2 != *pcVar3) goto LAB_004a9b28; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_004a9b28; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return &DAT_0050ee00; + } +LAB_004a9b28: + pcVar2 = s_MechTech_0050dd70; + do { + if (*param_1 != *pcVar2) { + return (undefined *)0x0; + } + bVar4 = true; + if (*param_1 == '\0') break; + pcVar3 = param_1 + 1; + if (*pcVar3 != pcVar2[1]) { + return (undefined *)0x0; + } + param_1 = param_1 + 2; + pcVar2 = pcVar2 + 2; + bVar4 = *pcVar3 == '\0'; + } while (!bVar4); + if (!bVar4) { + return (undefined *)0x0; + } + return &DAT_0050e270; +} + + + +/* @004a9b5c file=bt/mech4.cpp name=FUN_004a9b5c */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004a9b5c(int *param_1,float param_2) + +{ + int *piVar1; + uint *puVar2; + float fVar3; + int iVar4; + undefined4 *puVar5; + int iVar6; + int iVar7; + float10 fVar8; + float *pfVar9; + float local_258; + float local_254 [2]; + int local_24c; + undefined4 local_248; + undefined4 local_244; + undefined4 local_240; + undefined4 local_23c [2]; + undefined4 local_234; + undefined4 local_230; + undefined4 local_22c [2]; + int local_224; + uint local_220; + undefined4 local_21c; + float local_218; + float local_214; + undefined4 local_210; + undefined4 local_20c; + float local_208; + undefined4 local_204; + undefined4 local_200; + undefined4 local_1fc; + undefined4 local_1f8; + undefined4 local_1f4; + undefined4 local_1f0; + undefined4 local_1ec; + undefined4 local_1e8; + undefined4 local_1e4; + undefined4 local_1e0; + undefined4 local_1dc; + float local_1d8; + float local_1d4; + float local_1d0; + undefined4 local_1cc; + float local_1c8; + float local_1c4; + undefined4 local_1c0; + undefined4 local_1bc; + float local_1b8; + undefined4 local_1b4; + undefined4 local_1b0; + undefined4 local_1ac; + undefined4 local_1a8; + undefined4 local_1a4; + undefined4 local_1a0; + float local_19c; + float local_198; + float local_194; + int local_190; + int local_18c; + int local_188; + int local_184; + int local_180; + int local_17c; + int local_178; + float local_174; + int local_170; + undefined4 local_16c; + undefined4 local_168; + undefined4 local_164; + float local_160; + float local_15c; + float local_158; + undefined4 local_154; + float local_150; + undefined4 local_14c; + int local_148 [7]; + int local_12c [3]; + int local_120; + float local_11c; + int local_118; + float local_114; + float local_110; + float local_10c; + int local_108 [5]; + uint local_f4 [5]; + undefined4 local_e0; + undefined4 local_dc; + int local_d8; + int *local_d4; + float local_d0; + float local_cc; + float local_c8; + float local_c4; + float local_c0; + int local_bc; + float local_b8; + int *local_b4; + int local_b0; + float local_ac; + float local_a8; + int *local_a4; + int local_a0; + int *local_9c; + float *local_98; + float *local_94; + int local_90; + int *local_8c; + int *local_88; + int *local_84; + float local_80; + float local_7c; + float local_78; + float local_74; + float local_70 [2]; + float *local_68; + float local_64; + float local_60; + float local_5c; + float local_58; + float local_54; + float local_50; + float *local_4c; + float local_48; + float local_44; + float local_40; + float local_3c; + int local_38; + float local_34; + uint local_30; + int local_2c; + float local_28; + int local_24; + int local_20; + float local_1c; + float local_18; + int local_14; + int local_10; + int local_c; + int local_8; + + FUN_0049fa1c((int)param_1); + if ((param_1[0x1e9] != 0) && (param_1[0x1ea] == 0)) { + local_8 = param_1[0x1e8]; + local_f4[0] = 0x20; + local_f4[1] = 0x15; + local_f4[2] = 1; + FUN_00420ea4(local_f4 + 3,(undefined4 *)&DAT_00522524); + local_e0 = 0; + local_dc = 0; + local_d8 = local_8; + FUN_0041f640((int)param_1,local_f4); + param_1[0x1ea] = 1; + } + local_c = param_1[0x195]; + param_1[0x195] = 0; + FUN_004a4eab(local_108,(int)(param_1 + 0x106)); + local_10 = (**(code **)(local_108[0] + 0x30))(); + FUN_004a4ee9(local_108,2); + if (local_10 == 0) { + param_1[0xff] = 0; + } + else { + param_1[0xff] = 1; + FUN_00408644(&local_114,(float *)(local_10 + 0x100),(float *)(param_1 + 0x40)); + fVar8 = FUN_004dd138((double)(local_10c * local_10c + + local_110 * local_110 + local_114 * local_114)); + param_1[0x100] = (int)(float)fVar8; + } + FUN_0040a7f4(param_1 + 0x77,(undefined4 *)&DAT_004e0fd4); + local_120 = param_1[0x40]; + local_11c = (float)param_1[0x41]; + local_118 = param_1[0x42]; + iVar4 = *(int *)param_1[0x4a]; + param_1[0x1e7] = 0; + FUN_004a4f9e(local_12c,(int)(param_1 + 0x1eb)); + local_14 = 0; + while (iVar6 = (**(code **)(local_12c[0] + 0x28))(), iVar6 != 0) { + local_14 = local_14 + 1; + if (*(float *)(iVar6 + 0x31c) <= (float)param_1[0x1e7]) { + iVar6 = param_1[0x1e7]; + } + else { + iVar6 = *(int *)(iVar6 + 0x31c); + } + param_1[0x1e7] = iVar6; + } + if (0 < local_14) { + *(float *)(iVar4 + 0x128) = (float)param_1[0x1e7] * *(float *)(iVar4 + 0x128); + local_18 = (float)param_1[0x1e7]; + fVar8 = FUN_004dcd00((double)local_18); + if (fVar8 <= (float10)_DAT_004ab16c) { + *(undefined4 *)(iVar4 + 300) = 0; + } + } + local_1c = (*(float *)(iVar4 + 0x128) / (float)param_1[0x1e8]) * 5.0 + _DAT_004ab170; + iVar6 = FUN_004dcd94(); + local_1c = (float)iVar6 / 5.0; + *(float *)(iVar4 + 0x128) = (float)param_1[0x1e8] * local_1c; + local_24 = param_1[0x172]; + FUN_0041d3b3(local_148,param_1[0x1a5] + 0xe4); + local_20 = (**(code **)(local_148[0] + 0x34))(local_148); + FUN_0041d3d2(local_148,2); + puVar5 = *(undefined4 **)(local_20 + 0xc); + local_154 = *puVar5; + local_150 = (float)puVar5[1]; + local_14c = puVar5[2]; + if ((param_1[0xec] != 0) && (param_1[0xec] != 1)) { + if (*(float *)param_1[0x19f] < local_150) { + param_1[0xe5] = 0; + } + else { + param_1[0xe5] = 1; + } + } + if (0 < param_1[0xcd]) { + FUN_004dbb24(&DAT_00524e20,s_DefaultState_0050ddbd,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + FUN_0041bbd8((int)(param_1 + 0xb),0); + } + if (0 < param_1[0xce]) { + FUN_004dbb24(&DAT_00524e20,s_GimpLeft_0050ddca,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + FUN_0041bbd8((int)(param_1 + 0xb),3); + } + if (0 < param_1[0xcf]) { + FUN_004dbb24(&DAT_00524e20,s_GimpRight_0050ddd3,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + FUN_0041bbd8((int)(param_1 + 0xb),4); + } + iVar6 = param_1[0x10]; + local_2c = param_1[100]; + local_30 = (uint)(*(int *)(local_2c + 0x25c) == 0); + if ((iVar6 == 0) && (local_30 == 0)) { + if ((param_1[0xec] == 0) || (param_1[0xec] == 4)) { + local_34 = (float)param_1[0x1e7]; + fVar8 = FUN_004dcd00((double)local_34); + if ((float10)_DAT_004ab16c < fVar8) { + param_1[0xfe] = 1; + } + else { + param_1[0xfe] = 0; + } + } + else if (param_1[0xec] == 1) { + param_1[0xfe] = 2; + } + else { + param_1[0xfe] = 0; + } + } + else { + param_1[0xfe] = 0; + } + if ((param_1[0xe6] != 0) && (param_1[0x161] != 0)) { + if (param_1[0xfe] == 1) { + FUN_004a7fc4((int)param_1,2); + FUN_004a4c54((int)param_1,8); + FUN_004a4c54((int)param_1,1); + FUN_0041bbd8((int)(param_1 + 0x131),0); + } + else if (param_1[0xfe] == 2) { + FUN_004a7fc4((int)param_1,3); + FUN_004a4c54((int)param_1,8); + FUN_004a4c54((int)param_1,1); + FUN_0041bbd8((int)(param_1 + 0x131),1); + } + param_1[0xe6] = 0; + } + if (((iVar6 == 3) || (iVar6 == 4)) && (param_1[0xec] == 1)) { + FUN_004a7fc4((int)param_1,3); + FUN_004a4c54((int)param_1,8); + FUN_004a4c54((int)param_1,1); + FUN_0041bbd8((int)(param_1 + 0x131),1); + } + if (param_1[0x136] != param_1[0x135]) { + local_38 = param_1[0x136]; + if (local_38 == 0) { + FUN_004ac04c((int)param_1); + } + else if (local_38 == 1) { + FUN_004ac064((int)param_1); + } + else { + FUN_0040385c(s_Whoa__Bad_Collision_Volume_State_0050dddd,s_d__tesla_bt_bt_MECH4_CPP_0050de00, + 0x1a1); + } + } + FUN_0041bbd8((int)(param_1 + 0x131),param_1[0x136]); + if ((float)param_1[0x16f] != _DAT_004ab174) { + if (((float)param_1[0xd2] <= _DAT_004ab178) || (_DAT_004ab178 <= *(float *)(iVar4 + 0x128))) { + if (param_1[0xfd] != 0) { + param_1[0xfd] = 0; + FUN_004a4c54((int)param_1,0x100); + param_1[0xd1] = param_1[0x16e]; + } + } + else if (param_1[0xfd] == 0) { + param_1[0xfd] = 1; + FUN_004a4c54((int)param_1,0x100); + param_1[0xd1] = param_1[0x16f]; + if (param_1[0x14a] != 0) { + fVar8 = FUN_00408050(); + local_3c = (float)fVar8; + fVar8 = FUN_00408050(); + local_40 = (float)fVar8; + if (_DAT_004ab170 < local_40) { + local_3c = -local_3c; + } + local_44 = local_3c; + local_160 = 0.0; + local_15c = 0.0; + local_158 = local_3c; + FUN_004b2de4(param_1[0x14a],0.0,0.0,local_3c,0.4); + FUN_004b2d8c(param_1[0x14a],local_160,local_15c,local_158,0.4); + } + } + } + if (((param_1[0xfd] != 0) && ((float)param_1[0x14d] < (float)param_1[0xd2])) && + (param_1[0x14a] != 0)) { + if (_DAT_004ab178 < (float)param_1[0x171]) { + param_1[0x171] = (int)((float)param_1[0x171] - param_2); + } + else { + local_16c = 0; + local_168 = 0x3f800000; + local_164 = 0; + FUN_004b2d8c(param_1[0x14a],0.0,1.0,0.0,0.2); + param_1[0x171] = 0x3ecccccd; + } + } + iVar7 = FUN_0049fb54((int)param_1); + if (iVar7 == 0) { + if (((iVar6 == 3) || (iVar6 == 4)) && (param_1[0x160] != 0)) { + fVar8 = FUN_004a71f4((int)param_1,param_2); + local_28 = (float)fVar8; + } + else { + fVar8 = FUN_004a5028((int)param_1,param_2); + local_28 = (float)fVar8; + } + } + FUN_0040a7f4(param_1 + 0x71,(undefined4 *)&DAT_004e0fd4); + param_1[0x73] = (int)(-local_28 / param_2); + param_1[0x72] = 0; + param_1[0x71] = 0; + local_4c = (float *)(param_1 + 0x15d); + local_48 = *local_4c; + fVar8 = FUN_004dd138((double)((float)param_1[0x73] * (float)param_1[0x73] + + (float)param_1[0x72] * (float)param_1[0x72] + + (float)param_1[0x71] * (float)param_1[0x71])); + local_50 = (float)fVar8; + local_54 = (float)param_1[0xd3] - (float)param_1[0x14d]; + if ((float)param_1[0x14e] <= local_50) { + local_58 = (float)param_1[0x15d] - (float)param_1[0x15e]; + local_5c = (local_50 - (float)param_1[0x14d]) / local_54; + if (_DAT_004ab17c < local_5c) { + local_5c = local_5c * local_5c; + local_64 = (float)param_1[0x15e] / local_5c; + local_48 = local_64; + } + else { + local_60 = local_58 * local_5c; + local_48 = local_48 - local_60; + } + } + local_70[1] = 0.0; + if (0.0 <= local_48) { + local_68 = &local_48; + } + else { + local_68 = local_70; + local_70[0] = 0.0; + } + local_74 = *(float *)(iVar4 + 300); + local_48 = local_74 * *local_68; + if (((param_1[0x194] == 0) && (param_1[0xec] != 1)) && + ((param_1[0xec] != 2 && (param_1[0xec] != 3)))) { + param_1[0x75] = (int)local_48; + if (((param_1[0xec] == 0) && + (local_78 = local_48, fVar8 = FUN_004dcd00((double)(local_48 - _DAT_004ab178)), + (float10)_DAT_004ab16c < fVar8)) && + ((param_1[0x195] == 0 && + (((_DAT_004ab178 <= *(float *)(iVar4 + 0x128) && + (*(float *)(iVar4 + 0x128) <= (float)param_1[0x14c])) && (param_1[0x162] != 0)))))) { + FUN_004a7fc4((int)param_1,4); + FUN_004a4c54((int)param_1,8); + } + if (param_1[0xec] == 4) { + local_7c = local_48; + fVar8 = FUN_004dcd00((double)(local_48 - _DAT_004ab178)); + if ((fVar8 <= (float10)_DAT_004ab16c) && (param_1[0x195] == 0)) { + FUN_0041bbd8((int)(param_1 + 0xe7),0); + param_1[0x195] = 1; + FUN_004a4c54((int)param_1,8); + } + } + } + else { + param_1[0x75] = 0; + } + if (local_c != param_1[0x195]) { + FUN_004a4c54((int)param_1,8); + } + FUN_00421b2c((int)param_1); + FUN_00421bac((int)param_1,param_2); + param_1[0x1e0] = param_1[0x119]; + (**(code **)(*param_1 + 0x34))(); + piVar1 = param_1 + 0x40; + local_178 = *piVar1; + local_170 = param_1[0x42]; + local_174 = *(float *)(param_1[0xbb] + 8) + (float)param_1[0x41]; + FUN_0040e5f0(param_1[0xbc],(int)&local_178,&local_80); + if (_DAT_004ab16c < local_80) { + local_80 = local_80 - *(float *)(param_1[0xbb] + 8); + param_1[0x41] = (int)((float)param_1[0x41] - local_80); + *(float *)(param_1[0xba] + 8) = *(float *)(param_1[0xba] + 8) - local_80; + *(float *)(param_1[0xba] + 0xc) = *(float *)(param_1[0xba] + 0xc) - local_80; + } + local_184 = param_1[0x7d]; + local_180 = param_1[0x7e]; + local_17c = param_1[0x7f]; + local_190 = *piVar1; + local_18c = param_1[0x41]; + local_188 = param_1[0x42]; + local_84 = (int *)FUN_004227e0((int)param_1,0); + local_19c = (float)param_1[0x71]; + local_198 = (float)param_1[0x72]; + local_194 = (float)param_1[0x73]; + param_1[0x113] = 0; + FUN_0041db7c((int)&local_1cc); + FUN_00422bac(param_1,local_84,param_2,&local_120,&local_1cc); + if (local_1c8 == _DAT_004ab180) { + local_88 = param_1 + 0x7d; + FUN_00408440(local_88,&local_184); + local_8c = piVar1; + FUN_00408440(piVar1,&local_190); + (**(code **)(*param_1 + 0x34))(); + local_1c8 = 0.0; + if (param_1[0x14a] != 0) { + FUN_004087f4(&local_1d8,&local_1c4); + FUN_004b2de4(param_1[0x14a],local_1d8,local_1d4,local_1d0,0.4); + local_1e4 = 0; + local_1e0 = 0x3f800000; + local_1dc = 0; + FUN_004b2d8c(param_1[0x14a],0.0,1.0,0.0,0.2); + } + FUN_0041bbd8((int)(param_1 + 0x114),0); + } + else if (local_1c8 <= _DAT_004ab178) { + FUN_0041bbd8((int)(param_1 + 0x114),0); + } + else { + local_90 = **(int **)param_1[0xbe]; + local_94 = (float *)(param_1 + 0x34); + local_98 = (float *)(param_1 + 0x12a); + param_1[0x129] = *(int *)(local_90 + 0x24); + FUN_0040879c(local_98,&local_1b8,local_94); + param_1[0x12d] = + (int)-((float)param_1[300] * local_194 + + (float)param_1[299] * local_198 + (float)param_1[0x12a] * local_19c); + FUN_0041bbd8((int)(param_1 + 0x114),param_1[0x113]); + local_9c = param_1 + 0x7d; + FUN_00408440(local_9c,&DAT_004e0f74); + FUN_00408440(piVar1,&local_120); + (**(code **)(*param_1 + 0x34))(); + local_a0 = DAT_0050b9ac; + local_a4 = param_1 + 0x61; + local_248 = 100; + local_244 = 0x12; + local_240 = 1; + FUN_00420ea4(local_23c,(undefined4 *)&DAT_00522524); + local_234 = 0; + local_230 = 0; + FUN_00420ea4(local_22c,local_a4); + local_224 = local_a0; + local_220 = (uint)(local_a0 < 0); + local_21c = local_1cc; + local_218 = local_1c8; + local_214 = local_1c4; + local_210 = local_1c0; + local_20c = local_1bc; + local_208 = local_1b8; + local_204 = local_1b4; + local_200 = local_1b0; + local_1fc = local_1ac; + local_1f8 = local_1a8; + local_1f4 = local_1a4; + local_1f0 = local_1a0; + local_1ec = 0xffffffff; + local_1e8 = 1; + (**(code **)(*param_1 + 0xc))(param_1); + if (local_194 * local_194 + local_198 * local_198 + local_19c * local_19c <= _DAT_004ab184) { + FUN_0041bbd8((int)(param_1 + 0xe7),0); + if (param_1[0x119] == 1) { + FUN_004a4c54((int)param_1,1); + FUN_004a4c54((int)param_1,0x40); + } + param_1[0x195] = 1; + } + else { + FUN_004a7fc4((int)param_1,0x20); + FUN_004a4c54((int)param_1,1); + FUN_004a4c54((int)param_1,0x20); + } + } + if (param_1[0x119] != param_1[0x1e0]) { + FUN_004a4c54((int)param_1,0x80); + } + param_1[0x72] = (int)((float)param_1[0x41] - local_11c); + FUN_00421b6c((int)param_1); + FUN_004ab1c8((int)param_1,param_2,0); + local_b0 = 0; + local_a8 = (float)param_1[0x44] - (float)param_1[0x9c]; + if (((float)param_1[0x75] == _DAT_004ab178) && ((float)param_1[0xb6] != _DAT_004ab178)) { + local_b0 = 1; + } + local_ac = (float)param_1[0x75] - (float)param_1[0xaa]; + fVar3 = local_a8; + if (local_a8 <= _DAT_004ab178) { + fVar3 = -local_a8; + } + if ((float)param_1[0x1dc] < fVar3) { + FUN_004a4c54((int)param_1,0x10); + } + fVar3 = local_ac; + if (local_ac <= _DAT_004ab178) { + fVar3 = -local_ac; + } + if (((float)param_1[0x1db] < fVar3) || (local_b0 != 0)) { + FUN_004a4c54((int)param_1,0x10); + } + if ((float)param_1[0x1ad] != *(float *)(iVar4 + 0x128)) { + FUN_004a4c54((int)param_1,4); + } + local_254[0] = (float)param_1[0x40]; + local_b4 = param_1 + 0x98; + local_24c = param_1[0x42]; + local_254[1] = 0.0; + FUN_00408440((undefined4 *)&stack0xfffffda0,local_b4); + pfVar9 = local_254; + FUN_00408644((float *)&stack0xfffffda0,(float *)&stack0xfffffda0,pfVar9); + if ((float)param_1[0x1da] < local_258 * local_258 + (float)pfVar9 * (float)pfVar9 + 0.0) { + FUN_004a4c54((int)param_1,1); + } + fVar8 = FUN_004dd138((double)((float)param_1[0x20d] * (float)param_1[0x20d] + + (float)param_1[0x20c] * (float)param_1[0x20c] + + (float)param_1[0x20b] * (float)param_1[0x20b])); + fVar3 = (float)(fVar8 / (float10)(float)param_1[0x1e1]); + if (_DAT_004ab17c < fVar3) { + fVar3 = _DAT_004ab17c; + } + param_1[0xfc] = (int)(fVar3 * (float)param_1[0x1e2] * fVar3 * (float)param_1[0x1e2]); + local_1c = *(float *)(iVar4 + 0x128); + if ((float)param_1[0x1e8] < local_1c) { + local_1c = (float)param_1[0x1e8]; + } + if (local_1c < (float)param_1[0xd4]) { + local_1c = (float)param_1[0xd4]; + } + local_b8 = 0.0; + if (local_1c <= _DAT_004ab178) { + if (local_1c < _DAT_004ab178) { + local_b8 = local_1c - (float)param_1[0xd2]; + if (local_b8 <= _DAT_004ab178) { + local_b8 = -local_b8; + } + fVar3 = local_1c; + if (local_1c <= _DAT_004ab178) { + fVar3 = -local_1c; + } + local_b8 = local_b8 / fVar3; + } + } + else { + local_b8 = (local_1c - (float)param_1[0xd2]) / local_1c; + } + if (_DAT_004ab17c < local_b8) { + local_b8 = _DAT_004ab17c; + } + local_b8 = local_b8 * (float)param_1[0x1e3]; + param_1[0xfc] = (int)(local_b8 + (float)param_1[0xfc]); + if (param_1[0xec] == 4) { + param_1[0xfc] = (int)((float)param_1[0x1e6] + (float)param_1[0xfc]); + } + fVar3 = _DAT_004ab17c; + if ((float)param_1[0xfc] <= _DAT_004ab17c) { + fVar3 = (float)param_1[0xfc]; + } + param_1[0xfc] = (int)fVar3; + if (param_1[0x14a] != 0) { + local_bc = param_1[0xfc]; + *(int *)(param_1[0x14a] + 0x3a8) = local_bc; + } + if ((param_1[0x14a] != 0) && (param_1[0x194] == 0)) { + if ((param_1[0xec] != 0) && (param_1[0x15f] == 0)) { + FUN_004b2eac(param_1[0x14a]); + } + FUN_004b34ec(param_1[0x14a]); + } + if ((param_1[0x10e] != 0) && (param_1[0x194] == 0)) { + FUN_004b66b4(param_1[0x10e],param_1 + 0xd8); + } + FUN_0049fe80((int)param_1); + puVar2 = (uint *)(param_1 + 0x1f8); + FUN_0043ade4(puVar2,param_1[0x73]); + FUN_0043ade4((uint *)(param_1 + 0x1fb),param_1[0x72]); + FUN_0043ade4((uint *)(param_1 + 0x1fe),param_1[0x71]); + FUN_0043ade4((uint *)(param_1 + 0x201),param_1[0x75]); + FUN_0043ade4((uint *)(param_1 + 0x204),param_2); + fVar8 = FUN_0043ae47(puVar2); + local_c0 = (float)fVar8; + fVar8 = FUN_0043ae0b((uint *)(param_1 + 0x1fe)); + local_c4 = (float)fVar8; + fVar8 = FUN_0043ae0b(puVar2); + local_c8 = (float)fVar8; + fVar8 = FUN_0043ae0b((uint *)(param_1 + 0x201)); + local_cc = (float)fVar8; + fVar8 = FUN_0043ae0b((uint *)(param_1 + 0x204)); + local_d0 = (float)fVar8; + FUN_0040a7f4(param_1 + 0x77,(undefined4 *)&DAT_004e0fd4); + if (_DAT_004ab178 < local_d0) { + param_1[0x79] = (int)((local_c0 - (float)param_1[0x207]) / local_d0); + param_1[0x78] = (int)((local_c8 - (float)param_1[0x20a]) / local_d0); + param_1[0x77] = (int)((local_c4 - (float)param_1[0x208]) / local_d0); + param_1[0x7b] = (int)((local_cc - (float)param_1[0x209]) / local_d0); + } + param_1[0x207] = (int)local_c0; + param_1[0x20a] = (int)local_c8; + local_d4 = param_1 + 0x77; + param_1[0x208] = (int)local_c4; + param_1[0x209] = (int)local_cc; + FUN_00408440(param_1 + 0x20b,local_d4); + FUN_00421b2c((int)param_1); + FUN_004a4ffb(local_12c,2); + return; +} + + + +/* @004ab188 file=? name=FUN_004ab188 */ + +void __cdecl FUN_004ab188(int param_1,float param_2) + +{ + float local_10 [3]; + + FUN_004086ac(local_10,(float *)(param_1 + 0x2d4),param_2); + FUN_00409f58((float *)(param_1 + 0x26c),(float *)(param_1 + 0x138),local_10); + return; +} + + + +/* @004ab1c8 file=? name=FUN_004ab1c8 */ + +undefined4 __cdecl FUN_004ab1c8(int param_1,float param_2,int param_3) + +{ + float *pfVar1; + int iVar2; + undefined4 uVar3; + float10 fVar4; + float local_64; + undefined4 local_60; + undefined4 local_5c; + undefined4 local_58; + float local_54 [3]; + float local_48 [3]; + float local_3c [12]; + float local_c; + float local_8; + + if (*(int *)(param_1 + 0x3f4) == 0) { + *(undefined4 *)(param_1 + 0x344) = *(undefined4 *)(param_1 + 0x5b8); + } + else { + *(undefined4 *)(param_1 + 0x344) = *(undefined4 *)(param_1 + 0x5bc); + } + iVar2 = FUN_0049fb54(param_1); + if (iVar2 == 0) { + if (((*(uint *)(param_1 + 0x28) & 0xc) == 4) && + (*(int *)(param_1 + 0x10) < *(int *)(param_1 + 0x2e0))) { + iVar2 = *(int *)(param_1 + 0x2e0) - *(int *)(param_1 + 0x778); + uVar3 = 1; + } + else { + iVar2 = *(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x778); + uVar3 = 0; + } + local_8 = (float)iVar2 / DAT_0052140c; + if (*(int *)(param_1 + 0x77c) != 0) { + if ((*(uint *)(param_1 + 0x28) & 0xc) == 4) { + FUN_00408644((float *)(param_1 + 0x598),(float *)(param_1 + 300),(float *)(param_1 + 0x100)) + ; + *(undefined4 *)(param_1 + 0x5a4) = 1; + *(undefined4 *)(param_1 + 0x77c) = 0; + } + else { + FUN_00408440((undefined4 *)(param_1 + 0x260),(undefined4 *)(param_1 + 300)); + *(undefined4 *)(param_1 + 0x77c) = 0; + } + } + if (((*(int *)(param_1 + 0x40) == 3) || (*(int *)(param_1 + 0x40) == 4)) && + (*(int *)(param_1 + 0x580) != 0)) { + fVar4 = FUN_004a5bf8(param_1,param_2,param_3); + } + else { + fVar4 = FUN_004a5678(param_1,param_2,param_3); + } + local_c = (float)fVar4; + *(float *)(param_1 + 0x2a0) = -local_c / param_2; + *(undefined4 *)(param_1 + 0x29c) = 0; + *(undefined4 *)(param_1 + 0x298) = 0; + FUN_004ab188(param_1,local_8); + FUN_00408440((undefined4 *)(param_1 + 0x2a4),(undefined4 *)(param_1 + 0x2d4)); + FUN_0040aadc(local_3c); + pfVar1 = (float *)(param_1 + 0x260); + FUN_0040ab44(local_3c,pfVar1); + FUN_00408744(local_48,(float *)(param_1 + 0x298),local_3c); + FUN_00408440(local_54,&DAT_004e0f74); + FUN_00408614(local_54,local_54,local_48,param_2); + FUN_004085ec(pfVar1,pfVar1,local_54); + FUN_00408440(local_54,&DAT_004e0f74); + FUN_00408614(local_54,local_54,(float *)(param_1 + 0x2a4),param_2); + local_64 = *(float *)(param_1 + 0x26c); + local_60 = *(undefined4 *)(param_1 + 0x270); + local_5c = *(undefined4 *)(param_1 + 0x274); + local_58 = *(undefined4 *)(param_1 + 0x278); + FUN_00409f58((float *)(param_1 + 0x26c),&local_64,local_54); + } + else { + FUN_0040a7f4((undefined4 *)(param_1 + 0x298),(undefined4 *)&DAT_004e0fd4); + uVar3 = 0; + } + return uVar3; +} + + + +/* @004ab430 file=? name=FUN_004ab430 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004ab430(int *param_1,float param_2) + +{ + float *pfVar1; + uint *puVar2; + int iVar3; + float10 fVar4; + int local_98; + float local_94; + int local_90; + float local_8c; + int local_88; + int local_84; + float local_80; + int local_7c; + int local_78; + float local_74; + float local_70; + float local_6c; + float local_68; + float local_64; + float local_60; + int *local_5c; + int local_58; + int *local_54; + int local_50; + int local_4c; + int local_48; + int *local_44; + int *local_40; + float *local_3c; + float local_38; + int *local_34; + float local_30; + float *local_2c; + float *local_28; + float local_24; + int *local_20; + float *local_1c; + float *local_18; + float local_14; + float local_10; + float local_c; + float local_8; + + FUN_0040a7f4(param_1 + 0x77,(undefined4 *)&DAT_004e0fd4); + iVar3 = FUN_004ab1c8((int)param_1,param_2,1); + if (iVar3 == 0) { + if (param_1[0x169] == 1) { + local_8c = (float)param_1[0x166]; + local_34 = param_1 + 5; + local_88 = param_1[0x167]; + local_84 = param_1[0x168]; + local_30 = (_DAT_004ab9cc - (float)(param_1[4] - *local_34) / DAT_0052140c) + param_2; + if (local_30 <= param_2) { + param_1[0x169] = 0; + } + else { + local_38 = param_2 / local_30; + FUN_004086ac(&local_8c,&local_8c,local_38); + } + pfVar1 = (float *)(param_1 + 0x98); + local_3c = pfVar1; + FUN_004085ec(pfVar1,pfVar1,&local_8c); + param_1[0x99] = param_1[0x41]; + FUN_0040a938(param_1 + 0x40,pfVar1); + FUN_00408644((float *)(param_1 + 0x166),(float *)(param_1 + 0x166),&local_8c); + } + else { + param_1[0x99] = param_1[0x41]; + FUN_0040a938(param_1 + 0x40,param_1 + 0x98); + } + local_40 = param_1 + 0xa6; + FUN_00408440(param_1 + 0x7d,local_40); + local_44 = param_1 + 0xa9; + FUN_00408440(param_1 + 0x74,local_44); + } + else { + local_8 = param_2 / ((float)(param_1[0xb8] - param_1[4]) / DAT_0052140c + param_2); + FUN_0040a4d8((float *)(param_1 + 0x43),(float *)(param_1 + 0x43),(float *)(param_1 + 0x9b), + local_8); + local_c = local_8; + FUN_00408848((float *)(param_1 + 0x74),(float *)(param_1 + 0x74),_DAT_004ab9c8 - local_8, + (float *)(param_1 + 0xa9),local_8); + if (param_1[0x169] == 1) { + local_80 = (float)param_1[0x166]; + local_7c = param_1[0x167]; + local_78 = param_1[0x168]; + local_10 = (_DAT_004ab9cc - (float)(param_1[4] - param_1[5]) / DAT_0052140c) + param_2; + if (local_10 <= param_2) { + param_1[0x169] = 0; + } + else { + local_14 = param_2 / local_10; + FUN_004086ac(&local_80,&local_80,local_14); + } + pfVar1 = (float *)(param_1 + 0x98); + local_18 = pfVar1; + FUN_004085ec(pfVar1,pfVar1,&local_80); + param_1[0x99] = param_1[0x41]; + local_1c = pfVar1; + FUN_00408440(param_1 + 0x40,pfVar1); + FUN_00408644((float *)(param_1 + 0x166),(float *)(param_1 + 0x166),&local_80); + } + else { + local_20 = param_1 + 0x98; + param_1[0x99] = param_1[0x41]; + FUN_00408440(param_1 + 0x40,local_20); + } + local_24 = local_8; + local_28 = (float *)(param_1 + 0xa6); + local_2c = (float *)(param_1 + 0x7d); + FUN_00408848((float *)(param_1 + 0x7d),local_2c,_DAT_004ab9c8 - local_8,local_28,local_8); + } + if ((*(byte *)((int)param_1 + 0x29) & 0x40) == 0) { + (**(code **)(*param_1 + 0x34))(param_1); + local_48 = *(int *)(DAT_004efc94 + 0x30); + local_50 = param_1[0x65]; + local_4c = FUN_00433ed4(local_48 + 0x14); + local_54 = *(int **)(local_4c + 0x30); + local_58 = param_1[0xba]; + iVar3 = FUN_0040e36c(*local_54,local_58); + param_1[0xbc] = iVar3; + } + else { + local_5c = param_1 + 0x40; + FUN_0040ab44((float *)(param_1 + 0x34),local_5c); + } + local_98 = param_1[0x40]; + local_90 = param_1[0x42]; + local_94 = *(float *)(param_1[0xbb] + 8) + (float)param_1[0x41]; + FUN_0040e5f0(param_1[0xbc],(int)&local_98,&local_60); + if (local_60 != _DAT_004ab9d0) { + local_60 = local_60 - *(float *)(param_1[0xbb] + 8); + param_1[0x41] = (int)((float)param_1[0x41] - local_60); + *(float *)(param_1[0xba] + 8) = *(float *)(param_1[0xba] + 8) - local_60; + *(float *)(param_1[0xba] + 0xc) = *(float *)(param_1[0xba] + 0xc) - local_60; + } + FUN_00421b6c((int)param_1); + puVar2 = (uint *)(param_1 + 0x1f8); + FUN_0043ade4(puVar2,param_1[0x73]); + FUN_0043ade4((uint *)(param_1 + 0x1fb),param_1[0x72]); + FUN_0043ade4((uint *)(param_1 + 0x1fe),param_1[0x71]); + FUN_0043ade4((uint *)(param_1 + 0x201),param_1[0x75]); + FUN_0043ade4((uint *)(param_1 + 0x204),param_2); + fVar4 = FUN_0043ae47(puVar2); + local_64 = (float)fVar4; + fVar4 = FUN_0043ae0b((uint *)(param_1 + 0x1fe)); + local_68 = (float)fVar4; + fVar4 = FUN_0043ae0b(puVar2); + local_6c = (float)fVar4; + fVar4 = FUN_0043ae0b((uint *)(param_1 + 0x201)); + local_70 = (float)fVar4; + fVar4 = FUN_0043ae0b((uint *)(param_1 + 0x204)); + local_74 = (float)fVar4; + FUN_0040a7f4(param_1 + 0x77,(undefined4 *)&DAT_004e0fd4); + if (_DAT_004ab9d4 < local_74) { + param_1[0x79] = (int)((local_64 - (float)param_1[0x207]) / local_74); + param_1[0x78] = (int)((local_6c - (float)param_1[0x20a]) / local_74); + param_1[0x77] = (int)((local_68 - (float)param_1[0x208]) / local_74); + param_1[0x7b] = (int)((local_70 - (float)param_1[0x209]) / local_74); + } + param_1[0x207] = (int)local_64; + param_1[0x20a] = (int)local_6c; + param_1[0x208] = (int)local_68; + param_1[0x209] = (int)local_70; + FUN_00421b2c((int)param_1); + return; +} + + + +/* @004ab9d8 file=? name=FUN_004ab9d8 */ + +void __cdecl FUN_004ab9d8(int *param_1,float param_2) + +{ + int iVar1; + int local_44 [7]; + int local_28; + int local_24; + int local_20; + undefined4 local_1c [6]; + + param_1[0x196] = 0; + FUN_0040a7c0(local_1c,param_1 + 0x77); + local_28 = param_1[0x80]; + local_24 = param_1[0x81]; + local_20 = param_1[0x82]; + FUN_0040a7f4(param_1 + 0x77,(undefined4 *)&DAT_004e0fd4); + FUN_00408440(param_1 + 0x80,&DAT_004e0f74); + iVar1 = param_1[0x172]; + FUN_0041d3b3(local_44,param_1[0x1bd] + 0xe4); + iVar1 = (**(code **)(local_44[0] + 0x34))(local_44,iVar1); + FUN_0041d3d2(local_44,2); + if ((param_1[0x1ca] != 0) && (param_1[0x1ca] != 1)) { + if (*(float *)param_1[0x1b7] < *(float *)(*(int *)(iVar1 + 0xc) + 4)) { + param_1[0xe5] = 0; + } + else { + param_1[0xe5] = 1; + } + } + FUN_004ab430(param_1,param_2); + if (param_1[0x10e] != 0) { + FUN_004b67ec(param_1[0x10e]); + } + FUN_0040a7f4(param_1 + 0x77,local_1c); + FUN_00408440(param_1 + 0x80,&local_28); + iVar1 = param_1[0x136]; + if (iVar1 != param_1[0x135]) { + if (iVar1 == 0) { + FUN_004ac04c((int)param_1); + } + else if (iVar1 == 1) { + FUN_004ac064((int)param_1); + } + } + FUN_0041bbd8((int)(param_1 + 0x131),param_1[0x136]); + return; +} + + + +/* @004abb40 file=? name=FUN_004abb40 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl +FUN_004abb40(int param_1,float param_2,int *param_3,undefined4 param_4,undefined4 *param_5) + +{ + int *piVar1; + int iVar2; + float10 fVar3; + undefined4 local_17c; + undefined4 local_178; + undefined4 local_174; + undefined4 local_170 [2]; + undefined4 local_168; + undefined4 local_164; + undefined4 local_160 [2]; + int local_158; + uint local_154; + undefined4 local_150; + undefined4 local_14c; + undefined4 local_148; + undefined4 local_144; + undefined4 local_140; + undefined4 local_13c; + undefined4 local_138; + undefined4 local_134; + undefined4 local_130; + undefined4 local_12c; + undefined4 local_128; + undefined4 local_124; + undefined4 local_120; + undefined4 local_11c; + undefined4 local_118; + undefined4 local_114; + undefined4 local_110; + undefined4 local_10c; + undefined4 local_108; + undefined4 local_104; + undefined4 local_100; + undefined4 local_fc; + undefined4 local_f8; + undefined4 local_f4; + undefined4 local_f0; + undefined4 local_ec; + float local_e8; + float local_e4; + float local_e0; + undefined4 local_dc; + undefined4 local_d8; + undefined4 local_d4; + undefined4 local_d0 [2]; + undefined4 local_c8; + undefined4 local_c4; + undefined4 local_c0 [2]; + int local_b8; + uint local_b4; + undefined4 local_b0; + undefined4 local_ac; + undefined4 local_a8; + undefined4 local_a4; + undefined4 local_a0; + undefined4 local_9c; + undefined4 local_98; + undefined4 local_94; + undefined4 local_90; + undefined4 local_8c; + undefined4 local_88; + undefined4 local_84; + undefined4 local_80; + undefined4 local_7c; + undefined4 local_78; + undefined4 local_74; + undefined4 local_70; + undefined4 local_6c; + undefined4 local_68; + undefined4 local_64; + undefined4 local_60; + undefined4 local_5c; + undefined4 local_58; + undefined4 local_54; + undefined4 local_50; + undefined4 local_4c; + float local_48 [3]; + float local_3c; + float local_38; + float local_34; + undefined4 *local_30; + uint local_2c; + int *local_28; + undefined4 *local_24; + int local_20; + undefined4 *local_1c; + int *local_18; + float local_14; + float local_10; + float local_c; + float local_8; + + iVar2 = (**(code **)(*(int *)(*(int *)(param_1 + 0x2e8) + 0x18) + 0x1c)) + (*(int *)(param_1 + 0x2e8),param_3,param_1 + 500, + *(undefined4 *)(param_1 + 0x2f8),param_5 + 5,&local_10); + if (iVar2 != 0) { + if (param_2 < local_10) { + local_10 = param_2; + } + local_14 = local_10 / param_2; + local_c = *(float *)(param_1 + 0x244); + local_8 = *(float *)(param_1 + 0x240); + piVar1 = *(int **)(*param_3 + 0x1c); + fVar3 = FUN_00422ff8(param_1,param_4,param_2,local_14,(float *)(param_5 + 5),&local_c, + *(float *)(param_1 + 0x248),&local_8); + param_5[1] = (float)fVar3; + if ((piVar1 != (int *)0x0) && (iVar2 = FUN_0041a1a4(*(int *)piVar1[3],0x4e4518), iVar2 != 0)) { + local_18 = piVar1; + (**(code **)(*piVar1 + 0x20))(local_48,piVar1); + FUN_00408644(&local_3c,(float *)(param_1 + 500),local_48); + if (local_34 * (float)param_5[7] + local_38 * (float)param_5[6] + local_3c * (float)param_5[5] + < _DAT_004ac044) { + return; + } + if (local_18[1] == 0xbb9) { + FUN_0041db7c((int)&local_78); + local_1c = param_5; + local_78 = *param_5; + local_74 = param_5[1]; + local_4c = param_5[0xb]; + FUN_00408440(&local_70,param_5 + 2); + FUN_00408440(&local_64,local_1c + 5); + FUN_00408440(&local_58,local_1c + 8); + local_20 = DAT_0050b9ac; + local_24 = (undefined4 *)(param_1 + 0x184); + local_dc = 100; + local_d8 = 0x12; + local_d4 = 1; + FUN_00420ea4(local_d0,(undefined4 *)&DAT_00522524); + local_c8 = 0; + local_c4 = 0; + FUN_00420ea4(local_c0,local_24); + local_b8 = local_20; + local_b4 = (uint)(local_20 < 0); + local_b0 = local_78; + local_ac = local_74; + local_a8 = local_70; + local_a4 = local_6c; + local_a0 = local_68; + local_9c = local_64; + local_98 = local_60; + local_94 = local_5c; + local_90 = local_58; + local_8c = local_54; + local_88 = local_50; + local_84 = local_4c; + local_80 = 0xffffffff; + local_7c = 1; + (**(code **)(*local_18 + 0xc))(local_18,&local_dc); + } + } + if ((piVar1 != (int *)0x0) && (iVar2 = FUN_0041a1a4(*(int *)piVar1[3],0x4e7038), iVar2 != 0)) { + local_2c = piVar1[10] & 0x8000; + local_28 = piVar1; + FUN_00408644(&local_e8,(float *)(param_1 + 500),(float *)&DAT_004e0f74); + if (local_e0 * (float)param_5[7] + local_e4 * (float)param_5[6] + local_e8 * (float)param_5[5] + < _DAT_004ac044) { + return; + } + FUN_0041db7c((int)&local_118); + local_118 = *param_5; + local_114 = param_5[1]; + local_ec = param_5[0xb]; + FUN_00408440(&local_110,param_5 + 2); + FUN_00408440(&local_104,param_5 + 5); + FUN_00408440(&local_f8,param_5 + 8); + iVar2 = DAT_0050b9ac; + local_30 = (undefined4 *)(param_1 + 0x184); + local_17c = 100; + local_178 = 0x12; + local_174 = 1; + FUN_00420ea4(local_170,(undefined4 *)&DAT_00522524); + local_168 = 0; + local_164 = 0; + FUN_00420ea4(local_160,local_30); + local_158 = iVar2; + local_154 = (uint)(iVar2 < 0); + local_150 = local_118; + local_14c = local_114; + local_148 = local_110; + local_144 = local_10c; + local_140 = local_108; + local_13c = local_104; + local_138 = local_100; + local_134 = local_fc; + local_130 = local_f8; + local_12c = local_f4; + local_128 = local_f0; + local_124 = local_ec; + local_120 = 0xffffffff; + local_11c = 1; + (**(code **)(*local_28 + 0xc))(local_28,&local_17c); + if (local_2c == 0) { + param_5[1] = 0x3aa137f4; + } + } + if (local_c == _DAT_004ac048) { + if ((local_8 == _DAT_004ac048) && (*(int *)(param_1 + 0x44c) == 0)) { + *(undefined4 *)(param_1 + 0x44c) = 2; + } + } + else { + *(undefined4 *)(param_1 + 0x44c) = 1; + } + } + return; +} + + + +/* @004ac04c file=? name=FUN_004ac04c */ + +void __cdecl FUN_004ac04c(int param_1) + +{ + *(undefined4 *)(*(int *)(param_1 + 0x2ec) + 0xc) = *(undefined4 *)(param_1 + 0x51c); + return; +} + + + +/* @004ac064 file=? name=FUN_004ac064 */ + +void __cdecl FUN_004ac064(int param_1) + +{ + *(undefined4 *)(*(int *)(param_1 + 0x2ec) + 0xc) = *(undefined4 *)(param_1 + 0x518); + return; +} + + + +/* @004ac07c file=? name=FUN_004ac07c */ + +float10 __cdecl FUN_004ac07c(int *param_1,undefined4 param_2) + +{ + float fVar1; + + fVar1 = *(float *)(param_1[0x38] + 0x158); + (**(code **)(*param_1 + 0x24))(param_1,param_2); + return (float10)(*(float *)(param_1[0x38] + 0x158) - fVar1); +} + + + +/* @004ac0bc file=? name=FUN_004ac0bc */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004ac0bc(int *param_1,undefined4 param_2) + +{ + (**(code **)(*(int *)param_1[0x38] + 0x18))((int *)param_1[0x38],param_2); + if (_DAT_004ac140 <= *(float *)(param_1[0x38] + 0x158)) { + FUN_0041bbd8((int)(param_1 + 0xb),1); + if (param_1[0x41] != 0) { + (**(code **)(*param_1 + 0x34))(param_1); + } + *(undefined4 *)(param_1[0x38] + 0x158) = 0x3f800000; + if (param_1[0x39] != 0) { + FUN_0041bbd8(param_1[0x34] + 0x2c,9); + } + } + return; +} + + + +/* @004ac144 file=? name=FUN_004ac144 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl FUN_004ac144(int param_1) + +{ + if (_DAT_004ac18c <= *(float *)(*(int *)(param_1 + 0xe0) + 0x158)) { + return 1; + } + if (_DAT_004ac190 < *(float *)(*(int *)(param_1 + 0xe0) + 0x158)) { + return 2; + } + return 0; +} + + + +/* @004ac194 file=? name=FUN_004ac194 */ + +undefined4 __cdecl FUN_004ac194(char *param_1,undefined4 *param_2) + +{ + int iVar1; + undefined **ppuVar2; + + ppuVar2 = &PTR_s_Destroyed_0050de74; + while( true ) { + if (*ppuVar2 == (char *)0x0) { + return 0; + } + iVar1 = FUN_004d4b58(param_1,*ppuVar2); + if (iVar1 == 0) break; + ppuVar2 = ppuVar2 + 2; + } + *param_2 = ppuVar2[1]; + return 1; +} + + + +/* @004ac1d4 file=? name=FUN_004ac1d4 */ + +undefined4 __cdecl FUN_004ac1d4(int *param_1,int param_2) + +{ + undefined4 uVar1; + + if (param_2 == 0) { + if (param_1[0x38] != 0) { + *(undefined4 *)(param_1[0x38] + 0x158) = 0x3f800000; + } + FUN_0041bbd8((int)(param_1 + 0xb),1); + if (param_1[0x41] != 0) { + (**(code **)(*param_1 + 0x34))(param_1); + } + return 1; + } + uVar1 = FUN_0041c800(); + return uVar1; +} + + + +/* @004ac22c file=? name=FUN_004ac22c */ + +void __cdecl FUN_004ac22c(int *param_1) + +{ + int iVar1; + + iVar1 = param_1[0x38]; + *(undefined4 *)(iVar1 + 0x158) = 0; + FUN_0041bbd8(iVar1 + 0x10,0); + FUN_0041bbd8((int)(param_1 + 0xb),0); + if (param_1[0x41] != 0) { + (**(code **)(*param_1 + 0x34))(param_1); + } + return; +} + + + +/* @004ac274 file=? name=FUN_004ac274 */ + +void __cdecl FUN_004ac274(int *param_1,undefined4 *param_2) + +{ + int iVar1; + undefined4 local_dc; + undefined4 local_d8; + undefined4 local_d4; + undefined4 local_d0 [2]; + undefined4 local_c8; + undefined4 local_c4; + undefined4 local_c0 [2]; + int local_b8; + uint local_b4; + undefined4 local_b0; + undefined4 local_ac; + undefined4 local_a8; + undefined4 local_a4; + undefined4 local_a0; + undefined4 local_9c; + undefined4 local_98; + undefined4 local_94; + undefined4 local_90; + undefined4 local_8c; + undefined4 local_88; + undefined4 local_84; + int local_80; + uint local_7c; + undefined4 local_78 [15]; + int local_3c [3]; + int local_30 [4]; + int local_20 [4]; + int *local_10; + int local_c; + int *local_8; + + FUN_0041bbd8((int)(param_1 + 0xb),2); + if (param_1[0x41] != 0) { + (**(code **)(*param_1 + 0x34))(param_1); + } + FUN_0041bbd8((int)(param_1 + 0xb),1); + if (param_1[0x41] != 0) { + (**(code **)(*param_1 + 0x34))(param_1); + } + *(undefined4 *)(param_1[0x38] + 0x158) = 0x3f800000; + FUN_004acfa9(local_20,(int)param_1,0xffffffff); + FUN_004ad03a(local_30,0); + while( true ) { + iVar1 = (**(code **)(local_20[0] + 0x28))(local_20); + if (iVar1 == 0) break; + if (*(int *)(iVar1 + 4) == 0x4e) { + (**(code **)(local_30[0] + 4))(local_30,iVar1); + } + } + FUN_004ad0a4(local_3c,(int)local_30); + iVar1 = (**(code **)(local_3c[0] + 0x14))(local_3c); + param_2[1] = (float)param_2[1] / (float)iVar1; + FUN_0040aadc(local_78); + local_8 = (int *)param_1[0x34]; + while( true ) { + iVar1 = (**(code **)(local_3c[0] + 0x28))(local_3c); + if (iVar1 == 0) break; + FUN_004dbb24(&DAT_00524e20,s_ammo_explosion_damaging_0050df61,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,*(char **)(*(int *)(iVar1 + 0x15c) + 8),(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + local_c = param_1[0x36]; + local_10 = local_8 + 0x61; + iVar1 = *(int *)(iVar1 + 0x13c); + local_dc = 100; + local_d8 = 0x12; + local_d4 = 1; + FUN_00420ea4(local_d0,(undefined4 *)&DAT_00522524); + local_c8 = 0; + local_c4 = 0; + FUN_00420ea4(local_c0,local_10); + local_b4 = (uint)(iVar1 < 0); + local_b0 = *param_2; + local_ac = param_2[1]; + local_a8 = param_2[2]; + local_a4 = param_2[3]; + local_a0 = param_2[4]; + local_9c = param_2[5]; + local_98 = param_2[6]; + local_94 = param_2[7]; + local_90 = param_2[8]; + local_8c = param_2[9]; + local_88 = param_2[10]; + local_84 = param_2[0xb]; + local_80 = local_c; + local_7c = (uint)(local_c < 0); + local_b8 = iVar1; + (**(code **)(*local_8 + 0xc))(local_8,&local_dc); + } + FUN_004ad0e2(local_3c,2); + FUN_004ad059(local_30,2); + FUN_004ad00e(local_20,2); + return; +} + + + +/* @004ac4fc file=? name=FUN_004ac4fc */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 __cdecl +FUN_004ac4fc(undefined4 param_1,float param_2,float param_3,float param_4,float param_5) + +{ + float fVar1; + + fVar1 = (_DAT_004ac52c - param_4) / (param_2 - param_3); + return (float10)fVar1 * (float10)param_5 + (float10)(param_2 - fVar1); +} + + + +/* @004ac530 file=? name=FUN_004ac530 */ + +undefined4 * __cdecl +FUN_004ac530(undefined4 *param_1,undefined4 param_2,undefined4 param_3,int *param_4, + undefined4 param_5,undefined4 param_6,undefined4 param_7,undefined4 param_8) + +{ + int *piVar1; + undefined4 *puVar2; + int iVar3; + int *local_8; + + FUN_0041c5c0(param_1,param_2,param_3,(char *)param_4[2],param_5,param_6); + *param_1 = &PTR_FUN_0050e210; + puVar2 = (undefined4 *)FUN_00402298(0x10); + if (puVar2 == (undefined4 *)0x0) { + iVar3 = 0; + } + else { + iVar3 = FUN_004023f4(puVar2); + } + param_1[0x3d] = iVar3; + piVar1 = (int *)(param_1[0x3d] + 0xc); + *piVar1 = *piVar1 + 1; + param_1[0x3a] = param_7; + param_1[0x3b] = param_8; + param_1[0x39] = 0; + FUN_00402a98((int *)&local_8,param_1 + 0x3d,&DAT_0050df7a); + piVar1 = local_8 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_8,3); + } + FUN_00408440(param_1 + 0x3e,&DAT_004e0f80); + param_1[0x42] = 0; + param_1[0x43] = 0; + param_1[0x41] = 0; + param_1[0x44] = 0xffffffff; + puVar2 = (undefined4 *)FUN_00402298(0x160); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_0041de1c(puVar2,param_1,0); + } + param_1[0x38] = puVar2; + piVar1 = param_4 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(param_4,3); + } + return param_1; +} + + + +/* @004ac644 file=? name=FUN_004ac644 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +int * __cdecl +FUN_004ac644(int *param_1,undefined4 param_2,undefined4 param_3,char *param_4,undefined4 param_5, + int param_6,int param_7) + +{ + int *piVar1; + int iVar2; + int iVar3; + undefined4 *puVar4; + char *pcVar5; + float10 fVar6; + int *local_10; + int *local_c; + undefined4 *local_8; + + FUN_0041c52c(param_1,param_2,param_3,param_4,param_5); + *param_1 = (int)&PTR_FUN_0050e210; + local_8 = (undefined4 *)FUN_00402298(0x10); + if (local_8 == (undefined4 *)0x0) { + iVar3 = 0; + } + else { + iVar3 = FUN_004023f4(local_8); + } + param_1[0x3d] = iVar3; + piVar1 = (int *)(param_1[0x3d] + 0xc); + *piVar1 = *piVar1 + 1; + param_1[0x41] = 0; + FUN_0041bbd8((int)(param_1 + 0xb),0); + if (param_1[0x41] != 0) { + (**(code **)(*param_1 + 0x34))(); + } + param_1[0x3a] = param_6; + param_1[0x3b] = param_7; + param_1[0x3c] = (int)param_4; + param_1[0x44] = -1; + if (*(int *)(param_4 + 0x48) == 1) { + param_1[0x39] = 1; + } + else { + param_1[0x39] = 0; + } + FUN_00402a98((int *)&local_c,param_1 + 0x3d,param_4 + 0x4c); + piVar1 = local_c + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_c,3); + } + FUN_00408440(param_1 + 0x3e,(undefined4 *)(param_4 + 0xcc)); + param_1[0x41] = *(int *)(param_4 + 0xd8); + param_1[0x42] = *(int *)(param_4 + 0xe0); + param_1[0x43] = *(int *)(param_4 + 0xdc); + puVar4 = (undefined4 *)FUN_00402298(0x160); + if (puVar4 == (undefined4 *)0x0) { + puVar4 = (undefined4 *)0x0; + } + else { + puVar4 = FUN_0041de1c(puVar4,param_1,0); + } + param_1[0x38] = (int)puVar4; + FUN_00402a98((int *)&local_10,(int *)(param_1[0x38] + 0x15c),(char *)param_1[0x35]); + piVar1 = local_10 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_10,3); + } + iVar3 = 0; + pcVar5 = param_4 + 0x30; + *(undefined4 *)(param_1[0x38] + 0x140) = *(undefined4 *)(param_4 + 0x44); + do { + *(undefined4 *)(param_1[0x38] + 0x144 + iVar3 * 4) = *(undefined4 *)pcVar5; + iVar3 = iVar3 + 1; + pcVar5 = pcVar5 + 4; + } while (iVar3 < 5); + iVar3 = 0; + do { + fVar6 = FUN_004dcd00((double)(*(float *)(param_1[0x38] + 0x144 + iVar3 * 4) - + _DAT_004ac860 / *(float *)(param_1[0x38] + 0x140))); + if ((float10)_DAT_004ac864 < fVar6) { + iVar2 = param_1[0x38]; + *(float *)(iVar2 + 0x144 + iVar3 * 4) = + _DAT_004ac860 / (*(float *)(iVar2 + 0x144 + iVar3 * 4) * *(float *)(iVar2 + 0x140)); + } + iVar3 = iVar3 + 1; + } while (iVar3 < 5); + return param_1; +} + + + +/* @004ac868 file=? name=FUN_004ac868 */ + +void __cdecl FUN_004ac868(int *param_1,byte param_2) + +{ + int *piVar1; + undefined4 *puVar2; + int *piVar3; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0050e210; + puVar2 = (undefined4 *)param_1[0x38]; + if (puVar2 != (undefined4 *)0x0) { + (**(code **)*puVar2)(puVar2,3); + } + piVar3 = (int *)param_1[0x3d]; + piVar1 = piVar3 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(piVar3,3); + } + FUN_0041c648(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004ac8c0 file=? name=FUN_004ac8c0 */ + +void __cdecl FUN_004ac8c0(int param_1) + +{ + int iVar1; + uint uVar2; + int *piVar3; + + iVar1 = *(int *)(param_1 + 0x40); + if (iVar1 == 0) { + FUN_004dbb24(&DAT_00524e20,*(char **)(param_1 + 0xd4),(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s___DefaultState_0050df99,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + return; + } + if (iVar1 != 1) { + if (iVar1 != 2) { + uVar2 = *(uint *)(param_1 + 0x40); + FUN_004dbb24(&DAT_00524e20,*(char **)(param_1 + 0xd4),(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s___UnknownState______0050dfa9,(char *)0x0); + piVar3 = FUN_004db880(&DAT_00524e20,uVar2); + FUN_004d9c38(piVar3); + return; + } + FUN_004dbb24(&DAT_00524e20,*(char **)(param_1 + 0xd4),(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s___Exploding_0050df8c,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + return; + } + FUN_004dbb24(&DAT_00524e20,*(char **)(param_1 + 0xd4),(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s___Destroyed_0050df7f,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + return; +} + + + +/* @004ac9c8 file=? name=FUN_004ac9c8 */ + +bool __cdecl FUN_004ac9c8(int param_1) + +{ + return *(int *)(*(int *)(*(int *)(param_1 + 0xd0) + 400) + 0x274) == 0; +} + + + +/* @004ac9ec file=? name=FUN_004ac9ec */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl +FUN_004ac9ec(int param_1,char *param_2,char *param_3,char *param_4,int param_5,int param_6, + int param_7) + +{ + char *pcVar1; + char cVar2; + int iVar3; + undefined4 uVar4; + char *pcVar5; + uint uVar6; + uint uVar7; + char *pcVar8; + bool bVar9; + float local_20; + float local_1c; + char *local_18; + char *local_14; + char *local_10; + char *local_c; + int local_8; + + iVar3 = FUN_0041c684(param_1,param_2,param_3,param_4,param_5,param_6); + if (iVar3 == 0) { + uVar4 = 0; + } + else { + param_4[0x24] = -0x1c; + param_4[0x25] = '\0'; + param_4[0x26] = '\0'; + param_4[0x27] = '\0'; + param_4[0x20] = -0x45; + param_4[0x21] = '\v'; + param_4[0x22] = '\0'; + param_4[0x23] = '\0'; + if (param_7 == 1) { + param_4[0xe0] = '\0'; + param_4[0xe1] = '\0'; + param_4[0xe2] = -0x80; + param_4[0xe3] = -0x41; + local_8 = 0; + pcVar5 = param_4 + 0x30; + do { + pcVar5[0] = '\0'; + pcVar5[1] = '\0'; + pcVar5[2] = -0x80; + pcVar5[3] = -0x41; + local_8 = local_8 + 1; + pcVar5 = pcVar5 + 4; + } while (local_8 < 5); + param_4[0x48] = -1; + param_4[0x49] = -1; + param_4[0x4a] = -1; + param_4[0x4b] = -1; + iVar3 = 0; + pcVar5 = param_4 + 0x4c; + do { + *pcVar5 = '\0'; + iVar3 = iVar3 + 1; + pcVar5 = pcVar5 + 1; + } while (iVar3 < 0x80); + *(undefined4 *)(param_4 + 0x4c) = DAT_0050dfc0; + param_4[0x50] = DAT_0050dfc4; + local_c = param_4 + 0xcc; + FUN_00408440((undefined4 *)local_c,&DAT_004e0f80); + param_4[0x44] = '\0'; + param_4[0x45] = '\0'; + param_4[0x46] = -0x80; + param_4[0x47] = -0x41; + param_4[0xd8] = '\0'; + param_4[0xd9] = '\0'; + param_4[0xda] = '\0'; + param_4[0xdb] = '\0'; + param_4[0xdc] = '\0'; + param_4[0xdd] = '\0'; + param_4[0xde] = '\0'; + param_4[0xdf] = '\0'; + } + FUN_00404190(param_5,param_3,s_PrintSimulationState_0050dfc5,(undefined4 *)(param_4 + 0xd8)); + FUN_00404118(param_5,param_3,s_CollisionCriticalHitWeight_0050dfda,(float *)(param_4 + 0xdc)); + local_10 = s_Unspecified_0050dff5; + FUN_00404088(param_5,param_3,s_VideoObjectName_0050e001,&local_10); + pcVar8 = s_Unspecified_0050e011; + pcVar5 = local_10; + do { + bVar9 = *pcVar5 == *pcVar8; + if (!bVar9) break; + if (*pcVar5 == '\0') goto LAB_004acb51; + pcVar1 = pcVar5 + 1; + bVar9 = *pcVar1 == pcVar8[1]; + if (!bVar9) break; + pcVar5 = pcVar5 + 2; + pcVar8 = pcVar8 + 2; + bVar9 = *pcVar1 == '\0'; + } while (!bVar9); + if (!bVar9) { + uVar6 = 0xffffffff; + pcVar5 = local_10; + do { + pcVar8 = pcVar5; + if (uVar6 == 0) break; + uVar6 = uVar6 - 1; + pcVar8 = pcVar5 + 1; + cVar2 = *pcVar5; + pcVar5 = pcVar8; + } while (cVar2 != '\0'); + uVar6 = ~uVar6; + pcVar5 = pcVar8 + -uVar6; + pcVar8 = param_4 + 0x4c; + for (uVar7 = uVar6 >> 2; uVar7 != 0; uVar7 = uVar7 - 1) { + *(undefined4 *)pcVar8 = *(undefined4 *)pcVar5; + pcVar5 = pcVar5 + 4; + pcVar8 = pcVar8 + 4; + } + for (uVar6 = uVar6 & 3; uVar6 != 0; uVar6 = uVar6 - 1) { + *pcVar8 = *pcVar5; + pcVar5 = pcVar5 + 1; + pcVar8 = pcVar8 + 1; + } + } +LAB_004acb51: + local_14 = s_Unspecified_0050e01d; + iVar3 = FUN_00404088(param_5,param_3,s_VitalSubsystem_0050e029,&local_14); + if ((iVar3 == 0) && (*(int *)(param_4 + 0x48) == -1)) { + FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_missing_VitalSubsystem__0050e038,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + uVar4 = 0; + } + else { + pcVar8 = s_Unspecified_0050e052; + pcVar5 = local_14; + do { + if (*pcVar5 != *pcVar8) goto LAB_004acbd7; + bVar9 = true; + if (*pcVar5 == '\0') break; + pcVar1 = pcVar5 + 1; + if (*pcVar1 != pcVar8[1]) goto LAB_004acbd7; + pcVar5 = pcVar5 + 2; + pcVar8 = pcVar8 + 2; + bVar9 = *pcVar1 == '\0'; + } while (!bVar9); + if (!bVar9) { +LAB_004acbd7: + pcVar8 = &DAT_0050e05e; + pcVar5 = local_14; + do { + if (*pcVar5 != *pcVar8) goto LAB_004acc06; + bVar9 = true; + if (*pcVar5 == '\0') break; + pcVar1 = pcVar5 + 1; + if (*pcVar1 != pcVar8[1]) goto LAB_004acc06; + pcVar5 = pcVar5 + 2; + pcVar8 = pcVar8 + 2; + bVar9 = *pcVar1 == '\0'; + } while (!bVar9); + if (bVar9) { + param_4[0x48] = '\x01'; + param_4[0x49] = '\0'; + param_4[0x4a] = '\0'; + param_4[0x4b] = '\0'; + } + else { +LAB_004acc06: + pcVar8 = s_False_0050e063; + pcVar5 = local_14; + do { + if (*pcVar5 != *pcVar8) goto LAB_004acc33; + bVar9 = true; + if (*pcVar5 == '\0') break; + pcVar1 = pcVar5 + 1; + if (*pcVar1 != pcVar8[1]) goto LAB_004acc33; + pcVar5 = pcVar5 + 2; + pcVar8 = pcVar8 + 2; + bVar9 = *pcVar1 == '\0'; + } while (!bVar9); + if (!bVar9) { +LAB_004acc33: + FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s___VitalSubsystem_must_be_True_or_0050e069,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + return 0; + } + param_4[0x48] = '\0'; + param_4[0x49] = '\0'; + param_4[0x4a] = '\0'; + param_4[0x4b] = '\0'; + } + } + iVar3 = FUN_00404088(param_5,param_3,s_SiteOffset_0050e092,&local_18); + if (iVar3 != 0) { + FUN_00408944(local_18,(float *)(param_4 + 0xcc)); + } + iVar3 = FUN_00404118(param_5,param_3,s_WeaponDamagePoints_0050e09d,(float *)(param_4 + 0x44)); + if ((iVar3 == 0) && (_DAT_004aceec == *(float *)(param_4 + 0x44))) { + FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_Must_have_a_WeaponDamagePoints_0050e0b0,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + uVar4 = 0; + } + else { + iVar3 = FUN_00404118(param_5,param_3,s_CriticalHitScoreBonus_0050e0d0, + (float *)(param_4 + 0xe0)); + if ((iVar3 == 0) && (_DAT_004aceec == *(float *)(param_4 + 0xe0))) { + FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_Must_have_a_CriticalHitScoreBonu_0050e0e6,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + uVar4 = 0; + } + else { + local_1c = _DAT_004acef0 / *(float *)(param_4 + 0x44); + local_20 = -1.0; + iVar3 = FUN_00404118(param_5,param_3,s_CollisionDamagePoints_0050e109,&local_20); + if ((iVar3 == 0) && (*(float *)(param_4 + 0x30) == _DAT_004aceec)) { + *(float *)(param_4 + 0x30) = local_1c; + } + if (local_20 != _DAT_004aceec) { + *(float *)(param_4 + 0x30) = _DAT_004acef0 / local_20; + } + local_20 = -1.0; + iVar3 = FUN_00404118(param_5,param_3,s_BallisticDamagePoints_0050e11f,&local_20); + if ((iVar3 == 0) && (*(float *)(param_4 + 0x34) == _DAT_004aceec)) { + *(float *)(param_4 + 0x34) = local_1c; + } + if (local_20 != _DAT_004aceec) { + *(float *)(param_4 + 0x34) = _DAT_004acef0 / local_20; + } + local_20 = -1.0; + iVar3 = FUN_00404118(param_5,param_3,s_ExplosiveDamagePoints_0050e135,&local_20); + if ((iVar3 == 0) && (*(float *)(param_4 + 0x38) == _DAT_004aceec)) { + *(float *)(param_4 + 0x38) = local_1c; + } + if (local_20 != _DAT_004aceec) { + *(float *)(param_4 + 0x38) = _DAT_004acef0 / local_20; + } + local_20 = -1.0; + iVar3 = FUN_00404118(param_5,param_3,s_LaserDamagePoints_0050e14b,&local_20); + if ((iVar3 == 0) && (*(float *)(param_4 + 0x3c) == _DAT_004aceec)) { + *(float *)(param_4 + 0x3c) = local_1c; + } + if (local_20 != _DAT_004aceec) { + *(float *)(param_4 + 0x3c) = _DAT_004acef0 / local_20; + } + local_20 = -1.0; + iVar3 = FUN_00404118(param_5,param_3,s_EnergyDamagePoints_0050e15d,&local_20); + if ((iVar3 == 0) && (*(float *)(param_4 + 0x40) == _DAT_004aceec)) { + *(float *)(param_4 + 0x40) = local_1c; + } + if (local_20 != _DAT_004aceec) { + *(float *)(param_4 + 0x40) = _DAT_004acef0 / local_20; + } + uVar4 = 1; + } + } + } + } + return uVar4; +} + + + +/* @004acfa9 file=? name=FUN_004acfa9 */ + +undefined4 * __cdecl FUN_004acfa9(undefined4 *param_1,int param_2,undefined4 param_3) + +{ + FUN_00415f30(param_1,param_2,param_3); + *param_1 = &PTR_FUN_0050e1c8; + return param_1; +} + + + +/* @004acfcc file=? name=FUN_004acfcc */ + +undefined4 * __cdecl FUN_004acfcc(undefined4 *param_1,int param_2,undefined4 param_3) + +{ + FUN_00415f30(param_1,param_2,param_3); + *param_1 = &PTR_FUN_0050e1c8; + return param_1; +} + + + +/* @004acfef file=? name=FUN_004acfef */ + +undefined4 * __cdecl FUN_004acfef(undefined4 *param_1,int param_2) + +{ + FUN_00415f60(param_1,param_2); + *param_1 = &PTR_FUN_0050e1c8; + return param_1; +} + + + +/* @004ad00e file=? name=FUN_004ad00e */ + +void __cdecl FUN_004ad00e(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0050e1c8; + FUN_00415f90(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004ad03a file=? name=FUN_004ad03a */ + +undefined4 * __cdecl FUN_004ad03a(undefined4 *param_1,undefined4 param_2) + +{ + FUN_00417be0(param_1,param_2); + *param_1 = &PTR_FUN_0050e1c0; + return param_1; +} + + + +/* @004ad059 file=? name=FUN_004ad059 */ + +void __cdecl FUN_004ad059(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0050e1c0; + FUN_00417c0c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004ad085 file=? name=FUN_004ad085 */ + +undefined4 * __cdecl FUN_004ad085(undefined4 *param_1,int param_2) + +{ + FUN_00417d00(param_1,param_2); + *param_1 = &PTR_FUN_0050e170; + return param_1; +} + + + +/* @004ad0a4 file=? name=FUN_004ad0a4 */ + +undefined4 * __cdecl FUN_004ad0a4(undefined4 *param_1,int param_2) + +{ + FUN_00417d00(param_1,param_2); + *param_1 = &PTR_FUN_0050e170; + return param_1; +} + + + +/* @004ad0c3 file=? name=FUN_004ad0c3 */ + +undefined4 * __cdecl FUN_004ad0c3(undefined4 *param_1,int param_2) + +{ + FUN_00417d28(param_1,param_2); + *param_1 = &PTR_FUN_0050e170; + return param_1; +} + + + +/* @004ad0e2 file=? name=FUN_004ad0e2 */ + +void __cdecl FUN_004ad0e2(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0050e170; + FUN_00417d54(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004ad10e file=? name=FUN_004ad10e */ + +void __cdecl FUN_004ad10e(int *param_1,undefined4 param_2) + +{ + (**(code **)(*param_1 + 0x28))(param_1,param_2); + return; +} + + + +/* @004ad124 file=? name=FUN_004ad124 */ + +undefined4 * __cdecl FUN_004ad124(undefined4 *param_1,undefined4 param_2) + +{ + undefined4 *puVar1; + int iVar2; + + FUN_00415e90(param_1,1); + *param_1 = &PTR_FUN_0050e3d0; + FUN_004de998(param_1 + 3,0x10,7,1,FUN_004ad619); + param_1[0x1f] = param_2; + iVar2 = 0; + puVar1 = param_1 + 3; + do { + *puVar1 = 0; + puVar1[2] = 0; + puVar1[1] = 0; + puVar1[3] = 0; + iVar2 = iVar2 + 1; + puVar1 = puVar1 + 4; + } while (iVar2 < 7); + return param_1; +} + + + +/* @004ad180 file=? name=FUN_004ad180 */ + +void __cdecl FUN_004ad180(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0050e3d0; + FUN_00415ed8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_00402f98(0x50e248,param_1); + } + } + return; +} + + + +/* @004ad1b8 file=? name=FUN_004ad1b8 */ + +void __cdecl FUN_004ad1b8(int *param_1,byte param_2) + +{ + void *this; + int local_10 [3]; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0050e3a0; + FUN_004ad68b(local_10,(int)(param_1 + 0x39)); + FUN_00417858(this,local_10,1); + FUN_004ad6c9(local_10,2); + FUN_004ad640(param_1 + 0x39,2); + FUN_0041c648(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004ad228 file=? name=FUN_004ad228 */ + +undefined4 * __cdecl +FUN_004ad228(undefined4 *param_1,int param_2,undefined4 param_3,char *param_4,undefined4 param_5) + +{ + int iVar1; + int iVar2; + undefined4 *puVar3; + int iVar4; + + FUN_0041c52c(param_1,param_2,param_3,param_4,param_5); + *param_1 = &PTR_FUN_0050e3a0; + FUN_004ad621(param_1 + 0x39,0); + if ((*(uint *)(param_2 + 0x28) & 0xc) == 0) { + param_1[7] = PTR_FUN_0050e2b0; + param_1[8] = DAT_0050e2b4; + param_1[9] = DAT_0050e2b8; + param_1[0x40] = *(undefined4 *)(param_4 + 0x30); + param_1[0x3d] = *(undefined4 *)(param_4 + 0x34); + param_1[0x3e] = *(undefined4 *)(param_4 + 0x38); + param_1[0x3f] = *(undefined4 *)(param_4 + 0x3c); + for (iVar4 = *(int *)(param_2 + 0x124) + -2; -1 < iVar4; iVar4 = iVar4 + -1) { + iVar1 = *(int *)(*(int *)(param_2 + 0x128) + iVar4 * 4); + if (((iVar1 != 0) && (iVar2 = FUN_0041a1a4(**(int **)(iVar1 + 0xc),0x50de2c), iVar2 != 0)) && + ((*(byte *)(iVar1 + 0x28) & 8) != 0)) { + puVar3 = FUN_00402f74(0x50e248); + if (puVar3 == (undefined4 *)0x0) { + puVar3 = (undefined4 *)0x0; + } + else { + puVar3 = FUN_004ad124(puVar3,iVar1); + } + (**(code **)(param_1[0x39] + 4))(param_1 + 0x39,puVar3); + } + } + } + else { + param_1[10] = param_1[10] | 2; + } + return param_1; +} + + + +/* @004ad33c file=? name=FUN_004ad33c */ + +void __cdecl FUN_004ad33c(int param_1) + +{ + int iVar1; + uint *puVar2; + uint uVar3; + uint local_64 [7]; + uint local_48 [8]; + int local_28 [3]; + int *local_1c; + int *local_18; + int *local_14; + uint local_10; + int *local_c; + int local_8; + + local_8 = *(int *)(DAT_004efc94 + 0x38); + FUN_004ad68b(local_28,param_1 + 0xe4); + while( true ) { + iVar1 = (**(code **)(local_28[0] + 0x28))(local_28); + if (iVar1 == 0) break; + local_c = *(int **)(iVar1 + 0x7c); + local_10 = (**(code **)(*local_c + 0x30))(local_c); + puVar2 = (uint *)(iVar1 + 0xc); + iVar1 = 0; + do { + uVar3 = local_10 & 1; + if (puVar2[1] != 0) { + if ((int)puVar2[3] < *(int *)(param_1 + 0x10)) { + puVar2[1] = 0; + } + else { + uVar3 = *puVar2; + } + } + if (uVar3 != *puVar2) { + if (uVar3 == 0) { + local_1c = *(int **)(param_1 + 0xd0); + FUN_004366b8(local_64,(int)local_1c,local_c,iVar1); + FUN_004364e4(local_8,local_1c,local_64); + } + else { + local_14 = local_c; + local_18 = *(int **)(param_1 + 0xd0); + FUN_00436688(local_48,(int)local_18,local_c,iVar1,*(undefined4 *)(param_1 + 0x100)); + FUN_004364e4(local_8,local_18,local_48); + } + } + *puVar2 = uVar3; + iVar1 = iVar1 + 1; + local_10 = (int)local_10 >> 1; + puVar2 = puVar2 + 4; + } while (iVar1 < 7); + } + FUN_004ad6c9(local_28,2); + return; +} + + + +/* @004ad470 file=? name=FUN_004ad470 */ + +void __cdecl FUN_004ad470(int param_1) + +{ + FUN_0041a1a4(**(int **)(param_1 + 0xc),0x50e280); + return; +} + + + +/* @004ad48c file=? name=FUN_004ad48c */ + +undefined4 __cdecl +FUN_004ad48c(int param_1,char *param_2,char *param_3,char *param_4,int param_5,int param_6, + int param_7) + +{ + int iVar1; + undefined4 uVar2; + undefined4 *puVar3; + char *local_8; + + iVar1 = FUN_0041c684(param_1,param_2,param_3,param_4,param_5,param_6); + if (iVar1 == 0) { + uVar2 = 0; + } + else { + param_4[0x24] = '@'; + param_4[0x25] = '\0'; + param_4[0x26] = '\0'; + param_4[0x27] = '\0'; + param_4[0x20] = -0x24; + param_4[0x21] = '\v'; + param_4[0x22] = '\0'; + param_4[0x23] = '\0'; + param_4[0x30] = -1; + param_4[0x31] = -1; + param_4[0x32] = -1; + param_4[0x33] = -1; + param_4[0x34] = '\0'; + param_4[0x35] = '\0'; + param_4[0x36] = '\0'; + param_4[0x37] = '\0'; + param_4[0x38] = '\0'; + param_4[0x39] = '\0'; + param_4[0x3a] = '\0'; + param_4[0x3b] = '\0'; + param_4[0x3c] = '\0'; + param_4[0x3d] = '\0'; + param_4[0x3e] = '\0'; + param_4[0x3f] = '\0'; + if ((*(int *)(param_4 + 0x30) == -1) && + (iVar1 = FUN_00404088(param_5,param_3,s_AlarmModel_0050e322,&local_8), iVar1 == 0)) { + return 1; + } + puVar3 = (undefined4 *)FUN_00406ff8(param_7,local_8,1,-1); + if (puVar3 == (undefined4 *)0x0) { + FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_couldn_t_locate_0050e32d,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,local_8,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s__mod_0050e33f,(char *)0x0); + uVar2 = 0; + } + else { + uVar2 = 1; + *(undefined4 *)(param_4 + 0x30) = *puVar3; + } + } + return uVar2; +} + + + +/* @004ad619 file=? name=FUN_004ad619 */ + +undefined4 __cdecl FUN_004ad619(undefined4 param_1) + +{ + return param_1; +} + + + +/* @004ad621 file=? name=FUN_004ad621 */ + +undefined4 * __cdecl FUN_004ad621(undefined4 *param_1,undefined4 param_2) + +{ + FUN_00417be0(param_1,param_2); + *param_1 = &PTR_FUN_0050e398; + return param_1; +} + + + +/* @004ad640 file=? name=FUN_004ad640 */ + +void __cdecl FUN_004ad640(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0050e398; + FUN_00417c0c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004ad66c file=? name=FUN_004ad66c */ + +undefined4 * __cdecl FUN_004ad66c(undefined4 *param_1,int param_2) + +{ + FUN_00417d00(param_1,param_2); + *param_1 = &PTR_FUN_0050e348; + return param_1; +} + + + +/* @004ad68b file=? name=FUN_004ad68b */ + +undefined4 * __cdecl FUN_004ad68b(undefined4 *param_1,int param_2) + +{ + FUN_00417d00(param_1,param_2); + *param_1 = &PTR_FUN_0050e348; + return param_1; +} + + + +/* @004ad6aa file=? name=FUN_004ad6aa */ + +undefined4 * __cdecl FUN_004ad6aa(undefined4 *param_1,int param_2) + +{ + FUN_00417d28(param_1,param_2); + *param_1 = &PTR_FUN_0050e348; + return param_1; +} + + + +/* @004ad6c9 file=? name=FUN_004ad6c9 */ + +void __cdecl FUN_004ad6c9(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0050e348; + FUN_00417d54(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004ad6f8 file=? name=FUN_004ad6f8 */ + +void __cdecl FUN_004ad6f8(int param_1,int param_2) + +{ + bool bVar1; + undefined3 extraout_var; + + bVar1 = FUN_004ac9c8(param_1); + if ((CONCAT31(extraout_var,bVar1) == 0) && (0 < *(int *)(param_2 + 0xc))) { + if (*(int *)(param_1 + 0x134) != 0) { + *(undefined4 *)(param_1 + 0x134) = 0; + *(undefined4 *)(param_1 + 0x15c) = 0; + return; + } + *(undefined4 *)(param_1 + 0x134) = 1; + *(undefined4 *)(param_1 + 0x15c) = 0x3f800000; + } + return; +} + + + +/* @004ad748 file=? name=FUN_004ad748 */ + +void __cdecl FUN_004ad748(int *param_1,undefined4 param_2) + +{ + FUN_004ac0bc(param_1,param_2); + return; +} + + + +/* @004ad760 file=? name=FUN_004ad760 */ + +void __cdecl FUN_004ad760(int *param_1) + +{ + param_1[0x45] = param_1[0x4f]; + param_1[0x56] = (int)((float)param_1[0x4f] * (float)param_1[0x55]); + param_1[0x4b] = param_1[0x4a]; + param_1[0x4c] = 0; + param_1[0x4d] = 1; + param_1[0x57] = 0x3f800000; + FUN_004ad884((int)param_1); + FUN_004ad7f0((int)param_1); + param_1[0x4e] = 0; + FUN_004ac22c(param_1); + return; +} + + + +/* @004ad7d4 file=? name=FUN_004ad7d4 */ + +undefined4 __cdecl FUN_004ad7d4(int param_1) + +{ + return *(undefined4 *)(*(int *)(*(int *)(param_1 + 0xd0) + 400) + 0x260); +} + + + +/* @004ad7f0 file=? name=FUN_004ad7f0 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004ad7f0(int param_1) + +{ + float fVar1; + float fVar2; + float10 fVar3; + + *(float *)(param_1 + 0x1cc) = *(float *)(param_1 + 0x114) * *(float *)(param_1 + 300); + fVar1 = (float)(_DAT_004ad870 * (float10)*(float *)(param_1 + 0x1cc)); + fVar2 = _DAT_004ad87c; + if ((_DAT_004ad87c <= fVar1) && (fVar2 = fVar1, _DAT_004ad880 < fVar1)) { + fVar2 = _DAT_004ad880; + } + FUN_0043ade4((uint *)(param_1 + 0x144),fVar2); + fVar3 = FUN_0043ae0b((uint *)(param_1 + 0x144)); + *(float *)(param_1 + 0x120) = (float)fVar3; + return; +} + + + +/* @004ad884 file=? name=FUN_004ad884 */ + +void __cdecl FUN_004ad884(int param_1) + +{ + int iVar1; + + iVar1 = 0; + do { + FUN_0043ade4((uint *)(param_1 + 0x144),0); + iVar1 = iVar1 + 1; + } while (iVar1 < 0xf); + return; +} + + + +/* @004ad8ac file=? name=FUN_004ad8ac */ + +void __cdecl FUN_004ad8ac(int param_1,float param_2) + +{ + int iVar1; + float10 fVar2; + int iVar3; + + iVar3 = param_1 + 0x164; + iVar1 = FUN_00417ab4(iVar3); + if ((iVar1 != 0) && (*(int *)(param_1 + 0x134) != 0)) { + fVar2 = FUN_004ad9ec((short)iVar3,param_1,iVar1,param_2); + *(float *)(iVar1 + 0x1c8) = (float)fVar2 + *(float *)(iVar1 + 0x1c8); + *(float *)(param_1 + 0x1c8) = -(float)fVar2 + *(float *)(param_1 + 0x1c8); + FUN_004ada94(param_1,param_2); + } + return; +} + + + +/* @004ad924 file=? name=FUN_004ad924 */ + +void __cdecl FUN_004ad924(int *param_1,float param_2) + +{ + int iVar1; + + iVar1 = FUN_004ad7d4((int)param_1); + if (iVar1 != 0) { + param_1[0x56] = (int)((float)param_1[0x72] + (float)param_1[0x56]); + param_1[0x45] = (int)((float)param_1[0x56] / (float)param_1[0x55]); + FUN_004ad7f0((int)param_1); + param_1[0x72] = 0; + FUN_004ad8ac((int)param_1,param_2); + } + iVar1 = FUN_004ad7d4((int)param_1); + if (iVar1 != 0) { + FUN_004adbf8(param_1,param_2); + } + if ((float)param_1[0x47] < (float)param_1[0x45]) { + FUN_0041bbd8((int)(param_1 + 0x5c),2); + return; + } + if ((float)param_1[0x46] < (float)param_1[0x45]) { + FUN_0041bbd8((int)(param_1 + 0x5c),1); + return; + } + FUN_0041bbd8((int)(param_1 + 0x5c),0); + return; +} + + + +/* @004ad9ec file=? name=FUN_004ad9ec */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 __thiscall FUN_004ad9ec(undefined2 param_1,int param_2,int param_3,float param_4) + +{ + float fVar1; + float fVar2; + float fVar3; + float fVar4; + float fVar5; + double dVar6; + float fVar7; + float fVar8; + float10 fVar9; + + fVar7 = *(float *)(param_2 + 0x154) / *(float *)(param_2 + 0x160); + fVar8 = fVar7 + *(float *)(param_3 + 0x154); + fVar1 = *(float *)(param_2 + 0x114); + fVar2 = *(float *)(param_2 + 0x160); + fVar3 = *(float *)(param_3 + 0x158); + fVar4 = *(float *)(param_3 + 0x1c8); + fVar5 = *(float *)(param_2 + 0x158); + dVar6 = (double)((-param_4 * + *(float *)(param_2 + 0x140) * + (*(float *)(param_2 + 300) / *(float *)(param_2 + 0x128)) * + *(float *)(param_2 + 0x15c)) / fVar8); + fVar9 = (float10)FUN_004dca38(param_1,SUB84(dVar6,0),(uint)((ulonglong)dVar6 >> 0x20)); + return (float10)(float)((float10)(fVar1 * fVar2 - (fVar3 + fVar4 + fVar5) / fVar8) * + (float10)fVar7 * ((float10)_DAT_004ada90 - fVar9)); +} + + + +/* @004ada94 file=? name=FUN_004ada94 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004ada94(int param_1,float param_2) + +{ + float fVar1; + float fVar2; + float fVar3; + float fVar4; + int iVar5; + float10 fVar6; + + iVar5 = FUN_00417ab4(param_1 + 0x164); + if ((iVar5 != 0) && + (fVar6 = FUN_004dcd00((double)(*(float *)(param_1 + 0x1cc) - *(float *)(iVar5 + 0x1cc))), + (float10)_DAT_004adbf4 < fVar6)) { + fVar1 = *(float *)(iVar5 + 0x1cc) / *(float *)(param_1 + 0x114) - *(float *)(param_1 + 300); + fVar2 = *(float *)(param_1 + 0x128) * param_2; + if (-fVar2 <= fVar1) { + if (fVar2 < fVar1) { + fVar1 = fVar2; + } + } + else { + fVar1 = -fVar2; + } + fVar2 = *(float *)(param_1 + 0x128) - *(float *)(param_1 + 300); + fVar3 = -*(float *)(param_1 + 300); + fVar4 = -(*(float *)(iVar5 + 0x128) - *(float *)(iVar5 + 300)); + if ((fVar3 <= fVar1) && (fVar3 = fVar1, fVar2 < fVar1)) { + fVar3 = fVar2; + } + if ((fVar4 <= fVar3) && (fVar4 = fVar3, *(float *)(iVar5 + 300) < fVar3)) { + fVar4 = *(float *)(iVar5 + 300); + } + fVar4 = *(float *)(param_1 + 0x15c) * fVar4; + *(float *)(param_1 + 300) = fVar4 + *(float *)(param_1 + 300); + *(float *)(iVar5 + 300) = *(float *)(iVar5 + 300) - fVar4; + } + return; +} + + + +/* @004adbf8 file=? name=FUN_004adbf8 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004adbf8(int *param_1,float param_2) + +{ + float fVar1; + float10 fVar2; + + param_1[0x4c] = (int)(*(float *)(param_1[0x38] + 0x158) * (float)param_1[0x48]); + if ((float)param_1[0x4c] < _DAT_0050e3d8) { + param_1[0x4c] = 0; + } + fVar1 = (float)param_1[0x4c] * param_2; + if ((float)param_1[0x4b] < fVar1) { + fVar1 = (float)param_1[0x4b]; + } + param_1[0x4b] = (int)((float)param_1[0x4b] - fVar1); + fVar2 = FUN_004dcd00((double)fVar1); + if ((float10)_DAT_004adcfc < fVar2) { + fVar2 = (float10)(**(code **)(*param_1 + 0x38))(param_1,fVar1); + param_1[0x4b] = (int)(float)(fVar2 + (float10)(float)param_1[0x4b]); + } + if ((param_1[0x4e] != 0) || ((float)param_1[0x4c] <= _DAT_0050e3d4)) { + if ((param_1[0x4e] == 1) && ((float)param_1[0x4c] < _DAT_0050e3d8)) { + param_1[0x4e] = 0; + } + } + else { + param_1[0x4e] = 1; + } + return; +} + + + +/* @004add00 file=? name=FUN_004add00 */ + +void __cdecl FUN_004add00(int param_1,float param_2) + +{ + int *piVar1; + + piVar1 = (int *)FUN_00417ab4(param_1 + 0x164); + (**(code **)(*piVar1 + 0x38))(piVar1,*(float *)(param_1 + 0x15c) * param_2); + return; +} + + + +/* @004add30 file=? name=FUN_004add30 */ + +uint __cdecl FUN_004add30(int param_1) + +{ + uint uVar1; + int iVar2; + + uVar1 = FUN_004ac144(param_1); + if (*(int *)(param_1 + 0x184) != 0) { + uVar1 = uVar1 | 8; + } + if (*(int *)(param_1 + 0x138) != 0) { + iVar2 = FUN_004ad7d4(param_1); + if (iVar2 != 0) { + uVar1 = uVar1 | 4; + } + } + return uVar1; +} + + + +/* @004add6c file=? name=FUN_004add6c */ + +undefined4 __cdecl FUN_004add6c(int *param_1,int param_2) + +{ + undefined4 uVar1; + + if (param_2 == 1) { + *(undefined4 *)(param_1[0x38] + 0x158) = 0x3f000000; + return 1; + } + uVar1 = FUN_004ac1d4(param_1,param_2); + return uVar1; +} + + + +/* @004adda0 file=bt/heat.cpp name=FUN_004adda0 */ + +int * __cdecl +FUN_004adda0(int *param_1,int param_2,undefined4 param_3,char *param_4,undefined4 param_5, + int param_6,int param_7) + +{ + int iVar1; + int local_8; + + FUN_004ac644(param_1,param_2,param_3,param_4,param_5,param_6,param_7); + *param_1 = (int)&PTR_FUN_0050edc4; + param_1[0x45] = *(int *)(param_4 + 0xe4); + param_1[0x46] = *(int *)(param_4 + 0xe8); + param_1[0x47] = *(int *)(param_4 + 0xec); + param_1[0x48] = 0; + param_1[0x49] = 0x3f000000; + param_1[0x4a] = 0x3f800000; + param_1[0x4b] = param_1[0x4a]; + param_1[0x4c] = 0; + param_1[0x4d] = 1; + param_1[0x4e] = 0; + param_1[0x4f] = param_1[0x45]; + param_1[0x50] = *(int *)(param_4 + 0xf0); + FUN_0043ad4f((uint *)(param_1 + 0x51),0xf,0); + param_1[0x54] = 0x3ecccccd; + param_1[0x55] = *(int *)(param_4 + 0xf4); + param_1[0x56] = (int)((float)param_1[0x55] * (float)param_1[0x4f]); + param_1[0x57] = 0x3f800000; + param_1[0x58] = 0x3f800000; + FUN_004af9cf(param_1 + 0x59,0); + FUN_0041b9ec(param_1 + 0x5c,3); + param_1[0x72] = 0; + if (((*(uint *)(param_2 + 0x28) & 0xc) == 0) && ((*(uint *)(param_2 + 0x28) & 0x100) != 0)) { + param_1[7] = (int)PTR_FUN_0050e4e0; + param_1[8] = DAT_0050e4e4; + param_1[9] = DAT_0050e4e8; + } + param_1[0x71] = (int)param_4; + local_8 = 0; + iVar1 = FUN_0041a1a4(*(int *)param_1[3],0x50e590); + if (iVar1 == 0) { + if (*(int *)(param_4 + 0xf8) < *(int *)(param_2 + 0x124)) { + local_8 = *(int *)(*(int *)(param_2 + 0x128) + *(int *)(param_4 + 0xf8) * 4); + } + else { + FUN_0040385c(s_Bad_subsystem_resource_>heatSink_0050e7c9,s_d__tesla_bt_bt_HEAT_CPP_0050e804, + 0x25f); + } + if (((*(uint *)(param_2 + 0x28) & 0xc) == 0) && ((*(uint *)(param_2 + 0x28) & 0x100) != 0)) { + if (local_8 == 0) { + FUN_0040385c(s_Master_heatable_subystem_is_miss_0050e81c,s_d__tesla_bt_bt_HEAT_CPP_0050e859, + 0x26b); + } + else { + (**(code **)(param_1[0x59] + 4))(param_1 + 0x59,local_8); + } + } + else if (((*(uint *)(param_2 + 0x28) & 0xc) == 4) && (local_8 != 0)) { + (**(code **)(param_1[0x59] + 4))(param_1 + 0x59,local_8); + } + } + FUN_004ad7f0((int)param_1); + return param_1; +} + + + +/* @004adfd4 file=? name=FUN_004adfd4 */ + +void __cdecl FUN_004adfd4(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0050edc4; + FUN_0041baa4(param_1 + 0x5c,2); + FUN_004af9ee(param_1 + 0x59,2); + FUN_0043adb5(param_1 + 0x51,2); + FUN_004ac868(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004ae034 file=? name=FUN_004ae034 */ + +void __cdecl FUN_004ae034(int param_1) + +{ + FUN_0041a1a4(**(int **)(param_1 + 0xc),0x50e3ec); + return; +} + + + +/* @004ae050 file=? name=FUN_004ae050 */ + +void __cdecl FUN_004ae050(int param_1) + +{ + int iVar1; + + FUN_004ac8c0(param_1); + iVar1 = *(int *)(param_1 + 0x184); + if (iVar1 == 0) { + FUN_004dbb24(&DAT_00524e20,*(char **)(param_1 + 0xd4),(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s___NormalHeat_0050e893,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + } + else { + if (iVar1 == 1) { + FUN_004dbb24(&DAT_00524e20,*(char **)(param_1 + 0xd4),(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s___DegradationHeat_0050e880,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + return; + } + if (iVar1 == 2) { + FUN_004dbb24(&DAT_00524e20,*(char **)(param_1 + 0xd4),(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s___FailureHeat_0050e871,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + return; + } + } + FUN_004dbb24(&DAT_00524e20,*(char **)(param_1 + 0xd4),(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_Unknown_Heat_State__0050e8a1,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + return; +} + + + +/* @004ae150 file=? name=FUN_004ae150 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl +FUN_004ae150(int param_1,char *param_2,char *param_3,char *param_4,int param_5,int param_6, + int param_7) + +{ + char *pcVar1; + int iVar2; + undefined4 uVar3; + char *pcVar4; + char *pcVar5; + bool bVar6; + char *local_8; + + iVar2 = FUN_004ac9ec(param_1,param_2,param_3,param_4,param_5,param_6,param_7); + if (iVar2 == 0) { + uVar3 = 0; + } + else { + param_4[0x24] = -4; + param_4[0x25] = '\0'; + param_4[0x26] = '\0'; + param_4[0x27] = '\0'; + param_4[0x20] = -0x44; + param_4[0x21] = '\v'; + param_4[0x22] = '\0'; + param_4[0x23] = '\0'; + if (param_7 == 1) { + param_4[0xe4] = '\0'; + param_4[0xe5] = '\0'; + param_4[0xe6] = -0x80; + param_4[0xe7] = -0x41; + param_4[0xe8] = '\0'; + param_4[0xe9] = '\0'; + param_4[0xea] = -0x80; + param_4[0xeb] = -0x41; + param_4[0xec] = '\0'; + param_4[0xed] = '\0'; + param_4[0xee] = -0x80; + param_4[0xef] = -0x41; + param_4[0xf0] = '\0'; + param_4[0xf1] = '\0'; + param_4[0xf2] = -0x80; + param_4[0xf3] = -0x41; + param_4[0xf4] = '\0'; + param_4[0xf5] = '\0'; + param_4[0xf6] = -0x80; + param_4[0xf7] = -0x41; + param_4[0xf8] = -1; + param_4[0xf9] = -1; + param_4[0xfa] = -1; + param_4[0xfb] = -1; + } + iVar2 = FUN_00404118(param_5,param_3,s_StartingTemperature_0050e8b6,(float *)(param_4 + 0xe4)); + if ((iVar2 == 0) && (_DAT_004ae460 == *(float *)(param_4 + 0xe4))) { + FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_StartingTemperature__0050e8ca,(char *)0x0); + uVar3 = 0; + } + else { + iVar2 = FUN_00404118(param_5,param_3,s_DegradationTemperature_0050e8e9, + (float *)(param_4 + 0xe8)); + if ((iVar2 == 0) && (_DAT_004ae460 == *(float *)(param_4 + 0xe8))) { + FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_DegradationTemperature__0050e900,(char *)0x0); + uVar3 = 0; + } + else { + iVar2 = FUN_00404118(param_5,param_3,s_FailureTemperature_0050e922,(float *)(param_4 + 0xec) + ); + if ((iVar2 == 0) && (_DAT_004ae460 == *(float *)(param_4 + 0xec))) { + FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_FailureTemperature__0050e935,(char *)0x0); + uVar3 = 0; + } + else { + iVar2 = FUN_00404118(param_5,param_3,s_ThermalConductance_0050e953, + (float *)(param_4 + 0xf0)); + if ((iVar2 == 0) && (_DAT_004ae460 == *(float *)(param_4 + 0xf0))) { + FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_ThermalConductance__0050e966,(char *)0x0); + uVar3 = 0; + } + else { + iVar2 = FUN_00404118(param_5,param_3,s_ThermalMass_0050e984,(float *)(param_4 + 0xf4)); + if ((iVar2 == 0) && (_DAT_004ae460 == *(float *)(param_4 + 0xf4))) { + FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_ThermalMass__0050e990,(char *)0x0); + uVar3 = 0; + } + else { + local_8 = s_Unspecified_0050e9a7; + iVar2 = FUN_00404088(param_5,param_3,s_HeatSink_0050e9b3,&local_8); + if ((iVar2 == 0) && (*(int *)(param_4 + 0xf8) == -1)) { + FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_HeatSink__0050e9bc,(char *)0x0); + uVar3 = 0; + } + else { + pcVar5 = s_Unspecified_0050e9d0; + pcVar4 = local_8; + do { + bVar6 = *pcVar4 == *pcVar5; + if (!bVar6) break; + if (*pcVar4 == '\0') goto LAB_004ae418; + pcVar1 = pcVar4 + 1; + bVar6 = *pcVar1 == pcVar5[1]; + if (!bVar6) break; + pcVar4 = pcVar4 + 2; + pcVar5 = pcVar5 + 2; + bVar6 = *pcVar1 == '\0'; + } while (!bVar6); + if (!bVar6) { + iVar2 = FUN_004215b0(param_5,local_8); + *(int *)(param_4 + 0xf8) = iVar2; + } +LAB_004ae418: + if (*(int *)(param_4 + 0xf8) < 0) { + FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_has_an_invalid_heat_sink__0050e9dc,(char *)0x0 + ); + uVar3 = 0; + } + else { + *(int *)(param_4 + 0xf8) = *(int *)(param_4 + 0xf8) + 2; + uVar3 = 1; + } + } + } + } + } + } + } + } + return uVar3; +} + + + +/* @004ae464 file=? name=FUN_004ae464 */ + +void __cdecl FUN_004ae464(int param_1,int param_2) + +{ + int iVar1; + bool bVar2; + undefined3 extraout_var; + + bVar2 = FUN_004ac9c8(param_1); + if ((CONCAT31(extraout_var,bVar2) == 0) && (0 < *(int *)(param_2 + 0xc))) { + iVar1 = *(int *)(param_1 + 0x1d0); + if (iVar1 == 0) { + *(undefined4 *)(param_1 + 0x1d0) = 1; + } + else if (iVar1 == 1) { + *(undefined4 *)(param_1 + 0x1d0) = 5; + } + else if (iVar1 == 5) { + *(undefined4 *)(param_1 + 0x1d0) = 0x32; + } + else if (iVar1 == 0x32) { + *(undefined4 *)(param_1 + 0x1d0) = 0; + } + FUN_0049f788(*(int *)(param_1 + 0xd0)); + } + return; +} + + + +/* @004ae4d8 file=? name=FUN_004ae4d8 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004ae4d8(int *param_1,undefined4 param_2) + +{ + float fVar1; + + param_1[0x58] = (int)((_DAT_004ae530 - *(float *)(param_1[0x38] + 0x158)) * (float)param_1[0x76]); + fVar1 = _DAT_004ae530; + if (_DAT_004ae530 <= (float)param_1[0x58]) { + fVar1 = (float)param_1[0x58]; + } + param_1[0x58] = (int)fVar1; + FUN_004ad748(param_1,param_2); + return; +} + + + +/* @004ae534 file=? name=FUN_004ae534 */ + +void __cdecl FUN_004ae534(int *param_1,int param_2) + +{ + FUN_004ad760(param_1); + if (param_2 != 0) { + param_1[0x74] = 1; + param_1[0x58] = param_1[0x76]; + } + return; +} + + + +/* @004ae568 file=? name=FUN_004ae568 */ + +int * __cdecl FUN_004ae568(int *param_1,int param_2,undefined4 param_3,char *param_4) + +{ + char *pcVar1; + int iVar2; + + FUN_004adda0(param_1,param_2,param_3,param_4,&DAT_0050e4ec,0,0); + *param_1 = (int)&PTR_FUN_0050ed88; + FUN_0041b9ec(param_1 + 0x77,3); + param_1[0x74] = 1; + param_1[0x57] = 0; + param_1[0x58] = *(int *)(param_4 + 0xfc); + param_1[0x76] = param_1[0x58]; + param_1[10] = param_1[10] | 8; + pcVar1 = (char *)param_1[0x35]; + iVar2 = FUN_004d4a78(pcVar1); + iVar2 = FUN_004dd1e0(pcVar1 + iVar2 + -1); + param_1[0x75] = iVar2; + return param_1; +} + + + +/* @004ae5fc file=? name=FUN_004ae5fc */ + +void __cdecl FUN_004ae5fc(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0050ed88; + FUN_0041baa4(param_1 + 0x77,2); + FUN_004adfd4(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004ae63c file=? name=FUN_004ae63c */ + +void __cdecl FUN_004ae63c(int param_1) + +{ + FUN_0041a1a4(**(int **)(param_1 + 0xc),0x50e4fc); + return; +} + + + +/* @004ae658 file=? name=FUN_004ae658 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl +FUN_004ae658(int param_1,char *param_2,char *param_3,char *param_4,int param_5,int param_6, + int param_7) + +{ + int iVar1; + undefined4 uVar2; + + iVar1 = FUN_004ae150(param_1,param_2,param_3,param_4,param_5,param_6,param_7); + if (iVar1 == 0) { + uVar2 = 0; + } + else { + param_4[0x24] = '\0'; + param_4[0x25] = '\x01'; + param_4[0x26] = '\0'; + param_4[0x27] = '\0'; + param_4[0x20] = -0x43; + param_4[0x21] = '\v'; + param_4[0x22] = '\0'; + param_4[0x23] = '\0'; + if (param_7 == 1) { + param_4[0xfc] = '\0'; + param_4[0xfd] = '\0'; + param_4[0xfe] = -0x80; + param_4[0xff] = -0x41; + } + iVar1 = FUN_00404118(param_5,param_3,s_RefrigerationFactor_0050ea38,(float *)(param_4 + 0xfc)); + if ((iVar1 == 0) && (_DAT_004ae708 == *(float *)(param_4 + 0xfc))) { + FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_RefrigerationFactor__0050ea4c,(char *)0x0); + uVar2 = 0; + } + else { + uVar2 = 1; + } + } + return uVar2; +} + + + +/* @004ae70c file=? name=FUN_004ae70c */ + +void __cdecl FUN_004ae70c(int *param_1) + +{ + FUN_004ad760(param_1); + return; +} + + + +/* @004ae724 file=? name=FUN_004ae724 */ + +void __cdecl FUN_004ae724(int *param_1,undefined4 param_2) + +{ + FUN_004ad748(param_1,param_2); + return; +} + + + +/* @004ae73c file=? name=FUN_004ae73c */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004ae73c(int *param_1,float param_2) + +{ + float fVar1; + float fVar2; + double dVar3; + float fVar4; + int iVar5; + float10 fVar6; + int *piVar7; + + iVar5 = FUN_004ad7d4((int)param_1); + if (iVar5 != 0) { + param_1[0x56] = (int)((float)param_1[0x72] + (float)param_1[0x56]); + param_1[0x45] = (int)((float)param_1[0x56] / (float)param_1[0x55]); + piVar7 = param_1; + FUN_004ad7f0((int)param_1); + param_1[0x72] = 0; + fVar4 = _DAT_004ae89c - (_DAT_004ae89c - (float)param_1[0x75]) * _DAT_004ae8a0; + fVar1 = (float)param_1[0x45]; + fVar2 = (float)param_1[0x58]; + dVar3 = (double)((-param_2 * + (float)param_1[0x50] * + (_DAT_004ae8a4 - *(float *)(param_1[0x38] + 0x158)) * + ((float)param_1[0x4b] / (float)param_1[0x4a]) * (float)param_1[0x57]) / + (float)param_1[0x55]); + fVar6 = (float10)FUN_004dca38((short)piVar7,SUB84(dVar3,0),(uint)((ulonglong)dVar3 >> 0x20)); + param_1[0x72] = + (int)(-(float)((float10)(fVar1 * fVar2 - fVar4) * (float10)(float)param_1[0x55] * + ((float10)_DAT_004ae8a4 - fVar6)) + (float)param_1[0x72]); + } + fVar1 = (float)param_1[0x4a] - (float)param_1[0x4b]; + if (_DAT_004ae8a8 < fVar1) { + fVar6 = FUN_004dcd00((double)fVar1); + if ((float10)_DAT_004ae8ac < fVar6) { + fVar6 = (float10)(**(code **)(*param_1 + 0x38))(param_1,fVar1); + param_1[0x4b] = (int)(float)(fVar6 + (float10)(float)param_1[0x4b]); + } + } + return; +} + + + +/* @004ae8b0 file=? name=FUN_004ae8b0 */ + +void __cdecl FUN_004ae8b0(int param_1,float param_2) + +{ + int iVar1; + + iVar1 = FUN_00417ab4(param_1 + 0x1d8); + FUN_004af3b0(iVar1,param_2); + return; +} + + + +/* @004ae8d0 file=? name=FUN_004ae8d0 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +int * __cdecl FUN_004ae8d0(int *param_1,int param_2,undefined4 param_3,char *param_4) + +{ + FUN_004adda0(param_1,param_2,param_3,param_4,&DAT_0050e580,0,0); + *param_1 = (int)&PTR_FUN_0050ed4c; + param_1[0x74] = *(int *)(param_4 + 0xfc); + param_1[0x75] = 0x43960000; + FUN_004afa1a(param_1 + 0x76,0); + param_1[0x50] = + (int)(float)(_DAT_004ae974 * (float10)param_1[0x74] * (float10)(float)param_1[0x50]); + if (((*(uint *)(param_2 + 0x28) & 0xc) == 0) && ((*(uint *)(param_2 + 0x28) & 0x100) != 0)) { + param_1[7] = (int)PTR_FUN_0050e5e8; + param_1[8] = DAT_0050e5ec; + param_1[9] = DAT_0050e5f0; + } + return param_1; +} + + + +/* @004ae980 file=? name=FUN_004ae980 */ + +void __cdecl FUN_004ae980(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0050ed4c; + FUN_004afa39(param_1 + 0x76,2); + FUN_004adfd4(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004ae9c0 file=? name=FUN_004ae9c0 */ + +void __cdecl FUN_004ae9c0(int param_1) + +{ + FUN_0041a1a4(**(int **)(param_1 + 0xc),0x50e590); + return; +} + + + +/* @004ae9dc file=? name=FUN_004ae9dc */ + +undefined4 __cdecl +FUN_004ae9dc(int param_1,char *param_2,char *param_3,char *param_4,int param_5,int param_6, + int param_7) + +{ + bool bVar1; + int iVar2; + undefined4 uVar3; + undefined3 extraout_var; + + iVar2 = FUN_004ae150(param_1,param_2,param_3,param_4,param_5,param_6,param_7); + if (iVar2 == 0) { + uVar3 = 0; + } + else { + param_4[0x24] = '\0'; + param_4[0x25] = '\x01'; + param_4[0x26] = '\0'; + param_4[0x27] = '\0'; + param_4[0x20] = -0x42; + param_4[0x21] = '\v'; + param_4[0x22] = '\0'; + param_4[0x23] = '\0'; + if (param_7 == 1) { + param_4[0xfc] = -1; + param_4[0xfd] = -1; + param_4[0xfe] = -1; + param_4[0xff] = -1; + } + bVar1 = FUN_004040d8(param_5,param_3,s_HeatSinkCount_0050ea95,(int *)(param_4 + 0xfc)); + if ((CONCAT31(extraout_var,bVar1) == 0) && (*(int *)(param_4 + 0xfc) == -1)) { + FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_HeatSinkCount__0050eaa3,(char *)0x0); + uVar3 = 0; + } + else { + uVar3 = 1; + } + } + return uVar3; +} + + + +/* @004aea84 file=? name=FUN_004aea84 */ + +void __cdecl FUN_004aea84(int *param_1,undefined4 param_2) + +{ + FUN_004ac0bc(param_1,param_2); + return; +} + + + +/* @004aea9c file=? name=FUN_004aea9c */ + +void __cdecl FUN_004aea9c(int *param_1) + +{ + FUN_004ac22c(param_1); + FUN_0041bbd8((int)(param_1 + 0x4b),0); + return; +} + + + +/* @004aeac4 file=? name=FUN_004aeac4 */ + +void __cdecl FUN_004aeac4(int param_1) + +{ + int iVar1; + + iVar1 = FUN_00417ab4(param_1 + 0x114); + if (*(float *)(iVar1 + 0x114) <= *(float *)(param_1 + 0x124)) { + if (*(float *)(iVar1 + 0x114) <= *(float *)(param_1 + 0x120)) { + FUN_0041bbd8(param_1 + 300,0); + } + else { + FUN_0041bbd8(param_1 + 300,1); + } + } + else { + FUN_0041bbd8(param_1 + 300,2); + } + return; +} + + + +/* @004aeb40 file=? name=FUN_004aeb40 */ + +int * __cdecl +FUN_004aeb40(int *param_1,int param_2,undefined4 param_3,char *param_4,undefined4 param_5) + +{ + FUN_004ac644(param_1,param_2,param_3,param_4,param_5,0,0); + *param_1 = (int)&PTR_FUN_0050ed10; + FUN_004af9cf(param_1 + 0x45,0); + param_1[0x48] = *(int *)(param_4 + 0xe8); + param_1[0x49] = *(int *)(param_4 + 0xec); + param_1[0x4a] = *(int *)(param_4 + 0xe4); + FUN_0041b9ec(param_1 + 0x4b,3); + if (((*(uint *)(param_2 + 0x28) & 0xc) == 0) && ((*(uint *)(param_2 + 0x28) & 0x100) != 0)) { + param_1[7] = (int)PTR_FUN_0050e634; + param_1[8] = DAT_0050e638; + param_1[9] = DAT_0050e63c; + } + return param_1; +} + + + +/* @004aebe8 file=? name=FUN_004aebe8 */ + +void __cdecl FUN_004aebe8(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0050ed10; + FUN_0041baa4(param_1 + 0x4b,2); + FUN_004af9ee(param_1 + 0x45,2); + FUN_004ac868(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004aec38 file=? name=FUN_004aec38 */ + +void __cdecl FUN_004aec38(int param_1) + +{ + FUN_0041a1a4(**(int **)(param_1 + 0xc),0x50e604); + return; +} + + + +/* @004aec54 file=? name=FUN_004aec54 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl +FUN_004aec54(int param_1,char *param_2,char *param_3,char *param_4,int param_5,int param_6, + int param_7) + +{ + char *pcVar1; + int iVar2; + undefined4 uVar3; + char *pcVar4; + char *pcVar5; + bool bVar6; + char *local_8; + + iVar2 = FUN_004ac9ec(param_1,param_2,param_3,param_4,param_5,param_6,param_7); + if (iVar2 == 0) { + uVar3 = 0; + } + else { + param_4[0x24] = -0x10; + param_4[0x25] = '\0'; + param_4[0x26] = '\0'; + param_4[0x27] = '\0'; + param_4[0x20] = -0x41; + param_4[0x21] = '\v'; + param_4[0x22] = '\0'; + param_4[0x23] = '\0'; + if (param_7 == 1) { + param_4[0xe4] = -1; + param_4[0xe5] = -1; + param_4[0xe6] = -1; + param_4[0xe7] = -1; + } + iVar2 = FUN_00404118(param_5,param_3,s_DegradationTemperature_0050eac8,(float *)(param_4 + 0xe8) + ); + if ((iVar2 == 0) && (_DAT_004aee28 == *(float *)(param_4 + 0xe8))) { + FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_DegradationTemperature__0050eadf,(char *)0x0); + uVar3 = 0; + } + else { + iVar2 = FUN_00404118(param_5,param_3,s_FailureTemperature_0050eb01,(float *)(param_4 + 0xec)); + if ((iVar2 == 0) && (_DAT_004aee28 == *(float *)(param_4 + 0xec))) { + FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_FailureTemperature__0050eb14,(char *)0x0); + uVar3 = 0; + } + else { + local_8 = s_Unspecified_0050eb32; + iVar2 = FUN_00404088(param_5,param_3,s_WatchedSubsystem_0050eb3e,&local_8); + if ((iVar2 == 0) && (*(int *)(param_4 + 0xe4) == -1)) { + FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_WatchedSubsystem__0050eb4f,(char *)0x0); + uVar3 = 0; + } + else { + pcVar5 = s_Unspecified_0050eb6b; + pcVar4 = local_8; + do { + bVar6 = *pcVar4 == *pcVar5; + if (!bVar6) break; + if (*pcVar4 == '\0') goto LAB_004aede2; + pcVar1 = pcVar4 + 1; + bVar6 = *pcVar1 == pcVar5[1]; + if (!bVar6) break; + pcVar4 = pcVar4 + 2; + pcVar5 = pcVar5 + 2; + bVar6 = *pcVar1 == '\0'; + } while (!bVar6); + if (!bVar6) { + iVar2 = FUN_004215b0(param_5,local_8); + *(int *)(param_4 + 0xe4) = iVar2; + } +LAB_004aede2: + if (*(int *)(param_4 + 0xe4) < 0) { + FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_has_an_invalid_watched_subsystem_0050eb77, + (char *)0x0); + uVar3 = 0; + } + else { + *(int *)(param_4 + 0xe4) = *(int *)(param_4 + 0xe4) + 2; + uVar3 = 1; + } + } + } + } + } + return uVar3; +} + + + +/* @004aee2c file=? name=FUN_004aee2c */ + +void __cdecl FUN_004aee2c(int param_1) + +{ + uint uVar1; + + uVar1 = *(uint *)(*(int *)(param_1 + 0xd0) + 0x28); + if (((uVar1 & 0xc) == 0) && ((uVar1 & 0x100) != 0)) { + (**(code **)(*(int *)(param_1 + 0x114) + 4)) + (param_1 + 0x114, + *(undefined4 *) + (*(int *)(*(int *)(param_1 + 0xd0) + 0x128) + *(int *)(param_1 + 0x128) * 4)); + } + return; +} + + + +/* @004aee70 file=? name=FUN_004aee70 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004aee70(int param_1,int param_2) + +{ + bool bVar1; + undefined3 extraout_var; + + bVar1 = FUN_004ac9c8(param_1); + if (CONCAT31(extraout_var,bVar1) == 0) { + if (*(int *)(param_2 + 0xc) < 1) { + FUN_0041bbd8(param_1 + 0x1d0,0); + } + else { + if ((*(int *)(param_1 + 0x1e4) != 1) && (_DAT_004aeedc < *(float *)(param_1 + 300))) { + FUN_0041bbd8(param_1 + 0x1d0,1); + } + *(undefined4 *)(param_1 + 0x228) = 0; + } + *(ushort *)(param_1 + 0x18) = *(ushort *)(param_1 + 0x18) | 1; + } + return; +} + + + +/* @004aeee0 file=? name=FUN_004aeee0 */ + +void __cdecl FUN_004aeee0(int *param_1) + +{ + FUN_004ad760(param_1); + return; +} + + + +/* @004aeef8 file=? name=FUN_004aeef8 */ + +void __cdecl FUN_004aeef8(int param_1,int param_2) + +{ + FUN_0041bd34(param_1,param_2); + if (*(int *)(param_2 + 0x10) == 0) { + FUN_0041bbd8(param_1 + 0x1d0,0); + } + else { + FUN_0041bbd8(param_1 + 0x1d0,1); + } + return; +} + + + +/* @004aef40 file=? name=FUN_004aef40 */ + +void __cdecl FUN_004aef40(int param_1,undefined4 *param_2,undefined2 param_3) + +{ + FUN_0041c500(param_1,param_2,param_3); + *param_2 = 0x14; + param_2[4] = (uint)(*(int *)(param_1 + 0x1e4) == 1); + return; +} + + + +/* @004aef78 file=? name=FUN_004aef78 */ + +void __cdecl FUN_004aef78(int param_1,float param_2) + +{ + if (*(int *)(param_1 + 0x1e4) == 1) { + *(float *)(param_1 + 0x228) = param_2 + *(float *)(param_1 + 0x228); + FUN_004aefa4(param_1,param_2); + } + return; +} + + + +/* @004aefa4 file=? name=FUN_004aefa4 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004aefa4(int param_1,float param_2) + +{ + float fVar1; + int iVar2; + int iVar3; + float10 fVar4; + int local_6c [3]; + int local_60 [3]; + int local_54 [3]; + int local_48 [3]; + int local_3c [4]; + float local_2c; + float local_28; + float local_24; + float local_20; + float local_1c; + float local_18; + float local_14; + float local_10; + float local_c; + float local_8; + + local_8 = *(float *)(param_1 + 300); + fVar4 = FUN_004dcd00((double)local_8); + if ((float10)_DAT_004af3a0 < fVar4) { + iVar3 = *(int *)(param_1 + 0xd0); + FUN_004afa65(local_3c,0); + FUN_004a4f15(local_48,iVar3 + 0x7cc); + while (iVar2 = (**(code **)(local_48[0] + 0x28))(), iVar2 != 0) { + (**(code **)(local_3c[0] + 4))(local_3c); + } + FUN_004afab0(local_54,iVar3 + 0x7bc); + while (iVar2 = (**(code **)(local_54[0] + 0x28))(), iVar2 != 0) { + (**(code **)(local_3c[0] + 4))(local_3c); + } + FUN_004a4f9e(local_60,iVar3 + 0x7ac); + while (iVar3 = (**(code **)(local_60[0] + 0x28))(), iVar3 != 0) { + (**(code **)(local_3c[0] + 4))(local_3c); + } + FUN_00417ab4(param_1 + 0x164); + (**(code **)(local_3c[0] + 4))(local_3c); + FUN_004afb58(local_6c,(int)local_3c); + while (iVar3 = (**(code **)(local_6c[0] + 0x28))(), iVar3 != 0) { + local_c = *(float *)(param_1 + 300); + fVar4 = FUN_004dcd00((double)local_c); + if (fVar4 <= (float10)_DAT_004af3a0) { + FUN_004afb96(local_6c,2); + FUN_004a4ffb(local_60,2); + FUN_004afb0d(local_54,2); + FUN_004a4f72(local_48,2); + FUN_004afa84(local_3c,2); + return; + } + if (*(float *)(iVar3 + 0x15c) != _DAT_004af3a4) { + fVar1 = -*(float *)(param_1 + 0x224) * *(float *)(iVar3 + 0x15c) * param_2; + local_14 = -*(float *)(param_1 + 300); + local_10 = local_14; + if ((local_14 <= fVar1) && (local_10 = fVar1, _DAT_004af3a4 < fVar1)) { + local_10 = _DAT_004af3a4; + } + local_24 = *(float *)(iVar3 + 300); + fVar4 = FUN_004dcd00((double)local_24); + if ((float10)_DAT_004af3a0 < fVar4) { + local_20 = local_10; + if (local_10 <= _DAT_004af3a4) { + local_20 = -local_10; + } + local_20 = local_20 / *(float *)(iVar3 + 300); + local_1c = local_10; + if (local_10 <= _DAT_004af3a4) { + local_1c = -local_10; + } + local_1c = local_1c / *(float *)(param_1 + 300); + local_18 = *(float *)(iVar3 + 0x158) * local_20 - *(float *)(param_1 + 0x158) * local_1c; + } + else { + local_20 = local_10; + if (local_10 <= _DAT_004af3a4) { + local_20 = -local_10; + } + local_20 = local_20 / *(float *)(iVar3 + 0x128); + local_1c = local_10; + if (local_10 <= _DAT_004af3a4) { + local_1c = -local_10; + } + local_1c = local_1c / *(float *)(param_1 + 300); + local_18 = *(float *)(iVar3 + 0x158) * local_20 - *(float *)(param_1 + 0x158) * local_1c; + } + *(float *)(param_1 + 300) = local_10 + *(float *)(param_1 + 300); + *(float *)(iVar3 + 300) = *(float *)(iVar3 + 300) - local_10; + if (_DAT_004af3a4 <= *(float *)(iVar3 + 300)) { + if (*(float *)(iVar3 + 300) <= *(float *)(iVar3 + 0x128)) { + fVar1 = *(float *)(iVar3 + 300); + } + else { + fVar1 = *(float *)(iVar3 + 0x128); + } + } + else { + fVar1 = (float)_DAT_004af3a8; + } + *(float *)(iVar3 + 300) = fVar1; + if (*(float *)(iVar3 + 0x154) * *(float *)(param_1 + 0x13c) < local_18) { + local_18 = *(float *)(iVar3 + 0x154) * *(float *)(param_1 + 0x13c); + } + local_2c = -local_18; + if (_DAT_004af3a4 < local_2c) { + local_2c = _DAT_004af3a4; + } + *(float *)(iVar3 + 0x1c8) = local_2c + *(float *)(iVar3 + 0x1c8); + local_28 = local_2c; + } + } + FUN_004afb96(local_6c,2); + FUN_004a4ffb(local_60,2); + FUN_004afb0d(local_54,2); + FUN_004a4f72(local_48,2); + FUN_004afa84(local_3c,2); + } + return; +} + + + +/* @004af3b0 file=? name=FUN_004af3b0 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 __cdecl FUN_004af3b0(int param_1,float param_2) + +{ + float fVar1; + + fVar1 = _DAT_004af404; + if ((_DAT_004af404 <= param_2) && (fVar1 = param_2, *(float *)(param_1 + 300) < param_2)) { + fVar1 = *(float *)(param_1 + 300); + } + *(float *)(param_1 + 300) = *(float *)(param_1 + 300) - fVar1; + return (float10)fVar1; +} + + + +/* @004af408 file=? name=FUN_004af408 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +int * __cdecl +FUN_004af408(int *param_1,int param_2,undefined4 param_3,char *param_4,undefined4 param_5) + +{ + int iVar1; + + FUN_004adda0(param_1,param_2,param_3,param_4,param_5,0,0); + *param_1 = (int)&PTR_FUN_0050ecd4; + FUN_0041b9ec(param_1 + 0x74,2); + param_1[0x8b] = 0x3f000000; + param_1[0x4a] = *(int *)(param_4 + 0xfc); + param_1[0x89] = *(int *)(param_4 + 0x100); + param_1[0x4b] = param_1[0x4a]; + param_1[0x57] = 0; + FUN_0041bbd8((int)(param_1 + 0x74),0); + param_1[0x8a] = 0; + if (((*(uint *)(param_2 + 0x28) & 0xc) == 0) && ((*(uint *)(param_2 + 0x28) & 0x100) != 0)) { + param_1[7] = (int)PTR_FUN_0050e6b4; + param_1[8] = DAT_0050e6b8; + param_1[9] = DAT_0050e6bc; + iVar1 = FUN_00417ab4((int)(param_1 + 0x59)); + (**(code **)(*(int *)(iVar1 + 0x1d8) + 4))(iVar1 + 0x1d8,param_1); + param_1[0x4a] = + (int)(float)(_DAT_004af518 * (float10)*(int *)(iVar1 + 0x1d0) * + (float10)(float)param_1[0x4a]); + param_1[0x4b] = param_1[0x4a]; + } + else { + param_1[10] = param_1[10] | 2; + } + return param_1; +} + + + +/* @004af524 file=? name=FUN_004af524 */ + +void __cdecl FUN_004af524(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0050ecd4; + FUN_0041baa4(param_1 + 0x74,2); + FUN_004adfd4(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004af564 file=? name=FUN_004af564 */ + +void __cdecl FUN_004af564(int param_1) + +{ + FUN_0041a1a4(**(int **)(param_1 + 0xc),0x50e650); + return; +} + + + +/* @004af580 file=? name=FUN_004af580 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl +FUN_004af580(int param_1,char *param_2,char *param_3,char *param_4,int param_5,int param_6, + int param_7) + +{ + int iVar1; + undefined4 uVar2; + + iVar1 = FUN_004ae150(param_1,param_2,param_3,param_4,param_5,param_6,param_7); + if (iVar1 == 0) { + uVar2 = 0; + } + else { + param_4[0x24] = '\x04'; + param_4[0x25] = '\x01'; + param_4[0x26] = '\0'; + param_4[0x27] = '\0'; + param_4[0x20] = -0x40; + param_4[0x21] = '\v'; + param_4[0x22] = '\0'; + param_4[0x23] = '\0'; + if (param_7 == 1) { + param_4[0xfc] = '\0'; + param_4[0xfd] = '\0'; + param_4[0xfe] = -0x80; + param_4[0xff] = -0x41; + param_4[0x100] = '\0'; + param_4[0x101] = '\0'; + param_4[0x102] = -0x80; + param_4[0x103] = -0x41; + } + iVar1 = FUN_00404118(param_5,param_3,s_CoolantCapacity_0050ebc2,(float *)(param_4 + 0xfc)); + if ((iVar1 == 0) && (_DAT_004af694 == *(float *)(param_4 + 0xfc))) { + FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_CoolantCapacity__0050ebd2,(char *)0x0); + uVar2 = 0; + } + else { + iVar1 = FUN_00404118(param_5,param_3,s_CoolantSquirtMass_0050ebed,(float *)(param_4 + 0x100)); + if ((iVar1 == 0) && (_DAT_004af694 == *(float *)(param_4 + 0x100))) { + FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_CoolantSquirtMass__0050ebff,(char *)0x0); + uVar2 = 0; + } + else { + uVar2 = 1; + } + } + } + return uVar2; +} + + + /* @004af9cf file=? name=FUN_004af9cf */ undefined4 * __cdecl FUN_004af9cf(undefined4 *param_1,undefined4 param_2) @@ -191,6 +7213,17 @@ void __cdecl FUN_004afb96(int *param_1,byte param_2) +/* @004afbc4 file=bt/mechmppr.cpp name=FUN_004afbc4 */ + +void FUN_004afbc4(void) + +{ + FUN_0040385c(s_Unhandled_button_mapping__0050f24a,s_d__tesla_bt_bt_MECHMPPR_CPP_0050f265,0x7a); + return; +} + + + /* @004afbe0 file=? name=FUN_004afbe0 */ void __cdecl FUN_004afbe0(int *param_1,int param_2) @@ -470,6 +7503,18 @@ void __cdecl FUN_004afd10(int param_1) +/* @004b0280 file=bt/mechmppr.cpp name=FUN_004b0280 */ + +void FUN_004b0280(void) + +{ + FUN_0040385c(s_EnterConfiguration_not_overridde_0050f36c,s_d__tesla_bt_bt_MECHMPPR_CPP_0050f390, + 0x23d); + return; +} + + + /* @004b029c file=bt/mechmppr.cpp name=FUN_004b029c */ void FUN_004b029c(void) @@ -1605,6 +8650,18 @@ LAB_004b153f: +/* @004b1780 file=? name=FUN_004b1780 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 __cdecl FUN_004b1780(undefined4 param_1,float param_2) + +{ + return _DAT_004b1790 * (float10)param_2; +} + + + /* @004b179c file=? name=FUN_004b179c */ void __cdecl FUN_004b179c(int *param_1,int *param_2) @@ -1760,6 +8817,25 @@ FUN_004b198c(int param_1,char *param_2,char *param_3,char *param_4,int param_5,i +/* @004b1a40 file=? name=FUN_004b1a40 */ + +void __cdecl FUN_004b1a40(int param_1) + +{ + uint uVar1; + + uVar1 = *(uint *)(*(int *)(param_1 + 0xd0) + 0x28); + if (((uVar1 & 0xc) == 0) && ((uVar1 & 0x100) != 0)) { + (**(code **)(*(int *)(param_1 + 0x114) + 4)) + (param_1 + 0x114, + *(undefined4 *) + (*(int *)(*(int *)(param_1 + 0xd0) + 0x128) + *(int *)(param_1 + 0x128) * 4)); + } + return; +} + + + /* @004b1bb1 file=? name=FUN_004b1bb1 */ undefined4 * __cdecl FUN_004b1bb1(undefined4 *param_1,undefined4 param_2) @@ -1937,6 +9013,39 @@ void __cdecl FUN_004b1e18(int param_1) +/* @004b1ed0 file=? name=FUN_004b1ed0 */ + +void __cdecl FUN_004b1ed0(int param_1,int param_2) + +{ + bool bVar1; + undefined3 extraout_var; + + bVar1 = FUN_004ac9c8(param_1); + if ((CONCAT31(extraout_var,bVar1) == 0) && (0 < *(int *)(param_2 + 0xc))) { + if (*(int *)(param_1 + 0x1d4) == 0) { + if (*(int *)(param_1 + 0x184) == 0) { + *(undefined4 *)(param_1 + 0x1f0) = 0; + FUN_0041bbd8(param_1 + 0x1fc,0); + } + else { + *(undefined4 *)(param_1 + 0x1f0) = 0; + } + *(undefined4 *)(param_1 + 0x1d4) = 1; + *(undefined4 *)(param_1 + 0x134) = 1; + *(undefined4 *)(param_1 + 0x15c) = 0x3f800000; + return; + } + FUN_0041bbd8(param_1 + 0x1fc,1); + *(undefined4 *)(param_1 + 0x1d4) = 0; + *(undefined4 *)(param_1 + 0x134) = 0; + *(undefined4 *)(param_1 + 0x15c) = 0; + } + return; +} + + + /* @004b1f7c file=? name=FUN_004b1f7c */ /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ @@ -1999,6 +9108,25 @@ void __cdecl FUN_004b1f7c(int *param_1,float param_2) +/* @004b215c file=? name=FUN_004b215c */ + +void __cdecl FUN_004b215c(int *param_1) + +{ + FUN_004ad760(param_1); + param_1[0x75] = 1; + param_1[0x7c] = 0; + FUN_0041bbd8((int)(param_1 + 0x7f),0); + FUN_0041bbd8((int)(param_1 + 0x7f),2); + param_1[0x77] = param_1[0x76]; + param_1[0x4d] = 1; + param_1[0x57] = 0x3f800000; + param_1[0x7c] = param_1[0x7b]; + return; +} + + + /* @004b21d0 file=? name=FUN_004b21d0 */ /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ @@ -2295,6 +9423,127 @@ void __cdecl FUN_004b275c(int param_1,float param_2) +/* @004b2980 file=? name=FUN_004b2980 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004b2980(int param_1,int param_2,float param_3) + +{ + int iVar1; + float10 fVar2; + int in_stack_00000034; + float local_2c; + float local_28; + float local_24; + float local_20; + float local_1c; + float local_18; + float local_14; + float local_10; + float local_c; + float local_8; + + if ((param_3 != _DAT_004b2d80) && (param_2 != 0)) { + local_14 = 0.0; + local_10 = 0.0; + local_c = 0.0; + local_8 = 0.0; + iVar1 = FUN_004084fc((float *)&stack0x00000010,(float *)&DAT_004e0f74,0.0001); + if (iVar1 == 0) { + FUN_00408440(&local_20,(undefined4 *)&stack0x00000010); + } + else { + fVar2 = FUN_00408050(); + if (fVar2 < (float10)_DAT_004b2d84) { + fVar2 = FUN_00408050(); + fVar2 = -fVar2; + } + else { + fVar2 = FUN_00408050(); + } + local_20 = (float)fVar2; + fVar2 = FUN_00408050(); + if (fVar2 < (float10)_DAT_004b2d84) { + fVar2 = FUN_00408050(); + fVar2 = -fVar2; + } + else { + fVar2 = FUN_00408050(); + } + local_18 = (float)fVar2; + local_1c = 0.0; + } + FUN_004087f4(&local_20,&local_20); + *(undefined4 *)(param_1 + 0x2ac) = **(undefined4 **)(param_1 + 600); + *(float *)(param_1 + 0x2a8) = 0.0; + *(undefined4 *)(param_1 + 0x2b0) = 0; + FUN_00409a00((float *)(param_1 + 0x298),(float *)(param_1 + 0x2a8)); + FUN_00408440((undefined4 *)(param_1 + 0x28c),&DAT_004e0f74); + FUN_0040ab44((float *)(param_1 + 0x25c),(undefined4 *)(param_1 + 0x28c)); + local_2c = local_20; + local_28 = local_1c; + local_24 = local_18; + FUN_00408744(&local_20,&local_2c,(float *)(param_1 + 0x25c)); + FUN_004087f4(&local_20,&local_20); + switch(param_2) { + case 0: + local_14 = 0.0; + local_10 = 0.0; + local_c = 0.0; + local_8 = 0.0; + break; + case 1: + local_14 = (param_3 / *(float *)(param_1 + 0x330)) * *(float *)(param_1 + 0x350); + local_10 = (param_3 / *(float *)(param_1 + 0x330)) * *(float *)(param_1 + 0x354); + local_c = (param_3 / *(float *)(param_1 + 0x330)) * *(float *)(param_1 + 0x358); + local_8 = (param_3 / *(float *)(param_1 + 0x330)) * *(float *)(param_1 + 0x35c); + break; + case 2: + local_14 = (((float)in_stack_00000034 * param_3) / *(float *)(param_1 + 0x334)) * + *(float *)(param_1 + 0x360); + local_10 = (((float)in_stack_00000034 * param_3) / *(float *)(param_1 + 0x334)) * + *(float *)(param_1 + 0x364); + local_c = (((float)in_stack_00000034 * param_3) / *(float *)(param_1 + 0x334)) * + *(float *)(param_1 + 0x368); + local_8 = (((float)in_stack_00000034 * param_3) / *(float *)(param_1 + 0x334)) * + *(float *)(param_1 + 0x36c); + break; + case 3: + local_14 = (param_3 / *(float *)(param_1 + 0x338)) * *(float *)(param_1 + 0x370); + local_10 = (param_3 / *(float *)(param_1 + 0x338)) * *(float *)(param_1 + 0x374); + local_c = (param_3 / *(float *)(param_1 + 0x338)) * *(float *)(param_1 + 0x378); + local_8 = (param_3 / *(float *)(param_1 + 0x338)) * *(float *)(param_1 + 0x37c); + break; + case 4: + local_14 = (param_3 / *(float *)(param_1 + 0x33c)) * *(float *)(param_1 + 0x380); + local_10 = (param_3 / *(float *)(param_1 + 0x33c)) * *(float *)(param_1 + 900); + local_c = (param_3 / *(float *)(param_1 + 0x33c)) * *(float *)(param_1 + 0x388); + local_8 = (param_3 / *(float *)(param_1 + 0x33c)) * *(float *)(param_1 + 0x38c); + } + if (_DAT_004b2d88 < local_14) { + local_14 = _DAT_004b2d88; + } + if (_DAT_004b2d88 < local_10) { + local_10 = _DAT_004b2d88; + } + if (_DAT_004b2d88 < local_c) { + local_c = _DAT_004b2d88; + } + if (_DAT_004b2d88 < local_8) { + local_8 = _DAT_004b2d88; + } + FUN_004b2d8c(param_1,local_20,local_1c,local_18,local_14); + FUN_004b2de4(param_1,local_20,local_1c,local_18,local_10); + FUN_004b2d8c(param_1,*(float *)(param_1 + 0x390),*(float *)(param_1 + 0x394), + *(float *)(param_1 + 0x398),local_8); + FUN_004b2e50(param_1,local_20,local_1c,local_18,local_c); + } + return; +} + + + /* @004b2d8c file=? name=FUN_004b2d8c */ void __cdecl FUN_004b2d8c(int param_1,float param_2,float param_3,float param_4,float param_5) @@ -4426,6 +11675,17 @@ LAB_004b596b: +/* @004b5be0 file=? name=FUN_004b5be0 */ + +void __cdecl FUN_004b5be0(int *param_1,int *param_2) + +{ + FUN_004b179c(param_1,param_2); + return; +} + + + /* @004b5bf8 file=? name=FUN_004b5bf8 */ void __cdecl FUN_004b5bf8(int *param_1,int param_2) @@ -4923,6 +12183,22 @@ bool __cdecl FUN_004b6918(int param_1,float param_2) +/* @004b6a1c file=? name=FUN_004b6a1c */ + +void __cdecl FUN_004b6a1c(int param_1,undefined4 *param_2,undefined2 param_3) + +{ + FUN_0041c500(param_1,param_2,param_3); + *param_2 = 0x1c; + param_2[4] = *(undefined4 *)(param_1 + 0x1d8); + param_2[5] = *(undefined4 *)(param_1 + 0x1e8); + param_2[6] = *(undefined4 *)(param_1 + 0x238); + *(undefined4 *)(param_1 + 0x21c) = *(undefined4 *)(param_1 + 0x1d8); + return; +} + + + /* @004b6a78 file=? name=FUN_004b6a78 */ /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ @@ -4994,7 +12270,7 @@ int * __cdecl FUN_004b6b0c(int *param_1,int param_2,undefined4 param_3,char *par float local_8; FUN_004b18a4(param_1,param_2,param_3,param_4,&DAT_00510af8); - *param_1 = (int)&PTR_LAB_0051103c; + *param_1 = (int)&PTR_FUN_0051103c; if (((*(uint *)(param_2 + 0x28) & 0xc) == 0) && ((*(byte *)(param_2 + 0x29) & 1) != 0)) { param_1[0x93] = 0; param_1[7] = (int)PTR_FUN_00510c10; @@ -5119,6 +12395,23 @@ int * __cdecl FUN_004b6b0c(int *param_1,int param_2,undefined4 param_3,char *par +/* @004b6fc0 file=? name=FUN_004b6fc0 */ + +void __cdecl FUN_004b6fc0(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0051103c; + FUN_004b1930(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + /* @004b6fec file=? name=FUN_004b6fec */ /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ @@ -5467,6 +12760,24 @@ LAB_004b752e: +/* @004b7780 file=? name=FUN_004b7780 */ + +void __cdecl FUN_004b7780(int *param_1,int *param_2) + +{ + if (*param_2 == 4) { + param_1[0x8a] = 1; + } + else { + param_1[0x8b] = 1; + param_1[0x87] = 0; + } + FUN_004b179c(param_1,param_2); + return; +} + + + /* @004b77bc file=? name=FUN_004b77bc */ void __cdecl FUN_004b77bc(int *param_1,int param_2) @@ -5933,6 +13244,20 @@ FUN_004b81d4(int param_1,char *param_2,char *param_3,char *param_4,int param_5,i +/* @004b838c file=? name=FUN_004b838c */ + +void __cdecl FUN_004b838c(int param_1,int param_2) + +{ + if (0 < *(int *)(param_2 + 0xc)) { + *(uint *)(param_1 + 0x1e0) = (uint)(*(int *)(param_1 + 0x1e0) == 0); + } + *(ushort *)(param_1 + 0x18) = *(ushort *)(param_1 + 0x18) | 1; + return; +} + + + /* @004b83b8 file=? name=FUN_004b83b8 */ void __cdecl FUN_004b83b8(int param_1,int param_2) @@ -6202,6 +13527,34 @@ void __cdecl FUN_004b881c(int param_1) +/* @004b8a48 file=? name=FUN_004b8a48 */ + +int __cdecl FUN_004b8a48(int param_1,int param_2) + +{ + bool bVar1; + undefined3 extraout_var; + int iVar2; + int iVar3; + int iVar4; + + bVar1 = FUN_004ac9c8(param_1); + iVar3 = CONCAT31(extraout_var,bVar1); + if (CONCAT31(extraout_var,bVar1) == 0) { + iVar2 = FUN_004ad7d4(param_1); + iVar3 = 0; + if ((iVar2 != 0) && (iVar3 = param_2, 0 < *(int *)(param_2 + 0xc))) { + iVar4 = *(int *)(param_1 + 0x32c) + 1; + iVar2 = *(int *)(param_1 + 800) + 1; + iVar3 = iVar2 / iVar4; + *(int *)(param_1 + 800) = iVar2 % iVar4; + } + } + return iVar3; +} + + + /* @004b8a8c file=? name=FUN_004b8a8c */ void __cdecl FUN_004b8a8c(int *param_1,int *param_2) @@ -6260,6 +13613,69 @@ float10 __cdecl FUN_004b8ac0(int param_1,float param_2) +/* @004b8b9c file=? name=FUN_004b8b9c */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004b8b9c(int *param_1,float param_2) + +{ + int iVar1; + int iVar2; + float10 fVar3; + undefined4 local_3c; + undefined4 local_38; + undefined4 local_1c [3]; + undefined4 local_10; + float local_c; + float local_8; + + FUN_004b0bd0(param_1,param_2); + iVar1 = param_1[0x34]; + if ((param_1[0x9e] == 1) && (*(float *)(param_1[0x38] + 0x158) < _DAT_004b8d10)) { + FUN_0041db7c((int)&local_3c); + local_3c = 2; + local_38 = 0xbc343958; + local_10 = 1; + FUN_00408440(local_1c,(undefined4 *)(iVar1 + 0x100)); + (**(code **)(*(int *)param_1[0x38] + 0x18))((int *)param_1[0x38],&local_3c); + } + if (param_1[0x10] == 1) { + param_1[0xd1] = 0; + } + iVar2 = FUN_00417ab4((int)(param_1 + 0x74)); + if (param_1[0x9e] == 4) { + param_1[0xd1] = *(int *)(iVar2 + 0x1dc); + } + else { + param_1[0xd1] = 0; + } + iVar2 = (**(code **)(*param_1 + 0x40))(param_1,0); + if (iVar2 == 0) { + param_1[199] = 0; + } + else { + if ((float)param_1[param_1[200] + 0xcc] <= (float)param_1[0xd1]) { + local_8 = (float)param_1[param_1[200] + 0xcc]; + } + else { + local_8 = (float)param_1[0xd1]; + } + if ((float)param_1[param_1[0xcb] + 0xcc] < local_8) { + local_8 = (float)param_1[param_1[0xcb] + 0xcc]; + } + fVar3 = FUN_004b8ac0((int)param_1,local_8); + local_c = (float)fVar3; + param_1[199] = (int)(local_c / *(float *)(iVar1 + 0x34c)); + } + if (_DAT_004b8d14 < (float)param_1[0xd1]) { + FUN_004b8d18((int)param_1,param_2); + } + return; +} + + + /* @004b8d18 file=? name=FUN_004b8d18 */ /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ @@ -6399,7 +13815,7 @@ int * __cdecl FUN_004b8fec(int *param_1,int param_2,undefined4 param_3,char *par float *pfVar4; FUN_004b0f74(param_1,param_2,param_3,param_4,&DAT_0051154c,0,0); - *param_1 = (int)&PTR_LAB_005117dc; + *param_1 = (int)&PTR_FUN_005117dc; param_1[199] = 0x3f800000; param_1[0xd2] = (int)((float)param_1[0x47] - (float)param_1[0x46]); param_1[0xd3] = (int)((float)param_1[0xd2] * (float)param_1[0xd2]); @@ -6407,7 +13823,7 @@ int * __cdecl FUN_004b8fec(int *param_1,int param_2,undefined4 param_3,char *par param_1[0xd5] = *(int *)(param_4 + 0x194); param_1[0x54] = 0x3e19999a; if (((*(uint *)(param_2 + 0x28) & 0xc) == 0) && ((*(uint *)(param_2 + 0x28) & 0x100) != 0)) { - param_1[7] = (int)PTR_LAB_00511620; + param_1[7] = (int)PTR_FUN_00511620; param_1[8] = DAT_00511624; param_1[9] = DAT_00511628; } @@ -6435,6 +13851,23 @@ int * __cdecl FUN_004b8fec(int *param_1,int param_2,undefined4 param_3,char *par +/* @004b9114 file=? name=FUN_004b9114 */ + +void __cdecl FUN_004b9114(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_005117dc; + FUN_004b115c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + /* @004b9140 file=? name=FUN_004b9140 */ /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ @@ -6994,6 +14427,18 @@ void __cdecl FUN_004b9bdc(int param_1) +/* @004b9c9c file=? name=FUN_004b9c9c */ + +void __cdecl FUN_004b9c9c(int param_1) + +{ + *(float *)(param_1 + 800) = + (*(float *)(param_1 + 0x3dc) - *(float *)(param_1 + 1000)) / *(float *)(param_1 + 0x3dc); + return; +} + + + /* @004b9cbc file=? name=FUN_004b9cbc */ void __cdecl FUN_004b9cbc(int param_1,undefined4 *param_2) @@ -7581,7 +15026,7 @@ LAB_004ba916: if (iVar1 != 0) goto LAB_004ba916; } } - FUN_0041c350(param_1,PTR_LAB_00511e6c,DAT_00511e70,DAT_00511e74); + FUN_0041c350(param_1,PTR_FUN_00511e6c,DAT_00511e70,DAT_00511e74); return; } @@ -7626,7 +15071,7 @@ void __cdecl FUN_004baa20(int param_1) return; } } - FUN_0041c350(param_1,PTR_LAB_00511e78,DAT_00511e7c,DAT_00511e80); + FUN_0041c350(param_1,PTR_FUN_00511e78,DAT_00511e7c,DAT_00511e80); } return; } @@ -7699,6 +15144,42 @@ void __cdecl FUN_004baa88(int *param_1,float param_2) +/* @004bac0c file=? name=FUN_004bac0c */ + +void __cdecl FUN_004bac0c(int param_1) + +{ + float10 fVar1; + float local_6c; + float local_68; + float local_64; + undefined4 local_60 [7]; + float local_44 [12]; + float local_14 [3]; + float local_8; + + if (*(int *)(param_1 + 0x470) == 0) { + if (*(int *)(param_1 + 0x474) == 0) { + return; + } + FUN_00408b98(local_14,(float *)(param_1 + 0x460),(float *)(*(int *)(param_1 + 0x474) + 0xd0)); + } + else { + FUN_00408440(local_14,(undefined4 *)(param_1 + 0x460)); + } + FUN_0040aadc(local_44); + FUN_004b9948(param_1,local_44); + FUN_0040a968(local_60,local_44); + FUN_00408bf8(&local_6c,local_14,local_44); + fVar1 = FUN_004dd138((double)(local_64 * local_64 + local_68 * local_68 + local_6c * local_6c)); + local_8 = (float)fVar1; + *(float *)(param_1 + 0x434) = local_8 / *(float *)(param_1 + 0x438); + FUN_004b9864(param_1,(float *)(param_1 + 0x41c),&local_6c); + return; +} + + + /* @004bace8 file=? name=FUN_004bace8 */ /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ @@ -7780,6 +15261,22 @@ void __cdecl FUN_004bace8(int *param_1) +/* @004bafc8 file=? name=FUN_004bafc8 */ + +void __cdecl FUN_004bafc8(int *param_1,int *param_2) + +{ + if ((*param_2 == 4) && (param_1[0xd9] == 3)) { + FUN_0041bbd8((int)(param_1 + 0x99),2); + param_1[0x105] = 0; + (**(code **)(*param_1 + 0x44))(param_1); + } + FUN_004b96d4(param_1,param_2); + return; +} + + + /* @004bb014 file=? name=FUN_004bb014 */ void __cdecl FUN_004bb014(int param_1) @@ -7942,6 +15439,20 @@ float10 __cdecl FUN_004bb3f4(int param_1,float param_2) +/* @004bb42c file=? name=FUN_004bb42c */ + +void __cdecl FUN_004bb42c(int param_1,float param_2) + +{ + float10 fVar1; + + fVar1 = FUN_004bb3f4(param_1,param_2); + FUN_004dd138((double)(((float)fVar1 - 0.0) / 2e+08)); + return; +} + + + /* @004bb478 file=? name=FUN_004bb478 */ /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ @@ -8176,6 +15687,52 @@ void __cdecl FUN_004bb92c(int param_1) +/* @004bb9b8 file=? name=FUN_004bb9b8 */ + +void __cdecl FUN_004bb9b8(int param_1,int param_2) + +{ + bool bVar1; + undefined3 extraout_var; + int iVar2; + + bVar1 = FUN_004ac9c8(param_1); + if (CONCAT31(extraout_var,bVar1) == 0) { + if ((0 < *(int *)(param_2 + 0xc)) && (iVar2 = FUN_00417ab4(param_1 + 0x43c), iVar2 != 0)) { + iVar2 = FUN_00417ab4(param_1 + 0x43c); + FUN_0041bbd8(iVar2 + 0x194,3); + *(undefined4 *)(param_1 + 0x3f4) = *(undefined4 *)(param_1 + 0x3f0); + *(undefined4 *)(param_1 + 0x3f8) = 0; + *(undefined4 *)(param_1 + 0x400) = 0; + return; + } + if (*(int *)(param_1 + 0x400) == 0) { + iVar2 = FUN_00417ab4(param_1 + 0x43c); + if (iVar2 == 0) { + FUN_0041bbd8(param_1 + 0x350,7); + } + else { + FUN_0041bbd8(iVar2 + 0x194,4); + FUN_0041bbd8(iVar2 + 0x194,1); + FUN_004bd4f4(iVar2); + if (*(int *)(iVar2 + 0x1a8) == 2) { + FUN_0041bbd8(param_1 + 0x350,7); + } + else { + FUN_0041bbd8(param_1 + 0x350,3); + *(undefined4 *)(param_1 + 1000) = *(undefined4 *)(param_1 + 0x3dc); + } + *(undefined4 *)(param_1 + 0x3f4) = *(undefined4 *)(param_1 + 0x3f0); + *(undefined4 *)(param_1 + 0x3f8) = 0; + } + } + *(undefined4 *)(param_1 + 0x400) = 0xffffffff; + } + return; +} + + + /* @004bbae0 file=? name=FUN_004bbae0 */ void __cdecl FUN_004bbae0(int *param_1,int *param_2) @@ -8239,6 +15796,26 @@ void __cdecl FUN_004bbb50(int param_1,float param_2) +/* @004bbc20 file=? name=FUN_004bbc20 */ + +undefined4 __cdecl FUN_004bbc20(int param_1,int param_2) + +{ + if (param_2 == 0) { + param_2 = FUN_00417ab4(param_1 + 0x1d0); + } + if (param_2 == 0) { + return 0; + } + if ((*(float *)(param_1 + 0x404) * *(float *)(param_2 + 0x1d8) <= *(float *)(param_2 + 0x1dc)) && + (*(int *)(param_2 + 0x210) == 2)) { + return 1; + } + return 0; +} + + + /* @004bbc78 file=? name=FUN_004bbc78 */ /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ @@ -8267,6 +15844,117 @@ void __cdecl FUN_004bbc78(int param_1,float param_2) +/* @004bbd04 file=? name=FUN_004bbd04 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004bbd04(int *param_1,float param_2) + +{ + int *piVar1; + int iVar2; + int iVar3; + int iVar4; + int iVar5; + + FUN_004b0bd0(param_1,param_2); + iVar3 = FUN_004b9608((int)param_1); + FUN_004bbb50((int)param_1,param_2); + iVar5 = param_1[0x34]; + if (((param_1[0x10] == 1) || (param_1[0x61] == 2)) || (iVar4 = FUN_0049fb54(iVar5), iVar4 != 0)) { + param_1[0xfa] = param_1[0xf7]; + FUN_0041bbd8((int)(param_1 + 0xd4),7); + } + iVar4 = FUN_00417ab4((int)(param_1 + 0x10f)); + if (((*(int *)(iVar4 + 0x1a8) == 2) || (*(int *)(iVar4 + 0x1a8) == 3)) || + (*(int *)(iVar4 + 0x40) == 1)) { + FUN_0041bbd8((int)(param_1 + 0xd4),7); + } + iVar2 = param_1[0xd9]; + if (iVar2 == 2) { + if (iVar3 != 0) { + if ((param_1[0xf8] == 0) || (*(int *)(iVar5 + 0x388) == 0)) { + FUN_0041bbd8((int)(param_1 + 0xd4),4); + FUN_0041bbd8((int)(param_1 + 0xd4),2); + } + else { + iVar5 = FUN_004bd4f4(iVar4); + if (iVar5 != 0) { + piVar1 = param_1 + 0xd4; + FUN_0041bbd8((int)piVar1,0); + *(ushort *)(param_1 + 6) = *(ushort *)(param_1 + 6) | 1; + (**(code **)(*param_1 + 0x48))(param_1); + if (*(int *)(iVar4 + 0x1a8) == 2) { + FUN_0041bbd8((int)piVar1,7); + } + else { + iVar5 = FUN_004bbfcc((int)param_1); + if (iVar5 == 0) { + FUN_0041bbd8((int)piVar1,3); + } + else { + FUN_0041bbd8((int)piVar1,5); + } + } + *(ushort *)(param_1 + 6) = *(ushort *)(param_1 + 6) | 1; + param_1[0xfa] = param_1[0xf7]; + } + } + } + } + else if (iVar2 == 3) { + if (iVar3 != 0) { + FUN_0041bbd8((int)(param_1 + 0xd4),4); + FUN_0041bbd8((int)(param_1 + 0xd4),3); + } + if (((param_1[0x9e] == 4) && + (FUN_004bbc78((int)param_1,param_2), (float)param_1[0xfa] < _DAT_004bbf84)) && + (param_1[0xfa] = 0, *(int *)(iVar4 + 0x1a8) == 1)) { + FUN_0041bbd8((int)(param_1 + 0xd4),2); + } + (**(code **)(*param_1 + 0x44))(param_1); + } + else if (iVar2 == 5) { + if (iVar3 != 0) { + FUN_0041bbd8((int)(param_1 + 0xd4),6); + FUN_0041bbd8((int)(param_1 + 0xd4),5); + } + param_1[0xfa] = param_1[0xf7]; + } + else if (iVar2 == 7) { + if (iVar3 != 0) { + FUN_0041bbd8((int)(param_1 + 0xd4),1); + } + FUN_0041bbd8((int)(param_1 + 0xd4),7); + param_1[0xfa] = param_1[0xf7]; + (**(code **)(*param_1 + 0x44))(param_1); + } + return; +} + + + +/* @004bbf88 file=? name=FUN_004bbf88 */ + +uint __cdecl FUN_004bbf88(int *param_1) + +{ + uint uVar1; + int iVar2; + + uVar1 = FUN_004b0f48(param_1); + if (param_1[0xd9] == 5) { + uVar1 = uVar1 | 0x20; + } + iVar2 = FUN_00417ab4((int)(param_1 + 0x10f)); + if ((iVar2 != 0) && (*(int *)(iVar2 + 0x18c) != 0)) { + uVar1 = uVar1 | 0x10; + } + return uVar1; +} + + + /* @004bbfcc file=? name=FUN_004bbfcc */ /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ @@ -8332,6 +16020,112 @@ float10 __cdecl FUN_004bc06c(int param_1) +/* @004bc104 file=? name=FUN_004bc104 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004bc104(int param_1) + +{ + bool bVar1; + int iVar2; + int iVar3; + float10 fVar4; + float local_104; + undefined4 local_100; + undefined4 local_fc; + float local_f8; + undefined4 local_f4; + undefined4 local_f0; + undefined4 local_ec; + float local_e8; + undefined4 local_e4; + undefined4 local_e0; + undefined4 local_dc; + undefined4 local_d8; + undefined4 local_d4; + undefined4 local_d0; + undefined4 local_cc; + undefined4 local_c8; + undefined4 local_c4; + undefined4 local_c0; + float local_bc; + float local_b8; + float local_b4; + float local_b0 [12]; + int local_80 [7]; + float local_64 [7]; + float local_48 [12]; + undefined4 local_18; + undefined4 local_14; + undefined4 local_10; + float local_c; + float local_8; + + iVar2 = FUN_004ad7d4(param_1); + if (iVar2 != 0) { + local_8 = *(float *)(param_1 + 0x3d8); + *(float *)(param_1 + 0x1c8) = local_8 + *(float *)(param_1 + 0x1c8); + } + iVar2 = *(int *)(param_1 + 0xd0); + if ((_DAT_004bc3f4 < *(float *)(param_1 + 0x3ac)) && (*(int *)(iVar2 + 0x528) != 0)) { + local_c = *(float *)(param_1 + 0x3ac) * _DAT_004bc3f8; + local_18 = 0; + local_14 = 0x3f19999a; + local_10 = 0xbfc00000; + FUN_004b2d8c(*(int *)(iVar2 + 0x528),0.0,0.6,-1.5,local_c); + } + *(int *)(param_1 + 0x408) = *(int *)(param_1 + 0x408) + 1; + if ((*(int *)(param_1 + 0x438) == 0) || + (*(int *)(param_1 + 0x408) % *(int *)(param_1 + 0x438) != 0)) { + bVar1 = false; + } + else { + bVar1 = true; + } + if (bVar1) { + FUN_0040aadc(local_48); + FUN_004b9948(param_1,local_48); + FUN_0040a968(local_64,local_48); + FUN_004bc06c(param_1); + FUN_0041f216(local_80,iVar2 + 0x300); + iVar3 = (**(code **)(local_80[0] + 0x34))(local_80); + FUN_0041f235(local_80,2); + FUN_0040aadc(local_b0); + FUN_00424da8(iVar2,iVar3,local_b0); + FUN_00408644(&local_bc,(float *)(iVar2 + 0x37c),local_64); + fVar4 = FUN_004dd138((double)(local_b4 * local_b4 + local_b8 * local_b8 + local_bc * local_bc)); + if (fVar4 <= (float10)*(float *)(param_1 + 0x328)) { + local_ec = *(undefined4 *)(param_1 + 0x3a8); + local_e4 = *(undefined4 *)(param_1 + 0x3b0); + local_e0 = *(undefined4 *)(param_1 + 0x3b4); + local_dc = *(undefined4 *)(param_1 + 0x3b8); + local_d8 = *(undefined4 *)(param_1 + 0x3bc); + local_d4 = *(undefined4 *)(param_1 + 0x3c0); + local_d0 = *(undefined4 *)(param_1 + 0x3c4); + local_cc = *(undefined4 *)(param_1 + 0x3c8); + local_c8 = *(undefined4 *)(param_1 + 0x3cc); + local_c4 = *(undefined4 *)(param_1 + 0x3d0); + local_c0 = *(undefined4 *)(param_1 + 0x3d4); + local_e8 = (float)*(int *)(param_1 + 0x408) * *(float *)(param_1 + 0x3ac); + local_f8 = DAT_004e0f74; + local_f4 = DAT_004e0f78; + local_f0 = DAT_004e0f7c; + local_104 = DAT_004e0f74; + local_100 = DAT_004e0f78; + local_fc = DAT_004e0f7c; + FUN_00408744(&local_104,(float *)(param_1 + 0x420),local_b0); + FUN_004086ac(&local_f8,&local_104,*(float *)(param_1 + 0x41c)); + FUN_00408440(&local_e4,&local_f8); + FUN_004b9728(param_1,*(int *)(iVar2 + 0x388),&local_ec); + } + *(undefined4 *)(param_1 + 0x408) = 0; + } + return; +} + + + /* @004bc3fc file=? name=FUN_004bc3fc */ /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ @@ -8373,7 +16167,7 @@ FUN_004bc3fc(int *param_1,int param_2,undefined4 param_3,char *param_4,undefined param_1[0xfe] = 0; param_1[0x100] = -1; if (((*(uint *)(param_2 + 0x28) & 0xc) == 0) && ((*(uint *)(param_2 + 0x28) & 0x100) != 0)) { - param_1[7] = (int)PTR_LAB_0051222c; + param_1[7] = (int)PTR_FUN_0051222c; param_1[8] = DAT_00512230; param_1[9] = DAT_00512234; } @@ -8657,6 +16451,33 @@ void __cdecl FUN_004bcbcf(int *param_1,byte param_2) +/* @004bcbfc file=? name=FUN_004bcbfc */ + +void __cdecl FUN_004bcbfc(int *param_1,int *param_2) + +{ + int iVar1; + + iVar1 = FUN_004dcd94(); + param_1[0xf5] = iVar1; + FUN_004bbae0(param_1,param_2); + return; +} + + + +/* @004bcc3c file=? name=FUN_004bcc3c */ + +void __cdecl FUN_004bcc3c(int *param_1,int param_2) + +{ + param_1[0xf5] = param_1[0x112]; + FUN_004bbaf8(param_1,param_2); + return; +} + + + /* @004bcc60 file=? name=FUN_004bcc60 */ void __cdecl FUN_004bcc60(int param_1) @@ -8945,6 +16766,24 @@ void __cdecl FUN_004bd1e0(int param_1) +/* @004bd26c file=? name=FUN_004bd26c */ + +void __cdecl FUN_004bd26c(int *param_1,int param_2) + +{ + FUN_004aea9c(param_1); + if (param_2 != 0) { + param_1[0x61] = 0; + param_1[0x8a] = 0; + param_1[0x60] = param_1[0x88]; + param_1[99] = 0; + } + FUN_0041bbd8((int)(param_1 + 0x65),1); + return; +} + + + /* @004bd2c0 file=? name=FUN_004bd2c0 */ void __cdecl FUN_004bd2c0(int *param_1,undefined4 param_2) @@ -9429,6 +17268,17 @@ undefined4 __cdecl FUN_004bdb94(int *param_1,int param_2) +/* @004bdca4 file=? name=FUN_004bdca4 */ + +void __cdecl FUN_004bdca4(int param_1) + +{ + *(undefined4 *)(param_1 + 0x414) = 0; + return; +} + + + /* @004bdcb4 file=? name=FUN_004bdcb4 */ int * __cdecl @@ -9497,6 +17347,122 @@ void __cdecl FUN_004bdd60(int param_1) +/* @004bddec file=? name=FUN_004bddec */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004bddec(int param_1,float param_2) + +{ + float *pfVar1; + int iVar2; + int *piVar3; + float local_b8; + float local_b4; + float local_b0; + undefined4 local_ac; + undefined4 local_a8; + undefined4 local_a4; + undefined4 local_a0 [2]; + undefined4 local_98; + undefined4 local_94; + undefined4 local_90; + undefined4 local_8c [2]; + undefined4 local_84; + undefined4 local_80; + float local_7c; + undefined4 local_78; + undefined4 local_74; + undefined4 local_70; + undefined4 local_6c; + undefined4 local_68; + undefined4 local_64; + undefined4 local_60 [2]; + undefined4 local_58 [2]; + float local_50; + undefined4 local_4c; + undefined4 local_48; + undefined4 local_44; + undefined4 local_40; + undefined4 local_3c; + undefined4 local_38; + float local_34 [3]; + float local_28 [6]; + float local_10; + undefined4 local_c; + int *local_8; + + pfVar1 = (float *)(param_1 + 0x100); + FUN_00408440(local_28,pfVar1); + FUN_00421e2c(param_1,1.0); + FUN_00421bac(param_1,param_2); + FUN_00408644(local_34,pfVar1,local_28); + FUN_0040d100((int)local_28,local_34); + FUN_0040ab44((float *)(param_1 + 0xd0),pfVar1); + iVar2 = FUN_0042291c(param_1,local_28,*(int *)(param_1 + 0x300)); + if (iVar2 == 0) { + FUN_00421b6c(param_1); + (**(code **)(param_1 + 0x254))(param_1); + FUN_00408644(&local_b8,(float *)(param_1 + 0x260),pfVar1); + if (_DAT_004be050 < local_b0 * local_b0 + local_b4 * local_b4 + local_b8 * local_b8) { + *(ushort *)(param_1 + 0x18) = *(ushort *)(param_1 + 0x18) | 1; + } + } + else { + FUN_0042061c(param_1); + piVar3 = *(int **)(iVar2 + 0x1c); + local_50 = *pfVar1; + local_4c = *(undefined4 *)(param_1 + 0x104); + local_48 = *(undefined4 *)(param_1 + 0x108); + local_44 = *(undefined4 *)(param_1 + 0x10c); + local_40 = *(undefined4 *)(param_1 + 0x110); + local_3c = *(undefined4 *)(param_1 + 0x114); + local_38 = *(undefined4 *)(param_1 + 0x118); + FUN_0040cdf4(local_28,local_10,&local_50); + iVar2 = *(int *)(param_1 + 0x300); + local_8 = piVar3 + 0x61; + local_c = *(undefined4 *)(param_1 + 0x33c); + local_ac = 0x5c; + local_a8 = 3; + local_a4 = 1; + FUN_00420ea4(local_a0,(undefined4 *)&DAT_00522524); + local_98 = 0; + local_94 = 0; + local_90 = 0x31; + FUN_00420ea4(local_8c,(undefined4 *)&DAT_00522524); + local_84 = local_c; + local_80 = 0x100; + local_7c = local_50; + local_78 = local_4c; + local_74 = local_48; + local_70 = local_44; + local_6c = local_40; + local_68 = local_3c; + local_64 = local_38; + FUN_00420ea4(local_60,local_8); + FUN_00420ea4(local_58,(undefined4 *)(iVar2 + 0x184)); + FUN_004302ec((int)&local_ac); + FUN_004be078(param_1,piVar3); + } + piVar3 = (int *)FUN_00414b60(); + if (_DAT_004be054 < (float)(*piVar3 - *(int *)(param_1 + 0x19c)) / DAT_0052140c) { + FUN_0042061c(param_1); + } + return; +} + + + +/* @004be058 file=? name=FUN_004be058 */ + +bool __cdecl FUN_004be058(int param_1,int param_2) + +{ + return param_2 == *(int *)(param_1 + 0x300); +} + + + /* @004be078 file=? name=FUN_004be078 */ void FUN_004be078(int param_1,int *param_2) @@ -9646,12 +17612,12 @@ int * __cdecl FUN_004be1bc(int *param_1,int param_2,undefined4 param_3) param_1[0x96] = DAT_005129e0; param_1[0x97] = DAT_005129e4; if ((param_1[10] & 0xcU) == 4) { - param_1[7] = (int)PTR_LAB_005129e8; + param_1[7] = (int)PTR_FUN_005129e8; param_1[8] = DAT_005129ec; param_1[9] = DAT_005129f0; } else { - param_1[7] = (int)PTR_LAB_005129f4; + param_1[7] = (int)PTR_FUN_005129f4; param_1[8] = DAT_005129f8; param_1[9] = DAT_005129fc; } @@ -9708,6 +17674,137 @@ void __cdecl FUN_004be3b4(int param_1) +/* @004be474 file=? name=FUN_004be474 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004be474(int param_1,float param_2) + +{ + int iVar1; + float10 fVar2; + float local_bc; + float local_b8; + float local_b4; + float local_b0; + float local_ac; + float local_a8; + float local_a4; + float local_a0; + float local_9c; + float local_98; + float local_94; + float local_90; + float local_8c; + float local_88; + float local_84; + float local_80 [4]; + float local_70; + float local_6c; + float local_68; + float local_64 [3]; + float local_58; + undefined4 local_54; + undefined4 local_50; + float local_4c; + undefined4 local_48; + undefined4 local_44; + float local_40; + undefined4 local_3c; + undefined4 local_38; + float local_34; + float local_30; + float local_2c; + float local_28; + float local_24; + float local_20; + float local_1c; + float local_18; + float local_14; + float local_10; + float local_c; + int local_8; + + iVar1 = *(int *)(param_1 + 0xd0); + local_8 = **(int **)(iVar1 + 0x128); + FUN_0040ab44((float *)(iVar1 + 0xd0),(undefined4 *)(iVar1 + 0x100)); + local_40 = DAT_004e0f80; + local_3c = DAT_004e0f84; + local_38 = DAT_004e0f88; + FUN_00408440(&local_40,(undefined4 *)(local_8 + 0xe4)); + local_4c = DAT_004e0f74; + local_48 = DAT_004e0f78; + local_44 = DAT_004e0f7c; + FUN_00408644(&local_4c,&local_40,(float *)(iVar1 + 0x100)); + local_58 = DAT_004e0f74; + local_54 = DAT_004e0f78; + local_50 = DAT_004e0f7c; + FUN_0040879c(&local_58,&local_4c,(float *)(iVar1 + 0xd0)); + FUN_004087f4(local_64,&local_58); + local_80[3] = DAT_004e0fa4; + local_70 = DAT_004e0fa8; + local_6c = DAT_004e0fac; + local_68 = DAT_004e0fb0; + local_80[0] = 0.0; + local_80[1] = 0.0; + local_80[2] = -1.0; + FUN_0040a22c(local_80 + 3,local_64,local_80); + local_c = local_68; + local_10 = local_6c; + local_14 = local_70; + local_18 = local_80[3]; + local_8c = local_80[3]; + local_88 = local_70; + local_84 = local_6c; + fVar2 = FUN_004dd138((double)(local_6c * local_6c + + local_70 * local_70 + local_80[3] * local_80[3])); + local_2c = (float)fVar2; + local_28 = local_c; + local_20 = local_c; + local_24 = local_2c; + local_1c = local_2c; + fVar2 = FUN_004dc8ec((double)local_2c,SUB84((double)local_c,0), + (uint)((ulonglong)(double)local_c >> 0x20)); + local_30 = (float)fVar2; + local_9c = DAT_004e0fa4; + local_98 = DAT_004e0fa8; + local_94 = DAT_004e0fac; + local_90 = DAT_004e0fb0; + if (local_30 <= *(float *)(param_1 + 0xe8) * param_2) { + FUN_00409968(&local_9c,local_80 + 3); + } + else { + local_34 = (*(float *)(param_1 + 0xe8) * param_2) / local_30; + FUN_00409e28(&local_9c,local_80 + 3,local_34); + } + local_ac = DAT_004e0fa4; + local_a8 = DAT_004e0fa8; + local_a4 = DAT_004e0fac; + local_a0 = DAT_004e0fb0; + FUN_00408744(&local_ac,&local_9c,(float *)(iVar1 + 0xd0)); + FUN_0040a138(&local_ac); + local_bc = DAT_004e0fa4; + local_b8 = DAT_004e0fa8; + local_b4 = DAT_004e0fac; + local_b0 = DAT_004e0fb0; + FUN_00409d9c(&local_bc,&local_ac,(float *)(iVar1 + 0x10c)); + FUN_0040a138(&local_bc); + FUN_00409968((float *)(iVar1 + 0x10c),&local_bc); + if (*(int *)(param_1 + 0x40) == 1) { + if (*(float *)(param_1 + 0xe4) <= _DAT_004be7c0) { + FUN_0041bbd8(param_1 + 0x2c,0); + *(ushort *)(param_1 + 0x18) = *(ushort *)(param_1 + 0x18) | 1; + } + else { + *(float *)(param_1 + 0xe4) = *(float *)(param_1 + 0xe4) - param_2; + FUN_004085ec((float *)(iVar1 + 0x1dc),(float *)(iVar1 + 0x1dc),(float *)(param_1 + 0xf4)); + } + } + return; +} + + + /* @004be7c4 file=? name=FUN_004be7c4 */ /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ @@ -9716,16 +17813,16 @@ undefined4 * __cdecl FUN_004be7c4(undefined4 *param_1,int param_2,undefined4 par { FUN_0041c52c(param_1,param_2,param_3,param_4,&DAT_00512a9c); - *param_1 = &PTR_LAB_00512bbc; + *param_1 = &PTR_FUN_00512bbc; param_1[0x39] = *(undefined4 *)(param_4 + 0x30); param_1[0x3b] = *(undefined4 *)(param_4 + 0x38); param_1[0x3c] = *(undefined4 *)(param_4 + 0x3c); if ((*(uint *)(param_2 + 0x28) & 0xc) != 4) { - param_1[7] = PTR_LAB_00512b14; + param_1[7] = PTR_FUN_00512b14; param_1[8] = DAT_00512b18; param_1[9] = DAT_00512b1c; } - param_1[7] = PTR_LAB_00512b20; + param_1[7] = PTR_FUN_00512b20; param_1[8] = DAT_00512b24; param_1[9] = DAT_00512b28; param_1[0x3a] = *(float *)(param_4 + 0x34) * _DAT_004be8b8; @@ -9738,6 +17835,23 @@ undefined4 * __cdecl FUN_004be7c4(undefined4 *param_1,int param_2,undefined4 par +/* @004be8bc file=? name=FUN_004be8bc */ + +void __cdecl FUN_004be8bc(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_00512bbc; + FUN_0041c648(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + /* @004be8e8 file=? name=FUN_004be8e8 */ void __cdecl FUN_004be8e8(int param_1) @@ -9749,6 +17863,55 @@ void __cdecl FUN_004be8e8(int param_1) +/* @004be9a0 file=? name=FUN_004be9a0 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004be9a0(int param_1) + +{ + float *pfVar1; + int iVar2; + float10 fVar3; + float local_2c; + float local_28; + float local_24; + float local_20; + float local_1c; + float local_18; + float local_14; + undefined4 local_10; + float local_c; + float local_8; + + if (*(int *)(param_1 + 0xfc) == 0) { + iVar2 = *(int *)(param_1 + 0xd0); + FUN_00408440((undefined4 *)(param_1 + 0xe4),&DAT_004e0f80); + local_14 = DAT_004e0f80; + local_10 = DAT_004e0f84; + local_c = DAT_004e0f88 - _DAT_004beae0; + FUN_00408b98((float *)(param_1 + 0xe4),&local_14,(float *)(iVar2 + 0xd0)); + } + else { + FUN_00408440((float *)(param_1 + 0xe4),&DAT_004e0f80); + FUN_00408b98((float *)(param_1 + 0xe4),(float *)(param_1 + 0x100), + (float *)(*(int *)(param_1 + 0xfc) + 0xd0)); + } + iVar2 = *(int *)(param_1 + 0xd0); + FUN_004beae4(param_1); + pfVar1 = (float *)(iVar2 + 0x100); + FUN_00408644(&local_20,(float *)(param_1 + 0xe4),pfVar1); + fVar3 = FUN_004dd138((double)(local_18 * local_18 + local_1c * local_1c + local_20 * local_20)); + local_8 = (float)fVar3; + *(float *)(param_1 + 0x10c) = local_8; + FUN_00408644(&local_2c,pfVar1,(float *)(param_1 + 0xf0)); + fVar3 = FUN_004dd138((double)(local_24 * local_24 + local_28 * local_28 + local_2c * local_2c)); + *(float *)(param_1 + 0x110) = (float)fVar3; + return; +} + + + /* @004beae4 file=? name=FUN_004beae4 */ /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ @@ -9812,7 +17975,7 @@ FUN_004bec34(undefined4 *param_1,int param_2,undefined4 param_3,char *param_4,un undefined4 *local_8; FUN_0041c52c(param_1,param_2,param_3,param_4,&DAT_00512bec); - *param_1 = &PTR_LAB_00512ce8; + *param_1 = &PTR_FUN_00512ce8; local_8 = (undefined4 *)(param_2 + 0x100); param_1[0x3c] = *local_8; param_1[0x3d] = *(undefined4 *)(param_2 + 0x104); @@ -9822,7 +17985,7 @@ FUN_004bec34(undefined4 *param_1,int param_2,undefined4 param_3,char *param_4,un param_1[0x41] = param_7; param_1[0x42] = param_8; if ((*(uint *)(param_2 + 0x28) & 0xc) != 4) { - param_1[7] = PTR_LAB_00512c64; + param_1[7] = PTR_FUN_00512c64; param_1[8] = DAT_00512c68; param_1[9] = DAT_00512c6c; } @@ -9856,6 +18019,23 @@ FUN_004bec34(undefined4 *param_1,int param_2,undefined4 param_3,char *param_4,un +/* @004bee44 file=? name=FUN_004bee44 */ + +void __cdecl FUN_004bee44(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_00512ce8; + FUN_0041c648(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + /* @004bee70 file=? name=FUN_004bee70 */ void __cdecl FUN_004bee70(int param_1) @@ -9867,6 +18047,18 @@ void __cdecl FUN_004bee70(int param_1) +/* @004bef28 file=? name=FUN_004bef28 */ + +void __cdecl FUN_004bef28(int *param_1,undefined4 *param_2) + +{ + FUN_0042249c(param_1,param_2); + param_1[0xd7] = param_2[0x1d]; + return; +} + + + /* @004bef4c file=? name=FUN_004bef4c */ void __cdecl FUN_004bef4c(int param_1,int *param_2,int param_3) @@ -10161,7 +18353,7 @@ int * __cdecl FUN_004bf5b4(int *param_1,int param_2,undefined4 param_3) param_1[0x96] = DAT_00512d98; param_1[0x97] = DAT_00512d9c; if ((param_1[10] & 0xcU) == 4) { - param_1[7] = (int)PTR_LAB_00512da0; + param_1[7] = (int)PTR_FUN_00512da0; param_1[8] = DAT_00512da4; param_1[9] = DAT_00512da8; } @@ -10361,6 +18553,20 @@ void __cdecl FUN_004bfb28(int param_1) +/* @004bfbe8 file=? name=FUN_004bfbe8 */ + +void __cdecl FUN_004bfbe8(int param_1) + +{ + FUN_0042d9c0(param_1); + if ((*(int *)(DAT_004efc94 + 0x88) == 4) && ((*(byte *)(param_1 + 0x29) & 0x40) == 0)) { + *(undefined4 *)(param_1 + 0x1c8) = 0x447a0000; + } + return; +} + + + /* @004bfc20 file=? name=FUN_004bfc20 */ void __cdecl FUN_004bfc20(int param_1) @@ -10383,6 +18589,165 @@ void __cdecl FUN_004bfc20(int param_1) +/* @004bfcac file=? name=FUN_004bfcac */ + +void __cdecl +FUN_004bfcac(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5 + ,undefined4 param_6,undefined4 param_7,undefined4 param_8) + +{ + int *piVar1; + char cVar2; + int iVar3; + int iVar4; + undefined4 *puVar5; + undefined4 uVar6; + uint uVar7; + uint uVar8; + char *pcVar9; + char *pcVar10; + undefined4 local_d4; + undefined4 local_d0; + undefined4 local_cc; + undefined4 local_c8 [2]; + undefined4 local_c0; + undefined4 local_bc; + undefined4 local_b8; + undefined4 local_b4 [2]; + undefined4 local_ac; + undefined4 local_a8; + undefined4 local_a4; + undefined4 local_a0; + undefined4 local_9c; + undefined4 local_98; + undefined4 local_94; + undefined4 local_90; + undefined4 local_8c; + undefined4 local_88 [6]; + undefined4 local_70 [6]; + char local_58 [20]; + char local_44 [20]; + char local_30 [20]; + undefined4 local_1c [2]; + undefined4 local_14; + char *local_10; + char *local_c; + int *local_8; + + iVar3 = *(int *)(param_1 + 0x1f8); + FUN_0042da68(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8); + if (*(int *)(param_1 + 0x1fc) == 0) { + iVar4 = DAT_004efc94[0xb]; + puVar5 = (undefined4 *) + FUN_00406ff8(DAT_004efc94[0x1a],*(char **)(*(int *)(param_1 + 0x1f8) + 0x2c),1,-1); + local_8 = *(int **)(iVar3 + 0xf8); + local_8[3] = local_8[3] + 1; + local_c = (char *)local_8[2]; + local_10 = *(char **)(iVar3 + 0x20); + pcVar9 = *(char **)(iVar3 + 0x24); + local_14 = *puVar5; + uVar6 = FUN_0042904c(iVar4); + puVar5 = (undefined4 *)FUN_00420ebc(local_1c,uVar6); + local_d4 = 0xb8; + local_d0 = 3; + local_cc = 1; + FUN_00420ea4(local_c8,puVar5); + local_c0 = 0; + local_bc = 0; + local_b8 = 0xbb9; + FUN_00420ea4(local_b4,(undefined4 *)&DAT_00522524); + local_ac = local_14; + local_a8 = 0x10100; + local_a4 = param_2; + local_a0 = param_3; + local_9c = param_4; + local_98 = param_5; + local_94 = param_6; + local_90 = param_7; + local_8c = param_8; + FUN_0040a7c0(local_88,(undefined4 *)&DAT_004e0fd4); + FUN_0040a7c0(local_70,(undefined4 *)&DAT_004e0fd4); + uVar7 = 0xffffffff; + do { + pcVar10 = pcVar9; + if (uVar7 == 0) break; + uVar7 = uVar7 - 1; + pcVar10 = pcVar9 + 1; + cVar2 = *pcVar9; + pcVar9 = pcVar10; + } while (cVar2 != '\0'); + uVar7 = ~uVar7; + pcVar9 = pcVar10 + -uVar7; + pcVar10 = local_58; + for (uVar8 = uVar7 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) { + *(undefined4 *)pcVar10 = *(undefined4 *)pcVar9; + pcVar9 = pcVar9 + 4; + pcVar10 = pcVar10 + 4; + } + for (uVar7 = uVar7 & 3; uVar7 != 0; uVar7 = uVar7 - 1) { + *pcVar10 = *pcVar9; + pcVar9 = pcVar9 + 1; + pcVar10 = pcVar10 + 1; + } + uVar7 = 0xffffffff; + pcVar9 = local_10; + do { + pcVar10 = pcVar9; + if (uVar7 == 0) break; + uVar7 = uVar7 - 1; + pcVar10 = pcVar9 + 1; + cVar2 = *pcVar9; + pcVar9 = pcVar10; + } while (cVar2 != '\0'); + uVar7 = ~uVar7; + pcVar9 = pcVar10 + -uVar7; + pcVar10 = local_44; + for (uVar8 = uVar7 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) { + *(undefined4 *)pcVar10 = *(undefined4 *)pcVar9; + pcVar9 = pcVar9 + 4; + pcVar10 = pcVar10 + 4; + } + for (uVar7 = uVar7 & 3; uVar7 != 0; uVar7 = uVar7 - 1) { + *pcVar10 = *pcVar9; + pcVar9 = pcVar9 + 1; + pcVar10 = pcVar10 + 1; + } + uVar7 = 0xffffffff; + pcVar9 = local_c; + do { + pcVar10 = pcVar9; + if (uVar7 == 0) break; + uVar7 = uVar7 - 1; + pcVar10 = pcVar9 + 1; + cVar2 = *pcVar9; + pcVar9 = pcVar10; + } while (cVar2 != '\0'); + uVar7 = ~uVar7; + pcVar9 = pcVar10 + -uVar7; + pcVar10 = local_30; + for (uVar8 = uVar7 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) { + *(undefined4 *)pcVar10 = *(undefined4 *)pcVar9; + pcVar9 = pcVar9 + 4; + pcVar10 = pcVar10 + 4; + } + for (uVar7 = uVar7 & 3; uVar7 != 0; uVar7 = uVar7 - 1) { + *pcVar10 = *pcVar9; + pcVar9 = pcVar9 + 1; + pcVar10 = pcVar10 + 1; + } + uVar6 = (**(code **)(*DAT_004efc94 + 0x30))(DAT_004efc94,&local_d4); + *(undefined4 *)(param_1 + 0x1fc) = uVar6; + piVar1 = local_8 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_8,3); + } + } + return; +} + + + /* @004bfee0 file=? name=FUN_004bfee0 */ void __cdecl FUN_004bfee0(int param_1) @@ -10462,7 +18827,7 @@ void __cdecl FUN_004bffd0(int *param_1,uint *param_2) param_1[0x73] = -1; } else if (*(int *)(param_1[0x7f] + 4) == 0xbb9) { - param_1[7] = (int)PTR_LAB_00513058; + param_1[7] = (int)PTR_FUN_00513058; param_1[8] = DAT_0051305c; param_1[9] = DAT_00513060; } @@ -10639,7 +19004,7 @@ void __cdecl FUN_004c02e4(int param_1,int param_2) if (local_14 != (undefined4 *)0x0) { local_18 = *(undefined4 *)(iVar3 + 400); FUN_0042d990(local_14,local_18,0,0x40c00000); - *local_14 = &PTR_LAB_00513344; + *local_14 = &PTR_FUN_00513344; local_14[6] = 0; } FUN_0042e580(param_1,local_14); @@ -10696,6 +19061,102 @@ LAB_004c05b1: +/* @004c05c4 file=? name=FUN_004c05c4 */ + +void __cdecl FUN_004c05c4(int param_1,uint *param_2) + +{ + int iVar1; + int iVar2; + undefined4 *puVar3; + int *piVar4; + undefined4 local_6c; + undefined4 local_68; + undefined4 local_64; + undefined4 local_60 [2]; + undefined4 local_58; + undefined4 local_54; + float local_50; + uint local_4c [5]; + undefined4 local_38; + undefined4 local_34; + undefined4 local_30 [5]; + float local_1c; + int local_18; + int local_14; + int local_10; + int local_c; + int local_8; + + if (*(int *)(param_1 + 0x40) != 4) { + if (param_2[7] == 0xffffffff) { + if (*(int *)(param_1 + 0x290) == 0) { + local_8 = *(int *)(DAT_004efc94 + 0x2c); + iVar2 = (**(code **)(*(int *)(local_8 + 0x54) + 0xc))(local_8 + 0x54,param_2 + 0xb); + puVar3 = FUN_00402f74(0x512f6c); + if (puVar3 != (undefined4 *)0x0) { + local_c = iVar2; + FUN_0042d990(puVar3,iVar2,1,0x40c00000); + *puVar3 = &PTR_FUN_00513344; + puVar3[6] = 0; + } + FUN_0042e580(param_1,puVar3); + if (param_1 != iVar2) { + *(int *)(iVar2 + 0x280) = *(int *)(iVar2 + 0x280) + 1; + } + *(int *)(param_1 + 0x280) = *(int *)(param_1 + 0x280) + 1; + local_10 = FUN_00429078(local_8); + iVar1 = *(int *)(param_1 + 0x1fc); + if ((*(int *)(param_1 + 600) == 0) && (local_10 != 0)) { + FUN_004c18cc(local_30,*(undefined4 *)(param_1 + 0x18c),param_2[0xb]); + (**(code **)(**(int **)(DAT_004efc94 + 0x20) + 0x18)) + (*(int **)(DAT_004efc94 + 0x20),local_30,5,*(undefined4 *)(local_10 + 0xc)); + } + *(undefined4 *)(param_1 + 0x284) = *(undefined4 *)(iVar2 + 0x1fc); + FUN_0049fe0c(iVar1,0); + if (*(int *)(*(int *)(param_1 + 0x208) + 0x28) < 1) { + local_4c[0] = 0x1c; + local_4c[1] = 0x18; + local_4c[2] = 1; + FUN_00420ea4(local_4c + 3,(undefined4 *)&DAT_00522524); + local_38 = 0; + local_34 = 0; + piVar4 = (int *)FUN_00414b60(); + local_18 = *piVar4; + iVar2 = FUN_004dcd94(); + local_18 = local_18 + iVar2; + FUN_0041acbc(*(int *)(DAT_004efc94 + 0x60),3,iVar1,local_4c,local_18); + } + else { + piVar4 = (int *)FUN_00414b60(); + local_14 = *piVar4; + iVar2 = FUN_004dcd94(); + local_14 = local_14 + iVar2; + param_2[7] = *(uint *)(param_1 + 0x200); + FUN_0041acbc(*(int *)(DAT_004efc94 + 0x60),3,param_1,param_2,local_14); + } + if (*(int *)(param_1 + 0x264) != 0) { + local_1c = -*(float *)(*(int *)(param_1 + 0x208) + 0x20); + local_6c = 0x20; + local_68 = 0x16; + local_64 = 1; + FUN_00420ea4(local_60,(undefined4 *)&DAT_00522524); + local_58 = 0; + local_54 = 0; + local_50 = local_1c; + FUN_0042da20(param_1,(int)&local_6c); + } + } + } + else { + FUN_0042db80(param_1,param_2); + } + } + return; +} + + + /* @004c083c file=? name=FUN_004c083c */ /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ @@ -10732,6 +19193,99 @@ void __cdecl FUN_004c083c(int *param_1) +/* @004c0904 file=? name=FUN_004c0904 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004c0904(int *param_1,float param_2) + +{ + char *pcVar1; + undefined4 *puVar2; + char *pcVar3; + int iVar4; + undefined4 uVar5; + int iVar6; + int *piVar7; + bool bVar8; + undefined4 local_48 [5]; + undefined4 local_34 [4]; + undefined4 local_24 [5]; + int local_10 [3]; + + if (param_1[0x93] == 0) { + puVar2 = FUN_004212b0(*(int *)(DAT_004efc94 + 0x24),s_Teams_005132b6); + if (puVar2 != (undefined4 *)0x0) { + FUN_00421414(local_10,(int)(puVar2 + 4)); +LAB_004c0978: + do { + iVar4 = (**(code **)(local_10[0] + 0x28))(local_10); + if (iVar4 == 0) goto LAB_004c0989; + pcVar3 = (char *)(iVar4 + 0x1c4); + piVar7 = param_1 + 0x83; + do { + if (*pcVar3 != (char)*piVar7) goto LAB_004c0978; + bVar8 = true; + if (*pcVar3 == '\0') break; + pcVar1 = pcVar3 + 1; + if (*pcVar1 != *(char *)((int)piVar7 + 1)) goto LAB_004c0978; + pcVar3 = pcVar3 + 2; + piVar7 = (int *)((int)piVar7 + 2); + bVar8 = *pcVar1 == '\0'; + } while (!bVar8); + } while (!bVar8); + param_1[0x93] = iVar4; +LAB_004c0989: + FUN_00421452(local_10,2); + } + } + if ((param_1[0x94] == 0) && (param_1[0x93] == 0)) { + FUN_004dbb24(&DAT_00524e20,s_Team_____005132bc,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,(char *)(param_1 + 0x83),(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s___does_not_exist__005132c5,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + FUN_004dee24(0xffffffff); + } + FUN_004c083c(param_1); + FUN_0042e100(param_1,param_2); + if (((param_1[0x10] == 4) && ((float)param_1[0x7d] <= _DAT_004c0bbc)) && (param_1[0x95] == 0)) { + iVar4 = FUN_00429078(*(int *)(DAT_004efc94 + 0x2c)); + FUN_004dbb24(&DAT_00524e20,s_Sending_EndMission____005132d7,(char *)0x0); + if (iVar4 != 0) { + if (*(int *)(DAT_004efc94 + 0x88) == 6) { + uVar5 = FUN_004dcd94(); + FUN_0042998c(local_24,param_1[99],uVar5); + (**(code **)(**(int **)(DAT_004efc94 + 0x20) + 0x18)) + (*(int **)(DAT_004efc94 + 0x20),local_24,5,*(undefined4 *)(iVar4 + 0xc)); + } + else { + FUN_004299b4(local_34,param_1[99]); + (**(code **)(**(int **)(DAT_004efc94 + 0x20) + 0x18)) + (*(int **)(DAT_004efc94 + 0x20),local_34,5,*(undefined4 *)(iVar4 + 0xc)); + } + } + param_1[0x95] = 1; + } + if ((*(int *)(DAT_004efc94 + 0x88) == 5) || (*(int *)(DAT_004efc94 + 0x88) == 6)) { + if (_DAT_004c0bc0 <= (float)(param_1[4] - param_1[0xa2]) / DAT_0052140c) { + param_1[0xa2] = param_1[4]; + iVar4 = FUN_00429078(*(int *)(DAT_004efc94 + 0x2c)); + if (iVar4 != 0) { + iVar6 = FUN_004078fc((float)param_1[0x72]); + FUN_004c18f4(local_48,param_1[99],iVar6); + (**(code **)(**(int **)(DAT_004efc94 + 0x20) + 0x18)) + (*(int **)(DAT_004efc94 + 0x20),local_48,5,*(undefined4 *)(iVar4 + 0xc)); + } + } + if (_DAT_004c0bc4 <= (float)(param_1[4] - param_1[5]) / DAT_0052140c) { + *(ushort *)(param_1 + 6) = *(ushort *)(param_1 + 6) | 1; + } + } + return; +} + + + /* @004c0bc8 file=? name=FUN_004c0bc8 */ undefined4 * __cdecl FUN_004c0bc8(undefined4 *param_1,int param_2,undefined4 param_3) @@ -10927,6 +19481,49 @@ void __cdecl FUN_004c0f28(int param_1) +/* @004c1011 file=? name=FUN_004c1011 */ + +void __cdecl FUN_004c1011(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + FUN_0041790c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_00402f98(0x512f6c,param_1); + } + } + return; +} + + + +/* @004c1044 file=? name=FUN_004c1044 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004c1044(int param_1) + +{ + int iVar1; + undefined4 uVar2; + undefined4 local_18 [5]; + + if (_DAT_004c10d8 <= (float)(*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x208)) / DAT_0052140c) + { + *(int *)(param_1 + 0x208) = *(int *)(param_1 + 0x10); + iVar1 = FUN_00429078(*(int *)(DAT_004efc94 + 0x2c)); + if (iVar1 != 0) { + uVar2 = FUN_004dcd94(); + FUN_004c191c(local_18,*(undefined4 *)(param_1 + 0x18c),uVar2); + (**(code **)(**(int **)(DAT_004efc94 + 0x20) + 0x18)) + (*(int **)(DAT_004efc94 + 0x20),local_18,5,*(undefined4 *)(iVar1 + 0xc)); + } + } + return; +} + + + /* @004c10dc file=? name=FUN_004c10dc */ undefined4 * __cdecl FUN_004c10dc(undefined4 *param_1,int param_2,undefined4 param_3) @@ -11004,6 +19601,95 @@ void __cdecl FUN_004c1198(int param_1) +/* @004c1230 file=? name=FUN_004c1230 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004c1230(int *param_1,float param_2) + +{ + int *piVar1; + int iVar2; + int iVar3; + int unaff_EDI; + undefined4 local_40; + undefined4 local_3c; + undefined4 local_38; + undefined4 local_34 [2]; + undefined4 local_2c; + undefined4 local_28; + undefined4 local_24 [2]; + undefined4 local_1c; + undefined4 local_18; + undefined4 local_14; + undefined4 local_10; + int local_c; + int local_8; + + FUN_0042e100(param_1,param_2); + FUN_0042eb38((int)param_1,param_2); + local_8 = 0; + if (((float)param_1[0x86] <= _DAT_004c13d0) || (*(int *)(DAT_004efc94 + 0x88) != 5)) { + if (*(int *)(DAT_004efc94 + 0x88) == 6) { + local_8 = 1; + } + } + else { + unaff_EDI = FUN_00417ab4((int)(param_1 + 0x83)); + iVar2 = FUN_0049fb54(unaff_EDI); + if (iVar2 == 0) { + param_1[0x86] = (int)((float)param_1[0x86] - param_2); + return; + } + } + local_c = 0; + do { + iVar2 = FUN_0042efe4(local_c); + if (((iVar2 != 0) && (unaff_EDI = *(int *)(iVar2 + 0x1fc), unaff_EDI != 0)) && + (iVar3 = FUN_0049fb54(unaff_EDI), iVar3 == 0)) break; + local_c = local_c + 1; + } while (local_c < 4); + if ((iVar2 != 0) && (unaff_EDI != 0)) { + piVar1 = param_1 + 0x83; + iVar2 = FUN_00417ab4((int)piVar1); + if ((unaff_EDI != iVar2) || (local_8 != 0)) { + FUN_00417a5c((int)piVar1); + (**(code **)(param_1[0x83] + 4))(piVar1,unaff_EDI); + param_1[0x86] = 0x41f00000; + iVar2 = FUN_00417ab4((int)piVar1); + local_40 = 0x34; + local_3c = 0x15; + local_38 = 1; + FUN_00420ea4(local_34,(undefined4 *)&DAT_00522524); + local_2c = 0; + local_28 = 0; + FUN_00420ea4(local_24,(undefined4 *)(iVar2 + 0x184)); + local_1c = 0x40a00000; + local_18 = 0; + local_14 = 0x40a00000; + local_10 = 0; + (**(code **)(*(int *)param_1[0x87] + 0xc))((int *)param_1[0x87],&local_40); + } + } + return; +} + + + +/* @004c13d4 file=? name=FUN_004c13d4 */ + +void __cdecl FUN_004c13d4(int *param_1) + +{ + FUN_0042ed68(param_1); + param_1[7] = (int)PTR_FUN_00513458; + param_1[8] = DAT_0051345c; + param_1[9] = DAT_00513460; + return; +} + + + /* @004c1408 file=? name=FUN_004c1408 */ undefined4 * __cdecl FUN_004c1408(undefined4 *param_1,int param_2,undefined4 param_3) @@ -11012,7 +19698,7 @@ undefined4 * __cdecl FUN_004c1408(undefined4 *param_1,int param_2,undefined4 par FUN_0042eec8(param_1,param_2,param_3); *param_1 = &PTR_FUN_005134c4; if ((param_1[10] & 0xc) != 4) { - param_1[7] = PTR_LAB_00513464; + param_1[7] = PTR_FUN_00513464; param_1[8] = DAT_00513468; param_1[9] = DAT_0051346c; } @@ -11057,3985 +19743,3 @@ void __cdecl FUN_004c1484(int *param_1,byte param_2) -/* @004c14b0 file=? name=FUN_004c14b0 */ - -void __cdecl FUN_004c14b0(int param_1) - -{ - FUN_0041a1a4(**(int **)(param_1 + 0xc),0x513414); - return; -} - - - -/* @004c1548 file=? name=FUN_004c1548 */ - -undefined4 * __cdecl FUN_004c1548(undefined4 *param_1) - -{ - FUN_00433220(param_1); - *param_1 = &PTR_FUN_00513588; - return param_1; -} - - - -/* @004c1564 file=? name=FUN_004c1564 */ - -void __cdecl FUN_004c1564(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_00513588; - FUN_0043324c(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @004c1590 file=? name=FUN_004c1590 */ - -undefined * __cdecl FUN_004c1590(undefined4 param_1,int param_2) - -{ - undefined *puVar1; - - if (param_2 < 0xbd2) { - if (param_2 == 0xbd1) { - return &DAT_005129b0; - } - if (param_2 == 0xbb9) { - return &DAT_0050bde4; - } - if (param_2 == 0xbba) { - return &DAT_00512d48; - } - } - else { - if (param_2 == 0xbd9) { - return &DAT_00513380; - } - if (param_2 == 0xbda) { - return &DAT_00512fc4; - } - } - puVar1 = FUN_004332fc(param_1,param_2); - return puVar1; -} - - - -/* @004c15f0 file=? name=FUN_004c15f0 */ - -undefined4 * __cdecl FUN_004c15f0(undefined4 param_1,int param_2) - -{ - char *pcVar1; - int *piVar2; - char cVar3; - undefined4 uVar4; - char *pcVar5; - undefined4 *puVar6; - uint uVar7; - uint uVar8; - char *pcVar9; - bool bVar10; - undefined4 local_12c; - undefined4 local_128; - undefined4 local_124; - undefined4 local_120 [2]; - undefined4 local_118; - undefined4 local_114; - undefined4 local_110; - undefined4 local_10c [2]; - undefined4 local_104; - undefined4 local_100; - undefined4 local_fc; - undefined4 local_f8; - undefined4 local_f4; - undefined4 local_f0; - undefined4 local_ec; - undefined4 local_e8; - undefined4 local_e4; - undefined4 local_e0; - undefined4 local_dc; - undefined4 local_d8; - undefined4 local_d4; - undefined4 local_d0 [2]; - undefined4 local_c8; - undefined4 local_c4; - undefined4 local_c0; - undefined4 local_bc [2]; - undefined4 local_b4; - undefined4 local_b0; - undefined4 local_ac; - undefined4 local_a8; - undefined4 local_a4; - undefined4 local_a0; - undefined4 local_9c; - undefined4 local_98; - undefined4 local_94; - undefined4 local_90; - char local_8c [64]; - char local_4c [64]; - int *local_c; - int *local_8; - - pcVar9 = s_camera_00513549; - pcVar5 = *(char **)(param_2 + 0x2c); - do { - bVar10 = *pcVar5 == *pcVar9; - if (!bVar10) break; - if (*pcVar5 == '\0') goto LAB_004c17c9; - pcVar1 = pcVar5 + 1; - bVar10 = *pcVar1 == pcVar9[1]; - if (!bVar10) break; - pcVar5 = pcVar5 + 2; - pcVar9 = pcVar9 + 2; - bVar10 = *pcVar1 == '\0'; - } while (!bVar10); - if (bVar10) { -LAB_004c17c9: - uVar4 = *(undefined4 *)(param_2 + 0x4c); - local_12c = 0x50; - local_128 = 3; - local_124 = 1; - FUN_00420ea4(local_120,(undefined4 *)&DAT_00522524); - local_118 = 0; - local_114 = 0; - local_110 = 0x46; - FUN_00420ea4(local_10c,(undefined4 *)&DAT_00522524); - local_104 = 0xffffffff; - local_100 = 0x9100; - local_fc = DAT_004e0fec; - local_f8 = DAT_004e0ff0; - local_f4 = DAT_004e0ff4; - local_f0 = DAT_004e0ff8; - local_ec = DAT_004e0ffc; - local_e8 = DAT_004e1000; - local_e4 = DAT_004e1004; - local_e0 = uVar4; - puVar6 = (undefined4 *)FUN_00402298(0x238); - if (puVar6 == (undefined4 *)0x0) { - puVar6 = (undefined4 *)0x0; - } - else { - puVar6 = FUN_004c1408(puVar6,(int)&local_12c,&DAT_00513444); - } - } - else { - local_8 = *(int **)(param_2 + 0xec); - local_8[3] = local_8[3] + 1; - local_c = *(int **)(param_2 + 0xe8); - local_c[3] = local_c[3] + 1; - uVar4 = *(undefined4 *)(param_2 + 0x4c); - local_dc = 0xd0; - local_d8 = 3; - local_d4 = 1; - FUN_00420ea4(local_d0,(undefined4 *)&DAT_00522524); - local_c8 = 0; - local_c4 = 0; - local_c0 = 0xbda; - FUN_00420ea4(local_bc,(undefined4 *)&DAT_00522524); - local_b4 = 0xffffffff; - local_b0 = 0x5100; - local_ac = DAT_004e0fec; - local_a8 = DAT_004e0ff0; - local_a4 = DAT_004e0ff4; - local_a0 = DAT_004e0ff8; - local_9c = DAT_004e0ffc; - local_98 = DAT_004e1000; - local_94 = DAT_004e1004; - uVar7 = 0xffffffff; - pcVar5 = (char *)local_8[2]; - do { - pcVar9 = pcVar5; - if (uVar7 == 0) break; - uVar7 = uVar7 - 1; - pcVar9 = pcVar5 + 1; - cVar3 = *pcVar5; - pcVar5 = pcVar9; - } while (cVar3 != '\0'); - uVar7 = ~uVar7; - pcVar5 = pcVar9 + -uVar7; - pcVar9 = local_8c; - for (uVar8 = uVar7 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) { - *(undefined4 *)pcVar9 = *(undefined4 *)pcVar5; - pcVar5 = pcVar5 + 4; - pcVar9 = pcVar9 + 4; - } - for (uVar7 = uVar7 & 3; uVar7 != 0; uVar7 = uVar7 - 1) { - *pcVar9 = *pcVar5; - pcVar5 = pcVar5 + 1; - pcVar9 = pcVar9 + 1; - } - uVar7 = 0xffffffff; - pcVar5 = (char *)local_c[2]; - do { - pcVar9 = pcVar5; - if (uVar7 == 0) break; - uVar7 = uVar7 - 1; - pcVar9 = pcVar5 + 1; - cVar3 = *pcVar5; - pcVar5 = pcVar9; - } while (cVar3 != '\0'); - uVar7 = ~uVar7; - pcVar5 = pcVar9 + -uVar7; - pcVar9 = local_4c; - for (uVar8 = uVar7 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) { - *(undefined4 *)pcVar9 = *(undefined4 *)pcVar5; - pcVar5 = pcVar5 + 4; - pcVar9 = pcVar9 + 4; - } - for (uVar7 = uVar7 & 3; uVar7 != 0; uVar7 = uVar7 - 1) { - *pcVar9 = *pcVar5; - pcVar5 = pcVar5 + 1; - pcVar9 = pcVar9 + 1; - } - piVar2 = local_c + 3; - *piVar2 = *piVar2 + -1; - local_90 = uVar4; - if (*piVar2 == 0) { - FUN_004024d8(local_c,3); - } - piVar2 = local_8 + 3; - *piVar2 = *piVar2 + -1; - if (*piVar2 == 0) { - FUN_004024d8(local_8,3); - } - puVar6 = (undefined4 *)FUN_00402298(0x294); - if (puVar6 == (undefined4 *)0x0) { - puVar6 = (undefined4 *)0x0; - } - else { - puVar6 = FUN_004c0bc8(puVar6,(int)&local_dc,&DAT_00512fc4); - } - } - return puVar6; -} - - - -/* @004c18f4 file=? name=FUN_004c18f4 */ - -void __cdecl FUN_004c18f4(undefined4 *param_1,undefined4 param_2,undefined4 param_3) - -{ - *param_1 = 0x14; - param_1[1] = 9; - param_1[2] = 1; - param_1[3] = param_2; - param_1[4] = param_3; - return; -} - - - -/* @004c191c file=? name=FUN_004c191c */ - -void __cdecl FUN_004c191c(undefined4 *param_1,undefined4 param_2,undefined4 param_3) - -{ - *param_1 = 0x14; - param_1[1] = 0xd; - param_1[2] = 1; - param_1[3] = param_2; - param_1[4] = param_3; - return; -} - - - -/* @004c1944 file=? name=FUN_004c1944 */ - -void __cdecl -FUN_004c1944(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4, - undefined4 param_5,undefined4 param_6,undefined4 param_7,undefined4 param_8) - -{ - *param_1 = 0x28; - param_1[1] = 10; - param_1[2] = 1; - param_1[3] = param_2; - param_1[4] = param_3; - param_1[5] = param_4; - param_1[6] = param_7; - param_1[7] = param_5; - param_1[8] = param_6; - param_1[9] = param_8; - return; -} - - - -/* @004c198c file=? name=FUN_004c198c */ - -void __cdecl FUN_004c198c(undefined4 *param_1,undefined4 param_2) - -{ - *param_1 = 0x10; - param_1[1] = 0xf; - param_1[2] = 1; - param_1[3] = param_2; - return; -} - - - -/* @004c19fc file=? name=FUN_004c19fc */ - -void __cdecl FUN_004c19fc(float *param_1,int param_2,float *param_3,int param_4,int param_5) - -{ - float fVar1; - undefined4 local_c; - int local_8; - - if (param_2 == param_4) { - param_1[6] = 0.0; - } - else { - if (*(int *)(param_2 + 400) == 0) { - param_1[6] = 0.0; - } - else { - local_8 = *(int *)(DAT_004efc94 + 200); - local_c = *(undefined4 *)(*(int *)(param_2 + 400) + 0x1e0); - fVar1 = (float)(**(code **)(*(int *)(local_8 + 0x80) + 0xc))(local_8 + 0x80,&local_c); - param_1[6] = fVar1; - } - FUN_00408b98(param_1,(float *)(param_2 + 0x100),param_3); - fVar1 = (float)FUN_004c2f88(); - param_1[7] = fVar1; - param_1[8] = (float)(uint)(param_2 == param_5); - param_1[3] = -1.0; - param_1[4] = 0.0; - param_1[5] = 0.0; - } - return; -} - - - -/* @004c1ab0 file=? name=FUN_004c1ab0 */ - -void __cdecl FUN_004c1ab0(int param_1,int *param_2,undefined4 param_3) - -{ - int iVar1; - undefined4 uVar2; - undefined4 uVar3; - - if (*(int *)(param_1 + 0x18) != 0) { - uVar2 = FUN_004dcd94(); - uVar3 = FUN_004dcd94(); - (**(code **)(*param_2 + 0x24))(param_2,uVar2,uVar3); - if (*(int *)(param_1 + 0x20) == 0) { - (**(code **)(*param_2 + 0x18))(param_2,*(undefined4 *)(param_1 + 0x1c)); - } - else { - (**(code **)(*param_2 + 0x18))(param_2,param_3); - } - iVar1 = *(int *)(param_1 + 0x18); - (**(code **)(*param_2 + 0x54)) - (param_2,0,iVar1,0,0,*(int *)(iVar1 + 0xc) + -1,*(int *)(iVar1 + 0x10) + -1); - } - return; -} - - - -/* @004c1c24 file=? name=FUN_004c1c24 */ - -int * __cdecl -FUN_004c1c24(int *param_1,undefined4 param_2,undefined4 param_3,int param_4,undefined4 param_5, - int param_6,int param_7,int param_8,undefined4 param_9,int param_10,int param_11, - int param_12,int param_13,int param_14,int param_15,int param_16,int param_17, - undefined4 param_18,undefined4 param_19,undefined4 param_20,undefined4 param_21, - int param_22) - -{ - int iVar1; - undefined4 *puVar2; - int *piVar3; - - FUN_00444818(param_1,param_2,param_3,param_4,param_5,param_6,s_MapDisplay_00514011); - *param_1 = (int)&PTR_FUN_0051422c; - piVar3 = FUN_004de998(param_1 + 0x24,0x24,0x10,1,FUN_004c2a1d); - FUN_00443474(param_1 + 0xde); - FUN_00443474(param_1 + 0xe5); - FUN_0044a5b4((uint *)(param_1 + 0xec)); - (**(code **)(param_1[0x12] + 8))(param_1 + 0x12,param_7,param_8,piVar3,param_10); - if (param_11 == 1) { - (**(code **)(param_1[0x12] + 0x10))(param_1 + 0x12,(int)piVar3 - param_7 >> 1,0); - } - else { - (**(code **)(param_1[0x12] + 0x10)) - (param_1 + 0x12,(int)piVar3 - param_7 >> 1,param_10 - param_8 >> 1); - } - param_1[0xd6] = param_13; - param_1[0xd7] = param_14; - param_1[0xd8] = param_15; - param_1[0xbc] = param_16; - param_1[0xdc] = param_22; - param_1[0xd9] = (int)piVar3 - param_7 >> 1; - param_1[0xda] = param_10 - param_8 >> 1; - param_1[0xb4] = param_11; - param_1[0xf0] = param_12 >> 1; - iVar1 = FUN_004022b0((param_12 >> 1) << 3); - param_1[0xf1] = iVar1; - param_1[199] = 0; - param_1[200] = 0x3ec90fdb; - param_1[0xdd] = 0; - puVar2 = (undefined4 *)FUN_00402298(0x18); - if (puVar2 == (undefined4 *)0x0) { - puVar2 = (undefined4 *)0x0; - } - else { - puVar2 = FUN_00474855(puVar2,0,param_1 + 0xb5,param_18); - } - (**(code **)(*param_1 + 0x34))(param_1,puVar2); - puVar2 = (undefined4 *)FUN_00402298(0x18); - if (puVar2 == (undefined4 *)0x0) { - puVar2 = (undefined4 *)0x0; - } - else { - puVar2 = FUN_004c2a3e(puVar2,0,param_1 + 0xb6,param_19); - } - (**(code **)(*param_1 + 0x34))(param_1,puVar2); - puVar2 = (undefined4 *)FUN_00402298(0x18); - if (puVar2 == (undefined4 *)0x0) { - puVar2 = (undefined4 *)0x0; - } - else { - puVar2 = FUN_004c2bc0(puVar2,0,param_1 + 0xb7,param_20); - } - (**(code **)(*param_1 + 0x34))(param_1,puVar2); - puVar2 = (undefined4 *)FUN_00402298(0x18); - if (puVar2 == (undefined4 *)0x0) { - puVar2 = (undefined4 *)0x0; - } - else { - puVar2 = FUN_00474855(puVar2,0,param_1 + 0xb8,param_21); - } - (**(code **)(*param_1 + 0x34))(param_1,puVar2); - if (*(int *)(param_17 + 4) == 0xbb9) { - iVar1 = FUN_0041f98c(param_17,s_Torso_0051401c); - if (iVar1 != 0) { - puVar2 = (undefined4 *)FUN_00402298(0x18); - if (puVar2 == (undefined4 *)0x0) { - puVar2 = (undefined4 *)0x0; - } - else { - puVar2 = FUN_004c2d42(puVar2,0,param_1 + 199,iVar1 + 0x1d8); - } - (**(code **)(*param_1 + 0x34))(param_1,puVar2); - } - } - return param_1; -} - - - -/* @004c1ea8 file=? name=FUN_004c1ea8 */ - -void __cdecl FUN_004c1ea8(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_0051422c; - FUN_004022e8((int *)param_1[0xf1]); - FUN_0044a5dc(param_1 + 0xec,2); - FUN_004434a0(param_1 + 0xe5,2); - FUN_004434a0(param_1 + 0xde,2); - FUN_004de8d4(param_1 + 0x24,0x24,0x10,1,FUN_004c2a25); - FUN_00444870(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @004c1f30 file=? name=FUN_004c1f30 */ - -void FUN_004c1f30(void) - -{ - FUN_004448ac(); - return; -} - - - -/* @004c1f40 file=? name=FUN_004c1f40 */ - -void __cdecl FUN_004c1f40(int param_1,char *param_2) - -{ - char cVar1; - uint uVar2; - uint uVar3; - char *pcVar4; - char *pcVar5; - char local_54 [80]; - - FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s_ThreatIndicator__00514022,(char *)0x0); - uVar2 = 0xffffffff; - do { - pcVar4 = param_2; - if (uVar2 == 0) break; - uVar2 = uVar2 - 1; - pcVar4 = param_2 + 1; - cVar1 = *param_2; - param_2 = pcVar4; - } while (cVar1 != '\0'); - uVar2 = ~uVar2; - pcVar4 = pcVar4 + -uVar2; - pcVar5 = local_54; - for (uVar3 = uVar2 >> 2; uVar3 != 0; uVar3 = uVar3 - 1) { - *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4; - pcVar4 = pcVar4 + 4; - pcVar5 = pcVar5 + 4; - } - for (uVar2 = uVar2 & 3; uVar2 != 0; uVar2 = uVar2 - 1) { - *pcVar5 = *pcVar4; - pcVar4 = pcVar4 + 1; - pcVar5 = pcVar5 + 1; - } - FUN_004d49b8(local_54,&DAT_00514034); - FUN_004448bc(param_1,local_54); - return; -} - - - -/* @004c1fc0 file=? name=FUN_004c1fc0 */ - -void __cdecl FUN_004c1fc0(int param_1) - -{ - *(undefined4 *)(param_1 + 0x354) = 0; - return; -} - - - -/* @004c1fd0 file=? name=FUN_004c1fd0 */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -void __cdecl FUN_004c1fd0(int param_1) - -{ - int iVar1; - uint uVar2; - - iVar1 = *(int *)(param_1 + 0x354); - *(int *)(param_1 + 0x354) = *(int *)(param_1 + 0x354) + 1; - if (iVar1 == 0) { - uVar2 = (uint)(_DAT_004c2174 < *(float *)(param_1 + 0x2e0)); - *(uint *)(param_1 + 0x36c) = uVar2; - if (uVar2 != 0) { - *(float *)(param_1 + 0x2f4) = *(float *)(param_1 + 0x2e0) * *(float *)(param_1 + 0x2f0); - *(float *)(param_1 + 0x2f4) = *(float *)(param_1 + 0x2f4) * *(float *)(param_1 + 0x2f4); - FUN_004c2178(param_1); - } - } - else if (iVar1 == 1) { - FUN_004435ac(param_1 + 0x378); - if (*(int *)(param_1 + 0x36c) != 0) { - FUN_00443ba4(*(int *)(param_1 + 0x1c) + 0xb0,param_1 + 0x378,*(float *)(param_1 + 0x2f8), - *(undefined4 *)(param_1 + 0x2fc),*(float *)(param_1 + 0x300), - *(float *)(param_1 + 0x304),*(undefined4 *)(param_1 + 0x308), - *(float *)(param_1 + 0x30c),0); - } - } - else if (iVar1 == 2) { - FUN_004435ac(param_1 + 0x394); - if (*(int *)(param_1 + 0x36c) != 0) { - FUN_0044366c(*(int *)(param_1 + 0x1c) + 0x94,param_1 + 0x394,*(float *)(param_1 + 0x2f8), - *(undefined4 *)(param_1 + 0x2fc),*(float *)(param_1 + 0x300), - *(float *)(param_1 + 0x304),*(undefined4 *)(param_1 + 0x308), - *(float *)(param_1 + 0x30c),0); - } - } - else { - if ((iVar1 == 3) && (FUN_004c2294(param_1), *(int *)(param_1 + 0x36c) != 0)) { - FUN_004c22c4(param_1); - } - *(undefined4 *)(param_1 + 0x354) = 0; - } - return; -} - - - -/* @004c2178 file=bt_l4/btl4rdr.cpp name=FUN_004c2178 */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -void __cdecl FUN_004c2178(int param_1) - -{ - float fVar1; - float fVar2; - int iVar3; - - if (*(float *)(param_1 + 0x2d4) <= _DAT_004c2284) { - FUN_0040385c(s_MapDisplay__CalculateBounds_dete_00514038, - s_d__tesla_bt_bt_l4_BTL4RDR_CPP_00514071,0x224); - *(undefined4 *)(param_1 + 0x2d4) = 0x3f800000; - } - *(float *)(param_1 + 0x2e8) = (float)(*(int *)(param_1 + 0x364) * 2) / *(float *)(param_1 + 0x2d4) - ; - *(float *)(param_1 + 0x2ec) = _DAT_004c2288 / *(float *)(param_1 + 0x2e8); - *(undefined4 *)(param_1 + 0x2e4) = *(undefined4 *)(param_1 + 0x2ec); - fVar1 = (float)*(int *)(param_1 + 0x364) / *(float *)(param_1 + 0x2e8); - fVar2 = (float)*(int *)(param_1 + 0x368) / *(float *)(param_1 + 0x2e8); - iVar3 = FUN_00417ab4(*(int *)(param_1 + 0x1c) + 0x40); - FUN_00408440((undefined4 *)(param_1 + 0x310),(undefined4 *)(iVar3 + 0x100)); - *(float *)(param_1 + 0x2f8) = *(float *)(param_1 + 0x310) - fVar1; - *(float *)(param_1 + 0x304) = *(float *)(param_1 + 0x310) + fVar1; - *(undefined4 *)(param_1 + 0x2fc) = 0xc7000000; - *(undefined4 *)(param_1 + 0x308) = 0x47000000; - *(float *)(param_1 + 0x300) = *(float *)(param_1 + 0x318) - fVar2; - *(float *)(param_1 + 0x30c) = *(float *)(param_1 + 0x318) + fVar2; - return; -} - - - -/* @004c228c file=? name=FUN_004c228c */ - -void FUN_004c228c(void) - -{ - return; -} - - - -/* @004c2294 file=? name=FUN_004c2294 */ - -void __cdecl FUN_004c2294(int param_1) - -{ - FUN_0044a650((int *)(param_1 + 0x3b0),param_1 + 0x48,*(uint *)(param_1 + 0x358)); - FUN_0044a630(param_1 + 0x3b0); - return; -} - - - -/* @004c22c4 file=? name=FUN_004c22c4 */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -void __cdecl FUN_004c22c4(int param_1) - -{ - float *pfVar1; - int iVar2; - float *pfVar3; - float *pfVar4; - float local_b8 [12]; - float local_88 [4]; - float local_78 [3]; - float local_6c [4]; - undefined4 local_5c [3]; - float local_50 [12]; - float local_20; - undefined4 local_1c; - undefined4 local_18; - float local_14; - float local_10; - float local_c; - undefined4 local_8; - - FUN_0040aadc(local_50); - FUN_0040aadc(local_50); - iVar2 = FUN_00417ab4(*(int *)(param_1 + 0x1c) + 0x40); - if ((*(int *)(param_1 + 0x2d8) == 0) && (iVar2 != 0)) { - *(int *)(param_1 + 0x2d8) = iVar2 + 0x100; - } - if (*(undefined4 **)(param_1 + 0x2d8) != (undefined4 *)0x0) { - FUN_00408440(local_5c,*(undefined4 **)(param_1 + 0x2d8)); - FUN_0040b0ac((int)local_50,3,local_5c); - if (*(undefined4 **)(param_1 + 0x2dc) != (undefined4 *)0x0) { - if (*(int *)(param_1 + 0x370) == 0) { - FUN_0040954c(local_78,*(float **)(param_1 + 0x2dc)); - local_14 = local_78[0] * _DAT_004c2480; - local_10 = local_14; - FUN_00408328(&local_c,&local_14); - FUN_00409948(local_88,0,local_c,0,local_8); - FUN_0040adec(local_50,local_88); - } - else { - FUN_00409968(local_6c,*(undefined4 **)(param_1 + 0x2dc)); - FUN_0040adec(local_50,local_6c); - } - } - } - pfVar1 = (float *)(param_1 + 0x324); - FUN_0040b244(pfVar1,local_50); - local_20 = *(float *)(param_1 + 0x2e8); - local_1c = *(undefined4 *)(param_1 + 0x2e8); - local_18 = *(undefined4 *)(param_1 + 0x2e8); - pfVar3 = pfVar1; - pfVar4 = local_b8; - for (iVar2 = 0xc; iVar2 != 0; iVar2 = iVar2 + -1) { - *pfVar4 = *pfVar3; - pfVar3 = pfVar3 + 1; - pfVar4 = pfVar4 + 1; - } - FUN_0040b374(pfVar1,local_b8,&local_20); - FUN_004c228c(); - *(uint *)(param_1 + 0x374) = *(uint *)(param_1 + 0x374) ^ 1; - (**(code **)(*(int *)(param_1 + 0x48) + 100))(param_1 + 0x48,param_1 + 0x3b0); - FUN_004c2484(param_1); - FUN_004c25b4(param_1,pfVar1); - FUN_004c2788(param_1,pfVar1); - FUN_004c28c4(param_1,pfVar1); - (**(code **)(*(int *)(param_1 + 0x48) + 0x68))(param_1 + 0x48); - return; -} - - - -/* @004c2484 file=? name=FUN_004c2484 */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -void __cdecl FUN_004c2484(int param_1) - -{ - int iVar1; - undefined4 uVar2; - undefined4 uVar3; - float local_34; - float local_30; - float local_2c; - float local_28; - float local_24; - float local_20; - float local_1c; - float local_18; - float local_14; - float local_10; - float local_c; - float local_8; - - local_c = *(float *)(param_1 + 0x31c) - *(float *)(param_1 + 800); - iVar1 = param_1 + 0x48; - local_14 = *(float *)(param_1 + 0x31c) + *(float *)(param_1 + 800); - local_10 = local_14; - local_8 = local_c; - (**(code **)(*(int *)(param_1 + 0x48) + 0x18))(iVar1,*(undefined4 *)(param_1 + 0x35c)); - local_2c = -local_8; - local_28 = local_2c; - FUN_00408328(&local_24,&local_2c); - local_18 = local_24 * _DAT_004c25ac; - local_1c = local_20 * _DAT_004c25ac; - (**(code **)(*(int *)(param_1 + 0x48) + 0x24))(iVar1,0,0); - uVar2 = FUN_004dcd94(); - uVar3 = FUN_004dcd94(); - (**(code **)(*(int *)(param_1 + 0x48) + 0x30))(iVar1,uVar3,uVar2); - local_34 = -local_10; - local_30 = local_34; - FUN_00408328(&local_24,&local_34); - local_18 = local_24 * _DAT_004c25ac; - local_1c = local_20 * _DAT_004c25ac; - (**(code **)(*(int *)(param_1 + 0x48) + 0x24))(iVar1,0,0); - uVar2 = FUN_004dcd94(); - uVar3 = FUN_004dcd94(); - (**(code **)(*(int *)(param_1 + 0x48) + 0x30))(iVar1,uVar3,uVar2); - return; -} - - - -/* @004c25b4 file=? name=FUN_004c25b4 */ - -void __cdecl FUN_004c25b4(int param_1,float *param_2) - -{ - int *piVar1; - int iVar2; - undefined4 uVar3; - int iVar4; - float local_80 [3]; - float local_74; - float local_70; - float local_6c; - int local_68 [3]; - float local_5c [15]; - undefined4 local_20; - undefined4 local_1c; - undefined4 local_18; - undefined4 local_14; - undefined4 local_10; - int local_c; - int local_8; - - FUN_0042ac1c(local_68,param_1 + 900); - local_20 = 0; - local_1c = 0; - local_18 = 0; - local_8 = *(int *)(*(int *)(param_1 + 0x1c) + 0x4c); - local_c = *(int *)(DAT_004efc94 + 200); - while( true ) { - iVar4 = (**(code **)(local_68[0] + 0x28))(local_68); - if (iVar4 == 0) break; - FUN_00408644(&local_74,(float *)(param_1 + 0x310),(float *)(iVar4 + 0x100)); - if (local_6c * local_6c + local_70 * local_70 + local_74 * local_74 <= - *(float *)(param_1 + 0x2f4)) { - piVar1 = FUN_004688ce(local_8 + 0x58,*(int *)(iVar4 + 0x1bc),0); - if (piVar1 != (int *)0x0) { - FUN_0040b104(local_5c,(float *)(iVar4 + 0xd0),param_2); - FUN_0046f0c0(piVar1,*(float *)(param_1 + 0x2e4),*(float *)(param_1 + 0x2ec), - (int *)(param_1 + 0x48),*(int *)(param_1 + 0x35c),local_5c,0); - } - iVar2 = FUN_0041a1a4(**(int **)(iVar4 + 0xc),0x4e70c4); - if (iVar2 != 0) { - local_10 = *(undefined4 *)(iVar4 + 0x21c); - iVar2 = (**(code **)(*(int *)(local_c + 0x68) + 0xc))(local_c + 0x68,&local_10); - if (iVar2 != 0) { - FUN_00408b98(local_80,(float *)(iVar4 + 0x100),param_2); - local_14 = FUN_004dcd94(); - uVar3 = FUN_004dcd94(); - (**(code **)(*(int *)(param_1 + 0x48) + 0x24))(param_1 + 0x48,local_14,uVar3); - uVar3 = FUN_004c2f88(); - (**(code **)(*(int *)(param_1 + 0x48) + 0x18))(param_1 + 0x48,uVar3); - (**(code **)(*(int *)(param_1 + 0x48) + 0x54)) - (param_1 + 0x48,0,iVar2,0,0,*(int *)(iVar2 + 0xc) + -1, - *(int *)(iVar2 + 0x10) + -1); - } - } - } - } - FUN_0042ac79(local_68,2); - return; -} - - - -/* @004c2788 file=? name=FUN_004c2788 */ - -void __cdecl FUN_004c2788(int param_1,float *param_2) - -{ - int iVar1; - int iVar2; - int iVar3; - float *pfVar4; - float local_58; - float local_54; - float local_50; - float local_4c [12]; - int local_1c [3]; - int local_10; - int local_c; - int *local_8; - - FUN_0042ac1c(local_1c,param_1 + 0x3a0); - local_c = *(int *)(*(int *)(param_1 + 0x1c) + 0x4c); - iVar1 = FUN_00417ab4(*(int *)(param_1 + 0x1c) + 0x40); - local_10 = 0; - if (iVar1 != 0) { - local_10 = *(int *)(*(int *)(iVar1 + 400) + 0x284); - } - while( true ) { - iVar3 = (**(code **)(local_1c[0] + 0x28))(local_1c); - if (iVar3 == 0) break; - if (iVar1 != iVar3) { - FUN_00408644(&local_58,(float *)(param_1 + 0x310),(float *)(iVar3 + 0x100)); - if (local_50 * local_50 + local_54 * local_54 + local_58 * local_58 <= - *(float *)(param_1 + 0x2f4)) { - local_8 = FUN_004688ce(local_c + 0x58,*(int *)(iVar3 + 0x1bc),0); - if (local_8 != (int *)0x0) { - FUN_0040b104(local_4c,(float *)(iVar3 + 0xd0),param_2); - if (iVar3 == local_10) { - iVar3 = *(int *)(param_1 + 0x360); - } - else { - iVar3 = 0; - } - pfVar4 = local_4c; - iVar2 = FUN_004c2f88(); - FUN_0046f0c0(local_8,*(float *)(param_1 + 0x2e4),*(float *)(param_1 + 0x2ec), - (int *)(param_1 + 0x48),iVar2,pfVar4,iVar3); - } - } - } - } - FUN_0042ac79(local_1c,2); - return; -} - - - -/* @004c28c4 file=bt_l4/btl4rdr.cpp name=FUN_004c28c4 */ - -void __cdecl FUN_004c28c4(int param_1,float *param_2) - -{ - int iVar1; - float *pfVar2; - int iVar3; - undefined4 uVar4; - int local_1c [3]; - int local_10; - int local_c; - int local_8; - - local_8 = FUN_00417ab4(*(int *)(param_1 + 0x1c) + 0x40); - local_c = 0; - if (local_8 != 0) { - local_c = *(int *)(*(int *)(local_8 + 400) + 0x284); - } - FUN_0042ac1c(local_1c,param_1 + 0x3a0); - local_10 = (**(code **)(local_1c[0] + 0x14))(local_1c); - if (local_10 < 1) { - FUN_0042ac79(local_1c,2); - } - else { - if (0x10 < local_10) { - local_10 = 0x10; - } - iVar3 = 0; - pfVar2 = (float *)(param_1 + 0x90); - if (0 < local_10) { - do { - iVar1 = (**(code **)(local_1c[0] + 0x28))(local_1c); - if (iVar1 == 0) { - FUN_0040385c(s_MapDisplay__DrawNames___GetSize__0051408f, - s_d__tesla_bt_bt_l4_BTL4RDR_CPP_005140b7,0x408); - } - FUN_004c19fc(pfVar2,iVar1,param_2,local_8,local_c); - iVar3 = iVar3 + 1; - pfVar2 = pfVar2 + 9; - } while (iVar3 < local_10); - } - if (*(int *)(param_1 + 0x374) == 0) { - uVar4 = 0; - } - else { - uVar4 = *(undefined4 *)(param_1 + 0x360); - } - iVar1 = 0; - iVar3 = param_1 + 0x90; - if (0 < local_10) { - do { - FUN_004c1ab0(iVar3,(int *)(param_1 + 0x48),uVar4); - iVar1 = iVar1 + 1; - iVar3 = iVar3 + 0x24; - } while (iVar1 < local_10); - } - FUN_0042ac79(local_1c,2); - } - return; -} - - - -/* @004c2a1d file=? name=FUN_004c2a1d */ - -undefined4 __cdecl FUN_004c2a1d(undefined4 param_1) - -{ - return param_1; -} - - - -/* @004c2a25 file=? name=FUN_004c2a25 */ - -void __cdecl FUN_004c2a25(int *param_1,byte param_2) - -{ - if ((param_1 != (int *)0x0) && ((param_2 & 1) != 0)) { - FUN_004022d0(param_1); - } - return; -} - - - -/* @004c2a3e file=? name=FUN_004c2a3e */ - -undefined4 * __cdecl -FUN_004c2a3e(undefined4 *param_1,undefined4 param_2,undefined4 *param_3,undefined4 param_4) - -{ - FUN_00444124(param_1,param_2); - *param_1 = &PTR_FUN_00514220; - param_1[4] = param_4; - param_1[5] = param_3; - *param_3 = *(undefined4 *)param_1[4]; - return param_1; -} - - - -/* @004c2a70 file=? name=FUN_004c2a70 */ - -void __cdecl FUN_004c2a70(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_00514220; - FUN_00444148(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @004c2a9c file=? name=FUN_004c2a9c */ - -void __cdecl FUN_004c2a9c(int param_1) - -{ - **(undefined4 **)(param_1 + 0x14) = **(undefined4 **)(param_1 + 0x10); - return; -} - - - -/* @004c2aae file=? name=FUN_004c2aae */ - -void __cdecl FUN_004c2aae(int param_1,char *param_2) - -{ - undefined8 uVar1; - uint uVar2; - uint uVar3; - - FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s_GaugeConnectionDirectOf__00514121,(char *)0x0); - uVar3 = **(uint **)(param_1 + 0x10); - uVar2 = *(uint *)(param_1 + 0x10); - FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s____dataSource_at_0051413b,(char *)0x0); - uVar1 = FUN_004dbd4c(&DAT_00524e20,uVar2); - FUN_004dbb24((int *)uVar1,&DAT_00514151,(char *)0x0); - uVar1 = FUN_004dbd4c((int *)uVar1,uVar3); - FUN_004dbb24((int *)uVar1,&DAT_00514153,(char *)0x0); - uVar3 = *(uint *)(param_1 + 0x10); - FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s____dataDestination_at_00514155,(char *)0x0); - uVar1 = FUN_004dbd4c(&DAT_00524e20,uVar3); - FUN_004dbb24((int *)uVar1,&DAT_0051416b,(char *)0x0); - FUN_004d9c70((int *)uVar1); - FUN_0044419c(param_1,param_2); - return; -} - - - -/* @004c2bb1 file=? name=FUN_004c2bb1 */ - -void FUN_004c2bb1(void) - -{ - FUN_00415f1c(); - return; -} - - - -/* @004c2bc0 file=? name=FUN_004c2bc0 */ - -undefined4 * __cdecl -FUN_004c2bc0(undefined4 *param_1,undefined4 param_2,undefined4 *param_3,undefined4 param_4) - -{ - FUN_00444124(param_1,param_2); - *param_1 = &PTR_FUN_00514214; - param_1[4] = param_4; - param_1[5] = param_3; - *param_3 = *(undefined4 *)param_1[4]; - return param_1; -} - - - -/* @004c2bf2 file=? name=FUN_004c2bf2 */ - -void __cdecl FUN_004c2bf2(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_00514214; - FUN_00444148(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @004c2c1e file=? name=FUN_004c2c1e */ - -void __cdecl FUN_004c2c1e(int param_1) - -{ - **(undefined4 **)(param_1 + 0x14) = **(undefined4 **)(param_1 + 0x10); - return; -} - - - -/* @004c2c30 file=? name=FUN_004c2c30 */ - -void __cdecl FUN_004c2c30(int param_1,char *param_2) - -{ - undefined8 uVar1; - uint uVar2; - uint uVar3; - - FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s_GaugeConnectionDirectOf__0051416d,(char *)0x0); - uVar3 = **(uint **)(param_1 + 0x10); - uVar2 = *(uint *)(param_1 + 0x10); - FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s____dataSource_at_00514187,(char *)0x0); - uVar1 = FUN_004dbd4c(&DAT_00524e20,uVar2); - FUN_004dbb24((int *)uVar1,&DAT_0051419d,(char *)0x0); - uVar1 = FUN_004dbd4c((int *)uVar1,uVar3); - FUN_004dbb24((int *)uVar1,&DAT_0051419f,(char *)0x0); - uVar3 = *(uint *)(param_1 + 0x10); - FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s____dataDestination_at_005141a1,(char *)0x0); - uVar1 = FUN_004dbd4c(&DAT_00524e20,uVar3); - FUN_004dbb24((int *)uVar1,&DAT_005141b7,(char *)0x0); - FUN_004d9c70((int *)uVar1); - FUN_0044419c(param_1,param_2); - return; -} - - - -/* @004c2d33 file=? name=FUN_004c2d33 */ - -void FUN_004c2d33(void) - -{ - FUN_00415f1c(); - return; -} - - - -/* @004c2d42 file=? name=FUN_004c2d42 */ - -undefined4 * __cdecl -FUN_004c2d42(undefined4 *param_1,undefined4 param_2,undefined4 *param_3,undefined4 param_4) - -{ - FUN_00444124(param_1,param_2); - *param_1 = &PTR_FUN_00514208; - param_1[4] = param_4; - param_1[5] = param_3; - *param_3 = *(undefined4 *)param_1[4]; - return param_1; -} - - - -/* @004c2d74 file=? name=FUN_004c2d74 */ - -void __cdecl FUN_004c2d74(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_00514208; - FUN_00444148(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @004c2da0 file=? name=FUN_004c2da0 */ - -void __cdecl FUN_004c2da0(int param_1) - -{ - **(undefined4 **)(param_1 + 0x14) = **(undefined4 **)(param_1 + 0x10); - return; -} - - - -/* @004c2db2 file=? name=FUN_004c2db2 */ - -void __cdecl FUN_004c2db2(int param_1,char *param_2) - -{ - int *piVar1; - undefined8 uVar2; - uint uVar3; - float *pfVar4; - - FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s_GaugeConnectionDirectOf__005141b9,(char *)0x0); - pfVar4 = *(float **)(param_1 + 0x10); - uVar3 = *(uint *)(param_1 + 0x10); - FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s____dataSource_at_005141d3,(char *)0x0); - uVar2 = FUN_004dbd4c(&DAT_00524e20,uVar3); - FUN_004dbb24((int *)uVar2,&DAT_005141e9,(char *)0x0); - piVar1 = FUN_00408270((int *)uVar2,pfVar4); - FUN_004dbb24(piVar1,&DAT_005141eb,(char *)0x0); - uVar3 = *(uint *)(param_1 + 0x10); - FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s____dataDestination_at_005141ed,(char *)0x0); - uVar2 = FUN_004dbd4c(&DAT_00524e20,uVar3); - FUN_004dbb24((int *)uVar2,&DAT_00514203,(char *)0x0); - FUN_004d9c70((int *)uVar2); - FUN_0044419c(param_1,param_2); - return; -} - - - -/* @004c2eb3 file=? name=FUN_004c2eb3 */ - -void FUN_004c2eb3(void) - -{ - FUN_00415f1c(); - return; -} - - - -/* @004c2ec4 file=? name=FUN_004c2ec4 */ - -void __cdecl -FUN_004c2ec4(undefined4 param_1,undefined4 param_2,int *param_3,int param_4,char *param_5) - -{ - undefined4 *puVar1; - - (**(code **)(*param_3 + 0x24))(param_3,param_1,param_2); - puVar1 = FUN_00442aec(param_4 + 4,param_5,0); - if (puVar1 != (undefined4 *)0x0) { - (**(code **)(*param_3 + 0x58))(param_3,0,0,puVar1,0,0,puVar1[3] + -1,puVar1[4] + -1); - } - FUN_00442c12(param_4 + 4,param_5); - return; -} - - - -/* @004c2f28 file=? name=FUN_004c2f28 */ - -void __cdecl -FUN_004c2f28(undefined4 param_1,undefined4 param_2,int *param_3,int param_4,char *param_5) - -{ - int *piVar1; - - (**(code **)(*param_3 + 0x24))(param_3,param_1,param_2); - piVar1 = FUN_00442d2b(param_4 + 0x20,param_5,0); - if (piVar1 != (int *)0x0) { - (**(code **)(*param_3 + 0x5c))(param_3,1,0,piVar1,0,0,*piVar1 + -1,piVar1[1] + -1); - } - FUN_00442c12(param_4 + 4,param_5); - return; -} - - - -/* @004c2f88 file=? name=FUN_004c2f88 */ - -undefined4 FUN_004c2f88(void) - -{ - return 7; -} - - - -/* @004c2f94 file=? name=FUN_004c2f94 */ - -uint __cdecl FUN_004c2f94(int param_1) - -{ - int iVar1; - uint *puVar2; - uint local_8; - - iVar1 = FUN_0041a1a4(**(int **)(param_1 + 0xc),0x50bdb4); - if (iVar1 != 0) { - local_8 = (uint)**(uint3 **)(*(int *)(param_1 + 0x848) + 8); - for (puVar2 = &DAT_00514274; 0 < (int)puVar2[1]; puVar2 = puVar2 + 2) { - if (*puVar2 == local_8) { - return puVar2[1]; - } - } - } - return 0xff; -} - - - -/* @004c2ff8 file=? name=FUN_004c2ff8 */ - -void __cdecl -FUN_004c2ff8(int *param_1,int param_2,int param_3,int param_4,int param_5,undefined4 param_6, - int param_7) - -{ - int iVar1; - int *piVar2; - int iVar3; - int iVar4; - int local_30 [3]; - int local_24 [3]; - int local_18; - int local_14; - int local_10; - int local_c; - int local_8; - - local_8 = *(int *)(param_7 + 0xc); - local_c = *(int *)(param_7 + 0x10); - iVar4 = 0; - if (0 < param_5) { - do { - local_24[2] = param_3 - iVar4; - local_24[1] = 0; - if (param_3 - iVar4 < 0) { - piVar2 = local_24 + 1; - } - else { - piVar2 = local_24 + 2; - } - local_10 = *piVar2; - if (*piVar2 < local_c) { - local_24[0] = (param_5 - iVar4) + 1; - if (local_c < local_24[0]) { - piVar2 = &local_c; - } - else { - piVar2 = local_24; - } - local_18 = *piVar2; - if (0 < local_18) { - local_18 = local_18 + -1; - iVar3 = 0; - if (0 < param_4) { - do { - local_30[2] = param_2 - iVar3; - local_30[1] = 0; - if (param_2 - iVar3 < 0) { - piVar2 = local_30 + 1; - } - else { - piVar2 = local_30 + 2; - } - iVar1 = *piVar2; - if (iVar1 < local_8) { - local_30[0] = (param_4 - iVar3) + 1; - if (local_8 < local_30[0]) { - piVar2 = &local_8; - } - else { - piVar2 = local_30; - } - local_14 = *piVar2; - if (0 < local_14) { - local_14 = local_14 + -1; - (**(code **)(*param_1 + 0x24))(param_1,iVar3,iVar4); - (**(code **)(*param_1 + 0x58)) - (param_1,param_6,0,param_7,iVar1,local_10,local_14,local_18); - } - } - iVar3 = iVar3 + local_8; - } while (iVar3 < param_4); - } - } - } - iVar4 = iVar4 + local_c; - } while (iVar4 < param_5); - } - return; -} - - - -/* @004c3134 file=? name=FUN_004c3134 */ - -undefined4 * __cdecl -FUN_004c3134(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) - -{ - FUN_00444124(param_1,param_2); - *param_1 = &PTR_FUN_00518ea8; - param_1[4] = param_4; - param_1[5] = param_3; - return param_1; -} - - - -/* @004c3160 file=? name=FUN_004c3160 */ - -void __cdecl FUN_004c3160(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_00518ea8; - FUN_00444148(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @004c318c file=? name=FUN_004c318c */ - -undefined4 FUN_004c318c(void) - -{ - return 1; -} - - - -/* @004c3198 file=? name=FUN_004c3198 */ - -void FUN_004c3198(void) - -{ - return; -} - - - -/* @004c31a0 file=? name=FUN_004c31a0 */ - -void __cdecl FUN_004c31a0(int param_1) - -{ - int iVar1; - int iVar2; - - iVar2 = 0; - if (*(int *)(*(int *)(param_1 + 0x10) + 0x134) == 1) { - iVar1 = FUN_0041bf44(*(int *)(param_1 + 0x10),3); - if (iVar1 != 0) { - iVar2 = FUN_00417ab4(iVar1); - } - } - if (iVar2 == 0) { - **(undefined4 **)(param_1 + 0x14) = 0; - } - else { - **(undefined4 **)(param_1 + 0x14) = *(undefined4 *)(iVar2 + 0x1d4); - } - return; -} - - - -/* @004c31ec file=? name=FUN_004c31ec */ - -undefined4 * __cdecl -FUN_004c31ec(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) - -{ - FUN_00444124(param_1,param_2); - *param_1 = &PTR_FUN_00518e9c; - param_1[4] = param_4; - param_1[5] = param_3; - return param_1; -} - - - -/* @004c3218 file=? name=FUN_004c3218 */ - -void __cdecl FUN_004c3218(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_00518e9c; - FUN_00444148(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @004c3244 file=? name=FUN_004c3244 */ - -undefined4 FUN_004c3244(void) - -{ - return 1; -} - - - -/* @004c3250 file=? name=FUN_004c3250 */ - -void FUN_004c3250(void) - -{ - return; -} - - - -/* @004c3258 file=? name=FUN_004c3258 */ - -void __cdecl FUN_004c3258(int param_1) - -{ - int iVar1; - - iVar1 = FUN_00417ab4(*(int *)(param_1 + 0x10)); - if (iVar1 == 0) { - **(undefined4 **)(param_1 + 0x14) = 0; - return; - } - **(undefined4 **)(param_1 + 0x14) = *(undefined4 *)(iVar1 + 0x1e0); - return; -} - - - -/* @004c3288 file=? name=FUN_004c3288 */ - -undefined4 * __cdecl -FUN_004c3288(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) - -{ - FUN_00444124(param_1,param_2); - *param_1 = &PTR_FUN_00518e90; - param_1[4] = param_4; - param_1[5] = param_3; - return param_1; -} - - - -/* @004c32b4 file=? name=FUN_004c32b4 */ - -void __cdecl FUN_004c32b4(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_00518e90; - FUN_00444148(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @004c32e0 file=? name=FUN_004c32e0 */ - -undefined4 FUN_004c32e0(void) - -{ - return 1; -} - - - -/* @004c32ec file=? name=FUN_004c32ec */ - -void FUN_004c32ec(void) - -{ - return; -} - - - -/* @004c32f4 file=? name=FUN_004c32f4 */ - -void __cdecl FUN_004c32f4(int param_1) - -{ - int iVar1; - - iVar1 = FUN_00417ab4(*(int *)(param_1 + 0x10)); - if (iVar1 == 0) { - **(undefined4 **)(param_1 + 0x14) = 0; - return; - } - **(undefined4 **)(param_1 + 0x14) = *(undefined4 *)(iVar1 + 0x1dc); - return; -} - - - -/* @004c3324 file=? name=FUN_004c3324 */ - -undefined4 * __cdecl -FUN_004c3324(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) - -{ - FUN_00444124(param_1,param_2); - *param_1 = &PTR_FUN_00518e84; - param_1[4] = param_4; - param_1[5] = param_3; - return param_1; -} - - - -/* @004c3350 file=? name=FUN_004c3350 */ - -void __cdecl FUN_004c3350(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_00518e84; - FUN_00444148(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @004c337c file=? name=FUN_004c337c */ - -undefined4 FUN_004c337c(void) - -{ - return 1; -} - - - -/* @004c3388 file=? name=FUN_004c3388 */ - -void FUN_004c3388(void) - -{ - return; -} - - - -/* @004c3390 file=? name=FUN_004c3390 */ - -void __cdecl FUN_004c3390(int param_1) - -{ - **(undefined4 **)(param_1 + 0x14) = *(undefined4 *)(*(int *)(param_1 + 0x10) + 0x14); - return; -} - - - -/* @004c33a4 file=? name=FUN_004c33a4 */ - -undefined4 * __cdecl -FUN_004c33a4(undefined4 *param_1,undefined4 param_2,undefined4 param_3,int param_4,int param_5) - -{ - FUN_00444124(param_1,param_2); - *param_1 = &PTR_FUN_00518e78; - if (param_5 < 0) { - param_1[4] = 0; - } - else { - param_1[4] = *(undefined4 *)(*(int *)(param_4 + 0x120) + param_5 * 4); - } - param_1[5] = param_3; - return param_1; -} - - - -/* @004c33e8 file=? name=FUN_004c33e8 */ - -void __cdecl FUN_004c33e8(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_00518e78; - FUN_00444148(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @004c3414 file=? name=FUN_004c3414 */ - -undefined4 FUN_004c3414(void) - -{ - return 1; -} - - - -/* @004c3428 file=? name=FUN_004c3428 */ - -void FUN_004c3428(void) - -{ - return; -} - - - -/* @004c3430 file=? name=FUN_004c3430 */ - -void __cdecl FUN_004c3430(int param_1) - -{ - undefined4 uVar1; - - if (*(int *)(param_1 + 0x10) == 0) { - **(undefined4 **)(param_1 + 0x14) = 100; - return; - } - uVar1 = FUN_004dcd94(); - **(undefined4 **)(param_1 + 0x14) = uVar1; - return; -} - - - -/* @004c346c file=? name=FUN_004c346c */ - -undefined4 * __cdecl -FUN_004c346c(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4, - undefined4 *param_5) - -{ - int iVar1; - undefined4 *puVar2; - - FUN_00444124(param_1,param_2); - *param_1 = &PTR_FUN_00518e6c; - iVar1 = 0; - puVar2 = param_1 + 6; - do { - *puVar2 = *param_5; - iVar1 = iVar1 + 1; - puVar2 = puVar2 + 1; - param_5 = param_5 + 1; - } while (iVar1 < 8); - param_1[4] = param_4; - param_1[0xe] = param_3; - return param_1; -} - - - -/* @004c34b4 file=? name=FUN_004c34b4 */ - -void __cdecl FUN_004c34b4(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_00518e6c; - FUN_00444148(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @004c34e0 file=? name=FUN_004c34e0 */ - -undefined4 FUN_004c34e0(void) - -{ - return 1; -} - - - -/* @004c34ec file=? name=FUN_004c34ec */ - -void FUN_004c34ec(void) - -{ - return; -} - - - -/* @004c34f4 file=? name=FUN_004c34f4 */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -void __cdecl FUN_004c34f4(int param_1) - -{ - int iVar1; - undefined4 uVar2; - int iVar3; - int *piVar4; - int local_c; - float local_8; - - iVar3 = 0; - local_8 = 0.0; - local_c = 0; - piVar4 = (int *)(param_1 + 0x18); - do { - if (((-1 < *piVar4) && - (iVar1 = *(int *)(*(int *)(*(int *)(param_1 + 0x10) + 0x120) + *piVar4 * 4), iVar1 != 0)) && - (local_c = local_c + 1, local_8 < *(float *)(iVar1 + 0x158))) { - local_8 = *(float *)(iVar1 + 0x158); - } - iVar3 = iVar3 + 1; - piVar4 = piVar4 + 1; - } while (iVar3 < 8); - if (local_c == 0) { - **(undefined4 **)(param_1 + 0x38) = 100; - } - else { - uVar2 = FUN_004dcd94(); - **(undefined4 **)(param_1 + 0x38) = uVar2; - } - return; -} - - - -/* @004c3598 file=? name=FUN_004c3598 */ - -undefined4 * __cdecl -FUN_004c3598(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) - -{ - FUN_00444124(param_1,param_2); - *param_1 = &PTR_FUN_00518e60; - param_1[4] = param_4; - param_1[5] = param_3; - return param_1; -} - - - -/* @004c35c8 file=? name=FUN_004c35c8 */ - -void __cdecl FUN_004c35c8(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_00518e60; - FUN_00444148(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @004c35f4 file=? name=FUN_004c35f4 */ - -undefined4 FUN_004c35f4(void) - -{ - return 1; -} - - - -/* @004c3608 file=? name=FUN_004c3608 */ - -void FUN_004c3608(void) - -{ - return; -} - - - -/* @004c3610 file=? name=FUN_004c3610 */ - -void __cdecl FUN_004c3610(int param_1) - -{ - undefined4 uVar1; - - if (*(int *)(param_1 + 0x10) == 0) { - **(undefined4 **)(param_1 + 0x14) = 0; - return; - } - if (*(int *)(*(int *)(param_1 + 0x10) + 0x40) == 1) { - **(undefined4 **)(param_1 + 0x14) = 100; - return; - } - uVar1 = FUN_004dcd94(); - **(undefined4 **)(param_1 + 0x14) = uVar1; - return; -} - - - -/* @004c3664 file=? name=FUN_004c3664 */ - -undefined4 * __cdecl -FUN_004c3664(undefined4 *param_1,undefined4 param_2,undefined4 param_3,int param_4) - -{ - int iVar1; - - FUN_00444124(param_1,param_2); - *param_1 = &PTR_FUN_00518e54; - if (param_4 != 0) { - iVar1 = FUN_0041a1a4(**(int **)(param_4 + 0xc),0x50e3ec); - if (iVar1 == 0) { - iVar1 = FUN_0041a1a4(**(int **)(param_4 + 0xc),0x50e604); - if (iVar1 == 0) { - param_4 = 0; - } - else { - param_1[5] = 0; - } - } - else { - param_1[5] = 1; - } - } - param_1[4] = param_4; - param_1[6] = param_3; - return param_1; -} - - - -/* @004c36d8 file=? name=FUN_004c36d8 */ - -void __cdecl FUN_004c36d8(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_00518e54; - FUN_00444148(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @004c3704 file=? name=FUN_004c3704 */ - -undefined4 FUN_004c3704(void) - -{ - return 1; -} - - - -/* @004c3718 file=? name=FUN_004c3718 */ - -void FUN_004c3718(void) - -{ - return; -} - - - -/* @004c3720 file=? name=FUN_004c3720 */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -void __cdecl FUN_004c3720(int param_1) - -{ - undefined4 uVar1; - - if (*(int *)(param_1 + 0x10) == 0) { - **(undefined4 **)(param_1 + 0x18) = 100; - } - else if (*(int *)(*(int *)(param_1 + 0x10) + 0x40) == 1) { - **(undefined4 **)(param_1 + 0x18) = 100; - } - else { - if (*(int *)(param_1 + 0x14) == 0) { - FUN_00417ab4(*(int *)(param_1 + 0x10) + 0x114); - } - uVar1 = FUN_004dcd94(); - **(undefined4 **)(param_1 + 0x18) = uVar1; - } - return; -} - - - -/* @004c37dc file=? name=FUN_004c37dc */ - -undefined4 * __cdecl -FUN_004c37dc(undefined4 *param_1,undefined4 param_2,undefined4 param_3,int param_4, - undefined4 param_5,int param_6,undefined4 param_7,char *param_8,char *param_9, - undefined4 param_10) - -{ - undefined4 uVar1; - char *pcVar2; - int iVar3; - int *piVar4; - undefined4 *puVar5; - int iVar6; - - FUN_00444308(param_1,param_2,param_3,param_4,param_5,param_10); - *param_1 = &PTR_FUN_00518e10; - uVar1 = FUN_004700ac(param_8); - param_1[0x12] = uVar1; - pcVar2 = (char *)FUN_004700ac(param_9); - param_1[0x13] = pcVar2; - iVar3 = FUN_004d4b58((char *)param_1[0x12],pcVar2); - if (iVar3 == 0) { - param_1[0x14] = 0; - } - else { - param_1[0x14] = 1; - } - iVar3 = *(int *)(param_4 + 0x4c); - iVar6 = 0; - puVar5 = param_1 + 0x12; - do { - piVar4 = FUN_00442f6a(iVar3 + 0x3c,(char *)*puVar5,0); - if (piVar4 == (int *)0x0) { - pcVar2 = (char *)*puVar5; - FUN_004dbb24(&DAT_00524e20,s_ColorMapper_cannot_find_palette_f_005185b6,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,pcVar2,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,&DAT_005185dd,(char *)0x0); - } - iVar6 = iVar6 + 1; - puVar5 = puVar5 + 1; - } while (iVar6 < 2); - param_1[0x17] = param_7; - param_1[0x18] = 0; - uVar1 = FUN_00447f84(param_4,param_6); - param_1[0x1a] = uVar1; - return param_1; -} - - - -/* @004c38dc file=? name=FUN_004c38dc */ - -void __cdecl FUN_004c38dc(int *param_1,byte param_2) - -{ - int iVar1; - int *piVar2; - int iVar3; - - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_00518e10; - iVar3 = 0; - piVar2 = param_1 + 0x12; - iVar1 = *(int *)(param_1[7] + 0x4c); - do { - FUN_00443090(iVar1 + 0x3c,(char *)*piVar2); - FUN_004022e8((int *)*piVar2); - *piVar2 = 0; - iVar3 = iVar3 + 1; - piVar2 = piVar2 + 1; - } while (iVar3 < 2); - FUN_00444360(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @004c3944 file=? name=FUN_004c3944 */ - -void FUN_004c3944(void) - -{ - FUN_004443a4(); - return; -} - - - -/* @004c3954 file=? name=FUN_004c3954 */ - -void FUN_004c3954(void) - -{ - return; -} - - - -/* @004c395c file=? name=FUN_004c395c */ - -void __cdecl FUN_004c395c(int param_1) - -{ - *(undefined4 *)(param_1 + 0x54) = 0xffffffff; - *(undefined4 *)(param_1 + 0x58) = 0xffffffff; - *(undefined1 *)(param_1 + 100) = 0xff; - *(undefined1 *)(param_1 + 0x65) = 0xff; - *(undefined1 *)(param_1 + 0x66) = 0xff; - return; -} - - - -/* @004c3980 file=? name=FUN_004c3980 */ - -void __cdecl FUN_004c3980(int param_1) - -{ - undefined2 uVar1; - int iVar2; - int iVar3; - bool bVar4; - int *piVar5; - int *piVar6; - undefined2 local_103; - char local_101; - int local_c [2]; - - local_c[1] = 0xff; - piVar6 = (int *)(param_1 + 0x54); - if (0xfe < *piVar6) { - piVar6 = local_c + 1; - } - piVar5 = (int *)(param_1 + 0x54); - *(int *)(param_1 + 0x54) = *piVar6; - local_c[0] = 0; - if (*piVar5 < 1) { - piVar5 = local_c; - } - *(int *)(param_1 + 0x54) = *piVar5; - if (*(int *)(param_1 + 0x50) == 0) { - if (*(int *)(param_1 + 0x54) == *(int *)(param_1 + 0x58)) { - return; - } - *(int *)(param_1 + 0x58) = *(int *)(param_1 + 0x54); - } - else { - *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) + 1; - if (1 < *(int *)(param_1 + 0x60)) { - *(undefined4 *)(param_1 + 0x60) = 0; - } - } - iVar2 = *(int *)(*(int *)(param_1 + 0x1c) + 0x4c); - piVar6 = FUN_00442f6a(iVar2 + 0x3c,*(char **)(param_1 + 0x48 + *(int *)(param_1 + 0x60) * 4),0); - uVar1 = local_103; - if (piVar6 != (int *)0x0) { - iVar3 = *(int *)(param_1 + 0x54) * 3; - uVar1 = *(undefined2 *)((int)piVar6 + iVar3 + 4); - local_101 = *(char *)((int)piVar6 + iVar3 + 6); - local_103._0_1_ = (char)uVar1; - local_103._1_1_ = (char)((ushort)uVar1 >> 8); - if (((*(char *)(param_1 + 100) == (char)local_103) && - (*(char *)(param_1 + 0x65) == local_103._1_1_)) && (*(char *)(param_1 + 0x66) == local_101)) - { - bVar4 = false; - } - else { - bVar4 = true; - } - if (bVar4) { - *(char *)(param_1 + 100) = (char)local_103; - *(char *)(param_1 + 0x65) = local_103._1_1_; - *(char *)(param_1 + 0x66) = local_101; - local_103 = uVar1; - (**(code **)(**(int **)(param_1 + 0x68) + 0xc)) - (*(int **)(param_1 + 0x68),&local_103,*(undefined4 *)(param_1 + 0x5c)); - uVar1 = local_103; - } - } - local_103 = uVar1; - FUN_00443090(iVar2 + 0x3c,*(char **)(param_1 + 0x48 + *(int *)(param_1 + 0x60) * 4)); - return; -} - - - -/* @004c3aa4 file=? name=FUN_004c3aa4 */ - -undefined4 __cdecl -FUN_004c3aa4(int param_1,undefined4 param_2,undefined4 param_3,int param_4,int param_5) - -{ - uint *puVar1; - int iVar2; - int *piVar3; - undefined4 uVar4; - uint *local_8; - - puVar1 = (uint *)FUN_00402298(0x10); - if (puVar1 == (uint *)0x0) { - local_8 = (uint *)0x0; - } - else { - local_8 = FUN_00402460(puVar1,&DAT_00514414); - } - local_8[3] = local_8[3] + 1; - iVar2 = FUN_0042076c(param_4,(int *)&local_8); - if (iVar2 < 0) { - FUN_004dbb24(&DAT_00524e20,s_Warning__damage_zone___005185e9,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,(char *)local_8[2],(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s___not_found__00518600,(char *)0x0); - } - piVar3 = (int *)FUN_00402298(0x70); - if (piVar3 != (int *)0x0) { - FUN_004c3b98(piVar3,DAT_005142c0,DAT_00514304,param_5,0,param_1,param_4,DAT_00514348, - &DAT_0051438c,&DAT_005143d0,iVar2,s_ColorMapperArmor_00518489); - } - uVar4 = 1; - puVar1 = local_8 + 3; - *puVar1 = *puVar1 - 1; - if (*puVar1 == 0) { - FUN_004024d8((int *)local_8,3); - } - return uVar4; -} - - - -/* @004c3b98 file=? name=FUN_004c3b98 */ - -int * __cdecl -FUN_004c3b98(int *param_1,undefined4 param_2,undefined4 param_3,int param_4,undefined4 param_5, - int param_6,int param_7,undefined4 param_8,char *param_9,char *param_10,int param_11, - undefined4 param_12) - -{ - undefined4 *puVar1; - - FUN_004c37dc(param_1,param_2,param_3,param_4,param_5,param_6,param_8,param_9,param_10,param_12); - *param_1 = (int)&PTR_FUN_00518dcc; - param_1[0x1b] = 0; - puVar1 = (undefined4 *)FUN_00402298(0x18); - if (puVar1 == (undefined4 *)0x0) { - puVar1 = (undefined4 *)0x0; - } - else { - puVar1 = FUN_004c33a4(puVar1,0,param_1 + 0x15,param_7,param_11); - } - (**(code **)(*param_1 + 0x34))(param_1,puVar1); - return param_1; -} - - - -/* @004c3c14 file=? name=FUN_004c3c14 */ - -void FUN_004c3c14(void) - -{ - return; -} - - - -/* @004c3c1c file=? name=FUN_004c3c1c */ - -void __cdecl FUN_004c3c1c(int param_1) - -{ - if (*(int *)(param_1 + 0x6c) != 0) { - *(undefined4 *)(param_1 + 0x54) = 100; - } - FUN_004c3980(param_1); - return; -} - - - -/* @004c3c38 file=? name=FUN_004c3c38 */ - -void __cdecl FUN_004c3c38(int param_1,undefined4 param_2) - -{ - *(undefined4 *)(param_1 + 0x6c) = param_2; - return; -} - - - -/* @004c3c48 file=? name=FUN_004c3c48 */ - -undefined4 __cdecl -FUN_004c3c48(int param_1,undefined4 param_2,undefined4 param_3,int param_4,int param_5) - -{ - uint *puVar1; - int iVar2; - undefined4 uVar3; - int *piVar4; - int iVar5; - int local_34 [8]; - char *local_14; - uint *local_10; - int local_c; - undefined *local_8; - - iVar5 = 0; - local_8 = &DAT_00514704; - local_c = 1; - piVar4 = local_34; - do { - local_14 = local_8 + iVar5 * 0x44 + 0x158; - puVar1 = (uint *)FUN_00402298(0x10); - if (puVar1 == (uint *)0x0) { - local_10 = (uint *)0x0; - } - else { - local_10 = FUN_00402460(puVar1,local_14); - } - local_10[3] = local_10[3] + 1; - iVar2 = FUN_0042076c(param_4,(int *)&local_10); - *piVar4 = iVar2; - if (iVar2 != 0) { - local_c = 0; - } - puVar1 = local_10 + 3; - *puVar1 = *puVar1 - 1; - if (*puVar1 == 0) { - FUN_004024d8((int *)local_10,3); - } - iVar5 = iVar5 + 1; - piVar4 = piVar4 + 1; - } while (iVar5 < 8); - if (local_c == 0) { - piVar4 = (int *)FUN_00402298(0x6c); - if (piVar4 != (int *)0x0) { - FUN_004c3d60(piVar4,*(undefined4 *)(local_8 + 4),*(undefined4 *)(local_8 + 0x48),param_5,0, - param_1,param_4,*(undefined4 *)(local_8 + 0x8c),local_8 + 0xd0,local_8 + 0x114, - local_34,s_ColorMapperMultiArmor_0051849a); - } - uVar3 = 1; - } - else { - FUN_004dbb24(&DAT_00524e20,s_No_Damage_zones_found__00518624,(char *)0x0); - uVar3 = 0; - } - return uVar3; -} - - - -/* @004c3d60 file=? name=FUN_004c3d60 */ - -int * __cdecl -FUN_004c3d60(int *param_1,undefined4 param_2,undefined4 param_3,int param_4,undefined4 param_5, - int param_6,undefined4 param_7,undefined4 param_8,char *param_9,char *param_10, - undefined4 *param_11,undefined4 param_12) - -{ - undefined4 *puVar1; - - FUN_004c37dc(param_1,param_2,param_3,param_4,param_5,param_6,param_8,param_9,param_10,param_12); - *param_1 = (int)&PTR_FUN_00518d88; - puVar1 = (undefined4 *)FUN_00402298(0x3c); - if (puVar1 == (undefined4 *)0x0) { - puVar1 = (undefined4 *)0x0; - } - else { - puVar1 = FUN_004c346c(puVar1,0,param_1 + 0x15,param_7,param_11); - } - (**(code **)(*param_1 + 0x34))(param_1,puVar1); - return param_1; -} - - - -/* @004c3dd4 file=? name=FUN_004c3dd4 */ - -void FUN_004c3dd4(void) - -{ - return; -} - - - -/* @004c3ddc file=? name=FUN_004c3ddc */ - -undefined4 __cdecl -FUN_004c3ddc(int param_1,undefined4 param_2,undefined4 param_3,int param_4,int param_5) - -{ - int *piVar1; - - piVar1 = (int *)FUN_00402298(0x6c); - if (piVar1 != (int *)0x0) { - FUN_004c3e40(piVar1,DAT_00514b50,DAT_00514b94,param_5,0,param_1,param_4,DAT_00514bd8, - &DAT_00514c1c,&DAT_00514c60,&DAT_00514ca4,s_ColorMapperCritical_005184b0); - } - return 1; -} - - - -/* @004c3e40 file=? name=FUN_004c3e40 */ - -int * __cdecl -FUN_004c3e40(int *param_1,undefined4 param_2,undefined4 param_3,int param_4,undefined4 param_5, - int param_6,int param_7,undefined4 param_8,char *param_9,char *param_10,char *param_11, - undefined4 param_12) - -{ - int iVar1; - undefined4 *puVar2; - - FUN_004c37dc(param_1,param_2,param_3,param_4,param_5,param_6,param_8,param_9,param_10,param_12); - *param_1 = (int)&PTR_FUN_00518d44; - iVar1 = FUN_0041f98c(param_7,param_11); - if (iVar1 == 0) { - FUN_004dbb24(&DAT_00524e20,s_ColorMapperCritical_warning__sub_00518643,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,param_11,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s___does_not_exist_0051866c,(char *)0x0); - } - puVar2 = (undefined4 *)FUN_00402298(0x18); - if (puVar2 == (undefined4 *)0x0) { - puVar2 = (undefined4 *)0x0; - } - else { - puVar2 = FUN_004c3598(puVar2,0,param_1 + 0x15,iVar1); - } - (**(code **)(*param_1 + 0x34))(param_1,puVar2); - return param_1; -} - - - -/* @004c3f00 file=? name=FUN_004c3f00 */ - -void FUN_004c3f00(void) - -{ - return; -} - - - -/* @004c3f08 file=? name=FUN_004c3f08 */ - -undefined4 __cdecl -FUN_004c3f08(int param_1,undefined4 param_2,undefined4 param_3,int param_4,int param_5) - -{ - int *piVar1; - - piVar1 = (int *)FUN_00402298(0x6c); - if (piVar1 != (int *)0x0) { - FUN_004c3f6c(piVar1,DAT_00514f98,DAT_00514fdc,param_5,0,param_1,param_4,DAT_00515020, - &DAT_00515064,&DAT_005150a8,&DAT_005150ec,s_ColorMapperHeat_005184c4); - } - return 1; -} - - - -/* @004c3f6c file=bt_l4/btl4gaug.cpp name=FUN_004c3f6c */ - -int * __cdecl -FUN_004c3f6c(int *param_1,undefined4 param_2,undefined4 param_3,int param_4,undefined4 param_5, - int param_6,int param_7,undefined4 param_8,char *param_9,char *param_10,char *param_11, - undefined4 param_12) - -{ - int iVar1; - int iVar2; - undefined4 *puVar3; - - FUN_004c37dc(param_1,param_2,param_3,param_4,param_5,param_6,param_8,param_9,param_10,param_12); - *param_1 = (int)&PTR_FUN_00518d00; - iVar1 = FUN_0041f98c(param_7,param_11); - if (iVar1 == 0) { - FUN_004dbb24(&DAT_00524e20,s_ColorMapperHeat_warning__subsyst_00518685,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,param_11,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s___does_not_exist_005186aa,(char *)0x0); - } - else { - iVar2 = FUN_0041a1a4(**(int **)(iVar1 + 0xc),0x50e3ec); - if ((iVar2 == 0) && (iVar2 = FUN_0041a1a4(**(int **)(iVar1 + 0xc),0x50e604), iVar2 == 0)) { - FUN_0040385c(s_Bad_subsystem_type_005186bc,s_d__tesla_bt_bt_l4_BTL4GAUG_CPP_005186cf,0x68a); - } - } - puVar3 = (undefined4 *)FUN_00402298(0x1c); - if (puVar3 == (undefined4 *)0x0) { - puVar3 = (undefined4 *)0x0; - } - else { - puVar3 = FUN_004c3664(puVar3,0,param_1 + 0x15,iVar1); - } - (**(code **)(*param_1 + 0x34))(param_1,puVar3); - return param_1; -} - - - -/* @004c4074 file=? name=FUN_004c4074 */ - -void FUN_004c4074(void) - -{ - return; -} - - - -/* @004c407c file=? name=FUN_004c407c */ - -bool __cdecl FUN_004c407c(int param_1,int param_2,int param_3,undefined4 param_4,int param_5) - -{ - int iVar1; - int *piVar2; - undefined4 *puVar3; - - piVar2 = (int *)FUN_00402298(0xb8); - if (piVar2 != (int *)0x0) { - FUN_004c4170(piVar2,DAT_005153e0,DAT_00515424,param_5,0,param_1,param_2,param_3, - param_2 + DAT_00515468,param_3 + DAT_0051546c,&DAT_005154ac,DAT_005154f0, - DAT_00515534,DAT_00515578,DAT_005155bc,DAT_00515600,s_HorizTwoPartBar_005184d4); - } - iVar1 = *(int *)(param_5 + 0x4c); - puVar3 = FUN_00442aec(iVar1 + 4,&DAT_005154ac,0); - if (puVar3 != (undefined4 *)0x0) { - FUN_00442c12(iVar1 + 4,&DAT_005154ac); - } - else { - FUN_004dbb24(&DAT_00524e20,s_HorizTwoPartBar__Missing_image__005186f7,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,&DAT_005154ac,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,&DAT_00518717,(char *)0x0); - } - return puVar3 != (undefined4 *)0x0; -} - - - -/* @004c4170 file=? name=FUN_004c4170 */ - -int * __cdecl -FUN_004c4170(int *param_1,undefined4 param_2,undefined4 param_3,int param_4,undefined4 param_5, - int param_6,int param_7,int param_8,int param_9,int param_10,char *param_11,int param_12 - ,int param_13,undefined4 param_14,undefined4 param_15,undefined4 param_16, - undefined4 param_17) - -{ - int iVar1; - undefined4 *puVar2; - - FUN_00444818(param_1,param_2,param_3,param_4,param_5,param_6,param_17); - *param_1 = (int)&PTR_FUN_00518cbc; - iVar1 = FUN_004700ac(param_11); - param_1[0x27] = iVar1; - FUN_00442aec(*(int *)(param_4 + 0x4c) + 4,(char *)param_1[0x27],0); - (**(code **)(param_1[0x12] + 8))(param_1 + 0x12,param_7,param_8,param_9,param_10); - param_1[0x28] = param_12; - param_1[0x29] = param_13; - param_1[0x2a] = param_9 - param_7; - param_1[0x2b] = (param_10 - param_8) + -1; - puVar2 = (undefined4 *)FUN_00402298(0x18); - if (puVar2 == (undefined4 *)0x0) { - puVar2 = (undefined4 *)0x0; - } - else { - puVar2 = FUN_00474855(puVar2,0,param_1 + 0x24,param_14); - } - (**(code **)(*param_1 + 0x34))(param_1,puVar2); - puVar2 = (undefined4 *)FUN_00402298(0x18); - if (puVar2 == (undefined4 *)0x0) { - puVar2 = (undefined4 *)0x0; - } - else { - puVar2 = FUN_00474855(puVar2,0,param_1 + 0x25,param_15); - } - (**(code **)(*param_1 + 0x34))(param_1,puVar2); - puVar2 = (undefined4 *)FUN_00402298(0x18); - if (puVar2 == (undefined4 *)0x0) { - puVar2 = (undefined4 *)0x0; - } - else { - puVar2 = FUN_00474855(puVar2,0,param_1 + 0x26,param_16); - } - (**(code **)(*param_1 + 0x34))(param_1,puVar2); - return param_1; -} - - - -/* @004c42b0 file=? name=FUN_004c42b0 */ - -void __cdecl FUN_004c42b0(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_00518cbc; - FUN_00442c12(*(int *)(param_1[7] + 0x4c) + 4,(char *)param_1[0x27]); - FUN_004022e8((int *)param_1[0x27]); - param_1[0x27] = 0; - FUN_00444870(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @004c430c file=? name=FUN_004c430c */ - -void FUN_004c430c(void) - -{ - FUN_004448ac(); - return; -} - - - -/* @004c431c file=? name=FUN_004c431c */ - -void FUN_004c431c(void) - -{ - return; -} - - - -/* @004c4324 file=? name=FUN_004c4324 */ - -void __cdecl FUN_004c4324(int param_1) - -{ - *(undefined4 *)(param_1 + 0xb4) = 0; - *(undefined4 *)(param_1 + 0xb0) = *(undefined4 *)(param_1 + 0xa8); - return; -} - - - -/* @004c4340 file=? name=FUN_004c4340 */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -void __cdecl FUN_004c4340(int param_1) - -{ - int iVar1; - undefined4 *puVar2; - int *piVar3; - int *piVar4; - int local_14 [3]; - int local_8; - - if (_DAT_004c452c <= *(float *)(param_1 + 0x90)) { - if (*(float *)(param_1 + 0x98) < *(float *)(param_1 + 0x90)) { - *(undefined4 *)(param_1 + 0x90) = *(undefined4 *)(param_1 + 0x98); - } - } - else { - *(undefined4 *)(param_1 + 0x90) = 0; - } - local_8 = FUN_004dcd94(); - local_14[2] = FUN_004dcd94(); - local_14[1] = 0; - if (local_8 < 0) { - piVar3 = local_14 + 1; - } - else { - piVar3 = &local_8; - } - if (*(int *)(param_1 + 0xa8) <= *piVar3) { - piVar3 = (int *)(param_1 + 0xa8); - } - local_8 = *piVar3; - local_14[0] = 0; - if (local_14[2] < 0) { - piVar4 = local_14; - } - else { - piVar4 = local_14 + 2; - } - if (*(int *)(param_1 + 0xa8) <= *piVar4) { - piVar4 = (int *)(param_1 + 0xa8); - } - local_14[2] = *piVar4; - if ((*piVar3 != *(int *)(param_1 + 0xb4)) || (local_14[2] != *(int *)(param_1 + 0xb0))) { - piVar3 = (int *)(param_1 + 0x48); - (**(code **)(*(int *)(param_1 + 0x48) + 0x18))(piVar3,*(undefined4 *)(param_1 + 0xa0)); - iVar1 = *(int *)(*(int *)(param_1 + 0x1c) + 0x4c); - puVar2 = FUN_00442aec(iVar1 + 4,*(char **)(param_1 + 0x9c),0); - FUN_004c2ff8(piVar3,0,0,local_8 + -1,*(int *)(param_1 + 0xac),*(undefined4 *)(param_1 + 0xa4), - (int)puVar2); - FUN_00442c12(iVar1 + 4,*(char **)(param_1 + 0x9c)); - if (local_8 < local_14[2]) { - (**(code **)(*(int *)(param_1 + 0x48) + 0x24))(piVar3,local_8,0); - (**(code **)(*(int *)(param_1 + 0x48) + 0x48)) - (piVar3,local_14[2] + -1,*(undefined4 *)(param_1 + 0xac)); - } - if (local_14[2] < *(int *)(param_1 + 0xa8)) { - (**(code **)(*(int *)(param_1 + 0x48) + 0x18))(piVar3,*(undefined4 *)(param_1 + 0xa4)); - (**(code **)(*(int *)(param_1 + 0x48) + 0x24))(piVar3,local_14[2],0); - (**(code **)(*(int *)(param_1 + 0x48) + 0x48)) - (piVar3,*(undefined4 *)(param_1 + 0xa8),*(undefined4 *)(param_1 + 0xac)); - } - *(int *)(param_1 + 0xb4) = local_8; - *(int *)(param_1 + 0xb0) = local_14[2]; - } - return; -} - - - -/* @004c462c file=? name=FUN_004c462c */ - -bool __cdecl FUN_004c462c(int param_1,int param_2,int param_3,undefined4 param_4,int param_5) - -{ - int iVar1; - int *piVar2; - undefined4 *puVar3; - - piVar2 = (int *)FUN_00402298(0xbc); - if (piVar2 != (int *)0x0) { - FUN_004c4724(piVar2,DAT_00515c70,DAT_00515cb4,param_5,0,param_1,param_2,param_3, - param_2 + DAT_00515cf8,param_3 + DAT_00515cfc,&DAT_00515d3c,DAT_00515d80, - DAT_00515dc4,DAT_00515e08,DAT_00515e4c,DAT_00515e90,&DAT_00514270, - s_VertTwoPartBar_005184e4); - } - iVar1 = *(int *)(param_5 + 0x4c); - puVar3 = FUN_00442aec(iVar1 + 4,&DAT_00515d3c,0); - if (puVar3 != (undefined4 *)0x0) { - FUN_00442c12(iVar1 + 4,&DAT_00515d3c); - } - else { - FUN_004dbb24(&DAT_00524e20,s_VertTwoPartBarNormalized__Missin_00518756,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,&DAT_00515d3c,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,&DAT_0051877f,(char *)0x0); - } - return puVar3 != (undefined4 *)0x0; -} - - - -/* @004c4724 file=? name=FUN_004c4724 */ - -int * __cdecl -FUN_004c4724(int *param_1,undefined4 param_2,undefined4 param_3,int param_4,undefined4 param_5, - int param_6,int param_7,int param_8,int param_9,int param_10,char *param_11,int param_12 - ,int param_13,int param_14,undefined4 param_15,undefined4 param_16,undefined4 param_17, - undefined4 param_18) - -{ - int iVar1; - undefined4 *puVar2; - - FUN_00444818(param_1,param_2,param_3,param_4,param_5,param_6,param_18); - *param_1 = (int)&PTR_FUN_00518c78; - iVar1 = FUN_004700ac(param_11); - param_1[0x24] = iVar1; - FUN_00442aec(*(int *)(param_4 + 0x4c) + 4,(char *)param_1[0x24],0); - (**(code **)(param_1[0x12] + 8))(param_1 + 0x12,param_7,param_8,param_9,param_10); - param_1[0x25] = param_12; - param_1[0x26] = param_13; - param_1[0x27] = param_14; - param_1[0x28] = (param_9 - param_7) + -1; - param_1[0x29] = param_10 - param_8; - puVar2 = (undefined4 *)FUN_00402298(0x18); - if (puVar2 == (undefined4 *)0x0) { - puVar2 = (undefined4 *)0x0; - } - else { - puVar2 = FUN_00474855(puVar2,0,param_1 + 0x2c,param_15); - } - (**(code **)(*param_1 + 0x34))(param_1,puVar2); - puVar2 = (undefined4 *)FUN_00402298(0x18); - if (puVar2 == (undefined4 *)0x0) { - puVar2 = (undefined4 *)0x0; - } - else { - puVar2 = FUN_00474855(puVar2,0,param_1 + 0x2d,param_16); - } - (**(code **)(*param_1 + 0x34))(param_1,puVar2); - puVar2 = (undefined4 *)FUN_00402298(0x18); - if (puVar2 == (undefined4 *)0x0) { - puVar2 = (undefined4 *)0x0; - } - else { - puVar2 = FUN_00474855(puVar2,0,param_1 + 0x2e,param_17); - } - (**(code **)(*param_1 + 0x34))(param_1,puVar2); - return param_1; -} - - - -/* @004c486c file=? name=FUN_004c486c */ - -void __cdecl FUN_004c486c(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_00518c78; - FUN_00442c12(*(int *)(param_1[7] + 0x4c) + 4,(char *)param_1[0x24]); - FUN_004022e8((int *)param_1[0x24]); - param_1[0x24] = 0; - FUN_00444870(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @004c48c8 file=? name=FUN_004c48c8 */ - -void FUN_004c48c8(void) - -{ - FUN_004448ac(); - return; -} - - - -/* @004c48d8 file=? name=FUN_004c48d8 */ - -void FUN_004c48d8(void) - -{ - return; -} - - - -/* @004c48e0 file=? name=FUN_004c48e0 */ - -void __cdecl FUN_004c48e0(int param_1) - -{ - *(undefined4 *)(param_1 + 0xac) = 0; - *(undefined4 *)(param_1 + 0xa8) = *(undefined4 *)(param_1 + 0xa0); - return; -} - - - -/* @004c48fc file=? name=FUN_004c48fc */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -void __cdecl FUN_004c48fc(int param_1) - -{ - int iVar1; - undefined4 *puVar2; - int *piVar3; - int *piVar4; - int local_14 [3]; - int local_8; - - if (_DAT_004c4b00 <= *(float *)(param_1 + 0xb0)) { - if (*(float *)(param_1 + 0xb8) < *(float *)(param_1 + 0xb0)) { - *(undefined4 *)(param_1 + 0xb0) = *(undefined4 *)(param_1 + 0xb8); - } - } - else { - *(undefined4 *)(param_1 + 0xb0) = 0; - } - local_8 = FUN_004dcd94(); - local_14[2] = FUN_004dcd94(); - local_14[1] = 0; - if (local_8 < 0) { - piVar3 = local_14 + 1; - } - else { - piVar3 = &local_8; - } - if (*(int *)(param_1 + 0xa4) <= *piVar3) { - piVar3 = (int *)(param_1 + 0xa4); - } - local_8 = *piVar3; - local_14[0] = 0; - if (local_14[2] < 0) { - piVar4 = local_14; - } - else { - piVar4 = local_14 + 2; - } - if (*(int *)(param_1 + 0xa4) <= *piVar4) { - piVar4 = (int *)(param_1 + 0xa4); - } - local_14[2] = *piVar4; - if ((*piVar3 != *(int *)(param_1 + 0xac)) || (local_14[2] != *(int *)(param_1 + 0xa8))) { - iVar1 = *(int *)(*(int *)(param_1 + 0x1c) + 0x4c); - puVar2 = FUN_00442aec(iVar1 + 4,*(char **)(param_1 + 0x90),0); - piVar3 = (int *)(param_1 + 0x48); - (**(code **)(*(int *)(param_1 + 0x48) + 0x18))(piVar3,*(undefined4 *)(param_1 + 0x94)); - FUN_004c2ff8(piVar3,0,0,*(int *)(param_1 + 0xa0),local_8 + -1,*(undefined4 *)(param_1 + 0x9c), - (int)puVar2); - FUN_00442c12(iVar1 + 4,*(char **)(param_1 + 0x90)); - if (local_8 < local_14[2]) { - (**(code **)(*(int *)(param_1 + 0x48) + 0x18))(piVar3,*(undefined4 *)(param_1 + 0x98)); - (**(code **)(*(int *)(param_1 + 0x48) + 0x24))(piVar3,0,local_8); - (**(code **)(*(int *)(param_1 + 0x48) + 0x48)) - (piVar3,*(undefined4 *)(param_1 + 0xa0),local_14[2] + -1); - } - if (local_14[2] < *(int *)(param_1 + 0xa4)) { - (**(code **)(*(int *)(param_1 + 0x48) + 0x18))(piVar3,*(undefined4 *)(param_1 + 0x9c)); - (**(code **)(*(int *)(param_1 + 0x48) + 0x24))(piVar3,0,local_14[2]); - (**(code **)(*(int *)(param_1 + 0x48) + 0x48)) - (piVar3,*(undefined4 *)(param_1 + 0xa0),*(undefined4 *)(param_1 + 0xa4)); - } - *(int *)(param_1 + 0xac) = local_8; - *(int *)(param_1 + 0xa8) = local_14[2]; - } - return; -} - - - -/* @004c4b84 file=? name=FUN_004c4b84 */ - -int * __cdecl -FUN_004c4b84(int *param_1,undefined4 param_2,undefined4 param_3,int param_4,undefined4 param_5, - int param_6,int param_7,int param_8,int param_9,int param_10,int param_11,int param_12, - int param_13,undefined4 param_14,undefined4 param_15) - -{ - int *piVar1; - undefined4 *puVar2; - - FUN_00444818(param_1,param_2,param_3,param_4,param_5,param_6,param_15); - *param_1 = (int)&PTR_FUN_00518c34; - piVar1 = param_1 + 0x12; - (**(code **)(param_1[0x12] + 8))(piVar1,param_7,param_8,param_9,param_10); - (**(code **)(param_1[0x12] + 0xc))(piVar1,3); - (**(code **)(param_1[0x12] + 0x18))(piVar1,param_11); - param_1[0x29] = param_11; - param_1[0x2a] = param_12; - param_1[0x27] = param_13; - param_1[0x25] = (param_9 - param_7) + -1; - param_1[0x26] = param_10 - param_8; - param_1[0x28] = (param_10 - param_8) - param_1[0x27]; - puVar2 = (undefined4 *)FUN_00402298(0x18); - if (puVar2 == (undefined4 *)0x0) { - puVar2 = (undefined4 *)0x0; - } - else { - puVar2 = FUN_00474855(puVar2,0,param_1 + 0x2b,param_14); - } - (**(code **)(*param_1 + 0x34))(param_1,puVar2); - return param_1; -} - - - -/* @004c4c68 file=? name=FUN_004c4c68 */ - -void __cdecl FUN_004c4c68(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_00518c34; - FUN_00444870(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @004c4c94 file=? name=FUN_004c4c94 */ - -void FUN_004c4c94(void) - -{ - FUN_004448ac(); - return; -} - - - -/* @004c4ca4 file=? name=FUN_004c4ca4 */ - -void FUN_004c4ca4(void) - -{ - return; -} - - - -/* @004c4cac file=? name=FUN_004c4cac */ - -void __cdecl FUN_004c4cac(int param_1) - -{ - *(undefined4 *)(param_1 + 0x90) = 0xffffffff; - return; -} - - - -/* @004c4cc0 file=? name=FUN_004c4cc0 */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -void __cdecl FUN_004c4cc0(int param_1) - -{ - int iVar1; - - if (_DAT_004c4d3c <= *(float *)(param_1 + 0xac)) { - if (_DAT_004c4d40 < *(float *)(param_1 + 0xac)) { - *(undefined4 *)(param_1 + 0xac) = 0x3f800000; - } - } - else { - *(undefined4 *)(param_1 + 0xac) = 0; - } - iVar1 = FUN_004dcd94(); - if (iVar1 != *(int *)(param_1 + 0x90)) { - FUN_004c4d48(param_1); - *(int *)(param_1 + 0x90) = iVar1; - FUN_004c4d48(param_1); - } - return; -} - - - -/* @004c4d48 file=? name=FUN_004c4d48 */ - -void __cdecl FUN_004c4d48(int param_1) - -{ - if (-1 < *(int *)(param_1 + 0x90)) { - (**(code **)(*(int *)(param_1 + 0x48) + 0x24))(param_1 + 0x48,0,*(int *)(param_1 + 0x90)); - (**(code **)(*(int *)(param_1 + 0x48) + 0x4c)) - (param_1 + 0x48,*(undefined4 *)(param_1 + 0x94),*(undefined4 *)(param_1 + 0x9c)); - } - return; -} - - - -/* @004c4d88 file=? name=FUN_004c4d88 */ - -undefined4 * __cdecl -FUN_004c4d88(undefined4 *param_1,undefined4 param_2,undefined4 param_3,int param_4, - undefined4 param_5,int param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9, - char *param_10,undefined4 param_11,undefined4 param_12,int param_13,int param_14, - undefined4 param_15) - -{ - undefined4 uVar1; - undefined4 *puVar2; - int *piVar3; - - FUN_00444818(param_1,param_2,param_3,param_4,param_5,param_6,param_15); - *param_1 = &PTR_FUN_00518bf0; - param_1[0x26] = param_11; - param_1[0x27] = param_12; - param_1[0x28] = param_13; - param_1[0x24] = param_9; - uVar1 = FUN_004700ac(param_10); - param_1[0x25] = uVar1; - if (param_1[0x24] == 0) { - piVar3 = FUN_00442d2b(*(int *)(param_4 + 0x4c) + 0x20,(char *)param_1[0x25],0); - param_1[0x29] = *piVar3 / param_13; - param_1[0x2a] = piVar3[1] / param_14; - } - else { - puVar2 = FUN_00442aec(*(int *)(param_4 + 0x4c) + 4,(char *)param_1[0x25],0); - param_1[0x29] = (int)puVar2[3] / param_13; - param_1[0x2a] = (int)puVar2[4] / param_14; - } - (**(code **)(param_1[0x12] + 0x10))(param_1 + 0x12,param_7,param_8); - return param_1; -} - - - -/* @004c4e7c file=? name=FUN_004c4e7c */ - -void __cdecl FUN_004c4e7c(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_00518bf0; - if (param_1[0x24] == 0) { - FUN_00442e51(*(int *)(param_1[7] + 0x4c) + 0x20,(char *)param_1[0x25]); - } - else { - FUN_00442c12(*(int *)(param_1[7] + 0x4c) + 4,(char *)param_1[0x25]); - } - FUN_004022e8((int *)param_1[0x25]); - param_1[0x25] = 0; - FUN_00444870(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @004c4efc file=? name=FUN_004c4efc */ - -void FUN_004c4efc(void) - -{ - FUN_004448ac(); - return; -} - - - -/* @004c4f0c file=? name=FUN_004c4f0c */ - -void FUN_004c4f0c(void) - -{ - return; -} - - - -/* @004c4f14 file=? name=FUN_004c4f14 */ - -void __cdecl FUN_004c4f14(int param_1) - -{ - *(undefined4 *)(param_1 + 0xb0) = 0xffffffff; - return; -} - - - -/* @004c4f28 file=? name=FUN_004c4f28 */ - -void __cdecl FUN_004c4f28(int param_1) - -{ - int iVar1; - undefined4 *puVar2; - int *piVar3; - int iVar4; - int iVar5; - int iVar6; - int iVar7; - - if (*(int *)(param_1 + 0xac) != *(int *)(param_1 + 0xb0)) { - *(int *)(param_1 + 0xb0) = *(int *)(param_1 + 0xac); - iVar7 = *(int *)(param_1 + 0xa0); - if (iVar7 == 1) { - iVar6 = 0; - iVar7 = *(int *)(param_1 + 0xac); - } - else { - iVar6 = *(int *)(param_1 + 0xac) % iVar7; - iVar7 = *(int *)(param_1 + 0xac) / iVar7; - } - iVar6 = iVar6 * *(int *)(param_1 + 0xa4); - iVar4 = *(int *)(param_1 + 0xa4) + iVar6 + -1; - iVar7 = iVar7 * *(int *)(param_1 + 0xa8); - iVar5 = *(int *)(param_1 + 0xa8) + iVar7 + -1; - if (*(int *)(param_1 + 0x90) == 0) { - iVar1 = *(int *)(*(int *)(param_1 + 0x1c) + 0x4c); - piVar3 = FUN_00442d2b(iVar1 + 0x20,*(char **)(param_1 + 0x94),0); - (**(code **)(*(int *)(param_1 + 0x48) + 0x5c)) - (param_1 + 0x48,1,0,piVar3,iVar6,iVar7,iVar4,iVar5); - FUN_00442e51(iVar1 + 0x20,*(char **)(param_1 + 0x94)); - } - else { - (**(code **)(*(int *)(param_1 + 0x48) + 0x18))(param_1 + 0x48,*(undefined4 *)(param_1 + 0x98)) - ; - iVar1 = *(int *)(*(int *)(param_1 + 0x1c) + 0x4c); - puVar2 = FUN_00442aec(iVar1 + 4,*(char **)(param_1 + 0x94),0); - (**(code **)(*(int *)(param_1 + 0x48) + 0x58)) - (param_1 + 0x48,*(undefined4 *)(param_1 + 0x9c),0,puVar2,iVar6,iVar7,iVar4,iVar5); - FUN_00442c12(iVar1 + 4,*(char **)(param_1 + 0x94)); - } - } - return; -} - - - -/* @004c5068 file=? name=FUN_004c5068 */ - -bool __cdecl -FUN_004c5068(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,int param_5) - -{ - int iVar1; - int *piVar2; - undefined4 *puVar3; - - piVar2 = (int *)FUN_00402298(0xb4); - if (piVar2 != (int *)0x0) { - FUN_004c5148(piVar2,DAT_00516500,DAT_00516544,param_5,0,param_1,param_2,param_3,&DAT_00516588, - DAT_005165cc,DAT_00516610,DAT_00516654,DAT_00516698,DAT_005166dc, - s_OneOfSeveralInt_00518511); - } - iVar1 = *(int *)(param_5 + 0x4c); - puVar3 = FUN_00442aec(iVar1 + 4,&DAT_00516588,0); - if (puVar3 != (undefined4 *)0x0) { - FUN_00442c12(iVar1 + 4,&DAT_00516588); - } - else { - FUN_004dbb24(&DAT_00524e20,s_OneOfSeveralInt__Missing_image__005187a3,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,&DAT_00516588,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,&DAT_005187c3,(char *)0x0); - } - return puVar3 != (undefined4 *)0x0; -} - - - -/* @004c5148 file=? name=FUN_004c5148 */ - -int * __cdecl -FUN_004c5148(int *param_1,undefined4 param_2,undefined4 param_3,int param_4,undefined4 param_5, - int param_6,undefined4 param_7,undefined4 param_8,char *param_9,undefined4 param_10, - undefined4 param_11,int param_12,int param_13,undefined4 param_14,undefined4 param_15) - -{ - undefined4 *puVar1; - - FUN_004c4d88(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8,1,param_9,param_10, - param_11,param_12,param_13,param_15); - *param_1 = (int)&PTR_FUN_00518bac; - param_1[0x2b] = 0; - puVar1 = (undefined4 *)FUN_00402298(0x18); - if (puVar1 == (undefined4 *)0x0) { - puVar1 = (undefined4 *)0x0; - } - else { - puVar1 = FUN_004749de(puVar1,0,param_1 + 0x2b,param_14); - } - (**(code **)(*param_1 + 0x34))(param_1,puVar1); - return param_1; -} - - - -/* @004c51d8 file=? name=FUN_004c51d8 */ - -void __cdecl FUN_004c51d8(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_00518bac; - FUN_004c4e7c(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @004c5204 file=? name=FUN_004c5204 */ - -bool __cdecl -FUN_004c5204(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,int param_5) - -{ - int iVar1; - int *piVar2; - - piVar2 = (int *)FUN_00402298(0xb4); - if (piVar2 != (int *)0x0) { - FUN_004c52d8(piVar2,DAT_00516948,DAT_0051698c,param_5,0,param_1,param_2,param_3,&DAT_005169d0, - DAT_00516a14,DAT_00516a58,DAT_00516a9c,s_OneOfSeveralPixInt_00518521); - } - iVar1 = *(int *)(param_5 + 0x4c); - piVar2 = FUN_00442d2b(iVar1 + 0x20,&DAT_005169d0,0); - if (piVar2 != (int *)0x0) { - FUN_00442e51(iVar1 + 0x20,&DAT_005169d0); - } - else { - FUN_004dbb24(&DAT_00524e20,s_OneOfSeveralPixInt__Missing_imag_005187d9,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,&DAT_005169d0,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,&DAT_005187fc,(char *)0x0); - } - return piVar2 != (int *)0x0; -} - - - -/* @004c52d8 file=? name=FUN_004c52d8 */ - -int * __cdecl -FUN_004c52d8(int *param_1,undefined4 param_2,undefined4 param_3,int param_4,undefined4 param_5, - int param_6,undefined4 param_7,undefined4 param_8,char *param_9,int param_10, - int param_11,undefined4 param_12,undefined4 param_13) - -{ - undefined4 *puVar1; - - FUN_004c4d88(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8,0,param_9,0,0, - param_10,param_11,param_13); - *param_1 = (int)&PTR_FUN_00518b68; - param_1[0x2b] = 0; - puVar1 = (undefined4 *)FUN_00402298(0x18); - if (puVar1 == (undefined4 *)0x0) { - puVar1 = (undefined4 *)0x0; - } - else { - puVar1 = FUN_004749de(puVar1,0,param_1 + 0x2b,param_12); - } - (**(code **)(*param_1 + 0x34))(param_1,puVar1); - return param_1; -} - - - -/* @004c5364 file=? name=FUN_004c5364 */ - -void __cdecl FUN_004c5364(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_00518b68; - FUN_004c4e7c(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @004c5390 file=? name=FUN_004c5390 */ - -bool __cdecl -FUN_004c5390(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,int param_5) - -{ - int iVar1; - int *piVar2; - undefined4 *puVar3; - - piVar2 = (int *)FUN_00402298(0xb4); - if (piVar2 != (int *)0x0) { - FUN_004c5470(piVar2,DAT_00516d90,DAT_00516dd4,param_5,0,param_1,param_2,param_3,&DAT_00516e18, - DAT_00516e5c,DAT_00516ea0,DAT_00516ee4,DAT_00516f28,DAT_00516f6c, - s_OneOfSeveralStates_00518534); - } - iVar1 = *(int *)(param_5 + 0x4c); - puVar3 = FUN_00442aec(iVar1 + 4,&DAT_00516e18,0); - if (puVar3 != (undefined4 *)0x0) { - FUN_00442c12(iVar1 + 4,&DAT_00516e18); - } - else { - FUN_004dbb24(&DAT_00524e20,s_OneOfSeveralStates__Missing_imag_00518812,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,&DAT_00516e18,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,&DAT_00518835,(char *)0x0); - } - return puVar3 != (undefined4 *)0x0; -} - - - -/* @004c5470 file=? name=FUN_004c5470 */ - -int * __cdecl -FUN_004c5470(int *param_1,undefined4 param_2,undefined4 param_3,int param_4,undefined4 param_5, - int param_6,undefined4 param_7,undefined4 param_8,char *param_9,undefined4 param_10, - undefined4 param_11,int param_12,int param_13,undefined4 param_14,undefined4 param_15) - -{ - undefined4 *puVar1; - - FUN_004c4d88(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8,1,param_9,param_10, - param_11,param_12,param_13,param_15); - *param_1 = (int)&PTR_FUN_00518b24; - param_1[0x2b] = 0; - puVar1 = (undefined4 *)FUN_00402298(0x18); - if (puVar1 == (undefined4 *)0x0) { - puVar1 = (undefined4 *)0x0; - } - else { - puVar1 = FUN_004c3324(puVar1,0,param_1 + 0x2b,param_14); - } - (**(code **)(*param_1 + 0x34))(param_1,puVar1); - return param_1; -} - - - -/* @004c5500 file=? name=FUN_004c5500 */ - -void __cdecl FUN_004c5500(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_00518b24; - FUN_004c4e7c(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @004c552c file=? name=FUN_004c552c */ - -void __cdecl FUN_004c552c(int param_1) - -{ - if (*(int *)(param_1 + 0xac) < 0) { - *(undefined4 *)(param_1 + 0xac) = 0; - } - FUN_004c4f28(param_1); - return; -} - - - -/* @004c554c file=? name=FUN_004c554c */ - -bool __cdecl -FUN_004c554c(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,int param_5) - -{ - int iVar1; - undefined4 *puVar2; - - puVar2 = (undefined4 *)FUN_00402298(0xc0); - if (puVar2 != (undefined4 *)0x0) { - FUN_004c562c(puVar2,DAT_005171d8,DAT_0051721c,param_5,0,param_1,param_2,param_3,DAT_00517260, - DAT_005172a4,DAT_005172e8,DAT_0051732c,DAT_00517370,&DAT_005173b4, - s_HeadingPointer_00518547); - } - iVar1 = *(int *)(param_5 + 0x4c); - puVar2 = FUN_00442aec(iVar1 + 4,&DAT_005173b4,0); - if (puVar2 != (undefined4 *)0x0) { - FUN_00442c12(iVar1 + 4,&DAT_005173b4); - } - else { - FUN_004dbb24(&DAT_00524e20,s_HeadingPointer__Missing_font__00518847,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,&DAT_005173b4,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,&DAT_00518865,(char *)0x0); - } - return puVar2 != (undefined4 *)0x0; -} - - - -/* @004c562c file=? name=FUN_004c562c */ - -undefined4 * __cdecl -FUN_004c562c(undefined4 *param_1,undefined4 param_2,undefined4 param_3,int param_4, - undefined4 param_5,int param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9, - int param_10,int param_11,undefined4 param_12,undefined4 param_13,char *param_14, - undefined4 param_15) - -{ - int iVar1; - uint uVar2; - undefined4 uVar3; - undefined4 *puVar4; - int iVar5; - int *piVar6; - int iVar7; - - FUN_00444818(param_1,param_2,param_3,param_4,param_5,param_6,param_15); - *param_1 = &PTR_FUN_00518ae0; - FUN_0044a5b4(param_1 + 0x29); - (**(code **)(param_1[0x12] + 0x10))(param_1 + 0x12,param_7,param_8); - param_1[0x24] = param_9; - param_1[0x25] = param_11; - param_1[0x26] = param_12; - param_1[0x27] = param_13; - uVar3 = FUN_004700ac(param_14); - param_1[0x28] = uVar3; - iVar1 = *(int *)(param_1[7] + 0x4c); - puVar4 = FUN_00442aec(iVar1 + 4,param_14,0); - uVar2 = ((int)puVar4[3] / 0xe) * 3; - iVar5 = (int)uVar2 >> 1; - if (iVar5 < 0) { - iVar5 = iVar5 + (uint)((uVar2 & 1) != 0); - } - iVar7 = (int)puVar4[4] >> 1; - if (iVar7 < 0) { - iVar7 = iVar7 + (uint)((puVar4[4] & 1) != 0); - } - piVar6 = (int *)FUN_00402298(0x44); - if (piVar6 == (int *)0x0) { - piVar6 = (int *)0x0; - } - else { - piVar6 = FUN_004700bc(piVar6,iVar1,-iVar5,-iVar7,param_14,3,0,param_11,param_10); - } - param_1[0x2f] = piVar6; - return param_1; -} - - - -/* @004c573c file=? name=FUN_004c573c */ - -void __cdecl FUN_004c573c(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_00518ae0; - FUN_00442c12(*(int *)(param_1[7] + 0x4c) + 4,(char *)param_1[0x28]); - FUN_004022e8((int *)param_1[0x28]); - param_1[0x28] = 0; - FUN_0047018c((int *)param_1[0x2f],3); - param_1[0x2f] = 0; - FUN_0044a5dc(param_1 + 0x29,2); - FUN_00444870(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @004c57c0 file=? name=FUN_004c57c0 */ - -void FUN_004c57c0(void) - -{ - FUN_004448ac(); - return; -} - - - -/* @004c57d0 file=? name=FUN_004c57d0 */ - -void __cdecl FUN_004c57d0(int param_1,char *param_2) - -{ - char cVar1; - int *piVar2; - uint uVar3; - uint uVar4; - char *pcVar5; - char *pcVar6; - char local_54 [80]; - - FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s_HeadingPointer__00518868,(char *)0x0); - uVar3 = 0xffffffff; - do { - pcVar5 = param_2; - if (uVar3 == 0) break; - uVar3 = uVar3 - 1; - pcVar5 = param_2 + 1; - cVar1 = *param_2; - param_2 = pcVar5; - } while (cVar1 != '\0'); - uVar3 = ~uVar3; - pcVar5 = pcVar5 + -uVar3; - pcVar6 = local_54; - for (uVar4 = uVar3 >> 2; uVar4 != 0; uVar4 = uVar4 - 1) { - *(undefined4 *)pcVar6 = *(undefined4 *)pcVar5; - pcVar5 = pcVar5 + 4; - pcVar6 = pcVar6 + 4; - } - for (uVar3 = uVar3 & 3; uVar3 != 0; uVar3 = uVar3 - 1) { - *pcVar6 = *pcVar5; - pcVar5 = pcVar5 + 1; - pcVar6 = pcVar6 + 1; - } - FUN_004d49b8(local_54,&DAT_00518879); - uVar3 = *(uint *)(param_1 + 0x94); - FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s_bgColor__0051887d,(char *)0x0); - piVar2 = FUN_004db78c(&DAT_00524e20,uVar3); - FUN_004dbb24(piVar2,&DAT_00518886,(char *)0x0); - uVar3 = *(uint *)(param_1 + 0x90); - FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,s_fgColor__00518888,(char *)0x0); - piVar2 = FUN_004db78c(&DAT_00524e20,uVar3); - FUN_004dbb24(piVar2,&DAT_00518891,(char *)0x0); - FUN_004448bc(param_1,local_54); - return; -} - - - -/* @004c58e8 file=? name=FUN_004c58e8 */ - -void __cdecl FUN_004c58e8(int param_1) - -{ - *(undefined4 *)(param_1 + 0xb4) = 0xfffffc19; - *(undefined4 *)(param_1 + 0xb8) = 0xfffffc19; - FUN_004703f4(*(int *)(param_1 + 0xbc)); - return; -} - - - -/* @004c5914 file=? name=FUN_004c5914 */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -void FUN_004c5914(int param_1) - -{ - int *piVar1; - int iVar2; - float afStack_30 [3]; - int iStack_24; - int iStack_20; - undefined4 uStack_1c; - undefined4 uStack_18; - float fStack_14; - float fStack_10; - float afStack_c [2]; - - iVar2 = FUN_00417ab4(*(int *)(param_1 + 0x1c) + 0x40); - if (iVar2 != 0) { - FUN_0040954c(afStack_30,(float *)(iVar2 + 0x10c)); - fStack_14 = -afStack_30[0]; - fStack_10 = fStack_14; - FUN_00408328(afStack_c,&fStack_14); - uStack_1c = FUN_004dcd94(); - uStack_18 = FUN_004dcd94(); - iStack_24 = FUN_004dcd94(); - iStack_20 = FUN_004dcd94(); - if ((iStack_24 != *(int *)(param_1 + 0xb4)) || (iStack_20 != *(int *)(param_1 + 0xb8))) { - *(int *)(param_1 + 0xb4) = iStack_24; - iVar2 = param_1 + 0x48; - piVar1 = (int *)(param_1 + 0xa4); - *(int *)(param_1 + 0xb8) = iStack_20; - FUN_0044a650(piVar1,iVar2,*(uint *)(param_1 + 0x94)); - FUN_0044a630((int)piVar1); - (**(code **)(*(int *)(param_1 + 0x48) + 100))(iVar2,piVar1); - (**(code **)(*(int *)(param_1 + 0x48) + 0x18))(iVar2,*(undefined4 *)(param_1 + 0x90)); - (**(code **)(*(int *)(param_1 + 0x48) + 0x24))(iVar2,uStack_1c,uStack_18); - (**(code **)(*(int *)(param_1 + 0x48) + 0x38))(iVar2,iStack_24,iStack_20); - (**(code **)(*(int *)(param_1 + 0x48) + 0x68))(iVar2); - } - iVar2 = FUN_004dcd94(); - if ((float)iVar2 < _DAT_004c5acc) { - FUN_004dcd94(); - } - iVar2 = FUN_004dcd94(); - FUN_00470430(*(int **)(param_1 + 0xbc),(int *)(param_1 + 0x48),(float)iVar2); - } - return; -} - - - -/* @004c591a file=? name=FUN_004c591a */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -void FUN_004c591a(void) - -{ - int *piVar1; - int iVar2; - int iVar3; - undefined4 uVar4; - int unaff_EBP; - - iVar2 = *(int *)(unaff_EBP + 8); - iVar3 = FUN_00417ab4(*(int *)(iVar2 + 0x1c) + 0x40); - if (iVar3 != 0) { - FUN_0040954c((float *)(unaff_EBP + -0x2c),(float *)(iVar3 + 0x10c)); - *(float *)(unaff_EBP + -0xc) = -*(float *)(unaff_EBP + -0x2c); - *(undefined4 *)(unaff_EBP + -0x10) = *(undefined4 *)(unaff_EBP + -0xc); - FUN_00408328((float *)(unaff_EBP + -8),(float *)(unaff_EBP + -0x10)); - uVar4 = FUN_004dcd94(); - *(undefined4 *)(unaff_EBP + -0x18) = uVar4; - uVar4 = FUN_004dcd94(); - *(undefined4 *)(unaff_EBP + -0x14) = uVar4; - uVar4 = FUN_004dcd94(); - *(undefined4 *)(unaff_EBP + -0x20) = uVar4; - uVar4 = FUN_004dcd94(); - *(undefined4 *)(unaff_EBP + -0x1c) = uVar4; - if ((*(int *)(unaff_EBP + -0x20) != *(int *)(iVar2 + 0xb4)) || - (*(int *)(unaff_EBP + -0x1c) != *(int *)(iVar2 + 0xb8))) { - *(int *)(iVar2 + 0xb4) = *(int *)(unaff_EBP + -0x20); - iVar3 = iVar2 + 0x48; - piVar1 = (int *)(iVar2 + 0xa4); - *(undefined4 *)(iVar2 + 0xb8) = *(undefined4 *)(unaff_EBP + -0x1c); - FUN_0044a650(piVar1,iVar3,*(uint *)(iVar2 + 0x94)); - FUN_0044a630((int)piVar1); - (**(code **)(*(int *)(iVar2 + 0x48) + 100))(iVar3,piVar1); - (**(code **)(*(int *)(iVar2 + 0x48) + 0x18))(iVar3,*(undefined4 *)(iVar2 + 0x90)); - (**(code **)(*(int *)(iVar2 + 0x48) + 0x24)) - (iVar3,*(undefined4 *)(unaff_EBP + -0x18),*(undefined4 *)(unaff_EBP + -0x14)); - (**(code **)(*(int *)(iVar2 + 0x48) + 0x38)) - (iVar3,*(undefined4 *)(unaff_EBP + -0x20),*(undefined4 *)(unaff_EBP + -0x1c)); - (**(code **)(*(int *)(iVar2 + 0x48) + 0x68))(iVar3); - } - uVar4 = FUN_004dcd94(); - *(undefined4 *)(unaff_EBP + -0x30) = uVar4; - if ((float)*(int *)(unaff_EBP + -0x30) < _DAT_004c5acc) { - *(undefined4 *)(unaff_EBP + -0x34) = uVar4; - uVar4 = FUN_004dcd94(); - } - *(undefined4 *)(unaff_EBP + -0x30) = uVar4; - uVar4 = FUN_004dcd94(); - *(undefined4 *)(unaff_EBP + -0x34) = uVar4; - FUN_00470430(*(int **)(iVar2 + 0xbc),(int *)(iVar2 + 0x48),(float)*(int *)(unaff_EBP + -0x34)); - } - return; -} - - - -/* @004c5b7c file=? name=FUN_004c5b7c */ - -int * __cdecl -FUN_004c5b7c(int *param_1,undefined4 param_2,undefined4 param_3,int param_4,undefined4 param_5, - int param_6,undefined4 param_7,undefined4 param_8,char *param_9,int param_10, - int param_11,int param_12,int param_13,undefined4 param_14,undefined4 param_15) - -{ - int iVar1; - undefined4 *puVar2; - - FUN_00444818(param_1,param_2,param_3,param_4,param_5,param_6,param_15); - *param_1 = (int)&PTR_FUN_00518a9c; - (**(code **)(param_1[0x12] + 0x10))(param_1 + 0x12,param_7,param_8); - iVar1 = FUN_004700ac(param_9); - param_1[0x24] = iVar1; - param_1[0x25] = param_10; - param_1[0x26] = param_11; - param_1[0x28] = param_12; - param_1[0x27] = param_12 * 2; - param_1[0x2c] = param_13; - puVar2 = FUN_00442aec(*(int *)(param_4 + 0x4c) + 4,(char *)param_1[0x24],0); - if (puVar2 == (undefined4 *)0x0) { - param_1[0x2a] = 0; - param_1[0x29] = 0; - } - else { - param_1[0x2a] = (int)puVar2[3] / 3; - param_1[0x29] = puVar2[4]; - } - puVar2 = (undefined4 *)FUN_00402298(0x18); - if (puVar2 == (undefined4 *)0x0) { - puVar2 = (undefined4 *)0x0; - } - else { - puVar2 = FUN_00474855(puVar2,0,param_1 + 0x2d,param_14); - } - (**(code **)(*param_1 + 0x34))(param_1,puVar2); - return param_1; -} - - - -/* @004c5c80 file=? name=FUN_004c5c80 */ - -void __cdecl FUN_004c5c80(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_00518a9c; - FUN_00442c12(*(int *)(param_1[7] + 0x4c) + 4,(char *)param_1[0x24]); - FUN_004022e8((int *)param_1[0x24]); - param_1[0x24] = 0; - FUN_00444870(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @004c5cdc file=? name=FUN_004c5cdc */ - -void FUN_004c5cdc(void) - -{ - FUN_004448ac(); - return; -} - - - -/* @004c5cec file=? name=FUN_004c5cec */ - -void FUN_004c5cec(void) - -{ - return; -} - - - -/* @004c5cf4 file=? name=FUN_004c5cf4 */ - -void __cdecl FUN_004c5cf4(int param_1) - -{ - *(undefined4 *)(param_1 + 0xac) = 0xffffffff; - return; -} - - - -/* @004c5d08 file=? name=FUN_004c5d08 */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -void __cdecl FUN_004c5d08(int param_1) - -{ - int iVar1; - int iVar2; - int iVar3; - undefined4 *puVar4; - int iVar5; - int iVar6; - - iVar1 = *(int *)(param_1 + 0x9c); - iVar3 = FUN_004dcd94(); - if (iVar3 < 0) { - iVar3 = 0; - } - if (iVar1 < iVar3) { - iVar3 = iVar1; - } - if ((_DAT_0050e3d8 < *(float *)(param_1 + 0xb4)) && (iVar3 < 1)) { - iVar3 = 1; - } - if (iVar3 != *(int *)(param_1 + 0xac)) { - *(int *)(param_1 + 0xac) = iVar3; - iVar1 = *(int *)(*(int *)(param_1 + 0x1c) + 0x4c); - puVar4 = FUN_00442aec(iVar1 + 4,*(char **)(param_1 + 0x90),0); - if (puVar4 != (undefined4 *)0x0) { - iVar6 = -*(int *)(param_1 + 0xa4); - for (iVar2 = *(int *)(param_1 + 0xa0); 0 < iVar2; iVar2 = iVar2 + -1) { - iVar5 = param_1 + 0x48; - (**(code **)(*(int *)(param_1 + 0x48) + 0x24))(iVar5,0,iVar6); - if (iVar3 < 1) { - (**(code **)(*(int *)(param_1 + 0x48) + 0x18))(iVar5,*(undefined4 *)(param_1 + 0x94)); - iVar5 = 0; - } - else if (iVar3 == 1) { - (**(code **)(*(int *)(param_1 + 0x48) + 0x18))(iVar5,*(undefined4 *)(param_1 + 0x98)); - iVar5 = *(int *)(param_1 + 0xa8); - } - else { - (**(code **)(*(int *)(param_1 + 0x48) + 0x18))(iVar5,*(undefined4 *)(param_1 + 0x98)); - iVar5 = *(int *)(param_1 + 0xa8) * 2; - } - (**(code **)(*(int *)(param_1 + 0x48) + 0x54)) - (param_1 + 0x48,0,puVar4,iVar5,0,*(int *)(param_1 + 0xa8) + iVar5, - *(undefined4 *)(param_1 + 0xa4)); - iVar3 = iVar3 + -2; - iVar6 = iVar6 - *(int *)(param_1 + 0xa4); - } - } - FUN_00442c12(iVar1 + 4,*(char **)(param_1 + 0x90)); - } - return; -} - - - -/* @004c5e84 file=? name=FUN_004c5e84 */ - -undefined4 * __cdecl -FUN_004c5e84(undefined4 *param_1,undefined4 param_2,undefined4 param_3,int param_4, - undefined4 param_5,int param_6,undefined4 param_7,undefined4 param_8,char *param_9, - undefined4 param_10,undefined4 param_11,undefined4 param_12) - -{ - undefined4 uVar1; - undefined4 *puVar2; - - FUN_00444818(param_1,param_2,param_3,param_4,param_5,param_6,param_12); - *param_1 = &PTR_FUN_00518a58; - (**(code **)(param_1[0x12] + 0x10))(param_1 + 0x12,param_7,param_8); - uVar1 = FUN_004700ac(param_9); - param_1[0x24] = uVar1; - param_1[0x25] = param_10; - param_1[0x26] = param_11; - puVar2 = FUN_00442aec(*(int *)(param_4 + 0x4c) + 4,(char *)param_1[0x24],0); - if (puVar2 == (undefined4 *)0x0) { - param_1[0x27] = 0; - param_1[0x28] = 0; - } - else { - param_1[0x27] = puVar2[3]; - param_1[0x28] = puVar2[4]; - } - return param_1; -} - - - diff --git a/reference/decomp/all/part_014.c b/reference/decomp/all/part_014.c index 5451230..f6f0113 100644 --- a/reference/decomp/all/part_014.c +++ b/reference/decomp/all/part_014.c @@ -1,3 +1,4124 @@ +/* @004c14b0 file=? name=FUN_004c14b0 */ + +void __cdecl FUN_004c14b0(int param_1) + +{ + FUN_0041a1a4(**(int **)(param_1 + 0xc),0x513414); + return; +} + + + +/* @004c1548 file=? name=FUN_004c1548 */ + +undefined4 * __cdecl FUN_004c1548(undefined4 *param_1) + +{ + FUN_00433220(param_1); + *param_1 = &PTR_FUN_00513588; + return param_1; +} + + + +/* @004c1564 file=? name=FUN_004c1564 */ + +void __cdecl FUN_004c1564(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_00513588; + FUN_0043324c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004c1590 file=? name=FUN_004c1590 */ + +undefined * __cdecl FUN_004c1590(undefined4 param_1,int param_2) + +{ + undefined *puVar1; + + if (param_2 < 0xbd2) { + if (param_2 == 0xbd1) { + return &DAT_005129b0; + } + if (param_2 == 0xbb9) { + return &DAT_0050bde4; + } + if (param_2 == 0xbba) { + return &DAT_00512d48; + } + } + else { + if (param_2 == 0xbd9) { + return &DAT_00513380; + } + if (param_2 == 0xbda) { + return &DAT_00512fc4; + } + } + puVar1 = FUN_004332fc(param_1,param_2); + return puVar1; +} + + + +/* @004c15f0 file=? name=FUN_004c15f0 */ + +undefined4 * __cdecl FUN_004c15f0(undefined4 param_1,int param_2) + +{ + char *pcVar1; + int *piVar2; + char cVar3; + undefined4 uVar4; + char *pcVar5; + undefined4 *puVar6; + uint uVar7; + uint uVar8; + char *pcVar9; + bool bVar10; + undefined4 local_12c; + undefined4 local_128; + undefined4 local_124; + undefined4 local_120 [2]; + undefined4 local_118; + undefined4 local_114; + undefined4 local_110; + undefined4 local_10c [2]; + undefined4 local_104; + undefined4 local_100; + undefined4 local_fc; + undefined4 local_f8; + undefined4 local_f4; + undefined4 local_f0; + undefined4 local_ec; + undefined4 local_e8; + undefined4 local_e4; + undefined4 local_e0; + undefined4 local_dc; + undefined4 local_d8; + undefined4 local_d4; + undefined4 local_d0 [2]; + undefined4 local_c8; + undefined4 local_c4; + undefined4 local_c0; + undefined4 local_bc [2]; + undefined4 local_b4; + undefined4 local_b0; + undefined4 local_ac; + undefined4 local_a8; + undefined4 local_a4; + undefined4 local_a0; + undefined4 local_9c; + undefined4 local_98; + undefined4 local_94; + undefined4 local_90; + char local_8c [64]; + char local_4c [64]; + int *local_c; + int *local_8; + + pcVar9 = s_camera_00513549; + pcVar5 = *(char **)(param_2 + 0x2c); + do { + bVar10 = *pcVar5 == *pcVar9; + if (!bVar10) break; + if (*pcVar5 == '\0') goto LAB_004c17c9; + pcVar1 = pcVar5 + 1; + bVar10 = *pcVar1 == pcVar9[1]; + if (!bVar10) break; + pcVar5 = pcVar5 + 2; + pcVar9 = pcVar9 + 2; + bVar10 = *pcVar1 == '\0'; + } while (!bVar10); + if (bVar10) { +LAB_004c17c9: + uVar4 = *(undefined4 *)(param_2 + 0x4c); + local_12c = 0x50; + local_128 = 3; + local_124 = 1; + FUN_00420ea4(local_120,(undefined4 *)&DAT_00522524); + local_118 = 0; + local_114 = 0; + local_110 = 0x46; + FUN_00420ea4(local_10c,(undefined4 *)&DAT_00522524); + local_104 = 0xffffffff; + local_100 = 0x9100; + local_fc = DAT_004e0fec; + local_f8 = DAT_004e0ff0; + local_f4 = DAT_004e0ff4; + local_f0 = DAT_004e0ff8; + local_ec = DAT_004e0ffc; + local_e8 = DAT_004e1000; + local_e4 = DAT_004e1004; + local_e0 = uVar4; + puVar6 = (undefined4 *)FUN_00402298(0x238); + if (puVar6 == (undefined4 *)0x0) { + puVar6 = (undefined4 *)0x0; + } + else { + puVar6 = FUN_004c1408(puVar6,(int)&local_12c,&DAT_00513444); + } + } + else { + local_8 = *(int **)(param_2 + 0xec); + local_8[3] = local_8[3] + 1; + local_c = *(int **)(param_2 + 0xe8); + local_c[3] = local_c[3] + 1; + uVar4 = *(undefined4 *)(param_2 + 0x4c); + local_dc = 0xd0; + local_d8 = 3; + local_d4 = 1; + FUN_00420ea4(local_d0,(undefined4 *)&DAT_00522524); + local_c8 = 0; + local_c4 = 0; + local_c0 = 0xbda; + FUN_00420ea4(local_bc,(undefined4 *)&DAT_00522524); + local_b4 = 0xffffffff; + local_b0 = 0x5100; + local_ac = DAT_004e0fec; + local_a8 = DAT_004e0ff0; + local_a4 = DAT_004e0ff4; + local_a0 = DAT_004e0ff8; + local_9c = DAT_004e0ffc; + local_98 = DAT_004e1000; + local_94 = DAT_004e1004; + uVar7 = 0xffffffff; + pcVar5 = (char *)local_8[2]; + do { + pcVar9 = pcVar5; + if (uVar7 == 0) break; + uVar7 = uVar7 - 1; + pcVar9 = pcVar5 + 1; + cVar3 = *pcVar5; + pcVar5 = pcVar9; + } while (cVar3 != '\0'); + uVar7 = ~uVar7; + pcVar5 = pcVar9 + -uVar7; + pcVar9 = local_8c; + for (uVar8 = uVar7 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) { + *(undefined4 *)pcVar9 = *(undefined4 *)pcVar5; + pcVar5 = pcVar5 + 4; + pcVar9 = pcVar9 + 4; + } + for (uVar7 = uVar7 & 3; uVar7 != 0; uVar7 = uVar7 - 1) { + *pcVar9 = *pcVar5; + pcVar5 = pcVar5 + 1; + pcVar9 = pcVar9 + 1; + } + uVar7 = 0xffffffff; + pcVar5 = (char *)local_c[2]; + do { + pcVar9 = pcVar5; + if (uVar7 == 0) break; + uVar7 = uVar7 - 1; + pcVar9 = pcVar5 + 1; + cVar3 = *pcVar5; + pcVar5 = pcVar9; + } while (cVar3 != '\0'); + uVar7 = ~uVar7; + pcVar5 = pcVar9 + -uVar7; + pcVar9 = local_4c; + for (uVar8 = uVar7 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) { + *(undefined4 *)pcVar9 = *(undefined4 *)pcVar5; + pcVar5 = pcVar5 + 4; + pcVar9 = pcVar9 + 4; + } + for (uVar7 = uVar7 & 3; uVar7 != 0; uVar7 = uVar7 - 1) { + *pcVar9 = *pcVar5; + pcVar5 = pcVar5 + 1; + pcVar9 = pcVar9 + 1; + } + piVar2 = local_c + 3; + *piVar2 = *piVar2 + -1; + local_90 = uVar4; + if (*piVar2 == 0) { + FUN_004024d8(local_c,3); + } + piVar2 = local_8 + 3; + *piVar2 = *piVar2 + -1; + if (*piVar2 == 0) { + FUN_004024d8(local_8,3); + } + puVar6 = (undefined4 *)FUN_00402298(0x294); + if (puVar6 == (undefined4 *)0x0) { + puVar6 = (undefined4 *)0x0; + } + else { + puVar6 = FUN_004c0bc8(puVar6,(int)&local_dc,&DAT_00512fc4); + } + } + return puVar6; +} + + + +/* @004c18cc file=? name=FUN_004c18cc */ + +void __cdecl FUN_004c18cc(undefined4 *param_1,undefined4 param_2,undefined4 param_3) + +{ + *param_1 = 0x14; + param_1[1] = 8; + param_1[2] = 1; + param_1[3] = param_2; + param_1[4] = param_3; + return; +} + + + +/* @004c18f4 file=? name=FUN_004c18f4 */ + +void __cdecl FUN_004c18f4(undefined4 *param_1,undefined4 param_2,undefined4 param_3) + +{ + *param_1 = 0x14; + param_1[1] = 9; + param_1[2] = 1; + param_1[3] = param_2; + param_1[4] = param_3; + return; +} + + + +/* @004c191c file=? name=FUN_004c191c */ + +void __cdecl FUN_004c191c(undefined4 *param_1,undefined4 param_2,undefined4 param_3) + +{ + *param_1 = 0x14; + param_1[1] = 0xd; + param_1[2] = 1; + param_1[3] = param_2; + param_1[4] = param_3; + return; +} + + + +/* @004c1944 file=? name=FUN_004c1944 */ + +void __cdecl +FUN_004c1944(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4, + undefined4 param_5,undefined4 param_6,undefined4 param_7,undefined4 param_8) + +{ + *param_1 = 0x28; + param_1[1] = 10; + param_1[2] = 1; + param_1[3] = param_2; + param_1[4] = param_3; + param_1[5] = param_4; + param_1[6] = param_7; + param_1[7] = param_5; + param_1[8] = param_6; + param_1[9] = param_8; + return; +} + + + +/* @004c198c file=? name=FUN_004c198c */ + +void __cdecl FUN_004c198c(undefined4 *param_1,undefined4 param_2) + +{ + *param_1 = 0x10; + param_1[1] = 0xf; + param_1[2] = 1; + param_1[3] = param_2; + return; +} + + + +/* @004c19b0 file=? name=FUN_004c19b0 */ + +undefined4 __cdecl FUN_004c19b0(undefined4 param_1,char *param_2,undefined4 *param_3) + +{ + int iVar1; + undefined4 uVar2; + undefined **ppuVar3; + + ppuVar3 = &PTR_s_ModeMFD1Quad_005135e8; + while( true ) { + if (*ppuVar3 == (char *)0x0) { + uVar2 = FUN_0044c310(param_1,param_2,param_3); + return uVar2; + } + iVar1 = FUN_004d4b58(param_2,*ppuVar3); + if (iVar1 == 0) break; + ppuVar3 = ppuVar3 + 2; + } + *param_3 = ppuVar3[1]; + return 1; +} + + + +/* @004c19fc file=? name=FUN_004c19fc */ + +void __cdecl FUN_004c19fc(float *param_1,int param_2,float *param_3,int param_4,int param_5) + +{ + float fVar1; + undefined4 local_c; + int local_8; + + if (param_2 == param_4) { + param_1[6] = 0.0; + } + else { + if (*(int *)(param_2 + 400) == 0) { + param_1[6] = 0.0; + } + else { + local_8 = *(int *)(DAT_004efc94 + 200); + local_c = *(undefined4 *)(*(int *)(param_2 + 400) + 0x1e0); + fVar1 = (float)(**(code **)(*(int *)(local_8 + 0x80) + 0xc))(local_8 + 0x80,&local_c); + param_1[6] = fVar1; + } + FUN_00408b98(param_1,(float *)(param_2 + 0x100),param_3); + fVar1 = (float)FUN_004c2f88(); + param_1[7] = fVar1; + param_1[8] = (float)(uint)(param_2 == param_5); + param_1[3] = -1.0; + param_1[4] = 0.0; + param_1[5] = 0.0; + } + return; +} + + + +/* @004c1ab0 file=? name=FUN_004c1ab0 */ + +void __cdecl FUN_004c1ab0(int param_1,int *param_2,undefined4 param_3) + +{ + int iVar1; + undefined4 uVar2; + undefined4 uVar3; + + if (*(int *)(param_1 + 0x18) != 0) { + uVar2 = FUN_004dcd94(); + uVar3 = FUN_004dcd94(); + (**(code **)(*param_2 + 0x24))(param_2,uVar2,uVar3); + if (*(int *)(param_1 + 0x20) == 0) { + (**(code **)(*param_2 + 0x18))(param_2,*(undefined4 *)(param_1 + 0x1c)); + } + else { + (**(code **)(*param_2 + 0x18))(param_2,param_3); + } + iVar1 = *(int *)(param_1 + 0x18); + (**(code **)(*param_2 + 0x54)) + (param_2,0,iVar1,0,0,*(int *)(iVar1 + 0xc) + -1,*(int *)(iVar1 + 0x10) + -1); + } + return; +} + + + +/* @004c1b4c file=? name=FUN_004c1b4c */ + +bool __cdecl FUN_004c1b4c(int param_1,int param_2,int param_3,int param_4,int param_5) + +{ + int iVar1; + int *piVar2; + + iVar1 = FUN_004d4b58(&DAT_005139cc,s_BOTTOM_0051400a); + piVar2 = (int *)FUN_00402298(0x3c8); + if (piVar2 == (int *)0x0) { + piVar2 = (int *)0x0; + } + else { + piVar2 = FUN_004c1c24(piVar2,DAT_00513900,DAT_00513944,param_5,0,param_1,param_2,param_3, + param_2 + DAT_00513988,param_3 + DAT_0051398c,(uint)(iVar1 == 0), + DAT_00513a10,DAT_00513a54,DAT_00513a98,DAT_00513adc,DAT_00513b20,param_4, + DAT_00513b64,DAT_00513ba8,DAT_00513bec,DAT_00513c30,0); + } + return piVar2 != (int *)0x0; +} + + + +/* @004c1c24 file=? name=FUN_004c1c24 */ + +int * __cdecl +FUN_004c1c24(int *param_1,undefined4 param_2,undefined4 param_3,int param_4,undefined4 param_5, + int param_6,int param_7,int param_8,undefined4 param_9,int param_10,int param_11, + int param_12,int param_13,int param_14,int param_15,int param_16,int param_17, + undefined4 param_18,undefined4 param_19,undefined4 param_20,undefined4 param_21, + int param_22) + +{ + int iVar1; + undefined4 *puVar2; + int *piVar3; + + FUN_00444818(param_1,param_2,param_3,param_4,param_5,param_6,s_MapDisplay_00514011); + *param_1 = (int)&PTR_FUN_0051422c; + piVar3 = FUN_004de998(param_1 + 0x24,0x24,0x10,1,FUN_004c2a1d); + FUN_00443474(param_1 + 0xde); + FUN_00443474(param_1 + 0xe5); + FUN_0044a5b4((uint *)(param_1 + 0xec)); + (**(code **)(param_1[0x12] + 8))(param_1 + 0x12,param_7,param_8,piVar3,param_10); + if (param_11 == 1) { + (**(code **)(param_1[0x12] + 0x10))(param_1 + 0x12,(int)piVar3 - param_7 >> 1,0); + } + else { + (**(code **)(param_1[0x12] + 0x10)) + (param_1 + 0x12,(int)piVar3 - param_7 >> 1,param_10 - param_8 >> 1); + } + param_1[0xd6] = param_13; + param_1[0xd7] = param_14; + param_1[0xd8] = param_15; + param_1[0xbc] = param_16; + param_1[0xdc] = param_22; + param_1[0xd9] = (int)piVar3 - param_7 >> 1; + param_1[0xda] = param_10 - param_8 >> 1; + param_1[0xb4] = param_11; + param_1[0xf0] = param_12 >> 1; + iVar1 = FUN_004022b0((param_12 >> 1) << 3); + param_1[0xf1] = iVar1; + param_1[199] = 0; + param_1[200] = 0x3ec90fdb; + param_1[0xdd] = 0; + puVar2 = (undefined4 *)FUN_00402298(0x18); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_00474855(puVar2,0,param_1 + 0xb5,param_18); + } + (**(code **)(*param_1 + 0x34))(param_1,puVar2); + puVar2 = (undefined4 *)FUN_00402298(0x18); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_004c2a3e(puVar2,0,param_1 + 0xb6,param_19); + } + (**(code **)(*param_1 + 0x34))(param_1,puVar2); + puVar2 = (undefined4 *)FUN_00402298(0x18); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_004c2bc0(puVar2,0,param_1 + 0xb7,param_20); + } + (**(code **)(*param_1 + 0x34))(param_1,puVar2); + puVar2 = (undefined4 *)FUN_00402298(0x18); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_00474855(puVar2,0,param_1 + 0xb8,param_21); + } + (**(code **)(*param_1 + 0x34))(param_1,puVar2); + if (*(int *)(param_17 + 4) == 0xbb9) { + iVar1 = FUN_0041f98c(param_17,s_Torso_0051401c); + if (iVar1 != 0) { + puVar2 = (undefined4 *)FUN_00402298(0x18); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_004c2d42(puVar2,0,param_1 + 199,iVar1 + 0x1d8); + } + (**(code **)(*param_1 + 0x34))(param_1,puVar2); + } + } + return param_1; +} + + + +/* @004c1ea8 file=? name=FUN_004c1ea8 */ + +void __cdecl FUN_004c1ea8(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0051422c; + FUN_004022e8((int *)param_1[0xf1]); + FUN_0044a5dc(param_1 + 0xec,2); + FUN_004434a0(param_1 + 0xe5,2); + FUN_004434a0(param_1 + 0xde,2); + FUN_004de8d4(param_1 + 0x24,0x24,0x10,1,FUN_004c2a25); + FUN_00444870(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004c1f30 file=? name=FUN_004c1f30 */ + +void FUN_004c1f30(void) + +{ + FUN_004448ac(); + return; +} + + + +/* @004c1f40 file=? name=FUN_004c1f40 */ + +void __cdecl FUN_004c1f40(int param_1,char *param_2) + +{ + char cVar1; + uint uVar2; + uint uVar3; + char *pcVar4; + char *pcVar5; + char local_54 [80]; + + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_ThreatIndicator__00514022,(char *)0x0); + uVar2 = 0xffffffff; + do { + pcVar4 = param_2; + if (uVar2 == 0) break; + uVar2 = uVar2 - 1; + pcVar4 = param_2 + 1; + cVar1 = *param_2; + param_2 = pcVar4; + } while (cVar1 != '\0'); + uVar2 = ~uVar2; + pcVar4 = pcVar4 + -uVar2; + pcVar5 = local_54; + for (uVar3 = uVar2 >> 2; uVar3 != 0; uVar3 = uVar3 - 1) { + *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4; + pcVar4 = pcVar4 + 4; + pcVar5 = pcVar5 + 4; + } + for (uVar2 = uVar2 & 3; uVar2 != 0; uVar2 = uVar2 - 1) { + *pcVar5 = *pcVar4; + pcVar4 = pcVar4 + 1; + pcVar5 = pcVar5 + 1; + } + FUN_004d49b8(local_54,&DAT_00514034); + FUN_004448bc(param_1,local_54); + return; +} + + + +/* @004c1fc0 file=? name=FUN_004c1fc0 */ + +void __cdecl FUN_004c1fc0(int param_1) + +{ + *(undefined4 *)(param_1 + 0x354) = 0; + return; +} + + + +/* @004c1fd0 file=? name=FUN_004c1fd0 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004c1fd0(int param_1) + +{ + int iVar1; + uint uVar2; + + iVar1 = *(int *)(param_1 + 0x354); + *(int *)(param_1 + 0x354) = *(int *)(param_1 + 0x354) + 1; + if (iVar1 == 0) { + uVar2 = (uint)(_DAT_004c2174 < *(float *)(param_1 + 0x2e0)); + *(uint *)(param_1 + 0x36c) = uVar2; + if (uVar2 != 0) { + *(float *)(param_1 + 0x2f4) = *(float *)(param_1 + 0x2e0) * *(float *)(param_1 + 0x2f0); + *(float *)(param_1 + 0x2f4) = *(float *)(param_1 + 0x2f4) * *(float *)(param_1 + 0x2f4); + FUN_004c2178(param_1); + } + } + else if (iVar1 == 1) { + FUN_004435ac(param_1 + 0x378); + if (*(int *)(param_1 + 0x36c) != 0) { + FUN_00443ba4(*(int *)(param_1 + 0x1c) + 0xb0,param_1 + 0x378,*(float *)(param_1 + 0x2f8), + *(undefined4 *)(param_1 + 0x2fc),*(float *)(param_1 + 0x300), + *(float *)(param_1 + 0x304),*(undefined4 *)(param_1 + 0x308), + *(float *)(param_1 + 0x30c),0); + } + } + else if (iVar1 == 2) { + FUN_004435ac(param_1 + 0x394); + if (*(int *)(param_1 + 0x36c) != 0) { + FUN_0044366c(*(int *)(param_1 + 0x1c) + 0x94,param_1 + 0x394,*(float *)(param_1 + 0x2f8), + *(undefined4 *)(param_1 + 0x2fc),*(float *)(param_1 + 0x300), + *(float *)(param_1 + 0x304),*(undefined4 *)(param_1 + 0x308), + *(float *)(param_1 + 0x30c),0); + } + } + else { + if ((iVar1 == 3) && (FUN_004c2294(param_1), *(int *)(param_1 + 0x36c) != 0)) { + FUN_004c22c4(param_1); + } + *(undefined4 *)(param_1 + 0x354) = 0; + } + return; +} + + + +/* @004c2178 file=bt_l4/btl4rdr.cpp name=FUN_004c2178 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004c2178(int param_1) + +{ + float fVar1; + float fVar2; + int iVar3; + + if (*(float *)(param_1 + 0x2d4) <= _DAT_004c2284) { + FUN_0040385c(s_MapDisplay__CalculateBounds_dete_00514038, + s_d__tesla_bt_bt_l4_BTL4RDR_CPP_00514071,0x224); + *(undefined4 *)(param_1 + 0x2d4) = 0x3f800000; + } + *(float *)(param_1 + 0x2e8) = (float)(*(int *)(param_1 + 0x364) * 2) / *(float *)(param_1 + 0x2d4) + ; + *(float *)(param_1 + 0x2ec) = _DAT_004c2288 / *(float *)(param_1 + 0x2e8); + *(undefined4 *)(param_1 + 0x2e4) = *(undefined4 *)(param_1 + 0x2ec); + fVar1 = (float)*(int *)(param_1 + 0x364) / *(float *)(param_1 + 0x2e8); + fVar2 = (float)*(int *)(param_1 + 0x368) / *(float *)(param_1 + 0x2e8); + iVar3 = FUN_00417ab4(*(int *)(param_1 + 0x1c) + 0x40); + FUN_00408440((undefined4 *)(param_1 + 0x310),(undefined4 *)(iVar3 + 0x100)); + *(float *)(param_1 + 0x2f8) = *(float *)(param_1 + 0x310) - fVar1; + *(float *)(param_1 + 0x304) = *(float *)(param_1 + 0x310) + fVar1; + *(undefined4 *)(param_1 + 0x2fc) = 0xc7000000; + *(undefined4 *)(param_1 + 0x308) = 0x47000000; + *(float *)(param_1 + 0x300) = *(float *)(param_1 + 0x318) - fVar2; + *(float *)(param_1 + 0x30c) = *(float *)(param_1 + 0x318) + fVar2; + return; +} + + + +/* @004c228c file=? name=FUN_004c228c */ + +void FUN_004c228c(void) + +{ + return; +} + + + +/* @004c2294 file=? name=FUN_004c2294 */ + +void __cdecl FUN_004c2294(int param_1) + +{ + FUN_0044a650((int *)(param_1 + 0x3b0),param_1 + 0x48,*(uint *)(param_1 + 0x358)); + FUN_0044a630(param_1 + 0x3b0); + return; +} + + + +/* @004c22c4 file=? name=FUN_004c22c4 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004c22c4(int param_1) + +{ + float *pfVar1; + int iVar2; + float *pfVar3; + float *pfVar4; + float local_b8 [12]; + float local_88 [4]; + float local_78 [3]; + float local_6c [4]; + undefined4 local_5c [3]; + float local_50 [12]; + float local_20; + undefined4 local_1c; + undefined4 local_18; + float local_14; + float local_10; + float local_c; + undefined4 local_8; + + FUN_0040aadc(local_50); + FUN_0040aadc(local_50); + iVar2 = FUN_00417ab4(*(int *)(param_1 + 0x1c) + 0x40); + if ((*(int *)(param_1 + 0x2d8) == 0) && (iVar2 != 0)) { + *(int *)(param_1 + 0x2d8) = iVar2 + 0x100; + } + if (*(undefined4 **)(param_1 + 0x2d8) != (undefined4 *)0x0) { + FUN_00408440(local_5c,*(undefined4 **)(param_1 + 0x2d8)); + FUN_0040b0ac((int)local_50,3,local_5c); + if (*(undefined4 **)(param_1 + 0x2dc) != (undefined4 *)0x0) { + if (*(int *)(param_1 + 0x370) == 0) { + FUN_0040954c(local_78,*(float **)(param_1 + 0x2dc)); + local_14 = local_78[0] * _DAT_004c2480; + local_10 = local_14; + FUN_00408328(&local_c,&local_14); + FUN_00409948(local_88,0,local_c,0,local_8); + FUN_0040adec(local_50,local_88); + } + else { + FUN_00409968(local_6c,*(undefined4 **)(param_1 + 0x2dc)); + FUN_0040adec(local_50,local_6c); + } + } + } + pfVar1 = (float *)(param_1 + 0x324); + FUN_0040b244(pfVar1,local_50); + local_20 = *(float *)(param_1 + 0x2e8); + local_1c = *(undefined4 *)(param_1 + 0x2e8); + local_18 = *(undefined4 *)(param_1 + 0x2e8); + pfVar3 = pfVar1; + pfVar4 = local_b8; + for (iVar2 = 0xc; iVar2 != 0; iVar2 = iVar2 + -1) { + *pfVar4 = *pfVar3; + pfVar3 = pfVar3 + 1; + pfVar4 = pfVar4 + 1; + } + FUN_0040b374(pfVar1,local_b8,&local_20); + FUN_004c228c(); + *(uint *)(param_1 + 0x374) = *(uint *)(param_1 + 0x374) ^ 1; + (**(code **)(*(int *)(param_1 + 0x48) + 100))(param_1 + 0x48,param_1 + 0x3b0); + FUN_004c2484(param_1); + FUN_004c25b4(param_1,pfVar1); + FUN_004c2788(param_1,pfVar1); + FUN_004c28c4(param_1,pfVar1); + (**(code **)(*(int *)(param_1 + 0x48) + 0x68))(param_1 + 0x48); + return; +} + + + +/* @004c2484 file=? name=FUN_004c2484 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004c2484(int param_1) + +{ + int iVar1; + undefined4 uVar2; + undefined4 uVar3; + float local_34; + float local_30; + float local_2c; + float local_28; + float local_24; + float local_20; + float local_1c; + float local_18; + float local_14; + float local_10; + float local_c; + float local_8; + + local_c = *(float *)(param_1 + 0x31c) - *(float *)(param_1 + 800); + iVar1 = param_1 + 0x48; + local_14 = *(float *)(param_1 + 0x31c) + *(float *)(param_1 + 800); + local_10 = local_14; + local_8 = local_c; + (**(code **)(*(int *)(param_1 + 0x48) + 0x18))(iVar1,*(undefined4 *)(param_1 + 0x35c)); + local_2c = -local_8; + local_28 = local_2c; + FUN_00408328(&local_24,&local_2c); + local_18 = local_24 * _DAT_004c25ac; + local_1c = local_20 * _DAT_004c25ac; + (**(code **)(*(int *)(param_1 + 0x48) + 0x24))(iVar1,0,0); + uVar2 = FUN_004dcd94(); + uVar3 = FUN_004dcd94(); + (**(code **)(*(int *)(param_1 + 0x48) + 0x30))(iVar1,uVar3,uVar2); + local_34 = -local_10; + local_30 = local_34; + FUN_00408328(&local_24,&local_34); + local_18 = local_24 * _DAT_004c25ac; + local_1c = local_20 * _DAT_004c25ac; + (**(code **)(*(int *)(param_1 + 0x48) + 0x24))(iVar1,0,0); + uVar2 = FUN_004dcd94(); + uVar3 = FUN_004dcd94(); + (**(code **)(*(int *)(param_1 + 0x48) + 0x30))(iVar1,uVar3,uVar2); + return; +} + + + +/* @004c25b4 file=? name=FUN_004c25b4 */ + +void __cdecl FUN_004c25b4(int param_1,float *param_2) + +{ + int *piVar1; + int iVar2; + undefined4 uVar3; + int iVar4; + float local_80 [3]; + float local_74; + float local_70; + float local_6c; + int local_68 [3]; + float local_5c [15]; + undefined4 local_20; + undefined4 local_1c; + undefined4 local_18; + undefined4 local_14; + undefined4 local_10; + int local_c; + int local_8; + + FUN_0042ac1c(local_68,param_1 + 900); + local_20 = 0; + local_1c = 0; + local_18 = 0; + local_8 = *(int *)(*(int *)(param_1 + 0x1c) + 0x4c); + local_c = *(int *)(DAT_004efc94 + 200); + while( true ) { + iVar4 = (**(code **)(local_68[0] + 0x28))(local_68); + if (iVar4 == 0) break; + FUN_00408644(&local_74,(float *)(param_1 + 0x310),(float *)(iVar4 + 0x100)); + if (local_6c * local_6c + local_70 * local_70 + local_74 * local_74 <= + *(float *)(param_1 + 0x2f4)) { + piVar1 = FUN_004688ce(local_8 + 0x58,*(int *)(iVar4 + 0x1bc),0); + if (piVar1 != (int *)0x0) { + FUN_0040b104(local_5c,(float *)(iVar4 + 0xd0),param_2); + FUN_0046f0c0(piVar1,*(float *)(param_1 + 0x2e4),*(float *)(param_1 + 0x2ec), + (int *)(param_1 + 0x48),*(int *)(param_1 + 0x35c),local_5c,0); + } + iVar2 = FUN_0041a1a4(**(int **)(iVar4 + 0xc),0x4e70c4); + if (iVar2 != 0) { + local_10 = *(undefined4 *)(iVar4 + 0x21c); + iVar2 = (**(code **)(*(int *)(local_c + 0x68) + 0xc))(local_c + 0x68,&local_10); + if (iVar2 != 0) { + FUN_00408b98(local_80,(float *)(iVar4 + 0x100),param_2); + local_14 = FUN_004dcd94(); + uVar3 = FUN_004dcd94(); + (**(code **)(*(int *)(param_1 + 0x48) + 0x24))(param_1 + 0x48,local_14,uVar3); + uVar3 = FUN_004c2f88(); + (**(code **)(*(int *)(param_1 + 0x48) + 0x18))(param_1 + 0x48,uVar3); + (**(code **)(*(int *)(param_1 + 0x48) + 0x54)) + (param_1 + 0x48,0,iVar2,0,0,*(int *)(iVar2 + 0xc) + -1, + *(int *)(iVar2 + 0x10) + -1); + } + } + } + } + FUN_0042ac79(local_68,2); + return; +} + + + +/* @004c2788 file=? name=FUN_004c2788 */ + +void __cdecl FUN_004c2788(int param_1,float *param_2) + +{ + int iVar1; + int iVar2; + int iVar3; + float *pfVar4; + float local_58; + float local_54; + float local_50; + float local_4c [12]; + int local_1c [3]; + int local_10; + int local_c; + int *local_8; + + FUN_0042ac1c(local_1c,param_1 + 0x3a0); + local_c = *(int *)(*(int *)(param_1 + 0x1c) + 0x4c); + iVar1 = FUN_00417ab4(*(int *)(param_1 + 0x1c) + 0x40); + local_10 = 0; + if (iVar1 != 0) { + local_10 = *(int *)(*(int *)(iVar1 + 400) + 0x284); + } + while( true ) { + iVar3 = (**(code **)(local_1c[0] + 0x28))(local_1c); + if (iVar3 == 0) break; + if (iVar1 != iVar3) { + FUN_00408644(&local_58,(float *)(param_1 + 0x310),(float *)(iVar3 + 0x100)); + if (local_50 * local_50 + local_54 * local_54 + local_58 * local_58 <= + *(float *)(param_1 + 0x2f4)) { + local_8 = FUN_004688ce(local_c + 0x58,*(int *)(iVar3 + 0x1bc),0); + if (local_8 != (int *)0x0) { + FUN_0040b104(local_4c,(float *)(iVar3 + 0xd0),param_2); + if (iVar3 == local_10) { + iVar3 = *(int *)(param_1 + 0x360); + } + else { + iVar3 = 0; + } + pfVar4 = local_4c; + iVar2 = FUN_004c2f88(); + FUN_0046f0c0(local_8,*(float *)(param_1 + 0x2e4),*(float *)(param_1 + 0x2ec), + (int *)(param_1 + 0x48),iVar2,pfVar4,iVar3); + } + } + } + } + FUN_0042ac79(local_1c,2); + return; +} + + + +/* @004c28c4 file=bt_l4/btl4rdr.cpp name=FUN_004c28c4 */ + +void __cdecl FUN_004c28c4(int param_1,float *param_2) + +{ + int iVar1; + float *pfVar2; + int iVar3; + undefined4 uVar4; + int local_1c [3]; + int local_10; + int local_c; + int local_8; + + local_8 = FUN_00417ab4(*(int *)(param_1 + 0x1c) + 0x40); + local_c = 0; + if (local_8 != 0) { + local_c = *(int *)(*(int *)(local_8 + 400) + 0x284); + } + FUN_0042ac1c(local_1c,param_1 + 0x3a0); + local_10 = (**(code **)(local_1c[0] + 0x14))(local_1c); + if (local_10 < 1) { + FUN_0042ac79(local_1c,2); + } + else { + if (0x10 < local_10) { + local_10 = 0x10; + } + iVar3 = 0; + pfVar2 = (float *)(param_1 + 0x90); + if (0 < local_10) { + do { + iVar1 = (**(code **)(local_1c[0] + 0x28))(local_1c); + if (iVar1 == 0) { + FUN_0040385c(s_MapDisplay__DrawNames___GetSize__0051408f, + s_d__tesla_bt_bt_l4_BTL4RDR_CPP_005140b7,0x408); + } + FUN_004c19fc(pfVar2,iVar1,param_2,local_8,local_c); + iVar3 = iVar3 + 1; + pfVar2 = pfVar2 + 9; + } while (iVar3 < local_10); + } + if (*(int *)(param_1 + 0x374) == 0) { + uVar4 = 0; + } + else { + uVar4 = *(undefined4 *)(param_1 + 0x360); + } + iVar1 = 0; + iVar3 = param_1 + 0x90; + if (0 < local_10) { + do { + FUN_004c1ab0(iVar3,(int *)(param_1 + 0x48),uVar4); + iVar1 = iVar1 + 1; + iVar3 = iVar3 + 0x24; + } while (iVar1 < local_10); + } + FUN_0042ac79(local_1c,2); + } + return; +} + + + +/* @004c2a1d file=? name=FUN_004c2a1d */ + +undefined4 __cdecl FUN_004c2a1d(undefined4 param_1) + +{ + return param_1; +} + + + +/* @004c2a25 file=? name=FUN_004c2a25 */ + +void __cdecl FUN_004c2a25(int *param_1,byte param_2) + +{ + if ((param_1 != (int *)0x0) && ((param_2 & 1) != 0)) { + FUN_004022d0(param_1); + } + return; +} + + + +/* @004c2a3e file=? name=FUN_004c2a3e */ + +undefined4 * __cdecl +FUN_004c2a3e(undefined4 *param_1,undefined4 param_2,undefined4 *param_3,undefined4 param_4) + +{ + FUN_00444124(param_1,param_2); + *param_1 = &PTR_FUN_00514220; + param_1[4] = param_4; + param_1[5] = param_3; + *param_3 = *(undefined4 *)param_1[4]; + return param_1; +} + + + +/* @004c2a70 file=? name=FUN_004c2a70 */ + +void __cdecl FUN_004c2a70(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_00514220; + FUN_00444148(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004c2a9c file=? name=FUN_004c2a9c */ + +void __cdecl FUN_004c2a9c(int param_1) + +{ + **(undefined4 **)(param_1 + 0x14) = **(undefined4 **)(param_1 + 0x10); + return; +} + + + +/* @004c2aae file=? name=FUN_004c2aae */ + +void __cdecl FUN_004c2aae(int param_1,char *param_2) + +{ + undefined8 uVar1; + uint uVar2; + uint uVar3; + + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_GaugeConnectionDirectOf__00514121,(char *)0x0); + uVar3 = **(uint **)(param_1 + 0x10); + uVar2 = *(uint *)(param_1 + 0x10); + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s____dataSource_at_0051413b,(char *)0x0); + uVar1 = FUN_004dbd4c(&DAT_00524e20,uVar2); + FUN_004dbb24((int *)uVar1,&DAT_00514151,(char *)0x0); + uVar1 = FUN_004dbd4c((int *)uVar1,uVar3); + FUN_004dbb24((int *)uVar1,&DAT_00514153,(char *)0x0); + uVar3 = *(uint *)(param_1 + 0x10); + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s____dataDestination_at_00514155,(char *)0x0); + uVar1 = FUN_004dbd4c(&DAT_00524e20,uVar3); + FUN_004dbb24((int *)uVar1,&DAT_0051416b,(char *)0x0); + FUN_004d9c70((int *)uVar1); + FUN_0044419c(param_1,param_2); + return; +} + + + +/* @004c2bb1 file=? name=FUN_004c2bb1 */ + +void FUN_004c2bb1(void) + +{ + FUN_00415f1c(); + return; +} + + + +/* @004c2bc0 file=? name=FUN_004c2bc0 */ + +undefined4 * __cdecl +FUN_004c2bc0(undefined4 *param_1,undefined4 param_2,undefined4 *param_3,undefined4 param_4) + +{ + FUN_00444124(param_1,param_2); + *param_1 = &PTR_FUN_00514214; + param_1[4] = param_4; + param_1[5] = param_3; + *param_3 = *(undefined4 *)param_1[4]; + return param_1; +} + + + +/* @004c2bf2 file=? name=FUN_004c2bf2 */ + +void __cdecl FUN_004c2bf2(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_00514214; + FUN_00444148(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004c2c1e file=? name=FUN_004c2c1e */ + +void __cdecl FUN_004c2c1e(int param_1) + +{ + **(undefined4 **)(param_1 + 0x14) = **(undefined4 **)(param_1 + 0x10); + return; +} + + + +/* @004c2c30 file=? name=FUN_004c2c30 */ + +void __cdecl FUN_004c2c30(int param_1,char *param_2) + +{ + undefined8 uVar1; + uint uVar2; + uint uVar3; + + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_GaugeConnectionDirectOf__0051416d,(char *)0x0); + uVar3 = **(uint **)(param_1 + 0x10); + uVar2 = *(uint *)(param_1 + 0x10); + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s____dataSource_at_00514187,(char *)0x0); + uVar1 = FUN_004dbd4c(&DAT_00524e20,uVar2); + FUN_004dbb24((int *)uVar1,&DAT_0051419d,(char *)0x0); + uVar1 = FUN_004dbd4c((int *)uVar1,uVar3); + FUN_004dbb24((int *)uVar1,&DAT_0051419f,(char *)0x0); + uVar3 = *(uint *)(param_1 + 0x10); + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s____dataDestination_at_005141a1,(char *)0x0); + uVar1 = FUN_004dbd4c(&DAT_00524e20,uVar3); + FUN_004dbb24((int *)uVar1,&DAT_005141b7,(char *)0x0); + FUN_004d9c70((int *)uVar1); + FUN_0044419c(param_1,param_2); + return; +} + + + +/* @004c2d33 file=? name=FUN_004c2d33 */ + +void FUN_004c2d33(void) + +{ + FUN_00415f1c(); + return; +} + + + +/* @004c2d42 file=? name=FUN_004c2d42 */ + +undefined4 * __cdecl +FUN_004c2d42(undefined4 *param_1,undefined4 param_2,undefined4 *param_3,undefined4 param_4) + +{ + FUN_00444124(param_1,param_2); + *param_1 = &PTR_FUN_00514208; + param_1[4] = param_4; + param_1[5] = param_3; + *param_3 = *(undefined4 *)param_1[4]; + return param_1; +} + + + +/* @004c2d74 file=? name=FUN_004c2d74 */ + +void __cdecl FUN_004c2d74(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_00514208; + FUN_00444148(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004c2da0 file=? name=FUN_004c2da0 */ + +void __cdecl FUN_004c2da0(int param_1) + +{ + **(undefined4 **)(param_1 + 0x14) = **(undefined4 **)(param_1 + 0x10); + return; +} + + + +/* @004c2db2 file=? name=FUN_004c2db2 */ + +void __cdecl FUN_004c2db2(int param_1,char *param_2) + +{ + int *piVar1; + undefined8 uVar2; + uint uVar3; + float *pfVar4; + + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_GaugeConnectionDirectOf__005141b9,(char *)0x0); + pfVar4 = *(float **)(param_1 + 0x10); + uVar3 = *(uint *)(param_1 + 0x10); + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s____dataSource_at_005141d3,(char *)0x0); + uVar2 = FUN_004dbd4c(&DAT_00524e20,uVar3); + FUN_004dbb24((int *)uVar2,&DAT_005141e9,(char *)0x0); + piVar1 = FUN_00408270((int *)uVar2,pfVar4); + FUN_004dbb24(piVar1,&DAT_005141eb,(char *)0x0); + uVar3 = *(uint *)(param_1 + 0x10); + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s____dataDestination_at_005141ed,(char *)0x0); + uVar2 = FUN_004dbd4c(&DAT_00524e20,uVar3); + FUN_004dbb24((int *)uVar2,&DAT_00514203,(char *)0x0); + FUN_004d9c70((int *)uVar2); + FUN_0044419c(param_1,param_2); + return; +} + + + +/* @004c2eb3 file=? name=FUN_004c2eb3 */ + +void FUN_004c2eb3(void) + +{ + FUN_00415f1c(); + return; +} + + + +/* @004c2ec4 file=? name=FUN_004c2ec4 */ + +void __cdecl +FUN_004c2ec4(undefined4 param_1,undefined4 param_2,int *param_3,int param_4,char *param_5) + +{ + undefined4 *puVar1; + + (**(code **)(*param_3 + 0x24))(param_3,param_1,param_2); + puVar1 = FUN_00442aec(param_4 + 4,param_5,0); + if (puVar1 != (undefined4 *)0x0) { + (**(code **)(*param_3 + 0x58))(param_3,0,0,puVar1,0,0,puVar1[3] + -1,puVar1[4] + -1); + } + FUN_00442c12(param_4 + 4,param_5); + return; +} + + + +/* @004c2f28 file=? name=FUN_004c2f28 */ + +void __cdecl +FUN_004c2f28(undefined4 param_1,undefined4 param_2,int *param_3,int param_4,char *param_5) + +{ + int *piVar1; + + (**(code **)(*param_3 + 0x24))(param_3,param_1,param_2); + piVar1 = FUN_00442d2b(param_4 + 0x20,param_5,0); + if (piVar1 != (int *)0x0) { + (**(code **)(*param_3 + 0x5c))(param_3,1,0,piVar1,0,0,*piVar1 + -1,piVar1[1] + -1); + } + FUN_00442c12(param_4 + 4,param_5); + return; +} + + + +/* @004c2f88 file=? name=FUN_004c2f88 */ + +undefined4 FUN_004c2f88(void) + +{ + return 7; +} + + + +/* @004c2f94 file=? name=FUN_004c2f94 */ + +uint __cdecl FUN_004c2f94(int param_1) + +{ + int iVar1; + uint *puVar2; + uint local_8; + + iVar1 = FUN_0041a1a4(**(int **)(param_1 + 0xc),0x50bdb4); + if (iVar1 != 0) { + local_8 = (uint)**(uint3 **)(*(int *)(param_1 + 0x848) + 8); + for (puVar2 = &DAT_00514274; 0 < (int)puVar2[1]; puVar2 = puVar2 + 2) { + if (*puVar2 == local_8) { + return puVar2[1]; + } + } + } + return 0xff; +} + + + +/* @004c2ff8 file=? name=FUN_004c2ff8 */ + +void __cdecl +FUN_004c2ff8(int *param_1,int param_2,int param_3,int param_4,int param_5,undefined4 param_6, + int param_7) + +{ + int iVar1; + int *piVar2; + int iVar3; + int iVar4; + int local_30 [3]; + int local_24 [3]; + int local_18; + int local_14; + int local_10; + int local_c; + int local_8; + + local_8 = *(int *)(param_7 + 0xc); + local_c = *(int *)(param_7 + 0x10); + iVar4 = 0; + if (0 < param_5) { + do { + local_24[2] = param_3 - iVar4; + local_24[1] = 0; + if (param_3 - iVar4 < 0) { + piVar2 = local_24 + 1; + } + else { + piVar2 = local_24 + 2; + } + local_10 = *piVar2; + if (*piVar2 < local_c) { + local_24[0] = (param_5 - iVar4) + 1; + if (local_c < local_24[0]) { + piVar2 = &local_c; + } + else { + piVar2 = local_24; + } + local_18 = *piVar2; + if (0 < local_18) { + local_18 = local_18 + -1; + iVar3 = 0; + if (0 < param_4) { + do { + local_30[2] = param_2 - iVar3; + local_30[1] = 0; + if (param_2 - iVar3 < 0) { + piVar2 = local_30 + 1; + } + else { + piVar2 = local_30 + 2; + } + iVar1 = *piVar2; + if (iVar1 < local_8) { + local_30[0] = (param_4 - iVar3) + 1; + if (local_8 < local_30[0]) { + piVar2 = &local_8; + } + else { + piVar2 = local_30; + } + local_14 = *piVar2; + if (0 < local_14) { + local_14 = local_14 + -1; + (**(code **)(*param_1 + 0x24))(param_1,iVar3,iVar4); + (**(code **)(*param_1 + 0x58)) + (param_1,param_6,0,param_7,iVar1,local_10,local_14,local_18); + } + } + iVar3 = iVar3 + local_8; + } while (iVar3 < param_4); + } + } + } + iVar4 = iVar4 + local_c; + } while (iVar4 < param_5); + } + return; +} + + + +/* @004c3134 file=? name=FUN_004c3134 */ + +undefined4 * __cdecl +FUN_004c3134(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) + +{ + FUN_00444124(param_1,param_2); + *param_1 = &PTR_FUN_00518ea8; + param_1[4] = param_4; + param_1[5] = param_3; + return param_1; +} + + + +/* @004c3160 file=? name=FUN_004c3160 */ + +void __cdecl FUN_004c3160(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_00518ea8; + FUN_00444148(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004c318c file=? name=FUN_004c318c */ + +undefined4 FUN_004c318c(void) + +{ + return 1; +} + + + +/* @004c3198 file=? name=FUN_004c3198 */ + +void FUN_004c3198(void) + +{ + return; +} + + + +/* @004c31a0 file=? name=FUN_004c31a0 */ + +void __cdecl FUN_004c31a0(int param_1) + +{ + int iVar1; + int iVar2; + + iVar2 = 0; + if (*(int *)(*(int *)(param_1 + 0x10) + 0x134) == 1) { + iVar1 = FUN_0041bf44(*(int *)(param_1 + 0x10),3); + if (iVar1 != 0) { + iVar2 = FUN_00417ab4(iVar1); + } + } + if (iVar2 == 0) { + **(undefined4 **)(param_1 + 0x14) = 0; + } + else { + **(undefined4 **)(param_1 + 0x14) = *(undefined4 *)(iVar2 + 0x1d4); + } + return; +} + + + +/* @004c31ec file=? name=FUN_004c31ec */ + +undefined4 * __cdecl +FUN_004c31ec(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) + +{ + FUN_00444124(param_1,param_2); + *param_1 = &PTR_FUN_00518e9c; + param_1[4] = param_4; + param_1[5] = param_3; + return param_1; +} + + + +/* @004c3218 file=? name=FUN_004c3218 */ + +void __cdecl FUN_004c3218(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_00518e9c; + FUN_00444148(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004c3244 file=? name=FUN_004c3244 */ + +undefined4 FUN_004c3244(void) + +{ + return 1; +} + + + +/* @004c3250 file=? name=FUN_004c3250 */ + +void FUN_004c3250(void) + +{ + return; +} + + + +/* @004c3258 file=? name=FUN_004c3258 */ + +void __cdecl FUN_004c3258(int param_1) + +{ + int iVar1; + + iVar1 = FUN_00417ab4(*(int *)(param_1 + 0x10)); + if (iVar1 == 0) { + **(undefined4 **)(param_1 + 0x14) = 0; + return; + } + **(undefined4 **)(param_1 + 0x14) = *(undefined4 *)(iVar1 + 0x1e0); + return; +} + + + +/* @004c3288 file=? name=FUN_004c3288 */ + +undefined4 * __cdecl +FUN_004c3288(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) + +{ + FUN_00444124(param_1,param_2); + *param_1 = &PTR_FUN_00518e90; + param_1[4] = param_4; + param_1[5] = param_3; + return param_1; +} + + + +/* @004c32b4 file=? name=FUN_004c32b4 */ + +void __cdecl FUN_004c32b4(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_00518e90; + FUN_00444148(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004c32e0 file=? name=FUN_004c32e0 */ + +undefined4 FUN_004c32e0(void) + +{ + return 1; +} + + + +/* @004c32ec file=? name=FUN_004c32ec */ + +void FUN_004c32ec(void) + +{ + return; +} + + + +/* @004c32f4 file=? name=FUN_004c32f4 */ + +void __cdecl FUN_004c32f4(int param_1) + +{ + int iVar1; + + iVar1 = FUN_00417ab4(*(int *)(param_1 + 0x10)); + if (iVar1 == 0) { + **(undefined4 **)(param_1 + 0x14) = 0; + return; + } + **(undefined4 **)(param_1 + 0x14) = *(undefined4 *)(iVar1 + 0x1dc); + return; +} + + + +/* @004c3324 file=? name=FUN_004c3324 */ + +undefined4 * __cdecl +FUN_004c3324(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) + +{ + FUN_00444124(param_1,param_2); + *param_1 = &PTR_FUN_00518e84; + param_1[4] = param_4; + param_1[5] = param_3; + return param_1; +} + + + +/* @004c3350 file=? name=FUN_004c3350 */ + +void __cdecl FUN_004c3350(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_00518e84; + FUN_00444148(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004c337c file=? name=FUN_004c337c */ + +undefined4 FUN_004c337c(void) + +{ + return 1; +} + + + +/* @004c3388 file=? name=FUN_004c3388 */ + +void FUN_004c3388(void) + +{ + return; +} + + + +/* @004c3390 file=? name=FUN_004c3390 */ + +void __cdecl FUN_004c3390(int param_1) + +{ + **(undefined4 **)(param_1 + 0x14) = *(undefined4 *)(*(int *)(param_1 + 0x10) + 0x14); + return; +} + + + +/* @004c33a4 file=? name=FUN_004c33a4 */ + +undefined4 * __cdecl +FUN_004c33a4(undefined4 *param_1,undefined4 param_2,undefined4 param_3,int param_4,int param_5) + +{ + FUN_00444124(param_1,param_2); + *param_1 = &PTR_FUN_00518e78; + if (param_5 < 0) { + param_1[4] = 0; + } + else { + param_1[4] = *(undefined4 *)(*(int *)(param_4 + 0x120) + param_5 * 4); + } + param_1[5] = param_3; + return param_1; +} + + + +/* @004c33e8 file=? name=FUN_004c33e8 */ + +void __cdecl FUN_004c33e8(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_00518e78; + FUN_00444148(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004c3414 file=? name=FUN_004c3414 */ + +undefined4 FUN_004c3414(void) + +{ + return 1; +} + + + +/* @004c3428 file=? name=FUN_004c3428 */ + +void FUN_004c3428(void) + +{ + return; +} + + + +/* @004c3430 file=? name=FUN_004c3430 */ + +void __cdecl FUN_004c3430(int param_1) + +{ + undefined4 uVar1; + + if (*(int *)(param_1 + 0x10) == 0) { + **(undefined4 **)(param_1 + 0x14) = 100; + return; + } + uVar1 = FUN_004dcd94(); + **(undefined4 **)(param_1 + 0x14) = uVar1; + return; +} + + + +/* @004c346c file=? name=FUN_004c346c */ + +undefined4 * __cdecl +FUN_004c346c(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4, + undefined4 *param_5) + +{ + int iVar1; + undefined4 *puVar2; + + FUN_00444124(param_1,param_2); + *param_1 = &PTR_FUN_00518e6c; + iVar1 = 0; + puVar2 = param_1 + 6; + do { + *puVar2 = *param_5; + iVar1 = iVar1 + 1; + puVar2 = puVar2 + 1; + param_5 = param_5 + 1; + } while (iVar1 < 8); + param_1[4] = param_4; + param_1[0xe] = param_3; + return param_1; +} + + + +/* @004c34b4 file=? name=FUN_004c34b4 */ + +void __cdecl FUN_004c34b4(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_00518e6c; + FUN_00444148(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004c34e0 file=? name=FUN_004c34e0 */ + +undefined4 FUN_004c34e0(void) + +{ + return 1; +} + + + +/* @004c34ec file=? name=FUN_004c34ec */ + +void FUN_004c34ec(void) + +{ + return; +} + + + +/* @004c34f4 file=? name=FUN_004c34f4 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004c34f4(int param_1) + +{ + int iVar1; + undefined4 uVar2; + int iVar3; + int *piVar4; + int local_c; + float local_8; + + iVar3 = 0; + local_8 = 0.0; + local_c = 0; + piVar4 = (int *)(param_1 + 0x18); + do { + if (((-1 < *piVar4) && + (iVar1 = *(int *)(*(int *)(*(int *)(param_1 + 0x10) + 0x120) + *piVar4 * 4), iVar1 != 0)) && + (local_c = local_c + 1, local_8 < *(float *)(iVar1 + 0x158))) { + local_8 = *(float *)(iVar1 + 0x158); + } + iVar3 = iVar3 + 1; + piVar4 = piVar4 + 1; + } while (iVar3 < 8); + if (local_c == 0) { + **(undefined4 **)(param_1 + 0x38) = 100; + } + else { + uVar2 = FUN_004dcd94(); + **(undefined4 **)(param_1 + 0x38) = uVar2; + } + return; +} + + + +/* @004c3598 file=? name=FUN_004c3598 */ + +undefined4 * __cdecl +FUN_004c3598(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) + +{ + FUN_00444124(param_1,param_2); + *param_1 = &PTR_FUN_00518e60; + param_1[4] = param_4; + param_1[5] = param_3; + return param_1; +} + + + +/* @004c35c8 file=? name=FUN_004c35c8 */ + +void __cdecl FUN_004c35c8(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_00518e60; + FUN_00444148(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004c35f4 file=? name=FUN_004c35f4 */ + +undefined4 FUN_004c35f4(void) + +{ + return 1; +} + + + +/* @004c3608 file=? name=FUN_004c3608 */ + +void FUN_004c3608(void) + +{ + return; +} + + + +/* @004c3610 file=? name=FUN_004c3610 */ + +void __cdecl FUN_004c3610(int param_1) + +{ + undefined4 uVar1; + + if (*(int *)(param_1 + 0x10) == 0) { + **(undefined4 **)(param_1 + 0x14) = 0; + return; + } + if (*(int *)(*(int *)(param_1 + 0x10) + 0x40) == 1) { + **(undefined4 **)(param_1 + 0x14) = 100; + return; + } + uVar1 = FUN_004dcd94(); + **(undefined4 **)(param_1 + 0x14) = uVar1; + return; +} + + + +/* @004c3664 file=? name=FUN_004c3664 */ + +undefined4 * __cdecl +FUN_004c3664(undefined4 *param_1,undefined4 param_2,undefined4 param_3,int param_4) + +{ + int iVar1; + + FUN_00444124(param_1,param_2); + *param_1 = &PTR_FUN_00518e54; + if (param_4 != 0) { + iVar1 = FUN_0041a1a4(**(int **)(param_4 + 0xc),0x50e3ec); + if (iVar1 == 0) { + iVar1 = FUN_0041a1a4(**(int **)(param_4 + 0xc),0x50e604); + if (iVar1 == 0) { + param_4 = 0; + } + else { + param_1[5] = 0; + } + } + else { + param_1[5] = 1; + } + } + param_1[4] = param_4; + param_1[6] = param_3; + return param_1; +} + + + +/* @004c36d8 file=? name=FUN_004c36d8 */ + +void __cdecl FUN_004c36d8(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_00518e54; + FUN_00444148(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004c3704 file=? name=FUN_004c3704 */ + +undefined4 FUN_004c3704(void) + +{ + return 1; +} + + + +/* @004c3718 file=? name=FUN_004c3718 */ + +void FUN_004c3718(void) + +{ + return; +} + + + +/* @004c3720 file=? name=FUN_004c3720 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004c3720(int param_1) + +{ + undefined4 uVar1; + + if (*(int *)(param_1 + 0x10) == 0) { + **(undefined4 **)(param_1 + 0x18) = 100; + } + else if (*(int *)(*(int *)(param_1 + 0x10) + 0x40) == 1) { + **(undefined4 **)(param_1 + 0x18) = 100; + } + else { + if (*(int *)(param_1 + 0x14) == 0) { + FUN_00417ab4(*(int *)(param_1 + 0x10) + 0x114); + } + uVar1 = FUN_004dcd94(); + **(undefined4 **)(param_1 + 0x18) = uVar1; + } + return; +} + + + +/* @004c37dc file=? name=FUN_004c37dc */ + +undefined4 * __cdecl +FUN_004c37dc(undefined4 *param_1,undefined4 param_2,undefined4 param_3,int param_4, + undefined4 param_5,int param_6,undefined4 param_7,char *param_8,char *param_9, + undefined4 param_10) + +{ + undefined4 uVar1; + char *pcVar2; + int iVar3; + int *piVar4; + undefined4 *puVar5; + int iVar6; + + FUN_00444308(param_1,param_2,param_3,param_4,param_5,param_10); + *param_1 = &PTR_FUN_00518e10; + uVar1 = FUN_004700ac(param_8); + param_1[0x12] = uVar1; + pcVar2 = (char *)FUN_004700ac(param_9); + param_1[0x13] = pcVar2; + iVar3 = FUN_004d4b58((char *)param_1[0x12],pcVar2); + if (iVar3 == 0) { + param_1[0x14] = 0; + } + else { + param_1[0x14] = 1; + } + iVar3 = *(int *)(param_4 + 0x4c); + iVar6 = 0; + puVar5 = param_1 + 0x12; + do { + piVar4 = FUN_00442f6a(iVar3 + 0x3c,(char *)*puVar5,0); + if (piVar4 == (int *)0x0) { + pcVar2 = (char *)*puVar5; + FUN_004dbb24(&DAT_00524e20,s_ColorMapper_cannot_find_palette_f_005185b6,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,pcVar2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_005185dd,(char *)0x0); + } + iVar6 = iVar6 + 1; + puVar5 = puVar5 + 1; + } while (iVar6 < 2); + param_1[0x17] = param_7; + param_1[0x18] = 0; + uVar1 = FUN_00447f84(param_4,param_6); + param_1[0x1a] = uVar1; + return param_1; +} + + + +/* @004c38dc file=? name=FUN_004c38dc */ + +void __cdecl FUN_004c38dc(int *param_1,byte param_2) + +{ + int iVar1; + int *piVar2; + int iVar3; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_00518e10; + iVar3 = 0; + piVar2 = param_1 + 0x12; + iVar1 = *(int *)(param_1[7] + 0x4c); + do { + FUN_00443090(iVar1 + 0x3c,(char *)*piVar2); + FUN_004022e8((int *)*piVar2); + *piVar2 = 0; + iVar3 = iVar3 + 1; + piVar2 = piVar2 + 1; + } while (iVar3 < 2); + FUN_00444360(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004c3944 file=? name=FUN_004c3944 */ + +void FUN_004c3944(void) + +{ + FUN_004443a4(); + return; +} + + + +/* @004c3954 file=? name=FUN_004c3954 */ + +void FUN_004c3954(void) + +{ + return; +} + + + +/* @004c395c file=? name=FUN_004c395c */ + +void __cdecl FUN_004c395c(int param_1) + +{ + *(undefined4 *)(param_1 + 0x54) = 0xffffffff; + *(undefined4 *)(param_1 + 0x58) = 0xffffffff; + *(undefined1 *)(param_1 + 100) = 0xff; + *(undefined1 *)(param_1 + 0x65) = 0xff; + *(undefined1 *)(param_1 + 0x66) = 0xff; + return; +} + + + +/* @004c3980 file=? name=FUN_004c3980 */ + +void __cdecl FUN_004c3980(int param_1) + +{ + undefined2 uVar1; + int iVar2; + int iVar3; + bool bVar4; + int *piVar5; + int *piVar6; + undefined2 local_103; + char local_101; + int local_c [2]; + + local_c[1] = 0xff; + piVar6 = (int *)(param_1 + 0x54); + if (0xfe < *piVar6) { + piVar6 = local_c + 1; + } + piVar5 = (int *)(param_1 + 0x54); + *(int *)(param_1 + 0x54) = *piVar6; + local_c[0] = 0; + if (*piVar5 < 1) { + piVar5 = local_c; + } + *(int *)(param_1 + 0x54) = *piVar5; + if (*(int *)(param_1 + 0x50) == 0) { + if (*(int *)(param_1 + 0x54) == *(int *)(param_1 + 0x58)) { + return; + } + *(int *)(param_1 + 0x58) = *(int *)(param_1 + 0x54); + } + else { + *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) + 1; + if (1 < *(int *)(param_1 + 0x60)) { + *(undefined4 *)(param_1 + 0x60) = 0; + } + } + iVar2 = *(int *)(*(int *)(param_1 + 0x1c) + 0x4c); + piVar6 = FUN_00442f6a(iVar2 + 0x3c,*(char **)(param_1 + 0x48 + *(int *)(param_1 + 0x60) * 4),0); + uVar1 = local_103; + if (piVar6 != (int *)0x0) { + iVar3 = *(int *)(param_1 + 0x54) * 3; + uVar1 = *(undefined2 *)((int)piVar6 + iVar3 + 4); + local_101 = *(char *)((int)piVar6 + iVar3 + 6); + local_103._0_1_ = (char)uVar1; + local_103._1_1_ = (char)((ushort)uVar1 >> 8); + if (((*(char *)(param_1 + 100) == (char)local_103) && + (*(char *)(param_1 + 0x65) == local_103._1_1_)) && (*(char *)(param_1 + 0x66) == local_101)) + { + bVar4 = false; + } + else { + bVar4 = true; + } + if (bVar4) { + *(char *)(param_1 + 100) = (char)local_103; + *(char *)(param_1 + 0x65) = local_103._1_1_; + *(char *)(param_1 + 0x66) = local_101; + local_103 = uVar1; + (**(code **)(**(int **)(param_1 + 0x68) + 0xc)) + (*(int **)(param_1 + 0x68),&local_103,*(undefined4 *)(param_1 + 0x5c)); + uVar1 = local_103; + } + } + local_103 = uVar1; + FUN_00443090(iVar2 + 0x3c,*(char **)(param_1 + 0x48 + *(int *)(param_1 + 0x60) * 4)); + return; +} + + + +/* @004c3aa4 file=? name=FUN_004c3aa4 */ + +undefined4 __cdecl +FUN_004c3aa4(int param_1,undefined4 param_2,undefined4 param_3,int param_4,int param_5) + +{ + uint *puVar1; + int iVar2; + int *piVar3; + undefined4 uVar4; + uint *local_8; + + puVar1 = (uint *)FUN_00402298(0x10); + if (puVar1 == (uint *)0x0) { + local_8 = (uint *)0x0; + } + else { + local_8 = FUN_00402460(puVar1,&DAT_00514414); + } + local_8[3] = local_8[3] + 1; + iVar2 = FUN_0042076c(param_4,(int *)&local_8); + if (iVar2 < 0) { + FUN_004dbb24(&DAT_00524e20,s_Warning__damage_zone___005185e9,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,(char *)local_8[2],(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s___not_found__00518600,(char *)0x0); + } + piVar3 = (int *)FUN_00402298(0x70); + if (piVar3 != (int *)0x0) { + FUN_004c3b98(piVar3,DAT_005142c0,DAT_00514304,param_5,0,param_1,param_4,DAT_00514348, + &DAT_0051438c,&DAT_005143d0,iVar2,s_ColorMapperArmor_00518489); + } + uVar4 = 1; + puVar1 = local_8 + 3; + *puVar1 = *puVar1 - 1; + if (*puVar1 == 0) { + FUN_004024d8((int *)local_8,3); + } + return uVar4; +} + + + +/* @004c3b98 file=? name=FUN_004c3b98 */ + +int * __cdecl +FUN_004c3b98(int *param_1,undefined4 param_2,undefined4 param_3,int param_4,undefined4 param_5, + int param_6,int param_7,undefined4 param_8,char *param_9,char *param_10,int param_11, + undefined4 param_12) + +{ + undefined4 *puVar1; + + FUN_004c37dc(param_1,param_2,param_3,param_4,param_5,param_6,param_8,param_9,param_10,param_12); + *param_1 = (int)&PTR_FUN_00518dcc; + param_1[0x1b] = 0; + puVar1 = (undefined4 *)FUN_00402298(0x18); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_004c33a4(puVar1,0,param_1 + 0x15,param_7,param_11); + } + (**(code **)(*param_1 + 0x34))(param_1,puVar1); + return param_1; +} + + + +/* @004c3c14 file=? name=FUN_004c3c14 */ + +void FUN_004c3c14(void) + +{ + return; +} + + + +/* @004c3c1c file=? name=FUN_004c3c1c */ + +void __cdecl FUN_004c3c1c(int param_1) + +{ + if (*(int *)(param_1 + 0x6c) != 0) { + *(undefined4 *)(param_1 + 0x54) = 100; + } + FUN_004c3980(param_1); + return; +} + + + +/* @004c3c38 file=? name=FUN_004c3c38 */ + +void __cdecl FUN_004c3c38(int param_1,undefined4 param_2) + +{ + *(undefined4 *)(param_1 + 0x6c) = param_2; + return; +} + + + +/* @004c3c48 file=? name=FUN_004c3c48 */ + +undefined4 __cdecl +FUN_004c3c48(int param_1,undefined4 param_2,undefined4 param_3,int param_4,int param_5) + +{ + uint *puVar1; + int iVar2; + undefined4 uVar3; + int *piVar4; + int iVar5; + int local_34 [8]; + char *local_14; + uint *local_10; + int local_c; + undefined *local_8; + + iVar5 = 0; + local_8 = &DAT_00514704; + local_c = 1; + piVar4 = local_34; + do { + local_14 = local_8 + iVar5 * 0x44 + 0x158; + puVar1 = (uint *)FUN_00402298(0x10); + if (puVar1 == (uint *)0x0) { + local_10 = (uint *)0x0; + } + else { + local_10 = FUN_00402460(puVar1,local_14); + } + local_10[3] = local_10[3] + 1; + iVar2 = FUN_0042076c(param_4,(int *)&local_10); + *piVar4 = iVar2; + if (iVar2 != 0) { + local_c = 0; + } + puVar1 = local_10 + 3; + *puVar1 = *puVar1 - 1; + if (*puVar1 == 0) { + FUN_004024d8((int *)local_10,3); + } + iVar5 = iVar5 + 1; + piVar4 = piVar4 + 1; + } while (iVar5 < 8); + if (local_c == 0) { + piVar4 = (int *)FUN_00402298(0x6c); + if (piVar4 != (int *)0x0) { + FUN_004c3d60(piVar4,*(undefined4 *)(local_8 + 4),*(undefined4 *)(local_8 + 0x48),param_5,0, + param_1,param_4,*(undefined4 *)(local_8 + 0x8c),local_8 + 0xd0,local_8 + 0x114, + local_34,s_ColorMapperMultiArmor_0051849a); + } + uVar3 = 1; + } + else { + FUN_004dbb24(&DAT_00524e20,s_No_Damage_zones_found__00518624,(char *)0x0); + uVar3 = 0; + } + return uVar3; +} + + + +/* @004c3d60 file=? name=FUN_004c3d60 */ + +int * __cdecl +FUN_004c3d60(int *param_1,undefined4 param_2,undefined4 param_3,int param_4,undefined4 param_5, + int param_6,undefined4 param_7,undefined4 param_8,char *param_9,char *param_10, + undefined4 *param_11,undefined4 param_12) + +{ + undefined4 *puVar1; + + FUN_004c37dc(param_1,param_2,param_3,param_4,param_5,param_6,param_8,param_9,param_10,param_12); + *param_1 = (int)&PTR_FUN_00518d88; + puVar1 = (undefined4 *)FUN_00402298(0x3c); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_004c346c(puVar1,0,param_1 + 0x15,param_7,param_11); + } + (**(code **)(*param_1 + 0x34))(param_1,puVar1); + return param_1; +} + + + +/* @004c3dd4 file=? name=FUN_004c3dd4 */ + +void FUN_004c3dd4(void) + +{ + return; +} + + + +/* @004c3ddc file=? name=FUN_004c3ddc */ + +undefined4 __cdecl +FUN_004c3ddc(int param_1,undefined4 param_2,undefined4 param_3,int param_4,int param_5) + +{ + int *piVar1; + + piVar1 = (int *)FUN_00402298(0x6c); + if (piVar1 != (int *)0x0) { + FUN_004c3e40(piVar1,DAT_00514b50,DAT_00514b94,param_5,0,param_1,param_4,DAT_00514bd8, + &DAT_00514c1c,&DAT_00514c60,&DAT_00514ca4,s_ColorMapperCritical_005184b0); + } + return 1; +} + + + +/* @004c3e40 file=? name=FUN_004c3e40 */ + +int * __cdecl +FUN_004c3e40(int *param_1,undefined4 param_2,undefined4 param_3,int param_4,undefined4 param_5, + int param_6,int param_7,undefined4 param_8,char *param_9,char *param_10,char *param_11, + undefined4 param_12) + +{ + int iVar1; + undefined4 *puVar2; + + FUN_004c37dc(param_1,param_2,param_3,param_4,param_5,param_6,param_8,param_9,param_10,param_12); + *param_1 = (int)&PTR_FUN_00518d44; + iVar1 = FUN_0041f98c(param_7,param_11); + if (iVar1 == 0) { + FUN_004dbb24(&DAT_00524e20,s_ColorMapperCritical_warning__sub_00518643,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,param_11,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s___does_not_exist_0051866c,(char *)0x0); + } + puVar2 = (undefined4 *)FUN_00402298(0x18); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_004c3598(puVar2,0,param_1 + 0x15,iVar1); + } + (**(code **)(*param_1 + 0x34))(param_1,puVar2); + return param_1; +} + + + +/* @004c3f00 file=? name=FUN_004c3f00 */ + +void FUN_004c3f00(void) + +{ + return; +} + + + +/* @004c3f08 file=? name=FUN_004c3f08 */ + +undefined4 __cdecl +FUN_004c3f08(int param_1,undefined4 param_2,undefined4 param_3,int param_4,int param_5) + +{ + int *piVar1; + + piVar1 = (int *)FUN_00402298(0x6c); + if (piVar1 != (int *)0x0) { + FUN_004c3f6c(piVar1,DAT_00514f98,DAT_00514fdc,param_5,0,param_1,param_4,DAT_00515020, + &DAT_00515064,&DAT_005150a8,&DAT_005150ec,s_ColorMapperHeat_005184c4); + } + return 1; +} + + + +/* @004c3f6c file=bt_l4/btl4gaug.cpp name=FUN_004c3f6c */ + +int * __cdecl +FUN_004c3f6c(int *param_1,undefined4 param_2,undefined4 param_3,int param_4,undefined4 param_5, + int param_6,int param_7,undefined4 param_8,char *param_9,char *param_10,char *param_11, + undefined4 param_12) + +{ + int iVar1; + int iVar2; + undefined4 *puVar3; + + FUN_004c37dc(param_1,param_2,param_3,param_4,param_5,param_6,param_8,param_9,param_10,param_12); + *param_1 = (int)&PTR_FUN_00518d00; + iVar1 = FUN_0041f98c(param_7,param_11); + if (iVar1 == 0) { + FUN_004dbb24(&DAT_00524e20,s_ColorMapperHeat_warning__subsyst_00518685,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,param_11,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s___does_not_exist_005186aa,(char *)0x0); + } + else { + iVar2 = FUN_0041a1a4(**(int **)(iVar1 + 0xc),0x50e3ec); + if ((iVar2 == 0) && (iVar2 = FUN_0041a1a4(**(int **)(iVar1 + 0xc),0x50e604), iVar2 == 0)) { + FUN_0040385c(s_Bad_subsystem_type_005186bc,s_d__tesla_bt_bt_l4_BTL4GAUG_CPP_005186cf,0x68a); + } + } + puVar3 = (undefined4 *)FUN_00402298(0x1c); + if (puVar3 == (undefined4 *)0x0) { + puVar3 = (undefined4 *)0x0; + } + else { + puVar3 = FUN_004c3664(puVar3,0,param_1 + 0x15,iVar1); + } + (**(code **)(*param_1 + 0x34))(param_1,puVar3); + return param_1; +} + + + +/* @004c4074 file=? name=FUN_004c4074 */ + +void FUN_004c4074(void) + +{ + return; +} + + + +/* @004c407c file=? name=FUN_004c407c */ + +bool __cdecl FUN_004c407c(int param_1,int param_2,int param_3,undefined4 param_4,int param_5) + +{ + int iVar1; + int *piVar2; + undefined4 *puVar3; + + piVar2 = (int *)FUN_00402298(0xb8); + if (piVar2 != (int *)0x0) { + FUN_004c4170(piVar2,DAT_005153e0,DAT_00515424,param_5,0,param_1,param_2,param_3, + param_2 + DAT_00515468,param_3 + DAT_0051546c,&DAT_005154ac,DAT_005154f0, + DAT_00515534,DAT_00515578,DAT_005155bc,DAT_00515600,s_HorizTwoPartBar_005184d4); + } + iVar1 = *(int *)(param_5 + 0x4c); + puVar3 = FUN_00442aec(iVar1 + 4,&DAT_005154ac,0); + if (puVar3 != (undefined4 *)0x0) { + FUN_00442c12(iVar1 + 4,&DAT_005154ac); + } + else { + FUN_004dbb24(&DAT_00524e20,s_HorizTwoPartBar__Missing_image__005186f7,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_005154ac,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_00518717,(char *)0x0); + } + return puVar3 != (undefined4 *)0x0; +} + + + +/* @004c4170 file=? name=FUN_004c4170 */ + +int * __cdecl +FUN_004c4170(int *param_1,undefined4 param_2,undefined4 param_3,int param_4,undefined4 param_5, + int param_6,int param_7,int param_8,int param_9,int param_10,char *param_11,int param_12 + ,int param_13,undefined4 param_14,undefined4 param_15,undefined4 param_16, + undefined4 param_17) + +{ + int iVar1; + undefined4 *puVar2; + + FUN_00444818(param_1,param_2,param_3,param_4,param_5,param_6,param_17); + *param_1 = (int)&PTR_FUN_00518cbc; + iVar1 = FUN_004700ac(param_11); + param_1[0x27] = iVar1; + FUN_00442aec(*(int *)(param_4 + 0x4c) + 4,(char *)param_1[0x27],0); + (**(code **)(param_1[0x12] + 8))(param_1 + 0x12,param_7,param_8,param_9,param_10); + param_1[0x28] = param_12; + param_1[0x29] = param_13; + param_1[0x2a] = param_9 - param_7; + param_1[0x2b] = (param_10 - param_8) + -1; + puVar2 = (undefined4 *)FUN_00402298(0x18); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_00474855(puVar2,0,param_1 + 0x24,param_14); + } + (**(code **)(*param_1 + 0x34))(param_1,puVar2); + puVar2 = (undefined4 *)FUN_00402298(0x18); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_00474855(puVar2,0,param_1 + 0x25,param_15); + } + (**(code **)(*param_1 + 0x34))(param_1,puVar2); + puVar2 = (undefined4 *)FUN_00402298(0x18); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_00474855(puVar2,0,param_1 + 0x26,param_16); + } + (**(code **)(*param_1 + 0x34))(param_1,puVar2); + return param_1; +} + + + +/* @004c42b0 file=? name=FUN_004c42b0 */ + +void __cdecl FUN_004c42b0(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_00518cbc; + FUN_00442c12(*(int *)(param_1[7] + 0x4c) + 4,(char *)param_1[0x27]); + FUN_004022e8((int *)param_1[0x27]); + param_1[0x27] = 0; + FUN_00444870(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004c430c file=? name=FUN_004c430c */ + +void FUN_004c430c(void) + +{ + FUN_004448ac(); + return; +} + + + +/* @004c431c file=? name=FUN_004c431c */ + +void FUN_004c431c(void) + +{ + return; +} + + + +/* @004c4324 file=? name=FUN_004c4324 */ + +void __cdecl FUN_004c4324(int param_1) + +{ + *(undefined4 *)(param_1 + 0xb4) = 0; + *(undefined4 *)(param_1 + 0xb0) = *(undefined4 *)(param_1 + 0xa8); + return; +} + + + +/* @004c4340 file=? name=FUN_004c4340 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004c4340(int param_1) + +{ + int iVar1; + undefined4 *puVar2; + int *piVar3; + int *piVar4; + int local_14 [3]; + int local_8; + + if (_DAT_004c452c <= *(float *)(param_1 + 0x90)) { + if (*(float *)(param_1 + 0x98) < *(float *)(param_1 + 0x90)) { + *(undefined4 *)(param_1 + 0x90) = *(undefined4 *)(param_1 + 0x98); + } + } + else { + *(undefined4 *)(param_1 + 0x90) = 0; + } + local_8 = FUN_004dcd94(); + local_14[2] = FUN_004dcd94(); + local_14[1] = 0; + if (local_8 < 0) { + piVar3 = local_14 + 1; + } + else { + piVar3 = &local_8; + } + if (*(int *)(param_1 + 0xa8) <= *piVar3) { + piVar3 = (int *)(param_1 + 0xa8); + } + local_8 = *piVar3; + local_14[0] = 0; + if (local_14[2] < 0) { + piVar4 = local_14; + } + else { + piVar4 = local_14 + 2; + } + if (*(int *)(param_1 + 0xa8) <= *piVar4) { + piVar4 = (int *)(param_1 + 0xa8); + } + local_14[2] = *piVar4; + if ((*piVar3 != *(int *)(param_1 + 0xb4)) || (local_14[2] != *(int *)(param_1 + 0xb0))) { + piVar3 = (int *)(param_1 + 0x48); + (**(code **)(*(int *)(param_1 + 0x48) + 0x18))(piVar3,*(undefined4 *)(param_1 + 0xa0)); + iVar1 = *(int *)(*(int *)(param_1 + 0x1c) + 0x4c); + puVar2 = FUN_00442aec(iVar1 + 4,*(char **)(param_1 + 0x9c),0); + FUN_004c2ff8(piVar3,0,0,local_8 + -1,*(int *)(param_1 + 0xac),*(undefined4 *)(param_1 + 0xa4), + (int)puVar2); + FUN_00442c12(iVar1 + 4,*(char **)(param_1 + 0x9c)); + if (local_8 < local_14[2]) { + (**(code **)(*(int *)(param_1 + 0x48) + 0x24))(piVar3,local_8,0); + (**(code **)(*(int *)(param_1 + 0x48) + 0x48)) + (piVar3,local_14[2] + -1,*(undefined4 *)(param_1 + 0xac)); + } + if (local_14[2] < *(int *)(param_1 + 0xa8)) { + (**(code **)(*(int *)(param_1 + 0x48) + 0x18))(piVar3,*(undefined4 *)(param_1 + 0xa4)); + (**(code **)(*(int *)(param_1 + 0x48) + 0x24))(piVar3,local_14[2],0); + (**(code **)(*(int *)(param_1 + 0x48) + 0x48)) + (piVar3,*(undefined4 *)(param_1 + 0xa8),*(undefined4 *)(param_1 + 0xac)); + } + *(int *)(param_1 + 0xb4) = local_8; + *(int *)(param_1 + 0xb0) = local_14[2]; + } + return; +} + + + +/* @004c4534 file=? name=FUN_004c4534 */ + +bool __cdecl FUN_004c4534(int param_1,int param_2,int param_3,undefined4 param_4,int param_5) + +{ + int iVar1; + int *piVar2; + undefined4 *puVar3; + + piVar2 = (int *)FUN_00402298(0xbc); + if (piVar2 != (int *)0x0) { + FUN_004c4724(piVar2,DAT_00515828,DAT_0051586c,param_5,0,param_1,param_2,param_3, + param_2 + DAT_005158b0,param_3 + DAT_005158b4,&DAT_005158f4,DAT_00515938, + DAT_0051597c,DAT_005159c0,DAT_00515a04,DAT_00515a48,DAT_00515a8c, + s_VertTwoPartBar_005184e4); + } + iVar1 = *(int *)(param_5 + 0x4c); + puVar3 = FUN_00442aec(iVar1 + 4,&DAT_005158f4,0); + if (puVar3 != (undefined4 *)0x0) { + FUN_00442c12(iVar1 + 4,&DAT_005158f4); + } + else { + FUN_004dbb24(&DAT_00524e20,s_VertTwoPartBar__Missing_image__00518722,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_005158f4,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_00518741,(char *)0x0); + } + return puVar3 != (undefined4 *)0x0; +} + + + +/* @004c462c file=? name=FUN_004c462c */ + +bool __cdecl FUN_004c462c(int param_1,int param_2,int param_3,undefined4 param_4,int param_5) + +{ + int iVar1; + int *piVar2; + undefined4 *puVar3; + + piVar2 = (int *)FUN_00402298(0xbc); + if (piVar2 != (int *)0x0) { + FUN_004c4724(piVar2,DAT_00515c70,DAT_00515cb4,param_5,0,param_1,param_2,param_3, + param_2 + DAT_00515cf8,param_3 + DAT_00515cfc,&DAT_00515d3c,DAT_00515d80, + DAT_00515dc4,DAT_00515e08,DAT_00515e4c,DAT_00515e90,&DAT_00514270, + s_VertTwoPartBar_005184e4); + } + iVar1 = *(int *)(param_5 + 0x4c); + puVar3 = FUN_00442aec(iVar1 + 4,&DAT_00515d3c,0); + if (puVar3 != (undefined4 *)0x0) { + FUN_00442c12(iVar1 + 4,&DAT_00515d3c); + } + else { + FUN_004dbb24(&DAT_00524e20,s_VertTwoPartBarNormalized__Missin_00518756,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_00515d3c,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_0051877f,(char *)0x0); + } + return puVar3 != (undefined4 *)0x0; +} + + + +/* @004c4724 file=? name=FUN_004c4724 */ + +int * __cdecl +FUN_004c4724(int *param_1,undefined4 param_2,undefined4 param_3,int param_4,undefined4 param_5, + int param_6,int param_7,int param_8,int param_9,int param_10,char *param_11,int param_12 + ,int param_13,int param_14,undefined4 param_15,undefined4 param_16,undefined4 param_17, + undefined4 param_18) + +{ + int iVar1; + undefined4 *puVar2; + + FUN_00444818(param_1,param_2,param_3,param_4,param_5,param_6,param_18); + *param_1 = (int)&PTR_FUN_00518c78; + iVar1 = FUN_004700ac(param_11); + param_1[0x24] = iVar1; + FUN_00442aec(*(int *)(param_4 + 0x4c) + 4,(char *)param_1[0x24],0); + (**(code **)(param_1[0x12] + 8))(param_1 + 0x12,param_7,param_8,param_9,param_10); + param_1[0x25] = param_12; + param_1[0x26] = param_13; + param_1[0x27] = param_14; + param_1[0x28] = (param_9 - param_7) + -1; + param_1[0x29] = param_10 - param_8; + puVar2 = (undefined4 *)FUN_00402298(0x18); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_00474855(puVar2,0,param_1 + 0x2c,param_15); + } + (**(code **)(*param_1 + 0x34))(param_1,puVar2); + puVar2 = (undefined4 *)FUN_00402298(0x18); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_00474855(puVar2,0,param_1 + 0x2d,param_16); + } + (**(code **)(*param_1 + 0x34))(param_1,puVar2); + puVar2 = (undefined4 *)FUN_00402298(0x18); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_00474855(puVar2,0,param_1 + 0x2e,param_17); + } + (**(code **)(*param_1 + 0x34))(param_1,puVar2); + return param_1; +} + + + +/* @004c486c file=? name=FUN_004c486c */ + +void __cdecl FUN_004c486c(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_00518c78; + FUN_00442c12(*(int *)(param_1[7] + 0x4c) + 4,(char *)param_1[0x24]); + FUN_004022e8((int *)param_1[0x24]); + param_1[0x24] = 0; + FUN_00444870(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004c48c8 file=? name=FUN_004c48c8 */ + +void FUN_004c48c8(void) + +{ + FUN_004448ac(); + return; +} + + + +/* @004c48d8 file=? name=FUN_004c48d8 */ + +void FUN_004c48d8(void) + +{ + return; +} + + + +/* @004c48e0 file=? name=FUN_004c48e0 */ + +void __cdecl FUN_004c48e0(int param_1) + +{ + *(undefined4 *)(param_1 + 0xac) = 0; + *(undefined4 *)(param_1 + 0xa8) = *(undefined4 *)(param_1 + 0xa0); + return; +} + + + +/* @004c48fc file=? name=FUN_004c48fc */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004c48fc(int param_1) + +{ + int iVar1; + undefined4 *puVar2; + int *piVar3; + int *piVar4; + int local_14 [3]; + int local_8; + + if (_DAT_004c4b00 <= *(float *)(param_1 + 0xb0)) { + if (*(float *)(param_1 + 0xb8) < *(float *)(param_1 + 0xb0)) { + *(undefined4 *)(param_1 + 0xb0) = *(undefined4 *)(param_1 + 0xb8); + } + } + else { + *(undefined4 *)(param_1 + 0xb0) = 0; + } + local_8 = FUN_004dcd94(); + local_14[2] = FUN_004dcd94(); + local_14[1] = 0; + if (local_8 < 0) { + piVar3 = local_14 + 1; + } + else { + piVar3 = &local_8; + } + if (*(int *)(param_1 + 0xa4) <= *piVar3) { + piVar3 = (int *)(param_1 + 0xa4); + } + local_8 = *piVar3; + local_14[0] = 0; + if (local_14[2] < 0) { + piVar4 = local_14; + } + else { + piVar4 = local_14 + 2; + } + if (*(int *)(param_1 + 0xa4) <= *piVar4) { + piVar4 = (int *)(param_1 + 0xa4); + } + local_14[2] = *piVar4; + if ((*piVar3 != *(int *)(param_1 + 0xac)) || (local_14[2] != *(int *)(param_1 + 0xa8))) { + iVar1 = *(int *)(*(int *)(param_1 + 0x1c) + 0x4c); + puVar2 = FUN_00442aec(iVar1 + 4,*(char **)(param_1 + 0x90),0); + piVar3 = (int *)(param_1 + 0x48); + (**(code **)(*(int *)(param_1 + 0x48) + 0x18))(piVar3,*(undefined4 *)(param_1 + 0x94)); + FUN_004c2ff8(piVar3,0,0,*(int *)(param_1 + 0xa0),local_8 + -1,*(undefined4 *)(param_1 + 0x9c), + (int)puVar2); + FUN_00442c12(iVar1 + 4,*(char **)(param_1 + 0x90)); + if (local_8 < local_14[2]) { + (**(code **)(*(int *)(param_1 + 0x48) + 0x18))(piVar3,*(undefined4 *)(param_1 + 0x98)); + (**(code **)(*(int *)(param_1 + 0x48) + 0x24))(piVar3,0,local_8); + (**(code **)(*(int *)(param_1 + 0x48) + 0x48)) + (piVar3,*(undefined4 *)(param_1 + 0xa0),local_14[2] + -1); + } + if (local_14[2] < *(int *)(param_1 + 0xa4)) { + (**(code **)(*(int *)(param_1 + 0x48) + 0x18))(piVar3,*(undefined4 *)(param_1 + 0x9c)); + (**(code **)(*(int *)(param_1 + 0x48) + 0x24))(piVar3,0,local_14[2]); + (**(code **)(*(int *)(param_1 + 0x48) + 0x48)) + (piVar3,*(undefined4 *)(param_1 + 0xa0),*(undefined4 *)(param_1 + 0xa4)); + } + *(int *)(param_1 + 0xac) = local_8; + *(int *)(param_1 + 0xa8) = local_14[2]; + } + return; +} + + + +/* @004c4b08 file=? name=FUN_004c4b08 */ + +undefined4 __cdecl FUN_004c4b08(int param_1,int param_2,int param_3,undefined4 param_4,int param_5) + +{ + int *piVar1; + + piVar1 = (int *)FUN_00402298(0xb0); + if (piVar1 != (int *)0x0) { + FUN_004c4b84(piVar1,DAT_005160b8,DAT_005160fc,param_5,0,param_1,param_2,param_3, + param_2 + DAT_00516140,param_3 + DAT_00516144,DAT_00516184,DAT_005161c8, + DAT_0051620c,DAT_00516250,s_VertNormalSlider_005184f3); + } + return 1; +} + + + +/* @004c4b84 file=? name=FUN_004c4b84 */ + +int * __cdecl +FUN_004c4b84(int *param_1,undefined4 param_2,undefined4 param_3,int param_4,undefined4 param_5, + int param_6,int param_7,int param_8,int param_9,int param_10,int param_11,int param_12, + int param_13,undefined4 param_14,undefined4 param_15) + +{ + int *piVar1; + undefined4 *puVar2; + + FUN_00444818(param_1,param_2,param_3,param_4,param_5,param_6,param_15); + *param_1 = (int)&PTR_FUN_00518c34; + piVar1 = param_1 + 0x12; + (**(code **)(param_1[0x12] + 8))(piVar1,param_7,param_8,param_9,param_10); + (**(code **)(param_1[0x12] + 0xc))(piVar1,3); + (**(code **)(param_1[0x12] + 0x18))(piVar1,param_11); + param_1[0x29] = param_11; + param_1[0x2a] = param_12; + param_1[0x27] = param_13; + param_1[0x25] = (param_9 - param_7) + -1; + param_1[0x26] = param_10 - param_8; + param_1[0x28] = (param_10 - param_8) - param_1[0x27]; + puVar2 = (undefined4 *)FUN_00402298(0x18); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_00474855(puVar2,0,param_1 + 0x2b,param_14); + } + (**(code **)(*param_1 + 0x34))(param_1,puVar2); + return param_1; +} + + + +/* @004c4c68 file=? name=FUN_004c4c68 */ + +void __cdecl FUN_004c4c68(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_00518c34; + FUN_00444870(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004c4c94 file=? name=FUN_004c4c94 */ + +void FUN_004c4c94(void) + +{ + FUN_004448ac(); + return; +} + + + +/* @004c4ca4 file=? name=FUN_004c4ca4 */ + +void FUN_004c4ca4(void) + +{ + return; +} + + + +/* @004c4cac file=? name=FUN_004c4cac */ + +void __cdecl FUN_004c4cac(int param_1) + +{ + *(undefined4 *)(param_1 + 0x90) = 0xffffffff; + return; +} + + + +/* @004c4cc0 file=? name=FUN_004c4cc0 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004c4cc0(int param_1) + +{ + int iVar1; + + if (_DAT_004c4d3c <= *(float *)(param_1 + 0xac)) { + if (_DAT_004c4d40 < *(float *)(param_1 + 0xac)) { + *(undefined4 *)(param_1 + 0xac) = 0x3f800000; + } + } + else { + *(undefined4 *)(param_1 + 0xac) = 0; + } + iVar1 = FUN_004dcd94(); + if (iVar1 != *(int *)(param_1 + 0x90)) { + FUN_004c4d48(param_1); + *(int *)(param_1 + 0x90) = iVar1; + FUN_004c4d48(param_1); + } + return; +} + + + +/* @004c4d48 file=? name=FUN_004c4d48 */ + +void __cdecl FUN_004c4d48(int param_1) + +{ + if (-1 < *(int *)(param_1 + 0x90)) { + (**(code **)(*(int *)(param_1 + 0x48) + 0x24))(param_1 + 0x48,0,*(int *)(param_1 + 0x90)); + (**(code **)(*(int *)(param_1 + 0x48) + 0x4c)) + (param_1 + 0x48,*(undefined4 *)(param_1 + 0x94),*(undefined4 *)(param_1 + 0x9c)); + } + return; +} + + + +/* @004c4d88 file=? name=FUN_004c4d88 */ + +undefined4 * __cdecl +FUN_004c4d88(undefined4 *param_1,undefined4 param_2,undefined4 param_3,int param_4, + undefined4 param_5,int param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9, + char *param_10,undefined4 param_11,undefined4 param_12,int param_13,int param_14, + undefined4 param_15) + +{ + undefined4 uVar1; + undefined4 *puVar2; + int *piVar3; + + FUN_00444818(param_1,param_2,param_3,param_4,param_5,param_6,param_15); + *param_1 = &PTR_FUN_00518bf0; + param_1[0x26] = param_11; + param_1[0x27] = param_12; + param_1[0x28] = param_13; + param_1[0x24] = param_9; + uVar1 = FUN_004700ac(param_10); + param_1[0x25] = uVar1; + if (param_1[0x24] == 0) { + piVar3 = FUN_00442d2b(*(int *)(param_4 + 0x4c) + 0x20,(char *)param_1[0x25],0); + param_1[0x29] = *piVar3 / param_13; + param_1[0x2a] = piVar3[1] / param_14; + } + else { + puVar2 = FUN_00442aec(*(int *)(param_4 + 0x4c) + 4,(char *)param_1[0x25],0); + param_1[0x29] = (int)puVar2[3] / param_13; + param_1[0x2a] = (int)puVar2[4] / param_14; + } + (**(code **)(param_1[0x12] + 0x10))(param_1 + 0x12,param_7,param_8); + return param_1; +} + + + +/* @004c4e7c file=? name=FUN_004c4e7c */ + +void __cdecl FUN_004c4e7c(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_00518bf0; + if (param_1[0x24] == 0) { + FUN_00442e51(*(int *)(param_1[7] + 0x4c) + 0x20,(char *)param_1[0x25]); + } + else { + FUN_00442c12(*(int *)(param_1[7] + 0x4c) + 4,(char *)param_1[0x25]); + } + FUN_004022e8((int *)param_1[0x25]); + param_1[0x25] = 0; + FUN_00444870(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004c4efc file=? name=FUN_004c4efc */ + +void FUN_004c4efc(void) + +{ + FUN_004448ac(); + return; +} + + + +/* @004c4f0c file=? name=FUN_004c4f0c */ + +void FUN_004c4f0c(void) + +{ + return; +} + + + +/* @004c4f14 file=? name=FUN_004c4f14 */ + +void __cdecl FUN_004c4f14(int param_1) + +{ + *(undefined4 *)(param_1 + 0xb0) = 0xffffffff; + return; +} + + + +/* @004c4f28 file=? name=FUN_004c4f28 */ + +void __cdecl FUN_004c4f28(int param_1) + +{ + int iVar1; + undefined4 *puVar2; + int *piVar3; + int iVar4; + int iVar5; + int iVar6; + int iVar7; + + if (*(int *)(param_1 + 0xac) != *(int *)(param_1 + 0xb0)) { + *(int *)(param_1 + 0xb0) = *(int *)(param_1 + 0xac); + iVar7 = *(int *)(param_1 + 0xa0); + if (iVar7 == 1) { + iVar6 = 0; + iVar7 = *(int *)(param_1 + 0xac); + } + else { + iVar6 = *(int *)(param_1 + 0xac) % iVar7; + iVar7 = *(int *)(param_1 + 0xac) / iVar7; + } + iVar6 = iVar6 * *(int *)(param_1 + 0xa4); + iVar4 = *(int *)(param_1 + 0xa4) + iVar6 + -1; + iVar7 = iVar7 * *(int *)(param_1 + 0xa8); + iVar5 = *(int *)(param_1 + 0xa8) + iVar7 + -1; + if (*(int *)(param_1 + 0x90) == 0) { + iVar1 = *(int *)(*(int *)(param_1 + 0x1c) + 0x4c); + piVar3 = FUN_00442d2b(iVar1 + 0x20,*(char **)(param_1 + 0x94),0); + (**(code **)(*(int *)(param_1 + 0x48) + 0x5c)) + (param_1 + 0x48,1,0,piVar3,iVar6,iVar7,iVar4,iVar5); + FUN_00442e51(iVar1 + 0x20,*(char **)(param_1 + 0x94)); + } + else { + (**(code **)(*(int *)(param_1 + 0x48) + 0x18))(param_1 + 0x48,*(undefined4 *)(param_1 + 0x98)) + ; + iVar1 = *(int *)(*(int *)(param_1 + 0x1c) + 0x4c); + puVar2 = FUN_00442aec(iVar1 + 4,*(char **)(param_1 + 0x94),0); + (**(code **)(*(int *)(param_1 + 0x48) + 0x58)) + (param_1 + 0x48,*(undefined4 *)(param_1 + 0x9c),0,puVar2,iVar6,iVar7,iVar4,iVar5); + FUN_00442c12(iVar1 + 4,*(char **)(param_1 + 0x94)); + } + } + return; +} + + + +/* @004c5068 file=? name=FUN_004c5068 */ + +bool __cdecl +FUN_004c5068(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,int param_5) + +{ + int iVar1; + int *piVar2; + undefined4 *puVar3; + + piVar2 = (int *)FUN_00402298(0xb4); + if (piVar2 != (int *)0x0) { + FUN_004c5148(piVar2,DAT_00516500,DAT_00516544,param_5,0,param_1,param_2,param_3,&DAT_00516588, + DAT_005165cc,DAT_00516610,DAT_00516654,DAT_00516698,DAT_005166dc, + s_OneOfSeveralInt_00518511); + } + iVar1 = *(int *)(param_5 + 0x4c); + puVar3 = FUN_00442aec(iVar1 + 4,&DAT_00516588,0); + if (puVar3 != (undefined4 *)0x0) { + FUN_00442c12(iVar1 + 4,&DAT_00516588); + } + else { + FUN_004dbb24(&DAT_00524e20,s_OneOfSeveralInt__Missing_image__005187a3,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_00516588,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_005187c3,(char *)0x0); + } + return puVar3 != (undefined4 *)0x0; +} + + + +/* @004c5148 file=? name=FUN_004c5148 */ + +int * __cdecl +FUN_004c5148(int *param_1,undefined4 param_2,undefined4 param_3,int param_4,undefined4 param_5, + int param_6,undefined4 param_7,undefined4 param_8,char *param_9,undefined4 param_10, + undefined4 param_11,int param_12,int param_13,undefined4 param_14,undefined4 param_15) + +{ + undefined4 *puVar1; + + FUN_004c4d88(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8,1,param_9,param_10, + param_11,param_12,param_13,param_15); + *param_1 = (int)&PTR_FUN_00518bac; + param_1[0x2b] = 0; + puVar1 = (undefined4 *)FUN_00402298(0x18); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_004749de(puVar1,0,param_1 + 0x2b,param_14); + } + (**(code **)(*param_1 + 0x34))(param_1,puVar1); + return param_1; +} + + + +/* @004c51d8 file=? name=FUN_004c51d8 */ + +void __cdecl FUN_004c51d8(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_00518bac; + FUN_004c4e7c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004c5204 file=? name=FUN_004c5204 */ + +bool __cdecl +FUN_004c5204(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,int param_5) + +{ + int iVar1; + int *piVar2; + + piVar2 = (int *)FUN_00402298(0xb4); + if (piVar2 != (int *)0x0) { + FUN_004c52d8(piVar2,DAT_00516948,DAT_0051698c,param_5,0,param_1,param_2,param_3,&DAT_005169d0, + DAT_00516a14,DAT_00516a58,DAT_00516a9c,s_OneOfSeveralPixInt_00518521); + } + iVar1 = *(int *)(param_5 + 0x4c); + piVar2 = FUN_00442d2b(iVar1 + 0x20,&DAT_005169d0,0); + if (piVar2 != (int *)0x0) { + FUN_00442e51(iVar1 + 0x20,&DAT_005169d0); + } + else { + FUN_004dbb24(&DAT_00524e20,s_OneOfSeveralPixInt__Missing_imag_005187d9,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_005169d0,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_005187fc,(char *)0x0); + } + return piVar2 != (int *)0x0; +} + + + +/* @004c52d8 file=? name=FUN_004c52d8 */ + +int * __cdecl +FUN_004c52d8(int *param_1,undefined4 param_2,undefined4 param_3,int param_4,undefined4 param_5, + int param_6,undefined4 param_7,undefined4 param_8,char *param_9,int param_10, + int param_11,undefined4 param_12,undefined4 param_13) + +{ + undefined4 *puVar1; + + FUN_004c4d88(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8,0,param_9,0,0, + param_10,param_11,param_13); + *param_1 = (int)&PTR_FUN_00518b68; + param_1[0x2b] = 0; + puVar1 = (undefined4 *)FUN_00402298(0x18); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_004749de(puVar1,0,param_1 + 0x2b,param_12); + } + (**(code **)(*param_1 + 0x34))(param_1,puVar1); + return param_1; +} + + + +/* @004c5364 file=? name=FUN_004c5364 */ + +void __cdecl FUN_004c5364(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_00518b68; + FUN_004c4e7c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004c5390 file=? name=FUN_004c5390 */ + +bool __cdecl +FUN_004c5390(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,int param_5) + +{ + int iVar1; + int *piVar2; + undefined4 *puVar3; + + piVar2 = (int *)FUN_00402298(0xb4); + if (piVar2 != (int *)0x0) { + FUN_004c5470(piVar2,DAT_00516d90,DAT_00516dd4,param_5,0,param_1,param_2,param_3,&DAT_00516e18, + DAT_00516e5c,DAT_00516ea0,DAT_00516ee4,DAT_00516f28,DAT_00516f6c, + s_OneOfSeveralStates_00518534); + } + iVar1 = *(int *)(param_5 + 0x4c); + puVar3 = FUN_00442aec(iVar1 + 4,&DAT_00516e18,0); + if (puVar3 != (undefined4 *)0x0) { + FUN_00442c12(iVar1 + 4,&DAT_00516e18); + } + else { + FUN_004dbb24(&DAT_00524e20,s_OneOfSeveralStates__Missing_imag_00518812,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_00516e18,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_00518835,(char *)0x0); + } + return puVar3 != (undefined4 *)0x0; +} + + + +/* @004c5470 file=? name=FUN_004c5470 */ + +int * __cdecl +FUN_004c5470(int *param_1,undefined4 param_2,undefined4 param_3,int param_4,undefined4 param_5, + int param_6,undefined4 param_7,undefined4 param_8,char *param_9,undefined4 param_10, + undefined4 param_11,int param_12,int param_13,undefined4 param_14,undefined4 param_15) + +{ + undefined4 *puVar1; + + FUN_004c4d88(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8,1,param_9,param_10, + param_11,param_12,param_13,param_15); + *param_1 = (int)&PTR_FUN_00518b24; + param_1[0x2b] = 0; + puVar1 = (undefined4 *)FUN_00402298(0x18); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_004c3324(puVar1,0,param_1 + 0x2b,param_14); + } + (**(code **)(*param_1 + 0x34))(param_1,puVar1); + return param_1; +} + + + +/* @004c5500 file=? name=FUN_004c5500 */ + +void __cdecl FUN_004c5500(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_00518b24; + FUN_004c4e7c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004c552c file=? name=FUN_004c552c */ + +void __cdecl FUN_004c552c(int param_1) + +{ + if (*(int *)(param_1 + 0xac) < 0) { + *(undefined4 *)(param_1 + 0xac) = 0; + } + FUN_004c4f28(param_1); + return; +} + + + +/* @004c554c file=? name=FUN_004c554c */ + +bool __cdecl +FUN_004c554c(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,int param_5) + +{ + int iVar1; + undefined4 *puVar2; + + puVar2 = (undefined4 *)FUN_00402298(0xc0); + if (puVar2 != (undefined4 *)0x0) { + FUN_004c562c(puVar2,DAT_005171d8,DAT_0051721c,param_5,0,param_1,param_2,param_3,DAT_00517260, + DAT_005172a4,DAT_005172e8,DAT_0051732c,DAT_00517370,&DAT_005173b4, + s_HeadingPointer_00518547); + } + iVar1 = *(int *)(param_5 + 0x4c); + puVar2 = FUN_00442aec(iVar1 + 4,&DAT_005173b4,0); + if (puVar2 != (undefined4 *)0x0) { + FUN_00442c12(iVar1 + 4,&DAT_005173b4); + } + else { + FUN_004dbb24(&DAT_00524e20,s_HeadingPointer__Missing_font__00518847,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_005173b4,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_00518865,(char *)0x0); + } + return puVar2 != (undefined4 *)0x0; +} + + + +/* @004c562c file=? name=FUN_004c562c */ + +undefined4 * __cdecl +FUN_004c562c(undefined4 *param_1,undefined4 param_2,undefined4 param_3,int param_4, + undefined4 param_5,int param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9, + int param_10,int param_11,undefined4 param_12,undefined4 param_13,char *param_14, + undefined4 param_15) + +{ + int iVar1; + uint uVar2; + undefined4 uVar3; + undefined4 *puVar4; + int iVar5; + int *piVar6; + int iVar7; + + FUN_00444818(param_1,param_2,param_3,param_4,param_5,param_6,param_15); + *param_1 = &PTR_FUN_00518ae0; + FUN_0044a5b4(param_1 + 0x29); + (**(code **)(param_1[0x12] + 0x10))(param_1 + 0x12,param_7,param_8); + param_1[0x24] = param_9; + param_1[0x25] = param_11; + param_1[0x26] = param_12; + param_1[0x27] = param_13; + uVar3 = FUN_004700ac(param_14); + param_1[0x28] = uVar3; + iVar1 = *(int *)(param_1[7] + 0x4c); + puVar4 = FUN_00442aec(iVar1 + 4,param_14,0); + uVar2 = ((int)puVar4[3] / 0xe) * 3; + iVar5 = (int)uVar2 >> 1; + if (iVar5 < 0) { + iVar5 = iVar5 + (uint)((uVar2 & 1) != 0); + } + iVar7 = (int)puVar4[4] >> 1; + if (iVar7 < 0) { + iVar7 = iVar7 + (uint)((puVar4[4] & 1) != 0); + } + piVar6 = (int *)FUN_00402298(0x44); + if (piVar6 == (int *)0x0) { + piVar6 = (int *)0x0; + } + else { + piVar6 = FUN_004700bc(piVar6,iVar1,-iVar5,-iVar7,param_14,3,0,param_11,param_10); + } + param_1[0x2f] = piVar6; + return param_1; +} + + + +/* @004c573c file=? name=FUN_004c573c */ + +void __cdecl FUN_004c573c(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_00518ae0; + FUN_00442c12(*(int *)(param_1[7] + 0x4c) + 4,(char *)param_1[0x28]); + FUN_004022e8((int *)param_1[0x28]); + param_1[0x28] = 0; + FUN_0047018c((int *)param_1[0x2f],3); + param_1[0x2f] = 0; + FUN_0044a5dc(param_1 + 0x29,2); + FUN_00444870(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004c57c0 file=? name=FUN_004c57c0 */ + +void FUN_004c57c0(void) + +{ + FUN_004448ac(); + return; +} + + + +/* @004c57d0 file=? name=FUN_004c57d0 */ + +void __cdecl FUN_004c57d0(int param_1,char *param_2) + +{ + char cVar1; + int *piVar2; + uint uVar3; + uint uVar4; + char *pcVar5; + char *pcVar6; + char local_54 [80]; + + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_HeadingPointer__00518868,(char *)0x0); + uVar3 = 0xffffffff; + do { + pcVar5 = param_2; + if (uVar3 == 0) break; + uVar3 = uVar3 - 1; + pcVar5 = param_2 + 1; + cVar1 = *param_2; + param_2 = pcVar5; + } while (cVar1 != '\0'); + uVar3 = ~uVar3; + pcVar5 = pcVar5 + -uVar3; + pcVar6 = local_54; + for (uVar4 = uVar3 >> 2; uVar4 != 0; uVar4 = uVar4 - 1) { + *(undefined4 *)pcVar6 = *(undefined4 *)pcVar5; + pcVar5 = pcVar5 + 4; + pcVar6 = pcVar6 + 4; + } + for (uVar3 = uVar3 & 3; uVar3 != 0; uVar3 = uVar3 - 1) { + *pcVar6 = *pcVar5; + pcVar5 = pcVar5 + 1; + pcVar6 = pcVar6 + 1; + } + FUN_004d49b8(local_54,&DAT_00518879); + uVar3 = *(uint *)(param_1 + 0x94); + FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_bgColor__0051887d,(char *)0x0); + piVar2 = FUN_004db78c(&DAT_00524e20,uVar3); + FUN_004dbb24(piVar2,&DAT_00518886,(char *)0x0); + uVar3 = *(uint *)(param_1 + 0x90); + FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_fgColor__00518888,(char *)0x0); + piVar2 = FUN_004db78c(&DAT_00524e20,uVar3); + FUN_004dbb24(piVar2,&DAT_00518891,(char *)0x0); + FUN_004448bc(param_1,local_54); + return; +} + + + +/* @004c58e8 file=? name=FUN_004c58e8 */ + +void __cdecl FUN_004c58e8(int param_1) + +{ + *(undefined4 *)(param_1 + 0xb4) = 0xfffffc19; + *(undefined4 *)(param_1 + 0xb8) = 0xfffffc19; + FUN_004703f4(*(int *)(param_1 + 0xbc)); + return; +} + + + +/* @004c5914 file=? name=FUN_004c5914 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_004c5914(int param_1) + +{ + int *piVar1; + int iVar2; + float afStack_30 [3]; + int iStack_24; + int iStack_20; + undefined4 uStack_1c; + undefined4 uStack_18; + float fStack_14; + float fStack_10; + float afStack_c [2]; + + iVar2 = FUN_00417ab4(*(int *)(param_1 + 0x1c) + 0x40); + if (iVar2 != 0) { + FUN_0040954c(afStack_30,(float *)(iVar2 + 0x10c)); + fStack_14 = -afStack_30[0]; + fStack_10 = fStack_14; + FUN_00408328(afStack_c,&fStack_14); + uStack_1c = FUN_004dcd94(); + uStack_18 = FUN_004dcd94(); + iStack_24 = FUN_004dcd94(); + iStack_20 = FUN_004dcd94(); + if ((iStack_24 != *(int *)(param_1 + 0xb4)) || (iStack_20 != *(int *)(param_1 + 0xb8))) { + *(int *)(param_1 + 0xb4) = iStack_24; + iVar2 = param_1 + 0x48; + piVar1 = (int *)(param_1 + 0xa4); + *(int *)(param_1 + 0xb8) = iStack_20; + FUN_0044a650(piVar1,iVar2,*(uint *)(param_1 + 0x94)); + FUN_0044a630((int)piVar1); + (**(code **)(*(int *)(param_1 + 0x48) + 100))(iVar2,piVar1); + (**(code **)(*(int *)(param_1 + 0x48) + 0x18))(iVar2,*(undefined4 *)(param_1 + 0x90)); + (**(code **)(*(int *)(param_1 + 0x48) + 0x24))(iVar2,uStack_1c,uStack_18); + (**(code **)(*(int *)(param_1 + 0x48) + 0x38))(iVar2,iStack_24,iStack_20); + (**(code **)(*(int *)(param_1 + 0x48) + 0x68))(iVar2); + } + iVar2 = FUN_004dcd94(); + if ((float)iVar2 < _DAT_004c5acc) { + FUN_004dcd94(); + } + iVar2 = FUN_004dcd94(); + FUN_00470430(*(int **)(param_1 + 0xbc),(int *)(param_1 + 0x48),(float)iVar2); + } + return; +} + + + +/* @004c591a file=? name=FUN_004c591a */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_004c591a(void) + +{ + int *piVar1; + int iVar2; + int iVar3; + undefined4 uVar4; + int unaff_EBP; + + iVar2 = *(int *)(unaff_EBP + 8); + iVar3 = FUN_00417ab4(*(int *)(iVar2 + 0x1c) + 0x40); + if (iVar3 != 0) { + FUN_0040954c((float *)(unaff_EBP + -0x2c),(float *)(iVar3 + 0x10c)); + *(float *)(unaff_EBP + -0xc) = -*(float *)(unaff_EBP + -0x2c); + *(undefined4 *)(unaff_EBP + -0x10) = *(undefined4 *)(unaff_EBP + -0xc); + FUN_00408328((float *)(unaff_EBP + -8),(float *)(unaff_EBP + -0x10)); + uVar4 = FUN_004dcd94(); + *(undefined4 *)(unaff_EBP + -0x18) = uVar4; + uVar4 = FUN_004dcd94(); + *(undefined4 *)(unaff_EBP + -0x14) = uVar4; + uVar4 = FUN_004dcd94(); + *(undefined4 *)(unaff_EBP + -0x20) = uVar4; + uVar4 = FUN_004dcd94(); + *(undefined4 *)(unaff_EBP + -0x1c) = uVar4; + if ((*(int *)(unaff_EBP + -0x20) != *(int *)(iVar2 + 0xb4)) || + (*(int *)(unaff_EBP + -0x1c) != *(int *)(iVar2 + 0xb8))) { + *(int *)(iVar2 + 0xb4) = *(int *)(unaff_EBP + -0x20); + iVar3 = iVar2 + 0x48; + piVar1 = (int *)(iVar2 + 0xa4); + *(undefined4 *)(iVar2 + 0xb8) = *(undefined4 *)(unaff_EBP + -0x1c); + FUN_0044a650(piVar1,iVar3,*(uint *)(iVar2 + 0x94)); + FUN_0044a630((int)piVar1); + (**(code **)(*(int *)(iVar2 + 0x48) + 100))(iVar3,piVar1); + (**(code **)(*(int *)(iVar2 + 0x48) + 0x18))(iVar3,*(undefined4 *)(iVar2 + 0x90)); + (**(code **)(*(int *)(iVar2 + 0x48) + 0x24)) + (iVar3,*(undefined4 *)(unaff_EBP + -0x18),*(undefined4 *)(unaff_EBP + -0x14)); + (**(code **)(*(int *)(iVar2 + 0x48) + 0x38)) + (iVar3,*(undefined4 *)(unaff_EBP + -0x20),*(undefined4 *)(unaff_EBP + -0x1c)); + (**(code **)(*(int *)(iVar2 + 0x48) + 0x68))(iVar3); + } + uVar4 = FUN_004dcd94(); + *(undefined4 *)(unaff_EBP + -0x30) = uVar4; + if ((float)*(int *)(unaff_EBP + -0x30) < _DAT_004c5acc) { + *(undefined4 *)(unaff_EBP + -0x34) = uVar4; + uVar4 = FUN_004dcd94(); + } + *(undefined4 *)(unaff_EBP + -0x30) = uVar4; + uVar4 = FUN_004dcd94(); + *(undefined4 *)(unaff_EBP + -0x34) = uVar4; + FUN_00470430(*(int **)(iVar2 + 0xbc),(int *)(iVar2 + 0x48),(float)*(int *)(unaff_EBP + -0x34)); + } + return; +} + + + +/* @004c5ad4 file=? name=FUN_004c5ad4 */ + +bool __cdecl +FUN_004c5ad4(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,int param_5) + +{ + int iVar1; + int *piVar2; + undefined4 *puVar3; + + piVar2 = (int *)FUN_00402298(0xb8); + if (piVar2 != (int *)0x0) { + FUN_004c5b7c(piVar2,DAT_00517620,DAT_00517664,param_5,0,param_1,param_2,param_3,&DAT_005176a8, + DAT_005176ec,DAT_00517730,DAT_00517774,DAT_005177b8,DAT_005177fc, + s_LeakGauge_00518556); + } + iVar1 = *(int *)(param_5 + 0x4c) + 4; + puVar3 = FUN_00442aec(iVar1,&DAT_005176a8,0); + if (puVar3 != (undefined4 *)0x0) { + FUN_00442c12(iVar1,&DAT_005176a8); + } + return puVar3 != (undefined4 *)0x0; +} + + + +/* @004c5b7c file=? name=FUN_004c5b7c */ + +int * __cdecl +FUN_004c5b7c(int *param_1,undefined4 param_2,undefined4 param_3,int param_4,undefined4 param_5, + int param_6,undefined4 param_7,undefined4 param_8,char *param_9,int param_10, + int param_11,int param_12,int param_13,undefined4 param_14,undefined4 param_15) + +{ + int iVar1; + undefined4 *puVar2; + + FUN_00444818(param_1,param_2,param_3,param_4,param_5,param_6,param_15); + *param_1 = (int)&PTR_FUN_00518a9c; + (**(code **)(param_1[0x12] + 0x10))(param_1 + 0x12,param_7,param_8); + iVar1 = FUN_004700ac(param_9); + param_1[0x24] = iVar1; + param_1[0x25] = param_10; + param_1[0x26] = param_11; + param_1[0x28] = param_12; + param_1[0x27] = param_12 * 2; + param_1[0x2c] = param_13; + puVar2 = FUN_00442aec(*(int *)(param_4 + 0x4c) + 4,(char *)param_1[0x24],0); + if (puVar2 == (undefined4 *)0x0) { + param_1[0x2a] = 0; + param_1[0x29] = 0; + } + else { + param_1[0x2a] = (int)puVar2[3] / 3; + param_1[0x29] = puVar2[4]; + } + puVar2 = (undefined4 *)FUN_00402298(0x18); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_00474855(puVar2,0,param_1 + 0x2d,param_14); + } + (**(code **)(*param_1 + 0x34))(param_1,puVar2); + return param_1; +} + + + +/* @004c5c80 file=? name=FUN_004c5c80 */ + +void __cdecl FUN_004c5c80(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_00518a9c; + FUN_00442c12(*(int *)(param_1[7] + 0x4c) + 4,(char *)param_1[0x24]); + FUN_004022e8((int *)param_1[0x24]); + param_1[0x24] = 0; + FUN_00444870(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004c5cdc file=? name=FUN_004c5cdc */ + +void FUN_004c5cdc(void) + +{ + FUN_004448ac(); + return; +} + + + +/* @004c5cec file=? name=FUN_004c5cec */ + +void FUN_004c5cec(void) + +{ + return; +} + + + +/* @004c5cf4 file=? name=FUN_004c5cf4 */ + +void __cdecl FUN_004c5cf4(int param_1) + +{ + *(undefined4 *)(param_1 + 0xac) = 0xffffffff; + return; +} + + + +/* @004c5d08 file=? name=FUN_004c5d08 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004c5d08(int param_1) + +{ + int iVar1; + int iVar2; + int iVar3; + undefined4 *puVar4; + int iVar5; + int iVar6; + + iVar1 = *(int *)(param_1 + 0x9c); + iVar3 = FUN_004dcd94(); + if (iVar3 < 0) { + iVar3 = 0; + } + if (iVar1 < iVar3) { + iVar3 = iVar1; + } + if ((_DAT_0050e3d8 < *(float *)(param_1 + 0xb4)) && (iVar3 < 1)) { + iVar3 = 1; + } + if (iVar3 != *(int *)(param_1 + 0xac)) { + *(int *)(param_1 + 0xac) = iVar3; + iVar1 = *(int *)(*(int *)(param_1 + 0x1c) + 0x4c); + puVar4 = FUN_00442aec(iVar1 + 4,*(char **)(param_1 + 0x90),0); + if (puVar4 != (undefined4 *)0x0) { + iVar6 = -*(int *)(param_1 + 0xa4); + for (iVar2 = *(int *)(param_1 + 0xa0); 0 < iVar2; iVar2 = iVar2 + -1) { + iVar5 = param_1 + 0x48; + (**(code **)(*(int *)(param_1 + 0x48) + 0x24))(iVar5,0,iVar6); + if (iVar3 < 1) { + (**(code **)(*(int *)(param_1 + 0x48) + 0x18))(iVar5,*(undefined4 *)(param_1 + 0x94)); + iVar5 = 0; + } + else if (iVar3 == 1) { + (**(code **)(*(int *)(param_1 + 0x48) + 0x18))(iVar5,*(undefined4 *)(param_1 + 0x98)); + iVar5 = *(int *)(param_1 + 0xa8); + } + else { + (**(code **)(*(int *)(param_1 + 0x48) + 0x18))(iVar5,*(undefined4 *)(param_1 + 0x98)); + iVar5 = *(int *)(param_1 + 0xa8) * 2; + } + (**(code **)(*(int *)(param_1 + 0x48) + 0x54)) + (param_1 + 0x48,0,puVar4,iVar5,0,*(int *)(param_1 + 0xa8) + iVar5, + *(undefined4 *)(param_1 + 0xa4)); + iVar3 = iVar3 + -2; + iVar6 = iVar6 - *(int *)(param_1 + 0xa4); + } + } + FUN_00442c12(iVar1 + 4,*(char **)(param_1 + 0x90)); + } + return; +} + + + +/* @004c5e84 file=? name=FUN_004c5e84 */ + +undefined4 * __cdecl +FUN_004c5e84(undefined4 *param_1,undefined4 param_2,undefined4 param_3,int param_4, + undefined4 param_5,int param_6,undefined4 param_7,undefined4 param_8,char *param_9, + undefined4 param_10,undefined4 param_11,undefined4 param_12) + +{ + undefined4 uVar1; + undefined4 *puVar2; + + FUN_00444818(param_1,param_2,param_3,param_4,param_5,param_6,param_12); + *param_1 = &PTR_FUN_00518a58; + (**(code **)(param_1[0x12] + 0x10))(param_1 + 0x12,param_7,param_8); + uVar1 = FUN_004700ac(param_9); + param_1[0x24] = uVar1; + param_1[0x25] = param_10; + param_1[0x26] = param_11; + puVar2 = FUN_00442aec(*(int *)(param_4 + 0x4c) + 4,(char *)param_1[0x24],0); + if (puVar2 == (undefined4 *)0x0) { + param_1[0x27] = 0; + param_1[0x28] = 0; + } + else { + param_1[0x27] = puVar2[3]; + param_1[0x28] = puVar2[4]; + } + return param_1; +} + + + /* @004c5f30 file=? name=FUN_004c5f30 */ void __cdecl FUN_004c5f30(int *param_1,byte param_2) @@ -97,6 +4218,36 @@ void __cdecl FUN_004c5fb8(int param_1) +/* @004c60f4 file=? name=FUN_004c60f4 */ + +bool __cdecl +FUN_004c60f4(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,int param_5) + +{ + int iVar1; + int *piVar2; + undefined4 *puVar3; + + piVar2 = (int *)FUN_00402298(0xac); + if (piVar2 != (int *)0x0) { + FUN_004c61c8(piVar2,DAT_00517a68,DAT_00517aac,param_5,0,param_1,param_2,param_3,&DAT_00517af0, + DAT_00517b34,DAT_00517b78,DAT_00517bbc,s_BitMapInverseWipeScalar_00518572); + } + iVar1 = *(int *)(param_5 + 0x4c); + puVar3 = FUN_00442aec(iVar1 + 4,&DAT_00517af0,0); + if (puVar3 != (undefined4 *)0x0) { + FUN_00442c12(iVar1 + 4,&DAT_00517af0); + } + else { + FUN_004dbb24(&DAT_00524e20,s_BitMapInverseWipeScalar__Missing_005188b5,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_00517af0,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_005188de,(char *)0x0); + } + return puVar3 != (undefined4 *)0x0; +} + + + /* @004c61c8 file=? name=FUN_004c61c8 */ int * __cdecl @@ -148,6 +4299,18 @@ FUN_004c6244(int *param_1,undefined4 param_2,undefined4 param_3,int param_4,unde +/* @004c62d8 file=? name=FUN_004c62d8 */ + +void __cdecl FUN_004c62d8(int param_1) + +{ + *(float *)(param_1 + 0xa4) = *(float *)(param_1 + 0xc0) * *(float *)(param_1 + 0xa4); + FUN_00474300(param_1); + return; +} + + + /* @004c62fc file=? name=FUN_004c62fc */ undefined4 __cdecl @@ -208,6 +4371,38 @@ FUN_004c6394(int *param_1,undefined4 param_2,undefined4 param_3,int param_4,unde +/* @004c6488 file=? name=FUN_004c6488 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004c6488(int param_1) + +{ + float10 fVar1; + + if (_DAT_004c651c <= *(float *)(param_1 + 0xc4)) { + *(float *)(param_1 + 0xa4) = + (*(float *)(param_1 + 0xc0) / *(float *)(param_1 + 0xc4)) * *(float *)(param_1 + 200); + fVar1 = FUN_004dcd00((double)*(float *)(param_1 + 0xa4)); + *(float *)(param_1 + 0xa4) = (float)fVar1; + if (_DAT_004c6520 <= *(float *)(param_1 + 0xa4)) { + if (_DAT_004c651c < *(float *)(param_1 + 0xa4)) { + *(undefined4 *)(param_1 + 0xa4) = 0x3f800000; + } + } + else { + *(undefined4 *)(param_1 + 0xa4) = 0; + } + } + else { + *(undefined4 *)(param_1 + 0xa4) = 0; + } + FUN_00474300(param_1); + return; +} + + + /* @004c668d file=? name=FUN_004c668d */ void __cdecl FUN_004c668d(int *param_1,byte param_2) @@ -1875,6 +6070,57 @@ void __cdecl FUN_004c8db0(int *param_1) +/* @004c8df4 file=? name=FUN_004c8df4 */ + +int * __cdecl +FUN_004c8df4(int *param_1,undefined4 param_2,int param_3,undefined4 param_4,int param_5,int param_6, + int param_7,int param_8,undefined4 param_9,char *param_10,char *param_11,char *param_12, + int param_13,undefined4 param_14) + +{ + undefined4 uVar1; + int iVar2; + undefined4 *puVar3; + int *piVar4; + + FUN_004c8140(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9,param_10, + param_11,param_12,param_13,param_14); + *param_1 = (int)&PTR_FUN_00519f88; + uVar1 = FUN_004442dc(); + param_1[0x33] = 0; + iVar2 = FUN_00447f1c(param_3,param_10); + puVar3 = (undefined4 *)FUN_00402298(0xcc); + if (puVar3 == (undefined4 *)0x0) { + puVar3 = (undefined4 *)0x0; + } + else { + puVar3 = FUN_004c6798(puVar3,0xffff,param_9,param_3,0,iVar2,param_8,param_1 + 0x33, + s_edestryd_pcc_00519d99,0,s_EngrGraph_00519a2e); + } + param_1[0x34] = (int)puVar3; + piVar4 = (int *)FUN_00402298(0xb4); + if (piVar4 == (int *)0x0) { + piVar4 = (int *)0x0; + } + else { + piVar4 = FUN_004c5148(piVar4,uVar1,param_9,param_3,param_4,iVar2,0xf,0,s_bteseek_pcc_00519da6, + 0xff,0,1,4,param_8 + 800,s_OneOfSeveralInt_00519989); + } + param_1[0x35] = (int)piVar4; + iVar2 = FUN_0041bfc0(param_8,s_InputVoltage_00519db2); + puVar3 = (undefined4 *)FUN_00402298(0x18); + if (puVar3 == (undefined4 *)0x0) { + puVar3 = (undefined4 *)0x0; + } + else { + puVar3 = FUN_004c3288(puVar3,0,param_1 + 0x33,iVar2); + } + (**(code **)(*param_1 + 0x34))(param_1,puVar3); + return param_1; +} + + + /* @004c8f54 file=? name=FUN_004c8f54 */ void __cdecl FUN_004c8f54(int *param_1,byte param_2) @@ -2810,6 +7056,24 @@ void __cdecl FUN_004ca07c(int param_1) +/* @004ca1a0 file=? name=FUN_004ca1a0 */ + +undefined4 __cdecl +FUN_004ca1a0(int param_1,undefined4 param_2,int param_3,undefined4 param_4,int param_5) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00402298(0x150); + if (puVar1 != (undefined4 *)0x0) { + FUN_004ca208(puVar1,DAT_0051a704,DAT_0051a748,param_5,0,param_1,param_2,param_3,&DAT_0051a78c, + DAT_0051a7d0,DAT_0051a814,DAT_0051a858,s_Ranking_0051bb42); + } + return 1; +} + + + /* @004ca208 file=? name=FUN_004ca208 */ undefined4 * __cdecl @@ -4014,6 +8278,132 @@ void __cdecl FUN_004cb82c(int param_1) +/* @004cbaf0 file=? name=FUN_004cbaf0 */ + +undefined4 FUN_004cbaf0(void) + +{ + int iVar1; + int iVar2; + int iVar3; + uint uVar4; + int *piVar5; + undefined8 uVar6; + int in_stack_00000010; + int in_stack_00000014; + int local_60 [8]; + int *local_40; + int *local_3c; + uint local_38; + int *local_34; + int *local_30; + int *local_2c; + char *local_28; + int local_24; + undefined4 local_20; + undefined4 local_1c; + char *local_18; + int local_14; + char *local_10; + int local_c; + char *local_8; + + local_8 = s_btwarn_pcc_0051cdc7; + iVar2 = 0; + piVar5 = local_60; + do { + *piVar5 = (int)(&DAT_0051c08c + iVar2 * 0x44); + iVar2 = iVar2 + 1; + piVar5 = piVar5 + 1; + } while (iVar2 < 8); + local_c = *(int *)(in_stack_00000010 + 0x124); + iVar2 = 0; + if (0 < local_c) { + do { + if (((iVar2 != 0) && + (iVar1 = *(int *)(*(int *)(in_stack_00000010 + 0x128) + iVar2 * 4), iVar1 != 0)) && + (iVar3 = FUN_0041a1a4(**(int **)(iVar1 + 0xc),0x50f4bc), iVar3 != 0)) { + local_10 = (char *)(iVar1 + 0x1e4); + iVar3 = *(int *)(in_stack_00000014 + 0x4c); + FUN_00442aec(iVar3 + 4,(char *)(iVar1 + 0x224),0); + FUN_00442aec(iVar3 + 4,local_10,0); + uVar4 = *(int *)(iVar1 + 0x1dc) - 1; + if ((int)uVar4 < 0) { + FUN_004dbb24(&DAT_00524e20,s_Auxiliary_screen_position___zero_0051cdd2,(char *)0x0); + } + else if ((int)uVar4 < 0xc) { + iVar3 = *(int *)(&DAT_0051bf34 + uVar4 * 0x1c); + local_14 = *(int *)(&DAT_0051bf38 + uVar4 * 0x1c); + local_18 = (&PTR_DAT_0051bf48)[uVar4 * 7]; + local_1c = *(undefined4 *)(&DAT_0051bf3c + uVar4 * 0x1c); + local_20 = *(undefined4 *)(&DAT_0051bf40 + uVar4 * 0x1c); + local_24 = FUN_00447f1c(in_stack_00000014,(&PTR_DAT_0051bf44)[uVar4 * 7]); + switch(*(undefined4 *)(iVar1 + 4)) { + case 0xbc3: + uVar4 = FUN_0041f98c(in_stack_00000010,&DAT_0051ce73); + local_38 = uVar4; + FUN_004dbb24(&DAT_00524e20,s_MakeVehicleSystems_hud__0051ce77,(char *)0x0); + uVar6 = FUN_004dbd4c(&DAT_00524e20,uVar4); + local_3c = (int *)uVar6; + FUN_004dbb24(local_3c,&DAT_0051ce8f,(char *)0x0); + local_40 = (int *)FUN_00402298(0xf0); + if (local_40 != (int *)0x0) { + FUN_004c8a6c(local_40,local_1c,in_stack_00000014,0,local_24,iVar3,local_14,iVar1, + local_38,local_20,local_18,local_8,local_10,s_edestryd_pcc_0051ce91, + (int)local_60,s_SensorCluster_0051cccf); + } + break; + case 0xbc6: + local_34 = (int *)FUN_00402298(0xd8); + if (local_34 != (int *)0x0) { + FUN_004c8df4(local_34,local_1c,in_stack_00000014,0,local_24,iVar3,local_14,iVar1, + local_20,local_18,local_8,local_10,(int)local_60,s_MyomerCluster_0051ccc1 + ); + } + break; + case 0xbc8: + case 0xbd4: + if (*(int *)(iVar1 + 0x334) == 0) { + local_28 = s_qcircle_pcc_0051ce25; + } + else { + local_28 = s_qcircr_pcc_0051ce1a; + } + local_2c = (int *)FUN_00402298(0xf0); + if (local_2c != (int *)0x0) { + FUN_004c93b0(local_2c,local_1c,in_stack_00000014,0,local_24,iVar3,local_14,iVar1, + local_20,local_18,local_8,local_10,local_28,(int)local_60, + s_EnergyWeaponCluster_0051cceb); + } + break; + case 0xbcd: + case 0xbd0: + local_30 = (int *)FUN_00402298(0x11c); + if (local_30 != (int *)0x0) { + FUN_004c9558(local_30,local_1c,in_stack_00000014,0,local_24,iVar3,local_14,iVar1, + local_20,local_18,local_8,local_10,s_qcircle_pcc_0051ce31,(int)local_60, + s_smlfont_pcc_0051ce3d,s_helv42_pcc_0051ce49,s_ProjWeaponCluster_0051ccff + ); + } + break; + case 0xbce: + FUN_004dbb24(&DAT_00524e20,s_Gauss_rifle_not_yet_supported_0051ce54,(char *)0x0); + } + } + else { + FUN_004dbb24(&DAT_00524e20,s_Illegal_auxiliary_screen_positio_0051cdf4,(char *)0x0); + piVar5 = FUN_004db78c(&DAT_00524e20,uVar4); + FUN_004dbb24(piVar5,&DAT_0051ce18,(char *)0x0); + } + } + iVar2 = iVar2 + 1; + } while (iVar2 < local_c); + } + return 1; +} + + + /* @004cbea0 file=? name=FUN_004cbea0 */ int * __cdecl FUN_004cbea0(int *param_1) @@ -4378,7 +8768,7 @@ FUN_004cc40c(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined undefined4 *local_8; FUN_004530ec(param_1,param_2,param_3); - *param_1 = &PTR_LAB_0051db44; + *param_1 = &PTR_FUN_0051db44; local_8 = param_1 + 0xcd; FUN_004d123b(param_1 + 0xd1,0); param_1[0x94] = param_4; @@ -4712,6 +9102,42 @@ FUN_004cc40c(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined +/* @004cd804 file=? name=FUN_004cd804 */ + +void __cdecl FUN_004cd804(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0051db44; + FUN_00488ab4(param_1[0x96],0); + FUN_0048d42c((undefined4 *)param_1[0x96]); + FUN_00487f78((int *)param_1[0x98]); + FUN_00487f78((int *)param_1[0x9b]); + FUN_00487f78((int *)param_1[0x9c]); + FUN_00487f78((int *)param_1[0x9a]); + FUN_00487f78((int *)param_1[0x9d]); + FUN_00487f78((int *)param_1[0xb7]); + FUN_00487f78((int *)param_1[0xb8]); + FUN_00487f78((int *)param_1[0xb9]); + FUN_00487f78((int *)param_1[0xb6]); + param_1[0xd] = 0; + while (param_1[0xd] < param_1[0xe]) { + FUN_00487f78((int *)param_1[param_1[0xd] + 0xac]); + FUN_00487f78((int *)param_1[param_1[0xd] + 0xa2]); + param_1[0xd] = param_1[0xd] + 1; + } + *(undefined4 *)param_1[0x94] = 0; + FUN_004d125a(param_1 + 0xd1,2); + FUN_00453198(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + /* @004cd918 file=? name=FUN_004cd918 */ undefined4 __cdecl FUN_004cd918(int param_1) @@ -4876,6 +9302,448 @@ FUN_004cdac0(int param_1,float param_2,int param_3,undefined4 *param_4,int param +/* @004cdcf0 file=? name=FUN_004cdcf0 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004cdcf0(int param_1) + +{ + undefined4 uVar1; + int iVar2; + bool bVar3; + int *piVar4; + int iVar5; + undefined4 *puVar6; + uint uVar7; + uint uVar8; + float10 fVar9; + undefined4 local_b8 [6]; + int local_a0 [5]; + undefined4 local_8c [6]; + float local_74; + float local_70; + float local_6c; + undefined4 *local_68; + float local_64; + float local_60; + undefined4 *local_5c; + undefined4 *local_58; + float local_54; + float local_50; + float local_4c; + int local_48; + float local_44; + undefined4 *local_40; + undefined4 *local_3c; + undefined4 *local_38; + float local_34; + undefined4 *local_30; + float local_2c; + undefined4 local_28; + float local_24; + undefined4 local_20; + float *local_1c; + float local_18; + float local_14; + float local_10; + float local_c; + float local_8; + + if ((*(int *)(*(int *)(param_1 + 0x254) + 8) != *(int *)(param_1 + 0x24c)) || + ((*(uint *)(*(int *)(param_1 + 0x254) + 0x24) & 0x20) != (*(uint *)(param_1 + 0x20) & 0x20))) { + *(undefined4 *)(param_1 + 0x24c) = *(undefined4 *)(*(int *)(param_1 + 0x254) + 8); + *(uint *)(param_1 + 0x20) = + *(uint *)(param_1 + 0x20) & 0xffffffdf | *(uint *)(*(int *)(param_1 + 0x254) + 0x24) & 0x20 + ; + FUN_00487fbc(*(int *)(param_1 + 0x25c),1); + if (*(int *)(param_1 + 0x24c) == 0) { + FUN_0048ac30(*(int *)(param_1 + 800),0); + FUN_0048d5d4(*(undefined4 **)(param_1 + 800)); + *(undefined4 *)(param_1 + 0x1e0) = 0; + } + else if (*(int *)(param_1 + 0x24c) == 1) { + if ((*(byte *)(*(int *)(param_1 + 0x254) + 0x24) & 0x20) == 0) { + FUN_00488850(*(int *)(param_1 + 0x25c),*(undefined4 **)(param_1 + 0x264)); + FUN_0048ac30(*(int *)(param_1 + 800),0); + FUN_0048d5d4(*(undefined4 **)(param_1 + 800)); + *(undefined4 *)(param_1 + 0x1e0) = 0; + } + else { + FUN_00488850(*(int *)(param_1 + 0x25c),*(undefined4 **)(param_1 + 0x260)); + } + } + FUN_00488030(*(int *)(param_1 + 0x25c)); + FUN_00488054(*(byte **)(param_1 + 0x25c)); + } + if (*(int *)(param_1 + 0x24c) == 1) { + piVar4 = (int *)FUN_00414b60(); + local_8 = (float)*piVar4 / DAT_0052140c; + iVar5 = FUN_0045961f((float *)(param_1 + 0x244),*(float **)(param_1 + 0x254),0.0001); + if (iVar5 == 0) { + *(undefined4 *)(param_1 + 0x244) = **(undefined4 **)(param_1 + 0x254); + *(undefined4 *)(param_1 + 0x248) = (*(undefined4 **)(param_1 + 0x254))[1]; + FUN_00488b80(local_8c); + FUN_00488bac((int)local_8c,**(float **)(param_1 + 0x254), + *(float *)(*(int *)(param_1 + 0x254) + 4)); + FUN_00487fbc(*(int *)(param_1 + 0x268),1); + FUN_00488718(*(int *)(param_1 + 0x268),local_8c); + FUN_00488030(*(int *)(param_1 + 0x268)); + FUN_00488054(*(byte **)(param_1 + 0x268)); + FUN_00491c2c(*(int *)(param_1 + 0x31c)); + FUN_00491cc4(*(int *)(param_1 + 0x31c),0.12,0x3df5c28f,0x3df5c28f); + FUN_00491c58(*(int *)(param_1 + 0x31c), + (float)(_DAT_004cee64 * (float10)**(float **)(param_1 + 0x254) + + (float10)_DAT_004cee74), + (float)(_DAT_004cee64 * (float10)*(float *)(*(int *)(param_1 + 0x254) + 4) + + (float10)_DAT_004cee70),0xbf800000); + FUN_0048d3e8(*(undefined4 **)(param_1 + 0x31c)); + } + if ((*(byte *)(*(int *)(param_1 + 0x254) + 0x24) & 0x20) != 0) { + iVar5 = FUN_004084fc(*(float **)(param_1 + 0x324),(float *)(param_1 + 0x328),0.0001); + if (iVar5 == 0) { + iVar5 = FUN_004084fc(*(float **)(param_1 + 0x324),(float *)&DAT_004e0f74,0.0001); + if ((iVar5 == 0) && ((*(byte *)(*(int *)(param_1 + 0x254) + 0x24) & 0x10) == 0)) { + if (*(float *)(*(int *)(param_1 + 0x324) + 8) != _DAT_004cee78) { + local_c = ((**(float **)(param_1 + 0x324) - _DAT_004cee7c) / + *(float *)(*(int *)(param_1 + 0x324) + 8)) * (float)_DAT_004cee80; + local_14 = ((**(float **)(param_1 + 0x324) + _DAT_004cee7c) / + *(float *)(*(int *)(param_1 + 0x324) + 8)) * (float)_DAT_004cee80; + } + if (((_DAT_004cee78 <= *(float *)(*(int *)(param_1 + 0x324) + 8)) || + (((float)_DAT_004cee88 < local_c && ((float)_DAT_004cee88 < local_14)))) || + ((local_c < (float)_DAT_004cee90 && (local_14 < (float)_DAT_004cee90)))) { + if (_DAT_004cee98 <= **(float **)(param_1 + 0x324)) { + uVar8 = (uint)(_DAT_004cee9c < **(float **)(param_1 + 0x324)); + } + else { + uVar8 = 0xffffffff; + } + if (_DAT_004cee98 <= *(float *)(param_1 + 0x328)) { + uVar7 = (uint)(_DAT_004cee9c < *(float *)(param_1 + 0x328)); + } + else { + uVar7 = 0xffffffff; + } + if ((uVar8 != uVar7) || (*(int *)(param_1 + 0x1c) != 2)) { + *(undefined4 *)(param_1 + 0x1c) = 2; + FUN_00487fbc(*(int *)(param_1 + 0x284),1); + if (**(float **)(param_1 + 0x324) <= _DAT_004cee78) { + FUN_00488850(*(int *)(param_1 + 0x284),*(undefined4 **)(param_1 + 0x27c)); + } + else { + FUN_00488850(*(int *)(param_1 + 0x284),*(undefined4 **)(param_1 + 0x280)); + } + FUN_00488030(*(int *)(param_1 + 0x284)); + FUN_00488054(*(byte **)(param_1 + 0x284)); + } + } + else { + *(undefined4 *)(param_1 + 0x1c) = 1; + local_10 = ((*(float *)(*(int *)(param_1 + 0x324) + 4) - _DAT_004ceea0) / + *(float *)(*(int *)(param_1 + 0x324) + 8)) * (float)_DAT_004ceea4; + local_18 = ((*(float *)(*(int *)(param_1 + 0x324) + 4) + _DAT_004ceeac) / + *(float *)(*(int *)(param_1 + 0x324) + 8)) * (float)_DAT_004ceea4; + FUN_00487fbc(*(int *)(param_1 + 0x284),1); + FUN_004880e8(*(int *)(param_1 + 0x284)); + FUN_00488408(*(int *)(param_1 + 0x284),local_c,local_10); + FUN_00488408(*(int *)(param_1 + 0x284),local_c,local_18); + FUN_00488408(*(int *)(param_1 + 0x284),local_14,local_18); + FUN_00488408(*(int *)(param_1 + 0x284),local_14,local_10); + FUN_00488408(*(int *)(param_1 + 0x284),local_c,local_10); + FUN_0048814c(*(int *)(param_1 + 0x284)); + FUN_00488030(*(int *)(param_1 + 0x284)); + FUN_00488054(*(byte **)(param_1 + 0x284)); + } + } + else { + if (*(int *)(param_1 + 0x1c) != 0) { + FUN_00487fbc(*(int *)(param_1 + 0x284),1); + FUN_00488030(*(int *)(param_1 + 0x284)); + FUN_00488054(*(byte **)(param_1 + 0x284)); + } + *(undefined4 *)(param_1 + 0x1c) = 0; + } + FUN_00408440((undefined4 *)(param_1 + 0x328),*(undefined4 **)(param_1 + 0x324)); + } + if ((*(uint *)(*(int *)(param_1 + 0x254) + 0x24) & 0xf) != (*(uint *)(param_1 + 0x20) & 0xf)) + { + *(uint *)(param_1 + 0x20) = + *(uint *)(param_1 + 0x20) & 0xfffffff0 | + *(uint *)(*(int *)(param_1 + 0x254) + 0x24) & 0xf; + *(undefined4 *)(param_1 + 0x34) = 0xffffffff; + } + piVar4 = (int *)(param_1 + 0x130); + for (iVar5 = 0; iVar5 < *(int *)(param_1 + 0x38); iVar5 = iVar5 + 1) { + iVar2 = *(int *)(piVar4[10] + 0x14); + if ((*(int *)(*piVar4 + 0x14) != piVar4[-0x15]) || (iVar2 != piVar4[-0xb])) { + piVar4[-0x15] = *(int *)(*piVar4 + 0x14); + piVar4[-0xb] = iVar2; + *(undefined4 *)(param_1 + 0x34) = 0xffffffff; + } + piVar4 = piVar4 + 1; + } + if (*(int *)(param_1 + 0x34) != *(int *)(param_1 + 0x38)) { + FUN_00487fbc(*(int *)(param_1 + 0x2d8),1); + *(undefined4 *)(param_1 + 0x34) = 0; + while (iVar5 = *(int *)(param_1 + 0x34), iVar5 < *(int *)(param_1 + 0x38)) { + if (((*(uint *)(param_1 + 0x3c + iVar5 * 4) & *(uint *)(param_1 + 0x20)) != 0) && + (*(int *)(param_1 + 0x104 + iVar5 * 4) != *(int *)(param_1 + 0xb4 + iVar5 * 4))) { + if (*(int *)(param_1 + 0xdc + iVar5 * 4) == *(int *)(param_1 + 100 + iVar5 * 4)) { + FUN_00488850(*(int *)(param_1 + 0x2d8),*(undefined4 **)(param_1 + 0x288 + iVar5 * 4)); + } + else { + iVar5 = *(int *)(param_1 + 0x34); + if (*(int *)(param_1 + 0xdc + iVar5 * 4) == *(int *)(param_1 + 0x8c + iVar5 * 4)) { + FUN_00488850(*(int *)(param_1 + 0x2d8),*(undefined4 **)(param_1 + 0x2b0 + iVar5 * 4) + ); + } + else { + FUN_00488850(*(int *)(param_1 + 0x2d8), + *(undefined4 **)(param_1 + 0x288 + *(int *)(param_1 + 0x34) * 4)); + } + } + } + *(int *)(param_1 + 0x34) = *(int *)(param_1 + 0x34) + 1; + } + FUN_00488030(*(int *)(param_1 + 0x2d8)); + FUN_00488054(*(byte **)(param_1 + 0x2d8)); + } + iVar5 = FUN_004084fc((float *)(param_1 + 0x334),*(float **)(param_1 + 0x340),0.0001); + if ((iVar5 == 0) || (*(float *)(param_1 + 300) < local_8)) { + *(float *)(param_1 + 300) = local_8 + _DAT_004ceea0; + bVar3 = false; + iVar5 = FUN_004084fc(*(float **)(param_1 + 0x340),(float *)&DAT_004e0f74,0.0001); + if (iVar5 == 0) { + local_1c = *(float **)(param_1 + 0x340); + iVar5 = FUN_004084fc((float *)(param_1 + 0x334),local_1c,0.0001); + if (iVar5 == 0) { + local_24 = **(float **)(param_1 + 0x340); + local_20 = *(undefined4 *)(*(int *)(param_1 + 0x340) + 8); + FUN_004039e3(&local_2c,&local_24); + FUN_00403973(&local_2c,&local_2c,0.05); + local_38 = (undefined4 *)FUN_00402298(0x1c); + if (local_38 != (undefined4 *)0x0) { + local_34 = local_8; + FUN_00415e90(local_38,1); + *local_38 = &PTR_FUN_0051db40; + local_38[5] = local_34; + local_38[3] = local_2c; + local_38[4] = local_28; + local_38[6] = 1; + } + local_30 = local_38; + (**(code **)(*(int *)(param_1 + 0x344) + 4))(param_1 + 0x344); + bVar3 = true; + } + } + local_3c = *(undefined4 **)(param_1 + 0x340); + local_40 = (undefined4 *)(param_1 + 0x334); + FUN_00408440(local_40,local_3c); + FUN_004d1286(local_a0,param_1 + 0x344); + while (puVar6 = (undefined4 *)(**(code **)(local_a0[0] + 0x28))(), + puVar6 != (undefined4 *)0x0) { + local_44 = local_8 - (float)puVar6[5]; + if ((_DAT_004ceeb0 < local_44) && (puVar6[6] != 0)) { + bVar3 = true; + puVar6[6] = 0; + } + if (_DAT_004ceeb4 < local_44) { + if (puVar6 != (undefined4 *)0x0) { + (**(code **)*puVar6)(puVar6); + } + bVar3 = true; + } + } + if (bVar3) { + local_48 = 1; + FUN_00487fbc(*(int *)(param_1 + 0x2e8),1); + FUN_00488630(*(int *)(param_1 + 0x2e8),0x3f400000,0x3f400000,0); + FUN_00488278(*(int *)(param_1 + 0x2e8)); + (**(code **)(local_a0[0] + 4))(); + while (iVar5 = (**(code **)(local_a0[0] + 0x28))(), iVar5 != 0) { + if ((*(int *)(iVar5 + 0x18) != 0) && (local_48 != 0)) { + FUN_004882dc(*(int *)(param_1 + 0x2e8)); + FUN_00488630(*(int *)(param_1 + 0x2e8),0x3f400000,0,0); + FUN_00488278(*(int *)(param_1 + 0x2e8)); + local_48 = 0; + } + FUN_00488408(*(int *)(param_1 + 0x2e8),0,0); + FUN_00488408(*(int *)(param_1 + 0x2e8),*(undefined4 *)(iVar5 + 0xc), + *(undefined4 *)(iVar5 + 0x10)); + } + FUN_004882dc(*(int *)(param_1 + 0x2e8)); + FUN_00488630(*(int *)(param_1 + 0x2e8),0,0x3f400000,0); + FUN_00488030(*(int *)(param_1 + 0x2e8)); + FUN_00488054(*(byte **)(param_1 + 0x2e8)); + } + FUN_004d12e3(local_a0,2); + } + local_4c = **(float **)(param_1 + 500); + local_50 = *(float *)(param_1 + 0x1f8); + fVar9 = FUN_004dcd00((double)(local_50 - local_4c)); + if ((float10)_DAT_004cee9c < fVar9) { + local_58 = *(undefined4 **)(param_1 + 500); + local_5c = (undefined4 *)(param_1 + 0x1f8); + *local_5c = *local_58; + local_54 = *(float *)(param_1 + 0x1f8); + FUN_00488b80(local_8c); + FUN_00488bc8(local_8c,_DAT_004ceeb8 * local_54); + FUN_00488bac((int)local_8c,*(float *)(param_1 + 0x210), + (*(float *)(param_1 + 0x214) - *(float *)(param_1 + 0x21c) * _DAT_004ceebc) - + _DAT_004ceec0); + FUN_00487fbc(*(int *)(param_1 + 0x278),1); + FUN_004887b0(*(int *)(param_1 + 0x278),local_8c,0); + FUN_00488030(*(int *)(param_1 + 0x278)); + FUN_00488054(*(byte **)(param_1 + 0x278)); + } + local_60 = **(float **)(param_1 + 0x1e4); + local_64 = *(float *)(param_1 + 0x1e8); + fVar9 = FUN_004dcd00((double)(local_64 - local_60)); + if ((float10)_DAT_004cee9c < fVar9) { + local_68 = *(undefined4 **)(param_1 + 0x1e4); + *(undefined4 *)(param_1 + 0x1e8) = *local_68; + local_6c = *(float *)(param_1 + 0x1e8); + fVar9 = FUN_004dcd00((double)(local_6c - _DAT_004cee78)); + if ((float10)_DAT_004cee9c < fVar9) { + local_70 = *(float *)(param_1 + 0x218) * _DAT_004ceec4 + *(float *)(param_1 + 0x210); + if (*(float *)(param_1 + 0x1e8) <= _DAT_004cee78) { + local_74 = (*(float *)(param_1 + 0x1e8) / *(float *)(param_1 + 0x1ec)) * + *(float *)(param_1 + 0x218) * _DAT_004ceec4; + FUN_00488b80(local_8c); + FUN_00488bac((int)local_8c,local_74,0.0); + FUN_00487fbc(*(int *)(param_1 + 0x270),1); + FUN_00488278(*(int *)(param_1 + 0x270)); + FUN_00488408(*(int *)(param_1 + 0x270),local_70,*(undefined4 *)(param_1 + 0x214)); + FUN_00488408(*(int *)(param_1 + 0x270),local_70 + local_74, + *(undefined4 *)(param_1 + 0x214)); + FUN_004882dc(*(int *)(param_1 + 0x270)); + FUN_004887b0(*(int *)(param_1 + 0x270),local_8c,0); + FUN_00488030(*(int *)(param_1 + 0x270)); + FUN_00488054(*(byte **)(param_1 + 0x270)); + } + else { + local_74 = (*(float *)(param_1 + 0x1e8) / *(float *)(param_1 + 0x1f0)) * + -(*(float *)(param_1 + 0x218) * _DAT_004ceec4); + FUN_00488b80(local_8c); + FUN_00488bac((int)local_8c,local_74,0.0); + FUN_00487fbc(*(int *)(param_1 + 0x270),1); + FUN_00488278(*(int *)(param_1 + 0x270)); + FUN_00488408(*(int *)(param_1 + 0x270),local_70,*(undefined4 *)(param_1 + 0x214)); + FUN_00488408(*(int *)(param_1 + 0x270),local_70 + local_74, + *(undefined4 *)(param_1 + 0x214)); + FUN_004882dc(*(int *)(param_1 + 0x270)); + FUN_004887b0(*(int *)(param_1 + 0x270),local_8c,0); + FUN_00488030(*(int *)(param_1 + 0x270)); + FUN_00488054(*(byte **)(param_1 + 0x270)); + } + } + else { + FUN_00488b80(local_8c); + FUN_00487fbc(*(int *)(param_1 + 0x270),1); + FUN_004887b0(*(int *)(param_1 + 0x270),local_8c,0); + FUN_00488030(*(int *)(param_1 + 0x270)); + FUN_00488054(*(byte **)(param_1 + 0x270)); + } + } + if (*(float *)(param_1 + 0x228) != **(float **)(param_1 + 0x224)) { + *(undefined4 *)(param_1 + 0x228) = **(undefined4 **)(param_1 + 0x224); + if (*(float *)(param_1 + 0x230) <= *(float *)(param_1 + 0x228)) { + if (*(float *)(param_1 + 0x228) <= *(float *)(param_1 + 0x22c)) { + uVar1 = *(undefined4 *)(param_1 + 0x228); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x22c); + } + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x230); + } + *(undefined4 *)(param_1 + 0x228) = uVar1; + *(float *)(param_1 + 0x23c) = + (*(float *)(param_1 + 0x228) - *(float *)(param_1 + 0x230)) / + *(float *)(param_1 + 0x234); + FUN_00488b80(local_b8); + FUN_00488bac((int)local_b8,0.0,-*(float *)(param_1 + 0x204) * *(float *)(param_1 + 0x23c)); + FUN_00487fbc(*(int *)(param_1 + 0x26c),1); + FUN_00488278(*(int *)(param_1 + 0x26c)); + FUN_00488408(*(int *)(param_1 + 0x26c),*(undefined4 *)(param_1 + 0x1fc), + *(float *)(param_1 + 0x200) - *(float *)(param_1 + 0x204)); + FUN_00488408(*(int *)(param_1 + 0x26c),*(undefined4 *)(param_1 + 0x1fc), + *(float *)(param_1 + 0x200) - + *(float *)(param_1 + 0x204) * *(float *)(param_1 + 0x23c)); + FUN_004882dc(*(int *)(param_1 + 0x26c)); + FUN_004887b0(*(int *)(param_1 + 0x26c),local_b8,0); + FUN_00488030(*(int *)(param_1 + 0x26c)); + FUN_00488054(*(byte **)(param_1 + 0x26c)); + } + if ((*(int *)(*(int *)(param_1 + 0x254) + 0x1c) != *(int *)(param_1 + 0x1e0)) || + (**(int **)(param_1 + 0x184) != *(int *)(param_1 + 0x188))) { + *(undefined4 *)(param_1 + 0x188) = **(undefined4 **)(param_1 + 0x184); + *(undefined4 *)(param_1 + 0x1e0) = *(undefined4 *)(*(int *)(param_1 + 0x254) + 0x1c); + if (*(int *)(param_1 + 0x188) == 0) { + if (*(int *)(param_1 + 0x1dc) != 0) { + *(undefined4 *)(param_1 + 0x1dc) = 0; + FUN_00487fbc(*(int *)(param_1 + 0x2dc),1); + FUN_00488030(*(int *)(param_1 + 0x2dc)); + FUN_00488054(*(byte **)(param_1 + 0x2dc)); + } + if (*(int *)(param_1 + 0x180) != 0) { + FUN_0048ac30(*(int *)(param_1 + 800),0); + FUN_0048d5d4(*(undefined4 **)(param_1 + 800)); + *(undefined4 *)(param_1 + 0x180) = 0; + } + } + else { + if (*(int *)(param_1 + 0x1dc) == 0) { + FUN_00487fbc(*(int *)(param_1 + 0x2dc),1); + FUN_00488850(*(int *)(param_1 + 0x2dc),*(undefined4 **)(param_1 + 0x2e4)); + FUN_00488030(*(int *)(param_1 + 0x2dc)); + FUN_00488054(*(byte **)(param_1 + 0x2dc)); + *(undefined4 *)(param_1 + 0x1dc) = 1; + } + if (*(int *)(param_1 + 0x1e0) == 0) { + iVar5 = 0; + } + else { + iVar5 = *(int *)(*(int *)(param_1 + 0x1e0) + 400); + } + if (iVar5 == 0) { + if (*(int *)(param_1 + 0x180) != 0) { + FUN_0048ac30(*(int *)(param_1 + 800),0); + FUN_0048d5d4(*(undefined4 **)(param_1 + 800)); + *(undefined4 *)(param_1 + 0x180) = 0; + } + } + else { + FUN_0048ab0c(*(int *)(param_1 + 800), + *(int *)(param_1 + 0x2e8 + *(int *)(iVar5 + 0x1e0) * 4)); + FUN_0048ac30(*(int *)(param_1 + 800),1); + FUN_0048d5d4(*(undefined4 **)(param_1 + 800)); + *(undefined4 *)(param_1 + 0x180) = 1; + } + } + } + if (*(int *)(param_1 + 0x1dc) != 0) { + *(float *)(param_1 + 0x240) = *(float *)(param_1 + 0x240) + _DAT_004cee7c; + if (_DAT_004ceec8 <= *(float *)(param_1 + 0x240)) { + *(float *)(param_1 + 0x240) = *(float *)(param_1 + 0x240) - _DAT_004ceec8; + } + FUN_00488b80(local_8c); + FUN_00488bc8(local_8c,*(float *)(param_1 + 0x240)); + FUN_00487fbc(*(int *)(param_1 + 0x274),1); + FUN_004887b0(*(int *)(param_1 + 0x274),local_8c,0); + FUN_00488030(*(int *)(param_1 + 0x274)); + FUN_00488054(*(byte **)(param_1 + 0x274)); + } + } + } + FUN_004531d8(); + return; +} + + + /* @004ceecc file=? name=FUN_004ceecc */ undefined4 * __cdecl @@ -6765,6 +11633,17 @@ void __cdecl FUN_004d196c(int param_1,float param_2) +/* @004d1acc file=? name=FUN_004d1acc */ + +void FUN_004d1acc(void) + +{ + FUN_004b048c(); + return; +} + + + /* @004d1ae4 file=? name=FUN_004d1ae4 */ void __cdecl FUN_004d1ae4(undefined4 param_1,int param_2) @@ -7679,6206 +12558,3 @@ undefined4 * FUN_004d2bbc(void) -/* @004d2be0 file=? name=FUN_004d2be0 */ - -undefined4 * __cdecl FUN_004d2be0(undefined4 *param_1,int param_2,int param_3) - -{ - FUN_0049b54c(param_1,param_2,param_3); - *param_1 = &PTR_FUN_0051e870; - return param_1; -} - - - -/* @004d2c04 file=? name=FUN_004d2c04 */ - -void __cdecl FUN_004d2c04(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_0051e870; - FUN_0049b648(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @004d2c30 file=bt_l4/btl4mssn.cpp name=FUN_004d2c30 */ - -void __cdecl FUN_004d2c30(int param_1,int param_2) - -{ - char *pcVar1; - uint *puVar2; - int *piVar3; - char *pcVar4; - int iVar5; - undefined3 extraout_var; - undefined4 *puVar6; - uint uVar7; - undefined3 extraout_var_00; - undefined3 extraout_var_01; - char *pcVar8; - bool bVar9; - int local_a4 [5]; - int local_90 [5]; - undefined4 local_7c; - int local_78; - float local_74; - int *local_70; - int *local_6c; - int *local_68; - int *local_64; - int *local_60; - int *local_5c; - undefined4 *local_58; - uint *local_54; - uint *local_50; - uint *local_4c; - char *local_48; - char *local_44; - int *local_40; - char *local_3c; - float local_38; - int local_34; - char *local_30; - int *local_2c; - int *local_28; - char *local_24; - char *local_20; - int *local_1c; - char *local_18; - char *local_14; - char *local_10; - char *local_c; - int *local_8; - - local_8 = *(int **)(*(int *)(*(int *)(DAT_004efc94 + 0x2c) + 0x14) + 0x1064); - local_8[3] = local_8[3] + 1; - *(undefined4 *)(param_1 + 0x2c) = 0; - local_c = (char *)0x0; - FUN_00404088(param_2,(char *)local_8[2],s_vehicle_0051e5b5,&local_c); - if (local_c == (char *)0x0) { - FUN_004dbb24(&DAT_00524e20,s_Error__vehicle_not_specified__0051e5bd,(char *)0x0); - FUN_004036a0(1); - } - pcVar4 = FUN_00402300(local_c); - *(char **)(param_1 + 0x2c) = pcVar4; - *(undefined4 *)(param_1 + 0x28) = 0; - local_10 = (char *)0x0; - FUN_00404088(param_2,(char *)local_8[2],s_dropzone_0051e5dc,&local_10); - if (local_10 == (char *)0x0) { - FUN_004dbb24(&DAT_00524e20,s_Error__dropzone_not_specified__0051e5e5,(char *)0x0); - FUN_004036a0(1); - } - pcVar4 = FUN_00402300(local_10); - *(char **)(param_1 + 0x28) = pcVar4; - *(undefined4 *)(param_1 + 0x3c) = 0; - FUN_004040d8(param_2,(char *)local_8[2],s_loadzones_0051e605,(int *)(param_1 + 0x3c)); - *(undefined4 *)(param_1 + 0x20) = 0; - local_14 = (char *)0x0; - FUN_00404088(param_2,(char *)local_8[2],s_color_0051e60f,&local_14); - if (local_14 == (char *)0x0) { - FUN_004dbb24(&DAT_00524e20,s_Error__color_not_specified__0051e615,(char *)0x0); - FUN_004036a0(1); - } - pcVar4 = FUN_00402300(local_14); - *(char **)(param_1 + 0x20) = pcVar4; - local_18 = (char *)0x0; - FUN_00404088(param_2,(char *)local_8[2],s_patch_0051e632,&local_18); - if (local_18 == (char *)0x0) { - FUN_004dbb24(&DAT_00524e20,s_Error__patch_not_specified__0051e638,(char *)0x0); - FUN_004036a0(1); - } - FUN_00402a98((int *)&local_1c,(int *)(param_1 + 0xf8),local_18); - piVar3 = local_1c + 3; - *piVar3 = *piVar3 + -1; - if (*piVar3 == 0) { - FUN_004024d8(local_1c,3); - } - *(undefined4 *)(param_1 + 0x24) = 0; - local_20 = (char *)0x0; - FUN_00404088(param_2,(char *)local_8[2],s_badge_0051e655,&local_20); - if (local_20 == (char *)0x0) { - FUN_004dbb24(&DAT_00524e20,s_Error__badge_not_specified__0051e65b,(char *)0x0); - FUN_004036a0(1); - } - pcVar4 = FUN_00402300(local_20); - *(char **)(param_1 + 0x24) = pcVar4; - iVar5 = FUN_00404088(param_2,(char *)local_8[2],s_badge_0051e678,&local_24); - if (iVar5 == 0) { - FUN_00402a98((int *)&local_2c,(int *)(param_1 + 0xec),s_DEFAULT_0051e67e); - piVar3 = local_2c + 3; - *piVar3 = *piVar3 + -1; - if (*piVar3 == 0) { - FUN_004024d8(local_2c,3); - } - } - else { - FUN_00402a98((int *)&local_28,(int *)(param_1 + 0xec),local_24); - piVar3 = local_28 + 3; - *piVar3 = *piVar3 + -1; - if (*piVar3 == 0) { - FUN_004024d8(local_28,3); - } - } - local_30 = s_Unspecified_0051e686; - iVar5 = FUN_00404088(param_2,(char *)local_8[2],s_experience_0051e692,&local_30); - if (iVar5 == 0) { - pcVar4 = *(char **)(param_1 + 0x2c); - pcVar8 = s_camera_0051e69d; - do { - bVar9 = *pcVar4 == *pcVar8; - if (!bVar9) break; - if (*pcVar4 == '\0') goto LAB_004d2f3e; - pcVar1 = pcVar4 + 1; - bVar9 = *pcVar1 == pcVar8[1]; - if (!bVar9) break; - pcVar4 = pcVar4 + 2; - pcVar8 = pcVar8 + 2; - bVar9 = *pcVar1 == '\0'; - } while (!bVar9); - if (!bVar9) { - FUN_004dbb24((int *)&DAT_00524e68,(char *)local_8[2],(char *)0x0); - FUN_004dbb24((int *)&DAT_00524e68,s_page_missing_expereince__0051e6a4,(char *)0x0); - FUN_004d9c38((int *)&DAT_00524e68); - FUN_0040385c(s_Exiting_0051e6be,s_d__tesla_bt_bt_l4_BTL4MSSN_CPP_0051e6c6,0xf0); - goto LAB_004d3052; - } - } -LAB_004d2f3e: - pcVar8 = s_Unspecified_0051e6e5; - pcVar4 = local_30; - do { - if (*pcVar8 != *pcVar4) goto LAB_004d2f68; - bVar9 = true; - if (*pcVar8 == '\0') break; - pcVar1 = pcVar8 + 1; - if (*pcVar1 != pcVar4[1]) goto LAB_004d2f68; - pcVar8 = pcVar8 + 2; - pcVar4 = pcVar4 + 2; - bVar9 = *pcVar1 == '\0'; - } while (!bVar9); - if (!bVar9) { -LAB_004d2f68: - iVar5 = FUN_004d4b58(local_30,s_novice_0051e6f1); - if (iVar5 == 0) { - *(undefined4 *)(param_1 + 0xe4) = 0; - } - else { - iVar5 = FUN_004d4b58(local_30,s_standard_0051e6f8); - if (iVar5 == 0) { - *(undefined4 *)(param_1 + 0xe4) = 1; - } - else { - iVar5 = FUN_004d4b58(local_30,s_veteran_0051e701); - if (iVar5 == 0) { - *(undefined4 *)(param_1 + 0xe4) = 2; - } - else { - iVar5 = FUN_004d4b58(local_30,s_expert_0051e709); - pcVar4 = local_30; - if (iVar5 == 0) { - *(undefined4 *)(param_1 + 0xe4) = 3; - } - else { - FUN_004dbb24((int *)&DAT_00524e68,(char *)local_8[2],(char *)0x0); - FUN_004dbb24((int *)&DAT_00524e68,s_has_an_unknown_experience_field_o_0051e710, - (char *)0x0); - FUN_004dbb24((int *)&DAT_00524e68,pcVar4,(char *)0x0); - FUN_004d9c38((int *)&DAT_00524e68); - FUN_0040385c(s_Exiting_0051e735,s_d__tesla_bt_bt_l4_BTL4MSSN_CPP_0051e73d,0x108); - } - } - } - } - } -LAB_004d3052: - local_34 = 0; - bVar9 = FUN_004040d8(param_2,(char *)local_8[2],s_advancedDamage_0051e75c,&local_34); - if (CONCAT31(extraout_var,bVar9) != 0) { - if (local_34 == 0) { - *(undefined4 *)(param_1 + 0xf0) = 0; - } - else { - *(undefined4 *)(param_1 + 0xf0) = 1; - } - } - iVar5 = FUN_00404088(param_2,(char *)local_8[2],&DAT_0051e76b,&local_3c); - if (iVar5 == 0) { - FUN_004dbb24((int *)&DAT_00524e68,s_Each_Player_page_must_have_a_rol_0051e7fd,(char *)0x0); - FUN_004d9c38((int *)&DAT_00524e68); - FUN_0040385c(s_Exiting_0051e827,s_d__tesla_bt_bt_l4_BTL4MSSN_CPP_0051e82f,0x1c3); - } - else { - FUN_00402a98((int *)&local_40,(int *)(param_1 + 0xe8),local_3c); - piVar3 = local_40 + 3; - *piVar3 = *piVar3 + -1; - if (*piVar3 == 0) { - FUN_004024d8(local_40,3); - } - iVar5 = FUN_00404088(param_2,local_3c,s_model_0051e770,&local_44); - if (iVar5 == 0) { - FUN_004dbb24((int *)&DAT_00524e68,local_3c,(char *)0x0); - FUN_004dbb24((int *)&DAT_00524e68,s_page_or_model_field_missing___0051e7b7,(char *)0x0); - FUN_004d9c38((int *)&DAT_00524e68); - FUN_0040385c(s_Exiting_0051e7d6,s_d__tesla_bt_bt_l4_BTL4MSSN_CPP_0051e7de,0x1bd); - } - else { - FUN_004323c7(local_90,param_1 + 0x50); - puVar6 = (undefined4 *)(**(code **)(local_90[0] + 0x54))(local_90,param_1 + 0xe8); - FUN_00432405(local_90,2); - if (puVar6 == (undefined4 *)0x0) { - puVar6 = (undefined4 *)FUN_00402298(0x2c); - if (puVar6 == (undefined4 *)0x0) { - puVar6 = (undefined4 *)0x0; - } - else { - local_48 = local_44; - local_50 = (uint *)FUN_00402298(0x10); - if (local_50 == (uint *)0x0) { - local_4c = (uint *)0x0; - } - else { - local_4c = FUN_00402460(local_50,local_48); - } - local_4c[3] = local_4c[3] + 1; - puVar6 = FUN_00429a9c(puVar6,(int *)(param_1 + 0xe8),(int *)&local_4c); - } - local_54 = local_4c; - puVar2 = local_4c + 3; - *puVar2 = *puVar2 - 1; - if (*puVar2 == 0) { - FUN_004024d8((int *)local_4c,3); - } - local_5c = puVar6 + 9; - local_60 = (int *)*local_5c; - local_60[3] = local_60[3] + 1; - local_58 = puVar6; - FUN_004323c7(local_a4,param_1 + 0x50); - iVar5 = (**(code **)(local_a4[0] + 0x54))(local_a4,&local_60); - FUN_00432405(local_a4,2); - uVar7 = (uint)(iVar5 == 0); - local_64 = local_60; - piVar3 = local_60 + 3; - *piVar3 = *piVar3 + -1; - if (*piVar3 == 0) { - FUN_004024d8(local_60,3); - } - if (uVar7 != 0) { - local_68 = local_58 + 9; - local_6c = (int *)*local_68; - local_6c[3] = local_6c[3] + 1; - (**(code **)(*(int *)(param_1 + 0x50) + 8))(param_1 + 0x50,local_58,&local_6c); - local_70 = local_6c; - piVar3 = local_6c + 3; - *piVar3 = *piVar3 + -1; - if (*piVar3 == 0) { - FUN_004024d8(local_6c,3); - } - } - } - iVar5 = FUN_00404118(param_2,local_3c,s_dmgInflctdMdfr_0051e776,&local_38); - if (iVar5 != 0) { - puVar6[3] = local_38; - } - iVar5 = FUN_00404118(param_2,local_3c,s_dmgRcvdMdfr_0051e785,&local_38); - if (iVar5 != 0) { - local_74 = local_38; - puVar6[4] = local_38; - } - iVar5 = FUN_00404118(param_2,local_3c,s_dmgBias_0051e791,&local_38); - if (iVar5 != 0) { - puVar6[6] = local_38; - } - iVar5 = FUN_00404118(param_2,local_3c,s_friendlyFire_0051e799,&local_38); - if (iVar5 != 0) { - puVar6[5] = local_38; - } - bVar9 = FUN_004040d8(param_2,local_3c,s_return_0051e7a6,&local_78); - if (CONCAT31(extraout_var_00,bVar9) != 0) { - puVar6[10] = local_78; - } - iVar5 = FUN_00404118(param_2,local_3c,s_killBonus_0051e7ad,&local_38); - if (iVar5 != 0) { - puVar6[7] = local_38; - } - } - } - bVar9 = FUN_004040d8(param_2,(char *)local_8[2],s_bitmapindex_0051e84e,(int *)(param_1 + 0x4c)); - if (CONCAT31(extraout_var_01,bVar9) == 0) { - FUN_004dbb24(&DAT_00524e20,s_No_Bitmap_for_player_0051e85a,(char *)0x0); - FUN_004dbb24(&DAT_00524e20,(char *)local_8[2],(char *)0x0); - FUN_004d9c38(&DAT_00524e20); - } - else { - local_7c = *(undefined4 *)(param_1 + 0x4c); - iVar5 = (**(code **)(*(int *)(param_1 + 0x68) + 0xc))(param_1 + 0x68,&local_7c); - if (((iVar5 != 0) && (*(int *)(DAT_004efc94 + 0x4c) != 0)) && - (piVar3 = *(int **)(*(int *)(DAT_004efc94 + 0x4c) + 0x1c530), piVar3 != (int *)0x0)) { - (**(code **)(*piVar3 + 0x28)) - (piVar3,1,0,0xff,0,0,0,0,iVar5,0,0,*(int *)(iVar5 + 0xc) + -1, - *(int *)(iVar5 + 0x10) + -1); - (**(code **)(*piVar3 + 8))(piVar3,1); - (**(code **)(*piVar3 + 0xc))(piVar3); - } - } - piVar3 = local_8 + 3; - *piVar3 = *piVar3 + -1; - if (*piVar3 == 0) { - FUN_004024d8(local_8,3); - } - return; -} - - - -/* @004d34b0 file=? name=FUN_004d34b0 */ - -undefined4 FUN_004d34b0(void) - -{ - FUN_0044d828(); - return 1; -} - - - -/* @004d34c4 file=? name=FUN_004d34c4 */ - -undefined4 * __cdecl -FUN_004d34c4(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) - -{ - FUN_0047b410(param_1,param_2,1,param_3,param_4); - *param_1 = &PTR_FUN_0051ed9c; - FUN_004dbb24(&DAT_00524e20,s_BTL4Application__BTL4Application_0051ebd6,(char *)0x0); - FUN_004d9c38(&DAT_00524e20); - return param_1; -} - - - -/* @004d350c file=? name=FUN_004d350c */ - -void __cdecl FUN_004d350c(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_0051ed9c; - FUN_0047b624(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @004d3538 file=? name=FUN_004d3538 */ - -undefined4 * FUN_004d3538(void) - -{ - undefined4 *puVar1; - - puVar1 = (undefined4 *)FUN_00402298(0x10); - if (puVar1 == (undefined4 *)0x0) { - puVar1 = (undefined4 *)0x0; - } - else { - puVar1 = FUN_004c1548(puVar1); - } - return puVar1; -} - - - -/* @004d3564 file=? name=FUN_004d3564 */ - -undefined4 * __cdecl FUN_004d3564(int param_1) - -{ - undefined4 *puVar1; - - if (*(int *)(param_1 + 0xd0) == 0) { - puVar1 = (undefined4 *)0x0; - } - else { - puVar1 = (undefined4 *)FUN_00402298(0x3e0); - if (puVar1 == (undefined4 *)0x0) { - return (undefined4 *)0x0; - } - puVar1 = FUN_004ceecc(puVar1,DAT_004e8238,DAT_004e823c,1,0,1); - } - return puVar1; -} - - - -/* @004d35b0 file=? name=FUN_004d35b0 */ - -undefined4 * __cdecl FUN_004d35b0(int param_1) - -{ - int iVar1; - int iVar2; - undefined4 *puVar3; - float10 fVar4; - undefined4 uVar5; - - iVar1 = FUN_004dee74(s_AWE_FRONT_0051ec1e); - iVar2 = FUN_004dee74(s_AWE_REAR_0051ec28); - if ((iVar1 == 0) || (iVar2 == 0)) { - puVar3 = (undefined4 *)0x0; - } - else { - puVar3 = (undefined4 *)FUN_00402298(0x1b0); - if (puVar3 == (undefined4 *)0x0) { - puVar3 = (undefined4 *)0x0; - } - else { - uVar5 = DAT_004fd550; - fVar4 = FUN_0044e19c(param_1); - puVar3 = FUN_004d2b6c(puVar3,(float)fVar4,uVar5); - } - } - return puVar3; -} - - - -/* @004d3614 file=? name=FUN_004d3614 */ - -undefined4 * FUN_004d3614(void) - -{ - undefined4 *puVar1; - - puVar1 = (undefined4 *)FUN_00402298(0xc); - if (puVar1 != (undefined4 *)0x0) { - FUN_0044c2d0(puVar1,0x50421); - *puVar1 = &PTR_LAB_0051ed98; - } - return puVar1; -} - - - -/* @004d3644 file=? name=FUN_004d3644 */ - -undefined4 * __cdecl FUN_004d3644(undefined4 param_1) - -{ - undefined4 *puVar1; - - puVar1 = (undefined4 *)FUN_00402298(0xd10); - if (puVar1 == (undefined4 *)0x0) { - puVar1 = (undefined4 *)0x0; - } - else { - puVar1 = FUN_00475c18(puVar1); - } - (**(code **)(puVar1[0x68] + 0x14))(puVar1 + 0x68,0xffffffff,param_1,7,param_1); - return puVar1; -} - - - -/* @004d368c file=? name=FUN_004d368c */ - -int * FUN_004d368c(void) - -{ - int iVar1; - int *piVar2; - - iVar1 = FUN_004dee74(s_L4GAUGE_0051ec31); - if (iVar1 == 0) { - piVar2 = (int *)0x0; - } - else { - piVar2 = (int *)FUN_00402298(0x1c53c); - if (piVar2 == (int *)0x0) { - return (int *)0x0; - } - piVar2 = FUN_004cbea0(piVar2); - } - return piVar2; -} - - - -/* @004d36c4 file=? name=FUN_004d36c4 */ - -undefined4 * __cdecl FUN_004d36c4(undefined4 param_1,int param_2,int param_3) - -{ - undefined4 *puVar1; - - puVar1 = (undefined4 *)FUN_00402298(0xfc); - if (puVar1 == (undefined4 *)0x0) { - puVar1 = (undefined4 *)0x0; - } - else { - puVar1 = FUN_004d2be0(puVar1,param_2,param_3); - } - return puVar1; -} - - - -/* @004d36f4 file=bt_l4/btl4app.cpp name=FUN_004d36f4 */ - -int * __cdecl FUN_004d36f4(int param_1,int param_2) - -{ - int iVar1; - uint *puVar2; - undefined4 *puVar3; - int iVar4; - int *piVar5; - char *pcVar6; - char *pcVar7; - undefined4 uVar8; - undefined *puVar9; - char local_60 [2]; - char acStack_5e [30]; - undefined4 local_40; - undefined4 local_3c; - int *local_30; - uint *local_2c; - undefined4 *local_28; - uint *local_24; - undefined4 *local_20; - int *local_1c; - undefined4 *local_18; - undefined4 *local_14; - undefined4 *local_10; - int *local_c; - char *local_8; - - piVar5 = (int *)0x0; - iVar1 = *(int *)(param_1 + 0x3c); - local_8 = (char *)0x0; - if (*(int *)(param_2 + 0x1c) == 0x45) { - piVar5 = FUN_0042d16c(param_2); - pcVar6 = s_ControlsMapper_0051ec39; - pcVar7 = local_60; - local_c = piVar5; - for (iVar4 = 3; iVar4 != 0; iVar4 = iVar4 + -1) { - *(undefined4 *)pcVar7 = *(undefined4 *)pcVar6; - pcVar6 = pcVar6 + 4; - pcVar7 = pcVar7 + 4; - } - *(undefined2 *)pcVar7 = *(undefined2 *)pcVar6; - pcVar7[2] = pcVar6[2]; - local_40 = 0xf; - local_3c = 0x30; - if (*(int *)(iVar1 + 0xc98) == 2) { - local_10 = (undefined4 *)FUN_00402298(0x110); - if (local_10 == (undefined4 *)0x0) { - puVar3 = (undefined4 *)0x0; - } - else { - puVar3 = FUN_0047ac5c(local_10,local_c,0,local_60,&DAT_004fd318); - } - local_8 = s_Thrustmaster_0051ec48; - } - else if (*(int *)(iVar1 + 0xc98) == 4) { - local_14 = (undefined4 *)FUN_00402298(0x108); - if (local_14 == (undefined4 *)0x0) { - puVar3 = (undefined4 *)0x0; - } - else { - puVar3 = FUN_0047ad3c(local_14,local_c,0,local_60,&DAT_004fd364); - } - local_8 = &DAT_0051ec55; - } - else { - local_18 = (undefined4 *)FUN_00402298(0x108); - if (local_18 == (undefined4 *)0x0) { - puVar3 = (undefined4 *)0x0; - } - else { - puVar3 = FUN_0047aa78(local_18,local_c,0,local_60,&DAT_004fd2b0); - } - } - FUN_0042c630((int)local_c,puVar3); - } - else if (*(int *)(param_2 + 0x1c) == 0xbb9) { - piVar5 = FUN_004a2d48(param_2); - local_1c = piVar5; - FUN_00476eac(iVar1,0.05); - FUN_00476eec(iVar1,0.05); - FUN_00476f10(iVar1,0.05); - if (*(int *)(iVar1 + 0xc98) == 2) { - local_20 = (undefined4 *)FUN_00402298(0x1bc); - if (local_20 == (undefined4 *)0x0) { - puVar3 = (undefined4 *)0x0; - } - else { - puVar9 = &DAT_0051dc68; - uVar8 = 0x7dc; - local_24 = (uint *)FUN_00402298(0x10); - if (local_24 == (uint *)0x0) { - puVar2 = (uint *)0x0; - } - else { - puVar2 = FUN_00402460(local_24,s_ControlsMapper_0051ec58); - } - puVar2[3] = puVar2[3] + 1; - puVar3 = FUN_004d21d0(local_20,local_1c,0,(int *)puVar2,uVar8,puVar9); - } - local_8 = s_Thrustmaster_0051ec67; - } - else if (*(int *)(iVar1 + 0xc98) == 4) { - local_28 = (undefined4 *)FUN_00402298(0x1bc); - if (local_28 == (undefined4 *)0x0) { - puVar3 = (undefined4 *)0x0; - } - else { - puVar9 = &DAT_0051dcf0; - uVar8 = 0x7dc; - local_2c = (uint *)FUN_00402298(0x10); - if (local_2c == (uint *)0x0) { - puVar2 = (uint *)0x0; - } - else { - puVar2 = FUN_00402460(local_2c,s_ControlsMapper_0051ec74); - } - puVar2[3] = puVar2[3] + 1; - puVar3 = FUN_004d266c(local_28,local_1c,0,(int *)puVar2,uVar8,puVar9); - } - local_8 = &DAT_0051ec83; - } - else { - FUN_004dbb24(&DAT_00524e20,s______Mech_has_no_controls_mappin_0051ec86,(char *)0x0); - FUN_0040385c(s_BTL4Application__MakeViewpointEn_0051ecae, - s_d__tesla_bt_bt_l4_BTL4APP_CPP_0051ecd3,400); - puVar3 = (undefined4 *)0x0; - } - FUN_0049fe40((int)local_1c,puVar3); - (**(code **)(*local_1c + 0x38))(local_1c); - } - if (((local_8 != (char *)0x0) && - (local_30 = (int *)FUN_00407064(*(int *)(DAT_004efc94 + 0x68),piVar5[0x6f],6), - local_30 != (int *)0x0)) && - (local_30 = (int *)FUN_004070dc(*(int *)(param_1 + 0x68),*local_30,local_8), - local_30 != (int *)0x0)) { - iVar4 = local_30[1]; - local_30[1] = local_30[1] + 1; - if (iVar4 == 0) { - FUN_00406cd0((int)local_30); - } - FUN_0047703c(iVar1,(int)piVar5,(int *)local_30[0xf]); - local_30[1] = local_30[1] + -1; - } - if (*(int **)(param_1 + 0x4c) != (int *)0x0) { - FUN_0046ff64(*(int **)(param_1 + 0x4c),&DAT_0051ecf1,piVar5); - } - return piVar5; -} - - - -/* @004d3a2c file=? name=FUN_004d3a2c */ - -void __cdecl FUN_004d3a2c(int param_1) - -{ - int iVar1; - - FUN_004dbb24(&DAT_00524e20,s_BTL4Application__RunMissionMessa_0051ecf6,(char *)0x0); - FUN_004d9c38(&DAT_00524e20); - iVar1 = *(int *)(param_1 + 0x50); - *(undefined4 *)(iVar1 + 8) = *(undefined4 *)(iVar1 + 4); - *(uint *)(iVar1 + 4) = *(uint *)(iVar1 + 4) | 0x400000; - FUN_004dbb24(&DAT_00524e20,s_Turning_Plasma_Score_Display_On_0051ed20,(char *)0x0); - FUN_004d9c38(&DAT_00524e20); - FUN_0047b788(param_1); - return; -} - - - -/* @004d3a94 file=? name=FUN_004d3a94 */ - -void __cdecl FUN_004d3a94(int param_1) - -{ - int iVar1; - - iVar1 = *(int *)(param_1 + 0x50); - *(undefined4 *)(iVar1 + 8) = *(undefined4 *)(iVar1 + 4); - *(uint *)(iVar1 + 4) = *(uint *)(iVar1 + 4) & 0xffbfffff; - FUN_0047b864(param_1); - FUN_004dbb24(&DAT_00524e20,s_Turning_Plasma_Score_Display_Off_0051ed40,(char *)0x0); - FUN_004d9c38(&DAT_00524e20); - return; -} - - - -/* @004d3b74 file=? name=FUN_004d3b74 */ - -undefined4 * __cdecl FUN_004d3b74(undefined4 *param_1) - -{ - FUN_0047c5d8(param_1); - *param_1 = &PTR_FUN_0051f204; - return param_1; -} - - - -/* @004d3b90 file=? name=FUN_004d3b90 */ - -void __cdecl FUN_004d3b90(undefined4 param_1,uint *param_2) - -{ - FUN_004d3ecc(DAT_004efc94,param_2); - return; -} - - - -/* @004d3bb8 file=? name=FUN_004d3bb8 */ - -void __cdecl FUN_004d3bb8(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_0051f204; - FUN_0047c734(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @004d3be4 file=? name=FUN_004d3be4 */ - -undefined4 * __cdecl FUN_004d3be4(undefined4 *param_1,undefined4 param_2,undefined4 param_3) - -{ - FUN_004d34c4(param_1,param_2,0x3eb,&DAT_0051ee5c); - *param_1 = &PTR_FUN_0051f1a4; - param_1[6] = param_3; - return param_1; -} - - - -/* @004d3c14 file=? name=FUN_004d3c14 */ - -undefined4 * FUN_004d3c14(void) - -{ - undefined4 *puVar1; - - puVar1 = (undefined4 *)FUN_00402298(0x28); - if (puVar1 == (undefined4 *)0x0) { - puVar1 = (undefined4 *)0x0; - } - else { - puVar1 = FUN_0047bfc4(puVar1); - } - return puVar1; -} - - - -/* @004d3c34 file=? name=FUN_004d3c34 */ - -void __cdecl FUN_004d3c34(int *param_1) - -{ - FUN_0047b468(param_1); - return; -} - - - -/* @004d3c44 file=? name=FUN_004d3c44 */ - -void __cdecl FUN_004d3c44(int param_1) - -{ - undefined4 *puVar1; - - puVar1 = (undefined4 *)FUN_00402298(0x10); - if (puVar1 == (undefined4 *)0x0) { - puVar1 = (undefined4 *)0x0; - } - else { - puVar1 = FUN_004d3b74(puVar1); - } - FUN_0044de1c(*(int *)(param_1 + 100),puVar1); - puVar1 = (undefined4 *)FUN_00402298(0x10); - if (puVar1 != (undefined4 *)0x0) { - FUN_0044dd08(puVar1,0x48); - *puVar1 = &PTR_FUN_004f037c; - } - FUN_0044de1c(*(int *)(param_1 + 100),puVar1); - puVar1 = (undefined4 *)FUN_00402298(0x10); - if (puVar1 != (undefined4 *)0x0) { - FUN_0044dd08(puVar1,0x48); - *puVar1 = &PTR_FUN_004f031c; - } - FUN_0044de1c(*(int *)(param_1 + 100),puVar1); - puVar1 = (undefined4 *)FUN_00402298(0x10); - if (puVar1 != (undefined4 *)0x0) { - FUN_0044dd08(puVar1,0x48); - *puVar1 = &PTR_FUN_004f0304; - } - FUN_0044de1c(*(int *)(param_1 + 100),puVar1); - puVar1 = (undefined4 *)FUN_00402298(0x10); - if (puVar1 != (undefined4 *)0x0) { - FUN_0044dd08(puVar1,0x48); - *puVar1 = &PTR_FUN_004f0364; - } - FUN_0044de1c(*(int *)(param_1 + 100),puVar1); - return; -} - - - -/* @004d3d40 file=? name=FUN_004d3d40 */ - -undefined4 __cdecl FUN_004d3d40(int param_1,int param_2) - -{ - undefined4 uVar1; - int *piVar2; - - if ((*(int *)(param_1 + 0x70) == 0) || (*(int *)(param_1 + 0x88) == 1)) { - if ((*(int *)(param_1 + 0x70) == 0) || (DAT_004efc98 != 0)) { - uVar1 = 0; - } - else { - uVar1 = 1; - } - } - else { - FUN_004dcd94(); - if (DAT_004fd550 == 2) { - (**(code **)(**(int **)(param_1 + 0x3c) + 0x18))(*(int **)(param_1 + 0x3c)); - } - FUN_00435794(*(int *)(param_1 + 0x34)); - FUN_004363ec(*(int *)(param_1 + 0x38),param_2); - FUN_00434a08(); - FUN_0043649c(*(int *)(param_1 + 0x38)); - FUN_00436440(*(int *)(param_1 + 0x38),param_2); - (**(code **)(**(int **)(param_1 + 0x40) + 0x24))(*(int **)(param_1 + 0x40)); - if (*(int *)(param_1 + 0x88) == 5) { - piVar2 = (int *)FUN_00414b60(); - *(float *)(param_1 + 0x58) = - *(float *)(*(int *)(param_1 + 200) + 0xe0) - - (float)(*piVar2 - *(int *)(param_1 + 0x5c)) / DAT_0052140c; - } - if ((*(int *)(param_1 + 0x70) == 0) || (DAT_004efc98 != 0)) { - uVar1 = 0; - } - else { - uVar1 = 1; - } - } - return uVar1; -} - - - -/* @004d3ea0 file=? name=FUN_004d3ea0 */ - -void __cdecl FUN_004d3ea0(int *param_1,byte param_2) - -{ - if (param_1 != (int *)0x0) { - *param_1 = (int)&PTR_FUN_0051f1a4; - FUN_004d350c(param_1,0); - if ((param_2 & 1) != 0) { - FUN_004022d0(param_1); - } - } - return; -} - - - -/* @004d3ecc file=? name=FUN_004d3ecc */ - -void __cdecl FUN_004d3ecc(int param_1,uint *param_2) - -{ - int *piVar1; - - piVar1 = (int *)FUN_0041d7f0(*(int *)(param_1 + 0x20),*param_2); - (**(code **)(*piVar1 + 0x14))(piVar1,param_2,param_2 + 4); - return; -} - - - -/* @004d3ef8 file=? name=FUN_004d3ef8 */ - -void __cdecl FUN_004d3ef8(int param_1) - -{ - int *piVar1; - int iVar2; - int *piVar3; - - if (*(int *)(param_1 + 0x88) == 3) { - piVar1 = *(int **)(param_1 + 0x18); - iVar2 = (**(code **)*piVar1)(piVar1); - piVar3 = (int *)FUN_00414b60(); - *(int *)(param_1 + 0xd4) = *piVar3 - *(int *)(iVar2 + 0xc); - FUN_0044f850(piVar1); - } - FUN_004d3a2c(param_1); - return; -} - - - -/* @004d3f44 file=? name=FUN_004d3f44 */ - -void __cdecl FUN_004d3f44(int param_1) - -{ - char *pcVar1; - int *piVar2; - int iVar3; - char *pcVar4; - int iVar5; - int iVar6; - char *pcVar7; - bool bVar8; - uint local_30 [5]; - int local_1c [3]; - int local_10; - char *local_c; - int local_8; - - iVar3 = FUN_0044e13c(param_1); - if (*(int **)(param_1 + 0x18) != (int *)0x0) { - FUN_0044fac0(iVar3,*(int **)(param_1 + 0x18)); - *(undefined4 *)(param_1 + 0x18) = 0; - local_8 = FUN_00403ad0(*(int *)(DAT_004efc94 + 0x24) + 0x18,s_DropZones_0051f19a); - local_c = &DAT_0051ee67; - iVar3 = 0; - while( true ) { - iVar6 = FUN_0042efe4(iVar3); - if (iVar6 == 0) break; - *local_c = (char)iVar3 + '1'; - FUN_00421414(local_1c,local_8 + 0x10); -LAB_004d3fea: - do { - iVar5 = (**(code **)(local_1c[0] + 0x28))(local_1c); - if (iVar5 == 0) break; - pcVar4 = (char *)(iVar5 + 0x1c8); - pcVar7 = &DAT_0051ee64; - do { - if (*pcVar4 != *pcVar7) goto LAB_004d3fea; - bVar8 = true; - if (*pcVar4 == '\0') break; - pcVar1 = pcVar4 + 1; - if (*pcVar1 != pcVar7[1]) goto LAB_004d3fea; - pcVar4 = pcVar4 + 2; - pcVar7 = pcVar7 + 2; - bVar8 = *pcVar1 == '\0'; - } while (!bVar8); - } while (!bVar8); - if (iVar5 == 0) { - FUN_00421452(local_1c,2); - } - else { - piVar2 = *(int **)(iVar6 + 0x1fc); - if (piVar2[1] == 0xbb9) { - FUN_0049fb74((int)piVar2,(undefined4 *)(iVar5 + 0x100),0); - piVar2[7] = (int)PTR_FUN_0051ee69; - piVar2[8] = DAT_0051ee6d; - piVar2[9] = DAT_0051ee71; - FUN_00419cb8((int)piVar2); - local_10 = *(int *)(DAT_004efc94 + 0x38); - FUN_00436668(local_30,(int)piVar2); - FUN_004364e4(local_10,piVar2,local_30); - } - FUN_00421452(local_1c,2); - } - iVar3 = iVar3 + 1; - } - iVar3 = *(int *)(param_1 + 0x48); - FUN_00460840(iVar3); - FUN_0045a7a8(iVar3,4); - } - FUN_004d3a94(param_1); - return; -} - - - -/* @004d40d8 file=? name=FUN_004d40d8 */ - -void __cdecl FUN_004d40d8(int param_1) - -{ - FUN_0041a1a4(**(int **)(param_1 + 0xc),0x51ee2c); - return; -} - - - -/* @004d4179 file=? name=FUN_004d4179 */ - -undefined2 FUN_004d4179(void) - -{ - code *pcVar1; - undefined2 uVar2; - - pcVar1 = (code *)swi(0x11); - uVar2 = (*pcVar1)(); - return uVar2; -} - - - -/* @004d4183 file=? name=FUN_004d4183 */ - -undefined2 FUN_004d4183(void) - -{ - code *pcVar1; - undefined2 uVar2; - - pcVar1 = (code *)swi(0x12); - uVar2 = (*pcVar1)(); - return uVar2; -} - - - -/* @004d418d file=? name=FUN_004d418d */ - -undefined4 FUN_004d418d(void) - -{ - code *pcVar1; - undefined2 extraout_CX; - undefined2 extraout_DX; - - pcVar1 = (code *)swi(0x1a); - (*pcVar1)(); - return CONCAT22(extraout_CX,extraout_DX); -} - - - -/* @004d45b0 file=? name=FUN_004d45b0 */ - -undefined4 FUN_004d45b0(void) - -{ - undefined4 in_EAX; - - LOCK(); - UNLOCK(); - return in_EAX; -} - - - -/* @004d45c6 file=? name=FUN_004d45c6 */ - -undefined2 __cdecl FUN_004d45c6(undefined2 param_1) - -{ - undefined2 uVar1; - - uVar1 = in(param_1); - return uVar1; -} - - - -/* @004d45d3 file=? name=FUN_004d45d3 */ - -undefined1 __cdecl FUN_004d45d3(undefined2 param_1) - -{ - undefined1 uVar1; - - uVar1 = in(param_1); - return uVar1; -} - - - -/* @004d45df file=? name=FUN_004d45df */ - -undefined2 __cdecl FUN_004d45df(undefined2 param_1) - -{ - undefined2 uVar1; - - uVar1 = in(param_1); - return uVar1; -} - - - -/* @004d45ec file=? name=FUN_004d45ec */ - -undefined1 __cdecl FUN_004d45ec(undefined2 param_1) - -{ - undefined1 uVar1; - - uVar1 = in(param_1); - return uVar1; -} - - - -/* @004d461f file=? name=FUN_004d461f */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -void __cdecl FUN_004d461f(undefined4 param_1,int param_2,undefined4 *param_3,undefined2 *param_4) - -{ - undefined4 uVar1; - undefined4 uVar2; - uint uVar3; - undefined4 uVar4; - undefined4 extraout_ECX; - undefined4 extraout_EDX; - undefined2 uVar5; - undefined2 uVar6; - undefined2 uVar7; - undefined2 uVar8; - byte bVar9; - byte in_PF; - byte in_AF; - byte in_ZF; - byte in_SF; - byte in_TF; - byte in_IF; - byte in_OF; - byte in_NT; - byte in_AC; - byte in_VIF; - byte in_VIP; - byte in_ID; - - uVar5 = *param_4; - uVar7 = param_4[4]; - uVar8 = param_4[5]; - uVar6 = param_4[3]; - uVar1 = *(undefined4 *)(param_2 + 4); - uVar2 = *(undefined4 *)(param_2 + 0x14); - bVar9 = 0; - uVar4 = FUN_004d45b0(); - uVar3 = (uint)(bVar9 & 1); - *param_3 = uVar4; - param_3[1] = uVar1; - param_3[2] = extraout_ECX; - param_3[3] = extraout_EDX; - param_3[4] = param_3; - param_3[5] = uVar2; - param_3[7] = (uint)(in_NT & 1) * 0x4000 | (uint)(in_OF & 1) * 0x800 | (uint)(in_IF & 1) * 0x200 | - (uint)(in_TF & 1) * 0x100 | (uint)(in_SF & 1) * 0x80 | (uint)(in_ZF & 1) * 0x40 | - (uint)(in_AF & 1) * 0x10 | (uint)(in_PF & 1) * 4 | uVar3 | - (uint)(in_ID & 1) * 0x200000 | (uint)(in_VIP & 1) * 0x100000 | - (uint)(in_VIF & 1) * 0x80000 | (uint)(in_AC & 1) * 0x40000; - param_3[6] = uVar3; - *param_4 = uVar5; - param_4[3] = uVar6; - param_4[4] = uVar7; - param_4[5] = uVar8; - if (uVar3 == 0) { - DAT_00520bcc = uVar4; - _DAT_00524dd0 = uVar4; - } - return; -} - - - -/* @004d46a5 file=? name=FUN_004d46a5 */ - -void FUN_004d46a5(void) - -{ - if (DAT_00525224 != 2) { - FUN_004ded48(s_This_DPMI32_module_cannot_be_run_0051f224); - } - return; -} - - - -/* @004d46c0 file=? name=FUN_004d46c0 */ - -undefined2 __cdecl FUN_004d46c0(undefined2 param_1,undefined2 param_2) - -{ - out(param_1,param_2); - return param_2; -} - - - -/* @004d46cf file=? name=FUN_004d46cf */ - -undefined1 __cdecl FUN_004d46cf(undefined2 param_1,undefined1 param_2) - -{ - out(param_1,param_2); - return param_2; -} - - - -/* @004d46dc file=? name=FUN_004d46dc */ - -undefined6 __cdecl FUN_004d46dc(undefined2 param_1,ushort param_2) - -{ - out(param_1,param_2); - return CONCAT24(param_1,(uint)param_2); -} - - - -/* @004d46ed file=? name=FUN_004d46ed */ - -undefined6 __cdecl FUN_004d46ed(undefined2 param_1,byte param_2) - -{ - out(param_1,param_2); - return CONCAT24(param_1,(uint)param_2); -} - - - -/* @004d46fc file=? name=FUN_004d46fc */ - -void __cdecl FUN_004d46fc(undefined2 *param_1) - -{ - undefined2 in_ES; - undefined2 in_CS; - undefined2 in_SS; - undefined2 in_DS; - undefined2 in_FS; - undefined2 in_GS; - - *param_1 = in_ES; - param_1[1] = in_CS; - param_1[2] = in_SS; - param_1[3] = in_DS; - param_1[4] = in_FS; - param_1[5] = in_GS; - return; -} - - - -/* @004d4718 file=? name=FUN_004d4718 */ - -uint FUN_004d4718(void) - -{ - HANDLE hConsoleHandle; - BOOL BVar1; - uint uVar2; - short *psVar3; - DWORD DStack_28; - uint local_24; - _INPUT_RECORD local_20; - - uVar2 = DAT_0051f5d8; - if (DAT_0051f5dc == '\0') { - if (DAT_0051f5d8 == 0xffffffff) { - hConsoleHandle = GetStdHandle(0xfffffff6); - BVar1 = GetConsoleMode(hConsoleHandle,&local_24); - if (BVar1 == 1) { - if (((local_24 & 7) == 0) || - (BVar1 = SetConsoleMode(hConsoleHandle,local_24 & 0xfffffff8), BVar1 == 1)) { - do { - do { - do { - BVar1 = ReadConsoleInputA(hConsoleHandle,&local_20,1,&DStack_28); - if (BVar1 != 1) { - uVar2 = 0xffffffff; - goto LAB_004d483d; - } - } while (local_20.Event.KeyEvent.bKeyDown == 0); - uVar2 = (uint)local_20.Event.KeyEvent.wVirtualKeyCode; - for (psVar3 = &DAT_0051f254; (uVar2 != (int)*psVar3 && (*psVar3 != -1)); - psVar3 = psVar3 + 5) { - } - } while (*psVar3 == -1); - if ((local_20.Event.KeyEvent.dwControlKeyState & 3) == 0) { - if ((local_20.Event.KeyEvent.dwControlKeyState & 0xc) == 0) { - if ((local_20.Event.KeyEvent.dwControlKeyState & 0x10) == 0) { - if ((uVar2 < 0x41) || (0x5a < uVar2)) { - uVar2 = (uint)psVar3[1]; - } - else { - uVar2 = (uint)(char)local_20.Event.MouseEvent.dwControlKeyState._2_1_; - } - } - else { - uVar2 = (uint)psVar3[2]; - } - } - else { - uVar2 = (uint)psVar3[3]; - } - } - else { - uVar2 = (uint)psVar3[4]; - } - } while (uVar2 == 0xffffffff); - if ((uVar2 & 0x100) != 0) { - DAT_0051f5d8 = uVar2 & 0xff; - uVar2 = 0; - } -LAB_004d483d: - if (((local_24 & 7) != 0) && (BVar1 = SetConsoleMode(hConsoleHandle,local_24), BVar1 != 1) - ) { - uVar2 = 0xffffffff; - } - } - else { - uVar2 = 0xffffffff; - } - } - else { - uVar2 = 0xffffffff; - } - } - else { - DAT_0051f5d8 = 0xffffffff; - } - } - else { - DAT_0051f5dc = '\0'; - uVar2 = (uint)DAT_0051f5dd; - } - return uVar2; -} - - - -/* @004d4860 file=? name=FUN_004d4860 */ - -uint __cdecl FUN_004d4860(byte param_1) - -{ - if (DAT_0051f5dc != '\0') { - return 0xffffffff; - } - DAT_0051f5dc = 1; - DAT_0051f5dd = param_1; - return (uint)param_1; -} - - - -/* @004d4888 file=? name=FUN_004d4888 */ - -undefined4 FUN_004d4888(void) - -{ - undefined4 uVar1; - HANDLE hConsoleInput; - BOOL BVar2; - DWORD DStack_24; - DWORD local_20; - _INPUT_RECORD local_1c; - - if (DAT_0051f5dc == '\0') { - hConsoleInput = GetStdHandle(0xfffffff6); - do { - BVar2 = GetNumberOfConsoleInputEvents(hConsoleInput,&local_20); - if (((BVar2 != 1) || (local_20 == 0)) || - (BVar2 = PeekConsoleInputA(hConsoleInput,&local_1c,1,&DStack_24), BVar2 != 1)) break; - if ((((byte)local_1c.EventType & 1) != 0) && (local_1c.Event.KeyEvent.bKeyDown != 0)) { - return 1; - } - BVar2 = ReadConsoleInputA(hConsoleInput,&local_1c,1,&DStack_24); - } while (BVar2 == 1); - uVar1 = 0; - } - else { - uVar1 = 1; - } - return uVar1; -} - - - -/* @004d48f8 file=? name=FUN_004d48f8 */ - -char * __cdecl FUN_004d48f8(char *param_1,char param_2,int param_3) - -{ - char *pcVar1; - undefined1 in_ZF; - - if (param_3 != 0) { - do { - pcVar1 = param_1; - if (param_3 == 0) break; - param_3 = param_3 + -1; - pcVar1 = param_1 + 1; - in_ZF = param_2 == *param_1; - param_1 = pcVar1; - } while (!(bool)in_ZF); - if ((bool)in_ZF) { - return pcVar1 + -1; - } - } - return (char *)0x0; -} - - - -/* @004d4918 file=? name=FUN_004d4918 */ - -undefined4 * __cdecl FUN_004d4918(undefined4 *param_1,undefined4 *param_2,uint param_3) - -{ - uint uVar1; - undefined4 *puVar2; - - puVar2 = param_1; - for (uVar1 = param_3 >> 2; uVar1 != 0; uVar1 = uVar1 - 1) { - *puVar2 = *param_2; - param_2 = param_2 + 1; - puVar2 = puVar2 + 1; - } - for (uVar1 = param_3 & 3; uVar1 != 0; uVar1 = uVar1 - 1) { - *(undefined1 *)puVar2 = *(undefined1 *)param_2; - param_2 = (undefined4 *)((int)param_2 + 1); - puVar2 = (undefined4 *)((int)puVar2 + 1); - } - return param_1; -} - - - -/* @004d493c file=? name=FUN_004d493c */ - -undefined4 * __cdecl FUN_004d493c(undefined4 *param_1,undefined4 *param_2,uint param_3) - -{ - uint uVar1; - undefined1 *puVar2; - undefined4 *puVar3; - undefined1 *puVar4; - undefined4 *puVar5; - - if (param_1 < param_2) { - puVar3 = param_1; - for (uVar1 = param_3 >> 2; uVar1 != 0; uVar1 = uVar1 - 1) { - *puVar3 = *param_2; - param_2 = param_2 + 1; - puVar3 = puVar3 + 1; - } - for (uVar1 = param_3 & 3; uVar1 != 0; uVar1 = uVar1 - 1) { - *(undefined1 *)puVar3 = *(undefined1 *)param_2; - param_2 = (undefined4 *)((int)param_2 + 1); - puVar3 = (undefined4 *)((int)puVar3 + 1); - } - } - else if (param_1 != param_2) { - puVar2 = (undefined1 *)((int)param_2 + (param_3 - 1)); - puVar4 = (undefined1 *)((int)param_1 + (param_3 - 1)); - for (uVar1 = param_3 & 3; uVar1 != 0; uVar1 = uVar1 - 1) { - *puVar4 = *puVar2; - puVar2 = puVar2 + -1; - puVar4 = puVar4 + -1; - } - puVar3 = (undefined4 *)(puVar2 + -3); - puVar5 = (undefined4 *)(puVar4 + -3); - for (uVar1 = param_3 >> 2; uVar1 != 0; uVar1 = uVar1 - 1) { - *puVar5 = *puVar3; - puVar3 = puVar3 + -1; - puVar5 = puVar5 + -1; - } - } - return param_1; -} - - - -/* @004d4988 file=? name=FUN_004d4988 */ - -undefined4 * __cdecl FUN_004d4988(undefined4 *param_1,undefined1 param_2,uint param_3) - -{ - uint uVar1; - undefined4 *puVar2; - - puVar2 = param_1; - for (uVar1 = param_3 >> 2; uVar1 != 0; uVar1 = uVar1 - 1) { - *puVar2 = CONCAT22(CONCAT11(param_2,param_2),CONCAT11(param_2,param_2)); - puVar2 = puVar2 + 1; - } - for (uVar1 = param_3 & 3; uVar1 != 0; uVar1 = uVar1 - 1) { - *(undefined1 *)puVar2 = param_2; - puVar2 = (undefined4 *)((int)puVar2 + 1); - } - return param_1; -} - - - -/* @004d49b8 file=? name=FUN_004d49b8 */ - -char * __cdecl FUN_004d49b8(char *param_1,char *param_2) - -{ - char cVar1; - int iVar2; - uint uVar3; - uint uVar4; - char *pcVar5; - char *pcVar6; - - iVar2 = -1; - pcVar5 = param_1; - do { - pcVar6 = pcVar5; - if (iVar2 == 0) break; - iVar2 = iVar2 + -1; - pcVar6 = pcVar5 + 1; - cVar1 = *pcVar5; - pcVar5 = pcVar6; - } while (cVar1 != '\0'); - uVar3 = 0xffffffff; - do { - pcVar5 = param_2; - if (uVar3 == 0) break; - uVar3 = uVar3 - 1; - pcVar5 = param_2 + 1; - cVar1 = *param_2; - param_2 = pcVar5; - } while (cVar1 != '\0'); - uVar3 = ~uVar3; - pcVar5 = pcVar5 + -uVar3; - pcVar6 = pcVar6 + -1; - for (uVar4 = uVar3 >> 2; uVar4 != 0; uVar4 = uVar4 - 1) { - *(undefined4 *)pcVar6 = *(undefined4 *)pcVar5; - pcVar5 = pcVar5 + 4; - pcVar6 = pcVar6 + 4; - } - for (uVar3 = uVar3 & 3; uVar3 != 0; uVar3 = uVar3 - 1) { - *pcVar6 = *pcVar5; - pcVar5 = pcVar5 + 1; - pcVar6 = pcVar6 + 1; - } - return param_1; -} - - - -/* @004d49f4 file=? name=FUN_004d49f4 */ - -char * __cdecl FUN_004d49f4(char *param_1,char param_2) - -{ - char *pcVar1; - uint uVar2; - bool bVar3; - - uVar2 = 0xffffffff; - bVar3 = true; - pcVar1 = param_1; - do { - if (uVar2 == 0) break; - uVar2 = uVar2 - 1; - bVar3 = *pcVar1 == '\0'; - pcVar1 = pcVar1 + 1; - } while (!bVar3); - uVar2 = ~uVar2; - do { - pcVar1 = param_1; - if (uVar2 == 0) break; - uVar2 = uVar2 - 1; - pcVar1 = param_1 + 1; - bVar3 = param_2 == *param_1; - param_1 = pcVar1; - } while (!bVar3); - if (bVar3) { - pcVar1 = pcVar1 + -1; - } - else { - pcVar1 = (char *)0x0; - } - return pcVar1; -} - - - -/* @004d4a1c file=? name=FUN_004d4a1c */ - -int __cdecl FUN_004d4a1c(char *param_1,char *param_2) - -{ - char cVar1; - char cVar2; - uint uVar3; - char *pcVar4; - char *pcVar5; - - uVar3 = 0xffffffff; - pcVar4 = param_2; - do { - if (uVar3 == 0) break; - uVar3 = uVar3 - 1; - cVar1 = *pcVar4; - pcVar4 = pcVar4 + 1; - } while (cVar1 != '\0'); - uVar3 = ~uVar3; - do { - pcVar4 = param_1; - pcVar5 = param_2; - if (uVar3 == 0) break; - uVar3 = uVar3 - 1; - pcVar5 = param_2 + 1; - pcVar4 = param_1 + 1; - cVar2 = *param_2; - cVar1 = *param_1; - param_1 = pcVar4; - param_2 = pcVar5; - } while (cVar1 == cVar2); - return (uint)(byte)pcVar4[-1] - (uint)(byte)pcVar5[-1]; -} - - - -/* @004d4a48 file=? name=FUN_004d4a48 */ - -char * __cdecl FUN_004d4a48(char *param_1,char *param_2) - -{ - char cVar1; - uint uVar2; - uint uVar3; - char *pcVar4; - - uVar2 = 0xffffffff; - pcVar4 = param_2; - do { - if (uVar2 == 0) break; - uVar2 = uVar2 - 1; - cVar1 = *pcVar4; - pcVar4 = pcVar4 + 1; - } while (cVar1 != '\0'); - pcVar4 = param_1; - for (uVar3 = ~uVar2 >> 2; uVar3 != 0; uVar3 = uVar3 - 1) { - *(undefined4 *)pcVar4 = *(undefined4 *)param_2; - param_2 = param_2 + 4; - pcVar4 = pcVar4 + 4; - } - for (uVar2 = ~uVar2 & 3; uVar2 != 0; uVar2 = uVar2 - 1) { - *pcVar4 = *param_2; - param_2 = param_2 + 1; - pcVar4 = pcVar4 + 1; - } - return param_1; -} - - - -/* @004d4a78 file=? name=FUN_004d4a78 */ - -int __cdecl FUN_004d4a78(char *param_1) - -{ - char cVar1; - uint uVar2; - - uVar2 = 0xffffffff; - do { - if (uVar2 == 0) break; - uVar2 = uVar2 - 1; - cVar1 = *param_1; - param_1 = param_1 + 1; - } while (cVar1 != '\0'); - return ~uVar2 - 1; -} - - - -/* @004d4a94 file=? name=FUN_004d4a94 */ - -char * __cdecl FUN_004d4a94(char *param_1,char *param_2,uint param_3) - -{ - char cVar1; - int iVar2; - uint uVar3; - uint uVar4; - uint uVar5; - char *pcVar6; - char *pcVar7; - - iVar2 = -1; - pcVar6 = param_1; - do { - pcVar7 = pcVar6; - if (iVar2 == 0) break; - iVar2 = iVar2 + -1; - pcVar7 = pcVar6 + 1; - cVar1 = *pcVar6; - pcVar6 = pcVar7; - } while (cVar1 != '\0'); - uVar3 = 0xffffffff; - do { - pcVar6 = param_2; - if (uVar3 == 0) break; - uVar3 = uVar3 - 1; - pcVar6 = param_2 + 1; - cVar1 = *param_2; - param_2 = pcVar6; - } while (cVar1 != '\0'); - uVar4 = ~uVar3 - 1; - if (param_3 < uVar4) { - uVar4 = param_3; - } - pcVar6 = pcVar6 + -~uVar3; - pcVar7 = pcVar7 + -1; - for (uVar5 = uVar4 >> 2; uVar5 != 0; uVar5 = uVar5 - 1) { - *(undefined4 *)pcVar7 = *(undefined4 *)pcVar6; - pcVar6 = pcVar6 + 4; - pcVar7 = pcVar7 + 4; - } - for (uVar4 = uVar4 & 3; uVar4 != 0; uVar4 = uVar4 - 1) { - *pcVar7 = *pcVar6; - pcVar6 = pcVar6 + 1; - pcVar7 = pcVar7 + 1; - } - *pcVar7 = '\0'; - return param_1; -} - - - -/* @004d4ae0 file=? name=FUN_004d4ae0 */ - -int __cdecl FUN_004d4ae0(char *param_1,char *param_2,int param_3) - -{ - char cVar1; - char cVar2; - int iVar3; - int iVar4; - char *pcVar5; - char *pcVar6; - - iVar3 = 0; - iVar4 = param_3; - pcVar5 = param_2; - if (param_3 != 0) { - do { - if (iVar4 == 0) break; - iVar4 = iVar4 + -1; - cVar1 = *pcVar5; - pcVar5 = pcVar5 + 1; - } while (cVar1 != '\0'); - iVar4 = param_3 - iVar4; - do { - pcVar5 = param_1; - pcVar6 = param_2; - if (iVar4 == 0) break; - iVar4 = iVar4 + -1; - pcVar6 = param_2 + 1; - pcVar5 = param_1 + 1; - cVar2 = *param_2; - cVar1 = *param_1; - param_1 = pcVar5; - param_2 = pcVar6; - } while (cVar1 == cVar2); - iVar3 = (uint)(byte)pcVar5[-1] - (uint)(byte)pcVar6[-1]; - } - return iVar3; -} - - - -/* @004d4b14 file=? name=FUN_004d4b14 */ - -int __cdecl FUN_004d4b14(byte *param_1,byte *param_2,int param_3) - -{ - if (param_3 == 0) { - return 0; - } - while( true ) { - if (param_3 == 0) { - return (uint)param_1[-1] - (uint)param_2[-1]; - } - if (*param_1 != *param_2) break; - param_1 = param_1 + 1; - param_2 = param_2 + 1; - param_3 = param_3 + -1; - } - return (uint)*param_1 - (uint)*param_2; -} - - - -/* @004d4b58 file=? name=FUN_004d4b58 */ - -int __cdecl FUN_004d4b58(char *param_1,char *param_2) - -{ - uint uVar1; - uint uVar2; - char cVar3; - - while( true ) { - uVar1 = FUN_004dc8c4((int)*param_1); - uVar2 = FUN_004dc8c4((int)*param_2); - cVar3 = (char)uVar1; - if ((cVar3 != (char)uVar2) || (cVar3 == '\0')) break; - param_1 = param_1 + 1; - param_2 = param_2 + 1; - } - return (int)cVar3 - (int)(char)uVar2; -} - - - -/* @004d4b9c file=? name=FUN_004d4b9c */ - -undefined4 * __cdecl FUN_004d4b9c(undefined4 *param_1,char *param_2,uint param_3) - -{ - uint uVar1; - - uVar1 = FUN_004d4a78(param_2); - if (param_3 < uVar1) { - FUN_004d4918(param_1,(undefined4 *)param_2,param_3); - } - else { - FUN_004d4918(param_1,(undefined4 *)param_2,uVar1); - FUN_004d4988((undefined4 *)(uVar1 + (int)param_1),0,param_3 - uVar1); - } - return param_1; -} - - - -/* @004d4bec file=? name=FUN_004d4bec */ - -int __cdecl FUN_004d4bec(char *param_1,char *param_2,int param_3) - -{ - uint uVar1; - uint uVar2; - int iVar3; - - while( true ) { - uVar1 = FUN_004dc8c4((int)*param_1); - uVar2 = FUN_004dc8c4((int)*param_2); - if (((uVar1 != uVar2) || (*param_1 == '\0')) || (param_3 == 0)) break; - param_3 = param_3 + -1; - param_1 = param_1 + 1; - param_2 = param_2 + 1; - } - if (param_3 == 0) { - iVar3 = 0; - } - else { - uVar1 = FUN_004dc8c4((int)*param_1); - uVar2 = FUN_004dc8c4((int)*param_2); - iVar3 = uVar1 - uVar2; - } - return iVar3; -} - - - -/* @004d4c4c file=? name=FUN_004d4c4c */ - -char * __cdecl FUN_004d4c4c(char *param_1,char param_2) - -{ - int iVar1; - char *pcVar2; - - iVar1 = FUN_004d4a78(param_1); - pcVar2 = param_1 + iVar1; - while( true ) { - if (param_2 == *pcVar2) { - return pcVar2; - } - if (param_1 == pcVar2) break; - pcVar2 = pcVar2 + -1; - } - return (char *)0x0; -} - - - -/* @004d4c78 file=? name=FUN_004d4c78 */ - -char * __cdecl FUN_004d4c78(char *param_1,char *param_2) - -{ - int iVar1; - int iVar2; - int iVar3; - int iVar4; - char *pcVar5; - int iVar6; - char *local_10; - - iVar1 = FUN_004d4a78(param_1); - iVar2 = FUN_004d4a78(param_2); - if (iVar2 != 0) { - if (iVar1 == 0) { - param_1 = (char *)0x0; - } - else { - iVar3 = 0; - while( true ) { - for (pcVar5 = param_1 + iVar3; (iVar3 < iVar1 && (*pcVar5 != *param_2)); pcVar5 = pcVar5 + 1 - ) { - iVar3 = iVar3 + 1; - } - if (iVar1 == iVar3) { - return (char *)0x0; - } - iVar6 = 0; - local_10 = param_2; - iVar4 = iVar3; - for (pcVar5 = param_1 + iVar3; - ((iVar4 < iVar1 && (iVar6 < iVar2)) && (*pcVar5 == *local_10)); pcVar5 = pcVar5 + 1) { - iVar4 = iVar4 + 1; - iVar6 = iVar6 + 1; - local_10 = local_10 + 1; - } - if (iVar6 == iVar2) { - return param_1 + iVar3; - } - if (iVar1 == iVar4) break; - iVar3 = iVar3 + 1; - } - param_1 = (char *)0x0; - } - } - return param_1; -} - - - -/* @004d4d1c file=? name=FUN_004d4d1c */ - -char * __cdecl FUN_004d4d1c(char *param_1,char *param_2) - -{ - char *pcVar1; - char *pcVar2; - - if (param_1 == (char *)0x0) { - param_1 = DAT_00524c54; - } - for (; pcVar1 = param_2, *param_1 != '\0'; param_1 = param_1 + 1) { - for (; (*pcVar1 != '\0' && (*pcVar1 != *param_1)); pcVar1 = pcVar1 + 1) { - } - if (*pcVar1 == '\0') break; - } - DAT_00524c54 = param_1; - if (*param_1 == '\0') { - pcVar2 = (char *)0x0; - } - else { - for (; pcVar1 = param_2, pcVar2 = param_1, *DAT_00524c54 != '\0'; - DAT_00524c54 = DAT_00524c54 + 1) { - for (; *pcVar1 != '\0'; pcVar1 = pcVar1 + 1) { - if (*pcVar1 == *DAT_00524c54) { - *DAT_00524c54 = '\0'; - DAT_00524c54 = DAT_00524c54 + 1; - return param_1; - } - } - } - } - return pcVar2; -} - - - -/* @004d4d84 file=? name=FUN_004d4d84 */ - -int __cdecl FUN_004d4d84(undefined4 *param_1,char *param_2) - -{ - int iVar1; - - iVar1 = FUN_004d4a78(param_2); - FUN_004d4918(param_1,(undefined4 *)param_2,iVar1 + 1); - return iVar1 + (int)param_1; -} - - - -/* @004d4db0 file=? name=FUN_004d4db0 */ - -void FUN_004d4db0(void) - -{ - code *UNRECOVERED_JUMPTABLE; - - /* WARNING: Could not recover jumptable at 0x004d4db4. Too many branches */ - /* WARNING: Treating indirect jump as call */ - (*UNRECOVERED_JUMPTABLE)(); - return; -} - - - -/* @004d4db7 file=? name=FUN_004d4db7 */ - -char * __cdecl FUN_004d4db7(int param_1) - -{ - if (param_1 == 0) { - return s__0051f6d8; - } - return (char *)(param_1 + (uint)*(ushort *)(param_1 + 6)); -} - - - -/* @004d4dd0 file=? name=FUN_004d4dd0 */ - -undefined4 __cdecl FUN_004d4dd0(int *param_1,int *param_2) - -{ - char cVar1; - char cVar2; - char *pcVar3; - char *pcVar4; - - if (param_2 == param_1) { - return 1; - } - if (((short)param_1[1] == (short)param_2[1]) && (*param_1 == *param_2)) { - if (((*(ushort *)(param_1 + 1) | *(ushort *)(param_2 + 1)) & 0x80) != 0) { - return 0; - } - pcVar3 = (char *)((int)param_1 + (uint)*(ushort *)((int)param_1 + 6)); - pcVar4 = (char *)((int)param_2 + (uint)*(ushort *)((int)param_2 + 6)); - do { - cVar1 = *pcVar3; - pcVar3 = pcVar3 + 1; - cVar2 = *pcVar4; - pcVar4 = pcVar4 + 1; - if (cVar2 != cVar1) { - return 0; - } - } while (cVar1 != '\0'); - return 1; - } - return 0; -} - - - -/* @004d4e36 file=? name=FUN_004d4e36 */ - -undefined4 __cdecl FUN_004d4e36(int param_1,int *param_2,undefined4 param_3,int param_4) - -{ - int *piVar1; - int iVar2; - int iVar3; - undefined4 *puVar4; - - puVar4 = (undefined4 *)((uint)*(ushort *)(param_1 + 0x12) + param_1); - do { - piVar1 = (int *)*puVar4; - if (piVar1 == (int *)0x0) { - puVar4 = (undefined4 *)((uint)*(ushort *)(param_1 + 0x10) + param_1); - while( true ) { - piVar1 = (int *)*puVar4; - if (piVar1 == (int *)0x0) { - return 0; - } - if ((param_4 == 0) || ((puVar4[2] & 3) != 3)) { - iVar2 = 0; - } - else { - iVar2 = 1; - } - iVar3 = FUN_004d4dd0(param_2,piVar1); - if ((iVar3 != 0) && (iVar2 != 0)) break; - if (((*(byte *)(piVar1 + 3) & 4) != 0) && - (iVar2 = FUN_004d4e36((int)piVar1,param_2,param_3,iVar2), iVar2 != 0)) { - return 1; - } - puVar4 = puVar4 + 3; - } - return 1; - } - if ((*(byte *)(puVar4 + 2) & 8) == 0) { - if ((param_4 == 0) || ((puVar4[2] & 3) != 3)) { - iVar2 = 0; - } - else { - iVar2 = 1; - } - iVar3 = FUN_004d4dd0(param_2,piVar1); - if ((iVar3 != 0) && (iVar2 != 0)) { - return 1; - } - if (((*(byte *)(piVar1 + 3) & 4) != 0) && - (iVar2 = FUN_004d4e36((int)piVar1,param_2,param_3,iVar2), iVar2 != 0)) { - return 1; - } - } - puVar4 = puVar4 + 3; - } while( true ); -} - - - -/* @004d4f30 file=? name=FUN_004d4f30 */ - -undefined4 __cdecl FUN_004d4f30(int *param_1,int *param_2,int param_3,undefined4 param_4) - -{ - uint uVar1; - ushort uVar2; - ushort uVar3; - int iVar4; - undefined4 uVar5; - uint uVar6; - - while( true ) { - while( true ) { - if (param_2 == param_1) { - return 1; - } - uVar2 = *(ushort *)(param_1 + 1); - uVar3 = *(ushort *)(param_2 + 1); - if ((uVar3 & uVar2 & 0x10) == 0) break; - uVar6 = uVar2 & 0x300; - uVar1 = uVar3 & 0x300; - if (uVar6 != uVar1) { - if ((param_3 != 0) || (uVar6 == uVar1)) { - return 0; - } - if ((byte)(~(byte)(uVar1 >> 8) & (byte)(uVar6 >> 8)) != 0) { - return 0; - } - } - param_3 = 1; - param_1 = (int *)param_1[2]; - param_2 = (int *)param_2[2]; - } - if ((uVar3 & uVar2 & 0x400) == 0) break; - if ((param_1[3] != param_2[3]) && ((param_3 != 0 || (param_1[3] != 0 || param_2[3] != 0)))) { - return 0; - } - param_3 = 1; - param_1 = (int *)param_1[2]; - param_2 = (int *)param_2[2]; - } - iVar4 = FUN_004d4dd0(param_1,param_2); - if (iVar4 != 0) { - return 1; - } - if ((((uVar2 & 2) != 0) && ((uVar3 & 1) != 0)) && ((*(byte *)(param_1 + 3) & 4) != 0)) { - uVar5 = FUN_004d4e36((int)param_1,param_2,param_4,1); - return uVar5; - } - return 0; -} - - - -/* @004d503f file=? name=FUN_004d503f */ - -int * __cdecl FUN_004d503f(uint param_1) - -{ - uint *puVar1; - int *piVar2; - int unaff_FS_OFFSET; - - piVar2 = FUN_004de55c(param_1); - if (piVar2 == (int *)0x0) { - if ((0x80 < param_1) || ((*(byte *)(*(int *)(*(int *)(unaff_FS_OFFSET + 4) + -8) + 4) & 1) != 0) - ) { - FUN_004dedb8(); - } - puVar1 = (uint *)(*(int *)(*(int *)(unaff_FS_OFFSET + 4) + -8) + 4); - *puVar1 = *puVar1 | 1; - piVar2 = *(int **)(*(int *)(*(int *)(unaff_FS_OFFSET + 4) + -8) + 0x1c); - } - return piVar2; -} - - - -/* @004d5089 file=? name=FUN_004d5089 */ - -void __cdecl FUN_004d5089(int *param_1) - -{ - uint *puVar1; - int unaff_FS_OFFSET; - - if (param_1 == *(int **)(*(int *)(*(int *)(unaff_FS_OFFSET + 4) + -8) + 0x1c)) { - puVar1 = (uint *)(*(int *)(*(int *)(unaff_FS_OFFSET + 4) + -8) + 4); - *puVar1 = *puVar1 & 0xfffffffe; - return; - } - FUN_004de420(param_1); - return; -} - - - -/* @004d50b6 file=? name=FUN_004d50b6 */ - -bool __cdecl FUN_004d50b6(int *param_1,undefined4 param_2,int *param_3,byte param_4) - -{ - ushort uVar1; - ushort uVar2; - int iVar3; - - iVar3 = FUN_004d4f30(param_1,param_3,0,param_2); - if (iVar3 != 0) { - return true; - } - uVar1 = *(ushort *)(param_1 + 1); - uVar2 = *(ushort *)(param_3 + 1); - if ((uVar2 & 0x20) != 0) { - iVar3 = FUN_004d4f30(param_1,(int *)param_3[2],1,param_2); - if (iVar3 != 0) { - return true; - } - uVar2 = *(ushort *)((int *)param_3[2] + 1); - if ((uVar2 & 0x10) == 0) { - return false; - } - iVar3 = FUN_004d4f30(param_1,(int *)param_3[2],0,param_2); - if (iVar3 != 0) { - return true; - } - } - if ((uVar2 & 0x10) != 0) { - if ((param_4 & 1) != 0) { - return true; - } - if ((uVar1 & 0x10) == 0) { - return false; - } - if ((uVar2 & 0x40) != 0) { - return (uVar1 & 0x300) == (uVar2 & 0x300); - } - } - return false; -} - - - -/* @004d5177 file=? name=FUN_004d5177 */ - -void __cdecl FUN_004d5177(undefined4 param_1,undefined4 param_2,undefined *param_3,uint param_4) - -{ - uint uVar1; - - if ((param_4 & 0x1000) == 0) { - uVar1 = param_4 & 7; - if (uVar1 == 1) { - (*(code *)param_3)(param_1,param_2); - return; - } - if (uVar1 == 2) { - (*(code *)param_3)(param_2,param_1); - return; - } - if (uVar1 == 3) { - (*(code *)param_3)(); - return; - } - if (uVar1 != 5) { - return; - } - (*(code *)param_3)(param_1,param_2); - } - else { - uVar1 = param_4 & 7; - if (uVar1 == 1) { - (*(code *)param_3)(param_1,0,param_2); - return; - } - if (uVar1 == 2) { - (*(code *)param_3)(param_1,param_2,0); - return; - } - if (uVar1 == 3) { - (*(code *)param_3)(); - return; - } - if (uVar1 == 5) { - (*(code *)param_3)(param_1,0,param_2); - return; - } - } - return; -} - - - -/* @004d51fb file=? name=FUN_004d51fb */ - -void __cdecl FUN_004d51fb(undefined4 param_1,undefined *param_2,uint param_3,int param_4) - -{ - undefined4 uVar1; - uint uVar2; - - uVar1 = 2; - if (param_4 == 0) { - uVar1 = 0; - } - uVar2 = param_3 & 7; - if (uVar2 == 1) { - (*(code *)param_2)(param_1,uVar1); - return; - } - if (uVar2 == 2) { - (*(code *)param_2)(param_1,uVar1); - return; - } - if (uVar2 != 3) { - if (uVar2 != 5) { - return; - } - (*(code *)param_2)(param_1,uVar1); - return; - } - (*(code *)param_2)(); - return; -} - - - -/* @004d5248 file=? name=FUN_004d5248 */ - -void __cdecl FUN_004d5248(undefined4 param_1,undefined *param_2,uint param_3) - -{ - uint uVar1; - - uVar1 = param_3 & 7; - if (uVar1 == 1) { - (*(code *)param_2)(param_1); - return; - } - if (uVar1 == 2) { - (*(code *)param_2)(param_1); - return; - } - if (uVar1 == 3) { - (*(code *)param_2)(); - return; - } - if (uVar1 != 5) { - return; - } - (*(code *)param_2)(param_1); - return; -} - - - -/* @004d5282 file=? name=FUN_004d5282 */ - -void __cdecl -FUN_004d5282(uint *param_1,undefined4 *param_2,int param_3,undefined *param_4,uint param_5, - int param_6,int param_7,int param_8,undefined4 param_9,int param_10) - -{ - ushort uVar1; - uint uVar2; - undefined4 *unaff_FS_OFFSET; - ULONG_PTR local_40; - undefined4 local_3c; - int *local_38; - undefined4 local_34; - int *local_30; - uint local_2c; - uint *local_28; - undefined4 local_24; - undefined2 local_14; - - FUN_004d66b8(); - local_28 = param_1; - *(uint *)(*(int *)(unaff_FS_OFFSET[1] + -8) + 0x18) = - (uint)*(ushort *)((int)param_1 + 6) + (int)param_1; - *(int *)(*(int *)(unaff_FS_OFFSET[1] + -8) + 0x14) = param_7; - *(int *)(*(int *)(unaff_FS_OFFSET[1] + -8) + 0x10) = param_8; - uVar2 = *param_1; - uVar1 = (ushort)param_1[1]; - if ((uVar1 & 2) == 0) { - local_2c = 0; - } - else { - local_2c = param_1[3]; - } - if ((uVar1 & 0x30) != 0) { - param_1 = (uint *)param_1[2]; - } - local_30 = FUN_004d503f(uVar2 + 0x46); - *local_30 = **(int **)(unaff_FS_OFFSET[1] + -8); - **(undefined4 **)(unaff_FS_OFFSET[1] + -8) = local_30; - local_30[1] = (int)local_28; - local_30[3] = param_6; - local_30[4] = uVar2; - *(ushort *)(local_30 + 6) = uVar1; - *(undefined2 *)((int)local_30 + 0x1a) = (undefined2)local_2c; - local_30[5] = (int)param_1; - local_30[2] = param_3; - local_30[10] = 0; - local_30[0xb] = 0; - local_30[7] = (int)FUN_004d5089; - local_30[0xd] = param_7; - local_30[0xe] = param_8; - local_30[8] = (int)param_4; - local_30[9] = param_5; - *(undefined1 *)((int)local_30 + 0x45) = 0; - *(undefined1 *)(local_30 + 0x11) = 1; - FUN_004d4918((undefined4 *)((int)local_30 + 0x46),param_2,uVar2); - if ((local_2c & 1) != 0) { - local_34 = *DAT_00524c68; - local_14 = 8; - FUN_004d5177((int)local_30 + 0x46,param_2,param_4,param_5); - local_14 = 0; - *DAT_00524c68 = local_34; - } - if ((param_10 == 0) && ((local_2c & 2) != 0)) { - local_14 = 0x14; - FUN_004d51fb(param_2,(undefined *)local_28[10],(uint)(ushort)local_28[0xb],1); - local_14 = 0; - } - local_40 = *(ULONG_PTR *)(*(int *)(unaff_FS_OFFSET[1] + -8) + 0x18); - local_3c = param_9; - local_38 = local_30; - RaiseException(0xeefface,1,3,&local_40); - *unaff_FS_OFFSET = local_24; - return; -} - - - -/* @004d5488 file=? name=FUN_004d5488 */ - -void __cdecl -FUN_004d5488(uint *param_1,undefined4 *param_2,int param_3,undefined *param_4,uint param_5, - int param_6,int param_7,int param_8) - -{ - undefined4 unaff_retaddr; - - FUN_004d5282(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8,unaff_retaddr,0); - return; -} - - - -/* @004d54b5 file=? name=FUN_004d54b5 */ - -void __cdecl FUN_004d54b5(int param_1,int param_2) - -{ - int iVar1; - undefined4 *puVar2; - int unaff_FS_OFFSET; - undefined4 unaff_retaddr; - - iVar1 = **(int **)(*(int *)(unaff_FS_OFFSET + 4) + -8); - if (iVar1 == 0) { - FUN_004d6723(); - } - if (*(char *)(iVar1 + 0x44) == '\0') { - puVar2 = *(undefined4 **)(iVar1 + 0x40); - } - else { - puVar2 = (undefined4 *)(iVar1 + 0x46); - } - FUN_004d5282(*(uint **)(iVar1 + 4),puVar2,*(int *)(iVar1 + 8),*(undefined **)(iVar1 + 0x20), - *(uint *)(iVar1 + 0x24),*(int *)(iVar1 + 0xc),param_1,param_2,unaff_retaddr,1); - return; -} - - - -/* @004d5506 file=? name=FUN_004d5506 */ - -void __cdecl FUN_004d5506(undefined4 param_1,undefined4 *param_2) - -{ - undefined4 local_54; - undefined4 local_50; - undefined4 local_44; - - if (param_2 == (undefined4 *)0x0) { - local_54 = 0x26; - local_50 = 2; - local_44 = 0; - param_2 = &local_54; - } - param_2[1] = param_2[1] | 2; - FUN_004d69ea(param_2,(PEXCEPTION_RECORD)param_2); - return; -} - - - -/* @004d5545 file=? name=FUN_004d5545 */ - -void __cdecl FUN_004d5545(undefined4 param_1,undefined *param_2,uint param_3) - -{ - undefined4 *unaff_FS_OFFSET; - undefined4 local_24; - - FUN_004d66b8(); - FUN_004d51fb(param_1,param_2,param_3,1); - *unaff_FS_OFFSET = local_24; - return; -} - - - -/* @004d5593 file=? name=FUN_004d5593 */ - -void __cdecl FUN_004d5593(int param_1) - -{ - undefined4 uVar1; - int iVar2; - - if (*(char *)(param_1 + 0x44) != '\0') { - if ((*(byte *)(param_1 + 0x1a) & 2) != 0) { - uVar1 = *DAT_00524c68; - FUN_004d5545(param_1 + 0x46,*(undefined **)(*(int *)(param_1 + 4) + 0x28), - (uint)*(ushort *)(*(int *)(param_1 + 4) + 0x2c)); - *DAT_00524c68 = uVar1; - } - *(undefined1 *)(param_1 + 0x44) = 0; - } - if (*(char *)(param_1 + 0x45) != '\0') { - iVar2 = *(int *)(param_1 + 0x3c); - if (((*(byte *)(iVar2 + 4) & 2) != 0) && ((*(byte *)(iVar2 + 0xc) & 2) != 0)) { - FUN_004d5545(*(undefined4 *)(param_1 + 0x40),*(undefined **)(iVar2 + 0x28), - (uint)*(ushort *)(iVar2 + 0x2c)); - } - *(undefined1 *)(param_1 + 0x45) = 0; - } - return; -} - - - -/* @004d563c file=? name=FUN_004d563c */ - -undefined4 __cdecl FUN_004d563c(undefined4 *param_1,int param_2,int *param_3,int *param_4) - -{ - int *piVar1; - int iVar2; - undefined4 *local_8; - - while( true ) { - piVar1 = (int *)*param_1; - if (piVar1 == (int *)0x0) { - return 0; - } - local_8 = (undefined4 *)(*param_4 + param_1[1]); - if (param_2 != 0) { - local_8 = (undefined4 *)*local_8; - } - iVar2 = FUN_004d4dd0(piVar1,param_3); - if (iVar2 != 0) break; - if ((((*(byte *)(piVar1 + 1) & 2) != 0) && - ((undefined4 *)((int)piVar1 + (uint)*(ushort *)(piVar1 + 4)) != (undefined4 *)0x0)) && - (iVar2 = FUN_004d563c((undefined4 *)((int)piVar1 + (uint)*(ushort *)(piVar1 + 4)),0,param_3, - (int *)&local_8), iVar2 != 0)) { - *param_4 = (int)local_8; - return 1; - } - param_1 = param_1 + 3; - } - *param_4 = (int)local_8; - return 1; -} - - - -/* @004d56c2 file=? name=FUN_004d56c2 */ - -int __cdecl FUN_004d56c2(int param_1,int param_2,int *param_3) - -{ - int *piVar1; - int iVar2; - int iVar3; - - piVar1 = param_3; - iVar3 = param_2; - if (((param_1 != 0) && - (iVar2 = FUN_004d563c((undefined4 *)((uint)*(ushort *)(param_2 + 0x10) + param_2),0,param_3, - ¶m_1), iVar2 == 0)) && - (iVar3 = FUN_004d563c((undefined4 *)((uint)*(ushort *)(iVar3 + 0x12) + iVar3),1,piVar1,¶m_1 - ), iVar3 == 0)) { - param_1 = 0; - } - return param_1; -} - - - -/* @004d571e file=? name=FUN_004d571e */ - -void __cdecl FUN_004d571e(int param_1,undefined4 param_2,int param_3,int *param_4,int param_5) - -{ - ushort uVar1; - uint uVar2; - undefined4 *puVar3; - int iVar4; - ushort uVar5; - uint *puVar6; - bool bVar7; - bool bVar8; - undefined4 *local_8; - - puVar6 = *(uint **)(param_1 + 4); - *(uint **)(param_3 + 0x3c) = puVar6; - if ((puVar6 != (uint *)0x0) && ((*(byte *)(param_1 + 8) & 0x80) == 0)) { - bVar7 = (*(uint *)(param_1 + 8) & 1) == 0; - local_8 = (undefined4 *)(param_3 + 0x46); - *(undefined1 *)(param_3 + 0x45) = 1; - *(int *)(param_3 + 0x40) = *param_4 + param_5; - uVar2 = *puVar6; - uVar1 = (ushort)puVar6[1]; - uVar5 = uVar1; - if ((uVar1 & 0x30) != 0) { - puVar6 = (uint *)puVar6[2]; - uVar5 = (ushort)puVar6[1]; - } - if (((uVar1 & 0x10) == 0) || ((*(byte *)(param_3 + 0xc) & 1) == 0)) { - if (((uVar5 & 1) == 0) || ((uVar1 & 0x30) == 0)) { - if ((*(byte *)(param_3 + 0x18) & 1) == 0) { - if ((uVar1 & 0x20) == 0) { - FUN_004d4918(*(undefined4 **)(param_3 + 0x40),local_8,uVar2); - } - else { - FUN_004d4918(*(undefined4 **)(param_3 + 0x40),&local_8,uVar2); - bVar7 = true; - } - } - else { - iVar4 = FUN_004d4dd0(*(int **)(param_3 + 0x14),(int *)puVar6); - if (iVar4 == 0) { - local_8 = (undefined4 *) - FUN_004d56c2((int)local_8,*(int *)(param_3 + 0x14),(int *)puVar6); - } - bVar7 = iVar4 == 0 || bVar7; - if ((puVar6[3] & 1) == 0) { - FUN_004d4918(*(undefined4 **)(param_3 + 0x40),local_8,uVar2); - } - else { - FUN_004d5177(*(undefined4 *)(param_3 + 0x40),local_8,*(undefined **)(param_1 + 0xc), - *(uint *)(param_1 + 0x10)); - bVar7 = true; - } - } - } - else { - bVar8 = (uVar1 & 0x20) == 0; - if (bVar8) { - local_8 = (undefined4 *)*local_8; - } - bVar7 = !bVar8 || bVar7; - iVar4 = FUN_004d4dd0(*(int **)(param_3 + 0x14),(int *)puVar6); - puVar3 = local_8; - if ((iVar4 == 0) && - (local_8 = (undefined4 *) - FUN_004d56c2((int)local_8,*(int *)(param_3 + 0x14),(int *)puVar6), - local_8 != puVar3)) { - bVar7 = true; - } - FUN_004d4918(*(undefined4 **)(param_3 + 0x40),&local_8,uVar2); - } - } - else { - FUN_004d4988(*(undefined4 **)(param_3 + 0x40),0,uVar2); - bVar7 = true; - } - if (!bVar7) { - if ((puVar6[3] & 2) != 0) { - FUN_004d5545(local_8,(undefined *)puVar6[10],(uint)(ushort)puVar6[0xb]); - } - *(undefined1 *)(param_3 + 0x44) = 0; - } - } - return; -} - - - -/* @004d58d2 file=? name=FUN_004d58d2 */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -void __cdecl FUN_004d58d2(int param_1) - -{ - int *piVar1; - int *piVar2; - undefined4 uVar3; - uint uVar4; - uint uVar5; - undefined1 *puVar6; - uint uVar7; - int unaff_FS_OFFSET; - - puVar6 = &stack0xfffffffc; - uVar7 = (uint)*(ushort *)(param_1 + 0x10); - do { - while( true ) { - do { - while( true ) { - uVar5 = uVar7; - if ((uVar5 == 0) || (uVar5 == *(uint *)(puVar6 + 0xc))) { - return; - } - uVar7 = (uint)*(ushort *)(*(int *)(puVar6 + -4) + uVar5); - uVar4 = (uint)*(ushort *)(*(int *)(puVar6 + -4) + uVar5 + 2); - *(ushort *)(*(int *)(puVar6 + 8) + 0x10) = *(ushort *)(*(int *)(puVar6 + -4) + uVar5); - if (uVar4 != 0) break; - _DAT_00524c58 = *(undefined4 *)(*(int *)(puVar6 + -4) + 4 + uVar5 + 4); - *(undefined2 *)(*(int *)(puVar6 + 8) + 0x12) = 1; - FUN_004d69ff(); - *(undefined2 *)(*(int *)(puVar6 + 8) + 0x12) = 0; - } - } while (uVar4 - 1 < 3); - if (uVar4 == 4) break; - if (uVar4 - 1 == 4) { - uVar3 = FUN_004d5fe6(*(int **)(*(int *)(puVar6 + -4) + uVar5 + 8), - *(int *)(*(int *)(puVar6 + -4) + uVar5 + 4) + *(int *)(puVar6 + -0xc), - *(int *)(puVar6 + 8),*(int *)(puVar6 + -8)); - *(undefined4 *)(puVar6 + -0xc) = uVar3; - } - } - piVar1 = *(int **)(*(int *)(unaff_FS_OFFSET + 4) + -8); - do { - piVar2 = piVar1; - piVar1 = (int *)*piVar2; - if (piVar1 == (int *)0x0) break; - } while ((piVar1[10] != *(int *)(puVar6 + 8)) || (uVar5 != piVar1[0xc])); - *piVar2 = *piVar1; - FUN_004d5593((int)piVar1); - (*(code *)piVar1[7])(piVar1); - } while( true ); -} - - - -/* @004d59e0 file=? name=FUN_004d59e0 */ - -void __cdecl FUN_004d59e0(int param_1) - -{ - FUN_004d58d2(param_1); - return; -} - - - -/* @004d59f3 file=? name=FUN_004d59f3 */ - -void __cdecl FUN_004d59f3(undefined4 *param_1) - -{ - undefined4 *unaff_FS_OFFSET; - - FUN_004d58d2((int)param_1); - *unaff_FS_OFFSET = *param_1; - return; -} - - - -/* @004d5a10 file=? name=FUN_004d5a10 */ - -int * __cdecl FUN_004d5a10(int param_1,int param_2) - -{ - bool bVar1; - undefined3 extraout_var; - int *piVar2; - - piVar2 = (int *)(param_1 + 8); - while( true ) { - if (*piVar2 == 0) { - return (int *)0x0; - } - if ((int *)piVar2[1] == (int *)0x0) break; - bVar1 = FUN_004d50b6(*(int **)(param_2 + 4),*(undefined4 *)(param_2 + 8),(int *)piVar2[1], - (byte)*(undefined4 *)(param_2 + 0xc)); - if (CONCAT31(extraout_var,bVar1) != 0) { - return piVar2; - } - piVar2 = piVar2 + 5; - } - return piVar2; -} - - - -/* @004d5a65 file=? name=FUN_004d5a65 */ - -/* WARNING (jumptable): Unable to track spacebase fully for stack */ -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -undefined4 FUN_004d5a65(void) - -{ - undefined4 uVar1; - bool bVar2; - undefined3 extraout_var; - int *piVar3; - int *piVar4; - uint uVar5; - int unaff_EBP; - int iVar6; - undefined4 *unaff_FS_OFFSET; - - *(undefined4 *)(unaff_EBP + -4) = *(undefined4 *)(unaff_EBP + 8); - *(undefined4 *)(unaff_EBP + -8) = *(undefined4 *)(unaff_EBP + 0xc); - *(undefined4 *)(unaff_EBP + -0xc) = *(undefined4 *)(unaff_EBP + 0x10); - *(undefined4 *)(unaff_EBP + -0x10) = *(undefined4 *)(*(int *)(unaff_EBP + -4) + 0x1c); - piVar4 = *(int **)(*(int *)(unaff_EBP + -8) + 8); - *(int *)(unaff_EBP + -0x18) = *(int *)(unaff_EBP + -8) - piVar4[1]; - *(undefined4 *)(unaff_EBP + -0x1c) = *(undefined4 *)(*(int *)(unaff_EBP + -8) + 0xc); - if ((*(byte *)(*(int *)(unaff_EBP + -4) + 4) & 6) == 0) { - uVar5 = (uint)*(ushort *)(*(int *)(unaff_EBP + -8) + 0x10); - while (uVar5 != 0) { - *(uint *)(unaff_EBP + -0x14) = (uint)*(ushort *)((int)piVar4 + uVar5); - *(uint *)(unaff_EBP + -0x20) = (uint)*(ushort *)((int)piVar4 + uVar5 + 2); - iVar6 = uVar5 + 4; - switch(*(undefined4 *)(unaff_EBP + -0x20)) { - case 1: - if (**(int **)(unaff_EBP + -4) != 0xeefface) { - *(undefined4 *)(unaff_EBP + -0x34) = *(undefined4 *)(unaff_EBP + -4); - *(undefined4 *)(unaff_EBP + -0x30) = *(undefined4 *)(unaff_EBP + -0xc); - *(undefined4 *)(*(int *)(unaff_EBP + -8) + 0x14) = **(undefined4 **)(unaff_EBP + -4); - *(int *)(*(int *)(unaff_EBP + -8) + 0x18) = unaff_EBP + -0x34; - _DAT_00524c5c = *(undefined4 *)((int)piVar4 + iVar6); - iVar6 = FUN_004d69ff(); -LAB_004d5c8d: - if (iVar6 < 0) { - if ((*(byte *)(*(int *)(unaff_EBP + -4) + 4) & 1) != 0) { - *(undefined2 *)(*(int *)(unaff_EBP + -8) + 0x10) = *(undefined2 *)(unaff_EBP + -0x14); - } - return 0; - } - if (iVar6 != 0) { - *(undefined4 *)(*(int *)(unaff_EBP + -8) + 0x18) = 0; - *(undefined4 *)(unaff_EBP + -0x2c) = *(undefined4 *)(unaff_EBP + -0x14); -LAB_004d5bb9: - FUN_004d5506(*(undefined4 *)(unaff_EBP + -8),*(undefined4 **)(unaff_EBP + -4)); - FUN_004d58d2(*(int *)(unaff_EBP + -8)); - *(undefined2 *)(*(int *)(unaff_EBP + -8) + 0x10) = *(undefined2 *)(unaff_EBP + -0x2c); - if (*(int *)(unaff_EBP + -0x20) == 3) { - FUN_004d571e(*(int *)(unaff_EBP + -0x24),*(undefined4 *)(unaff_EBP + -8), - *(int *)(unaff_EBP + -0x10),*(int **)(unaff_EBP + -0x28), - *(int *)(unaff_EBP + -0x18)); - } - FUN_004d4db0(); - } - } - break; - case 2: - if (**(int **)(unaff_EBP + -4) != 0xeefface) { - *(undefined4 *)(*(int *)(unaff_EBP + -8) + 0x14) = **(undefined4 **)(unaff_EBP + -4); - iVar6 = *(int *)((int)piVar4 + iVar6); - goto LAB_004d5c8d; - } - break; - case 3: - if (**(int **)(unaff_EBP + -4) == 0xeefface) { - *(undefined4 *)(unaff_EBP + -0x28) = *(undefined4 *)((int)piVar4 + iVar6); - piVar3 = FUN_004d5a10(*(int *)(unaff_EBP + -0x28),*(int *)(unaff_EBP + -0x10)); - *(int **)(unaff_EBP + -0x24) = piVar3; - if (*(int *)(unaff_EBP + -0x24) != 0) { - *(undefined4 *)(*(int *)(unaff_EBP + -0x10) + 0x28) = *(undefined4 *)(unaff_EBP + -8); - *(undefined4 *)(*(int *)(unaff_EBP + -0x10) + 0x2c) = *(undefined4 *)(unaff_EBP + -0x24) - ; - *(uint *)(*(int *)(unaff_EBP + -0x10) + 0x30) = uVar5 + 8; - *(uint *)(unaff_EBP + -0x2c) = uVar5 + 8; - goto LAB_004d5bb9; - } - } - } - uVar5 = *(uint *)(unaff_EBP + -0x14); - } - } - else { - FUN_004d58d2(*(int *)(unaff_EBP + -8)); - if ((**(int **)(unaff_EBP + -4) == 0xeefface) && (piVar4 = (int *)*piVar4, piVar4 != (int *)0x0) - ) { - for (; *piVar4 != 0; piVar4 = piVar4 + 1) { - bVar2 = FUN_004d50b6(*(int **)(*(int *)(unaff_EBP + -0x10) + 4), - *(undefined4 *)(*(int *)(unaff_EBP + -0x10) + 8),(int *)*piVar4, - (byte)*(undefined4 *)(*(int *)(unaff_EBP + -0x10) + 0xc)); - if (CONCAT31(extraout_var,bVar2) != 0) { - return 1; - } - } - uVar1 = *unaff_FS_OFFSET; - *unaff_FS_OFFSET = **(undefined4 **)(unaff_EBP + -8); - FUN_004d679c(); - *unaff_FS_OFFSET = uVar1; - } - } - return 1; -} - - - -/* @004d5cdf file=? name=FUN_004d5cdf */ - -void __cdecl FUN_004d5cdf(undefined4 param_1,int param_2,int param_3) - -{ - undefined4 *unaff_FS_OFFSET; - undefined4 local_24; - - FUN_004d66b8(); - FUN_004d51fb(param_1,*(undefined **)(param_2 + 0x28),(uint)*(ushort *)(param_2 + 0x2c),param_3); - *unaff_FS_OFFSET = local_24; - return; -} - - - -/* @004d5d4b file=? name=FUN_004d5d4b */ - -void __cdecl -FUN_004d5d4b(int param_1,int *param_2,int *param_3,uint param_4,int param_5,undefined4 param_6) - -{ - undefined4 *puVar1; - int *piVar2; - - while (piVar2 = param_2 + -3, param_3 <= piVar2) { - puVar1 = (undefined4 *)(param_2[-2] + param_1); - if (param_5 != 0) { - puVar1 = (undefined4 *)*puVar1; - } - param_2 = piVar2; - if ((*(byte *)(*piVar2 + 0xc) & 2) != 0) { - FUN_004d5d90((int)puVar1,*piVar2,param_4,0,param_6); - param_4 = 0; - } - } - return; -} - - - -/* @004d5d90 file=? name=FUN_004d5d90 */ - -void __cdecl FUN_004d5d90(int param_1,int param_2,uint param_3,int param_4,undefined4 param_5) - -{ - int *piVar1; - int iVar2; - uint uVar3; - int *piVar4; - int *piVar5; - int *piVar6; - int *piVar7; - uint local_18; - int *local_10; - - if (param_4 == 0) { - uVar3 = *(uint *)(param_2 + 0x24); - } - else { - uVar3 = *(uint *)(param_2 + 0x20); - } - if ((param_3 == 0) || (uVar3 <= param_3)) { - FUN_004d5cdf(param_1,param_2,param_4); - } - else { - piVar1 = (int *)((uint)*(ushort *)(param_2 + 0x12) + param_2); - local_10 = piVar1; - if (param_4 != 0) { - for (; iVar2 = *local_10, iVar2 != 0; local_10 = local_10 + 3) { - if ((*(byte *)(iVar2 + 0xc) & 2) != 0) { - if (param_3 <= *(uint *)(iVar2 + 0x24)) { - FUN_004d5d4b(param_1,local_10 + 3,piVar1,param_3,1,param_5); - return; - } - param_3 = param_3 - *(uint *)(iVar2 + 0x24); - } - } - } - piVar6 = (int *)((uint)*(ushort *)(param_2 + 0x10) + param_2); - for (piVar7 = piVar6; iVar2 = *piVar7, iVar2 != 0; piVar7 = piVar7 + 3) { - if ((*(byte *)(iVar2 + 0xc) & 2) != 0) { - if (param_3 <= *(uint *)(iVar2 + 0x24)) { - FUN_004d5d4b(param_1,piVar7 + 3,piVar6,param_3,0,param_5); - if (param_4 == 0) { - return; - } - FUN_004d5d4b(param_1,local_10,piVar1,0,1,param_5); - return; - } - param_3 = param_3 - *(uint *)(iVar2 + 0x24); - } - } - piVar4 = (int *)((uint)*(ushort *)(param_2 + 0x2e) + param_2); - piVar5 = piVar4; - while( true ) { - iVar2 = *piVar5; - local_18 = 1; - if ((*(byte *)(iVar2 + 5) & 4) != 0) { - local_18 = *(uint *)(iVar2 + 0xc); - iVar2 = *(int *)(iVar2 + 8); - } - uVar3 = *(int *)(iVar2 + 0x20) * local_18; - if (param_3 <= uVar3) break; - param_3 = param_3 - uVar3; - piVar5 = piVar5 + 2; - } - do { - if (local_18 < 2) { - FUN_004d5d90(param_1 + piVar5[1],*piVar5,param_3,1,param_5); - } - else { - FUN_004d5f36(param_1 + piVar5[1],*piVar5,param_3,param_5); - } - param_3 = 0; - piVar5 = piVar5 + -2; - } while (piVar4 <= piVar5); - FUN_004d5d4b(param_1,piVar7,piVar6,0,0,param_5); - if (param_4 != 0) { - FUN_004d5d4b(param_1,local_10,piVar1,0,1,param_5); - } - } - return; -} - - - -/* @004d5f36 file=? name=FUN_004d5f36 */ - -void __cdecl FUN_004d5f36(int param_1,int param_2,uint param_3,undefined4 param_4) - -{ - int *piVar1; - uint uVar2; - uint uVar3; - int iVar4; - uint local_8; - - piVar1 = *(int **)(param_2 + 8); - uVar2 = piVar1[8]; - if (param_3 == 0) { - param_3 = uVar2 * *(int *)(param_2 + 0xc); - } - local_8 = param_3 / uVar2; - uVar3 = param_3 - local_8 * uVar2; - iVar4 = param_1 + local_8 * *piVar1; - if (uVar3 != 0) { - FUN_004d5d90(iVar4,(int)piVar1,uVar3,1,param_4); - } - while (local_8 != 0) { - iVar4 = iVar4 - *piVar1; - FUN_004d5d90(iVar4,(int)piVar1,uVar2,1,param_4); - local_8 = local_8 - 1; - } - return; -} - - - -/* @004d5fa8 file=? name=FUN_004d5fa8 */ - -int __cdecl FUN_004d5fa8(int param_1,int *param_2) - -{ - int iVar1; - int iVar2; - - iVar1 = *param_2; - if ((*(uint *)(iVar1 + 0xc) & 0x50) != 0x50) { - return param_1; - } - if (*(int *)(iVar1 + 8) == -1) { - return param_1; - } - iVar1 = *(int *)(*(int *)(iVar1 + 8) + param_1); - iVar2 = *(int *)(iVar1 + -8); - *param_2 = *(int *)((iVar1 - *(int *)(iVar1 + -4)) + -0xc); - return param_1 - iVar2; -} - - - -/* @004d5fe6 file=? name=FUN_004d5fe6 */ - -undefined4 __cdecl FUN_004d5fe6(int *param_1,int param_2,int param_3,int param_4) - -{ - bool bVar1; - undefined4 uVar2; - int iVar3; - uint uVar4; - int *piVar5; - int iVar6; - uint uVar7; - int *local_1c; - int *local_18; - int local_14; - int *local_10; - int local_c; - int local_8; - - local_8 = 0; - if (param_1 == (int *)0x0) { - uVar2 = 0; - } - else { - uVar7 = (*DAT_00524c68 - *(int *)(param_3 + 0x1c)) - param_2; - if ((*(byte *)(param_1 + 1) & 0x20) != 0) { - uVar7 = *(uint *)(*(int *)(*param_1 + 8) + 0x20); - } - if ((*(byte *)((int)param_1 + 5) & 1) == 0) { - piVar5 = param_1; - if ((int)uVar7 < 1) { - if ((param_1[1] & 3U) != 3) { - return 0; - } - local_8 = 1; - } - else { - for (; *piVar5 != 0; piVar5 = piVar5 + 3) { - local_c = *piVar5; - iVar6 = 1; - if (((((*(byte *)(local_c + 4) & 0x10) != 0) && - (local_c = *(int *)(local_c + 8), (*(byte *)(local_c + 4) & 2) != 0)) && - ((*(byte *)(local_c + 0xc) & 0x20) != 0)) && ((*(byte *)(piVar5 + 1) & 8) != 0)) { - if ((*(byte *)(piVar5 + 1) & 4) == 0) { - local_10 = (int *)piVar5[2]; - } - else { - local_10 = (int *)(param_4 + piVar5[2]); - } - local_10 = (int *)*local_10; - if ((*(byte *)(piVar5 + 1) & 0x40) != 0) { - local_10 = (int *)((int)local_10 + 4); - } - local_10 = (int *)FUN_004d5fa8((int)local_10,&local_c); - } - iVar3 = local_c; - if ((*(byte *)(local_c + 5) & 4) != 0) { - iVar6 = *(int *)(local_c + 0xc); - iVar3 = *(int *)(local_c + 8); - } - uVar4 = *(int *)(iVar3 + 0x20) * iVar6; - if (uVar7 <= uVar4) goto LAB_004d6109; - uVar7 = uVar7 - uVar4; - } - piVar5 = piVar5 + -3; - } -LAB_004d6109: - do { - local_14 = *piVar5; - uVar4 = piVar5[1]; - if ((uVar4 & 4) == 0) { - local_18 = (int *)piVar5[2]; - } - else { - local_18 = (int *)(param_4 + piVar5[2]); - } - if ((uVar4 & 0x11) != 0) { - local_14 = *(int *)(local_14 + 8); - local_1c = (int *)*local_18; - local_18 = local_1c; - if ((uVar4 & 0x48) == 0x40) { - local_18 = local_1c + 1; - } - if ((((*(byte *)(local_14 + 4) & 2) != 0) && ((*(byte *)(local_14 + 0xc) & 0x20) != 0)) && - ((uVar4 & 8) != 0)) { - local_18 = (int *)FUN_004d5fa8((int)local_18,&local_14); - } - } - if (local_8 == 0) { - if ((*(byte *)(local_14 + 5) & 4) == 0) { - FUN_004d5d90((int)local_18,local_14,uVar7,1,param_4); - } - else { - FUN_004d5f36((int)local_18,local_14,uVar7,param_4); - } - } - if ((uVar4 & 3) == 3) { - if ((uVar4 & 0x48) == 0x48) { - local_1c = local_1c + -1; - } - if ((*(byte *)(local_14 + 5) & 4) == 0) { - if (*(int *)(local_14 + 0x14) == 0) { - FUN_004022d0(local_1c); - } - else { - FUN_004d5248(local_1c,*(undefined **)(local_14 + 0x14), - (uint)*(ushort *)(local_14 + 0x18)); - } - } - else { - local_14 = *(int *)(local_14 + 8); - if (*(int *)(local_14 + 0x1c) == 0) { - FUN_004022e8(local_1c); - } - else { - FUN_004d5248(local_1c,*(undefined **)(local_14 + 0x1c), - (uint)*(ushort *)(local_14 + 0x1a)); - } - } - } - uVar7 = 0; - bVar1 = param_1 < piVar5; - piVar5 = piVar5 + -3; - } while (bVar1); - uVar2 = 0; - } - else { - uVar2 = *(undefined4 *)(*param_1 + 0x24); - } - } - return uVar2; -} - - - -/* @004d6257 file=? name=FUN_004d6257 */ - -uint __cdecl FUN_004d6257(int param_1) - -{ - uint uVar1; - int iVar2; - - if (param_1 == -1) { - uVar1 = 0xffffffff; - } - else { - iVar2 = FUN_004d4b14((byte *)(*(int *)(param_1 + 4) + -8),(byte *)s___BCCxh1_0051f6e1,8); - if (iVar2 == 0) { - uVar1 = (uint)*(ushort *)(param_1 + 0x10); - } - else { - uVar1 = 0xffffffff; - } - } - return uVar1; -} - - - -/* @004d62b7 file=? name=FUN_004d62b7 */ - -undefined4 * __cdecl FUN_004d62b7(undefined4 *param_1) - -{ - undefined4 local_8; - - *param_1 = &PTR_FUN_0051f6f8; - local_8 = 0; - FUN_004d5488((uint *)&DAT_004d6621,&local_8,0,(undefined *)0x0,0,0,0,0); - return param_1; -} - - - -/* @004d62ed file=? name=FUN_004d62ed */ - -undefined4 __cdecl FUN_004d62ed(undefined4 param_1) - -{ - return param_1; -} - - - -/* @004d62f5 file=? name=FUN_004d62f5 */ - -void __cdecl FUN_004d62f5(int *param_1,byte param_2) - -{ - if ((param_1 != (int *)0x0) && (*param_1 = (int)&PTR_FUN_0051f6f8, (param_2 & 1) != 0)) { - FUN_004022d0(param_1); - } - return; -} - - - -/* @004d6314 file=? name=FUN_004d6314 */ - -void __cdecl FUN_004d6314(int param_1,int param_2) - -{ - FUN_004d4dd0(*(int **)(param_1 + 4),*(int **)(param_2 + 4)); - return; -} - - - -/* @004d632d file=? name=FUN_004d632d */ - -bool __cdecl FUN_004d632d(int param_1,int param_2) - -{ - int iVar1; - - iVar1 = FUN_004d6314(param_1,param_2); - return iVar1 == 0; -} - - - -/* @004d634a file=? name=FUN_004d634a */ - -bool __cdecl FUN_004d634a(int param_1,int param_2) - -{ - int iVar1; - bool bVar2; - - if (*(int *)(param_1 + 4) == 0) { - bVar2 = false; - } - else if (*(int *)(param_2 + 4) == 0) { - bVar2 = true; - } - else { - iVar1 = FUN_004d4a1c((char *)((uint)*(ushort *)(*(int *)(param_1 + 4) + 6) + - *(int *)(param_1 + 4)), - (char *)((uint)*(ushort *)(*(int *)(param_2 + 4) + 6) + - *(int *)(param_2 + 4))); - bVar2 = iVar1 < 0; - } - return bVar2; -} - - - -/* @004d6396 file=? name=FUN_004d6396 */ - -void __cdecl FUN_004d6396(int param_1) - -{ - FUN_004d4db7(*(int *)(param_1 + 4)); - return; -} - - - -/* @004d63a7 file=? name=FUN_004d63a7 */ - -int __cdecl FUN_004d63a7(int param_1,int param_2,undefined4 param_3,int param_4) - -{ - if (param_1 == 0) { - FUN_004d5488((uint *)&DAT_004d6638,(undefined4 *)&DAT_00524c60,0,(undefined *)0x0,0,0,0,0); - } - *(undefined4 *)(param_4 + 4) = *(undefined4 *)((param_2 - *(int *)(param_2 + -4)) + -0xc); - return param_4; -} - - - -/* @004d63e5 file=? name=FUN_004d63e5 */ - -undefined4 * __cdecl -FUN_004d63e5(int param_1,int *param_2,undefined4 *param_3,int *param_4,int param_5,int *param_6, - uint *param_7,int param_8,int *param_9) - -{ - int *piVar1; - bool bVar2; - int iVar3; - undefined4 *puVar4; - undefined4 *puVar5; - undefined4 *puVar6; - int *local_1c; - uint local_18; - int local_14; - undefined4 *local_10; - uint local_c; - - local_c = 0; - local_10 = (undefined4 *)0x0; - local_14 = 0; - if (((param_6 != (int *)0x0) && (iVar3 = FUN_004d4dd0(param_6,param_2), iVar3 != 0)) || - ((*(byte *)(param_2 + 3) & 4) == 0)) { - return (undefined4 *)0x0; - } - bVar2 = false; - puVar5 = (undefined4 *)((uint)*(ushort *)((int)param_2 + 0x12) + (int)param_2); - do { - while (piVar1 = (int *)*puVar5, piVar1 == (int *)0x0) { - if (bVar2) { - *param_7 = local_c; - if (local_14 != 1) { - return (undefined4 *)0x0; - } - return local_10; - } - bVar2 = true; - puVar5 = (undefined4 *)((uint)*(ushort *)(param_2 + 4) + (int)param_2); - } - if ((*(byte *)(puVar5 + 2) & 8) == 0) { - if ((param_8 == 0) || ((puVar5[2] & 3) != 3)) { - local_18 = 0; - } - else { - local_18 = 1; - } - puVar6 = (undefined4 *)(param_1 + puVar5[1]); - local_1c = param_9; - if ((*(byte *)(puVar5 + 2) & 4) != 0) { - puVar6 = (undefined4 *)*puVar6; - local_1c = piVar1; - } - iVar3 = FUN_004d4dd0(param_4,piVar1); - if (iVar3 == 0) { - if (((*(byte *)(piVar1 + 3) & 4) != 0) && - (puVar6 = FUN_004d63e5((int)puVar6,piVar1,param_3,param_4,param_5,param_6,param_7, - local_18,local_1c), puVar6 != (undefined4 *)0x0)) { - local_18 = *param_7; -LAB_004d6500: - if ((local_14 == 0) || (puVar6 != local_10)) { - local_14 = local_14 + 1; - local_c = local_18; - local_10 = puVar6; - } - else { - local_c = local_c | local_18; - } - } - } - else if (param_3 == (undefined4 *)0x0) { - if ((param_5 == 0) || - (puVar4 = FUN_004d63e5((int)puVar6,piVar1,(undefined4 *)param_5,param_6,0,(int *)0x0, - param_7,0,(int *)0x0), puVar4 != (undefined4 *)0x0)) - goto LAB_004d6500; - } - else if (puVar6 == param_3) { - return puVar6; - } - } - puVar5 = puVar5 + 3; - } while( true ); -} - - - -/* @004d655c file=? name=FUN_004d655c */ - -undefined4 * __cdecl FUN_004d655c(int param_1,int param_2,int *param_3,int *param_4,int param_5) - -{ - int *piVar1; - int iVar2; - undefined4 *puVar3; - undefined4 *puVar4; - uint local_c; - int *local_8; - - local_8 = param_3; - if (param_1 != 0) { - puVar4 = (undefined4 *)(param_1 - *(int *)(param_2 + -8)); - piVar1 = *(int **)((param_2 - *(int *)(param_2 + -4)) + -0xc); - if (param_4 == (int *)0x0) { - return puVar4; - } - iVar2 = FUN_004d4dd0(param_4,piVar1); - if (iVar2 != 0) { - return puVar4; - } - iVar2 = FUN_004d4dd0(local_8,piVar1); - if ((iVar2 == 0) && - (puVar3 = FUN_004d63e5((int)puVar4,piVar1,(undefined4 *)0x0,param_4,param_1,local_8,&local_c, - 1,(int *)0x0), puVar3 != (undefined4 *)0x0)) { - return puVar3; - } - puVar4 = FUN_004d63e5((int)puVar4,piVar1,(undefined4 *)0x0,param_4,0,(int *)0x0,&local_c,1, - (int *)0x0); - if ((puVar4 != (undefined4 *)0x0) && (local_c != 0)) { - return puVar4; - } - } - if (param_5 != 0) { - FUN_004d5488((uint *)&DAT_004d6654,(undefined4 *)&DAT_00524c61,0,(undefined *)0x0,0,0,0,0); - } - return (undefined4 *)0x0; -} - - - -/* @004d66b8 file=? name=FUN_004d66b8 */ - -void FUN_004d66b8(void) - -{ - undefined4 *puVar1; - int in_EAX; - undefined4 *puVar2; - int unaff_EBP; - undefined2 in_FS; - - puVar2 = (undefined4 *)(unaff_EBP + *(int *)(in_EAX + 4)); - puVar2[2] = in_EAX; - puVar2[3] = &stack0x00000004; - puVar2[1] = &DAT_004d5a5f; - puVar2[4] = 0; - *(undefined4 *)((int)puVar2 + 0x12) = 0; - puVar2[7] = *DAT_00524c68; - puVar1 = (undefined4 *)segment(in_FS,0); - *puVar2 = *puVar1; - puVar1 = (undefined4 *)segment(in_FS,0); - *puVar1 = puVar2; - return; -} - - - -/* @004d66fe file=? name=FUN_004d66fe */ - -undefined4 __cdecl FUN_004d66fe(int param_1) - -{ - undefined4 uVar1; - int unaff_FS_OFFSET; - - uVar1 = *(undefined4 *)(*(int *)(*(int *)(unaff_FS_OFFSET + 4) + -8) + 8); - if (param_1 != 0) { - *(int *)(*(int *)(*(int *)(unaff_FS_OFFSET + 4) + -8) + 8) = param_1; - } - return uVar1; -} - - - -/* @004d6723 file=? name=FUN_004d6723 */ - -void FUN_004d6723(void) - -{ - undefined4 *unaff_FS_OFFSET; - undefined4 local_24; - - FUN_004d66b8(); - thunk_FUN_004d87e8(); - (**(code **)(*(int *)(unaff_FS_OFFSET[1] + -8) + 8))(); - FUN_004dedb8(); - *unaff_FS_OFFSET = local_24; - return; -} - - - -/* @004d6777 file=? name=FUN_004d6777 */ - -undefined4 __cdecl FUN_004d6777(int param_1) - -{ - undefined4 uVar1; - int unaff_FS_OFFSET; - - uVar1 = *(undefined4 *)(*(int *)(*(int *)(unaff_FS_OFFSET + 4) + -8) + 0xc); - if (param_1 != 0) { - *(int *)(*(int *)(*(int *)(unaff_FS_OFFSET + 4) + -8) + 0xc) = param_1; - } - return uVar1; -} - - - -/* @004d679c file=? name=FUN_004d679c */ - -void FUN_004d679c(void) - -{ - int unaff_FS_OFFSET; - - (**(code **)(*(int *)(*(int *)(unaff_FS_OFFSET + 4) + -8) + 0xc))(); - FUN_004dedb8(); - return; -} - - - -/* @004d67b0 file=? name=FUN_004d67b0 */ - -undefined4 __cdecl FUN_004d67b0(int param_1,int param_2) - -{ - if (param_1 == 0) { - return 0; - } - return *(undefined4 *) - (*(int *)((*(int *)(param_1 + param_2) - *(int *)(*(int *)(param_1 + param_2) + -4)) + - -0xc) + 0x20); -} - - - -/* @004d67cf file=? name=FUN_004d67cf */ - -void __cdecl FUN_004d67cf(int param_1) - -{ - HMODULE hModule; - FARPROC pFVar1; - int unaff_FS_OFFSET; - bool bVar2; - uint local_c; - int local_8; - - bVar2 = param_1 == 0; - if (param_1 == 0) { - if (DAT_004e0058 != '\0') { - pFVar1 = (FARPROC)0x0; - hModule = GetModuleHandleA((LPCSTR)0x0); - if (hModule != (HMODULE)0x0) { - pFVar1 = GetProcAddress(hModule,s___GetExceptDLLinfo_0051f7d8); - } - if (pFVar1 != (FARPROC)0x0) { - (*pFVar1)(&local_c); - if ((0x82727348 < local_c) && (local_c < 0x8272735a)) { - param_1 = local_8; - } - } - } - if (param_1 == 0) { - FUN_004d6888(&local_c); - param_1 = local_8; - } - } - else { - *(undefined1 **)(param_1 + 8) = &LAB_004d66f8; - *(undefined1 **)(param_1 + 0xc) = &LAB_004d6771; - } - *(int *)(*(int *)(unaff_FS_OFFSET + 4) + -8) = param_1; - if (bVar2) { - DAT_00524c68 = *(int *)(unaff_FS_OFFSET + 4) + -4; - } - *(undefined4 *)(*(int *)(unaff_FS_OFFSET + 4) + -4) = 0; - *(undefined4 *)(*(int *)(*(int *)(unaff_FS_OFFSET + 4) + -8) + 4) = 0; - return; -} - - - -/* @004d6888 file=? name=FUN_004d6888 */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -void __cdecl FUN_004d6888(undefined4 *param_1) - -{ - int unaff_FS_OFFSET; - - _DAT_0051f718 = *(int *)(*(int *)(unaff_FS_OFFSET + 4) + -8) + 0x24; - *param_1 = 0x82727349; - param_1[1] = &DAT_0051f6fc; - return; -} - - - -/* @004d68b0 file=? name=FUN_004d68b0 */ - -undefined4 FUN_004d68b0(void) - -{ - return 1; -} - - - -/* @004d6958 file=? name=FUN_004d6958 */ - -void __cdecl FUN_004d6958(undefined4 *param_1) - -{ - *param_1 = 0; - param_1[1] = &LAB_004d68bc; - FUN_004d6a08(param_1); - return; -} - - - -/* @004d6974 file=? name=FUN_004d6974 */ - -void __cdecl FUN_004d6974(undefined4 *param_1) - -{ - FUN_004d6a1d(param_1); - return; -} - - - -/* @004d6984 file=? name=FUN_004d6984 */ - -undefined4 __cdecl FUN_004d6984(undefined4 param_1) - -{ - undefined4 uVar1; - - uVar1 = DAT_00524c70; - DAT_00524c70 = param_1; - return uVar1; -} - - - -/* @004d69d0 file=? name=FUN_004d69d0 */ - -void FUN_004d69d0(void) - -{ - if (DAT_005252c4 != (undefined4 *)0x0) { - FUN_004d6958(DAT_005252c4); - } - return; -} - - - -/* @004d69ea file=? name=FUN_004d69ea */ - -void __fastcall FUN_004d69ea(undefined4 param_1,PEXCEPTION_RECORD param_2) - -{ - PVOID in_EAX; - - RtlUnwind(in_EAX,(PVOID)0x4d69fb,param_2,(PVOID)0x0); - return; -} - - - -/* @004d69ff file=? name=FUN_004d69ff */ - -void FUN_004d69ff(void) - -{ - undefined4 *unaff_EBX; - - (*(code *)*unaff_EBX)(); - return; -} - - - -/* @004d6a08 file=? name=FUN_004d6a08 */ - -void __cdecl FUN_004d6a08(undefined4 *param_1) - -{ - undefined4 *puVar1; - undefined2 in_FS; - - puVar1 = (undefined4 *)segment(in_FS,0); - *param_1 = *puVar1; - puVar1 = (undefined4 *)segment(in_FS,0); - *puVar1 = param_1; - return; -} - - - -/* @004d6a1d file=? name=FUN_004d6a1d */ - -void __cdecl FUN_004d6a1d(undefined4 *param_1) - -{ - undefined4 *puVar1; - int *piVar2; - undefined2 in_FS; - - piVar2 = (int *)segment(in_FS,0); - piVar2 = (int *)*piVar2; - if (param_1 == piVar2) { - puVar1 = (undefined4 *)segment(in_FS,0); - *puVar1 = *param_1; - } - else { - for (; piVar2 != (int *)0xffffffff; piVar2 = (int *)*piVar2) { - if ((undefined4 *)*piVar2 == param_1) { - *piVar2 = *param_1; - return; - } - } - } - return; -} - - - -/* @004d6a50 file=? name=thunk_FUN_004d92c4 */ - -undefined4 __cdecl thunk_FUN_004d92c4(uint param_1) - -{ - undefined4 uVar1; - BOOL BVar2; - - if (DAT_0051fbc0 <= param_1) { - uVar1 = FUN_004d9148(6); - return uVar1; - } - BVar2 = CloseHandle(*(HANDLE *)(&DAT_00524d14 + param_1 * 4)); - if (BVar2 == 1) { - (&DAT_0051fbc4)[param_1] = 0; - return 0; - } - uVar1 = FUN_004d91ac(); - return uVar1; -} - - - -/* @004d6a58 file=? name=thunk_FUN_004d87e8 */ - -int thunk_FUN_004d87e8(void) - -{ - int *piVar1; - int iVar2; - int iVar3; - - iVar3 = 0; - piVar1 = &DAT_0051f800; - iVar2 = DAT_0051fbc0; - while (iVar2 != 0) { - if ((*(byte *)((int)piVar1 + 0x12) & 3) != 0) { - FUN_004d6b9c(piVar1); - iVar3 = iVar3 + 1; - } - piVar1 = piVar1 + 6; - iVar2 = iVar2 + -1; - } - return iVar3; -} - - - -/* @004d6a68 file=? name=thunk_FUN_004d9334 */ - -DWORD __cdecl thunk_FUN_004d9334(uint param_1,LONG param_2,int param_3) - -{ - DWORD DVar1; - - if (param_1 < DAT_0051fbc0) { - if (param_3 == 0) { - DVar1 = 0; - } - else if (param_3 == 1) { - DVar1 = 1; - } - else { - if (param_3 != 2) { - DVar1 = FUN_004d9148(1); - return DVar1; - } - DVar1 = 2; - } - (&DAT_0051fbc4)[param_1] = (&DAT_0051fbc4)[param_1] & 0xfffffdff; - DVar1 = SetFilePointer(*(HANDLE *)(&DAT_00524d14 + param_1 * 4),param_2,(PLONG)0x0,DVar1); - if (DVar1 == 0xffffffff) { - FUN_004d91ac(); - } - } - else { - DVar1 = FUN_004d9148(6); - } - return DVar1; -} - - - -/* @004d6a70 file=? name=thunk_FUN_004d93ac */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -int __cdecl thunk_FUN_004d93ac(LPCSTR param_1,uint param_2,uint param_3) - -{ - bool bVar1; - uint uVar2; - int iVar3; - HANDLE hObject; - undefined3 extraout_var; - DWORD dwFlagsAndAttributes; - DWORD DVar4; - _SECURITY_ATTRIBUTES _Stack_18; - DWORD DStack_c; - DWORD DStack_8; - - if ((param_2 & 0xc000) == 0) { - param_2 = param_2 | *(uint *)PTR_DAT_0051fc68 & 0xc000; - } - if ((param_2 & 0x8000) == 0) { - param_2 = param_2 | 0x4000; - } - uVar2 = param_2 & 0x700; - if (uVar2 < 0x501) { - if (uVar2 == 0x500) { -LAB_004d940f: - DVar4 = 1; - goto LAB_004d9430; - } - if (uVar2 == 0x100) { - DVar4 = 4; - goto LAB_004d9430; - } - if (uVar2 != 0x200) { - if (uVar2 == 0x300) { - DVar4 = 2; - goto LAB_004d9430; - } - goto LAB_004d942b; - } - } - else if (uVar2 != 0x600) { - if (uVar2 != 0x700) { -LAB_004d942b: - DVar4 = 3; - goto LAB_004d9430; - } - goto LAB_004d940f; - } - DVar4 = 5; -LAB_004d9430: - if ((param_2 & 0x100) == 0) { - dwFlagsAndAttributes = GetFileAttributesA(param_1); - if (dwFlagsAndAttributes == 0xffffffff) { - dwFlagsAndAttributes = 0; - } - } - else if ((param_3 & _DAT_005201e4 & 0x80) == 0) { - dwFlagsAndAttributes = 1; - } - else { - dwFlagsAndAttributes = 0x80; - } - uVar2 = param_2 & 3; - if (uVar2 == 0) { - DStack_8 = 0x80000000; - } - else if (uVar2 == 1) { - DStack_8 = 0x40000000; - } - else { - if (uVar2 != 2) { - iVar3 = FUN_004d9148(1); - return iVar3; - } - DStack_8 = 0xc0000000; - } - uVar2 = param_2 & 0x70; - if (uVar2 == 0x10) { - DStack_c = 0; - } - else if (uVar2 == 0x20) { - DStack_c = 1; - } - else if (uVar2 == 0x30) { - DStack_c = 2; - } - else { - DStack_c = 3; - } - _Stack_18.nLength = 0xc; - _Stack_18.lpSecurityDescriptor = (LPVOID)0x0; - _Stack_18.bInheritHandle = (BOOL)((param_2 & 0x80) == 0); - hObject = CreateFileA(param_1,DStack_8,DStack_c,&_Stack_18,DVar4,dwFlagsAndAttributes,(HANDLE)0x0) - ; - if (hObject == (HANDLE)0xffffffff) { - DVar4 = GetLastError(); - uVar2 = DVar4 & 0xffff; - if ((uVar2 == 0x6e) && (uVar2 = 0x50, (param_2 & 0x100) == 0)) { - uVar2 = 2; - } - iVar3 = FUN_004d9148(uVar2); - } - else { - bVar1 = FUN_004d9304((uint)hObject); - if (CONCAT31(extraout_var,bVar1) != 0) { - param_2 = param_2 | 0x2000; - } - iVar3 = FUN_004d8eac(hObject,param_2 & 0xfffff8ff); - if (iVar3 == -1) { - FUN_004d9148(4); - CloseHandle(hObject); - } - } - return iVar3; -} - - - -/* @004d6a78 file=? name=thunk_FUN_004d892c */ - -char * __cdecl thunk_FUN_004d892c(uint param_1,char *param_2,char *param_3) - -{ - char *pcVar1; - uint uVar2; - DWORD DVar3; - char *pcVar4; - DWORD DVar5; - char *pcVar6; - - if (param_1 < DAT_0051fbc0) { - if (param_3 + 1 < (char *)0x2) { - pcVar1 = (char *)0x0; - } - else if ((*(byte *)((int)&DAT_0051fbc4 + param_1 * 4 + 1) & 0x40) == 0) { - pcVar1 = (char *)FUN_004d91c0(param_1,param_2,(DWORD)param_3); - } - else if ((*(byte *)((int)&DAT_0051fbc4 + param_1 * 4 + 1) & 2) == 0) { - pcVar1 = (char *)0x0; - if (param_3 != (char *)0x0) { - while( true ) { - uVar2 = (int)param_3 - (int)pcVar1; - DVar3 = FUN_004d91c0(param_1,param_2,uVar2); - if (DVar3 == 0xffffffff) { - return (char *)0xffffffff; - } - if (DVar3 == 0) { - return pcVar1; - } - pcVar4 = FUN_004d48f8(param_2,'\x1a',DVar3); - if (pcVar4 != (char *)0x0) { - (&DAT_0051fbc4)[param_1] = (&DAT_0051fbc4)[param_1] | 0x200; - DVar3 = (int)pcVar4 - (int)param_2; - if (DVar3 == 0) { - return pcVar1; - } - } - if ((param_2[DVar3 - 1] == '\r') && - (DVar5 = FUN_004d91c0(param_1,param_2 + (DVar3 - 1),1), DVar5 == 0xffffffff)) break; - pcVar6 = FUN_004d88c0(param_2,DVar3); - pcVar1 = pcVar1 + (int)pcVar6; - if ((DVar3 < uVar2) && ((*(byte *)((int)&DAT_0051fbc4 + param_1 * 4 + 1) & 0x20) != 0)) { - return pcVar1; - } - if (pcVar4 != (char *)0x0) { - return pcVar1; - } - if (pcVar6 != (char *)0x0) { - return pcVar1; - } - if (param_3 <= pcVar1) { - return pcVar1; - } - } - pcVar1 = (char *)0xffffffff; - } - } - else { - pcVar1 = (char *)0x0; - } - } - else { - pcVar1 = (char *)FUN_004d9148(-6); - } - return pcVar1; -} - - - -/* @004d6a80 file=? name=thunk_FUN_004d8b14 */ - -char * __cdecl thunk_FUN_004d8b14(uint param_1,char *param_2,char *param_3) - -{ - char *pcVar1; - char *pcVar2; - DWORD DVar3; - undefined4 auStack_8c [32]; - DWORD DStack_c; - char *pcStack_8; - - if (param_1 < DAT_0051fbc0) { - if (param_3 + 1 < (char *)0x2) { - param_3 = (char *)0x0; - } - else { - if ((*(byte *)((int)&DAT_0051fbc4 + param_1 * 4 + 1) & 8) != 0) { - FUN_004d9334(param_1,0,2); - } - pcVar1 = param_2; - pcVar2 = param_3; - if ((*(byte *)((int)&DAT_0051fbc4 + param_1 * 4 + 1) & 0x40) == 0) { - param_3 = (char *)FUN_004d9224(param_1,param_2,(DWORD)param_3); - } - else { - for (; pcVar2 != (char *)0x0; pcVar2 = pcVar2 + -(int)pcStack_8) { - pcStack_8 = pcVar2; - DVar3 = FUN_004d8a5c(pcVar1,(int *)&pcStack_8,auStack_8c,0x80); - DStack_c = FUN_004d9224(param_1,auStack_8c,DVar3); - if (DVar3 != DStack_c) { - if (DStack_c == 0xffffffff) { - return (char *)0xffffffff; - } - return pcVar1 + (DStack_c - (int)param_2); - } - pcVar1 = pcVar1 + (int)pcStack_8; - } - } - } - } - else { - param_3 = (char *)FUN_004d9148(-6); - } - return param_3; -} - - - -/* @004d6a88 file=? name=FUN_004d6a88 */ - -undefined4 __cdecl FUN_004d6a88(int *param_1,int *param_2,int param_3,uint param_4) - -{ - if ((*(byte *)((int)param_1 + 0x12) & 4) != 0) { - FUN_004de420((int *)param_1[1]); - } - *(ushort *)((int)param_1 + 0x12) = *(ushort *)((int)param_1 + 0x12) & 0xfff3; - param_1[3] = 0; - param_1[1] = (int)param_1 + 0x17; - *param_1 = (int)param_1 + 0x17; - if ((param_3 != 2) && (param_4 != 0)) { - PTR_FUN_00520c14 = &LAB_004d87b0; - if (param_2 == (int *)0x0) { - param_2 = FUN_004de55c(param_4); - if (param_2 == (int *)0x0) { - return 0xffffffff; - } - *(ushort *)((int)param_1 + 0x12) = *(ushort *)((int)param_1 + 0x12) | 4; - } - *param_1 = (int)param_2; - param_1[1] = (int)param_2; - param_1[3] = param_4; - if (param_3 == 1) { - *(ushort *)((int)param_1 + 0x12) = *(ushort *)((int)param_1 + 0x12) | 8; - } - } - return 0; -} - - - -/* @004d6b08 file=? name=FUN_004d6b08 */ - -undefined4 __cdecl FUN_004d6b08(int *param_1) - -{ - undefined4 uVar1; - int iVar2; - char *pcVar3; - - if ((param_1 == (int *)0x0) || ((short)param_1[5] != (short)param_1)) { - uVar1 = 0xffffffff; - } - else { - if (param_1[3] != 0) { - if ((param_1[2] < 0) && (iVar2 = FUN_004d6b9c(param_1), iVar2 != 0)) { - return 0xffffffff; - } - if ((*(byte *)((int)param_1 + 0x12) & 4) != 0) { - FUN_004de420((int *)param_1[1]); - } - } - uVar1 = FUN_004d92c4((int)*(char *)((int)param_1 + 0x16)); - *(undefined2 *)((int)param_1 + 0x12) = 0; - param_1[3] = 0; - param_1[2] = 0; - *(undefined1 *)((int)param_1 + 0x16) = 0xff; - if (*(ushort *)(param_1 + 4) != 0) { - pcVar3 = FUN_004d760c((char *)0x0,(char *)0x0,*(ushort *)(param_1 + 4)); - FUN_004d959c(pcVar3); - *(undefined2 *)(param_1 + 4) = 0; - } - } - return uVar1; -} - - - -/* @004d6b9c file=? name=FUN_004d6b9c */ - -undefined4 __cdecl FUN_004d6b9c(int *param_1) - -{ - undefined4 uVar1; - char *pcVar2; - char *pcVar3; - - if (param_1 == (int *)0x0) { - FUN_004d6d50(); - uVar1 = 0; - } - else if ((short)param_1[5] == (short)param_1) { - if (param_1[2] < 0) { - pcVar3 = (char *)(param_1[3] + param_1[2] + 1); - param_1[2] = param_1[2] - (int)pcVar3; - *param_1 = param_1[1]; - pcVar2 = FUN_004d8b14((int)*(char *)((int)param_1 + 0x16),(char *)param_1[1],pcVar3); - if ((pcVar3 == pcVar2) || ((*(byte *)((int)param_1 + 0x13) & 2) != 0)) { - uVar1 = 0; - } - else { - *(ushort *)((int)param_1 + 0x12) = *(ushort *)((int)param_1 + 0x12) | 0x10; - uVar1 = 0xffffffff; - } - } - else { - if ((((*(byte *)((int)param_1 + 0x12) & 8) != 0) || ((int)param_1 + 0x17 == *param_1)) && - (param_1[2] = 0, (int)param_1 + 0x17 == *param_1)) { - *param_1 = param_1[1]; - } - uVar1 = 0; - } - } - else { - uVar1 = 0xffffffff; - } - return uVar1; -} - - - -/* @004d6c20 file=? name=FUN_004d6c20 */ - -/* WARNING: Type propagation algorithm not settling */ - -undefined4 * __cdecl FUN_004d6c20(undefined4 *param_1,int param_2,int *param_3) - -{ - int *piVar1; - char *pcVar2; - byte *pbVar3; - char *pcVar4; - undefined4 *puVar5; - uint unaff_EDI; - char *local_8; - - puVar5 = param_1; - if (param_3[3] == 0) { - unaff_EDI = 0; - while ((unaff_EDI != 10 && (param_2 = param_2 + -1, 0 < param_2))) { - piVar1 = param_3 + 2; - *piVar1 = *piVar1 + -1; - if (*piVar1 < 0) { - unaff_EDI = FUN_004d7438(param_3); - } - else { - pbVar3 = (byte *)*param_3; - *param_3 = *param_3 + 1; - unaff_EDI = (uint)*pbVar3; - } - if (unaff_EDI == 0xffffffff) break; - *(char *)puVar5 = (char)unaff_EDI; - puVar5 = (undefined4 *)((int)puVar5 + 1); - } - } - else { - pcVar2 = (char *)(param_2 - 1); - do { - while( true ) { - if ((int)pcVar2 < 0) goto LAB_004d6d25; - local_8 = (char *)param_3[2]; - if ((int)local_8 < 1) break; - if (pcVar2 <= local_8) { - local_8 = pcVar2; - } - pcVar4 = FUN_004d48f8((char *)*param_3,'\n',(int)local_8); - if (pcVar4 != (char *)0x0) { - local_8 = pcVar4 + (1 - *param_3); - } - FUN_004d4918(puVar5,(undefined4 *)*param_3,(uint)local_8); - *param_3 = (int)(local_8 + *param_3); - param_3[2] = param_3[2] - (int)local_8; - puVar5 = (undefined4 *)((int)puVar5 + (int)local_8); - pcVar2 = (char *)((int)pcVar2 - (int)local_8); - if ((pcVar4 != (char *)0x0) || (pcVar2 == (char *)0x0)) { - unaff_EDI = 10; - goto LAB_004d6d25; - } - } - piVar1 = param_3 + 2; - *piVar1 = *piVar1 + -1; - if (*piVar1 < 0) { - unaff_EDI = FUN_004d7438(param_3); - } - else { - pbVar3 = (byte *)*param_3; - *param_3 = *param_3 + 1; - unaff_EDI = (uint)*pbVar3; - } - if (unaff_EDI == 0xffffffff) { - *(ushort *)((int)param_3 + 0x12) = *(ushort *)((int)param_3 + 0x12) | 0x20; - break; - } - *(char *)puVar5 = (char)unaff_EDI; - puVar5 = (undefined4 *)((int)puVar5 + 1); - pcVar2 = pcVar2 + -1; - } while (unaff_EDI != 10); - } -LAB_004d6d25: - if ((unaff_EDI == 0xffffffff) && (puVar5 == param_1)) { - param_1 = (undefined4 *)0x0; - } - else { - *(undefined1 *)puVar5 = 0; - if ((*(byte *)((int)param_3 + 0x12) & 0x10) != 0) { - param_1 = (undefined4 *)0x0; - } - } - return param_1; -} - - - -/* @004d6d50 file=? name=FUN_004d6d50 */ - -int FUN_004d6d50(void) - -{ - char *pcVar1; - undefined4 *puVar2; - int iVar3; - char *pcVar4; - int iVar5; - - iVar3 = 0; - puVar2 = &DAT_0051f800; - iVar5 = DAT_0051fbc0; - while (iVar5 != 0) { - if ((int)puVar2[2] < 0) { - pcVar4 = (char *)(puVar2[3] + puVar2[2] + 1); - puVar2[2] = puVar2[2] - (int)pcVar4; - *puVar2 = (char *)puVar2[1]; - pcVar1 = FUN_004d8b14((int)*(char *)((int)puVar2 + 0x16),(char *)puVar2[1],pcVar4); - if ((pcVar4 != pcVar1) && ((*(byte *)((int)puVar2 + 0x13) & 2) == 0)) { - *(ushort *)((int)puVar2 + 0x12) = *(ushort *)((int)puVar2 + 0x12) | 0x10; - } - iVar3 = iVar3 + 1; - } - puVar2 = puVar2 + 6; - iVar5 = iVar5 + -1; - } - return iVar3; -} - - - -/* @004d6db0 file=? name=FUN_004d6db0 */ - -void __cdecl FUN_004d6db0(undefined *param_1) - -{ - PTR_DAT_0051fc68 = param_1; - return; -} - - - -/* @004d6dc0 file=? name=FUN_004d6dc0 */ - -uint __cdecl FUN_004d6dc0(char *param_1,uint *param_2,undefined4 *param_3) - -{ - char cVar1; - uint uVar2; - uint uVar3; - undefined4 uVar4; - - uVar4 = 0; - cVar1 = *param_1; - if (cVar1 == 'r') { - uVar3 = 0; - uVar2 = 1; - } - else if (cVar1 == 'w') { - uVar3 = 0x301; - uVar4 = 0x80; - uVar2 = 2; - } - else { - if (cVar1 != 'a') { - return 0; - } - uVar3 = 0x901; - uVar4 = 0x80; - uVar2 = 2; - } - cVar1 = param_1[1]; - if ((cVar1 == '+') || ((param_1[2] == '+' && ((cVar1 == 't' || (cVar1 == 'b')))))) { - if (cVar1 == '+') { - cVar1 = param_1[2]; - } - uVar3 = uVar3 & 0xfffffffe | 2; - uVar4 = 0x180; - uVar2 = 3; - } - if (cVar1 == 't') { - uVar3 = uVar3 | 0x4000; - } - else if (cVar1 == 'b') { - uVar3 = uVar3 | 0x8000; - uVar2 = uVar2 | 0x40; - } - else { - uVar3 = uVar3 | *(uint *)PTR_DAT_0051fc68 & 0xc000; - if ((*(uint *)PTR_DAT_0051fc68 & 0x8000) != 0) { - uVar2 = uVar2 | 0x40; - } - } - PTR_FUN_00520c18 = &LAB_004d8788; - *param_2 = uVar3; - *param_3 = uVar4; - return uVar2; -} - - - -/* @004d6e80 file=? name=FUN_004d6e80 */ - -int * __cdecl FUN_004d6e80(int *param_1,LPCSTR param_2,char *param_3,uint param_4) - -{ - uint uVar1; - int iVar2; - uint local_c; - uint local_8; - - uVar1 = FUN_004d6dc0(param_3,&local_8,&local_c); - *(short *)((int)param_1 + 0x12) = (short)uVar1; - if ((short)uVar1 == 0) { -LAB_004d6ecb: - *(undefined1 *)((int)param_1 + 0x16) = 0xff; - *(undefined2 *)((int)param_1 + 0x12) = 0; - param_1 = (int *)0x0; - } - else { - if (*(char *)((int)param_1 + 0x16) < '\0') { - iVar2 = FUN_004d93ac(param_2,local_8 | param_4,local_c); - *(char *)((int)param_1 + 0x16) = (char)iVar2; - if ((char)iVar2 < '\0') goto LAB_004d6ecb; - } - if ((*(byte *)((int)&DAT_0051fbc4 + *(char *)((int)param_1 + 0x16) * 4 + 1) & 0x20) != 0) { - *(ushort *)((int)param_1 + 0x12) = *(ushort *)((int)param_1 + 0x12) | 0x200; - } - iVar2 = FUN_004d7e84(param_1,(int *)0x0,(uint)((*(byte *)((int)param_1 + 0x13) & 2) != 0),0x200) - ; - if (iVar2 == 0) { - *(undefined2 *)(param_1 + 4) = 0; - } - else { - FUN_004d6b08(param_1); - param_1 = (int *)0x0; - } - } - return param_1; -} - - - -/* @004d6f28 file=? name=FUN_004d6f28 */ - -undefined4 * FUN_004d6f28(void) - -{ - undefined4 *puVar1; - - puVar1 = &DAT_0051f800; - while( true ) { - if (*(char *)((int)puVar1 + 0x16) < '\0') { - return puVar1; - } - if (&DAT_0051f800 + DAT_0051fbc0 * 6 <= puVar1) break; - puVar1 = puVar1 + 6; - } - return (undefined4 *)0x0; -} - - - -/* @004d6f54 file=? name=FUN_004d6f54 */ - -int * __cdecl FUN_004d6f54(LPCSTR param_1,char *param_2) - -{ - int *piVar1; - int *piVar2; - - piVar1 = FUN_004d6f28(); - piVar2 = (int *)0x0; - if (piVar1 != (int *)0x0) { - piVar2 = FUN_004d6e80(piVar1,param_1,param_2,0); - } - return piVar2; -} - - - -/* @004d6f80 file=? name=FUN_004d6f80 */ - -void __cdecl FUN_004d6f80(undefined4 param_1,char *param_2) - -{ - FUN_004d812c(FUN_004d6fa0,param_1,param_2,(uint *)&stack0x0000000c); - return; -} - - - -/* @004d6fa0 file=? name=FUN_004d6fa0 */ - -char * __cdecl FUN_004d6fa0(byte *param_1,char *param_2,int *param_3) - -{ - uint uVar1; - int iVar2; - char *pcVar3; - - pcVar3 = param_2; - if ((*(byte *)((int)param_3 + 0x12) & 8) == 0) { - pcVar3 = (char *)param_3[3]; - if ((pcVar3 == (char *)0x0) || (pcVar3 < param_2)) { - if ((param_3[3] == 0) || ((param_3[2] == 0 || (iVar2 = FUN_004d6b9c(param_3), iVar2 == 0)))) { - pcVar3 = FUN_004d8b14((int)*(char *)((int)param_3 + 0x16),(char *)param_1,param_2); - if (pcVar3 < param_2) { - param_2 = (char *)0x0; - } - } - else { - param_2 = (char *)0x0; - } - } - else { - if (-1 < (int)(param_2 + param_3[2])) { - if (param_3[2] == 0) { - param_3[2] = -1 - (int)pcVar3; - } - else { - iVar2 = FUN_004d6b9c(param_3); - if (iVar2 != 0) { - return (char *)0x0; - } - } - } - FUN_004d4918((undefined4 *)*param_3,(undefined4 *)param_1,(uint)param_2); - param_3[2] = (int)(param_2 + param_3[2]); - *param_3 = (int)(param_2 + *param_3); - } - } - else { - for (; pcVar3 != (char *)0x0; pcVar3 = pcVar3 + -1) { - uVar1 = FUN_004d7518(*param_1,param_3); - if (uVar1 == 0xffffffff) { - return (char *)0x0; - } - param_1 = param_1 + 1; - } - } - return param_2; -} - - - -/* @004d70b0 file=? name=FUN_004d70b0 */ - -char * __cdecl FUN_004d70b0(char *param_1,char *param_2,int *param_3) - -{ - int *piVar1; - byte *pbVar2; - char *pcVar3; - uint uVar4; - char *unaff_ESI; - char *pcVar5; - char *local_c; - uint local_8; - - local_c = param_1; - if (param_3[3] != 0) { -LAB_004d70cf: - if (param_2 == (char *)0x0) { - return unaff_ESI; - } - do { - pcVar3 = (char *)param_3[2]; - if (pcVar3 != (char *)0x0) { - pcVar5 = param_2; - if (pcVar3 < param_2) { - pcVar5 = pcVar3; - } - FUN_004d4918((undefined4 *)local_c,(undefined4 *)*param_3,(uint)pcVar5); - *param_3 = (int)(pcVar5 + *param_3); - param_3[2] = param_3[2] - (int)pcVar5; - if (param_2 == pcVar5) { - return unaff_ESI; - } - local_c = local_c + (int)pcVar5; - param_2 = param_2 + -(int)pcVar5; - } - if ((char *)param_3[3] <= param_2) { - pcVar5 = param_2 + -((uint)param_2 % (uint)param_3[3]); - pcVar3 = FUN_004d892c((int)*(char *)((int)param_3 + 0x16),local_c,pcVar5); - if (param_2 == pcVar3) { - return unaff_ESI; - } - if (pcVar3 == (char *)0xffffffff) { - *(ushort *)((int)param_3 + 0x12) = *(ushort *)((int)param_3 + 0x12) | 0x10; - return unaff_ESI; - } - local_c = local_c + (int)pcVar3; - param_2 = param_2 + -(int)pcVar3; - if (pcVar5 != pcVar3) goto code_r0x004d715c; - } - uVar4 = FUN_004d744c(param_3); - if (uVar4 == 0xffffffff) { - *(ushort *)((int)param_3 + 0x12) = *(ushort *)((int)param_3 + 0x12) | 0x20; - return unaff_ESI; - } - local_8._0_1_ = (char)uVar4; - *local_c = (char)local_8; - local_c = local_c + 1; - param_2 = param_2 + -1; - if (param_2 == (char *)0x0) { - return unaff_ESI; - } - } while( true ); - } - for (; param_2 != (char *)0x0; param_2 = param_2 + -1) { - piVar1 = param_3 + 2; - *piVar1 = *piVar1 + -1; - if (*piVar1 < 0) { - local_8 = FUN_004d7438(param_3); - } - else { - pbVar2 = (byte *)*param_3; - *param_3 = *param_3 + 1; - local_8 = (uint)*pbVar2; - } - if (local_8 == 0xffffffff) break; - *local_c = (char)local_8; - local_c = local_c + 1; - } - if (local_8 == 0xffffffff) { - *(ushort *)((int)param_3 + 0x12) = *(ushort *)((int)param_3 + 0x12) | 0x20; - } - return unaff_ESI; -code_r0x004d715c: - if (((*(byte *)((int)param_3 + 0x12) & 0x40) != 0) || (pcVar3 == (char *)0x0)) { - *(ushort *)((int)param_3 + 0x12) = *(ushort *)((int)param_3 + 0x12) | 0x20; - return unaff_ESI; - } - goto LAB_004d70cf; -} - - - -/* @004d71e0 file=? name=FUN_004d71e0 */ - -uint __cdecl FUN_004d71e0(char *param_1,int param_2,int param_3,int *param_4) - -{ - uint uVar1; - int extraout_EAX; - char *pcVar2; - - if (param_2 == 0) { - uVar1 = 0; - } - else { - pcVar2 = FUN_004d70b0(param_1,(char *)(param_2 * param_3),param_4); - uVar1 = (uint)(param_2 * param_3 - extraout_EAX) / (uint)pcVar2; - } - return uVar1; -} - - - -/* @004d7214 file=? name=FUN_004d7214 */ - -int __cdecl FUN_004d7214(undefined4 *param_1) - -{ - char cVar1; - int iVar2; - int iVar3; - int iVar4; - int iVar5; - char *pcVar6; - - iVar2 = param_1[2]; - if (iVar2 < 0) { - iVar2 = param_1[3] + iVar2 + 1; - } - if ((*(byte *)((int)param_1 + 0x12) & 0x40) == 0) { - pcVar6 = (char *)*param_1; - iVar3 = iVar2; - iVar5 = iVar2; - if ((int)param_1[2] < 0) { - while (iVar3 = iVar2 + -1, iVar2 != 0) { - pcVar6 = pcVar6 + -1; - iVar2 = iVar3; - if (*pcVar6 == '\n') { - iVar5 = iVar5 + 1; - } - } - } - else { - while (iVar4 = iVar3 + -1, iVar5 = iVar2, iVar3 != 0) { - cVar1 = *pcVar6; - pcVar6 = pcVar6 + 1; - iVar3 = iVar4; - if (cVar1 == '\n') { - iVar2 = iVar2 + 1; - } - } - } - return iVar5; - } - return iVar2; -} - - - -/* @004d7270 file=? name=FUN_004d7270 */ - -undefined4 __cdecl FUN_004d7270(int *param_1,LONG param_2,int param_3) - -{ - int iVar1; - undefined4 uVar2; - DWORD DVar3; - - iVar1 = FUN_004d6b9c(param_1); - if (iVar1 == 0) { - if ((param_3 == 1) && (0 < param_1[2])) { - iVar1 = FUN_004d7214(param_1); - param_2 = param_2 - iVar1; - } - *(ushort *)((int)param_1 + 0x12) = *(ushort *)((int)param_1 + 0x12) & 0xfe5f; - param_1[2] = 0; - *param_1 = param_1[1]; - DVar3 = FUN_004d9334((int)*(char *)((int)param_1 + 0x16),param_2,param_3); - if (DVar3 == 0xffffffff) { - uVar2 = 0xffffffff; - } - else { - uVar2 = 0; - } - } - else { - uVar2 = 0xffffffff; - } - return uVar2; -} - - - -/* @004d72d4 file=? name=FUN_004d72d4 */ - -DWORD __cdecl FUN_004d72d4(undefined4 *param_1) - -{ - DWORD DVar1; - DWORD DVar2; - int iVar3; - - DVar1 = FUN_004d9334((int)*(char *)((int)param_1 + 0x16),0,1); - if (DVar1 != 0xffffffff) { - if ((int)param_1[2] < 0) { - DVar2 = DVar1; - if ((*(byte *)((int)&DAT_0051fbc4 + *(char *)((int)param_1 + 0x16) * 4 + 1) & 8) != 0) { - DVar2 = FUN_004d9334((int)*(char *)((int)param_1 + 0x16),0,2); - if (DVar2 == 0xffffffff) { - return 0xffffffff; - } - DVar1 = FUN_004d9334((int)*(char *)((int)param_1 + 0x16),DVar1,0); - if (DVar1 == 0xffffffff) { - return 0xffffffff; - } - } - iVar3 = FUN_004d7214(param_1); - DVar1 = DVar2 + iVar3; - } - else { - iVar3 = FUN_004d7214(param_1); - DVar1 = DVar1 - iVar3; - } - } - return DVar1; -} - - - -/* @004d7358 file=? name=FUN_004d7358 */ - -uint __cdecl FUN_004d7358(byte *param_1,uint param_2,uint param_3,int *param_4) - -{ - char *pcVar1; - - if (param_2 != 0) { - pcVar1 = FUN_004d6fa0(param_1,(char *)(param_2 * param_3),param_4); - param_3 = (uint)pcVar1 / param_2; - } - return param_3; -} - - - -/* @004d7388 file=? name=FUN_004d7388 */ - -void __cdecl FUN_004d7388(int *param_1,uint param_2) - -{ - FUN_004d8d20(0,param_1,param_2); - return; -} - - - -/* @004d73a0 file=? name=FUN_004d73a0 */ - -void FUN_004d73a0(void) - -{ - int *piVar1; - int iVar2; - - piVar1 = &DAT_0051f800; - iVar2 = 0x28; - while (iVar2 != 0) { - if ((*(ushort *)((int)piVar1 + 0x12) & 0x300) == 0x300) { - FUN_004d6b9c(piVar1); - } - piVar1 = piVar1 + 6; - iVar2 = iVar2 + -1; - } - return; -} - - - -/* @004d73d4 file=? name=FUN_004d73d4 */ - -undefined4 __cdecl FUN_004d73d4(undefined4 *param_1) - -{ - char *pcVar1; - - if ((*(byte *)((int)param_1 + 0x13) & 2) != 0) { - FUN_004d73a0(); - } - *param_1 = (char *)param_1[1]; - pcVar1 = FUN_004d892c((int)*(char *)((int)param_1 + 0x16),(char *)param_1[1],(char *)param_1[3]); - param_1[2] = pcVar1; - if (0 < (int)pcVar1) { - *(ushort *)((int)param_1 + 0x12) = *(ushort *)((int)param_1 + 0x12) & 0xffdf; - return 0; - } - if (param_1[2] == 0) { - *(ushort *)((int)param_1 + 0x12) = *(ushort *)((int)param_1 + 0x12) & 0xfe7f | 0x20; - } - else { - param_1[2] = 0; - *(ushort *)((int)param_1 + 0x12) = *(ushort *)((int)param_1 + 0x12) | 0x10; - } - return 0xffffffff; -} - - - -/* @004d7438 file=? name=FUN_004d7438 */ - -void __cdecl FUN_004d7438(int *param_1) - -{ - param_1[2] = param_1[2] + 1; - FUN_004d744c(param_1); - return; -} - - - -/* @004d744c file=? name=FUN_004d744c */ - -uint __cdecl FUN_004d744c(int *param_1) - -{ - byte *pbVar1; - int iVar2; - char *pcVar3; - uint uVar4; - - if (param_1 == (int *)0x0) { - return 0xffffffff; - } - if (0 < param_1[2]) { - param_1[2] = param_1[2] + -1; - pbVar1 = (byte *)*param_1; - *param_1 = *param_1 + 1; - return (uint)*pbVar1; - } - if (((param_1[2] < 0) || ((*(ushort *)((int)param_1 + 0x12) & 0x110) != 0)) || - ((*(byte *)((int)param_1 + 0x12) & 1) == 0)) { - *(ushort *)((int)param_1 + 0x12) = *(ushort *)((int)param_1 + 0x12) | 0x10; - return 0xffffffff; - } - *(ushort *)((int)param_1 + 0x12) = *(ushort *)((int)param_1 + 0x12) | 0x80; - if (param_1[3] != 0) { - iVar2 = FUN_004d73d4(param_1); - if (iVar2 != 0) { - return 0xffffffff; - } - param_1[2] = param_1[2] + -1; - pbVar1 = (byte *)*param_1; - *param_1 = *param_1 + 1; - return (uint)*pbVar1; - } - if ((*(byte *)((int)param_1 + 0x13) & 2) != 0) { - FUN_004d73a0(); - } - pcVar3 = FUN_004d892c((int)*(char *)((int)param_1 + 0x16),(char *)&DAT_00524db4,(char *)0x1); - if (pcVar3 == (char *)0x0) { - uVar4 = FUN_004d8834((int)*(char *)((int)param_1 + 0x16)); - if (uVar4 == 1) { - *(ushort *)((int)param_1 + 0x12) = *(ushort *)((int)param_1 + 0x12) & 0xfe7f | 0x20; - } - else { - *(ushort *)((int)param_1 + 0x12) = *(ushort *)((int)param_1 + 0x12) | 0x10; - } - return 0xffffffff; - } - *(ushort *)((int)param_1 + 0x12) = *(ushort *)((int)param_1 + 0x12) & 0xffdf; - return (uint)DAT_00524db4; -} - - - -/* @004d7518 file=? name=FUN_004d7518 */ - -uint __cdecl FUN_004d7518(byte param_1,int *param_2) - -{ - byte *pbVar1; - int iVar2; - uint uVar3; - char *pcVar4; - byte local_5; - - local_5 = param_1; - if (param_2[2] < -1) { - param_2[2] = param_2[2] + 1; - pbVar1 = (byte *)*param_2; - *param_2 = *param_2 + 1; - *pbVar1 = param_1; - if ((((*(byte *)((int)param_2 + 0x12) & 8) != 0) && ((param_1 == 10 || (param_1 == 0xd)))) && - (iVar2 = FUN_004d6b9c(param_2), iVar2 != 0)) { - return 0xffffffff; - } - uVar3 = (uint)local_5; - } - else if (((*(ushort *)((int)param_2 + 0x12) & 0x90) == 0) && - ((*(ushort *)((int)param_2 + 0x12) & 2) != 0)) { - *(ushort *)((int)param_2 + 0x12) = *(ushort *)((int)param_2 + 0x12) | 0x100; - if (param_2[3] == 0) { - pcVar4 = FUN_004d8b14((int)*(char *)((int)param_2 + 0x16),(char *)&local_5,(char *)0x1); - if ((pcVar4 == (char *)0x1) || ((*(byte *)((int)param_2 + 0x13) & 2) != 0)) { - uVar3 = (uint)local_5; - } - else { - *(ushort *)((int)param_2 + 0x12) = *(ushort *)((int)param_2 + 0x12) | 0x10; - uVar3 = 0xffffffff; - } - } - else { - if ((param_2[2] != 0) && (iVar2 = FUN_004d6b9c(param_2), iVar2 != 0)) { - return 0xffffffff; - } - param_2[2] = -param_2[3]; - pbVar1 = (byte *)*param_2; - *param_2 = *param_2 + 1; - *pbVar1 = local_5; - if (((*(byte *)((int)param_2 + 0x12) & 8) != 0) && - (((local_5 == 10 || (local_5 == 0xd)) && (iVar2 = FUN_004d6b9c(param_2), iVar2 != 0)))) { - return 0xffffffff; - } - uVar3 = (uint)local_5; - } - } - else { - *(ushort *)((int)param_2 + 0x12) = *(ushort *)((int)param_2 + 0x12) | 0x10; - uVar3 = 0xffffffff; - } - return uVar3; -} - - - -/* @004d760c file=? name=FUN_004d760c */ - -char * __cdecl FUN_004d760c(char *param_1,char *param_2,ushort param_3) - -{ - char *pcVar1; - - if (param_1 == (char *)0x0) { - param_1 = &DAT_00524dbe; - } - if (param_2 == (char *)0x0) { - param_2 = &DAT_0051fc6c; - } - pcVar1 = (char *)FUN_004d4d84((undefined4 *)param_1,param_2); - FUN_004dd3d0((uint)param_3,pcVar1); - FUN_004d49b8(param_1,&DAT_0051fc70); - return param_1; -} - - - -/* @004d765c file=? name=FUN_004d765c */ - -char * __cdecl FUN_004d765c(char *param_1,ushort *param_2) - -{ - int iVar1; - - do { - *param_2 = *param_2 + 1; - if (*param_2 == 0) { - *param_2 = 1; - } - param_1 = FUN_004d760c(param_1,(char *)0x0,*param_2); - iVar1 = FUN_004d9288(param_1,0); - } while (iVar1 == 0); - return param_1; -} - - - -/* @004d771c file=? name=FUN_004d771c */ - -void __cdecl FUN_004d771c(char *param_1) - -{ - FUN_004d812c(FUN_004d6fa0,&DAT_0051f818,param_1,(uint *)&stack0x00000008); - return; -} - - - -/* @004d773c file=? name=FUN_004d773c */ - -int __cdecl -FUN_004d773c(undefined *param_1,undefined *param_2,undefined4 param_3,byte *param_4, - undefined4 *param_5) - -{ - byte *pbVar1; - byte bVar2; - int iVar3; - byte *pbVar4; - uint uVar5; - byte local_54 [32]; - int local_34; - byte *local_24; - byte local_1d; - uint local_1c; - uint local_18; - int local_14; - uint local_10; - int local_c; - byte local_5; - - local_c = 0; - local_10 = 0; -LAB_004d7752: - do { - local_1d = *param_4; - if (local_1d == 0) { - return local_c; - } - pbVar1 = param_4 + 1; - if (local_1d == 0x25) { - local_1d = param_4[1]; - param_4 = param_4 + 2; - pbVar1 = param_4; - if (local_1d != 0x25) { - local_5 = 0x20; - uVar5 = 0xffffffff; -LAB_004d7803: - if ((local_1d & 0x80) == 0) { - iVar3 = (int)(char)(&DAT_005200f4)[(char)local_1d]; - } - else { - iVar3 = 2; - } - switch(iVar3) { - default: - goto switchD_004d7824_caseD_0; - case 2: - goto switchD_004d7824_caseD_2; - case 4: - local_5 = local_5 | 1; - local_1d = *param_4; - param_4 = param_4 + 1; - goto LAB_004d7803; - case 5: - if ((int)uVar5 < 0) { - iVar3 = (int)(char)local_1d; - } - else { - iVar3 = uVar5 * 10 + (int)(char)local_1d; - } - uVar5 = iVar3 - 0x30; - local_1d = *param_4; - param_4 = param_4 + 1; - goto LAB_004d7803; - case 6: - if ((local_5 & 1) == 0) { - local_24 = (byte *)*param_5; - param_5 = param_5 + 1; - } - if ((int)uVar5 < 0) { - uVar5 = 1; - } - if (uVar5 == 0) goto LAB_004d7b71; - goto LAB_004d7b48; - case 7: - case 8: - local_18 = 10; - goto switchD_004d7824_caseD_0; - case 9: - local_18 = 0; - goto switchD_004d7824_caseD_0; - case 10: - thunk_FUN_004dd258(); - if (local_14 < 0) goto LAB_004d7cb4; - if (local_14 == 0) goto switchD_004d7824_caseD_2; - if ((local_5 & 1) == 0) { - param_5 = param_5 + 1; - thunk_FUN_004dd258(); - local_c = local_c + 1; - } - goto LAB_004d7752; - case 0xb: - local_5 = local_5 | 8; - local_1d = *param_4; - param_4 = param_4 + 1; - goto LAB_004d7803; - case 0xc: - local_5 = local_5 | 2; - local_1d = *param_4; - param_4 = param_4 + 1; - goto LAB_004d7803; - case 0xd: - local_5 = local_5 | 4; - local_1d = *param_4; - param_4 = param_4 + 1; - goto LAB_004d7803; - case 0xe: - local_18 = 8; - goto switchD_004d7824_caseD_0; - case 0xf: - goto switchD_004d7824_caseD_f; - case 0x10: - FUN_004d4988((undefined4 *)local_54,0,0x20); - local_1c = 0; - bVar2 = *param_4; - pbVar1 = param_4 + 1; - if (bVar2 == 0x5e) { - local_1c = 1; - bVar2 = param_4[1]; - pbVar1 = param_4 + 2; - } - goto LAB_004d7baa; - case 0x11: - uVar5 = local_10; - goto LAB_004d7969; - case 0x12: - goto switchD_004d7824_caseD_12; - case 0x13: - uVar5 = FUN_004d7cd8(param_1,param_2,param_3,0x10,8,(int *)&local_10,&local_14); - if (local_14 < 1) goto switchD_004d7824_caseD_2; - if ((local_5 & 1) == 0) { - *(uint *)*param_5 = uVar5; - local_c = local_c + 1; - param_5 = param_5 + 1; - } - goto LAB_004d7752; - case 0x14: - local_5 = local_5 & 0xdf; - local_1d = *param_4; - param_4 = param_4 + 1; - goto LAB_004d7803; - case 0x15: - local_5 = local_5 | 0x20; - local_1d = *param_4; - param_4 = param_4 + 1; - goto LAB_004d7803; - } - } - } - param_4 = pbVar1; - local_10 = local_10 + 1; - bVar2 = (*(code *)param_1)(param_3); - if (bVar2 == 0xff) goto LAB_004d7cb4; - if (((local_1d & 0x80) == 0) && ((&DAT_005200f4)[(char)local_1d] == '\x01')) { - while (((bVar2 & 0x80) == 0 && ((&DAT_005200f4)[(char)bVar2] == '\x01'))) { - local_10 = local_10 + 1; - bVar2 = (*(code *)param_1)(param_3); - if (bVar2 == 0xff) goto LAB_004d7cb4; - } - (*(code *)param_2)((int)(char)bVar2,param_3); - local_10 = local_10 - 1; - } - else if (bVar2 != local_1d) { - (*(code *)param_2)((int)(char)bVar2,param_3); - goto switchD_004d7824_caseD_2; - } - } while( true ); -switchD_004d7824_caseD_12: - local_18 = 0x10; -switchD_004d7824_caseD_0: - uVar5 = FUN_004d7cd8(param_1,param_2,param_3,local_18,uVar5 & 0x7fff,(int *)&local_10,&local_14); - if (local_14 < 0) goto LAB_004d7cb4; - if (local_14 == 0) goto switchD_004d7824_caseD_2; -LAB_004d7969: - if ((('@' < (char)local_1d) && ((char)local_1d < '[')) && (local_1d != 0x58)) { - local_5 = local_5 | 4; - } - if ((local_5 & 1) == 0) { - if ((local_5 & 4) == 0) { - if ((local_5 & 2) == 0) { - *(uint *)*param_5 = uVar5; - } - else { - *(short *)*param_5 = (short)uVar5; - } - } - else { - *(uint *)*param_5 = uVar5; - } - param_5 = param_5 + 1; - if (local_1d != 0x6e) { - local_c = local_c + 1; - } - } - goto LAB_004d7752; -LAB_004d7baa: - pbVar4 = pbVar1; - local_1d = bVar2; - if (bVar2 == 0) goto switchD_004d7824_caseD_2; - local_54[(int)(char)bVar2 >> 3 & 0x1f] = - local_54[(int)(char)bVar2 >> 3 & 0x1f] | '\x01' << (bVar2 & 7); - bVar2 = *pbVar4; - param_4 = pbVar4 + 1; - if (bVar2 != 0x5d) { - pbVar1 = param_4; - if (((bVar2 == 0x2d) && ((char)local_1d < (char)*param_4)) && (*param_4 != 0x5d)) { - bVar2 = *param_4; - while( true ) { - local_1d = local_1d + 1; - pbVar1 = pbVar4 + 2; - if ((char)bVar2 <= (char)local_1d) break; - local_54[(int)(char)local_1d >> 3 & 0x1f] = - local_54[(int)(char)local_1d >> 3 & 0x1f] | '\x01' << (local_1d & 7); - } - } - goto LAB_004d7baa; - } - if (uVar5 == 0xffffffff) { - uVar5 = 0x7fff; - } - if ((local_5 & 1) == 0) { - local_24 = (byte *)*param_5; - param_5 = param_5 + 1; - } - local_34 = 0; - bVar2 = 0x5d; - while (uVar5 = uVar5 - 1, -1 < (int)uVar5) { - local_10 = local_10 + 1; - bVar2 = (*(code *)param_1)(param_3); - if ((bVar2 == 0xff) || - (((1 << (bVar2 & 7) & (int)(char)local_54[(int)(char)bVar2 >> 3 & 0x1f]) != 0) == local_1c)) - break; - local_34 = local_34 + 1; - if ((local_5 & 1) == 0) { - *local_24 = bVar2; - local_24 = local_24 + 1; - } - } - if (-1 < (int)uVar5) { - (*(code *)param_2)((int)(char)bVar2,param_3); - local_10 = local_10 - 1; - } - if ((local_34 != 0) && ((local_5 & 1) == 0)) { - *local_24 = 0; - local_24 = local_24 + 1; - local_c = local_c + 1; - } - if (bVar2 == 0xff) { -LAB_004d7cb4: - (*(code *)param_2)(0xffffffff,param_3); - if (local_c == 0) { - local_c = -1; - } - else { -switchD_004d7824_caseD_2: - } - return local_c; - } - goto LAB_004d7752; - while (((bVar2 & 0x80) == 0 && ((&DAT_005200f4)[(char)bVar2] == '\x01'))) { -switchD_004d7824_caseD_f: - local_10 = local_10 + 1; - bVar2 = (*(code *)param_1)(param_3); - if (bVar2 == 0xff) goto LAB_004d7cb4; - } - if ((local_5 & 1) == 0) { - local_24 = (byte *)*param_5; - local_c = local_c + 1; - param_5 = param_5 + 1; - } - if (uVar5 == 0xffffffff) { - uVar5 = 0x7fff; - } - do { - if ((local_5 & 1) == 0) { - *local_24 = bVar2; - local_24 = local_24 + 1; - } - local_10 = local_10 + 1; - bVar2 = (*(code *)param_1)(param_3); - } while ((((bVar2 != 0xff) && (bVar2 != 0)) && - (((bVar2 & 0x80) != 0 || ((&DAT_005200f4)[(char)bVar2] != '\x01')))) && - (uVar5 = uVar5 - 1, 0 < (int)uVar5)); - (*(code *)param_2)((int)(char)bVar2,param_3); - local_10 = local_10 - 1; - if ((local_5 & 1) == 0) { - *local_24 = 0; - } - goto LAB_004d7752; - while( true ) { - if ((local_5 & 1) == 0) { - *local_24 = bVar2; - local_24 = local_24 + 1; - } - uVar5 = uVar5 - 1; - if ((int)uVar5 < 1) break; -LAB_004d7b48: - local_10 = local_10 + 1; - bVar2 = (*(code *)param_1)(param_3); - if (bVar2 == 0xff) goto LAB_004d7cb4; - } -LAB_004d7b71: - if ((local_5 & 1) == 0) { - local_c = local_c + 1; - } - goto LAB_004d7752; -} - - - -/* @004d7cd8 file=? name=FUN_004d7cd8 */ - -uint __cdecl -FUN_004d7cd8(undefined *param_1,undefined *param_2,undefined4 param_3,uint param_4,int param_5, - int *param_6,int *param_7) - -{ - int iVar1; - int iVar2; - int iVar3; - uint uVar4; - int iVar5; - bool bVar6; - bool bVar7; - int local_1c; - int local_18; - uint local_14; - int local_10; - int local_c; - - bVar6 = false; - local_c = 0; - local_10 = 1; - local_14 = 0; - local_18 = 0; - iVar5 = 0; - iVar1 = local_c; -LAB_004d7d00: - do { - local_c = iVar1; - iVar1 = local_c + 1; - iVar3 = (*(code *)param_1)(param_3); - if (iVar5 == 0) { - if (((-1 < iVar3) && (iVar3 < 0x80)) && (((&DAT_005207dd)[iVar3] & 1) != 0)) - goto LAB_004d7d00; - iVar5 = 1; - } - iVar2 = param_5 + -1; - if (iVar2 < 0) goto LAB_004d7e3c; - if ((iVar5 != 1) || ((iVar5 = 2, iVar3 != 0x2b && (iVar3 != 0x2d)))) { - if (iVar5 == 2) { - iVar5 = 3; - if ((iVar3 == 0x30) && ((local_18 = 1, param_4 == 0 || (param_4 == 0x10)))) { - iVar1 = local_c + 2; - iVar3 = (*(code *)param_1)(param_3); - param_5 = param_5 + -2; - if (param_5 < 0) goto LAB_004d7e3c; - if ((iVar3 == 0x78) || (iVar3 == 0x58)) { - param_4 = 0x10; - goto LAB_004d7d00; - } - iVar2 = param_5; - if (param_4 == 0) { - param_4 = 8; - } - } - local_c = iVar1; - param_5 = iVar2; - iVar2 = param_5; - iVar1 = local_c; - if (param_4 == 0) { - param_4 = 10; - } - else if (((int)param_4 < 1) || (0x24 < (int)param_4)) goto LAB_004d7e3c; - } - local_c = iVar1; - param_5 = iVar2; - iVar1 = local_c; - if (iVar5 == 3) { - if ((iVar3 < 0x30) || (0x39 < iVar3)) { - if ((iVar3 < 0x61) || (0x7a < iVar3)) { - if ((iVar3 < 0x41) || (0x5a < iVar3)) goto LAB_004d7e3c; - local_1c = iVar3 + -0x37; - } - else { - local_1c = iVar3 + -0x57; - } - } - else { - local_1c = iVar3 + -0x30; - } - if ((int)param_4 <= local_1c) goto LAB_004d7e3c; - local_18 = local_18 + 1; - uVar4 = local_14 * param_4 + local_1c; - bVar7 = local_14 != (uVar4 - local_1c) / param_4; - local_14 = uVar4; - if (bVar7) { - local_10 = 2; - local_14 = 0x80000000; - if (!bVar6) { - local_14 = 0x7fffffff; - } -LAB_004d7e3c: - local_c = iVar1; - if (local_10 != 2) { - (*(code *)param_2)(iVar3,param_3); - local_c = local_c + -1; - if (bVar6) { - local_14 = -local_14; - } - } - if ((local_18 == 0) && (local_10 = -1, iVar3 != -1)) { - local_10 = 0; - } - *param_7 = local_10; - *param_6 = *param_6 + local_c; - return local_14; - } - } - goto LAB_004d7d00; - } - bVar6 = iVar3 == 0x2d; - param_5 = iVar2; - } while( true ); -} - - - -/* @004d7e84 file=? name=FUN_004d7e84 */ - -undefined4 __cdecl FUN_004d7e84(int *param_1,int *param_2,int param_3,uint param_4) - -{ - undefined4 uVar1; - - if ((((short)param_1[5] == (short)param_1) && (param_3 < 3)) && (param_4 < 0x80000000)) { - if (param_1[2] != 0) { - FUN_004d7270(param_1,0,1); - } - if ((*(byte *)((int)param_1 + 0x12) & 4) != 0) { - FUN_004de420((int *)param_1[1]); - } - uVar1 = FUN_004d6a88(param_1,param_2,param_3,param_4); - } - else { - uVar1 = 0xffffffff; - } - return uVar1; -} - - - -/* @004d7f10 file=? name=FUN_004d7f10 */ - -void __cdecl FUN_004d7f10(undefined1 *param_1,char *param_2) - -{ - *param_1 = 0; - FUN_004d812c(&LAB_004d7ee8,¶m_1,param_2,(uint *)&stack0x0000000c); - return; -} - - - -/* @004d7f34 file=? name=FUN_004d7f34 */ - -void __cdecl FUN_004d7f34(undefined1 *param_1,char *param_2,uint *param_3) - -{ - *param_1 = 0; - FUN_004d812c(&LAB_004d7ee8,¶m_1,param_2,param_3); - return; -} - - - -/* @004d7f58 file=? name=FUN_004d7f58 */ - -uint __cdecl FUN_004d7f58(int *param_1) - -{ - byte *pbVar1; - uint uVar2; - - pbVar1 = (byte *)*param_1; - *param_1 = *param_1 + 1; - if (*pbVar1 == 0) { - uVar2 = 0xffffffff; - } - else { - uVar2 = (uint)*pbVar1; - } - return uVar2; -} - - - -/* @004d7f78 file=? name=FUN_004d7f78 */ - -void __cdecl FUN_004d7f78(undefined4 param_1,int *param_2) - -{ - *param_2 = *param_2 + -1; - return; -} - - - -/* @004d7f84 file=? name=FUN_004d7f84 */ - -void __cdecl FUN_004d7f84(undefined4 param_1,byte *param_2) - -{ - FUN_004d773c(FUN_004d7f58,FUN_004d7f78,¶m_1,param_2,(undefined4 *)&stack0x0000000c); - return; -} - - - -/* @004d7fa8 file=? name=FUN_004d7fa8 */ - -void __cdecl FUN_004d7fa8(undefined4 param_1,byte *param_2,undefined4 *param_3) - -{ - FUN_004d773c(FUN_004d7f58,FUN_004d7f78,¶m_1,param_2,param_3); - return; -} - - - -/* @004d8080 file=? name=FUN_004d8080 */ - -void __cdecl FUN_004d8080(undefined4 param_1,char *param_2,uint *param_3) - -{ - FUN_004d812c(FUN_004d6fa0,param_1,param_2,param_3); - return; -} - - - -/* @004d80a0 file=? name=FUN_004d80a0 */ - -void __cdecl FUN_004d80a0(int param_1) - -{ - int iVar1; - - if (*(int *)(param_1 + 0x50) != 0) { - iVar1 = (**(code **)(param_1 + 0x54)) - (param_1,*(int *)(param_1 + 0x50),*(undefined4 *)(param_1 + 0x58)); - if (iVar1 == 0) { - *(undefined4 *)(param_1 + 0x60) = 1; - } - *(undefined4 *)(param_1 + 0x50) = 0; - } - return; -} - - - -/* @004d80d0 file=? name=FUN_004d80d0 */ - -void __cdecl FUN_004d80d0(undefined1 param_1,int param_2) - -{ - if (0x4f < *(int *)(param_2 + 0x50)) { - FUN_004d80a0(param_2); - } - *(undefined1 *)(param_2 + *(int *)(param_2 + 0x50)) = param_1; - *(int *)(param_2 + 0x50) = *(int *)(param_2 + 0x50) + 1; - *(int *)(param_2 + 0x5c) = *(int *)(param_2 + 0x5c) + 1; - return; -} - - - -/* @004d80f8 file=? name=FUN_004d80f8 */ - -void __cdecl FUN_004d80f8(uint param_1,int param_2) - -{ - char *pcVar1; - int iVar2; - char cVar3; - - iVar2 = 7; - pcVar1 = (char *)(param_2 + 7); - do { - cVar3 = (char)(param_1 & 0xf); - if ((param_1 & 0xf) < 10) { - *pcVar1 = cVar3 + '0'; - } - else { - *pcVar1 = cVar3 + '7'; - } - param_1 = param_1 >> 4; - iVar2 = iVar2 + -1; - pcVar1 = pcVar1 + -1; - } while (-1 < iVar2); - return; -} - - - -/* @004d812c file=? name=FUN_004d812c */ - -undefined4 __cdecl FUN_004d812c(undefined4 param_1,undefined4 param_2,char *param_3,uint *param_4) - -{ - uint *puVar1; - int iVar2; - uint uVar3; - bool bVar4; - bool bVar5; - bool bVar6; - bool bVar7; - bool bVar8; - uint uVar9; - char cVar10; - char *pcVar11; - uint uVar12; - bool bVar13; - undefined1 local_c0 [80]; - undefined4 local_70; - undefined4 local_6c; - undefined4 local_68; - undefined4 local_64; - int local_60; - char local_5c [8]; - undefined1 local_54; - uint local_2c; - uint local_28; - uint local_24; - char *local_20; - char local_19; - char *local_18; - int local_14; - char local_d; - uint local_c; - uint local_8; - - local_60 = 0; - local_64 = 0; - local_70 = 0; - local_6c = param_1; - local_68 = param_2; -LAB_004d8152: - pcVar11 = param_3; - cVar10 = *pcVar11; - param_3 = pcVar11 + 1; - if (cVar10 != '\0') { - if (cVar10 == '%') { - if (*param_3 != '%') { - uVar9 = 0; - local_d = '\0'; - local_14 = 0; - uVar12 = 0; - bVar7 = false; - bVar13 = false; - bVar6 = false; - bVar5 = false; - local_c = 0xffffffff; - local_8 = 0xffffffff; -switchD_004d81b8_default: - bVar4 = false; - cVar10 = *param_3; - param_3 = param_3 + 1; - local_18 = pcVar11; - if (cVar10 < ' ') goto switchD_004d81b8_caseD_13; - switch((&DAT_0052015b)[cVar10]) { - case 0: - local_18 = pcVar11; - if (uVar9 != 0) goto switchD_004d81b8_caseD_13; - if (local_d != '+') { - local_d = cVar10; - } - goto switchD_004d81b8_default; - case 1: - local_18 = pcVar11; - if (uVar9 != 0) goto switchD_004d81b8_caseD_13; - uVar12 = 1; - goto switchD_004d81b8_default; - case 2: - uVar3 = *param_4; - if (uVar9 < 2) { - local_8 = uVar3; - if ((int)uVar3 < 0) { - bVar5 = true; - local_8 = -uVar3; - } - uVar9 = 3; - param_4 = param_4 + 1; - } - else { - local_18 = pcVar11; - if (uVar9 != 4) goto switchD_004d81b8_caseD_13; - uVar9 = 5; - param_4 = param_4 + 1; - local_c = uVar3; - } - goto switchD_004d81b8_default; - case 3: - local_18 = pcVar11; - if (uVar9 != 0) goto switchD_004d81b8_caseD_13; - bVar5 = true; - goto switchD_004d81b8_default; - case 4: - local_18 = pcVar11; - if (3 < uVar9) goto switchD_004d81b8_caseD_13; - uVar9 = 4; - local_c = local_c + 1; - goto switchD_004d81b8_default; - case 5: - goto switchD_004d81b8_caseD_5; - case 6: - bVar6 = true; - uVar9 = 5; - goto switchD_004d81b8_default; - case 7: - bVar6 = false; - uVar9 = 5; - goto switchD_004d81b8_default; - case 8: - bVar7 = true; - bVar6 = false; - uVar9 = 5; - goto switchD_004d81b8_default; - case 9: - if (uVar9 == 0) { - if (!bVar5) { - bVar13 = true; - uVar9 = 1; - } - } - else { -switchD_004d81b8_caseD_5: - cVar10 = cVar10 + -0x30; - if (uVar9 < 3) { - uVar9 = 2; - if (local_8 == 0xffffffff) { - local_8 = (uint)cVar10; - } - else { - local_8 = local_8 * 10 + (int)cVar10; - } - } - else { - local_18 = pcVar11; - if (uVar9 != 4) goto switchD_004d81b8_caseD_13; - local_c = local_c * 10 + (int)cVar10; - } - } - goto switchD_004d81b8_default; - case 10: - goto switchD_004d81b8_caseD_a; - case 0xb: - local_24 = 8; - break; - case 0xc: - local_24 = 10; - break; - case 0xd: - local_24 = 0x10; - local_19 = cVar10 + -0x17; - break; - case 0xe: - local_20 = (char *)*param_4; - FUN_004d80f8((uint)local_20,(int)local_5c); - local_54 = 0; - local_20 = local_5c; - param_4 = param_4 + 1; - goto LAB_004d8548; - case 0xf: - local_20 = local_5c + 1; - thunk_FUN_004dd24c(); - param_4 = (uint *)thunk_FUN_004dd24c(); - goto LAB_004d8548; - case 0x10: - local_5c[0] = (char)*param_4; - local_5c[1] = 0; - local_20 = local_5c; - local_2c = 1; - param_4 = param_4 + 1; - goto LAB_004d85b9; - case 0x11: - puVar1 = param_4 + 1; - local_20 = (char *)*param_4; - if (local_20 == (char *)0x0) { - local_20 = &DAT_00520174; - } - local_2c = FUN_004d4a78(local_20); - param_4 = puVar1; - if (((int)local_c < (int)local_2c) && (-1 < (int)local_c)) { - local_2c = local_c; - } - goto LAB_004d85b9; - case 0x12: - puVar1 = param_4 + 1; - local_20 = (char *)*param_4; - param_4 = puVar1; - if (bVar6) { - *(undefined4 *)local_20 = local_64; - } - else if (bVar7) { - *(undefined2 *)local_20 = (undefined2)local_64; - } - else { - *(undefined4 *)local_20 = local_64; - } - goto LAB_004d8152; - case 0x13: - case 0x14: - case 0x15: - goto switchD_004d81b8_caseD_13; - case 0x16: - uVar9 = 5; - goto switchD_004d81b8_default; - case 0x17: - uVar9 = 5; - default: - goto switchD_004d81b8_default; - } - local_d = '\0'; - bVar8 = false; - goto LAB_004d8398; - } - param_3 = pcVar11 + 2; - cVar10 = '%'; - } - FUN_004d80d0(cVar10,(int)local_c0); - goto LAB_004d8152; - } - goto LAB_004d8763; -switchD_004d81b8_caseD_a: - local_24 = 10; - bVar8 = true; -LAB_004d8398: - if (bVar6) { - uVar9 = *param_4; - } - else if (bVar7) { - if (bVar8) { - uVar9 = (uint)(short)(ushort)*param_4; - } - else { - uVar9 = (uint)(ushort)*param_4; - } - } - else { - uVar9 = *param_4; - } - param_4 = param_4 + 1; - local_20 = local_5c + 1; - if (uVar9 == 0) { - if (local_c == 0) { - local_5c[1] = 0; - goto LAB_004d840a; - } - } - else { - uVar12 = uVar12 | 4; - } - FUN_004dd35c(uVar9,local_20,local_24,bVar8,local_19); -LAB_004d840a: - if ((int)local_c < 0) { -LAB_004d8548: - if ((bVar13) && (0 < (int)local_8)) { - local_2c = FUN_004d4a78(local_20); - if (*local_20 == '-') { - local_2c = local_2c + -1; - } - if ((int)local_2c < (int)local_8) { - local_14 = local_8 - local_2c; - } - } - if ((*local_20 == '-') || (local_d != '\0')) { - if (*local_20 != '-') { - local_20 = local_20 + -1; - *local_20 = local_d; - } - if ((0 < local_14) && ((int)local_c < 0)) { - local_14 = local_14 + -1; - } - } - local_2c = FUN_004d4a78(local_20); - } - else { - local_28 = FUN_004d4a78(local_20); - local_2c = local_28; - if (*local_20 == '-') { - local_28 = local_28 - 1; - } - else if (local_d != '\0') { - local_2c = local_28 + 1; - local_20 = local_20 + -1; - *local_20 = local_d; - } - if ((int)local_28 < (int)local_c) { - local_14 = local_c - local_28; - } - } -LAB_004d85b9: - if (uVar12 == 5) { - if (cVar10 == 'o') { - if (local_14 < 1) { - local_14 = 1; - } - } - else if ((cVar10 == 'x') || (cVar10 == 'X')) { - bVar4 = true; - local_8 = local_8 - 2; - local_14 = local_14 + -2; - if (local_14 < 0) { - local_14 = 0; - } - } - } - local_2c = local_2c + local_14; - if ((!bVar5) && ((int)local_2c < (int)local_8)) { - do { - FUN_004d80d0(0x20,(int)local_c0); - local_8 = local_8 - 1; - } while ((int)local_2c < (int)local_8); - } - if (bVar4) { - FUN_004d80d0(0x30,(int)local_c0); - FUN_004d80d0(cVar10,(int)local_c0); - } - if (0 < local_14) { - local_2c = local_2c - local_14; - local_8 = local_8 - local_14; - cVar10 = *local_20; - if (((cVar10 == '-') || (cVar10 == ' ')) || (cVar10 == '+')) { - cVar10 = *local_20; - local_20 = local_20 + 1; - FUN_004d80d0(cVar10,(int)local_c0); - local_2c = local_2c + -1; - local_8 = local_8 - 1; - } - while (iVar2 = local_14 + -1, bVar13 = local_14 != 0, local_14 = iVar2, bVar13) { - FUN_004d80d0(0x30,(int)local_c0); - } - } - if (local_2c != 0) { - local_8 = local_8 - local_2c; - while (local_2c != 0) { - cVar10 = *local_20; - local_2c = local_2c + -1; - local_20 = local_20 + 1; - FUN_004d80d0(cVar10,(int)local_c0); - } - local_2c = -1; - } - while (uVar12 = local_8 - 1, bVar13 = 0 < (int)local_8, local_8 = uVar12, bVar13) { - FUN_004d80d0(0x20,(int)local_c0); - } - goto LAB_004d8152; -switchD_004d81b8_caseD_13: - while( true ) { - pcVar11 = local_18 + 1; - cVar10 = *local_18; - local_18 = pcVar11; - if (cVar10 == '\0') break; - FUN_004d80d0(cVar10,(int)local_c0); - } -LAB_004d8763: - FUN_004d80a0((int)local_c0); - if (local_60 != 0) { - local_64 = 0xffffffff; - } - return local_64; -} - - - -/* @004d87e8 file=? name=FUN_004d87e8 */ - -int FUN_004d87e8(void) - -{ - int *piVar1; - int iVar2; - int iVar3; - - iVar3 = 0; - piVar1 = &DAT_0051f800; - iVar2 = DAT_0051fbc0; - while (iVar2 != 0) { - if ((*(byte *)((int)piVar1 + 0x12) & 3) != 0) { - FUN_004d6b9c(piVar1); - iVar3 = iVar3 + 1; - } - piVar1 = piVar1 + 6; - iVar2 = iVar2 + -1; - } - return iVar3; -} - - - -/* @004d8834 file=? name=FUN_004d8834 */ - -uint __cdecl FUN_004d8834(uint param_1) - -{ - uint uVar1; - DWORD DVar2; - DWORD DVar3; - DWORD DVar4; - - if (param_1 < DAT_0051fbc0) { - if (((&DAT_0051fbc4)[param_1] & 0x200) == 0) { - if (((&DAT_0051fbc4)[param_1] & 0x2000) == 0) { - DVar2 = FUN_004d9334(param_1,0,1); - if (DVar2 == 0xffffffff) { - uVar1 = 0xffffffff; - } - else { - DVar3 = FUN_004d9334(param_1,0,2); - if (DVar3 == 0xffffffff) { - uVar1 = 0xffffffff; - } - else { - DVar4 = FUN_004d9334(param_1,DVar2,0); - if (DVar4 == 0xffffffff) { - uVar1 = 0xffffffff; - } - else { - uVar1 = (uint)((int)DVar3 <= (int)DVar2); - } - } - } - } - else { - uVar1 = 0; - } - } - else { - uVar1 = 1; - } - } - else { - uVar1 = FUN_004d9148(-6); - } - return uVar1; -} - - - diff --git a/reference/decomp/all/part_015.c b/reference/decomp/all/part_015.c index b0a1499..06f9925 100644 --- a/reference/decomp/all/part_015.c +++ b/reference/decomp/all/part_015.c @@ -1,3 +1,6293 @@ +/* @004d2be0 file=? name=FUN_004d2be0 */ + +undefined4 * __cdecl FUN_004d2be0(undefined4 *param_1,int param_2,int param_3) + +{ + FUN_0049b54c(param_1,param_2,param_3); + *param_1 = &PTR_FUN_0051e870; + return param_1; +} + + + +/* @004d2c04 file=? name=FUN_004d2c04 */ + +void __cdecl FUN_004d2c04(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0051e870; + FUN_0049b648(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004d2c30 file=bt_l4/btl4mssn.cpp name=FUN_004d2c30 */ + +void __cdecl FUN_004d2c30(int param_1,int param_2) + +{ + char *pcVar1; + uint *puVar2; + int *piVar3; + char *pcVar4; + int iVar5; + undefined3 extraout_var; + undefined4 *puVar6; + uint uVar7; + undefined3 extraout_var_00; + undefined3 extraout_var_01; + char *pcVar8; + bool bVar9; + int local_a4 [5]; + int local_90 [5]; + undefined4 local_7c; + int local_78; + float local_74; + int *local_70; + int *local_6c; + int *local_68; + int *local_64; + int *local_60; + int *local_5c; + undefined4 *local_58; + uint *local_54; + uint *local_50; + uint *local_4c; + char *local_48; + char *local_44; + int *local_40; + char *local_3c; + float local_38; + int local_34; + char *local_30; + int *local_2c; + int *local_28; + char *local_24; + char *local_20; + int *local_1c; + char *local_18; + char *local_14; + char *local_10; + char *local_c; + int *local_8; + + local_8 = *(int **)(*(int *)(*(int *)(DAT_004efc94 + 0x2c) + 0x14) + 0x1064); + local_8[3] = local_8[3] + 1; + *(undefined4 *)(param_1 + 0x2c) = 0; + local_c = (char *)0x0; + FUN_00404088(param_2,(char *)local_8[2],s_vehicle_0051e5b5,&local_c); + if (local_c == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_Error__vehicle_not_specified__0051e5bd,(char *)0x0); + FUN_004036a0(1); + } + pcVar4 = FUN_00402300(local_c); + *(char **)(param_1 + 0x2c) = pcVar4; + *(undefined4 *)(param_1 + 0x28) = 0; + local_10 = (char *)0x0; + FUN_00404088(param_2,(char *)local_8[2],s_dropzone_0051e5dc,&local_10); + if (local_10 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_Error__dropzone_not_specified__0051e5e5,(char *)0x0); + FUN_004036a0(1); + } + pcVar4 = FUN_00402300(local_10); + *(char **)(param_1 + 0x28) = pcVar4; + *(undefined4 *)(param_1 + 0x3c) = 0; + FUN_004040d8(param_2,(char *)local_8[2],s_loadzones_0051e605,(int *)(param_1 + 0x3c)); + *(undefined4 *)(param_1 + 0x20) = 0; + local_14 = (char *)0x0; + FUN_00404088(param_2,(char *)local_8[2],s_color_0051e60f,&local_14); + if (local_14 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_Error__color_not_specified__0051e615,(char *)0x0); + FUN_004036a0(1); + } + pcVar4 = FUN_00402300(local_14); + *(char **)(param_1 + 0x20) = pcVar4; + local_18 = (char *)0x0; + FUN_00404088(param_2,(char *)local_8[2],s_patch_0051e632,&local_18); + if (local_18 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_Error__patch_not_specified__0051e638,(char *)0x0); + FUN_004036a0(1); + } + FUN_00402a98((int *)&local_1c,(int *)(param_1 + 0xf8),local_18); + piVar3 = local_1c + 3; + *piVar3 = *piVar3 + -1; + if (*piVar3 == 0) { + FUN_004024d8(local_1c,3); + } + *(undefined4 *)(param_1 + 0x24) = 0; + local_20 = (char *)0x0; + FUN_00404088(param_2,(char *)local_8[2],s_badge_0051e655,&local_20); + if (local_20 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_Error__badge_not_specified__0051e65b,(char *)0x0); + FUN_004036a0(1); + } + pcVar4 = FUN_00402300(local_20); + *(char **)(param_1 + 0x24) = pcVar4; + iVar5 = FUN_00404088(param_2,(char *)local_8[2],s_badge_0051e678,&local_24); + if (iVar5 == 0) { + FUN_00402a98((int *)&local_2c,(int *)(param_1 + 0xec),s_DEFAULT_0051e67e); + piVar3 = local_2c + 3; + *piVar3 = *piVar3 + -1; + if (*piVar3 == 0) { + FUN_004024d8(local_2c,3); + } + } + else { + FUN_00402a98((int *)&local_28,(int *)(param_1 + 0xec),local_24); + piVar3 = local_28 + 3; + *piVar3 = *piVar3 + -1; + if (*piVar3 == 0) { + FUN_004024d8(local_28,3); + } + } + local_30 = s_Unspecified_0051e686; + iVar5 = FUN_00404088(param_2,(char *)local_8[2],s_experience_0051e692,&local_30); + if (iVar5 == 0) { + pcVar4 = *(char **)(param_1 + 0x2c); + pcVar8 = s_camera_0051e69d; + do { + bVar9 = *pcVar4 == *pcVar8; + if (!bVar9) break; + if (*pcVar4 == '\0') goto LAB_004d2f3e; + pcVar1 = pcVar4 + 1; + bVar9 = *pcVar1 == pcVar8[1]; + if (!bVar9) break; + pcVar4 = pcVar4 + 2; + pcVar8 = pcVar8 + 2; + bVar9 = *pcVar1 == '\0'; + } while (!bVar9); + if (!bVar9) { + FUN_004dbb24((int *)&DAT_00524e68,(char *)local_8[2],(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_page_missing_expereince__0051e6a4,(char *)0x0); + FUN_004d9c38((int *)&DAT_00524e68); + FUN_0040385c(s_Exiting_0051e6be,s_d__tesla_bt_bt_l4_BTL4MSSN_CPP_0051e6c6,0xf0); + goto LAB_004d3052; + } + } +LAB_004d2f3e: + pcVar8 = s_Unspecified_0051e6e5; + pcVar4 = local_30; + do { + if (*pcVar8 != *pcVar4) goto LAB_004d2f68; + bVar9 = true; + if (*pcVar8 == '\0') break; + pcVar1 = pcVar8 + 1; + if (*pcVar1 != pcVar4[1]) goto LAB_004d2f68; + pcVar8 = pcVar8 + 2; + pcVar4 = pcVar4 + 2; + bVar9 = *pcVar1 == '\0'; + } while (!bVar9); + if (!bVar9) { +LAB_004d2f68: + iVar5 = FUN_004d4b58(local_30,s_novice_0051e6f1); + if (iVar5 == 0) { + *(undefined4 *)(param_1 + 0xe4) = 0; + } + else { + iVar5 = FUN_004d4b58(local_30,s_standard_0051e6f8); + if (iVar5 == 0) { + *(undefined4 *)(param_1 + 0xe4) = 1; + } + else { + iVar5 = FUN_004d4b58(local_30,s_veteran_0051e701); + if (iVar5 == 0) { + *(undefined4 *)(param_1 + 0xe4) = 2; + } + else { + iVar5 = FUN_004d4b58(local_30,s_expert_0051e709); + pcVar4 = local_30; + if (iVar5 == 0) { + *(undefined4 *)(param_1 + 0xe4) = 3; + } + else { + FUN_004dbb24((int *)&DAT_00524e68,(char *)local_8[2],(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_has_an_unknown_experience_field_o_0051e710, + (char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,pcVar4,(char *)0x0); + FUN_004d9c38((int *)&DAT_00524e68); + FUN_0040385c(s_Exiting_0051e735,s_d__tesla_bt_bt_l4_BTL4MSSN_CPP_0051e73d,0x108); + } + } + } + } + } +LAB_004d3052: + local_34 = 0; + bVar9 = FUN_004040d8(param_2,(char *)local_8[2],s_advancedDamage_0051e75c,&local_34); + if (CONCAT31(extraout_var,bVar9) != 0) { + if (local_34 == 0) { + *(undefined4 *)(param_1 + 0xf0) = 0; + } + else { + *(undefined4 *)(param_1 + 0xf0) = 1; + } + } + iVar5 = FUN_00404088(param_2,(char *)local_8[2],&DAT_0051e76b,&local_3c); + if (iVar5 == 0) { + FUN_004dbb24((int *)&DAT_00524e68,s_Each_Player_page_must_have_a_rol_0051e7fd,(char *)0x0); + FUN_004d9c38((int *)&DAT_00524e68); + FUN_0040385c(s_Exiting_0051e827,s_d__tesla_bt_bt_l4_BTL4MSSN_CPP_0051e82f,0x1c3); + } + else { + FUN_00402a98((int *)&local_40,(int *)(param_1 + 0xe8),local_3c); + piVar3 = local_40 + 3; + *piVar3 = *piVar3 + -1; + if (*piVar3 == 0) { + FUN_004024d8(local_40,3); + } + iVar5 = FUN_00404088(param_2,local_3c,s_model_0051e770,&local_44); + if (iVar5 == 0) { + FUN_004dbb24((int *)&DAT_00524e68,local_3c,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_page_or_model_field_missing___0051e7b7,(char *)0x0); + FUN_004d9c38((int *)&DAT_00524e68); + FUN_0040385c(s_Exiting_0051e7d6,s_d__tesla_bt_bt_l4_BTL4MSSN_CPP_0051e7de,0x1bd); + } + else { + FUN_004323c7(local_90,param_1 + 0x50); + puVar6 = (undefined4 *)(**(code **)(local_90[0] + 0x54))(local_90,param_1 + 0xe8); + FUN_00432405(local_90,2); + if (puVar6 == (undefined4 *)0x0) { + puVar6 = (undefined4 *)FUN_00402298(0x2c); + if (puVar6 == (undefined4 *)0x0) { + puVar6 = (undefined4 *)0x0; + } + else { + local_48 = local_44; + local_50 = (uint *)FUN_00402298(0x10); + if (local_50 == (uint *)0x0) { + local_4c = (uint *)0x0; + } + else { + local_4c = FUN_00402460(local_50,local_48); + } + local_4c[3] = local_4c[3] + 1; + puVar6 = FUN_00429a9c(puVar6,(int *)(param_1 + 0xe8),(int *)&local_4c); + } + local_54 = local_4c; + puVar2 = local_4c + 3; + *puVar2 = *puVar2 - 1; + if (*puVar2 == 0) { + FUN_004024d8((int *)local_4c,3); + } + local_5c = puVar6 + 9; + local_60 = (int *)*local_5c; + local_60[3] = local_60[3] + 1; + local_58 = puVar6; + FUN_004323c7(local_a4,param_1 + 0x50); + iVar5 = (**(code **)(local_a4[0] + 0x54))(local_a4,&local_60); + FUN_00432405(local_a4,2); + uVar7 = (uint)(iVar5 == 0); + local_64 = local_60; + piVar3 = local_60 + 3; + *piVar3 = *piVar3 + -1; + if (*piVar3 == 0) { + FUN_004024d8(local_60,3); + } + if (uVar7 != 0) { + local_68 = local_58 + 9; + local_6c = (int *)*local_68; + local_6c[3] = local_6c[3] + 1; + (**(code **)(*(int *)(param_1 + 0x50) + 8))(param_1 + 0x50,local_58,&local_6c); + local_70 = local_6c; + piVar3 = local_6c + 3; + *piVar3 = *piVar3 + -1; + if (*piVar3 == 0) { + FUN_004024d8(local_6c,3); + } + } + } + iVar5 = FUN_00404118(param_2,local_3c,s_dmgInflctdMdfr_0051e776,&local_38); + if (iVar5 != 0) { + puVar6[3] = local_38; + } + iVar5 = FUN_00404118(param_2,local_3c,s_dmgRcvdMdfr_0051e785,&local_38); + if (iVar5 != 0) { + local_74 = local_38; + puVar6[4] = local_38; + } + iVar5 = FUN_00404118(param_2,local_3c,s_dmgBias_0051e791,&local_38); + if (iVar5 != 0) { + puVar6[6] = local_38; + } + iVar5 = FUN_00404118(param_2,local_3c,s_friendlyFire_0051e799,&local_38); + if (iVar5 != 0) { + puVar6[5] = local_38; + } + bVar9 = FUN_004040d8(param_2,local_3c,s_return_0051e7a6,&local_78); + if (CONCAT31(extraout_var_00,bVar9) != 0) { + puVar6[10] = local_78; + } + iVar5 = FUN_00404118(param_2,local_3c,s_killBonus_0051e7ad,&local_38); + if (iVar5 != 0) { + puVar6[7] = local_38; + } + } + } + bVar9 = FUN_004040d8(param_2,(char *)local_8[2],s_bitmapindex_0051e84e,(int *)(param_1 + 0x4c)); + if (CONCAT31(extraout_var_01,bVar9) == 0) { + FUN_004dbb24(&DAT_00524e20,s_No_Bitmap_for_player_0051e85a,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,(char *)local_8[2],(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + } + else { + local_7c = *(undefined4 *)(param_1 + 0x4c); + iVar5 = (**(code **)(*(int *)(param_1 + 0x68) + 0xc))(param_1 + 0x68,&local_7c); + if (((iVar5 != 0) && (*(int *)(DAT_004efc94 + 0x4c) != 0)) && + (piVar3 = *(int **)(*(int *)(DAT_004efc94 + 0x4c) + 0x1c530), piVar3 != (int *)0x0)) { + (**(code **)(*piVar3 + 0x28)) + (piVar3,1,0,0xff,0,0,0,0,iVar5,0,0,*(int *)(iVar5 + 0xc) + -1, + *(int *)(iVar5 + 0x10) + -1); + (**(code **)(*piVar3 + 8))(piVar3,1); + (**(code **)(*piVar3 + 0xc))(piVar3); + } + } + piVar3 = local_8 + 3; + *piVar3 = *piVar3 + -1; + if (*piVar3 == 0) { + FUN_004024d8(local_8,3); + } + return; +} + + + +/* @004d34b0 file=? name=FUN_004d34b0 */ + +undefined4 FUN_004d34b0(void) + +{ + FUN_0044d828(); + return 1; +} + + + +/* @004d34c4 file=? name=FUN_004d34c4 */ + +undefined4 * __cdecl +FUN_004d34c4(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) + +{ + FUN_0047b410(param_1,param_2,1,param_3,param_4); + *param_1 = &PTR_FUN_0051ed9c; + FUN_004dbb24(&DAT_00524e20,s_BTL4Application__BTL4Application_0051ebd6,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + return param_1; +} + + + +/* @004d350c file=? name=FUN_004d350c */ + +void __cdecl FUN_004d350c(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0051ed9c; + FUN_0047b624(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004d3538 file=? name=FUN_004d3538 */ + +undefined4 * FUN_004d3538(void) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00402298(0x10); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_004c1548(puVar1); + } + return puVar1; +} + + + +/* @004d3564 file=? name=FUN_004d3564 */ + +undefined4 * __cdecl FUN_004d3564(int param_1) + +{ + undefined4 *puVar1; + + if (*(int *)(param_1 + 0xd0) == 0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = (undefined4 *)FUN_00402298(0x3e0); + if (puVar1 == (undefined4 *)0x0) { + return (undefined4 *)0x0; + } + puVar1 = FUN_004ceecc(puVar1,DAT_004e8238,DAT_004e823c,1,0,1); + } + return puVar1; +} + + + +/* @004d35b0 file=? name=FUN_004d35b0 */ + +undefined4 * __cdecl FUN_004d35b0(int param_1) + +{ + int iVar1; + int iVar2; + undefined4 *puVar3; + float10 fVar4; + undefined4 uVar5; + + iVar1 = FUN_004dee74(s_AWE_FRONT_0051ec1e); + iVar2 = FUN_004dee74(s_AWE_REAR_0051ec28); + if ((iVar1 == 0) || (iVar2 == 0)) { + puVar3 = (undefined4 *)0x0; + } + else { + puVar3 = (undefined4 *)FUN_00402298(0x1b0); + if (puVar3 == (undefined4 *)0x0) { + puVar3 = (undefined4 *)0x0; + } + else { + uVar5 = DAT_004fd550; + fVar4 = FUN_0044e19c(param_1); + puVar3 = FUN_004d2b6c(puVar3,(float)fVar4,uVar5); + } + } + return puVar3; +} + + + +/* @004d3614 file=? name=FUN_004d3614 */ + +undefined4 * FUN_004d3614(void) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00402298(0xc); + if (puVar1 != (undefined4 *)0x0) { + FUN_0044c2d0(puVar1,0x50421); + *puVar1 = &PTR_FUN_0051ed98; + } + return puVar1; +} + + + +/* @004d3644 file=? name=FUN_004d3644 */ + +undefined4 * __cdecl FUN_004d3644(undefined4 param_1) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00402298(0xd10); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_00475c18(puVar1); + } + (**(code **)(puVar1[0x68] + 0x14))(puVar1 + 0x68,0xffffffff,param_1,7,param_1); + return puVar1; +} + + + +/* @004d368c file=? name=FUN_004d368c */ + +int * FUN_004d368c(void) + +{ + int iVar1; + int *piVar2; + + iVar1 = FUN_004dee74(s_L4GAUGE_0051ec31); + if (iVar1 == 0) { + piVar2 = (int *)0x0; + } + else { + piVar2 = (int *)FUN_00402298(0x1c53c); + if (piVar2 == (int *)0x0) { + return (int *)0x0; + } + piVar2 = FUN_004cbea0(piVar2); + } + return piVar2; +} + + + +/* @004d36c4 file=? name=FUN_004d36c4 */ + +undefined4 * __cdecl FUN_004d36c4(undefined4 param_1,int param_2,int param_3) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00402298(0xfc); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_004d2be0(puVar1,param_2,param_3); + } + return puVar1; +} + + + +/* @004d36f4 file=bt_l4/btl4app.cpp name=FUN_004d36f4 */ + +int * __cdecl FUN_004d36f4(int param_1,int param_2) + +{ + int iVar1; + uint *puVar2; + undefined4 *puVar3; + int iVar4; + int *piVar5; + char *pcVar6; + char *pcVar7; + undefined4 uVar8; + undefined *puVar9; + char local_60 [2]; + char acStack_5e [30]; + undefined4 local_40; + undefined4 local_3c; + int *local_30; + uint *local_2c; + undefined4 *local_28; + uint *local_24; + undefined4 *local_20; + int *local_1c; + undefined4 *local_18; + undefined4 *local_14; + undefined4 *local_10; + int *local_c; + char *local_8; + + piVar5 = (int *)0x0; + iVar1 = *(int *)(param_1 + 0x3c); + local_8 = (char *)0x0; + if (*(int *)(param_2 + 0x1c) == 0x45) { + piVar5 = FUN_0042d16c(param_2); + pcVar6 = s_ControlsMapper_0051ec39; + pcVar7 = local_60; + local_c = piVar5; + for (iVar4 = 3; iVar4 != 0; iVar4 = iVar4 + -1) { + *(undefined4 *)pcVar7 = *(undefined4 *)pcVar6; + pcVar6 = pcVar6 + 4; + pcVar7 = pcVar7 + 4; + } + *(undefined2 *)pcVar7 = *(undefined2 *)pcVar6; + pcVar7[2] = pcVar6[2]; + local_40 = 0xf; + local_3c = 0x30; + if (*(int *)(iVar1 + 0xc98) == 2) { + local_10 = (undefined4 *)FUN_00402298(0x110); + if (local_10 == (undefined4 *)0x0) { + puVar3 = (undefined4 *)0x0; + } + else { + puVar3 = FUN_0047ac5c(local_10,local_c,0,local_60,&DAT_004fd318); + } + local_8 = s_Thrustmaster_0051ec48; + } + else if (*(int *)(iVar1 + 0xc98) == 4) { + local_14 = (undefined4 *)FUN_00402298(0x108); + if (local_14 == (undefined4 *)0x0) { + puVar3 = (undefined4 *)0x0; + } + else { + puVar3 = FUN_0047ad3c(local_14,local_c,0,local_60,&DAT_004fd364); + } + local_8 = &DAT_0051ec55; + } + else { + local_18 = (undefined4 *)FUN_00402298(0x108); + if (local_18 == (undefined4 *)0x0) { + puVar3 = (undefined4 *)0x0; + } + else { + puVar3 = FUN_0047aa78(local_18,local_c,0,local_60,&DAT_004fd2b0); + } + } + FUN_0042c630((int)local_c,puVar3); + } + else if (*(int *)(param_2 + 0x1c) == 0xbb9) { + piVar5 = FUN_004a2d48(param_2); + local_1c = piVar5; + FUN_00476eac(iVar1,0.05); + FUN_00476eec(iVar1,0.05); + FUN_00476f10(iVar1,0.05); + if (*(int *)(iVar1 + 0xc98) == 2) { + local_20 = (undefined4 *)FUN_00402298(0x1bc); + if (local_20 == (undefined4 *)0x0) { + puVar3 = (undefined4 *)0x0; + } + else { + puVar9 = &DAT_0051dc68; + uVar8 = 0x7dc; + local_24 = (uint *)FUN_00402298(0x10); + if (local_24 == (uint *)0x0) { + puVar2 = (uint *)0x0; + } + else { + puVar2 = FUN_00402460(local_24,s_ControlsMapper_0051ec58); + } + puVar2[3] = puVar2[3] + 1; + puVar3 = FUN_004d21d0(local_20,local_1c,0,(int *)puVar2,uVar8,puVar9); + } + local_8 = s_Thrustmaster_0051ec67; + } + else if (*(int *)(iVar1 + 0xc98) == 4) { + local_28 = (undefined4 *)FUN_00402298(0x1bc); + if (local_28 == (undefined4 *)0x0) { + puVar3 = (undefined4 *)0x0; + } + else { + puVar9 = &DAT_0051dcf0; + uVar8 = 0x7dc; + local_2c = (uint *)FUN_00402298(0x10); + if (local_2c == (uint *)0x0) { + puVar2 = (uint *)0x0; + } + else { + puVar2 = FUN_00402460(local_2c,s_ControlsMapper_0051ec74); + } + puVar2[3] = puVar2[3] + 1; + puVar3 = FUN_004d266c(local_28,local_1c,0,(int *)puVar2,uVar8,puVar9); + } + local_8 = &DAT_0051ec83; + } + else { + FUN_004dbb24(&DAT_00524e20,s______Mech_has_no_controls_mappin_0051ec86,(char *)0x0); + FUN_0040385c(s_BTL4Application__MakeViewpointEn_0051ecae, + s_d__tesla_bt_bt_l4_BTL4APP_CPP_0051ecd3,400); + puVar3 = (undefined4 *)0x0; + } + FUN_0049fe40((int)local_1c,puVar3); + (**(code **)(*local_1c + 0x38))(local_1c); + } + if (((local_8 != (char *)0x0) && + (local_30 = (int *)FUN_00407064(*(int *)(DAT_004efc94 + 0x68),piVar5[0x6f],6), + local_30 != (int *)0x0)) && + (local_30 = (int *)FUN_004070dc(*(int *)(param_1 + 0x68),*local_30,local_8), + local_30 != (int *)0x0)) { + iVar4 = local_30[1]; + local_30[1] = local_30[1] + 1; + if (iVar4 == 0) { + FUN_00406cd0((int)local_30); + } + FUN_0047703c(iVar1,(int)piVar5,(int *)local_30[0xf]); + local_30[1] = local_30[1] + -1; + } + if (*(int **)(param_1 + 0x4c) != (int *)0x0) { + FUN_0046ff64(*(int **)(param_1 + 0x4c),&DAT_0051ecf1,piVar5); + } + return piVar5; +} + + + +/* @004d3a2c file=? name=FUN_004d3a2c */ + +void __cdecl FUN_004d3a2c(int param_1) + +{ + int iVar1; + + FUN_004dbb24(&DAT_00524e20,s_BTL4Application__RunMissionMessa_0051ecf6,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + iVar1 = *(int *)(param_1 + 0x50); + *(undefined4 *)(iVar1 + 8) = *(undefined4 *)(iVar1 + 4); + *(uint *)(iVar1 + 4) = *(uint *)(iVar1 + 4) | 0x400000; + FUN_004dbb24(&DAT_00524e20,s_Turning_Plasma_Score_Display_On_0051ed20,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + FUN_0047b788(param_1); + return; +} + + + +/* @004d3a94 file=? name=FUN_004d3a94 */ + +void __cdecl FUN_004d3a94(int param_1) + +{ + int iVar1; + + iVar1 = *(int *)(param_1 + 0x50); + *(undefined4 *)(iVar1 + 8) = *(undefined4 *)(iVar1 + 4); + *(uint *)(iVar1 + 4) = *(uint *)(iVar1 + 4) & 0xffbfffff; + FUN_0047b864(param_1); + FUN_004dbb24(&DAT_00524e20,s_Turning_Plasma_Score_Display_Off_0051ed40,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + return; +} + + + +/* @004d3b74 file=? name=FUN_004d3b74 */ + +undefined4 * __cdecl FUN_004d3b74(undefined4 *param_1) + +{ + FUN_0047c5d8(param_1); + *param_1 = &PTR_FUN_0051f204; + return param_1; +} + + + +/* @004d3b90 file=? name=FUN_004d3b90 */ + +void __cdecl FUN_004d3b90(undefined4 param_1,uint *param_2) + +{ + FUN_004d3ecc(DAT_004efc94,param_2); + return; +} + + + +/* @004d3bb8 file=? name=FUN_004d3bb8 */ + +void __cdecl FUN_004d3bb8(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0051f204; + FUN_0047c734(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004d3be4 file=? name=FUN_004d3be4 */ + +undefined4 * __cdecl FUN_004d3be4(undefined4 *param_1,undefined4 param_2,undefined4 param_3) + +{ + FUN_004d34c4(param_1,param_2,0x3eb,&DAT_0051ee5c); + *param_1 = &PTR_FUN_0051f1a4; + param_1[6] = param_3; + return param_1; +} + + + +/* @004d3c14 file=? name=FUN_004d3c14 */ + +undefined4 * FUN_004d3c14(void) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00402298(0x28); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_0047bfc4(puVar1); + } + return puVar1; +} + + + +/* @004d3c34 file=? name=FUN_004d3c34 */ + +void __cdecl FUN_004d3c34(int *param_1) + +{ + FUN_0047b468(param_1); + return; +} + + + +/* @004d3c44 file=? name=FUN_004d3c44 */ + +void __cdecl FUN_004d3c44(int param_1) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00402298(0x10); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_004d3b74(puVar1); + } + FUN_0044de1c(*(int *)(param_1 + 100),puVar1); + puVar1 = (undefined4 *)FUN_00402298(0x10); + if (puVar1 != (undefined4 *)0x0) { + FUN_0044dd08(puVar1,0x48); + *puVar1 = &PTR_FUN_004f037c; + } + FUN_0044de1c(*(int *)(param_1 + 100),puVar1); + puVar1 = (undefined4 *)FUN_00402298(0x10); + if (puVar1 != (undefined4 *)0x0) { + FUN_0044dd08(puVar1,0x48); + *puVar1 = &PTR_FUN_004f031c; + } + FUN_0044de1c(*(int *)(param_1 + 100),puVar1); + puVar1 = (undefined4 *)FUN_00402298(0x10); + if (puVar1 != (undefined4 *)0x0) { + FUN_0044dd08(puVar1,0x48); + *puVar1 = &PTR_FUN_004f0304; + } + FUN_0044de1c(*(int *)(param_1 + 100),puVar1); + puVar1 = (undefined4 *)FUN_00402298(0x10); + if (puVar1 != (undefined4 *)0x0) { + FUN_0044dd08(puVar1,0x48); + *puVar1 = &PTR_FUN_004f0364; + } + FUN_0044de1c(*(int *)(param_1 + 100),puVar1); + return; +} + + + +/* @004d3d40 file=? name=FUN_004d3d40 */ + +undefined4 __cdecl FUN_004d3d40(int param_1,int param_2) + +{ + undefined4 uVar1; + int *piVar2; + + if ((*(int *)(param_1 + 0x70) == 0) || (*(int *)(param_1 + 0x88) == 1)) { + if ((*(int *)(param_1 + 0x70) == 0) || (DAT_004efc98 != 0)) { + uVar1 = 0; + } + else { + uVar1 = 1; + } + } + else { + FUN_004dcd94(); + if (DAT_004fd550 == 2) { + (**(code **)(**(int **)(param_1 + 0x3c) + 0x18))(*(int **)(param_1 + 0x3c)); + } + FUN_00435794(*(int *)(param_1 + 0x34)); + FUN_004363ec(*(int *)(param_1 + 0x38),param_2); + FUN_00434a08(); + FUN_0043649c(*(int *)(param_1 + 0x38)); + FUN_00436440(*(int *)(param_1 + 0x38),param_2); + (**(code **)(**(int **)(param_1 + 0x40) + 0x24))(*(int **)(param_1 + 0x40)); + if (*(int *)(param_1 + 0x88) == 5) { + piVar2 = (int *)FUN_00414b60(); + *(float *)(param_1 + 0x58) = + *(float *)(*(int *)(param_1 + 200) + 0xe0) - + (float)(*piVar2 - *(int *)(param_1 + 0x5c)) / DAT_0052140c; + } + if ((*(int *)(param_1 + 0x70) == 0) || (DAT_004efc98 != 0)) { + uVar1 = 0; + } + else { + uVar1 = 1; + } + } + return uVar1; +} + + + +/* @004d3e78 file=? name=FUN_004d3e78 */ + +void __cdecl FUN_004d3e78(int param_1) + +{ + int iVar1; + + iVar1 = FUN_0041b07c(*(int *)(param_1 + 0x60),3); + if (iVar1 == 0) { + (**(code **)(**(int **)(param_1 + 100) + 0x14))(*(int **)(param_1 + 100)); + } + return; +} + + + +/* @004d3ea0 file=? name=FUN_004d3ea0 */ + +void __cdecl FUN_004d3ea0(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0051f1a4; + FUN_004d350c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004d3ecc file=? name=FUN_004d3ecc */ + +void __cdecl FUN_004d3ecc(int param_1,uint *param_2) + +{ + int *piVar1; + + piVar1 = (int *)FUN_0041d7f0(*(int *)(param_1 + 0x20),*param_2); + (**(code **)(*piVar1 + 0x14))(piVar1,param_2,param_2 + 4); + return; +} + + + +/* @004d3ef8 file=? name=FUN_004d3ef8 */ + +void __cdecl FUN_004d3ef8(int param_1) + +{ + int *piVar1; + int iVar2; + int *piVar3; + + if (*(int *)(param_1 + 0x88) == 3) { + piVar1 = *(int **)(param_1 + 0x18); + iVar2 = (**(code **)*piVar1)(piVar1); + piVar3 = (int *)FUN_00414b60(); + *(int *)(param_1 + 0xd4) = *piVar3 - *(int *)(iVar2 + 0xc); + FUN_0044f850(piVar1); + } + FUN_004d3a2c(param_1); + return; +} + + + +/* @004d3f44 file=? name=FUN_004d3f44 */ + +void __cdecl FUN_004d3f44(int param_1) + +{ + char *pcVar1; + int *piVar2; + int iVar3; + char *pcVar4; + int iVar5; + int iVar6; + char *pcVar7; + bool bVar8; + uint local_30 [5]; + int local_1c [3]; + int local_10; + char *local_c; + int local_8; + + iVar3 = FUN_0044e13c(param_1); + if (*(int **)(param_1 + 0x18) != (int *)0x0) { + FUN_0044fac0(iVar3,*(int **)(param_1 + 0x18)); + *(undefined4 *)(param_1 + 0x18) = 0; + local_8 = FUN_00403ad0(*(int *)(DAT_004efc94 + 0x24) + 0x18,s_DropZones_0051f19a); + local_c = &DAT_0051ee67; + iVar3 = 0; + while( true ) { + iVar6 = FUN_0042efe4(iVar3); + if (iVar6 == 0) break; + *local_c = (char)iVar3 + '1'; + FUN_00421414(local_1c,local_8 + 0x10); +LAB_004d3fea: + do { + iVar5 = (**(code **)(local_1c[0] + 0x28))(local_1c); + if (iVar5 == 0) break; + pcVar4 = (char *)(iVar5 + 0x1c8); + pcVar7 = &DAT_0051ee64; + do { + if (*pcVar4 != *pcVar7) goto LAB_004d3fea; + bVar8 = true; + if (*pcVar4 == '\0') break; + pcVar1 = pcVar4 + 1; + if (*pcVar1 != pcVar7[1]) goto LAB_004d3fea; + pcVar4 = pcVar4 + 2; + pcVar7 = pcVar7 + 2; + bVar8 = *pcVar1 == '\0'; + } while (!bVar8); + } while (!bVar8); + if (iVar5 == 0) { + FUN_00421452(local_1c,2); + } + else { + piVar2 = *(int **)(iVar6 + 0x1fc); + if (piVar2[1] == 0xbb9) { + FUN_0049fb74((int)piVar2,(undefined4 *)(iVar5 + 0x100),0); + piVar2[7] = (int)PTR_FUN_0051ee69; + piVar2[8] = DAT_0051ee6d; + piVar2[9] = DAT_0051ee71; + FUN_00419cb8((int)piVar2); + local_10 = *(int *)(DAT_004efc94 + 0x38); + FUN_00436668(local_30,(int)piVar2); + FUN_004364e4(local_10,piVar2,local_30); + } + FUN_00421452(local_1c,2); + } + iVar3 = iVar3 + 1; + } + iVar3 = *(int *)(param_1 + 0x48); + FUN_00460840(iVar3); + FUN_0045a7a8(iVar3,4); + } + FUN_004d3a94(param_1); + return; +} + + + +/* @004d40d8 file=? name=FUN_004d40d8 */ + +void __cdecl FUN_004d40d8(int param_1) + +{ + FUN_0041a1a4(**(int **)(param_1 + 0xc),0x51ee2c); + return; +} + + + +/* @004d4179 file=? name=FUN_004d4179 */ + +undefined2 FUN_004d4179(void) + +{ + code *pcVar1; + undefined2 uVar2; + + pcVar1 = (code *)swi(0x11); + uVar2 = (*pcVar1)(); + return uVar2; +} + + + +/* @004d4183 file=? name=FUN_004d4183 */ + +undefined2 FUN_004d4183(void) + +{ + code *pcVar1; + undefined2 uVar2; + + pcVar1 = (code *)swi(0x12); + uVar2 = (*pcVar1)(); + return uVar2; +} + + + +/* @004d418d file=? name=FUN_004d418d */ + +undefined4 FUN_004d418d(void) + +{ + code *pcVar1; + undefined2 extraout_CX; + undefined2 extraout_DX; + + pcVar1 = (code *)swi(0x1a); + (*pcVar1)(); + return CONCAT22(extraout_CX,extraout_DX); +} + + + +/* @004d45b0 file=? name=FUN_004d45b0 */ + +undefined4 FUN_004d45b0(void) + +{ + undefined4 in_EAX; + + LOCK(); + UNLOCK(); + return in_EAX; +} + + + +/* @004d45c6 file=? name=FUN_004d45c6 */ + +undefined2 __cdecl FUN_004d45c6(undefined2 param_1) + +{ + undefined2 uVar1; + + uVar1 = in(param_1); + return uVar1; +} + + + +/* @004d45d3 file=? name=FUN_004d45d3 */ + +undefined1 __cdecl FUN_004d45d3(undefined2 param_1) + +{ + undefined1 uVar1; + + uVar1 = in(param_1); + return uVar1; +} + + + +/* @004d45df file=? name=FUN_004d45df */ + +undefined2 __cdecl FUN_004d45df(undefined2 param_1) + +{ + undefined2 uVar1; + + uVar1 = in(param_1); + return uVar1; +} + + + +/* @004d45ec file=? name=FUN_004d45ec */ + +undefined1 __cdecl FUN_004d45ec(undefined2 param_1) + +{ + undefined1 uVar1; + + uVar1 = in(param_1); + return uVar1; +} + + + +/* @004d461f file=? name=FUN_004d461f */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004d461f(undefined4 param_1,int param_2,undefined4 *param_3,undefined2 *param_4) + +{ + undefined4 uVar1; + undefined4 uVar2; + uint uVar3; + undefined4 uVar4; + undefined4 extraout_ECX; + undefined4 extraout_EDX; + undefined2 uVar5; + undefined2 uVar6; + undefined2 uVar7; + undefined2 uVar8; + byte bVar9; + byte in_PF; + byte in_AF; + byte in_ZF; + byte in_SF; + byte in_TF; + byte in_IF; + byte in_OF; + byte in_NT; + byte in_AC; + byte in_VIF; + byte in_VIP; + byte in_ID; + + uVar5 = *param_4; + uVar7 = param_4[4]; + uVar8 = param_4[5]; + uVar6 = param_4[3]; + uVar1 = *(undefined4 *)(param_2 + 4); + uVar2 = *(undefined4 *)(param_2 + 0x14); + bVar9 = 0; + uVar4 = FUN_004d45b0(); + uVar3 = (uint)(bVar9 & 1); + *param_3 = uVar4; + param_3[1] = uVar1; + param_3[2] = extraout_ECX; + param_3[3] = extraout_EDX; + param_3[4] = param_3; + param_3[5] = uVar2; + param_3[7] = (uint)(in_NT & 1) * 0x4000 | (uint)(in_OF & 1) * 0x800 | (uint)(in_IF & 1) * 0x200 | + (uint)(in_TF & 1) * 0x100 | (uint)(in_SF & 1) * 0x80 | (uint)(in_ZF & 1) * 0x40 | + (uint)(in_AF & 1) * 0x10 | (uint)(in_PF & 1) * 4 | uVar3 | + (uint)(in_ID & 1) * 0x200000 | (uint)(in_VIP & 1) * 0x100000 | + (uint)(in_VIF & 1) * 0x80000 | (uint)(in_AC & 1) * 0x40000; + param_3[6] = uVar3; + *param_4 = uVar5; + param_4[3] = uVar6; + param_4[4] = uVar7; + param_4[5] = uVar8; + if (uVar3 == 0) { + DAT_00520bcc = uVar4; + _DAT_00524dd0 = uVar4; + } + return; +} + + + +/* @004d46a5 file=? name=FUN_004d46a5 */ + +void FUN_004d46a5(void) + +{ + if (DAT_00525224 != 2) { + FUN_004ded48(s_This_DPMI32_module_cannot_be_run_0051f224); + } + return; +} + + + +/* @004d46c0 file=? name=FUN_004d46c0 */ + +undefined2 __cdecl FUN_004d46c0(undefined2 param_1,undefined2 param_2) + +{ + out(param_1,param_2); + return param_2; +} + + + +/* @004d46cf file=? name=FUN_004d46cf */ + +undefined1 __cdecl FUN_004d46cf(undefined2 param_1,undefined1 param_2) + +{ + out(param_1,param_2); + return param_2; +} + + + +/* @004d46dc file=? name=FUN_004d46dc */ + +undefined6 __cdecl FUN_004d46dc(undefined2 param_1,ushort param_2) + +{ + out(param_1,param_2); + return CONCAT24(param_1,(uint)param_2); +} + + + +/* @004d46ed file=? name=FUN_004d46ed */ + +undefined6 __cdecl FUN_004d46ed(undefined2 param_1,byte param_2) + +{ + out(param_1,param_2); + return CONCAT24(param_1,(uint)param_2); +} + + + +/* @004d46fc file=? name=FUN_004d46fc */ + +void __cdecl FUN_004d46fc(undefined2 *param_1) + +{ + undefined2 in_ES; + undefined2 in_CS; + undefined2 in_SS; + undefined2 in_DS; + undefined2 in_FS; + undefined2 in_GS; + + *param_1 = in_ES; + param_1[1] = in_CS; + param_1[2] = in_SS; + param_1[3] = in_DS; + param_1[4] = in_FS; + param_1[5] = in_GS; + return; +} + + + +/* @004d4718 file=? name=FUN_004d4718 */ + +uint FUN_004d4718(void) + +{ + HANDLE hConsoleHandle; + BOOL BVar1; + uint uVar2; + short *psVar3; + DWORD DStack_28; + uint local_24; + _INPUT_RECORD local_20; + + uVar2 = DAT_0051f5d8; + if (DAT_0051f5dc == '\0') { + if (DAT_0051f5d8 == 0xffffffff) { + hConsoleHandle = GetStdHandle(0xfffffff6); + BVar1 = GetConsoleMode(hConsoleHandle,&local_24); + if (BVar1 == 1) { + if (((local_24 & 7) == 0) || + (BVar1 = SetConsoleMode(hConsoleHandle,local_24 & 0xfffffff8), BVar1 == 1)) { + do { + do { + do { + BVar1 = ReadConsoleInputA(hConsoleHandle,&local_20,1,&DStack_28); + if (BVar1 != 1) { + uVar2 = 0xffffffff; + goto LAB_004d483d; + } + } while (local_20.Event.KeyEvent.bKeyDown == 0); + uVar2 = (uint)local_20.Event.KeyEvent.wVirtualKeyCode; + for (psVar3 = &DAT_0051f254; (uVar2 != (int)*psVar3 && (*psVar3 != -1)); + psVar3 = psVar3 + 5) { + } + } while (*psVar3 == -1); + if ((local_20.Event.KeyEvent.dwControlKeyState & 3) == 0) { + if ((local_20.Event.KeyEvent.dwControlKeyState & 0xc) == 0) { + if ((local_20.Event.KeyEvent.dwControlKeyState & 0x10) == 0) { + if ((uVar2 < 0x41) || (0x5a < uVar2)) { + uVar2 = (uint)psVar3[1]; + } + else { + uVar2 = (uint)(char)local_20.Event.MouseEvent.dwControlKeyState._2_1_; + } + } + else { + uVar2 = (uint)psVar3[2]; + } + } + else { + uVar2 = (uint)psVar3[3]; + } + } + else { + uVar2 = (uint)psVar3[4]; + } + } while (uVar2 == 0xffffffff); + if ((uVar2 & 0x100) != 0) { + DAT_0051f5d8 = uVar2 & 0xff; + uVar2 = 0; + } +LAB_004d483d: + if (((local_24 & 7) != 0) && (BVar1 = SetConsoleMode(hConsoleHandle,local_24), BVar1 != 1) + ) { + uVar2 = 0xffffffff; + } + } + else { + uVar2 = 0xffffffff; + } + } + else { + uVar2 = 0xffffffff; + } + } + else { + DAT_0051f5d8 = 0xffffffff; + } + } + else { + DAT_0051f5dc = '\0'; + uVar2 = (uint)DAT_0051f5dd; + } + return uVar2; +} + + + +/* @004d4860 file=? name=FUN_004d4860 */ + +uint __cdecl FUN_004d4860(byte param_1) + +{ + if (DAT_0051f5dc != '\0') { + return 0xffffffff; + } + DAT_0051f5dc = 1; + DAT_0051f5dd = param_1; + return (uint)param_1; +} + + + +/* @004d4888 file=? name=FUN_004d4888 */ + +undefined4 FUN_004d4888(void) + +{ + undefined4 uVar1; + HANDLE hConsoleInput; + BOOL BVar2; + DWORD DStack_24; + DWORD local_20; + _INPUT_RECORD local_1c; + + if (DAT_0051f5dc == '\0') { + hConsoleInput = GetStdHandle(0xfffffff6); + do { + BVar2 = GetNumberOfConsoleInputEvents(hConsoleInput,&local_20); + if (((BVar2 != 1) || (local_20 == 0)) || + (BVar2 = PeekConsoleInputA(hConsoleInput,&local_1c,1,&DStack_24), BVar2 != 1)) break; + if ((((byte)local_1c.EventType & 1) != 0) && (local_1c.Event.KeyEvent.bKeyDown != 0)) { + return 1; + } + BVar2 = ReadConsoleInputA(hConsoleInput,&local_1c,1,&DStack_24); + } while (BVar2 == 1); + uVar1 = 0; + } + else { + uVar1 = 1; + } + return uVar1; +} + + + +/* @004d48f8 file=? name=FUN_004d48f8 */ + +char * __cdecl FUN_004d48f8(char *param_1,char param_2,int param_3) + +{ + char *pcVar1; + undefined1 in_ZF; + + if (param_3 != 0) { + do { + pcVar1 = param_1; + if (param_3 == 0) break; + param_3 = param_3 + -1; + pcVar1 = param_1 + 1; + in_ZF = param_2 == *param_1; + param_1 = pcVar1; + } while (!(bool)in_ZF); + if ((bool)in_ZF) { + return pcVar1 + -1; + } + } + return (char *)0x0; +} + + + +/* @004d4918 file=? name=FUN_004d4918 */ + +undefined4 * __cdecl FUN_004d4918(undefined4 *param_1,undefined4 *param_2,uint param_3) + +{ + uint uVar1; + undefined4 *puVar2; + + puVar2 = param_1; + for (uVar1 = param_3 >> 2; uVar1 != 0; uVar1 = uVar1 - 1) { + *puVar2 = *param_2; + param_2 = param_2 + 1; + puVar2 = puVar2 + 1; + } + for (uVar1 = param_3 & 3; uVar1 != 0; uVar1 = uVar1 - 1) { + *(undefined1 *)puVar2 = *(undefined1 *)param_2; + param_2 = (undefined4 *)((int)param_2 + 1); + puVar2 = (undefined4 *)((int)puVar2 + 1); + } + return param_1; +} + + + +/* @004d493c file=? name=FUN_004d493c */ + +undefined4 * __cdecl FUN_004d493c(undefined4 *param_1,undefined4 *param_2,uint param_3) + +{ + uint uVar1; + undefined1 *puVar2; + undefined4 *puVar3; + undefined1 *puVar4; + undefined4 *puVar5; + + if (param_1 < param_2) { + puVar3 = param_1; + for (uVar1 = param_3 >> 2; uVar1 != 0; uVar1 = uVar1 - 1) { + *puVar3 = *param_2; + param_2 = param_2 + 1; + puVar3 = puVar3 + 1; + } + for (uVar1 = param_3 & 3; uVar1 != 0; uVar1 = uVar1 - 1) { + *(undefined1 *)puVar3 = *(undefined1 *)param_2; + param_2 = (undefined4 *)((int)param_2 + 1); + puVar3 = (undefined4 *)((int)puVar3 + 1); + } + } + else if (param_1 != param_2) { + puVar2 = (undefined1 *)((int)param_2 + (param_3 - 1)); + puVar4 = (undefined1 *)((int)param_1 + (param_3 - 1)); + for (uVar1 = param_3 & 3; uVar1 != 0; uVar1 = uVar1 - 1) { + *puVar4 = *puVar2; + puVar2 = puVar2 + -1; + puVar4 = puVar4 + -1; + } + puVar3 = (undefined4 *)(puVar2 + -3); + puVar5 = (undefined4 *)(puVar4 + -3); + for (uVar1 = param_3 >> 2; uVar1 != 0; uVar1 = uVar1 - 1) { + *puVar5 = *puVar3; + puVar3 = puVar3 + -1; + puVar5 = puVar5 + -1; + } + } + return param_1; +} + + + +/* @004d4988 file=? name=FUN_004d4988 */ + +undefined4 * __cdecl FUN_004d4988(undefined4 *param_1,undefined1 param_2,uint param_3) + +{ + uint uVar1; + undefined4 *puVar2; + + puVar2 = param_1; + for (uVar1 = param_3 >> 2; uVar1 != 0; uVar1 = uVar1 - 1) { + *puVar2 = CONCAT22(CONCAT11(param_2,param_2),CONCAT11(param_2,param_2)); + puVar2 = puVar2 + 1; + } + for (uVar1 = param_3 & 3; uVar1 != 0; uVar1 = uVar1 - 1) { + *(undefined1 *)puVar2 = param_2; + puVar2 = (undefined4 *)((int)puVar2 + 1); + } + return param_1; +} + + + +/* @004d49b8 file=? name=FUN_004d49b8 */ + +char * __cdecl FUN_004d49b8(char *param_1,char *param_2) + +{ + char cVar1; + int iVar2; + uint uVar3; + uint uVar4; + char *pcVar5; + char *pcVar6; + + iVar2 = -1; + pcVar5 = param_1; + do { + pcVar6 = pcVar5; + if (iVar2 == 0) break; + iVar2 = iVar2 + -1; + pcVar6 = pcVar5 + 1; + cVar1 = *pcVar5; + pcVar5 = pcVar6; + } while (cVar1 != '\0'); + uVar3 = 0xffffffff; + do { + pcVar5 = param_2; + if (uVar3 == 0) break; + uVar3 = uVar3 - 1; + pcVar5 = param_2 + 1; + cVar1 = *param_2; + param_2 = pcVar5; + } while (cVar1 != '\0'); + uVar3 = ~uVar3; + pcVar5 = pcVar5 + -uVar3; + pcVar6 = pcVar6 + -1; + for (uVar4 = uVar3 >> 2; uVar4 != 0; uVar4 = uVar4 - 1) { + *(undefined4 *)pcVar6 = *(undefined4 *)pcVar5; + pcVar5 = pcVar5 + 4; + pcVar6 = pcVar6 + 4; + } + for (uVar3 = uVar3 & 3; uVar3 != 0; uVar3 = uVar3 - 1) { + *pcVar6 = *pcVar5; + pcVar5 = pcVar5 + 1; + pcVar6 = pcVar6 + 1; + } + return param_1; +} + + + +/* @004d49f4 file=? name=FUN_004d49f4 */ + +char * __cdecl FUN_004d49f4(char *param_1,char param_2) + +{ + char *pcVar1; + uint uVar2; + bool bVar3; + + uVar2 = 0xffffffff; + bVar3 = true; + pcVar1 = param_1; + do { + if (uVar2 == 0) break; + uVar2 = uVar2 - 1; + bVar3 = *pcVar1 == '\0'; + pcVar1 = pcVar1 + 1; + } while (!bVar3); + uVar2 = ~uVar2; + do { + pcVar1 = param_1; + if (uVar2 == 0) break; + uVar2 = uVar2 - 1; + pcVar1 = param_1 + 1; + bVar3 = param_2 == *param_1; + param_1 = pcVar1; + } while (!bVar3); + if (bVar3) { + pcVar1 = pcVar1 + -1; + } + else { + pcVar1 = (char *)0x0; + } + return pcVar1; +} + + + +/* @004d4a1c file=? name=FUN_004d4a1c */ + +int __cdecl FUN_004d4a1c(char *param_1,char *param_2) + +{ + char cVar1; + char cVar2; + uint uVar3; + char *pcVar4; + char *pcVar5; + + uVar3 = 0xffffffff; + pcVar4 = param_2; + do { + if (uVar3 == 0) break; + uVar3 = uVar3 - 1; + cVar1 = *pcVar4; + pcVar4 = pcVar4 + 1; + } while (cVar1 != '\0'); + uVar3 = ~uVar3; + do { + pcVar4 = param_1; + pcVar5 = param_2; + if (uVar3 == 0) break; + uVar3 = uVar3 - 1; + pcVar5 = param_2 + 1; + pcVar4 = param_1 + 1; + cVar2 = *param_2; + cVar1 = *param_1; + param_1 = pcVar4; + param_2 = pcVar5; + } while (cVar1 == cVar2); + return (uint)(byte)pcVar4[-1] - (uint)(byte)pcVar5[-1]; +} + + + +/* @004d4a48 file=? name=FUN_004d4a48 */ + +char * __cdecl FUN_004d4a48(char *param_1,char *param_2) + +{ + char cVar1; + uint uVar2; + uint uVar3; + char *pcVar4; + + uVar2 = 0xffffffff; + pcVar4 = param_2; + do { + if (uVar2 == 0) break; + uVar2 = uVar2 - 1; + cVar1 = *pcVar4; + pcVar4 = pcVar4 + 1; + } while (cVar1 != '\0'); + pcVar4 = param_1; + for (uVar3 = ~uVar2 >> 2; uVar3 != 0; uVar3 = uVar3 - 1) { + *(undefined4 *)pcVar4 = *(undefined4 *)param_2; + param_2 = param_2 + 4; + pcVar4 = pcVar4 + 4; + } + for (uVar2 = ~uVar2 & 3; uVar2 != 0; uVar2 = uVar2 - 1) { + *pcVar4 = *param_2; + param_2 = param_2 + 1; + pcVar4 = pcVar4 + 1; + } + return param_1; +} + + + +/* @004d4a78 file=? name=FUN_004d4a78 */ + +int __cdecl FUN_004d4a78(char *param_1) + +{ + char cVar1; + uint uVar2; + + uVar2 = 0xffffffff; + do { + if (uVar2 == 0) break; + uVar2 = uVar2 - 1; + cVar1 = *param_1; + param_1 = param_1 + 1; + } while (cVar1 != '\0'); + return ~uVar2 - 1; +} + + + +/* @004d4a94 file=? name=FUN_004d4a94 */ + +char * __cdecl FUN_004d4a94(char *param_1,char *param_2,uint param_3) + +{ + char cVar1; + int iVar2; + uint uVar3; + uint uVar4; + uint uVar5; + char *pcVar6; + char *pcVar7; + + iVar2 = -1; + pcVar6 = param_1; + do { + pcVar7 = pcVar6; + if (iVar2 == 0) break; + iVar2 = iVar2 + -1; + pcVar7 = pcVar6 + 1; + cVar1 = *pcVar6; + pcVar6 = pcVar7; + } while (cVar1 != '\0'); + uVar3 = 0xffffffff; + do { + pcVar6 = param_2; + if (uVar3 == 0) break; + uVar3 = uVar3 - 1; + pcVar6 = param_2 + 1; + cVar1 = *param_2; + param_2 = pcVar6; + } while (cVar1 != '\0'); + uVar4 = ~uVar3 - 1; + if (param_3 < uVar4) { + uVar4 = param_3; + } + pcVar6 = pcVar6 + -~uVar3; + pcVar7 = pcVar7 + -1; + for (uVar5 = uVar4 >> 2; uVar5 != 0; uVar5 = uVar5 - 1) { + *(undefined4 *)pcVar7 = *(undefined4 *)pcVar6; + pcVar6 = pcVar6 + 4; + pcVar7 = pcVar7 + 4; + } + for (uVar4 = uVar4 & 3; uVar4 != 0; uVar4 = uVar4 - 1) { + *pcVar7 = *pcVar6; + pcVar6 = pcVar6 + 1; + pcVar7 = pcVar7 + 1; + } + *pcVar7 = '\0'; + return param_1; +} + + + +/* @004d4ae0 file=? name=FUN_004d4ae0 */ + +int __cdecl FUN_004d4ae0(char *param_1,char *param_2,int param_3) + +{ + char cVar1; + char cVar2; + int iVar3; + int iVar4; + char *pcVar5; + char *pcVar6; + + iVar3 = 0; + iVar4 = param_3; + pcVar5 = param_2; + if (param_3 != 0) { + do { + if (iVar4 == 0) break; + iVar4 = iVar4 + -1; + cVar1 = *pcVar5; + pcVar5 = pcVar5 + 1; + } while (cVar1 != '\0'); + iVar4 = param_3 - iVar4; + do { + pcVar5 = param_1; + pcVar6 = param_2; + if (iVar4 == 0) break; + iVar4 = iVar4 + -1; + pcVar6 = param_2 + 1; + pcVar5 = param_1 + 1; + cVar2 = *param_2; + cVar1 = *param_1; + param_1 = pcVar5; + param_2 = pcVar6; + } while (cVar1 == cVar2); + iVar3 = (uint)(byte)pcVar5[-1] - (uint)(byte)pcVar6[-1]; + } + return iVar3; +} + + + +/* @004d4b14 file=? name=FUN_004d4b14 */ + +int __cdecl FUN_004d4b14(byte *param_1,byte *param_2,int param_3) + +{ + if (param_3 == 0) { + return 0; + } + while( true ) { + if (param_3 == 0) { + return (uint)param_1[-1] - (uint)param_2[-1]; + } + if (*param_1 != *param_2) break; + param_1 = param_1 + 1; + param_2 = param_2 + 1; + param_3 = param_3 + -1; + } + return (uint)*param_1 - (uint)*param_2; +} + + + +/* @004d4b58 file=? name=FUN_004d4b58 */ + +int __cdecl FUN_004d4b58(char *param_1,char *param_2) + +{ + uint uVar1; + uint uVar2; + char cVar3; + + while( true ) { + uVar1 = FUN_004dc8c4((int)*param_1); + uVar2 = FUN_004dc8c4((int)*param_2); + cVar3 = (char)uVar1; + if ((cVar3 != (char)uVar2) || (cVar3 == '\0')) break; + param_1 = param_1 + 1; + param_2 = param_2 + 1; + } + return (int)cVar3 - (int)(char)uVar2; +} + + + +/* @004d4b9c file=? name=FUN_004d4b9c */ + +undefined4 * __cdecl FUN_004d4b9c(undefined4 *param_1,char *param_2,uint param_3) + +{ + uint uVar1; + + uVar1 = FUN_004d4a78(param_2); + if (param_3 < uVar1) { + FUN_004d4918(param_1,(undefined4 *)param_2,param_3); + } + else { + FUN_004d4918(param_1,(undefined4 *)param_2,uVar1); + FUN_004d4988((undefined4 *)(uVar1 + (int)param_1),0,param_3 - uVar1); + } + return param_1; +} + + + +/* @004d4bec file=? name=FUN_004d4bec */ + +int __cdecl FUN_004d4bec(char *param_1,char *param_2,int param_3) + +{ + uint uVar1; + uint uVar2; + int iVar3; + + while( true ) { + uVar1 = FUN_004dc8c4((int)*param_1); + uVar2 = FUN_004dc8c4((int)*param_2); + if (((uVar1 != uVar2) || (*param_1 == '\0')) || (param_3 == 0)) break; + param_3 = param_3 + -1; + param_1 = param_1 + 1; + param_2 = param_2 + 1; + } + if (param_3 == 0) { + iVar3 = 0; + } + else { + uVar1 = FUN_004dc8c4((int)*param_1); + uVar2 = FUN_004dc8c4((int)*param_2); + iVar3 = uVar1 - uVar2; + } + return iVar3; +} + + + +/* @004d4c4c file=? name=FUN_004d4c4c */ + +char * __cdecl FUN_004d4c4c(char *param_1,char param_2) + +{ + int iVar1; + char *pcVar2; + + iVar1 = FUN_004d4a78(param_1); + pcVar2 = param_1 + iVar1; + while( true ) { + if (param_2 == *pcVar2) { + return pcVar2; + } + if (param_1 == pcVar2) break; + pcVar2 = pcVar2 + -1; + } + return (char *)0x0; +} + + + +/* @004d4c78 file=? name=FUN_004d4c78 */ + +char * __cdecl FUN_004d4c78(char *param_1,char *param_2) + +{ + int iVar1; + int iVar2; + int iVar3; + int iVar4; + char *pcVar5; + int iVar6; + char *local_10; + + iVar1 = FUN_004d4a78(param_1); + iVar2 = FUN_004d4a78(param_2); + if (iVar2 != 0) { + if (iVar1 == 0) { + param_1 = (char *)0x0; + } + else { + iVar3 = 0; + while( true ) { + for (pcVar5 = param_1 + iVar3; (iVar3 < iVar1 && (*pcVar5 != *param_2)); pcVar5 = pcVar5 + 1 + ) { + iVar3 = iVar3 + 1; + } + if (iVar1 == iVar3) { + return (char *)0x0; + } + iVar6 = 0; + local_10 = param_2; + iVar4 = iVar3; + for (pcVar5 = param_1 + iVar3; + ((iVar4 < iVar1 && (iVar6 < iVar2)) && (*pcVar5 == *local_10)); pcVar5 = pcVar5 + 1) { + iVar4 = iVar4 + 1; + iVar6 = iVar6 + 1; + local_10 = local_10 + 1; + } + if (iVar6 == iVar2) { + return param_1 + iVar3; + } + if (iVar1 == iVar4) break; + iVar3 = iVar3 + 1; + } + param_1 = (char *)0x0; + } + } + return param_1; +} + + + +/* @004d4d1c file=? name=FUN_004d4d1c */ + +char * __cdecl FUN_004d4d1c(char *param_1,char *param_2) + +{ + char *pcVar1; + char *pcVar2; + + if (param_1 == (char *)0x0) { + param_1 = DAT_00524c54; + } + for (; pcVar1 = param_2, *param_1 != '\0'; param_1 = param_1 + 1) { + for (; (*pcVar1 != '\0' && (*pcVar1 != *param_1)); pcVar1 = pcVar1 + 1) { + } + if (*pcVar1 == '\0') break; + } + DAT_00524c54 = param_1; + if (*param_1 == '\0') { + pcVar2 = (char *)0x0; + } + else { + for (; pcVar1 = param_2, pcVar2 = param_1, *DAT_00524c54 != '\0'; + DAT_00524c54 = DAT_00524c54 + 1) { + for (; *pcVar1 != '\0'; pcVar1 = pcVar1 + 1) { + if (*pcVar1 == *DAT_00524c54) { + *DAT_00524c54 = '\0'; + DAT_00524c54 = DAT_00524c54 + 1; + return param_1; + } + } + } + } + return pcVar2; +} + + + +/* @004d4d84 file=? name=FUN_004d4d84 */ + +int __cdecl FUN_004d4d84(undefined4 *param_1,char *param_2) + +{ + int iVar1; + + iVar1 = FUN_004d4a78(param_2); + FUN_004d4918(param_1,(undefined4 *)param_2,iVar1 + 1); + return iVar1 + (int)param_1; +} + + + +/* @004d4db0 file=? name=FUN_004d4db0 */ + +void FUN_004d4db0(void) + +{ + code *UNRECOVERED_JUMPTABLE; + + /* WARNING: Could not recover jumptable at 0x004d4db4. Too many branches */ + /* WARNING: Treating indirect jump as call */ + (*UNRECOVERED_JUMPTABLE)(); + return; +} + + + +/* @004d4db7 file=? name=FUN_004d4db7 */ + +char * __cdecl FUN_004d4db7(int param_1) + +{ + if (param_1 == 0) { + return s__0051f6d8; + } + return (char *)(param_1 + (uint)*(ushort *)(param_1 + 6)); +} + + + +/* @004d4dd0 file=? name=FUN_004d4dd0 */ + +undefined4 __cdecl FUN_004d4dd0(int *param_1,int *param_2) + +{ + char cVar1; + char cVar2; + char *pcVar3; + char *pcVar4; + + if (param_2 == param_1) { + return 1; + } + if (((short)param_1[1] == (short)param_2[1]) && (*param_1 == *param_2)) { + if (((*(ushort *)(param_1 + 1) | *(ushort *)(param_2 + 1)) & 0x80) != 0) { + return 0; + } + pcVar3 = (char *)((int)param_1 + (uint)*(ushort *)((int)param_1 + 6)); + pcVar4 = (char *)((int)param_2 + (uint)*(ushort *)((int)param_2 + 6)); + do { + cVar1 = *pcVar3; + pcVar3 = pcVar3 + 1; + cVar2 = *pcVar4; + pcVar4 = pcVar4 + 1; + if (cVar2 != cVar1) { + return 0; + } + } while (cVar1 != '\0'); + return 1; + } + return 0; +} + + + +/* @004d4e36 file=? name=FUN_004d4e36 */ + +undefined4 __cdecl FUN_004d4e36(int param_1,int *param_2,undefined4 param_3,int param_4) + +{ + int *piVar1; + int iVar2; + int iVar3; + undefined4 *puVar4; + + puVar4 = (undefined4 *)((uint)*(ushort *)(param_1 + 0x12) + param_1); + do { + piVar1 = (int *)*puVar4; + if (piVar1 == (int *)0x0) { + puVar4 = (undefined4 *)((uint)*(ushort *)(param_1 + 0x10) + param_1); + while( true ) { + piVar1 = (int *)*puVar4; + if (piVar1 == (int *)0x0) { + return 0; + } + if ((param_4 == 0) || ((puVar4[2] & 3) != 3)) { + iVar2 = 0; + } + else { + iVar2 = 1; + } + iVar3 = FUN_004d4dd0(param_2,piVar1); + if ((iVar3 != 0) && (iVar2 != 0)) break; + if (((*(byte *)(piVar1 + 3) & 4) != 0) && + (iVar2 = FUN_004d4e36((int)piVar1,param_2,param_3,iVar2), iVar2 != 0)) { + return 1; + } + puVar4 = puVar4 + 3; + } + return 1; + } + if ((*(byte *)(puVar4 + 2) & 8) == 0) { + if ((param_4 == 0) || ((puVar4[2] & 3) != 3)) { + iVar2 = 0; + } + else { + iVar2 = 1; + } + iVar3 = FUN_004d4dd0(param_2,piVar1); + if ((iVar3 != 0) && (iVar2 != 0)) { + return 1; + } + if (((*(byte *)(piVar1 + 3) & 4) != 0) && + (iVar2 = FUN_004d4e36((int)piVar1,param_2,param_3,iVar2), iVar2 != 0)) { + return 1; + } + } + puVar4 = puVar4 + 3; + } while( true ); +} + + + +/* @004d4f30 file=? name=FUN_004d4f30 */ + +undefined4 __cdecl FUN_004d4f30(int *param_1,int *param_2,int param_3,undefined4 param_4) + +{ + uint uVar1; + ushort uVar2; + ushort uVar3; + int iVar4; + undefined4 uVar5; + uint uVar6; + + while( true ) { + while( true ) { + if (param_2 == param_1) { + return 1; + } + uVar2 = *(ushort *)(param_1 + 1); + uVar3 = *(ushort *)(param_2 + 1); + if ((uVar3 & uVar2 & 0x10) == 0) break; + uVar6 = uVar2 & 0x300; + uVar1 = uVar3 & 0x300; + if (uVar6 != uVar1) { + if ((param_3 != 0) || (uVar6 == uVar1)) { + return 0; + } + if ((byte)(~(byte)(uVar1 >> 8) & (byte)(uVar6 >> 8)) != 0) { + return 0; + } + } + param_3 = 1; + param_1 = (int *)param_1[2]; + param_2 = (int *)param_2[2]; + } + if ((uVar3 & uVar2 & 0x400) == 0) break; + if ((param_1[3] != param_2[3]) && ((param_3 != 0 || (param_1[3] != 0 || param_2[3] != 0)))) { + return 0; + } + param_3 = 1; + param_1 = (int *)param_1[2]; + param_2 = (int *)param_2[2]; + } + iVar4 = FUN_004d4dd0(param_1,param_2); + if (iVar4 != 0) { + return 1; + } + if ((((uVar2 & 2) != 0) && ((uVar3 & 1) != 0)) && ((*(byte *)(param_1 + 3) & 4) != 0)) { + uVar5 = FUN_004d4e36((int)param_1,param_2,param_4,1); + return uVar5; + } + return 0; +} + + + +/* @004d503f file=? name=FUN_004d503f */ + +int * __cdecl FUN_004d503f(uint param_1) + +{ + uint *puVar1; + int *piVar2; + int unaff_FS_OFFSET; + + piVar2 = FUN_004de55c(param_1); + if (piVar2 == (int *)0x0) { + if ((0x80 < param_1) || ((*(byte *)(*(int *)(*(int *)(unaff_FS_OFFSET + 4) + -8) + 4) & 1) != 0) + ) { + FUN_004dedb8(); + } + puVar1 = (uint *)(*(int *)(*(int *)(unaff_FS_OFFSET + 4) + -8) + 4); + *puVar1 = *puVar1 | 1; + piVar2 = *(int **)(*(int *)(*(int *)(unaff_FS_OFFSET + 4) + -8) + 0x1c); + } + return piVar2; +} + + + +/* @004d5089 file=? name=FUN_004d5089 */ + +void __cdecl FUN_004d5089(int *param_1) + +{ + uint *puVar1; + int unaff_FS_OFFSET; + + if (param_1 == *(int **)(*(int *)(*(int *)(unaff_FS_OFFSET + 4) + -8) + 0x1c)) { + puVar1 = (uint *)(*(int *)(*(int *)(unaff_FS_OFFSET + 4) + -8) + 4); + *puVar1 = *puVar1 & 0xfffffffe; + return; + } + FUN_004de420(param_1); + return; +} + + + +/* @004d50b6 file=? name=FUN_004d50b6 */ + +bool __cdecl FUN_004d50b6(int *param_1,undefined4 param_2,int *param_3,byte param_4) + +{ + ushort uVar1; + ushort uVar2; + int iVar3; + + iVar3 = FUN_004d4f30(param_1,param_3,0,param_2); + if (iVar3 != 0) { + return true; + } + uVar1 = *(ushort *)(param_1 + 1); + uVar2 = *(ushort *)(param_3 + 1); + if ((uVar2 & 0x20) != 0) { + iVar3 = FUN_004d4f30(param_1,(int *)param_3[2],1,param_2); + if (iVar3 != 0) { + return true; + } + uVar2 = *(ushort *)((int *)param_3[2] + 1); + if ((uVar2 & 0x10) == 0) { + return false; + } + iVar3 = FUN_004d4f30(param_1,(int *)param_3[2],0,param_2); + if (iVar3 != 0) { + return true; + } + } + if ((uVar2 & 0x10) != 0) { + if ((param_4 & 1) != 0) { + return true; + } + if ((uVar1 & 0x10) == 0) { + return false; + } + if ((uVar2 & 0x40) != 0) { + return (uVar1 & 0x300) == (uVar2 & 0x300); + } + } + return false; +} + + + +/* @004d5177 file=? name=FUN_004d5177 */ + +void __cdecl FUN_004d5177(undefined4 param_1,undefined4 param_2,undefined *param_3,uint param_4) + +{ + uint uVar1; + + if ((param_4 & 0x1000) == 0) { + uVar1 = param_4 & 7; + if (uVar1 == 1) { + (*(code *)param_3)(param_1,param_2); + return; + } + if (uVar1 == 2) { + (*(code *)param_3)(param_2,param_1); + return; + } + if (uVar1 == 3) { + (*(code *)param_3)(); + return; + } + if (uVar1 != 5) { + return; + } + (*(code *)param_3)(param_1,param_2); + } + else { + uVar1 = param_4 & 7; + if (uVar1 == 1) { + (*(code *)param_3)(param_1,0,param_2); + return; + } + if (uVar1 == 2) { + (*(code *)param_3)(param_1,param_2,0); + return; + } + if (uVar1 == 3) { + (*(code *)param_3)(); + return; + } + if (uVar1 == 5) { + (*(code *)param_3)(param_1,0,param_2); + return; + } + } + return; +} + + + +/* @004d51fb file=? name=FUN_004d51fb */ + +void __cdecl FUN_004d51fb(undefined4 param_1,undefined *param_2,uint param_3,int param_4) + +{ + undefined4 uVar1; + uint uVar2; + + uVar1 = 2; + if (param_4 == 0) { + uVar1 = 0; + } + uVar2 = param_3 & 7; + if (uVar2 == 1) { + (*(code *)param_2)(param_1,uVar1); + return; + } + if (uVar2 == 2) { + (*(code *)param_2)(param_1,uVar1); + return; + } + if (uVar2 != 3) { + if (uVar2 != 5) { + return; + } + (*(code *)param_2)(param_1,uVar1); + return; + } + (*(code *)param_2)(); + return; +} + + + +/* @004d5248 file=? name=FUN_004d5248 */ + +void __cdecl FUN_004d5248(undefined4 param_1,undefined *param_2,uint param_3) + +{ + uint uVar1; + + uVar1 = param_3 & 7; + if (uVar1 == 1) { + (*(code *)param_2)(param_1); + return; + } + if (uVar1 == 2) { + (*(code *)param_2)(param_1); + return; + } + if (uVar1 == 3) { + (*(code *)param_2)(); + return; + } + if (uVar1 != 5) { + return; + } + (*(code *)param_2)(param_1); + return; +} + + + +/* @004d5282 file=? name=FUN_004d5282 */ + +void __cdecl +FUN_004d5282(uint *param_1,undefined4 *param_2,int param_3,undefined *param_4,uint param_5, + int param_6,int param_7,int param_8,undefined4 param_9,int param_10) + +{ + ushort uVar1; + uint uVar2; + undefined4 *unaff_FS_OFFSET; + ULONG_PTR local_40; + undefined4 local_3c; + int *local_38; + undefined4 local_34; + int *local_30; + uint local_2c; + uint *local_28; + undefined4 local_24; + undefined2 local_14; + + FUN_004d66b8(); + local_28 = param_1; + *(uint *)(*(int *)(unaff_FS_OFFSET[1] + -8) + 0x18) = + (uint)*(ushort *)((int)param_1 + 6) + (int)param_1; + *(int *)(*(int *)(unaff_FS_OFFSET[1] + -8) + 0x14) = param_7; + *(int *)(*(int *)(unaff_FS_OFFSET[1] + -8) + 0x10) = param_8; + uVar2 = *param_1; + uVar1 = (ushort)param_1[1]; + if ((uVar1 & 2) == 0) { + local_2c = 0; + } + else { + local_2c = param_1[3]; + } + if ((uVar1 & 0x30) != 0) { + param_1 = (uint *)param_1[2]; + } + local_30 = FUN_004d503f(uVar2 + 0x46); + *local_30 = **(int **)(unaff_FS_OFFSET[1] + -8); + **(undefined4 **)(unaff_FS_OFFSET[1] + -8) = local_30; + local_30[1] = (int)local_28; + local_30[3] = param_6; + local_30[4] = uVar2; + *(ushort *)(local_30 + 6) = uVar1; + *(undefined2 *)((int)local_30 + 0x1a) = (undefined2)local_2c; + local_30[5] = (int)param_1; + local_30[2] = param_3; + local_30[10] = 0; + local_30[0xb] = 0; + local_30[7] = (int)FUN_004d5089; + local_30[0xd] = param_7; + local_30[0xe] = param_8; + local_30[8] = (int)param_4; + local_30[9] = param_5; + *(undefined1 *)((int)local_30 + 0x45) = 0; + *(undefined1 *)(local_30 + 0x11) = 1; + FUN_004d4918((undefined4 *)((int)local_30 + 0x46),param_2,uVar2); + if ((local_2c & 1) != 0) { + local_34 = *DAT_00524c68; + local_14 = 8; + FUN_004d5177((int)local_30 + 0x46,param_2,param_4,param_5); + local_14 = 0; + *DAT_00524c68 = local_34; + } + if ((param_10 == 0) && ((local_2c & 2) != 0)) { + local_14 = 0x14; + FUN_004d51fb(param_2,(undefined *)local_28[10],(uint)(ushort)local_28[0xb],1); + local_14 = 0; + } + local_40 = *(ULONG_PTR *)(*(int *)(unaff_FS_OFFSET[1] + -8) + 0x18); + local_3c = param_9; + local_38 = local_30; + RaiseException(0xeefface,1,3,&local_40); + *unaff_FS_OFFSET = local_24; + return; +} + + + +/* @004d5488 file=? name=FUN_004d5488 */ + +void __cdecl +FUN_004d5488(uint *param_1,undefined4 *param_2,int param_3,undefined *param_4,uint param_5, + int param_6,int param_7,int param_8) + +{ + undefined4 unaff_retaddr; + + FUN_004d5282(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8,unaff_retaddr,0); + return; +} + + + +/* @004d54b5 file=? name=FUN_004d54b5 */ + +void __cdecl FUN_004d54b5(int param_1,int param_2) + +{ + int iVar1; + undefined4 *puVar2; + int unaff_FS_OFFSET; + undefined4 unaff_retaddr; + + iVar1 = **(int **)(*(int *)(unaff_FS_OFFSET + 4) + -8); + if (iVar1 == 0) { + FUN_004d6723(); + } + if (*(char *)(iVar1 + 0x44) == '\0') { + puVar2 = *(undefined4 **)(iVar1 + 0x40); + } + else { + puVar2 = (undefined4 *)(iVar1 + 0x46); + } + FUN_004d5282(*(uint **)(iVar1 + 4),puVar2,*(int *)(iVar1 + 8),*(undefined **)(iVar1 + 0x20), + *(uint *)(iVar1 + 0x24),*(int *)(iVar1 + 0xc),param_1,param_2,unaff_retaddr,1); + return; +} + + + +/* @004d5506 file=? name=FUN_004d5506 */ + +void __cdecl FUN_004d5506(undefined4 param_1,undefined4 *param_2) + +{ + undefined4 local_54; + undefined4 local_50; + undefined4 local_44; + + if (param_2 == (undefined4 *)0x0) { + local_54 = 0x26; + local_50 = 2; + local_44 = 0; + param_2 = &local_54; + } + param_2[1] = param_2[1] | 2; + FUN_004d69ea(param_2,(PEXCEPTION_RECORD)param_2); + return; +} + + + +/* @004d5545 file=? name=FUN_004d5545 */ + +void __cdecl FUN_004d5545(undefined4 param_1,undefined *param_2,uint param_3) + +{ + undefined4 *unaff_FS_OFFSET; + undefined4 local_24; + + FUN_004d66b8(); + FUN_004d51fb(param_1,param_2,param_3,1); + *unaff_FS_OFFSET = local_24; + return; +} + + + +/* @004d5593 file=? name=FUN_004d5593 */ + +void __cdecl FUN_004d5593(int param_1) + +{ + undefined4 uVar1; + int iVar2; + + if (*(char *)(param_1 + 0x44) != '\0') { + if ((*(byte *)(param_1 + 0x1a) & 2) != 0) { + uVar1 = *DAT_00524c68; + FUN_004d5545(param_1 + 0x46,*(undefined **)(*(int *)(param_1 + 4) + 0x28), + (uint)*(ushort *)(*(int *)(param_1 + 4) + 0x2c)); + *DAT_00524c68 = uVar1; + } + *(undefined1 *)(param_1 + 0x44) = 0; + } + if (*(char *)(param_1 + 0x45) != '\0') { + iVar2 = *(int *)(param_1 + 0x3c); + if (((*(byte *)(iVar2 + 4) & 2) != 0) && ((*(byte *)(iVar2 + 0xc) & 2) != 0)) { + FUN_004d5545(*(undefined4 *)(param_1 + 0x40),*(undefined **)(iVar2 + 0x28), + (uint)*(ushort *)(iVar2 + 0x2c)); + } + *(undefined1 *)(param_1 + 0x45) = 0; + } + return; +} + + + +/* @004d5603 file=? name=FUN_004d5603 */ + +void FUN_004d5603(void) + +{ + undefined4 *puVar1; + int iVar2; + int unaff_FS_OFFSET; + + puVar1 = (undefined4 *)**(int **)(*(int *)(unaff_FS_OFFSET + 4) + -8); + **(undefined4 **)(*(int *)(unaff_FS_OFFSET + 4) + -8) = *puVar1; + iVar2 = puVar1[10]; + *(undefined2 *)(iVar2 + 0x10) = + *(undefined2 *)(*(int *)(iVar2 + 8) + (uint)*(ushort *)(iVar2 + 0x10)); + FUN_004d5593((int)puVar1); + (*(code *)puVar1[7])(puVar1); + return; +} + + + +/* @004d563c file=? name=FUN_004d563c */ + +undefined4 __cdecl FUN_004d563c(undefined4 *param_1,int param_2,int *param_3,int *param_4) + +{ + int *piVar1; + int iVar2; + undefined4 *local_8; + + while( true ) { + piVar1 = (int *)*param_1; + if (piVar1 == (int *)0x0) { + return 0; + } + local_8 = (undefined4 *)(*param_4 + param_1[1]); + if (param_2 != 0) { + local_8 = (undefined4 *)*local_8; + } + iVar2 = FUN_004d4dd0(piVar1,param_3); + if (iVar2 != 0) break; + if ((((*(byte *)(piVar1 + 1) & 2) != 0) && + ((undefined4 *)((int)piVar1 + (uint)*(ushort *)(piVar1 + 4)) != (undefined4 *)0x0)) && + (iVar2 = FUN_004d563c((undefined4 *)((int)piVar1 + (uint)*(ushort *)(piVar1 + 4)),0,param_3, + (int *)&local_8), iVar2 != 0)) { + *param_4 = (int)local_8; + return 1; + } + param_1 = param_1 + 3; + } + *param_4 = (int)local_8; + return 1; +} + + + +/* @004d56c2 file=? name=FUN_004d56c2 */ + +int __cdecl FUN_004d56c2(int param_1,int param_2,int *param_3) + +{ + int *piVar1; + int iVar2; + int iVar3; + + piVar1 = param_3; + iVar3 = param_2; + if (((param_1 != 0) && + (iVar2 = FUN_004d563c((undefined4 *)((uint)*(ushort *)(param_2 + 0x10) + param_2),0,param_3, + ¶m_1), iVar2 == 0)) && + (iVar3 = FUN_004d563c((undefined4 *)((uint)*(ushort *)(iVar3 + 0x12) + iVar3),1,piVar1,¶m_1 + ), iVar3 == 0)) { + param_1 = 0; + } + return param_1; +} + + + +/* @004d571e file=? name=FUN_004d571e */ + +void __cdecl FUN_004d571e(int param_1,undefined4 param_2,int param_3,int *param_4,int param_5) + +{ + ushort uVar1; + uint uVar2; + undefined4 *puVar3; + int iVar4; + ushort uVar5; + uint *puVar6; + bool bVar7; + bool bVar8; + undefined4 *local_8; + + puVar6 = *(uint **)(param_1 + 4); + *(uint **)(param_3 + 0x3c) = puVar6; + if ((puVar6 != (uint *)0x0) && ((*(byte *)(param_1 + 8) & 0x80) == 0)) { + bVar7 = (*(uint *)(param_1 + 8) & 1) == 0; + local_8 = (undefined4 *)(param_3 + 0x46); + *(undefined1 *)(param_3 + 0x45) = 1; + *(int *)(param_3 + 0x40) = *param_4 + param_5; + uVar2 = *puVar6; + uVar1 = (ushort)puVar6[1]; + uVar5 = uVar1; + if ((uVar1 & 0x30) != 0) { + puVar6 = (uint *)puVar6[2]; + uVar5 = (ushort)puVar6[1]; + } + if (((uVar1 & 0x10) == 0) || ((*(byte *)(param_3 + 0xc) & 1) == 0)) { + if (((uVar5 & 1) == 0) || ((uVar1 & 0x30) == 0)) { + if ((*(byte *)(param_3 + 0x18) & 1) == 0) { + if ((uVar1 & 0x20) == 0) { + FUN_004d4918(*(undefined4 **)(param_3 + 0x40),local_8,uVar2); + } + else { + FUN_004d4918(*(undefined4 **)(param_3 + 0x40),&local_8,uVar2); + bVar7 = true; + } + } + else { + iVar4 = FUN_004d4dd0(*(int **)(param_3 + 0x14),(int *)puVar6); + if (iVar4 == 0) { + local_8 = (undefined4 *) + FUN_004d56c2((int)local_8,*(int *)(param_3 + 0x14),(int *)puVar6); + } + bVar7 = iVar4 == 0 || bVar7; + if ((puVar6[3] & 1) == 0) { + FUN_004d4918(*(undefined4 **)(param_3 + 0x40),local_8,uVar2); + } + else { + FUN_004d5177(*(undefined4 *)(param_3 + 0x40),local_8,*(undefined **)(param_1 + 0xc), + *(uint *)(param_1 + 0x10)); + bVar7 = true; + } + } + } + else { + bVar8 = (uVar1 & 0x20) == 0; + if (bVar8) { + local_8 = (undefined4 *)*local_8; + } + bVar7 = !bVar8 || bVar7; + iVar4 = FUN_004d4dd0(*(int **)(param_3 + 0x14),(int *)puVar6); + puVar3 = local_8; + if ((iVar4 == 0) && + (local_8 = (undefined4 *) + FUN_004d56c2((int)local_8,*(int *)(param_3 + 0x14),(int *)puVar6), + local_8 != puVar3)) { + bVar7 = true; + } + FUN_004d4918(*(undefined4 **)(param_3 + 0x40),&local_8,uVar2); + } + } + else { + FUN_004d4988(*(undefined4 **)(param_3 + 0x40),0,uVar2); + bVar7 = true; + } + if (!bVar7) { + if ((puVar6[3] & 2) != 0) { + FUN_004d5545(local_8,(undefined *)puVar6[10],(uint)(ushort)puVar6[0xb]); + } + *(undefined1 *)(param_3 + 0x44) = 0; + } + } + return; +} + + + +/* @004d58d2 file=? name=FUN_004d58d2 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004d58d2(int param_1) + +{ + int *piVar1; + int *piVar2; + undefined4 uVar3; + uint uVar4; + uint uVar5; + undefined1 *puVar6; + uint uVar7; + int unaff_FS_OFFSET; + + puVar6 = &stack0xfffffffc; + uVar7 = (uint)*(ushort *)(param_1 + 0x10); + do { + while( true ) { + do { + while( true ) { + uVar5 = uVar7; + if ((uVar5 == 0) || (uVar5 == *(uint *)(puVar6 + 0xc))) { + return; + } + uVar7 = (uint)*(ushort *)(*(int *)(puVar6 + -4) + uVar5); + uVar4 = (uint)*(ushort *)(*(int *)(puVar6 + -4) + uVar5 + 2); + *(ushort *)(*(int *)(puVar6 + 8) + 0x10) = *(ushort *)(*(int *)(puVar6 + -4) + uVar5); + if (uVar4 != 0) break; + _DAT_00524c58 = *(undefined4 *)(*(int *)(puVar6 + -4) + 4 + uVar5 + 4); + *(undefined2 *)(*(int *)(puVar6 + 8) + 0x12) = 1; + FUN_004d69ff(); + *(undefined2 *)(*(int *)(puVar6 + 8) + 0x12) = 0; + } + } while (uVar4 - 1 < 3); + if (uVar4 == 4) break; + if (uVar4 - 1 == 4) { + uVar3 = FUN_004d5fe6(*(int **)(*(int *)(puVar6 + -4) + uVar5 + 8), + *(int *)(*(int *)(puVar6 + -4) + uVar5 + 4) + *(int *)(puVar6 + -0xc), + *(int *)(puVar6 + 8),*(int *)(puVar6 + -8)); + *(undefined4 *)(puVar6 + -0xc) = uVar3; + } + } + piVar1 = *(int **)(*(int *)(unaff_FS_OFFSET + 4) + -8); + do { + piVar2 = piVar1; + piVar1 = (int *)*piVar2; + if (piVar1 == (int *)0x0) break; + } while ((piVar1[10] != *(int *)(puVar6 + 8)) || (uVar5 != piVar1[0xc])); + *piVar2 = *piVar1; + FUN_004d5593((int)piVar1); + (*(code *)piVar1[7])(piVar1); + } while( true ); +} + + + +/* @004d59e0 file=? name=FUN_004d59e0 */ + +void __cdecl FUN_004d59e0(int param_1) + +{ + FUN_004d58d2(param_1); + return; +} + + + +/* @004d59f3 file=? name=FUN_004d59f3 */ + +void __cdecl FUN_004d59f3(undefined4 *param_1) + +{ + undefined4 *unaff_FS_OFFSET; + + FUN_004d58d2((int)param_1); + *unaff_FS_OFFSET = *param_1; + return; +} + + + +/* @004d5a10 file=? name=FUN_004d5a10 */ + +int * __cdecl FUN_004d5a10(int param_1,int param_2) + +{ + bool bVar1; + undefined3 extraout_var; + int *piVar2; + + piVar2 = (int *)(param_1 + 8); + while( true ) { + if (*piVar2 == 0) { + return (int *)0x0; + } + if ((int *)piVar2[1] == (int *)0x0) break; + bVar1 = FUN_004d50b6(*(int **)(param_2 + 4),*(undefined4 *)(param_2 + 8),(int *)piVar2[1], + (byte)*(undefined4 *)(param_2 + 0xc)); + if (CONCAT31(extraout_var,bVar1) != 0) { + return piVar2; + } + piVar2 = piVar2 + 5; + } + return piVar2; +} + + + +/* @004d5a65 file=? name=FUN_004d5a65 */ + +/* WARNING (jumptable): Unable to track spacebase fully for stack */ +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 FUN_004d5a65(void) + +{ + undefined4 uVar1; + bool bVar2; + undefined3 extraout_var; + int *piVar3; + int *piVar4; + uint uVar5; + int unaff_EBP; + int iVar6; + undefined4 *unaff_FS_OFFSET; + + *(undefined4 *)(unaff_EBP + -4) = *(undefined4 *)(unaff_EBP + 8); + *(undefined4 *)(unaff_EBP + -8) = *(undefined4 *)(unaff_EBP + 0xc); + *(undefined4 *)(unaff_EBP + -0xc) = *(undefined4 *)(unaff_EBP + 0x10); + *(undefined4 *)(unaff_EBP + -0x10) = *(undefined4 *)(*(int *)(unaff_EBP + -4) + 0x1c); + piVar4 = *(int **)(*(int *)(unaff_EBP + -8) + 8); + *(int *)(unaff_EBP + -0x18) = *(int *)(unaff_EBP + -8) - piVar4[1]; + *(undefined4 *)(unaff_EBP + -0x1c) = *(undefined4 *)(*(int *)(unaff_EBP + -8) + 0xc); + if ((*(byte *)(*(int *)(unaff_EBP + -4) + 4) & 6) == 0) { + uVar5 = (uint)*(ushort *)(*(int *)(unaff_EBP + -8) + 0x10); + while (uVar5 != 0) { + *(uint *)(unaff_EBP + -0x14) = (uint)*(ushort *)((int)piVar4 + uVar5); + *(uint *)(unaff_EBP + -0x20) = (uint)*(ushort *)((int)piVar4 + uVar5 + 2); + iVar6 = uVar5 + 4; + switch(*(undefined4 *)(unaff_EBP + -0x20)) { + case 1: + if (**(int **)(unaff_EBP + -4) != 0xeefface) { + *(undefined4 *)(unaff_EBP + -0x34) = *(undefined4 *)(unaff_EBP + -4); + *(undefined4 *)(unaff_EBP + -0x30) = *(undefined4 *)(unaff_EBP + -0xc); + *(undefined4 *)(*(int *)(unaff_EBP + -8) + 0x14) = **(undefined4 **)(unaff_EBP + -4); + *(int *)(*(int *)(unaff_EBP + -8) + 0x18) = unaff_EBP + -0x34; + _DAT_00524c5c = *(undefined4 *)((int)piVar4 + iVar6); + iVar6 = FUN_004d69ff(); +LAB_004d5c8d: + if (iVar6 < 0) { + if ((*(byte *)(*(int *)(unaff_EBP + -4) + 4) & 1) != 0) { + *(undefined2 *)(*(int *)(unaff_EBP + -8) + 0x10) = *(undefined2 *)(unaff_EBP + -0x14); + } + return 0; + } + if (iVar6 != 0) { + *(undefined4 *)(*(int *)(unaff_EBP + -8) + 0x18) = 0; + *(undefined4 *)(unaff_EBP + -0x2c) = *(undefined4 *)(unaff_EBP + -0x14); +LAB_004d5bb9: + FUN_004d5506(*(undefined4 *)(unaff_EBP + -8),*(undefined4 **)(unaff_EBP + -4)); + FUN_004d58d2(*(int *)(unaff_EBP + -8)); + *(undefined2 *)(*(int *)(unaff_EBP + -8) + 0x10) = *(undefined2 *)(unaff_EBP + -0x2c); + if (*(int *)(unaff_EBP + -0x20) == 3) { + FUN_004d571e(*(int *)(unaff_EBP + -0x24),*(undefined4 *)(unaff_EBP + -8), + *(int *)(unaff_EBP + -0x10),*(int **)(unaff_EBP + -0x28), + *(int *)(unaff_EBP + -0x18)); + } + FUN_004d4db0(); + } + } + break; + case 2: + if (**(int **)(unaff_EBP + -4) != 0xeefface) { + *(undefined4 *)(*(int *)(unaff_EBP + -8) + 0x14) = **(undefined4 **)(unaff_EBP + -4); + iVar6 = *(int *)((int)piVar4 + iVar6); + goto LAB_004d5c8d; + } + break; + case 3: + if (**(int **)(unaff_EBP + -4) == 0xeefface) { + *(undefined4 *)(unaff_EBP + -0x28) = *(undefined4 *)((int)piVar4 + iVar6); + piVar3 = FUN_004d5a10(*(int *)(unaff_EBP + -0x28),*(int *)(unaff_EBP + -0x10)); + *(int **)(unaff_EBP + -0x24) = piVar3; + if (*(int *)(unaff_EBP + -0x24) != 0) { + *(undefined4 *)(*(int *)(unaff_EBP + -0x10) + 0x28) = *(undefined4 *)(unaff_EBP + -8); + *(undefined4 *)(*(int *)(unaff_EBP + -0x10) + 0x2c) = *(undefined4 *)(unaff_EBP + -0x24) + ; + *(uint *)(*(int *)(unaff_EBP + -0x10) + 0x30) = uVar5 + 8; + *(uint *)(unaff_EBP + -0x2c) = uVar5 + 8; + goto LAB_004d5bb9; + } + } + } + uVar5 = *(uint *)(unaff_EBP + -0x14); + } + } + else { + FUN_004d58d2(*(int *)(unaff_EBP + -8)); + if ((**(int **)(unaff_EBP + -4) == 0xeefface) && (piVar4 = (int *)*piVar4, piVar4 != (int *)0x0) + ) { + for (; *piVar4 != 0; piVar4 = piVar4 + 1) { + bVar2 = FUN_004d50b6(*(int **)(*(int *)(unaff_EBP + -0x10) + 4), + *(undefined4 *)(*(int *)(unaff_EBP + -0x10) + 8),(int *)*piVar4, + (byte)*(undefined4 *)(*(int *)(unaff_EBP + -0x10) + 0xc)); + if (CONCAT31(extraout_var,bVar2) != 0) { + return 1; + } + } + uVar1 = *unaff_FS_OFFSET; + *unaff_FS_OFFSET = **(undefined4 **)(unaff_EBP + -8); + FUN_004d679c(); + *unaff_FS_OFFSET = uVar1; + } + } + return 1; +} + + + +/* @004d5cdf file=? name=FUN_004d5cdf */ + +void __cdecl FUN_004d5cdf(undefined4 param_1,int param_2,int param_3) + +{ + undefined4 *unaff_FS_OFFSET; + undefined4 local_24; + + FUN_004d66b8(); + FUN_004d51fb(param_1,*(undefined **)(param_2 + 0x28),(uint)*(ushort *)(param_2 + 0x2c),param_3); + *unaff_FS_OFFSET = local_24; + return; +} + + + +/* @004d5d4b file=? name=FUN_004d5d4b */ + +void __cdecl +FUN_004d5d4b(int param_1,int *param_2,int *param_3,uint param_4,int param_5,undefined4 param_6) + +{ + undefined4 *puVar1; + int *piVar2; + + while (piVar2 = param_2 + -3, param_3 <= piVar2) { + puVar1 = (undefined4 *)(param_2[-2] + param_1); + if (param_5 != 0) { + puVar1 = (undefined4 *)*puVar1; + } + param_2 = piVar2; + if ((*(byte *)(*piVar2 + 0xc) & 2) != 0) { + FUN_004d5d90((int)puVar1,*piVar2,param_4,0,param_6); + param_4 = 0; + } + } + return; +} + + + +/* @004d5d90 file=? name=FUN_004d5d90 */ + +void __cdecl FUN_004d5d90(int param_1,int param_2,uint param_3,int param_4,undefined4 param_5) + +{ + int *piVar1; + int iVar2; + uint uVar3; + int *piVar4; + int *piVar5; + int *piVar6; + int *piVar7; + uint local_18; + int *local_10; + + if (param_4 == 0) { + uVar3 = *(uint *)(param_2 + 0x24); + } + else { + uVar3 = *(uint *)(param_2 + 0x20); + } + if ((param_3 == 0) || (uVar3 <= param_3)) { + FUN_004d5cdf(param_1,param_2,param_4); + } + else { + piVar1 = (int *)((uint)*(ushort *)(param_2 + 0x12) + param_2); + local_10 = piVar1; + if (param_4 != 0) { + for (; iVar2 = *local_10, iVar2 != 0; local_10 = local_10 + 3) { + if ((*(byte *)(iVar2 + 0xc) & 2) != 0) { + if (param_3 <= *(uint *)(iVar2 + 0x24)) { + FUN_004d5d4b(param_1,local_10 + 3,piVar1,param_3,1,param_5); + return; + } + param_3 = param_3 - *(uint *)(iVar2 + 0x24); + } + } + } + piVar6 = (int *)((uint)*(ushort *)(param_2 + 0x10) + param_2); + for (piVar7 = piVar6; iVar2 = *piVar7, iVar2 != 0; piVar7 = piVar7 + 3) { + if ((*(byte *)(iVar2 + 0xc) & 2) != 0) { + if (param_3 <= *(uint *)(iVar2 + 0x24)) { + FUN_004d5d4b(param_1,piVar7 + 3,piVar6,param_3,0,param_5); + if (param_4 == 0) { + return; + } + FUN_004d5d4b(param_1,local_10,piVar1,0,1,param_5); + return; + } + param_3 = param_3 - *(uint *)(iVar2 + 0x24); + } + } + piVar4 = (int *)((uint)*(ushort *)(param_2 + 0x2e) + param_2); + piVar5 = piVar4; + while( true ) { + iVar2 = *piVar5; + local_18 = 1; + if ((*(byte *)(iVar2 + 5) & 4) != 0) { + local_18 = *(uint *)(iVar2 + 0xc); + iVar2 = *(int *)(iVar2 + 8); + } + uVar3 = *(int *)(iVar2 + 0x20) * local_18; + if (param_3 <= uVar3) break; + param_3 = param_3 - uVar3; + piVar5 = piVar5 + 2; + } + do { + if (local_18 < 2) { + FUN_004d5d90(param_1 + piVar5[1],*piVar5,param_3,1,param_5); + } + else { + FUN_004d5f36(param_1 + piVar5[1],*piVar5,param_3,param_5); + } + param_3 = 0; + piVar5 = piVar5 + -2; + } while (piVar4 <= piVar5); + FUN_004d5d4b(param_1,piVar7,piVar6,0,0,param_5); + if (param_4 != 0) { + FUN_004d5d4b(param_1,local_10,piVar1,0,1,param_5); + } + } + return; +} + + + +/* @004d5f36 file=? name=FUN_004d5f36 */ + +void __cdecl FUN_004d5f36(int param_1,int param_2,uint param_3,undefined4 param_4) + +{ + int *piVar1; + uint uVar2; + uint uVar3; + int iVar4; + uint local_8; + + piVar1 = *(int **)(param_2 + 8); + uVar2 = piVar1[8]; + if (param_3 == 0) { + param_3 = uVar2 * *(int *)(param_2 + 0xc); + } + local_8 = param_3 / uVar2; + uVar3 = param_3 - local_8 * uVar2; + iVar4 = param_1 + local_8 * *piVar1; + if (uVar3 != 0) { + FUN_004d5d90(iVar4,(int)piVar1,uVar3,1,param_4); + } + while (local_8 != 0) { + iVar4 = iVar4 - *piVar1; + FUN_004d5d90(iVar4,(int)piVar1,uVar2,1,param_4); + local_8 = local_8 - 1; + } + return; +} + + + +/* @004d5fa8 file=? name=FUN_004d5fa8 */ + +int __cdecl FUN_004d5fa8(int param_1,int *param_2) + +{ + int iVar1; + int iVar2; + + iVar1 = *param_2; + if ((*(uint *)(iVar1 + 0xc) & 0x50) != 0x50) { + return param_1; + } + if (*(int *)(iVar1 + 8) == -1) { + return param_1; + } + iVar1 = *(int *)(*(int *)(iVar1 + 8) + param_1); + iVar2 = *(int *)(iVar1 + -8); + *param_2 = *(int *)((iVar1 - *(int *)(iVar1 + -4)) + -0xc); + return param_1 - iVar2; +} + + + +/* @004d5fe6 file=? name=FUN_004d5fe6 */ + +undefined4 __cdecl FUN_004d5fe6(int *param_1,int param_2,int param_3,int param_4) + +{ + bool bVar1; + undefined4 uVar2; + int iVar3; + uint uVar4; + int *piVar5; + int iVar6; + uint uVar7; + int *local_1c; + int *local_18; + int local_14; + int *local_10; + int local_c; + int local_8; + + local_8 = 0; + if (param_1 == (int *)0x0) { + uVar2 = 0; + } + else { + uVar7 = (*DAT_00524c68 - *(int *)(param_3 + 0x1c)) - param_2; + if ((*(byte *)(param_1 + 1) & 0x20) != 0) { + uVar7 = *(uint *)(*(int *)(*param_1 + 8) + 0x20); + } + if ((*(byte *)((int)param_1 + 5) & 1) == 0) { + piVar5 = param_1; + if ((int)uVar7 < 1) { + if ((param_1[1] & 3U) != 3) { + return 0; + } + local_8 = 1; + } + else { + for (; *piVar5 != 0; piVar5 = piVar5 + 3) { + local_c = *piVar5; + iVar6 = 1; + if (((((*(byte *)(local_c + 4) & 0x10) != 0) && + (local_c = *(int *)(local_c + 8), (*(byte *)(local_c + 4) & 2) != 0)) && + ((*(byte *)(local_c + 0xc) & 0x20) != 0)) && ((*(byte *)(piVar5 + 1) & 8) != 0)) { + if ((*(byte *)(piVar5 + 1) & 4) == 0) { + local_10 = (int *)piVar5[2]; + } + else { + local_10 = (int *)(param_4 + piVar5[2]); + } + local_10 = (int *)*local_10; + if ((*(byte *)(piVar5 + 1) & 0x40) != 0) { + local_10 = (int *)((int)local_10 + 4); + } + local_10 = (int *)FUN_004d5fa8((int)local_10,&local_c); + } + iVar3 = local_c; + if ((*(byte *)(local_c + 5) & 4) != 0) { + iVar6 = *(int *)(local_c + 0xc); + iVar3 = *(int *)(local_c + 8); + } + uVar4 = *(int *)(iVar3 + 0x20) * iVar6; + if (uVar7 <= uVar4) goto LAB_004d6109; + uVar7 = uVar7 - uVar4; + } + piVar5 = piVar5 + -3; + } +LAB_004d6109: + do { + local_14 = *piVar5; + uVar4 = piVar5[1]; + if ((uVar4 & 4) == 0) { + local_18 = (int *)piVar5[2]; + } + else { + local_18 = (int *)(param_4 + piVar5[2]); + } + if ((uVar4 & 0x11) != 0) { + local_14 = *(int *)(local_14 + 8); + local_1c = (int *)*local_18; + local_18 = local_1c; + if ((uVar4 & 0x48) == 0x40) { + local_18 = local_1c + 1; + } + if ((((*(byte *)(local_14 + 4) & 2) != 0) && ((*(byte *)(local_14 + 0xc) & 0x20) != 0)) && + ((uVar4 & 8) != 0)) { + local_18 = (int *)FUN_004d5fa8((int)local_18,&local_14); + } + } + if (local_8 == 0) { + if ((*(byte *)(local_14 + 5) & 4) == 0) { + FUN_004d5d90((int)local_18,local_14,uVar7,1,param_4); + } + else { + FUN_004d5f36((int)local_18,local_14,uVar7,param_4); + } + } + if ((uVar4 & 3) == 3) { + if ((uVar4 & 0x48) == 0x48) { + local_1c = local_1c + -1; + } + if ((*(byte *)(local_14 + 5) & 4) == 0) { + if (*(int *)(local_14 + 0x14) == 0) { + FUN_004022d0(local_1c); + } + else { + FUN_004d5248(local_1c,*(undefined **)(local_14 + 0x14), + (uint)*(ushort *)(local_14 + 0x18)); + } + } + else { + local_14 = *(int *)(local_14 + 8); + if (*(int *)(local_14 + 0x1c) == 0) { + FUN_004022e8(local_1c); + } + else { + FUN_004d5248(local_1c,*(undefined **)(local_14 + 0x1c), + (uint)*(ushort *)(local_14 + 0x1a)); + } + } + } + uVar7 = 0; + bVar1 = param_1 < piVar5; + piVar5 = piVar5 + -3; + } while (bVar1); + uVar2 = 0; + } + else { + uVar2 = *(undefined4 *)(*param_1 + 0x24); + } + } + return uVar2; +} + + + +/* @004d6257 file=? name=FUN_004d6257 */ + +uint __cdecl FUN_004d6257(int param_1) + +{ + uint uVar1; + int iVar2; + + if (param_1 == -1) { + uVar1 = 0xffffffff; + } + else { + iVar2 = FUN_004d4b14((byte *)(*(int *)(param_1 + 4) + -8),(byte *)s___BCCxh1_0051f6e1,8); + if (iVar2 == 0) { + uVar1 = (uint)*(ushort *)(param_1 + 0x10); + } + else { + uVar1 = 0xffffffff; + } + } + return uVar1; +} + + + +/* @004d62b7 file=? name=FUN_004d62b7 */ + +undefined4 * __cdecl FUN_004d62b7(undefined4 *param_1) + +{ + undefined4 local_8; + + *param_1 = &PTR_FUN_0051f6f8; + local_8 = 0; + FUN_004d5488((uint *)&DAT_004d6621,&local_8,0,(undefined *)0x0,0,0,0,0); + return param_1; +} + + + +/* @004d62ed file=? name=FUN_004d62ed */ + +undefined4 __cdecl FUN_004d62ed(undefined4 param_1) + +{ + return param_1; +} + + + +/* @004d62f5 file=? name=FUN_004d62f5 */ + +void __cdecl FUN_004d62f5(int *param_1,byte param_2) + +{ + if ((param_1 != (int *)0x0) && (*param_1 = (int)&PTR_FUN_0051f6f8, (param_2 & 1) != 0)) { + FUN_004022d0(param_1); + } + return; +} + + + +/* @004d6314 file=? name=FUN_004d6314 */ + +void __cdecl FUN_004d6314(int param_1,int param_2) + +{ + FUN_004d4dd0(*(int **)(param_1 + 4),*(int **)(param_2 + 4)); + return; +} + + + +/* @004d632d file=? name=FUN_004d632d */ + +bool __cdecl FUN_004d632d(int param_1,int param_2) + +{ + int iVar1; + + iVar1 = FUN_004d6314(param_1,param_2); + return iVar1 == 0; +} + + + +/* @004d634a file=? name=FUN_004d634a */ + +bool __cdecl FUN_004d634a(int param_1,int param_2) + +{ + int iVar1; + bool bVar2; + + if (*(int *)(param_1 + 4) == 0) { + bVar2 = false; + } + else if (*(int *)(param_2 + 4) == 0) { + bVar2 = true; + } + else { + iVar1 = FUN_004d4a1c((char *)((uint)*(ushort *)(*(int *)(param_1 + 4) + 6) + + *(int *)(param_1 + 4)), + (char *)((uint)*(ushort *)(*(int *)(param_2 + 4) + 6) + + *(int *)(param_2 + 4))); + bVar2 = iVar1 < 0; + } + return bVar2; +} + + + +/* @004d6396 file=? name=FUN_004d6396 */ + +void __cdecl FUN_004d6396(int param_1) + +{ + FUN_004d4db7(*(int *)(param_1 + 4)); + return; +} + + + +/* @004d63a7 file=? name=FUN_004d63a7 */ + +int __cdecl FUN_004d63a7(int param_1,int param_2,undefined4 param_3,int param_4) + +{ + if (param_1 == 0) { + FUN_004d5488((uint *)&DAT_004d6638,(undefined4 *)&DAT_00524c60,0,(undefined *)0x0,0,0,0,0); + } + *(undefined4 *)(param_4 + 4) = *(undefined4 *)((param_2 - *(int *)(param_2 + -4)) + -0xc); + return param_4; +} + + + +/* @004d63e5 file=? name=FUN_004d63e5 */ + +undefined4 * __cdecl +FUN_004d63e5(int param_1,int *param_2,undefined4 *param_3,int *param_4,int param_5,int *param_6, + uint *param_7,int param_8,int *param_9) + +{ + int *piVar1; + bool bVar2; + int iVar3; + undefined4 *puVar4; + undefined4 *puVar5; + undefined4 *puVar6; + int *local_1c; + uint local_18; + int local_14; + undefined4 *local_10; + uint local_c; + + local_c = 0; + local_10 = (undefined4 *)0x0; + local_14 = 0; + if (((param_6 != (int *)0x0) && (iVar3 = FUN_004d4dd0(param_6,param_2), iVar3 != 0)) || + ((*(byte *)(param_2 + 3) & 4) == 0)) { + return (undefined4 *)0x0; + } + bVar2 = false; + puVar5 = (undefined4 *)((uint)*(ushort *)((int)param_2 + 0x12) + (int)param_2); + do { + while (piVar1 = (int *)*puVar5, piVar1 == (int *)0x0) { + if (bVar2) { + *param_7 = local_c; + if (local_14 != 1) { + return (undefined4 *)0x0; + } + return local_10; + } + bVar2 = true; + puVar5 = (undefined4 *)((uint)*(ushort *)(param_2 + 4) + (int)param_2); + } + if ((*(byte *)(puVar5 + 2) & 8) == 0) { + if ((param_8 == 0) || ((puVar5[2] & 3) != 3)) { + local_18 = 0; + } + else { + local_18 = 1; + } + puVar6 = (undefined4 *)(param_1 + puVar5[1]); + local_1c = param_9; + if ((*(byte *)(puVar5 + 2) & 4) != 0) { + puVar6 = (undefined4 *)*puVar6; + local_1c = piVar1; + } + iVar3 = FUN_004d4dd0(param_4,piVar1); + if (iVar3 == 0) { + if (((*(byte *)(piVar1 + 3) & 4) != 0) && + (puVar6 = FUN_004d63e5((int)puVar6,piVar1,param_3,param_4,param_5,param_6,param_7, + local_18,local_1c), puVar6 != (undefined4 *)0x0)) { + local_18 = *param_7; +LAB_004d6500: + if ((local_14 == 0) || (puVar6 != local_10)) { + local_14 = local_14 + 1; + local_c = local_18; + local_10 = puVar6; + } + else { + local_c = local_c | local_18; + } + } + } + else if (param_3 == (undefined4 *)0x0) { + if ((param_5 == 0) || + (puVar4 = FUN_004d63e5((int)puVar6,piVar1,(undefined4 *)param_5,param_6,0,(int *)0x0, + param_7,0,(int *)0x0), puVar4 != (undefined4 *)0x0)) + goto LAB_004d6500; + } + else if (puVar6 == param_3) { + return puVar6; + } + } + puVar5 = puVar5 + 3; + } while( true ); +} + + + +/* @004d655c file=? name=FUN_004d655c */ + +undefined4 * __cdecl FUN_004d655c(int param_1,int param_2,int *param_3,int *param_4,int param_5) + +{ + int *piVar1; + int iVar2; + undefined4 *puVar3; + undefined4 *puVar4; + uint local_c; + int *local_8; + + local_8 = param_3; + if (param_1 != 0) { + puVar4 = (undefined4 *)(param_1 - *(int *)(param_2 + -8)); + piVar1 = *(int **)((param_2 - *(int *)(param_2 + -4)) + -0xc); + if (param_4 == (int *)0x0) { + return puVar4; + } + iVar2 = FUN_004d4dd0(param_4,piVar1); + if (iVar2 != 0) { + return puVar4; + } + iVar2 = FUN_004d4dd0(local_8,piVar1); + if ((iVar2 == 0) && + (puVar3 = FUN_004d63e5((int)puVar4,piVar1,(undefined4 *)0x0,param_4,param_1,local_8,&local_c, + 1,(int *)0x0), puVar3 != (undefined4 *)0x0)) { + return puVar3; + } + puVar4 = FUN_004d63e5((int)puVar4,piVar1,(undefined4 *)0x0,param_4,0,(int *)0x0,&local_c,1, + (int *)0x0); + if ((puVar4 != (undefined4 *)0x0) && (local_c != 0)) { + return puVar4; + } + } + if (param_5 != 0) { + FUN_004d5488((uint *)&DAT_004d6654,(undefined4 *)&DAT_00524c61,0,(undefined *)0x0,0,0,0,0); + } + return (undefined4 *)0x0; +} + + + +/* @004d66b8 file=? name=FUN_004d66b8 */ + +void FUN_004d66b8(void) + +{ + undefined4 *puVar1; + int in_EAX; + undefined4 *puVar2; + int unaff_EBP; + undefined2 in_FS; + + puVar2 = (undefined4 *)(unaff_EBP + *(int *)(in_EAX + 4)); + puVar2[2] = in_EAX; + puVar2[3] = &stack0x00000004; + puVar2[1] = &DAT_004d5a5f; + puVar2[4] = 0; + *(undefined4 *)((int)puVar2 + 0x12) = 0; + puVar2[7] = *DAT_00524c68; + puVar1 = (undefined4 *)segment(in_FS,0); + *puVar2 = *puVar1; + puVar1 = (undefined4 *)segment(in_FS,0); + *puVar1 = puVar2; + return; +} + + + +/* @004d66fe file=? name=FUN_004d66fe */ + +undefined4 __cdecl FUN_004d66fe(int param_1) + +{ + undefined4 uVar1; + int unaff_FS_OFFSET; + + uVar1 = *(undefined4 *)(*(int *)(*(int *)(unaff_FS_OFFSET + 4) + -8) + 8); + if (param_1 != 0) { + *(int *)(*(int *)(*(int *)(unaff_FS_OFFSET + 4) + -8) + 8) = param_1; + } + return uVar1; +} + + + +/* @004d6723 file=? name=FUN_004d6723 */ + +void FUN_004d6723(void) + +{ + undefined4 *unaff_FS_OFFSET; + undefined4 local_24; + + FUN_004d66b8(); + thunk_FUN_004d87e8(); + (**(code **)(*(int *)(unaff_FS_OFFSET[1] + -8) + 8))(); + FUN_004dedb8(); + *unaff_FS_OFFSET = local_24; + return; +} + + + +/* @004d6777 file=? name=FUN_004d6777 */ + +undefined4 __cdecl FUN_004d6777(int param_1) + +{ + undefined4 uVar1; + int unaff_FS_OFFSET; + + uVar1 = *(undefined4 *)(*(int *)(*(int *)(unaff_FS_OFFSET + 4) + -8) + 0xc); + if (param_1 != 0) { + *(int *)(*(int *)(*(int *)(unaff_FS_OFFSET + 4) + -8) + 0xc) = param_1; + } + return uVar1; +} + + + +/* @004d679c file=? name=FUN_004d679c */ + +void FUN_004d679c(void) + +{ + int unaff_FS_OFFSET; + + (**(code **)(*(int *)(*(int *)(unaff_FS_OFFSET + 4) + -8) + 0xc))(); + FUN_004dedb8(); + return; +} + + + +/* @004d67b0 file=? name=FUN_004d67b0 */ + +undefined4 __cdecl FUN_004d67b0(int param_1,int param_2) + +{ + if (param_1 == 0) { + return 0; + } + return *(undefined4 *) + (*(int *)((*(int *)(param_1 + param_2) - *(int *)(*(int *)(param_1 + param_2) + -4)) + + -0xc) + 0x20); +} + + + +/* @004d67cf file=? name=FUN_004d67cf */ + +void __cdecl FUN_004d67cf(int param_1) + +{ + HMODULE hModule; + FARPROC pFVar1; + int unaff_FS_OFFSET; + bool bVar2; + uint local_c; + int local_8; + + bVar2 = param_1 == 0; + if (param_1 == 0) { + if (DAT_004e0058 != '\0') { + pFVar1 = (FARPROC)0x0; + hModule = GetModuleHandleA((LPCSTR)0x0); + if (hModule != (HMODULE)0x0) { + pFVar1 = GetProcAddress(hModule,s___GetExceptDLLinfo_0051f7d8); + } + if (pFVar1 != (FARPROC)0x0) { + (*pFVar1)(&local_c); + if ((0x82727348 < local_c) && (local_c < 0x8272735a)) { + param_1 = local_8; + } + } + } + if (param_1 == 0) { + FUN_004d6888(&local_c); + param_1 = local_8; + } + } + else { + *(undefined1 **)(param_1 + 8) = &LAB_004d66f8; + *(undefined1 **)(param_1 + 0xc) = &LAB_004d6771; + } + *(int *)(*(int *)(unaff_FS_OFFSET + 4) + -8) = param_1; + if (bVar2) { + DAT_00524c68 = *(int *)(unaff_FS_OFFSET + 4) + -4; + } + *(undefined4 *)(*(int *)(unaff_FS_OFFSET + 4) + -4) = 0; + *(undefined4 *)(*(int *)(*(int *)(unaff_FS_OFFSET + 4) + -8) + 4) = 0; + return; +} + + + +/* @004d6888 file=? name=FUN_004d6888 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004d6888(undefined4 *param_1) + +{ + int unaff_FS_OFFSET; + + _DAT_0051f718 = *(int *)(*(int *)(unaff_FS_OFFSET + 4) + -8) + 0x24; + *param_1 = 0x82727349; + param_1[1] = &DAT_0051f6fc; + return; +} + + + +/* @004d68b0 file=? name=FUN_004d68b0 */ + +undefined4 FUN_004d68b0(void) + +{ + return 1; +} + + + +/* @004d6958 file=? name=FUN_004d6958 */ + +void __cdecl FUN_004d6958(undefined4 *param_1) + +{ + *param_1 = 0; + param_1[1] = &LAB_004d68bc; + FUN_004d6a08(param_1); + return; +} + + + +/* @004d6974 file=? name=FUN_004d6974 */ + +void __cdecl FUN_004d6974(undefined4 *param_1) + +{ + FUN_004d6a1d(param_1); + return; +} + + + +/* @004d6984 file=? name=FUN_004d6984 */ + +undefined4 __cdecl FUN_004d6984(undefined4 param_1) + +{ + undefined4 uVar1; + + uVar1 = DAT_00524c70; + DAT_00524c70 = param_1; + return uVar1; +} + + + +/* @004d69d0 file=? name=FUN_004d69d0 */ + +void FUN_004d69d0(void) + +{ + if (DAT_005252c4 != (undefined4 *)0x0) { + FUN_004d6958(DAT_005252c4); + } + return; +} + + + +/* @004d69ea file=? name=FUN_004d69ea */ + +void __fastcall FUN_004d69ea(undefined4 param_1,PEXCEPTION_RECORD param_2) + +{ + PVOID in_EAX; + + RtlUnwind(in_EAX,(PVOID)0x4d69fb,param_2,(PVOID)0x0); + return; +} + + + +/* @004d69ff file=? name=FUN_004d69ff */ + +void FUN_004d69ff(void) + +{ + undefined4 *unaff_EBX; + + (*(code *)*unaff_EBX)(); + return; +} + + + +/* @004d6a08 file=? name=FUN_004d6a08 */ + +void __cdecl FUN_004d6a08(undefined4 *param_1) + +{ + undefined4 *puVar1; + undefined2 in_FS; + + puVar1 = (undefined4 *)segment(in_FS,0); + *param_1 = *puVar1; + puVar1 = (undefined4 *)segment(in_FS,0); + *puVar1 = param_1; + return; +} + + + +/* @004d6a1d file=? name=FUN_004d6a1d */ + +void __cdecl FUN_004d6a1d(undefined4 *param_1) + +{ + undefined4 *puVar1; + int *piVar2; + undefined2 in_FS; + + piVar2 = (int *)segment(in_FS,0); + piVar2 = (int *)*piVar2; + if (param_1 == piVar2) { + puVar1 = (undefined4 *)segment(in_FS,0); + *puVar1 = *param_1; + } + else { + for (; piVar2 != (int *)0xffffffff; piVar2 = (int *)*piVar2) { + if ((undefined4 *)*piVar2 == param_1) { + *piVar2 = *param_1; + return; + } + } + } + return; +} + + + +/* @004d6a50 file=? name=thunk_FUN_004d92c4 */ + +undefined4 __cdecl thunk_FUN_004d92c4(uint param_1) + +{ + undefined4 uVar1; + BOOL BVar2; + + if (DAT_0051fbc0 <= param_1) { + uVar1 = FUN_004d9148(6); + return uVar1; + } + BVar2 = CloseHandle(*(HANDLE *)(&DAT_00524d14 + param_1 * 4)); + if (BVar2 == 1) { + (&DAT_0051fbc4)[param_1] = 0; + return 0; + } + uVar1 = FUN_004d91ac(); + return uVar1; +} + + + +/* @004d6a58 file=? name=thunk_FUN_004d87e8 */ + +int thunk_FUN_004d87e8(void) + +{ + int *piVar1; + int iVar2; + int iVar3; + + iVar3 = 0; + piVar1 = &DAT_0051f800; + iVar2 = DAT_0051fbc0; + while (iVar2 != 0) { + if ((*(byte *)((int)piVar1 + 0x12) & 3) != 0) { + FUN_004d6b9c(piVar1); + iVar3 = iVar3 + 1; + } + piVar1 = piVar1 + 6; + iVar2 = iVar2 + -1; + } + return iVar3; +} + + + +/* @004d6a60 file=? name=thunk_FUN_004d9304 */ + +bool __cdecl thunk_FUN_004d9304(uint param_1) + +{ + DWORD DVar1; + + if (DAT_0051fbc0 <= param_1) { + return false; + } + DVar1 = GetFileType(*(HANDLE *)(&DAT_00524d14 + param_1 * 4)); + return DVar1 == 2; +} + + + +/* @004d6a68 file=? name=thunk_FUN_004d9334 */ + +DWORD __cdecl thunk_FUN_004d9334(uint param_1,LONG param_2,int param_3) + +{ + DWORD DVar1; + + if (param_1 < DAT_0051fbc0) { + if (param_3 == 0) { + DVar1 = 0; + } + else if (param_3 == 1) { + DVar1 = 1; + } + else { + if (param_3 != 2) { + DVar1 = FUN_004d9148(1); + return DVar1; + } + DVar1 = 2; + } + (&DAT_0051fbc4)[param_1] = (&DAT_0051fbc4)[param_1] & 0xfffffdff; + DVar1 = SetFilePointer(*(HANDLE *)(&DAT_00524d14 + param_1 * 4),param_2,(PLONG)0x0,DVar1); + if (DVar1 == 0xffffffff) { + FUN_004d91ac(); + } + } + else { + DVar1 = FUN_004d9148(6); + } + return DVar1; +} + + + +/* @004d6a70 file=? name=thunk_FUN_004d93ac */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +int __cdecl thunk_FUN_004d93ac(LPCSTR param_1,uint param_2,uint param_3) + +{ + bool bVar1; + uint uVar2; + int iVar3; + HANDLE hObject; + undefined3 extraout_var; + DWORD dwFlagsAndAttributes; + DWORD DVar4; + _SECURITY_ATTRIBUTES _Stack_18; + DWORD DStack_c; + DWORD DStack_8; + + if ((param_2 & 0xc000) == 0) { + param_2 = param_2 | *(uint *)PTR_DAT_0051fc68 & 0xc000; + } + if ((param_2 & 0x8000) == 0) { + param_2 = param_2 | 0x4000; + } + uVar2 = param_2 & 0x700; + if (uVar2 < 0x501) { + if (uVar2 == 0x500) { +LAB_004d940f: + DVar4 = 1; + goto LAB_004d9430; + } + if (uVar2 == 0x100) { + DVar4 = 4; + goto LAB_004d9430; + } + if (uVar2 != 0x200) { + if (uVar2 == 0x300) { + DVar4 = 2; + goto LAB_004d9430; + } + goto LAB_004d942b; + } + } + else if (uVar2 != 0x600) { + if (uVar2 != 0x700) { +LAB_004d942b: + DVar4 = 3; + goto LAB_004d9430; + } + goto LAB_004d940f; + } + DVar4 = 5; +LAB_004d9430: + if ((param_2 & 0x100) == 0) { + dwFlagsAndAttributes = GetFileAttributesA(param_1); + if (dwFlagsAndAttributes == 0xffffffff) { + dwFlagsAndAttributes = 0; + } + } + else if ((param_3 & _DAT_005201e4 & 0x80) == 0) { + dwFlagsAndAttributes = 1; + } + else { + dwFlagsAndAttributes = 0x80; + } + uVar2 = param_2 & 3; + if (uVar2 == 0) { + DStack_8 = 0x80000000; + } + else if (uVar2 == 1) { + DStack_8 = 0x40000000; + } + else { + if (uVar2 != 2) { + iVar3 = FUN_004d9148(1); + return iVar3; + } + DStack_8 = 0xc0000000; + } + uVar2 = param_2 & 0x70; + if (uVar2 == 0x10) { + DStack_c = 0; + } + else if (uVar2 == 0x20) { + DStack_c = 1; + } + else if (uVar2 == 0x30) { + DStack_c = 2; + } + else { + DStack_c = 3; + } + _Stack_18.nLength = 0xc; + _Stack_18.lpSecurityDescriptor = (LPVOID)0x0; + _Stack_18.bInheritHandle = (BOOL)((param_2 & 0x80) == 0); + hObject = CreateFileA(param_1,DStack_8,DStack_c,&_Stack_18,DVar4,dwFlagsAndAttributes,(HANDLE)0x0) + ; + if (hObject == (HANDLE)0xffffffff) { + DVar4 = GetLastError(); + uVar2 = DVar4 & 0xffff; + if ((uVar2 == 0x6e) && (uVar2 = 0x50, (param_2 & 0x100) == 0)) { + uVar2 = 2; + } + iVar3 = FUN_004d9148(uVar2); + } + else { + bVar1 = FUN_004d9304((uint)hObject); + if (CONCAT31(extraout_var,bVar1) != 0) { + param_2 = param_2 | 0x2000; + } + iVar3 = FUN_004d8eac(hObject,param_2 & 0xfffff8ff); + if (iVar3 == -1) { + FUN_004d9148(4); + CloseHandle(hObject); + } + } + return iVar3; +} + + + +/* @004d6a78 file=? name=thunk_FUN_004d892c */ + +char * __cdecl thunk_FUN_004d892c(uint param_1,char *param_2,char *param_3) + +{ + char *pcVar1; + uint uVar2; + DWORD DVar3; + char *pcVar4; + DWORD DVar5; + char *pcVar6; + + if (param_1 < DAT_0051fbc0) { + if (param_3 + 1 < (char *)0x2) { + pcVar1 = (char *)0x0; + } + else if ((*(byte *)((int)&DAT_0051fbc4 + param_1 * 4 + 1) & 0x40) == 0) { + pcVar1 = (char *)FUN_004d91c0(param_1,param_2,(DWORD)param_3); + } + else if ((*(byte *)((int)&DAT_0051fbc4 + param_1 * 4 + 1) & 2) == 0) { + pcVar1 = (char *)0x0; + if (param_3 != (char *)0x0) { + while( true ) { + uVar2 = (int)param_3 - (int)pcVar1; + DVar3 = FUN_004d91c0(param_1,param_2,uVar2); + if (DVar3 == 0xffffffff) { + return (char *)0xffffffff; + } + if (DVar3 == 0) { + return pcVar1; + } + pcVar4 = FUN_004d48f8(param_2,'\x1a',DVar3); + if (pcVar4 != (char *)0x0) { + (&DAT_0051fbc4)[param_1] = (&DAT_0051fbc4)[param_1] | 0x200; + DVar3 = (int)pcVar4 - (int)param_2; + if (DVar3 == 0) { + return pcVar1; + } + } + if ((param_2[DVar3 - 1] == '\r') && + (DVar5 = FUN_004d91c0(param_1,param_2 + (DVar3 - 1),1), DVar5 == 0xffffffff)) break; + pcVar6 = FUN_004d88c0(param_2,DVar3); + pcVar1 = pcVar1 + (int)pcVar6; + if ((DVar3 < uVar2) && ((*(byte *)((int)&DAT_0051fbc4 + param_1 * 4 + 1) & 0x20) != 0)) { + return pcVar1; + } + if (pcVar4 != (char *)0x0) { + return pcVar1; + } + if (pcVar6 != (char *)0x0) { + return pcVar1; + } + if (param_3 <= pcVar1) { + return pcVar1; + } + } + pcVar1 = (char *)0xffffffff; + } + } + else { + pcVar1 = (char *)0x0; + } + } + else { + pcVar1 = (char *)FUN_004d9148(-6); + } + return pcVar1; +} + + + +/* @004d6a80 file=? name=thunk_FUN_004d8b14 */ + +char * __cdecl thunk_FUN_004d8b14(uint param_1,char *param_2,char *param_3) + +{ + char *pcVar1; + char *pcVar2; + DWORD DVar3; + undefined4 auStack_8c [32]; + DWORD DStack_c; + char *pcStack_8; + + if (param_1 < DAT_0051fbc0) { + if (param_3 + 1 < (char *)0x2) { + param_3 = (char *)0x0; + } + else { + if ((*(byte *)((int)&DAT_0051fbc4 + param_1 * 4 + 1) & 8) != 0) { + FUN_004d9334(param_1,0,2); + } + pcVar1 = param_2; + pcVar2 = param_3; + if ((*(byte *)((int)&DAT_0051fbc4 + param_1 * 4 + 1) & 0x40) == 0) { + param_3 = (char *)FUN_004d9224(param_1,param_2,(DWORD)param_3); + } + else { + for (; pcVar2 != (char *)0x0; pcVar2 = pcVar2 + -(int)pcStack_8) { + pcStack_8 = pcVar2; + DVar3 = FUN_004d8a5c(pcVar1,(int *)&pcStack_8,auStack_8c,0x80); + DStack_c = FUN_004d9224(param_1,auStack_8c,DVar3); + if (DVar3 != DStack_c) { + if (DStack_c == 0xffffffff) { + return (char *)0xffffffff; + } + return pcVar1 + (DStack_c - (int)param_2); + } + pcVar1 = pcVar1 + (int)pcStack_8; + } + } + } + } + else { + param_3 = (char *)FUN_004d9148(-6); + } + return param_3; +} + + + +/* @004d6a88 file=? name=FUN_004d6a88 */ + +undefined4 __cdecl FUN_004d6a88(int *param_1,int *param_2,int param_3,uint param_4) + +{ + if ((*(byte *)((int)param_1 + 0x12) & 4) != 0) { + FUN_004de420((int *)param_1[1]); + } + *(ushort *)((int)param_1 + 0x12) = *(ushort *)((int)param_1 + 0x12) & 0xfff3; + param_1[3] = 0; + param_1[1] = (int)param_1 + 0x17; + *param_1 = (int)param_1 + 0x17; + if ((param_3 != 2) && (param_4 != 0)) { + PTR_FUN_00520c14 = &LAB_004d87b0; + if (param_2 == (int *)0x0) { + param_2 = FUN_004de55c(param_4); + if (param_2 == (int *)0x0) { + return 0xffffffff; + } + *(ushort *)((int)param_1 + 0x12) = *(ushort *)((int)param_1 + 0x12) | 4; + } + *param_1 = (int)param_2; + param_1[1] = (int)param_2; + param_1[3] = param_4; + if (param_3 == 1) { + *(ushort *)((int)param_1 + 0x12) = *(ushort *)((int)param_1 + 0x12) | 8; + } + } + return 0; +} + + + +/* @004d6b08 file=? name=FUN_004d6b08 */ + +undefined4 __cdecl FUN_004d6b08(int *param_1) + +{ + undefined4 uVar1; + int iVar2; + char *pcVar3; + + if ((param_1 == (int *)0x0) || ((short)param_1[5] != (short)param_1)) { + uVar1 = 0xffffffff; + } + else { + if (param_1[3] != 0) { + if ((param_1[2] < 0) && (iVar2 = FUN_004d6b9c(param_1), iVar2 != 0)) { + return 0xffffffff; + } + if ((*(byte *)((int)param_1 + 0x12) & 4) != 0) { + FUN_004de420((int *)param_1[1]); + } + } + uVar1 = FUN_004d92c4((int)*(char *)((int)param_1 + 0x16)); + *(undefined2 *)((int)param_1 + 0x12) = 0; + param_1[3] = 0; + param_1[2] = 0; + *(undefined1 *)((int)param_1 + 0x16) = 0xff; + if (*(ushort *)(param_1 + 4) != 0) { + pcVar3 = FUN_004d760c((char *)0x0,(char *)0x0,*(ushort *)(param_1 + 4)); + FUN_004d959c(pcVar3); + *(undefined2 *)(param_1 + 4) = 0; + } + } + return uVar1; +} + + + +/* @004d6b9c file=? name=FUN_004d6b9c */ + +undefined4 __cdecl FUN_004d6b9c(int *param_1) + +{ + undefined4 uVar1; + char *pcVar2; + char *pcVar3; + + if (param_1 == (int *)0x0) { + FUN_004d6d50(); + uVar1 = 0; + } + else if ((short)param_1[5] == (short)param_1) { + if (param_1[2] < 0) { + pcVar3 = (char *)(param_1[3] + param_1[2] + 1); + param_1[2] = param_1[2] - (int)pcVar3; + *param_1 = param_1[1]; + pcVar2 = FUN_004d8b14((int)*(char *)((int)param_1 + 0x16),(char *)param_1[1],pcVar3); + if ((pcVar3 == pcVar2) || ((*(byte *)((int)param_1 + 0x13) & 2) != 0)) { + uVar1 = 0; + } + else { + *(ushort *)((int)param_1 + 0x12) = *(ushort *)((int)param_1 + 0x12) | 0x10; + uVar1 = 0xffffffff; + } + } + else { + if ((((*(byte *)((int)param_1 + 0x12) & 8) != 0) || ((int)param_1 + 0x17 == *param_1)) && + (param_1[2] = 0, (int)param_1 + 0x17 == *param_1)) { + *param_1 = param_1[1]; + } + uVar1 = 0; + } + } + else { + uVar1 = 0xffffffff; + } + return uVar1; +} + + + +/* @004d6c20 file=? name=FUN_004d6c20 */ + +/* WARNING: Type propagation algorithm not settling */ + +undefined4 * __cdecl FUN_004d6c20(undefined4 *param_1,int param_2,int *param_3) + +{ + int *piVar1; + char *pcVar2; + byte *pbVar3; + char *pcVar4; + undefined4 *puVar5; + uint unaff_EDI; + char *local_8; + + puVar5 = param_1; + if (param_3[3] == 0) { + unaff_EDI = 0; + while ((unaff_EDI != 10 && (param_2 = param_2 + -1, 0 < param_2))) { + piVar1 = param_3 + 2; + *piVar1 = *piVar1 + -1; + if (*piVar1 < 0) { + unaff_EDI = FUN_004d7438(param_3); + } + else { + pbVar3 = (byte *)*param_3; + *param_3 = *param_3 + 1; + unaff_EDI = (uint)*pbVar3; + } + if (unaff_EDI == 0xffffffff) break; + *(char *)puVar5 = (char)unaff_EDI; + puVar5 = (undefined4 *)((int)puVar5 + 1); + } + } + else { + pcVar2 = (char *)(param_2 - 1); + do { + while( true ) { + if ((int)pcVar2 < 0) goto LAB_004d6d25; + local_8 = (char *)param_3[2]; + if ((int)local_8 < 1) break; + if (pcVar2 <= local_8) { + local_8 = pcVar2; + } + pcVar4 = FUN_004d48f8((char *)*param_3,'\n',(int)local_8); + if (pcVar4 != (char *)0x0) { + local_8 = pcVar4 + (1 - *param_3); + } + FUN_004d4918(puVar5,(undefined4 *)*param_3,(uint)local_8); + *param_3 = (int)(local_8 + *param_3); + param_3[2] = param_3[2] - (int)local_8; + puVar5 = (undefined4 *)((int)puVar5 + (int)local_8); + pcVar2 = (char *)((int)pcVar2 - (int)local_8); + if ((pcVar4 != (char *)0x0) || (pcVar2 == (char *)0x0)) { + unaff_EDI = 10; + goto LAB_004d6d25; + } + } + piVar1 = param_3 + 2; + *piVar1 = *piVar1 + -1; + if (*piVar1 < 0) { + unaff_EDI = FUN_004d7438(param_3); + } + else { + pbVar3 = (byte *)*param_3; + *param_3 = *param_3 + 1; + unaff_EDI = (uint)*pbVar3; + } + if (unaff_EDI == 0xffffffff) { + *(ushort *)((int)param_3 + 0x12) = *(ushort *)((int)param_3 + 0x12) | 0x20; + break; + } + *(char *)puVar5 = (char)unaff_EDI; + puVar5 = (undefined4 *)((int)puVar5 + 1); + pcVar2 = pcVar2 + -1; + } while (unaff_EDI != 10); + } +LAB_004d6d25: + if ((unaff_EDI == 0xffffffff) && (puVar5 == param_1)) { + param_1 = (undefined4 *)0x0; + } + else { + *(undefined1 *)puVar5 = 0; + if ((*(byte *)((int)param_3 + 0x12) & 0x10) != 0) { + param_1 = (undefined4 *)0x0; + } + } + return param_1; +} + + + +/* @004d6d50 file=? name=FUN_004d6d50 */ + +int FUN_004d6d50(void) + +{ + char *pcVar1; + undefined4 *puVar2; + int iVar3; + char *pcVar4; + int iVar5; + + iVar3 = 0; + puVar2 = &DAT_0051f800; + iVar5 = DAT_0051fbc0; + while (iVar5 != 0) { + if ((int)puVar2[2] < 0) { + pcVar4 = (char *)(puVar2[3] + puVar2[2] + 1); + puVar2[2] = puVar2[2] - (int)pcVar4; + *puVar2 = (char *)puVar2[1]; + pcVar1 = FUN_004d8b14((int)*(char *)((int)puVar2 + 0x16),(char *)puVar2[1],pcVar4); + if ((pcVar4 != pcVar1) && ((*(byte *)((int)puVar2 + 0x13) & 2) == 0)) { + *(ushort *)((int)puVar2 + 0x12) = *(ushort *)((int)puVar2 + 0x12) | 0x10; + } + iVar3 = iVar3 + 1; + } + puVar2 = puVar2 + 6; + iVar5 = iVar5 + -1; + } + return iVar3; +} + + + +/* @004d6db0 file=? name=FUN_004d6db0 */ + +void __cdecl FUN_004d6db0(undefined *param_1) + +{ + PTR_DAT_0051fc68 = param_1; + return; +} + + + +/* @004d6dc0 file=? name=FUN_004d6dc0 */ + +uint __cdecl FUN_004d6dc0(char *param_1,uint *param_2,undefined4 *param_3) + +{ + char cVar1; + uint uVar2; + uint uVar3; + undefined4 uVar4; + + uVar4 = 0; + cVar1 = *param_1; + if (cVar1 == 'r') { + uVar3 = 0; + uVar2 = 1; + } + else if (cVar1 == 'w') { + uVar3 = 0x301; + uVar4 = 0x80; + uVar2 = 2; + } + else { + if (cVar1 != 'a') { + return 0; + } + uVar3 = 0x901; + uVar4 = 0x80; + uVar2 = 2; + } + cVar1 = param_1[1]; + if ((cVar1 == '+') || ((param_1[2] == '+' && ((cVar1 == 't' || (cVar1 == 'b')))))) { + if (cVar1 == '+') { + cVar1 = param_1[2]; + } + uVar3 = uVar3 & 0xfffffffe | 2; + uVar4 = 0x180; + uVar2 = 3; + } + if (cVar1 == 't') { + uVar3 = uVar3 | 0x4000; + } + else if (cVar1 == 'b') { + uVar3 = uVar3 | 0x8000; + uVar2 = uVar2 | 0x40; + } + else { + uVar3 = uVar3 | *(uint *)PTR_DAT_0051fc68 & 0xc000; + if ((*(uint *)PTR_DAT_0051fc68 & 0x8000) != 0) { + uVar2 = uVar2 | 0x40; + } + } + PTR_FUN_00520c18 = &LAB_004d8788; + *param_2 = uVar3; + *param_3 = uVar4; + return uVar2; +} + + + +/* @004d6e80 file=? name=FUN_004d6e80 */ + +int * __cdecl FUN_004d6e80(int *param_1,LPCSTR param_2,char *param_3,uint param_4) + +{ + uint uVar1; + int iVar2; + uint local_c; + uint local_8; + + uVar1 = FUN_004d6dc0(param_3,&local_8,&local_c); + *(short *)((int)param_1 + 0x12) = (short)uVar1; + if ((short)uVar1 == 0) { +LAB_004d6ecb: + *(undefined1 *)((int)param_1 + 0x16) = 0xff; + *(undefined2 *)((int)param_1 + 0x12) = 0; + param_1 = (int *)0x0; + } + else { + if (*(char *)((int)param_1 + 0x16) < '\0') { + iVar2 = FUN_004d93ac(param_2,local_8 | param_4,local_c); + *(char *)((int)param_1 + 0x16) = (char)iVar2; + if ((char)iVar2 < '\0') goto LAB_004d6ecb; + } + if ((*(byte *)((int)&DAT_0051fbc4 + *(char *)((int)param_1 + 0x16) * 4 + 1) & 0x20) != 0) { + *(ushort *)((int)param_1 + 0x12) = *(ushort *)((int)param_1 + 0x12) | 0x200; + } + iVar2 = FUN_004d7e84(param_1,(int *)0x0,(uint)((*(byte *)((int)param_1 + 0x13) & 2) != 0),0x200) + ; + if (iVar2 == 0) { + *(undefined2 *)(param_1 + 4) = 0; + } + else { + FUN_004d6b08(param_1); + param_1 = (int *)0x0; + } + } + return param_1; +} + + + +/* @004d6f28 file=? name=FUN_004d6f28 */ + +undefined4 * FUN_004d6f28(void) + +{ + undefined4 *puVar1; + + puVar1 = &DAT_0051f800; + while( true ) { + if (*(char *)((int)puVar1 + 0x16) < '\0') { + return puVar1; + } + if (&DAT_0051f800 + DAT_0051fbc0 * 6 <= puVar1) break; + puVar1 = puVar1 + 6; + } + return (undefined4 *)0x0; +} + + + +/* @004d6f54 file=? name=FUN_004d6f54 */ + +int * __cdecl FUN_004d6f54(LPCSTR param_1,char *param_2) + +{ + int *piVar1; + int *piVar2; + + piVar1 = FUN_004d6f28(); + piVar2 = (int *)0x0; + if (piVar1 != (int *)0x0) { + piVar2 = FUN_004d6e80(piVar1,param_1,param_2,0); + } + return piVar2; +} + + + +/* @004d6f80 file=? name=FUN_004d6f80 */ + +void __cdecl FUN_004d6f80(undefined4 param_1,char *param_2) + +{ + FUN_004d812c(FUN_004d6fa0,param_1,param_2,(uint *)&stack0x0000000c); + return; +} + + + +/* @004d6fa0 file=? name=FUN_004d6fa0 */ + +char * __cdecl FUN_004d6fa0(byte *param_1,char *param_2,int *param_3) + +{ + uint uVar1; + int iVar2; + char *pcVar3; + + pcVar3 = param_2; + if ((*(byte *)((int)param_3 + 0x12) & 8) == 0) { + pcVar3 = (char *)param_3[3]; + if ((pcVar3 == (char *)0x0) || (pcVar3 < param_2)) { + if ((param_3[3] == 0) || ((param_3[2] == 0 || (iVar2 = FUN_004d6b9c(param_3), iVar2 == 0)))) { + pcVar3 = FUN_004d8b14((int)*(char *)((int)param_3 + 0x16),(char *)param_1,param_2); + if (pcVar3 < param_2) { + param_2 = (char *)0x0; + } + } + else { + param_2 = (char *)0x0; + } + } + else { + if (-1 < (int)(param_2 + param_3[2])) { + if (param_3[2] == 0) { + param_3[2] = -1 - (int)pcVar3; + } + else { + iVar2 = FUN_004d6b9c(param_3); + if (iVar2 != 0) { + return (char *)0x0; + } + } + } + FUN_004d4918((undefined4 *)*param_3,(undefined4 *)param_1,(uint)param_2); + param_3[2] = (int)(param_2 + param_3[2]); + *param_3 = (int)(param_2 + *param_3); + } + } + else { + for (; pcVar3 != (char *)0x0; pcVar3 = pcVar3 + -1) { + uVar1 = FUN_004d7518(*param_1,param_3); + if (uVar1 == 0xffffffff) { + return (char *)0x0; + } + param_1 = param_1 + 1; + } + } + return param_2; +} + + + +/* @004d7070 file=? name=FUN_004d7070 */ + +uint __cdecl FUN_004d7070(byte *param_1,int *param_2) + +{ + char *pcVar1; + char *pcVar2; + + if ((param_1 != (byte *)0x0) && + (pcVar1 = (char *)FUN_004d4a78((char *)param_1), pcVar1 != (char *)0x0)) { + pcVar2 = FUN_004d6fa0(param_1,pcVar1,param_2); + if (pcVar2 != (char *)0x0) { + return (uint)(param_1 + -1)[(int)pcVar1]; + } + return 0xffffffff; + } + return 0; +} + + + +/* @004d70b0 file=? name=FUN_004d70b0 */ + +char * __cdecl FUN_004d70b0(char *param_1,char *param_2,int *param_3) + +{ + int *piVar1; + byte *pbVar2; + char *pcVar3; + uint uVar4; + char *unaff_ESI; + char *pcVar5; + char *local_c; + uint local_8; + + local_c = param_1; + if (param_3[3] != 0) { +LAB_004d70cf: + if (param_2 == (char *)0x0) { + return unaff_ESI; + } + do { + pcVar3 = (char *)param_3[2]; + if (pcVar3 != (char *)0x0) { + pcVar5 = param_2; + if (pcVar3 < param_2) { + pcVar5 = pcVar3; + } + FUN_004d4918((undefined4 *)local_c,(undefined4 *)*param_3,(uint)pcVar5); + *param_3 = (int)(pcVar5 + *param_3); + param_3[2] = param_3[2] - (int)pcVar5; + if (param_2 == pcVar5) { + return unaff_ESI; + } + local_c = local_c + (int)pcVar5; + param_2 = param_2 + -(int)pcVar5; + } + if ((char *)param_3[3] <= param_2) { + pcVar5 = param_2 + -((uint)param_2 % (uint)param_3[3]); + pcVar3 = FUN_004d892c((int)*(char *)((int)param_3 + 0x16),local_c,pcVar5); + if (param_2 == pcVar3) { + return unaff_ESI; + } + if (pcVar3 == (char *)0xffffffff) { + *(ushort *)((int)param_3 + 0x12) = *(ushort *)((int)param_3 + 0x12) | 0x10; + return unaff_ESI; + } + local_c = local_c + (int)pcVar3; + param_2 = param_2 + -(int)pcVar3; + if (pcVar5 != pcVar3) goto code_r0x004d715c; + } + uVar4 = FUN_004d744c(param_3); + if (uVar4 == 0xffffffff) { + *(ushort *)((int)param_3 + 0x12) = *(ushort *)((int)param_3 + 0x12) | 0x20; + return unaff_ESI; + } + local_8._0_1_ = (char)uVar4; + *local_c = (char)local_8; + local_c = local_c + 1; + param_2 = param_2 + -1; + if (param_2 == (char *)0x0) { + return unaff_ESI; + } + } while( true ); + } + for (; param_2 != (char *)0x0; param_2 = param_2 + -1) { + piVar1 = param_3 + 2; + *piVar1 = *piVar1 + -1; + if (*piVar1 < 0) { + local_8 = FUN_004d7438(param_3); + } + else { + pbVar2 = (byte *)*param_3; + *param_3 = *param_3 + 1; + local_8 = (uint)*pbVar2; + } + if (local_8 == 0xffffffff) break; + *local_c = (char)local_8; + local_c = local_c + 1; + } + if (local_8 == 0xffffffff) { + *(ushort *)((int)param_3 + 0x12) = *(ushort *)((int)param_3 + 0x12) | 0x20; + } + return unaff_ESI; +code_r0x004d715c: + if (((*(byte *)((int)param_3 + 0x12) & 0x40) != 0) || (pcVar3 == (char *)0x0)) { + *(ushort *)((int)param_3 + 0x12) = *(ushort *)((int)param_3 + 0x12) | 0x20; + return unaff_ESI; + } + goto LAB_004d70cf; +} + + + +/* @004d71e0 file=? name=FUN_004d71e0 */ + +uint __cdecl FUN_004d71e0(char *param_1,int param_2,int param_3,int *param_4) + +{ + uint uVar1; + int extraout_EAX; + char *pcVar2; + + if (param_2 == 0) { + uVar1 = 0; + } + else { + pcVar2 = FUN_004d70b0(param_1,(char *)(param_2 * param_3),param_4); + uVar1 = (uint)(param_2 * param_3 - extraout_EAX) / (uint)pcVar2; + } + return uVar1; +} + + + +/* @004d7214 file=? name=FUN_004d7214 */ + +int __cdecl FUN_004d7214(undefined4 *param_1) + +{ + char cVar1; + int iVar2; + int iVar3; + int iVar4; + int iVar5; + char *pcVar6; + + iVar2 = param_1[2]; + if (iVar2 < 0) { + iVar2 = param_1[3] + iVar2 + 1; + } + if ((*(byte *)((int)param_1 + 0x12) & 0x40) == 0) { + pcVar6 = (char *)*param_1; + iVar3 = iVar2; + iVar5 = iVar2; + if ((int)param_1[2] < 0) { + while (iVar3 = iVar2 + -1, iVar2 != 0) { + pcVar6 = pcVar6 + -1; + iVar2 = iVar3; + if (*pcVar6 == '\n') { + iVar5 = iVar5 + 1; + } + } + } + else { + while (iVar4 = iVar3 + -1, iVar5 = iVar2, iVar3 != 0) { + cVar1 = *pcVar6; + pcVar6 = pcVar6 + 1; + iVar3 = iVar4; + if (cVar1 == '\n') { + iVar2 = iVar2 + 1; + } + } + } + return iVar5; + } + return iVar2; +} + + + +/* @004d7270 file=? name=FUN_004d7270 */ + +undefined4 __cdecl FUN_004d7270(int *param_1,LONG param_2,int param_3) + +{ + int iVar1; + undefined4 uVar2; + DWORD DVar3; + + iVar1 = FUN_004d6b9c(param_1); + if (iVar1 == 0) { + if ((param_3 == 1) && (0 < param_1[2])) { + iVar1 = FUN_004d7214(param_1); + param_2 = param_2 - iVar1; + } + *(ushort *)((int)param_1 + 0x12) = *(ushort *)((int)param_1 + 0x12) & 0xfe5f; + param_1[2] = 0; + *param_1 = param_1[1]; + DVar3 = FUN_004d9334((int)*(char *)((int)param_1 + 0x16),param_2,param_3); + if (DVar3 == 0xffffffff) { + uVar2 = 0xffffffff; + } + else { + uVar2 = 0; + } + } + else { + uVar2 = 0xffffffff; + } + return uVar2; +} + + + +/* @004d72d4 file=? name=FUN_004d72d4 */ + +DWORD __cdecl FUN_004d72d4(undefined4 *param_1) + +{ + DWORD DVar1; + DWORD DVar2; + int iVar3; + + DVar1 = FUN_004d9334((int)*(char *)((int)param_1 + 0x16),0,1); + if (DVar1 != 0xffffffff) { + if ((int)param_1[2] < 0) { + DVar2 = DVar1; + if ((*(byte *)((int)&DAT_0051fbc4 + *(char *)((int)param_1 + 0x16) * 4 + 1) & 8) != 0) { + DVar2 = FUN_004d9334((int)*(char *)((int)param_1 + 0x16),0,2); + if (DVar2 == 0xffffffff) { + return 0xffffffff; + } + DVar1 = FUN_004d9334((int)*(char *)((int)param_1 + 0x16),DVar1,0); + if (DVar1 == 0xffffffff) { + return 0xffffffff; + } + } + iVar3 = FUN_004d7214(param_1); + DVar1 = DVar2 + iVar3; + } + else { + iVar3 = FUN_004d7214(param_1); + DVar1 = DVar1 - iVar3; + } + } + return DVar1; +} + + + +/* @004d7358 file=? name=FUN_004d7358 */ + +uint __cdecl FUN_004d7358(byte *param_1,uint param_2,uint param_3,int *param_4) + +{ + char *pcVar1; + + if (param_2 != 0) { + pcVar1 = FUN_004d6fa0(param_1,(char *)(param_2 * param_3),param_4); + param_3 = (uint)pcVar1 / param_2; + } + return param_3; +} + + + +/* @004d7388 file=? name=FUN_004d7388 */ + +void __cdecl FUN_004d7388(int *param_1,uint param_2) + +{ + FUN_004d8d20(0,param_1,param_2); + return; +} + + + +/* @004d73a0 file=? name=FUN_004d73a0 */ + +void FUN_004d73a0(void) + +{ + int *piVar1; + int iVar2; + + piVar1 = &DAT_0051f800; + iVar2 = 0x28; + while (iVar2 != 0) { + if ((*(ushort *)((int)piVar1 + 0x12) & 0x300) == 0x300) { + FUN_004d6b9c(piVar1); + } + piVar1 = piVar1 + 6; + iVar2 = iVar2 + -1; + } + return; +} + + + +/* @004d73d4 file=? name=FUN_004d73d4 */ + +undefined4 __cdecl FUN_004d73d4(undefined4 *param_1) + +{ + char *pcVar1; + + if ((*(byte *)((int)param_1 + 0x13) & 2) != 0) { + FUN_004d73a0(); + } + *param_1 = (char *)param_1[1]; + pcVar1 = FUN_004d892c((int)*(char *)((int)param_1 + 0x16),(char *)param_1[1],(char *)param_1[3]); + param_1[2] = pcVar1; + if (0 < (int)pcVar1) { + *(ushort *)((int)param_1 + 0x12) = *(ushort *)((int)param_1 + 0x12) & 0xffdf; + return 0; + } + if (param_1[2] == 0) { + *(ushort *)((int)param_1 + 0x12) = *(ushort *)((int)param_1 + 0x12) & 0xfe7f | 0x20; + } + else { + param_1[2] = 0; + *(ushort *)((int)param_1 + 0x12) = *(ushort *)((int)param_1 + 0x12) | 0x10; + } + return 0xffffffff; +} + + + +/* @004d7438 file=? name=FUN_004d7438 */ + +void __cdecl FUN_004d7438(int *param_1) + +{ + param_1[2] = param_1[2] + 1; + FUN_004d744c(param_1); + return; +} + + + +/* @004d744c file=? name=FUN_004d744c */ + +uint __cdecl FUN_004d744c(int *param_1) + +{ + byte *pbVar1; + int iVar2; + char *pcVar3; + uint uVar4; + + if (param_1 == (int *)0x0) { + return 0xffffffff; + } + if (0 < param_1[2]) { + param_1[2] = param_1[2] + -1; + pbVar1 = (byte *)*param_1; + *param_1 = *param_1 + 1; + return (uint)*pbVar1; + } + if (((param_1[2] < 0) || ((*(ushort *)((int)param_1 + 0x12) & 0x110) != 0)) || + ((*(byte *)((int)param_1 + 0x12) & 1) == 0)) { + *(ushort *)((int)param_1 + 0x12) = *(ushort *)((int)param_1 + 0x12) | 0x10; + return 0xffffffff; + } + *(ushort *)((int)param_1 + 0x12) = *(ushort *)((int)param_1 + 0x12) | 0x80; + if (param_1[3] != 0) { + iVar2 = FUN_004d73d4(param_1); + if (iVar2 != 0) { + return 0xffffffff; + } + param_1[2] = param_1[2] + -1; + pbVar1 = (byte *)*param_1; + *param_1 = *param_1 + 1; + return (uint)*pbVar1; + } + if ((*(byte *)((int)param_1 + 0x13) & 2) != 0) { + FUN_004d73a0(); + } + pcVar3 = FUN_004d892c((int)*(char *)((int)param_1 + 0x16),(char *)&DAT_00524db4,(char *)0x1); + if (pcVar3 == (char *)0x0) { + uVar4 = FUN_004d8834((int)*(char *)((int)param_1 + 0x16)); + if (uVar4 == 1) { + *(ushort *)((int)param_1 + 0x12) = *(ushort *)((int)param_1 + 0x12) & 0xfe7f | 0x20; + } + else { + *(ushort *)((int)param_1 + 0x12) = *(ushort *)((int)param_1 + 0x12) | 0x10; + } + return 0xffffffff; + } + *(ushort *)((int)param_1 + 0x12) = *(ushort *)((int)param_1 + 0x12) & 0xffdf; + return (uint)DAT_00524db4; +} + + + +/* @004d7518 file=? name=FUN_004d7518 */ + +uint __cdecl FUN_004d7518(byte param_1,int *param_2) + +{ + byte *pbVar1; + int iVar2; + uint uVar3; + char *pcVar4; + byte local_5; + + local_5 = param_1; + if (param_2[2] < -1) { + param_2[2] = param_2[2] + 1; + pbVar1 = (byte *)*param_2; + *param_2 = *param_2 + 1; + *pbVar1 = param_1; + if ((((*(byte *)((int)param_2 + 0x12) & 8) != 0) && ((param_1 == 10 || (param_1 == 0xd)))) && + (iVar2 = FUN_004d6b9c(param_2), iVar2 != 0)) { + return 0xffffffff; + } + uVar3 = (uint)local_5; + } + else if (((*(ushort *)((int)param_2 + 0x12) & 0x90) == 0) && + ((*(ushort *)((int)param_2 + 0x12) & 2) != 0)) { + *(ushort *)((int)param_2 + 0x12) = *(ushort *)((int)param_2 + 0x12) | 0x100; + if (param_2[3] == 0) { + pcVar4 = FUN_004d8b14((int)*(char *)((int)param_2 + 0x16),(char *)&local_5,(char *)0x1); + if ((pcVar4 == (char *)0x1) || ((*(byte *)((int)param_2 + 0x13) & 2) != 0)) { + uVar3 = (uint)local_5; + } + else { + *(ushort *)((int)param_2 + 0x12) = *(ushort *)((int)param_2 + 0x12) | 0x10; + uVar3 = 0xffffffff; + } + } + else { + if ((param_2[2] != 0) && (iVar2 = FUN_004d6b9c(param_2), iVar2 != 0)) { + return 0xffffffff; + } + param_2[2] = -param_2[3]; + pbVar1 = (byte *)*param_2; + *param_2 = *param_2 + 1; + *pbVar1 = local_5; + if (((*(byte *)((int)param_2 + 0x12) & 8) != 0) && + (((local_5 == 10 || (local_5 == 0xd)) && (iVar2 = FUN_004d6b9c(param_2), iVar2 != 0)))) { + return 0xffffffff; + } + uVar3 = (uint)local_5; + } + } + else { + *(ushort *)((int)param_2 + 0x12) = *(ushort *)((int)param_2 + 0x12) | 0x10; + uVar3 = 0xffffffff; + } + return uVar3; +} + + + +/* @004d760c file=? name=FUN_004d760c */ + +char * __cdecl FUN_004d760c(char *param_1,char *param_2,ushort param_3) + +{ + char *pcVar1; + + if (param_1 == (char *)0x0) { + param_1 = &DAT_00524dbe; + } + if (param_2 == (char *)0x0) { + param_2 = &DAT_0051fc6c; + } + pcVar1 = (char *)FUN_004d4d84((undefined4 *)param_1,param_2); + FUN_004dd3d0((uint)param_3,pcVar1); + FUN_004d49b8(param_1,&DAT_0051fc70); + return param_1; +} + + + +/* @004d765c file=? name=FUN_004d765c */ + +char * __cdecl FUN_004d765c(char *param_1,ushort *param_2) + +{ + int iVar1; + + do { + *param_2 = *param_2 + 1; + if (*param_2 == 0) { + *param_2 = 1; + } + param_1 = FUN_004d760c(param_1,(char *)0x0,*param_2); + iVar1 = FUN_004d9288(param_1,0); + } while (iVar1 == 0); + return param_1; +} + + + +/* @004d771c file=? name=FUN_004d771c */ + +void __cdecl FUN_004d771c(char *param_1) + +{ + FUN_004d812c(FUN_004d6fa0,&DAT_0051f818,param_1,(uint *)&stack0x00000008); + return; +} + + + +/* @004d773c file=? name=FUN_004d773c */ + +int __cdecl +FUN_004d773c(undefined *param_1,undefined *param_2,undefined4 param_3,byte *param_4, + undefined4 *param_5) + +{ + byte *pbVar1; + byte bVar2; + int iVar3; + byte *pbVar4; + uint uVar5; + byte local_54 [32]; + int local_34; + byte *local_24; + byte local_1d; + uint local_1c; + uint local_18; + int local_14; + uint local_10; + int local_c; + byte local_5; + + local_c = 0; + local_10 = 0; +LAB_004d7752: + do { + local_1d = *param_4; + if (local_1d == 0) { + return local_c; + } + pbVar1 = param_4 + 1; + if (local_1d == 0x25) { + local_1d = param_4[1]; + param_4 = param_4 + 2; + pbVar1 = param_4; + if (local_1d != 0x25) { + local_5 = 0x20; + uVar5 = 0xffffffff; +LAB_004d7803: + if ((local_1d & 0x80) == 0) { + iVar3 = (int)(char)(&DAT_005200f4)[(char)local_1d]; + } + else { + iVar3 = 2; + } + switch(iVar3) { + default: + goto switchD_004d7824_caseD_0; + case 2: + goto switchD_004d7824_caseD_2; + case 4: + local_5 = local_5 | 1; + local_1d = *param_4; + param_4 = param_4 + 1; + goto LAB_004d7803; + case 5: + if ((int)uVar5 < 0) { + iVar3 = (int)(char)local_1d; + } + else { + iVar3 = uVar5 * 10 + (int)(char)local_1d; + } + uVar5 = iVar3 - 0x30; + local_1d = *param_4; + param_4 = param_4 + 1; + goto LAB_004d7803; + case 6: + if ((local_5 & 1) == 0) { + local_24 = (byte *)*param_5; + param_5 = param_5 + 1; + } + if ((int)uVar5 < 0) { + uVar5 = 1; + } + if (uVar5 == 0) goto LAB_004d7b71; + goto LAB_004d7b48; + case 7: + case 8: + local_18 = 10; + goto switchD_004d7824_caseD_0; + case 9: + local_18 = 0; + goto switchD_004d7824_caseD_0; + case 10: + thunk_FUN_004dd258(); + if (local_14 < 0) goto LAB_004d7cb4; + if (local_14 == 0) goto switchD_004d7824_caseD_2; + if ((local_5 & 1) == 0) { + param_5 = param_5 + 1; + thunk_FUN_004dd258(); + local_c = local_c + 1; + } + goto LAB_004d7752; + case 0xb: + local_5 = local_5 | 8; + local_1d = *param_4; + param_4 = param_4 + 1; + goto LAB_004d7803; + case 0xc: + local_5 = local_5 | 2; + local_1d = *param_4; + param_4 = param_4 + 1; + goto LAB_004d7803; + case 0xd: + local_5 = local_5 | 4; + local_1d = *param_4; + param_4 = param_4 + 1; + goto LAB_004d7803; + case 0xe: + local_18 = 8; + goto switchD_004d7824_caseD_0; + case 0xf: + goto switchD_004d7824_caseD_f; + case 0x10: + FUN_004d4988((undefined4 *)local_54,0,0x20); + local_1c = 0; + bVar2 = *param_4; + pbVar1 = param_4 + 1; + if (bVar2 == 0x5e) { + local_1c = 1; + bVar2 = param_4[1]; + pbVar1 = param_4 + 2; + } + goto LAB_004d7baa; + case 0x11: + uVar5 = local_10; + goto LAB_004d7969; + case 0x12: + goto switchD_004d7824_caseD_12; + case 0x13: + uVar5 = FUN_004d7cd8(param_1,param_2,param_3,0x10,8,(int *)&local_10,&local_14); + if (local_14 < 1) goto switchD_004d7824_caseD_2; + if ((local_5 & 1) == 0) { + *(uint *)*param_5 = uVar5; + local_c = local_c + 1; + param_5 = param_5 + 1; + } + goto LAB_004d7752; + case 0x14: + local_5 = local_5 & 0xdf; + local_1d = *param_4; + param_4 = param_4 + 1; + goto LAB_004d7803; + case 0x15: + local_5 = local_5 | 0x20; + local_1d = *param_4; + param_4 = param_4 + 1; + goto LAB_004d7803; + } + } + } + param_4 = pbVar1; + local_10 = local_10 + 1; + bVar2 = (*(code *)param_1)(param_3); + if (bVar2 == 0xff) goto LAB_004d7cb4; + if (((local_1d & 0x80) == 0) && ((&DAT_005200f4)[(char)local_1d] == '\x01')) { + while (((bVar2 & 0x80) == 0 && ((&DAT_005200f4)[(char)bVar2] == '\x01'))) { + local_10 = local_10 + 1; + bVar2 = (*(code *)param_1)(param_3); + if (bVar2 == 0xff) goto LAB_004d7cb4; + } + (*(code *)param_2)((int)(char)bVar2,param_3); + local_10 = local_10 - 1; + } + else if (bVar2 != local_1d) { + (*(code *)param_2)((int)(char)bVar2,param_3); + goto switchD_004d7824_caseD_2; + } + } while( true ); +switchD_004d7824_caseD_12: + local_18 = 0x10; +switchD_004d7824_caseD_0: + uVar5 = FUN_004d7cd8(param_1,param_2,param_3,local_18,uVar5 & 0x7fff,(int *)&local_10,&local_14); + if (local_14 < 0) goto LAB_004d7cb4; + if (local_14 == 0) goto switchD_004d7824_caseD_2; +LAB_004d7969: + if ((('@' < (char)local_1d) && ((char)local_1d < '[')) && (local_1d != 0x58)) { + local_5 = local_5 | 4; + } + if ((local_5 & 1) == 0) { + if ((local_5 & 4) == 0) { + if ((local_5 & 2) == 0) { + *(uint *)*param_5 = uVar5; + } + else { + *(short *)*param_5 = (short)uVar5; + } + } + else { + *(uint *)*param_5 = uVar5; + } + param_5 = param_5 + 1; + if (local_1d != 0x6e) { + local_c = local_c + 1; + } + } + goto LAB_004d7752; +LAB_004d7baa: + pbVar4 = pbVar1; + local_1d = bVar2; + if (bVar2 == 0) goto switchD_004d7824_caseD_2; + local_54[(int)(char)bVar2 >> 3 & 0x1f] = + local_54[(int)(char)bVar2 >> 3 & 0x1f] | '\x01' << (bVar2 & 7); + bVar2 = *pbVar4; + param_4 = pbVar4 + 1; + if (bVar2 != 0x5d) { + pbVar1 = param_4; + if (((bVar2 == 0x2d) && ((char)local_1d < (char)*param_4)) && (*param_4 != 0x5d)) { + bVar2 = *param_4; + while( true ) { + local_1d = local_1d + 1; + pbVar1 = pbVar4 + 2; + if ((char)bVar2 <= (char)local_1d) break; + local_54[(int)(char)local_1d >> 3 & 0x1f] = + local_54[(int)(char)local_1d >> 3 & 0x1f] | '\x01' << (local_1d & 7); + } + } + goto LAB_004d7baa; + } + if (uVar5 == 0xffffffff) { + uVar5 = 0x7fff; + } + if ((local_5 & 1) == 0) { + local_24 = (byte *)*param_5; + param_5 = param_5 + 1; + } + local_34 = 0; + bVar2 = 0x5d; + while (uVar5 = uVar5 - 1, -1 < (int)uVar5) { + local_10 = local_10 + 1; + bVar2 = (*(code *)param_1)(param_3); + if ((bVar2 == 0xff) || + (((1 << (bVar2 & 7) & (int)(char)local_54[(int)(char)bVar2 >> 3 & 0x1f]) != 0) == local_1c)) + break; + local_34 = local_34 + 1; + if ((local_5 & 1) == 0) { + *local_24 = bVar2; + local_24 = local_24 + 1; + } + } + if (-1 < (int)uVar5) { + (*(code *)param_2)((int)(char)bVar2,param_3); + local_10 = local_10 - 1; + } + if ((local_34 != 0) && ((local_5 & 1) == 0)) { + *local_24 = 0; + local_24 = local_24 + 1; + local_c = local_c + 1; + } + if (bVar2 == 0xff) { +LAB_004d7cb4: + (*(code *)param_2)(0xffffffff,param_3); + if (local_c == 0) { + local_c = -1; + } + else { +switchD_004d7824_caseD_2: + } + return local_c; + } + goto LAB_004d7752; + while (((bVar2 & 0x80) == 0 && ((&DAT_005200f4)[(char)bVar2] == '\x01'))) { +switchD_004d7824_caseD_f: + local_10 = local_10 + 1; + bVar2 = (*(code *)param_1)(param_3); + if (bVar2 == 0xff) goto LAB_004d7cb4; + } + if ((local_5 & 1) == 0) { + local_24 = (byte *)*param_5; + local_c = local_c + 1; + param_5 = param_5 + 1; + } + if (uVar5 == 0xffffffff) { + uVar5 = 0x7fff; + } + do { + if ((local_5 & 1) == 0) { + *local_24 = bVar2; + local_24 = local_24 + 1; + } + local_10 = local_10 + 1; + bVar2 = (*(code *)param_1)(param_3); + } while ((((bVar2 != 0xff) && (bVar2 != 0)) && + (((bVar2 & 0x80) != 0 || ((&DAT_005200f4)[(char)bVar2] != '\x01')))) && + (uVar5 = uVar5 - 1, 0 < (int)uVar5)); + (*(code *)param_2)((int)(char)bVar2,param_3); + local_10 = local_10 - 1; + if ((local_5 & 1) == 0) { + *local_24 = 0; + } + goto LAB_004d7752; + while( true ) { + if ((local_5 & 1) == 0) { + *local_24 = bVar2; + local_24 = local_24 + 1; + } + uVar5 = uVar5 - 1; + if ((int)uVar5 < 1) break; +LAB_004d7b48: + local_10 = local_10 + 1; + bVar2 = (*(code *)param_1)(param_3); + if (bVar2 == 0xff) goto LAB_004d7cb4; + } +LAB_004d7b71: + if ((local_5 & 1) == 0) { + local_c = local_c + 1; + } + goto LAB_004d7752; +} + + + +/* @004d7cd8 file=? name=FUN_004d7cd8 */ + +uint __cdecl +FUN_004d7cd8(undefined *param_1,undefined *param_2,undefined4 param_3,uint param_4,int param_5, + int *param_6,int *param_7) + +{ + int iVar1; + int iVar2; + int iVar3; + uint uVar4; + int iVar5; + bool bVar6; + bool bVar7; + int local_1c; + int local_18; + uint local_14; + int local_10; + int local_c; + + bVar6 = false; + local_c = 0; + local_10 = 1; + local_14 = 0; + local_18 = 0; + iVar5 = 0; + iVar1 = local_c; +LAB_004d7d00: + do { + local_c = iVar1; + iVar1 = local_c + 1; + iVar3 = (*(code *)param_1)(param_3); + if (iVar5 == 0) { + if (((-1 < iVar3) && (iVar3 < 0x80)) && (((&DAT_005207dd)[iVar3] & 1) != 0)) + goto LAB_004d7d00; + iVar5 = 1; + } + iVar2 = param_5 + -1; + if (iVar2 < 0) goto LAB_004d7e3c; + if ((iVar5 != 1) || ((iVar5 = 2, iVar3 != 0x2b && (iVar3 != 0x2d)))) { + if (iVar5 == 2) { + iVar5 = 3; + if ((iVar3 == 0x30) && ((local_18 = 1, param_4 == 0 || (param_4 == 0x10)))) { + iVar1 = local_c + 2; + iVar3 = (*(code *)param_1)(param_3); + param_5 = param_5 + -2; + if (param_5 < 0) goto LAB_004d7e3c; + if ((iVar3 == 0x78) || (iVar3 == 0x58)) { + param_4 = 0x10; + goto LAB_004d7d00; + } + iVar2 = param_5; + if (param_4 == 0) { + param_4 = 8; + } + } + local_c = iVar1; + param_5 = iVar2; + iVar2 = param_5; + iVar1 = local_c; + if (param_4 == 0) { + param_4 = 10; + } + else if (((int)param_4 < 1) || (0x24 < (int)param_4)) goto LAB_004d7e3c; + } + local_c = iVar1; + param_5 = iVar2; + iVar1 = local_c; + if (iVar5 == 3) { + if ((iVar3 < 0x30) || (0x39 < iVar3)) { + if ((iVar3 < 0x61) || (0x7a < iVar3)) { + if ((iVar3 < 0x41) || (0x5a < iVar3)) goto LAB_004d7e3c; + local_1c = iVar3 + -0x37; + } + else { + local_1c = iVar3 + -0x57; + } + } + else { + local_1c = iVar3 + -0x30; + } + if ((int)param_4 <= local_1c) goto LAB_004d7e3c; + local_18 = local_18 + 1; + uVar4 = local_14 * param_4 + local_1c; + bVar7 = local_14 != (uVar4 - local_1c) / param_4; + local_14 = uVar4; + if (bVar7) { + local_10 = 2; + local_14 = 0x80000000; + if (!bVar6) { + local_14 = 0x7fffffff; + } +LAB_004d7e3c: + local_c = iVar1; + if (local_10 != 2) { + (*(code *)param_2)(iVar3,param_3); + local_c = local_c + -1; + if (bVar6) { + local_14 = -local_14; + } + } + if ((local_18 == 0) && (local_10 = -1, iVar3 != -1)) { + local_10 = 0; + } + *param_7 = local_10; + *param_6 = *param_6 + local_c; + return local_14; + } + } + goto LAB_004d7d00; + } + bVar6 = iVar3 == 0x2d; + param_5 = iVar2; + } while( true ); +} + + + +/* @004d7e84 file=? name=FUN_004d7e84 */ + +undefined4 __cdecl FUN_004d7e84(int *param_1,int *param_2,int param_3,uint param_4) + +{ + undefined4 uVar1; + + if ((((short)param_1[5] == (short)param_1) && (param_3 < 3)) && (param_4 < 0x80000000)) { + if (param_1[2] != 0) { + FUN_004d7270(param_1,0,1); + } + if ((*(byte *)((int)param_1 + 0x12) & 4) != 0) { + FUN_004de420((int *)param_1[1]); + } + uVar1 = FUN_004d6a88(param_1,param_2,param_3,param_4); + } + else { + uVar1 = 0xffffffff; + } + return uVar1; +} + + + +/* @004d7f10 file=? name=FUN_004d7f10 */ + +void __cdecl FUN_004d7f10(undefined1 *param_1,char *param_2) + +{ + *param_1 = 0; + FUN_004d812c(&LAB_004d7ee8,¶m_1,param_2,(uint *)&stack0x0000000c); + return; +} + + + +/* @004d7f34 file=? name=FUN_004d7f34 */ + +void __cdecl FUN_004d7f34(undefined1 *param_1,char *param_2,uint *param_3) + +{ + *param_1 = 0; + FUN_004d812c(&LAB_004d7ee8,¶m_1,param_2,param_3); + return; +} + + + +/* @004d7f58 file=? name=FUN_004d7f58 */ + +uint __cdecl FUN_004d7f58(int *param_1) + +{ + byte *pbVar1; + uint uVar2; + + pbVar1 = (byte *)*param_1; + *param_1 = *param_1 + 1; + if (*pbVar1 == 0) { + uVar2 = 0xffffffff; + } + else { + uVar2 = (uint)*pbVar1; + } + return uVar2; +} + + + +/* @004d7f78 file=? name=FUN_004d7f78 */ + +void __cdecl FUN_004d7f78(undefined4 param_1,int *param_2) + +{ + *param_2 = *param_2 + -1; + return; +} + + + +/* @004d7f84 file=? name=FUN_004d7f84 */ + +void __cdecl FUN_004d7f84(undefined4 param_1,byte *param_2) + +{ + FUN_004d773c(FUN_004d7f58,FUN_004d7f78,¶m_1,param_2,(undefined4 *)&stack0x0000000c); + return; +} + + + +/* @004d7fa8 file=? name=FUN_004d7fa8 */ + +void __cdecl FUN_004d7fa8(undefined4 param_1,byte *param_2,undefined4 *param_3) + +{ + FUN_004d773c(FUN_004d7f58,FUN_004d7f78,¶m_1,param_2,param_3); + return; +} + + + +/* @004d8080 file=? name=FUN_004d8080 */ + +void __cdecl FUN_004d8080(undefined4 param_1,char *param_2,uint *param_3) + +{ + FUN_004d812c(FUN_004d6fa0,param_1,param_2,param_3); + return; +} + + + +/* @004d80a0 file=? name=FUN_004d80a0 */ + +void __cdecl FUN_004d80a0(int param_1) + +{ + int iVar1; + + if (*(int *)(param_1 + 0x50) != 0) { + iVar1 = (**(code **)(param_1 + 0x54)) + (param_1,*(int *)(param_1 + 0x50),*(undefined4 *)(param_1 + 0x58)); + if (iVar1 == 0) { + *(undefined4 *)(param_1 + 0x60) = 1; + } + *(undefined4 *)(param_1 + 0x50) = 0; + } + return; +} + + + +/* @004d80d0 file=? name=FUN_004d80d0 */ + +void __cdecl FUN_004d80d0(undefined1 param_1,int param_2) + +{ + if (0x4f < *(int *)(param_2 + 0x50)) { + FUN_004d80a0(param_2); + } + *(undefined1 *)(param_2 + *(int *)(param_2 + 0x50)) = param_1; + *(int *)(param_2 + 0x50) = *(int *)(param_2 + 0x50) + 1; + *(int *)(param_2 + 0x5c) = *(int *)(param_2 + 0x5c) + 1; + return; +} + + + +/* @004d80f8 file=? name=FUN_004d80f8 */ + +void __cdecl FUN_004d80f8(uint param_1,int param_2) + +{ + char *pcVar1; + int iVar2; + char cVar3; + + iVar2 = 7; + pcVar1 = (char *)(param_2 + 7); + do { + cVar3 = (char)(param_1 & 0xf); + if ((param_1 & 0xf) < 10) { + *pcVar1 = cVar3 + '0'; + } + else { + *pcVar1 = cVar3 + '7'; + } + param_1 = param_1 >> 4; + iVar2 = iVar2 + -1; + pcVar1 = pcVar1 + -1; + } while (-1 < iVar2); + return; +} + + + +/* @004d812c file=? name=FUN_004d812c */ + +undefined4 __cdecl FUN_004d812c(undefined4 param_1,undefined4 param_2,char *param_3,uint *param_4) + +{ + uint *puVar1; + int iVar2; + uint uVar3; + bool bVar4; + bool bVar5; + bool bVar6; + bool bVar7; + bool bVar8; + uint uVar9; + char cVar10; + char *pcVar11; + uint uVar12; + bool bVar13; + undefined1 local_c0 [80]; + undefined4 local_70; + undefined4 local_6c; + undefined4 local_68; + undefined4 local_64; + int local_60; + char local_5c [8]; + undefined1 local_54; + uint local_2c; + uint local_28; + uint local_24; + char *local_20; + char local_19; + char *local_18; + int local_14; + char local_d; + uint local_c; + uint local_8; + + local_60 = 0; + local_64 = 0; + local_70 = 0; + local_6c = param_1; + local_68 = param_2; +LAB_004d8152: + pcVar11 = param_3; + cVar10 = *pcVar11; + param_3 = pcVar11 + 1; + if (cVar10 != '\0') { + if (cVar10 == '%') { + if (*param_3 != '%') { + uVar9 = 0; + local_d = '\0'; + local_14 = 0; + uVar12 = 0; + bVar7 = false; + bVar13 = false; + bVar6 = false; + bVar5 = false; + local_c = 0xffffffff; + local_8 = 0xffffffff; +switchD_004d81b8_default: + bVar4 = false; + cVar10 = *param_3; + param_3 = param_3 + 1; + local_18 = pcVar11; + if (cVar10 < ' ') goto switchD_004d81b8_caseD_13; + switch((&DAT_0052015b)[cVar10]) { + case 0: + local_18 = pcVar11; + if (uVar9 != 0) goto switchD_004d81b8_caseD_13; + if (local_d != '+') { + local_d = cVar10; + } + goto switchD_004d81b8_default; + case 1: + local_18 = pcVar11; + if (uVar9 != 0) goto switchD_004d81b8_caseD_13; + uVar12 = 1; + goto switchD_004d81b8_default; + case 2: + uVar3 = *param_4; + if (uVar9 < 2) { + local_8 = uVar3; + if ((int)uVar3 < 0) { + bVar5 = true; + local_8 = -uVar3; + } + uVar9 = 3; + param_4 = param_4 + 1; + } + else { + local_18 = pcVar11; + if (uVar9 != 4) goto switchD_004d81b8_caseD_13; + uVar9 = 5; + param_4 = param_4 + 1; + local_c = uVar3; + } + goto switchD_004d81b8_default; + case 3: + local_18 = pcVar11; + if (uVar9 != 0) goto switchD_004d81b8_caseD_13; + bVar5 = true; + goto switchD_004d81b8_default; + case 4: + local_18 = pcVar11; + if (3 < uVar9) goto switchD_004d81b8_caseD_13; + uVar9 = 4; + local_c = local_c + 1; + goto switchD_004d81b8_default; + case 5: + goto switchD_004d81b8_caseD_5; + case 6: + bVar6 = true; + uVar9 = 5; + goto switchD_004d81b8_default; + case 7: + bVar6 = false; + uVar9 = 5; + goto switchD_004d81b8_default; + case 8: + bVar7 = true; + bVar6 = false; + uVar9 = 5; + goto switchD_004d81b8_default; + case 9: + if (uVar9 == 0) { + if (!bVar5) { + bVar13 = true; + uVar9 = 1; + } + } + else { +switchD_004d81b8_caseD_5: + cVar10 = cVar10 + -0x30; + if (uVar9 < 3) { + uVar9 = 2; + if (local_8 == 0xffffffff) { + local_8 = (uint)cVar10; + } + else { + local_8 = local_8 * 10 + (int)cVar10; + } + } + else { + local_18 = pcVar11; + if (uVar9 != 4) goto switchD_004d81b8_caseD_13; + local_c = local_c * 10 + (int)cVar10; + } + } + goto switchD_004d81b8_default; + case 10: + goto switchD_004d81b8_caseD_a; + case 0xb: + local_24 = 8; + break; + case 0xc: + local_24 = 10; + break; + case 0xd: + local_24 = 0x10; + local_19 = cVar10 + -0x17; + break; + case 0xe: + local_20 = (char *)*param_4; + FUN_004d80f8((uint)local_20,(int)local_5c); + local_54 = 0; + local_20 = local_5c; + param_4 = param_4 + 1; + goto LAB_004d8548; + case 0xf: + local_20 = local_5c + 1; + thunk_FUN_004dd24c(); + param_4 = (uint *)thunk_FUN_004dd24c(); + goto LAB_004d8548; + case 0x10: + local_5c[0] = (char)*param_4; + local_5c[1] = 0; + local_20 = local_5c; + local_2c = 1; + param_4 = param_4 + 1; + goto LAB_004d85b9; + case 0x11: + puVar1 = param_4 + 1; + local_20 = (char *)*param_4; + if (local_20 == (char *)0x0) { + local_20 = &DAT_00520174; + } + local_2c = FUN_004d4a78(local_20); + param_4 = puVar1; + if (((int)local_c < (int)local_2c) && (-1 < (int)local_c)) { + local_2c = local_c; + } + goto LAB_004d85b9; + case 0x12: + puVar1 = param_4 + 1; + local_20 = (char *)*param_4; + param_4 = puVar1; + if (bVar6) { + *(undefined4 *)local_20 = local_64; + } + else if (bVar7) { + *(undefined2 *)local_20 = (undefined2)local_64; + } + else { + *(undefined4 *)local_20 = local_64; + } + goto LAB_004d8152; + case 0x13: + case 0x14: + case 0x15: + goto switchD_004d81b8_caseD_13; + case 0x16: + uVar9 = 5; + goto switchD_004d81b8_default; + case 0x17: + uVar9 = 5; + default: + goto switchD_004d81b8_default; + } + local_d = '\0'; + bVar8 = false; + goto LAB_004d8398; + } + param_3 = pcVar11 + 2; + cVar10 = '%'; + } + FUN_004d80d0(cVar10,(int)local_c0); + goto LAB_004d8152; + } + goto LAB_004d8763; +switchD_004d81b8_caseD_a: + local_24 = 10; + bVar8 = true; +LAB_004d8398: + if (bVar6) { + uVar9 = *param_4; + } + else if (bVar7) { + if (bVar8) { + uVar9 = (uint)(short)(ushort)*param_4; + } + else { + uVar9 = (uint)(ushort)*param_4; + } + } + else { + uVar9 = *param_4; + } + param_4 = param_4 + 1; + local_20 = local_5c + 1; + if (uVar9 == 0) { + if (local_c == 0) { + local_5c[1] = 0; + goto LAB_004d840a; + } + } + else { + uVar12 = uVar12 | 4; + } + FUN_004dd35c(uVar9,local_20,local_24,bVar8,local_19); +LAB_004d840a: + if ((int)local_c < 0) { +LAB_004d8548: + if ((bVar13) && (0 < (int)local_8)) { + local_2c = FUN_004d4a78(local_20); + if (*local_20 == '-') { + local_2c = local_2c + -1; + } + if ((int)local_2c < (int)local_8) { + local_14 = local_8 - local_2c; + } + } + if ((*local_20 == '-') || (local_d != '\0')) { + if (*local_20 != '-') { + local_20 = local_20 + -1; + *local_20 = local_d; + } + if ((0 < local_14) && ((int)local_c < 0)) { + local_14 = local_14 + -1; + } + } + local_2c = FUN_004d4a78(local_20); + } + else { + local_28 = FUN_004d4a78(local_20); + local_2c = local_28; + if (*local_20 == '-') { + local_28 = local_28 - 1; + } + else if (local_d != '\0') { + local_2c = local_28 + 1; + local_20 = local_20 + -1; + *local_20 = local_d; + } + if ((int)local_28 < (int)local_c) { + local_14 = local_c - local_28; + } + } +LAB_004d85b9: + if (uVar12 == 5) { + if (cVar10 == 'o') { + if (local_14 < 1) { + local_14 = 1; + } + } + else if ((cVar10 == 'x') || (cVar10 == 'X')) { + bVar4 = true; + local_8 = local_8 - 2; + local_14 = local_14 + -2; + if (local_14 < 0) { + local_14 = 0; + } + } + } + local_2c = local_2c + local_14; + if ((!bVar5) && ((int)local_2c < (int)local_8)) { + do { + FUN_004d80d0(0x20,(int)local_c0); + local_8 = local_8 - 1; + } while ((int)local_2c < (int)local_8); + } + if (bVar4) { + FUN_004d80d0(0x30,(int)local_c0); + FUN_004d80d0(cVar10,(int)local_c0); + } + if (0 < local_14) { + local_2c = local_2c - local_14; + local_8 = local_8 - local_14; + cVar10 = *local_20; + if (((cVar10 == '-') || (cVar10 == ' ')) || (cVar10 == '+')) { + cVar10 = *local_20; + local_20 = local_20 + 1; + FUN_004d80d0(cVar10,(int)local_c0); + local_2c = local_2c + -1; + local_8 = local_8 - 1; + } + while (iVar2 = local_14 + -1, bVar13 = local_14 != 0, local_14 = iVar2, bVar13) { + FUN_004d80d0(0x30,(int)local_c0); + } + } + if (local_2c != 0) { + local_8 = local_8 - local_2c; + while (local_2c != 0) { + cVar10 = *local_20; + local_2c = local_2c + -1; + local_20 = local_20 + 1; + FUN_004d80d0(cVar10,(int)local_c0); + } + local_2c = -1; + } + while (uVar12 = local_8 - 1, bVar13 = 0 < (int)local_8, local_8 = uVar12, bVar13) { + FUN_004d80d0(0x20,(int)local_c0); + } + goto LAB_004d8152; +switchD_004d81b8_caseD_13: + while( true ) { + pcVar11 = local_18 + 1; + cVar10 = *local_18; + local_18 = pcVar11; + if (cVar10 == '\0') break; + FUN_004d80d0(cVar10,(int)local_c0); + } +LAB_004d8763: + FUN_004d80a0((int)local_c0); + if (local_60 != 0) { + local_64 = 0xffffffff; + } + return local_64; +} + + + +/* @004d87d4 file=? name=FUN_004d87d4 */ + +undefined4 __cdecl FUN_004d87d4(undefined1 *param_1) + +{ + if (param_1 != (undefined1 *)0x0) { + *param_1 = 0; + } + return 0; +} + + + +/* @004d87e8 file=? name=FUN_004d87e8 */ + +int FUN_004d87e8(void) + +{ + int *piVar1; + int iVar2; + int iVar3; + + iVar3 = 0; + piVar1 = &DAT_0051f800; + iVar2 = DAT_0051fbc0; + while (iVar2 != 0) { + if ((*(byte *)((int)piVar1 + 0x12) & 3) != 0) { + FUN_004d6b9c(piVar1); + iVar3 = iVar3 + 1; + } + piVar1 = piVar1 + 6; + iVar2 = iVar2 + -1; + } + return iVar3; +} + + + +/* @004d8834 file=? name=FUN_004d8834 */ + +uint __cdecl FUN_004d8834(uint param_1) + +{ + uint uVar1; + DWORD DVar2; + DWORD DVar3; + DWORD DVar4; + + if (param_1 < DAT_0051fbc0) { + if (((&DAT_0051fbc4)[param_1] & 0x200) == 0) { + if (((&DAT_0051fbc4)[param_1] & 0x2000) == 0) { + DVar2 = FUN_004d9334(param_1,0,1); + if (DVar2 == 0xffffffff) { + uVar1 = 0xffffffff; + } + else { + DVar3 = FUN_004d9334(param_1,0,2); + if (DVar3 == 0xffffffff) { + uVar1 = 0xffffffff; + } + else { + DVar4 = FUN_004d9334(param_1,DVar2,0); + if (DVar4 == 0xffffffff) { + uVar1 = 0xffffffff; + } + else { + uVar1 = (uint)((int)DVar3 <= (int)DVar2); + } + } + } + } + else { + uVar1 = 0; + } + } + else { + uVar1 = 1; + } + } + else { + uVar1 = FUN_004d9148(-6); + } + return uVar1; +} + + + /* @004d88c0 file=? name=FUN_004d88c0 */ char * __cdecl FUN_004d88c0(char *param_1,int param_2) @@ -564,7 +6854,7 @@ void FUN_004d9004(void) if (UVar2 < DAT_0051fbc0) { DAT_0051fbc0 = UVar2; } - PTR_LAB_005201e0 = FUN_004d8f70; + PTR_FUN_005201e0 = FUN_004d8f70; bVar1 = false; GetStartupInfoA(&local_50); if (local_50.cbReserved2 != 0) { @@ -1125,6 +7415,33 @@ undefined4 * __cdecl FUN_004d9d34(undefined4 *param_1) +/* @004d9db0 file=? name=FUN_004d9db0 */ + +undefined4 * __cdecl FUN_004d9db0(undefined4 *param_1,undefined4 param_2) + +{ + uint uVar1; + uint uVar2; + + FUN_004dc35c(param_1); + *param_1 = &PTR_FUN_0052050c; + param_1[10] = param_2; + *(undefined2 *)(param_1 + 0xc) = 1; + param_1[0xb] = 0; + *(undefined4 *)((int)param_1 + 0x32) = 0; + uVar2 = FUN_004022b0(0x204); + if (uVar2 != 0) { + FUN_004dc4fc((int)param_1,uVar2,uVar2 + 0x204,1); + uVar1 = uVar2 + 4; + FUN_004dc598((int)param_1,uVar1,uVar1); + FUN_004dc564((int)param_1,uVar2,uVar1,uVar1); + } + *DAT_00524c68 = *DAT_00524c68 + 1; + return param_1; +} + + + /* @004d9e28 file=? name=FUN_004d9e28 */ void __cdecl FUN_004d9e28(int *param_1,byte param_2) @@ -1286,6 +7603,249 @@ int __cdecl FUN_004d9f60(int param_1,LPCSTR param_2,uint param_3,uint param_4) +/* @004da090 file=? name=FUN_004da090 */ + +int __cdecl FUN_004da090(int param_1,uint param_2,int param_3) + +{ + int iVar1; + + if ((*(short *)(param_1 + 0x30) == 0) || (*(int *)(param_1 + 8) == 0)) { + if ((param_2 == 0) || (param_3 < 1)) { + param_3 = 0; + iVar1 = 0; + param_2 = 0; + } + else { + iVar1 = 4; + if (param_3 < 9) { + iVar1 = 1; + } + } + FUN_004dc4fc(param_1,param_2,param_3 + param_2,0); + FUN_004dc598(param_1,iVar1 + param_2,iVar1 + param_2); + FUN_004dc564(param_1,param_2,iVar1 + param_2,iVar1 + param_2); + } + else { + param_1 = 0; + } + return param_1; +} + + + +/* @004da108 file=? name=FUN_004da108 */ + +undefined4 __cdecl FUN_004da108(int param_1,int param_2,int param_3) + +{ + char cVar1; + uint uVar2; + char *pcVar3; + DWORD DVar4; + undefined4 uVar5; + char *pcVar6; + int iVar7; + int local_8; + + local_8 = param_2; + if (*(int *)(param_1 + 0x14) == 0) { + pcVar6 = (char *)0x0; + } + else { + pcVar6 = (char *)(*(int *)(param_1 + 0x14) - *(int *)(param_1 + 0x10)); + } + if (pcVar6 == (char *)0x0) { + if (param_3 == 1) { + if (*(uint *)(param_1 + 0x20) < *(uint *)(param_1 + 0x24)) { + iVar7 = *(int *)(param_1 + 0x24) - *(int *)(param_1 + 0x20); + } + else { + iVar7 = 0; + } + if ((iVar7 != 0) && (local_8 = param_2 - iVar7, (*(byte *)(param_1 + 0x2c) & 0x80) == 0)) { + pcVar6 = *(char **)(param_1 + 0x20); + while (pcVar6 != *(char **)(param_1 + 0x24)) { + cVar1 = *pcVar6; + pcVar6 = pcVar6 + 1; + if (cVar1 == '\n') { + local_8 = local_8 + -1; + } + } + } + } + } + else { + pcVar3 = thunk_FUN_004d8b14(*(uint *)(param_1 + 0x28),*(char **)(param_1 + 0x10),pcVar6); + if (pcVar6 != pcVar3) { + return 0xffffffff; + } + } + if (param_3 == 0) { + iVar7 = 0; + } + else { + iVar7 = 1; + if (param_3 != 1) { + iVar7 = 2; + } + } + DVar4 = thunk_FUN_004d9334(*(uint *)(param_1 + 0x28),local_8,iVar7); + *(DWORD *)(param_1 + 0x32) = DVar4; + if ((*(short *)(param_1 + 6) == 0) && (*(int *)(param_1 + 8) != 0)) { + iVar7 = 4; + if (*(int *)(param_1 + 0xc) - *(int *)(param_1 + 8) < 9) { + iVar7 = 1; + } + uVar2 = *(uint *)(param_1 + 8); + FUN_004dc598(param_1,iVar7 + uVar2,iVar7 + uVar2); + FUN_004dc564(param_1,uVar2,iVar7 + uVar2,iVar7 + uVar2); + } + if (*(int *)(param_1 + 0x32) == -1) { + uVar5 = 0xffffffff; + } + else { + uVar5 = *(undefined4 *)(param_1 + 0x32); + } + return uVar5; +} + + + +/* @004da208 file=? name=FUN_004da208 */ + +undefined4 __cdecl FUN_004da208(int param_1) + +{ + uint uVar1; + undefined4 uVar2; + char *pcVar3; + DWORD DVar4; + char *pcVar5; + int iVar6; + + if (*(short *)(param_1 + 0x30) == 0) { + uVar2 = 0xffffffff; + } + else { + if (*(int *)(param_1 + 0x14) == 0) { + pcVar5 = (char *)0x0; + } + else { + pcVar5 = (char *)(*(int *)(param_1 + 0x14) - *(int *)(param_1 + 0x10)); + } + if (pcVar5 == (char *)0x0) { + if (*(uint *)(param_1 + 0x20) < *(uint *)(param_1 + 0x24)) { + iVar6 = *(int *)(param_1 + 0x24) - *(int *)(param_1 + 0x20); + } + else { + iVar6 = 0; + } + if (iVar6 != 0) { + if (*(uint *)(param_1 + 0x20) < *(uint *)(param_1 + 0x24)) { + iVar6 = *(int *)(param_1 + 0x24) - *(int *)(param_1 + 0x20); + } + else { + iVar6 = 0; + } + DVar4 = thunk_FUN_004d9334(*(uint *)(param_1 + 0x28),-iVar6,1); + *(DWORD *)(param_1 + 0x32) = DVar4; + FUN_004dc564(param_1,*(uint *)(param_1 + 0x1c),*(uint *)(param_1 + 0x20), + *(uint *)(param_1 + 0x20)); + FUN_004dc598(param_1,*(uint *)(param_1 + 0x20),*(uint *)(param_1 + 0x20)); + if (*(int *)(param_1 + 0x32) == -1) { + return 0xffffffff; + } + } + } + else { + pcVar3 = thunk_FUN_004d8b14(*(uint *)(param_1 + 0x28),*(char **)(param_1 + 0x10),pcVar5); + if (pcVar5 != pcVar3) { + return 0xffffffff; + } + iVar6 = 4; + if (*(int *)(param_1 + 0xc) - *(int *)(param_1 + 8) < 9) { + iVar6 = 1; + } + uVar1 = *(uint *)(param_1 + 8); + FUN_004dc598(param_1,iVar6 + uVar1,(*(int *)(param_1 + 0xc) - uVar1) + uVar1); + FUN_004dc564(param_1,uVar1,iVar6 + uVar1,iVar6 + uVar1); + } + uVar2 = 0; + } + return uVar2; +} + + + +/* @004da300 file=? name=FUN_004da300 */ + +uint __cdecl FUN_004da300(int *param_1) + +{ + char *pcVar1; + uint uVar2; + int iVar3; + char *pcVar4; + uint local_8; + + if (((short)param_1[0xc] == 0) || ((param_1[0xb] & 3U) == 2)) { + local_8 = 0xffffffff; + } + else { + if ((uint)param_1[8] < (uint)param_1[9]) { + iVar3 = param_1[9] - param_1[8]; + } + else { + iVar3 = 0; + } + if (iVar3 == 0) { + if ((*(short *)((int)param_1 + 6) == 0) && (param_1[2] != 0)) { + iVar3 = (**(code **)(*param_1 + 0x24))(param_1); + if (iVar3 != 0) { + return 0xffffffff; + } + iVar3 = 4; + if (param_1[3] - param_1[2] < 9) { + iVar3 = 1; + } + uVar2 = param_1[2]; + pcVar4 = thunk_FUN_004d892c(param_1[10],(char *)(uVar2 + iVar3), + (char *)((param_1[3] - uVar2) - iVar3)); + if (pcVar4 == (char *)0xffffffff) { + return 0xffffffff; + } + FUN_004dc564((int)param_1,uVar2,uVar2 + iVar3,(uint)(pcVar4 + uVar2 + iVar3)); + FUN_004dc598((int)param_1,iVar3 + uVar2,uVar2 + iVar3); + if (pcVar4 != (char *)0x0) { + local_8 = (uint)*(byte *)param_1[8]; + } + } + else { + pcVar1 = (char *)((int)param_1 + 0x3a); + pcVar4 = thunk_FUN_004d892c(param_1[10],pcVar1,(char *)0x1); + if (pcVar4 == (char *)0xffffffff) { + local_8 = 0xffffffff; + FUN_004dc564((int)param_1,0,0,0); + } + else { + local_8 = (uint)*(byte *)((int)param_1 + 0x3a); + FUN_004dc564((int)param_1,(uint)pcVar1,(uint)pcVar1,(int)param_1 + 0x3b); + } + } + if (pcVar4 == (char *)0x0) { + local_8 = 0xffffffff; + } + } + else { + local_8 = (uint)*(byte *)param_1[8]; + } + } + return local_8; +} + + + /* @004da44c file=? name=FUN_004da44c */ void __cdecl FUN_004da44c(int *param_1) @@ -2713,8 +9273,6 @@ LAB_004dbd35: /* @004dbd4c file=? name=FUN_004dbd4c */ -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - undefined8 __cdecl FUN_004dbd4c(int *param_1,uint param_2) { @@ -2727,7 +9285,7 @@ undefined8 __cdecl FUN_004dbd4c(int *param_1,uint param_2) iVar3 = *param_1; uVar4 = *(uint *)(iVar3 + 0x18); cVar1 = *(char *)(iVar3 + 0x24); - FUN_004dc7d4(iVar3,200,DAT_0052078c | _DAT_00520790 | 0x80); + FUN_004dc7d4(iVar3,200,DAT_0052078c | DAT_00520790 | 0x80); iVar3 = *param_1; *(undefined4 *)(iVar3 + 0x24) = 0x30; *(undefined4 *)(iVar3 + 0x20) = 10; @@ -2774,6 +9332,41 @@ void FUN_004dbdf6(void) +/* @004dbdfc file=? name=FUN_004dbdfc */ + +undefined4 __cdecl FUN_004dbdfc(int param_1) + +{ + undefined1 *puVar1; + undefined4 uVar2; + uint uVar3; + + if (*(int *)(param_1 + 0x32) == 0) { + uVar3 = 0x10; + } + else { + uVar3 = *(uint *)(param_1 + 0x32); + } + if (*(int *)(param_1 + 0x28) == 0) { + puVar1 = (undefined1 *)FUN_004022b0(uVar3); + } + else { + puVar1 = (undefined1 *)(**(code **)(param_1 + 0x28))(uVar3); + } + if (puVar1 == (undefined1 *)0x0) { + uVar2 = 0xffffffff; + } + else { + *(undefined4 *)(param_1 + 0x32) = 0; + FUN_004dc4fc(param_1,(uint)puVar1,(uint)(puVar1 + uVar3),0); + *puVar1 = 0; + uVar2 = 1; + } + return uVar2; +} + + + /* @004dbe58 file=? name=FUN_004dbe58 */ void __cdecl FUN_004dbe58(int *param_1,byte param_2) @@ -2895,6 +9488,142 @@ uint __cdecl FUN_004dbf44(int *param_1,byte param_2) +/* @004dc098 file=? name=FUN_004dc098 */ + +int __cdecl FUN_004dc098(int param_1,int param_2,int param_3) + +{ + if (param_2 != 0) { + return 0; + } + if (4 < param_3) { + *(int *)(param_1 + 0x32) = param_3; + } + return param_1; +} + + + +/* @004dc0b8 file=? name=FUN_004dc0b8 */ + +int __cdecl FUN_004dc0b8(int param_1,int param_2,int param_3,byte param_4) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + int iVar4; + + if (param_3 == 2) { + if (((*(byte *)(param_1 + 0x30) & 4) == 0) && (param_2 < 1)) { + iVar4 = (*(int *)(param_1 + 0xc) - *(int *)(param_1 + 8)) + param_2; + } + else { + iVar4 = -1; + } + } + else { + iVar4 = -1; + if (param_3 == 0) { + iVar4 = param_2; + } + } + if ((param_4 & 1) != 0) { + if (param_3 == 1) { + if (*(int *)(param_1 + 0x20) == 0) { + iVar4 = param_2; + if (*(int *)(param_1 + 0x14) != 0) { + iVar4 = (*(int *)(param_1 + 0x14) - *(int *)(param_1 + 8)) + param_2; + } + } + else { + iVar4 = (*(int *)(param_1 + 0x20) - *(int *)(param_1 + 8)) + param_2; + } + } + if ((iVar4 < 0) || (*(int *)(param_1 + 0xc) - *(int *)(param_1 + 8) < iVar4)) { + iVar4 = -1; + } + else { + uVar1 = *(int *)(param_1 + 8) + iVar4; + uVar2 = uVar1; + if ((*(uint *)(param_1 + 0x1c) != 0) && (*(uint *)(param_1 + 0x1c) < uVar1)) { + uVar2 = *(uint *)(param_1 + 0x1c); + } + uVar3 = uVar1; + if ((*(int *)(param_1 + 0x24) != 0) && (uVar1 < *(uint *)(param_1 + 0x24))) { + uVar3 = *(uint *)(param_1 + 0x24); + } + FUN_004dc564(param_1,uVar2,uVar1,uVar3); + } + } + if ((param_4 & 2) != 0) { + if (param_3 == 1) { + if (*(int *)(param_1 + 0x14) == 0) { + iVar4 = param_2; + if (*(int *)(param_1 + 0x20) != 0) { + iVar4 = (*(int *)(param_1 + 0x20) - *(int *)(param_1 + 8)) + param_2; + } + } + else { + iVar4 = (*(int *)(param_1 + 0x14) - *(int *)(param_1 + 8)) + param_2; + } + } + if ((iVar4 < 0) || (*(int *)(param_1 + 0xc) - *(int *)(param_1 + 8) < iVar4)) { + iVar4 = -1; + } + else { + uVar2 = *(int *)(param_1 + 8) + iVar4; + if ((*(uint *)(param_1 + 0x18) == 0) || (*(uint *)(param_1 + 0x18) <= uVar2)) { + uVar1 = *(uint *)(param_1 + 0xc); + } + else { + uVar1 = *(uint *)(param_1 + 0x18); + } + FUN_004dc598(param_1,uVar2,uVar1); + } + } + return iVar4; +} + + + +/* @004dc1d8 file=? name=FUN_004dc1d8 */ + +undefined4 FUN_004dc1d8(void) + +{ + return 0; +} + + + +/* @004dc1e0 file=? name=FUN_004dc1e0 */ + +uint __cdecl FUN_004dc1e0(int param_1) + +{ + if (*(byte **)(param_1 + 0x20) < *(byte **)(param_1 + 0x24)) { + return (uint)**(byte **)(param_1 + 0x20); + } + if (((*(int *)(param_1 + 8) != 0) && (*(short *)(param_1 + 6) == 0)) && + (*(uint *)(param_1 + 0x10) < *(uint *)(param_1 + 0x14))) { + if ((*(uint *)(param_1 + 0x20) == 0) || (*(uint *)(param_1 + 0x20) < *(uint *)(param_1 + 0x10))) + { + FUN_004dc564(param_1,*(uint *)(param_1 + 8),*(uint *)(param_1 + 0x10), + *(uint *)(param_1 + 0x14)); + return (uint)**(byte **)(param_1 + 0x20); + } + if (*(uint *)(param_1 + 0x20) < *(uint *)(param_1 + 0x14)) { + FUN_004dc564(param_1,*(uint *)(param_1 + 0x1c),*(uint *)(param_1 + 0x20), + *(uint *)(param_1 + 0x14)); + return (uint)**(byte **)(param_1 + 0x20); + } + } + return 0xffffffff; +} + + + /* @004dc260 file=? name=FUN_004dc260 */ int * __cdecl FUN_004dc260(int *param_1,short param_2,char *param_3,int param_4,char *param_5) @@ -2936,6 +9665,25 @@ void __cdecl FUN_004dc2c8(int *param_1,uint param_2) +/* @004dc324 file=? name=FUN_004dc324 */ + +undefined4 __cdecl FUN_004dc324(int param_1) + +{ + int iVar1; + + iVar1 = FUN_004022b0(0x400); + if (iVar1 == 0) { + return 0xffffffff; + } + *(int *)(param_1 + 8) = iVar1; + *(int *)(param_1 + 0xc) = iVar1 + 0x400; + *(undefined2 *)(param_1 + 4) = 1; + return 1; +} + + + /* @004dc35c file=? name=FUN_004dc35c */ void __cdecl FUN_004dc35c(undefined4 *param_1) @@ -2958,6 +9706,52 @@ void __cdecl FUN_004dc35c(undefined4 *param_1) +/* @004dc3a8 file=? name=FUN_004dc3a8 */ + +uint __cdecl FUN_004dc3a8(int *param_1,undefined4 *param_2,int param_3) + +{ + byte *pbVar1; + int iVar2; + uint uVar3; + uint uVar4; + undefined1 local_8; + + if ((uint)param_1[8] < (uint)param_1[9]) { + uVar4 = param_1[9] - param_1[8]; + } + else { + uVar4 = 0; + } + if (0 < (int)uVar4) { + FUN_004d4918(param_2,(undefined4 *)param_1[8],uVar4); + param_2 = (undefined4 *)((int)param_2 + uVar4); + param_1[8] = param_1[8] + uVar4; + } + while( true ) { + if (param_3 <= (int)uVar4) { + return uVar4; + } + if (((uint)param_1[8] < (uint)param_1[9]) || + (iVar2 = (**(code **)(*param_1 + 0xc))(param_1), iVar2 != -1)) { + pbVar1 = (byte *)param_1[8]; + param_1[8] = param_1[8] + 1; + uVar3 = (uint)*pbVar1; + } + else { + uVar3 = 0xffffffff; + } + if (uVar3 == 0xffffffff) break; + local_8 = (undefined1)uVar3; + *(undefined1 *)param_2 = local_8; + param_2 = (undefined4 *)((int)param_2 + 1); + uVar4 = uVar4 + 1; + } + return uVar4; +} + + + /* @004dc41c file=? name=FUN_004dc41c */ uint __cdecl FUN_004dc41c(int *param_1,byte *param_2,uint param_3) @@ -3017,6 +9811,16 @@ void __cdecl FUN_004dc48c(int *param_1,byte param_2) +/* @004dc4c8 file=? name=FUN_004dc4c8 */ + +undefined4 FUN_004dc4c8(void) + +{ + return 0xffffffff; +} + + + /* @004dc4d0 file=? name=FUN_004dc4d0 */ undefined4 FUN_004dc4d0(void) @@ -3102,6 +9906,16 @@ void __cdecl FUN_004dc598(int param_1,uint param_2,uint param_3) +/* @004dc5c0 file=? name=FUN_004dc5c0 */ + +undefined4 FUN_004dc5c0(void) + +{ + return 0xffffffff; +} + + + /* @004dc5c8 file=? name=FUN_004dc5c8 */ void __cdecl FUN_004dc5c8(int *param_1,undefined4 param_2,undefined4 param_3) @@ -3130,6 +9944,49 @@ uint __cdecl FUN_004dc5e4(int *param_1,undefined4 *param_2,uint param_3) +/* @004dc628 file=? name=FUN_004dc628 */ + +undefined4 __cdecl FUN_004dc628(int param_1) + +{ + int iVar1; + + if (*(uint *)(param_1 + 0x20) < *(uint *)(param_1 + 0x24)) { + iVar1 = *(int *)(param_1 + 0x24) - *(int *)(param_1 + 0x20); + } + else { + iVar1 = 0; + } + if (iVar1 == 0) { + if (*(int *)(param_1 + 0x14) == 0) { + iVar1 = 0; + } + else { + iVar1 = *(int *)(param_1 + 0x14) - *(int *)(param_1 + 0x10); + } + if (iVar1 == 0) { + return 0; + } + } + return 0xffffffff; +} + + + +/* @004dc660 file=? name=FUN_004dc660 */ + +uint __cdecl FUN_004dc660(int param_1) + +{ + if (*(byte **)(param_1 + 0x20) < *(byte **)(param_1 + 0x24)) { + return (uint)**(byte **)(param_1 + 0x20); + } + *(byte **)(param_1 + 0x20) = *(byte **)(param_1 + 0x24); + return 0xffffffff; +} + + + /* @004dc680 file=? name=FUN_004dc680 */ void __cdecl FUN_004dc680(int param_1,uint param_2) @@ -3219,6 +10076,35 @@ void __cdecl FUN_004dc738(int param_1,undefined4 param_2) +/* @004dc77c file=? name=FUN_004dc77c */ + +undefined4 __cdecl FUN_004dc77c(int param_1,uint param_2) + +{ + undefined4 uVar1; + + uVar1 = *(undefined4 *)(param_1 + 0x18); + if ((DAT_00520790 & param_2) != 0) { + *(uint *)(param_1 + 0x18) = *(uint *)(param_1 + 0x18) & ~DAT_00520790; + } + if ((DAT_0052078c & param_2) != 0) { + *(uint *)(param_1 + 0x18) = *(uint *)(param_1 + 0x18) & ~DAT_0052078c; + } + if ((DAT_00520794 & param_2) != 0) { + *(uint *)(param_1 + 0x18) = *(uint *)(param_1 + 0x18) & ~DAT_00520794; + } + *(uint *)(param_1 + 0x18) = *(uint *)(param_1 + 0x18) | param_2; + if ((*(byte *)(param_1 + 0x18) & 1) == 0) { + *(uint *)(param_1 + 0x10) = *(uint *)(param_1 + 0x10) & 0xfffffeff; + } + else { + *(uint *)(param_1 + 0x10) = *(uint *)(param_1 + 0x10) | 0x100; + } + return uVar1; +} + + + /* @004dc7d4 file=? name=FUN_004dc7d4 */ undefined4 __cdecl FUN_004dc7d4(int param_1,uint param_2,uint param_3) @@ -3253,6 +10139,41 @@ void __cdecl FUN_004dc80c(int param_1,uint param_2) +/* @004dc838 file=? name=FUN_004dc838 */ + +int * __cdecl FUN_004dc838(int param_1,int param_2) + +{ + int *piVar1; + + piVar1 = *(int **)(param_1 + 8); + if (piVar1 != (int *)0x0) { + FUN_004db6b4(piVar1); + } + *(int *)(param_1 + 8) = param_2; + if (param_2 == 0) { + *(uint *)(param_1 + 0x10) = *(uint *)(param_1 + 0x10) & 0xfffffdff; + *(uint *)(param_1 + 0x14) = *(uint *)(param_1 + 0x14) & 0xfffffdff; + } + else { + *(uint *)(param_1 + 0x10) = *(uint *)(param_1 + 0x10) | 0x200; + *(uint *)(param_1 + 0x14) = *(uint *)(param_1 + 0x14) | 0x200; + } + return piVar1; +} + + + +/* @004dc880 file=? name=FUN_004dc880 */ + +void FUN_004dc880(void) + +{ + return; +} + + + /* @004dc888 file=? name=FUN_004dc888 */ void FUN_004dc888(void) @@ -3772,6 +10693,19 @@ undefined4 FUN_004dcd94(void) +/* @004dcdbc file=? name=FUN_004dcdbc */ + +float10 __cdecl FUN_004dcdbc(longlong *param_1) + +{ + if ((longlong)(*param_1 & -0x8000000000000000) == 0) { + return (float10)*param_1; + } + return (float10)CONCAT28(0x403e,*param_1); +} + + + /* @004dcdec file=? name=FUN_004dcdec */ void __cdecl FUN_004dcdec(longlong *param_1,float10 *param_2) @@ -3994,6 +10928,23 @@ undefined4 __cdecl FUN_004dd070(undefined4 *param_1) +/* @004dd098 file=? name=FUN_004dd098 */ + +undefined4 __cdecl FUN_004dd098(uint *param_1,uint param_2) + +{ + longlong lVar1; + ulonglong uVar2; + + uVar2 = (ulonglong)*param_1 * 10 + (ulonglong)param_2; + *param_1 = (uint)uVar2; + lVar1 = (ulonglong)param_1[1] * 10 + (uVar2 >> 0x20); + param_1[1] = (uint)lVar1; + return (int)((ulonglong)lVar1 >> 0x20); +} + + + /* @004dd0c8 file=? name=FUN_004dd0c8 */ float10 FUN_004dd0c8(void) @@ -4044,6 +10995,18 @@ float10 __cdecl FUN_004dd138(double param_1) +/* @004dd174 file=? name=FUN_004dd174 */ + +undefined2 FUN_004dd174(void) + +{ + undefined2 in_FPUStatusWord; + + return in_FPUStatusWord; +} + + + /* @004dd188 file=? name=FUN_004dd188 */ void __cdecl FUN_004dd188(undefined4 param_1,undefined4 param_2) @@ -4285,13 +11248,32 @@ void __cdecl FUN_004dd43c(uint param_1,char *param_2,uint param_3) +/* @004dd464 file=? name=FUN_004dd464 */ + +undefined4 __cdecl FUN_004dd464(int *param_1) + +{ + if (*param_1 == 4) { + param_1[7] = 0; + param_1[8] = 0; + *(undefined2 *)(param_1 + 9) = 0; + return 1; + } + if (*param_1 == 5) { + return 1; + } + return 0; +} + + + /* @004dd494 file=? name=FUN_004dd494 */ void __cdecl FUN_004dd494(undefined *param_1,undefined *param_2) { PTR_FUN_005209fc = param_1; - PTR_LAB_00520a00 = param_2; + PTR_FUN_00520a00 = param_2; return; } @@ -4588,6 +11570,260 @@ int __cdecl FUN_004dd7f4(int param_1,int param_2) +/* @004dd861 file=? name=FUN_004dd861 */ + +void __fastcall FUN_004dd861(int param_1) + +{ + int *piVar1; + int *piVar2; + undefined4 *puVar3; + undefined2 in_AX; + uint uVar4; + int iVar5; + uint uVar6; + int unaff_EBP; + int unaff_ESI; + int iVar7; + float10 fVar8; + + *(undefined1 *)(param_1 + 0x4589dc45) = *(undefined1 *)(param_1 + 0x4589dc45); + *(undefined2 *)(unaff_EBP + -0x1c) = in_AX; + *(int *)(unaff_EBP + -0x34) = unaff_EBP + -0x24; + piVar1 = (int *)(unaff_EBP + -0x24); + *(undefined *)(unaff_EBP + -0x3d) = *PTR_DAT_005207a0; + do { + *(int *)(unaff_EBP + -0x14) = *(int *)(unaff_EBP + -0x14) + 1; + uVar4 = (**(code **)(unaff_EBP + 0xc))(*(undefined4 *)(unaff_EBP + 0x14)); + if (uVar4 == 0xffffffff) { + *(undefined4 *)(unaff_EBP + -0x18) = 0xffffffff; + goto LAB_004ddb50; + } + } while (((uVar4 & 0x80) == 0) && (((&DAT_005207dd)[uVar4] & 1) != 0)); + piVar2 = (int *)(unaff_EBP + 0x18); + *piVar2 = *piVar2 + -1; + if (-1 < *piVar2) { + if (uVar4 == 0x2b) { + *(undefined1 *)(unaff_EBP + -0xb) = 1; + } + else { + iVar7 = unaff_ESI; + if (uVar4 != 0x2d) goto LAB_004dd8e2; + *(undefined1 *)(unaff_EBP + -0xb) = 1; + *(undefined1 *)(unaff_EBP + -9) = 1; + } + while( true ) { + piVar2 = (int *)(unaff_EBP + 0x18); + *piVar2 = *piVar2 + -1; + if (*piVar2 < 0) break; + *(int *)(unaff_EBP + -0x14) = *(int *)(unaff_EBP + -0x14) + 1; + uVar4 = (**(code **)(unaff_EBP + 0xc))(*(undefined4 *)(unaff_EBP + 0x14)); + iVar7 = unaff_ESI; +LAB_004dd8e2: + if ((*(char *)(unaff_EBP + -10) == '\x01') && (*(char *)(unaff_EBP + -0xb) != '\0')) { + if (uVar4 == 0x49) { + *(int *)(unaff_EBP + -0x14) = *(int *)(unaff_EBP + -0x14) + 1; + uVar4 = (**(code **)(unaff_EBP + 0xc))(*(undefined4 *)(unaff_EBP + 0x14)); + piVar1 = (int *)(unaff_EBP + 0x18); + *piVar1 = *piVar1 + -1; + if ((*piVar1 < 0) || (uVar4 != 0x4e)) goto LAB_004ddb4b; + *(int *)(unaff_EBP + -0x14) = *(int *)(unaff_EBP + -0x14) + 1; + uVar4 = (**(code **)(unaff_EBP + 0xc))(*(undefined4 *)(unaff_EBP + 0x14)); + piVar1 = (int *)(unaff_EBP + 0x18); + *piVar1 = *piVar1 + -1; + if ((*piVar1 < 0) || (uVar4 != 0x46)) goto LAB_004ddb4b; + if (*(char *)(unaff_EBP + -9) == '\0') { + *(undefined4 *)(unaff_EBP + -0x24) = DAT_00520a64; + *(undefined4 *)(unaff_EBP + -0x20) = DAT_00520a68; + *(undefined2 *)(unaff_EBP + -0x1c) = DAT_00520a6c; + } + else { + *(undefined4 *)(unaff_EBP + -0x24) = DAT_00520a6e; + *(undefined4 *)(unaff_EBP + -0x20) = DAT_00520a72; + *(undefined2 *)(unaff_EBP + -0x1c) = DAT_00520a76; + } + goto LAB_004ddb20; + } + if (uVar4 == 0x4e) { + *(int *)(unaff_EBP + -0x14) = *(int *)(unaff_EBP + -0x14) + 1; + uVar4 = (**(code **)(unaff_EBP + 0xc))(*(undefined4 *)(unaff_EBP + 0x14)); + piVar1 = (int *)(unaff_EBP + 0x18); + *piVar1 = *piVar1 + -1; + if ((*piVar1 < 0) || (uVar4 != 0x41)) goto LAB_004ddb4b; + *(int *)(unaff_EBP + -0x14) = *(int *)(unaff_EBP + -0x14) + 1; + uVar4 = (**(code **)(unaff_EBP + 0xc))(*(undefined4 *)(unaff_EBP + 0x14)); + piVar1 = (int *)(unaff_EBP + 0x18); + *piVar1 = *piVar1 + -1; + if ((*piVar1 < 0) || (uVar4 != 0x4e)) goto LAB_004ddb4b; + if (*(char *)(unaff_EBP + -9) == '\0') { + *(undefined4 *)(unaff_EBP + -0x24) = DAT_00520a78; + *(undefined4 *)(unaff_EBP + -0x20) = DAT_00520a7c; + *(undefined2 *)(unaff_EBP + -0x1c) = DAT_00520a80; + } + else { + *(undefined4 *)(unaff_EBP + -0x24) = DAT_00520a82; + *(undefined4 *)(unaff_EBP + -0x20) = DAT_00520a86; + *(undefined2 *)(unaff_EBP + -0x1c) = DAT_00520a8a; + } + goto LAB_004ddb20; + } + } + *(undefined1 *)(unaff_EBP + -10) = 0; + unaff_ESI = iVar7; + if (uVar4 == (int)*(char *)(unaff_EBP + -0x3d)) { + if (*(int *)(unaff_EBP + -4) != 0x8000) goto LAB_004dd9c8; + if (iVar7 < 1) { + iVar7 = 0; + } + *(int *)(unaff_EBP + -4) = iVar7; + } + else { + if (((int)uVar4 < 0x30) || (0x39 < (int)uVar4)) goto LAB_004dd9c8; + uVar4 = uVar4 - 0x30; + unaff_ESI = iVar7 + 1; + if (unaff_ESI < 1) { + **(undefined2 **)(unaff_EBP + -0x34) = (short)uVar4; + if (uVar4 == 0) { + unaff_ESI = -1; + if (*(int *)(unaff_EBP + -4) != 0x8000) { + *(int *)(unaff_EBP + -4) = *(int *)(unaff_EBP + -4) + -1; + } + } + else { + unaff_ESI = 1; + } + } + else if (unaff_ESI < 10) { + *piVar1 = *piVar1 * 10 + uVar4; + } + else if (unaff_ESI <= *(int *)(unaff_EBP + -8)) { + *(int *)(unaff_EBP + -0x3c) = *piVar1; + *(undefined4 *)(unaff_EBP + -0x38) = *(undefined4 *)(unaff_EBP + -0x20); + iVar5 = FUN_004dd098((uint *)(unaff_EBP + -0x3c),uVar4); + if (iVar5 == 0) { + *piVar1 = *(int *)(unaff_EBP + -0x3c); + *(undefined4 *)(unaff_EBP + -0x20) = *(undefined4 *)(unaff_EBP + -0x38); + } + else { + *(int *)(unaff_EBP + -8) = iVar7; + } + } + } + } + } + uVar4 = 0x65; +LAB_004dd9c8: + if (unaff_ESI == -2) { +LAB_004ddb4b: + *(undefined4 *)(unaff_EBP + -0x18) = 0; +LAB_004ddb50: + if (-1 < *(int *)(unaff_EBP + 0x18)) { + (**(code **)(unaff_EBP + 0x10))(uVar4,*(undefined4 *)(unaff_EBP + 0x14)); + *(int *)(unaff_EBP + -0x14) = *(int *)(unaff_EBP + -0x14) + -1; + } + *(undefined4 *)(unaff_EBP + -0x24) = 0; + *(undefined4 *)(unaff_EBP + -0x20) = 0; + *(undefined2 *)(unaff_EBP + -0x1c) = 0; + } + else { + if (*(int *)(unaff_EBP + -4) == 0x8000) { + *(int *)(unaff_EBP + -4) = unaff_ESI; + } + iVar7 = 0; + if ((uVar4 == 0x65) || (uVar4 == 0x45)) { + *(undefined4 *)(unaff_EBP + -0x44) = 1; +LAB_004dd9f0: + while( true ) { + piVar1 = (int *)(unaff_EBP + 0x18); + *piVar1 = *piVar1 + -1; + if (*piVar1 < 0) break; + *(int *)(unaff_EBP + -0x14) = *(int *)(unaff_EBP + -0x14) + 1; + uVar4 = (**(code **)(unaff_EBP + 0xc))(*(undefined4 *)(unaff_EBP + 0x14)); + if (*(int *)(unaff_EBP + -0x44) == 0) goto LAB_004dda1d; + *(undefined4 *)(unaff_EBP + -0x44) = 0; + if (uVar4 != 0x2d) goto LAB_004dda18; + *(undefined1 *)(unaff_EBP + -0xc) = 1; + } + } + else { +LAB_004dda43: + (**(code **)(unaff_EBP + 0x10))(uVar4,*(undefined4 *)(unaff_EBP + 0x14)); + *(int *)(unaff_EBP + -0x14) = *(int *)(unaff_EBP + -0x14) + -1; + } + if (*(char *)(unaff_EBP + -0xc) != '\0') { + iVar7 = -iVar7; + *(char *)(unaff_EBP + -0xd) = -*(char *)(unaff_EBP + -0xd); + } + if (unaff_ESI < 0) { + *(undefined4 *)(unaff_EBP + -0x24) = 0; + *(undefined4 *)(unaff_EBP + -0x20) = 0; + *(undefined2 *)(unaff_EBP + -0x1c) = 0; + } + else if (*(char *)(unaff_EBP + -0xd) == '\0') { + if (*(int *)(unaff_EBP + -8) < unaff_ESI) { + unaff_ESI = *(int *)(unaff_EBP + -8); + } + uVar4 = iVar7 + (*(int *)(unaff_EBP + -4) - unaff_ESI); + fVar8 = FUN_004dcdbc((longlong *)(unaff_EBP + -0x24)); + *(float10 *)(unaff_EBP + -0x24) = fVar8; + if (uVar4 != 0) { + uVar6 = uVar4; + if ((int)uVar4 < 1) { + uVar6 = -uVar4; + } + fVar8 = FUN_004de144(uVar6); + *(float10 *)(unaff_EBP + -0x30) = fVar8; + if ((int)uVar4 < 0) { + *(float10 *)(unaff_EBP + -0x24) = + *(float10 *)(unaff_EBP + -0x24) / *(float10 *)(unaff_EBP + -0x30); + } + else { + *(float10 *)(unaff_EBP + -0x24) = + *(float10 *)(unaff_EBP + -0x30) * *(float10 *)(unaff_EBP + -0x24); + } + } + } + else { + if (*(char *)(unaff_EBP + -0xd) == '\x01') { + *(undefined2 *)(*(int *)(unaff_EBP + -0x34) + 6) = 0xffff; + *(undefined2 *)(*(int *)(unaff_EBP + -0x34) + 4) = 0xffff; + *(undefined2 *)(*(int *)(unaff_EBP + -0x34) + 2) = 0xffff; + **(undefined2 **)(unaff_EBP + -0x34) = 0xffff; + *(undefined2 *)(*(int *)(unaff_EBP + -0x34) + 8) = 0x7ffe; + } + else { + *(undefined4 *)(unaff_EBP + -0x24) = 0; + *(undefined4 *)(unaff_EBP + -0x20) = 0; + *(undefined2 *)(unaff_EBP + -0x1c) = 0; + } + *(undefined4 *)(unaff_EBP + -0x18) = 2; + } + } + if (*(char *)(unaff_EBP + -9) != '\0') { + *(float10 *)(unaff_EBP + -0x24) = -*(float10 *)(unaff_EBP + -0x24); + } +LAB_004ddb20: + **(int **)(unaff_EBP + 0x1c) = **(int **)(unaff_EBP + 0x1c) + *(int *)(unaff_EBP + -0x14); + **(undefined4 **)(unaff_EBP + 0x20) = *(undefined4 *)(unaff_EBP + -0x18); + puVar3 = *(undefined4 **)(unaff_EBP + 8); + *puVar3 = *(undefined4 *)(unaff_EBP + -0x24); + puVar3[1] = *(undefined4 *)(unaff_EBP + -0x20); + *(undefined2 *)(puVar3 + 2) = *(undefined2 *)(unaff_EBP + -0x1c); + return; +LAB_004dda18: + if (uVar4 != 0x2b) { +LAB_004dda1d: + if (((int)uVar4 < 0x30) || (0x39 < (int)uVar4)) goto LAB_004dda43; + iVar7 = uVar4 + iVar7 * 10 + -0x30; + if (0x1344 < iVar7) { + *(undefined1 *)(unaff_EBP + -0xd) = 1; + } + } + goto LAB_004dd9f0; +} + + + /* @004ddc7c file=? name=FUN_004ddc7c */ /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ @@ -5719,1513 +12955,3 @@ void __cdecl FUN_004dee24(UINT param_1) -/* @004dee3c file=? name=FUN_004dee3c */ - -void __cdecl FUN_004dee3c(UINT param_1) - -{ - FUN_004dedcc(1,0,param_1); - return; -} - - - -/* @004dee74 file=? name=FUN_004dee74 */ - -int __cdecl FUN_004dee74(char *param_1) - -{ - int iVar1; - int iVar2; - int *piVar3; - - iVar1 = FUN_004d4a78(param_1); - for (piVar3 = DAT_005252b4; *piVar3 != 0; piVar3 = piVar3 + 1) { - iVar2 = FUN_004d4ae0((char *)*piVar3,param_1,iVar1); - if ((iVar2 == 0) && (*(char *)(*piVar3 + iVar1) == '=')) break; - } - if (*piVar3 == 0) { - iVar1 = 0; - } - else { - iVar1 = iVar1 + *piVar3 + 1; - } - return iVar1; -} - - - -/* @004deec4 file=? name=FUN_004deec4 */ - -void FUN_004deec4(void) - -{ - return; -} - - - -/* @004df048 file=? name=FUN_004df048 */ - -void __cdecl FUN_004df048(int *param_1,int *param_2) - -{ - if ((*(char *)*param_2 == '\\') && (((char *)*param_2)[1] == '\"')) { - *(undefined1 *)*param_1 = 0x22; - *param_2 = *param_2 + 2; - } - else { - *(undefined1 *)*param_1 = *(undefined1 *)*param_2; - *param_2 = *param_2 + 1; - } - *param_1 = *param_1 + 1; - return; -} - - - -/* @004df078 file=? name=FUN_004df078 */ - -void __cdecl FUN_004df078(int *param_1,int param_2) - -{ - int iVar1; - int *piVar2; - uint uVar3; - uint uVar4; - int *piVar5; - int *piVar6; - - if (DAT_005252a8 == DAT_005252b0) { - DAT_005252b0 = DAT_005252b0 + 0x10; - DAT_005252ac = FUN_004de760(DAT_005252ac,DAT_005252b0 * 4); - if (DAT_005252ac == (int *)0x0) { - FUN_004ded48(s_No_space_for_command_line_argume_00520c4a); - } - } - piVar2 = param_1; - if (param_2 != 0) { - iVar1 = FUN_004d4a78((char *)param_1); - piVar2 = FUN_004de55c(iVar1 + 1); - if (piVar2 == (int *)0x0) { - FUN_004ded48(s_No_space_for_command_line_argume_00520c74); - } - uVar3 = 0xffffffff; - do { - piVar5 = param_1; - if (uVar3 == 0) break; - uVar3 = uVar3 - 1; - piVar5 = (int *)((int)param_1 + 1); - iVar1 = *param_1; - param_1 = piVar5; - } while ((char)iVar1 != '\0'); - uVar3 = ~uVar3; - piVar5 = (int *)((int)piVar5 - uVar3); - piVar6 = piVar2; - for (uVar4 = uVar3 >> 2; uVar4 != 0; uVar4 = uVar4 - 1) { - *piVar6 = *piVar5; - piVar5 = piVar5 + 1; - piVar6 = piVar6 + 1; - } - for (uVar3 = uVar3 & 3; uVar3 != 0; uVar3 = uVar3 - 1) { - *(char *)piVar6 = (char)*piVar5; - piVar5 = (int *)((int)piVar5 + 1); - piVar6 = (int *)((int)piVar6 + 1); - } - } - DAT_005252ac[DAT_005252a8] = (int)piVar2; - DAT_005252a8 = DAT_005252a8 + 1; - return; -} - - - -/* @004df128 file=? name=FUN_004df128 */ - -void __cdecl FUN_004df128(int *param_1) - -{ - FUN_004df078(param_1,0); - return; -} - - - -/* @004df13c file=? name=FUN_004df13c */ - -char * __cdecl FUN_004df13c(char *param_1,char *param_2) - -{ - uint uVar1; - uint uVar2; - char cVar3; - char *pcVar4; - char *pcVar5; - - for (; (cVar3 = *param_2, cVar3 != '\0' && (cVar3 != '=')); param_2 = param_2 + 1) { - if (('`' < cVar3) && (cVar3 < '{')) { - cVar3 = cVar3 + -0x20; - } - *param_1 = cVar3; - param_1 = param_1 + 1; - } - uVar1 = 0xffffffff; - do { - pcVar4 = param_2; - if (uVar1 == 0) break; - uVar1 = uVar1 - 1; - pcVar4 = param_2 + 1; - cVar3 = *param_2; - param_2 = pcVar4; - } while (cVar3 != '\0'); - uVar1 = ~uVar1; - pcVar4 = pcVar4 + -uVar1; - pcVar5 = param_1; - for (uVar2 = uVar1 >> 2; uVar2 != 0; uVar2 = uVar2 - 1) { - *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4; - pcVar4 = pcVar4 + 4; - pcVar5 = pcVar5 + 4; - } - for (uVar1 = uVar1 & 3; uVar1 != 0; uVar1 = uVar1 - 1) { - *pcVar5 = *pcVar4; - pcVar4 = pcVar4 + 1; - pcVar5 = pcVar5 + 1; - } - return param_1; -} - - - -/* @004df190 file=? name=FUN_004df190 */ - -void FUN_004df190(void) - -{ - int iVar1; - int *piVar2; - char *pcVar3; - int iVar4; - - iVar4 = 0; - pcVar3 = DAT_005252c8; - while( true ) { - iVar1 = FUN_004d4a78(pcVar3); - if (iVar1 == 0) break; - iVar4 = iVar4 + 1; - pcVar3 = pcVar3 + iVar1 + 1; - } - DAT_005252b4 = FUN_004de55c((iVar4 + 1) * 4); - if (DAT_005252b4 != (int *)0x0) { - iVar4 = 0; - pcVar3 = DAT_005252c8; - while( true ) { - iVar1 = FUN_004d4a78(pcVar3); - if (iVar1 == 0) break; - piVar2 = FUN_004de55c(iVar1 + 1); - if (piVar2 == (int *)0x0) break; - FUN_004df13c((char *)piVar2,pcVar3); - DAT_005252b4[iVar4] = (int)piVar2; - iVar4 = iVar4 + 1; - pcVar3 = pcVar3 + iVar1 + 1; - } - DAT_005252d8 = DAT_005252b4; - DAT_005252b4[iVar4] = 0; - } - return; -} - - - -/* @004df214 file=? name=FUN_004df214 */ - -int __cdecl FUN_004df214(int param_1) - -{ - int iVar1; - int *piVar2; - - iVar1 = 0; - piVar2 = &DAT_00520cc8; - do { - if (param_1 == *piVar2) { - return iVar1; - } - iVar1 = iVar1 + 1; - piVar2 = piVar2 + 1; - } while (iVar1 < 10); - return -1; -} - - - -/* @004df234 file=? name=FUN_004df234 */ - -undefined4 __cdecl FUN_004df234(int *param_1,undefined4 param_2,int param_3) - -{ - code *pcVar1; - undefined4 uVar2; - int iVar3; - uint uVar4; - undefined4 local_8; - - uVar4 = 0; - iVar3 = *param_1; - if (iVar3 < -0x3fffff6e) { - if (iVar3 == -0x3fffff6f) { - iVar3 = 2; - local_8 = 0x84; - uVar4 = 8; - } - else if (iVar3 == -0x3ffffffb) { - iVar3 = 3; - local_8 = 0xc; - } - else if (iVar3 == -0x3fffffe3) { - iVar3 = 1; - local_8 = 0x14; - } - else if (iVar3 == -0x3fffff72) { - iVar3 = 2; - local_8 = 0x83; - uVar4 = 4; - } - else { - if (iVar3 != -0x3fffff70) { - return 1; - } - iVar3 = 2; - local_8 = 0x81; - uVar4 = 1; - } - } - else if (iVar3 == -0x3fffff6e) { - iVar3 = 2; - local_8 = 0x87; - uVar4 = 0x49; - } - else if (iVar3 == -0x3fffff6d) { - iVar3 = 2; - local_8 = 0x85; - uVar4 = 0x10; - } - else if (iVar3 == -0x3fffff6c) { - iVar3 = 2; - local_8 = 0x7f; - } - else { - if (iVar3 != -0x3fffff6a) { - return 1; - } - iVar3 = 1; - local_8 = 0x16; - } - pcVar1 = *(code **)(&DAT_00520ca0 + iVar3 * 4); - if (pcVar1 == (code *)0x1) { - uVar2 = 0; - } - else if (pcVar1 == (code *)0x0) { - uVar2 = 1; - } - else { - *(undefined4 *)(&DAT_00520ca0 + iVar3 * 4) = 0; - if (((iVar3 == 1) || (iVar3 == 3)) || (iVar3 == 2)) { - FUN_004dc9a0(); - FUN_004dc9f8(); - (*pcVar1)((&DAT_00520cc8)[iVar3],local_8); - *(uint *)(param_3 + 0x20) = *(uint *)(param_3 + 0x20) & ~uVar4; - } - else { - (*pcVar1)((&DAT_00520cc8)[iVar3]); - } - uVar2 = 0; - } - return uVar2; -} - - - -/* @004df3a4 file=? name=FUN_004df3a4 */ - -undefined4 FUN_004df3a4(int param_1) - -{ - int iVar1; - - iVar1 = 2; - if (param_1 != 0) { - iVar1 = 0x15; - } - FUN_004df428(iVar1); - return 1; -} - - - -/* @004df3c8 file=? name=FUN_004df3c8 */ - -undefined4 __cdecl FUN_004df3c8(int param_1,undefined4 param_2) - -{ - undefined4 uVar1; - int iVar2; - - if (DAT_00520c9c == '\0') { - DAT_00524c6c = FUN_004df234; - SetConsoleCtrlHandler(FUN_004df3a4,1); - DAT_00520c9c = '\x01'; - } - iVar2 = FUN_004df214(param_1); - if (iVar2 == -1) { - DAT_00520bcc = 0x13; - return 0xffffffff; - } - uVar1 = *(undefined4 *)(&DAT_00520ca0 + iVar2 * 4); - *(undefined4 *)(&DAT_00520ca0 + iVar2 * 4) = param_2; - return uVar1; -} - - - -/* @004df428 file=? name=FUN_004df428 */ - -undefined4 __cdecl FUN_004df428(int param_1) - -{ - code *pcVar1; - int iVar2; - undefined4 uVar3; - - iVar2 = FUN_004df214(param_1); - if (iVar2 == -1) { - uVar3 = 1; - } - else { - pcVar1 = *(code **)(&DAT_00520ca0 + iVar2 * 4); - if (pcVar1 != (code *)0x1) { - if (pcVar1 == (code *)0x0) { - if ((1 < param_1 - 0x10U) && (param_1 != 0x14)) { - if (param_1 == 0x16) { - FUN_004deda4(); - } - else { - FUN_004dee3c(3); - } - } - } - else { - *(undefined4 *)(&DAT_00520ca0 + iVar2 * 4) = 0; - if ((&DAT_00520cf0)[iVar2] == '\0') { - (*pcVar1)(param_1); - } - else { - (*pcVar1)(param_1,(&DAT_00520cf0)[iVar2]); - } - } - } - uVar3 = 0; - } - return uVar3; -} - - - -/* @004df4a4 file=? name=FUN_004df4a4 */ - -undefined4 FUN_004df4a4(void) - -{ - return 0; -} - - - -/* @004df4a8 file=? name=FUN_004df4a8 */ - -undefined4 FUN_004df4a8(void) - -{ - return 0; -} - - - -/* @004df4ac file=? name=FUN_004df4ac */ - -undefined4 __cdecl FUN_004df4ac(int *param_1,uint param_2) - -{ - undefined4 *puVar1; - char *pcVar2; - undefined4 uVar3; - uint uVar4; - char *pcVar5; - int *local_10; - int local_c; - char *local_8; - - uVar4 = 0; - if (param_2 == 0) { - uVar4 = 0xffff; - } - local_8 = (char *)0x0; - local_10 = param_1; - for (local_c = 0; local_10 = local_10 + 1, local_c < *param_1; local_c = local_c + 1) { - puVar1 = (undefined4 *)*local_10; - if (param_2 == 0) { - pcVar2 = (char *)*puVar1; - pcVar5 = (char *)puVar1[1]; - } - else { - pcVar2 = (char *)puVar1[2]; - pcVar5 = (char *)puVar1[3]; - } - for (; (pcVar2 < pcVar5 && (*(int *)(pcVar2 + 2) != 0)); pcVar2 = pcVar2 + 6) { - if ((*pcVar2 == '\0') && (param_2 == uVar4 <= (byte)pcVar2[1])) { - uVar4 = (uint)(byte)pcVar2[1]; - local_8 = pcVar2; - } - } - } - if (local_8 == (char *)0x0) { - uVar3 = 0; - } - else { - *local_8 = '\x01'; - uVar3 = *(undefined4 *)(local_8 + 2); - } - return uVar3; -} - - - -/* @004df558 file=? name=FUN_004df558 */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -void __cdecl FUN_004df558(int param_1) - -{ - char cVar1; - int *piVar2; - code *pcVar3; - HMODULE pHVar4; - UINT UVar5; - char cVar6; - int *piVar7; - char *pcVar8; - undefined4 uVar9; - undefined4 uVar10; - int local_10; - undefined1 local_c [8]; - - _DAT_005252e8 = *(uint *)(param_1 + 0x10) & 1; - FUN_004dcd7c(); - FUN_004dd494(*(undefined **)(param_1 + 0x1c),*(undefined **)(param_1 + 0x20)); - FUN_004d6db0(*(undefined **)(param_1 + 0x28)); - _DAT_005252dc = 1; - _DAT_005252e0 = param_1; - DAT_005252c4 = local_c; - FUN_004d69d0(); - DAT_005252c8 = GetEnvironmentStrings(); - DAT_005252cc = GetCommandLineA(); - FUN_004deec4(); - piVar2 = (int *)FUN_004df4a4(); - if (piVar2 != (int *)0x0) { - piVar2[*piVar2 + 1] = -1; - while (pcVar3 = (code *)FUN_004df4ac(piVar2,0), pcVar3 != (code *)0x0) { - (*pcVar3)(); - } - piVar7 = piVar2; - for (local_10 = 0; piVar7 = piVar7 + 1, local_10 < *piVar2; local_10 = local_10 + 1) { - (**(code **)(*piVar7 + 0x18))(0,*(undefined4 *)(*piVar7 + 0x14)); - } - } - while (pcVar3 = (code *)FUN_004df4ac((int *)&DAT_005252dc,0), pcVar3 != (code *)0x0) { - (*pcVar3)(); - } - pcVar8 = DAT_005252cc; - if ((*(byte *)(param_1 + 0x10) & 1) == 0) { - UVar5 = (**(code **)(param_1 + 0x18))(DAT_005252d0,DAT_005252d4,DAT_005252d8); - FUN_004dee24(UVar5); - } - else { - for (; (*pcVar8 == ' ' || (*pcVar8 == '\t')); pcVar8 = pcVar8 + 1) { - } - if (*pcVar8 == '\"') { - cVar6 = '\"'; - pcVar8 = pcVar8 + 1; - } - else { - cVar6 = ' '; - } - for (; ((cVar1 = *pcVar8, cVar1 != '\0' && (cVar6 != cVar1)) && (cVar1 != '\t')); - pcVar8 = pcVar8 + 1) { - } - if (*pcVar8 == '\"') { - pcVar8 = pcVar8 + 1; - } - for (; ((cVar6 = *pcVar8, cVar6 != '\0' && (cVar6 == ' ')) || (cVar6 == '\t')); - pcVar8 = pcVar8 + 1) { - } - uVar10 = 10; - uVar9 = 0; - pHVar4 = GetModuleHandleA((LPCSTR)0x0); - UVar5 = (**(code **)(param_1 + 0x18))(pHVar4,uVar9,pcVar8,uVar10); - FUN_004dee24(UVar5); - } - return; -} - - - -/* @004df6bc file=? name=FUN_004df6bc */ - -void FUN_004df6bc(void) - -{ - code *pcVar1; - int *piVar2; - int *piVar3; - int iVar4; - - while (pcVar1 = (code *)FUN_004df4ac((int *)&DAT_005252dc,1), pcVar1 != (code *)0x0) { - (*pcVar1)(); - } - while (pcVar1 = (code *)FUN_004df4ac((int *)&DAT_005252bc,1), pcVar1 != (code *)0x0) { - (*pcVar1)(); - } - piVar2 = (int *)FUN_004df4a8(); - if (piVar2 != (int *)0x0) { - while (pcVar1 = (code *)FUN_004df4ac(piVar2,1), pcVar1 != (code *)0x0) { - (*pcVar1)(); - } - piVar3 = piVar2; - for (iVar4 = 0; piVar3 = piVar3 + 1, iVar4 < *piVar2; iVar4 = iVar4 + 1) { - (**(code **)(*piVar3 + 0x18))(1,*(undefined4 *)(*piVar3 + 0x14)); - } - } - return; -} - - - -/* @004df734 file=? name=FUN_004df734 */ - -void FUN_004df734(UINT param_1) - -{ - /* WARNING: Subroutine does not return */ - ExitProcess(param_1); -} - - - -/* @004df748 file=? name=FUN_004df748 */ - -void __cdecl FUN_004df748(undefined1 *param_1) - -{ - FUN_004d7f10(param_1,s__s__s__02d__02d__02d__02d__4d_s_00520d00); - return; -} - - - -/* @004df794 file=? name=FUN_004df794 */ - -undefined * FUN_004df794(void) - -{ - FUN_004df748(&DAT_005252ec); - return &DAT_005252ec; -} - - - -/* @004df7b4 file=? name=FUN_004df7b4 */ - -void __cdecl FUN_004df7b4(int *param_1) - -{ - FUN_004df950(param_1); - FUN_004df794(); - return; -} - - - -/* @004df7cc file=? name=FUN_004df7cc */ - -undefined4 * __cdecl FUN_004df7cc(uint param_1,int param_2) - -{ - ulonglong uVar1; - bool bVar2; - undefined3 extraout_var; - uint uVar3; - uint uVar4; - int local_8; - - DAT_00525308 = param_1 % 0x3c; - DAT_0052530c = (undefined4)(((ulonglong)param_1 / 0x3c) % 0x3c); - uVar1 = ((ulonglong)param_1 / 0x3c) / 0x3c; - local_8 = (int)(uVar1 / 0x88f8); - DAT_0052531c = local_8 * 4 + 0x46; - local_8 = local_8 * 0x5b5; - uVar4 = (uint)(uVar1 % 0x88f8); - while( true ) { - uVar3 = 0x2238; - if ((DAT_0052531c & 3) == 0) { - uVar3 = 0x2250; - } - if (uVar4 < uVar3) break; - local_8 = local_8 + uVar3 / 0x18; - DAT_0052531c = DAT_0052531c + 1; - uVar4 = uVar4 - uVar3; - } - if (((param_2 == 0) || (DAT_00520ef4 == 0)) || - (bVar2 = FUN_004dfb04(uVar4 % 0x18,uVar4 / 0x18,0,DAT_0052531c - 0x46), - CONCAT31(extraout_var,bVar2) == 0)) { - DAT_00525328 = 0; - } - else { - uVar4 = uVar4 + 1; - DAT_00525328 = 1; - } - DAT_00525310 = uVar4 % 0x18; - DAT_00525324 = uVar4 / 0x18; - DAT_00525320 = (local_8 + DAT_00525324 + 4) % 7; - uVar4 = DAT_00525324 + 1; - DAT_00525314 = uVar4; - if ((((DAT_0052531c & 3) == 0) && (DAT_00525314 = DAT_00525324, uVar4 < 0x3d)) && - (DAT_00525314 = uVar4, uVar4 == 0x3c)) { - DAT_00525318 = 1; - DAT_00525314 = 0x1d; - } - else { - for (DAT_00525318 = 0; (uint)(int)(char)(&DAT_00520dc4)[DAT_00525318] < DAT_00525314; - DAT_00525318 = DAT_00525318 + 1) { - DAT_00525314 = DAT_00525314 - (int)(char)(&DAT_00520dc4)[DAT_00525318]; - } - } - return &DAT_00525308; -} - - - -/* @004df938 file=? name=FUN_004df938 */ - -void __cdecl FUN_004df938(uint *param_1) - -{ - FUN_004df7cc(*param_1,0); - return; -} - - - -/* @004df950 file=? name=FUN_004df950 */ - -undefined4 * __cdecl FUN_004df950(int *param_1) - -{ - undefined4 *puVar1; - - if (*param_1 < DAT_00520ef0) { - return (undefined4 *)0x0; - } - puVar1 = FUN_004df7cc(*param_1 - DAT_00520ef0,1); - return puVar1; -} - - - -/* @004dfb04 file=? name=FUN_004dfb04 */ - -bool __cdecl FUN_004dfb04(uint param_1,uint param_2,uint param_3,uint param_4) - -{ - uint *puVar1; - int iVar2; - uint uVar3; - bool bVar4; - uint local_8; - - if (param_3 == 0) { - local_8 = param_2; - if ((0x3a < param_2) && ((param_4 + 0x46 & 3) == 0)) { - local_8 = param_2 - 1; - } - param_3 = 0; - for (puVar1 = &DAT_00520dd0; *puVar1 <= local_8; puVar1 = puVar1 + 1) { - param_3 = param_3 + 1; - } - } - else { - param_2 = param_2 + (&DAT_00520dcc)[param_3]; - if ((2 < param_3) && ((param_4 + 0x46 & 3) == 0)) { - param_2 = param_2 + 1; - } - } - if ((param_3 < 4) || (10 < param_3)) { - bVar4 = false; - } - else if ((param_3 < 5) || (9 < param_3)) { - if ((param_4 < 0x11) || (param_3 != 4)) { - iVar2 = (&DAT_00520dd0)[param_3]; - } - else { - iVar2 = iRam00520ddc + 7; - } - if ((param_4 + 0x46 & 3) != 0) { - iVar2 = iVar2 + -1; - } - uVar3 = iVar2 - ((param_4 + 1 >> 2) + iVar2 + param_4 * 0x16d + 4) % 7; - if (param_3 == 4) { - if (uVar3 < param_2) { - bVar4 = true; - } - else if (param_2 < uVar3) { - bVar4 = false; - } - else { - bVar4 = 1 < param_1; - } - } - else if (param_2 < uVar3) { - bVar4 = true; - } - else if (uVar3 < param_2) { - bVar4 = false; - } - else { - bVar4 = param_1 < 2; - } - } - else { - bVar4 = true; - } - return bVar4; -} - - - -/* @004dfc18 file=? name=FUN_004dfc18 */ - -int __cdecl FUN_004dfc18(int param_1,int param_2,int param_3,int param_4,int param_5,int param_6) - -{ - int iVar1; - char *pcVar2; - bool bVar3; - char *pcVar4; - int iVar5; - undefined3 extraout_var; - uint uVar6; - int iVar7; - uint uVar8; - uint uVar9; - int local_8; - - if ((param_1 < 0x46) || (0x8a < param_1)) { - local_8 = -1; - } - else { - iVar1 = param_5 + param_6 / 0x3c; - iVar5 = param_4 + iVar1 / 0x3c; - uVar8 = param_3 + iVar5 / 0x18; - uVar6 = iVar5 % 0x18; - uVar9 = param_1 + param_2 / 0xc; - pcVar2 = &DAT_00520dc4 + param_2 % 0xc; - iVar5 = param_2 % 0xc; - while (iVar7 = iVar5, pcVar4 = pcVar2, (int)*pcVar4 <= (int)uVar8) { - if (((uVar9 & 3) == 0) && (iVar7 == 1)) { - if ((int)uVar8 < 0x1d) break; - iVar5 = -0x1d; - } - else { - iVar5 = -(int)*pcVar4; - } - uVar8 = uVar8 + iVar5; - pcVar2 = pcVar4 + 1; - iVar5 = iVar7 + 1; - if (0xb < iVar7 + 1) { - uVar9 = uVar9 + 1; - pcVar2 = pcVar4 + -0xb; - iVar5 = iVar7 + -0xb; - } - } - iVar5 = uVar9 - 0x44; - if (iVar5 < 0) { - iVar5 = uVar9 - 0x41; - } - iVar5 = iVar5 >> 2; - if (((uVar9 & 3) == 0) && (iVar7 < 2)) { - iVar5 = iVar5 + -1; - } - local_8 = (iVar5 + (uVar9 - 0x46) * 0x16d + (&DAT_00520dd0)[iVar7] + uVar8) * 0x15180 + - uVar6 * 0xe10 + (iVar1 % 0x3c) * 0x3c + param_6 % 0x3c + DAT_00520ef0; - if ((DAT_00520ef4 != 0) && - (bVar3 = FUN_004dfb04(uVar6,uVar8,iVar7 + 1,uVar9 - 0x46), CONCAT31(extraout_var,bVar3) != 0) - ) { - local_8 = local_8 + -0xe10; - } - if (local_8 < 1) { - local_8 = -1; - } - } - return local_8; -} - - - -/* @004dfd90 file=? name=FUN_004dfd90 */ - -/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ - -int FUN_004dfd90(void) - -{ - DWORD DVar1; - - DVar1 = GetTickCount(); - return DVar1 - _DAT_00520f00; -} - - - -/* @004dfda8 file=? name=FUN_004dfda8 */ - -void __cdecl FUN_004dfda8(int *param_1) - -{ - int iVar1; - _SYSTEMTIME local_14; - - GetLocalTime(&local_14); - iVar1 = FUN_004dfc18(local_14.wYear - 0x76c,local_14.wMonth - 1,local_14.wDay - 1, - (uint)local_14.wHour,(uint)local_14.wMinute,(uint)local_14.wSecond); - if (param_1 != (int *)0x0) { - *param_1 = iVar1; - } - return; -} - - - -/* @004dfdf3 file=? name=GetStartupInfoA */ - -void GetStartupInfoA(LPSTARTUPINFOA lpStartupInfo) - -{ - /* WARNING: Could not recover jumptable at 0x004dfdf3. Too many branches */ - /* WARNING: Treating indirect jump as call */ - GetStartupInfoA(lpStartupInfo); - return; -} - - - -/* @004dfdf9 file=? name=DeleteFileA */ - -BOOL DeleteFileA(LPCSTR lpFileName) - -{ - BOOL BVar1; - - /* WARNING: Could not recover jumptable at 0x004dfdf9. Too many branches */ - /* WARNING: Treating indirect jump as call */ - BVar1 = DeleteFileA(lpFileName); - return BVar1; -} - - - -/* @004dfdff file=? name=ExitProcess */ - -void ExitProcess(UINT uExitCode) - -{ - /* WARNING: Could not recover jumptable at 0x004dfdff. Too many branches */ - /* WARNING: Subroutine does not return */ - /* WARNING: Treating indirect jump as call */ - ExitProcess(uExitCode); - return; -} - - - -/* @004dfe05 file=? name=CloseHandle */ - -BOOL CloseHandle(HANDLE hObject) - -{ - BOOL BVar1; - - /* WARNING: Could not recover jumptable at 0x004dfe05. Too many branches */ - /* WARNING: Treating indirect jump as call */ - BVar1 = CloseHandle(hObject); - return BVar1; -} - - - -/* @004dfe0b file=? name=GetConsoleMode */ - -BOOL GetConsoleMode(HANDLE hConsoleHandle,LPDWORD lpMode) - -{ - BOOL BVar1; - - /* WARNING: Could not recover jumptable at 0x004dfe0b. Too many branches */ - /* WARNING: Treating indirect jump as call */ - BVar1 = GetConsoleMode(hConsoleHandle,lpMode); - return BVar1; -} - - - -/* @004dfe11 file=? name=GetCurrentDirectoryA */ - -DWORD GetCurrentDirectoryA(DWORD nBufferLength,LPSTR lpBuffer) - -{ - DWORD DVar1; - - /* WARNING: Could not recover jumptable at 0x004dfe11. Too many branches */ - /* WARNING: Treating indirect jump as call */ - DVar1 = GetCurrentDirectoryA(nBufferLength,lpBuffer); - return DVar1; -} - - - -/* @004dfe17 file=? name=GetCurrentThreadId */ - -DWORD GetCurrentThreadId(void) - -{ - DWORD DVar1; - - /* WARNING: Could not recover jumptable at 0x004dfe17. Too many branches */ - /* WARNING: Treating indirect jump as call */ - DVar1 = GetCurrentThreadId(); - return DVar1; -} - - - -/* @004dfe1d file=? name=GetDriveTypeA */ - -UINT GetDriveTypeA(LPCSTR lpRootPathName) - -{ - UINT UVar1; - - /* WARNING: Could not recover jumptable at 0x004dfe1d. Too many branches */ - /* WARNING: Treating indirect jump as call */ - UVar1 = GetDriveTypeA(lpRootPathName); - return UVar1; -} - - - -/* @004dfe23 file=? name=CreateFileA */ - -HANDLE CreateFileA(LPCSTR lpFileName,DWORD dwDesiredAccess,DWORD dwShareMode, - LPSECURITY_ATTRIBUTES lpSecurityAttributes,DWORD dwCreationDisposition, - DWORD dwFlagsAndAttributes,HANDLE hTemplateFile) - -{ - HANDLE pvVar1; - - /* WARNING: Could not recover jumptable at 0x004dfe23. Too many branches */ - /* WARNING: Treating indirect jump as call */ - pvVar1 = CreateFileA(lpFileName,dwDesiredAccess,dwShareMode,lpSecurityAttributes, - dwCreationDisposition,dwFlagsAndAttributes,hTemplateFile); - return pvVar1; -} - - - -/* @004dfe29 file=? name=GetEnvironmentVariableA */ - -DWORD GetEnvironmentVariableA(LPCSTR lpName,LPSTR lpBuffer,DWORD nSize) - -{ - DWORD DVar1; - - /* WARNING: Could not recover jumptable at 0x004dfe29. Too many branches */ - /* WARNING: Treating indirect jump as call */ - DVar1 = GetEnvironmentVariableA(lpName,lpBuffer,nSize); - return DVar1; -} - - - -/* @004dfe2f file=? name=GetFileAttributesA */ - -DWORD GetFileAttributesA(LPCSTR lpFileName) - -{ - DWORD DVar1; - - /* WARNING: Could not recover jumptable at 0x004dfe2f. Too many branches */ - /* WARNING: Treating indirect jump as call */ - DVar1 = GetFileAttributesA(lpFileName); - return DVar1; -} - - - -/* @004dfe35 file=? name=GetFileType */ - -DWORD GetFileType(HANDLE hFile) - -{ - DWORD DVar1; - - /* WARNING: Could not recover jumptable at 0x004dfe35. Too many branches */ - /* WARNING: Treating indirect jump as call */ - DVar1 = GetFileType(hFile); - return DVar1; -} - - - -/* @004dfe3b file=? name=GetLastError */ - -DWORD GetLastError(void) - -{ - DWORD DVar1; - - /* WARNING: Could not recover jumptable at 0x004dfe3b. Too many branches */ - /* WARNING: Treating indirect jump as call */ - DVar1 = GetLastError(); - return DVar1; -} - - - -/* @004dfe41 file=? name=GetLocalTime */ - -void GetLocalTime(LPSYSTEMTIME lpSystemTime) - -{ - /* WARNING: Could not recover jumptable at 0x004dfe41. Too many branches */ - /* WARNING: Treating indirect jump as call */ - GetLocalTime(lpSystemTime); - return; -} - - - -/* @004dfe47 file=? name=GetLogicalDrives */ - -DWORD GetLogicalDrives(void) - -{ - DWORD DVar1; - - /* WARNING: Could not recover jumptable at 0x004dfe47. Too many branches */ - /* WARNING: Treating indirect jump as call */ - DVar1 = GetLogicalDrives(); - return DVar1; -} - - - -/* @004dfe4d file=? name=GetModuleFileNameA */ - -DWORD GetModuleFileNameA(HMODULE hModule,LPSTR lpFilename,DWORD nSize) - -{ - DWORD DVar1; - - /* WARNING: Could not recover jumptable at 0x004dfe4d. Too many branches */ - /* WARNING: Treating indirect jump as call */ - DVar1 = GetModuleFileNameA(hModule,lpFilename,nSize); - return DVar1; -} - - - -/* @004dfe53 file=? name=GetModuleHandleA */ - -HMODULE GetModuleHandleA(LPCSTR lpModuleName) - -{ - HMODULE pHVar1; - - /* WARNING: Could not recover jumptable at 0x004dfe53. Too many branches */ - /* WARNING: Treating indirect jump as call */ - pHVar1 = GetModuleHandleA(lpModuleName); - return pHVar1; -} - - - -/* @004dfe59 file=? name=GetNumberOfConsoleInputEvents */ - -BOOL GetNumberOfConsoleInputEvents(HANDLE hConsoleInput,LPDWORD lpNumberOfEvents) - -{ - BOOL BVar1; - - /* WARNING: Could not recover jumptable at 0x004dfe59. Too many branches */ - /* WARNING: Treating indirect jump as call */ - BVar1 = GetNumberOfConsoleInputEvents(hConsoleInput,lpNumberOfEvents); - return BVar1; -} - - - -/* @004dfe5f file=? name=GetEnvironmentStrings */ - -LPCH GetEnvironmentStrings(void) - -{ - LPCH pCVar1; - - /* WARNING: Could not recover jumptable at 0x004dfe5f. Too many branches */ - /* WARNING: Treating indirect jump as call */ - pCVar1 = GetEnvironmentStrings(); - return pCVar1; -} - - - -/* @004dfe65 file=? name=GetCommandLineA */ - -LPSTR GetCommandLineA(void) - -{ - LPSTR pCVar1; - - /* WARNING: Could not recover jumptable at 0x004dfe65. Too many branches */ - /* WARNING: Treating indirect jump as call */ - pCVar1 = GetCommandLineA(); - return pCVar1; -} - - - -/* @004dfe6b file=? name=GetStdHandle */ - -HANDLE GetStdHandle(DWORD nStdHandle) - -{ - HANDLE pvVar1; - - /* WARNING: Could not recover jumptable at 0x004dfe6b. Too many branches */ - /* WARNING: Treating indirect jump as call */ - pvVar1 = GetStdHandle(nStdHandle); - return pvVar1; -} - - - -/* @004dfe71 file=? name=GetTickCount */ - -DWORD GetTickCount(void) - -{ - DWORD DVar1; - - /* WARNING: Could not recover jumptable at 0x004dfe71. Too many branches */ - /* WARNING: Treating indirect jump as call */ - DVar1 = GetTickCount(); - return DVar1; -} - - - -/* @004dfe7d file=? name=GetVersion */ - -DWORD GetVersion(void) - -{ - DWORD DVar1; - - /* WARNING: Could not recover jumptable at 0x004dfe7d. Too many branches */ - /* WARNING: Treating indirect jump as call */ - DVar1 = GetVersion(); - return DVar1; -} - - - -/* @004dfe83 file=? name=PeekConsoleInputA */ - -BOOL PeekConsoleInputA(HANDLE hConsoleInput,PINPUT_RECORD lpBuffer,DWORD nLength, - LPDWORD lpNumberOfEventsRead) - -{ - BOOL BVar1; - - /* WARNING: Could not recover jumptable at 0x004dfe83. Too many branches */ - /* WARNING: Treating indirect jump as call */ - BVar1 = PeekConsoleInputA(hConsoleInput,lpBuffer,nLength,lpNumberOfEventsRead); - return BVar1; -} - - - -/* @004dfe89 file=? name=RaiseException */ - -void RaiseException(DWORD dwExceptionCode,DWORD dwExceptionFlags,DWORD nNumberOfArguments, - ULONG_PTR *lpArguments) - -{ - /* WARNING: Could not recover jumptable at 0x004dfe89. Too many branches */ - /* WARNING: Treating indirect jump as call */ - RaiseException(dwExceptionCode,dwExceptionFlags,nNumberOfArguments,lpArguments); - return; -} - - - -/* @004dfe8f file=? name=ReadConsoleInputA */ - -BOOL ReadConsoleInputA(HANDLE hConsoleInput,PINPUT_RECORD lpBuffer,DWORD nLength, - LPDWORD lpNumberOfEventsRead) - -{ - BOOL BVar1; - - /* WARNING: Could not recover jumptable at 0x004dfe8f. Too many branches */ - /* WARNING: Treating indirect jump as call */ - BVar1 = ReadConsoleInputA(hConsoleInput,lpBuffer,nLength,lpNumberOfEventsRead); - return BVar1; -} - - - -/* @004dfe95 file=? name=ReadFile */ - -BOOL ReadFile(HANDLE hFile,LPVOID lpBuffer,DWORD nNumberOfBytesToRead,LPDWORD lpNumberOfBytesRead, - LPOVERLAPPED lpOverlapped) - -{ - BOOL BVar1; - - /* WARNING: Could not recover jumptable at 0x004dfe95. Too many branches */ - /* WARNING: Treating indirect jump as call */ - BVar1 = ReadFile(hFile,lpBuffer,nNumberOfBytesToRead,lpNumberOfBytesRead,lpOverlapped); - return BVar1; -} - - - -/* @004dfe9b file=? name=RtlUnwind */ - -void RtlUnwind(PVOID TargetFrame,PVOID TargetIp,PEXCEPTION_RECORD ExceptionRecord,PVOID ReturnValue) - -{ - /* WARNING: Could not recover jumptable at 0x004dfe9b. Too many branches */ - /* WARNING: Treating indirect jump as call */ - RtlUnwind(TargetFrame,TargetIp,ExceptionRecord,ReturnValue); - return; -} - - - -/* @004dfea1 file=? name=SetConsoleCtrlHandler */ - -BOOL SetConsoleCtrlHandler(PHANDLER_ROUTINE HandlerRoutine,BOOL Add) - -{ - BOOL BVar1; - - /* WARNING: Could not recover jumptable at 0x004dfea1. Too many branches */ - /* WARNING: Treating indirect jump as call */ - BVar1 = SetConsoleCtrlHandler(HandlerRoutine,Add); - return BVar1; -} - - - -/* @004dfea7 file=? name=SetConsoleMode */ - -BOOL SetConsoleMode(HANDLE hConsoleHandle,DWORD dwMode) - -{ - BOOL BVar1; - - /* WARNING: Could not recover jumptable at 0x004dfea7. Too many branches */ - /* WARNING: Treating indirect jump as call */ - BVar1 = SetConsoleMode(hConsoleHandle,dwMode); - return BVar1; -} - - - -/* @004dfead file=? name=SetCurrentDirectoryA */ - -BOOL SetCurrentDirectoryA(LPCSTR lpPathName) - -{ - BOOL BVar1; - - /* WARNING: Could not recover jumptable at 0x004dfead. Too many branches */ - /* WARNING: Treating indirect jump as call */ - BVar1 = SetCurrentDirectoryA(lpPathName); - return BVar1; -} - - - -/* @004dfeb3 file=? name=SetEnvironmentVariableA */ - -BOOL SetEnvironmentVariableA(LPCSTR lpName,LPCSTR lpValue) - -{ - BOOL BVar1; - - /* WARNING: Could not recover jumptable at 0x004dfeb3. Too many branches */ - /* WARNING: Treating indirect jump as call */ - BVar1 = SetEnvironmentVariableA(lpName,lpValue); - return BVar1; -} - - - -/* @004dfeb9 file=? name=SetFilePointer */ - -DWORD SetFilePointer(HANDLE hFile,LONG lDistanceToMove,PLONG lpDistanceToMoveHigh,DWORD dwMoveMethod - ) - -{ - DWORD DVar1; - - /* WARNING: Could not recover jumptable at 0x004dfeb9. Too many branches */ - /* WARNING: Treating indirect jump as call */ - DVar1 = SetFilePointer(hFile,lDistanceToMove,lpDistanceToMoveHigh,dwMoveMethod); - return DVar1; -} - - - -/* @004dfebf file=? name=SetHandleCount */ - -UINT SetHandleCount(UINT uNumber) - -{ - UINT UVar1; - - /* WARNING: Could not recover jumptable at 0x004dfebf. Too many branches */ - /* WARNING: Treating indirect jump as call */ - UVar1 = SetHandleCount(uNumber); - return UVar1; -} - - - -/* @004dfec5 file=? name=UnhandledExceptionFilter */ - -LONG UnhandledExceptionFilter(_EXCEPTION_POINTERS *ExceptionInfo) - -{ - LONG LVar1; - - /* WARNING: Could not recover jumptable at 0x004dfec5. Too many branches */ - /* WARNING: Treating indirect jump as call */ - LVar1 = UnhandledExceptionFilter(ExceptionInfo); - return LVar1; -} - - - -/* @004dfecb file=? name=VirtualAlloc */ - -LPVOID VirtualAlloc(LPVOID lpAddress,SIZE_T dwSize,DWORD flAllocationType,DWORD flProtect) - -{ - LPVOID pvVar1; - - /* WARNING: Could not recover jumptable at 0x004dfecb. Too many branches */ - /* WARNING: Treating indirect jump as call */ - pvVar1 = VirtualAlloc(lpAddress,dwSize,flAllocationType,flProtect); - return pvVar1; -} - - - -/* @004dfed1 file=? name=VirtualFree */ - -BOOL VirtualFree(LPVOID lpAddress,SIZE_T dwSize,DWORD dwFreeType) - -{ - BOOL BVar1; - - /* WARNING: Could not recover jumptable at 0x004dfed1. Too many branches */ - /* WARNING: Treating indirect jump as call */ - BVar1 = VirtualFree(lpAddress,dwSize,dwFreeType); - return BVar1; -} - - - -/* @004dfed7 file=? name=WriteFile */ - -BOOL WriteFile(HANDLE hFile,LPCVOID lpBuffer,DWORD nNumberOfBytesToWrite, - LPDWORD lpNumberOfBytesWritten,LPOVERLAPPED lpOverlapped) - -{ - BOOL BVar1; - - /* WARNING: Could not recover jumptable at 0x004dfed7. Too many branches */ - /* WARNING: Treating indirect jump as call */ - BVar1 = WriteFile(hFile,lpBuffer,nNumberOfBytesToWrite,lpNumberOfBytesWritten,lpOverlapped); - return BVar1; -} - - - -/* @004dfedd file=? name=GetProcAddress */ - -FARPROC GetProcAddress(HMODULE hModule,LPCSTR lpProcName) - -{ - FARPROC pFVar1; - - /* WARNING: Could not recover jumptable at 0x004dfedd. Too many branches */ - /* WARNING: Treating indirect jump as call */ - pFVar1 = GetProcAddress(hModule,lpProcName); - return pFVar1; -} - - - -/* @004dfee3 file=? name=MessageBoxA */ - -int MessageBoxA(HWND hWnd,LPCSTR lpText,LPCSTR lpCaption,UINT uType) - -{ - int iVar1; - - /* WARNING: Could not recover jumptable at 0x004dfee3. Too many branches */ - /* WARNING: Treating indirect jump as call */ - iVar1 = MessageBoxA(hWnd,lpText,lpCaption,uType); - return iVar1; -} - - - -/* @004dfee9 file=? name=EnumThreadWindows */ - -BOOL EnumThreadWindows(DWORD dwThreadId,WNDENUMPROC lpfn,LPARAM lParam) - -{ - BOOL BVar1; - - /* WARNING: Could not recover jumptable at 0x004dfee9. Too many branches */ - /* WARNING: Treating indirect jump as call */ - BVar1 = EnumThreadWindows(dwThreadId,lpfn,lParam); - return BVar1; -} - - - diff --git a/reference/decomp/all/part_016.c b/reference/decomp/all/part_016.c new file mode 100644 index 0000000..b6d5fc6 --- /dev/null +++ b/reference/decomp/all/part_016.c @@ -0,0 +1,1593 @@ +/* @004dee3c file=? name=FUN_004dee3c */ + +void __cdecl FUN_004dee3c(UINT param_1) + +{ + FUN_004dedcc(1,0,param_1); + return; +} + + + +/* @004dee74 file=? name=FUN_004dee74 */ + +int __cdecl FUN_004dee74(char *param_1) + +{ + int iVar1; + int iVar2; + int *piVar3; + + iVar1 = FUN_004d4a78(param_1); + for (piVar3 = DAT_005252b4; *piVar3 != 0; piVar3 = piVar3 + 1) { + iVar2 = FUN_004d4ae0((char *)*piVar3,param_1,iVar1); + if ((iVar2 == 0) && (*(char *)(*piVar3 + iVar1) == '=')) break; + } + if (*piVar3 == 0) { + iVar1 = 0; + } + else { + iVar1 = iVar1 + *piVar3 + 1; + } + return iVar1; +} + + + +/* @004deec4 file=? name=FUN_004deec4 */ + +void FUN_004deec4(void) + +{ + return; +} + + + +/* @004df048 file=? name=FUN_004df048 */ + +void __cdecl FUN_004df048(int *param_1,int *param_2) + +{ + if ((*(char *)*param_2 == '\\') && (((char *)*param_2)[1] == '\"')) { + *(undefined1 *)*param_1 = 0x22; + *param_2 = *param_2 + 2; + } + else { + *(undefined1 *)*param_1 = *(undefined1 *)*param_2; + *param_2 = *param_2 + 1; + } + *param_1 = *param_1 + 1; + return; +} + + + +/* @004df078 file=? name=FUN_004df078 */ + +void __cdecl FUN_004df078(int *param_1,int param_2) + +{ + int iVar1; + int *piVar2; + uint uVar3; + uint uVar4; + int *piVar5; + int *piVar6; + + if (DAT_005252a8 == DAT_005252b0) { + DAT_005252b0 = DAT_005252b0 + 0x10; + DAT_005252ac = FUN_004de760(DAT_005252ac,DAT_005252b0 * 4); + if (DAT_005252ac == (int *)0x0) { + FUN_004ded48(s_No_space_for_command_line_argume_00520c4a); + } + } + piVar2 = param_1; + if (param_2 != 0) { + iVar1 = FUN_004d4a78((char *)param_1); + piVar2 = FUN_004de55c(iVar1 + 1); + if (piVar2 == (int *)0x0) { + FUN_004ded48(s_No_space_for_command_line_argume_00520c74); + } + uVar3 = 0xffffffff; + do { + piVar5 = param_1; + if (uVar3 == 0) break; + uVar3 = uVar3 - 1; + piVar5 = (int *)((int)param_1 + 1); + iVar1 = *param_1; + param_1 = piVar5; + } while ((char)iVar1 != '\0'); + uVar3 = ~uVar3; + piVar5 = (int *)((int)piVar5 - uVar3); + piVar6 = piVar2; + for (uVar4 = uVar3 >> 2; uVar4 != 0; uVar4 = uVar4 - 1) { + *piVar6 = *piVar5; + piVar5 = piVar5 + 1; + piVar6 = piVar6 + 1; + } + for (uVar3 = uVar3 & 3; uVar3 != 0; uVar3 = uVar3 - 1) { + *(char *)piVar6 = (char)*piVar5; + piVar5 = (int *)((int)piVar5 + 1); + piVar6 = (int *)((int)piVar6 + 1); + } + } + DAT_005252ac[DAT_005252a8] = (int)piVar2; + DAT_005252a8 = DAT_005252a8 + 1; + return; +} + + + +/* @004df128 file=? name=FUN_004df128 */ + +void __cdecl FUN_004df128(int *param_1) + +{ + FUN_004df078(param_1,0); + return; +} + + + +/* @004df13c file=? name=FUN_004df13c */ + +char * __cdecl FUN_004df13c(char *param_1,char *param_2) + +{ + uint uVar1; + uint uVar2; + char cVar3; + char *pcVar4; + char *pcVar5; + + for (; (cVar3 = *param_2, cVar3 != '\0' && (cVar3 != '=')); param_2 = param_2 + 1) { + if (('`' < cVar3) && (cVar3 < '{')) { + cVar3 = cVar3 + -0x20; + } + *param_1 = cVar3; + param_1 = param_1 + 1; + } + uVar1 = 0xffffffff; + do { + pcVar4 = param_2; + if (uVar1 == 0) break; + uVar1 = uVar1 - 1; + pcVar4 = param_2 + 1; + cVar3 = *param_2; + param_2 = pcVar4; + } while (cVar3 != '\0'); + uVar1 = ~uVar1; + pcVar4 = pcVar4 + -uVar1; + pcVar5 = param_1; + for (uVar2 = uVar1 >> 2; uVar2 != 0; uVar2 = uVar2 - 1) { + *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4; + pcVar4 = pcVar4 + 4; + pcVar5 = pcVar5 + 4; + } + for (uVar1 = uVar1 & 3; uVar1 != 0; uVar1 = uVar1 - 1) { + *pcVar5 = *pcVar4; + pcVar4 = pcVar4 + 1; + pcVar5 = pcVar5 + 1; + } + return param_1; +} + + + +/* @004df190 file=? name=FUN_004df190 */ + +void FUN_004df190(void) + +{ + int iVar1; + int *piVar2; + char *pcVar3; + int iVar4; + + iVar4 = 0; + pcVar3 = DAT_005252c8; + while( true ) { + iVar1 = FUN_004d4a78(pcVar3); + if (iVar1 == 0) break; + iVar4 = iVar4 + 1; + pcVar3 = pcVar3 + iVar1 + 1; + } + DAT_005252b4 = FUN_004de55c((iVar4 + 1) * 4); + if (DAT_005252b4 != (int *)0x0) { + iVar4 = 0; + pcVar3 = DAT_005252c8; + while( true ) { + iVar1 = FUN_004d4a78(pcVar3); + if (iVar1 == 0) break; + piVar2 = FUN_004de55c(iVar1 + 1); + if (piVar2 == (int *)0x0) break; + FUN_004df13c((char *)piVar2,pcVar3); + DAT_005252b4[iVar4] = (int)piVar2; + iVar4 = iVar4 + 1; + pcVar3 = pcVar3 + iVar1 + 1; + } + DAT_005252d8 = DAT_005252b4; + DAT_005252b4[iVar4] = 0; + } + return; +} + + + +/* @004df214 file=? name=FUN_004df214 */ + +int __cdecl FUN_004df214(int param_1) + +{ + int iVar1; + int *piVar2; + + iVar1 = 0; + piVar2 = &DAT_00520cc8; + do { + if (param_1 == *piVar2) { + return iVar1; + } + iVar1 = iVar1 + 1; + piVar2 = piVar2 + 1; + } while (iVar1 < 10); + return -1; +} + + + +/* @004df234 file=? name=FUN_004df234 */ + +undefined4 __cdecl FUN_004df234(int *param_1,undefined4 param_2,int param_3) + +{ + code *pcVar1; + undefined4 uVar2; + int iVar3; + uint uVar4; + undefined4 local_8; + + uVar4 = 0; + iVar3 = *param_1; + if (iVar3 < -0x3fffff6e) { + if (iVar3 == -0x3fffff6f) { + iVar3 = 2; + local_8 = 0x84; + uVar4 = 8; + } + else if (iVar3 == -0x3ffffffb) { + iVar3 = 3; + local_8 = 0xc; + } + else if (iVar3 == -0x3fffffe3) { + iVar3 = 1; + local_8 = 0x14; + } + else if (iVar3 == -0x3fffff72) { + iVar3 = 2; + local_8 = 0x83; + uVar4 = 4; + } + else { + if (iVar3 != -0x3fffff70) { + return 1; + } + iVar3 = 2; + local_8 = 0x81; + uVar4 = 1; + } + } + else if (iVar3 == -0x3fffff6e) { + iVar3 = 2; + local_8 = 0x87; + uVar4 = 0x49; + } + else if (iVar3 == -0x3fffff6d) { + iVar3 = 2; + local_8 = 0x85; + uVar4 = 0x10; + } + else if (iVar3 == -0x3fffff6c) { + iVar3 = 2; + local_8 = 0x7f; + } + else { + if (iVar3 != -0x3fffff6a) { + return 1; + } + iVar3 = 1; + local_8 = 0x16; + } + pcVar1 = *(code **)(&DAT_00520ca0 + iVar3 * 4); + if (pcVar1 == (code *)0x1) { + uVar2 = 0; + } + else if (pcVar1 == (code *)0x0) { + uVar2 = 1; + } + else { + *(undefined4 *)(&DAT_00520ca0 + iVar3 * 4) = 0; + if (((iVar3 == 1) || (iVar3 == 3)) || (iVar3 == 2)) { + FUN_004dc9a0(); + FUN_004dc9f8(); + (*pcVar1)((&DAT_00520cc8)[iVar3],local_8); + *(uint *)(param_3 + 0x20) = *(uint *)(param_3 + 0x20) & ~uVar4; + } + else { + (*pcVar1)((&DAT_00520cc8)[iVar3]); + } + uVar2 = 0; + } + return uVar2; +} + + + +/* @004df3a4 file=? name=FUN_004df3a4 */ + +undefined4 FUN_004df3a4(int param_1) + +{ + int iVar1; + + iVar1 = 2; + if (param_1 != 0) { + iVar1 = 0x15; + } + FUN_004df428(iVar1); + return 1; +} + + + +/* @004df3c8 file=? name=FUN_004df3c8 */ + +undefined4 __cdecl FUN_004df3c8(int param_1,undefined4 param_2) + +{ + undefined4 uVar1; + int iVar2; + + if (DAT_00520c9c == '\0') { + DAT_00524c6c = FUN_004df234; + SetConsoleCtrlHandler(FUN_004df3a4,1); + DAT_00520c9c = '\x01'; + } + iVar2 = FUN_004df214(param_1); + if (iVar2 == -1) { + DAT_00520bcc = 0x13; + return 0xffffffff; + } + uVar1 = *(undefined4 *)(&DAT_00520ca0 + iVar2 * 4); + *(undefined4 *)(&DAT_00520ca0 + iVar2 * 4) = param_2; + return uVar1; +} + + + +/* @004df428 file=? name=FUN_004df428 */ + +undefined4 __cdecl FUN_004df428(int param_1) + +{ + code *pcVar1; + int iVar2; + undefined4 uVar3; + + iVar2 = FUN_004df214(param_1); + if (iVar2 == -1) { + uVar3 = 1; + } + else { + pcVar1 = *(code **)(&DAT_00520ca0 + iVar2 * 4); + if (pcVar1 != (code *)0x1) { + if (pcVar1 == (code *)0x0) { + if ((1 < param_1 - 0x10U) && (param_1 != 0x14)) { + if (param_1 == 0x16) { + FUN_004deda4(); + } + else { + FUN_004dee3c(3); + } + } + } + else { + *(undefined4 *)(&DAT_00520ca0 + iVar2 * 4) = 0; + if ((&DAT_00520cf0)[iVar2] == '\0') { + (*pcVar1)(param_1); + } + else { + (*pcVar1)(param_1,(&DAT_00520cf0)[iVar2]); + } + } + } + uVar3 = 0; + } + return uVar3; +} + + + +/* @004df4a4 file=? name=FUN_004df4a4 */ + +undefined4 FUN_004df4a4(void) + +{ + return 0; +} + + + +/* @004df4a8 file=? name=FUN_004df4a8 */ + +undefined4 FUN_004df4a8(void) + +{ + return 0; +} + + + +/* @004df4ac file=? name=FUN_004df4ac */ + +undefined4 __cdecl FUN_004df4ac(int *param_1,uint param_2) + +{ + undefined4 *puVar1; + char *pcVar2; + undefined4 uVar3; + uint uVar4; + char *pcVar5; + int *local_10; + int local_c; + char *local_8; + + uVar4 = 0; + if (param_2 == 0) { + uVar4 = 0xffff; + } + local_8 = (char *)0x0; + local_10 = param_1; + for (local_c = 0; local_10 = local_10 + 1, local_c < *param_1; local_c = local_c + 1) { + puVar1 = (undefined4 *)*local_10; + if (param_2 == 0) { + pcVar2 = (char *)*puVar1; + pcVar5 = (char *)puVar1[1]; + } + else { + pcVar2 = (char *)puVar1[2]; + pcVar5 = (char *)puVar1[3]; + } + for (; (pcVar2 < pcVar5 && (*(int *)(pcVar2 + 2) != 0)); pcVar2 = pcVar2 + 6) { + if ((*pcVar2 == '\0') && (param_2 == uVar4 <= (byte)pcVar2[1])) { + uVar4 = (uint)(byte)pcVar2[1]; + local_8 = pcVar2; + } + } + } + if (local_8 == (char *)0x0) { + uVar3 = 0; + } + else { + *local_8 = '\x01'; + uVar3 = *(undefined4 *)(local_8 + 2); + } + return uVar3; +} + + + +/* @004df558 file=? name=FUN_004df558 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004df558(int param_1) + +{ + char cVar1; + int *piVar2; + code *pcVar3; + HMODULE pHVar4; + UINT UVar5; + char cVar6; + int *piVar7; + char *pcVar8; + undefined4 uVar9; + undefined4 uVar10; + int local_10; + undefined1 local_c [8]; + + _DAT_005252e8 = *(uint *)(param_1 + 0x10) & 1; + FUN_004dcd7c(); + FUN_004dd494(*(undefined **)(param_1 + 0x1c),*(undefined **)(param_1 + 0x20)); + FUN_004d6db0(*(undefined **)(param_1 + 0x28)); + _DAT_005252dc = 1; + _DAT_005252e0 = param_1; + DAT_005252c4 = local_c; + FUN_004d69d0(); + DAT_005252c8 = GetEnvironmentStrings(); + DAT_005252cc = GetCommandLineA(); + FUN_004deec4(); + piVar2 = (int *)FUN_004df4a4(); + if (piVar2 != (int *)0x0) { + piVar2[*piVar2 + 1] = -1; + while (pcVar3 = (code *)FUN_004df4ac(piVar2,0), pcVar3 != (code *)0x0) { + (*pcVar3)(); + } + piVar7 = piVar2; + for (local_10 = 0; piVar7 = piVar7 + 1, local_10 < *piVar2; local_10 = local_10 + 1) { + (**(code **)(*piVar7 + 0x18))(0,*(undefined4 *)(*piVar7 + 0x14)); + } + } + while (pcVar3 = (code *)FUN_004df4ac((int *)&DAT_005252dc,0), pcVar3 != (code *)0x0) { + (*pcVar3)(); + } + pcVar8 = DAT_005252cc; + if ((*(byte *)(param_1 + 0x10) & 1) == 0) { + UVar5 = (**(code **)(param_1 + 0x18))(DAT_005252d0,DAT_005252d4,DAT_005252d8); + FUN_004dee24(UVar5); + } + else { + for (; (*pcVar8 == ' ' || (*pcVar8 == '\t')); pcVar8 = pcVar8 + 1) { + } + if (*pcVar8 == '\"') { + cVar6 = '\"'; + pcVar8 = pcVar8 + 1; + } + else { + cVar6 = ' '; + } + for (; ((cVar1 = *pcVar8, cVar1 != '\0' && (cVar6 != cVar1)) && (cVar1 != '\t')); + pcVar8 = pcVar8 + 1) { + } + if (*pcVar8 == '\"') { + pcVar8 = pcVar8 + 1; + } + for (; ((cVar6 = *pcVar8, cVar6 != '\0' && (cVar6 == ' ')) || (cVar6 == '\t')); + pcVar8 = pcVar8 + 1) { + } + uVar10 = 10; + uVar9 = 0; + pHVar4 = GetModuleHandleA((LPCSTR)0x0); + UVar5 = (**(code **)(param_1 + 0x18))(pHVar4,uVar9,pcVar8,uVar10); + FUN_004dee24(UVar5); + } + return; +} + + + +/* @004df6bc file=? name=FUN_004df6bc */ + +void FUN_004df6bc(void) + +{ + code *pcVar1; + int *piVar2; + int *piVar3; + int iVar4; + + while (pcVar1 = (code *)FUN_004df4ac((int *)&DAT_005252dc,1), pcVar1 != (code *)0x0) { + (*pcVar1)(); + } + while (pcVar1 = (code *)FUN_004df4ac((int *)&DAT_005252bc,1), pcVar1 != (code *)0x0) { + (*pcVar1)(); + } + piVar2 = (int *)FUN_004df4a8(); + if (piVar2 != (int *)0x0) { + while (pcVar1 = (code *)FUN_004df4ac(piVar2,1), pcVar1 != (code *)0x0) { + (*pcVar1)(); + } + piVar3 = piVar2; + for (iVar4 = 0; piVar3 = piVar3 + 1, iVar4 < *piVar2; iVar4 = iVar4 + 1) { + (**(code **)(*piVar3 + 0x18))(1,*(undefined4 *)(*piVar3 + 0x14)); + } + } + return; +} + + + +/* @004df734 file=? name=FUN_004df734 */ + +void FUN_004df734(UINT param_1) + +{ + /* WARNING: Subroutine does not return */ + ExitProcess(param_1); +} + + + +/* @004df748 file=? name=FUN_004df748 */ + +void __cdecl FUN_004df748(undefined1 *param_1) + +{ + FUN_004d7f10(param_1,s__s__s__02d__02d__02d__02d__4d_s_00520d00); + return; +} + + + +/* @004df794 file=? name=FUN_004df794 */ + +undefined * FUN_004df794(void) + +{ + FUN_004df748(&DAT_005252ec); + return &DAT_005252ec; +} + + + +/* @004df7b4 file=? name=FUN_004df7b4 */ + +void __cdecl FUN_004df7b4(int *param_1) + +{ + FUN_004df950(param_1); + FUN_004df794(); + return; +} + + + +/* @004df7cc file=? name=FUN_004df7cc */ + +undefined4 * __cdecl FUN_004df7cc(uint param_1,int param_2) + +{ + ulonglong uVar1; + bool bVar2; + undefined3 extraout_var; + uint uVar3; + uint uVar4; + int local_8; + + DAT_00525308 = param_1 % 0x3c; + DAT_0052530c = (undefined4)(((ulonglong)param_1 / 0x3c) % 0x3c); + uVar1 = ((ulonglong)param_1 / 0x3c) / 0x3c; + local_8 = (int)(uVar1 / 0x88f8); + DAT_0052531c = local_8 * 4 + 0x46; + local_8 = local_8 * 0x5b5; + uVar4 = (uint)(uVar1 % 0x88f8); + while( true ) { + uVar3 = 0x2238; + if ((DAT_0052531c & 3) == 0) { + uVar3 = 0x2250; + } + if (uVar4 < uVar3) break; + local_8 = local_8 + uVar3 / 0x18; + DAT_0052531c = DAT_0052531c + 1; + uVar4 = uVar4 - uVar3; + } + if (((param_2 == 0) || (DAT_00520ef4 == 0)) || + (bVar2 = FUN_004dfb04(uVar4 % 0x18,uVar4 / 0x18,0,DAT_0052531c - 0x46), + CONCAT31(extraout_var,bVar2) == 0)) { + DAT_00525328 = 0; + } + else { + uVar4 = uVar4 + 1; + DAT_00525328 = 1; + } + DAT_00525310 = uVar4 % 0x18; + DAT_00525324 = uVar4 / 0x18; + DAT_00525320 = (local_8 + DAT_00525324 + 4) % 7; + uVar4 = DAT_00525324 + 1; + DAT_00525314 = uVar4; + if ((((DAT_0052531c & 3) == 0) && (DAT_00525314 = DAT_00525324, uVar4 < 0x3d)) && + (DAT_00525314 = uVar4, uVar4 == 0x3c)) { + DAT_00525318 = 1; + DAT_00525314 = 0x1d; + } + else { + for (DAT_00525318 = 0; (uint)(int)(char)(&DAT_00520dc4)[DAT_00525318] < DAT_00525314; + DAT_00525318 = DAT_00525318 + 1) { + DAT_00525314 = DAT_00525314 - (int)(char)(&DAT_00520dc4)[DAT_00525318]; + } + } + return &DAT_00525308; +} + + + +/* @004df938 file=? name=FUN_004df938 */ + +void __cdecl FUN_004df938(uint *param_1) + +{ + FUN_004df7cc(*param_1,0); + return; +} + + + +/* @004df950 file=? name=FUN_004df950 */ + +undefined4 * __cdecl FUN_004df950(int *param_1) + +{ + undefined4 *puVar1; + + if (*param_1 < DAT_00520ef0) { + return (undefined4 *)0x0; + } + puVar1 = FUN_004df7cc(*param_1 - DAT_00520ef0,1); + return puVar1; +} + + + +/* @004df97c file=? name=FUN_004df97c */ + +undefined * FUN_004df97c(void) + +{ + char cVar1; + char *pcVar2; + uint uVar3; + DWORD DVar4; + int iVar5; + undefined *puVar6; + char *pcVar7; + int iVar8; + _TIME_ZONE_INFORMATION local_bc; + + pcVar2 = (char *)FUN_004dee74(&DAT_00520ef8); + if ((((((pcVar2 == (char *)0x0) || (uVar3 = FUN_004d4a78(pcVar2), uVar3 < 4)) || + (((&DAT_005207dd)[*pcVar2] & 0xc) == 0)) || + ((((&DAT_005207dd)[pcVar2[1]] & 0xc) == 0 || (((&DAT_005207dd)[pcVar2[2]] & 0xc) == 0)))) || + ((cVar1 = pcVar2[3], cVar1 != '-' && ((cVar1 != '+' && (((&DAT_005207dd)[cVar1] & 2) == 0))))) + ) || ((((&DAT_005207dd)[pcVar2[3]] & 2) == 0 && (((&DAT_005207dd)[pcVar2[4]] & 2) == 0)))) { + DVar4 = GetTimeZoneInformation(&local_bc); + DAT_00520ef4 = (uint)(DVar4 == 2); + DAT_00520ef0 = (local_bc.Bias + local_bc.StandardBias) * 0x3c; + *PTR_DAT_00520ee8 = DAT_00520efb; + puVar6 = PTR_DAT_00520eec; + *PTR_DAT_00520eec = DAT_00520efc; + return puVar6; + } + FUN_004d4988((undefined4 *)PTR_DAT_00520eec,0,4); + FUN_004d4b9c((undefined4 *)PTR_DAT_00520ee8,pcVar2,3); + PTR_DAT_00520ee8[3] = 0; + iVar5 = FUN_004dd1e0(pcVar2 + 3); + DAT_00520ef0 = iVar5 * 0xe10; + iVar5 = 0; + DAT_00520ef4 = 0; + iVar8 = 3; + pcVar7 = pcVar2 + 3; + while( true ) { + cVar1 = *pcVar7; + if (cVar1 == '\0') { + DAT_00520ef4 = 0; + return (undefined *)CONCAT31((int3)((uint)iVar5 >> 8),cVar1); + } + iVar5 = (int)cVar1; + if (((&DAT_005207dd)[iVar5] & 0xc) != 0) break; + iVar8 = iVar8 + 1; + pcVar7 = pcVar7 + 1; + } + puVar6 = (undefined *)FUN_004d4a78(pcVar2 + iVar8); + if (puVar6 < (undefined *)0x3) { + return puVar6; + } + if ((((undefined *)(int)pcVar7[1])[0x5207dd] & 0xc) == 0) { + return (undefined *)(int)pcVar7[1]; + } + if ((((undefined *)(int)pcVar7[2])[0x5207dd] & 0xc) == 0) { + return (undefined *)(int)pcVar7[2]; + } + FUN_004d4b9c((undefined4 *)PTR_DAT_00520eec,pcVar2 + iVar8,3); + puVar6 = PTR_DAT_00520eec; + PTR_DAT_00520eec[3] = 0; + DAT_00520ef4 = 1; + return puVar6; +} + + + +/* @004dfb04 file=? name=FUN_004dfb04 */ + +bool __cdecl FUN_004dfb04(uint param_1,uint param_2,uint param_3,uint param_4) + +{ + uint *puVar1; + int iVar2; + uint uVar3; + bool bVar4; + uint local_8; + + if (param_3 == 0) { + local_8 = param_2; + if ((0x3a < param_2) && ((param_4 + 0x46 & 3) == 0)) { + local_8 = param_2 - 1; + } + param_3 = 0; + for (puVar1 = &DAT_00520dd0; *puVar1 <= local_8; puVar1 = puVar1 + 1) { + param_3 = param_3 + 1; + } + } + else { + param_2 = param_2 + (&DAT_00520dcc)[param_3]; + if ((2 < param_3) && ((param_4 + 0x46 & 3) == 0)) { + param_2 = param_2 + 1; + } + } + if ((param_3 < 4) || (10 < param_3)) { + bVar4 = false; + } + else if ((param_3 < 5) || (9 < param_3)) { + if ((param_4 < 0x11) || (param_3 != 4)) { + iVar2 = (&DAT_00520dd0)[param_3]; + } + else { + iVar2 = iRam00520ddc + 7; + } + if ((param_4 + 0x46 & 3) != 0) { + iVar2 = iVar2 + -1; + } + uVar3 = iVar2 - ((param_4 + 1 >> 2) + iVar2 + param_4 * 0x16d + 4) % 7; + if (param_3 == 4) { + if (uVar3 < param_2) { + bVar4 = true; + } + else if (param_2 < uVar3) { + bVar4 = false; + } + else { + bVar4 = 1 < param_1; + } + } + else if (param_2 < uVar3) { + bVar4 = true; + } + else if (uVar3 < param_2) { + bVar4 = false; + } + else { + bVar4 = param_1 < 2; + } + } + else { + bVar4 = true; + } + return bVar4; +} + + + +/* @004dfc18 file=? name=FUN_004dfc18 */ + +int __cdecl FUN_004dfc18(int param_1,int param_2,int param_3,int param_4,int param_5,int param_6) + +{ + int iVar1; + char *pcVar2; + bool bVar3; + char *pcVar4; + int iVar5; + undefined3 extraout_var; + uint uVar6; + int iVar7; + uint uVar8; + uint uVar9; + int local_8; + + if ((param_1 < 0x46) || (0x8a < param_1)) { + local_8 = -1; + } + else { + iVar1 = param_5 + param_6 / 0x3c; + iVar5 = param_4 + iVar1 / 0x3c; + uVar8 = param_3 + iVar5 / 0x18; + uVar6 = iVar5 % 0x18; + uVar9 = param_1 + param_2 / 0xc; + pcVar2 = &DAT_00520dc4 + param_2 % 0xc; + iVar5 = param_2 % 0xc; + while (iVar7 = iVar5, pcVar4 = pcVar2, (int)*pcVar4 <= (int)uVar8) { + if (((uVar9 & 3) == 0) && (iVar7 == 1)) { + if ((int)uVar8 < 0x1d) break; + iVar5 = -0x1d; + } + else { + iVar5 = -(int)*pcVar4; + } + uVar8 = uVar8 + iVar5; + pcVar2 = pcVar4 + 1; + iVar5 = iVar7 + 1; + if (0xb < iVar7 + 1) { + uVar9 = uVar9 + 1; + pcVar2 = pcVar4 + -0xb; + iVar5 = iVar7 + -0xb; + } + } + iVar5 = uVar9 - 0x44; + if (iVar5 < 0) { + iVar5 = uVar9 - 0x41; + } + iVar5 = iVar5 >> 2; + if (((uVar9 & 3) == 0) && (iVar7 < 2)) { + iVar5 = iVar5 + -1; + } + local_8 = (iVar5 + (uVar9 - 0x46) * 0x16d + (&DAT_00520dd0)[iVar7] + uVar8) * 0x15180 + + uVar6 * 0xe10 + (iVar1 % 0x3c) * 0x3c + param_6 % 0x3c + DAT_00520ef0; + if ((DAT_00520ef4 != 0) && + (bVar3 = FUN_004dfb04(uVar6,uVar8,iVar7 + 1,uVar9 - 0x46), CONCAT31(extraout_var,bVar3) != 0) + ) { + local_8 = local_8 + -0xe10; + } + if (local_8 < 1) { + local_8 = -1; + } + } + return local_8; +} + + + +/* @004dfd90 file=? name=FUN_004dfd90 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +int FUN_004dfd90(void) + +{ + DWORD DVar1; + + DVar1 = GetTickCount(); + return DVar1 - _DAT_00520f00; +} + + + +/* @004dfda8 file=? name=FUN_004dfda8 */ + +void __cdecl FUN_004dfda8(int *param_1) + +{ + int iVar1; + _SYSTEMTIME local_14; + + GetLocalTime(&local_14); + iVar1 = FUN_004dfc18(local_14.wYear - 0x76c,local_14.wMonth - 1,local_14.wDay - 1, + (uint)local_14.wHour,(uint)local_14.wMinute,(uint)local_14.wSecond); + if (param_1 != (int *)0x0) { + *param_1 = iVar1; + } + return; +} + + + +/* @004dfdf3 file=? name=GetStartupInfoA */ + +void GetStartupInfoA(LPSTARTUPINFOA lpStartupInfo) + +{ + /* WARNING: Could not recover jumptable at 0x004dfdf3. Too many branches */ + /* WARNING: Treating indirect jump as call */ + GetStartupInfoA(lpStartupInfo); + return; +} + + + +/* @004dfdf9 file=? name=DeleteFileA */ + +BOOL DeleteFileA(LPCSTR lpFileName) + +{ + BOOL BVar1; + + /* WARNING: Could not recover jumptable at 0x004dfdf9. Too many branches */ + /* WARNING: Treating indirect jump as call */ + BVar1 = DeleteFileA(lpFileName); + return BVar1; +} + + + +/* @004dfdff file=? name=ExitProcess */ + +void ExitProcess(UINT uExitCode) + +{ + /* WARNING: Could not recover jumptable at 0x004dfdff. Too many branches */ + /* WARNING: Subroutine does not return */ + /* WARNING: Treating indirect jump as call */ + ExitProcess(uExitCode); + return; +} + + + +/* @004dfe05 file=? name=CloseHandle */ + +BOOL CloseHandle(HANDLE hObject) + +{ + BOOL BVar1; + + /* WARNING: Could not recover jumptable at 0x004dfe05. Too many branches */ + /* WARNING: Treating indirect jump as call */ + BVar1 = CloseHandle(hObject); + return BVar1; +} + + + +/* @004dfe0b file=? name=GetConsoleMode */ + +BOOL GetConsoleMode(HANDLE hConsoleHandle,LPDWORD lpMode) + +{ + BOOL BVar1; + + /* WARNING: Could not recover jumptable at 0x004dfe0b. Too many branches */ + /* WARNING: Treating indirect jump as call */ + BVar1 = GetConsoleMode(hConsoleHandle,lpMode); + return BVar1; +} + + + +/* @004dfe11 file=? name=GetCurrentDirectoryA */ + +DWORD GetCurrentDirectoryA(DWORD nBufferLength,LPSTR lpBuffer) + +{ + DWORD DVar1; + + /* WARNING: Could not recover jumptable at 0x004dfe11. Too many branches */ + /* WARNING: Treating indirect jump as call */ + DVar1 = GetCurrentDirectoryA(nBufferLength,lpBuffer); + return DVar1; +} + + + +/* @004dfe17 file=? name=GetCurrentThreadId */ + +DWORD GetCurrentThreadId(void) + +{ + DWORD DVar1; + + /* WARNING: Could not recover jumptable at 0x004dfe17. Too many branches */ + /* WARNING: Treating indirect jump as call */ + DVar1 = GetCurrentThreadId(); + return DVar1; +} + + + +/* @004dfe1d file=? name=GetDriveTypeA */ + +UINT GetDriveTypeA(LPCSTR lpRootPathName) + +{ + UINT UVar1; + + /* WARNING: Could not recover jumptable at 0x004dfe1d. Too many branches */ + /* WARNING: Treating indirect jump as call */ + UVar1 = GetDriveTypeA(lpRootPathName); + return UVar1; +} + + + +/* @004dfe23 file=? name=CreateFileA */ + +HANDLE CreateFileA(LPCSTR lpFileName,DWORD dwDesiredAccess,DWORD dwShareMode, + LPSECURITY_ATTRIBUTES lpSecurityAttributes,DWORD dwCreationDisposition, + DWORD dwFlagsAndAttributes,HANDLE hTemplateFile) + +{ + HANDLE pvVar1; + + /* WARNING: Could not recover jumptable at 0x004dfe23. Too many branches */ + /* WARNING: Treating indirect jump as call */ + pvVar1 = CreateFileA(lpFileName,dwDesiredAccess,dwShareMode,lpSecurityAttributes, + dwCreationDisposition,dwFlagsAndAttributes,hTemplateFile); + return pvVar1; +} + + + +/* @004dfe29 file=? name=GetEnvironmentVariableA */ + +DWORD GetEnvironmentVariableA(LPCSTR lpName,LPSTR lpBuffer,DWORD nSize) + +{ + DWORD DVar1; + + /* WARNING: Could not recover jumptable at 0x004dfe29. Too many branches */ + /* WARNING: Treating indirect jump as call */ + DVar1 = GetEnvironmentVariableA(lpName,lpBuffer,nSize); + return DVar1; +} + + + +/* @004dfe2f file=? name=GetFileAttributesA */ + +DWORD GetFileAttributesA(LPCSTR lpFileName) + +{ + DWORD DVar1; + + /* WARNING: Could not recover jumptable at 0x004dfe2f. Too many branches */ + /* WARNING: Treating indirect jump as call */ + DVar1 = GetFileAttributesA(lpFileName); + return DVar1; +} + + + +/* @004dfe35 file=? name=GetFileType */ + +DWORD GetFileType(HANDLE hFile) + +{ + DWORD DVar1; + + /* WARNING: Could not recover jumptable at 0x004dfe35. Too many branches */ + /* WARNING: Treating indirect jump as call */ + DVar1 = GetFileType(hFile); + return DVar1; +} + + + +/* @004dfe3b file=? name=GetLastError */ + +DWORD GetLastError(void) + +{ + DWORD DVar1; + + /* WARNING: Could not recover jumptable at 0x004dfe3b. Too many branches */ + /* WARNING: Treating indirect jump as call */ + DVar1 = GetLastError(); + return DVar1; +} + + + +/* @004dfe41 file=? name=GetLocalTime */ + +void GetLocalTime(LPSYSTEMTIME lpSystemTime) + +{ + /* WARNING: Could not recover jumptable at 0x004dfe41. Too many branches */ + /* WARNING: Treating indirect jump as call */ + GetLocalTime(lpSystemTime); + return; +} + + + +/* @004dfe47 file=? name=GetLogicalDrives */ + +DWORD GetLogicalDrives(void) + +{ + DWORD DVar1; + + /* WARNING: Could not recover jumptable at 0x004dfe47. Too many branches */ + /* WARNING: Treating indirect jump as call */ + DVar1 = GetLogicalDrives(); + return DVar1; +} + + + +/* @004dfe4d file=? name=GetModuleFileNameA */ + +DWORD GetModuleFileNameA(HMODULE hModule,LPSTR lpFilename,DWORD nSize) + +{ + DWORD DVar1; + + /* WARNING: Could not recover jumptable at 0x004dfe4d. Too many branches */ + /* WARNING: Treating indirect jump as call */ + DVar1 = GetModuleFileNameA(hModule,lpFilename,nSize); + return DVar1; +} + + + +/* @004dfe53 file=? name=GetModuleHandleA */ + +HMODULE GetModuleHandleA(LPCSTR lpModuleName) + +{ + HMODULE pHVar1; + + /* WARNING: Could not recover jumptable at 0x004dfe53. Too many branches */ + /* WARNING: Treating indirect jump as call */ + pHVar1 = GetModuleHandleA(lpModuleName); + return pHVar1; +} + + + +/* @004dfe59 file=? name=GetNumberOfConsoleInputEvents */ + +BOOL GetNumberOfConsoleInputEvents(HANDLE hConsoleInput,LPDWORD lpNumberOfEvents) + +{ + BOOL BVar1; + + /* WARNING: Could not recover jumptable at 0x004dfe59. Too many branches */ + /* WARNING: Treating indirect jump as call */ + BVar1 = GetNumberOfConsoleInputEvents(hConsoleInput,lpNumberOfEvents); + return BVar1; +} + + + +/* @004dfe5f file=? name=GetEnvironmentStrings */ + +LPCH GetEnvironmentStrings(void) + +{ + LPCH pCVar1; + + /* WARNING: Could not recover jumptable at 0x004dfe5f. Too many branches */ + /* WARNING: Treating indirect jump as call */ + pCVar1 = GetEnvironmentStrings(); + return pCVar1; +} + + + +/* @004dfe65 file=? name=GetCommandLineA */ + +LPSTR GetCommandLineA(void) + +{ + LPSTR pCVar1; + + /* WARNING: Could not recover jumptable at 0x004dfe65. Too many branches */ + /* WARNING: Treating indirect jump as call */ + pCVar1 = GetCommandLineA(); + return pCVar1; +} + + + +/* @004dfe6b file=? name=GetStdHandle */ + +HANDLE GetStdHandle(DWORD nStdHandle) + +{ + HANDLE pvVar1; + + /* WARNING: Could not recover jumptable at 0x004dfe6b. Too many branches */ + /* WARNING: Treating indirect jump as call */ + pvVar1 = GetStdHandle(nStdHandle); + return pvVar1; +} + + + +/* @004dfe71 file=? name=GetTickCount */ + +DWORD GetTickCount(void) + +{ + DWORD DVar1; + + /* WARNING: Could not recover jumptable at 0x004dfe71. Too many branches */ + /* WARNING: Treating indirect jump as call */ + DVar1 = GetTickCount(); + return DVar1; +} + + + +/* @004dfe77 file=? name=GetTimeZoneInformation */ + +DWORD GetTimeZoneInformation(LPTIME_ZONE_INFORMATION lpTimeZoneInformation) + +{ + DWORD DVar1; + + /* WARNING: Could not recover jumptable at 0x004dfe77. Too many branches */ + /* WARNING: Treating indirect jump as call */ + DVar1 = GetTimeZoneInformation(lpTimeZoneInformation); + return DVar1; +} + + + +/* @004dfe7d file=? name=GetVersion */ + +DWORD GetVersion(void) + +{ + DWORD DVar1; + + /* WARNING: Could not recover jumptable at 0x004dfe7d. Too many branches */ + /* WARNING: Treating indirect jump as call */ + DVar1 = GetVersion(); + return DVar1; +} + + + +/* @004dfe83 file=? name=PeekConsoleInputA */ + +BOOL PeekConsoleInputA(HANDLE hConsoleInput,PINPUT_RECORD lpBuffer,DWORD nLength, + LPDWORD lpNumberOfEventsRead) + +{ + BOOL BVar1; + + /* WARNING: Could not recover jumptable at 0x004dfe83. Too many branches */ + /* WARNING: Treating indirect jump as call */ + BVar1 = PeekConsoleInputA(hConsoleInput,lpBuffer,nLength,lpNumberOfEventsRead); + return BVar1; +} + + + +/* @004dfe89 file=? name=RaiseException */ + +void RaiseException(DWORD dwExceptionCode,DWORD dwExceptionFlags,DWORD nNumberOfArguments, + ULONG_PTR *lpArguments) + +{ + /* WARNING: Could not recover jumptable at 0x004dfe89. Too many branches */ + /* WARNING: Treating indirect jump as call */ + RaiseException(dwExceptionCode,dwExceptionFlags,nNumberOfArguments,lpArguments); + return; +} + + + +/* @004dfe8f file=? name=ReadConsoleInputA */ + +BOOL ReadConsoleInputA(HANDLE hConsoleInput,PINPUT_RECORD lpBuffer,DWORD nLength, + LPDWORD lpNumberOfEventsRead) + +{ + BOOL BVar1; + + /* WARNING: Could not recover jumptable at 0x004dfe8f. Too many branches */ + /* WARNING: Treating indirect jump as call */ + BVar1 = ReadConsoleInputA(hConsoleInput,lpBuffer,nLength,lpNumberOfEventsRead); + return BVar1; +} + + + +/* @004dfe95 file=? name=ReadFile */ + +BOOL ReadFile(HANDLE hFile,LPVOID lpBuffer,DWORD nNumberOfBytesToRead,LPDWORD lpNumberOfBytesRead, + LPOVERLAPPED lpOverlapped) + +{ + BOOL BVar1; + + /* WARNING: Could not recover jumptable at 0x004dfe95. Too many branches */ + /* WARNING: Treating indirect jump as call */ + BVar1 = ReadFile(hFile,lpBuffer,nNumberOfBytesToRead,lpNumberOfBytesRead,lpOverlapped); + return BVar1; +} + + + +/* @004dfe9b file=? name=RtlUnwind */ + +void RtlUnwind(PVOID TargetFrame,PVOID TargetIp,PEXCEPTION_RECORD ExceptionRecord,PVOID ReturnValue) + +{ + /* WARNING: Could not recover jumptable at 0x004dfe9b. Too many branches */ + /* WARNING: Treating indirect jump as call */ + RtlUnwind(TargetFrame,TargetIp,ExceptionRecord,ReturnValue); + return; +} + + + +/* @004dfea1 file=? name=SetConsoleCtrlHandler */ + +BOOL SetConsoleCtrlHandler(PHANDLER_ROUTINE HandlerRoutine,BOOL Add) + +{ + BOOL BVar1; + + /* WARNING: Could not recover jumptable at 0x004dfea1. Too many branches */ + /* WARNING: Treating indirect jump as call */ + BVar1 = SetConsoleCtrlHandler(HandlerRoutine,Add); + return BVar1; +} + + + +/* @004dfea7 file=? name=SetConsoleMode */ + +BOOL SetConsoleMode(HANDLE hConsoleHandle,DWORD dwMode) + +{ + BOOL BVar1; + + /* WARNING: Could not recover jumptable at 0x004dfea7. Too many branches */ + /* WARNING: Treating indirect jump as call */ + BVar1 = SetConsoleMode(hConsoleHandle,dwMode); + return BVar1; +} + + + +/* @004dfead file=? name=SetCurrentDirectoryA */ + +BOOL SetCurrentDirectoryA(LPCSTR lpPathName) + +{ + BOOL BVar1; + + /* WARNING: Could not recover jumptable at 0x004dfead. Too many branches */ + /* WARNING: Treating indirect jump as call */ + BVar1 = SetCurrentDirectoryA(lpPathName); + return BVar1; +} + + + +/* @004dfeb3 file=? name=SetEnvironmentVariableA */ + +BOOL SetEnvironmentVariableA(LPCSTR lpName,LPCSTR lpValue) + +{ + BOOL BVar1; + + /* WARNING: Could not recover jumptable at 0x004dfeb3. Too many branches */ + /* WARNING: Treating indirect jump as call */ + BVar1 = SetEnvironmentVariableA(lpName,lpValue); + return BVar1; +} + + + +/* @004dfeb9 file=? name=SetFilePointer */ + +DWORD SetFilePointer(HANDLE hFile,LONG lDistanceToMove,PLONG lpDistanceToMoveHigh,DWORD dwMoveMethod + ) + +{ + DWORD DVar1; + + /* WARNING: Could not recover jumptable at 0x004dfeb9. Too many branches */ + /* WARNING: Treating indirect jump as call */ + DVar1 = SetFilePointer(hFile,lDistanceToMove,lpDistanceToMoveHigh,dwMoveMethod); + return DVar1; +} + + + +/* @004dfebf file=? name=SetHandleCount */ + +UINT SetHandleCount(UINT uNumber) + +{ + UINT UVar1; + + /* WARNING: Could not recover jumptable at 0x004dfebf. Too many branches */ + /* WARNING: Treating indirect jump as call */ + UVar1 = SetHandleCount(uNumber); + return UVar1; +} + + + +/* @004dfec5 file=? name=UnhandledExceptionFilter */ + +LONG UnhandledExceptionFilter(_EXCEPTION_POINTERS *ExceptionInfo) + +{ + LONG LVar1; + + /* WARNING: Could not recover jumptable at 0x004dfec5. Too many branches */ + /* WARNING: Treating indirect jump as call */ + LVar1 = UnhandledExceptionFilter(ExceptionInfo); + return LVar1; +} + + + +/* @004dfecb file=? name=VirtualAlloc */ + +LPVOID VirtualAlloc(LPVOID lpAddress,SIZE_T dwSize,DWORD flAllocationType,DWORD flProtect) + +{ + LPVOID pvVar1; + + /* WARNING: Could not recover jumptable at 0x004dfecb. Too many branches */ + /* WARNING: Treating indirect jump as call */ + pvVar1 = VirtualAlloc(lpAddress,dwSize,flAllocationType,flProtect); + return pvVar1; +} + + + +/* @004dfed1 file=? name=VirtualFree */ + +BOOL VirtualFree(LPVOID lpAddress,SIZE_T dwSize,DWORD dwFreeType) + +{ + BOOL BVar1; + + /* WARNING: Could not recover jumptable at 0x004dfed1. Too many branches */ + /* WARNING: Treating indirect jump as call */ + BVar1 = VirtualFree(lpAddress,dwSize,dwFreeType); + return BVar1; +} + + + +/* @004dfed7 file=? name=WriteFile */ + +BOOL WriteFile(HANDLE hFile,LPCVOID lpBuffer,DWORD nNumberOfBytesToWrite, + LPDWORD lpNumberOfBytesWritten,LPOVERLAPPED lpOverlapped) + +{ + BOOL BVar1; + + /* WARNING: Could not recover jumptable at 0x004dfed7. Too many branches */ + /* WARNING: Treating indirect jump as call */ + BVar1 = WriteFile(hFile,lpBuffer,nNumberOfBytesToWrite,lpNumberOfBytesWritten,lpOverlapped); + return BVar1; +} + + + +/* @004dfedd file=? name=GetProcAddress */ + +FARPROC GetProcAddress(HMODULE hModule,LPCSTR lpProcName) + +{ + FARPROC pFVar1; + + /* WARNING: Could not recover jumptable at 0x004dfedd. Too many branches */ + /* WARNING: Treating indirect jump as call */ + pFVar1 = GetProcAddress(hModule,lpProcName); + return pFVar1; +} + + + +/* @004dfee3 file=? name=MessageBoxA */ + +int MessageBoxA(HWND hWnd,LPCSTR lpText,LPCSTR lpCaption,UINT uType) + +{ + int iVar1; + + /* WARNING: Could not recover jumptable at 0x004dfee3. Too many branches */ + /* WARNING: Treating indirect jump as call */ + iVar1 = MessageBoxA(hWnd,lpText,lpCaption,uType); + return iVar1; +} + + + +/* @004dfee9 file=? name=EnumThreadWindows */ + +BOOL EnumThreadWindows(DWORD dwThreadId,WNDENUMPROC lpfn,LPARAM lParam) + +{ + BOOL BVar1; + + /* WARNING: Could not recover jumptable at 0x004dfee9. Too many branches */ + /* WARNING: Treating indirect jump as call */ + BVar1 = EnumThreadWindows(dwThreadId,lpfn,lParam); + return BVar1; +} + + + diff --git a/reference/decomp/archive_2025export/GAP_CENSUS.md b/reference/decomp/archive_2025export/GAP_CENSUS.md new file mode 100644 index 0000000..fe2595b --- /dev/null +++ b/reference/decomp/archive_2025export/GAP_CENSUS.md @@ -0,0 +1,81 @@ +# GAP CENSUS -- the export dark-region inventory (#60) + +Generated by `tools/gapcensus.py` (deterministic; re-run after any re-export). +Machine-readable twin: `gap_census.tsv`. + +## Headline +| Metric | Value | +|---|---| +| Code section (.text) | `0x401000`-`0x4e0000` (892 KB) | +| Indexed functions (functions_index.tsv) | 6267, covering 778 KB (87.3%) | +| **RAW DARK (no indexed function at all)** | **428 regions >= 16B, 105 KB (11.9%) -- 90 KB REAL CODE after padding** | +| Exported pseudocode functions (part_*.c) | 6267 | +| **Indexed but NOT exported** (Ghidra knew it; no pseudocode) | **0 functions, 0 KB** | +| Function starts discovered inside dark regions | 332 (call-graph + data-pointer evidence) | + +Reading the tables: `visited` = the address is already cited somewhere in +game/ context/ docs/ (a prior dig reached it); everything else is UNCHARTED. +`tu` = nearest file-tagged export neighbors (`before|after` when they disagree). + +## Dark code by suspected TU family + +| Family | Regions | Real code bytes | +|---|---|---| +| munga/ (engine core -- source in repo) | 150 | 28540 | +| bt/ (GAME -- reconstruction target) | 87 | 23954 | +| BOUNDARY/mixed | 59 | 15581 | +| bt_l4/ (GAME video/glue -- reconstruction target) | 80 | 14916 | +| munga_l4/ (engine L4 -- source in repo) | 52 | 9529 | + +## Top 40 dark regions by REAL CODE bytes (padding excluded) + +| # | Range | Code bytes | Fn starts | Call-ins | Visited | Suspected TU | +|---|---|---|---|---|---|---| +| 1 | `0x412e41`-`0x4146dc` | 5936 | 6 | 0 | - | munga/boxsolid.cpp|munga/iterator.cpp | +| 2 | `0x4a9b5a`-`0x4ab188` | 4957 | 1 | 0 | 69: `4a9b5a` `4a9b5c` `4a9b6c` `4a9bff`... | bt/mech2.cpp|bt/heat.cpp | +| 3 | `0x486467`-`0x487788` | 4265 | 0 | 0 | - | munga_l4/l4splr.cpp|bt/btmssn.cpp | +| 4 | `0x49ffc8`-`0x4a1232` | 4116 | 5 | 2 | 89: `49ffc8` `49ffcc` `49ffde` `49ffff`... | bt/btmssn.cpp|bt/mech.cpp | +| 5 | `0x4cdce5`-`0x4ceecc` | 3831 | 1 | 0 | 18: `4cdcf0` `4cdd75` `4cdd9d` `4cddc1`... | bt_l4/btl4vid.cpp | +| 6 | `0x4a68ce`-`0x4a71f4` | 1822 | 2 | 0 | 44: `4a6928` `4a6989` `4a69aa` `4a69d6`... | bt/mech2.cpp | +| 7 | `0x4596ab`-`0x459eb8` | 1795 | 0 | 0 | 1: `4599ae` | munga_l4/l4vidrnd.cpp|munga_l4/l4video.cpp | +| 8 | `0x480a2a`-`0x48116d` | 1521 | 0 | 0 | - | munga_l4/l4splr.cpp|bt/btmssn.cpp | +| 9 | `0x42f3fe`-`0x42f9bc` | 1341 | 1 | 0 | - | munga/player.cpp|munga/explode.cpp | +| 10 | `0x40c82a`-`0x40cdb4` | 1322 | 0 | 0 | - | munga/scalar.cpp|munga/boxsolid.cpp | +| 11 | `0x464bf6`-`0x4651ac` | 1312 | 2 | 0 | - | munga_l4/l4audio.cpp|munga_l4/l4audlvl.cpp | +| 12 | `0x40b68c`-`0x40bbe8` | 1293 | 0 | 0 | - | munga/scalar.cpp|munga/boxsolid.cpp | +| 13 | `0x481f77`-`0x48255c` | 1267 | 0 | 0 | - | munga_l4/l4splr.cpp|bt/btmssn.cpp | +| 14 | `0x47ae1b`-`0x47b2ec` | 1060 | 0 | 0 | - | munga_l4/l4ctrl.cpp|munga_l4/l4app.cpp | +| 15 | `0x4dd80a`-`0x4ddc7c` | 1030 | 0 | 0 | - | bt_l4/btl4app.cpp|? | +| 16 | `0x405b1e`-`0x405f44` | 972 | 0 | 0 | - | munga/filestrm.hpp|munga/scalar.cpp | +| 17 | `0x427fd0`-`0x4283b8` | 931 | 0 | 0 | - | munga/network.cpp|munga/watcher.cpp | +| 18 | `0x4cba73`-`0x4cbea0` | 904 | 1 | 0 | 1: `4cbaf0` | bt_l4/btl4gaug.cpp|bt_l4/btl4vid.cpp | +| 19 | `0x4be3cf`-`0x4be7c4` | 897 | 1 | 0 | 1: `4be474` | bt/mechweap.hpp|bt/btplayer.cpp | +| 20 | `0x4b297b`-`0x4b2d8c` | 894 | 1 | 1 | 30: `4b2980` `4b298c` `4b299e` `4b29bd`... | bt/powersub.cpp|bt/mechweap.cpp | +| 21 | `0x4da08f`-`0x4da44c` | 866 | 4 | 0 | - | bt_l4/btl4app.cpp|? | +| 22 | `0x4147f9`-`0x414b60` | 789 | 4 | 0 | - | munga/boxsolid.cpp|munga/iterator.cpp | +| 23 | `0x4d41ae`-`0x4d45b0` | 765 | 0 | 0 | - | bt_l4/btl4app.cpp|? | +| 24 | `0x412940`-`0x412c78` | 760 | 4 | 0 | - | munga/boxsolid.cpp|munga/iterator.cpp | +| 25 | `0x4af691`-`0x4af9cf` | 707 | 0 | 0 | - | bt/heat.cpp|bt/mechmppr.cpp | +| 26 | `0x4bc0fd`-`0x4bc3fc` | 693 | 1 | 0 | 6: `4bc100` `4bc104` `4bc136` `4bc194`... | bt/mechweap.hpp|bt/btplayer.cpp | +| 27 | `0x4829ab`-`0x482c9f` | 687 | 0 | 0 | - | munga_l4/l4splr.cpp|bt/btmssn.cpp | +| 28 | `0x4bdd7b`-`0x4be078` | 673 | 4 | 0 | - | bt/mechweap.hpp|bt/btplayer.cpp | +| 29 | `0x4105ff`-`0x4108b4` | 635 | 4 | 0 | - | munga/boxsolid.cpp|munga/iterator.cpp | +| 30 | `0x487a27`-`0x487ca0` | 632 | 0 | 0 | - | munga_l4/l4splr.cpp|bt/btmssn.cpp | +| 31 | `0x4221b9`-`0x42249c` | 631 | 2 | 0 | - | munga/network.cpp|munga/watcher.cpp | +| 32 | `0x4c08fc`-`0x4c0bc8` | 613 | 1 | 0 | - | bt/btplayer.cpp|bt_l4/btl4rdr.cpp | +| 33 | `0x4bbcfd`-`0x4bbfcc` | 607 | 2 | 0 | 41: `4bbd04` `4bbd12` `4bbd1b` `4bbd28`... | bt/mechweap.hpp|bt/btplayer.cpp | +| 34 | `0x4c05be`-`0x4c083c` | 552 | 1 | 0 | 22: `4c05c0` `4c05c4` `4c05df` `4c0611`... | bt/btplayer.cpp|bt_l4/btl4rdr.cpp | +| 35 | `0x4bfca1`-`0x4bfee0` | 535 | 1 | 0 | 1: `4bfcac` | bt/mechweap.hpp|bt/btplayer.cpp | +| 36 | `0x483b9b`-`0x483df0` | 520 | 0 | 0 | - | munga_l4/l4splr.cpp|bt/btmssn.cpp | +| 37 | `0x4b8837`-`0x4b8a8c` | 509 | 3 | 0 | 6: `4b8837` `4b8a48` `4b8a50` `4b8a5b`... | bt/powersub.cpp|bt/mechweap.cpp | +| 38 | `0x4c11b3`-`0x4c1408` | 499 | 4 | 0 | 3: `4c11b3` `4c1230` `4c13d4` | bt/btplayer.cpp|bt_l4/btl4rdr.cpp | +| 39 | `0x47b8e2`-`0x47bb20` | 488 | 1 | 0 | - | munga_l4/l4app.cpp|munga_l4/l4splr.cpp | +| 40 | `0x4d95b6`-`0x4d9800` | 487 | 0 | 0 | - | bt_l4/btl4app.cpp|? | + +## Indexed-but-unexported functions (first 60 by address) + +These have index rows (address + size) but no pseudocode in `all/part_*.c` -- +decompile them individually (raw disasm or a targeted re-export) when a dig arrives. + +| Addr | Size | Index name | Cited in repo | +|---|---|---|---| diff --git a/reference/decomp/archive_2025export/all/part_000.c b/reference/decomp/archive_2025export/all/part_000.c new file mode 100644 index 0000000..ae31fec --- /dev/null +++ b/reference/decomp/archive_2025export/all/part_000.c @@ -0,0 +1,9982 @@ +/* @00401000 file=? name=entry */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void entry(void) + +{ + int *piVar1; + int iVar2; + undefined4 *puVar3; + undefined2 in_FS; + undefined **ppuVar4; + + _DAT_004e005d = DAT_004e0059 << 2; + puVar3 = &DAT_00521404; + for (iVar2 = 0x3f30; iVar2 != 0; iVar2 = iVar2 + -1) { + *(undefined1 *)puVar3 = 0; + puVar3 = (undefined4 *)((int)puVar3 + 1); + } + piVar1 = (int *)segment(in_FS,4); + iVar2 = *piVar1; + _DAT_004e0061 = *(undefined4 *)(iVar2 + -8); + _DAT_004e0065 = *(undefined4 *)(iVar2 + -4); + DAT_00524c68 = iVar2 + -4; + FUN_004d67cf(0); + ppuVar4 = &PTR_DAT_004e002c; + _DAT_004e006a = GetModuleHandleA((LPCSTR)0x0); + FUN_004df558((int)ppuVar4); + return; +} + + + +/* @0040106e file=? name=__GetExceptDLLinfo */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl __GetExceptDLLinfo(undefined4 *param_1) + +{ + int unaff_FS_OFFSET; + + /* 0x106e 1 __GetExceptDLLinfo */ + _DAT_0051f718 = *(int *)(*(int *)(unaff_FS_OFFSET + 4) + -8) + 0x24; + *param_1 = 0x82727349; + param_1[1] = &DAT_0051f6fc; + return; +} + + + +/* @0040109c file=? name=FUN_0040109c */ + +undefined4 __cdecl FUN_0040109c(int param_1,undefined4 param_2) + +{ + int iVar1; + char *pcVar2; + undefined4 *puVar3; + int *piVar4; + undefined4 *puVar5; + undefined4 extraout_ECX; + int extraout_EDX; + int iVar6; + int iVar7; + undefined8 uVar8; + undefined4 uVar9; + int local_8c [33]; + undefined4 *local_8; + + FUN_004dbb24(&DAT_00524e20,s_BattleTech_v4_10_004e037c,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + iVar1 = FUN_0047b2ec(param_1,param_2,&LAB_0047af8c); + if (iVar1 == 0) { + uVar9 = 1; + } + else { + FUN_00407218(local_8c,s_btl4_res_004e038d,&DAT_004e0070,3); + iVar1 = DAT_004fd550; + if (DAT_004fd550 < 1) { + puVar3 = (undefined4 *)FUN_00402298(0x28); + if (puVar3 == (undefined4 *)0x0) { + puVar3 = (undefined4 *)0x0; + } + else { + puVar3 = FUN_0044f29c(puVar3,DAT_0052140c); + } + puVar5 = (undefined4 *)FUN_00402298(0xd4); + if (puVar5 == (undefined4 *)0x0) { + piVar4 = (int *)0x0; + } + else { + piVar4 = FUN_004d34c4(puVar5,local_8c,0x3eb,&DAT_0051e8d8); + } + FUN_0044f318((int)puVar3,piVar4); + } + else { + iVar7 = 0x800000; + pcVar2 = (char *)FUN_004dee74(s_SPOOLSIZE_004e0396); + if (pcVar2 != (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_Spool_size___004e03a0,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,pcVar2,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + iVar7 = FUN_004dd1e0(pcVar2); + if (iVar7 == 0) { + iVar7 = 0x800000; + } + } + uVar9 = 0x38; + uVar8 = FUN_00402298(0x38); + iVar6 = (int)((ulonglong)uVar8 >> 0x20); + if ((undefined4 *)uVar8 == (undefined4 *)0x0) { + puVar3 = (undefined4 *)0x0; + } + else { + uVar9 = 1; + if (iVar1 != 2) { + uVar9 = 2; + } + puVar3 = FUN_0044f8b8((undefined4 *)uVar8,DAT_0052140c,uVar9,iVar7); + uVar9 = extraout_ECX; + iVar6 = extraout_EDX; + } + uVar8 = FUN_0044fa14(uVar9,iVar6,(int)puVar3); + if ((int)uVar8 != 0) { + local_8 = (undefined4 *)FUN_00402298(0xd8); + if (local_8 == (undefined4 *)0x0) { + piVar4 = (int *)0x0; + } + else { + piVar4 = FUN_004d3be4(local_8,local_8c,(int)uVar8); + } + FUN_0044f318((int)puVar3,piVar4); + } + if (iVar1 == 1) { + puVar5 = (undefined4 *)FUN_00402298(0xd8); + if (puVar5 == (undefined4 *)0x0) { + piVar4 = (int *)0x0; + } + else { + piVar4 = FUN_0047c3fc(puVar5,local_8c,1); + } + FUN_0044f318((int)puVar3,piVar4); + } + } + FUN_0044f344((int)puVar3); + if (puVar3 != (undefined4 *)0x0) { + (**(code **)*puVar3)(puVar3,3); + } + FUN_00407354(local_8c,2); + uVar9 = DAT_004efc98; + } + return uVar9; +} + + + +/* @004012a8 file=? name=FUN_004012a8 */ + +undefined4 * __cdecl FUN_004012a8(undefined4 *param_1,int param_2) + +{ + FUN_004194d8(param_1,param_2); + *param_1 = &PTR_FUN_004e0628; + return param_1; +} + + + +/* @004012c7 file=? name=FUN_004012c7 */ + +undefined4 * __cdecl FUN_004012c7(undefined4 *param_1,int param_2) + +{ + FUN_004194d8(param_1,param_2); + *param_1 = &PTR_FUN_004e0628; + return param_1; +} + + + +/* @004012e6 file=? name=FUN_004012e6 */ + +void __cdecl FUN_004012e6(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e0628; + FUN_0041951c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00401312 file=? name=FUN_00401312 */ + +undefined4 * __cdecl FUN_00401312(undefined4 *param_1,int param_2) + +{ + FUN_004194d8(param_1,param_2); + *param_1 = &PTR_FUN_004e05cc; + return param_1; +} + + + +/* @00401331 file=? name=FUN_00401331 */ + +undefined4 * __cdecl FUN_00401331(undefined4 *param_1,int param_2) + +{ + FUN_004194d8(param_1,param_2); + *param_1 = &PTR_FUN_004e05cc; + return param_1; +} + + + +/* @00401350 file=? name=FUN_00401350 */ + +void __cdecl FUN_00401350(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e05cc; + FUN_0041951c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0040137c file=? name=FUN_0040137c */ + +undefined4 * __cdecl FUN_0040137c(undefined4 *param_1,int param_2) + +{ + FUN_004194d8(param_1,param_2); + *param_1 = &PTR_FUN_004e0570; + return param_1; +} + + + +/* @0040139b file=? name=FUN_0040139b */ + +undefined4 * __cdecl FUN_0040139b(undefined4 *param_1,int param_2) + +{ + FUN_004194d8(param_1,param_2); + *param_1 = &PTR_FUN_004e0570; + return param_1; +} + + + +/* @004013ba file=? name=FUN_004013ba */ + +void __cdecl FUN_004013ba(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e0570; + FUN_0041951c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004013e6 file=? name=FUN_004013e6 */ + +undefined4 * __cdecl FUN_004013e6(undefined4 *param_1,int param_2) + +{ + FUN_004194d8(param_1,param_2); + *param_1 = &PTR_FUN_004e0514; + return param_1; +} + + + +/* @00401405 file=? name=FUN_00401405 */ + +undefined4 * __cdecl FUN_00401405(undefined4 *param_1,int param_2) + +{ + FUN_004194d8(param_1,param_2); + *param_1 = &PTR_FUN_004e0514; + return param_1; +} + + + +/* @00401424 file=? name=FUN_00401424 */ + +void __cdecl FUN_00401424(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e0514; + FUN_0041951c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00401450 file=? name=FUN_00401450 */ + +undefined4 * __cdecl FUN_00401450(undefined4 *param_1,int param_2) + +{ + FUN_004194d8(param_1,param_2); + *param_1 = &PTR_FUN_004e04b8; + return param_1; +} + + + +/* @0040146f file=? name=FUN_0040146f */ + +undefined4 * __cdecl FUN_0040146f(undefined4 *param_1,int param_2) + +{ + FUN_004194d8(param_1,param_2); + *param_1 = &PTR_FUN_004e04b8; + return param_1; +} + + + +/* @0040148e file=? name=FUN_0040148e */ + +void __cdecl FUN_0040148e(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e04b8; + FUN_0041951c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004014ba file=? name=FUN_004014ba */ + +undefined4 * __cdecl FUN_004014ba(undefined4 *param_1,int param_2) + +{ + FUN_00418398(param_1,param_2); + *param_1 = &PTR_FUN_004e0464; + return param_1; +} + + + +/* @004014d9 file=? name=FUN_004014d9 */ + +undefined4 * __cdecl FUN_004014d9(undefined4 *param_1,int param_2) + +{ + FUN_00418398(param_1,param_2); + *param_1 = &PTR_FUN_004e0464; + return param_1; +} + + + +/* @004014f8 file=? name=FUN_004014f8 */ + +undefined4 * __cdecl FUN_004014f8(undefined4 *param_1,int param_2) + +{ + FUN_004183c0(param_1,param_2); + *param_1 = &PTR_FUN_004e0464; + return param_1; +} + + + +/* @00401517 file=? name=FUN_00401517 */ + +void __cdecl FUN_00401517(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e0464; + FUN_004183ec(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00401543 file=? name=FUN_00401543 */ + +undefined4 * __cdecl FUN_00401543(undefined4 *param_1,undefined4 param_2) + +{ + FUN_004179d4(param_1,param_2); + *param_1 = &PTR_FUN_004e045c; + return param_1; +} + + + +/* @00401562 file=? name=FUN_00401562 */ + +void __cdecl FUN_00401562(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e045c; + FUN_004179f8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0040158e file=? name=FUN_0040158e */ + +undefined4 * __cdecl FUN_0040158e(undefined4 *param_1,undefined4 param_2) + +{ + FUN_00417be0(param_1,param_2); + *param_1 = &PTR_FUN_004e0454; + return param_1; +} + + + +/* @004015ad file=? name=FUN_004015ad */ + +void __cdecl FUN_004015ad(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e0454; + FUN_00417c0c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004015d9 file=? name=FUN_004015d9 */ + +undefined4 * __cdecl FUN_004015d9(undefined4 *param_1,int param_2) + +{ + FUN_00417d00(param_1,param_2); + *param_1 = &PTR_FUN_004e0404; + return param_1; +} + + + +/* @004015f8 file=? name=FUN_004015f8 */ + +undefined4 * __cdecl FUN_004015f8(undefined4 *param_1,int param_2) + +{ + FUN_00417d00(param_1,param_2); + *param_1 = &PTR_FUN_004e0404; + return param_1; +} + + + +/* @00401617 file=? name=FUN_00401617 */ + +undefined4 * __cdecl FUN_00401617(undefined4 *param_1,int param_2) + +{ + FUN_00417d28(param_1,param_2); + *param_1 = &PTR_FUN_004e0404; + return param_1; +} + + + +/* @00401636 file=? name=FUN_00401636 */ + +void __cdecl FUN_00401636(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e0404; + FUN_00417d54(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00401662 file=? name=FUN_00401662 */ + +undefined4 * __cdecl FUN_00401662(undefined4 *param_1,int param_2) + +{ + FUN_00418398(param_1,param_2); + *param_1 = &PTR_FUN_004e03b0; + return param_1; +} + + + +/* @00401681 file=? name=FUN_00401681 */ + +undefined4 * __cdecl FUN_00401681(undefined4 *param_1,int param_2) + +{ + FUN_00418398(param_1,param_2); + *param_1 = &PTR_FUN_004e03b0; + return param_1; +} + + + +/* @004016a0 file=? name=FUN_004016a0 */ + +undefined4 * __cdecl FUN_004016a0(undefined4 *param_1,int param_2) + +{ + FUN_004183c0(param_1,param_2); + *param_1 = &PTR_FUN_004e03b0; + return param_1; +} + + + +/* @004016bf file=? name=FUN_004016bf */ + +void __cdecl FUN_004016bf(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e03b0; + FUN_004183ec(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004016eb file=? name=FUN_004016eb */ + +void __cdecl FUN_004016eb(int *param_1) + +{ + (**(code **)(*param_1 + 0x38))(param_1); + return; +} + + + +/* @004016fa file=? name=FUN_004016fa */ + +void __cdecl FUN_004016fa(int *param_1) + +{ + (**(code **)(*param_1 + 0x3c))(param_1); + return; +} + + + +/* @00401709 file=? name=FUN_00401709 */ + +void __cdecl FUN_00401709(int *param_1) + +{ + (**(code **)(*param_1 + 0x40))(param_1); + return; +} + + + +/* @00401718 file=? name=FUN_00401718 */ + +void __cdecl FUN_00401718(int *param_1) + +{ + (**(code **)(*param_1 + 0x44))(param_1); + return; +} + + + +/* @00401727 file=? name=FUN_00401727 */ + +int * __cdecl FUN_00401727(int *param_1) + +{ + (**(code **)(*param_1 + 4))(param_1); + return param_1; +} + + + +/* @0040173a file=? name=FUN_0040173a */ + +int * __cdecl FUN_0040173a(int *param_1) + +{ + (**(code **)(*param_1 + 8))(param_1); + return param_1; +} + + + +/* @0040174d file=? name=FUN_0040174d */ + +int * __cdecl FUN_0040174d(int *param_1) + +{ + (**(code **)(*param_1 + 0xc))(param_1); + return param_1; +} + + + +/* @00401760 file=? name=FUN_00401760 */ + +int * __cdecl FUN_00401760(int *param_1) + +{ + (**(code **)(*param_1 + 0x10))(param_1); + return param_1; +} + + + +/* @00401774 file=? name=FUN_00401774 */ + +uint __cdecl FUN_00401774(LPCSTR param_1,int param_2) + +{ + char cVar1; + int iVar2; + uint uVar3; + uint uVar4; + char *pcVar5; + uint unaff_EDI; + short *psVar6; + + iVar2 = DAT_004f0760; + if ((DAT_004f0760 == 0) || (param_2 != 0)) { + if (param_2 == 0) { + uVar3 = thunk_FUN_004d93ac(param_1,0x8301,0x80); + } + else { + uVar3 = thunk_FUN_004d93ac(param_1,0x8000,unaff_EDI); + } + } + else { + *(undefined2 *)(DAT_004f0760 + 6) = 0xc; + *(undefined2 *)(iVar2 + 10) = 0x54; + uVar3 = 0xffffffff; + do { + pcVar5 = param_1; + if (uVar3 == 0) break; + uVar3 = uVar3 - 1; + pcVar5 = param_1 + 1; + cVar1 = *param_1; + param_1 = pcVar5; + } while (cVar1 != '\0'); + uVar3 = ~uVar3; + pcVar5 = pcVar5 + -uVar3; + psVar6 = (short *)(iVar2 + 0xc); + for (uVar4 = uVar3 >> 2; uVar4 != 0; uVar4 = uVar4 - 1) { + *(undefined4 *)psVar6 = *(undefined4 *)pcVar5; + pcVar5 = pcVar5 + 4; + psVar6 = psVar6 + 2; + } + for (uVar4 = uVar3 & 3; uVar4 != 0; uVar4 = uVar4 - 1) { + *(char *)psVar6 = *pcVar5; + pcVar5 = pcVar5 + 1; + psVar6 = (short *)((int)psVar6 + 1); + } + *(undefined2 *)(iVar2 + 0x5c) = 0x8302; + *(undefined2 *)(iVar2 + 0x5e) = 0x80; + FUN_00452100(0,uVar3); + uVar3 = (int)*(short *)(iVar2 + 0xc) | 0x10000; + } + return uVar3; +} + + + +/* @00401810 file=? name=FUN_00401810 */ + +undefined8 __cdecl FUN_00401810(uint param_1) + +{ + int iVar1; + undefined4 uVar2; + undefined2 *puVar3; + undefined4 extraout_EDX; + undefined8 uVar4; + + iVar1 = DAT_004f0760; + if ((param_1 & 0x10000) != 0) { + puVar3 = (undefined2 *)(DAT_004f0760 + 0xc); + *(undefined2 *)(DAT_004f0760 + 6) = 0xe; + *(undefined2 *)(iVar1 + 10) = 2; + *puVar3 = (short)param_1; + uVar4 = FUN_00452100(puVar3,iVar1); + return uVar4; + } + uVar2 = thunk_FUN_004d92c4(param_1); + return CONCAT44(extraout_EDX,uVar2); +} + + + +/* @0040184c file=? name=FUN_0040184c */ + +DWORD __cdecl FUN_0040184c(uint param_1,LONG param_2,int param_3) + +{ + undefined2 *puVar1; + DWORD DVar2; + DWORD *pDVar3; + int iVar4; + int iVar5; + + iVar5 = DAT_004f0760; + if ((param_1 & 0x10000) == 0) { + iVar5 = 2; + if (param_3 == 0) { + iVar5 = 0; + } + DVar2 = thunk_FUN_004d9334(param_1,param_2,iVar5); + } + else { + pDVar3 = (DWORD *)(DAT_004f0760 + 0xc); + puVar1 = (undefined2 *)(DAT_004f0760 + 0xc); + *(undefined2 *)(DAT_004f0760 + 6) = 0x13; + *(undefined2 *)(iVar5 + 10) = 8; + iVar4 = CONCAT22((short)((uint)iVar5 >> 0x10),2); + *puVar1 = (short)param_1; + if (param_3 == 0) { + iVar4 = iVar4 + -2; + } + *(short *)(iVar5 + 0xe) = (short)iVar4; + *(LONG *)(iVar5 + 0x10) = param_2; + FUN_00452100(pDVar3,iVar4); + DVar2 = *pDVar3; + } + return DVar2; +} + + + +/* @004018cc file=? name=FUN_004018cc */ + +char * __cdecl FUN_004018cc(uint param_1,char *param_2,char *param_3) + +{ + int iVar1; + int iVar2; + char *pcVar3; + undefined4 extraout_ECX; + undefined4 extraout_EDX; + char *pcVar4; + undefined2 *puVar5; + undefined2 local_8; + + iVar2 = DAT_004f0760; + if ((param_1 & 0x10000) == 0) { + param_3 = thunk_FUN_004d8b14(param_1,param_2,param_3); + } + else { + puVar5 = (undefined2 *)(DAT_004f0760 + 0xc); + iVar1 = DAT_004f0760; + for (pcVar4 = param_3; DAT_004f0760 = iVar1, pcVar4 != (char *)0x0; + pcVar4 = pcVar4 + -(int)pcVar3) { + pcVar3 = pcVar4; + if ((char *)0xff00 < pcVar4) { + pcVar3 = (char *)0xff00; + } + *(undefined2 *)(iVar1 + 6) = 0xd; + *(short *)(iVar1 + 10) = (short)pcVar3 + 4; + local_8 = (undefined2)param_1; + *puVar5 = local_8; + *(short *)(iVar2 + 0xe) = (short)pcVar3; + FUN_004d4918((undefined4 *)(iVar2 + 0x10),(undefined4 *)param_2,(uint)pcVar3); + FUN_00452100(extraout_ECX,extraout_EDX); + param_2 = param_2 + (int)pcVar3; + iVar1 = DAT_004f0760; + } + } + return param_3; +} + + + +/* @00401970 file=? name=FUN_00401970 */ + +char * __cdecl FUN_00401970(uint param_1,char *param_2,char *param_3) + +{ + int iVar1; + int iVar2; + undefined4 *puVar3; + char *pcVar4; + char *pcVar5; + + iVar2 = DAT_004f0760; + if ((param_1 & 0x10000) == 0) { + param_3 = thunk_FUN_004d892c(param_1,param_2,param_3); + } + else { + puVar3 = (undefined4 *)(DAT_004f0760 + 0xc); + iVar1 = DAT_004f0760; + for (pcVar5 = param_3; DAT_004f0760 = iVar1, pcVar5 != (char *)0x0; + pcVar5 = pcVar5 + -(int)pcVar4) { + pcVar4 = pcVar5; + if ((char *)0xff00 < pcVar5) { + pcVar4 = (char *)0xff00; + } + *(undefined2 *)(iVar1 + 6) = 0x12; + *(undefined2 *)(iVar1 + 10) = 4; + *(short *)puVar3 = (short)param_1; + *(short *)(iVar2 + 0xe) = (short)pcVar4; + FUN_00452100(puVar3,param_1); + FUN_004d4918((undefined4 *)param_2,puVar3,(uint)pcVar4); + param_2 = param_2 + (int)pcVar4; + iVar1 = DAT_004f0760; + } + } + return param_3; +} + + + +/* @00401a1c file=? name=FUN_00401a1c */ + +int FUN_00401a1c(void) + +{ + int iVar1; + + if (DAT_004e0688 == 0xffff) { + iVar1 = FUN_004d418d(); + if (iVar1 < DAT_004e068c) { + DAT_004e0684 = DAT_004e0684 + -0x1800b0; + } + DAT_004e068c = iVar1; + return iVar1 - DAT_004e0684; + } + return DAT_004e0684; +} + + + +/* @00401a5c file=? name=FUN_00401a5c */ + +undefined4 * __cdecl FUN_00401a5c(undefined4 *param_1) + +{ + char *pcVar1; + char *pcVar2; + char *pcVar3; + bool bVar4; + + *param_1 = 0; + param_1[1] = 0; + DAT_004e0684 = 0; + pcVar2 = (char *)FUN_004dee74(s_L4TIMER_004e0690); + if (pcVar2 != (char *)0x0) { + pcVar3 = &DAT_004e0698; + do { + if (*pcVar2 != *pcVar3) goto LAB_00401ada; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_00401ada; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + FUN_00481872(0xff00,0); + FUN_00481953(0x1c,&LAB_00401a14,&DAT_004e0688); + DAT_0052140c = 0x41e00000; + return param_1; + } + } +LAB_00401ada: + DAT_0052140c = 0x4191a6e0; + DAT_004e0684 = FUN_004d418d(); + return param_1; +} + + + +/* @00401afc file=? name=FUN_00401afc */ + +void FUN_00401afc(void) + +{ + if (DAT_004e0688 != 0xffff) { + FUN_00481c82(DAT_004e0688); + FUN_00481934(); + } + return; +} + + + +/* @00401b1c file=? name=FUN_00401b1c */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 FUN_00401b1c(void) + +{ + byte bVar1; + byte bVar2; + byte bVar3; + int iVar4; + float10 fVar5; + + FUN_004d46cf(0x43,0xc2); + bVar1 = FUN_004d45d3(0x40); + bVar2 = FUN_004d45d3(0x40); + bVar3 = FUN_004d45d3(0x40); + iVar4 = ((int)(uint)bVar2 >> 1) + (uint)bVar3 * 0x80; + if (DAT_004e0688 == 0xffff) { + fVar5 = (float10)(int)(0xffff - (iVar4 + (bVar1 & 0x80) * 0x100)) * (float10)_DAT_00401bcc; + } + else { + if ((bVar1 & 0x80) != 0) { + iVar4 = (DAT_004fee74 >> 1) + iVar4; + } + fVar5 = (float10)((DAT_004fee74 - 1) - iVar4) / (float10)DAT_004fee74; + } + return fVar5; +} + + + +/* @00401be8 file=? name=FUN_00401be8 */ + +bool __cdecl FUN_00401be8(uint *param_1) + +{ + uint *puVar1; + + puVar1 = (uint *)param_1[1]; + if ((puVar1 != (uint *)0x0) && (param_1 != (uint *)((int)puVar1 + (*puVar1 & 0xfffffffe)))) { + return false; + } + return param_1 == *(uint **)((int)param_1 + (*param_1 & 0xfffffffe) + 4); +} + + + +/* @00401c18 file=? name=FUN_00401c18 */ + +int * __cdecl FUN_00401c18(int *param_1,int param_2,uint param_3) + +{ + int iVar1; + + param_1[1] = param_2; + param_1[4] = param_3 + 3 & 0xfffffffc; + iVar1 = FUN_004022b0(param_3); + *param_1 = iVar1; + if (DAT_004e06c4 == -0x54eca86b) { + DAT_004e06c4 = -0x12edcf; + param_1[8] = 1; + } + else { + param_1[8] = 0; + } + FUN_00401f30(param_1); + return param_1; +} + + + +/* @00401c70 file=? name=FUN_00401c70 */ + +void __cdecl FUN_00401c70(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + param_1[2] = 0; + param_1[3] = 0; + param_1[4] = 0; + if (param_1[8] != 0) { + DAT_004e06c4 = 0xab135795; + } + FUN_004022d0((int *)*param_1); + *param_1 = 0; + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00401cb8 file=? name=FUN_00401cb8 */ + +int __cdecl FUN_00401cb8(int param_1) + +{ + int *piVar1; + int iVar2; + + iVar2 = 0; + piVar1 = *(int **)(param_1 + 0xc); + do { + piVar1 = (int *)piVar1[3]; + iVar2 = iVar2 + *piVar1 + -8; + } while (piVar1 != *(int **)(param_1 + 0xc)); + return iVar2; +} + + + +/* @00401cdc file=? name=FUN_00401cdc */ + +int __cdecl FUN_00401cdc(int param_1) + +{ + return **(int **)(*(int *)(param_1 + 0xc) + 8) + -8; +} + + + +/* @00401cf0 file=munga/heap.cpp name=FUN_00401cf0 */ + +uint * __cdecl FUN_00401cf0(int param_1,uint param_2) + +{ + char *pcVar1; + uint uVar2; + uint uVar3; + uint uVar4; + int *piVar5; + uint *puVar6; + uint uVar7; + uint *local_8; + + if (DAT_004e06c4 == -0x12edcf) { + uVar7 = param_2 + 0xb & 0xfffffffc; + if (uVar7 < 0x10) { + uVar7 = 0x10; + } + local_8 = *(uint **)(param_1 + 0xc); + while (uVar2 = *local_8 - uVar7, (int)uVar2 < 0) { + local_8 = (uint *)local_8[3]; + if (local_8 == *(uint **)(param_1 + 0xc)) { + uVar2 = *(uint *)(param_1 + 0x10); + uVar3 = FUN_00401cb8(param_1); + uVar4 = FUN_00401cdc(param_1); + pcVar1 = *(char **)(param_1 + 4); + FUN_004dbb24(&DAT_00524e20,s_Requested_004e06d3,(char *)0x0); + piVar5 = FUN_004db880(&DAT_00524e20,param_2); + FUN_004dbb24(piVar5,s_bytes_from_004e06de,(char *)0x0); + FUN_004dbb24(piVar5,pcVar1,(char *)0x0); + FUN_004dbb24(piVar5,s_Largest_block_remaining_is_004e06eb,(char *)0x0); + piVar5 = FUN_004db880(piVar5,uVar4); + FUN_004dbb24(piVar5,s_bytes_Total_remaining_memory_is_004e0708,(char *)0x0); + piVar5 = FUN_004db880(piVar5,uVar3); + FUN_004dbb24(piVar5,s_bytes_Heap_size_was_set_to_004e072a,(char *)0x0); + piVar5 = FUN_004db880(piVar5,uVar2); + FUN_004dbb24(piVar5,s_bytes_004e0747,(char *)0x0); + FUN_0040385c(s_No_remaining_block_large_enough__004e074f, + s_d__tesla_bt_munga_HEAP_CPP_004e0771,0x156); + } + } + if (uVar2 < 0x11) { + *local_8 = *local_8 | 1; + if (local_8 == (uint *)local_8[3]) { + *(undefined4 *)(param_1 + 0xc) = 0; + } + else { + if (local_8 == *(uint **)(param_1 + 0xc)) { + *(uint **)(param_1 + 0xc) = (uint *)local_8[3]; + } + uVar7 = local_8[3]; + uVar2 = local_8[2]; + *(uint *)(uVar7 + 8) = uVar2; + *(uint *)(uVar2 + 0xc) = uVar7; + } + } + else { + piVar5 = (int *)((int)local_8 + *local_8 + 4); + *piVar5 = *piVar5 + uVar2; + *local_8 = uVar2; + puVar6 = (uint *)(uVar2 + (int)local_8); + *puVar6 = uVar7 | 1; + puVar6[1] = (uint)local_8; + FUN_00402164(param_1,local_8); + local_8 = puVar6; + } + local_8 = local_8 + 2; + } + else { + local_8 = (uint *)FUN_004de55c(param_2); + } + return local_8; +} + + + +/* @00401ec8 file=? name=FUN_00401ec8 */ + +void __cdecl FUN_00401ec8(int param_1,int *param_2) + +{ + uint *puVar1; + uint *puVar2; + + if (DAT_004e06c4 == -0x12edcf) { + puVar1 = (uint *)(param_2 + -2); + FUN_00402230(param_1,puVar1); + puVar2 = (uint *)param_2[-1]; + if ((puVar2 == (uint *)0x0) || ((*puVar2 & 1) != 0)) { + *puVar1 = *puVar1 & 0xfffffffe; + FUN_004020e8(param_1,puVar1); + } + else { + *puVar2 = *puVar2 + (*puVar1 & 0xfffffffe); + *(uint **)((int)puVar2 + *puVar2 + 4) = puVar2; + FUN_00402164(param_1,puVar2); + } + } + else { + FUN_004de420(param_2); + } + return; +} + + + +/* @00401f30 file=? name=FUN_00401f30 */ + +void __cdecl FUN_00401f30(int *param_1) + +{ + int *piVar1; + undefined4 *puVar2; + int iVar3; + + piVar1 = (int *)*param_1; + puVar2 = (undefined4 *)((int)piVar1 + param_1[4] + -0x10 & 0xfffffffc); + param_1[2] = (int)puVar2; + *puVar2 = 1; + puVar2[3] = 0; + puVar2[2] = 0; + puVar2[1] = piVar1; + param_1[2] = (int)piVar1; + *piVar1 = (int)puVar2 - (int)piVar1; + piVar1[1] = 0; + param_1[3] = 0; + FUN_004020e8((int)param_1,(uint *)param_1[2]); + iVar3 = FUN_00401cb8((int)param_1); + param_1[5] = iVar3; + param_1[4] = iVar3; + return; +} + + + +/* @00401f90 file=? name=FUN_00401f90 */ + +undefined4 __cdecl FUN_00401f90(int param_1,int param_2,int param_3,int param_4) + +{ + bool bVar1; + undefined4 uVar2; + undefined3 extraout_var; + uint uVar3; + char *pcVar4; + uint *puVar5; + undefined8 uVar6; + uint *puVar7; + + puVar5 = *(uint **)(param_1 + 8); + if ((puVar5 == (uint *)0x0) || (DAT_004e06c4 != -0x12edcf)) { + uVar2 = 0; + } + else { + for (; *puVar5 != 1; puVar5 = (uint *)((*puVar5 & 0xfffffffe) + (int)puVar5)) { + bVar1 = FUN_00401be8(puVar5); + if (CONCAT31(extraout_var,bVar1) == 0) { + return 0; + } + if ((*puVar5 & 1) == 0) { + if ((puVar5 != *(uint **)(puVar5[2] + 0xc)) || (puVar5 != *(uint **)(puVar5[3] + 8))) { + return 0; + } + if (((puVar5 != *(uint **)(param_1 + 0xc)) && (*puVar5 < *(uint *)puVar5[2])) || + ((*(uint **)(param_1 + 0xc) != (uint *)puVar5[3] && (*(uint *)puVar5[3] < *puVar5)))) { + return 0; + } + } + uVar3 = *puVar5 & 1; + if (((param_2 != 0) && ((uVar3 == 0 || (param_3 == 0)))) && ((uVar3 != 0 || (param_4 == 0)))) + { + if (uVar3 == 0) { + pcVar4 = &DAT_004e0796; + } + else { + pcVar4 = s_Allocated_004e078c; + } + FUN_004dbb24(&DAT_00524e20,pcVar4,(char *)0x0); + uVar3 = *puVar5; + puVar7 = puVar5; + FUN_004dbb24(&DAT_00524e20,s_block_at_004e079b,(char *)0x0); + uVar6 = FUN_004dbd4c(&DAT_00524e20,(uint)puVar7); + FUN_004dbb24((int *)uVar6,s___size___004e07a6,(char *)0x0); + FUN_004db880((int *)uVar6,uVar3 & 0xfffffffe); + FUN_004d9c38(&DAT_00524e20); + } + } + if (param_2 != 0) { + FUN_004d9c38(&DAT_00524e20); + } + uVar2 = 1; + } + return uVar2; +} + + + +/* @004020e8 file=? name=FUN_004020e8 */ + +void __cdecl FUN_004020e8(int param_1,uint *param_2) + +{ + uint uVar1; + uint uVar2; + uint *puVar3; + + if (*(int *)(param_1 + 0xc) == 0) { + *(uint **)(param_1 + 0xc) = param_2; + param_2[3] = (uint)param_2; + param_2[2] = (uint)param_2; + return; + } + puVar3 = *(uint **)(param_1 + 0xc); + if (*param_2 < *puVar3) { + *(uint **)(param_1 + 0xc) = param_2; + } + else { + do { + puVar3 = (uint *)puVar3[3]; + if (puVar3 == *(uint **)(param_1 + 0xc)) break; + } while (*puVar3 < *param_2); + } + uVar1 = puVar3[2]; + uVar2 = *(uint *)(uVar1 + 0xc); + param_2[3] = uVar2; + param_2[2] = uVar1; + *(uint **)(uVar1 + 0xc) = param_2; + *(uint **)(uVar2 + 8) = param_2; + return; +} + + + +/* @00402134 file=? name=FUN_00402134 */ + +void __cdecl FUN_00402134(int param_1,int param_2) + +{ + int iVar1; + int iVar2; + + if (param_2 == *(int *)(param_2 + 0xc)) { + *(undefined4 *)(param_1 + 0xc) = 0; + return; + } + if (param_2 == *(int *)(param_1 + 0xc)) { + *(int *)(param_2 + 0xc) = *(int *)(param_1 + 0xc); + } + iVar1 = *(int *)(param_2 + 0xc); + iVar2 = *(int *)(param_2 + 8); + *(int *)(iVar1 + 8) = iVar2; + *(int *)(iVar2 + 0xc) = iVar1; + return; +} + + + +/* @00402164 file=? name=FUN_00402164 */ + +void __cdecl FUN_00402164(int param_1,uint *param_2) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + uint *puVar4; + uint *puVar5; + uint *puVar6; + + uVar1 = *param_2; + puVar4 = (uint *)param_2[3]; + if (puVar4 == (uint *)param_2[2]) { + if (param_2 != puVar4) { + if (uVar1 <= *puVar4) { + puVar4 = param_2; + } + *(uint **)(param_1 + 0xc) = puVar4; + } + } + else if (((*puVar4 < uVar1) && (puVar4 != *(uint **)(param_1 + 0xc))) || + ((puVar4 = (uint *)param_2[2], uVar1 < *puVar4 && (param_2 != *(uint **)(param_1 + 0xc)))) + ) { + if (param_2 == *(uint **)(param_1 + 0xc)) { + *(uint *)(param_1 + 0xc) = param_2[3]; + } + uVar2 = param_2[3]; + uVar3 = param_2[2]; + *(uint *)(uVar2 + 8) = uVar3; + *(uint *)(uVar3 + 0xc) = uVar2; + if (puVar4 == (uint *)param_2[2]) { + do { + puVar5 = puVar4; + puVar6 = (uint *)puVar5[2]; + if (puVar5 == *(uint **)(param_1 + 0xc)) break; + puVar4 = puVar6; + } while (uVar1 < *puVar6); + } + else { + do { + puVar6 = puVar4; + puVar5 = (uint *)puVar6[3]; + if (puVar5 == *(uint **)(param_1 + 0xc)) break; + puVar4 = puVar5; + } while (*puVar5 < uVar1); + } + param_2[2] = (uint)puVar6; + param_2[3] = (uint)puVar5; + puVar6[3] = (uint)param_2; + puVar5[2] = (uint)param_2; + if (uVar1 < **(uint **)(param_1 + 0xc)) { + *(uint **)(param_1 + 0xc) = param_2; + } + } + return; +} + + + +/* @00402230 file=? name=FUN_00402230 */ + +void __cdecl FUN_00402230(int param_1,uint *param_2) + +{ + uint *puVar1; + uint uVar2; + + puVar1 = (uint *)((*param_2 & 0xfffffffe) + (int)param_2); + if ((*puVar1 & 1) == 0) { + uVar2 = (*param_2 & 0xfffffffe) + *puVar1; + *param_2 = uVar2 | 1; + *(uint **)((int)param_2 + uVar2 + 4) = param_2; + if (puVar1 == (uint *)puVar1[3]) { + *(undefined4 *)(param_1 + 0xc) = 0; + } + else { + if (puVar1 == *(uint **)(param_1 + 0xc)) { + *(uint *)(param_1 + 0xc) = puVar1[3]; + } + uVar2 = puVar1[3]; + *(uint *)(uVar2 + 8) = puVar1[2]; + *(uint *)(puVar1[2] + 0xc) = uVar2; + } + } + return; +} + + + +/* @0040228c file=? name=FUN_0040228c */ + +undefined4 FUN_0040228c(void) + +{ + return 1; +} + + + +/* @00402298 file=? name=FUN_00402298 */ + +void __cdecl FUN_00402298(uint param_1) + +{ + FUN_00401cf0(0x4e06a0,param_1); + return; +} + + + +/* @004022b0 file=? name=FUN_004022b0 */ + +void __cdecl FUN_004022b0(uint param_1) + +{ + FUN_00401cf0(0x4e06a0,param_1); + return; +} + + + +/* @004022c8 file=? name=FUN_004022c8 */ + +undefined4 __cdecl FUN_004022c8(undefined4 param_1,undefined4 param_2) + +{ + return param_2; +} + + + +/* @004022d0 file=? name=FUN_004022d0 */ + +void __cdecl FUN_004022d0(int *param_1) + +{ + FUN_00401ec8(0x4e06a0,param_1); + return; +} + + + +/* @004022e8 file=? name=FUN_004022e8 */ + +void __cdecl FUN_004022e8(int *param_1) + +{ + FUN_00401ec8(0x4e06a0,param_1); + return; +} + + + +/* @00402300 file=? name=FUN_00402300 */ + +char * __cdecl FUN_00402300(char *param_1) + +{ + char cVar1; + int iVar2; + char *pcVar3; + uint uVar4; + uint uVar5; + char *pcVar6; + char *pcVar7; + + iVar2 = FUN_004d4a78(param_1); + pcVar3 = (char *)FUN_004022b0(iVar2 + 1); + uVar4 = 0xffffffff; + do { + pcVar6 = param_1; + if (uVar4 == 0) break; + uVar4 = uVar4 - 1; + pcVar6 = param_1 + 1; + cVar1 = *param_1; + param_1 = pcVar6; + } while (cVar1 != '\0'); + uVar4 = ~uVar4; + pcVar6 = pcVar6 + -uVar4; + pcVar7 = pcVar3; + for (uVar5 = uVar4 >> 2; uVar5 != 0; uVar5 = uVar5 - 1) { + *(undefined4 *)pcVar7 = *(undefined4 *)pcVar6; + pcVar6 = pcVar6 + 4; + pcVar7 = pcVar7 + 4; + } + for (uVar4 = uVar4 & 3; uVar4 != 0; uVar4 = uVar4 - 1) { + *pcVar7 = *pcVar6; + pcVar6 = pcVar6 + 1; + pcVar7 = pcVar7 + 1; + } + return pcVar3; +} + + + +/* @00402370 file=? name=FUN_00402370 */ + +char * __cdecl FUN_00402370(char *param_1,char param_2) + +{ + int iVar1; + + iVar1 = FUN_004d4a78(param_1); + param_1[iVar1] = param_2; + param_1[iVar1 + 1] = '\0'; + return param_1; +} + + + +/* @00402390 file=? name=FUN_00402390 */ + +int * __cdecl FUN_00402390(int *param_1,char *param_2) + +{ + char *local_8; + + local_8 = param_2; + (**(code **)(*param_1 + 0x1c))(param_1,param_2,1); + for (; *local_8 != '\0'; local_8 = local_8 + 1) { + (**(code **)(*param_1 + 0x1c))(param_1,local_8,1); + } + return param_1; +} + + + +/* @004023d4 file=? name=FUN_004023d4 */ + +void __cdecl FUN_004023d4(int *param_1,char *param_2) + +{ + int iVar1; + + iVar1 = FUN_004d4a78(param_2); + (**(code **)(*param_1 + 0x20))(param_1,param_2,iVar1 + 1); + return; +} + + + +/* @004023f4 file=? name=FUN_004023f4 */ + +void __cdecl FUN_004023f4(undefined4 *param_1) + +{ + param_1[1] = 0; + *param_1 = 0; + param_1[2] = 0; + param_1[3] = 0; + return; +} + + + +/* @00402410 file=? name=FUN_00402410 */ + +uint * __cdecl FUN_00402410(uint *param_1,uint *param_2) + +{ + undefined4 *puVar1; + + param_1[1] = param_2[1]; + *param_1 = *param_2; + if (param_2[2] == 0) { + param_1[2] = 0; + } + else { + puVar1 = (undefined4 *)FUN_004022b0(*param_1); + param_1[2] = (uint)puVar1; + FUN_004d4918(puVar1,(undefined4 *)param_2[2],param_1[1] + 1); + } + param_1[3] = 0; + return param_1; +} + + + +/* @00402460 file=? name=FUN_00402460 */ + +uint * __cdecl FUN_00402460(uint *param_1,char *param_2) + +{ + uint uVar1; + undefined4 *puVar2; + + if ((param_2 == (char *)0x0) || (*param_2 == '\0')) { + param_1[1] = 0; + *param_1 = 0; + param_1[2] = 0; + } + else { + uVar1 = FUN_004d4a78(param_2); + param_1[1] = uVar1; + *param_1 = ((DAT_004e07b0 + param_1[1]) / DAT_004e07b0) * DAT_004e07b0; + puVar2 = (undefined4 *)FUN_004022b0(*param_1); + param_1[2] = (uint)puVar2; + FUN_004d4918(puVar2,(undefined4 *)param_2,param_1[1] + 1); + } + param_1[3] = 0; + return param_1; +} + + + +/* @004024d8 file=? name=FUN_004024d8 */ + +void __cdecl FUN_004024d8(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + if ((int *)param_1[2] != (int *)0x0) { + FUN_004022e8((int *)param_1[2]); + } + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00402504 file=? name=FUN_00402504 */ + +undefined4 FUN_00402504(void) + +{ + return 1; +} + + + +/* @00402518 file=? name=FUN_00402518 */ + +uint * __cdecl FUN_00402518(uint *param_1,uint *param_2,uint *param_3) + +{ + uint uVar1; + + if (param_3 == param_2) { + FUN_00402410(param_1,param_2); + } + else { + if ((int *)param_2[2] != (int *)0x0) { + FUN_004022e8((int *)param_2[2]); + } + param_2[1] = param_3[1]; + uVar1 = *param_3; + *param_2 = uVar1; + if (uVar1 == 0) { + param_2[2] = 0; + } + else { + uVar1 = FUN_004022b0(*param_2); + param_2[2] = uVar1; + FUN_004d4918((undefined4 *)param_2[2],(undefined4 *)param_3[2],param_2[1] + 1); + } + FUN_00402410(param_1,param_2); + } + return param_1; +} + + + +/* @00402590 file=? name=FUN_00402590 */ + +uint * __cdecl FUN_00402590(uint *param_1,uint *param_2,char *param_3) + +{ + uint uVar1; + + if ((int *)param_2[2] != (int *)0x0) { + FUN_004022e8((int *)param_2[2]); + } + if ((param_3 == (char *)0x0) || (*param_3 == '\0')) { + param_2[1] = 0; + *param_2 = 0; + param_2[2] = 0; + } + else { + uVar1 = FUN_004d4a78(param_3); + param_2[1] = uVar1; + *param_2 = ((param_2[1] + DAT_004e07b0) / DAT_004e07b0) * DAT_004e07b0; + uVar1 = FUN_004022b0(*param_2); + param_2[2] = uVar1; + FUN_004d4918((undefined4 *)param_2[2],(undefined4 *)param_3,param_2[1] + 1); + } + FUN_00402410(param_1,param_2); + return param_1; +} + + + +/* @00402624 file=? name=FUN_00402624 */ + +uint * __cdecl FUN_00402624(uint *param_1,int param_2,int param_3) + +{ + uint local_1c; + int local_18; + undefined4 *local_14; + uint local_c; + int local_8; + + FUN_004023f4(&local_1c); + local_8 = *(int *)(param_2 + 4) + *(int *)(param_3 + 4); + if (local_8 == 0) { + FUN_00402410(param_1,&local_1c); + FUN_004024d8((int *)&local_1c,2); + } + else { + local_18 = 0; + local_1c = ((local_8 + DAT_004e07b0) / DAT_004e07b0) * DAT_004e07b0; + local_c = local_1c; + local_14 = (undefined4 *)FUN_004022b0(local_1c); + *(undefined1 *)local_14 = 0; + if (*(undefined4 **)(param_2 + 8) != (undefined4 *)0x0) { + FUN_004d4918(local_14,*(undefined4 **)(param_2 + 8),*(uint *)(param_2 + 4)); + local_18 = *(int *)(param_2 + 4); + } + if (*(undefined4 **)(param_3 + 8) != (undefined4 *)0x0) { + FUN_004d4918((undefined4 *)((int)local_14 + local_18),*(undefined4 **)(param_3 + 8), + *(int *)(param_3 + 4) + 1); + local_18 = local_18 + *(int *)(param_3 + 4); + } + FUN_00402410(param_1,&local_1c); + FUN_004024d8((int *)&local_1c,2); + } + return param_1; +} + + + +/* @00402718 file=? name=FUN_00402718 */ + +uint * __cdecl FUN_00402718(uint *param_1,uint *param_2,undefined1 param_3) + +{ + uint local_14; + uint local_10; + undefined4 *local_c; + + FUN_004023f4(&local_14); + if (param_2[2] == 0) { + local_10 = 1; + local_14 = DAT_004e07b0; + local_c = (undefined4 *)FUN_004022b0(DAT_004e07b0); + *(undefined1 *)local_c = param_3; + *(undefined1 *)((int)local_c + 1) = 0; + } + else { + local_10 = param_2[1] + 1; + local_14 = *param_2; + if (local_10 == local_14) { + local_14 = local_14 + DAT_004e07b0; + } + local_c = (undefined4 *)FUN_004022b0(local_14); + FUN_004d4918(local_c,(undefined4 *)param_2[2],param_2[1]); + *(undefined1 *)((int)local_c + param_2[1]) = param_3; + *(undefined1 *)((int)local_c + local_10) = 0; + } + FUN_00402410(param_1,&local_14); + FUN_004024d8((int *)&local_14,2); + return param_1; +} + + + +/* @004027d8 file=? name=FUN_004027d8 */ + +undefined4 __cdecl FUN_004027d8(int param_1,int param_2) + +{ + byte bVar1; + undefined4 uVar2; + byte *pbVar3; + byte *pbVar4; + bool bVar5; + bool bVar6; + + if (*(int *)(param_1 + 8) == 0) { + if (*(int *)(param_2 + 8) == 0) { + uVar2 = 0; + } + else { + uVar2 = 0xffffffff; + } + } + else { + pbVar4 = *(byte **)(param_2 + 8); + if (pbVar4 == (byte *)0x0) { + uVar2 = 1; + } + else { + pbVar3 = *(byte **)(param_1 + 8); + do { + bVar1 = *pbVar3; + bVar5 = bVar1 < *pbVar4; + bVar6 = bVar1 == *pbVar4; + if (!bVar6) break; + bVar5 = false; + bVar6 = true; + if (bVar1 == 0) break; + bVar1 = pbVar3[1]; + bVar5 = bVar1 < pbVar4[1]; + bVar6 = bVar1 == pbVar4[1]; + if (!bVar6) break; + pbVar3 = pbVar3 + 2; + pbVar4 = pbVar4 + 2; + bVar5 = false; + bVar6 = bVar1 == 0; + } while (!bVar6); + uVar2 = CONCAT31((int3)(-(uint)bVar5 >> 8),(byte)-(uint)bVar5 | !bVar6); + } + } + return uVar2; +} + + + +/* @00402838 file=? name=FUN_00402838 */ + +uint * __cdecl FUN_00402838(uint *param_1,uint *param_2,uint param_3,char *param_4) + +{ + char *pcVar1; + uint uVar2; + char *pcVar3; + uint local_34 [4]; + uint local_24 [4]; + uint local_14 [2]; + char *local_c; + + pcVar3 = &DAT_004e07b4; + if (param_4 != (char *)0x0) { + pcVar3 = param_4; + } + FUN_00402410(local_14,param_2); + if (local_c == (char *)0x0) { + FUN_00402410(param_1,local_14); + FUN_004024d8((int *)local_14,2); + } + else { + pcVar1 = FUN_004d4d1c(local_c,pcVar3); + uVar2 = 0; + if (param_3 != 0) { + do { + pcVar1 = FUN_004d4d1c((char *)0x0,pcVar3); + if (pcVar1 == (char *)0x0) break; + uVar2 = uVar2 + 1; + } while (uVar2 < param_3); + } + if (pcVar1 == (char *)0x0) { + FUN_004023f4(local_24); + FUN_00402410(param_1,local_24); + FUN_004024d8((int *)local_24,2); + FUN_004024d8((int *)local_14,2); + } + else { + FUN_00402460(local_34,pcVar1); + FUN_00402410(param_1,local_34); + FUN_004024d8((int *)local_34,2); + FUN_004024d8((int *)local_14,2); + } + } + return param_1; +} + + + +/* @00402948 file=? name=FUN_00402948 */ + +int * __cdecl FUN_00402948(int *param_1,uint *param_2) + +{ + int *piVar1; + uint local_18 [4]; + int local_8; + + (**(code **)(*param_1 + 0x1c))(param_1,&local_8,4); + piVar1 = (int *)FUN_004022b0(local_8 + 1); + (**(code **)(*param_1 + 0x1c))(param_1,piVar1,local_8 + 1); + FUN_00402590(local_18,param_2,(char *)piVar1); + FUN_004024d8((int *)local_18,2); + FUN_004022e8(piVar1); + return param_1; +} + + + +/* @004029b0 file=? name=FUN_004029b0 */ + +void __cdecl FUN_004029b0(int *param_1,int param_2) + +{ + (**(code **)(*param_1 + 0x20))(param_1,param_2 + 4,4); + (**(code **)(*param_1 + 0x20))(param_1,*(undefined4 *)(param_2 + 8),*(int *)(param_2 + 4) + 1); + return; +} + + + +/* @004029e4 file=munga/cstr.cpp name=FUN_004029e4 */ + +void __cdecl FUN_004029e4(char *param_1,uint *param_2) + +{ + uint local_14 [4]; + + if (param_1 == (char *)0x0) { + FUN_0040385c(s_Convert_From_Ascii___str____NULL_004e07b8,s_d__tesla_bt_munga_CSTR_CPP_004e07d9, + 0x22b); + } + if (param_2 == (uint *)0x0) { + FUN_0040385c(s_Convert_From_Ascii___value____NU_004e07f4,s_d__tesla_bt_munga_CSTR_CPP_004e0817, + 0x22f); + } + FUN_00402590(local_14,param_2,param_1); + FUN_004024d8((int *)local_14,2); + return; +} + + + +/* @00402a4c file=? name=FUN_00402a4c */ + +int * __cdecl FUN_00402a4c(int *param_1,int *param_2,int *param_3) + +{ + int *piVar1; + int iVar2; + int *piVar3; + + if (param_3 == param_2) { + iVar2 = *param_2; + *param_1 = iVar2; + piVar1 = (int *)(iVar2 + 0xc); + *piVar1 = *piVar1 + 1; + } + else { + piVar3 = (int *)*param_2; + piVar1 = piVar3 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(piVar3,3); + } + iVar2 = *param_3; + *param_2 = iVar2; + piVar1 = (int *)(iVar2 + 0xc); + *piVar1 = *piVar1 + 1; + iVar2 = *param_2; + *param_1 = iVar2; + piVar1 = (int *)(iVar2 + 0xc); + *piVar1 = *piVar1 + 1; + } + return param_1; +} + + + +/* @00402a98 file=? name=FUN_00402a98 */ + +int * __cdecl FUN_00402a98(int *param_1,int *param_2,char *param_3) + +{ + int *piVar1; + int *piVar2; + int iVar3; + uint *puVar4; + + piVar2 = (int *)*param_2; + piVar1 = piVar2 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(piVar2,3); + } + puVar4 = (uint *)FUN_00402298(0x10); + if (puVar4 == (uint *)0x0) { + puVar4 = (uint *)0x0; + } + else { + puVar4 = FUN_00402460(puVar4,param_3); + } + *param_2 = (int)puVar4; + *(int *)(*param_2 + 0xc) = *(int *)(*param_2 + 0xc) + 1; + iVar3 = *param_2; + *param_1 = iVar3; + piVar1 = (int *)(iVar3 + 0xc); + *piVar1 = *piVar1 + 1; + return param_1; +} + + + +/* @00402aec file=? name=FUN_00402aec */ + +void __cdecl FUN_00402aec(int *param_1,int *param_2) + +{ + int *piVar1; + int *piVar2; + undefined4 *puVar3; + int iVar4; + + piVar2 = (int *)*param_2; + piVar1 = piVar2 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(piVar2,3); + } + puVar3 = (undefined4 *)FUN_00402298(0x10); + if (puVar3 == (undefined4 *)0x0) { + iVar4 = 0; + } + else { + iVar4 = FUN_004023f4(puVar3); + } + *param_2 = iVar4; + *(int *)(iVar4 + 0xc) = *(int *)(iVar4 + 0xc) + 1; + FUN_00402948(param_1,(uint *)*param_2); + return; +} + + + +/* @00402b3c file=? name=FUN_00402b3c */ + +void __cdecl FUN_00402b3c(char *param_1,int *param_2) + +{ + int *piVar1; + int *piVar2; + undefined4 *puVar3; + int iVar4; + + piVar2 = (int *)*param_2; + piVar1 = piVar2 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(piVar2,3); + } + puVar3 = (undefined4 *)FUN_00402298(0x10); + if (puVar3 == (undefined4 *)0x0) { + iVar4 = 0; + } + else { + iVar4 = FUN_004023f4(puVar3); + } + *param_2 = iVar4; + *(int *)(iVar4 + 0xc) = *(int *)(iVar4 + 0xc) + 1; + FUN_004029e4(param_1,(uint *)*param_2); + return; +} + + + +/* @00402b98 file=? name=FUN_00402b98 */ + +undefined4 * __cdecl +FUN_00402b98(undefined4 *param_1,int param_2,int param_3,int param_4,undefined4 param_5) + +{ + int iVar1; + undefined4 *puVar2; + + param_1[3] = param_2; + param_1[2] = param_3 * param_2; + param_1[4] = param_4 * param_1[3]; + *param_1 = param_5; + puVar2 = (undefined4 *)FUN_004022b0(param_1[2] + 8); + param_1[1] = puVar2; + *puVar2 = 0; + puVar2[1] = param_1[2]; + param_1[5] = puVar2 + 2; + param_1[6] = puVar2 + 2; + param_1[7] = 0; + if (DAT_004e0834 == (undefined4 *)0x0) { + param_1[9] = param_1; + param_1[8] = param_1; + DAT_004e0834 = param_1; + } + else { + iVar1 = DAT_004e0834[9]; + param_1[8] = DAT_004e0834; + param_1[9] = iVar1; + *(undefined4 **)(iVar1 + 0x20) = param_1; + DAT_004e0834[9] = param_1; + } + return param_1; +} + + + +/* @00402c28 file=? name=FUN_00402c28 */ + +void __cdecl FUN_00402c28(int *param_1,byte param_2) + +{ + int *piVar1; + int iVar2; + int iVar3; + int *piVar4; + + if (param_1 != (int *)0x0) { + piVar4 = (int *)param_1[1]; + while (piVar4 != (int *)0x0) { + piVar1 = (int *)*piVar4; + FUN_004022d0(piVar4); + piVar4 = piVar1; + } + if ((param_1 == DAT_004e0834) && (DAT_004e0834 = (int *)param_1[8], param_1 == DAT_004e0834)) { + DAT_004e0834 = (int *)0x0; + } + else { + iVar2 = param_1[8]; + iVar3 = param_1[9]; + *(int *)(iVar2 + 0x24) = iVar3; + *(int *)(iVar3 + 0x20) = iVar2; + } + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00402c88 file=? name=FUN_00402c88 */ + +int __cdecl FUN_00402c88(int param_1) + +{ + undefined4 *puVar1; + int iVar2; + + iVar2 = *(int *)(param_1 + 0x18); + if ((uint)(*(int *)(param_1 + 8) - *(int *)(param_1 + 0xc)) < + (uint)(iVar2 - *(int *)(param_1 + 0x14))) { + *(undefined4 *)(param_1 + 8) = *(undefined4 *)(param_1 + 0x10); + *(int *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + -8; + puVar1 = (undefined4 *)FUN_004022b0(*(int *)(param_1 + 8) + 8); + **(undefined4 **)(param_1 + 0x14) = puVar1; + *(undefined4 **)(param_1 + 0x14) = puVar1; + *puVar1 = 0; + puVar1[1] = *(undefined4 *)(param_1 + 0x10); + *(int *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + 8; + *(int *)(param_1 + 0x18) = *(int *)(param_1 + 0x14) + *(int *)(param_1 + 0xc); + iVar2 = *(int *)(param_1 + 0x14); + } + else { + *(int *)(param_1 + 0x18) = *(int *)(param_1 + 0x18) + *(int *)(param_1 + 0xc); + } + return iVar2; +} + + + +/* @00402cec file=? name=FUN_00402cec */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_00402cec(void) + +{ + undefined4 *puVar1; + char *pcVar2; + uint uVar3; + uint uVar4; + int *piVar5; + int iVar6; + uint uVar7; + undefined4 *puVar8; + uint uVar9; + byte bVar10; + uint local_74; + code *local_64; + undefined4 uStack_60; + uint local_5c; + code *local_58; + undefined4 uStack_54; + uint local_50; + code *local_4c; + undefined4 uStack_48; + uint local_44; + code *local_40; + undefined4 uStack_3c; + uint local_38; + code *local_34; + undefined4 local_30; + int *piStack_2c; + int *piStack_28; + int *piStack_24; + int local_20; + undefined4 uStack_1c; + int local_18; + undefined4 uStack_14; + + FUN_004dbb24(&DAT_00524e20,s__Bytes__Rcds__Dels__Free_Use__Na_004e0838,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s__________________________________004e085c,(char *)0x0); + puVar8 = DAT_004e0834; + do { + puVar1 = (undefined4 *)puVar8[1]; + local_74 = 0; + local_18 = 0; + uVar7 = 0; + uVar3 = (uint)(puVar8[2] - (puVar8[6] - puVar8[5])) / (uint)puVar8[3]; + for (; puVar1 != (undefined4 *)0x0; puVar1 = (undefined4 *)*puVar1) { + local_74 = local_74 + puVar1[1] + 8; + local_18 = local_18 + (uint)puVar1[1] / (uint)puVar8[3]; + } + for (puVar1 = (undefined4 *)puVar8[7]; puVar1 != (undefined4 *)0x0; + puVar1 = (undefined4 *)*puVar1) { + uVar7 = uVar7 + 1; + } + local_20 = uVar3 + uVar7; + uStack_1c = 0; + uStack_14 = 0; + uVar9 = local_18 - local_20; + bVar10 = 0x25; + uVar4 = FUN_004dcd94(); + FUN_004dafd8(&local_64,4); + local_5c = uVar3; + FUN_004dafd8(&local_58,6); + local_50 = uVar7; + FUN_004dafd8(&local_4c,6); + local_44 = uVar9; + FUN_004dafd8(&local_40,6); + local_38 = local_74; + FUN_004dafd8(&local_34,6); + (*local_34)(DAT_00524e20,local_30); + piVar5 = FUN_004db880(&DAT_00524e20,local_38); + if (piVar5 == (int *)0x0) { + iVar6 = 0; + } + else { + iVar6 = *piVar5; + } + (*local_40)(iVar6,uStack_3c); + piStack_2c = FUN_004db880(piVar5,local_44); + if (piStack_2c == (int *)0x0) { + iVar6 = 0; + } + else { + iVar6 = *piStack_2c; + } + (*local_4c)(iVar6,uStack_48); + piStack_28 = FUN_004db880(piStack_2c,local_50); + if (piStack_28 == (int *)0x0) { + iVar6 = 0; + } + else { + iVar6 = *piStack_28; + } + (*local_58)(iVar6,uStack_54); + piStack_24 = FUN_004db880(piStack_28,local_5c); + if (piStack_24 == (int *)0x0) { + iVar6 = 0; + } + else { + iVar6 = *piStack_24; + } + (*local_64)(iVar6,uStack_60); + piVar5 = FUN_004db78c(piStack_24,uVar4); + FUN_004db92c(piVar5,bVar10); + pcVar2 = (char *)*puVar8; + if (pcVar2 != (char *)0x0) { + piVar5 = FUN_004db92c(&DAT_00524e20,0x20); + FUN_004dbb24(piVar5,pcVar2,(char *)0x0); + } + FUN_004d9c38(&DAT_00524e20); + puVar8 = (undefined4 *)puVar8[8]; + } while (puVar8 != DAT_004e0834); + FUN_004d9c38(&DAT_00524e20); + return; +} + + + +/* @00402f74 file=? name=FUN_00402f74 */ + +undefined4 * __cdecl FUN_00402f74(int param_1) + +{ + undefined4 *puVar1; + + puVar1 = *(undefined4 **)(param_1 + 0x1c); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)FUN_00402c88(param_1); + } + else { + *(undefined4 *)(param_1 + 0x1c) = *puVar1; + } + return puVar1; +} + + + +/* @00402f98 file=? name=FUN_00402f98 */ + +void __cdecl FUN_00402f98(int param_1,undefined4 *param_2) + +{ + *param_2 = *(undefined4 *)(param_1 + 0x1c); + *(undefined4 **)(param_1 + 0x1c) = param_2; + return; +} + + + +/* @00402fac file=? name=FUN_00402fac */ + +undefined8 __fastcall FUN_00402fac(undefined4 param_1,uint param_2,int param_3,uint param_4) + +{ + undefined4 *puVar1; + longlong lVar2; + int iVar3; + + puVar1 = *(undefined4 **)(param_3 + 4); + do { + if (puVar1 == (undefined4 *)0x0) { + iVar3 = 0; +LAB_00402fe2: + return CONCAT44(param_2,iVar3); + } + param_2 = (uint)puVar1[1] / *(uint *)(param_3 + 0xc); + if (param_4 < param_2) { + lVar2 = (longlong)*(int *)(param_3 + 0xc) * (longlong)(int)param_4; + param_2 = (uint)((ulonglong)lVar2 >> 0x20); + iVar3 = (int)puVar1 + (int)lVar2 + 8; + goto LAB_00402fe2; + } + param_4 = param_4 - param_2; + puVar1 = (undefined4 *)*puVar1; + } while( true ); +} + + + +/* @00402fe8 file=? name=FUN_00402fe8 */ + +undefined4 __cdecl FUN_00402fe8(int param_1,undefined4 *param_2) + +{ + int iVar1; + undefined4 *puVar2; + uint uVar3; + + iVar1 = *(int *)(param_1 + 0x14); + *(undefined4 *)(param_1 + 0x28) = *(undefined4 *)(param_1 + 0x18); + uVar3 = *(uint *)(param_1 + 0xc); + puVar2 = (undefined4 *)FUN_00402c88(param_1); + FUN_004d4918(puVar2,param_2,uVar3); + if (iVar1 != *(int *)(param_1 + 0x14)) { + *(int *)(param_1 + 0x28) = *(int *)(param_1 + 0x14); + } + return *(undefined4 *)(param_1 + 0x28); +} + + + +/* @00403024 file=? name=FUN_00403024 */ + +undefined4 __cdecl FUN_00403024(int param_1) + +{ + int iVar1; + + iVar1 = *(int *)(param_1 + 0x14); + *(undefined4 *)(param_1 + 0x28) = *(undefined4 *)(param_1 + 0x18); + FUN_00402c88(param_1); + if (iVar1 != *(int *)(param_1 + 0x14)) { + *(int *)(param_1 + 0x28) = *(int *)(param_1 + 0x14); + } + return *(undefined4 *)(param_1 + 0x28); +} + + + +/* @00403050 file=? name=FUN_00403050 */ + +void __cdecl FUN_00403050(int param_1) + +{ + int iVar1; + int *piVar2; + int *piVar3; + + if (*(int *)(param_1 + 0x28) != 0) { + iVar1 = *(int *)(param_1 + 0x14); + if (*(int *)(param_1 + 0x28) == iVar1) { + if (**(int **)(param_1 + 4) == 0) { + *(undefined4 *)(param_1 + 0x28) = 0; + } + else { + piVar2 = *(int **)(param_1 + 4); + do { + piVar3 = piVar2; + piVar2 = (int *)*piVar3; + } while ((int *)(*(int *)(param_1 + 0x14) + -8) != (int *)*piVar3); + *(int *)(param_1 + 0x28) = (int)piVar3 + ((piVar3[1] + 8) - *(int *)(param_1 + 0xc)); + } + } + else { + if (iVar1 == *(int *)(param_1 + 0x18)) { + piVar2 = *(int **)(param_1 + 4); + do { + piVar3 = piVar2; + piVar2 = (int *)*piVar3; + } while ((int *)(iVar1 + -8) != (int *)*piVar3); + FUN_004022d0((int *)(iVar1 + -8)); + *piVar3 = 0; + *(int **)(param_1 + 0x14) = piVar3 + 2; + *(int *)(param_1 + 8) = piVar3[1]; + } + *(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(param_1 + 0x28); + *(int *)(param_1 + 0x28) = *(int *)(param_1 + 0x28) - *(int *)(param_1 + 0xc); + } + } + return; +} + + + +/* @004030dc file=? name=FUN_004030dc */ + +void __cdecl FUN_004030dc(undefined4 *param_1,undefined4 param_2,undefined4 param_3,int param_4) + +{ + *param_1 = &PTR_FUN_004e0908; + param_1[1] = param_2; + param_1[3] = param_3; + param_1[2] = param_1[1] + param_4; + return; +} + + + +/* @00403104 file=? name=FUN_00403104 */ + +int * __cdecl FUN_00403104(int *param_1,undefined4 *param_2,uint param_3) + +{ + undefined4 *puVar1; + uint uVar2; + + uVar2 = param_3; + puVar1 = (undefined4 *)(**(code **)*param_1)(param_1); + FUN_004d4918(param_2,puVar1,uVar2); + (**(code **)(*param_1 + 0x14))(param_1,param_3); + return param_1; +} + + + +/* @00403134 file=? name=FUN_00403134 */ + +int * __cdecl FUN_00403134(int *param_1,undefined4 *param_2,uint param_3) + +{ + undefined4 *puVar1; + uint uVar2; + + uVar2 = param_3; + puVar1 = (undefined4 *)(**(code **)*param_1)(param_1); + FUN_004d4918(puVar1,param_2,uVar2); + (**(code **)(*param_1 + 0x14))(param_1,param_3); + return param_1; +} + + + +/* @00403164 file=munga/memstrm.cpp name=FUN_00403164 */ + +int * __cdecl FUN_00403164(int *param_1,int *param_2) + +{ + int iVar1; + int iVar2; + undefined1 *puVar3; + int *piVar4; + undefined1 local_5; + + FUN_004dc680(*param_2,0); + if ((*(byte *)(*param_2 + 0x18) & 0x80) == 0) { + FUN_004dc680(*param_2,0); + FUN_004daf40(param_2,0); + while( true ) { + piVar4 = FUN_004dadcc(param_2,&local_5); + iVar1 = *piVar4; + if ((*(byte *)(iVar1 + 0xc) & 0x86) != 0) { + iVar1 = 0; + } + if (iVar1 == 0) break; + (**(code **)(*param_1 + 0x20))(param_1,&local_5,1); + } + } + else { + FUN_004daf00(param_2,0,2); + iVar1 = FUN_004daf7c(param_2); + FUN_004dc680(*param_2,0); + FUN_004daf40(param_2,0); + iVar2 = (**(code **)(*param_1 + 0x10))(param_1,iVar1); + if (iVar2 == 0) { + FUN_0040385c(s_Not_enough_memory_remaining_in_s_004e089c, + s_d__tesla_bt_munga_MEMSTRM_CPP_004e08c3,0x69); + } + iVar2 = iVar1; + puVar3 = (undefined1 *)(**(code **)*param_1)(param_1); + FUN_004dae60(param_2,puVar3,iVar2); + (**(code **)(*param_1 + 0x14))(param_1,iVar1); + } + return param_1; +} + + + +/* @00403248 file=? name=FUN_00403248 */ + +void __cdecl FUN_00403248(int *param_1,int *param_2) + +{ + undefined4 uVar1; + + uVar1 = (**(code **)(*param_2 + 4))(param_2); + uVar1 = (**(code **)*param_2)(param_2,uVar1); + (**(code **)(*param_1 + 0x20))(param_1,uVar1); + return; +} + + + +/* @00403270 file=? name=FUN_00403270 */ + +bool __cdecl FUN_00403270(int param_1) + +{ + return (uint)(*(int *)(param_1 + 8) - *(int *)(param_1 + 4)) <= *(uint *)(param_1 + 0xc); +} + + + +/* @0040328c file=? name=FUN_0040328c */ + +undefined4 * __cdecl FUN_0040328c(undefined4 *param_1,int param_2) + +{ + undefined4 uVar1; + uint uVar2; + + FUN_004030dc(param_1,0,param_2,0); + uVar2 = param_2 + 0x80U & 0xffffff80; + *param_1 = &PTR_FUN_004e08e4; + param_1[3] = uVar2; + uVar1 = FUN_004022b0(uVar2); + param_1[1] = uVar1; + param_1[2] = uVar1; + param_1[4] = 0; + param_1[5] = 1; + return param_1; +} + + + +/* @004032dc file=? name=FUN_004032dc */ + +undefined4 * __cdecl +FUN_004032dc(undefined4 *param_1,undefined4 param_2,undefined4 param_3,int param_4) + +{ + FUN_004030dc(param_1,param_2,param_3,param_4); + *param_1 = &PTR_FUN_004e08e4; + param_1[5] = 0; + param_1[4] = param_3; + return param_1; +} + + + +/* @00403310 file=? name=FUN_00403310 */ + +void __cdecl FUN_00403310(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e08e4; + if (param_1[5] != 0) { + FUN_004022e8((int *)param_1[1]); + } + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00403344 file=? name=FUN_00403344 */ + +undefined4 __cdecl FUN_00403344(int param_1,uint param_2) + +{ + undefined4 *puVar1; + int iVar2; + uint uVar3; + + if ((*(int *)(param_1 + 0x14) != 0) && + ((uint)(*(int *)(param_1 + 0xc) - (*(int *)(param_1 + 8) - *(int *)(param_1 + 4))) < param_2)) + { + iVar2 = *(int *)(param_1 + 8) - *(int *)(param_1 + 4); + uVar3 = param_2 + iVar2 + 0x81 & 0xffffff80; + puVar1 = (undefined4 *)FUN_004022b0(uVar3); + FUN_004d4918(puVar1,*(undefined4 **)(param_1 + 4),*(uint *)(param_1 + 0xc)); + FUN_004022e8(*(int **)(param_1 + 4)); + *(undefined4 **)(param_1 + 4) = puVar1; + *(uint *)(param_1 + 0xc) = uVar3; + *(int *)(param_1 + 8) = *(int *)(param_1 + 4) + iVar2; + } + return 1; +} + + + +/* @004033d0 file=? name=FUN_004033d0 */ + +int * __cdecl FUN_004033d0(int *param_1,undefined4 *param_2,uint param_3) + +{ + undefined4 *puVar1; + int iVar2; + uint uVar3; + + (**(code **)(*param_1 + 0x10))(param_1,param_3); + uVar3 = param_3; + puVar1 = (undefined4 *)(**(code **)*param_1)(param_1); + FUN_004d4918(puVar1,param_2,uVar3); + (**(code **)(*param_1 + 0x14))(param_1,param_3); + if ((uint)(param_1[2] - param_1[1]) < (uint)param_1[4]) { + iVar2 = param_1[4]; + } + else { + iVar2 = param_1[2] - param_1[1]; + } + param_1[4] = iVar2; + return param_1; +} + + + +/* @00403428 file=? name=FUN_00403428 */ + +undefined4 __cdecl FUN_00403428(int param_1) + +{ + return *(undefined4 *)(param_1 + 8); +} + + + +/* @00403433 file=? name=FUN_00403433 */ + +int __cdecl FUN_00403433(int param_1) + +{ + return *(int *)(param_1 + 0x10) - (*(int *)(param_1 + 8) - *(int *)(param_1 + 4)); +} + + + +/* @00403446 file=? name=FUN_00403446 */ + +void __cdecl FUN_00403446(int param_1,undefined4 param_2) + +{ + *(undefined4 *)(param_1 + 8) = param_2; + return; +} + + + +/* @00403454 file=? name=FUN_00403454 */ + +void __cdecl FUN_00403454(int param_1,int param_2) + +{ + *(int *)(param_1 + 8) = *(int *)(param_1 + 4) + param_2; + return; +} + + + +/* @00403465 file=? name=FUN_00403465 */ + +void __cdecl FUN_00403465(int param_1,int param_2) + +{ + *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + param_2; + return; +} + + + +/* @00403473 file=? name=FUN_00403473 */ + +void __cdecl FUN_00403473(int param_1,int param_2) + +{ + *(int *)(param_1 + 8) = *(int *)(param_1 + 8) - param_2; + return; +} + + + +/* @00403481 file=? name=FUN_00403481 */ + +int __cdecl FUN_00403481(int param_1) + +{ + return *(int *)(param_1 + 0xc) - (*(int *)(param_1 + 8) - *(int *)(param_1 + 4)); +} + + + +/* @00403494 file=? name=FUN_00403494 */ + +bool __cdecl FUN_00403494(int *param_1,uint param_2) + +{ + uint uVar1; + + uVar1 = (**(code **)(*param_1 + 4))(param_1); + return uVar1 <= param_2; +} + + + +/* @004034b0 file=? name=FUN_004034b0 */ + +undefined4 * __cdecl FUN_004034b0(undefined4 *param_1,LPCSTR param_2,int param_3) + +{ + FUN_004030dc(param_1,0,0,0); + *param_1 = &PTR_FUN_004e09e0; + FUN_004034e4((int)param_1,param_2,param_3); + return param_1; +} + + + +/* @004034e4 file=? name=FUN_004034e4 */ + +void __cdecl FUN_004034e4(int param_1,LPCSTR param_2,int param_3) + +{ + uint uVar1; + DWORD DVar2; + + *(uint *)(param_1 + 0x14) = (uint)(param_3 == 0); + *(undefined4 *)(param_1 + 0x10) = 0xffffffff; + *(undefined4 *)(param_1 + 4) = 0; + *(undefined4 *)(param_1 + 8) = 0; + *(undefined4 *)(param_1 + 0xc) = 0; + if (param_2 != (LPCSTR)0x0) { + uVar1 = FUN_00401774(param_2,*(int *)(param_1 + 0x14)); + *(uint *)(param_1 + 0x10) = uVar1; + } + if (*(int *)(param_1 + 0x10) != -1) { + if (*(int *)(param_1 + 0x14) == 0) { + *(undefined4 *)(param_1 + 0xc) = 0xffffffff; + } + else { + DVar2 = FUN_0040184c(*(uint *)(param_1 + 0x10),0,1); + *(DWORD *)(param_1 + 0xc) = DVar2; + FUN_0040184c(*(uint *)(param_1 + 0x10),0,0); + } + } + return; +} + + + +/* @00403564 file=? name=FUN_00403564 */ + +void __cdecl FUN_00403564(int param_1) + +{ + if (*(int *)(param_1 + 0x10) != -1) { + FUN_00401810(*(uint *)(param_1 + 0x10)); + } + *(undefined4 *)(param_1 + 0x10) = 0xffffffff; + return; +} + + + +/* @00403588 file=? name=FUN_00403588 */ + +void __cdecl FUN_00403588(int param_1,LONG param_2) + +{ + DWORD DVar1; + + DVar1 = FUN_0040184c(*(uint *)(param_1 + 0x10),param_2,0); + *(DWORD *)(param_1 + 8) = DVar1; + return; +} + + + +/* @004035a8 file=? name=FUN_004035a8 */ + +int __cdecl FUN_004035a8(int param_1,int param_2) + +{ + DWORD DVar1; + + DVar1 = FUN_0040184c(*(uint *)(param_1 + 0x10),*(int *)(param_1 + 8) + param_2,0); + *(DWORD *)(param_1 + 8) = DVar1; + return param_1; +} + + + +/* @004035cc file=? name=FUN_004035cc */ + +int __cdecl FUN_004035cc(int param_1,int param_2) + +{ + DWORD DVar1; + + DVar1 = FUN_0040184c(*(uint *)(param_1 + 0x10),*(int *)(param_1 + 8) + param_2,0); + *(DWORD *)(param_1 + 8) = DVar1; + return param_1; +} + + + +/* @004035f0 file=? name=FUN_004035f0 */ + +int __cdecl FUN_004035f0(int param_1,char *param_2,char *param_3) + +{ + char *pcVar1; + + pcVar1 = FUN_00401970(*(uint *)(param_1 + 0x10),param_2,param_3); + *(int *)(param_1 + 8) = (int)(pcVar1 + *(int *)(param_1 + 8)); + return param_1; +} + + + +/* @00403614 file=? name=FUN_00403614 */ + +int __cdecl FUN_00403614(int param_1,char *param_2,char *param_3) + +{ + char *pcVar1; + + pcVar1 = FUN_004018cc(*(uint *)(param_1 + 0x10),param_2,param_3); + *(int *)(param_1 + 8) = (int)(pcVar1 + *(int *)(param_1 + 8)); + return param_1; +} + + + +/* @00403638 file=? name=FUN_00403638 */ + +undefined4 FUN_00403638(void) + +{ + return 1; +} + + + +/* @00403642 file=munga/filestrm.hpp name=FUN_00403642 */ + +undefined4 FUN_00403642(void) + +{ + FUN_0040385c(s_No_implementation_possible_for_F_004e092c,s_d__tesla_bt_munga_filestrm_hpp_004e0964 + ,0x2d); + return 0; +} + + + +/* @0040365d file=munga/filestrm.hpp name=FUN_0040365d */ + +void FUN_0040365d(void) + +{ + FUN_0040385c(s_No_implementation_possible_for_F_004e0983,s_d__tesla_bt_munga_filestrm_hpp_004e09c0 + ,0x33); + return; +} + + + +/* @00403678 file=? name=FUN_00403678 */ + +undefined4 FUN_00403678(void) + +{ + FUN_004dcd7c(); + return 1; +} + + + +/* @004036a0 file=? name=FUN_004036a0 */ + +void __cdecl FUN_004036a0(UINT param_1) + +{ + FUN_004dee24(param_1); + return; +} + + + +/* @00403798 file=? name=FUN_00403798 */ + +void __cdecl FUN_00403798(char *param_1,char *param_2,uint param_3) + +{ + int *piVar1; + + if (DAT_004e0a04 == 0) { + DAT_004e0a04 = 1; + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004e0adb,(char *)0x0); + piVar1 = FUN_004db78c(&DAT_00524e20,param_3); + FUN_004dbb24(piVar1,s____Failed_004e0add,(char *)0x0); + FUN_004dbb24(piVar1,param_1,(char *)0x0); + FUN_004dbb24(piVar1,&DAT_004e0ae8,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_Failing_to_debugger_004e0aea,(char *)0x0); + FUN_004d9c70(&DAT_00524e20); + FUN_00401afc(); + FUN_0044c720(); + FUN_00447b38(); + } + return; +} + + + +/* @0040385c file=? name=FUN_0040385c */ + +void __cdecl FUN_0040385c(char *param_1,char *param_2,uint param_3) + +{ + int *piVar1; + + if (DAT_004e0a04 == 0) { + DAT_004e0a04 = 1; + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004e0aff,(char *)0x0); + piVar1 = FUN_004db78c(&DAT_00524e20,param_3); + FUN_004dbb24(piVar1,&DAT_004e0b01,(char *)0x0); + FUN_004dbb24(piVar1,param_1,(char *)0x0); + FUN_004dbb24(piVar1,&DAT_004e0b05,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_Failing_to_debugger_004e0b07,(char *)0x0); + FUN_004d9c70(&DAT_00524e20); + FUN_00401afc(); + FUN_0044c720(); + FUN_00447b38(); + } + return; +} + + + +/* @00403920 file=? name=FUN_00403920 */ + +void __cdecl FUN_00403920(float *param_1,float *param_2) + +{ + *param_1 = -*param_2; + param_1[1] = -param_2[1]; + return; +} + + + +/* @00403939 file=? name=FUN_00403939 */ + +void __cdecl FUN_00403939(float *param_1,float *param_2,float *param_3) + +{ + *param_1 = *param_2 + *param_3; + param_1[1] = param_2[1] + param_3[1]; + return; +} + + + +/* @00403956 file=? name=FUN_00403956 */ + +void __cdecl FUN_00403956(float *param_1,float *param_2,float *param_3) + +{ + *param_1 = *param_2 - *param_3; + param_1[1] = param_2[1] - param_3[1]; + return; +} + + + +/* @00403973 file=? name=FUN_00403973 */ + +void __cdecl FUN_00403973(float *param_1,float *param_2,float param_3) + +{ + *param_1 = *param_2 * param_3; + param_1[1] = param_2[1] * param_3; + return; +} + + + +/* @0040398e file=? name=FUN_0040398e */ + +void __cdecl FUN_0040398e(float *param_1,float *param_2,float *param_3) + +{ + *param_1 = *param_2 * *param_3; + param_1[1] = param_2[1] * param_3[1]; + return; +} + + + +/* @004039ab file=? name=FUN_004039ab */ + +void __cdecl FUN_004039ab(float *param_1,float *param_2,float param_3) + +{ + *param_1 = *param_2 / param_3; + param_1[1] = param_2[1] / param_3; + return; +} + + + +/* @004039c6 file=? name=FUN_004039c6 */ + +void __cdecl FUN_004039c6(float *param_1,float *param_2,float *param_3) + +{ + *param_1 = *param_2 / *param_3; + param_1[1] = param_2[1] / param_3[1]; + return; +} + + + +/* @004039e3 file=? name=FUN_004039e3 */ + +float * __cdecl FUN_004039e3(float *param_1,float *param_2) + +{ + float10 fVar1; + + fVar1 = FUN_004dd138((double)(param_2[1] * param_2[1] + *param_2 * *param_2)); + *param_1 = *param_2 / (float)fVar1; + param_1[1] = param_2[1] / (float)fVar1; + return param_1; +} + + + +/* @00403a23 file=? name=FUN_00403a23 */ + +undefined4 FUN_00403a23(void) + +{ + return 1; +} + + + +/* @00403a30 file=? name=FUN_00403a30 */ + +void __cdecl FUN_00403a30(undefined4 *param_1) + +{ + *param_1 = &PTR_FUN_004e0b2c; + param_1[2] = 0; + param_1[1] = 0; + return; +} + + + +/* @00403a48 file=? name=FUN_00403a48 */ + +void __cdecl FUN_00403a48(int *param_1,byte param_2) + +{ + int iVar1; + int *piVar2; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e0b2c; + while (piVar2 = (int *)param_1[1], piVar2 != (int *)0x0) { + iVar1 = *piVar2; + FUN_004022d0(piVar2); + param_1[1] = iVar1; + } + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00403a80 file=? name=FUN_00403a80 */ + +undefined4 * __cdecl FUN_00403a80(int param_1,char *param_2,undefined4 param_3) + +{ + int iVar1; + undefined4 *puVar2; + + iVar1 = FUN_004d4a78(param_2); + puVar2 = (undefined4 *)FUN_004022b0(iVar1 + 9); + puVar2[1] = param_3; + *puVar2 = 0; + if (*(int *)(param_1 + 4) == 0) { + *(undefined4 **)(param_1 + 4) = puVar2; + } + else { + **(undefined4 **)(param_1 + 8) = puVar2; + } + *(undefined4 **)(param_1 + 8) = puVar2; + FUN_00403be8((int)puVar2,param_2); + return puVar2 + 2; +} + + + +/* @00403ad0 file=? name=FUN_00403ad0 */ + +undefined4 __cdecl FUN_00403ad0(int param_1,char *param_2) + +{ + char *pcVar1; + undefined4 *puVar2; + char *pcVar3; + undefined4 uVar4; + char *pcVar5; + bool bVar6; + + for (puVar2 = *(undefined4 **)(param_1 + 4); puVar2 != (undefined4 *)0x0; + puVar2 = (undefined4 *)*puVar2) { + pcVar3 = (char *)(puVar2 + 2); + pcVar5 = param_2; + do { + if (*pcVar3 != *pcVar5) goto LAB_00403b05; + bVar6 = true; + if (*pcVar3 == '\0') break; + pcVar1 = pcVar3 + 1; + if (*pcVar1 != pcVar5[1]) goto LAB_00403b05; + pcVar3 = pcVar3 + 2; + pcVar5 = pcVar5 + 2; + bVar6 = *pcVar1 == '\0'; + } while (!bVar6); + if (bVar6) break; +LAB_00403b05: + } + if (puVar2 == (undefined4 *)0x0) { + uVar4 = 0; + } + else { + uVar4 = puVar2[1]; + } + return uVar4; +} + + + +/* @00403b1c file=? name=FUN_00403b1c */ + +void __cdecl FUN_00403b1c(int param_1,int param_2) + +{ + int *piVar1; + int *piVar2; + int *piVar3; + int *piVar4; + + piVar4 = (int *)(param_2 + -8); + piVar1 = *(int **)(param_1 + 4); + piVar3 = (int *)0x0; + while ((piVar2 = piVar1, piVar2 != (int *)0x0 && (piVar4 != piVar2))) { + piVar3 = piVar2; + piVar1 = (int *)*piVar2; + } + if (piVar3 == (int *)0x0) { + *(int *)(param_1 + 4) = *piVar4; + } + else { + *piVar3 = *piVar4; + } + if (piVar4 == *(int **)(param_1 + 8)) { + *(int **)(param_1 + 8) = piVar3; + } + FUN_004022d0(piVar4); + return; +} + + + +/* @00403b60 file=? name=FUN_00403b60 */ + +int __cdecl FUN_00403b60(int param_1) + +{ + undefined4 *puVar1; + int iVar2; + + iVar2 = 0; + for (puVar1 = *(undefined4 **)(param_1 + 4); puVar1 != (undefined4 *)0x0; + puVar1 = (undefined4 *)*puVar1) { + iVar2 = iVar2 + 1; + } + return iVar2; +} + + + +/* @00403b7c file=? name=FUN_00403b7c */ + +int __cdecl FUN_00403b7c(int *param_1,int param_2,char *param_3) + +{ + undefined4 *puVar1; + int iVar2; + int iVar3; + int local_c; + + iVar2 = FUN_004d4a78(param_3); + puVar1 = *(undefined4 **)(param_2 + 4); + local_c = 0; + for (; puVar1 != (undefined4 *)0x0; puVar1 = (undefined4 *)*puVar1) { + iVar3 = FUN_004d4ae0((char *)(puVar1 + 2),param_3,iVar2); + if (iVar3 == 0) { + local_c = local_c + 1; + (**(code **)(*param_1 + 4))(param_1,puVar1 + 2,puVar1[1]); + } + } + return local_c; +} + + + +/* @00403bdc file=? name=FUN_00403bdc */ + +undefined4 FUN_00403bdc(void) + +{ + return 1; +} + + + +/* @00403be8 file=? name=FUN_00403be8 */ + +char * __cdecl FUN_00403be8(int param_1,char *param_2) + +{ + char cVar1; + uint uVar2; + uint uVar3; + char *pcVar4; + char *pcVar5; + + uVar2 = 0xffffffff; + do { + pcVar4 = param_2; + if (uVar2 == 0) break; + uVar2 = uVar2 - 1; + pcVar4 = param_2 + 1; + cVar1 = *param_2; + param_2 = pcVar4; + } while (cVar1 != '\0'); + uVar2 = ~uVar2; + pcVar4 = pcVar4 + -uVar2; + pcVar5 = (char *)(param_1 + 8); + for (uVar3 = uVar2 >> 2; uVar3 != 0; uVar3 = uVar3 - 1) { + *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4; + pcVar4 = pcVar4 + 4; + pcVar5 = pcVar5 + 4; + } + for (uVar2 = uVar2 & 3; uVar2 != 0; uVar2 = uVar2 - 1) { + *pcVar5 = *pcVar4; + pcVar4 = pcVar4 + 1; + pcVar5 = pcVar5 + 1; + } + return (char *)(param_1 + 8); +} + + + +/* @00403c20 file=? name=FUN_00403c20 */ + +bool __cdecl FUN_00403c20(int param_1,char *param_2) + +{ + char cVar1; + char *pcVar2; + bool bVar3; + + if (param_2 == (char *)0x0) { + bVar3 = param_1 == -8; + } + else { + pcVar2 = (char *)(param_1 + 8); + do { + cVar1 = *pcVar2; + if (cVar1 != *param_2) { + return cVar1 == *param_2; + } + if (cVar1 == '\0') { + return true; + } + cVar1 = pcVar2[1]; + if (cVar1 != param_2[1]) { + return cVar1 == param_2[1]; + } + pcVar2 = pcVar2 + 2; + param_2 = param_2 + 2; + bVar3 = cVar1 == '\0'; + } while (!bVar3); + } + return bVar3; +} + + + +/* @00403c68 file=? name=FUN_00403c68 */ + +undefined4 FUN_00403c68(void) + +{ + return 1; +} + + + +/* @00403c74 file=? name=FUN_00403c74 */ + +undefined4 * __cdecl FUN_00403c74(undefined4 *param_1) + +{ + FUN_00403a30(param_1); + *param_1 = &PTR_FUN_004e0b24; + return param_1; +} + + + +/* @00403c90 file=? name=FUN_00403c90 */ + +void __cdecl FUN_00403c90(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e0b24; + FUN_00403a48(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00403cbc file=? name=FUN_00403cbc */ + +undefined4 * __cdecl FUN_00403cbc(int param_1,int param_2) + +{ + undefined4 *puVar1; + + for (puVar1 = *(undefined4 **)(param_1 + 4); + (puVar1 != (undefined4 *)0x0 && (param_2 != puVar1[1])); puVar1 = (undefined4 *)*puVar1) { + } + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = puVar1 + 2; + } + return puVar1; +} + + + +/* @00403ce4 file=? name=FUN_00403ce4 */ + +undefined4 * __cdecl FUN_00403ce4(int param_1,char *param_2) + +{ + char *pcVar1; + undefined4 *puVar2; + char *pcVar3; + char *pcVar4; + bool bVar5; + + puVar2 = *(undefined4 **)(param_1 + 4); + do { + if (puVar2 == (undefined4 *)0x0) { + return (undefined4 *)0x0; + } + pcVar3 = (char *)(puVar2 + 2); + pcVar4 = param_2; + do { + if (*pcVar3 != *pcVar4) goto LAB_00403d19; + bVar5 = true; + if (*pcVar3 == '\0') break; + pcVar1 = pcVar3 + 1; + if (*pcVar1 != pcVar4[1]) goto LAB_00403d19; + pcVar3 = pcVar3 + 2; + pcVar4 = pcVar4 + 2; + bVar5 = *pcVar1 == '\0'; + } while (!bVar5); + if (bVar5) { + return puVar2; + } +LAB_00403d19: + puVar2 = (undefined4 *)*puVar2; + } while( true ); +} + + + +/* @00403d28 file=? name=FUN_00403d28 */ + +void __cdecl FUN_00403d28(int param_1,int param_2) + +{ + undefined4 *puVar1; + + for (puVar1 = *(undefined4 **)(param_1 + 4); + (puVar1 != (undefined4 *)0x0 && (param_2 != puVar1[1])); puVar1 = (undefined4 *)*puVar1) { + } + return; +} + + + +/* @00403d48 file=? name=FUN_00403d48 */ + +void __cdecl FUN_00403d48(int param_1,char *param_2) + +{ + char *pcVar1; + int *piVar2; + int *piVar3; + int *piVar4; + char *pcVar5; + bool bVar6; + + piVar2 = (int *)0x0; + for (piVar3 = *(int **)(param_1 + 4); piVar3 != (int *)0x0; piVar3 = (int *)*piVar3) { + piVar4 = piVar3 + 2; + pcVar5 = param_2; + do { + if ((char)*piVar4 != *pcVar5) goto LAB_00403d7e; + bVar6 = true; + if ((char)*piVar4 == '\0') break; + pcVar1 = (char *)((int)piVar4 + 1); + if (*pcVar1 != pcVar5[1]) goto LAB_00403d7e; + piVar4 = (int *)((int)piVar4 + 2); + pcVar5 = pcVar5 + 2; + bVar6 = *pcVar1 == '\0'; + } while (!bVar6); + if (bVar6) break; +LAB_00403d7e: + piVar2 = piVar3; + } + if (piVar3 != (int *)0x0) { + if (piVar2 == (int *)0x0) { + *(int *)(param_1 + 4) = *piVar3; + } + else { + *piVar2 = *piVar3; + } + if (piVar3 == *(int **)(param_1 + 8)) { + *(int **)(param_1 + 8) = piVar2; + } + FUN_004022d0(piVar3); + } + return; +} + + + +/* @00403db0 file=? name=FUN_00403db0 */ + +undefined4 * __cdecl FUN_00403db0(undefined4 *param_1) + +{ + FUN_00403c74(param_1); + *param_1 = &PTR_FUN_004e0b1c; + return param_1; +} + + + +/* @00403dcc file=? name=FUN_00403dcc */ + +void __cdecl FUN_00403dcc(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e0b1c; + FUN_00403c90(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00403df8 file=? name=FUN_00403df8 */ + +undefined4 * __cdecl FUN_00403df8(int param_1,byte *param_2,undefined4 param_3) + +{ + byte bVar1; + undefined4 *puVar2; + undefined4 *puVar3; + int iVar4; + undefined4 *puVar5; + byte *pbVar6; + byte *pbVar7; + bool bVar8; + + iVar4 = FUN_004d4a78((char *)param_2); + puVar5 = (undefined4 *)FUN_004022b0(iVar4 + 9); + puVar3 = (undefined4 *)0x0; + for (puVar2 = *(undefined4 **)(param_1 + 4); puVar2 != (undefined4 *)0x0; + puVar2 = (undefined4 *)*puVar2) { + pbVar7 = (byte *)(puVar2 + 2); + pbVar6 = param_2; + do { + bVar1 = *pbVar6; + bVar8 = bVar1 < *pbVar7; + if ((bVar1 != *pbVar7) || (bVar8 = false, bVar1 == 0)) break; + bVar1 = pbVar6[1]; + bVar8 = bVar1 < pbVar7[1]; + if (bVar1 != pbVar7[1]) break; + pbVar6 = pbVar6 + 2; + pbVar7 = pbVar7 + 2; + bVar8 = false; + } while (bVar1 != 0); + if (bVar8) break; + puVar3 = puVar2; + } + if (puVar2 == (undefined4 *)0x0) { + *(undefined4 **)(param_1 + 8) = puVar5; + } + if (puVar3 == (undefined4 *)0x0) { + *(undefined4 **)(param_1 + 4) = puVar5; + } + else { + *puVar3 = puVar5; + } + puVar5[1] = param_3; + *puVar5 = puVar2; + FUN_00403be8((int)puVar5,(char *)param_2); + return puVar5 + 2; +} + + + +/* @00403e84 file=? name=FUN_00403e84 */ + +int * __cdecl FUN_00403e84(int *param_1,char *param_2,int param_3) + +{ + *param_1 = 0; + param_1[2] = 0; + param_1[1] = 0; + param_1[4] = 0; + param_1[3] = 0; + param_1[5] = 0; + param_1[6] = 0; + param_1[7] = param_3; + if ((param_2 != (char *)0x0) && (*param_2 != '\0')) { + FUN_00404bfc(param_1,param_2); + } + return param_1; +} + + + +/* @00403ecc file=? name=FUN_00403ecc */ + +void __cdecl FUN_00403ecc(int *param_1,byte param_2) + +{ + int *piVar1; + char *pcVar2; + int iVar3; + + if (param_1 != (int *)0x0) { + piVar1 = (int *)param_1[1]; + if ((((param_1[5] != 0) && ((char *)*param_1 != (char *)0x0)) && (*(char *)*param_1 != '\0')) && + (iVar3 = FUN_00404d6c(param_1,(char *)0x0), iVar3 == 0)) { + pcVar2 = (char *)*param_1; + FUN_004dbb24((int *)&DAT_00524e68,s_NotationFile__Error_writing_file_004e0b38,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,pcVar2,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_____changes_lost__004e0b5c,(char *)0x0); + FUN_004d9c38((int *)&DAT_00524e68); + } + while (piVar1 != (int *)0x0) { + param_1[1] = piVar1[1]; + FUN_004056ac(piVar1,3); + piVar1 = (int *)param_1[1]; + } + if ((int *)*param_1 != (int *)0x0) { + FUN_004022d0((int *)*param_1); + } + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00403f84 file=? name=FUN_00403f84 */ + +void __cdecl FUN_00403f84(int param_1,char *param_2) + +{ + int local_8; + + FUN_004050ac(param_1,param_2,&local_8); + return; +} + + + +/* @00403fa0 file=? name=FUN_00403fa0 */ + +undefined4 __cdecl FUN_00403fa0(int param_1,char *param_2) + +{ + int iVar1; + undefined4 uVar2; + int local_8; + + iVar1 = FUN_004050ac(param_1,param_2,&local_8); + if (iVar1 == 0) { + uVar2 = 0; + } + else if ((*(byte *)(param_1 + 0x1c) & 4) == 0) { + uVar2 = *(undefined4 *)(local_8 + 0x10); + } + else { + uVar2 = *(undefined4 *)(local_8 + 0x14); + } + return uVar2; +} + + + +/* @00403fdc file=? name=FUN_00403fdc */ + +int __cdecl FUN_00403fdc(int param_1,char *param_2,char *param_3) + +{ + int iVar1; + int local_8; + + *(undefined4 *)(param_1 + 0x14) = 1; + iVar1 = FUN_004050ac(param_1,param_2,&local_8); + if (iVar1 == 0) { + local_8 = FUN_0040402c(param_1,param_2,param_3); + } + else { + FUN_004057c8(local_8,param_3); + } + return local_8; +} + + + +/* @0040402c file=? name=FUN_0040402c */ + +int __cdecl FUN_0040402c(int param_1,char *param_2,char *param_3) + +{ + undefined4 *puVar1; + int iVar2; + + *(undefined4 *)(param_1 + 0x14) = 1; + puVar1 = (undefined4 *)FUN_00402298(0x24); + if (puVar1 == (undefined4 *)0x0) { + iVar2 = 0; + } + else { + iVar2 = FUN_0040567c(puVar1,param_1); + } + FUN_00405704(iVar2,param_2,(int *)(param_1 + 0x10)); + FUN_004057c8(iVar2,param_3); + FUN_00405074(param_1,iVar2); + return iVar2; +} + + + +/* @00404088 file=? name=FUN_00404088 */ + +undefined4 __cdecl FUN_00404088(int param_1,char *param_2,char *param_3,undefined4 *param_4) + +{ + int iVar1; + int local_c; + int *local_8; + + iVar1 = FUN_004050ac(param_1,param_2,(int *)&local_8); + if ((iVar1 != 0) && (iVar1 = FUN_00405868(local_8,param_3,&local_c), iVar1 != 0)) { + *param_4 = *(undefined4 *)(local_c + 8); + return 1; + } + return 0; +} + + + +/* @004040d8 file=? name=FUN_004040d8 */ + +bool __cdecl FUN_004040d8(int param_1,char *param_2,char *param_3,int *param_4) + +{ + int iVar1; + int iVar2; + char *local_8; + + iVar1 = FUN_00404088(param_1,param_2,param_3,&local_8); + if (iVar1 != 0) { + iVar2 = FUN_004dd1e0(local_8); + *param_4 = iVar2; + } + return iVar1 != 0; +} + + + +/* @00404118 file=? name=FUN_00404118 */ + +undefined4 __cdecl FUN_00404118(int param_1,char *param_2,char *param_3,float *param_4) + +{ + int iVar1; + float10 fVar2; + undefined4 local_8; + + iVar1 = FUN_00404088(param_1,param_2,param_3,&local_8); + if (iVar1 != 0) { + fVar2 = (float10)FUN_004dd1cc(local_8); + *param_4 = (float)fVar2; + return 1; + } + return 0; +} + + + +/* @00404154 file=? name=FUN_00404154 */ + +undefined4 __cdecl FUN_00404154(int param_1,char *param_2,char *param_3,double *param_4) + +{ + int iVar1; + float10 fVar2; + undefined4 local_8; + + iVar1 = FUN_00404088(param_1,param_2,param_3,&local_8); + if (iVar1 != 0) { + fVar2 = (float10)FUN_004dd1cc(local_8); + *param_4 = (double)fVar2; + return 1; + } + return 0; +} + + + +/* @00404190 file=? name=FUN_00404190 */ + +undefined4 __cdecl FUN_00404190(int param_1,char *param_2,char *param_3,undefined4 *param_4) + +{ + int iVar1; + undefined4 uVar2; + char *local_8; + + iVar1 = FUN_00404088(param_1,param_2,param_3,&local_8); + if (iVar1 != 0) { + iVar1 = FUN_004d4b58(local_8,&DAT_004e0b6e); + if (((iVar1 == 0) || (iVar1 = FUN_004d4b58(local_8,&DAT_004e0b73), iVar1 == 0)) || + (iVar1 = FUN_004dd1e0(local_8), iVar1 != 0)) { + uVar2 = 1; + } + else { + uVar2 = 0; + } + *param_4 = uVar2; + return 1; + } + return 0; +} + + + +/* @00404204 file=? name=FUN_00404204 */ + +void __cdecl FUN_00404204(int param_1,char *param_2,char *param_3,char *param_4) + +{ + int iVar1; + int *piVar2; + int *local_8; + + *(undefined4 *)(param_1 + 0x14) = 1; + iVar1 = FUN_004050ac(param_1,param_2,(int *)&local_8); + if (iVar1 == 0) { + local_8 = (int *)FUN_0040402c(param_1,param_2,(char *)0x0); + } + piVar2 = (int *)FUN_00402298(0x10); + if (piVar2 != (int *)0x0) { + *piVar2 = 0; + piVar2[2] = 0; + piVar2[1] = 0; + piVar2[3] = 0; + } + FUN_0040548c((int)piVar2,param_3,local_8 + 5); + FUN_00405548((int)piVar2,param_4); + FUN_00405920(local_8,piVar2); + return; +} + + + +/* @00404298 file=? name=FUN_00404298 */ + +void __cdecl FUN_00404298(int param_1,char *param_2,char *param_3,uint param_4) + +{ + int *piVar1; + int local_8c [15]; + int local_4e [18]; + + FUN_004db158(local_8c,0,&DAT_00521410,0xc,2); + piVar1 = FUN_004db78c(local_4e,param_4); + FUN_004d9c58(piVar1); + FUN_00404204(param_1,param_2,param_3,&DAT_00521410); + FUN_004db428(local_8c,2); + return; +} + + + +/* @00404304 file=? name=FUN_00404304 */ + +void __cdecl FUN_00404304(int param_1,char *param_2,char *param_3,float param_4) + +{ + int *piVar1; + int local_90 [15]; + int local_52 [18]; + float local_8; + + FUN_004db158(local_90,0,&DAT_0052141c,0x20,2); + local_8 = param_4; + piVar1 = FUN_004db634(local_52,(float10)param_4); + FUN_004d9c58(piVar1); + FUN_00404204(param_1,param_2,param_3,&DAT_0052141c); + FUN_004db428(local_90,2); + return; +} + + + +/* @0040437c file=? name=FUN_0040437c */ + +void __cdecl +FUN_0040437c(int param_1,char *param_2,char *param_3,undefined4 param_4,undefined4 param_5) + +{ + int *piVar1; + int local_94 [15]; + int local_56 [18]; + undefined4 local_c; + undefined4 uStack_8; + + FUN_004db158(local_94,0,&DAT_0052143c,0x40,2); + local_c = param_4; + uStack_8 = param_5; + piVar1 = FUN_004db634(local_56,(float10)(double)CONCAT44(param_5,param_4)); + FUN_004d9c58(piVar1); + FUN_00404204(param_1,param_2,param_3,&DAT_0052143c); + FUN_004db428(local_94,2); + return; +} + + + +/* @004043f8 file=? name=FUN_004043f8 */ + +void __cdecl FUN_004043f8(int param_1,char *param_2,char *param_3,int param_4) + +{ + int local_8c [15]; + int local_4e [18]; + + FUN_004db158(local_8c,0,&DAT_0052147c,6,2); + if (param_4 == 0) { + FUN_004dbb24(local_4e,s_False_004e0b7c,(char *)0x0); + FUN_004d9c58(local_4e); + } + else { + FUN_004dbb24(local_4e,&DAT_004e0b77,(char *)0x0); + FUN_004d9c58(local_4e); + } + FUN_00404204(param_1,param_2,param_3,&DAT_0052147c); + FUN_004db428(local_8c,2); + return; +} + + + +/* @00404490 file=? name=FUN_00404490 */ + +void __cdecl FUN_00404490(int param_1,char *param_2,char *param_3,char *param_4) + +{ + int iVar1; + undefined4 *puVar2; + int local_8; + + *(undefined4 *)(param_1 + 0x14) = 1; + iVar1 = FUN_004050ac(param_1,param_2,&local_8); + if (iVar1 == 0) { + local_8 = FUN_0040402c(param_1,param_2,(char *)0x0); + } + puVar2 = (undefined4 *)FUN_00402298(0x10); + if (puVar2 != (undefined4 *)0x0) { + *puVar2 = 0; + puVar2[2] = 0; + puVar2[1] = 0; + puVar2[3] = 0; + } + FUN_0040548c((int)puVar2,param_3,(int *)(local_8 + 0x14)); + FUN_00405548((int)puVar2,param_4); + FUN_00405834(local_8,puVar2); + return; +} + + + +/* @00404528 file=? name=FUN_00404528 */ + +void __cdecl FUN_00404528(int param_1,char *param_2,char *param_3,uint param_4) + +{ + int *piVar1; + int local_8c [15]; + int local_4e [18]; + + FUN_004db158(local_8c,0,&DAT_00521482,0xc,2); + piVar1 = FUN_004db78c(local_4e,param_4); + FUN_004d9c58(piVar1); + FUN_00404490(param_1,param_2,param_3,&DAT_00521482); + FUN_004db428(local_8c,2); + return; +} + + + +/* @00404594 file=? name=FUN_00404594 */ + +void __cdecl FUN_00404594(int param_1,char *param_2,char *param_3,float param_4) + +{ + int *piVar1; + int local_90 [15]; + int local_52 [18]; + float local_8; + + FUN_004db158(local_90,0,&DAT_0052148e,0x20,2); + local_8 = param_4; + piVar1 = FUN_004db634(local_52,(float10)param_4); + FUN_004d9c58(piVar1); + FUN_00404490(param_1,param_2,param_3,&DAT_0052148e); + FUN_004db428(local_90,2); + return; +} + + + +/* @0040460c file=? name=FUN_0040460c */ + +void __cdecl +FUN_0040460c(int param_1,char *param_2,char *param_3,undefined4 param_4,undefined4 param_5) + +{ + int *piVar1; + int local_94 [15]; + int local_56 [18]; + undefined4 local_c; + undefined4 uStack_8; + + FUN_004db158(local_94,0,&DAT_005214ae,0x40,2); + local_c = param_4; + uStack_8 = param_5; + piVar1 = FUN_004db634(local_56,(float10)(double)CONCAT44(param_5,param_4)); + FUN_004d9c58(piVar1); + FUN_00404490(param_1,param_2,param_3,&DAT_005214ae); + FUN_004db428(local_94,2); + return; +} + + + +/* @00404688 file=? name=FUN_00404688 */ + +void __cdecl FUN_00404688(int param_1,char *param_2,char *param_3,int param_4) + +{ + int local_8c [15]; + int local_4e [18]; + + FUN_004db158(local_8c,0,&DAT_005214ee,6,2); + if (param_4 == 0) { + FUN_004dbb24(local_4e,s_False_004e0b87,(char *)0x0); + FUN_004d9c58(local_4e); + } + else { + FUN_004dbb24(local_4e,&DAT_004e0b82,(char *)0x0); + FUN_004d9c58(local_4e); + } + FUN_00404490(param_1,param_2,param_3,&DAT_005214ee); + FUN_004db428(local_8c,2); + return; +} + + + +/* @00404720 file=? name=FUN_00404720 */ + +int * __cdecl FUN_00404720(int param_1,char *param_2,char *param_3) + +{ + int iVar1; + int *piVar2; + int local_8; + + iVar1 = FUN_004050ac(param_1,param_2,&local_8); + if (iVar1 == 0) { + piVar2 = (int *)0x0; + } + else { + piVar2 = FUN_00404758(param_1,local_8,param_3); + } + return piVar2; +} + + + +/* @00404758 file=? name=FUN_00404758 */ + +int * __cdecl FUN_00404758(int param_1,int param_2,char *param_3) + +{ + char *pcVar1; + int iVar2; + undefined4 *puVar3; + int *piVar4; + int iVar5; + char *pcVar6; + bool bVar7; + + pcVar6 = param_3; + if (param_3 == (char *)0x0) { + pcVar6 = &DAT_004e0b8d; + } + iVar2 = FUN_004d4a78(pcVar6); + puVar3 = (undefined4 *)FUN_00402298(0xc); + if (puVar3 == (undefined4 *)0x0) { + piVar4 = (int *)0x0; + } + else { + piVar4 = FUN_00403c74(puVar3); + } + for (puVar3 = *(undefined4 **)(param_2 + 8); puVar3 != (undefined4 *)0x0; + puVar3 = (undefined4 *)*puVar3) { + pcVar1 = (char *)puVar3[1]; + if (pcVar1 == (char *)0x0) { + bVar7 = param_3 == (char *)0x0; + } + else if ((*(byte *)(param_1 + 0x1c) & 0x10) == 0) { + iVar5 = FUN_004d4ae0(pcVar1,pcVar6,iVar2); + bVar7 = iVar5 == 0; + } + else { + iVar5 = FUN_004d4bec(pcVar1,pcVar6,iVar2); + bVar7 = iVar5 == 0; + } + if ((*(byte *)(param_1 + 0x1c) & 4) == 0) { + if (pcVar1 == (char *)0x0) { + if ((*(byte *)(param_1 + 0x1c) & 1) == 0) { + bVar7 = false; + } + else { + bVar7 = false; + } + } + } + else if ((puVar3[3] == 0) || (!bVar7)) { + bVar7 = false; + } + else { + bVar7 = true; + } + if (bVar7) { + (**(code **)(*piVar4 + 4))(piVar4,pcVar1,puVar3[2]); + } + } + return piVar4; +} + + + +/* @0040485c file=? name=FUN_0040485c */ + +int * __cdecl FUN_0040485c(int param_1,char *param_2) + +{ + int iVar1; + char *pcVar2; + int iVar3; + undefined4 *puVar4; + int *piVar5; + int iVar6; + char *pcVar7; + bool bVar8; + + pcVar7 = param_2; + if (param_2 == (char *)0x0) { + pcVar7 = &DAT_004e0b8f; + } + iVar3 = FUN_004d4a78(pcVar7); + puVar4 = (undefined4 *)FUN_00402298(0xc); + if (puVar4 == (undefined4 *)0x0) { + piVar5 = (int *)0x0; + } + else { + piVar5 = FUN_00403c74(puVar4); + } + for (iVar1 = *(int *)(param_1 + 4); iVar1 != 0; iVar1 = *(int *)(iVar1 + 4)) { + pcVar2 = *(char **)(iVar1 + 0x18); + if (pcVar2 == (char *)0x0) { + bVar8 = param_2 == (char *)0x0; + } + else if ((*(byte *)(param_1 + 0x1c) & 8) == 0) { + iVar6 = FUN_004d4ae0(pcVar2,pcVar7,iVar3); + bVar8 = iVar6 == 0; + } + else { + iVar6 = FUN_004d4bec(pcVar2,pcVar7,iVar3); + bVar8 = iVar6 == 0; + } + if ((*(byte *)(param_1 + 0x1c) & 2) == 0) { + if (pcVar2 == (char *)0x0) { + if ((*(byte *)(param_1 + 0x1c) & 1) == 0) { + bVar8 = false; + } + else { + bVar8 = false; + } + } + } + else if ((*(int *)(iVar1 + 0x20) == 0) || (!bVar8)) { + bVar8 = false; + } + else { + bVar8 = true; + } + if (bVar8) { + (**(code **)(*piVar5 + 4))(piVar5,pcVar2,iVar1); + } + } + return piVar5; +} + + + +/* @00404954 file=? name=FUN_00404954 */ + +int * __cdecl FUN_00404954(int param_1,char *param_2,char *param_3) + +{ + int iVar1; + int *piVar2; + int local_8; + + iVar1 = FUN_004050ac(param_1,param_2,&local_8); + if (iVar1 == 0) { + piVar2 = (int *)0x0; + } + else { + piVar2 = FUN_0040498c(param_1,local_8,param_3); + } + return piVar2; +} + + + +/* @0040498c file=? name=FUN_0040498c */ + +int * __cdecl FUN_0040498c(int param_1,int param_2,char *param_3) + +{ + char *pcVar1; + int iVar2; + undefined4 *puVar3; + int *piVar4; + int iVar5; + char *pcVar6; + bool bVar7; + + pcVar6 = param_3; + if (param_3 == (char *)0x0) { + pcVar6 = &DAT_004e0b91; + } + iVar2 = FUN_004d4a78(pcVar6); + puVar3 = (undefined4 *)FUN_00402298(0xc); + if (puVar3 == (undefined4 *)0x0) { + piVar4 = (int *)0x0; + } + else { + piVar4 = FUN_00403db0(puVar3); + } + for (puVar3 = *(undefined4 **)(param_2 + 8); puVar3 != (undefined4 *)0x0; + puVar3 = (undefined4 *)*puVar3) { + pcVar1 = (char *)puVar3[1]; + if (pcVar1 == (char *)0x0) { + bVar7 = param_3 == (char *)0x0; + } + else if ((*(byte *)(param_1 + 0x1c) & 0x10) == 0) { + iVar5 = FUN_004d4ae0(pcVar1,pcVar6,iVar2); + bVar7 = iVar5 == 0; + } + else { + iVar5 = FUN_004d4bec(pcVar1,pcVar6,iVar2); + bVar7 = iVar5 == 0; + } + if ((*(byte *)(param_1 + 0x1c) & 4) == 0) { + if (pcVar1 == (char *)0x0) { + if ((*(byte *)(param_1 + 0x1c) & 1) == 0) { + bVar7 = false; + } + else { + bVar7 = false; + } + } + } + else if ((puVar3[3] == 0) || (!bVar7)) { + bVar7 = false; + } + else { + bVar7 = true; + } + if (bVar7) { + (**(code **)(*piVar4 + 4))(piVar4,pcVar1,puVar3[2]); + } + } + return piVar4; +} + + + +/* @00404a90 file=? name=FUN_00404a90 */ + +int * __cdecl FUN_00404a90(int param_1,char *param_2) + +{ + int iVar1; + char *pcVar2; + int iVar3; + undefined4 *puVar4; + int *piVar5; + int iVar6; + char *pcVar7; + bool bVar8; + + pcVar7 = param_2; + if (param_2 == (char *)0x0) { + pcVar7 = &DAT_004e0b93; + } + iVar3 = FUN_004d4a78(pcVar7); + puVar4 = (undefined4 *)FUN_00402298(0xc); + if (puVar4 == (undefined4 *)0x0) { + piVar5 = (int *)0x0; + } + else { + piVar5 = FUN_00403db0(puVar4); + } + for (iVar1 = *(int *)(param_1 + 4); iVar1 != 0; iVar1 = *(int *)(iVar1 + 4)) { + pcVar2 = *(char **)(iVar1 + 0x18); + if (pcVar2 == (char *)0x0) { + bVar8 = param_2 == (char *)0x0; + } + else if ((*(byte *)(param_1 + 0x1c) & 8) == 0) { + iVar6 = FUN_004d4ae0(pcVar2,pcVar7,iVar3); + bVar8 = iVar6 == 0; + } + else { + iVar6 = FUN_004d4bec(pcVar2,pcVar7,iVar3); + bVar8 = iVar6 == 0; + } + if ((*(byte *)(param_1 + 0x1c) & 2) == 0) { + if (pcVar2 == (char *)0x0) { + if ((*(byte *)(param_1 + 0x1c) & 1) == 0) { + bVar8 = false; + } + else { + bVar8 = false; + } + } + } + else if ((*(int *)(iVar1 + 0x20) == 0) || (!bVar8)) { + bVar8 = false; + } + else { + bVar8 = true; + } + if (bVar8) { + (**(code **)(*piVar5 + 4))(piVar5,pcVar2,iVar1); + } + } + return piVar5; +} + + + +/* @00404b88 file=? name=FUN_00404b88 */ + +void __cdecl FUN_00404b88(int param_1,char *param_2,char *param_3) + +{ + int iVar1; + int *local_8; + + iVar1 = FUN_004050ac(param_1,param_2,(int *)&local_8); + if (iVar1 != 0) { + *(undefined4 *)(param_1 + 0x14) = 1; + FUN_00405988(local_8,param_3); + } + return; +} + + + +/* @00404bc0 file=? name=FUN_00404bc0 */ + +void __cdecl FUN_00404bc0(int param_1,char *param_2) + +{ + int iVar1; + int local_c; + int *local_8; + + iVar1 = FUN_00405190(param_1,param_2,(int *)&local_8,&local_c); + if (iVar1 != 0) { + FUN_00405224(param_1,local_8,local_c); + } + return; +} + + + +/* @00404bfc file=? name=FUN_00404bfc */ + +void __cdecl FUN_00404bfc(int *param_1,char *param_2) + +{ + char cVar1; + int iVar2; + int iVar3; + int *piVar4; + uint uVar5; + uint uVar6; + char *pcVar7; + char *pcVar8; + char local_294 [512]; + int local_94 [17]; + int local_50 [19]; + + FUN_004da66c(local_94,0,param_2,1,DAT_00520540); + iVar2 = param_1[3]; + if (*param_1 == 0) { + iVar3 = FUN_004d4a78(param_2); + iVar3 = FUN_004022b0(iVar3 + 1); + *param_1 = iVar3; + uVar5 = 0xffffffff; + do { + pcVar7 = param_2; + if (uVar5 == 0) break; + uVar5 = uVar5 - 1; + pcVar7 = param_2 + 1; + cVar1 = *param_2; + param_2 = pcVar7; + } while (cVar1 != '\0'); + uVar5 = ~uVar5; + pcVar7 = pcVar7 + -uVar5; + pcVar8 = (char *)*param_1; + for (uVar6 = uVar5 >> 2; uVar6 != 0; uVar6 = uVar6 - 1) { + *(undefined4 *)pcVar8 = *(undefined4 *)pcVar7; + pcVar7 = pcVar7 + 4; + pcVar8 = pcVar8 + 4; + } + for (uVar5 = uVar5 & 3; uVar5 != 0; uVar5 = uVar5 - 1) { + *pcVar8 = *pcVar7; + pcVar7 = pcVar7 + 1; + pcVar8 = pcVar8 + 1; + } + } + if ((*(byte *)(local_94[0] + 0xc) & 0x86) != 0) { + local_94[0] = 0; + } + if (local_94[0] != 0) { + while( true ) { + piVar4 = FUN_004dad10(local_50,local_294,0x200,10); + iVar3 = *piVar4; + if ((*(byte *)(iVar3 + 0xc) & 0x86) != 0) { + iVar3 = 0; + } + if (iVar3 == 0) break; + FUN_0040527c((int)param_1,local_294); + } + FUN_004da44c(local_94); + FUN_0040527c((int)param_1,(char *)0x0); + } + if (iVar2 == 0) { + param_1[5] = 0; + } + FUN_004da754(local_94,2); + return; +} + + + +/* @00404d00 file=? name=FUN_00404d00 */ + +void __cdecl FUN_00404d00(int param_1,char *param_2,int param_3) + +{ + int iVar1; + char *pcVar2; + char *pcVar3; + + iVar1 = *(int *)(param_1 + 0xc); + pcVar3 = param_2 + param_3; + while (param_2 < pcVar3) { + pcVar2 = FUN_004d49f4(param_2,'\0'); + FUN_0040527c(param_1,param_2); + param_2 = pcVar2 + 1; + } + FUN_0040527c(param_1,(char *)0x0); + if (iVar1 == 0) { + *(undefined4 *)(param_1 + 0x14) = 0; + } + return; +} + + + +/* @00404d6c file=? name=FUN_00404d6c */ + +undefined4 __cdecl FUN_00404d6c(undefined4 *param_1,char *param_2) + +{ + char cVar1; + LPCSTR pCVar2; + int iVar3; + char *pcVar4; + uint uVar5; + uint uVar6; + char *pcVar7; + undefined4 uVar8; + int local_90 [17]; + int local_4c [18]; + + FUN_004db014(local_90,0); + if ((param_2 == (char *)0x0) || (*param_2 == '\0')) { + pCVar2 = (LPCSTR)*param_1; + if ((pCVar2 == (LPCSTR)0x0) || (*pCVar2 == '\0')) { + uVar8 = 0; + FUN_004db0ec(local_90,2); + return uVar8; + } + FUN_004da5f8(local_90,pCVar2,2,DAT_00520540); + } + else { + FUN_004da5f8(local_90,param_2,2,DAT_00520540); + } + if ((*(byte *)(local_90[0] + 0xc) & 0x86) != 0) { + local_90[0] = 0; + } + if (local_90[0] == 0) { + uVar8 = 0; + FUN_004db0ec(local_90,2); + } + else { + FUN_00405400((int)param_1,local_4c,1); + FUN_004da44c(local_90); + if ((param_2 != (char *)0x0) && (*param_2 != '\0')) { + if ((int *)*param_1 != (int *)0x0) { + FUN_004022d0((int *)*param_1); + } + iVar3 = FUN_004d4a78(param_2); + pcVar4 = (char *)FUN_004022b0(iVar3 + 1); + *param_1 = pcVar4; + uVar5 = 0xffffffff; + do { + pcVar7 = param_2; + if (uVar5 == 0) break; + uVar5 = uVar5 - 1; + pcVar7 = param_2 + 1; + cVar1 = *param_2; + param_2 = pcVar7; + } while (cVar1 != '\0'); + uVar5 = ~uVar5; + pcVar7 = pcVar7 + -uVar5; + for (uVar6 = uVar5 >> 2; uVar6 != 0; uVar6 = uVar6 - 1) { + *(undefined4 *)pcVar4 = *(undefined4 *)pcVar7; + pcVar7 = pcVar7 + 4; + pcVar4 = pcVar4 + 4; + } + for (uVar5 = uVar5 & 3; uVar5 != 0; uVar5 = uVar5 - 1) { + *pcVar4 = *pcVar7; + pcVar7 = pcVar7 + 1; + pcVar4 = pcVar4 + 1; + } + } + param_1[5] = 0; + uVar8 = 1; + FUN_004db0ec(local_90,2); + } + return uVar8; +} + + + +/* @00404eb8 file=? name=FUN_00404eb8 */ + +int __cdecl FUN_00404eb8(int param_1) + +{ + int iVar1; + int local_90 [17]; + int local_4c [18]; + + FUN_004db014(local_90,0); + iVar1 = FUN_00405400(param_1,local_4c,0); + FUN_004db0ec(local_90,2); + return iVar1; +} + + + +/* @00404f00 file=? name=FUN_00404f00 */ + +int __cdecl FUN_00404f00(int param_1,char *param_2,int param_3) + +{ + int iVar1; + int local_8c [15]; + int local_4e [18]; + + FUN_004db158(local_8c,0,param_2,param_3,2); + iVar1 = FUN_00405400(param_1,local_4e,2); + if (param_3 < iVar1) { + iVar1 = -1; + FUN_004db428(local_8c,2); + } + else { + *(undefined4 *)(param_1 + 0x14) = 0; + FUN_004db428(local_8c,2); + } + return iVar1; +} + + + +/* @00404f78 file=? name=FUN_00404f78 */ + +void __cdecl FUN_00404f78(int *param_1) + +{ + int *piVar1; + int iVar2; + int local_24 [8]; + + param_1[5] = 0; + FUN_00403ecc(param_1,2); + piVar1 = FUN_00403e84(local_24,(char *)0x0,1); + for (iVar2 = 8; iVar2 != 0; iVar2 = iVar2 + -1) { + *param_1 = *piVar1; + piVar1 = piVar1 + 1; + param_1 = param_1 + 1; + } + FUN_00403ecc(local_24,2); + return; +} + + + +/* @00404fc4 file=? name=FUN_00404fc4 */ + +void __cdecl FUN_00404fc4(int param_1) + +{ + char *pcVar1; + int *piVar2; + int *piVar3; + char *pcVar4; + char *pcVar5; + bool bVar6; + int *local_8; + + local_8 = (int *)0x0; + piVar2 = *(int **)(param_1 + 4); +joined_r0x00404fd8: + do { + do { + piVar3 = local_8; + local_8 = piVar2; + if (local_8 == (int *)0x0) { + return; + } + piVar2 = (int *)local_8[1]; + pcVar4 = (char *)local_8[6]; + } while (*pcVar4 == '_'); + pcVar5 = s_LAB_ONLY_004e0b95; + do { + bVar6 = *pcVar4 == *pcVar5; + if (!bVar6) break; + if (*pcVar4 == '\0') goto joined_r0x00404fd8; + pcVar1 = pcVar4 + 1; + bVar6 = *pcVar1 == pcVar5[1]; + if (!bVar6) break; + pcVar4 = pcVar4 + 2; + pcVar5 = pcVar5 + 2; + bVar6 = *pcVar1 == '\0'; + } while (!bVar6); + if (!bVar6) { + FUN_00405224(param_1,local_8,(int)piVar3); + local_8 = piVar3; + } + } while( true ); +} + + + +/* @00405030 file=? name=FUN_00405030 */ + +void __cdecl FUN_00405030(int param_1) + +{ + int iVar1; + + iVar1 = FUN_00403f84(param_1,s_LAB_ONLY_004e0b9e); + if (iVar1 == 0) { + FUN_00403fdc(param_1,s_LAB_ONLY_004e0ba7,s____this_file_has_not_been_approv_004e0bb0); + FUN_00404490(param_1,s_LAB_ONLY_004e0be0,(char *)0x0,(char *)0x0); + } + return; +} + + + +/* @00405074 file=? name=FUN_00405074 */ + +void __cdecl FUN_00405074(int param_1,int param_2) + +{ + if (*(int *)(param_1 + 8) == 0) { + *(int *)(param_1 + 4) = param_2; + } + else { + *(int *)(*(int *)(param_1 + 8) + 4) = param_2; + } + *(int *)(param_1 + 8) = param_2; + *(undefined4 *)(param_2 + 4) = 0; + if (*(int *)(param_2 + 0x20) != 0) { + *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1; + } + *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + 1; + return; +} + + + +/* @004050ac file=? name=FUN_004050ac */ + +undefined4 __cdecl FUN_004050ac(int param_1,char *param_2,int *param_3) + +{ + char *pcVar1; + int iVar2; + char *pcVar3; + int iVar4; + char *pcVar5; + bool bVar6; + + if ((*(int *)(param_1 + 0x18) != 0) && (*(int *)(*(int *)(param_1 + 0x18) + 0x18) != 0)) { + if (((*(byte *)(param_1 + 0x1c) & 8) != 0) && + (iVar2 = FUN_004d4b58(*(char **)(*(int *)(param_1 + 0x18) + 0x18),param_2), iVar2 == 0)) { +LAB_0040510c: + *param_3 = *(int *)(param_1 + 0x18); + return 1; + } + if ((*(byte *)(param_1 + 0x1c) & 8) == 0) { + pcVar3 = *(char **)(*(int *)(param_1 + 0x18) + 0x18); + pcVar5 = param_2; + do { + if (*pcVar3 != *pcVar5) goto LAB_0040511b; + bVar6 = true; + if (*pcVar3 == '\0') break; + pcVar1 = pcVar3 + 1; + if (*pcVar1 != pcVar5[1]) goto LAB_0040511b; + pcVar3 = pcVar3 + 2; + pcVar5 = pcVar5 + 2; + bVar6 = *pcVar1 == '\0'; + } while (!bVar6); + if (bVar6) goto LAB_0040510c; + } + } +LAB_0040511b: + iVar2 = *(int *)(param_1 + 4); + do { + if (iVar2 == 0) { + *param_3 = 0; + return 0; + } + if (*(int *)(iVar2 + 0x18) != 0) { + if (((*(byte *)(param_1 + 0x1c) & 8) != 0) && + (iVar4 = FUN_004d4b58(*(char **)(iVar2 + 0x18),param_2), iVar4 == 0)) { +LAB_00405169: + *(int *)(param_1 + 0x18) = iVar2; + *param_3 = iVar2; + return 1; + } + if ((*(byte *)(param_1 + 0x1c) & 8) == 0) { + pcVar3 = *(char **)(iVar2 + 0x18); + pcVar5 = param_2; + do { + if (*pcVar3 != *pcVar5) goto LAB_00405178; + bVar6 = true; + if (*pcVar3 == '\0') break; + pcVar1 = pcVar3 + 1; + if (*pcVar1 != pcVar5[1]) goto LAB_00405178; + pcVar3 = pcVar3 + 2; + pcVar5 = pcVar5 + 2; + bVar6 = *pcVar1 == '\0'; + } while (!bVar6); + if (bVar6) goto LAB_00405169; + } + } +LAB_00405178: + iVar2 = *(int *)(iVar2 + 4); + } while( true ); +} + + + +/* @00405190 file=? name=FUN_00405190 */ + +undefined4 __cdecl FUN_00405190(int param_1,char *param_2,int *param_3,int *param_4) + +{ + char *pcVar1; + int iVar2; + int iVar3; + char *pcVar4; + char *pcVar5; + bool bVar6; + int local_8; + + local_8 = 0; + iVar3 = *(int *)(param_1 + 4); + do { + iVar2 = iVar3; + if (iVar2 == 0) { + *param_4 = 0; + *param_3 = 0; + return 0; + } + if (*(int *)(iVar2 + 0x18) != 0) { + if (((*(byte *)(param_1 + 0x1c) & 8) != 0) && + (iVar3 = FUN_004d4b58(*(char **)(iVar2 + 0x18),param_2), iVar3 == 0)) { +LAB_004051f0: + *param_3 = iVar2; + *param_4 = local_8; + return 1; + } + if ((*(byte *)(param_1 + 0x1c) & 8) == 0) { + pcVar4 = *(char **)(iVar2 + 0x18); + pcVar5 = param_2; + do { + if (*pcVar4 != *pcVar5) goto LAB_00405204; + bVar6 = true; + if (*pcVar4 == '\0') break; + pcVar1 = pcVar4 + 1; + if (*pcVar1 != pcVar5[1]) goto LAB_00405204; + pcVar4 = pcVar4 + 2; + pcVar5 = pcVar5 + 2; + bVar6 = *pcVar1 == '\0'; + } while (!bVar6); + if (bVar6) goto LAB_004051f0; + } + } +LAB_00405204: + iVar3 = *(int *)(iVar2 + 4); + local_8 = iVar2; + } while( true ); +} + + + +/* @00405224 file=? name=FUN_00405224 */ + +void __cdecl FUN_00405224(int param_1,int *param_2,int param_3) + +{ + *(undefined4 *)(param_1 + 0x14) = 1; + if (param_3 == 0) { + *(int *)(param_1 + 4) = param_2[1]; + } + else { + *(int *)(param_3 + 4) = param_2[1]; + } + if (param_2 == *(int **)(param_1 + 8)) { + *(int *)(param_1 + 8) = param_3; + } + if (param_2 == *(int **)(param_1 + 0x18)) { + *(undefined4 *)(param_1 + 0x18) = 0; + } + if (param_2[8] != 0) { + *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + -1; + } + *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + -1; + FUN_004056ac(param_2,3); + return; +} + + + +/* @0040527c file=? name=FUN_0040527c */ + +void __cdecl FUN_0040527c(int param_1,char *param_2) + +{ + bool bVar1; + char *pcVar2; + undefined4 *puVar3; + char *local_8; + + if (param_2 == (char *)0x0) { + DAT_004e0b34 = 0; + } + else { + for (; (*param_2 == ' ' || (*param_2 == '\t')); param_2 = param_2 + 1) { + } + if (*param_2 == '[') { + pcVar2 = FUN_004d49f4(param_2 + 1,']'); + if (pcVar2 != (char *)0x0) { + *pcVar2 = '\0'; + pcVar2 = pcVar2 + 1; + } + DAT_004e0b34 = FUN_0040402c(param_1,param_2 + 1,pcVar2); + } + else { + if (((*param_2 == ';') || (*param_2 == '#')) || ((*param_2 == '/' && (param_2[1] == '/')))) { + bVar1 = true; + } + else { + bVar1 = false; + } + local_8 = FUN_004d49f4(param_2,'='); + if (local_8 == (char *)0x0) { + local_8 = (char *)0x0; + } + else { + *local_8 = '\0'; + local_8 = local_8 + 1; + } + if (*param_2 == '\0') { + param_2 = (char *)0x0; + } + if ((param_2 != (char *)0x0) && (!bVar1)) { + pcVar2 = FUN_004d49f4(param_2,'\0'); + pcVar2 = pcVar2 + -1; + do { + if ((*pcVar2 != ' ') && (*pcVar2 != '\t')) break; + *pcVar2 = '\0'; + pcVar2 = pcVar2 + -1; + } while (param_2 <= pcVar2); + } + if (DAT_004e0b34 == 0) { + puVar3 = (undefined4 *)FUN_00402298(0x24); + if (puVar3 == (undefined4 *)0x0) { + DAT_004e0b34 = 0; + } + else { + DAT_004e0b34 = FUN_0040567c(puVar3,param_1); + } + FUN_00405074(param_1,DAT_004e0b34); + } + puVar3 = (undefined4 *)FUN_00402298(0x10); + if (puVar3 != (undefined4 *)0x0) { + *puVar3 = 0; + puVar3[2] = 0; + puVar3[1] = 0; + puVar3[3] = 0; + } + FUN_0040548c((int)puVar3,param_2,(int *)(DAT_004e0b34 + 0x14)); + FUN_00405548((int)puVar3,local_8); + FUN_00405834(DAT_004e0b34,puVar3); + } + } + return; +} + + + +/* @00405400 file=? name=FUN_00405400 */ + +int __cdecl FUN_00405400(int param_1,int *param_2,int param_3) + +{ + int iVar1; + int iVar2; + int iVar3; + + iVar3 = 0; + for (iVar1 = *(int *)(param_1 + 4); iVar1 != 0; iVar1 = *(int *)(iVar1 + 4)) { + iVar2 = FUN_004059fc(iVar1,param_2,param_3); + iVar3 = iVar3 + iVar2; + } + return iVar3; +} + + + +/* @00405434 file=? name=FUN_00405434 */ + +undefined4 FUN_00405434(void) + +{ + return 1; +} + + + +/* @00405454 file=? name=FUN_00405454 */ + +void __cdecl FUN_00405454(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + if ((int *)param_1[1] != (int *)0x0) { + FUN_004022d0((int *)param_1[1]); + } + if ((int *)param_1[2] != (int *)0x0) { + FUN_004022d0((int *)param_1[2]); + } + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0040548c file=? name=FUN_0040548c */ + +void __cdecl FUN_0040548c(int param_1,char *param_2,int *param_3) + +{ + char cVar1; + bool bVar2; + int iVar3; + char *pcVar4; + undefined4 uVar5; + uint uVar6; + uint uVar7; + char *pcVar8; + + if (*(int *)(param_1 + 4) != 0) { + if (*(int *)(param_1 + 0xc) != 0) { + *(undefined4 *)(param_1 + 0xc) = 0; + *param_3 = *param_3 + -1; + } + FUN_004022d0(*(int **)(param_1 + 4)); + } + if (param_2 == (char *)0x0) { + *(undefined4 *)(param_1 + 4) = 0; + return; + } + iVar3 = FUN_004d4a78(param_2); + pcVar4 = (char *)FUN_004022b0(iVar3 + 1); + *(char **)(param_1 + 4) = pcVar4; + uVar6 = 0xffffffff; + do { + pcVar8 = param_2; + if (uVar6 == 0) break; + uVar6 = uVar6 - 1; + pcVar8 = param_2 + 1; + cVar1 = *param_2; + param_2 = pcVar8; + } while (cVar1 != '\0'); + uVar6 = ~uVar6; + pcVar8 = pcVar8 + -uVar6; + for (uVar7 = uVar6 >> 2; uVar7 != 0; uVar7 = uVar7 - 1) { + *(undefined4 *)pcVar4 = *(undefined4 *)pcVar8; + pcVar8 = pcVar8 + 4; + pcVar4 = pcVar4 + 4; + } + for (uVar6 = uVar6 & 3; uVar6 != 0; uVar6 = uVar6 - 1) { + *pcVar4 = *pcVar8; + pcVar8 = pcVar8 + 1; + pcVar4 = pcVar4 + 1; + } + pcVar4 = *(char **)(param_1 + 4); + if (*pcVar4 != '\0') { + if (((*pcVar4 == ';') || (*pcVar4 == '#')) || ((*pcVar4 == '/' && (pcVar4[1] == '/')))) { + bVar2 = true; + } + else { + bVar2 = false; + } + if (!bVar2) { + uVar5 = 1; + goto LAB_00405538; + } + } + uVar5 = 0; +LAB_00405538: + *(undefined4 *)(param_1 + 0xc) = uVar5; + return; +} + + + +/* @00405548 file=? name=FUN_00405548 */ + +char * __cdecl FUN_00405548(int param_1,char *param_2) + +{ + char cVar1; + int iVar2; + char *pcVar3; + uint uVar4; + uint uVar5; + char *pcVar6; + char *pcVar7; + + if (*(int **)(param_1 + 8) != (int *)0x0) { + FUN_004022d0(*(int **)(param_1 + 8)); + } + if (param_2 == (char *)0x0) { + pcVar3 = (char *)0x0; + *(undefined4 *)(param_1 + 8) = 0; + } + else { + iVar2 = FUN_004d4a78(param_2); + pcVar3 = (char *)FUN_004022b0(iVar2 + 1); + *(char **)(param_1 + 8) = pcVar3; + uVar4 = 0xffffffff; + do { + pcVar6 = param_2; + if (uVar4 == 0) break; + uVar4 = uVar4 - 1; + pcVar6 = param_2 + 1; + cVar1 = *param_2; + param_2 = pcVar6; + } while (cVar1 != '\0'); + uVar4 = ~uVar4; + pcVar6 = pcVar6 + -uVar4; + pcVar7 = pcVar3; + for (uVar5 = uVar4 >> 2; uVar5 != 0; uVar5 = uVar5 - 1) { + *(undefined4 *)pcVar7 = *(undefined4 *)pcVar6; + pcVar6 = pcVar6 + 4; + pcVar7 = pcVar7 + 4; + } + for (uVar4 = uVar4 & 3; uVar4 != 0; uVar4 = uVar4 - 1) { + *pcVar7 = *pcVar6; + pcVar6 = pcVar6 + 1; + pcVar7 = pcVar7 + 1; + } + } + return pcVar3; +} + + + +/* @004055b0 file=? name=FUN_004055b0 */ + +int __cdecl FUN_004055b0(int param_1,int *param_2,int param_3) + +{ + char *pcVar1; + int iVar2; + int iVar3; + + iVar3 = 0; + if (*(char **)(param_1 + 4) != (char *)0x0) { + if (param_3 != 0) { + FUN_004dbb24(param_2,*(char **)(param_1 + 4),(char *)0x0); + } + if (param_3 != 1) { + iVar3 = FUN_004d4a78(*(char **)(param_1 + 4)); + } + } + pcVar1 = *(char **)(param_1 + 8); + if (pcVar1 != (char *)0x0) { + if (param_3 != 0) { + FUN_004dbb24(param_2,&DAT_004e0be9,(char *)0x0); + FUN_004dbb24(param_2,pcVar1,(char *)0x0); + } + if (param_3 != 1) { + iVar2 = FUN_004d4a78(*(char **)(param_1 + 8)); + iVar3 = iVar2 + iVar3 + 1; + } + } + if (param_3 == 1) { + FUN_004d9c38(param_2); + } + else if (param_3 != 0) { + FUN_004d9c58(param_2); + } + if (param_3 != 1) { + iVar3 = iVar3 + 1; + } + return iVar3; +} + + + +/* @00405660 file=? name=FUN_00405660 */ + +undefined4 FUN_00405660(void) + +{ + return 1; +} + + + +/* @0040567c file=? name=FUN_0040567c */ + +void __cdecl FUN_0040567c(undefined4 *param_1,undefined4 param_2) + +{ + *param_1 = param_2; + param_1[1] = 0; + param_1[3] = 0; + param_1[2] = 0; + param_1[5] = 0; + param_1[4] = 0; + param_1[7] = 0; + param_1[6] = 0; + param_1[8] = 0; + return; +} + + + +/* @004056ac file=? name=FUN_004056ac */ + +void __cdecl FUN_004056ac(int *param_1,byte param_2) + +{ + int *piVar1; + + if (param_1 != (int *)0x0) { + piVar1 = (int *)param_1[2]; + while (piVar1 != (int *)0x0) { + param_1[2] = *piVar1; + FUN_00405454(piVar1,3); + piVar1 = (int *)param_1[2]; + } + if ((int *)param_1[6] != (int *)0x0) { + FUN_004022d0((int *)param_1[6]); + } + if ((int *)param_1[7] != (int *)0x0) { + FUN_004022d0((int *)param_1[7]); + } + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00405704 file=? name=FUN_00405704 */ + +void __cdecl FUN_00405704(int param_1,char *param_2,int *param_3) + +{ + char *pcVar1; + char cVar2; + int iVar3; + char *pcVar4; + undefined4 uVar5; + uint uVar6; + uint uVar7; + char *pcVar8; + bool bVar9; + + if (*(int *)(param_1 + 0x18) != 0) { + if (*(int *)(param_1 + 0x20) != 0) { + *(undefined4 *)(param_1 + 0x20) = 0; + *param_3 = *param_3 + -1; + } + FUN_004022d0(*(int **)(param_1 + 0x18)); + } + if (param_2 == (char *)0x0) { + *(undefined4 *)(param_1 + 0x18) = 0; + return; + } + iVar3 = FUN_004d4a78(param_2); + pcVar4 = (char *)FUN_004022b0(iVar3 + 1); + *(char **)(param_1 + 0x18) = pcVar4; + uVar6 = 0xffffffff; + do { + pcVar8 = param_2; + if (uVar6 == 0) break; + uVar6 = uVar6 - 1; + pcVar8 = param_2 + 1; + cVar2 = *param_2; + param_2 = pcVar8; + } while (cVar2 != '\0'); + uVar6 = ~uVar6; + pcVar8 = pcVar8 + -uVar6; + for (uVar7 = uVar6 >> 2; uVar7 != 0; uVar7 = uVar7 - 1) { + *(undefined4 *)pcVar4 = *(undefined4 *)pcVar8; + pcVar8 = pcVar8 + 4; + pcVar4 = pcVar4 + 4; + } + for (uVar6 = uVar6 & 3; uVar6 != 0; uVar6 = uVar6 - 1) { + *pcVar4 = *pcVar8; + pcVar8 = pcVar8 + 1; + pcVar4 = pcVar4 + 1; + } + pcVar4 = *(char **)(param_1 + 0x18); + if ((*pcVar4 != '\0') && (**(char **)(param_1 + 0x18) != '!')) { + pcVar8 = s_LAB_ONLY_004e0beb; + do { + if (*pcVar4 != *pcVar8) goto LAB_004057b2; + bVar9 = true; + if (*pcVar4 == '\0') break; + pcVar1 = pcVar4 + 1; + if (*pcVar1 != pcVar8[1]) goto LAB_004057b2; + pcVar4 = pcVar4 + 2; + pcVar8 = pcVar8 + 2; + bVar9 = *pcVar1 == '\0'; + } while (!bVar9); + if (!bVar9) { +LAB_004057b2: + uVar5 = 1; + goto LAB_004057b7; + } + } + uVar5 = 0; +LAB_004057b7: + *(undefined4 *)(param_1 + 0x20) = uVar5; + return; +} + + + +/* @004057c8 file=? name=FUN_004057c8 */ + +char * __cdecl FUN_004057c8(int param_1,char *param_2) + +{ + char cVar1; + int iVar2; + char *pcVar3; + uint uVar4; + uint uVar5; + char *pcVar6; + char *pcVar7; + + if (*(int **)(param_1 + 0x1c) != (int *)0x0) { + FUN_004022d0(*(int **)(param_1 + 0x1c)); + } + if ((param_2 == (char *)0x0) || (*param_2 == '\0')) { + pcVar3 = (char *)0x0; + *(undefined4 *)(param_1 + 0x1c) = 0; + } + else { + iVar2 = FUN_004d4a78(param_2); + pcVar3 = (char *)FUN_004022b0(iVar2 + 1); + *(char **)(param_1 + 0x1c) = pcVar3; + uVar4 = 0xffffffff; + do { + pcVar6 = param_2; + if (uVar4 == 0) break; + uVar4 = uVar4 - 1; + pcVar6 = param_2 + 1; + cVar1 = *param_2; + param_2 = pcVar6; + } while (cVar1 != '\0'); + uVar4 = ~uVar4; + pcVar6 = pcVar6 + -uVar4; + pcVar7 = pcVar3; + for (uVar5 = uVar4 >> 2; uVar5 != 0; uVar5 = uVar5 - 1) { + *(undefined4 *)pcVar7 = *(undefined4 *)pcVar6; + pcVar6 = pcVar6 + 4; + pcVar7 = pcVar7 + 4; + } + for (uVar4 = uVar4 & 3; uVar4 != 0; uVar4 = uVar4 - 1) { + *pcVar7 = *pcVar6; + pcVar6 = pcVar6 + 1; + pcVar7 = pcVar7 + 1; + } + } + return pcVar3; +} + + + +/* @00405834 file=? name=FUN_00405834 */ + +void __cdecl FUN_00405834(int param_1,undefined4 *param_2) + +{ + if (*(int *)(param_1 + 0xc) == 0) { + *(undefined4 **)(param_1 + 8) = param_2; + } + else { + **(undefined4 **)(param_1 + 0xc) = param_2; + } + *(undefined4 **)(param_1 + 0xc) = param_2; + *param_2 = 0; + if (param_2[3] != 0) { + *(int *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + 1; + } + *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1; + return; +} + + + +/* @00405868 file=? name=FUN_00405868 */ + +void __cdecl FUN_00405868(int *param_1,char *param_2,undefined4 *param_3) + +{ + undefined4 local_8; + + FUN_00405888(param_1,param_2,param_3,&local_8); + return; +} + + + +/* @00405888 file=? name=FUN_00405888 */ + +undefined4 __cdecl FUN_00405888(int *param_1,char *param_2,undefined4 *param_3,undefined4 *param_4) + +{ + char *pcVar1; + undefined4 *puVar2; + undefined4 *puVar3; + int iVar4; + char *pcVar5; + char *pcVar6; + bool bVar7; + undefined4 *local_8; + + local_8 = (undefined4 *)0x0; + puVar3 = (undefined4 *)param_1[2]; + do { + puVar2 = puVar3; + if (puVar2 == (undefined4 *)0x0) { + *param_4 = 0; + *param_3 = 0; + return 0; + } + if (puVar2[1] != 0) { + if (((*(byte *)(*param_1 + 0x1c) & 0x10) != 0) && + (iVar4 = FUN_004d4b58((char *)puVar2[1],param_2), iVar4 == 0)) { +LAB_004058ec: + *param_3 = puVar2; + *param_4 = local_8; + return 1; + } + if ((*(byte *)(*param_1 + 0x1c) & 0x10) == 0) { + pcVar5 = (char *)puVar2[1]; + pcVar6 = param_2; + do { + if (*pcVar5 != *pcVar6) goto LAB_00405900; + bVar7 = true; + if (*pcVar5 == '\0') break; + pcVar1 = pcVar5 + 1; + if (*pcVar1 != pcVar6[1]) goto LAB_00405900; + pcVar5 = pcVar5 + 2; + pcVar6 = pcVar6 + 2; + bVar7 = *pcVar1 == '\0'; + } while (!bVar7); + if (bVar7) goto LAB_004058ec; + } + } +LAB_00405900: + puVar3 = (undefined4 *)*puVar2; + local_8 = puVar2; + } while( true ); +} + + + +/* @00405920 file=? name=FUN_00405920 */ + +void __cdecl FUN_00405920(int *param_1,int *param_2) + +{ + int iVar1; + undefined4 *local_c; + int *local_8; + + iVar1 = FUN_00405888(param_1,(char *)param_2[1],&local_8,&local_c); + if (iVar1 == 0) { + FUN_00405834((int)param_1,param_2); + } + else { + if (local_c == (undefined4 *)0x0) { + param_1[2] = (int)param_2; + } + else { + *local_c = param_2; + } + iVar1 = *local_8; + *param_2 = iVar1; + if (iVar1 == 0) { + param_1[3] = (int)param_2; + } + FUN_00405454(local_8,3); + } + return; +} + + + +/* @00405988 file=? name=FUN_00405988 */ + +void __cdecl FUN_00405988(int *param_1,char *param_2) + +{ + int iVar1; + int *local_c; + int *local_8; + + iVar1 = FUN_00405888(param_1,param_2,&local_8,&local_c); + if (iVar1 != 0) { + if (local_c == (int *)0x0) { + param_1[2] = *local_8; + } + else { + *local_c = *local_8; + } + if ((int *)param_1[3] == local_8) { + param_1[3] = (int)local_c; + } + if (local_8[3] != 0) { + param_1[5] = param_1[5] + -1; + } + param_1[4] = param_1[4] + -1; + FUN_00405454(local_8,3); + } + return; +} + + + +/* @004059fc file=? name=FUN_004059fc */ + +int __cdecl FUN_004059fc(int param_1,int *param_2,int param_3) + +{ + undefined4 *puVar1; + char *pcVar2; + int iVar3; + int iVar4; + + puVar1 = *(undefined4 **)(param_1 + 8); + iVar4 = 0; + pcVar2 = *(char **)(param_1 + 0x18); + if (pcVar2 != (char *)0x0) { + if (param_3 != 0) { + FUN_004dbb24(param_2,&DAT_004e0bf4,(char *)0x0); + FUN_004dbb24(param_2,pcVar2,(char *)0x0); + FUN_004dbb24(param_2,&DAT_004e0bf6,(char *)0x0); + } + if (param_3 != 1) { + iVar4 = FUN_004d4a78(*(char **)(param_1 + 0x18)); + iVar4 = iVar4 + 2; + } + } + if (*(char **)(param_1 + 0x1c) != (char *)0x0) { + if (param_3 != 0) { + FUN_004dbb24(param_2,*(char **)(param_1 + 0x1c),(char *)0x0); + } + if (param_3 != 1) { + iVar3 = FUN_004d4a78(*(char **)(param_1 + 0x1c)); + iVar4 = iVar3 + iVar4; + } + } + if ((*(int *)(param_1 + 0x18) != 0) || (*(int *)(param_1 + 0x1c) != 0)) { + if (param_3 == 1) { + FUN_004d9c38(param_2); + } + else if (param_3 != 0) { + FUN_004d9c58(param_2); + } + if (param_3 != 1) { + iVar4 = iVar4 + 1; + } + } + for (; puVar1 != (undefined4 *)0x0; puVar1 = (undefined4 *)*puVar1) { + iVar3 = FUN_004055b0((int)puVar1,param_2,param_3); + iVar4 = iVar4 + iVar3; + } + return iVar4; +} + + + +/* @00405b00 file=? name=FUN_00405b00 */ + +undefined4 FUN_00405b00(void) + +{ + return 1; +} + + + +/* @00405f44 file=? name=FUN_00405f44 */ + +void __cdecl FUN_00405f44(undefined4 param_1) + +{ + DAT_004e0c18 = param_1; + return; +} + + + +/* @00406018 file=? name=FUN_00406018 */ + +undefined4 * __cdecl FUN_00406018(char *param_1,char *param_2,char *param_3) + +{ + char cVar1; + int iVar2; + char *pcVar3; + int iVar4; + int iVar5; + uint uVar6; + uint uVar7; + char *pcVar8; + + if (param_1 == (char *)0x0) { + param_1 = &DAT_004e0c88; + } + iVar2 = FUN_004d4a78(param_1); + if (param_3 == (char *)0x0) { + pcVar3 = FUN_004061e8(param_2); + iVar5 = FUN_004d4a78(pcVar3); + iVar5 = iVar5 + iVar2; + } + else { + pcVar3 = FUN_004061e8(param_2); + pcVar3 = (char *)FUN_00406224(pcVar3); + iVar4 = FUN_004d4a78(pcVar3); + cVar1 = *param_3; + iVar5 = FUN_004d4a78(param_3); + iVar5 = iVar5 + iVar4 + iVar2 + (uint)(cVar1 != '.'); + } + if (0x1ff < iVar5) { + FUN_004dbb24(&DAT_00524e20,s___Program_Error___buffer___too_s_004e0c8a,(char *)0x0); + FUN_004036a0(1); + } + uVar6 = 0xffffffff; + do { + pcVar3 = param_1; + if (uVar6 == 0) break; + uVar6 = uVar6 - 1; + pcVar3 = param_1 + 1; + cVar1 = *param_1; + param_1 = pcVar3; + } while (cVar1 != '\0'); + uVar6 = ~uVar6; + pcVar3 = pcVar3 + -uVar6; + pcVar8 = (char *)&DAT_005214f4; + for (uVar7 = uVar6 >> 2; uVar7 != 0; uVar7 = uVar7 - 1) { + *(undefined4 *)pcVar8 = *(undefined4 *)pcVar3; + pcVar3 = pcVar3 + 4; + pcVar8 = pcVar8 + 4; + } + for (uVar6 = uVar6 & 3; uVar6 != 0; uVar6 = uVar6 - 1) { + *pcVar8 = *pcVar3; + pcVar3 = pcVar3 + 1; + pcVar8 = pcVar8 + 1; + } + if (param_3 == (char *)0x0) { + pcVar3 = FUN_004061e8(param_2); + FUN_004d49b8((char *)&DAT_005214f4,pcVar3); + } + else { + pcVar3 = FUN_004061e8(param_2); + pcVar3 = (char *)FUN_00406224(pcVar3); + FUN_004d49b8((char *)&DAT_005214f4,pcVar3); + if (*param_3 != '.') { + FUN_004d49b8((char *)&DAT_005214f4,&DAT_004e0ccd); + } + FUN_004d49b8((char *)&DAT_005214f4,param_3); + } + return &DAT_005214f4; +} + + + +/* @00406140 file=? name=FUN_00406140 */ + +void __cdecl FUN_00406140(char *param_1,char *param_2) + +{ + FUN_00406018(DAT_004e0c00,param_1,param_2); + return; +} + + + +/* @0040615c file=? name=FUN_0040615c */ + +void __cdecl FUN_0040615c(char *param_1,char *param_2) + +{ + FUN_00406018(DAT_004e0c04,param_1,param_2); + return; +} + + + +/* @00406178 file=? name=FUN_00406178 */ + +void __cdecl FUN_00406178(char *param_1,char *param_2) + +{ + FUN_00406018(DAT_004e0c08,param_1,param_2); + return; +} + + + +/* @00406194 file=? name=FUN_00406194 */ + +void __cdecl FUN_00406194(char *param_1,char *param_2) + +{ + FUN_00406018(DAT_004e0c0c,param_1,param_2); + return; +} + + + +/* @004061b0 file=? name=FUN_004061b0 */ + +void __cdecl FUN_004061b0(char *param_1,char *param_2) + +{ + FUN_00406018(DAT_004e0c10,param_1,param_2); + return; +} + + + +/* @004061cc file=? name=FUN_004061cc */ + +void __cdecl FUN_004061cc(char *param_1,char *param_2) + +{ + FUN_00406018(DAT_004e0c18,param_1,param_2); + return; +} + + + +/* @004061e8 file=? name=FUN_004061e8 */ + +char * __cdecl FUN_004061e8(char *param_1) + +{ + int iVar1; + char *pcVar2; + + iVar1 = FUN_004064bc(param_1); + pcVar2 = param_1; + if (iVar1 != 0) { + for (pcVar2 = FUN_004d49f4(param_1,'\0'); (*pcVar2 != '\\' && (param_1 != pcVar2)); + pcVar2 = pcVar2 + -1) { + } + if (*pcVar2 == '\\') { + pcVar2 = pcVar2 + 1; + } + } + return pcVar2; +} + + + +/* @00406224 file=? name=FUN_00406224 */ + +undefined4 * __cdecl FUN_00406224(char *param_1) + +{ + char cVar1; + uint uVar2; + char *pcVar3; + uint uVar4; + char *pcVar5; + + uVar2 = FUN_004d4a78(param_1); + if (0x1ff < uVar2) { + FUN_004dbb24(&DAT_00524e20,s___Program_Error___buffer___too_s_004e0ccf,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + FUN_004036a0(1); + } + uVar2 = 0xffffffff; + do { + pcVar3 = param_1; + if (uVar2 == 0) break; + uVar2 = uVar2 - 1; + pcVar3 = param_1 + 1; + cVar1 = *param_1; + param_1 = pcVar3; + } while (cVar1 != '\0'); + uVar2 = ~uVar2; + pcVar3 = pcVar3 + -uVar2; + pcVar5 = (char *)&DAT_005216f4; + for (uVar4 = uVar2 >> 2; uVar4 != 0; uVar4 = uVar4 - 1) { + *(undefined4 *)pcVar5 = *(undefined4 *)pcVar3; + pcVar3 = pcVar3 + 4; + pcVar5 = pcVar5 + 4; + } + for (uVar2 = uVar2 & 3; uVar2 != 0; uVar2 = uVar2 - 1) { + *pcVar5 = *pcVar3; + pcVar3 = pcVar3 + 1; + pcVar5 = pcVar5 + 1; + } + for (pcVar3 = FUN_004d49f4((char *)&DAT_005216f4,'\0'); + (*pcVar3 != '.' && (pcVar3 != (char *)&DAT_005216f4)); pcVar3 = pcVar3 + -1) { + } + if (*pcVar3 == '.') { + *pcVar3 = '\0'; + } + return &DAT_005216f4; +} + + + +/* @004062bc file=? name=FUN_004062bc */ + +undefined * __cdecl FUN_004062bc(int param_1) + +{ + DAT_005218f4 = 0; + if (0x3f < param_1) { + param_1 = 0x3f; + } + for (; 0 < param_1; param_1 = param_1 + -1) { + FUN_004d49b8(&DAT_005218f4,&DAT_004e0d0a); + } + return &DAT_005218f4; +} + + + +/* @004062f8 file=? name=FUN_004062f8 */ + +undefined4 __cdecl FUN_004062f8(int *param_1,char *param_2,int param_3) + +{ + int *piVar1; + undefined4 uVar2; + int iVar3; + char *pcVar4; + char *pcVar5; + + piVar1 = FUN_004dad10(param_1,param_2,param_3,10); + iVar3 = *piVar1; + if ((*(byte *)(iVar3 + 0xc) & 0x86) != 0) { + iVar3 = 0; + } + if (iVar3 == 0) { + *param_2 = '\0'; + uVar2 = 0; + } + else { + while (iVar3 = FUN_004d4a78(param_2), iVar3 <= param_3 + -2) { + pcVar5 = param_2 + iVar3; + do { + pcVar4 = pcVar5; + pcVar5 = pcVar4 + -1; + if (pcVar4 <= param_2) break; + } while (((&DAT_005207dd)[*pcVar5] & 1) != 0); + if ((pcVar5 < param_2) || (*pcVar5 != '\\')) goto LAB_004063cc; + piVar1 = FUN_004dad10(param_1,&DAT_00521974,0x200,10); + iVar3 = *piVar1; + if ((*(byte *)(iVar3 + 0xc) & 0x86) != 0) { + iVar3 = 0; + } + if (iVar3 == 0) goto LAB_004063cc; + *pcVar5 = ' '; + FUN_004d4a94(pcVar4,&DAT_00521974,param_3 - ((int)pcVar4 - (int)param_2)); + } + FUN_004dbb24(&DAT_00524e20,s___ERROR___Input_line_too_long__004e0d0d,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); +LAB_004063cc: + uVar2 = 1; + } + return uVar2; +} + + + +/* @004063e0 file=? name=FUN_004063e0 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 __cdecl FUN_004063e0(float param_1) + +{ + return (float10)param_1 * (float10)_DAT_004063f0; +} + + + +/* @004064bc file=? name=FUN_004064bc */ + +undefined4 __cdecl FUN_004064bc(char *param_1) + +{ + char *pcVar1; + + pcVar1 = FUN_004d49f4(param_1,'/'); + if (((pcVar1 == (char *)0x0) && (pcVar1 = FUN_004d49f4(param_1,':'), pcVar1 == (char *)0x0)) && + (pcVar1 = FUN_004d49f4(param_1,'\\'), pcVar1 == (char *)0x0)) { + return 0; + } + return 1; +} + + + +/* @004064fc file=? name=FUN_004064fc */ + +char * __cdecl FUN_004064fc(char *param_1,char *param_2) + +{ + char cVar1; + int iVar2; + char *pcVar3; + int iVar4; + uint uVar5; + uint uVar6; + char *pcVar7; + char *pcVar8; + + iVar2 = FUN_004064bc(param_2); + if (iVar2 == 0) { + if (param_1 == (char *)0x0) { + iVar2 = FUN_004d4a78(param_2); + pcVar3 = (char *)FUN_004022b0(iVar2 + 1); + uVar5 = 0xffffffff; + do { + pcVar7 = param_2; + if (uVar5 == 0) break; + uVar5 = uVar5 - 1; + pcVar7 = param_2 + 1; + cVar1 = *param_2; + param_2 = pcVar7; + } while (cVar1 != '\0'); + uVar5 = ~uVar5; + pcVar7 = pcVar7 + -uVar5; + pcVar8 = pcVar3; + for (uVar6 = uVar5 >> 2; uVar6 != 0; uVar6 = uVar6 - 1) { + *(undefined4 *)pcVar8 = *(undefined4 *)pcVar7; + pcVar7 = pcVar7 + 4; + pcVar8 = pcVar8 + 4; + } + for (uVar5 = uVar5 & 3; uVar5 != 0; uVar5 = uVar5 - 1) { + *pcVar8 = *pcVar7; + pcVar7 = pcVar7 + 1; + pcVar8 = pcVar8 + 1; + } + } + else { + iVar2 = FUN_004d4a78(param_1); + iVar4 = FUN_004d4a78(param_2); + pcVar3 = (char *)FUN_004022b0(iVar2 + iVar4 + 1); + uVar5 = 0xffffffff; + do { + pcVar7 = param_1; + if (uVar5 == 0) break; + uVar5 = uVar5 - 1; + pcVar7 = param_1 + 1; + cVar1 = *param_1; + param_1 = pcVar7; + } while (cVar1 != '\0'); + uVar5 = ~uVar5; + pcVar7 = pcVar7 + -uVar5; + pcVar8 = pcVar3; + for (uVar6 = uVar5 >> 2; uVar6 != 0; uVar6 = uVar6 - 1) { + *(undefined4 *)pcVar8 = *(undefined4 *)pcVar7; + pcVar7 = pcVar7 + 4; + pcVar8 = pcVar8 + 4; + } + for (uVar5 = uVar5 & 3; uVar5 != 0; uVar5 = uVar5 - 1) { + *pcVar8 = *pcVar7; + pcVar7 = pcVar7 + 1; + pcVar8 = pcVar8 + 1; + } + FUN_004d49b8(pcVar3,param_2); + } + } + else { + iVar2 = FUN_004d4a78(param_2); + pcVar3 = (char *)FUN_004022b0(iVar2 + 1); + uVar5 = 0xffffffff; + do { + pcVar7 = param_2; + if (uVar5 == 0) break; + uVar5 = uVar5 - 1; + pcVar7 = param_2 + 1; + cVar1 = *param_2; + param_2 = pcVar7; + } while (cVar1 != '\0'); + uVar5 = ~uVar5; + pcVar7 = pcVar7 + -uVar5; + pcVar8 = pcVar3; + for (uVar6 = uVar5 >> 2; uVar6 != 0; uVar6 = uVar6 - 1) { + *(undefined4 *)pcVar8 = *(undefined4 *)pcVar7; + pcVar7 = pcVar7 + 4; + pcVar8 = pcVar8 + 4; + } + for (uVar5 = uVar5 & 3; uVar5 != 0; uVar5 = uVar5 - 1) { + *pcVar8 = *pcVar7; + pcVar7 = pcVar7 + 1; + pcVar8 = pcVar8 + 1; + } + } + return pcVar3; +} + + + +/* @004065d8 file=? name=FUN_004065d8 */ + +void __cdecl FUN_004065d8(int *param_1,char *param_2,char *param_3) + +{ + char cVar1; + int iVar2; + int *piVar3; + int iVar4; + uint uVar5; + uint uVar6; + int *piVar7; + char *pcVar8; + int *piVar9; + + iVar2 = FUN_004064bc(param_3); + if ((iVar2 == 0) && (param_2 != (char *)0x0)) { + iVar2 = FUN_004d4a78(param_2); + iVar4 = FUN_004d4a78(param_3); + piVar3 = (int *)FUN_004022b0(iVar2 + iVar4 + 1); + uVar5 = 0xffffffff; + do { + pcVar8 = param_2; + if (uVar5 == 0) break; + uVar5 = uVar5 - 1; + pcVar8 = param_2 + 1; + cVar1 = *param_2; + param_2 = pcVar8; + } while (cVar1 != '\0'); + uVar5 = ~uVar5; + piVar7 = (int *)(pcVar8 + -uVar5); + piVar9 = piVar3; + for (uVar6 = uVar5 >> 2; uVar6 != 0; uVar6 = uVar6 - 1) { + *piVar9 = *piVar7; + piVar7 = piVar7 + 1; + piVar9 = piVar9 + 1; + } + for (uVar5 = uVar5 & 3; uVar5 != 0; uVar5 = uVar5 - 1) { + *(char *)piVar9 = (char)*piVar7; + piVar7 = (int *)((int)piVar7 + 1); + piVar9 = (int *)((int)piVar9 + 1); + } + FUN_004d49b8((char *)piVar3,param_3); + } + else { + iVar2 = FUN_004d4a78(param_3); + piVar3 = (int *)FUN_004022b0(iVar2 + 1); + uVar5 = 0xffffffff; + do { + pcVar8 = param_3; + if (uVar5 == 0) break; + uVar5 = uVar5 - 1; + pcVar8 = param_3 + 1; + cVar1 = *param_3; + param_3 = pcVar8; + } while (cVar1 != '\0'); + uVar5 = ~uVar5; + piVar7 = (int *)(pcVar8 + -uVar5); + piVar9 = piVar3; + for (uVar6 = uVar5 >> 2; uVar6 != 0; uVar6 = uVar6 - 1) { + *piVar9 = *piVar7; + piVar7 = piVar7 + 1; + piVar9 = piVar9 + 1; + } + for (uVar5 = uVar5 & 3; uVar5 != 0; uVar5 = uVar5 - 1) { + *(char *)piVar9 = (char)*piVar7; + piVar7 = (int *)((int)piVar7 + 1); + piVar9 = (int *)((int)piVar9 + 1); + } + } + FUN_004da5f8(param_1,(LPCSTR)piVar3,2,DAT_00520540); + FUN_004022d0(piVar3); + return; +} + + + +/* @00406698 file=? name=FUN_00406698 */ + +void __cdecl FUN_00406698(int *param_1,char *param_2,char *param_3) + +{ + char cVar1; + int iVar2; + uint uVar3; + uint uVar4; + char *pcVar5; + char *pcVar6; + char local_68 [100]; + + iVar2 = FUN_004064bc(param_3); + if (iVar2 == 0) { + if (param_2 == (char *)0x0) { + uVar3 = 0xffffffff; + do { + pcVar5 = param_3; + if (uVar3 == 0) break; + uVar3 = uVar3 - 1; + pcVar5 = param_3 + 1; + cVar1 = *param_3; + param_3 = pcVar5; + } while (cVar1 != '\0'); + uVar3 = ~uVar3; + pcVar5 = pcVar5 + -uVar3; + pcVar6 = local_68; + for (uVar4 = uVar3 >> 2; uVar4 != 0; uVar4 = uVar4 - 1) { + *(undefined4 *)pcVar6 = *(undefined4 *)pcVar5; + pcVar5 = pcVar5 + 4; + pcVar6 = pcVar6 + 4; + } + for (uVar3 = uVar3 & 3; uVar3 != 0; uVar3 = uVar3 - 1) { + *pcVar6 = *pcVar5; + pcVar5 = pcVar5 + 1; + pcVar6 = pcVar6 + 1; + } + } + else { + uVar3 = 0xffffffff; + do { + pcVar5 = param_2; + if (uVar3 == 0) break; + uVar3 = uVar3 - 1; + pcVar5 = param_2 + 1; + cVar1 = *param_2; + param_2 = pcVar5; + } while (cVar1 != '\0'); + uVar3 = ~uVar3; + pcVar5 = pcVar5 + -uVar3; + pcVar6 = local_68; + for (uVar4 = uVar3 >> 2; uVar4 != 0; uVar4 = uVar4 - 1) { + *(undefined4 *)pcVar6 = *(undefined4 *)pcVar5; + pcVar5 = pcVar5 + 4; + pcVar6 = pcVar6 + 4; + } + for (uVar3 = uVar3 & 3; uVar3 != 0; uVar3 = uVar3 - 1) { + *pcVar6 = *pcVar5; + pcVar5 = pcVar5 + 1; + pcVar6 = pcVar6 + 1; + } + FUN_004d49b8(local_68,param_3); + } + } + else { + uVar3 = 0xffffffff; + do { + pcVar5 = param_3; + if (uVar3 == 0) break; + uVar3 = uVar3 - 1; + pcVar5 = param_3 + 1; + cVar1 = *param_3; + param_3 = pcVar5; + } while (cVar1 != '\0'); + uVar3 = ~uVar3; + pcVar5 = pcVar5 + -uVar3; + pcVar6 = local_68; + for (uVar4 = uVar3 >> 2; uVar4 != 0; uVar4 = uVar4 - 1) { + *(undefined4 *)pcVar6 = *(undefined4 *)pcVar5; + pcVar5 = pcVar5 + 4; + pcVar6 = pcVar6 + 4; + } + for (uVar3 = uVar3 & 3; uVar3 != 0; uVar3 = uVar3 - 1) { + *pcVar6 = *pcVar5; + pcVar5 = pcVar5 + 1; + pcVar6 = pcVar6 + 1; + } + } + FUN_004da5f8(param_1,local_68,1,DAT_00520540); + return; +} + + + +/* @00406750 file=? name=FUN_00406750 */ + +undefined4 __cdecl FUN_00406750(int param_1) + +{ + int iVar1; + + iVar1 = FUN_00403f84(param_1,s_LAB_ONLY_004e0d2f); + if (iVar1 != 0) { + FUN_004dbb24(&DAT_00524e20,s_WARNING__LAB_ONLY_004e0d38,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + return 1; + } + return 0; +} + + + +/* @00406794 file=? name=FUN_00406794 */ + +void __cdecl FUN_00406794(int param_1) + +{ + int iVar1; + + iVar1 = FUN_00403f84(param_1,s_LAB_ONLY_004e0d4a); + if (iVar1 == 0) { + FUN_00404528(param_1,s_LAB_ONLY_004e0d53,(char *)0x0,0); + } + return; +} + + + +/* @004067c4 file=? name=FUN_004067c4 */ + +uint __cdecl FUN_004067c4(undefined4 *param_1) + +{ + uint uVar1; + int local_94 [36]; + + FUN_004da66c(local_94,0,(LPCSTR)*param_1,1,DAT_00520540); + if ((*(byte *)(local_94[0] + 0xc) & 0x86) != 0) { + local_94[0] = 0; + } + uVar1 = (uint)(local_94[0] != 0); + FUN_004da754(local_94,2); + return uVar1; +} + + + +/* @00406824 file=? name=FUN_00406824 */ + +void __cdecl FUN_00406824(char *param_1,float *param_2) + +{ + uint *puVar1; + float10 fVar2; + uint local_44 [2]; + char *local_3c; + uint local_34 [2]; + char *local_2c; + uint local_24 [2]; + char *local_1c; + uint *local_14; + uint *local_10; + uint *local_c; + uint *local_8; + + puVar1 = (uint *)FUN_00402298(0x10); + if (puVar1 == (uint *)0x0) { + local_8 = (uint *)0x0; + } + else { + local_8 = FUN_00402460(puVar1,param_1); + } + local_8[3] = local_8[3] + 1; + FUN_00402838(local_24,local_8,0,(char *)0x0); + puVar1 = (uint *)FUN_00402298(0x10); + if (puVar1 == (uint *)0x0) { + local_c = (uint *)0x0; + } + else { + local_c = FUN_00402460(puVar1,local_1c); + } + local_c[3] = local_c[3] + 1; + FUN_004024d8((int *)local_24,2); + fVar2 = (float10)FUN_004dd1cc(local_c[2]); + *param_2 = (float)fVar2; + puVar1 = local_c + 3; + *puVar1 = *puVar1 - 1; + if (*puVar1 == 0) { + FUN_004024d8((int *)local_c,3); + } + FUN_00402838(local_34,local_8,1,(char *)0x0); + puVar1 = (uint *)FUN_00402298(0x10); + if (puVar1 == (uint *)0x0) { + local_10 = (uint *)0x0; + } + else { + local_10 = FUN_00402460(puVar1,local_2c); + } + local_10[3] = local_10[3] + 1; + FUN_004024d8((int *)local_34,2); + fVar2 = (float10)FUN_004dd1cc(local_10[2]); + param_2[1] = (float)fVar2; + puVar1 = local_10 + 3; + *puVar1 = *puVar1 - 1; + if (*puVar1 == 0) { + FUN_004024d8((int *)local_10,3); + } + FUN_00402838(local_44,local_8,2,(char *)0x0); + puVar1 = (uint *)FUN_00402298(0x10); + if (puVar1 == (uint *)0x0) { + local_14 = (uint *)0x0; + } + else { + local_14 = FUN_00402460(puVar1,local_3c); + } + local_14[3] = local_14[3] + 1; + FUN_004024d8((int *)local_44,2); + fVar2 = (float10)FUN_004dd1cc(local_14[2]); + param_2[2] = (float)fVar2; + puVar1 = local_14 + 3; + *puVar1 = *puVar1 - 1; + if (*puVar1 == 0) { + FUN_004024d8((int *)local_14,3); + } + puVar1 = local_8 + 3; + *puVar1 = *puVar1 - 1; + if (*puVar1 == 0) { + FUN_004024d8((int *)local_8,3); + } + return; +} + + + +/* @004069b8 file=? name=FUN_004069b8 */ + +undefined4 FUN_004069b8(void) + +{ + return 1; +} + + + +/* @004069c4 file=? name=FUN_004069c4 */ + +void __cdecl FUN_004069c4(char *param_1,float *param_2) + +{ + uint *puVar1; + float10 fVar2; + uint local_58 [2]; + char *local_50; + uint local_48 [2]; + char *local_40; + uint local_38 [2]; + char *local_30; + uint local_28 [2]; + char *local_20; + uint *local_18; + uint *local_14; + uint *local_10; + uint *local_c; + uint *local_8; + + puVar1 = (uint *)FUN_00402298(0x10); + if (puVar1 == (uint *)0x0) { + local_8 = (uint *)0x0; + } + else { + local_8 = FUN_00402460(puVar1,param_1); + } + local_8[3] = local_8[3] + 1; + FUN_00402838(local_28,local_8,0,(char *)0x0); + puVar1 = (uint *)FUN_00402298(0x10); + if (puVar1 == (uint *)0x0) { + local_c = (uint *)0x0; + } + else { + local_c = FUN_00402460(puVar1,local_20); + } + local_c[3] = local_c[3] + 1; + FUN_004024d8((int *)local_28,2); + fVar2 = (float10)FUN_004dd1cc(local_c[2]); + *param_2 = (float)fVar2; + puVar1 = local_c + 3; + *puVar1 = *puVar1 - 1; + if (*puVar1 == 0) { + FUN_004024d8((int *)local_c,3); + } + FUN_00402838(local_38,local_8,1,(char *)0x0); + puVar1 = (uint *)FUN_00402298(0x10); + if (puVar1 == (uint *)0x0) { + local_10 = (uint *)0x0; + } + else { + local_10 = FUN_00402460(puVar1,local_30); + } + local_10[3] = local_10[3] + 1; + FUN_004024d8((int *)local_38,2); + fVar2 = (float10)FUN_004dd1cc(local_10[2]); + param_2[1] = (float)fVar2; + puVar1 = local_10 + 3; + *puVar1 = *puVar1 - 1; + if (*puVar1 == 0) { + FUN_004024d8((int *)local_10,3); + } + FUN_00402838(local_48,local_8,2,(char *)0x0); + puVar1 = (uint *)FUN_00402298(0x10); + if (puVar1 == (uint *)0x0) { + local_14 = (uint *)0x0; + } + else { + local_14 = FUN_00402460(puVar1,local_40); + } + local_14[3] = local_14[3] + 1; + FUN_004024d8((int *)local_48,2); + fVar2 = (float10)FUN_004dd1cc(local_14[2]); + param_2[2] = (float)fVar2; + puVar1 = local_14 + 3; + *puVar1 = *puVar1 - 1; + if (*puVar1 == 0) { + FUN_004024d8((int *)local_14,3); + } + FUN_00402838(local_58,local_8,3,(char *)0x0); + puVar1 = (uint *)FUN_00402298(0x10); + if (puVar1 == (uint *)0x0) { + local_18 = (uint *)0x0; + } + else { + local_18 = FUN_00402460(puVar1,local_50); + } + local_18[3] = local_18[3] + 1; + FUN_004024d8((int *)local_58,2); + fVar2 = (float10)FUN_004dd1cc(local_18[2]); + param_2[3] = (float)fVar2; + puVar1 = local_18 + 3; + *puVar1 = *puVar1 - 1; + if (*puVar1 == 0) { + FUN_004024d8((int *)local_18,3); + } + puVar1 = local_8 + 3; + *puVar1 = *puVar1 - 1; + if (*puVar1 == 0) { + FUN_004024d8((int *)local_8,3); + } + return; +} + + + +/* @00406bc8 file=? name=FUN_00406bc8 */ + +undefined4 * __cdecl +FUN_00406bc8(undefined4 *param_1,undefined4 param_2,char *param_3,undefined4 param_4, + undefined4 param_5,undefined4 param_6,undefined4 *param_7,undefined4 param_8, + undefined4 param_9) + +{ + char cVar1; + int iVar2; + undefined4 *puVar3; + uint uVar4; + uint uVar5; + undefined1 *puVar6; + char *pcVar7; + char *pcVar8; + + param_1[0xe] = param_2; + *param_1 = param_9; + param_1[2] = param_4; + uVar4 = 0xffffffff; + do { + pcVar7 = param_3; + if (uVar4 == 0) break; + uVar4 = uVar4 - 1; + pcVar7 = param_3 + 1; + cVar1 = *param_3; + param_3 = pcVar7; + } while (cVar1 != '\0'); + uVar4 = ~uVar4; + pcVar7 = pcVar7 + -uVar4; + pcVar8 = (char *)(param_1 + 3); + for (uVar5 = uVar4 >> 2; uVar5 != 0; uVar5 = uVar5 - 1) { + *(undefined4 *)pcVar8 = *(undefined4 *)pcVar7; + pcVar7 = pcVar7 + 4; + pcVar8 = pcVar8 + 4; + } + for (uVar4 = uVar4 & 3; uVar4 != 0; uVar4 = uVar4 - 1) { + *pcVar8 = *pcVar7; + pcVar7 = pcVar7 + 1; + pcVar8 = pcVar8 + 1; + } + iVar2 = FUN_004d4a78((char *)(param_1 + 3)); + puVar6 = (undefined1 *)((int)param_1 + iVar2 + 0xd); + while (iVar2 = iVar2 + 1, iVar2 < 0x20) { + *puVar6 = 0; + puVar6 = puVar6 + 1; + } + param_1[0xb] = param_5; + param_1[0xc] = param_6; + param_1[0xd] = 0; + param_1[0x10] = param_8; + param_1[0xf] = 0; + param_1[1] = 0; + if (param_7 != (undefined4 *)0x0) { + puVar3 = (undefined4 *)FUN_004022b0(param_1[0x10]); + param_1[0xf] = puVar3; + FUN_004d4918(puVar3,param_7,param_1[0x10]); + param_1[0xc] = param_1[0xc] | 1; + } + return param_1; +} + + + +/* @00406c78 file=? name=FUN_00406c78 */ + +void __cdecl FUN_00406c78(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + if ((int *)param_1[0xf] != (int *)0x0) { + FUN_004022e8((int *)param_1[0xf]); + } + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00406ca4 file=? name=FUN_00406ca4 */ + +void __cdecl FUN_00406ca4(int param_1) + +{ + if ((*(int *)(param_1 + 4) < 1) && ((*(byte *)(param_1 + 0x30) & 1) != 0)) { + *(uint *)(param_1 + 0x30) = *(uint *)(param_1 + 0x30) & 0xfffffffe; + FUN_004022e8(*(int **)(param_1 + 0x3c)); + *(undefined4 *)(param_1 + 0x3c) = 0; + } + return; +} + + + +/* @00406cd0 file=? name=FUN_00406cd0 */ + +void __cdecl FUN_00406cd0(int param_1) + +{ + if ((*(byte *)(param_1 + 0x30) & 1) == 0) { + (**(code **)**(undefined4 **)(param_1 + 0x38))(*(undefined4 **)(param_1 + 0x38),param_1); + } + return; +} + + + +/* @00406cec file=? name=FUN_00406cec */ + +undefined4 FUN_00406cec(void) + +{ + return 1; +} + + + +/* @00406cf8 file=? name=FUN_00406cf8 */ + +void __cdecl FUN_00406cf8(undefined4 *param_1) + +{ + *param_1 = &PTR_FUN_004e0e78; + param_1[2] = 0; + param_1[3] = 0; + param_1[4] = 0; + param_1[5] = 0xffffffff; + param_1[6] = 0xffffffff; + *(undefined1 *)(param_1 + 1) = 1; + *(undefined1 *)((int)param_1 + 5) = 0; + *(undefined1 *)((int)param_1 + 6) = 0; + *(undefined1 *)((int)param_1 + 7) = 0; + return; +} + + + +/* @00406d34 file=? name=FUN_00406d34 */ + +void __cdecl FUN_00406d34(int *param_1,byte param_2) + +{ + int *piVar1; + int iVar2; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e0e78; + if (param_1[3] != 0) { + for (iVar2 = param_1[6]; -1 < iVar2; iVar2 = iVar2 + -1) { + piVar1 = *(int **)(param_1[3] + iVar2 * 4); + if (piVar1 != (int *)0x0) { + FUN_00406c78(piVar1,3); + } + } + FUN_004022e8((int *)param_1[3]); + } + *(undefined1 *)(param_1 + 1) = 1; + *(undefined1 *)((int)param_1 + 5) = 0; + *(undefined1 *)((int)param_1 + 6) = 0; + *(undefined1 *)((int)param_1 + 7) = 0; + param_1[2] = 0; + param_1[4] = 0; + param_1[6] = -1; + param_1[3] = 0; + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00406db4 file=? name=FUN_00406db4 */ + +undefined4 __cdecl +FUN_00406db4(int param_1,char *param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5, + undefined4 *param_6,undefined4 param_7,int param_8) + +{ + int *piVar1; + undefined4 uVar2; + undefined4 *puVar3; + undefined4 *puVar4; + int iVar5; + + if ((param_8 == -1) && (param_8 = *(int *)(param_1 + 0x14) + 1, *(int *)(param_1 + 0xc) != 0)) { + for (piVar1 = (int *)(*(int *)(param_1 + 0xc) + param_8 * 4); + (param_8 <= *(int *)(param_1 + 0x10) && (*piVar1 != 0)); piVar1 = piVar1 + 1) { + param_8 = param_8 + 1; + } + } + if (*(int *)(param_1 + 0xc) == 0) { + *(int *)(param_1 + 0x10) = param_8 + 0x32; + uVar2 = FUN_004022b0((param_8 + 0x32) * 4); + *(undefined4 *)(param_1 + 0xc) = uVar2; + for (iVar5 = 0; iVar5 < *(int *)(param_1 + 0x10); iVar5 = iVar5 + 1) { + *(undefined4 *)(*(int *)(param_1 + 0xc) + iVar5 * 4) = 0; + } + } + if (*(int *)(param_1 + 0x10) <= param_8) { + puVar3 = (undefined4 *)FUN_004022b0((param_8 + 0x32) * 4); + puVar4 = puVar3; + for (iVar5 = 0; iVar5 < *(int *)(param_1 + 0x10); iVar5 = iVar5 + 1) { + *puVar4 = *(undefined4 *)(*(int *)(param_1 + 0xc) + iVar5 * 4); + puVar4 = puVar4 + 1; + } + FUN_004022e8(*(int **)(param_1 + 0xc)); + *(undefined4 **)(param_1 + 0xc) = puVar3; + *(int *)(param_1 + 0x10) = param_8 + 0x32; + for (; iVar5 < *(int *)(param_1 + 0x10); iVar5 = iVar5 + 1) { + *(undefined4 *)(*(int *)(param_1 + 0xc) + iVar5 * 4) = 0; + } + } + if (*(int *)(param_1 + 0x18) < param_8) { + *(int *)(param_1 + 0x18) = param_8; + } + puVar4 = (undefined4 *)FUN_00402298(0x44); + if (puVar4 == (undefined4 *)0x0) { + puVar4 = (undefined4 *)0x0; + } + else { + puVar4 = FUN_00406bc8(puVar4,param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8); + } + *(undefined4 **)(*(int *)(param_1 + 0xc) + param_8 * 4) = puVar4; + return *(undefined4 *)(*(int *)(param_1 + 0xc) + param_8 * 4); +} + + + +/* @00406ec4 file=? name=FUN_00406ec4 */ + +undefined4 __cdecl +FUN_00406ec4(int param_1,char *param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5, + int *param_6,int param_7,int param_8) + +{ + int *piVar1; + undefined4 uVar2; + int iVar3; + int *piVar4; + + piVar1 = (int *)FUN_004022b0((param_7 + 1) * 4); + iVar3 = 0; + piVar4 = piVar1; + if (0 < param_7) { + do { + piVar4 = piVar4 + 1; + *piVar4 = *param_6; + iVar3 = iVar3 + 1; + param_6 = param_6 + 1; + } while (iVar3 < param_7); + } + *piVar1 = param_7; + uVar2 = FUN_00406db4(param_1,param_2,param_3,param_4,param_5,piVar1,(param_7 + 1) * 4,param_8); + FUN_004022e8(piVar1); + return uVar2; +} + + + +/* @00406f3c file=? name=FUN_00406f3c */ + +void __cdecl +FUN_00406f3c(int param_1,char *param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5, + int *param_6,int param_7) + +{ + undefined4 *puVar1; + int iVar2; + + iVar2 = param_6[2] - param_6[1]; + (**(code **)(*param_6 + 0xc))(param_6,0); + puVar1 = (undefined4 *)(**(code **)*param_6)(param_6); + FUN_00406db4(param_1,param_2,param_3,param_4,param_5,puVar1,iVar2,param_7); + return; +} + + + +/* @00406f84 file=? name=FUN_00406f84 */ + +void __cdecl FUN_00406f84(int param_1,int *param_2) + +{ + int iVar1; + int *piVar2; + + if (*param_2 != -1) { + *(undefined4 *)(*(int *)(param_1 + 0xc) + *param_2 * 4) = 0; + iVar1 = *(int *)(param_1 + 0x18); + if (iVar1 == *param_2) { + for (piVar2 = (int *)(*(int *)(param_1 + 0xc) + iVar1 * 4); (-1 < iVar1 && (*piVar2 == 0)); + piVar2 = piVar2 + -1) { + iVar1 = iVar1 + -1; + } + *(int *)(param_1 + 0x18) = iVar1; + } + } + FUN_00406c78(param_2,3); + return; +} + + + +/* @00406fd4 file=? name=FUN_00406fd4 */ + +undefined4 __cdecl FUN_00406fd4(int param_1,int param_2) + +{ + if (((-1 < param_2) && (param_2 <= *(int *)(param_1 + 0x18))) && (*(int *)(param_1 + 0xc) != 0)) { + return *(undefined4 *)(*(int *)(param_1 + 0xc) + param_2 * 4); + } + return 0; +} + + + +/* @00406ff8 file=? name=FUN_00406ff8 */ + +int __cdecl FUN_00406ff8(int param_1,char *param_2,int param_3,int param_4) + +{ + char *pcVar1; + char *pcVar2; + char *pcVar3; + int unaff_ESI; + bool bVar4; + +LAB_0040704b: + do { + do { + param_4 = param_4 + 1; + if (*(int *)(param_1 + 0x18) < param_4) goto LAB_00407052; + unaff_ESI = FUN_00406fd4(param_1,param_4); + } while ((unaff_ESI == 0) || (param_3 != *(int *)(unaff_ESI + 8))); + if (param_2 == (char *)0x0) break; + pcVar3 = (char *)(unaff_ESI + 0xc); + pcVar2 = param_2; + do { + if (*pcVar2 != *pcVar3) goto LAB_0040704b; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_0040704b; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + } while (!bVar4); +LAB_00407052: + if (*(int *)(param_1 + 0x18) < param_4) { + unaff_ESI = 0; + } + return unaff_ESI; +} + + + +/* @00407064 file=? name=FUN_00407064 */ + +int __cdecl FUN_00407064(int param_1,int param_2,int param_3) + +{ + int *piVar1; + int iVar2; + int iVar3; + int *piVar4; + int iVar5; + + iVar2 = FUN_00406fd4(param_1,param_2); + if (iVar2 != 0) { + iVar5 = *(int *)(iVar2 + 4); + *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + 1; + if (iVar5 == 0) { + FUN_00406cd0(iVar2); + } + piVar1 = *(int **)(iVar2 + 0x3c); + piVar4 = piVar1; + for (iVar5 = 1; piVar4 = piVar4 + 1, iVar5 <= *piVar1; iVar5 = iVar5 + 1) { + iVar3 = FUN_00406fd4(param_1,*piVar4); + if (*(int *)(iVar3 + 8) == param_3) { + *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + -1; + return iVar3; + } + } + *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + -1; + } + return 0; +} + + + +/* @004070dc file=? name=FUN_004070dc */ + +int __cdecl FUN_004070dc(int param_1,int param_2,char *param_3) + +{ + char *pcVar1; + int *piVar2; + int iVar3; + int iVar4; + char *pcVar5; + char *pcVar6; + int *piVar7; + bool bVar8; + int local_c; + + iVar3 = FUN_00406fd4(param_1,param_2); + if (iVar3 != 0) { + iVar4 = *(int *)(iVar3 + 4); + *(int *)(iVar3 + 4) = *(int *)(iVar3 + 4) + 1; + if (iVar4 == 0) { + FUN_00406cd0(iVar3); + } + piVar2 = *(int **)(iVar3 + 0x3c); + piVar7 = piVar2; + for (local_c = 1; piVar7 = piVar7 + 1, local_c <= *piVar2; local_c = local_c + 1) { + iVar4 = FUN_00406fd4(param_1,*piVar7); + pcVar6 = (char *)(iVar4 + 0xc); + pcVar5 = param_3; + do { + if (*pcVar5 != *pcVar6) goto LAB_0040715d; + bVar8 = true; + if (*pcVar5 == '\0') break; + pcVar1 = pcVar5 + 1; + if (*pcVar1 != pcVar6[1]) goto LAB_0040715d; + pcVar5 = pcVar5 + 2; + pcVar6 = pcVar6 + 2; + bVar8 = *pcVar1 == '\0'; + } while (!bVar8); + if (bVar8) { + *(int *)(iVar3 + 4) = *(int *)(iVar3 + 4) + -1; + return iVar4; + } +LAB_0040715d: + } + *(int *)(iVar3 + 4) = *(int *)(iVar3 + 4) + -1; + } + return 0; +} + + + +/* @0040717c file=? name=FUN_0040717c */ + +void __cdecl FUN_0040717c(int param_1) + +{ + int iVar1; + int iVar2; + + for (iVar2 = *(int *)(param_1 + 0x18); -1 < iVar2; iVar2 = iVar2 + -1) { + iVar1 = *(int *)(*(int *)(param_1 + 0xc) + iVar2 * 4); + if (iVar1 != 0) { + FUN_00406ca4(iVar1); + } + } + return; +} + + + +/* @004071a8 file=? name=FUN_004071a8 */ + +undefined4 FUN_004071a8(void) + +{ + return 1; +} + + + +/* @004071b4 file=? name=FUN_004071b4 */ + +undefined4 * __cdecl FUN_004071b4(undefined4 *param_1) + +{ + FUN_00406cf8(param_1); + *param_1 = &PTR_FUN_004e0e74; + FUN_004034b0(param_1 + 7,(LPCSTR)0x0,0); + return param_1; +} + + + +/* @004071e0 file=? name=FUN_004071e0 */ + +undefined4 * __cdecl FUN_004071e0(undefined4 *param_1,char *param_2) + +{ + FUN_00406cf8(param_1); + *param_1 = &PTR_FUN_004e0e74; + FUN_004034b0(param_1 + 7,(LPCSTR)0x0,0); + FUN_00407390((int)param_1,param_2); + return param_1; +} + + + +/* @00407218 file=? name=FUN_00407218 */ + +undefined4 * __cdecl FUN_00407218(undefined4 *param_1,char *param_2,char *param_3,int param_4) + +{ + byte bVar1; + byte bVar2; + byte bVar3; + byte bVar4; + int iVar5; + int *piVar6; + char *pcVar7; + byte bVar8; + byte bVar9; + byte bVar10; + + FUN_00406cf8(param_1); + *param_1 = &PTR_FUN_004e0e74; + FUN_004034b0(param_1 + 7,(LPCSTR)0x0,0); + FUN_00407390((int)param_1,param_2); + iVar5 = 0; + pcVar7 = (char *)((int)param_1 + 5); + if (0 < param_4) { + do { + if (*pcVar7 != *param_3) break; + iVar5 = iVar5 + 1; + pcVar7 = pcVar7 + 1; + param_3 = param_3 + 1; + } while (iVar5 < param_4); + } + if (iVar5 < param_4) { + bVar1 = *(byte *)((int)param_1 + 7); + bVar10 = 0x2e; + bVar2 = *(byte *)((int)param_1 + 6); + bVar9 = 0x2e; + bVar3 = *(byte *)((int)param_1 + 5); + bVar8 = 0x2e; + bVar4 = *(byte *)(param_1 + 1); + FUN_004dbb24(&DAT_00524e20,s_Error___Resource_file_004e0d5c,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004e0d75,(char *)0x0); + piVar6 = FUN_004db78c(&DAT_00524e20,(uint)bVar4); + piVar6 = FUN_004db92c(piVar6,bVar8); + piVar6 = FUN_004db78c(piVar6,(uint)bVar3); + piVar6 = FUN_004db92c(piVar6,bVar9); + piVar6 = FUN_004db78c(piVar6,(uint)bVar2); + piVar6 = FUN_004db92c(piVar6,bVar10); + piVar6 = FUN_004db78c(piVar6,(uint)bVar1); + FUN_004dbb24(piVar6,s_is_obsolete__004e0d78,(char *)0x0); + FUN_004036a0(1); + } + return param_1; +} + + + +/* @00407354 file=? name=FUN_00407354 */ + +void __cdecl FUN_00407354(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e0e74; + param_1[7] = (int)&PTR_FUN_004e09e0; + FUN_00403564((int)(param_1 + 7)); + FUN_00406d34(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00407390 file=? name=FUN_00407390 */ + +undefined4 __cdecl FUN_00407390(int param_1,char *param_2) + +{ + char cVar1; + byte bVar2; + int iVar3; + int iVar4; + int *piVar5; + int *piVar6; + char *pcVar7; + int iVar8; + undefined4 uVar9; + uint uVar10; + uint uVar11; + CHAR *pCVar12; + char *pcVar13; + LPCSTR pCVar14; + byte bVar15; + byte bVar16; + byte bVar17; + int local_60; + int local_5c; + char local_58 [32]; + undefined4 local_38; + int local_34; + undefined4 local_30; + uint local_2c; + int *local_28; + int *local_24; + int local_20; + char *local_1c; + uint local_18; + int *local_14; + uint local_10; + int *local_c; + uint local_8; + + uVar10 = 0xffffffff; + pcVar7 = param_2; + do { + pcVar13 = pcVar7; + if (uVar10 == 0) break; + uVar10 = uVar10 - 1; + pcVar13 = pcVar7 + 1; + cVar1 = *pcVar7; + pcVar7 = pcVar13; + } while (cVar1 != '\0'); + uVar10 = ~uVar10; + pCVar12 = pcVar13 + -uVar10; + pCVar14 = (LPCSTR)(param_1 + 0x34); + for (uVar11 = uVar10 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) { + *(undefined4 *)pCVar14 = *(undefined4 *)pCVar12; + pCVar12 = pCVar12 + 4; + pCVar14 = pCVar14 + 4; + } + for (uVar10 = uVar10 & 3; uVar10 != 0; uVar10 = uVar10 - 1) { + *pCVar14 = *pCVar12; + pCVar12 = pCVar12 + 1; + pCVar14 = pCVar14 + 1; + } + piVar6 = (int *)(param_1 + 0x1c); + FUN_004034e4((int)piVar6,(LPCSTR)(param_1 + 0x34),0); + if (*(int *)(param_1 + 0x2c) != -1) { + *(undefined4 *)(param_1 + 0x18) = 0; + (**(code **)(*(int *)(param_1 + 0x1c) + 0x1c))(piVar6,param_1 + 4,4); + if (*(char *)(param_1 + 4) != '\x01') { + bVar2 = *(byte *)(param_1 + 7); + bVar17 = 0x2e; + local_8 = (uint)*(byte *)(param_1 + 6); + bVar16 = 0x2e; + local_10 = (uint)*(byte *)(param_1 + 5); + bVar15 = 0x2e; + local_18 = (uint)*(byte *)(param_1 + 4); + local_1c = param_2; + FUN_004dbb24(&DAT_00524e20,s_Error___Resource_file_004e0d88,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,local_1c,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004e0da1,(char *)0x0); + piVar5 = FUN_004db78c(&DAT_00524e20,local_18); + local_14 = FUN_004db92c(piVar5,bVar15); + piVar5 = FUN_004db78c(local_14,local_10); + local_c = FUN_004db92c(piVar5,bVar16); + piVar5 = FUN_004db78c(local_c,local_8); + piVar5 = FUN_004db92c(piVar5,bVar17); + piVar5 = FUN_004db78c(piVar5,(uint)bVar2); + FUN_004dbb24(piVar5,s_is_obsolete__004e0da4,(char *)0x0); + FUN_004036a0(1); + } + piVar6 = (int *)(**(code **)(*piVar6 + 0x1c))(piVar6,param_1 + 8,4); + (**(code **)(*piVar6 + 0x1c))(piVar6,param_1 + 0x18,4); + pcVar7 = (char *)FUN_004dee74(s_PRELOAD_004e0db4); + if ((pcVar7 == (char *)0x0) || (iVar8 = FUN_004d4b58(pcVar7,&DAT_004e0dbc), iVar8 != 0)) { + local_20 = 1; + } + else { + local_20 = 0; + } + local_24 = (int *)FUN_004022b0(*(int *)(param_1 + 0x18) << 2); + (**(code **)(*(int *)(param_1 + 0x1c) + 0x1c)) + (param_1 + 0x1c,local_24,*(int *)(param_1 + 0x18) << 2); + iVar8 = *(int *)(param_1 + 0x18) + 0x32; + *(int *)(param_1 + 0x10) = iVar8; + uVar9 = FUN_004022b0(iVar8 * 4); + *(undefined4 *)(param_1 + 0xc) = uVar9; + for (iVar8 = 0; iVar8 < *(int *)(param_1 + 0x10); iVar8 = iVar8 + 1) { + *(undefined4 *)(*(int *)(param_1 + 0xc) + iVar8 * 4) = 0; + } + *(int *)(param_1 + 0x18) = *(int *)(param_1 + 0x18) + -1; + local_28 = local_24; + for (iVar8 = 0; iVar8 <= *(int *)(param_1 + 0x18); iVar8 = iVar8 + 1) { + if (*local_28 == 0) { + *(undefined4 *)(*(int *)(param_1 + 0xc) + iVar8 * 4) = 0; + } + else { + piVar6 = (int *)(param_1 + 0x1c); + (**(code **)(*(int *)(param_1 + 0x1c) + 0xc))(piVar6,*local_28); + (**(code **)(*piVar6 + 0x1c))(piVar6,&local_60,0x38); + piVar6 = (int *)0x0; + if (((local_34 == 0) && (local_2c != 0)) && (local_20 != 0)) { + piVar6 = (int *)FUN_004022b0(local_2c); + (**(code **)(*(int *)(param_1 + 0x1c) + 0xc))(param_1 + 0x1c,local_30); + (**(code **)(*(int *)(param_1 + 0x1c) + 0x1c))(param_1 + 0x1c,piVar6,local_2c); + } + if ((local_5c < 9) && (piVar6 != (int *)0x0)) { + uVar9 = FUN_00406ec4(param_1,local_58,local_5c,local_38,local_34,piVar6 + 1,*piVar6, + local_60); + *(undefined4 *)(*(int *)(param_1 + 0xc) + iVar8 * 4) = uVar9; + } + else { + uVar9 = FUN_00406db4(param_1,local_58,local_5c,local_38,local_34,piVar6,local_2c,local_60) + ; + *(undefined4 *)(*(int *)(param_1 + 0xc) + iVar8 * 4) = uVar9; + } + iVar3 = *(int *)(*(int *)(param_1 + 0xc) + iVar8 * 4); + *(undefined4 *)(iVar3 + 0x34) = local_30; + if (piVar6 != (int *)0x0) { + iVar4 = *(int *)(iVar3 + 4); + *(int *)(iVar3 + 4) = *(int *)(iVar3 + 4) + 1; + if (iVar4 == 0) { + FUN_00406cd0(iVar3); + } + FUN_004022e8(piVar6); + } + } + local_28 = local_28 + 1; + } + FUN_004022e8(local_24); + return 1; + } + return 0; +} + + + +/* @004076c0 file=? name=FUN_004076c0 */ + +undefined4 __cdecl FUN_004076c0(int param_1) + +{ + int *piVar1; + int iVar2; + undefined4 *puVar3; + undefined4 uVar4; + int *piVar5; + int iVar6; + undefined4 local_44; + undefined4 local_40; + undefined4 local_3c [8]; + undefined4 local_1c; + uint local_18; + int local_14; + undefined4 local_10; + int *local_c; + int *local_8; + + if (*(int *)(param_1 + 0xc) == 0) { + uVar4 = 0; + } + else { + for (iVar6 = 0; iVar6 <= *(int *)(param_1 + 0x18); iVar6 = iVar6 + 1) { + iVar2 = *(int *)(*(int *)(param_1 + 0xc) + iVar6 * 4); + if (iVar2 != 0) { + FUN_00406cd0(iVar2); + } + } + if (*(int *)(param_1 + 0x2c) != -1) { + FUN_00403564(param_1 + 0x1c); + } + piVar1 = (int *)(param_1 + 0x1c); + FUN_004034e4((int)piVar1,(LPCSTR)(param_1 + 0x34),1); + *(int *)(param_1 + 0x18) = *(int *)(param_1 + 0x18) + 1; + (**(code **)(*(int *)(param_1 + 0x1c) + 0x20))(piVar1,param_1 + 4,4); + piVar5 = (int *)(**(code **)(*piVar1 + 0x20))(piVar1,param_1 + 8,4); + (**(code **)(*piVar5 + 0x20))(piVar5,param_1 + 0x18,4); + local_8 = (int *)FUN_004022b0(*(int *)(param_1 + 0x18) << 2); + (**(code **)(*(int *)(param_1 + 0x1c) + 0x20))(piVar1,local_8,*(int *)(param_1 + 0x18) << 2); + local_c = local_8; + for (iVar6 = 0; iVar6 < *(int *)(param_1 + 0x18); iVar6 = iVar6 + 1) { + puVar3 = *(undefined4 **)(*(int *)(param_1 + 0xc) + iVar6 * 4); + if (puVar3 == (undefined4 *)0x0) { + *local_c = 0; + } + else { + local_14 = *(int *)(param_1 + 0x24) - *(int *)(param_1 + 0x20); + (**(code **)(*(int *)(param_1 + 0x1c) + 0x20))(param_1 + 0x1c,puVar3[0xf],puVar3[0x10]); + *local_c = *(int *)(param_1 + 0x24) - *(int *)(param_1 + 0x20); + local_44 = *puVar3; + local_40 = puVar3[2]; + FUN_004d4918(local_3c,puVar3 + 3,0x20); + local_10 = puVar3[0x10]; + local_1c = puVar3[0xb]; + local_18 = puVar3[0xc] & 0xfffffffe; + (**(code **)(*(int *)(param_1 + 0x1c) + 0x20))((int *)(param_1 + 0x1c),&local_44,0x38); + } + local_c = local_c + 1; + } + iVar6 = param_1 + 0x1c; + (**(code **)(*(int *)(param_1 + 0x1c) + 0xc))(iVar6,0xc); + (**(code **)(*(int *)(param_1 + 0x1c) + 0x20))(iVar6,local_8,*(int *)(param_1 + 0x18) << 2); + FUN_004022d0(local_8); + *(int *)(param_1 + 0x18) = *(int *)(param_1 + 0x18) + -1; + FUN_00403564(iVar6); + uVar4 = 1; + } + return uVar4; +} + + + +/* @00407860 file=? name=FUN_00407860 */ + +void __cdecl FUN_00407860(int param_1,char *param_2) + +{ + char cVar1; + uint uVar2; + uint uVar3; + char *pcVar4; + char *pcVar5; + + uVar2 = 0xffffffff; + do { + pcVar4 = param_2; + if (uVar2 == 0) break; + uVar2 = uVar2 - 1; + pcVar4 = param_2 + 1; + cVar1 = *param_2; + param_2 = pcVar4; + } while (cVar1 != '\0'); + uVar2 = ~uVar2; + pcVar4 = pcVar4 + -uVar2; + pcVar5 = (char *)(param_1 + 0x34); + for (uVar3 = uVar2 >> 2; uVar3 != 0; uVar3 = uVar3 - 1) { + *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4; + pcVar4 = pcVar4 + 4; + pcVar5 = pcVar5 + 4; + } + for (uVar2 = uVar2 & 3; uVar2 != 0; uVar2 = uVar2 - 1) { + *pcVar5 = *pcVar4; + pcVar4 = pcVar4 + 1; + pcVar5 = pcVar5 + 1; + } + FUN_004076c0(param_1); + return; +} + + + +/* @0040789c file=? name=FUN_0040789c */ + +void __cdecl FUN_0040789c(int param_1,int param_2) + +{ + undefined4 uVar1; + + *(uint *)(param_2 + 0x30) = *(uint *)(param_2 + 0x30) | 1; + uVar1 = FUN_004022b0(*(uint *)(param_2 + 0x40)); + *(undefined4 *)(param_2 + 0x3c) = uVar1; + (**(code **)(*(int *)(param_1 + 0x1c) + 0xc))(param_1 + 0x1c,*(undefined4 *)(param_2 + 0x34)); + (**(code **)(*(int *)(param_1 + 0x1c) + 0x1c)) + (param_1 + 0x1c,*(undefined4 *)(param_2 + 0x3c),*(undefined4 *)(param_2 + 0x40)); + return; +} + + + +/* @004078e4 file=? name=FUN_004078e4 */ + +undefined4 FUN_004078e4(void) + +{ + return 1; +} + + + +/* @004078ee file=? name=FUN_004078ee */ + +void __cdecl FUN_004078ee(undefined4 param_1,int param_2) + +{ + *(uint *)(param_2 + 0x30) = *(uint *)(param_2 + 0x30) | 1; + return; +} + + + +/* @004078fc file=? name=FUN_004078fc */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +int __cdecl FUN_004078fc(float param_1) + +{ + int iVar1; + + FUN_004dcd10((double)param_1); + iVar1 = FUN_004dcd94(); + if (_DAT_00407940 <= param_1 - (float)iVar1) { + iVar1 = iVar1 + 1; + } + return iVar1; +} + + + +/* @004079fc file=munga/scalar.cpp name=FUN_004079fc */ + +void __cdecl FUN_004079fc(char *param_1,int param_2) + +{ + if (param_1 == (char *)0x0) { + FUN_0040385c(s_Convert_From_Ascii___str____NULL_004e0e7c,s_d__tesla_bt_munga_SCALAR_CPP_004e0e9d + ,0x5d); + } + if (param_2 == 0) { + FUN_0040385c(s_Convert_From_Ascii___value____NU_004e0eba,s_d__tesla_bt_munga_SCALAR_CPP_004e0edd + ,0x61); + } + if (((&DAT_005207dd)[*param_1] & 0xc) != 0) { + FUN_004dbb24(&DAT_00524e20,s_Convert_From_Ascii___str____004e0efa,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,param_1,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004e0f17,(char *)0x0); + FUN_0040385c(s_Convert_From_Ascii___isalpha__st_004e0f19,s_d__tesla_bt_munga_SCALAR_CPP_004e0f3c + ,0x66); + } + return; +} + + + +/* @00407a90 file=? name=FUN_00407a90 */ + +void __cdecl FUN_00407a90(char *param_1,undefined1 *param_2) + +{ + int iVar1; + + FUN_004079fc(param_1,(int)param_2); + iVar1 = FUN_004dd1e0(param_1); + *param_2 = (char)iVar1; + return; +} + + + +/* @00407ab8 file=? name=FUN_00407ab8 */ + +void __cdecl FUN_00407ab8(char *param_1,undefined1 *param_2) + +{ + int iVar1; + + FUN_004079fc(param_1,(int)param_2); + iVar1 = FUN_004dd1e0(param_1); + *param_2 = (char)iVar1; + return; +} + + + +/* @00407ae0 file=? name=FUN_00407ae0 */ + +void __cdecl FUN_00407ae0(char *param_1,int *param_2) + +{ + int iVar1; + + FUN_004079fc(param_1,(int)param_2); + iVar1 = FUN_004dd1e0(param_1); + *param_2 = iVar1; + return; +} + + + +/* @00407b08 file=? name=FUN_00407b08 */ + +void __cdecl FUN_00407b08(char *param_1,int *param_2) + +{ + int iVar1; + + FUN_004079fc(param_1,(int)param_2); + iVar1 = FUN_004dd1e0(param_1); + *param_2 = iVar1; + return; +} + + + +/* @00407b30 file=? name=FUN_00407b30 */ + +void __cdecl FUN_00407b30(char *param_1,int *param_2) + +{ + int iVar1; + + FUN_004079fc(param_1,(int)param_2); + iVar1 = FUN_004dd1e0(param_1); + *param_2 = iVar1; + return; +} + + + +/* @00407b54 file=? name=FUN_00407b54 */ + +void __cdecl FUN_00407b54(char *param_1,int *param_2) + +{ + int iVar1; + + FUN_004079fc(param_1,(int)param_2); + iVar1 = FUN_004dd1e0(param_1); + *param_2 = iVar1; + return; +} + + + +/* @00407b78 file=? name=FUN_00407b78 */ + +void __cdecl FUN_00407b78(char *param_1,float *param_2) + +{ + float10 fVar1; + + FUN_004079fc(param_1,(int)param_2); + fVar1 = (float10)FUN_004dd1cc(param_1); + *param_2 = (float)fVar1; + return; +} + + + +/* @00407b9c file=? name=FUN_00407b9c */ + +void __cdecl FUN_00407b9c(undefined4 *param_1) + +{ + *param_1 = 1; + param_1[2] = 0; + return; +} + + + +/* @00407bb0 file=? name=FUN_00407bb0 */ + +void __cdecl +FUN_00407bb0(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4, + undefined4 param_5) + +{ + *param_1 = param_2; + param_1[1] = param_3; + param_1[2] = param_4; + param_1[3] = param_5; + return; +} + + + +/* @00407bd0 file=? name=FUN_00407bd0 */ + +void __cdecl +FUN_00407bd0(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4, + undefined4 param_5) + +{ + *param_1 = param_2; + param_1[1] = param_3; + param_1[2] = param_4; + param_1[3] = param_5; + return; +} + + + +/* @00407bf0 file=? name=FUN_00407bf0 */ + +void __cdecl FUN_00407bf0(int *param_1,int *param_2,int *param_3) + +{ + bool bVar1; + int iVar2; + + if ((param_2[2] < *param_2) || (param_2[3] < param_2[1])) { + bVar1 = true; + } + else { + bVar1 = false; + } + if (!bVar1) { + if ((param_3[2] < *param_3) || (param_3[3] < param_3[1])) { + bVar1 = true; + } + else { + bVar1 = false; + } + if (bVar1) { + *param_1 = *param_2; + param_1[1] = param_2[1]; + param_1[2] = param_2[2]; + param_1[3] = param_2[3]; + return; + } + if (*param_2 < *param_3) { + iVar2 = *param_2; + } + else { + iVar2 = *param_3; + } + *param_1 = iVar2; + if (param_2[1] < param_3[1]) { + iVar2 = param_2[1]; + } + else { + iVar2 = param_3[1]; + } + param_1[1] = iVar2; + if (param_3[2] < param_2[2]) { + iVar2 = param_2[2]; + } + else { + iVar2 = param_3[2]; + } + param_1[2] = iVar2; + if (param_3[3] < param_2[3]) { + iVar2 = param_2[3]; + } + else { + iVar2 = param_3[3]; + } + param_1[3] = iVar2; + return; + } + bVar1 = true; + if ((*param_3 <= param_3[2]) && (param_3[1] <= param_3[3])) { + bVar1 = false; + } + if (bVar1) { + *param_1 = 1; + param_1[2] = 0; + return; + } + *param_1 = *param_3; + param_1[1] = param_3[1]; + param_1[2] = param_3[2]; + param_1[3] = param_3[3]; + return; +} + + + +/* @00407cd0 file=? name=FUN_00407cd0 */ + +void __cdecl FUN_00407cd0(int *param_1,int *param_2,int *param_3) + +{ + bool bVar1; + int iVar2; + + if ((param_2[2] < *param_2) || (param_2[3] < param_2[1])) { + bVar1 = true; + } + else { + bVar1 = false; + } + if (bVar1) { + *param_1 = 1; + param_1[2] = 0; + return; + } + if ((param_3[2] < *param_3) || (param_3[3] < param_3[1])) { + bVar1 = true; + } + else { + bVar1 = false; + } + if (bVar1) { + *param_1 = 1; + param_1[2] = 0; + return; + } + if (*param_3 < *param_2) { + iVar2 = *param_2; + } + else { + iVar2 = *param_3; + } + *param_1 = iVar2; + if (param_3[1] < param_2[1]) { + iVar2 = param_2[1]; + } + else { + iVar2 = param_3[1]; + } + param_1[1] = iVar2; + if (param_2[2] < param_3[2]) { + iVar2 = param_2[2]; + } + else { + iVar2 = param_3[2]; + } + param_1[2] = iVar2; + if (param_2[3] < param_3[3]) { + iVar2 = param_2[3]; + } + else { + iVar2 = param_3[3]; + } + param_1[3] = iVar2; + return; +} + + + +/* @00407d78 file=? name=FUN_00407d78 */ + +void __cdecl FUN_00407d78(int *param_1,uint *param_2) + +{ + int *piVar1; + byte bVar2; + uint *puVar3; + byte bVar4; + + bVar4 = 0x29; + puVar3 = param_2 + 2; + bVar2 = 0x2c; + piVar1 = FUN_004db92c(param_1,0x28); + piVar1 = (int *)FUN_00407f08(piVar1,param_2); + piVar1 = FUN_004db92c(piVar1,bVar2); + piVar1 = (int *)FUN_00407f08(piVar1,puVar3); + FUN_004db92c(piVar1,bVar4); + return; +} + + + +/* @00407dc0 file=? name=FUN_00407dc0 */ + +undefined4 FUN_00407dc0(void) + +{ + return 1; +} + + + +/* @00407dca file=? name=FUN_00407dca */ + +void __cdecl FUN_00407dca(int *param_1,int *param_2) + +{ + *param_1 = -*param_2; + param_1[1] = -param_2[1]; + return; +} + + + +/* @00407de3 file=? name=FUN_00407de3 */ + +void __cdecl FUN_00407de3(int *param_1,int *param_2,int *param_3) + +{ + *param_1 = *param_3 + *param_2; + param_1[1] = param_3[1] + param_2[1]; + return; +} + + + +/* @00407e04 file=? name=FUN_00407e04 */ + +void __cdecl FUN_00407e04(int *param_1,int *param_2,int *param_3) + +{ + *param_1 = *param_2 - *param_3; + param_1[1] = param_2[1] - param_3[1]; + return; +} + + + +/* @00407e25 file=? name=FUN_00407e25 */ + +void __cdecl FUN_00407e25(int *param_1,int *param_2,int param_3) + +{ + *param_1 = *param_2 * param_3; + param_1[1] = param_2[1] * param_3; + return; +} + + + +/* @00407e45 file=? name=FUN_00407e45 */ + +void __cdecl FUN_00407e45(int *param_1,int *param_2,int *param_3) + +{ + *param_1 = *param_3 * *param_2; + param_1[1] = param_3[1] * param_2[1]; + return; +} + + + +/* @00407e66 file=? name=FUN_00407e66 */ + +int * __cdecl FUN_00407e66(int *param_1,int *param_2,int param_3) + +{ + *param_1 = *param_2 / param_3; + param_1[1] = param_2[1] / param_3; + return param_1; +} + + + +/* @00407e8a file=? name=FUN_00407e8a */ + +int * __cdecl FUN_00407e8a(int *param_1,int *param_2,int *param_3) + +{ + *param_1 = *param_2 / *param_3; + param_1[1] = param_2[1] / param_3[1]; + return param_1; +} + + + +/* @00407eaf file=? name=FUN_00407eaf */ + +int * __cdecl FUN_00407eaf(int *param_1,int *param_2) + +{ + int iVar1; + + FUN_004dd138((double)(*param_2 * *param_2 + param_2[1] * param_2[1])); + iVar1 = FUN_004dcd94(); + *param_1 = *param_2 / iVar1; + param_1[1] = param_2[1] / iVar1; + return param_1; +} + + + +/* @00407efe file=? name=FUN_00407efe */ + +undefined4 FUN_00407efe(void) + +{ + return 1; +} + + + +/* @00407f08 file=? name=FUN_00407f08 */ + +void __cdecl FUN_00407f08(int *param_1,uint *param_2) + +{ + uint uVar1; + uint uVar2; + int *piVar3; + byte bVar4; + byte bVar5; + + bVar5 = 0x3e; + uVar1 = param_2[1]; + bVar4 = 0x2c; + uVar2 = *param_2; + piVar3 = FUN_004db92c(param_1,0x3c); + piVar3 = FUN_004db78c(piVar3,uVar2); + piVar3 = FUN_004db92c(piVar3,bVar4); + piVar3 = FUN_004db78c(piVar3,uVar1); + FUN_004db92c(piVar3,bVar5); + return; +} + + + +/* @00407f68 file=? name=FUN_00407f68 */ + +void FUN_00407f68(void) + +{ + char *pcVar1; + int iVar2; + uint uVar3; + uint *puVar4; + uint uVar5; + + pcVar1 = (char *)FUN_004dee74(s_RANDOM_004e0f60); + if (pcVar1 == (char *)0x0) { + iVar2 = FUN_004dfda8((int *)0x0); + } + else { + iVar2 = FUN_004dd1e0(pcVar1); + } + FUN_004dd4c0(iVar2); + DAT_004e0f5c = 0; + iVar2 = 0; + puVar4 = &DAT_00521b74; + do { + uVar3 = FUN_004dd4d4(); + *puVar4 = uVar3; + iVar2 = iVar2 + 1; + puVar4 = puVar4 + 1; + } while (iVar2 < 0xfa); + uVar5 = 0x3fff; + iVar2 = 0; + uVar3 = 0x4000; + while ((1 << ((byte)iVar2 & 0x1f) & 0x4000U) == 0) { + iVar2 = iVar2 + 1; + } + puVar4 = &DAT_00521bac; + while (iVar2 != 0) { + *puVar4 = *puVar4 & uVar5; + *puVar4 = *puVar4 | uVar3; + uVar5 = (int)uVar5 >> 1; + uVar3 = (int)uVar3 >> 1; + puVar4 = puVar4 + 0xb; + iVar2 = iVar2 + -1; + } + return; +} + + + +/* @00407fec file=? name=FUN_00407fec */ + +void FUN_00407fec(void) + +{ + int iVar1; + + if (DAT_004e0f5c < 0x93) { + iVar1 = DAT_004e0f5c + 0x67; + } + else { + iVar1 = DAT_004e0f5c + -0x93; + } + (&DAT_00521b74)[DAT_004e0f5c] = (&DAT_00521b74)[DAT_004e0f5c] ^ (&DAT_00521b74)[iVar1]; + DAT_004e0f5c = DAT_004e0f5c + 1; + if (DAT_004e0f5c == 0xfa) { + DAT_004e0f5c = 0; + } + return; +} + + + +/* @00408050 file=? name=FUN_00408050 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 FUN_00408050(void) + +{ + int iVar1; + + iVar1 = FUN_00407fec(); + return (float10)(_DAT_00408078 * (float)iVar1); +} + + + +/* @0040807c file=? name=FUN_0040807c */ + +int __cdecl FUN_0040807c(undefined4 param_1,uint param_2) + +{ + int iVar1; + + do { + iVar1 = FUN_00407fec(); + } while (0x7fff - (int)(0x8000 % (ulonglong)param_2) < iVar1); + return iVar1 % (int)param_2; +} + + + +/* @004080ac file=? name=FUN_004080ac */ + +int * __cdecl FUN_004080ac(int *param_1,uint param_2) + +{ + if ((int)param_2 < 2) { + param_2 = 2; + } + param_1[1] = param_2; + *param_1 = 0x7fff - (int)(0x8000 % (ulonglong)param_2); + return param_1; +} + + + +/* @004080e0 file=? name=FUN_004080e0 */ + +int __cdecl FUN_004080e0(int *param_1) + +{ + int iVar1; + + do { + iVar1 = FUN_00407fec(); + } while (*param_1 < iVar1); + return iVar1 % param_1[1] + 1; +} + + + +/* @00408110 file=? name=FUN_00408110 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 __cdecl FUN_00408110(float param_1) + +{ + float10 fVar1; + undefined4 local_8; + + fVar1 = FUN_004dcd2c((double)param_1,6.2831854820251465); + local_8 = (float)fVar1; + if (local_8 <= _DAT_00408170) { + if (local_8 < _DAT_00408178) { + local_8 = _DAT_00408174 + local_8; + } + } + else { + local_8 = local_8 - _DAT_00408174; + } + return (float10)local_8; +} + + + +/* @0040817c file=? name=FUN_0040817c */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float * __cdecl FUN_0040817c(float *param_1) + +{ + float10 fVar1; + + fVar1 = FUN_004dcd2c((double)*param_1,6.2831854820251465); + *param_1 = (float)fVar1; + if (*param_1 <= _DAT_004081d4) { + if (*param_1 < _DAT_004081dc) { + *param_1 = _DAT_004081d8 + *param_1; + } + } + else { + *param_1 = *param_1 - _DAT_004081d8; + } + return param_1; +} + + + +/* @004081e0 file=? name=FUN_004081e0 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float * __cdecl FUN_004081e0(float *param_1,float *param_2,float *param_3,float param_4) + +{ + float fVar1; + float10 fVar2; + undefined4 local_c; + + fVar2 = FUN_00408110(*param_2); + fVar1 = (float)fVar2; + fVar2 = FUN_00408110(*param_3); + local_c = (float)fVar2; + if (local_c - fVar1 <= _DAT_00408260) { + if (local_c - fVar1 < _DAT_00408268) { + local_c = _DAT_00408264 + local_c; + } + } + else { + local_c = local_c - _DAT_00408264; + } + *param_1 = local_c * param_4 + (_DAT_0040826c - param_4) * fVar1; + return param_1; +} + + + +/* @00408270 file=? name=FUN_00408270 */ + +int * __cdecl FUN_00408270(int *param_1,float *param_2) + +{ + int *piVar1; + + piVar1 = FUN_004db634(param_1,(float10)*param_2); + FUN_004dbb24(piVar1,&DAT_004e0f68,(char *)0x0); + return piVar1; +} + + + +/* @004082ac file=? name=FUN_004082ac */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl FUN_004082ac(float *param_1) + +{ + undefined4 uVar1; + + if ((*param_1 < _DAT_004082d8) || (_DAT_004082dc < *param_1)) { + uVar1 = 0; + } + else { + uVar1 = 1; + } + return uVar1; +} + + + +/* @0040831c file=? name=FUN_0040831c */ + +undefined4 FUN_0040831c(void) + +{ + return 1; +} + + + +/* @00408328 file=? name=FUN_00408328 */ + +float * __cdecl FUN_00408328(float *param_1,float *param_2) + +{ + float10 fVar1; + + fVar1 = (float10)FUN_004dc9b4(SUB84((double)*param_2,0),(int)((ulonglong)(double)*param_2 >> 0x20) + ); + param_1[1] = (float)fVar1; + fVar1 = (float10)FUN_004dd0f4(SUB84((double)*param_2,0),(int)((ulonglong)(double)*param_2 >> 0x20) + ); + *param_1 = (float)fVar1; + fVar1 = (float10)FUN_004dc9b4(SUB84((double)*param_2,0),(int)((ulonglong)(double)*param_2 >> 0x20) + ); + param_1[1] = (float)fVar1; + return param_1; +} + + + +/* @00408374 file=? name=FUN_00408374 */ + +void __cdecl FUN_00408374(int *param_1,float *param_2) + +{ + float fVar1; + float fVar2; + int *piVar3; + byte bVar4; + byte bVar5; + + bVar5 = 0x7d; + fVar1 = *param_2; + bVar4 = 0x2c; + fVar2 = param_2[1]; + piVar3 = FUN_004db92c(param_1,0x7b); + piVar3 = FUN_004db634(piVar3,(float10)fVar2); + piVar3 = FUN_004db92c(piVar3,bVar4); + piVar3 = FUN_004db634(piVar3,(float10)fVar1); + FUN_004db92c(piVar3,bVar5); + return; +} + + + +/* @004083e0 file=? name=FUN_004083e0 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +bool __cdecl FUN_004083e0(float *param_1) + +{ + float10 fVar1; + + fVar1 = FUN_004dcd00((double)((param_1[1] * param_1[1] + *param_1 * *param_1) - _DAT_00408438)); + return fVar1 <= (float10)_DAT_0040843c; +} + + + +/* @00408440 file=? name=FUN_00408440 */ + +void __cdecl FUN_00408440(undefined4 *param_1,undefined4 *param_2) + +{ + *param_1 = *param_2; + param_1[1] = param_2[1]; + param_1[2] = param_2[2]; + return; +} + + + +/* @0040845c file=? name=FUN_0040845c */ + +undefined4 __cdecl FUN_0040845c(float *param_1,float param_2) + +{ + float10 fVar1; + + fVar1 = FUN_004dcd00((double)*param_1); + if (((fVar1 <= (float10)param_2) && + (fVar1 = FUN_004dcd00((double)param_1[1]), fVar1 <= (float10)param_2)) && + (fVar1 = FUN_004dcd00((double)param_1[2]), fVar1 <= (float10)param_2)) { + return 1; + } + return 0; +} + + + +/* @004084fc file=? name=FUN_004084fc */ + +undefined4 __cdecl FUN_004084fc(float *param_1,float *param_2,float param_3) + +{ + float10 fVar1; + + fVar1 = FUN_004dcd00((double)(*param_1 - *param_2)); + if (((fVar1 <= (float10)param_3) && + (fVar1 = FUN_004dcd00((double)(param_1[1] - param_2[1])), fVar1 <= (float10)param_3)) && + (fVar1 = FUN_004dcd00((double)(param_1[2] - param_2[2])), fVar1 <= (float10)param_3)) { + return 1; + } + return 0; +} + + + +/* @004085bc file=? name=FUN_004085bc */ + +undefined4 FUN_004085bc(void) + +{ + return 1; +} + + + +/* @004085c8 file=? name=FUN_004085c8 */ + +void __cdecl FUN_004085c8(float *param_1,float *param_2) + +{ + *param_1 = -*param_2; + param_1[1] = -param_2[1]; + param_1[2] = -param_2[2]; + return; +} + + + +/* @004085ec file=? name=FUN_004085ec */ + +void __cdecl FUN_004085ec(float *param_1,float *param_2,float *param_3) + +{ + *param_1 = *param_2 + *param_3; + param_1[1] = param_2[1] + param_3[1]; + param_1[2] = param_2[2] + param_3[2]; + return; +} + + + +/* @00408614 file=? name=FUN_00408614 */ + +void __cdecl FUN_00408614(float *param_1,float *param_2,float *param_3,float param_4) + +{ + *param_1 = *param_3 * param_4 + *param_2; + param_1[1] = param_3[1] * param_4 + param_2[1]; + param_1[2] = param_3[2] * param_4 + param_2[2]; + return; +} + + + +/* @00408644 file=? name=FUN_00408644 */ + +void __cdecl FUN_00408644(float *param_1,float *param_2,float *param_3) + +{ + *param_1 = *param_2 - *param_3; + param_1[1] = param_2[1] - param_3[1]; + param_1[2] = param_2[2] - param_3[2]; + return; +} + + + +/* @0040866c file=? name=FUN_0040866c */ + +float * __cdecl FUN_0040866c(float *param_1,float *param_2,float *param_3) + +{ + *param_1 = param_2[1] * param_3[2] - param_2[2] * param_3[1]; + param_1[1] = param_2[2] * *param_3 - *param_2 * param_3[2]; + param_1[2] = *param_2 * param_3[1] - param_2[1] * *param_3; + return param_1; +} + + + +/* @004086ac file=? name=FUN_004086ac */ + +void __cdecl FUN_004086ac(float *param_1,float *param_2,float param_3) + +{ + *param_1 = *param_2 * param_3; + param_1[1] = param_2[1] * param_3; + param_1[2] = param_2[2] * param_3; + return; +} + + + +/* @004086d0 file=? name=FUN_004086d0 */ + +void __cdecl FUN_004086d0(float *param_1,float *param_2,float *param_3) + +{ + *param_1 = *param_2 * *param_3; + param_1[1] = param_2[1] * param_3[1]; + param_1[2] = param_2[2] * param_3[2]; + return; +} + + + +/* @004086f8 file=? name=FUN_004086f8 */ + +void __cdecl FUN_004086f8(float *param_1,float *param_2,float param_3) + +{ + *param_1 = *param_2 / param_3; + param_1[1] = param_2[1] / param_3; + param_1[2] = param_2[2] / param_3; + return; +} + + + +/* @0040871c file=? name=FUN_0040871c */ + +void __cdecl FUN_0040871c(float *param_1,float *param_2,float *param_3) + +{ + *param_1 = *param_2 / *param_3; + param_1[1] = param_2[1] / param_3[1]; + param_1[2] = param_2[2] / param_3[2]; + return; +} + + + +/* @00408744 file=? name=FUN_00408744 */ + +float * __cdecl FUN_00408744(float *param_1,float *param_2,float *param_3) + +{ + *param_1 = param_2[2] * param_3[2] + param_2[1] * param_3[1] + *param_2 * *param_3; + param_1[1] = param_2[2] * param_3[6] + param_2[1] * param_3[5] + *param_2 * param_3[4]; + param_1[2] = param_2[2] * param_3[10] + param_2[1] * param_3[9] + *param_2 * param_3[8]; + return param_1; +} + + + +/* @0040879c file=? name=FUN_0040879c */ + +float * __cdecl FUN_0040879c(float *param_1,float *param_2,float *param_3) + +{ + *param_1 = param_2[2] * param_3[8] + param_2[1] * param_3[4] + *param_2 * *param_3; + param_1[1] = param_2[2] * param_3[9] + param_2[1] * param_3[5] + *param_2 * param_3[1]; + param_1[2] = param_2[2] * param_3[10] + param_2[1] * param_3[6] + *param_2 * param_3[2]; + return param_1; +} + + + +/* @004087f4 file=? name=FUN_004087f4 */ + +float * __cdecl FUN_004087f4(float *param_1,float *param_2) + +{ + float fVar1; + float10 fVar2; + + fVar2 = FUN_004dd138((double)(param_2[2] * param_2[2] + + param_2[1] * param_2[1] + *param_2 * *param_2)); + fVar1 = (float)fVar2; + *param_1 = *param_2 / fVar1; + param_1[1] = param_2[1] / fVar1; + param_1[2] = param_2[2] / fVar1; + return param_1; +} + + + +/* @00408848 file=? name=FUN_00408848 */ + +void __cdecl FUN_00408848(float *param_1,float *param_2,float param_3,float *param_4,float param_5) + +{ + *param_1 = param_5 * *param_4 + param_3 * *param_2; + param_1[1] = param_5 * param_4[1] + param_3 * param_2[1]; + param_1[2] = param_5 * param_4[2] + param_3 * param_2[2]; + return; +} + + + +/* @00408888 file=? name=FUN_00408888 */ + +void __cdecl FUN_00408888(int *param_1,float *param_2) + +{ + int *piVar1; + int iVar2; + byte bVar3; + byte bVar4; + byte bVar5; + byte bVar6; + code *local_20; + undefined4 local_1c; + int *local_18; + float local_14; + int *local_10; + float local_c; + float local_8; + + bVar6 = 0x3e; + local_8 = param_2[2]; + bVar5 = 0x2c; + local_c = param_2[1]; + bVar4 = 0x2c; + local_14 = *param_2; + bVar3 = 0x3c; + FUN_004db000(&local_20,4); + if (param_1 == (int *)0x0) { + iVar2 = 0; + } + else { + iVar2 = *param_1; + } + (*local_20)(iVar2,local_1c); + local_18 = FUN_004db92c(param_1,bVar3); + piVar1 = FUN_004db634(local_18,(float10)local_14); + local_10 = FUN_004db92c(piVar1,bVar4); + piVar1 = FUN_004db634(local_10,(float10)local_c); + piVar1 = FUN_004db92c(piVar1,bVar5); + piVar1 = FUN_004db634(piVar1,(float10)local_8); + FUN_004db92c(piVar1,bVar6); + return; +} + + + +/* @00408944 file=? name=FUN_00408944 */ + +void __cdecl FUN_00408944(char *param_1,float *param_2) + +{ + uint *puVar1; + float10 fVar2; + uint local_44 [2]; + char *local_3c; + uint local_34 [2]; + char *local_2c; + uint local_24 [2]; + char *local_1c; + uint *local_14; + uint *local_10; + uint *local_c; + uint *local_8; + + puVar1 = (uint *)FUN_00402298(0x10); + if (puVar1 == (uint *)0x0) { + local_8 = (uint *)0x0; + } + else { + local_8 = FUN_00402460(puVar1,param_1); + } + local_8[3] = local_8[3] + 1; + FUN_00402838(local_24,local_8,0,(char *)0x0); + puVar1 = (uint *)FUN_00402298(0x10); + if (puVar1 == (uint *)0x0) { + local_c = (uint *)0x0; + } + else { + local_c = FUN_00402460(puVar1,local_1c); + } + local_c[3] = local_c[3] + 1; + FUN_004024d8((int *)local_24,2); + fVar2 = (float10)FUN_004dd1cc(local_c[2]); + *param_2 = (float)fVar2; + puVar1 = local_c + 3; + *puVar1 = *puVar1 - 1; + if (*puVar1 == 0) { + FUN_004024d8((int *)local_c,3); + } + FUN_00402838(local_34,local_8,1,(char *)0x0); + puVar1 = (uint *)FUN_00402298(0x10); + if (puVar1 == (uint *)0x0) { + local_10 = (uint *)0x0; + } + else { + local_10 = FUN_00402460(puVar1,local_2c); + } + local_10[3] = local_10[3] + 1; + FUN_004024d8((int *)local_34,2); + fVar2 = (float10)FUN_004dd1cc(local_10[2]); + param_2[1] = (float)fVar2; + puVar1 = local_10 + 3; + *puVar1 = *puVar1 - 1; + if (*puVar1 == 0) { + FUN_004024d8((int *)local_10,3); + } + FUN_00402838(local_44,local_8,2,(char *)0x0); + puVar1 = (uint *)FUN_00402298(0x10); + if (puVar1 == (uint *)0x0) { + local_14 = (uint *)0x0; + } + else { + local_14 = FUN_00402460(puVar1,local_3c); + } + local_14[3] = local_14[3] + 1; + FUN_004024d8((int *)local_44,2); + fVar2 = (float10)FUN_004dd1cc(local_14[2]); + param_2[2] = (float)fVar2; + puVar1 = local_14 + 3; + *puVar1 = *puVar1 - 1; + if (*puVar1 == 0) { + FUN_004024d8((int *)local_14,3); + } + puVar1 = local_8 + 3; + *puVar1 = *puVar1 - 1; + if (*puVar1 == 0) { + FUN_004024d8((int *)local_8,3); + } + return; +} + + + +/* @00408ad8 file=? name=FUN_00408ad8 */ + +void __cdecl FUN_00408ad8(undefined4 *param_1,undefined4 *param_2) + +{ + *param_1 = *param_2; + param_1[1] = param_2[2]; + param_1[2] = param_2[1]; + return; +} + + + +/* @00408af4 file=? name=FUN_00408af4 */ + +void __cdecl FUN_00408af4(undefined4 *param_1,undefined4 *param_2) + +{ + *param_1 = *param_2; + param_1[1] = -(float)param_2[2]; + param_1[2] = param_2[1]; + return; +} + + + +/* @00408b14 file=? name=FUN_00408b14 */ + +void __cdecl FUN_00408b14(undefined4 *param_1,undefined4 *param_2) + +{ + *param_1 = *param_2; + param_1[1] = param_2[1]; + param_1[2] = -(float)param_2[2]; + return; +} + + + +/* @00408b34 file=? name=FUN_00408b34 */ + +void __cdecl FUN_00408b34(undefined4 *param_1,undefined4 *param_2) + +{ + *param_1 = *param_2; + param_1[1] = param_2[2]; + param_1[2] = -(float)param_2[1]; + return; +} + + + +/* @00408b98 file=? name=FUN_00408b98 */ + +float * __cdecl FUN_00408b98(float *param_1,float *param_2,float *param_3) + +{ + *param_1 = param_2[2] * param_3[2] + param_2[1] * param_3[1] + *param_2 * *param_3 + param_3[3]; + param_1[1] = param_2[2] * param_3[6] + param_2[1] * param_3[5] + *param_2 * param_3[4] + + param_3[7]; + param_1[2] = param_2[2] * param_3[10] + param_2[1] * param_3[9] + *param_2 * param_3[8] + + param_3[0xb]; + return param_1; +} + + + +/* @00408bf8 file=? name=FUN_00408bf8 */ + +float * __cdecl FUN_00408bf8(float *param_1,float *param_2,float *param_3) + +{ + *param_1 = (((param_2[2] * param_3[8] + param_2[1] * param_3[4] + *param_2 * *param_3) - + param_3[3] * *param_3) - param_3[7] * param_3[4]) - param_3[0xb] * param_3[8]; + param_1[1] = (((param_2[2] * param_3[9] + param_2[1] * param_3[5] + *param_2 * param_3[1]) - + param_3[3] * param_3[1]) - param_3[7] * param_3[5]) - param_3[0xb] * param_3[9]; + param_1[2] = (((param_2[2] * param_3[10] + param_2[1] * param_3[6] + *param_2 * param_3[2]) - + param_3[3] * param_3[2]) - param_3[7] * param_3[6]) - param_3[0xb] * param_3[10]; + return param_1; +} + + + +/* @00408cbc file=? name=FUN_00408cbc */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl FUN_00408cbc(float *param_1) + +{ + float10 fVar1; + + fVar1 = FUN_004dcd00((double)(_DAT_00408d70 - + (param_1[2] * param_1[2] + + param_1[1] * param_1[1] + *param_1 * *param_1))); + if (((float10)_DAT_00408d74 < fVar1) && + (fVar1 = FUN_004dcd00((double)(_DAT_00408d70 - + (param_1[2] * param_1[2] + + param_1[1] * param_1[1] + *param_1 * *param_1))), + (float10)_DAT_00408d74 < fVar1)) { + return 0; + } + return 1; +} + + + +/* @00408d78 file=? name=FUN_00408d78 */ + +undefined4 __cdecl FUN_00408d78(int *param_1,int *param_2,float param_3) + +{ + float10 fVar1; + + if ((*param_1 == *param_2) && + (fVar1 = FUN_004dcd00((double)((float)param_1[1] - (float)param_2[1])), + fVar1 <= (float10)param_3)) { + return 1; + } + return 0; +} + + + +/* @00408dd4 file=? name=FUN_00408dd4 */ + +undefined4 * __cdecl FUN_00408dd4(undefined4 *param_1,undefined4 *param_2,int param_3,float param_4) + +{ + *param_1 = *param_2; + FUN_004081e0((float *)(param_1 + 1),(float *)(param_2 + 1),(float *)(param_3 + 4),param_4); + return param_1; +} + + + +/* @00408e04 file=? name=FUN_00408e04 */ + +int * __cdecl FUN_00408e04(int *param_1,int *param_2) + +{ + int iVar1; + int *piVar2; + + piVar2 = FUN_00408270(param_1,(float *)(param_2 + 1)); + FUN_004dbb24(piVar2,s_about_004e0fb4,(char *)0x0); + iVar1 = *param_2; + if (iVar1 == 0) { + FUN_004dbb24(param_1,s_X_Axis_004e0fbc,(char *)0x0); + } + else if (iVar1 == 1) { + FUN_004dbb24(param_1,s_Y_Axis_004e0fc3,(char *)0x0); + } + else if (iVar1 == 2) { + FUN_004dbb24(param_1,s_Z_Axis_004e0fca,(char *)0x0); + } + return param_1; +} + + + +/* @00408e78 file=? name=FUN_00408e78 */ + +bool __cdecl FUN_00408e78(uint *param_1) + +{ + return *param_1 < 3; +} + + + +/* @00408e90 file=? name=FUN_00408e90 */ + +void __cdecl FUN_00408e90(undefined4 *param_1,undefined4 *param_2) + +{ + *param_1 = *param_2; + param_1[1] = param_2[1]; + param_1[2] = param_2[2]; + return; +} + + + +/* @00408ec0 file=? name=FUN_00408ec0 */ + +float * __cdecl FUN_00408ec0(float *param_1,float *param_2) + +{ + float local_34 [12]; + + FUN_0040aadc(local_34); + FUN_0040ad2c(local_34,param_2); + FUN_00408f7c(param_1,local_34); + return param_1; +} + + + +/* @00408ef8 file=? name=FUN_00408ef8 */ + +void __cdecl FUN_00408ef8(int *param_1,int *param_2) + +{ + int iVar1; + + *param_1 = 0; + param_1[1] = 0; + param_1[2] = 0; + iVar1 = *param_2; + if (iVar1 == 0) { + *param_1 = param_2[1]; + } + else if (iVar1 == 1) { + param_1[1] = param_2[1]; + } + else if (iVar1 == 2) { + param_1[2] = param_2[1]; + } + return; +} + + + +/* @00408f44 file=? name=FUN_00408f44 */ + +void __cdecl FUN_00408f44(float *param_1,float *param_2) + +{ + float local_34 [12]; + + FUN_0040aadc(local_34); + FUN_0040adec(local_34,param_2); + FUN_00408f7c(param_1,local_34); + return; +} + + + +/* @00408f7c file=? name=FUN_00408f7c */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float * __cdecl FUN_00408f7c(float *param_1,float *param_2) + +{ + float10 fVar1; + float local_1c; + float local_18; + float local_14; + float local_10; + float local_c; + float local_8; + + local_14 = -param_2[8]; + fVar1 = FUN_004dcd00((double)(local_14 - _DAT_00409148)); + if ((float10)_DAT_0040914c < fVar1) { + fVar1 = FUN_004dcd00((double)(local_14 - _DAT_00409150)); + if ((float10)_DAT_0040914c < fVar1) { + fVar1 = FUN_004dd138((double)(_DAT_00409148 - local_14 * local_14)); + local_10 = (float)fVar1; + local_c = param_2[9] / local_10; + local_8 = param_2[10] / local_10; + local_1c = param_2[4] / local_10; + local_18 = *param_2 / local_10; + fVar1 = FUN_004dcd00((double)((local_c * local_14 * local_18 - local_8 * local_1c) - + param_2[1])); + if ((float10)_DAT_0040914c < fVar1) { + local_14 = -local_14; + local_c = -local_c; + local_8 = -local_8; + local_1c = -local_1c; + local_18 = -local_18; + } + } + else { + local_10 = 0.0; + local_1c = 0.0; + local_18 = 1.0; + local_c = -param_2[1]; + local_8 = -param_2[2]; + } + } + else { + local_10 = 0.0; + local_1c = 0.0; + local_18 = 1.0; + local_c = param_2[1]; + local_8 = param_2[2]; + } + fVar1 = FUN_004dc8ec((double)local_c,SUB84((double)local_8,0), + (uint)((ulonglong)(double)local_8 >> 0x20)); + *param_1 = (float)fVar1; + fVar1 = FUN_004dc8ec((double)local_14,SUB84((double)local_10,0), + (uint)((ulonglong)(double)local_10 >> 0x20)); + param_1[1] = (float)fVar1; + fVar1 = FUN_004dc8ec((double)local_1c,SUB84((double)local_18,0), + (uint)((ulonglong)(double)local_18 >> 0x20)); + param_1[2] = (float)fVar1; + return param_1; +} + + + +/* @004091f4 file=? name=FUN_004091f4 */ + +undefined4 __cdecl FUN_004091f4(float *param_1,float *param_2,float param_3) + +{ + float10 fVar1; + + fVar1 = FUN_004dcd00((double)(*param_1 - *param_2)); + if (((fVar1 <= (float10)param_3) && + (fVar1 = FUN_004dcd00((double)(param_1[1] - param_2[1])), fVar1 <= (float10)param_3)) && + (fVar1 = FUN_004dcd00((double)(param_1[2] - param_2[2])), fVar1 <= (float10)param_3)) { + return 1; + } + return 0; +} + + + +/* @004092b4 file=? name=FUN_004092b4 */ + +void __cdecl FUN_004092b4(float *param_1,float *param_2,float *param_3) + +{ + *param_1 = *param_2 + *param_3; + param_1[1] = param_2[1] + param_3[1]; + param_1[2] = param_2[2] + param_3[2]; + return; +} + + + +/* @004092fc file=? name=FUN_004092fc */ + +void __cdecl FUN_004092fc(float *param_1,float *param_2,float param_3) + +{ + *param_1 = *param_2 * param_3; + param_1[1] = param_2[1] * param_3; + param_1[2] = param_2[2] * param_3; + return; +} + + + +/* @00409340 file=? name=FUN_00409340 */ + +void __cdecl FUN_00409340(float *param_1,float *param_2,float *param_3,float param_4) + +{ + *param_1 = *param_3 * param_4 + *param_2; + param_1[1] = param_3[1] * param_4 + param_2[1]; + param_1[2] = param_3[2] * param_4 + param_2[2]; + return; +} + + + +/* @00409390 file=? name=FUN_00409390 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_00409390(float *param_1,float *param_2,float *param_3,float param_4) + +{ + *param_1 = *param_3 * param_4 + (_DAT_00409400 - param_4) * *param_2; + param_1[1] = param_3[1] * param_4 + (_DAT_00409400 - param_4) * param_2[1]; + param_1[2] = param_3[2] * param_4 + (_DAT_00409400 - param_4) * param_2[2]; + return; +} + + + +/* @0040942c file=? name=FUN_0040942c */ + +void __cdecl FUN_0040942c(int *param_1,float *param_2) + +{ + int *piVar1; + byte bVar2; + float *pfVar3; + byte bVar4; + float *pfVar5; + byte bVar6; + + bVar6 = 0x3e; + pfVar5 = param_2 + 2; + pfVar3 = param_2 + 1; + bVar4 = 0x2c; + bVar2 = 0x2c; + piVar1 = FUN_004db92c(param_1,0x3c); + piVar1 = FUN_00408270(piVar1,param_2); + piVar1 = FUN_004db92c(piVar1,bVar2); + piVar1 = FUN_00408270(piVar1,pfVar3); + piVar1 = FUN_004db92c(piVar1,bVar4); + piVar1 = FUN_00408270(piVar1,pfVar5); + FUN_004db92c(piVar1,bVar6); + return; +} + + + +/* @0040948c file=? name=FUN_0040948c */ + +undefined4 FUN_0040948c(void) + +{ + return 1; +} + + + +/* @00409498 file=? name=FUN_00409498 */ + +void __cdecl FUN_00409498(undefined4 *param_1,undefined4 *param_2) + +{ + param_1[1] = param_2[1]; + *param_1 = *param_2; + param_1[2] = param_2[2]; + return; +} + + + +/* @004094c8 file=? name=FUN_004094c8 */ + +float * __cdecl FUN_004094c8(float *param_1,float *param_2) + +{ + float local_34 [12]; + + FUN_0040aadc(local_34); + FUN_0040ac6c(local_34,param_2); + FUN_00409584(param_1,local_34); + return param_1; +} + + + +/* @00409500 file=? name=FUN_00409500 */ + +void __cdecl FUN_00409500(int *param_1,int *param_2) + +{ + int iVar1; + + param_1[1] = 0; + *param_1 = 0; + param_1[2] = 0; + iVar1 = *param_2; + if (iVar1 == 0) { + param_1[1] = param_2[1]; + } + else if (iVar1 == 1) { + *param_1 = param_2[1]; + } + else if (iVar1 == 2) { + param_1[2] = param_2[1]; + } + return; +} + + + +/* @0040954c file=? name=FUN_0040954c */ + +void __cdecl FUN_0040954c(float *param_1,float *param_2) + +{ + float local_34 [12]; + + FUN_0040aadc(local_34); + FUN_0040adec(local_34,param_2); + FUN_00409584(param_1,local_34); + return; +} + + + +/* @00409584 file=? name=FUN_00409584 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float * __cdecl FUN_00409584(float *param_1,float *param_2) + +{ + float10 fVar1; + float local_1c; + float local_18; + float local_14; + float local_10; + float local_c; + float local_8; + + local_c = -param_2[6]; + fVar1 = FUN_004dcd00((double)(local_c - _DAT_00409748)); + if ((float10)_DAT_0040974c < fVar1) { + fVar1 = FUN_004dcd00((double)(local_c - _DAT_00409750)); + if ((float10)_DAT_0040974c < fVar1) { + fVar1 = FUN_004dd138((double)(_DAT_00409748 - local_c * local_c)); + local_8 = (float)fVar1; + local_14 = param_2[2] / local_8; + local_10 = param_2[10] / local_8; + local_1c = param_2[4] / local_8; + local_18 = param_2[5] / local_8; + fVar1 = FUN_004dcd00((double)((local_c * local_14 * local_1c + local_10 * local_18) - *param_2 + )); + if ((float10)_DAT_0040974c < fVar1) { + local_c = -local_c; + local_14 = -local_14; + local_10 = -local_10; + local_1c = -local_1c; + local_18 = -local_18; + } + } + else { + local_8 = 0.0; + local_1c = 0.0; + local_18 = 1.0; + local_14 = param_2[8]; + local_10 = *param_2; + } + } + else { + local_8 = 0.0; + local_1c = 0.0; + local_18 = 1.0; + local_14 = param_2[1]; + local_10 = *param_2; + } + fVar1 = FUN_004dc8ec((double)local_c,SUB84((double)local_8,0), + (uint)((ulonglong)(double)local_8 >> 0x20)); + param_1[1] = (float)fVar1; + fVar1 = FUN_004dc8ec((double)local_14,SUB84((double)local_10,0), + (uint)((ulonglong)(double)local_10 >> 0x20)); + *param_1 = (float)fVar1; + fVar1 = FUN_004dc8ec((double)local_1c,SUB84((double)local_18,0), + (uint)((ulonglong)(double)local_18 >> 0x20)); + param_1[2] = (float)fVar1; + return param_1; +} + + + +/* @004097f4 file=? name=FUN_004097f4 */ + +undefined4 __cdecl FUN_004097f4(float *param_1,float *param_2,float param_3) + +{ + float10 fVar1; + + fVar1 = FUN_004dcd00((double)(param_1[1] - param_2[1])); + if (((fVar1 <= (float10)param_3) && + (fVar1 = FUN_004dcd00((double)(*param_1 - *param_2)), fVar1 <= (float10)param_3)) && + (fVar1 = FUN_004dcd00((double)(param_1[2] - param_2[2])), fVar1 <= (float10)param_3)) { + return 1; + } + return 0; +} + + + +/* @004098b4 file=? name=FUN_004098b4 */ + +float * __cdecl FUN_004098b4(float *param_1) + +{ + FUN_0040817c(param_1 + 1); + FUN_0040817c(param_1); + FUN_0040817c(param_1 + 2); + return param_1; +} + + + +/* @004098dc file=? name=FUN_004098dc */ + +void __cdecl FUN_004098dc(int *param_1,float *param_2) + +{ + int *piVar1; + byte bVar2; + float *pfVar3; + byte bVar4; + float *pfVar5; + byte bVar6; + + bVar6 = 0x3e; + pfVar5 = param_2 + 2; + pfVar3 = param_2 + 1; + bVar4 = 0x2c; + bVar2 = 0x2c; + piVar1 = FUN_004db92c(param_1,0x3c); + piVar1 = FUN_00408270(piVar1,param_2); + piVar1 = FUN_004db92c(piVar1,bVar2); + piVar1 = FUN_00408270(piVar1,pfVar3); + piVar1 = FUN_004db92c(piVar1,bVar4); + piVar1 = FUN_00408270(piVar1,pfVar5); + FUN_004db92c(piVar1,bVar6); + return; +} + + + +/* @0040993c file=? name=FUN_0040993c */ + +undefined4 FUN_0040993c(void) + +{ + return 1; +} + + + +/* @00409948 file=? name=FUN_00409948 */ + +void __cdecl +FUN_00409948(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4, + undefined4 param_5) + +{ + *param_1 = param_2; + param_1[1] = param_3; + param_1[2] = param_4; + param_1[3] = param_5; + return; +} + + + +/* @00409968 file=? name=FUN_00409968 */ + +void __cdecl FUN_00409968(undefined4 *param_1,undefined4 *param_2) + +{ + *param_1 = *param_2; + param_1[1] = param_2[1]; + param_1[2] = param_2[2]; + param_1[3] = param_2[3]; + return; +} + + + +/* @0040998c file=? name=FUN_0040998c */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float * __cdecl FUN_0040998c(float *param_1,int *param_2) + +{ + int iVar1; + float local_14; + float local_10; + float local_c; + float local_8; + + local_c = (float)param_2[1] * _DAT_004099fc; + local_8 = local_c; + FUN_00408328(&local_14,&local_8); + param_1[3] = local_10; + *param_1 = 0.0; + param_1[1] = 0.0; + param_1[2] = 0.0; + iVar1 = *param_2; + if (iVar1 == 0) { + *param_1 = local_14; + } + else if (iVar1 == 1) { + param_1[1] = local_14; + } + else if (iVar1 == 2) { + param_1[2] = local_14; + } + return param_1; +} + + + +/* @00409a00 file=? name=FUN_00409a00 */ + +float * __cdecl FUN_00409a00(float *param_1,float *param_2) + +{ + float local_34 [12]; + + FUN_0040aadc(local_34); + FUN_0040ac6c(local_34,param_2); + FUN_00409a70(param_1,local_34); + return param_1; +} + + + +/* @00409a38 file=? name=FUN_00409a38 */ + +float * __cdecl FUN_00409a38(float *param_1,float *param_2) + +{ + float local_34 [12]; + + FUN_0040aadc(local_34); + FUN_0040ad2c(local_34,param_2); + FUN_00409a70(param_1,local_34); + return param_1; +} + + + +/* @00409a70 file=? name=FUN_00409a70 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float * __cdecl FUN_00409a70(float *param_1,float *param_2) + +{ + float fVar1; + float10 fVar2; + + param_1[3] = (_DAT_00409c44 + *param_2 + param_2[5] + param_2[10]) * _DAT_00409c48; + fVar2 = FUN_004dcd00((double)param_1[3]); + if ((float10)_DAT_00409c4c < fVar2) { + fVar2 = FUN_004dd138((double)param_1[3]); + param_1[3] = (float)fVar2; + *param_1 = ((param_2[9] - param_2[6]) * _DAT_00409c48) / param_1[3]; + param_1[1] = ((param_2[2] - param_2[8]) * _DAT_00409c48) / param_1[3]; + param_1[2] = ((param_2[4] - param_2[1]) * _DAT_00409c48) / param_1[3]; + } + else { + if (param_1[3] < _DAT_00409c50) { + param_1[3] = 0.0; + } + fVar1 = (_DAT_00409c44 + *param_2) * _DAT_00409c54 - param_1[3]; + if (fVar1 < _DAT_00409c50) { + fVar1 = _DAT_00409c50; + } + fVar2 = FUN_004dd138((double)fVar1); + *param_1 = (float)fVar2; + fVar1 = (_DAT_00409c44 + param_2[5]) * _DAT_00409c54 - param_1[3]; + if (fVar1 < _DAT_00409c50) { + fVar1 = _DAT_00409c50; + } + fVar2 = FUN_004dd138((double)fVar1); + param_1[1] = (float)fVar2; + fVar1 = (_DAT_00409c44 + param_2[10]) * _DAT_00409c54 - param_1[3]; + if (fVar1 < _DAT_00409c50) { + fVar1 = _DAT_00409c50; + } + fVar2 = FUN_004dd138((double)fVar1); + param_1[2] = (float)fVar2; + fVar2 = FUN_004dd138((double)param_1[3]); + param_1[3] = (float)fVar2; + if (param_2[4] < param_2[1]) { + param_1[2] = -param_1[2]; + } + if (param_2[2] < param_2[8]) { + param_1[1] = -param_1[1]; + } + if (param_2[9] < param_2[6]) { + *param_1 = -*param_1; + } + } + return param_1; +} + + + +/* @00409d9c file=? name=FUN_00409d9c */ + +float * __cdecl FUN_00409d9c(float *param_1,float *param_2,float *param_3) + +{ + *param_1 = (param_2[1] * param_3[2] + param_3[3] * *param_2 + param_2[3] * *param_3) - + param_2[2] * param_3[1]; + param_1[1] = (param_2[2] * *param_3 + param_3[3] * param_2[1] + param_2[3] * param_3[1]) - + *param_2 * param_3[2]; + param_1[2] = (*param_2 * param_3[1] + param_3[3] * param_2[2] + param_2[3] * param_3[2]) - + param_2[1] * *param_3; + param_1[3] = ((param_2[3] * param_3[3] - *param_2 * *param_3) - param_2[1] * param_3[1]) - + param_2[2] * param_3[2]; + return param_1; +} + + + +/* @00409e28 file=? name=FUN_00409e28 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float * __cdecl FUN_00409e28(float *param_1,float *param_2,float param_3) + +{ + float10 fVar1; + float local_20; + float local_1c; + float local_18; + float local_14; + float local_10; + float local_c; + float local_8; + + fVar1 = FUN_004dd138((double)(param_2[2] * param_2[2] + + param_2[1] * param_2[1] + *param_2 * *param_2)); + local_c = (float)fVar1; + local_8 = local_c; + fVar1 = FUN_004dcd00((double)local_c); + if ((float10)_DAT_00409f1c < fVar1) { + local_18 = param_2[3]; + local_1c = local_8; + local_14 = local_8; + local_10 = local_18; + fVar1 = FUN_004dc8ec((double)local_8,SUB84((double)local_18,0), + (uint)((ulonglong)(double)local_18 >> 0x20)); + local_20 = param_3 * (float)fVar1; + FUN_00408328(&local_14,&local_20); + param_1[3] = local_10; + local_14 = local_14 / local_8; + *param_1 = *param_2 * local_14; + param_1[1] = param_2[1] * local_14; + param_1[2] = param_2[2] * local_14; + } + else { + FUN_00409968(param_1,&DAT_004e0fa4); + } + return param_1; +} + + + +/* @00409f58 file=? name=FUN_00409f58 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_00409f58(float *param_1,float *param_2,float *param_3) + +{ + float10 fVar1; + float local_2c [4]; + float local_1c; + float local_18; + float local_14; + undefined4 local_10; + float local_c; + float local_8; + + fVar1 = FUN_004dd138((double)(param_3[2] * param_3[2] + + param_3[1] * param_3[1] + *param_3 * *param_3)); + local_c = (float)fVar1; + local_8 = local_c; + fVar1 = FUN_004dcd00((double)local_c); + if ((float10)_DAT_0040a040 < fVar1) { + fVar1 = FUN_00408110(local_8); + local_1c = (float)(fVar1 * (float10)_DAT_0040a044); + local_18 = local_1c; + FUN_00408328(&local_14,&local_1c); + local_8 = local_14 / local_8; + FUN_00409948(local_2c,*param_3 * local_8,param_3[1] * local_8,param_3[2] * local_8,local_10); + FUN_00409d9c(param_1,param_2,local_2c); + } + else { + FUN_00409968(param_1,param_2); + } + return; +} + + + +/* @0040a048 file=? name=FUN_0040a048 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_0040a048(float *param_1,float *param_2,float *param_3,float param_4) + +{ + float10 fVar1; + float local_2c [4]; + float local_1c; + float local_18; + float local_14; + undefined4 local_10; + float local_c; + float local_8; + + fVar1 = FUN_004dd138((double)(param_3[2] * param_3[2] + + param_3[1] * param_3[1] + *param_3 * *param_3)); + local_c = (float)fVar1; + local_8 = local_c; + fVar1 = FUN_004dcd00((double)local_c); + if ((float10)_DAT_0040a130 < fVar1) { + local_8 = param_4 * local_8; + local_1c = _DAT_0040a134 * local_8; + local_18 = local_1c; + FUN_00408328(&local_14,&local_1c); + local_8 = local_14 / local_8; + FUN_00409948(local_2c,*param_3 * local_8,param_3[1] * local_8,param_3[2] * local_8,local_10); + FUN_00409d9c(param_1,param_2,local_2c); + } + else { + FUN_00409968(param_1,param_2); + } + return; +} + + + +/* @0040a138 file=? name=FUN_0040a138 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float * __cdecl FUN_0040a138(float *param_1) + +{ + float fVar1; + float10 fVar2; + + fVar1 = param_1[2] * param_1[2] + param_1[1] * param_1[1] + *param_1 * *param_1; + if (_DAT_0040a1e4 < fVar1) { + fVar2 = FUN_004dd138((double)fVar1); + fVar1 = (float)fVar2; + *param_1 = *param_1 / fVar1; + param_1[1] = param_1[1] / fVar1; + param_1[2] = param_1[2] / fVar1; + param_1[3] = 0.0; + } + else { + fVar2 = FUN_004dd138((double)(_DAT_0040a1e4 - fVar1)); + if (param_1[3] < _DAT_0040a1e8) { + *param_1 = -*param_1; + param_1[1] = -param_1[1]; + param_1[2] = -param_1[2]; + } + param_1[3] = (float)fVar2; + } + return param_1; +} + + + +/* @0040a22c file=? name=FUN_0040a22c */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float * __cdecl FUN_0040a22c(float *param_1,float *param_2,float *param_3) + +{ + float fVar1; + int iVar2; + float *pfVar3; + float10 fVar4; + float local_3c [3]; + float local_30 [4]; + float local_20; + float local_1c; + int local_18; + float local_14; + float local_10; + float local_c; + float local_8; + + local_10 = param_3[2] * param_2[2] + param_3[1] * param_2[1] + *param_3 * *param_2; + local_8 = local_10; + fVar4 = FUN_004dcd00((double)(local_10 - _DAT_0040a484)); + if ((float10)_DAT_0040a488 < fVar4) { + local_14 = local_8; + fVar4 = FUN_004dcd00((double)(local_8 - _DAT_0040a48c)); + if ((float10)_DAT_0040a488 < fVar4) { + FUN_0040866c(local_30,param_3,param_2); + fVar4 = FUN_004dd138((double)(local_30[2] * local_30[2] + + local_30[1] * local_30[1] + local_30[0] * local_30[0])); + local_30[3] = (float)fVar4; + local_c = local_30[3]; + FUN_004086f8(local_30,local_30,local_30[3]); + fVar4 = FUN_004dd138((double)((_DAT_0040a484 - local_8) * _DAT_0040a494)); + local_c = (float)fVar4; + *param_1 = local_30[0] * local_c; + param_1[1] = local_30[1] * local_c; + param_1[2] = local_30[2] * local_c; + fVar4 = FUN_004dd138((double)((_DAT_0040a484 + local_8) * _DAT_0040a494)); + param_1[3] = (float)fVar4; + } + else { + local_18 = 0; + local_1c = 2.0; + iVar2 = 0; + pfVar3 = param_3; + do { + if (*pfVar3 <= _DAT_0040a490) { + fVar1 = -*pfVar3; + } + else { + fVar1 = *pfVar3; + } + if (fVar1 < local_1c) { + local_18 = iVar2; + if (*pfVar3 <= _DAT_0040a490) { + local_1c = -*pfVar3; + } + else { + local_1c = *pfVar3; + } + } + iVar2 = iVar2 + 1; + pfVar3 = pfVar3 + 1; + } while (iVar2 < 3); + local_30[0] = 0.0; + local_30[1] = 0.0; + local_30[2] = 0.0; + local_30[local_18] = 1.0; + local_20 = local_1c; + fVar4 = FUN_004dcd00((double)local_1c); + if ((float10)_DAT_0040a488 < fVar4) { + FUN_004086ac(local_3c,param_3, + param_3[2] * local_30[2] + param_3[1] * local_30[1] + *param_3 * local_30[0]); + FUN_00408644(local_30,local_30,local_3c); + FUN_004087f4(local_30,local_30); + } + *param_1 = local_30[0]; + param_1[1] = local_30[1]; + param_1[2] = local_30[2]; + param_1[3] = 0.0; + } + } + else { + *param_1 = 0.0; + param_1[1] = 0.0; + param_1[2] = 0.0; + param_1[3] = 1.0; + } + return param_1; +} + + + +/* @0040a4d8 file=? name=FUN_0040a4d8 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float * __cdecl FUN_0040a4d8(float *param_1,float *param_2,float *param_3,float param_4) + +{ + float fVar1; + float10 fVar2; + + if (param_2[3] * param_3[3] + + param_2[2] * param_3[2] + param_2[1] * param_3[1] + *param_2 * *param_3 < _DAT_0040a670) { + *param_1 = -*param_3 * param_4 + (_DAT_0040a674 - param_4) * *param_2; + param_1[1] = -param_3[1] * param_4 + (_DAT_0040a674 - param_4) * param_2[1]; + param_1[2] = -param_3[2] * param_4 + (_DAT_0040a674 - param_4) * param_2[2]; + param_1[3] = -param_3[3] * param_4 + (_DAT_0040a674 - param_4) * param_2[3]; + } + else { + *param_1 = *param_3 * param_4 + (_DAT_0040a674 - param_4) * *param_2; + param_1[1] = param_3[1] * param_4 + (_DAT_0040a674 - param_4) * param_2[1]; + param_1[2] = param_3[2] * param_4 + (_DAT_0040a674 - param_4) * param_2[2]; + param_1[3] = param_3[3] * param_4 + (_DAT_0040a674 - param_4) * param_2[3]; + } + fVar1 = param_1[3] * param_1[3] + + param_1[2] * param_1[2] + param_1[1] * param_1[1] + *param_1 * *param_1; + fVar2 = FUN_004dcd00((double)fVar1); + if ((float10)_DAT_0040a678 < fVar2) { + fVar2 = FUN_004dd138((double)fVar1); + fVar1 = (float)((float10)_DAT_0040a674 / fVar2); + *param_1 = fVar1 * *param_1; + param_1[1] = fVar1 * param_1[1]; + param_1[2] = fVar1 * param_1[2]; + param_1[3] = fVar1 * param_1[3]; + } + else { + *param_1 = 0.0; + param_1[1] = 0.0; + param_1[2] = 0.0; + param_1[3] = 1.0; + } + return param_1; +} + + + +/* @0040a738 file=? name=FUN_0040a738 */ + +undefined4 FUN_0040a738(void) + +{ + return 1; +} + + + +/* @0040a7c0 file=? name=FUN_0040a7c0 */ + +undefined4 * __cdecl FUN_0040a7c0(undefined4 *param_1,undefined4 *param_2) + +{ + FUN_00408440(param_1 + 3,param_2 + 3); + FUN_00408440(param_1,param_2); + return param_1; +} + + + +/* @0040a7f4 file=? name=FUN_0040a7f4 */ + +undefined4 * __cdecl FUN_0040a7f4(undefined4 *param_1,undefined4 *param_2) + +{ + FUN_00408440(param_1 + 3,param_2 + 3); + FUN_00408440(param_1,param_2); + return param_1; +} + + + +/* @0040a824 file=? name=FUN_0040a824 */ + +bool __cdecl FUN_0040a824(byte *param_1,byte *param_2) + +{ + int iVar1; + + iVar1 = FUN_004d4b14(param_1,param_2,0x18); + return iVar1 == 0; +} + + + +/* @0040a848 file=? name=FUN_0040a848 */ + +float * __cdecl FUN_0040a848(float *param_1,float *param_2,float *param_3,float param_4) + +{ + FUN_00408614(param_1,param_2,param_3,param_4); + FUN_00408614(param_1 + 3,param_2 + 3,param_3 + 3,param_4); + return param_1; +} + + + +/* @0040a884 file=? name=FUN_0040a884 */ + +void __cdecl FUN_0040a884(int *param_1,float *param_2) + +{ + int *piVar1; + byte bVar2; + float *pfVar3; + byte bVar4; + + bVar4 = 0x7d; + pfVar3 = param_2 + 3; + bVar2 = 0x2c; + piVar1 = FUN_004db92c(param_1,0x7b); + piVar1 = (int *)FUN_00408888(piVar1,param_2); + piVar1 = FUN_004db92c(piVar1,bVar2); + piVar1 = (int *)FUN_00408888(piVar1,pfVar3); + FUN_004db92c(piVar1,bVar4); + return; +} + + + +/* @0040a8cc file=? name=FUN_0040a8cc */ + +void FUN_0040a8cc(void) + +{ + FUN_004085bc(); + return; +} + + + +/* @0040a938 file=? name=FUN_0040a938 */ + +undefined4 * __cdecl FUN_0040a938(undefined4 *param_1,undefined4 *param_2) + +{ + FUN_00409968(param_1 + 3,param_2 + 3); + FUN_00408440(param_1,param_2); + return param_1; +} + + + +/* @0040a968 file=? name=FUN_0040a968 */ + +undefined4 * __cdecl FUN_0040a968(undefined4 *param_1,float *param_2) + +{ + FUN_00409a70((float *)(param_1 + 3),param_2); + FUN_0040b058((int)param_2,3,param_1); + return param_1; +} + + + +/* @0040a994 file=? name=FUN_0040a994 */ + +bool __cdecl FUN_0040a994(byte *param_1,byte *param_2) + +{ + int iVar1; + + iVar1 = FUN_004d4b14(param_1,param_2,0x1c); + return iVar1 == 0; +} + + + +/* @0040a9b8 file=? name=FUN_0040a9b8 */ + +float * __cdecl FUN_0040a9b8(float *param_1,float *param_2,float *param_3,float param_4) + +{ + FUN_00408614(param_1,param_2,param_3,param_4); + FUN_0040a048(param_1 + 3,param_2 + 3,param_3 + 3,param_4); + return param_1; +} + + + +/* @0040a9f4 file=? name=FUN_0040a9f4 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float * __cdecl FUN_0040a9f4(float *param_1,float *param_2,float *param_3,float param_4) + +{ + FUN_00408848(param_1,param_2,_DAT_0040aa54 - param_4,param_3,param_4); + FUN_0040a4d8(param_1 + 3,param_2 + 3,param_3 + 3,param_4); + return param_1; +} + + + +/* @0040aaa0 file=? name=FUN_0040aaa0 */ + +void FUN_0040aaa0(void) + +{ + FUN_0040a738(); + return; +} + + + +/* @0040aadc file=? name=FUN_0040aadc */ + +void __cdecl FUN_0040aadc(undefined4 *param_1) + +{ + *param_1 = 0x3f800000; + param_1[1] = 0; + param_1[2] = 0; + param_1[3] = 0; + param_1[4] = 0; + param_1[5] = 0x3f800000; + param_1[6] = 0; + param_1[7] = 0; + param_1[8] = 0; + param_1[9] = 0; + param_1[10] = 0x3f800000; + param_1[0xb] = 0; + return; +} + + + +/* @0040ab28 file=? name=FUN_0040ab28 */ + +undefined4 * __cdecl FUN_0040ab28(undefined4 *param_1,undefined4 *param_2) + +{ + FUN_004d4918(param_1,param_2,0x30); + return param_1; +} + + + +/* @0040ab44 file=? name=FUN_0040ab44 */ + +float * __cdecl FUN_0040ab44(float *param_1,undefined4 *param_2) + +{ + FUN_0040adec(param_1,(float *)(param_2 + 3)); + FUN_0040b0ac((int)param_1,3,param_2); + return param_1; +} + + + +/* @0040ab70 file=? name=FUN_0040ab70 */ + +undefined4 * __cdecl FUN_0040ab70(undefined4 *param_1,int *param_2) + +{ + int iVar1; + float local_1c; + undefined4 local_18; + float local_14; + undefined4 local_10; + float local_c; + undefined4 local_8; + + iVar1 = *param_2; + if (iVar1 == 0) { + FUN_00408328(&local_c,(float *)(param_2 + 1)); + *param_1 = 0x3f800000; + param_1[4] = 0; + param_1[8] = 0; + param_1[1] = 0; + param_1[5] = local_8; + param_1[9] = -local_c; + param_1[2] = 0; + param_1[6] = local_c; + param_1[10] = local_8; + } + else if (iVar1 == 1) { + FUN_00408328(&local_14,(float *)(param_2 + 1)); + *param_1 = local_10; + param_1[4] = 0; + param_1[8] = local_14; + param_1[1] = 0; + param_1[5] = 0x3f800000; + param_1[9] = 0; + param_1[2] = -local_14; + param_1[6] = 0; + param_1[10] = local_10; + } + else if (iVar1 == 2) { + FUN_00408328(&local_1c,(float *)(param_2 + 1)); + *param_1 = local_18; + param_1[4] = -local_1c; + param_1[8] = 0; + param_1[1] = local_1c; + param_1[5] = local_18; + param_1[9] = 0; + param_1[2] = 0; + param_1[6] = 0; + param_1[10] = 0x3f800000; + } + return param_1; +} + + + +/* @0040ac6c file=? name=FUN_0040ac6c */ + +float * __cdecl FUN_0040ac6c(float *param_1,float *param_2) + +{ + float local_1c; + float local_18; + float local_14; + float local_10; + float local_c; + float local_8; + + FUN_00408328(&local_c,param_2); + FUN_00408328(&local_14,param_2 + 1); + FUN_00408328(&local_1c,param_2 + 2); + *param_1 = local_10 * local_18; + param_1[4] = local_10 * local_1c; + param_1[8] = -local_14; + param_1[1] = local_c * local_14 * local_18 - local_8 * local_1c; + param_1[5] = local_8 * local_18 + local_c * local_14 * local_1c; + param_1[9] = local_c * local_10; + param_1[2] = local_c * local_1c + local_8 * local_14 * local_18; + param_1[6] = local_8 * local_14 * local_1c - local_c * local_18; + param_1[10] = local_8 * local_10; + return param_1; +} + + + +/* @0040ad2c file=? name=FUN_0040ad2c */ + +float * __cdecl FUN_0040ad2c(float *param_1,float *param_2) + +{ + float local_1c; + float local_18; + float local_14; + float local_10; + float local_c; + float local_8; + + FUN_00408328(&local_c,param_2 + 1); + FUN_00408328(&local_14,param_2); + FUN_00408328(&local_1c,param_2 + 2); + *param_1 = local_c * local_14 * local_1c + local_10 * local_18; + param_1[4] = local_8 * local_1c; + param_1[8] = local_c * local_10 * local_1c - local_14 * local_18; + param_1[1] = local_c * local_14 * local_18 - local_10 * local_1c; + param_1[5] = local_8 * local_18; + param_1[9] = local_c * local_10 * local_18 + local_14 * local_1c; + param_1[2] = local_8 * local_14; + param_1[6] = -local_c; + param_1[10] = local_8 * local_10; + return param_1; +} + + + +/* @0040adec file=? name=FUN_0040adec */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float * __cdecl FUN_0040adec(float *param_1,float *param_2) + +{ + float fVar1; + float fVar2; + float fVar3; + float fVar4; + float fVar5; + float fVar6; + float fVar7; + float fVar8; + float fVar9; + float fVar10; + float fVar11; + float fVar12; + float fVar13; + float fVar14; + float fVar15; + float fVar16; + + fVar1 = *param_2; + fVar2 = param_2[1]; + fVar3 = param_2[1]; + fVar4 = param_2[2]; + fVar5 = param_2[2]; + fVar6 = *param_2; + fVar7 = param_2[3]; + fVar8 = *param_2; + fVar9 = param_2[3]; + fVar10 = param_2[1]; + fVar11 = param_2[3]; + fVar12 = param_2[2]; + fVar13 = param_2[3] * param_2[3]; + fVar14 = *param_2 * *param_2; + fVar15 = param_2[1] * param_2[1]; + fVar16 = param_2[2] * param_2[2]; + *param_1 = ((fVar13 + fVar14) - fVar15) - fVar16; + param_1[1] = (fVar1 * fVar2 - fVar11 * fVar12) * _DAT_0040aedc; + param_1[2] = (fVar5 * fVar6 + fVar9 * fVar10) * _DAT_0040aedc; + param_1[4] = (fVar11 * fVar12 + fVar1 * fVar2) * _DAT_0040aedc; + param_1[5] = ((fVar13 - fVar14) + fVar15) - fVar16; + param_1[6] = (fVar3 * fVar4 - fVar7 * fVar8) * _DAT_0040aedc; + param_1[8] = (fVar5 * fVar6 - fVar9 * fVar10) * _DAT_0040aedc; + param_1[9] = (fVar3 * fVar4 + fVar7 * fVar8) * _DAT_0040aedc; + param_1[10] = ((fVar13 - fVar14) - fVar15) + fVar16; + return param_1; +} + + + diff --git a/reference/decomp/archive_2025export/all/part_001.c b/reference/decomp/archive_2025export/all/part_001.c new file mode 100644 index 0000000..27ae2e8 --- /dev/null +++ b/reference/decomp/archive_2025export/all/part_001.c @@ -0,0 +1,9626 @@ +/* @0040aee0 file=? name=FUN_0040aee0 */ + +void __cdecl FUN_0040aee0(undefined4 *param_1,undefined4 *param_2) + +{ + *param_1 = *param_2; + param_1[4] = param_2[1]; + param_1[8] = param_2[2]; + param_1[1] = param_2[4]; + param_1[5] = param_2[5]; + param_1[9] = param_2[6]; + param_1[2] = param_2[8]; + param_1[6] = param_2[9]; + param_1[10] = param_2[10]; + param_1[3] = param_2[0xc]; + param_1[7] = param_2[0xd]; + param_1[0xb] = param_2[0xe]; + return; +} + + + +/* @0040af34 file=? name=FUN_0040af34 */ + +void __cdecl FUN_0040af34(undefined4 *param_1,undefined4 *param_2) + +{ + *param_1 = *param_2; + param_1[4] = param_2[1]; + param_1[8] = param_2[2]; + param_1[1] = param_2[4]; + param_1[5] = param_2[5]; + param_1[9] = param_2[6]; + param_1[2] = param_2[8]; + param_1[6] = param_2[9]; + param_1[10] = param_2[10]; + param_1[3] = param_2[0xc]; + param_1[7] = param_2[0xd]; + param_1[0xb] = param_2[0xe]; + return; +} + + + +/* @0040af88 file=? name=FUN_0040af88 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl FUN_0040af88(float *param_1,float *param_2) + +{ + uint uVar1; + float10 fVar2; + + uVar1 = 0; + do { + fVar2 = FUN_004dcd00((double)(*param_1 - *param_2)); + if ((float10)_DAT_0040afec < fVar2) { + return 0; + } + uVar1 = uVar1 + 1; + param_1 = param_1 + 1; + param_2 = param_2 + 1; + } while (uVar1 < 0xc); + return 1; +} + + + +/* @0040aff0 file=? name=FUN_0040aff0 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl FUN_0040aff0(float *param_1,float *param_2) + +{ + uint uVar1; + float10 fVar2; + + uVar1 = 0; + do { + fVar2 = FUN_004dcd00((double)(*param_1 - *param_2)); + if ((float10)_DAT_0040b054 < fVar2) { + return 1; + } + uVar1 = uVar1 + 1; + param_1 = param_1 + 1; + param_2 = param_2 + 1; + } while (uVar1 < 0xc); + return 0; +} + + + +/* @0040b058 file=? name=FUN_0040b058 */ + +void __cdecl FUN_0040b058(int param_1,int param_2,undefined4 *param_3) + +{ + *param_3 = *(undefined4 *)(param_1 + param_2 * 4); + param_3[1] = *(undefined4 *)(param_1 + 0x10 + param_2 * 4); + param_3[2] = *(undefined4 *)(param_1 + 0x20 + param_2 * 4); + return; +} + + + +/* @0040b07c file=? name=FUN_0040b07c */ + +void __cdecl FUN_0040b07c(int param_1,int param_2,undefined4 *param_3) + +{ + *param_3 = *(undefined4 *)(param_1 + param_2 * 0x10); + param_3[1] = *(undefined4 *)(param_1 + 4 + param_2 * 0x10); + param_3[2] = *(undefined4 *)(param_1 + 8 + param_2 * 0x10); + return; +} + + + +/* @0040b0ac file=? name=FUN_0040b0ac */ + +void __cdecl FUN_0040b0ac(int param_1,int param_2,undefined4 *param_3) + +{ + *(undefined4 *)(param_1 + param_2 * 4) = *param_3; + *(undefined4 *)(param_1 + 0x10 + param_2 * 4) = param_3[1]; + *(undefined4 *)(param_1 + 0x20 + param_2 * 4) = param_3[2]; + return; +} + + + +/* @0040b0d0 file=? name=FUN_0040b0d0 */ + +void __cdecl FUN_0040b0d0(int param_1,int param_2,undefined4 *param_3) + +{ + *(undefined4 *)(param_1 + param_2 * 0x10) = *param_3; + *(undefined4 *)(param_1 + 4 + param_2 * 0x10) = param_3[1]; + *(undefined4 *)(param_1 + 8 + param_2 * 0x10) = param_3[2]; + return; +} + + + +/* @0040b104 file=? name=FUN_0040b104 */ + +float * __cdecl FUN_0040b104(float *param_1,float *param_2,float *param_3) + +{ + *param_1 = param_2[8] * param_3[2] + param_2[4] * param_3[1] + *param_2 * *param_3; + param_1[1] = param_2[9] * param_3[2] + param_2[5] * param_3[1] + param_2[1] * *param_3; + param_1[2] = param_2[10] * param_3[2] + param_2[6] * param_3[1] + param_2[2] * *param_3; + param_1[3] = param_2[0xb] * param_3[2] + param_2[7] * param_3[1] + param_2[3] * *param_3 + + param_3[3]; + param_1[4] = param_2[8] * param_3[6] + param_2[4] * param_3[5] + *param_2 * param_3[4]; + param_1[5] = param_2[9] * param_3[6] + param_2[5] * param_3[5] + param_2[1] * param_3[4]; + param_1[6] = param_2[10] * param_3[6] + param_2[6] * param_3[5] + param_2[2] * param_3[4]; + param_1[7] = param_2[0xb] * param_3[6] + param_2[7] * param_3[5] + param_2[3] * param_3[4] + + param_3[7]; + param_1[8] = param_2[8] * param_3[10] + param_2[4] * param_3[9] + *param_2 * param_3[8]; + param_1[9] = param_2[9] * param_3[10] + param_2[5] * param_3[9] + param_2[1] * param_3[8]; + param_1[10] = param_2[10] * param_3[10] + param_2[6] * param_3[9] + param_2[2] * param_3[8]; + param_1[0xb] = param_2[0xb] * param_3[10] + param_2[7] * param_3[9] + param_2[3] * param_3[8] + + param_3[0xb]; + return param_1; +} + + + +/* @0040b244 file=? name=FUN_0040b244 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float * __cdecl FUN_0040b244(float *param_1,float *param_2) + +{ + float fVar1; + float fVar2; + float fVar3; + float *pfVar4; + int iVar5; + + *param_1 = param_2[5] * param_2[10] - param_2[9] * param_2[6]; + param_1[1] = param_2[9] * param_2[2] - param_2[1] * param_2[10]; + param_1[2] = param_2[1] * param_2[6] - param_2[5] * param_2[2]; + fVar1 = *param_2; + fVar2 = param_2[4]; + fVar3 = param_2[8]; + param_1[3] = (-param_2[3] * *param_1 - param_2[7] * param_1[1]) - param_2[0xb] * param_1[2]; + param_1[4] = param_2[8] * param_2[6] - param_2[4] * param_2[10]; + param_1[5] = *param_2 * param_2[10] - param_2[8] * param_2[2]; + param_1[6] = param_2[4] * param_2[2] - *param_2 * param_2[6]; + param_1[7] = (-param_2[3] * param_1[4] - param_2[7] * param_1[5]) - param_2[0xb] * param_1[6]; + param_1[8] = param_2[4] * param_2[9] - param_2[8] * param_2[5]; + param_1[9] = param_2[1] * param_2[8] - *param_2 * param_2[9]; + param_1[10] = *param_2 * param_2[5] - param_2[4] * param_2[1]; + param_1[0xb] = (-param_2[3] * param_1[8] - param_2[7] * param_1[9]) - param_2[0xb] * param_1[10]; + fVar1 = _DAT_0040b370 / (param_1[2] * fVar3 + param_1[1] * fVar2 + *param_1 * fVar1); + iVar5 = 0; + pfVar4 = param_1; + do { + *pfVar4 = fVar1 * *pfVar4; + iVar5 = iVar5 + 1; + pfVar4 = pfVar4 + 1; + } while (iVar5 < 0xc); + return param_1; +} + + + +/* @0040b374 file=? name=FUN_0040b374 */ + +void __cdecl FUN_0040b374(float *param_1,float *param_2,float *param_3) + +{ + *param_1 = *param_2 * *param_3; + param_1[1] = param_2[1] * *param_3; + param_1[2] = param_2[2] * *param_3; + param_1[3] = param_2[3] * *param_3; + param_1[4] = param_2[4] * param_3[1]; + param_1[5] = param_2[5] * param_3[1]; + param_1[6] = param_2[6] * param_3[1]; + param_1[7] = param_2[7] * param_3[1]; + param_1[8] = param_2[8] * param_3[2]; + param_1[9] = param_2[9] * param_3[2]; + param_1[10] = param_2[10] * param_3[2]; + param_1[0xb] = param_2[0xb] * param_3[2]; + return; +} + + + +/* @0040b3e8 file=? name=FUN_0040b3e8 */ + +void __cdecl FUN_0040b3e8(float *param_1,float *param_2,float *param_3) + +{ + int iVar1; + float *pfVar2; + float *pfVar3; + float local_34 [12]; + + pfVar2 = (float *)&DAT_004e107c; + pfVar3 = local_34; + for (iVar1 = 0xc; iVar1 != 0; iVar1 = iVar1 + -1) { + *pfVar3 = *pfVar2; + pfVar2 = pfVar2 + 1; + pfVar3 = pfVar3 + 1; + } + FUN_0040adec(local_34,param_3); + FUN_0040b104(param_1,param_2,local_34); + return; +} + + + +/* @0040b42c file=? name=FUN_0040b42c */ + +void __cdecl FUN_0040b42c(int param_1,int param_2,float *param_3) + +{ + *(float *)(param_1 + 0xc) = *(float *)(param_2 + 0xc) + *param_3; + *(float *)(param_1 + 0x1c) = *(float *)(param_2 + 0x1c) + param_3[1]; + *(float *)(param_1 + 0x2c) = *(float *)(param_2 + 0x2c) + param_3[2]; + return; +} + + + +/* @0040b454 file=? name=FUN_0040b454 */ + +float10 __cdecl FUN_0040b454(float *param_1) + +{ + return ((float10)param_1[1] * (float10)param_1[6] - (float10)param_1[5] * (float10)param_1[2]) * + (float10)param_1[8] + + ((float10)param_1[9] * (float10)param_1[2] - (float10)param_1[1] * (float10)param_1[10]) * + (float10)param_1[4] + + ((float10)param_1[5] * (float10)param_1[10] - (float10)param_1[9] * (float10)param_1[6]) * + (float10)*param_1; +} + + + +/* @0040b494 file=? name=FUN_0040b494 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float * __cdecl FUN_0040b494(float *param_1) + +{ + float fVar1; + int iVar2; + + if (*param_1 == _DAT_0040b68c) { + iVar2 = 0; + do { + if (param_1[iVar2 * 4] != _DAT_0040b68c) break; + iVar2 = iVar2 + 1; + } while (iVar2 < 3); + fVar1 = *param_1; + *param_1 = param_1[iVar2 * 4]; + param_1[iVar2 * 4] = fVar1; + fVar1 = param_1[1]; + param_1[1] = param_1[iVar2 * 4 + 1]; + param_1[iVar2 * 4 + 1] = fVar1; + fVar1 = param_1[2]; + param_1[2] = param_1[iVar2 * 4 + 2]; + param_1[iVar2 * 4 + 2] = fVar1; + fVar1 = param_1[3]; + param_1[3] = param_1[iVar2 * 4 + 3]; + param_1[iVar2 * 4 + 3] = fVar1; + } + fVar1 = *param_1; + *param_1 = 1.0; + param_1[1] = param_1[1] / fVar1; + param_1[2] = param_1[2] / fVar1; + param_1[3] = param_1[3] / fVar1; + fVar1 = param_1[4]; + param_1[4] = 0.0; + param_1[5] = param_1[5] - fVar1 * param_1[1]; + param_1[6] = param_1[6] - fVar1 * param_1[2]; + param_1[7] = param_1[7] - fVar1 * param_1[3]; + fVar1 = param_1[8]; + param_1[8] = 0.0; + param_1[9] = param_1[9] - fVar1 * param_1[1]; + param_1[10] = param_1[10] - fVar1 * param_1[2]; + param_1[0xb] = param_1[0xb] - fVar1 * param_1[3]; + if (param_1[5] == _DAT_0040b68c) { + fVar1 = param_1[5]; + param_1[5] = param_1[9]; + param_1[9] = fVar1; + fVar1 = param_1[6]; + param_1[6] = param_1[10]; + param_1[10] = fVar1; + fVar1 = param_1[7]; + param_1[7] = param_1[0xb]; + param_1[0xb] = fVar1; + } + fVar1 = param_1[5]; + param_1[5] = 1.0; + param_1[6] = param_1[6] / fVar1; + param_1[7] = param_1[7] / fVar1; + fVar1 = param_1[1]; + param_1[1] = 0.0; + param_1[2] = param_1[2] - fVar1 * param_1[6]; + param_1[3] = param_1[3] - fVar1 * param_1[7]; + fVar1 = param_1[9]; + param_1[9] = 0.0; + param_1[10] = param_1[10] - fVar1 * param_1[6]; + param_1[0xb] = param_1[0xb] - fVar1 * param_1[7]; + fVar1 = param_1[10]; + param_1[10] = 1.0; + param_1[0xb] = param_1[0xb] / fVar1; + fVar1 = param_1[2]; + param_1[2] = 0.0; + param_1[3] = param_1[3] - fVar1 * param_1[0xb]; + fVar1 = param_1[6]; + param_1[6] = 0.0; + param_1[7] = param_1[7] - fVar1 * param_1[0xb]; + return param_1; +} + + + +/* @0040bbe8 file=? name=FUN_0040bbe8 */ + +undefined4 FUN_0040bbe8(void) + +{ + return 1; +} + + + +/* @0040bc00 file=? name=FUN_0040bc00 */ + +undefined4 * __cdecl FUN_0040bc00(undefined4 *param_1,undefined4 *param_2) + +{ + FUN_0040ab28(param_1,param_2); + return param_1; +} + + + +/* @0040bc1c file=? name=FUN_0040bc1c */ + +undefined4 * __cdecl FUN_0040bc1c(undefined4 *param_1,undefined4 *param_2) + +{ + FUN_0040aee0(param_1,param_2); + return param_1; +} + + + +/* @0040bc38 file=? name=FUN_0040bc38 */ + +undefined4 * __cdecl FUN_0040bc38(undefined4 *param_1,undefined4 *param_2) + +{ + FUN_0040af34(param_1,param_2); + return param_1; +} + + + +/* @0040bc54 file=? name=FUN_0040bc54 */ + +float * __cdecl FUN_0040bc54(float *param_1,float *param_2) + +{ + *param_1 = *param_2; + param_1[4] = param_2[1]; + param_1[8] = param_2[2]; + param_1[1] = param_2[4]; + param_1[5] = param_2[5]; + param_1[9] = param_2[6]; + param_1[2] = param_2[8]; + param_1[6] = param_2[9]; + param_1[10] = param_2[10]; + param_1[3] = (-param_2[3] * *param_2 - param_2[7] * param_2[4]) - param_2[0xb] * param_2[8]; + param_1[7] = (-param_2[3] * param_2[1] - param_2[7] * param_2[5]) - param_2[0xb] * param_2[9]; + param_1[0xb] = (-param_2[3] * param_2[2] - param_2[7] * param_2[6]) - param_2[0xb] * param_2[10]; + return param_1; +} + + + +/* @0040bce8 file=? name=FUN_0040bce8 */ + +void __cdecl FUN_0040bce8(float *param_1) + +{ + param_1[8] = param_1[1] * param_1[6] - param_1[5] * param_1[2]; + param_1[9] = param_1[2] * param_1[4] - param_1[6] * *param_1; + param_1[10] = *param_1 * param_1[5] - param_1[4] * param_1[1]; + return; +} + + + +/* @0040bd24 file=? name=FUN_0040bd24 */ + +undefined4 __cdecl FUN_0040bd24(int param_1) + +{ + int iVar1; + undefined4 uVar2; + float local_28 [3]; + float local_1c [3]; + float local_10 [3]; + + FUN_0040b058(param_1,0,local_10); + iVar1 = FUN_00408cbc(local_10); + if (iVar1 == 0) { + uVar2 = 0; + } + else { + FUN_0040b058(param_1,1,local_1c); + iVar1 = FUN_00408cbc(local_1c); + if (iVar1 == 0) { + uVar2 = 0; + } + else { + FUN_0040866c(local_28,local_10,local_1c); + FUN_0040b058(param_1,2,local_10); + uVar2 = FUN_004084fc(local_10,local_28,0.0001); + } + } + return uVar2; +} + + + +/* @0040bdbc file=? name=FUN_0040bdbc */ + +undefined4 * __cdecl FUN_0040bdbc(undefined4 *param_1,undefined4 *param_2) + +{ + FUN_004d4918(param_1,param_2,0x40); + return param_1; +} + + + +/* @0040bdd8 file=? name=FUN_0040bdd8 */ + +void __cdecl FUN_0040bdd8(undefined4 *param_1,undefined4 *param_2) + +{ + *param_1 = *param_2; + param_1[1] = param_2[4]; + param_1[2] = param_2[8]; + param_1[3] = param_2[0xc]; + param_1[4] = param_2[1]; + param_1[5] = param_2[5]; + param_1[6] = param_2[9]; + param_1[7] = param_2[0xd]; + param_1[8] = param_2[2]; + param_1[9] = param_2[6]; + param_1[10] = param_2[10]; + param_1[0xb] = param_2[0xe]; + param_1[0xc] = param_2[3]; + param_1[0xd] = param_2[7]; + param_1[0xe] = param_2[0xb]; + param_1[0xf] = param_2[0xf]; + return; +} + + + +/* @0040be44 file=? name=FUN_0040be44 */ + +undefined4 FUN_0040be44(void) + +{ + return 1; +} + + + +/* @0040be50 file=? name=FUN_0040be50 */ + +void __cdecl FUN_0040be50(undefined4 *param_1) + +{ + *param_1 = 0x3f800000; + param_1[4] = 0; + param_1[8] = 0; + param_1[0xc] = 0; + param_1[1] = 0; + param_1[5] = 0x3f800000; + param_1[9] = 0; + param_1[0xd] = 0; + param_1[2] = 0; + param_1[6] = 0; + param_1[10] = 0x3f800000; + param_1[0xe] = 0; + param_1[3] = 0; + param_1[7] = 0; + param_1[0xb] = 0; + param_1[0xf] = 0x3f800000; + return; +} + + + +/* @0040beb0 file=? name=FUN_0040beb0 */ + +void __cdecl FUN_0040beb0(undefined4 *param_1,undefined4 *param_2) + +{ + *param_1 = *param_2; + param_1[1] = param_2[4]; + param_1[2] = param_2[8]; + param_1[3] = 0; + param_1[4] = param_2[1]; + param_1[5] = param_2[5]; + param_1[6] = param_2[9]; + param_1[7] = 0; + param_1[8] = param_2[2]; + param_1[9] = param_2[6]; + param_1[10] = param_2[10]; + param_1[0xb] = 0; + param_1[0xc] = param_2[3]; + param_1[0xd] = param_2[7]; + param_1[0xe] = param_2[0xb]; + param_1[0xf] = 0x3f800000; + return; +} + + + +/* @0040bf18 file=? name=FUN_0040bf18 */ + +float * __cdecl FUN_0040bf18(float *param_1,undefined4 *param_2) + +{ + FUN_0040c03c(param_1,(float *)(param_2 + 3)); + FUN_0040c170((int)param_1,param_2); + param_1[3] = 0.0; + param_1[7] = 0.0; + param_1[0xb] = 0.0; + param_1[0xf] = 1.0; + return param_1; +} + + + +/* @0040bf58 file=? name=FUN_0040bf58 */ + +float * __cdecl FUN_0040bf58(float *param_1,float *param_2) + +{ + float local_1c; + float local_18; + float local_14; + float local_10; + float local_c; + float local_8; + + FUN_00408328(&local_c,param_2); + FUN_00408328(&local_14,param_2 + 1); + FUN_00408328(&local_1c,param_2 + 2); + *param_1 = local_10 * local_18; + param_1[1] = local_10 * local_1c; + param_1[2] = -local_14; + param_1[3] = 0.0; + param_1[4] = local_c * local_14 * local_18 - local_8 * local_1c; + param_1[5] = local_8 * local_18 + local_c * local_14 * local_1c; + param_1[6] = local_c * local_10; + param_1[7] = 0.0; + param_1[8] = local_c * local_1c + local_8 * local_14 * local_18; + param_1[9] = local_8 * local_14 * local_1c - local_c * local_18; + param_1[10] = local_8 * local_10; + param_1[0xb] = 0.0; + param_1[0xc] = 0.0; + param_1[0xd] = 0.0; + param_1[0xe] = 0.0; + param_1[0xf] = 1.0; + return param_1; +} + + + +/* @0040c03c file=? name=FUN_0040c03c */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float * __cdecl FUN_0040c03c(float *param_1,float *param_2) + +{ + float fVar1; + float fVar2; + float fVar3; + float fVar4; + float fVar5; + float fVar6; + float fVar7; + float fVar8; + float fVar9; + float fVar10; + float fVar11; + float fVar12; + float fVar13; + float fVar14; + float fVar15; + float fVar16; + + fVar1 = *param_2; + fVar2 = param_2[1]; + fVar3 = param_2[1]; + fVar4 = param_2[2]; + fVar5 = param_2[2]; + fVar6 = *param_2; + fVar7 = param_2[3]; + fVar8 = *param_2; + fVar9 = param_2[3]; + fVar10 = param_2[1]; + fVar11 = param_2[3]; + fVar12 = param_2[2]; + fVar13 = param_2[3] * param_2[3]; + fVar14 = *param_2 * *param_2; + fVar15 = param_2[1] * param_2[1]; + fVar16 = param_2[2] * param_2[2]; + *param_1 = ((fVar13 + fVar14) - fVar15) - fVar16; + param_1[4] = (fVar1 * fVar2 - fVar11 * fVar12) * _DAT_0040c12c; + param_1[8] = (fVar5 * fVar6 + fVar9 * fVar10) * _DAT_0040c12c; + param_1[1] = (fVar11 * fVar12 + fVar1 * fVar2) * _DAT_0040c12c; + param_1[5] = ((fVar13 - fVar14) + fVar15) - fVar16; + param_1[9] = (fVar3 * fVar4 - fVar7 * fVar8) * _DAT_0040c12c; + param_1[2] = (fVar5 * fVar6 - fVar9 * fVar10) * _DAT_0040c12c; + param_1[6] = (fVar3 * fVar4 + fVar7 * fVar8) * _DAT_0040c12c; + param_1[10] = ((fVar13 - fVar14) - fVar15) + fVar16; + return param_1; +} + + + +/* @0040c170 file=? name=FUN_0040c170 */ + +void __cdecl FUN_0040c170(int param_1,undefined4 *param_2) + +{ + *(undefined4 *)(param_1 + 0x30) = *param_2; + *(undefined4 *)(param_1 + 0x34) = param_2[1]; + *(undefined4 *)(param_1 + 0x38) = param_2[2]; + return; +} + + + +/* @0040c18c file=? name=FUN_0040c18c */ + +undefined4 * __cdecl FUN_0040c18c(undefined4 *param_1,undefined4 *param_2) + +{ + FUN_0040c170((int)param_1,param_2); + *param_1 = 0x3f800000; + param_1[1] = 0; + param_1[2] = 0; + param_1[3] = 0; + param_1[4] = 0; + param_1[5] = 0x3f800000; + param_1[6] = 0; + param_1[7] = 0; + param_1[8] = 0; + param_1[9] = 0; + param_1[10] = 0x3f800000; + param_1[0xb] = 0; + param_1[0xf] = 0x3f800000; + return param_1; +} + + + +/* @0040c1f0 file=? name=FUN_0040c1f0 */ + +float * __cdecl FUN_0040c1f0(float *param_1,float *param_2,float *param_3) + +{ + *param_1 = param_2[3] * param_3[0xc] + + param_2[2] * param_3[8] + param_2[1] * param_3[4] + *param_2 * *param_3; + param_1[4] = param_2[7] * param_3[0xc] + + param_2[6] * param_3[8] + param_2[5] * param_3[4] + param_2[4] * *param_3; + param_1[8] = param_2[0xb] * param_3[0xc] + + param_2[10] * param_3[8] + param_2[9] * param_3[4] + param_2[8] * *param_3; + param_1[0xc] = param_2[0xf] * param_3[0xc] + + param_2[0xe] * param_3[8] + param_2[0xd] * param_3[4] + param_2[0xc] * *param_3; + param_1[1] = param_2[3] * param_3[0xd] + + param_2[2] * param_3[9] + param_2[1] * param_3[5] + *param_2 * param_3[1]; + param_1[5] = param_2[7] * param_3[0xd] + + param_2[6] * param_3[9] + param_2[5] * param_3[5] + param_2[4] * param_3[1]; + param_1[9] = param_2[0xb] * param_3[0xd] + + param_2[10] * param_3[9] + param_2[9] * param_3[5] + param_2[8] * param_3[1]; + param_1[0xd] = param_2[0xf] * param_3[0xd] + + param_2[0xe] * param_3[9] + param_2[0xd] * param_3[5] + param_2[0xc] * param_3[1]; + param_1[2] = param_2[3] * param_3[0xe] + + param_2[2] * param_3[10] + param_2[1] * param_3[6] + *param_2 * param_3[2]; + param_1[6] = param_2[7] * param_3[0xe] + + param_2[6] * param_3[10] + param_2[5] * param_3[6] + param_2[4] * param_3[2]; + param_1[10] = param_2[0xb] * param_3[0xe] + + param_2[10] * param_3[10] + param_2[9] * param_3[6] + param_2[8] * param_3[2]; + param_1[0xe] = param_2[0xf] * param_3[0xe] + + param_2[0xe] * param_3[10] + param_2[0xd] * param_3[6] + param_2[0xc] * param_3[2]; + param_1[3] = param_2[3] * param_3[0xf] + + param_2[2] * param_3[0xb] + param_2[1] * param_3[7] + *param_2 * param_3[3]; + param_1[7] = param_2[7] * param_3[0xf] + + param_2[6] * param_3[0xb] + param_2[5] * param_3[7] + param_2[4] * param_3[3]; + param_1[0xb] = param_2[0xb] * param_3[0xf] + + param_2[10] * param_3[0xb] + param_2[9] * param_3[7] + param_2[8] * param_3[3]; + param_1[0xf] = param_2[0xf] * param_3[0xf] + + param_2[0xe] * param_3[0xb] + param_2[0xd] * param_3[7] + param_2[0xc] * param_3[3] + ; + return param_1; +} + + + +/* @0040c408 file=? name=FUN_0040c408 */ + +float * __cdecl FUN_0040c408(float *param_1,float *param_2,float *param_3) + +{ + *param_1 = param_2[3] * param_3[3] + + param_2[2] * param_3[2] + param_2[1] * param_3[1] + *param_2 * *param_3; + param_1[4] = param_2[7] * param_3[3] + + param_2[6] * param_3[2] + param_2[5] * param_3[1] + param_2[4] * *param_3; + param_1[8] = param_2[0xb] * param_3[3] + + param_2[10] * param_3[2] + param_2[9] * param_3[1] + param_2[8] * *param_3; + param_1[0xc] = param_2[0xf] * param_3[3] + + param_2[0xe] * param_3[2] + param_2[0xd] * param_3[1] + param_2[0xc] * *param_3; + param_1[1] = param_2[3] * param_3[7] + + param_2[2] * param_3[6] + param_2[1] * param_3[5] + *param_2 * param_3[4]; + param_1[5] = param_2[7] * param_3[7] + + param_2[6] * param_3[6] + param_2[5] * param_3[5] + param_2[4] * param_3[4]; + param_1[9] = param_2[0xb] * param_3[7] + + param_2[10] * param_3[6] + param_2[9] * param_3[5] + param_2[8] * param_3[4]; + param_1[0xd] = param_2[0xf] * param_3[7] + + param_2[0xe] * param_3[6] + param_2[0xd] * param_3[5] + param_2[0xc] * param_3[4]; + param_1[2] = param_2[3] * param_3[0xb] + + param_2[2] * param_3[10] + param_2[1] * param_3[9] + *param_2 * param_3[8]; + param_1[6] = param_2[7] * param_3[0xb] + + param_2[6] * param_3[10] + param_2[5] * param_3[9] + param_2[4] * param_3[8]; + param_1[10] = param_2[0xb] * param_3[0xb] + + param_2[10] * param_3[10] + param_2[9] * param_3[9] + param_2[8] * param_3[8]; + param_1[0xe] = param_2[0xf] * param_3[0xb] + + param_2[0xe] * param_3[10] + param_2[0xd] * param_3[9] + param_2[0xc] * param_3[8]; + param_1[3] = param_2[3]; + param_1[7] = param_2[7]; + param_1[0xb] = param_2[0xb]; + param_1[0xf] = param_2[0xf]; + return param_1; +} + + + +/* @0040c5b4 file=? name=FUN_0040c5b4 */ + +float * __cdecl FUN_0040c5b4(float *param_1,float *param_2,float *param_3) + +{ + *param_1 = param_2[8] * param_3[8] + param_2[4] * param_3[4] + *param_2 * *param_3; + param_1[4] = param_2[9] * param_3[8] + param_2[5] * param_3[4] + param_2[1] * *param_3; + param_1[8] = param_2[10] * param_3[8] + param_2[6] * param_3[4] + param_2[2] * *param_3; + param_1[0xc] = param_2[0xb] * param_3[8] + param_2[7] * param_3[4] + param_2[3] * *param_3 + + param_3[0xc]; + param_1[1] = param_2[8] * param_3[9] + param_2[4] * param_3[5] + *param_2 * param_3[1]; + param_1[5] = param_2[9] * param_3[9] + param_2[5] * param_3[5] + param_2[1] * param_3[1]; + param_1[9] = param_2[10] * param_3[9] + param_2[6] * param_3[5] + param_2[2] * param_3[1]; + param_1[0xd] = param_2[0xb] * param_3[9] + param_2[7] * param_3[5] + param_2[3] * param_3[1] + + param_3[0xd]; + param_1[2] = param_2[8] * param_3[10] + param_2[4] * param_3[6] + *param_2 * param_3[2]; + param_1[6] = param_2[9] * param_3[10] + param_2[5] * param_3[6] + param_2[1] * param_3[2]; + param_1[10] = param_2[10] * param_3[10] + param_2[6] * param_3[6] + param_2[2] * param_3[2]; + param_1[0xe] = param_2[0xb] * param_3[10] + param_2[7] * param_3[6] + param_2[3] * param_3[2] + + param_3[0xe]; + param_1[3] = param_2[8] * param_3[0xb] + param_2[4] * param_3[7] + *param_2 * param_3[3]; + param_1[7] = param_2[9] * param_3[0xb] + param_2[5] * param_3[7] + param_2[1] * param_3[3]; + param_1[0xb] = param_2[10] * param_3[0xb] + param_2[6] * param_3[7] + param_2[2] * param_3[3]; + param_1[0xf] = param_2[0xb] * param_3[0xb] + param_2[7] * param_3[7] + param_2[3] * param_3[3] + + param_3[0xf]; + return param_1; +} + + + +/* @0040c758 file=? name=FUN_0040c758 */ + +float * __cdecl FUN_0040c758(float *param_1,float *param_2,float *param_3) + +{ + FUN_0040b104(param_1,param_2,param_3); + param_1[3] = 0.0; + param_1[7] = 0.0; + param_1[0xb] = 0.0; + param_1[0xf] = 1.0; + return param_1; +} + + + +/* @0040c78c file=? name=FUN_0040c78c */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl +FUN_0040c78c(undefined4 *param_1,float param_2,float param_3,float param_4,float param_5, + float param_6) + +{ + *param_1 = 0x3f800000; + param_1[1] = 0; + param_1[2] = 0; + param_1[3] = 0; + param_1[4] = 0; + param_1[5] = 0x3f800000; + param_1[6] = 0; + param_1[7] = 0; + param_1[0xc] = param_4 * param_6 * param_2; + param_1[8] = -(param_4 * param_6); + param_1[0xd] = param_5 * param_6 * param_2; + param_1[9] = -(param_5 * param_6); + param_1[10] = param_2 * -param_3 * param_6; + param_1[0xb] = (_DAT_0040c82c - (float)param_1[10]) * param_2; + param_1[0xe] = -param_3 * param_6; + param_1[0xf] = _DAT_0040c82c - (float)param_1[10]; + return; +} + + + +/* @0040cdb4 file=? name=FUN_0040cdb4 */ + +undefined4 * __cdecl FUN_0040cdb4(undefined4 *param_1,undefined4 *param_2) + +{ + FUN_004d4918(param_1,param_2,0x30); + param_1[0xc] = 0; + param_1[0xd] = 0; + param_1[0xe] = 0; + param_1[0xf] = 0x3f800000; + return param_1; +} + + + +/* @0040cdf4 file=? name=FUN_0040cdf4 */ + +void __cdecl FUN_0040cdf4(float *param_1,float param_2,float *param_3) + +{ + float local_10 [3]; + + FUN_004086ac(local_10,param_1 + 3,param_2); + FUN_004085ec(param_3,param_1,local_10); + return; +} + + + +/* @0040ce2c file=? name=FUN_0040ce2c */ + +float10 __cdecl FUN_0040ce2c(float *param_1,float *param_2) + +{ + float local_10; + float local_c; + float local_8; + + FUN_00408644(&local_10,param_2,param_1); + return (float10)local_8 * (float10)param_1[5] + + (float10)local_c * (float10)param_1[4] + (float10)local_10 * (float10)param_1[3]; +} + + + +/* @0040ce64 file=? name=FUN_0040ce64 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 __cdecl FUN_0040ce64(float *param_1,float *param_2,float *param_3) + +{ + float10 fVar1; + float local_8; + + *param_3 = param_2[2] * param_1[5] + param_2[1] * param_1[4] + *param_2 * param_1[3]; + local_8 = (param_2[2] * param_1[2] + param_2[1] * param_1[1] + *param_2 * *param_1) - param_2[3]; + fVar1 = FUN_004dcd00((double)*param_3); + if ((float10)_DAT_0040cee4 < fVar1) { + local_8 = local_8 / -*param_3; + } + return (float10)local_8; +} + + + +/* @0040cfb8 file=? name=FUN_0040cfb8 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 __cdecl +FUN_0040cfb8(float *param_1,float *param_2,float *param_3,float *param_4,float *param_5, + float *param_6,float *param_7,undefined4 *param_8) + +{ + float10 fVar1; + float local_30; + float local_2c; + float local_28; + float local_24; + float local_20; + float local_1c; + float local_18; + float local_14; + float local_10; + float local_c; + float local_8; + + FUN_00408644(&local_18,param_1,param_4); + FUN_00408644(&local_24,param_2,param_5); + local_c = local_1c * local_1c + local_20 * local_20 + local_24 * local_24; + local_8 = local_c; + fVar1 = FUN_004dcd00((double)local_c); + if ((float10)_DAT_0040d0fc < fVar1) { + *param_8 = 0; + *param_7 = (local_10 * local_1c + local_14 * local_20 + local_18 * local_24) / -local_8; + FUN_00408614(&local_30,&local_18,&local_24,*param_7); + FUN_00408614(param_3,param_1,param_2,*param_7); + FUN_00408614(param_6,param_4,param_5,*param_7); + fVar1 = FUN_004dd138((double)(local_28 * local_28 + local_2c * local_2c + local_30 * local_30)); + } + else { + *param_8 = 1; + fVar1 = FUN_004dd138((double)(local_10 * local_10 + local_14 * local_14 + local_18 * local_18)); + } + return (float10)(float)fVar1; +} + + + +/* @0040d100 file=? name=FUN_0040d100 */ + +int __cdecl FUN_0040d100(int param_1,float *param_2) + +{ + float10 fVar1; + + fVar1 = FUN_004dd138((double)(param_2[2] * param_2[2] + + param_2[1] * param_2[1] + *param_2 * *param_2)); + *(float *)(param_1 + 0x18) = (float)fVar1; + *(float *)(param_1 + 0xc) = *param_2 / *(float *)(param_1 + 0x18); + *(float *)(param_1 + 0x10) = param_2[1] / *(float *)(param_1 + 0x18); + *(float *)(param_1 + 0x14) = param_2[2] / *(float *)(param_1 + 0x18); + return param_1; +} + + + +/* @0040d150 file=? name=FUN_0040d150 */ + +void __cdecl FUN_0040d150(undefined4 *param_1,undefined4 *param_2) + +{ + *param_1 = *param_2; + param_1[1] = param_2[1]; + param_1[2] = param_2[2]; + return; +} + + + +/* @0040d16c file=? name=FUN_0040d16c */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 __cdecl FUN_0040d16c(float *param_1,float *param_2,float *param_3) + +{ + float fVar1; + float10 fVar2; + + *param_3 = param_1[5] * param_2[2] + param_1[4] * param_2[1] + param_1[3] * *param_2; + fVar2 = FUN_004dcd00((double)*param_3); + fVar1 = _DAT_0040d1fc; + if ((float10)_DAT_0040d1f8 < fVar2) { + fVar1 = -((param_2[2] * param_1[2] + param_2[1] * param_1[1] + *param_2 * *param_1) - param_2[3] + ) / *param_3; + } + return (float10)fVar1; +} + + + +/* @0040d210 file=? name=FUN_0040d210 */ + +float * __cdecl FUN_0040d210(float *param_1,float *param_2,float *param_3) + +{ + if (*param_3 < *param_2) { + *param_1 = *param_3; + param_1[1] = *param_2; + } + else { + *param_1 = *param_2; + param_1[1] = *param_3; + } + if (param_3[1] < param_2[1]) { + param_1[2] = param_3[1]; + param_1[3] = param_2[1]; + } + else { + param_1[2] = param_2[1]; + param_1[3] = param_3[1]; + } + if (param_3[2] < param_2[2]) { + param_1[4] = param_3[2]; + param_1[5] = param_2[2]; + } + else { + param_1[4] = param_2[2]; + param_1[5] = param_3[2]; + } + return param_1; +} + + + +/* @0040d28c file=? name=FUN_0040d28c */ + +void __cdecl FUN_0040d28c(undefined4 *param_1,undefined4 *param_2) + +{ + *param_1 = *param_2; + param_1[1] = param_2[1]; + param_1[2] = param_2[2]; + param_1[3] = param_2[3]; + param_1[4] = param_2[4]; + param_1[5] = param_2[5]; + return; +} + + + +/* @0040d2bc file=? name=FUN_0040d2bc */ + +float * __cdecl FUN_0040d2bc(float *param_1,float *param_2,float *param_3) + +{ + float fVar1; + + if (*param_2 <= *param_3) { + fVar1 = *param_3; + } + else { + fVar1 = *param_2; + } + *param_1 = fVar1; + if (param_3[1] <= param_2[1]) { + fVar1 = param_3[1]; + } + else { + fVar1 = param_2[1]; + } + param_1[1] = fVar1; + if (param_2[2] <= param_3[2]) { + fVar1 = param_3[2]; + } + else { + fVar1 = param_2[2]; + } + param_1[2] = fVar1; + if (param_3[3] <= param_2[3]) { + fVar1 = param_3[3]; + } + else { + fVar1 = param_2[3]; + } + param_1[3] = fVar1; + if (param_2[4] <= param_3[4]) { + fVar1 = param_3[4]; + } + else { + fVar1 = param_2[4]; + } + param_1[4] = fVar1; + if (param_3[5] <= param_2[5]) { + fVar1 = param_3[5]; + } + else { + fVar1 = param_2[5]; + } + param_1[5] = fVar1; + return param_1; +} + + + +/* @0040d350 file=? name=FUN_0040d350 */ + +float * __cdecl FUN_0040d350(float *param_1,float *param_2) + +{ + float fVar1; + + if (*param_1 <= *param_2) { + if (*param_2 <= param_1[1]) { + fVar1 = *param_2; + } + else { + fVar1 = param_1[1]; + } + } + else { + fVar1 = *param_1; + } + *param_2 = fVar1; + if (param_1[2] <= param_2[1]) { + if (param_2[1] <= param_1[3]) { + fVar1 = param_2[1]; + } + else { + fVar1 = param_1[3]; + } + } + else { + fVar1 = param_1[2]; + } + param_2[1] = fVar1; + if (param_1[4] <= param_2[2]) { + if (param_2[2] <= param_1[5]) { + fVar1 = param_2[2]; + } + else { + fVar1 = param_1[5]; + } + } + else { + fVar1 = param_1[4]; + } + param_2[2] = fVar1; + return param_2; +} + + + +/* @0040d3cc file=? name=FUN_0040d3cc */ + +undefined4 __cdecl FUN_0040d3cc(float *param_1,float *param_2) + +{ + undefined4 uVar1; + + if ((((*param_2 < *param_1) || (param_1[1] < *param_2)) || (param_2[1] < param_1[2])) || + (((param_1[3] < param_2[1] || (param_2[2] < param_1[4])) || (param_1[5] < param_2[2])))) { + uVar1 = 0; + } + else { + uVar1 = 1; + } + return uVar1; +} + + + +/* @0040d420 file=? name=FUN_0040d420 */ + +undefined4 __cdecl FUN_0040d420(float *param_1,float *param_2) + +{ + undefined4 uVar1; + + if ((((*param_2 < *param_1) || (param_1[1] < param_2[1])) || (param_2[2] < param_1[2])) || + (((param_1[3] < param_2[3] || (param_2[4] < param_1[4])) || (param_1[5] < param_2[5])))) { + uVar1 = 0; + } + else { + uVar1 = 1; + } + return uVar1; +} + + + +/* @0040d474 file=? name=FUN_0040d474 */ + +undefined4 __cdecl FUN_0040d474(float *param_1,float *param_2) + +{ + undefined4 uVar1; + + if ((((param_2[1] < *param_1) || (param_1[1] < *param_2)) || (param_2[3] < param_1[2])) || + (((param_1[3] < param_2[2] || (param_2[5] < param_1[4])) || (param_1[5] < param_2[4])))) { + uVar1 = 0; + } + else { + uVar1 = 1; + } + return uVar1; +} + + + +/* @0040d4c8 file=? name=FUN_0040d4c8 */ + +undefined4 __cdecl FUN_0040d4c8(float *param_1) + +{ + undefined4 uVar1; + + if (((param_1[1] < *param_1) || (param_1[3] < param_1[2])) || (param_1[5] < param_1[4])) { + uVar1 = 0; + } + else { + uVar1 = 1; + } + return uVar1; +} + + + +/* @0040d4fc file=? name=FUN_0040d4fc */ + +void __cdecl FUN_0040d4fc(int *param_1,float *param_2) + +{ + float fVar1; + float fVar2; + float fVar3; + float fVar4; + float fVar5; + float fVar6; + int *piVar7; + byte bVar8; + + bVar8 = 0x5d; + fVar1 = param_2[5]; + fVar2 = param_2[4]; + fVar3 = param_2[3]; + fVar4 = param_2[2]; + fVar5 = param_2[1]; + fVar6 = *param_2; + piVar7 = FUN_004db92c(param_1,0x5b); + piVar7 = FUN_004db634(piVar7,(float10)fVar6); + FUN_004dbb24(piVar7,&DAT_004e1130,(char *)0x0); + piVar7 = FUN_004db634(piVar7,(float10)fVar5); + FUN_004dbb24(piVar7,&DAT_004e1133,(char *)0x0); + piVar7 = FUN_004db634(piVar7,(float10)fVar4); + FUN_004dbb24(piVar7,&DAT_004e1137,(char *)0x0); + piVar7 = FUN_004db634(piVar7,(float10)fVar3); + FUN_004dbb24(piVar7,&DAT_004e113a,(char *)0x0); + piVar7 = FUN_004db634(piVar7,(float10)fVar2); + FUN_004dbb24(piVar7,&DAT_004e113e,(char *)0x0); + piVar7 = FUN_004db634(piVar7,(float10)fVar1); + FUN_004db92c(piVar7,bVar8); + return; +} + + + +/* @0040d62c file=? name=FUN_0040d62c */ + +void __cdecl FUN_0040d62c(char *param_1,float *param_2) + +{ + uint *puVar1; + float10 fVar2; + uint local_80 [2]; + char *local_78; + uint local_70 [2]; + char *local_68; + uint local_60 [2]; + char *local_58; + uint local_50 [2]; + char *local_48; + uint local_40 [2]; + char *local_38; + uint local_30 [2]; + char *local_28; + uint *local_20; + uint *local_1c; + uint *local_18; + uint *local_14; + uint *local_10; + uint *local_c; + uint *local_8; + + puVar1 = (uint *)FUN_00402298(0x10); + if (puVar1 == (uint *)0x0) { + local_8 = (uint *)0x0; + } + else { + local_8 = FUN_00402460(puVar1,param_1); + } + local_8[3] = local_8[3] + 1; + FUN_00402838(local_30,local_8,0,(char *)0x0); + puVar1 = (uint *)FUN_00402298(0x10); + if (puVar1 == (uint *)0x0) { + local_c = (uint *)0x0; + } + else { + local_c = FUN_00402460(puVar1,local_28); + } + local_c[3] = local_c[3] + 1; + FUN_004024d8((int *)local_30,2); + fVar2 = (float10)FUN_004dd1cc(local_c[2]); + *param_2 = (float)fVar2; + puVar1 = local_c + 3; + *puVar1 = *puVar1 - 1; + if (*puVar1 == 0) { + FUN_004024d8((int *)local_c,3); + } + FUN_00402838(local_40,local_8,1,(char *)0x0); + puVar1 = (uint *)FUN_00402298(0x10); + if (puVar1 == (uint *)0x0) { + local_10 = (uint *)0x0; + } + else { + local_10 = FUN_00402460(puVar1,local_38); + } + local_10[3] = local_10[3] + 1; + FUN_004024d8((int *)local_40,2); + fVar2 = (float10)FUN_004dd1cc(local_10[2]); + param_2[2] = (float)fVar2; + puVar1 = local_10 + 3; + *puVar1 = *puVar1 - 1; + if (*puVar1 == 0) { + FUN_004024d8((int *)local_10,3); + } + FUN_00402838(local_50,local_8,2,(char *)0x0); + puVar1 = (uint *)FUN_00402298(0x10); + if (puVar1 == (uint *)0x0) { + local_14 = (uint *)0x0; + } + else { + local_14 = FUN_00402460(puVar1,local_48); + } + local_14[3] = local_14[3] + 1; + FUN_004024d8((int *)local_50,2); + fVar2 = (float10)FUN_004dd1cc(local_14[2]); + param_2[4] = (float)fVar2; + puVar1 = local_14 + 3; + *puVar1 = *puVar1 - 1; + if (*puVar1 == 0) { + FUN_004024d8((int *)local_14,3); + } + FUN_00402838(local_60,local_8,3,(char *)0x0); + puVar1 = (uint *)FUN_00402298(0x10); + if (puVar1 == (uint *)0x0) { + local_18 = (uint *)0x0; + } + else { + local_18 = FUN_00402460(puVar1,local_58); + } + local_18[3] = local_18[3] + 1; + FUN_004024d8((int *)local_60,2); + fVar2 = (float10)FUN_004dd1cc(local_18[2]); + param_2[1] = (float)fVar2; + puVar1 = local_18 + 3; + *puVar1 = *puVar1 - 1; + if (*puVar1 == 0) { + FUN_004024d8((int *)local_18,3); + } + FUN_00402838(local_70,local_8,4,(char *)0x0); + puVar1 = (uint *)FUN_00402298(0x10); + if (puVar1 == (uint *)0x0) { + local_1c = (uint *)0x0; + } + else { + local_1c = FUN_00402460(puVar1,local_68); + } + local_1c[3] = local_1c[3] + 1; + FUN_004024d8((int *)local_70,2); + fVar2 = (float10)FUN_004dd1cc(local_1c[2]); + param_2[3] = (float)fVar2; + puVar1 = local_1c + 3; + *puVar1 = *puVar1 - 1; + if (*puVar1 == 0) { + FUN_004024d8((int *)local_1c,3); + } + FUN_00402838(local_80,local_8,5,(char *)0x0); + puVar1 = (uint *)FUN_00402298(0x10); + if (puVar1 == (uint *)0x0) { + local_20 = (uint *)0x0; + } + else { + local_20 = FUN_00402460(puVar1,local_78); + } + local_20[3] = local_20[3] + 1; + FUN_004024d8((int *)local_80,2); + fVar2 = (float10)FUN_004dd1cc(local_20[2]); + param_2[5] = (float)fVar2; + puVar1 = local_20 + 3; + *puVar1 = *puVar1 - 1; + if (*puVar1 == 0) { + FUN_004024d8((int *)local_20,3); + } + puVar1 = local_8 + 3; + *puVar1 = *puVar1 - 1; + if (*puVar1 == 0) { + FUN_004024d8((int *)local_8,3); + } + return; +} + + + +/* @0040d908 file=? name=FUN_0040d908 */ + +int FUN_0040d908(int param_1,int *param_2) + +{ + bool bVar1; + undefined3 extraout_var; + int extraout_EAX; + int iVar2; + int iVar3; + int iVar4; + int iVar5; + int iVar6; + int iVar7; + int iVar8; + char acStack_38 [52]; + + bVar1 = FUN_004040d8(param_1,s_COLLISION_004e1141,s_extentcount_004e114b,param_2); + if (CONCAT31(extraout_var,bVar1) == 0) { + FUN_004dbb24((int *)&DAT_00524e68,s_No__COLLISION__entry______004e1157,(char *)0x0); + FUN_004d9c38((int *)&DAT_00524e68); + FUN_004036a0(1); + } + FUN_004de998((int *)0x0,0x18,*param_2,1,FUN_0040daba); + for (iVar8 = 0; iVar8 < *param_2; iVar8 = iVar8 + 1) { + FUN_004d7f10(acStack_38,s_extent__d_004e1171); + iVar2 = FUN_00404118(param_1,acStack_38,s_extminX_004e117b, + (float *)(iVar8 * 0x18 + extraout_EAX)); + iVar3 = FUN_00404118(param_1,acStack_38,s_extmaxX_004e1183, + (float *)(iVar8 * 0x18 + extraout_EAX + 4)); + iVar4 = FUN_00404118(param_1,acStack_38,s_extminY_004e118b, + (float *)(iVar8 * 0x18 + extraout_EAX + 8)); + iVar5 = FUN_00404118(param_1,acStack_38,s_extmaxY_004e1193, + (float *)(iVar8 * 0x18 + extraout_EAX + 0xc)); + iVar6 = FUN_00404118(param_1,acStack_38,s_extminZ_004e119b, + (float *)(iVar8 * 0x18 + extraout_EAX + 0x10)); + iVar7 = FUN_00404118(param_1,acStack_38,s_extmaxZ_004e11a3, + (float *)(iVar8 * 0x18 + extraout_EAX + 0x14)); + if (((((iVar2 == 0 || iVar3 == 0) || iVar4 == 0) || iVar5 == 0) || iVar6 == 0) || iVar7 == 0) { + FUN_004036a0(1); + } + } + return extraout_EAX; +} + + + +/* @0040d90e file=? name=FUN_0040d90e */ + +int FUN_0040d90e(void) + +{ + bool bVar1; + undefined3 extraout_var; + int extraout_EAX; + int iVar2; + int iVar3; + int iVar4; + int iVar5; + int iVar6; + int iVar7; + int iVar8; + int unaff_EBP; + + bVar1 = FUN_004040d8(*(int *)(unaff_EBP + 8),s_COLLISION_004e1141,s_extentcount_004e114b, + *(int **)(unaff_EBP + 0xc)); + if (CONCAT31(extraout_var,bVar1) == 0) { + FUN_004dbb24((int *)&DAT_00524e68,s_No__COLLISION__entry______004e1157,(char *)0x0); + FUN_004d9c38((int *)&DAT_00524e68); + FUN_004036a0(1); + } + FUN_004de998((int *)0x0,0x18,**(int **)(unaff_EBP + 0xc),1,FUN_0040daba); + for (iVar8 = 0; iVar8 < **(int **)(unaff_EBP + 0xc); iVar8 = iVar8 + 1) { + FUN_004d7f10((undefined1 *)(unaff_EBP + -0x34),s_extent__d_004e1171); + iVar2 = FUN_00404118(*(int *)(unaff_EBP + 8),(char *)(unaff_EBP + -0x34),s_extminX_004e117b, + (float *)(iVar8 * 0x18 + extraout_EAX)); + iVar3 = FUN_00404118(*(int *)(unaff_EBP + 8),(char *)(unaff_EBP + -0x34),s_extmaxX_004e1183, + (float *)(iVar8 * 0x18 + extraout_EAX + 4)); + iVar4 = FUN_00404118(*(int *)(unaff_EBP + 8),(char *)(unaff_EBP + -0x34),s_extminY_004e118b, + (float *)(iVar8 * 0x18 + extraout_EAX + 8)); + iVar5 = FUN_00404118(*(int *)(unaff_EBP + 8),(char *)(unaff_EBP + -0x34),s_extmaxY_004e1193, + (float *)(iVar8 * 0x18 + extraout_EAX + 0xc)); + iVar6 = FUN_00404118(*(int *)(unaff_EBP + 8),(char *)(unaff_EBP + -0x34),s_extminZ_004e119b, + (float *)(iVar8 * 0x18 + extraout_EAX + 0x10)); + iVar7 = FUN_00404118(*(int *)(unaff_EBP + 8),(char *)(unaff_EBP + -0x34),s_extmaxZ_004e11a3, + (float *)(iVar8 * 0x18 + extraout_EAX + 0x14)); + if (((((iVar2 == 0 || iVar3 == 0) || iVar4 == 0) || iVar5 == 0) || iVar6 == 0) || iVar7 == 0) { + FUN_004036a0(1); + } + } + return extraout_EAX; +} + + + +/* @0040daba file=? name=FUN_0040daba */ + +undefined4 __cdecl FUN_0040daba(undefined4 param_1) + +{ + return param_1; +} + + + +/* @0040dac4 file=? name=FUN_0040dac4 */ + +undefined4 * __cdecl FUN_0040dac4(undefined4 *param_1,undefined4 *param_2) + +{ + FUN_0040d28c(param_1,param_2); + param_1[6] = &PTR_FUN_004e11c4; + return param_1; +} + + + +/* @0040dae4 file=? name=FUN_0040dae4 */ + +void __cdecl FUN_0040dae4(int param_1) + +{ + *(undefined ***)(param_1 + 0x18) = &PTR_FUN_004e11c4; + return; +} + + + +/* @0040daf4 file=? name=FUN_0040daf4 */ + +void __cdecl FUN_0040daf4(float *param_1,float *param_2) + +{ + *param_1 = *param_2 + *param_1; + param_1[1] = *param_2 + param_1[1]; + param_1[2] = param_2[1] + param_1[2]; + param_1[3] = param_2[1] + param_1[3]; + param_1[4] = param_2[2] + param_1[4]; + param_1[5] = param_2[2] + param_1[5]; + return; +} + + + +/* @0040db34 file=? name=FUN_0040db34 */ + +void __cdecl FUN_0040db34(int *param_1,byte param_2) + +{ + if ((param_1 != (int *)0x0) && (param_1[6] = (int)&PTR_FUN_004e11c4, (param_2 & 1) != 0)) { + FUN_004022d0(param_1); + } + return; +} + + + +/* @0040db54 file=? name=FUN_0040db54 */ + +undefined4 __cdecl FUN_0040db54(float *param_1,float *param_2) + +{ + int iVar1; + undefined4 uVar2; + float local_1c [6]; + + iVar1 = FUN_0040d474(param_1,param_2); + if (iVar1 == 0) { + uVar2 = 0; + } + else { + FUN_0040d2bc(local_1c,param_1,param_2); + uVar2 = (**(code **)((int)param_1[6] + 4))(param_1,local_1c); + } + return uVar2; +} + + + +/* @0040db98 file=? name=FUN_0040db98 */ + +undefined4 __cdecl FUN_0040db98(float *param_1,float *param_2,float *param_3) + +{ + int iVar1; + undefined4 uVar2; + + iVar1 = FUN_0040d474(param_1,param_2); + if (iVar1 == 0) { + uVar2 = 0; + } + else { + FUN_0040d2bc(param_3,param_1,param_2); + uVar2 = (**(code **)((int)param_1[6] + 4))(param_1,param_3); + } + return uVar2; +} + + + +/* @0040dbd4 file=? name=FUN_0040dbd4 */ + +undefined4 __cdecl FUN_0040dbd4(float *param_1,float *param_2) + +{ + int iVar1; + undefined4 uVar2; + + iVar1 = FUN_0040d3cc(param_1,param_2); + if (iVar1 == 0) { + uVar2 = 0; + } + else { + uVar2 = (**(code **)((int)param_1[6] + 8))(param_1,param_2); + } + return uVar2; +} + + + +/* @0040dc00 file=? name=FUN_0040dc00 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 __cdecl FUN_0040dc00(float *param_1,float *param_2) + +{ + float10 fVar1; + + if ((((*param_1 <= *param_2) && (*param_2 <= param_1[1])) && (param_1[2] <= param_2[1])) && + ((param_1[4] <= param_2[2] && (param_2[2] <= param_1[5])))) { + fVar1 = (float10)(**(code **)((int)param_1[6] + 0xc))(param_1,param_2); + return fVar1; + } + return (float10)_DAT_0040dc54; +} + + + +/* @0040dc58 file=? name=FUN_0040dc58 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl FUN_0040dc58(int param_1,int param_2) + +{ + float fVar1; + bool bVar2; + bool bVar3; + undefined4 uVar4; + int iVar5; + uint uVar6; + float10 fVar7; + float local_14; + float local_10; + float local_c; + float local_8; + + bVar2 = false; + bVar3 = false; + uVar6 = 0; + do { + iVar5 = (int)uVar6 >> 1; + if ((uVar6 & 1) == 0) { + local_10 = *(float *)(param_1 + uVar6 * 4) - *(float *)(param_2 + iVar5 * 4); + local_14 = -*(float *)(param_2 + 0xc + iVar5 * 4); + } + else { + local_10 = *(float *)(param_2 + iVar5 * 4) - *(float *)(param_1 + uVar6 * 4); + local_14 = *(float *)(param_2 + 0xc + iVar5 * 4); + } + fVar7 = FUN_004dcd00((double)local_14); + if ((float10)_DAT_0040dda4 < fVar7) { + fVar1 = -local_10 / local_14; + if (_DAT_0040dda8 <= local_14) { + if (bVar3) { + if (fVar1 < local_c) { + local_c = fVar1; + } + } + else { + bVar3 = true; + local_c = fVar1; + } + if (local_c < _DAT_0040dda8) { + return 0; + } + } + else { + if (bVar2) { + if (local_8 <= fVar1) { + local_8 = fVar1; + } + } + else { + bVar2 = true; + local_8 = fVar1; + } + if (*(float *)(param_2 + 0x18) < local_8) { + return 0; + } + } + } + else if (_DAT_0040dda8 < local_10) { + return 0; + } + uVar6 = uVar6 + 1; + if (5 < (int)uVar6) { + if (local_c < local_8) { + uVar4 = 0; + } + else { + uVar4 = (**(code **)(*(int *)(param_1 + 0x18) + 0x10))(param_1,param_2,local_8,local_c); + } + return uVar4; + } + } while( true ); +} + + + +/* @0040ddb8 file=? name=FUN_0040ddb8 */ + +undefined4 FUN_0040ddb8(void) + +{ + return 1; +} + + + +/* @0040ddc4 file=? name=FUN_0040ddc4 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 __cdecl FUN_0040ddc4(int param_1,int param_2) + +{ + float fVar1; + float fVar2; + + fVar1 = *(float *)(param_2 + 4) - *(float *)(param_1 + 0xc); + fVar2 = _DAT_0040ddf4; + if (_DAT_0040ddf4 < fVar1) { + fVar2 = fVar1; + } + return (float10)fVar2; +} + + + +/* @0040de34 file=? name=FUN_0040de34 */ + +undefined4 FUN_0040de34(void) + +{ + return 1; +} + + + +/* @0040de40 file=? name=FUN_0040de40 */ + +undefined4 * __cdecl FUN_0040de40(undefined4 *param_1,int param_2) + +{ + undefined4 extraout_EAX; + + FUN_004de998((int *)0x0,0x1c,param_2,1,FUN_0040df25); + *param_1 = extraout_EAX; + param_1[2] = param_2; + param_1[1] = *param_1; + param_1[3] = param_1[2]; + return param_1; +} + + + +/* @0040de78 file=? name=FUN_0040de78 */ + +void __cdecl FUN_0040de78(int param_1,undefined4 param_2,undefined4 *param_3) + +{ + int iVar1; + undefined4 *puVar2; + + puVar2 = *(undefined4 **)(param_1 + 4); + *puVar2 = param_2; + for (iVar1 = 6; puVar2 = puVar2 + 1, iVar1 != 0; iVar1 = iVar1 + -1) { + *puVar2 = *param_3; + param_3 = param_3 + 1; + } + *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 0x1c; + *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + -1; + return; +} + + + +/* @0040dea4 file=? name=FUN_0040dea4 */ + +undefined4 FUN_0040dea4(void) + +{ + return 1; +} + + + +/* @0040deb0 file=? name=FUN_0040deb0 */ + +int __cdecl FUN_0040deb0(int param_1,undefined4 param_2) + +{ + FUN_0040dae4(param_1); + *(undefined ***)(param_1 + 0x18) = &PTR_FUN_004e11ac; + *(undefined4 *)(param_1 + 0x1c) = param_2; + return param_1; +} + + + +/* @0040ded0 file=? name=FUN_0040ded0 */ + +undefined4 * __cdecl FUN_0040ded0(undefined4 *param_1,undefined4 *param_2,undefined4 param_3) + +{ + FUN_0040dac4(param_1,param_2); + param_1[6] = &PTR_FUN_004e11ac; + param_1[7] = param_3; + return param_1; +} + + + +/* @0040def8 file=? name=FUN_0040def8 */ + +void __cdecl FUN_0040def8(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + param_1[6] = (int)&PTR_FUN_004e11ac; + FUN_0040db34(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0040df25 file=? name=FUN_0040df25 */ + +undefined4 __cdecl FUN_0040df25(undefined4 param_1) + +{ + return param_1; +} + + + +/* @0040df68 file=? name=FUN_0040df68 */ + +undefined4 * __cdecl FUN_0040df68(undefined4 *param_1,undefined4 param_2,undefined4 *param_3) + +{ + undefined4 *puVar1; + int iVar2; + + puVar1 = param_1; + for (iVar2 = 6; iVar2 != 0; iVar2 = iVar2 + -1) { + *puVar1 = *param_3; + param_3 = param_3 + 1; + puVar1 = puVar1 + 1; + } + param_1[6] = param_2; + param_1[0xd] = 0; + iVar2 = 0; + puVar1 = param_1 + 7; + do { + *puVar1 = 0; + iVar2 = iVar2 + 1; + puVar1 = puVar1 + 1; + } while (iVar2 < 6); + return param_1; +} + + + +/* @0040dfa4 file=? name=FUN_0040dfa4 */ + +void __cdecl FUN_0040dfa4(undefined4 *param_1,byte param_2) + +{ + undefined4 *puVar1; + int iVar2; + + if (param_1 != (undefined4 *)0x0) { + iVar2 = 0; + puVar1 = param_1 + 7; + do { + if ((undefined4 *)*puVar1 != (undefined4 *)0x0) { + FUN_0040dfa4((undefined4 *)*puVar1,3); + } + iVar2 = iVar2 + 1; + puVar1 = puVar1 + 1; + } while (iVar2 < 6); + if ((undefined4 *)param_1[0xd] != (undefined4 *)0x0) { + FUN_0040dfa4((undefined4 *)param_1[0xd],3); + } + if ((param_2 & 1) != 0) { + FUN_00402f98(0x4e11dc,param_1); + } + } + return; +} + + + +/* @0040e000 file=? name=FUN_0040e000 */ + +void __cdecl FUN_0040e000(int param_1,int param_2,undefined4 *param_3) + +{ + uint uVar1; + int iVar2; + undefined4 *puVar3; + uint uVar4; + float local_30 [6]; + uint *local_18; + undefined4 *local_14; + float local_10; + uint local_c; + int local_8; + + FUN_0040d28c(local_30,param_3); + local_8 = 0; + local_18 = &DAT_004e1204; + do { + uVar1 = *local_18; + uVar4 = uVar1 ^ 1; + if ((uVar1 & 1) == 0) { + if (local_30[uVar1] < *(float *)(param_1 + uVar1 * 4)) { + local_c = (uint)(*(float *)(param_1 + uVar1 * 4) < local_30[uVar4]); + goto LAB_0040e07f; + } + } + else if (*(float *)(param_1 + uVar1 * 4) < local_30[uVar1]) { + local_c = (uint)(local_30[uVar4] < *(float *)(param_1 + uVar1 * 4)); +LAB_0040e07f: + if (local_c != 0) { + local_10 = local_30[uVar4]; + local_30[uVar4] = *(float *)(param_1 + uVar1 * 4); + } + iVar2 = (**(code **)(*(int *)(param_2 + 0x18) + 4))(param_2,local_30); + if (iVar2 != 0) { + if (*(int *)(param_1 + 0x1c + uVar1 * 4) == 0) { + local_14 = FUN_00402f74(0x4e11dc); + if (local_14 == (undefined4 *)0x0) { + puVar3 = (undefined4 *)0x0; + } + else { + puVar3 = FUN_0040df68(local_14,param_2,local_30); + } + *(undefined4 **)(param_1 + 0x1c + uVar1 * 4) = puVar3; + } + else { + FUN_0040e000(*(int *)(param_1 + 0x1c + uVar1 * 4),param_2,local_30); + } + } + if (local_c == 0) { + return; + } + local_30[uVar4] = local_10; + local_30[uVar1] = *(float *)(param_1 + uVar1 * 4); + } + local_8 = local_8 + 1; + local_18 = local_18 + 1; + if (5 < local_8) { + iVar2 = (**(code **)(*(int *)(param_2 + 0x18) + 4))(param_2,local_30); + if (iVar2 != 0) { + if (*(int *)(param_1 + 0x34) == 0) { + puVar3 = FUN_00402f74(0x4e11dc); + if (puVar3 == (undefined4 *)0x0) { + puVar3 = (undefined4 *)0x0; + } + else { + puVar3 = FUN_0040df68(puVar3,param_2,local_30); + } + *(undefined4 **)(param_1 + 0x34) = puVar3; + } + else { + FUN_0040e000(*(int *)(param_1 + 0x34),param_2,local_30); + } + } + return; + } + } while( true ); +} + + + +/* @0040e184 file=? name=FUN_0040e184 */ + +void __cdecl FUN_0040e184(int param_1,int param_2,undefined4 *param_3) + +{ + uint uVar1; + int iVar2; + uint uVar3; + float local_2c [6]; + uint *local_14; + float local_10; + uint local_c; + int local_8; + + if (*(int *)(param_1 + 0x18) == param_2) { + *(undefined4 *)(param_1 + 0x18) = 0; + } + else { + FUN_0040d28c(local_2c,param_3); + local_8 = 0; + local_14 = &DAT_004e1204; + do { + uVar1 = *local_14; + uVar3 = uVar1 ^ 1; + if ((uVar1 & 1) == 0) { + if (local_2c[uVar1] < *(float *)(param_1 + uVar1 * 4)) { + local_c = (uint)(*(float *)(param_1 + uVar1 * 4) < local_2c[uVar3]); + goto LAB_0040e213; + } + } + else if (*(float *)(param_1 + uVar1 * 4) < local_2c[uVar1]) { + local_c = (uint)(local_2c[uVar3] < *(float *)(param_1 + uVar1 * 4)); +LAB_0040e213: + if (local_c != 0) { + local_10 = local_2c[uVar3]; + local_2c[uVar3] = *(float *)(param_1 + uVar1 * 4); + } + iVar2 = (**(code **)(*(int *)(param_2 + 0x18) + 4))(param_2,local_2c); + if (iVar2 != 0) { + FUN_0040e184(*(int *)(param_1 + 0x1c + uVar1 * 4),param_2,local_2c); + } + if (local_c == 0) { + return; + } + local_2c[uVar3] = local_10; + local_2c[uVar1] = *(float *)(param_1 + uVar1 * 4); + } + local_8 = local_8 + 1; + local_14 = local_14 + 1; + } while (local_8 < 6); + iVar2 = (**(code **)(*(int *)(param_2 + 0x18) + 4))(param_2,local_2c); + if (iVar2 != 0) { + FUN_0040e184(*(int *)(param_1 + 0x34),param_2,local_2c); + } + } + return; +} + + + +/* @0040e2ac file=? name=FUN_0040e2ac */ + +int __cdecl FUN_0040e2ac(int param_1,int param_2,int param_3) + +{ + uint uVar1; + int iVar2; + uint *puVar3; + int local_8; + +LAB_0040e2c0: + do { + iVar2 = param_1; + puVar3 = &DAT_004e1204; + local_8 = 0; + do { + uVar1 = *puVar3; + if ((uVar1 & 1) == 0) { + if (*(float *)(param_2 + uVar1 * 4) < *(float *)(iVar2 + uVar1 * 4)) { + if (*(float *)(iVar2 + uVar1 * 4) <= *(float *)(param_2 + (uVar1 ^ 1) * 4)) { + if (param_3 == 0) { + return iVar2; + } + return param_3; + } + goto LAB_0040e323; + } + } + else if (*(float *)(iVar2 + uVar1 * 4) < *(float *)(param_2 + uVar1 * 4)) { + if (*(float *)(param_2 + (uVar1 ^ 1) * 4) <= *(float *)(iVar2 + uVar1 * 4)) { + if (param_3 == 0) { + return iVar2; + } + return param_3; + } +LAB_0040e323: + if (*(int *)(iVar2 + 0x1c + uVar1 * 4) == 0) { + if (param_3 == 0) { + return iVar2; + } + return param_3; + } + param_1 = *(int *)(iVar2 + 0x1c + uVar1 * 4); + goto LAB_0040e2c0; + } + local_8 = local_8 + 1; + puVar3 = puVar3 + 1; + } while (local_8 < 6); + param_1 = *(int *)(iVar2 + 0x34); + param_3 = iVar2; + if (*(int *)(iVar2 + 0x34) == 0) { + return iVar2; + } + } while( true ); +} + + + +/* @0040e36c file=? name=FUN_0040e36c */ + +int __cdecl FUN_0040e36c(int param_1,int param_2) + +{ + uint uVar1; + int iVar2; + uint *puVar3; + int local_8; + +LAB_0040e37b: + iVar2 = param_1; + puVar3 = &DAT_004e1204; + local_8 = 0; + do { + uVar1 = *puVar3; + if ((uVar1 & 1) == 0) { + if (*(float *)(param_2 + uVar1 * 4) < *(float *)(iVar2 + uVar1 * 4)) { + if (*(float *)(iVar2 + uVar1 * 4) <= *(float *)(param_2 + (uVar1 ^ 1) * 4)) { + return iVar2; + } + goto LAB_0040e3c5; + } + } + else if (*(float *)(iVar2 + uVar1 * 4) < *(float *)(param_2 + uVar1 * 4)) break; + local_8 = local_8 + 1; + puVar3 = puVar3 + 1; + if (3 < local_8) { + return iVar2; + } + } while( true ); + if (*(float *)(param_2 + (uVar1 ^ 1) * 4) <= *(float *)(iVar2 + uVar1 * 4)) { + return iVar2; + } +LAB_0040e3c5: + param_1 = *(int *)(iVar2 + 0x1c + uVar1 * 4); + if (param_1 == 0) { + return iVar2; + } + goto LAB_0040e37b; +} + + + +/* @0040e3ec file=? name=FUN_0040e3ec */ + +undefined4 __cdecl FUN_0040e3ec(int param_1,int param_2,undefined4 param_3) + +{ + uint uVar1; + int iVar2; + uint *puVar3; + int local_8; + +LAB_0040e3f7: + do { + puVar3 = &DAT_004e1204; + local_8 = 0; + do { + uVar1 = *puVar3; + if ((uVar1 & 1) == 0) { + if (*(float *)(param_2 + ((int)uVar1 >> 1) * 4) < *(float *)(param_1 + uVar1 * 4)) + goto LAB_0040e42a; + } + else if (*(float *)(param_1 + uVar1 * 4) < *(float *)(param_2 + ((int)uVar1 >> 1) * 4)) { +LAB_0040e42a: + param_1 = *(int *)(param_1 + 0x1c + uVar1 * 4); + if (param_1 == 0) { + return param_3; + } + goto LAB_0040e3f7; + } + local_8 = local_8 + 1; + puVar3 = puVar3 + 1; + } while (local_8 < 6); + if (*(int *)(param_1 + 0x34) == 0) { + iVar2 = *(int *)(param_1 + 0x18); + if (iVar2 == 0) { + param_3 = 0; + } + else { + iVar2 = (**(code **)(*(int *)(iVar2 + 0x18) + 8))(iVar2,param_2); + if (iVar2 != 0) { + param_3 = *(undefined4 *)(param_1 + 0x18); + } + } + return param_3; + } + iVar2 = *(int *)(param_1 + 0x18); + if (iVar2 == 0) { + param_3 = 0; + } + else { + iVar2 = (**(code **)(*(int *)(iVar2 + 0x18) + 8))(iVar2,param_2); + if (iVar2 != 0) { + param_3 = *(undefined4 *)(param_1 + 0x18); + } + } + param_1 = *(int *)(param_1 + 0x34); + } while( true ); +} + + + +/* @0040e4ac file=? name=FUN_0040e4ac */ + +void __cdecl FUN_0040e4ac(int param_1,undefined4 param_2,undefined4 *param_3,int param_4) + +{ + uint uVar1; + int iVar2; + int iVar3; + uint uVar4; + float local_2c [6]; + uint *local_14; + float local_10; + uint local_c; + int local_8; + + FUN_0040d28c(local_2c,param_3); + local_8 = 0; + local_14 = &DAT_004e1204; + do { + uVar1 = *local_14; + uVar4 = uVar1 ^ 1; + if ((uVar1 & 1) == 0) { + if (local_2c[uVar1] < *(float *)(param_1 + uVar1 * 4)) { + local_c = (uint)(*(float *)(param_1 + uVar1 * 4) <= local_2c[uVar4]); + goto LAB_0040e527; + } + } + else if (*(float *)(param_1 + uVar1 * 4) < local_2c[uVar1]) { + local_c = (uint)(local_2c[uVar4] <= *(float *)(param_1 + uVar1 * 4)); +LAB_0040e527: + if (local_c != 0) { + local_10 = local_2c[uVar4]; + local_2c[uVar4] = *(float *)(param_1 + uVar1 * 4); + } + iVar2 = *(int *)(param_1 + 0x1c + uVar1 * 4); + if (iVar2 != 0) { + FUN_0040e4ac(iVar2,param_2,local_2c,param_4); + } + if (local_c == 0) { + return; + } + if (*(int *)(param_4 + 0xc) == 0) { + return; + } + local_2c[uVar4] = local_10; + local_2c[uVar1] = *(float *)(param_1 + uVar1 * 4); + } + local_8 = local_8 + 1; + local_14 = local_14 + 1; + if (5 < local_8) { + iVar3 = 0; + iVar2 = *(int *)(param_1 + 0x18); + if ((iVar2 != 0) && + (iVar2 = (**(code **)(*(int *)(iVar2 + 0x18) + 4))(iVar2,local_2c), iVar2 != 0)) { + iVar3 = *(int *)(param_1 + 0x18); + } + if (*(int *)(param_1 + 0x34) != 0) { + FUN_0040e4ac(*(int *)(param_1 + 0x34),param_2,local_2c,param_4); + } + if ((iVar3 != 0) && (*(int *)(param_4 + 0xc) != 0)) { + FUN_0040de78(param_4,iVar3,local_2c); + } + return; + } + } while( true ); +} + + + +/* @0040e5f0 file=? name=FUN_0040e5f0 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +int __cdecl FUN_0040e5f0(int param_1,int param_2,float *param_3) + +{ + uint uVar1; + int iVar2; + int iVar3; + float10 fVar4; + uint *local_10; + float local_c; + int local_8; + +LAB_0040e601: + local_8 = 0; + local_10 = &DAT_004e1204; + do { + uVar1 = *local_10; + if ((uVar1 & 1) == 0) { + if (*(float *)(param_2 + ((int)uVar1 >> 1) * 4) < *(float *)(param_1 + uVar1 * 4)) break; + } + else if (*(float *)(param_1 + uVar1 * 4) < *(float *)(param_2 + ((int)uVar1 >> 1) * 4)) break; + local_8 = local_8 + 1; + local_10 = local_10 + 1; + if (3 < local_8) { + if (((*(float *)(param_1 + 0xc) < *(float *)(param_2 + 4)) && (*(int *)(param_1 + 0x28) != 0)) + && (iVar2 = FUN_0040e5f0(*(int *)(param_1 + 0x28),param_2,param_3), iVar2 != 0)) { + return iVar2; + } + if (*(float *)(param_2 + 4) < *(float *)(param_1 + 8)) goto LAB_0040e725; + if (*(int *)(param_1 + 0x18) == 0) { +LAB_0040e6dc: + iVar2 = 0; + *param_3 = -1.0; + } + else { + iVar2 = *(int *)(param_1 + 0x18); + fVar4 = (float10)(**(code **)(*(int *)(*(int *)(param_1 + 0x18) + 0x18) + 0xc)) + (*(int *)(param_1 + 0x18),param_2); + *param_3 = (float)fVar4; + if ((*param_3 == _DAT_0040e750) || + (*(float *)(param_2 + 4) - *param_3 < *(float *)(param_1 + 8))) goto LAB_0040e6dc; + } + if (((*(int *)(param_1 + 0x34) != 0) && + (iVar3 = FUN_0040e5f0(*(int *)(param_1 + 0x34),param_2,&local_c), iVar3 != 0)) && + ((local_c < *param_3 || (iVar2 == 0)))) { + *param_3 = local_c; + iVar2 = iVar3; + } + if (iVar2 != 0) { + return iVar2; + } +LAB_0040e725: + if (*(int *)(param_1 + 0x24) != 0) { + iVar2 = FUN_0040e5f0(*(int *)(param_1 + 0x24),param_2,param_3); + return iVar2; + } + *param_3 = -1.0; + return 0; + } + } while( true ); + param_1 = *(int *)(param_1 + 0x1c + uVar1 * 4); + if (param_1 == 0) { + *param_3 = -1.0; + return 0; + } + goto LAB_0040e601; +} + + + +/* @0040e754 file=? name=FUN_0040e754 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +int __cdecl FUN_0040e754(int param_1,int param_2) + +{ + uint uVar1; + int iVar2; + int iVar3; + float10 fVar4; + uint local_60 [6]; + uint local_48; + uint *local_44; + uint *local_40; + uint *local_3c; + uint *local_38; + uint *local_34; + float local_30; + int local_2c; + int local_28; + int local_24; + int local_20; + int local_1c; + float local_18; + float local_14; + float local_10; + float local_c; + float local_8; + + local_8 = 0.0; + local_c = 0.0; + local_1c = 0; + local_20 = 6; + local_24 = 0; + local_28 = 0; + local_2c = 0; + local_3c = &local_48; + local_38 = local_60; + local_34 = &DAT_004e1204; + do { + uVar1 = *local_34; + iVar2 = (int)uVar1 >> 1; + if ((uVar1 & 1) == 0) { + local_10 = *(float *)(param_1 + uVar1 * 4) - *(float *)(param_2 + iVar2 * 4); + local_14 = -*(float *)(param_2 + 0xc + iVar2 * 4); + } + else { + local_10 = *(float *)(param_2 + iVar2 * 4) - *(float *)(param_1 + uVar1 * 4); + local_14 = *(float *)(param_2 + 0xc + iVar2 * 4); + } + local_30 = local_14; + fVar4 = FUN_004dcd00((double)local_14); + if ((float10)_DAT_0040ea58 < fVar4) { + local_18 = -local_10 / local_14; + if (_DAT_0040ea5c <= local_14) { + if (local_28 == 0) { + local_28 = 1; + local_c = local_18; + } + else if (local_18 < local_c) { + local_c = local_18; + } + if (_DAT_0040ea5c <= local_10) { + if (*(int *)(param_1 + 0x1c + uVar1 * 4) != 0) { + *local_3c = uVar1; + local_20 = local_20 + -1; + } + goto LAB_0040e93e; + } + if ((local_18 <= *(float *)(param_2 + 0x18)) && (*(int *)(param_1 + 0x1c + uVar1 * 4) != 0)) + { + *local_3c = uVar1; + local_20 = local_20 + -1; + local_3c = local_3c + -1; + } + if ((local_24 != 0) && (local_c < local_8)) goto LAB_0040e93e; + } + else { + if (local_24 == 0) { + local_24 = 1; + local_8 = local_18; + } + else if (local_8 < local_18) { + local_8 = local_18; + } + if (_DAT_0040ea5c <= local_10) { + if (*(int *)(param_1 + 0x1c + uVar1 * 4) != 0) { + *local_38 = uVar1; + local_1c = local_1c + 1; + local_38 = local_38 + 1; + } + if ((*(float *)(param_2 + 0x18) < local_18) || ((local_28 != 0 && (local_c < local_8)))) + goto LAB_0040e93e; + } + } + } + else if (_DAT_0040ea5c < local_10) { + if (*(int *)(param_1 + 0x1c + uVar1 * 4) != 0) { + *local_38 = uVar1; + local_1c = local_1c + 1; + } + goto LAB_0040e93e; + } + local_2c = local_2c + 1; + local_34 = local_34 + 1; + if (5 < local_2c) { +LAB_0040e93e: + if (local_2c == 6) { + local_60[local_20] = 6; + local_20 = local_20 + -1; + } + local_2c = 0; + local_40 = local_60; + if (0 < local_1c) { + do { + iVar2 = FUN_0040e754(*(int *)(param_1 + 0x1c + *local_40 * 4),param_2); + if (iVar2 != 0) { + return iVar2; + } + local_2c = local_2c + 1; + local_40 = local_40 + 1; + } while (local_2c < local_1c); + } + if ((local_20 < 6) && (local_60[local_20 + 1] == 6)) { + iVar2 = 0; + if (*(int *)(param_1 + 0x18) == 0) { + if (*(int *)(param_1 + 0x34) != 0) { + iVar2 = FUN_0040e754(*(int *)(param_1 + 0x34),param_2); + } + } + else { + iVar3 = (**(code **)(*(int *)(*(int *)(param_1 + 0x18) + 0x18) + 0x10)) + (*(int *)(param_1 + 0x18),param_2,local_8); + if (iVar3 != 0) { + iVar2 = *(int *)(param_1 + 0x18); + } + if ((*(int *)(param_1 + 0x34) != 0) && + (iVar3 = FUN_0040e754(*(int *)(param_1 + 0x34),param_2), iVar3 != 0)) { + iVar2 = iVar3; + } + } + if (iVar2 != 0) { + return iVar2; + } + local_20 = local_20 + 1; + } + local_2c = local_20 + 1; + local_44 = local_60 + local_2c; + while( true ) { + if (6 < local_2c) { + return 0; + } + iVar2 = FUN_0040e754(*(int *)(param_1 + 0x1c + *local_44 * 4),param_2); + if (iVar2 != 0) break; + local_2c = local_2c + 1; + local_44 = local_44 + 1; + } + return iVar2; + } + } while( true ); +} + + + +/* @0040ea6c file=? name=FUN_0040ea6c */ + +void __cdecl FUN_0040ea6c(int *param_1,int param_2,undefined4 *param_3) + +{ + undefined4 *puVar1; + + if (*param_1 == 0) { + puVar1 = FUN_00402f74(0x4e11dc); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_0040df68(puVar1,param_2,param_3); + } + *param_1 = (int)puVar1; + } + else { + FUN_0040e000(*param_1,param_2,param_3); + } + return; +} + + + +/* @0040eabc file=? name=FUN_0040eabc */ + +void __cdecl FUN_0040eabc(undefined4 *param_1) + +{ + if ((undefined4 *)*param_1 != (undefined4 *)0x0) { + FUN_0040dfa4((undefined4 *)*param_1,3); + } + *param_1 = 0; + return; +} + + + +/* @0040eadc file=? name=FUN_0040eadc */ + +void __cdecl FUN_0040eadc(int *param_1,float *param_2) + +{ + int iVar1; + float local_28 [6]; + float local_10 [3]; + + FUN_0040cdf4(param_2,param_2[6],local_10); + FUN_0040d210(local_28,param_2,local_10); + iVar1 = FUN_0040e2ac(*param_1,(int)local_28,0); + FUN_0040e754(iVar1,(int)param_2); + return; +} + + + +/* @0040eb2c file=? name=FUN_0040eb2c */ + +undefined4 FUN_0040eb2c(void) + +{ + return 1; +} + + + +/* @0040eb64 file=? name=FUN_0040eb64 */ + +undefined4 FUN_0040eb64(void) + +{ + return 1; +} + + + +/* @0040eb70 file=? name=FUN_0040eb70 */ + +void __cdecl FUN_0040eb70(undefined4 *param_1) + +{ + *param_1 = 0; + param_1[1] = 0; + param_1[2] = 0; + param_1[3] = 0; + param_1[4] = 1; + return; +} + + + +/* @0040eb94 file=? name=FUN_0040eb94 */ + +void __cdecl FUN_0040eb94(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + if ((int *)param_1[2] != (int *)0x0) { + FUN_004022d0((int *)param_1[2]); + } + if ((int *)param_1[3] != (int *)0x0) { + FUN_004022d0((int *)param_1[3]); + } + FUN_0040ec7c(param_1); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0040ebd4 file=? name=FUN_0040ebd4 */ + +void __cdecl FUN_0040ebd4(undefined4 *param_1,undefined4 param_2,undefined4 *param_3) + +{ + undefined4 *puVar1; + + param_1[1] = param_1[1] + 1; + puVar1 = FUN_00402f74(0x4e1234); + if (puVar1 != (undefined4 *)0x0) { + *puVar1 = param_2; + puVar1[1] = 0; + FUN_0040d28c(puVar1 + 2,param_3); + } + puVar1[1] = *param_1; + *param_1 = puVar1; + return; +} + + + +/* @0040ec28 file=? name=FUN_0040ec28 */ + +void __cdecl FUN_0040ec28(int *param_1,int param_2) + +{ + int *piVar1; + int *piVar2; + + piVar1 = (int *)0x0; + for (piVar2 = (int *)*param_1; (piVar2 != (int *)0x0 && (param_2 != *piVar2)); + piVar2 = (int *)piVar2[1]) { + piVar1 = piVar2; + } + if (piVar2 != (int *)0x0) { + if (piVar1 == (int *)0x0) { + *param_1 = piVar2[1]; + } + else { + piVar1[1] = piVar2[1]; + } + param_1[1] = param_1[1] + -1; + if (piVar2 != (int *)0x0) { + FUN_00402f98(0x4e1234,piVar2); + } + } + return; +} + + + +/* @0040ec7c file=? name=FUN_0040ec7c */ + +void __cdecl FUN_0040ec7c(undefined4 *param_1) + +{ + undefined4 *puVar1; + undefined4 *puVar2; + + puVar1 = (undefined4 *)*param_1; + while (puVar2 = puVar1, puVar2 != (undefined4 *)0x0) { + puVar1 = (undefined4 *)puVar2[1]; + if (puVar2 != (undefined4 *)0x0) { + FUN_00402f98(0x4e1234,puVar2); + } + } + *param_1 = 0; + param_1[1] = 0; + return; +} + + + +/* @0040ecbc file=? name=FUN_0040ecbc */ + +float * __cdecl FUN_0040ecbc(undefined4 *param_1,float *param_2) + +{ + undefined4 *puVar1; + float *pfVar2; + int iVar3; + + puVar1 = (undefined4 *)*param_1; + while( true ) { + if (puVar1 == (undefined4 *)0x0) { + return (float *)0x0; + } + pfVar2 = (float *)*puVar1; + iVar3 = FUN_0040dbd4(pfVar2,param_2); + if (iVar3 != 0) break; + puVar1 = (undefined4 *)puVar1[1]; + } + return pfVar2; +} + + + +/* @0040ecf0 file=? name=FUN_0040ecf0 */ + +void __cdecl FUN_0040ecf0(undefined4 *param_1,float *param_2,int param_3) + +{ + undefined4 *puVar1; + float *pfVar2; + int iVar3; + float local_1c [6]; + + puVar1 = (undefined4 *)*param_1; + do { + if (puVar1 == (undefined4 *)0x0) { + return; + } + pfVar2 = (float *)*puVar1; + iVar3 = FUN_0040d474(pfVar2,param_2); + if (iVar3 != 0) { + FUN_0040d2bc(local_1c,param_2,pfVar2); + iVar3 = (**(code **)((int)pfVar2[6] + 4))(pfVar2,local_1c); + if ((iVar3 != 0) && (FUN_0040de78(param_3,pfVar2,local_1c), *(int *)(param_3 + 0xc) == 0)) { + return; + } + } + puVar1 = (undefined4 *)puVar1[1]; + } while( true ); +} + + + +/* @0040ed60 file=? name=FUN_0040ed60 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float * __cdecl FUN_0040ed60(undefined4 *param_1,float *param_2,float *param_3) + +{ + float fVar1; + undefined4 *puVar2; + float *pfVar3; + float *pfVar4; + float10 fVar5; + + pfVar4 = (float *)0x0; + *param_3 = -1.0; + for (puVar2 = (undefined4 *)*param_1; puVar2 != (undefined4 *)0x0; + puVar2 = (undefined4 *)puVar2[1]) { + pfVar3 = (float *)*puVar2; + fVar5 = FUN_0040dc00(pfVar3,param_2); + fVar1 = (float)fVar5; + if ((fVar1 != _DAT_0040edc8) && ((pfVar4 == (float *)0x0 || (fVar1 < *param_3)))) { + *param_3 = fVar1; + pfVar4 = pfVar3; + } + } + return pfVar4; +} + + + +/* @0040ee00 file=? name=FUN_0040ee00 */ + +undefined4 FUN_0040ee00(void) + +{ + return 1; +} + + + +/* @0040ee38 file=? name=FUN_0040ee38 */ + +undefined4 * __cdecl +FUN_0040ee38(undefined4 *param_1,undefined4 *param_2,undefined4 param_3,undefined4 param_4, + undefined4 param_5,undefined4 param_6) + +{ + FUN_0040ded0(param_1,param_2,param_5); + param_1[6] = &PTR_FUN_004e15b0; + param_1[8] = param_3; + param_1[9] = param_4; + param_1[10] = param_6; + return param_1; +} + + + +/* @0040ee70 file=? name=FUN_0040ee70 */ + +undefined4 * __cdecl +FUN_0040ee70(undefined4 *param_1,undefined4 *param_2,undefined4 param_3,undefined4 param_4, + undefined4 param_5) + +{ + FUN_0040ded0(param_1,param_2,param_4); + param_1[6] = &PTR_FUN_004e15b0; + param_1[8] = 0; + param_1[9] = param_3; + param_1[10] = param_5; + return param_1; +} + + + +/* @0040eea8 file=? name=FUN_0040eea8 */ + +void __cdecl FUN_0040eea8(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + param_1[6] = (int)&PTR_FUN_004e15b0; + FUN_0040def8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0040eed8 file=? name=FUN_0040eed8 */ + +void __cdecl FUN_0040eed8(int param_1,undefined4 param_2,undefined4 param_3) + +{ + undefined4 *puVar1; + + switch(*(undefined4 *)(param_1 + 0x34)) { + case 0: + puVar1 = (undefined4 *)FUN_00402298(0x2c); + if (puVar1 != (undefined4 *)0x0) { + FUN_0040ee70(puVar1,(undefined4 *)(param_1 + 4),*(undefined4 *)(param_1 + 0x38),param_2, + param_3); + } + break; + case 1: + puVar1 = (undefined4 *)FUN_00402298(0x2c); + if (puVar1 != (undefined4 *)0x0) { + FUN_00410500(puVar1,(undefined4 *)(param_1 + 4),*(undefined4 *)(param_1 + 0x38),param_2, + param_3); + } + break; + case 2: + puVar1 = (undefined4 *)FUN_00402298(0x2c); + if (puVar1 != (undefined4 *)0x0) { + FUN_004108b4(puVar1,(undefined4 *)(param_1 + 4),*(undefined4 *)(param_1 + 0x38),param_2, + param_3); + } + break; + case 3: + puVar1 = (undefined4 *)FUN_00402298(0x2c); + if (puVar1 != (undefined4 *)0x0) { + FUN_0040ff5c(puVar1,(undefined4 *)(param_1 + 4),*(undefined4 *)(param_1 + 0x38),param_2, + param_3); + } + break; + case 4: + puVar1 = (undefined4 *)FUN_00402298(0x2c); + if (puVar1 != (undefined4 *)0x0) { + FUN_00411024(puVar1,(undefined4 *)(param_1 + 4),*(undefined4 *)(param_1 + 0x38),param_2, + param_3); + } + break; + case 5: + puVar1 = (undefined4 *)FUN_00402298(0x2c); + if (puVar1 != (undefined4 *)0x0) { + FUN_0041140c(puVar1,(undefined4 *)(param_1 + 4),*(undefined4 *)(param_1 + 0x38),param_2, + param_3); + } + break; + case 6: + puVar1 = (undefined4 *)FUN_00402298(0x2c); + if (puVar1 != (undefined4 *)0x0) { + FUN_00411218(puVar1,(undefined4 *)(param_1 + 4),*(undefined4 *)(param_1 + 0x38),param_2, + param_3); + } + break; + case 7: + puVar1 = (undefined4 *)FUN_00402298(0x2c); + if (puVar1 != (undefined4 *)0x0) { + FUN_00411600(puVar1,(undefined4 *)(param_1 + 4),*(undefined4 *)(param_1 + 0x38),param_2, + param_3); + } + break; + case 8: + puVar1 = (undefined4 *)FUN_00402298(0x2c); + if (puVar1 != (undefined4 *)0x0) { + FUN_004117f0(puVar1,(undefined4 *)(param_1 + 4),*(undefined4 *)(param_1 + 0x38),param_2, + param_3); + } + break; + case 9: + puVar1 = (undefined4 *)FUN_00402298(0x2c); + if (puVar1 != (undefined4 *)0x0) { + FUN_00411bf8(puVar1,(undefined4 *)(param_1 + 4),*(undefined4 *)(param_1 + 0x38),param_2, + param_3); + } + break; + case 10: + puVar1 = (undefined4 *)FUN_00402298(0x2c); + if (puVar1 != (undefined4 *)0x0) { + FUN_004119f4(puVar1,(undefined4 *)(param_1 + 4),*(undefined4 *)(param_1 + 0x38),param_2, + param_3); + } + break; + case 0xb: + puVar1 = (undefined4 *)FUN_00402298(0x2c); + if (puVar1 != (undefined4 *)0x0) { + FUN_00411df4(puVar1,(undefined4 *)(param_1 + 4),*(undefined4 *)(param_1 + 0x38),param_2, + param_3); + } + break; + case 0xc: + puVar1 = (undefined4 *)FUN_00402298(0x2c); + if (puVar1 != (undefined4 *)0x0) { + FUN_00411ff8(puVar1,(undefined4 *)(param_1 + 4),*(undefined4 *)(param_1 + 0x38),param_2, + param_3); + } + break; + case 0xd: + puVar1 = (undefined4 *)FUN_00402298(0x2c); + if (puVar1 != (undefined4 *)0x0) { + FUN_00412614(puVar1,(undefined4 *)(param_1 + 4),*(undefined4 *)(param_1 + 0x38),param_2, + param_3); + } + break; + case 0xe: + puVar1 = (undefined4 *)FUN_00402298(0x2c); + if (puVar1 != (undefined4 *)0x0) { + FUN_00412200(puVar1,(undefined4 *)(param_1 + 4),*(undefined4 *)(param_1 + 0x38),param_2, + param_3); + } + break; + case 0xf: + puVar1 = (undefined4 *)FUN_00402298(0x2c); + if (puVar1 != (undefined4 *)0x0) { + FUN_0041240c(puVar1,(undefined4 *)(param_1 + 4),*(undefined4 *)(param_1 + 0x38),param_2, + param_3); + } + break; + case 0x10: + puVar1 = (undefined4 *)FUN_00402298(0x2c); + if (puVar1 != (undefined4 *)0x0) { + FUN_00412820(puVar1,(undefined4 *)(param_1 + 4),*(undefined4 *)(param_1 + 0x38),param_2, + param_3); + } + break; + case 0x11: + puVar1 = (undefined4 *)FUN_00402298(0x2c); + if (puVar1 != (undefined4 *)0x0) { + FUN_00412c78(puVar1,(undefined4 *)(param_1 + 4),*(undefined4 *)(param_1 + 0x38),param_2, + param_3); + } + break; + case 0x12: + puVar1 = (undefined4 *)FUN_00402298(0x2c); + if (puVar1 != (undefined4 *)0x0) { + FUN_004146dc(puVar1,(undefined4 *)(param_1 + 4),*(undefined4 *)(param_1 + 0x38),param_2, + param_3); + } + } + return; +} + + + +/* @0040f2f8 file=? name=FUN_0040f2f8 */ + +undefined4 FUN_0040f2f8(void) + +{ + return 1; +} + + + +/* @0040f304 file=munga/boxsolid.cpp name=FUN_0040f304 */ + +undefined4 FUN_0040f304(void) + +{ + FUN_0040385c(s_Unsupported_mover_collision_type_004e13c4,s_d__tesla_bt_munga_BOXSOLID_CPP_004e13e7 + ,0x162); + return 0; +} + + + +/* @0040f324 file=? name=FUN_0040f324 */ + +bool __cdecl FUN_0040f324(int param_1) + +{ + return *(int *)(param_1 + 0x20) == 0; +} + + + +/* @0040f33c file=? name=FUN_0040f33c */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_0040f33c(undefined4 *param_1,undefined4 *param_2,float *param_3) + +{ + int iVar1; + undefined4 *puVar2; + undefined4 *puVar3; + float10 fVar4; + float local_68 [2]; + float local_60; + float local_5c [12]; + float local_2c; + undefined4 local_28; + float local_24; + float local_20; + float local_1c; + float local_18; + float local_14; + float local_10; + float local_c; + float local_8; + + param_1[0xe] = param_2[0xe]; + local_8 = param_3[6]; + fVar4 = FUN_004dcd00((double)(local_8 - _DAT_0040f6a8)); + if ((float10)_DAT_0040f6ac < fVar4) { + fVar4 = FUN_004dcd00((double)param_3[4]); + local_c = (float)fVar4; + fVar4 = FUN_004dcd00((double)(local_c - _DAT_0040f6a8)); + if ((float10)_DAT_0040f6ac < fVar4) { + local_10 = param_3[4]; + local_14 = param_3[6]; + fVar4 = FUN_004dcd00((double)(local_14 - local_10)); + if ((float10)_DAT_0040f6ac < fVar4) { + local_18 = -param_3[4]; + local_1c = param_3[6]; + fVar4 = FUN_004dcd00((double)(local_1c - local_18)); + if ((float10)_DAT_0040f6ac < fVar4) { + iVar1 = param_2[0xd]; + if (((iVar1 == 0x11) || (iVar1 == 2)) || (iVar1 == 1)) { + param_1[0xd] = iVar1; + local_2c = ((float)param_2[1] + (float)param_2[2]) * _DAT_0040f6b0; + local_28 = param_2[3]; + local_24 = ((float)param_2[5] + (float)param_2[6]) * _DAT_0040f6b0; + local_20 = local_2c - (float)param_2[1]; + FUN_0040aadc(local_5c); + FUN_0040adec(local_5c,param_3 + 3); + FUN_00408744(local_68,&local_2c,local_5c); + param_1[1] = local_68[0] - local_20; + param_1[2] = local_68[0] + local_20; + param_1[3] = param_2[3]; + param_1[4] = param_2[4]; + param_1[5] = local_60 - local_20; + param_1[6] = local_60 + local_20; + puVar3 = param_1 + 7; + puVar2 = param_1; + for (iVar1 = 6; puVar2 = puVar2 + 1, iVar1 != 0; iVar1 = iVar1 + -1) { + *puVar3 = *puVar2; + puVar3 = puVar3 + 1; + } + } + } + else { + param_1[0xd] = *(undefined4 *)(&DAT_004e131c + param_2[0xd] * 4); + param_1[1] = -(float)param_2[6]; + param_1[2] = -(float)param_2[5]; + param_1[3] = param_2[3]; + param_1[4] = param_2[4]; + param_1[5] = param_2[1]; + param_1[6] = param_2[2]; + param_1[7] = -(float)param_2[0xc]; + param_1[8] = -(float)param_2[0xb]; + param_1[9] = param_2[9]; + param_1[10] = param_2[10]; + param_1[0xb] = param_2[7]; + param_1[0xc] = param_2[8]; + } + } + else { + param_1[0xd] = *(undefined4 *)(&DAT_004e1274 + param_2[0xd] * 4); + param_1[1] = param_2[5]; + param_1[2] = param_2[6]; + param_1[3] = param_2[3]; + param_1[4] = param_2[4]; + param_1[5] = -(float)param_2[2]; + param_1[6] = -(float)param_2[1]; + param_1[7] = param_2[0xb]; + param_1[8] = param_2[0xc]; + param_1[9] = param_2[9]; + param_1[10] = param_2[10]; + param_1[0xb] = -(float)param_2[8]; + param_1[0xc] = -(float)param_2[7]; + } + } + else { + param_1[0xd] = *(undefined4 *)(&DAT_004e12c8 + param_2[0xd] * 4); + param_1[1] = -(float)param_2[2]; + param_1[2] = -(float)param_2[1]; + param_1[3] = param_2[3]; + param_1[4] = param_2[4]; + param_1[5] = -(float)param_2[6]; + param_1[6] = -(float)param_2[5]; + param_1[7] = -(float)param_2[8]; + param_1[8] = -(float)param_2[7]; + param_1[9] = param_2[9]; + param_1[10] = param_2[10]; + param_1[0xb] = -(float)param_2[0xc]; + param_1[0xc] = -(float)param_2[0xb]; + } + } + else { + param_1[0xd] = param_2[0xd]; + iVar1 = 6; + puVar2 = param_2; + puVar3 = param_1; + while( true ) { + puVar3 = puVar3 + 1; + puVar2 = puVar2 + 1; + if (iVar1 == 0) break; + iVar1 = iVar1 + -1; + *puVar3 = *puVar2; + } + puVar2 = param_2 + 7; + puVar3 = param_1 + 7; + for (iVar1 = 6; iVar1 != 0; iVar1 = iVar1 + -1) { + *puVar3 = *puVar2; + puVar2 = puVar2 + 1; + puVar3 = puVar3 + 1; + } + } + param_1[1] = *param_3 + (float)param_1[1]; + param_1[2] = *param_3 + (float)param_1[2]; + param_1[3] = param_3[1] + (float)param_1[3]; + param_1[4] = param_3[1] + (float)param_1[4]; + param_1[5] = param_3[2] + (float)param_1[5]; + param_1[6] = param_3[2] + (float)param_1[6]; + param_1[7] = *param_3 + (float)param_1[7]; + param_1[8] = *param_3 + (float)param_1[8]; + param_1[9] = param_3[1] + (float)param_1[9]; + param_1[10] = param_3[1] + (float)param_1[10]; + param_1[0xb] = param_3[2] + (float)param_1[0xb]; + param_1[0xc] = param_3[2] + (float)param_1[0xc]; + return; +} + + + +/* @0040f7d8 file=? name=FUN_0040f7d8 */ + +undefined4 __cdecl FUN_0040f7d8(char *param_1,int param_2,int param_3,int param_4) + +{ + int *piVar1; + int *piVar2; + int iVar3; + int *extraout_EAX; + int *piVar4; + undefined4 *puVar5; + int iVar6; + int *piVar7; + undefined4 unaff_EDI; + int *piVar8; + + piVar1 = (int *)FUN_004064fc(*(char **)(param_3 + 8),param_1); + piVar2 = (int *)FUN_00402298(0x20); + if (piVar2 == (int *)0x0) { + piVar2 = (int *)0x0; + } + else { + piVar2 = FUN_00403e84(piVar2,(char *)piVar1,1); + } + FUN_004022d0(piVar1); + if ((*(byte *)(piVar2 + 7) & 2) == 0) { + iVar3 = piVar2[3]; + } + else { + iVar3 = piVar2[4]; + } + if (iVar3 == 0) { + FUN_004dbb24(&DAT_00524e20,s____Collision_file___004e1406,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,param_1,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s___empty_or_not_found_____004e141a,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + } + else { + piVar1 = (int *)FUN_00402298(0x14); + if (piVar1 != (int *)0x0) { + FUN_0040eb70(piVar1); + } + iVar3 = FUN_004101a0(piVar1,(int)piVar2); + FUN_004de998((int *)0x0,0x3c,iVar3,1,FUN_004104f7); + piVar4 = extraout_EAX + 0xe; + for (puVar5 = (undefined4 *)*piVar1; puVar5 != (undefined4 *)0x0; + puVar5 = (undefined4 *)puVar5[1]) { + piVar7 = (int *)*puVar5; + *piVar4 = piVar7[9]; + if ((piVar7[8] == 0) && (param_4 != 0)) { + piVar4[-1] = 3; + } + else { + piVar4[-1] = piVar7[8]; + } + piVar8 = piVar4 + -0xd; + for (iVar6 = 6; iVar6 != 0; iVar6 = iVar6 + -1) { + *piVar8 = *piVar7; + piVar7 = piVar7 + 1; + piVar8 = piVar8 + 1; + } + piVar7 = puVar5 + 2; + piVar8 = piVar4 + -7; + for (iVar6 = 6; iVar6 != 0; iVar6 = iVar6 + -1) { + *piVar8 = *piVar7; + piVar7 = piVar7 + 1; + piVar8 = piVar8 + 1; + } + piVar4[-0xe] = 0x3c; + piVar4 = piVar4 + 0xf; + } + for (piVar4 = (int *)*piVar1; piVar4 != (int *)0x0; piVar4 = (int *)piVar4[1]) { + iVar6 = *piVar4; + if (iVar6 != 0) { + (*(code *)**(undefined4 **)(iVar6 + 0x18))(iVar6,3); + } + } + puVar5 = (undefined4 *)FUN_00406ff8(param_2,param_1,9,-1); + if (puVar5 == (undefined4 *)0x0) { + puVar5 = (undefined4 *)FUN_00406db4(param_2,param_1,9,1,0,extraout_EAX,iVar3 * 0x3c,-1); + unaff_EDI = *puVar5; + } + else { + unaff_EDI = *puVar5; + } + FUN_004022d0(extraout_EAX); + if (piVar1 != (int *)0x0) { + FUN_0040eb94(piVar1,0); + FUN_004022d0(piVar1); + } + } + FUN_00403ecc(piVar2,3); + return unaff_EDI; +} + + + +/* @0040f9d8 file=? name=FUN_0040f9d8 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl FUN_0040f9d8(float *param_1,float *param_2,float *param_3) + +{ + float fVar1; + int iVar2; + float *pfVar3; + uint uVar4; + float *pfVar5; + int iVar6; + float10 fVar7; + float *local_10; + + iVar6 = 0; + local_10 = param_3; + do { + fVar7 = FUN_004dcd00((double)*local_10); + if ((float10)_DAT_0040fba8 < fVar7) { + iVar2 = *(int *)((int)*param_1 + 0x20); + if (((1 << ((byte)iVar6 & 0x1f) & *(uint *)(&DAT_004e1370 + iVar2 * 4)) == 0) || + (iVar2 == *(int *)((int)*param_2 + 0x20))) { + uVar4 = (uint)(*local_10 < _DAT_0040fbac) + iVar6 * 2; + if ((uVar4 & 1) == 0) { + if (iVar2 == 0) { + if (param_1[uVar4 + 1] < param_2[uVar4 + 1]) goto LAB_0040fade; + } + else if (param_1[(uVar4 ^ 1) + 1] <= param_2[uVar4 + 1]) goto LAB_0040fade; + } + else if (iVar2 == 0) { + if (param_2[uVar4 + 1] < param_1[uVar4 + 1]) { +LAB_0040fade: + uVar4 = 0; + pfVar3 = param_1; + pfVar5 = param_2; + do { + pfVar5 = pfVar5 + 1; + pfVar3 = pfVar3 + 1; + if (iVar6 != (int)uVar4 >> 1) { + if ((uVar4 & 1) == 0) { + if (*pfVar5 < *pfVar3) break; + } + else if (*pfVar3 < *pfVar5) break; + } + uVar4 = uVar4 + 1; + } while ((int)uVar4 < 6); + if (uVar4 == 6) { + iVar2 = iVar6 * 2; + if (*local_10 <= _DAT_0040fbac) { + if (param_2[iVar6 * 2 + 1] <= param_1[iVar6 * 2 + 1]) { + fVar1 = param_2[iVar6 * 2 + 1]; + } + else { + fVar1 = param_1[iVar6 * 2 + 1]; + } + param_1[iVar6 * 2 + 1] = fVar1; + } + else { + if (param_1[iVar2 + 2] <= param_2[iVar2 + 2]) { + fVar1 = param_2[iVar2 + 2]; + } + else { + fVar1 = param_1[iVar2 + 2]; + } + param_1[iVar2 + 2] = fVar1; + } + return 1; + } + } + } + else if (param_2[uVar4 + 1] <= param_1[(uVar4 ^ 1) + 1]) goto LAB_0040fade; + } + } + iVar6 = iVar6 + 1; + local_10 = local_10 + 1; + if (2 < iVar6) { + return 0; + } + } while( true ); +} + + + +/* @0040fbb0 file=? name=FUN_0040fbb0 */ + +void __cdecl FUN_0040fbb0(int *param_1,float *param_2) + +{ + bool bVar1; + float *pfVar2; + int *piVar3; + int *piVar4; + int *piVar5; + int iVar6; + int *piVar7; + float *pfVar8; + float *pfVar9; + float *pfVar10; + int *piVar11; + int iVar12; + undefined4 *puVar13; + int iVar14; + undefined4 *puVar15; + int local_28; + float local_20; + int local_14; + int local_c; + int local_8; + + bVar1 = true; + local_14 = param_1[2] - param_1[3]; + param_1[4] = 0; + while ((bVar1 && (1 < local_14))) { + bVar1 = false; + local_8 = 0; + if (0 < local_14) { + do { + local_c = local_8 + 1; + if (local_c < local_14) { + do { + pfVar9 = (float *)(*param_1 + local_8 * 0x1c); + pfVar2 = (float *)(*param_1 + local_c * 0x1c); + if (*(int *)((int)*pfVar9 + 0x20) == *(int *)((int)*pfVar2 + 0x20)) { + iVar14 = 0; + iVar6 = -1; + iVar12 = 0; + pfVar10 = pfVar9 + 1; + pfVar8 = pfVar2 + 1; + do { + if ((*pfVar10 == *pfVar8) && (pfVar10[1] == pfVar8[1])) { + iVar14 = iVar14 + 1; + } + else if (iVar6 < 0) { + iVar6 = iVar12; + } + iVar12 = iVar12 + 2; + pfVar8 = pfVar8 + 2; + pfVar10 = pfVar10 + 2; + } while (iVar12 < 6); + if ((iVar14 == 2) && + ((pfVar9[iVar6 + 1] == pfVar2[iVar6 + 2] || + (pfVar9[iVar6 + 2] == pfVar2[iVar6 + 1])))) { + if (pfVar9[iVar6 + 2] == pfVar2[iVar6 + 1]) { + iVar6 = iVar6 + 1; + } + local_20 = 0.0; + if ((*pfVar9 != *pfVar2) && + (iVar12 = FUN_0040f9d8(pfVar2,pfVar9,param_2), iVar12 != 0)) { + local_20 = *pfVar9; + *pfVar9 = *pfVar2; + } + pfVar9[iVar6 + 1] = pfVar2[iVar6 + 1]; + iVar6 = local_c; + while (iVar6 = iVar6 + 1, iVar6 < local_14) { + puVar13 = (undefined4 *)(*param_1 + iVar6 * 0x1c); + puVar15 = (undefined4 *)(*param_1 + -0x1c + iVar6 * 0x1c); + for (iVar12 = 7; iVar12 != 0; iVar12 = iVar12 + -1) { + *puVar15 = *puVar13; + puVar13 = puVar13 + 1; + puVar15 = puVar15 + 1; + } + } + param_1[4] = param_1[4] + 1; + local_14 = local_14 + -1; + *(float *)(*param_1 + local_14 * 0x1c) = local_20; + local_c = local_c + -1; + bVar1 = true; + } + } + local_c = local_c + 1; + } while (local_c < local_14); + } + local_8 = local_8 + 1; + } while (local_8 < local_14); + } + } + if (1 < local_14) { + piVar3 = (int *)FUN_004022b0(local_14 << 2); + piVar4 = (int *)FUN_004022b0(local_14 << 2); + local_8 = 0; + piVar5 = piVar3; + if (0 < local_14) { + do { + *piVar5 = 0; + local_8 = local_8 + 1; + piVar5 = piVar5 + 1; + } while (local_8 < local_14); + } + local_8 = 0; + if (0 < local_14) { + do { + local_c = 0; + piVar5 = piVar3; + if (0 < local_14) { + do { + if (((local_8 != local_c) && (*piVar5 == 0)) && + (iVar6 = FUN_0040f9d8((float *)(*param_1 + local_8 * 0x1c), + (float *)(*param_1 + local_c * 0x1c),param_2), iVar6 != 0)) { + *piVar5 = 1; + } + local_c = local_c + 1; + piVar5 = piVar5 + 1; + } while (local_c < local_14); + } + local_8 = local_8 + 1; + } while (local_8 < local_14); + } + local_c = 0; + local_28 = 0; + local_8 = 0; + piVar7 = piVar3; + piVar11 = piVar4; + piVar5 = piVar4; + if (0 < local_14) { + do { + if (*piVar7 == 0) { + if (local_c < local_8) { + puVar13 = (undefined4 *)(*param_1 + local_8 * 0x1c); + puVar15 = (undefined4 *)(*param_1 + local_c * 0x1c); + for (iVar6 = 7; iVar6 != 0; iVar6 = iVar6 + -1) { + *puVar15 = *puVar13; + puVar13 = puVar13 + 1; + puVar15 = puVar15 + 1; + } + } + local_c = local_c + 1; + } + else { + local_28 = local_28 + 1; + piVar11 = piVar11 + 1; + *piVar11 = *(int *)(*param_1 + local_8 * 0x1c); + } + local_8 = local_8 + 1; + piVar7 = piVar7 + 1; + } while (local_8 < local_14); + } + for (; local_c < local_14; local_c = local_c + 1) { + *(int *)(*param_1 + local_c * 0x1c) = *piVar5; + piVar5 = piVar5 + 1; + } + param_1[4] = param_1[4] + local_28; + FUN_004022e8(piVar4); + FUN_004022e8(piVar3); + } + return; +} + + + +/* @0040ff5c file=? name=FUN_0040ff5c */ + +undefined4 * __cdecl +FUN_0040ff5c(undefined4 *param_1,undefined4 *param_2,undefined4 param_3,undefined4 param_4, + undefined4 param_5) + +{ + FUN_0040ee38(param_1,param_2,3,param_3,param_4,param_5); + param_1[6] = &PTR_FUN_004e1590; + return param_1; +} + + + +/* @0040ff8c file=? name=FUN_0040ff8c */ + +void __cdecl FUN_0040ff8c(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + param_1[6] = (int)&PTR_FUN_004e1590; + FUN_0040eea8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0040ffbc file=? name=FUN_0040ffbc */ + +bool __cdecl FUN_0040ffbc(int param_1) + +{ + return *(int *)(param_1 + 0x20) == 3; +} + + + +/* @0040ffd4 file=? name=FUN_0040ffd4 */ + +void __cdecl FUN_0040ffd4(float *param_1,float *param_2) + +{ + FUN_0040d474(param_1,param_2); + return; +} + + + +/* @0040ffec file=? name=FUN_0040ffec */ + +void __cdecl FUN_0040ffec(float *param_1,float *param_2) + +{ + FUN_0040d3cc(param_1,param_2); + return; +} + + + +/* @00410004 file=? name=FUN_00410004 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 __cdecl FUN_00410004(float *param_1,float *param_2) + +{ + float fVar1; + + fVar1 = _DAT_00410078; + if ((((*param_1 <= *param_2) && (*param_2 <= param_1[1])) && (param_1[2] <= param_2[1])) && + (((param_1[4] <= param_2[2] && (param_2[2] <= param_1[5])) && + (fVar1 = param_2[1] - param_1[3], fVar1 <= _DAT_00410074)))) { + return (float10)_DAT_00410074; + } + return (float10)fVar1; +} + + + +/* @004101a0 file=? name=FUN_004101a0 */ + +int __cdecl FUN_004101a0(undefined4 *param_1,int param_2) + +{ + bool bVar1; + undefined3 extraout_var; + undefined3 extraout_var_00; + int *piVar2; + undefined3 extraout_var_01; + int iVar3; + int iVar4; + int iVar5; + int iVar6; + int iVar7; + int iVar8; + undefined4 uVar9; + uint uVar10; + undefined1 local_7c [4]; + float local_78; + float local_74; + float local_70; + float local_6c; + float local_68; + float local_64; + float local_60; + float local_5c; + float local_58; + float local_54; + float local_50; + float local_4c; + int local_48; + int local_44; + char local_40 [52]; + int local_c; + int local_8; + + local_8 = 0; + bVar1 = FUN_004040d8(param_2,s_COLLISION_004e1433,s_count_004e143d,&local_8); + if (CONCAT31(extraout_var,bVar1) == 0) { + FUN_004dbb24(&DAT_00524e20,s_No__COLLISION__entry______004e1443,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + FUN_004036a0(1); + } + uVar10 = 0; + if (0 < local_8) { + do { + FUN_004d7f10(local_40,s_volume__d_004e145d); + bVar1 = FUN_004040d8(param_2,local_40,s_TypeNumber_004e1467,&local_c); + if (CONCAT31(extraout_var_00,bVar1) == 0) { + FUN_004dbb24(&DAT_00524e20,s_No_solid_at_collision_number___004e1472,(char *)0x0); + piVar2 = FUN_004db78c(&DAT_00524e20,uVar10); + FUN_004d9c38(piVar2); + FUN_004036a0(1); + } + local_48 = local_c; + bVar1 = FUN_004040d8(param_2,local_40,s_MaterialNumber_004e1492,&local_c); + if (CONCAT31(extraout_var_01,bVar1) == 0) { + FUN_004dbb24(&DAT_00524e20,s_No_material_at_collision_number___004e14a1,(char *)0x0); + piVar2 = FUN_004db78c(&DAT_00524e20,uVar10); + FUN_004d9c38(piVar2); + FUN_004036a0(1); + } + local_44 = local_c; + iVar3 = FUN_00404118(param_2,local_40,s_extminX_004e14c4,&local_78); + iVar4 = FUN_00404118(param_2,local_40,s_extmaxX_004e14cc,&local_74); + iVar5 = FUN_00404118(param_2,local_40,s_extminY_004e14d4,&local_70); + iVar6 = FUN_00404118(param_2,local_40,s_extmaxY_004e14dc,&local_6c); + iVar7 = FUN_00404118(param_2,local_40,s_extminZ_004e14e4,&local_68); + iVar8 = FUN_00404118(param_2,local_40,s_extmaxZ_004e14ec,&local_64); + if (((((iVar3 == 0 || iVar4 == 0) || iVar5 == 0) || iVar6 == 0) || iVar7 == 0) || iVar8 == 0) + { + FUN_004dbb24(&DAT_00524e20,s_Collision_number___004e14f4,(char *)0x0); + piVar2 = FUN_004db78c(&DAT_00524e20,uVar10); + FUN_004dbb24(piVar2,s_does_not_have_valid_extents_004e1508,(char *)0x0); + FUN_004036a0(1); + } + iVar3 = FUN_00404118(param_2,local_40,s_slcminX_004e1526,&local_60); + iVar4 = FUN_00404118(param_2,local_40,s_slcmaxX_004e152e,&local_5c); + iVar5 = FUN_00404118(param_2,local_40,s_slcminY_004e1536,&local_58); + iVar6 = FUN_00404118(param_2,local_40,s_slcmaxY_004e153e,&local_54); + iVar7 = FUN_00404118(param_2,local_40,s_slcminZ_004e1546,&local_50); + iVar8 = FUN_00404118(param_2,local_40,s_slcmaxZ_004e154e,&local_4c); + if (((((iVar3 == 0 || iVar4 == 0) || iVar5 == 0) || iVar6 == 0) || iVar7 == 0) || iVar8 == 0) + { + FUN_004dbb24(&DAT_00524e20,s_Collision_number___004e1556,(char *)0x0); + piVar2 = FUN_004db78c(&DAT_00524e20,uVar10); + FUN_004dbb24(piVar2,s_does_not_have_valid_slice_extent_004e156a,(char *)0x0); + FUN_004036a0(1); + } + uVar9 = FUN_0040eed8((int)local_7c,0,0); + FUN_0040ebd4(param_1,uVar9,&local_60); + uVar10 = uVar10 + 1; + } while ((int)uVar10 < local_8); + } + return local_8; +} + + + +/* @004104f7 file=? name=FUN_004104f7 */ + +undefined4 __cdecl FUN_004104f7(undefined4 param_1) + +{ + return param_1; +} + + + +/* @00410500 file=? name=FUN_00410500 */ + +undefined4 * __cdecl +FUN_00410500(undefined4 *param_1,undefined4 *param_2,undefined4 param_3,undefined4 param_4, + undefined4 param_5) + +{ + FUN_0040ee38(param_1,param_2,1,param_3,param_4,param_5); + param_1[6] = &PTR_FUN_004e15d0; + return param_1; +} + + + +/* @00410530 file=? name=FUN_00410530 */ + +void __cdecl FUN_00410530(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + param_1[6] = (int)&PTR_FUN_004e15d0; + FUN_0040eea8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00410560 file=? name=FUN_00410560 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +bool __cdecl FUN_00410560(float *param_1,float *param_2) + +{ + float local_20; + float local_1c; + float local_18; + float local_14; + float local_10; + float local_c; + float local_8; + + local_20 = (*param_1 + param_1[1]) * _DAT_00410600; + local_1c = (param_1[2] + param_1[3]) * _DAT_00410600; + local_18 = (param_1[4] + param_1[5]) * _DAT_00410600; + local_8 = param_1[1] - local_20; + local_14 = local_20; + local_10 = local_1c; + local_c = local_18; + FUN_0040d350(param_2,&local_20); + FUN_00408644(&local_20,&local_20,&local_14); + return local_18 * local_18 + local_1c * local_1c + local_20 * local_20 <= local_8 * local_8; +} + + + +/* @004108b4 file=? name=FUN_004108b4 */ + +undefined4 * __cdecl +FUN_004108b4(undefined4 *param_1,undefined4 *param_2,undefined4 param_3,undefined4 param_4, + undefined4 param_5) + +{ + FUN_0040ee38(param_1,param_2,2,param_3,param_4,param_5); + param_1[6] = &PTR_FUN_004e15f0; + return param_1; +} + + + +/* @004108e4 file=? name=FUN_004108e4 */ + +void __cdecl FUN_004108e4(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + param_1[6] = (int)&PTR_FUN_004e15f0; + FUN_0040eea8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00410914 file=? name=FUN_00410914 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +bool __cdecl FUN_00410914(float *param_1,float *param_2) + +{ + bool bVar1; + float10 fVar2; + float local_28; + float local_24; + float local_20; + float local_1c; + float local_18; + float local_14; + float local_c; + float local_8; + + local_28 = (*param_1 + param_1[1]) * _DAT_004109e4; + local_24 = param_1[2]; + local_20 = (param_1[4] + param_1[5]) * _DAT_004109e4; + local_8 = param_1[1] - local_28; + local_1c = local_28; + local_18 = local_24; + local_14 = local_20; + FUN_0040d350(param_2,&local_28); + local_18 = param_1[3]; + FUN_00408644(&local_28,&local_1c,&local_28); + local_c = local_20 * local_20 + local_28 * local_28; + if (local_c <= local_8 * local_8) { + fVar2 = FUN_004dd138((double)local_c); + bVar1 = (float)fVar2 * (param_1[3] - param_1[2]) <= local_24 * local_8; + } + else { + bVar1 = false; + } + return bVar1; +} + + + +/* @00410b5c file=? name=FUN_00410b5c */ + +float10 __cdecl FUN_00410b5c(float *param_1,float *param_2,float param_3) + +{ + return (float10)param_1[2] * (float10)param_2[2] + + ((float10)*param_1 * (float10)*param_2 - + (float10)param_3 * (float10)param_1[1] * (float10)param_2[1]); +} + + + +/* @00410b80 file=? name=FUN_00410b80 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl FUN_00410b80(float *param_1,float *param_2,float param_3,float param_4) + +{ + float *pfVar1; + float fVar2; + float10 fVar3; + float local_58; + float local_54; + float local_4c; + float local_48; + float local_44; + float local_38; + float local_34; + float local_2c; + float local_28; + float local_24; + float local_20; + float local_1c; + float local_18; + float local_14; + float local_10; + float local_c; + float local_8; + + local_4c = (*param_1 + param_1[1]) * _DAT_00410e9c; + local_48 = param_1[3]; + local_44 = (param_1[4] + param_1[5]) * _DAT_00410e9c; + local_8 = param_1[1] - local_4c; + local_c = param_1[3] - param_1[2]; + local_10 = (local_8 * local_8) / (local_c * local_c); + FUN_00408644(&local_58,param_2,&local_4c); + pfVar1 = param_2 + 3; + fVar3 = FUN_00410b5c(pfVar1,pfVar1,local_10); + local_18 = (float)fVar3; + local_14 = local_18; + fVar3 = FUN_004dcd00((double)local_18); + if ((float10)_DAT_00410ea0 < fVar3) { + fVar3 = FUN_00410b5c(&local_58,pfVar1,local_10); + local_1c = (float)(fVar3 * (float10)_DAT_00410ea4); + fVar3 = FUN_00410b5c(&local_58,&local_58,local_10); + local_20 = (float)fVar3; + local_24 = -local_1c / (_DAT_00410ea4 * local_14); + local_2c = local_1c * local_1c - _DAT_00410ea8 * local_14 * local_20; + if (local_2c < _DAT_00410eac) { + return 0; + } + local_28 = local_2c; + fVar3 = FUN_004dcd00((double)local_2c); + if (fVar3 <= (float10)_DAT_00410ea0) { + if (_DAT_00410eac < param_2[4] * local_24 + local_54) { + return 0; + } + if (param_2[4] <= _DAT_00410eac) { + if (param_3 <= local_24) { + param_3 = local_24; + } + } + else if (local_24 < param_4) { + param_4 = local_24; + } + if (((param_3 <= param_4) && (param_3 <= param_2[6])) && (_DAT_00410eac <= param_4)) { + fVar2 = _DAT_00410eac; + if (_DAT_00410eac < param_3) { + fVar2 = param_3; + } + param_2[6] = fVar2; + return 1; + } + return 0; + } + fVar3 = FUN_004dd138((double)local_28); + local_38 = (float)(fVar3 / ((float10)_DAT_00410ea4 * (float10)local_14)); + if (local_38 <= _DAT_00410eac) { + local_34 = local_24 + local_38; + local_38 = local_24 - local_38; + } + else { + local_34 = local_24 - local_38; + local_38 = local_24 + local_38; + } + fVar2 = param_2[4] * local_38 + local_54; + if (param_2[4] * local_34 + local_54 <= _DAT_00410eac) { + if (fVar2 <= _DAT_00410eac) { + if (param_3 < local_34) { + param_3 = local_34; + } + if (local_38 < param_4) { + param_4 = local_38; + } + } + else if (local_34 < param_4) { + param_4 = local_34; + } + } + else { + if (_DAT_00410eac < fVar2) { + return 0; + } + if (param_3 < local_38) { + param_3 = local_38; + } + } + if (((param_4 < param_3) || (param_2[6] < param_3)) || (param_4 < _DAT_00410eac)) { + return 0; + } + fVar2 = _DAT_00410eac; + if (_DAT_00410eac < param_3) { + fVar2 = param_3; + } + param_2[6] = fVar2; + } + return 1; +} + + + +/* @00410ec8 file=? name=FUN_00410ec8 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl FUN_00410ec8(float *param_1,float *param_2,float param_3,float param_4) + +{ + float fVar1; + float fVar2; + undefined4 uVar3; + + fVar1 = (param_2[2] * param_1[2] + param_2[1] * param_1[1] + *param_2 * *param_1) - param_2[3]; + fVar2 = param_1[5] * param_2[2] + param_1[4] * param_2[1] + param_1[3] * *param_2; + if ((fVar2 <= _DAT_00411020) || (fVar1 <= _DAT_00411020)) { + if (fVar2 == _DAT_00411020) { + if (_DAT_00411020 < fVar1) { + uVar3 = 0; + } + else { + fVar1 = _DAT_00411020; + if (_DAT_00411020 < param_3) { + fVar1 = param_3; + } + param_1[6] = fVar1; + uVar3 = 1; + } + } + else if (_DAT_00411020 <= fVar2) { + if (fVar1 / -fVar2 < param_3) { + uVar3 = 0; + } + else { + fVar1 = _DAT_00411020; + if (_DAT_00411020 < param_3) { + fVar1 = param_3; + } + param_1[6] = fVar1; + uVar3 = 1; + } + } + else { + fVar1 = fVar1 / -fVar2; + if ((fVar1 <= param_3) || ((fVar1 <= param_4 && (param_3 = fVar1, fVar1 <= param_1[6])))) { + fVar1 = _DAT_00411020; + if (_DAT_00411020 < param_3) { + fVar1 = param_3; + } + param_1[6] = fVar1; + uVar3 = 1; + } + else { + uVar3 = 0; + } + } + } + else { + uVar3 = 0; + } + return uVar3; +} + + + +/* @00411024 file=? name=FUN_00411024 */ + +undefined4 * __cdecl +FUN_00411024(undefined4 *param_1,undefined4 *param_2,undefined4 param_3,undefined4 param_4, + undefined4 param_5) + +{ + FUN_0040ee38(param_1,param_2,4,param_3,param_4,param_5); + param_1[6] = &PTR_FUN_004e1670; + return param_1; +} + + + +/* @00411054 file=? name=FUN_00411054 */ + +void __cdecl FUN_00411054(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + param_1[6] = (int)&PTR_FUN_004e1670; + FUN_0040eea8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00411084 file=? name=FUN_00411084 */ + +bool __cdecl FUN_00411084(int param_1,int param_2) + +{ + return (*(float *)(param_2 + 0x10) - *(float *)(param_1 + 0x14)) * + (*(float *)(param_1 + 0xc) - *(float *)(param_1 + 8)) <= + (*(float *)(param_2 + 8) - *(float *)(param_1 + 8)) * + (*(float *)(param_1 + 0x10) - *(float *)(param_1 + 0x14)); +} + + + +/* @004110d0 file=? name=FUN_004110d0 */ + +bool __cdecl FUN_004110d0(int param_1,int param_2) + +{ + return (*(float *)(param_2 + 8) - *(float *)(param_1 + 0x14)) * + (*(float *)(param_1 + 0xc) - *(float *)(param_1 + 8)) <= + (*(float *)(param_2 + 4) - *(float *)(param_1 + 8)) * + (*(float *)(param_1 + 0x10) - *(float *)(param_1 + 0x14)); +} + + + +/* @0041111c file=? name=FUN_0041111c */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 __cdecl FUN_0041111c(int param_1,int param_2) + +{ + float fVar1; + float fVar2; + + fVar1 = (*(float *)(param_2 + 4) - *(float *)(param_1 + 8)) - + ((*(float *)(param_1 + 0xc) - *(float *)(param_1 + 8)) / + (*(float *)(param_1 + 0x10) - *(float *)(param_1 + 0x14))) * + (*(float *)(param_2 + 8) - *(float *)(param_1 + 0x14)); + fVar2 = _DAT_00411178; + if (_DAT_00411178 < fVar1) { + fVar2 = fVar1; + } + return (float10)fVar2; +} + + + +/* @00411200 file=? name=FUN_00411200 */ + +bool __cdecl FUN_00411200(int param_1) + +{ + return *(int *)(param_1 + 0x20) == 4; +} + + + +/* @00411218 file=? name=FUN_00411218 */ + +undefined4 * __cdecl +FUN_00411218(undefined4 *param_1,undefined4 *param_2,undefined4 param_3,undefined4 param_4, + undefined4 param_5) + +{ + FUN_0040ee38(param_1,param_2,6,param_3,param_4,param_5); + param_1[6] = &PTR_FUN_004e1650; + return param_1; +} + + + +/* @00411248 file=? name=FUN_00411248 */ + +void __cdecl FUN_00411248(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + param_1[6] = (int)&PTR_FUN_004e1650; + FUN_0040eea8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00411278 file=? name=FUN_00411278 */ + +bool __cdecl FUN_00411278(int param_1,int param_2) + +{ + return (*(float *)(param_2 + 8) - *(float *)(param_1 + 8)) * + (*(float *)(param_1 + 0x14) - *(float *)(param_1 + 0x10)) <= + (*(float *)(param_2 + 0x14) - *(float *)(param_1 + 0x10)) * + (*(float *)(param_1 + 0xc) - *(float *)(param_1 + 8)); +} + + + +/* @004112c4 file=? name=FUN_004112c4 */ + +bool __cdecl FUN_004112c4(int param_1,int param_2) + +{ + return (*(float *)(param_2 + 4) - *(float *)(param_1 + 8)) * + (*(float *)(param_1 + 0x14) - *(float *)(param_1 + 0x10)) <= + (*(float *)(param_2 + 8) - *(float *)(param_1 + 0x10)) * + (*(float *)(param_1 + 0xc) - *(float *)(param_1 + 8)); +} + + + +/* @00411310 file=? name=FUN_00411310 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 __cdecl FUN_00411310(int param_1,int param_2) + +{ + float fVar1; + float fVar2; + + fVar1 = (*(float *)(param_2 + 4) - *(float *)(param_1 + 8)) - + ((*(float *)(param_1 + 0xc) - *(float *)(param_1 + 8)) / + (*(float *)(param_1 + 0x14) - *(float *)(param_1 + 0x10))) * + (*(float *)(param_2 + 8) - *(float *)(param_1 + 0x10)); + fVar2 = _DAT_0041136c; + if (_DAT_0041136c < fVar1) { + fVar2 = fVar1; + } + return (float10)fVar2; +} + + + +/* @004113f4 file=? name=FUN_004113f4 */ + +bool __cdecl FUN_004113f4(int param_1) + +{ + return *(int *)(param_1 + 0x20) == 6; +} + + + +/* @0041140c file=? name=FUN_0041140c */ + +undefined4 * __cdecl +FUN_0041140c(undefined4 *param_1,undefined4 *param_2,undefined4 param_3,undefined4 param_4, + undefined4 param_5) + +{ + FUN_0040ee38(param_1,param_2,5,param_3,param_4,param_5); + param_1[6] = &PTR_FUN_004e1630; + return param_1; +} + + + +/* @0041143c file=? name=FUN_0041143c */ + +void __cdecl FUN_0041143c(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + param_1[6] = (int)&PTR_FUN_004e1630; + FUN_0040eea8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0041146c file=? name=FUN_0041146c */ + +bool __cdecl FUN_0041146c(float *param_1,float *param_2) + +{ + return (*param_2 - param_1[1]) * (param_1[3] - param_1[2]) <= + (param_2[2] - param_1[2]) * (*param_1 - param_1[1]); +} + + + +/* @004114b8 file=? name=FUN_004114b8 */ + +bool __cdecl FUN_004114b8(float *param_1,float *param_2) + +{ + return (*param_2 - param_1[1]) * (param_1[3] - param_1[2]) <= + (param_2[1] - param_1[2]) * (*param_1 - param_1[1]); +} + + + +/* @00411504 file=? name=FUN_00411504 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 __cdecl FUN_00411504(float *param_1,float *param_2) + +{ + float fVar1; + float fVar2; + + fVar1 = (param_2[1] - param_1[2]) - + ((param_1[3] - param_1[2]) / (*param_1 - param_1[1])) * (*param_2 - param_1[1]); + fVar2 = _DAT_00411560; + if (_DAT_00411560 < fVar1) { + fVar2 = fVar1; + } + return (float10)fVar2; +} + + + +/* @004115e8 file=? name=FUN_004115e8 */ + +bool __cdecl FUN_004115e8(int param_1) + +{ + return *(int *)(param_1 + 0x20) == 5; +} + + + +/* @00411600 file=? name=FUN_00411600 */ + +undefined4 * __cdecl +FUN_00411600(undefined4 *param_1,undefined4 *param_2,undefined4 param_3,undefined4 param_4, + undefined4 param_5) + +{ + FUN_0040ee38(param_1,param_2,7,param_3,param_4,param_5); + param_1[6] = &PTR_FUN_004e1610; + return param_1; +} + + + +/* @00411630 file=? name=FUN_00411630 */ + +void __cdecl FUN_00411630(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + param_1[6] = (int)&PTR_FUN_004e1610; + FUN_0040eea8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00411660 file=? name=FUN_00411660 */ + +bool __cdecl FUN_00411660(float *param_1,int param_2) + +{ + return (*(float *)(param_2 + 8) - param_1[2]) * (param_1[1] - *param_1) <= + (*(float *)(param_2 + 4) - *param_1) * (param_1[3] - param_1[2]); +} + + + +/* @004116ac file=? name=FUN_004116ac */ + +bool __cdecl FUN_004116ac(float *param_1,float *param_2) + +{ + return (param_2[1] - param_1[2]) * (param_1[1] - *param_1) <= + (*param_2 - *param_1) * (param_1[3] - param_1[2]); +} + + + +/* @004116f4 file=? name=FUN_004116f4 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 __cdecl FUN_004116f4(float *param_1,float *param_2) + +{ + float fVar1; + float fVar2; + + fVar1 = (param_2[1] - param_1[2]) - + ((param_1[3] - param_1[2]) / (param_1[1] - *param_1)) * (*param_2 - *param_1); + fVar2 = _DAT_00411750; + if (_DAT_00411750 < fVar1) { + fVar2 = fVar1; + } + return (float10)fVar2; +} + + + +/* @004117d8 file=? name=FUN_004117d8 */ + +bool __cdecl FUN_004117d8(int param_1) + +{ + return *(int *)(param_1 + 0x20) == 7; +} + + + +/* @004117f0 file=? name=FUN_004117f0 */ + +undefined4 * __cdecl +FUN_004117f0(undefined4 *param_1,undefined4 *param_2,undefined4 param_3,undefined4 param_4, + undefined4 param_5) + +{ + FUN_0040ee38(param_1,param_2,8,param_3,param_4,param_5); + param_1[6] = &PTR_FUN_004e16f0; + return param_1; +} + + + +/* @00411820 file=? name=FUN_00411820 */ + +void __cdecl FUN_00411820(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + param_1[6] = (int)&PTR_FUN_004e16f0; + FUN_0040eea8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00411850 file=? name=FUN_00411850 */ + +bool __cdecl FUN_00411850(int param_1,int param_2) + +{ + return (*(float *)(param_2 + 0x10) - *(float *)(param_1 + 0x10)) * + (*(float *)(param_1 + 0xc) - *(float *)(param_1 + 8)) <= + (*(float *)(param_2 + 0xc) - *(float *)(param_1 + 8)) * + (*(float *)(param_1 + 0x14) - *(float *)(param_1 + 0x10)); +} + + + +/* @0041189c file=? name=FUN_0041189c */ + +bool __cdecl FUN_0041189c(int param_1,int param_2) + +{ + return (*(float *)(param_2 + 8) - *(float *)(param_1 + 0x10)) * + (*(float *)(param_1 + 0xc) - *(float *)(param_1 + 8)) <= + (*(float *)(param_2 + 4) - *(float *)(param_1 + 8)) * + (*(float *)(param_1 + 0x14) - *(float *)(param_1 + 0x10)); +} + + + +/* @004118e8 file=? name=FUN_004118e8 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 __cdecl FUN_004118e8(int param_1,int param_2) + +{ + float10 fVar1; + + if (*(float *)(param_2 + 4) <= *(float *)(param_1 + 0xc)) { + if ((*(float *)(param_2 + 4) - *(float *)(param_1 + 8)) * + (*(float *)(param_1 + 0x14) - *(float *)(param_1 + 0x10)) < + (*(float *)(param_2 + 8) - *(float *)(param_1 + 0x10)) * + (*(float *)(param_1 + 0xc) - *(float *)(param_1 + 8))) { + fVar1 = (float10)_DAT_00411954; + } + else { + fVar1 = (float10)_DAT_00411950; + } + } + else { + fVar1 = (float10)*(float *)(param_2 + 4) - (float10)*(float *)(param_1 + 0xc); + } + return fVar1; +} + + + +/* @004119dc file=? name=FUN_004119dc */ + +bool __cdecl FUN_004119dc(int param_1) + +{ + return *(int *)(param_1 + 0x20) == 8; +} + + + +/* @004119f4 file=? name=FUN_004119f4 */ + +undefined4 * __cdecl +FUN_004119f4(undefined4 *param_1,undefined4 *param_2,undefined4 param_3,undefined4 param_4, + undefined4 param_5) + +{ + FUN_0040ee38(param_1,param_2,10,param_3,param_4,param_5); + param_1[6] = &PTR_FUN_004e16d0; + return param_1; +} + + + +/* @00411a24 file=? name=FUN_00411a24 */ + +void __cdecl FUN_00411a24(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + param_1[6] = (int)&PTR_FUN_004e16d0; + FUN_0040eea8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00411a54 file=? name=FUN_00411a54 */ + +bool __cdecl FUN_00411a54(int param_1,int param_2) + +{ + return (*(float *)(param_2 + 0xc) - *(float *)(param_1 + 8)) * + (*(float *)(param_1 + 0x10) - *(float *)(param_1 + 0x14)) <= + (*(float *)(param_2 + 0x14) - *(float *)(param_1 + 0x14)) * + (*(float *)(param_1 + 0xc) - *(float *)(param_1 + 8)); +} + + + +/* @00411aa0 file=? name=FUN_00411aa0 */ + +bool __cdecl FUN_00411aa0(int param_1,int param_2) + +{ + return (*(float *)(param_2 + 4) - *(float *)(param_1 + 8)) * + (*(float *)(param_1 + 0x10) - *(float *)(param_1 + 0x14)) <= + (*(float *)(param_2 + 8) - *(float *)(param_1 + 0x14)) * + (*(float *)(param_1 + 0xc) - *(float *)(param_1 + 8)); +} + + + +/* @00411aec file=? name=FUN_00411aec */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 __cdecl FUN_00411aec(int param_1,int param_2) + +{ + float10 fVar1; + + if (*(float *)(param_2 + 4) <= *(float *)(param_1 + 0xc)) { + if ((*(float *)(param_2 + 8) - *(float *)(param_1 + 0x14)) * + (*(float *)(param_1 + 0xc) - *(float *)(param_1 + 8)) < + (*(float *)(param_2 + 4) - *(float *)(param_1 + 8)) * + (*(float *)(param_1 + 0x10) - *(float *)(param_1 + 0x14))) { + fVar1 = (float10)_DAT_00411b58; + } + else { + fVar1 = (float10)_DAT_00411b54; + } + } + else { + fVar1 = (float10)*(float *)(param_2 + 4) - (float10)*(float *)(param_1 + 0xc); + } + return fVar1; +} + + + +/* @00411be0 file=? name=FUN_00411be0 */ + +bool __cdecl FUN_00411be0(int param_1) + +{ + return *(int *)(param_1 + 0x20) == 10; +} + + + +/* @00411bf8 file=? name=FUN_00411bf8 */ + +undefined4 * __cdecl +FUN_00411bf8(undefined4 *param_1,undefined4 *param_2,undefined4 param_3,undefined4 param_4, + undefined4 param_5) + +{ + FUN_0040ee38(param_1,param_2,9,param_3,param_4,param_5); + param_1[6] = &PTR_FUN_004e16b0; + return param_1; +} + + + +/* @00411c28 file=? name=FUN_00411c28 */ + +void __cdecl FUN_00411c28(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + param_1[6] = (int)&PTR_FUN_004e16b0; + FUN_0040eea8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00411c58 file=? name=FUN_00411c58 */ + +bool __cdecl FUN_00411c58(float *param_1,float *param_2) + +{ + return (*param_2 - *param_1) * (param_1[3] - param_1[2]) <= + (param_2[3] - param_1[2]) * (param_1[1] - *param_1); +} + + + +/* @00411ca0 file=? name=FUN_00411ca0 */ + +bool __cdecl FUN_00411ca0(float *param_1,float *param_2) + +{ + return (*param_2 - *param_1) * (param_1[3] - param_1[2]) <= + (param_2[1] - param_1[2]) * (param_1[1] - *param_1); +} + + + +/* @00411ce8 file=? name=FUN_00411ce8 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 __cdecl FUN_00411ce8(float *param_1,float *param_2) + +{ + float10 fVar1; + + if (param_2[1] <= param_1[3]) { + if ((param_2[1] - param_1[2]) * (param_1[1] - *param_1) < + (*param_2 - *param_1) * (param_1[3] - param_1[2])) { + fVar1 = (float10)_DAT_00411d54; + } + else { + fVar1 = (float10)_DAT_00411d50; + } + } + else { + fVar1 = (float10)param_2[1] - (float10)param_1[3]; + } + return fVar1; +} + + + +/* @00411ddc file=? name=FUN_00411ddc */ + +bool __cdecl FUN_00411ddc(int param_1) + +{ + return *(int *)(param_1 + 0x20) == 9; +} + + + +/* @00411df4 file=? name=FUN_00411df4 */ + +undefined4 * __cdecl +FUN_00411df4(undefined4 *param_1,undefined4 *param_2,undefined4 param_3,undefined4 param_4, + undefined4 param_5) + +{ + FUN_0040ee38(param_1,param_2,0xb,param_3,param_4,param_5); + param_1[6] = &PTR_FUN_004e1690; + return param_1; +} + + + +/* @00411e24 file=? name=FUN_00411e24 */ + +void __cdecl FUN_00411e24(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + param_1[6] = (int)&PTR_FUN_004e1690; + FUN_0040eea8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00411e54 file=? name=FUN_00411e54 */ + +bool __cdecl FUN_00411e54(float *param_1,int param_2) + +{ + return (*(float *)(param_2 + 0xc) - param_1[2]) * (*param_1 - param_1[1]) <= + (*(float *)(param_2 + 4) - param_1[1]) * (param_1[3] - param_1[2]); +} + + + +/* @00411ea0 file=? name=FUN_00411ea0 */ + +bool __cdecl FUN_00411ea0(float *param_1,float *param_2) + +{ + return (param_2[1] - param_1[2]) * (*param_1 - param_1[1]) <= + (*param_2 - param_1[1]) * (param_1[3] - param_1[2]); +} + + + +/* @00411eec file=? name=FUN_00411eec */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 __cdecl FUN_00411eec(float *param_1,float *param_2) + +{ + float10 fVar1; + + if (param_2[1] <= param_1[3]) { + if ((*param_2 - param_1[1]) * (param_1[3] - param_1[2]) < + (param_2[1] - param_1[2]) * (*param_1 - param_1[1])) { + fVar1 = (float10)_DAT_00411f58; + } + else { + fVar1 = (float10)_DAT_00411f54; + } + } + else { + fVar1 = (float10)param_2[1] - (float10)param_1[3]; + } + return fVar1; +} + + + +/* @00411fe0 file=? name=FUN_00411fe0 */ + +bool __cdecl FUN_00411fe0(int param_1) + +{ + return *(int *)(param_1 + 0x20) == 0xb; +} + + + +/* @00411ff8 file=? name=FUN_00411ff8 */ + +undefined4 * __cdecl +FUN_00411ff8(undefined4 *param_1,undefined4 *param_2,undefined4 param_3,undefined4 param_4, + undefined4 param_5) + +{ + FUN_0040ee38(param_1,param_2,0xc,param_3,param_4,param_5); + param_1[6] = &PTR_FUN_004e1770; + return param_1; +} + + + +/* @00412028 file=? name=FUN_00412028 */ + +void __cdecl FUN_00412028(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + param_1[6] = (int)&PTR_FUN_004e1770; + FUN_0040eea8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00412058 file=? name=FUN_00412058 */ + +bool __cdecl FUN_00412058(float *param_1,int param_2) + +{ + return (*(float *)(param_2 + 0x10) - param_1[4]) * (param_1[1] - *param_1) <= + (*(float *)(param_2 + 4) - *param_1) * (param_1[5] - param_1[4]); +} + + + +/* @004120a4 file=? name=FUN_004120a4 */ + +bool __cdecl FUN_004120a4(float *param_1,float *param_2) + +{ + return (param_2[2] - param_1[4]) * (param_1[1] - *param_1) <= + (*param_2 - *param_1) * (param_1[5] - param_1[4]); +} + + + +/* @004120ec file=? name=FUN_004120ec */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 __cdecl FUN_004120ec(float *param_1,float *param_2) + +{ + float10 fVar1; + + if ((*param_2 - *param_1) * (param_1[5] - param_1[4]) < + (param_2[2] - param_1[4]) * (param_1[1] - *param_1)) { + fVar1 = (float10)_DAT_00412160; + } + else if (param_2[1] - param_1[3] <= _DAT_0041215c) { + fVar1 = (float10)_DAT_0041215c; + } + else { + fVar1 = (float10)(param_2[1] - param_1[3]); + } + return fVar1; +} + + + +/* @004121e8 file=? name=FUN_004121e8 */ + +bool __cdecl FUN_004121e8(int param_1) + +{ + return *(int *)(param_1 + 0x20) == 0xc; +} + + + +/* @00412200 file=? name=FUN_00412200 */ + +undefined4 * __cdecl +FUN_00412200(undefined4 *param_1,undefined4 *param_2,undefined4 param_3,undefined4 param_4, + undefined4 param_5) + +{ + FUN_0040ee38(param_1,param_2,0xe,param_3,param_4,param_5); + param_1[6] = &PTR_FUN_004e1750; + return param_1; +} + + + +/* @00412230 file=? name=FUN_00412230 */ + +void __cdecl FUN_00412230(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + param_1[6] = (int)&PTR_FUN_004e1750; + FUN_0040eea8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00412260 file=? name=FUN_00412260 */ + +bool __cdecl FUN_00412260(float *param_1,float *param_2) + +{ + return (param_2[5] - param_1[5]) * (*param_1 - param_1[1]) <= + (*param_2 - param_1[1]) * (param_1[4] - param_1[5]); +} + + + +/* @004122ac file=? name=FUN_004122ac */ + +bool __cdecl FUN_004122ac(float *param_1,float *param_2) + +{ + return (param_2[2] - param_1[5]) * (*param_1 - param_1[1]) <= + (*param_2 - param_1[1]) * (param_1[4] - param_1[5]); +} + + + +/* @004122f8 file=? name=FUN_004122f8 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 __cdecl FUN_004122f8(float *param_1,float *param_2) + +{ + float10 fVar1; + + if ((*param_2 - param_1[1]) * (param_1[4] - param_1[5]) < + (param_2[2] - param_1[5]) * (*param_1 - param_1[1])) { + fVar1 = (float10)_DAT_0041236c; + } + else if (param_2[1] - param_1[3] <= _DAT_00412368) { + fVar1 = (float10)_DAT_00412368; + } + else { + fVar1 = (float10)(param_2[1] - param_1[3]); + } + return fVar1; +} + + + +/* @004123f4 file=? name=FUN_004123f4 */ + +bool __cdecl FUN_004123f4(int param_1) + +{ + return *(int *)(param_1 + 0x20) == 0xe; +} + + + +/* @0041240c file=? name=FUN_0041240c */ + +undefined4 * __cdecl +FUN_0041240c(undefined4 *param_1,undefined4 *param_2,undefined4 param_3,undefined4 param_4, + undefined4 param_5) + +{ + FUN_0040ee38(param_1,param_2,0xf,param_3,param_4,param_5); + param_1[6] = &PTR_FUN_004e1730; + return param_1; +} + + + +/* @0041243c file=? name=FUN_0041243c */ + +void __cdecl FUN_0041243c(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + param_1[6] = (int)&PTR_FUN_004e1730; + FUN_0040eea8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0041246c file=? name=FUN_0041246c */ + +bool __cdecl FUN_0041246c(float *param_1,int param_2) + +{ + return (*(float *)(param_2 + 4) - *param_1) * (param_1[4] - param_1[5]) <= + (*(float *)(param_2 + 0x14) - param_1[5]) * (param_1[1] - *param_1); +} + + + +/* @004124b8 file=? name=FUN_004124b8 */ + +bool __cdecl FUN_004124b8(float *param_1,float *param_2) + +{ + return (*param_2 - *param_1) * (param_1[4] - param_1[5]) <= + (param_2[2] - param_1[5]) * (param_1[1] - *param_1); +} + + + +/* @00412500 file=? name=FUN_00412500 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 __cdecl FUN_00412500(float *param_1,float *param_2) + +{ + float10 fVar1; + + if ((param_2[2] - param_1[5]) * (param_1[1] - *param_1) < + (*param_2 - *param_1) * (param_1[4] - param_1[5])) { + fVar1 = (float10)_DAT_00412574; + } + else if (param_2[1] - param_1[3] <= _DAT_00412570) { + fVar1 = (float10)_DAT_00412570; + } + else { + fVar1 = (float10)(param_2[1] - param_1[3]); + } + return fVar1; +} + + + +/* @004125fc file=? name=FUN_004125fc */ + +bool __cdecl FUN_004125fc(int param_1) + +{ + return *(int *)(param_1 + 0x20) == 0xf; +} + + + +/* @00412614 file=? name=FUN_00412614 */ + +undefined4 * __cdecl +FUN_00412614(undefined4 *param_1,undefined4 *param_2,undefined4 param_3,undefined4 param_4, + undefined4 param_5) + +{ + FUN_0040ee38(param_1,param_2,0xd,param_3,param_4,param_5); + param_1[6] = &PTR_FUN_004e1710; + return param_1; +} + + + +/* @00412644 file=? name=FUN_00412644 */ + +void __cdecl FUN_00412644(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + param_1[6] = (int)&PTR_FUN_004e1710; + FUN_0040eea8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00412674 file=? name=FUN_00412674 */ + +bool __cdecl FUN_00412674(float *param_1,float *param_2) + +{ + return (*param_2 - param_1[1]) * (param_1[5] - param_1[4]) <= + (param_2[4] - param_1[4]) * (*param_1 - param_1[1]); +} + + + +/* @004126c0 file=? name=FUN_004126c0 */ + +bool __cdecl FUN_004126c0(float *param_1,float *param_2) + +{ + return (*param_2 - param_1[1]) * (param_1[5] - param_1[4]) <= + (param_2[2] - param_1[4]) * (*param_1 - param_1[1]); +} + + + +/* @0041270c file=? name=FUN_0041270c */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 __cdecl FUN_0041270c(float *param_1,float *param_2) + +{ + float10 fVar1; + + if ((param_2[2] - param_1[4]) * (*param_1 - param_1[1]) < + (*param_2 - param_1[1]) * (param_1[5] - param_1[4])) { + fVar1 = (float10)_DAT_00412780; + } + else if (param_2[1] - param_1[3] <= _DAT_0041277c) { + fVar1 = (float10)_DAT_0041277c; + } + else { + fVar1 = (float10)(param_2[1] - param_1[3]); + } + return fVar1; +} + + + +/* @00412808 file=? name=FUN_00412808 */ + +bool __cdecl FUN_00412808(int param_1) + +{ + return *(int *)(param_1 + 0x20) == 0xd; +} + + + +/* @00412820 file=? name=FUN_00412820 */ + +undefined4 * __cdecl +FUN_00412820(undefined4 *param_1,undefined4 *param_2,undefined4 param_3,undefined4 param_4, + undefined4 param_5) + +{ + FUN_0040ee38(param_1,param_2,0x10,param_3,param_4,param_5); + param_1[6] = &PTR_FUN_004e17d0; + return param_1; +} + + + +/* @00412850 file=? name=FUN_00412850 */ + +void __cdecl FUN_00412850(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + param_1[6] = (int)&PTR_FUN_004e17d0; + FUN_0040eea8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00412880 file=? name=FUN_00412880 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +bool __cdecl FUN_00412880(int param_1,int param_2) + +{ + float fVar1; + float fVar2; + float fVar3; + float fVar4; + float fVar5; + + fVar4 = (*(float *)(param_1 + 8) + *(float *)(param_1 + 0xc)) * _DAT_00412940; + fVar5 = (*(float *)(param_1 + 0x10) + *(float *)(param_1 + 0x14)) * _DAT_00412940; + fVar1 = *(float *)(param_1 + 0xc) - fVar4; + if (*(float *)(param_2 + 8) <= fVar4) { + fVar2 = fVar4; + if (*(float *)(param_2 + 0xc) < fVar4) { + fVar2 = *(float *)(param_2 + 0xc); + } + } + else { + fVar2 = *(float *)(param_2 + 8); + } + if (*(float *)(param_2 + 0x10) <= fVar5) { + fVar3 = fVar5; + if (*(float *)(param_2 + 0x14) < fVar5) { + fVar3 = *(float *)(param_2 + 0x14); + } + } + else { + fVar3 = *(float *)(param_2 + 0x10); + } + return (fVar3 - fVar5) * (fVar3 - fVar5) + (fVar2 - fVar4) * (fVar2 - fVar4) <= fVar1 * fVar1; +} + + + +/* @00412c78 file=? name=FUN_00412c78 */ + +undefined4 * __cdecl +FUN_00412c78(undefined4 *param_1,undefined4 *param_2,undefined4 param_3,undefined4 param_4, + undefined4 param_5) + +{ + FUN_0040ee38(param_1,param_2,0x11,param_3,param_4,param_5); + param_1[6] = &PTR_FUN_004e17b0; + return param_1; +} + + + +/* @00412ca8 file=? name=FUN_00412ca8 */ + +void __cdecl FUN_00412ca8(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + param_1[6] = (int)&PTR_FUN_004e17b0; + FUN_0040eea8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00412cd8 file=? name=FUN_00412cd8 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +uint __cdecl FUN_00412cd8(float *param_1,undefined4 *param_2) + +{ + float *pfVar1; + float fVar2; + float fVar3; + float fVar4; + uint uVar5; + + pfVar1 = (float *)*param_2; + switch(pfVar1[8]) { + case 0.0: + case 1.4013e-45: + case 4.2039e-45: + case 5.60519e-45: + case 7.00649e-45: + case 8.40779e-45: + case 9.80909e-45: + case 1.12104e-44: + case 1.26117e-44: + case 1.4013e-44: + case 1.54143e-44: + case 1.68156e-44: + case 1.82169e-44: + case 1.96182e-44: + case 2.10195e-44: + case 2.24208e-44: + case 2.52234e-44: + case 2.66247e-44: + case 2.8026e-44: + uVar5 = (**(code **)((int)param_1[6] + 4))(param_1,param_2 + 1); + break; + case 2.8026e-45: + fVar3 = (param_1[1] + *param_1) * _DAT_00412e68; + fVar4 = (pfVar1[1] + *pfVar1) * _DAT_00412e68; + fVar2 = ((pfVar1[3] - param_1[2]) / (pfVar1[3] - pfVar1[2])) * (pfVar1[1] - fVar4) + + (param_1[1] - fVar3); + fVar3 = fVar3 - fVar4; + fVar4 = (param_1[5] + param_1[4]) * _DAT_00412e68 - (pfVar1[5] + pfVar1[4]) * _DAT_00412e68; + uVar5 = (uint)(fVar4 * fVar4 + fVar3 * fVar3 <= fVar2 * fVar2); + break; + case 2.38221e-44: + fVar3 = (param_1[1] + *param_1) * _DAT_00412e68; + fVar4 = (pfVar1[1] + *pfVar1) * _DAT_00412e68; + fVar2 = (pfVar1[1] - fVar4) + (param_1[1] - fVar3); + fVar3 = fVar3 - fVar4; + fVar4 = (param_1[5] + param_1[4]) * _DAT_00412e68 - (pfVar1[5] + pfVar1[4]) * _DAT_00412e68; + uVar5 = (uint)(fVar4 * fVar4 + fVar3 * fVar3 <= fVar2 * fVar2); + break; + default: + uVar5 = 0; + } + return uVar5; +} + + + +/* @004146dc file=? name=FUN_004146dc */ + +undefined4 * __cdecl +FUN_004146dc(undefined4 *param_1,undefined4 *param_2,undefined4 param_3,undefined4 param_4, + undefined4 param_5) + +{ + FUN_0040ee38(param_1,param_2,0x12,param_3,param_4,param_5); + param_1[6] = &PTR_FUN_004e1790; + return param_1; +} + + + +/* @0041470c file=? name=FUN_0041470c */ + +void __cdecl FUN_0041470c(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + param_1[6] = (int)&PTR_FUN_004e1790; + FUN_0040eea8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0041473c file=? name=FUN_0041473c */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +bool __cdecl FUN_0041473c(float *param_1,float *param_2) + +{ + float fVar1; + float fVar2; + float fVar3; + float fVar4; + + fVar3 = (*param_1 + param_1[1]) * _DAT_004147fc; + fVar4 = (param_1[2] + param_1[3]) * _DAT_004147fc; + if (*param_2 <= fVar3) { + fVar1 = fVar3; + if (param_2[1] < fVar3) { + fVar1 = param_2[1]; + } + } + else { + fVar1 = *param_2; + } + if (param_2[2] <= fVar4) { + fVar2 = fVar4; + if (param_2[3] < fVar4) { + fVar2 = param_2[3]; + } + } + else { + fVar2 = param_2[2]; + } + return (fVar2 - fVar4) * (fVar2 - fVar4) + (fVar1 - fVar3) * (fVar1 - fVar3) <= + (param_1[1] - fVar3) * (param_1[1] - fVar3); +} + + + +/* @00414b60 file=? name=FUN_00414b60 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined * FUN_00414b60(void) + +{ + if (DAT_004e17f0 == '\0') { + DAT_004e17f0 = '\x01'; + } + if (DAT_00521404 == 0) { + _DAT_00521f60 = FUN_00401a1c(); + _DAT_00521f60 = _DAT_00521f60 - _DAT_00521408; + } + else { + _DAT_00521f60 = DAT_00521404; + } + return &DAT_00521f60; +} + + + +/* @00414b98 file=? name=FUN_00414b98 */ + +undefined4 FUN_00414b98(void) + +{ + return 1; +} + + + +/* @00414ba4 file=? name=FUN_00414ba4 */ + +void __cdecl FUN_00414ba4(undefined4 param_1,undefined4 *param_2) + +{ + undefined4 uVar1; + + FUN_004dd1cc(param_1); + uVar1 = FUN_004dcd94(); + *param_2 = uVar1; + return; +} + + + +/* @00414be8 file=? name=FUN_00414be8 */ + +void __cdecl FUN_00414be8(undefined4 *param_1,undefined4 param_2) + +{ + *param_1 = &PTR_FUN_004e1bdc; + param_1[1] = param_2; + return; +} + + + +/* @00414bfc file=? name=FUN_00414bfc */ + +void __cdecl FUN_00414bfc(int *param_1,byte param_2) + +{ + if ((param_1 != (int *)0x0) && (*param_1 = (int)&PTR_FUN_004e1bdc, (param_2 & 1) != 0)) { + FUN_004022d0(param_1); + } + return; +} + + + +/* @00414c1c file=? name=FUN_00414c1c */ + +undefined4 * __cdecl FUN_00414c1c(undefined4 *param_1,int *param_2) + +{ + undefined1 local_8 [4]; + + *param_1 = &PTR_FUN_004e1bdc; + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 1,4); + (**(code **)(*param_2 + 0x1c))(param_2,local_8,4); + return param_1; +} + + + +/* @00414c58 file=? name=FUN_00414c58 */ + +void __cdecl FUN_00414c58(int *param_1) + +{ + int *piVar1; + + piVar1 = (int *)(**(code **)(*param_1 + 0x20))(param_1,&stack0x0000000c,4); + (**(code **)(*piVar1 + 0x20))(piVar1,&stack0x00000010,4); + return; +} + + + +/* @00414c80 file=? name=FUN_00414c80 */ + +undefined4 FUN_00414c80(void) + +{ + return 1; +} + + + +/* @00414c8c file=? name=FUN_00414c8c */ + +undefined4 __cdecl FUN_00414c8c(int *param_1) + +{ + char *pcVar1; + char *pcVar2; + char *pcVar3; + bool bVar4; + + pcVar3 = s_AudioStateTrigger_004e17f8; + pcVar2 = *(char **)(*param_1 + 8); + do { + if (*pcVar2 != *pcVar3) goto LAB_00414cc3; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_00414cc3; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return 0x1c; + } +LAB_00414cc3: + pcVar2 = *(char **)(*param_1 + 8); + pcVar3 = s_AudioMotionScale_004e180a; + do { + if (*pcVar2 != *pcVar3) goto LAB_00414cf3; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_00414cf3; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return 0x1d; + } +LAB_00414cf3: + pcVar2 = *(char **)(*param_1 + 8); + pcVar3 = s_AudioRenderer_004e181b; + do { + if (*pcVar2 != *pcVar3) goto LAB_00414d23; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_00414d23; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return 0x1e; + } +LAB_00414d23: + pcVar2 = *(char **)(*param_1 + 8); + pcVar3 = s_AudioLocation_004e1829; + do { + if (*pcVar2 != *pcVar3) goto LAB_00414d53; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_00414d53; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return 0x1f; + } +LAB_00414d53: + pcVar2 = *(char **)(*param_1 + 8); + pcVar3 = s_AudioMotionTrigger_004e1837; + do { + if (*pcVar2 != *pcVar3) goto LAB_00414d83; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_00414d83; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return 0x27; + } +LAB_00414d83: + pcVar2 = *(char **)(*param_1 + 8); + pcVar3 = s_AudioControlMixer_004e184a; + do { + if (*pcVar2 != *pcVar3) goto LAB_00414db3; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_00414db3; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return 0x2b; + } +LAB_00414db3: + pcVar2 = *(char **)(*param_1 + 8); + pcVar3 = s_AudioHingeScale_004e185c; + do { + if (*pcVar2 != *pcVar3) goto LAB_00414de3; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_00414de3; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return 0x2c; + } +LAB_00414de3: + pcVar2 = *(char **)(*param_1 + 8); + pcVar3 = s_AudioControlSmoother_004e186c; + do { + if (*pcVar2 != *pcVar3) goto LAB_00414e13; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_00414e13; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return 0x2d; + } +LAB_00414e13: + pcVar2 = *(char **)(*param_1 + 8); + pcVar3 = s_AudioResourceSelector_004e1881; + do { + if (*pcVar2 != *pcVar3) goto LAB_00414e43; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_00414e43; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return 0x2f; + } +LAB_00414e43: + pcVar2 = *(char **)(*param_1 + 8); + pcVar3 = s_L4AudioCollisionTrigger_004e1897; + do { + if (*pcVar2 != *pcVar3) goto LAB_00414e73; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_00414e73; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return 0x3ee; + } +LAB_00414e73: + pcVar2 = *(char **)(*param_1 + 8); + pcVar3 = s_AudioResourceIndex_004e18af; + do { + if (*pcVar2 != *pcVar3) goto LAB_00414ea3; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_00414ea3; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return 0x34; + } +LAB_00414ea3: + pcVar2 = *(char **)(*param_1 + 8); + pcVar3 = s_AudioScalarScale_004e18c2; + do { + if (*pcVar2 != *pcVar3) goto LAB_00414ed3; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_00414ed3; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return 0x35; + } +LAB_00414ed3: + pcVar2 = *(char **)(*param_1 + 8); + pcVar3 = s_AudioControlSend_004e18d3; + do { + if (*pcVar2 != *pcVar3) goto LAB_00414f03; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_00414f03; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return 0x36; + } +LAB_00414f03: + pcVar2 = *(char **)(*param_1 + 8); + pcVar3 = s_L4AudioLocation_004e18e4; + do { + if (*pcVar2 != *pcVar3) goto LAB_00414f33; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_00414f33; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return 1000; + } +LAB_00414f33: + pcVar2 = *(char **)(*param_1 + 8); + pcVar3 = s_DirectPatchSource_004e18f4; + do { + if (*pcVar2 != *pcVar3) goto LAB_00414f63; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_00414f63; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return 0x3e9; + } +LAB_00414f63: + pcVar2 = *(char **)(*param_1 + 8); + pcVar3 = s_Dynamic3DPatchSource_004e1906; + do { + if (*pcVar2 != *pcVar3) goto LAB_00414f93; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_00414f93; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return 0x3ea; + } +LAB_00414f93: + pcVar2 = *(char **)(*param_1 + 8); + pcVar3 = s_PatchResource_004e191b; + do { + if (*pcVar2 != *pcVar3) goto LAB_00414fc3; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_00414fc3; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return 0x3ec; + } +LAB_00414fc3: + pcVar2 = *(char **)(*param_1 + 8); + pcVar3 = s_Static3DPatchSource_004e1929; + do { + if (*pcVar2 != *pcVar3) goto LAB_00414ff3; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_00414ff3; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return 0x3ed; + } +LAB_00414ff3: + pcVar2 = *(char **)(*param_1 + 8); + pcVar3 = s_AudioControlMultiplier_004e193d; + do { + if (*pcVar2 != *pcVar3) goto LAB_00415023; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_00415023; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return 0x2e; + } +LAB_00415023: + pcVar2 = *(char **)(*param_1 + 8); + pcVar3 = s_AudioSampleAndHold_004e1954; + do { + if (*pcVar2 != *pcVar3) goto LAB_00415053; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_00415053; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return 0x3a; + } +LAB_00415053: + pcVar2 = *(char **)(*param_1 + 8); + pcVar3 = s_AudioScalarTrigger_004e1967; + do { + if (*pcVar2 != *pcVar3) goto LAB_00415083; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_00415083; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return 0x3b; + } +LAB_00415083: + pcVar2 = *(char **)(*param_1 + 8); + pcVar3 = s_AudioEnumerationTrigger_004e197a; + do { + if (*pcVar2 != *pcVar3) goto LAB_004150b3; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_004150b3; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return 0x3c; + } +LAB_004150b3: + pcVar2 = *(char **)(*param_1 + 8); + pcVar3 = s_AudioIntegerTrigger_004e1992; + do { + if (*pcVar2 != *pcVar3) goto LAB_004150e3; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_004150e3; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return 0x3d; + } +LAB_004150e3: + pcVar2 = *(char **)(*param_1 + 8); + pcVar3 = s_AudioLogicalTrigger_004e19a6; + do { + if (*pcVar2 != *pcVar3) goto LAB_00415113; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_00415113; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return 0x3e; + } +LAB_00415113: + pcVar2 = *(char **)(*param_1 + 8); + pcVar3 = s_AudioControlsButtonTrigger_004e19ba; + do { + if (*pcVar2 != *pcVar3) goto LAB_00415143; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_00415143; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return 0x42; + } +LAB_00415143: + pcVar2 = *(char **)(*param_1 + 8); + pcVar3 = s_ExplosionResourceTable_004e19d5; + do { + if (*pcVar2 != *pcVar3) goto LAB_00415173; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_00415173; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return 0x47; + } +LAB_00415173: + pcVar2 = *(char **)(*param_1 + 8); + pcVar3 = s_AudioIdleWatcher_004e19ec; + do { + if (*pcVar2 != *pcVar3) goto LAB_004151a3; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_004151a3; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return 0x49; + } +LAB_004151a3: + pcVar2 = *(char **)(*param_1 + 8); + pcVar3 = s_AudioControlEvent_004e19fd; + do { + if (*pcVar2 != *pcVar3) goto LAB_004151d3; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_004151d3; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return 0x4a; + } +LAB_004151d3: + pcVar2 = *(char **)(*param_1 + 8); + pcVar3 = s_AudioControlSequence_004e1a0f; + do { + if (*pcVar2 != *pcVar3) goto LAB_00415203; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_00415203; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return 0x4b; + } +LAB_00415203: + pcVar2 = *(char **)(*param_1 + 8); + pcVar3 = s_AudioControlSplitter_004e1a24; + do { + if (*pcVar2 != *pcVar3) goto LAB_00415233; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_00415233; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return 0x4c; + } +LAB_00415233: + pcVar2 = *(char **)(*param_1 + 8); + pcVar3 = s_AudioLFO_004e1a39; + do { + if (*pcVar2 != *pcVar3) goto LAB_00415263; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_00415263; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return 0x4f; + } +LAB_00415263: + pcVar2 = *(char **)(*param_1 + 8); + pcVar3 = s_AudioEnumerationDeltaTrigger_004e1a42; + do { + if (*pcVar2 != *pcVar3) goto LAB_00415293; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_00415293; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return 0x50; + } +LAB_00415293: + pcVar2 = *(char **)(*param_1 + 8); + pcVar3 = s_AudioScalarDeltaTrigger_004e1a5f; + do { + if (*pcVar2 != *pcVar3) goto LAB_004152c3; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_004152c3; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return 0x51; + } +LAB_004152c3: + pcVar2 = *(char **)(*param_1 + 8); + pcVar3 = s_AudioLevelOfDetail_004e1a77; + do { + if (*pcVar2 != *pcVar3) goto LAB_004152f3; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_004152f3; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return 0x55; + } +LAB_004152f3: + pcVar2 = *(char **)(*param_1 + 8); + pcVar3 = s_PatchLevelOfDetail_004e1a8a; + do { + if (*pcVar2 != *pcVar3) goto LAB_00415323; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_00415323; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return 0x3f3; + } +LAB_00415323: + pcVar2 = *(char **)(*param_1 + 8); + pcVar3 = s_AudioMessageWatcher_004e1a9d; + do { + if (*pcVar2 != *pcVar3) goto LAB_00415353; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_00415353; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return 0x59; + } +LAB_00415353: + pcVar2 = *(char **)(*param_1 + 8); + pcVar3 = s_AudioControlsButtonMessageWatche_004e1ab1; + do { + if (*pcVar2 != *pcVar3) { + return 0xffffffff; + } + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) { + return 0xffffffff; + } + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (!bVar4) { + return 0xffffffff; + } + return 0x5a; +} + + + +/* @00415389 file=? name=FUN_00415389 */ + +undefined4 * __cdecl +FUN_00415389(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 *param_4) + +{ + FUN_004185bc(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004e1b14; + param_1[7] = *param_4; + return param_1; +} + + + +/* @004153b4 file=? name=FUN_004153b4 */ + +void __cdecl FUN_004153b4(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e1b14; + FUN_004185ec(param_1,0); + if ((param_2 & 1) != 0) { + FUN_00415430(param_1); + } + } + return; +} + + + +/* @004153e0 file=? name=FUN_004153e0 */ + +void FUN_004153e0(void) + +{ + int iVar1; + undefined4 *puVar2; + + iVar1 = DAT_004e1b10; + DAT_004e1b10 = DAT_004e1b10 + 1; + puVar2 = DAT_004e1b0c; + if ((iVar1 == 0) && (puVar2 = (undefined4 *)FUN_00402298(0x28), puVar2 != (undefined4 *)0x0)) { + FUN_00402b98(puVar2,0x20,100,100,s_VChainLinkOf_004e1af0); + } + DAT_004e1b0c = puVar2; + FUN_00402f74((int)DAT_004e1b0c); + return; +} + + + +/* @00415430 file=? name=FUN_00415430 */ + +void __cdecl FUN_00415430(undefined4 *param_1) + +{ + FUN_00402f98((int)DAT_004e1b0c,param_1); + DAT_004e1b10 = DAT_004e1b10 + -1; + if (DAT_004e1b10 == 0) { + if (DAT_004e1b0c != (int *)0x0) { + FUN_00402c28(DAT_004e1b0c,0); + FUN_004022d0(DAT_004e1b0c); + } + DAT_004e1b0c = (int *)0x0; + } + return; +} + + + +/* @0041547b file=? name=FUN_0041547b */ + +undefined4 * __cdecl FUN_0041547b(undefined4 *param_1,int *param_2) + +{ + int *piVar1; + undefined4 *puVar2; + int iVar3; + int *local_8; + + FUN_00415e90(param_1,1); + *param_1 = &PTR_FUN_004e1bd8; + puVar2 = (undefined4 *)FUN_00402298(0x10); + if (puVar2 == (undefined4 *)0x0) { + iVar3 = 0; + } + else { + iVar3 = FUN_004023f4(puVar2); + } + param_1[3] = iVar3; + piVar1 = (int *)(param_1[3] + 0xc); + *piVar1 = *piVar1 + 1; + FUN_00402a4c((int *)&local_8,param_1 + 3,param_2); + piVar1 = local_8 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_8,3); + } + return param_1; +} + + + +/* @004154e8 file=? name=FUN_004154e8 */ + +void __cdecl FUN_004154e8(int *param_1,byte param_2) + +{ + int *piVar1; + int *piVar2; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e1bd8; + piVar2 = (int *)param_1[3]; + piVar1 = piVar2 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(piVar2,3); + } + FUN_00415ed8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00415529 file=? name=FUN_00415529 */ + +undefined4 * __cdecl FUN_00415529(undefined4 *param_1,undefined4 param_2,undefined4 param_3) + +{ + FUN_00418bb8(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004e1bbc; + return param_1; +} + + + +/* @0041554c file=? name=FUN_0041554c */ + +void __cdecl FUN_0041554c(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e1bbc; + FUN_00418be0(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00415578 file=? name=FUN_00415578 */ + +undefined4 __cdecl FUN_00415578(undefined4 param_1,int param_2,int param_3) + +{ + int iVar1; + undefined4 uVar2; + + iVar1 = FUN_004027d8(*(int *)(param_2 + 0x20),*(int *)(param_3 + 0x20)); + if (iVar1 == 0) { + uVar2 = 0; + } + else { + iVar1 = FUN_004027d8(*(int *)(param_2 + 0x20),*(int *)(param_3 + 0x20)); + if (iVar1 < 1) { + uVar2 = 0xffffffff; + } + else { + uVar2 = 1; + } + } + return uVar2; +} + + + +/* @004155c5 file=? name=FUN_004155c5 */ + +undefined4 __cdecl FUN_004155c5(undefined4 param_1,int *param_2,int param_3) + +{ + int iVar1; + undefined4 uVar2; + + iVar1 = FUN_004027d8(*param_2,*(int *)(param_3 + 0x20)); + if (iVar1 == 0) { + uVar2 = 0; + } + else { + iVar1 = FUN_004027d8(*param_2,*(int *)(param_3 + 0x20)); + if (iVar1 < 1) { + uVar2 = 0xffffffff; + } + else { + uVar2 = 1; + } + } + return uVar2; +} + + + +/* @0041560f file=? name=FUN_0041560f */ + +int * __cdecl FUN_0041560f(int *param_1,int param_2) + +{ + FUN_00418f34(param_1,param_2); + *param_1 = (int)&PTR_FUN_004e1b60; + return param_1; +} + + + +/* @0041562e file=? name=FUN_0041562e */ + +int * __cdecl FUN_0041562e(int *param_1,int param_2) + +{ + FUN_00418f34(param_1,param_2); + *param_1 = (int)&PTR_FUN_004e1b60; + return param_1; +} + + + +/* @0041564d file=? name=FUN_0041564d */ + +void __cdecl FUN_0041564d(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e1b60; + FUN_00418f5c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00415679 file=? name=FUN_00415679 */ + +undefined4 * __cdecl FUN_00415679(undefined4 *param_1,undefined4 param_2,undefined4 param_3) + +{ + FUN_004186ac(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004e1b44; + return param_1; +} + + + +/* @0041569c file=? name=FUN_0041569c */ + +void __cdecl FUN_0041569c(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e1b44; + FUN_004186dc(param_1,0); + if ((param_2 & 1) != 0) { + FUN_00415773(param_1); + } + } + return; +} + + + +/* @004156c8 file=? name=FUN_004156c8 */ + +undefined4 __cdecl FUN_004156c8(undefined4 param_1,int param_2,int param_3) + +{ + undefined4 uVar1; + + if (*(uint *)(param_3 + 0x1c) == *(uint *)(param_2 + 0x1c)) { + uVar1 = 0; + } + else { + uVar1 = 1; + if (*(uint *)(param_2 + 0x1c) <= *(uint *)(param_3 + 0x1c)) { + uVar1 = 0xffffffff; + } + } + return uVar1; +} + + + +/* @004156f7 file=? name=FUN_004156f7 */ + +undefined4 __cdecl FUN_004156f7(undefined4 param_1,uint *param_2,int param_3) + +{ + undefined4 uVar1; + + if (*(uint *)(param_3 + 0x1c) == *param_2) { + uVar1 = 0; + } + else { + uVar1 = 1; + if (*param_2 <= *(uint *)(param_3 + 0x1c)) { + uVar1 = 0xffffffff; + } + } + return uVar1; +} + + + +/* @00415723 file=? name=FUN_00415723 */ + +void FUN_00415723(void) + +{ + int iVar1; + undefined4 *puVar2; + + iVar1 = DAT_004e1b1c; + DAT_004e1b1c = DAT_004e1b1c + 1; + puVar2 = DAT_004e1b18; + if ((iVar1 == 0) && (puVar2 = (undefined4 *)FUN_00402298(0x28), puVar2 != (undefined4 *)0x0)) { + FUN_00402b98(puVar2,0x18,100,100,s_VChainOf_004e1ad3); + } + DAT_004e1b18 = puVar2; + FUN_00402f74((int)DAT_004e1b18); + return; +} + + + +/* @00415773 file=? name=FUN_00415773 */ + +void __cdecl FUN_00415773(undefined4 *param_1) + +{ + FUN_00402f98((int)DAT_004e1b18,param_1); + DAT_004e1b1c = DAT_004e1b1c + -1; + if (DAT_004e1b1c == 0) { + if (DAT_004e1b18 != (int *)0x0) { + FUN_00402c28(DAT_004e1b18,0); + FUN_004022d0(DAT_004e1b18); + } + DAT_004e1b18 = (int *)0x0; + } + return; +} + + + +/* @004157be file=? name=FUN_004157be */ + +undefined4 * __cdecl FUN_004157be(undefined4 *param_1,undefined4 param_2,undefined4 param_3) + +{ + FUN_004186ac(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004e1b28; + return param_1; +} + + + +/* @004157e1 file=? name=FUN_004157e1 */ + +void __cdecl FUN_004157e1(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e1b28; + FUN_004186dc(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004158f4(param_1); + } + } + return; +} + + + +/* @0041580d file=? name=FUN_0041580d */ + +undefined4 __cdecl FUN_0041580d(undefined4 param_1,int param_2,int param_3) + +{ + int iVar1; + undefined4 uVar2; + + iVar1 = FUN_004027d8(*(int *)(param_2 + 0x1c),*(int *)(param_3 + 0x1c)); + if (iVar1 == 0) { + uVar2 = 0; + } + else { + iVar1 = FUN_004027d8(*(int *)(param_2 + 0x1c),*(int *)(param_3 + 0x1c)); + if (iVar1 < 1) { + uVar2 = 0xffffffff; + } + else { + uVar2 = 1; + } + } + return uVar2; +} + + + +/* @0041585a file=? name=FUN_0041585a */ + +undefined4 __cdecl FUN_0041585a(undefined4 param_1,int *param_2,int param_3) + +{ + int iVar1; + undefined4 uVar2; + + iVar1 = FUN_004027d8(*param_2,*(int *)(param_3 + 0x1c)); + if (iVar1 == 0) { + uVar2 = 0; + } + else { + iVar1 = FUN_004027d8(*param_2,*(int *)(param_3 + 0x1c)); + if (iVar1 < 1) { + uVar2 = 0xffffffff; + } + else { + uVar2 = 1; + } + } + return uVar2; +} + + + +/* @004158a4 file=? name=FUN_004158a4 */ + +void FUN_004158a4(void) + +{ + int iVar1; + undefined4 *puVar2; + + iVar1 = DAT_004e1b24; + DAT_004e1b24 = DAT_004e1b24 + 1; + puVar2 = DAT_004e1b20; + if ((iVar1 == 0) && (puVar2 = (undefined4 *)FUN_00402298(0x28), puVar2 != (undefined4 *)0x0)) { + FUN_00402b98(puVar2,0x18,100,100,s_VChainOf_004e1adc); + } + DAT_004e1b20 = puVar2; + FUN_00402f74((int)DAT_004e1b20); + return; +} + + + +/* @004158f4 file=? name=FUN_004158f4 */ + +void __cdecl FUN_004158f4(undefined4 *param_1) + +{ + FUN_00402f98((int)DAT_004e1b20,param_1); + DAT_004e1b24 = DAT_004e1b24 + -1; + if (DAT_004e1b24 == 0) { + if (DAT_004e1b20 != (int *)0x0) { + FUN_00402c28(DAT_004e1b20,0); + FUN_004022d0(DAT_004e1b20); + } + DAT_004e1b20 = (int *)0x0; + } + return; +} + + + +/* @0041593f file=? name=FUN_0041593f */ + +undefined4 * __cdecl FUN_0041593f(undefined4 param_1,int param_2,int *param_3) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00415bd2(); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_00415b1e(puVar1,param_1,param_2,param_3); + } + return puVar1; +} + + + +/* @0041596f file=? name=FUN_0041596f */ + +undefined4 * __cdecl FUN_0041596f(undefined4 param_1,int param_2,undefined4 *param_3) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_004153e0(); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_00415389(puVar1,param_1,param_2,param_3); + } + return puVar1; +} + + + +/* @0041599f file=? name=FUN_0041599f */ + +undefined4 * __cdecl FUN_0041599f(undefined4 param_1,int param_2,int *param_3) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00415a83(); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_004159cf(puVar1,param_1,param_2,param_3); + } + return puVar1; +} + + + +/* @004159cf file=? name=FUN_004159cf */ + +undefined4 * __cdecl FUN_004159cf(undefined4 *param_1,undefined4 param_2,int param_3,int *param_4) + +{ + int *piVar1; + undefined4 *puVar2; + int iVar3; + int *local_8; + + FUN_00418ae0(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004e1bf4; + puVar2 = (undefined4 *)FUN_00402298(0x10); + if (puVar2 == (undefined4 *)0x0) { + iVar3 = 0; + } + else { + iVar3 = FUN_004023f4(puVar2); + } + param_1[8] = iVar3; + piVar1 = (int *)(param_1[8] + 0xc); + *piVar1 = *piVar1 + 1; + FUN_00402a4c((int *)&local_8,param_1 + 8,param_4); + piVar1 = local_8 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_8,3); + } + return param_1; +} + + + +/* @00415a42 file=? name=FUN_00415a42 */ + +void __cdecl FUN_00415a42(int *param_1,byte param_2) + +{ + int *piVar1; + int *piVar2; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e1bf4; + piVar2 = (int *)param_1[8]; + piVar1 = piVar2 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(piVar2,3); + } + FUN_00418b14(param_1,0); + if ((param_2 & 1) != 0) { + FUN_00415ad3(param_1); + } + } + return; +} + + + +/* @00415a83 file=? name=FUN_00415a83 */ + +void FUN_00415a83(void) + +{ + int iVar1; + undefined4 *puVar2; + + iVar1 = DAT_004e1be4; + DAT_004e1be4 = DAT_004e1be4 + 1; + puVar2 = DAT_004e1be0; + if ((iVar1 == 0) && (puVar2 = (undefined4 *)FUN_00402298(0x28), puVar2 != (undefined4 *)0x0)) { + FUN_00402b98(puVar2,0x24,100,100,s_TreeNodeOf_004e1ae5); + } + DAT_004e1be0 = puVar2; + FUN_00402f74((int)DAT_004e1be0); + return; +} + + + +/* @00415ad3 file=? name=FUN_00415ad3 */ + +void __cdecl FUN_00415ad3(undefined4 *param_1) + +{ + FUN_00402f98((int)DAT_004e1be0,param_1); + DAT_004e1be4 = DAT_004e1be4 + -1; + if (DAT_004e1be4 == 0) { + if (DAT_004e1be0 != (int *)0x0) { + FUN_00402c28(DAT_004e1be0,0); + FUN_004022d0(DAT_004e1be0); + } + DAT_004e1be0 = (int *)0x0; + } + return; +} + + + +/* @00415b1e file=? name=FUN_00415b1e */ + +undefined4 * __cdecl FUN_00415b1e(undefined4 *param_1,undefined4 param_2,int param_3,int *param_4) + +{ + int *piVar1; + undefined4 *puVar2; + int iVar3; + int *local_8; + + FUN_004185bc(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004e1bf0; + puVar2 = (undefined4 *)FUN_00402298(0x10); + if (puVar2 == (undefined4 *)0x0) { + iVar3 = 0; + } + else { + iVar3 = FUN_004023f4(puVar2); + } + param_1[7] = iVar3; + piVar1 = (int *)(param_1[7] + 0xc); + *piVar1 = *piVar1 + 1; + FUN_00402a4c((int *)&local_8,param_1 + 7,param_4); + piVar1 = local_8 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_8,3); + } + return param_1; +} + + + +/* @00415b91 file=? name=FUN_00415b91 */ + +void __cdecl FUN_00415b91(int *param_1,byte param_2) + +{ + int *piVar1; + int *piVar2; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e1bf0; + piVar2 = (int *)param_1[7]; + piVar1 = piVar2 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(piVar2,3); + } + FUN_004185ec(param_1,0); + if ((param_2 & 1) != 0) { + FUN_00415c22(param_1); + } + } + return; +} + + + +/* @00415bd2 file=? name=FUN_00415bd2 */ + +void FUN_00415bd2(void) + +{ + int iVar1; + undefined4 *puVar2; + + iVar1 = DAT_004e1bec; + DAT_004e1bec = DAT_004e1bec + 1; + puVar2 = DAT_004e1be8; + if ((iVar1 == 0) && (puVar2 = (undefined4 *)FUN_00402298(0x28), puVar2 != (undefined4 *)0x0)) { + FUN_00402b98(puVar2,0x20,100,100,s_VChainLinkOf_004e1afd); + } + DAT_004e1be8 = puVar2; + FUN_00402f74((int)DAT_004e1be8); + return; +} + + + +/* @00415c22 file=? name=FUN_00415c22 */ + +void __cdecl FUN_00415c22(undefined4 *param_1) + +{ + FUN_00402f98((int)DAT_004e1be8,param_1); + DAT_004e1bec = DAT_004e1bec + -1; + if (DAT_004e1bec == 0) { + if (DAT_004e1be8 != (int *)0x0) { + FUN_00402c28(DAT_004e1be8,0); + FUN_004022d0(DAT_004e1be8); + } + DAT_004e1be8 = (int *)0x0; + } + return; +} + + + +/* @00415c70 file=? name=FUN_00415c70 */ + +void __cdecl FUN_00415c70(undefined4 *param_1) + +{ + *param_1 = &PTR_FUN_004e1dc4; + return; +} + + + +/* @00415c80 file=? name=FUN_00415c80 */ + +void __cdecl FUN_00415c80(int *param_1,byte param_2) + +{ + if ((param_1 != (int *)0x0) && (*param_1 = (int)&PTR_FUN_004e1dc4, (param_2 & 1) != 0)) { + FUN_004022d0(param_1); + } + return; +} + + + +/* @00415ca0 file=? name=FUN_00415ca0 */ + +undefined4 FUN_00415ca0(void) + +{ + return 1; +} + + + +/* @00415cac file=munga/iterator.cpp name=FUN_00415cac */ + +void FUN_00415cac(void) + +{ + FUN_0040385c(s_Iterator__First___Should_never_r_004e1bf8,s_d__tesla_bt_munga_ITERATOR_CPP_004e1c22 + ,0x40); + return; +} + + + +/* @00415cc8 file=munga/iterator.cpp name=FUN_00415cc8 */ + +void FUN_00415cc8(void) + +{ + FUN_0040385c(s_Iterator__Last___Should_never_re_004e1c41,s_d__tesla_bt_munga_ITERATOR_CPP_004e1c6a + ,0x4b); + return; +} + + + +/* @00415ce4 file=munga/iterator.cpp name=FUN_00415ce4 */ + +void FUN_00415ce4(void) + +{ + FUN_0040385c(s_Iterator__Next___Should_never_re_004e1c89,s_d__tesla_bt_munga_ITERATOR_CPP_004e1cb2 + ,0x56); + return; +} + + + +/* @00415d00 file=munga/iterator.cpp name=FUN_00415d00 */ + +void FUN_00415d00(void) + +{ + FUN_0040385c(s_Iterator__Previous___Should_neve_004e1cd1,s_d__tesla_bt_munga_ITERATOR_CPP_004e1cfe + ,0x61); + return; +} + + + +/* @00415d1c file=munga/iterator.cpp name=FUN_00415d1c */ + +undefined4 FUN_00415d1c(void) + +{ + FUN_0040385c(s_Iterator__GetSize___Should_never_004e1d1d,s_d__tesla_bt_munga_ITERATOR_CPP_004e1d49 + ,0x6c); + return 0; +} + + + +/* @00415d38 file=? name=FUN_00415d38 */ + +int __cdecl FUN_00415d38(int *param_1) + +{ + int iVar1; + + iVar1 = (**(code **)(*param_1 + 0x30))(param_1); + if (iVar1 != 0) { + (**(code **)(*param_1 + 0xc))(param_1); + } + return iVar1; +} + + + +/* @00415d5c file=? name=FUN_00415d5c */ + +int __cdecl FUN_00415d5c(int *param_1) + +{ + int iVar1; + + iVar1 = (**(code **)(*param_1 + 0x30))(param_1); + if (iVar1 != 0) { + (**(code **)(*param_1 + 0x10))(param_1); + } + return iVar1; +} + + + +/* @00415d80 file=munga/iterator.cpp name=FUN_00415d80 */ + +undefined4 FUN_00415d80(void) + +{ + FUN_0040385c(s_Iterator__GetCurrentImplementati_004e1d68,s_d__tesla_bt_munga_ITERATOR_CPP_004e1da5 + ,0x9a); + return 0; +} + + + +/* @00415da0 file=? name=FUN_00415da0 */ + +int __cdecl FUN_00415da0(int *param_1,int param_2) + +{ + int iVar1; + int iVar2; + + iVar2 = 0; + (**(code **)(*param_1 + 4))(param_1); + while( true ) { + iVar1 = (**(code **)(*param_1 + 0x30))(param_1); + if (iVar1 == 0) { + return 0; + } + if (iVar2 == param_2) break; + (**(code **)(*param_1 + 0xc))(param_1); + iVar2 = iVar2 + 1; + } + return iVar1; +} + + + +/* @00415ddc file=? name=FUN_00415ddc */ + +undefined4 * __cdecl FUN_00415ddc(undefined4 *param_1,undefined4 param_2,int param_3) + +{ + *param_1 = &PTR_FUN_004e1e0c; + param_1[1] = param_2; + param_1[2] = param_3; + FUN_00415e70((int)param_1,param_3); + return param_1; +} + + + +/* @00415e04 file=? name=FUN_00415e04 */ + +void __cdecl FUN_00415e04(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e1e0c; + FUN_00415e38((int)param_1); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00415e2c file=? name=FUN_00415e2c */ + +undefined4 FUN_00415e2c(void) + +{ + return 1; +} + + + +/* @00415e38 file=? name=FUN_00415e38 */ + +void __cdecl FUN_00415e38(int param_1) + +{ + if (param_1 == *(int *)(*(int *)(param_1 + 8) + 8)) { + *(undefined4 *)(*(int *)(param_1 + 8) + 8) = *(undefined4 *)(param_1 + 0xc); + } + if (*(int *)(param_1 + 0x10) != 0) { + *(undefined4 *)(*(int *)(param_1 + 0x10) + 0xc) = *(undefined4 *)(param_1 + 0xc); + } + if (*(int *)(param_1 + 0xc) != 0) { + *(undefined4 *)(*(int *)(param_1 + 0xc) + 0x10) = *(undefined4 *)(param_1 + 0x10); + } + *(undefined4 *)(param_1 + 0xc) = 0; + *(undefined4 *)(param_1 + 0x10) = 0; + return; +} + + + +/* @00415e70 file=? name=FUN_00415e70 */ + +void __cdecl FUN_00415e70(int param_1,int param_2) + +{ + int iVar1; + + iVar1 = *(int *)(param_2 + 8); + *(int *)(param_1 + 0xc) = iVar1; + if (iVar1 != 0) { + *(int *)(iVar1 + 0x10) = param_1; + } + *(undefined4 *)(param_1 + 0x10) = 0; + *(int *)(param_2 + 8) = param_1; + return; +} + + + +/* @00415e90 file=? name=FUN_00415e90 */ + +undefined4 * __cdecl FUN_00415e90(undefined4 *param_1,undefined4 param_2) + +{ + FUN_00414be8(param_1,param_2); + *param_1 = &PTR_FUN_004e1e90; + param_1[2] = 0; + return param_1; +} + + + +/* @00415eb4 file=? name=FUN_00415eb4 */ + +undefined4 * __cdecl FUN_00415eb4(undefined4 *param_1,int *param_2) + +{ + FUN_00414c1c(param_1,param_2); + *param_1 = &PTR_FUN_004e1e90; + param_1[2] = 0; + return param_1; +} + + + +/* @00415ed8 file=? name=FUN_00415ed8 */ + +void __cdecl FUN_00415ed8(int *param_1,byte param_2) + +{ + undefined4 *puVar1; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e1e90; + while (puVar1 = (undefined4 *)param_1[2], puVar1 != (undefined4 *)0x0) { + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + } + FUN_00414bfc(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00415f1c file=? name=FUN_00415f1c */ + +undefined4 FUN_00415f1c(void) + +{ + return 1; +} + + + +/* @00415f30 file=? name=FUN_00415f30 */ + +undefined4 * __cdecl FUN_00415f30(undefined4 *param_1,int param_2,undefined4 param_3) + +{ + FUN_00415c70(param_1); + *param_1 = &PTR_FUN_004e1e48; + param_1[1] = param_2; + param_1[3] = param_3; + param_1[2] = *(undefined4 *)(param_2 + 8); + return param_1; +} + + + +/* @00415f60 file=? name=FUN_00415f60 */ + +undefined4 * __cdecl FUN_00415f60(undefined4 *param_1,int param_2) + +{ + FUN_00415c70(param_1); + *param_1 = &PTR_FUN_004e1e48; + param_1[1] = *(undefined4 *)(param_2 + 4); + param_1[3] = *(undefined4 *)(param_2 + 0xc); + param_1[2] = *(undefined4 *)(param_2 + 8); + return param_1; +} + + + +/* @00415f90 file=? name=FUN_00415f90 */ + +void __cdecl FUN_00415f90(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e1e48; + FUN_00415c80(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00415fbc file=? name=FUN_00415fbc */ + +undefined4 FUN_00415fbc(void) + +{ + return 1; +} + + + +/* @00415fd0 file=? name=FUN_00415fd0 */ + +void __cdecl FUN_00415fd0(int param_1) + +{ + *(undefined4 *)(param_1 + 8) = *(undefined4 *)(*(int *)(param_1 + 4) + 8); + FUN_00416128(param_1); + return; +} + + + +/* @00415fe8 file=? name=FUN_00415fe8 */ + +void __cdecl FUN_00415fe8(int param_1) + +{ + int iVar1; + + if ((*(int *)(param_1 + 8) != 0) || + (iVar1 = *(int *)(*(int *)(param_1 + 4) + 8), *(int *)(param_1 + 8) = iVar1, iVar1 != 0)) { + while (iVar1 = *(int *)(*(int *)(param_1 + 8) + 0xc), iVar1 != 0) { + *(int *)(param_1 + 8) = iVar1; + } + FUN_0041615c(param_1); + } + return; +} + + + +/* @0041601c file=? name=FUN_0041601c */ + +void __cdecl FUN_0041601c(int param_1) + +{ + *(undefined4 *)(param_1 + 8) = *(undefined4 *)(*(int *)(param_1 + 8) + 0xc); + FUN_00416128(param_1); + return; +} + + + +/* @00416034 file=? name=FUN_00416034 */ + +void __cdecl FUN_00416034(int param_1) + +{ + *(undefined4 *)(param_1 + 8) = *(undefined4 *)(*(int *)(param_1 + 8) + 0x10); + FUN_0041615c(param_1); + return; +} + + + +/* @0041604c file=? name=FUN_0041604c */ + +undefined4 __cdecl FUN_0041604c(int param_1) + +{ + int iVar1; + undefined4 uVar2; + + iVar1 = *(int *)(param_1 + 8); + if (iVar1 != 0) { + uVar2 = *(undefined4 *)(*(int *)(iVar1 + 4) + 4); + *(undefined4 *)(param_1 + 8) = *(undefined4 *)(iVar1 + 0xc); + FUN_00416128(param_1); + return uVar2; + } + return 0; +} + + + +/* @00416078 file=? name=FUN_00416078 */ + +undefined4 __cdecl FUN_00416078(int param_1) + +{ + int iVar1; + undefined4 uVar2; + + iVar1 = *(int *)(param_1 + 8); + if (iVar1 != 0) { + uVar2 = *(undefined4 *)(*(int *)(iVar1 + 4) + 4); + *(undefined4 *)(param_1 + 8) = *(undefined4 *)(iVar1 + 0x10); + FUN_0041615c(param_1); + return uVar2; + } + return 0; +} + + + +/* @004160a4 file=? name=FUN_004160a4 */ + +undefined4 __cdecl FUN_004160a4(int param_1) + +{ + if (*(int *)(param_1 + 8) != 0) { + return *(undefined4 *)(*(int *)(*(int *)(param_1 + 8) + 4) + 4); + } + return 0; +} + + + +/* @004160c0 file=? name=FUN_004160c0 */ + +int __cdecl FUN_004160c0(int *param_1) + +{ + int iVar1; + int iVar2; + + iVar2 = 0; + (**(code **)(*param_1 + 4))(param_1); + while( true ) { + iVar1 = (**(code **)(*param_1 + 0x30))(param_1); + if (iVar1 == 0) break; + iVar2 = iVar2 + 1; + (**(code **)(*param_1 + 0xc))(param_1); + } + return iVar2; +} + + + +/* @004160ec file=? name=FUN_004160ec */ + +int __cdecl FUN_004160ec(int *param_1,int param_2) + +{ + int iVar1; + int iVar2; + + iVar2 = 0; + (**(code **)(*param_1 + 4))(param_1); + while( true ) { + iVar1 = (**(code **)(*param_1 + 0x30))(param_1); + if (iVar1 == 0) { + return 0; + } + if (iVar2 == param_2) break; + (**(code **)(*param_1 + 0xc))(param_1); + iVar2 = iVar2 + 1; + } + return iVar1; +} + + + +/* @00416128 file=? name=FUN_00416128 */ + +void __cdecl FUN_00416128(int param_1) + +{ + int iVar1; + + while ((*(int *)(param_1 + 8) != 0 && + ((iVar1 = *(int *)(*(int *)(*(int *)(param_1 + 8) + 4) + 4), iVar1 == 0 || + ((*(int *)(iVar1 + 4) != *(int *)(param_1 + 0xc) && (*(int *)(param_1 + 0xc) != -1))))))) + { + *(undefined4 *)(param_1 + 8) = *(undefined4 *)(*(int *)(param_1 + 8) + 0xc); + } + return; +} + + + +/* @0041615c file=? name=FUN_0041615c */ + +void __cdecl FUN_0041615c(int param_1) + +{ + int iVar1; + + while ((*(int *)(param_1 + 8) != 0 && + ((iVar1 = *(int *)(*(int *)(*(int *)(param_1 + 8) + 4) + 4), iVar1 == 0 || + ((*(int *)(iVar1 + 4) != *(int *)(param_1 + 0xc) && (*(int *)(param_1 + 0xc) != -1))))))) + { + *(undefined4 *)(param_1 + 8) = *(undefined4 *)(*(int *)(param_1 + 8) + 0x10); + } + return; +} + + + +/* @00416190 file=? name=FUN_00416190 */ + +void __cdecl FUN_00416190(int param_1) + +{ + undefined4 *puVar1; + + puVar1 = *(undefined4 **)(param_1 + 8); + *(undefined4 *)(param_1 + 8) = puVar1[3]; + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + return; +} + + + +/* @004161b4 file=? name=FUN_004161b4 */ + +int __cdecl FUN_004161b4(int *param_1,undefined4 param_2,undefined4 param_3) + +{ + int iVar1; + int *piVar2; + + (**(code **)(*param_1 + 4))(param_1); + while( true ) { + piVar2 = (int *)(**(code **)(*param_1 + 0x30))(param_1); + if (piVar2 == (int *)0x0) { + return 0; + } + iVar1 = (**(code **)(*piVar2 + 4))(piVar2,param_2,param_3); + if (iVar1 != 0) break; + (**(code **)(*param_1 + 0xc))(param_1); + } + return iVar1; +} + + + +/* @004161fc file=? name=FUN_004161fc */ + +void __cdecl FUN_004161fc(int param_1,int param_2) + +{ + undefined4 *puVar1; + + puVar1 = *(undefined4 **)(*(int *)(param_1 + 4) + 8); + while( true ) { + if (puVar1 == (undefined4 *)0x0) { + return; + } + if (param_2 == puVar1[1]) break; + puVar1 = (undefined4 *)puVar1[3]; + } + *(undefined4 *)(param_1 + 8) = puVar1[3]; + if (puVar1 == (undefined4 *)0x0) { + return; + } + (**(code **)*puVar1)(puVar1,3); + return; +} + + + +/* @00416234 file=? name=FUN_00416234 */ + +undefined4 * __cdecl FUN_00416234(undefined4 *param_1) + +{ + FUN_0040328c(param_1,0); + *param_1 = &PTR_FUN_004e223c; + param_1[6] = 0; + param_1[7] = 0; + return param_1; +} + + + +/* @0041625c file=? name=FUN_0041625c */ + +undefined4 * __cdecl FUN_0041625c(undefined4 *param_1,undefined4 param_2,undefined4 param_3) + +{ + FUN_004032dc(param_1,param_2,param_3,0); + *param_1 = &PTR_FUN_004e223c; + param_1[6] = 0; + param_1[7] = 0; + return param_1; +} + + + +/* @0041628c file=? name=FUN_0041628c */ + +undefined4 * __cdecl FUN_0041628c(undefined4 *param_1,int param_2) + +{ + FUN_004032dc(param_1,*(undefined4 *)(param_2 + 0x3c),*(undefined4 *)(param_2 + 0x40),0); + *param_1 = &PTR_FUN_004e223c; + param_1[6] = 0; + param_1[7] = 0; + return param_1; +} + + + +/* @004162c0 file=? name=FUN_004162c0 */ + +void __cdecl FUN_004162c0(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e223c; + FUN_00403310(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004162ec file=? name=FUN_004162ec */ + +undefined8 __cdecl FUN_004162ec(int param_1) + +{ + return CONCAT44(*(undefined4 *)(param_1 + 0x18),1); +} + + + +/* @00416320 file=? name=FUN_00416320 */ + +int FUN_00416320(void) + +{ + DAT_004e1e94 = DAT_004e1e94 + 1; + return DAT_004e1e94; +} + + + +/* @0041632c file=? name=FUN_0041632c */ + +void __cdecl FUN_0041632c(int *param_1) + +{ + undefined4 uVar1; + int iVar2; + undefined4 local_c; + undefined4 local_8; + + while( true ) { + iVar2 = (**(code **)(*param_1 + 4))(param_1); + if (iVar2 == 0) break; + (**(code **)(*param_1 + 0x1c))(param_1,&local_8,4); + (**(code **)(*param_1 + 0x1c))(param_1,&local_c,4); + (**(code **)(*param_1 + 0x18))(param_1,4); + (**(code **)(*param_1 + 0x18))(param_1,4); + uVar1 = (**(code **)(*param_1 + 0x2c))(param_1,local_8); + (**(code **)(*param_1 + 0x30))(param_1,uVar1,local_c); + } + return; +} + + + +/* @0041639c file=munga/objstrm.cpp name=FUN_0041639c */ + +undefined4 FUN_0041639c(void) + +{ + FUN_0040385c(s_ObjectStream__MakeObject___Unkno_004e1e98,s_d__tesla_bt_munga_OBJSTRM_CPP_004e1ec4, + 0xcc); + return 0; +} + + + +/* @004163c4 file=? name=FUN_004163c4 */ + +void FUN_004163c4(void) + +{ + return; +} + + + +/* @004163cc file=? name=FUN_004163cc */ + +void __cdecl FUN_004163cc(int *param_1,int param_2,int param_3) + +{ + undefined4 *puVar1; + void *this; + int local_18 [5]; + + param_1[6] = param_3; + puVar1 = (undefined4 *)FUN_00402298(0x14); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_00415529(puVar1,0,1); + } + param_1[7] = (int)puVar1; + FUN_0041645c(param_1,param_2); + FUN_0041560f(local_18,param_1[7]); + FUN_00417858(this,local_18,1); + FUN_0041564d(local_18,2); + puVar1 = (undefined4 *)param_1[7]; + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + param_1[7] = 0; + param_1[6] = 0; + return; +} + + + +/* @0041645c file=? name=FUN_0041645c */ + +void __cdecl FUN_0041645c(int *param_1,int param_2) + +{ + int *piVar1; + uint *puVar2; + undefined4 *puVar3; + int *piVar4; + int iVar5; + char cVar6; + undefined4 *puVar7; + int *local_30; + undefined4 *local_2c; + int *local_28; + char *local_24; + int local_20; + undefined4 local_1c; + int *local_18; + int *local_14; + uint *local_10; + uint *local_c; + int *local_8; + + local_8 = FUN_0040485c(param_2,(char *)0x0); + puVar7 = (undefined4 *)local_8[1]; + while (puVar7 != (undefined4 *)0x0) { + while( true ) { + puVar2 = (uint *)FUN_00402298(0x10); + if (puVar2 == (uint *)0x0) { + local_c = (uint *)0x0; + } + else { + local_c = FUN_00402460(puVar2,s_include_004e1ee2); + } + local_c[3] = local_c[3] + 1; + puVar2 = (uint *)FUN_00402298(0x10); + if (puVar2 == (uint *)0x0) { + local_10 = (uint *)0x0; + } + else { + local_10 = FUN_00402460(puVar2,s_macro_004e1eea); + } + local_10[3] = local_10[3] + 1; + puVar3 = (undefined4 *)FUN_00402298(0x10); + if (puVar3 == (undefined4 *)0x0) { + local_14 = (int *)0x0; + } + else { + local_14 = (int *)FUN_004023f4(puVar3); + } + local_14[3] = local_14[3] + 1; + FUN_00402a98((int *)&local_18,(int *)&local_14,(char *)(puVar7 + 2)); + piVar4 = local_18 + 3; + *piVar4 = *piVar4 + -1; + if (*piVar4 == 0) { + FUN_004024d8(local_18,3); + } + if (local_14[1] == 0) { + cVar6 = '\0'; + } + else { + cVar6 = *(char *)local_14[2]; + } + if (cVar6 == '!') break; + piVar4 = FUN_00404758(param_2,puVar7[1],(char *)0x0); + iVar5 = FUN_004027d8((int)local_14,(int)local_c); + if (iVar5 == 0) { + FUN_00416714(param_1,(int)piVar4); + } + else { + iVar5 = FUN_004027d8((int)local_14,(int)local_10); + if (iVar5 == 0) { + FUN_004167e0((int)param_1,(int)piVar4); + } + else { + local_1c = FUN_00414c8c((int *)&local_14); + local_20 = FUN_00416320(); + local_2c = (undefined4 *)FUN_00402298(0x10); + if (local_2c == (undefined4 *)0x0) { + local_28 = (int *)0x0; + } + else { + local_28 = (int *)FUN_004023f4(local_2c); + } + local_28[3] = local_28[3] + 1; + FUN_00416914((int)param_1,(int)piVar4); + local_24 = (char *)FUN_00403ad0((int)piVar4,&DAT_004e1ef0); + if (local_24 != (char *)0x0) { + FUN_00402a98((int *)&local_30,(int *)&local_28,local_24); + piVar1 = local_30 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_30,3); + } + } + (**(code **)(*param_1 + 0x34))(param_1,piVar4,local_1c,local_20); + FUN_00416d88(param_1,(int)piVar4); + (**(code **)(*param_1 + 0x38))(param_1,local_1c,local_20,&local_28); + piVar1 = local_28 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_28,3); + } + } + } + if (piVar4 != (int *)0x0) { + (**(code **)*piVar4)(piVar4,3); + } + puVar7 = (undefined4 *)*puVar7; + piVar4 = local_14 + 3; + *piVar4 = *piVar4 + -1; + if (*piVar4 == 0) { + FUN_004024d8(local_14,3); + } + puVar2 = local_10 + 3; + *puVar2 = *puVar2 - 1; + if (*puVar2 == 0) { + FUN_004024d8((int *)local_10,3); + } + puVar2 = local_c + 3; + *puVar2 = *puVar2 - 1; + if (*puVar2 == 0) { + FUN_004024d8((int *)local_c,3); + } + if (puVar7 == (undefined4 *)0x0) goto LAB_004166f6; + } + puVar7 = (undefined4 *)*puVar7; + piVar4 = local_14 + 3; + *piVar4 = *piVar4 + -1; + if (*piVar4 == 0) { + FUN_004024d8(local_14,3); + } + puVar2 = local_10 + 3; + *puVar2 = *puVar2 - 1; + if (*puVar2 == 0) { + FUN_004024d8((int *)local_10,3); + } + puVar2 = local_c + 3; + *puVar2 = *puVar2 - 1; + if (*puVar2 == 0) { + FUN_004024d8((int *)local_c,3); + } + } +LAB_004166f6: + if (local_8 != (int *)0x0) { + (**(code **)*local_8)(local_8,3); + } + return; +} + + + +/* @00416714 file=? name=FUN_00416714 */ + +void __cdecl FUN_00416714(int *param_1,int param_2) + +{ + int *piVar1; + undefined4 *puVar2; + bool bVar3; + undefined3 extraout_var; + undefined4 *puVar4; + int local_2c [8]; + int *local_c; + int *local_8; + + for (puVar2 = *(undefined4 **)(param_2 + 4); puVar2 != (undefined4 *)0x0; + puVar2 = (undefined4 *)*puVar2) { + bVar3 = FUN_00403c20((int)puVar2,&DAT_004e1ef5); + if (CONCAT31(extraout_var,bVar3) != 0) { + puVar4 = (undefined4 *)FUN_00402298(0x10); + if (puVar4 == (undefined4 *)0x0) { + local_8 = (int *)0x0; + } + else { + local_8 = (int *)FUN_004023f4(puVar4); + } + local_8[3] = local_8[3] + 1; + FUN_00402a98((int *)&local_c,(int *)&local_8,(char *)puVar2[1]); + piVar1 = local_c + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_c,3); + } + FUN_00403e84(local_2c,(char *)local_8[2],1); + FUN_0041645c(param_1,(int)local_2c); + FUN_00403ecc(local_2c,2); + piVar1 = local_8 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_8,3); + } + } + } + return; +} + + + +/* @004167e0 file=? name=FUN_004167e0 */ + +void __cdecl FUN_004167e0(int param_1,int param_2) + +{ + int *piVar1; + undefined4 *puVar2; + undefined4 *puVar3; + uint *puVar4; + uint *local_18; + char *local_14; + int *local_10; + undefined4 *local_c; + int *local_8; + + for (puVar2 = *(undefined4 **)(param_2 + 4); puVar2 != (undefined4 *)0x0; + puVar2 = (undefined4 *)*puVar2) { + if (puVar2[1] != 0) { + puVar3 = (undefined4 *)FUN_00402298(0x10); + if (puVar3 == (undefined4 *)0x0) { + local_8 = (int *)0x0; + } + else { + local_8 = (int *)FUN_004023f4(puVar3); + } + local_8[3] = local_8[3] + 1; + FUN_00402a98((int *)&local_10,(int *)&local_8,(char *)(puVar2 + 2)); + piVar1 = local_10 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_10,3); + } + puVar3 = (undefined4 *)FUN_00402298(0x10); + if (puVar3 == (undefined4 *)0x0) { + puVar3 = (undefined4 *)0x0; + } + else { + local_14 = (char *)puVar2[1]; + puVar4 = (uint *)FUN_00402298(0x10); + if (puVar4 == (uint *)0x0) { + local_18 = (uint *)0x0; + } + else { + local_18 = FUN_00402460(puVar4,local_14); + } + local_18[3] = local_18[3] + 1; + puVar3 = FUN_0041547b(puVar3,(int *)&local_18); + } + puVar4 = local_18 + 3; + *puVar4 = *puVar4 - 1; + if (*puVar4 == 0) { + FUN_004024d8((int *)local_18,3); + } + local_c = (undefined4 *) + (**(code **)(**(int **)(param_1 + 0x1c) + 0xc))(*(int **)(param_1 + 0x1c),&local_8); + if ((local_c != (undefined4 *)0x0) && (local_c != (undefined4 *)0x0)) { + (**(code **)*local_c)(local_c,3); + } + (**(code **)(**(int **)(param_1 + 0x1c) + 8))(*(int **)(param_1 + 0x1c),puVar3,&local_8); + piVar1 = local_8 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_8,3); + } + } + } + return; +} + + + +/* @00416914 file=? name=FUN_00416914 */ + +void __cdecl FUN_00416914(int param_1,int param_2) + +{ + int *piVar1; + char cVar2; + uint *puVar3; + undefined4 *puVar4; + int iVar5; + char *pcVar6; + uint uVar7; + uint uVar8; + char *pcVar9; + char *pcVar10; + uint local_88 [2]; + char *local_80; + uint local_78 [2]; + char *local_70; + uint local_68 [2]; + char *local_60; + uint *local_58; + int *local_54; + int *local_50; + uint local_4c; + uint *local_48; + int *local_44; + int *local_40; + uint *local_3c; + int *local_38; + uint *local_34; + char *local_30; + uint local_2c; + int *local_28; + uint local_24; + int *local_20; + uint *local_1c; + int *local_18; + int *local_14; + char *local_10; + uint *local_c; + undefined4 *local_8; + + local_8 = *(undefined4 **)(param_2 + 4); + do { + if (local_8 == (undefined4 *)0x0) { + return; + } + if (local_8[1] != 0) { + local_10 = (char *)local_8[1]; + puVar3 = (uint *)FUN_00402298(0x10); + if (puVar3 == (uint *)0x0) { + local_c = (uint *)0x0; + } + else { + local_c = FUN_00402460(puVar3,local_10); + } + local_c[3] = local_c[3] + 1; + puVar4 = (undefined4 *)FUN_00402298(0x10); + if (puVar4 == (undefined4 *)0x0) { + local_14 = (int *)0x0; + } + else { + local_14 = (int *)FUN_004023f4(puVar4); + } + local_14[3] = local_14[3] + 1; + puVar4 = (undefined4 *)FUN_00402298(0x10); + if (puVar4 == (undefined4 *)0x0) { + local_18 = (int *)0x0; + } + else { + local_18 = (int *)FUN_004023f4(puVar4); + } + local_18[3] = local_18[3] + 1; + puVar3 = (uint *)FUN_00402298(0x10); + if (puVar3 == (uint *)0x0) { + local_1c = (uint *)0x0; + } + else { + local_1c = FUN_00402460(puVar3,&DAT_004e1efa); + } + local_1c[3] = local_1c[3] + 1; + puVar4 = (undefined4 *)FUN_00402298(0x10); + if (puVar4 == (undefined4 *)0x0) { + local_20 = (int *)0x0; + } + else { + local_20 = (int *)FUN_004023f4(puVar4); + } + local_20[3] = local_20[3] + 1; + local_24 = 0; + while( true ) { + local_2c = local_24; + FUN_00402838(local_68,local_c,local_24,(char *)0x0); + local_30 = local_60; + puVar3 = (uint *)FUN_00402298(0x10); + if (puVar3 == (uint *)0x0) { + local_34 = (uint *)0x0; + } + else { + local_34 = FUN_00402460(puVar3,local_30); + } + local_34[3] = local_34[3] + 1; + FUN_004024d8((int *)local_68,2); + FUN_00402a4c((int *)&local_28,(int *)&local_18,(int *)&local_34); + iVar5 = FUN_004027d8((int)local_28,(int)local_20); + uVar7 = (uint)(iVar5 != 0); + piVar1 = local_28 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_28,3); + } + puVar3 = local_34 + 3; + *puVar3 = *puVar3 - 1; + if (*puVar3 == 0) { + FUN_004024d8((int *)local_34,3); + } + if (uVar7 == 0) break; + iVar5 = FUN_004027d8((int)local_14,(int)local_20); + if (iVar5 != 0) { + FUN_00402624(local_78,(int)local_14,(int)local_1c); + pcVar9 = local_70; + puVar3 = (uint *)FUN_00402298(0x10); + if (puVar3 == (uint *)0x0) { + local_3c = (uint *)0x0; + } + else { + local_3c = FUN_00402460(puVar3,pcVar9); + } + local_3c[3] = local_3c[3] + 1; + FUN_004024d8((int *)local_78,2); + FUN_00402a4c((int *)&local_38,(int *)&local_14,(int *)&local_3c); + piVar1 = local_38 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_38,3); + } + puVar3 = local_3c + 3; + *puVar3 = *puVar3 - 1; + if (*puVar3 == 0) { + FUN_004024d8((int *)local_3c,3); + } + } + FUN_00416ce8(&local_40,param_1,(int *)&local_18); + FUN_00402624(local_88,(int)local_14,(int)local_40); + pcVar9 = local_80; + puVar3 = (uint *)FUN_00402298(0x10); + if (puVar3 == (uint *)0x0) { + local_48 = (uint *)0x0; + } + else { + local_48 = FUN_00402460(puVar3,pcVar9); + } + local_48[3] = local_48[3] + 1; + FUN_004024d8((int *)local_88,2); + FUN_00402a4c((int *)&local_44,(int *)&local_14,(int *)&local_48); + piVar1 = local_44 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_44,3); + } + puVar3 = local_48 + 3; + *puVar3 = *puVar3 - 1; + if (*puVar3 == 0) { + FUN_004024d8((int *)local_48,3); + } + piVar1 = local_40 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_40,3); + } + local_24 = local_24 + 1; + } + local_4c = local_14[1] + 1; + pcVar6 = (char *)FUN_004022b0(local_4c); + uVar7 = 0xffffffff; + pcVar9 = (char *)local_14[2]; + do { + pcVar10 = pcVar9; + if (uVar7 == 0) break; + uVar7 = uVar7 - 1; + pcVar10 = pcVar9 + 1; + cVar2 = *pcVar9; + pcVar9 = pcVar10; + } while (cVar2 != '\0'); + uVar7 = ~uVar7; + pcVar9 = pcVar10 + -uVar7; + pcVar10 = pcVar6; + for (uVar8 = uVar7 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) { + *(undefined4 *)pcVar10 = *(undefined4 *)pcVar9; + pcVar9 = pcVar9 + 4; + pcVar10 = pcVar10 + 4; + } + for (uVar7 = uVar7 & 3; uVar7 != 0; uVar7 = uVar7 - 1) { + *pcVar10 = *pcVar9; + pcVar9 = pcVar9 + 1; + pcVar10 = pcVar10 + 1; + } + local_8[1] = pcVar6; + piVar1 = local_20 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_20,3); + } + puVar3 = local_1c + 3; + *puVar3 = *puVar3 - 1; + if (*puVar3 == 0) { + FUN_004024d8((int *)local_1c,3); + } + local_50 = local_18; + piVar1 = local_18 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_18,3); + } + local_54 = local_14; + piVar1 = local_14 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_14,3); + } + local_58 = local_c; + puVar3 = local_c + 3; + *puVar3 = *puVar3 - 1; + if (*puVar3 == 0) { + FUN_004024d8((int *)local_c,3); + } + } + local_8 = (undefined4 *)*local_8; + } while( true ); +} + + + +/* @00416ce8 file=? name=FUN_00416ce8 */ + +undefined4 * __cdecl FUN_00416ce8(undefined4 *param_1,int param_2,int *param_3) + +{ + int *piVar1; + int iVar2; + int *local_10; + int *local_c; + int *local_8; + + local_8 = (int *)*param_3; + local_8[3] = local_8[3] + 1; + while( true ) { + iVar2 = (**(code **)(**(int **)(param_2 + 0x1c) + 0xc))(*(int **)(param_2 + 0x1c),&local_8); + if (iVar2 == 0) break; + local_10 = *(int **)(iVar2 + 0xc); + local_10[3] = local_10[3] + 1; + FUN_00402a4c((int *)&local_c,(int *)&local_8,(int *)&local_10); + piVar1 = local_c + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_c,3); + } + piVar1 = local_10 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_10,3); + } + } + *param_1 = local_8; + local_8[3] = local_8[3] + 1; + piVar1 = local_8 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_8,3); + } + return param_1; +} + + + +/* @00416d88 file=? name=FUN_00416d88 */ + +void __cdecl FUN_00416d88(undefined4 param_1,int param_2) + +{ + undefined4 *puVar1; + + for (puVar1 = *(undefined4 **)(param_2 + 4); puVar1 != (undefined4 *)0x0; + puVar1 = (undefined4 *)*puVar1) { + if ((int *)puVar1[1] != (int *)0x0) { + FUN_004022e8((int *)puVar1[1]); + } + } + return; +} + + + +/* @00416db0 file=munga/objstrm.cpp name=FUN_00416db0 */ + +void FUN_00416db0(void) + +{ + FUN_0040385c(s_ObjectStream__BuildFromPage___Un_004e1efc,s_d__tesla_bt_munga_OBJSTRM_CPP_004e1f2b, + 0x296); + return; +} + + + +/* @00416dd0 file=? name=FUN_00416dd0 */ + +void FUN_00416dd0(void) + +{ + return; +} + + + +/* @00416dd8 file=? name=FUN_00416dd8 */ + +undefined4 * __cdecl FUN_00416dd8(undefined4 *param_1) + +{ + FUN_004178cc(param_1,2); + *param_1 = &PTR_FUN_004e2230; + FUN_00417410(param_1 + 3,500,0,1); + FUN_004174a5(param_1 + 9,0,1); + return param_1; +} + + + +/* @00416e1c file=? name=FUN_00416e1c */ + +void __cdecl FUN_00416e1c(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e2230; + FUN_00416e80((int)param_1); + FUN_004174c8(param_1 + 9,2); + FUN_00417437(param_1 + 3,2); + FUN_0041790c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00416e6c file=? name=FUN_00416e6c */ + +undefined4 FUN_00416e6c(void) + +{ + FUN_00415f1c(); + return 1; +} + + + +/* @00416e80 file=? name=FUN_00416e80 */ + +void __cdecl FUN_00416e80(int param_1) + +{ + void *this; + int local_38 [8]; + int local_18 [5]; + + FUN_0041758b(local_18,param_1 + 0x24); + FUN_00417858(local_18,local_18,1); + FUN_004175c9(local_18,2); + FUN_004175f5(local_38,param_1 + 0xc); + FUN_00417858(this,local_38,1); + FUN_00417633(local_38,2); + return; +} + + + +/* @00416ee8 file=? name=FUN_00416ee8 */ + +void __cdecl FUN_00416ee8(undefined4 param_1) + +{ + (**(code **)(DAT_00521f70 + 8))(&DAT_00521f70,param_1,&stack0x00000008); + return; +} + + + +/* @00416f08 file=? name=FUN_00416f08 */ + +void FUN_00416f08(void) + +{ + (**(code **)(DAT_00521f70 + 0xc))(&DAT_00521f70,&stack0x00000004); + return; +} + + + +/* @00416f24 file=? name=FUN_00416f24 */ + +void __cdecl FUN_00416f24(undefined4 param_1,undefined4 param_2) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00402298(0x10); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_004173bf(puVar1,¶m_1); + } + (**(code **)(DAT_00521f88 + 8))(&DAT_00521f88,puVar1,param_2); + return; +} + + + +/* @00416f60 file=? name=FUN_00416f60 */ + +undefined4 __cdecl FUN_00416f60(undefined4 param_1) + +{ + int iVar1; + + iVar1 = (**(code **)(DAT_00521f88 + 0xc))(&DAT_00521f88,param_1); + if (iVar1 != 0) { + return *(undefined4 *)(iVar1 + 0xc); + } + return 0; +} + + + +/* @00416f88 file=? name=FUN_00416f88 */ + +undefined4 * __cdecl FUN_00416f88(undefined4 *param_1) + +{ + FUN_00416234(param_1); + *param_1 = &PTR_FUN_004e21f4; + param_1[8] = 0; + param_1[9] = 0; + return param_1; +} + + + +/* @00416fac file=? name=FUN_00416fac */ + +undefined4 * __cdecl FUN_00416fac(undefined4 *param_1,undefined4 param_2,undefined4 param_3) + +{ + FUN_0041625c(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004e21f4; + param_1[8] = 0; + param_1[9] = 0; + return param_1; +} + + + +/* @00416fdc file=? name=FUN_00416fdc */ + +undefined4 * __cdecl FUN_00416fdc(undefined4 *param_1,int param_2) + +{ + FUN_0041628c(param_1,param_2); + *param_1 = &PTR_FUN_004e21f4; + param_1[8] = 0; + param_1[9] = 0; + return param_1; +} + + + +/* @00417008 file=? name=FUN_00417008 */ + +void __cdecl FUN_00417008(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e21f4; + FUN_004162c0(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00417034 file=? name=FUN_00417034 */ + +undefined8 __cdecl FUN_00417034(int param_1) + +{ + undefined8 uVar1; + + uVar1 = FUN_004162ec(param_1); + return CONCAT44((int)((ulonglong)uVar1 >> 0x20),1); +} + + + +/* @00417054 file=? name=FUN_00417054 */ + +void __cdecl FUN_00417054(int *param_1) + +{ + int local_1c [6]; + + FUN_00415679(local_1c,0,1); + param_1[8] = (int)local_1c; + FUN_0041632c(param_1); + param_1[8] = 0; + FUN_0041569c(local_1c,2); + return; +} + + + +/* @00417094 file=? name=FUN_00417094 */ + +void __cdecl FUN_00417094(int param_1,undefined4 param_2) + +{ + FUN_004170b0(param_1,param_2); + return; +} + + + +/* @004170b0 file=? name=FUN_004170b0 */ + +void __cdecl FUN_004170b0(int param_1,undefined4 param_2) + +{ + (**(code **)(**(int **)(param_1 + 0x20) + 8))(*(int **)(param_1 + 0x20),param_2,&stack0x0000000c); + return; +} + + + +/* @004170cc file=? name=FUN_004170cc */ + +void __cdecl FUN_004170cc(undefined4 param_1,undefined4 param_2) + +{ + FUN_00416ee8(param_2); + return; +} + + + +/* @004170e4 file=? name=FUN_004170e4 */ + +int __cdecl FUN_004170e4(int param_1,undefined4 param_2) + +{ + int iVar1; + + iVar1 = (**(code **)(**(int **)(param_1 + 0x20) + 0xc))(*(int **)(param_1 + 0x20),¶m_2); + if ((iVar1 == 0) && (iVar1 = FUN_00416f08(), iVar1 == 0)) { + iVar1 = 0; + } + return iVar1; +} + + + +/* @00417120 file=? name=FUN_00417120 */ + +void __cdecl FUN_00417120(int *param_1,int param_2,int param_3) + +{ + void *this; + int local_30 [5]; + int local_1c [6]; + + FUN_004157be(local_1c,0,1); + param_1[9] = (int)local_1c; + FUN_004163cc(param_1,param_2,param_3); + FUN_0041765f(local_30,(int)local_1c); + FUN_00417858(this,local_30,1); + FUN_004176bc(local_30,2); + param_1[9] = 0; + FUN_004157e1(local_1c,2); + return; +} + + + +/* @00417198 file=? name=FUN_00417198 */ + +void __cdecl FUN_00417198(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) + +{ + FUN_004171b4(param_1,param_3,param_4); + return; +} + + + +/* @004171b4 file=? name=FUN_004171b4 */ + +void __cdecl FUN_004171b4(int param_1,undefined4 param_2,undefined4 param_3) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00402298(0x10); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_004173bf(puVar1,¶m_2); + } + (**(code **)(**(int **)(param_1 + 0x24) + 8))(*(int **)(param_1 + 0x24),puVar1,param_3); + return; +} + + + +/* @004171f0 file=? name=FUN_004171f0 */ + +void __cdecl FUN_004171f0(undefined4 param_1,undefined4 param_2,undefined4 param_3) + +{ + FUN_00416f24(param_2,param_3); + return; +} + + + +/* @00417208 file=? name=FUN_00417208 */ + +undefined4 __cdecl FUN_00417208(int param_1,undefined4 param_2) + +{ + int iVar1; + undefined4 uVar2; + + iVar1 = (**(code **)(**(int **)(param_1 + 0x24) + 0xc))(*(int **)(param_1 + 0x24),param_2); + if (iVar1 == 0) { + uVar2 = FUN_00416f60(param_2); + } + else { + uVar2 = *(undefined4 *)(iVar1 + 0xc); + } + return uVar2; +} + + + +/* @00417240 file=munga/objstrm.cpp name=FUN_00417240 */ + +void __cdecl FUN_00417240(int *param_1,int param_2,int *param_3) + +{ + int *piVar1; + undefined4 *puVar2; + char *pcVar3; + int *local_10; + int local_c; + int *local_8; + + puVar2 = (undefined4 *)FUN_00402298(0x10); + if (puVar2 == (undefined4 *)0x0) { + local_8 = (int *)0x0; + } + else { + local_8 = (int *)FUN_004023f4(puVar2); + } + local_8[3] = local_8[3] + 1; + pcVar3 = (char *)FUN_00403ad0(param_2,*(char **)(*param_3 + 8)); + if (pcVar3 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_PlugStream_FindEntryAndWriteObje_004e1f49,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,*(char **)(*param_3 + 8),(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004e1f7f,(char *)0x0); + FUN_0040385c(s_PlugStream_FindEntryAndWriteObje_004e1f81, + s_d__tesla_bt_munga_OBJSTRM_CPP_004e1fbb,0x4c1); + } + FUN_00402a98((int *)&local_10,(int *)&local_8,pcVar3); + piVar1 = local_10 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_10,3); + } + local_c = FUN_00417208((int)param_1,&local_8); + if (local_c == 0) { + FUN_004dbb24(&DAT_00524e20,s_PlugStream_FindEntryAndWriteObje_004e1fd9,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,(char *)local_8[2],(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004e2010,(char *)0x0); + FUN_0040385c(s_PlugStream_FindEntryAndWriteObje_004e2012, + s_d__tesla_bt_munga_OBJSTRM_CPP_004e2053,0x4cc); + } + (**(code **)(*param_1 + 0x20))(param_1,&local_c,4); + piVar1 = local_8 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_8,3); + } + return; +} + + + +/* @004173b8 file=? name=FUN_004173b8 */ + +undefined4 FUN_004173b8(void) + +{ + return 0; +} + + + +/* @004173bf file=? name=FUN_004173bf */ + +undefined4 * __cdecl FUN_004173bf(undefined4 *param_1,undefined4 *param_2) + +{ + FUN_00415e90(param_1,1); + *param_1 = &PTR_FUN_004e21f0; + param_1[3] = *param_2; + return param_1; +} + + + +/* @004173e4 file=? name=FUN_004173e4 */ + +void __cdecl FUN_004173e4(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e21f0; + FUN_00415ed8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00417410 file=? name=FUN_00417410 */ + +undefined4 * __cdecl +FUN_00417410(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) + +{ + FUN_00419774(param_1,param_2,param_3,param_4); + *param_1 = &PTR_FUN_004e21d8; + return param_1; +} + + + +/* @00417437 file=? name=FUN_00417437 */ + +void __cdecl FUN_00417437(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e21d8; + FUN_004197d4(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00417463 file=? name=FUN_00417463 */ + +undefined4 * __cdecl FUN_00417463(int param_1) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00415723(); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_00415679(puVar1,*(undefined4 *)(param_1 + 4),*(undefined4 *)(param_1 + 0xc)); + } + return puVar1; +} + + + +/* @00417492 file=? name=FUN_00417492 */ + +int __cdecl FUN_00417492(int param_1,int *param_2) + +{ + return *param_2 % *(int *)(param_1 + 0x14); +} + + + +/* @004174a5 file=? name=FUN_004174a5 */ + +undefined4 * __cdecl FUN_004174a5(undefined4 *param_1,undefined4 param_2,undefined4 param_3) + +{ + FUN_00418bb8(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004e21bc; + return param_1; +} + + + +/* @004174c8 file=? name=FUN_004174c8 */ + +void __cdecl FUN_004174c8(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e21bc; + FUN_00418be0(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004174f4 file=? name=FUN_004174f4 */ + +undefined4 __cdecl FUN_004174f4(undefined4 param_1,int param_2,int param_3) + +{ + int iVar1; + undefined4 uVar2; + + iVar1 = FUN_004027d8(*(int *)(param_2 + 0x20),*(int *)(param_3 + 0x20)); + if (iVar1 == 0) { + uVar2 = 0; + } + else { + iVar1 = FUN_004027d8(*(int *)(param_2 + 0x20),*(int *)(param_3 + 0x20)); + if (iVar1 < 1) { + uVar2 = 0xffffffff; + } + else { + uVar2 = 1; + } + } + return uVar2; +} + + + +/* @00417541 file=? name=FUN_00417541 */ + +undefined4 __cdecl FUN_00417541(undefined4 param_1,int *param_2,int param_3) + +{ + int iVar1; + undefined4 uVar2; + + iVar1 = FUN_004027d8(*param_2,*(int *)(param_3 + 0x20)); + if (iVar1 == 0) { + uVar2 = 0; + } + else { + iVar1 = FUN_004027d8(*param_2,*(int *)(param_3 + 0x20)); + if (iVar1 < 1) { + uVar2 = 0xffffffff; + } + else { + uVar2 = 1; + } + } + return uVar2; +} + + + +/* @0041758b file=? name=FUN_0041758b */ + +int * __cdecl FUN_0041758b(int *param_1,int param_2) + +{ + FUN_00418f34(param_1,param_2); + *param_1 = (int)&PTR_FUN_004e2160; + return param_1; +} + + + +/* @004175aa file=? name=FUN_004175aa */ + +int * __cdecl FUN_004175aa(int *param_1,int param_2) + +{ + FUN_00418f34(param_1,param_2); + *param_1 = (int)&PTR_FUN_004e2160; + return param_1; +} + + + +/* @004175c9 file=? name=FUN_004175c9 */ + +void __cdecl FUN_004175c9(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e2160; + FUN_00418f5c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004175f5 file=? name=FUN_004175f5 */ + +int * __cdecl FUN_004175f5(int *param_1,int param_2) + +{ + FUN_00419928(param_1,param_2); + *param_1 = (int)&PTR_FUN_004e2104; + return param_1; +} + + + +/* @00417614 file=? name=FUN_00417614 */ + +int * __cdecl FUN_00417614(int *param_1,int param_2) + +{ + FUN_00419928(param_1,param_2); + *param_1 = (int)&PTR_FUN_004e2104; + return param_1; +} + + + +/* @00417633 file=? name=FUN_00417633 */ + +void __cdecl FUN_00417633(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e2104; + FUN_00419968(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0041765f file=? name=FUN_0041765f */ + +undefined4 * __cdecl FUN_0041765f(undefined4 *param_1,int param_2) + +{ + FUN_004188dc(param_1,param_2); + *param_1 = &PTR_FUN_004e20a8; + return param_1; +} + + + +/* @0041767e file=? name=FUN_0041767e */ + +undefined4 * __cdecl FUN_0041767e(undefined4 *param_1,int param_2) + +{ + FUN_004188dc(param_1,param_2); + *param_1 = &PTR_FUN_004e20a8; + return param_1; +} + + + +/* @0041769d file=? name=FUN_0041769d */ + +undefined4 * __cdecl FUN_0041769d(undefined4 *param_1,int param_2) + +{ + FUN_00418904(param_1,param_2); + *param_1 = &PTR_FUN_004e20a8; + return param_1; +} + + + +/* @004176bc file=? name=FUN_004176bc */ + +void __cdecl FUN_004176bc(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e20a8; + FUN_00418930(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004176e8 file=? name=FUN_004176e8 */ + +undefined4 * __cdecl FUN_004176e8(undefined4 param_1,int param_2,int *param_3) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00415a83(); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_004159cf(puVar1,param_1,param_2,param_3); + } + return puVar1; +} + + + +/* @00417718 file=? name=FUN_00417718 */ + +void __cdecl FUN_00417718(undefined4 *param_1,undefined4 param_2) + +{ + *param_1 = &PTR_FUN_004e23c4; + param_1[1] = param_2; + return; +} + + + +/* @0041772c file=? name=FUN_0041772c */ + +void __cdecl FUN_0041772c(int *param_1,byte param_2) + +{ + if ((param_1 != (int *)0x0) && (*param_1 = (int)&PTR_FUN_004e23c4, (param_2 & 1) != 0)) { + FUN_004022d0(param_1); + } + return; +} + + + +/* @0041774c file=? name=FUN_0041774c */ + +undefined4 FUN_0041774c(void) + +{ + return 1; +} + + + +/* @00417758 file=munga/socket.cpp name=FUN_00417758 */ + +void FUN_00417758(void) + +{ + FUN_0040385c(s_Socket__AddImplementation___Shou_004e2278,s_d__tesla_bt_munga_SOCKET_CPP_004e22ac, + 0x46); + return; +} + + + +/* @00417774 file=? name=FUN_00417774 */ + +undefined4 * __cdecl FUN_00417774(undefined4 *param_1,undefined4 param_2) + +{ + FUN_00415c70(param_1); + *param_1 = &PTR_FUN_004e2374; + param_1[1] = param_2; + return param_1; +} + + + +/* @00417794 file=? name=FUN_00417794 */ + +void __cdecl FUN_00417794(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e2374; + FUN_00415c80(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004177c0 file=? name=FUN_004177c0 */ + +undefined4 FUN_004177c0(void) + +{ + return 1; +} + + + +/* @004177cc file=munga/socket.cpp name=FUN_004177cc */ + +void FUN_004177cc(void) + +{ + FUN_0040385c(s_SocketIterator__Remove___Should_n_004e22c9,s_d__tesla_bt_munga_SOCKET_CPP_004e22fa, + 0x6f); + return; +} + + + +/* @004177e8 file=? name=FUN_004177e8 */ + +undefined4 __cdecl FUN_004177e8(int *param_1,int param_2) + +{ + int iVar1; + + (**(code **)(*param_1 + 4))(param_1); + do { + iVar1 = (**(code **)(*param_1 + 0x28))(param_1); + if (iVar1 == 0) { + return 0; + } + } while (param_2 != iVar1); + return 1; +} + + + +/* @0041781c file=? name=FUN_0041781c */ + +void __cdecl FUN_0041781c(int *param_1,int param_2) + +{ + int iVar1; + + (**(code **)(*param_1 + 4))(param_1); + while( true ) { + iVar1 = (**(code **)(*param_1 + 0x30))(param_1); + if (iVar1 == 0) { + return; + } + if (param_2 == iVar1) break; + (**(code **)(*param_1 + 0xc))(param_1); + } + (**(code **)(*param_1 + 0x48))(param_1); + return; +} + + + +/* @00417858 file=? name=FUN_00417858 */ + +void __thiscall FUN_00417858(void *this,int *param_1,int param_2) + +{ + undefined4 *puVar1; + void *local_8; + + local_8 = this; + if (param_2 != 0) { + local_8 = *(void **)(param_1[1] + 4); + *(undefined4 *)(param_1[1] + 4) = 0; + } + (**(code **)(*param_1 + 4))(param_1); + while( true ) { + puVar1 = (undefined4 *)(**(code **)(*param_1 + 0x28))(param_1); + if (puVar1 == (undefined4 *)0x0) break; + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + } + if (param_2 != 0) { + *(void **)(param_1[1] + 4) = local_8; + } + return; +} + + + +/* @004178b0 file=munga/socket.cpp name=FUN_004178b0 */ + +void FUN_004178b0(void) + +{ + FUN_0040385c(s_SocketIterator__InsertImplementa_004e2317,s_d__tesla_bt_munga_SOCKET_CPP_004e2356, + 0x116); + return; +} + + + +/* @004178cc file=? name=FUN_004178cc */ + +undefined4 * __cdecl FUN_004178cc(undefined4 *param_1,undefined4 param_2) + +{ + FUN_00415e90(param_1,param_2); + *param_1 = &PTR_FUN_004e23cc; + return param_1; +} + + + +/* @004178ec file=? name=FUN_004178ec */ + +undefined4 * __cdecl FUN_004178ec(undefined4 *param_1,int *param_2) + +{ + FUN_00415eb4(param_1,param_2); + *param_1 = &PTR_FUN_004e23cc; + return param_1; +} + + + +/* @0041790c file=? name=FUN_0041790c */ + +void __cdecl FUN_0041790c(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e23cc; + FUN_00415ed8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00417938 file=? name=FUN_00417938 */ + +void FUN_00417938(void) + +{ + return; +} + + + +/* @00417940 file=? name=FUN_00417940 */ + +undefined4 * __cdecl FUN_00417940(undefined4 *param_1,undefined4 param_2,int param_3) + +{ + FUN_00415ddc(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004e2414; + return param_1; +} + + + +/* @00417964 file=? name=FUN_00417964 */ + +void __cdecl FUN_00417964(int *param_1,byte param_2) + +{ + int iVar1; + int *piVar2; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e2414; + iVar1 = param_1[1]; + *(undefined4 *)(iVar1 + 8) = 0; + FUN_00415e38((int)param_1); + piVar2 = *(int **)(iVar1 + 4); + if (piVar2 != (int *)0x0) { + (**(code **)(*piVar2 + 8))(piVar2,iVar1,param_1[2]); + } + FUN_00415e04(param_1,0); + if ((param_2 & 1) != 0) { + FUN_00402f98(0x4e23d8,param_1); + } + } + return; +} + + + +/* @004179c0 file=? name=FUN_004179c0 */ + +undefined4 FUN_004179c0(void) + +{ + FUN_00415e2c(); + return 1; +} + + + +/* @004179d4 file=? name=FUN_004179d4 */ + +undefined4 * __cdecl FUN_004179d4(undefined4 *param_1,undefined4 param_2) + +{ + FUN_00417718(param_1,param_2); + *param_1 = &PTR_FUN_004e240c; + param_1[2] = 0; + return param_1; +} + + + +/* @004179f8 file=? name=FUN_004179f8 */ + +void __cdecl FUN_004179f8(int *param_1,byte param_2) + +{ + undefined4 *puVar1; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e240c; + param_1[1] = 0; + puVar1 = (undefined4 *)param_1[2]; + if ((puVar1 != (undefined4 *)0x0) && (puVar1 != (undefined4 *)0x0)) { + (**(code **)*puVar1)(puVar1,3); + } + FUN_0041772c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00417a40 file=? name=FUN_00417a40 */ + +undefined4 FUN_00417a40(void) + +{ + FUN_0041774c(); + return 1; +} + + + +/* @00417a5c file=? name=FUN_00417a5c */ + +void __cdecl FUN_00417a5c(int param_1) + +{ + undefined4 *puVar1; + + puVar1 = *(undefined4 **)(param_1 + 8); + if (puVar1 != (undefined4 *)0x0) { + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + *(undefined4 *)(param_1 + 8) = 0; + } + return; +} + + + +/* @00417a80 file=? name=FUN_00417a80 */ + +void __cdecl FUN_00417a80(int param_1,int param_2) + +{ + undefined4 *puVar1; + + puVar1 = FUN_00402f74(0x4e23d8); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_00417940(puVar1,param_1,param_2); + } + *(undefined4 **)(param_1 + 8) = puVar1; + return; +} + + + +/* @00417ab4 file=? name=FUN_00417ab4 */ + +undefined4 __cdecl FUN_00417ab4(int param_1) + +{ + if (*(int *)(param_1 + 8) != 0) { + return *(undefined4 *)(*(int *)(param_1 + 8) + 8); + } + return 0; +} + + + +/* @00417af8 file=? name=FUN_00417af8 */ + +undefined4 * __cdecl +FUN_00417af8(undefined4 *param_1,undefined4 param_2,int param_3,int param_4,int param_5) + +{ + FUN_00415ddc(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004e24a4; + param_1[5] = param_4; + if (param_4 != 0) { + *(undefined4 **)(param_4 + 0x18) = param_1; + } + param_1[6] = param_5; + if (param_5 != 0) { + *(undefined4 **)(param_5 + 0x14) = param_1; + } + return param_1; +} + + + +/* @00417b38 file=? name=FUN_00417b38 */ + +void __cdecl FUN_00417b38(int *param_1,byte param_2) + +{ + int iVar1; + int *piVar2; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e24a4; + iVar1 = param_1[1]; + if (param_1[6] == 0) { + *(int *)(iVar1 + 8) = param_1[5]; + } + else { + *(int *)(param_1[6] + 0x14) = param_1[5]; + } + if (param_1[5] == 0) { + *(int *)(iVar1 + 0xc) = param_1[6]; + } + else { + *(int *)(param_1[5] + 0x18) = param_1[6]; + } + param_1[5] = 0; + param_1[6] = 0; + FUN_00415e38((int)param_1); + piVar2 = *(int **)(iVar1 + 4); + if (piVar2 != (int *)0x0) { + (**(code **)(*piVar2 + 8))(piVar2,iVar1,param_1[2]); + } + FUN_00415e04(param_1,0); + if ((param_2 & 1) != 0) { + FUN_00402f98(0x4e2418,param_1); + } + } + return; +} + + + +/* @00417bc0 file=? name=FUN_00417bc0 */ + +undefined4 FUN_00417bc0(void) + +{ + FUN_00415e2c(); + return 1; +} + + + +/* @00417be0 file=? name=FUN_00417be0 */ + +undefined4 * __cdecl FUN_00417be0(undefined4 *param_1,undefined4 param_2) + +{ + FUN_00417718(param_1,param_2); + *param_1 = &PTR_FUN_004e249c; + param_1[2] = 0; + param_1[3] = 0; + return param_1; +} + + + +/* @00417c0c file=? name=FUN_00417c0c */ + +void __cdecl FUN_00417c0c(int *param_1,byte param_2) + +{ + undefined4 *puVar1; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e249c; + param_1[1] = 0; + while (puVar1 = (undefined4 *)param_1[2], puVar1 != (undefined4 *)0x0) { + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + } + FUN_0041772c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00417c54 file=? name=FUN_00417c54 */ + +undefined4 FUN_00417c54(void) + +{ + FUN_0041774c(); + return 1; +} + + + +/* @00417c74 file=? name=FUN_00417c74 */ + +void __cdecl FUN_00417c74(int param_1,int param_2) + +{ + undefined4 *puVar1; + + puVar1 = FUN_00402f74(0x4e2418); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_00417af8(puVar1,param_1,param_2,0,*(int *)(param_1 + 0xc)); + } + *(undefined4 **)(param_1 + 0xc) = puVar1; + if (*(int *)(param_1 + 8) == 0) { + *(undefined4 **)(param_1 + 8) = puVar1; + } + return; +} + + + +/* @00417cbc file=? name=FUN_00417cbc */ + +void __cdecl FUN_00417cbc(int param_1,int param_2,int param_3) + +{ + undefined4 *puVar1; + + puVar1 = FUN_00402f74(0x4e2418); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_00417af8(puVar1,param_1,param_2,param_3,*(int *)(param_3 + 0x18)); + } + if (param_3 == *(int *)(param_1 + 8)) { + *(undefined4 **)(param_1 + 8) = puVar1; + } + return; +} + + + +/* @00417d00 file=? name=FUN_00417d00 */ + +undefined4 * __cdecl FUN_00417d00(undefined4 *param_1,int param_2) + +{ + FUN_00417774(param_1,param_2); + *param_1 = &PTR_FUN_004e244c; + param_1[2] = *(undefined4 *)(param_2 + 8); + return param_1; +} + + + +/* @00417d28 file=? name=FUN_00417d28 */ + +undefined4 * __cdecl FUN_00417d28(undefined4 *param_1,int param_2) + +{ + FUN_00417774(param_1,*(undefined4 *)(param_2 + 4)); + *param_1 = &PTR_FUN_004e244c; + param_1[2] = *(undefined4 *)(param_2 + 8); + return param_1; +} + + + +/* @00417d54 file=? name=FUN_00417d54 */ + +void __cdecl FUN_00417d54(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e244c; + FUN_00417794(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00417d80 file=? name=FUN_00417d80 */ + +undefined4 FUN_00417d80(void) + +{ + FUN_004177c0(); + return 1; +} + + + +/* @00417d9c file=? name=FUN_00417d9c */ + +void __cdecl FUN_00417d9c(int param_1) + +{ + *(undefined4 *)(param_1 + 8) = *(undefined4 *)(*(int *)(param_1 + 4) + 8); + return; +} + + + +/* @00417db0 file=? name=FUN_00417db0 */ + +void __cdecl FUN_00417db0(int param_1) + +{ + *(undefined4 *)(param_1 + 8) = *(undefined4 *)(*(int *)(param_1 + 4) + 0xc); + return; +} + + + +/* @00417dc4 file=? name=FUN_00417dc4 */ + +void __cdecl FUN_00417dc4(int param_1) + +{ + *(undefined4 *)(param_1 + 8) = *(undefined4 *)(*(int *)(param_1 + 8) + 0x14); + return; +} + + + +/* @00417dd8 file=? name=FUN_00417dd8 */ + +void __cdecl FUN_00417dd8(int param_1) + +{ + *(undefined4 *)(param_1 + 8) = *(undefined4 *)(*(int *)(param_1 + 8) + 0x18); + return; +} + + + +/* @00417dec file=? name=FUN_00417dec */ + +undefined4 __cdecl FUN_00417dec(int param_1) + +{ + int iVar1; + undefined4 uVar2; + + iVar1 = *(int *)(param_1 + 8); + if (iVar1 != 0) { + uVar2 = *(undefined4 *)(iVar1 + 8); + *(undefined4 *)(param_1 + 8) = *(undefined4 *)(iVar1 + 0x14); + return uVar2; + } + return 0; +} + + + diff --git a/reference/decomp/archive_2025export/all/part_002.c b/reference/decomp/archive_2025export/all/part_002.c new file mode 100644 index 0000000..41486fb --- /dev/null +++ b/reference/decomp/archive_2025export/all/part_002.c @@ -0,0 +1,8446 @@ +/* @00417e0c file=? name=FUN_00417e0c */ + +undefined4 __cdecl FUN_00417e0c(int param_1) + +{ + int iVar1; + undefined4 uVar2; + + iVar1 = *(int *)(param_1 + 8); + if (iVar1 != 0) { + uVar2 = *(undefined4 *)(iVar1 + 8); + *(undefined4 *)(param_1 + 8) = *(undefined4 *)(iVar1 + 0x18); + return uVar2; + } + return 0; +} + + + +/* @00417e2c file=? name=FUN_00417e2c */ + +undefined4 __cdecl FUN_00417e2c(int param_1) + +{ + if (*(int *)(param_1 + 8) != 0) { + return *(undefined4 *)(*(int *)(param_1 + 8) + 8); + } + return 0; +} + + + +/* @00417e44 file=? name=FUN_00417e44 */ + +int __cdecl FUN_00417e44(int param_1) + +{ + int iVar1; + int iVar2; + + iVar2 = 0; + for (iVar1 = *(int *)(*(int *)(param_1 + 4) + 8); iVar1 != 0; iVar1 = *(int *)(iVar1 + 0x14)) { + iVar2 = iVar2 + 1; + } + return iVar2; +} + + + +/* @00417e64 file=? name=FUN_00417e64 */ + +undefined4 __cdecl FUN_00417e64(int param_1,int param_2) + +{ + int iVar1; + int iVar2; + + iVar2 = 0; + iVar1 = *(int *)(*(int *)(param_1 + 4) + 8); + while( true ) { + if (iVar1 == 0) { + return 0; + } + if (param_2 == iVar2) break; + iVar2 = iVar2 + 1; + iVar1 = *(int *)(iVar1 + 0x14); + } + *(int *)(param_1 + 8) = iVar1; + return *(undefined4 *)(iVar1 + 8); +} + + + +/* @00417e98 file=? name=FUN_00417e98 */ + +void __cdecl FUN_00417e98(int param_1) + +{ + undefined4 *puVar1; + + puVar1 = *(undefined4 **)(param_1 + 8); + *(undefined4 *)(param_1 + 8) = puVar1[5]; + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + return; +} + + + +/* @00417ebc file=? name=FUN_00417ebc */ + +void __cdecl FUN_00417ebc(int param_1,int param_2) + +{ + undefined4 uVar1; + + uVar1 = FUN_00417cbc(*(int *)(param_1 + 4),param_2,*(int *)(param_1 + 8)); + *(undefined4 *)(param_1 + 8) = uVar1; + return; +} + + + +/* @00417f0c file=? name=FUN_00417f0c */ + +undefined4 * __cdecl FUN_00417f0c(undefined4 *param_1,undefined4 param_2) + +{ + FUN_00417718(param_1,param_2); + *param_1 = &PTR_FUN_004e2550; + param_1[2] = 0; + return param_1; +} + + + +/* @00417f30 file=? name=FUN_00417f30 */ + +void __cdecl FUN_00417f30(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e2550; + FUN_0041772c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00417f5c file=? name=FUN_00417f5c */ + +undefined4 FUN_00417f5c(void) + +{ + FUN_0041774c(); + return 1; +} + + + +/* @00417f78 file=? name=FUN_00417f78 */ + +void __cdecl FUN_00417f78(int param_1,undefined4 param_2,undefined4 param_3) + +{ + int *piVar1; + + for (piVar1 = *(int **)(param_1 + 8); piVar1 != (int *)0x0; piVar1 = (int *)piVar1[2]) { + (**(code **)(*piVar1 + 0x50))(piVar1,param_2,param_3); + } + return; +} + + + +/* @00417fa8 file=? name=FUN_00417fa8 */ + +undefined4 * __cdecl FUN_00417fa8(undefined4 *param_1,int param_2) + +{ + int iVar1; + + FUN_00417774(param_1,param_2); + *param_1 = &PTR_FUN_004e24fc; + iVar1 = *(int *)(param_2 + 8); + param_1[2] = iVar1; + if (iVar1 != 0) { + *(undefined4 **)(iVar1 + 0xc) = param_1; + } + param_1[3] = 0; + *(undefined4 **)(param_2 + 8) = param_1; + return param_1; +} + + + +/* @00417fe0 file=? name=FUN_00417fe0 */ + +void __cdecl FUN_00417fe0(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e24fc; + if (param_1 == *(int **)(param_1[1] + 8)) { + *(int *)(param_1[1] + 8) = param_1[2]; + } + if (param_1[3] != 0) { + *(int *)(param_1[3] + 8) = param_1[2]; + } + if (param_1[2] != 0) { + *(int *)(param_1[2] + 0xc) = param_1[3]; + } + FUN_00417794(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00418034 file=? name=FUN_00418034 */ + +undefined4 FUN_00418034(void) + +{ + FUN_004177c0(); + return 1; +} + + + +/* @00418054 file=munga/sfeskt.cpp name=FUN_00418054 */ + +void FUN_00418054(void) + +{ + FUN_0040385c(s_SafeIterator__ReceiveMemo___Shou_004e24a8,s_d__tesla_bt_munga_SFESKT_CPP_004e24dc, + 0xa7); + return; +} + + + +/* @00418070 file=? name=FUN_00418070 */ + +undefined4 * __cdecl FUN_00418070(undefined4 *param_1,undefined4 param_2,undefined4 param_3) + +{ + FUN_00417f0c(param_1,param_2); + *param_1 = &PTR_FUN_004e2720; + param_1[3] = param_3; + return param_1; +} + + + +/* @00418098 file=? name=FUN_00418098 */ + +void __cdecl FUN_00418098(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e2720; + FUN_00417f30(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004180c4 file=munga/srtskt.cpp name=FUN_004180c4 */ + +void FUN_004180c4(void) + +{ + FUN_0040385c(s_SortedSocket__AddValueImplementa_004e2558,s_d__tesla_bt_munga_SRTSKT_CPP_004e2597, + 0x2b); + return; +} + + + +/* @004180e0 file=munga/srtskt.cpp name=FUN_004180e0 */ + +undefined4 FUN_004180e0(void) + +{ + FUN_0040385c(s_SortedSocket__FindImplementation_004e25b4,s_d__tesla_bt_munga_SRTSKT_CPP_004e25ef, + 0x31); + return 0; +} + + + +/* @004180fc file=? name=FUN_004180fc */ + +undefined4 * __cdecl FUN_004180fc(undefined4 *param_1,int param_2) + +{ + FUN_00417fa8(param_1,param_2); + *param_1 = &PTR_FUN_004e26c4; + return param_1; +} + + + +/* @0041811c file=? name=FUN_0041811c */ + +void __cdecl FUN_0041811c(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e26c4; + FUN_00417fe0(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00418148 file=munga/srtskt.cpp name=FUN_00418148 */ + +undefined4 FUN_00418148(void) + +{ + FUN_0040385c(s_SortedIterator__FindImplementati_004e260c,s_d__tesla_bt_munga_SRTSKT_CPP_004e2649, + 0x41); + return 0; +} + + + +/* @00418164 file=munga/srtskt.cpp name=FUN_00418164 */ + +undefined4 FUN_00418164(void) + +{ + FUN_0040385c(s_SortedIterator__GetValueImplemen_004e2666,s_d__tesla_bt_munga_SRTSKT_CPP_004e26a7, + 0x48); + return 0; +} + + + +/* @00418180 file=? name=FUN_00418180 */ + +undefined4 * __cdecl +FUN_00418180(undefined4 *param_1,undefined4 param_2,int param_3,int param_4,int param_5) + +{ + FUN_00415ddc(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004e27c0; + param_1[5] = param_4; + if (param_4 != 0) { + *(undefined4 **)(param_4 + 0x18) = param_1; + } + param_1[6] = param_5; + if (param_5 != 0) { + *(undefined4 **)(param_5 + 0x14) = param_1; + } + return param_1; +} + + + +/* @004181c4 file=? name=FUN_004181c4 */ + +void __cdecl FUN_004181c4(int *param_1,byte param_2) + +{ + int iVar1; + int *piVar2; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e27c0; + iVar1 = param_1[1]; + FUN_00417f78(iVar1,1,param_1); + if (param_1[6] == 0) { + *(int *)(iVar1 + 0xc) = param_1[5]; + } + else { + *(int *)(param_1[6] + 0x14) = param_1[5]; + } + if (param_1[5] == 0) { + *(int *)(iVar1 + 0x10) = param_1[6]; + } + else { + *(int *)(param_1[5] + 0x18) = param_1[6]; + } + param_1[5] = 0; + param_1[6] = 0; + FUN_00415e38((int)param_1); + piVar2 = *(int **)(iVar1 + 4); + if (piVar2 != (int *)0x0) { + (**(code **)(*piVar2 + 8))(piVar2,iVar1,param_1[2]); + } + FUN_00415e04(param_1,0); + if ((param_2 & 1) != 0) { + FUN_00402f98(0x4e2730,param_1); + } + } + return; +} + + + +/* @0041825c file=? name=FUN_0041825c */ + +undefined4 FUN_0041825c(void) + +{ + FUN_00415e2c(); + return 1; +} + + + +/* @0041827c file=? name=FUN_0041827c */ + +undefined4 * __cdecl FUN_0041827c(undefined4 *param_1,undefined4 param_2) + +{ + FUN_00417f0c(param_1,param_2); + *param_1 = &PTR_FUN_004e27b8; + param_1[3] = 0; + param_1[4] = 0; + return param_1; +} + + + +/* @004182a8 file=? name=FUN_004182a8 */ + +void __cdecl FUN_004182a8(int *param_1,byte param_2) + +{ + undefined4 *puVar1; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e27b8; + param_1[1] = 0; + while (puVar1 = (undefined4 *)param_1[3], puVar1 != (undefined4 *)0x0) { + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + } + FUN_00417f30(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004182f0 file=? name=FUN_004182f0 */ + +undefined4 FUN_004182f0(void) + +{ + FUN_00417f5c(); + return 1; +} + + + +/* @0041830c file=? name=FUN_0041830c */ + +void __cdecl FUN_0041830c(int param_1,int param_2) + +{ + undefined4 *puVar1; + + puVar1 = FUN_00402f74(0x4e2730); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_00418180(puVar1,param_1,param_2,0,*(int *)(param_1 + 0x10)); + } + *(undefined4 **)(param_1 + 0x10) = puVar1; + if (*(int *)(param_1 + 0xc) == 0) { + *(undefined4 **)(param_1 + 0xc) = puVar1; + } + return; +} + + + +/* @00418354 file=? name=FUN_00418354 */ + +void __cdecl FUN_00418354(int param_1,int param_2,int param_3) + +{ + undefined4 *puVar1; + + puVar1 = FUN_00402f74(0x4e2730); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_00418180(puVar1,param_1,param_2,param_3,*(int *)(param_3 + 0x18)); + } + if (param_3 == *(int *)(param_1 + 0xc)) { + *(undefined4 **)(param_1 + 0xc) = puVar1; + } + return; +} + + + +/* @00418398 file=? name=FUN_00418398 */ + +undefined4 * __cdecl FUN_00418398(undefined4 *param_1,int param_2) + +{ + FUN_00417fa8(param_1,param_2); + *param_1 = &PTR_FUN_004e2764; + param_1[4] = *(undefined4 *)(param_2 + 0xc); + return param_1; +} + + + +/* @004183c0 file=? name=FUN_004183c0 */ + +undefined4 * __cdecl FUN_004183c0(undefined4 *param_1,int param_2) + +{ + FUN_00417fa8(param_1,*(int *)(param_2 + 4)); + *param_1 = &PTR_FUN_004e2764; + param_1[4] = *(undefined4 *)(param_2 + 0x10); + return param_1; +} + + + +/* @004183ec file=? name=FUN_004183ec */ + +void __cdecl FUN_004183ec(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e2764; + FUN_00417fe0(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00418418 file=? name=FUN_00418418 */ + +undefined4 FUN_00418418(void) + +{ + FUN_00418034(); + return 1; +} + + + +/* @00418434 file=? name=FUN_00418434 */ + +void __cdecl FUN_00418434(int param_1) + +{ + *(undefined4 *)(param_1 + 0x10) = *(undefined4 *)(*(int *)(param_1 + 4) + 0xc); + return; +} + + + +/* @00418448 file=? name=FUN_00418448 */ + +void __cdecl FUN_00418448(int param_1) + +{ + *(undefined4 *)(param_1 + 0x10) = *(undefined4 *)(*(int *)(param_1 + 4) + 0x10); + return; +} + + + +/* @0041845c file=? name=FUN_0041845c */ + +void __cdecl FUN_0041845c(int param_1) + +{ + *(undefined4 *)(param_1 + 0x10) = *(undefined4 *)(*(int *)(param_1 + 0x10) + 0x14); + return; +} + + + +/* @00418470 file=? name=FUN_00418470 */ + +void __cdecl FUN_00418470(int param_1) + +{ + *(undefined4 *)(param_1 + 0x10) = *(undefined4 *)(*(int *)(param_1 + 0x10) + 0x18); + return; +} + + + +/* @00418484 file=? name=FUN_00418484 */ + +undefined4 __cdecl FUN_00418484(int param_1) + +{ + int iVar1; + undefined4 uVar2; + + iVar1 = *(int *)(param_1 + 0x10); + if (iVar1 != 0) { + uVar2 = *(undefined4 *)(iVar1 + 8); + *(undefined4 *)(param_1 + 0x10) = *(undefined4 *)(iVar1 + 0x14); + return uVar2; + } + return 0; +} + + + +/* @004184a4 file=? name=FUN_004184a4 */ + +undefined4 __cdecl FUN_004184a4(int param_1) + +{ + int iVar1; + undefined4 uVar2; + + iVar1 = *(int *)(param_1 + 0x10); + if (iVar1 != 0) { + uVar2 = *(undefined4 *)(iVar1 + 8); + *(undefined4 *)(param_1 + 0x10) = *(undefined4 *)(iVar1 + 0x18); + return uVar2; + } + return 0; +} + + + +/* @004184c4 file=? name=FUN_004184c4 */ + +undefined4 __cdecl FUN_004184c4(int param_1) + +{ + if (*(int *)(param_1 + 0x10) != 0) { + return *(undefined4 *)(*(int *)(param_1 + 0x10) + 8); + } + return 0; +} + + + +/* @004184dc file=? name=FUN_004184dc */ + +int __cdecl FUN_004184dc(int param_1) + +{ + int iVar1; + int iVar2; + + iVar2 = 0; + for (iVar1 = *(int *)(*(int *)(param_1 + 4) + 0xc); iVar1 != 0; iVar1 = *(int *)(iVar1 + 0x14)) { + iVar2 = iVar2 + 1; + } + return iVar2; +} + + + +/* @004184fc file=? name=FUN_004184fc */ + +undefined4 __cdecl FUN_004184fc(int param_1,int param_2) + +{ + int iVar1; + int iVar2; + + iVar2 = 0; + iVar1 = *(int *)(*(int *)(param_1 + 4) + 0xc); + while( true ) { + if (iVar1 == 0) { + return 0; + } + if (param_2 == iVar2) break; + iVar2 = iVar2 + 1; + iVar1 = *(int *)(iVar1 + 0x14); + } + *(int *)(param_1 + 0x10) = iVar1; + return *(undefined4 *)(iVar1 + 8); +} + + + +/* @00418530 file=? name=FUN_00418530 */ + +void __cdecl FUN_00418530(int param_1) + +{ + undefined4 *puVar1; + + puVar1 = *(undefined4 **)(param_1 + 0x10); + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + return; +} + + + +/* @0041854c file=? name=FUN_0041854c */ + +void __cdecl FUN_0041854c(int param_1,int param_2) + +{ + undefined4 uVar1; + + uVar1 = FUN_00418354(*(int *)(param_1 + 4),param_2,*(int *)(param_1 + 0x10)); + *(undefined4 *)(param_1 + 0x10) = uVar1; + return; +} + + + +/* @00418570 file=? name=FUN_00418570 */ + +void __cdecl FUN_00418570(int *param_1,int param_2,int param_3) + +{ + if ((param_2 == 1) && (param_3 == param_1[4])) { + (**(code **)(*param_1 + 0xc))(param_1); + } + return; +} + + + +/* @004185bc file=? name=FUN_004185bc */ + +undefined4 * __cdecl FUN_004185bc(undefined4 *param_1,undefined4 param_2,int param_3) + +{ + FUN_00415ddc(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004e2934; + param_1[5] = 0; + param_1[6] = 0; + return param_1; +} + + + +/* @004185ec file=? name=FUN_004185ec */ + +void __cdecl FUN_004185ec(int *param_1,byte param_2) + +{ + int iVar1; + int *piVar2; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e2934; + iVar1 = param_1[1]; + FUN_00417f78(iVar1,1,param_1); + if (param_1[6] == 0) { + *(int *)(iVar1 + 0x10) = param_1[5]; + } + else { + *(int *)(param_1[6] + 0x14) = param_1[5]; + } + if (param_1[5] == 0) { + *(int *)(iVar1 + 0x14) = param_1[6]; + } + else { + *(int *)(param_1[5] + 0x18) = param_1[6]; + } + param_1[5] = 0; + param_1[6] = 0; + FUN_00415e38((int)param_1); + piVar2 = *(int **)(iVar1 + 4); + if (piVar2 != (int *)0x0) { + (**(code **)(*piVar2 + 8))(piVar2,iVar1,param_1[2]); + } + FUN_00415e04(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00418678 file=? name=FUN_00418678 */ + +undefined4 FUN_00418678(void) + +{ + FUN_00415e2c(); + return 1; +} + + + +/* @00418698 file=? name=FUN_00418698 */ + +void __cdecl FUN_00418698(int param_1,undefined4 param_2,undefined4 param_3) + +{ + *(undefined4 *)(param_1 + 0x14) = param_2; + *(undefined4 *)(param_1 + 0x18) = param_3; + return; +} + + + +/* @004186ac file=? name=FUN_004186ac */ + +undefined4 * __cdecl FUN_004186ac(undefined4 *param_1,undefined4 param_2,undefined4 param_3) + +{ + FUN_00418070(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004e2918; + param_1[4] = 0; + param_1[5] = 0; + return param_1; +} + + + +/* @004186dc file=? name=FUN_004186dc */ + +void __cdecl FUN_004186dc(int *param_1,byte param_2) + +{ + undefined4 *puVar1; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e2918; + param_1[1] = 0; + while (puVar1 = (undefined4 *)param_1[4], puVar1 != (undefined4 *)0x0) { + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + } + FUN_00418098(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00418724 file=? name=FUN_00418724 */ + +undefined4 FUN_00418724(void) + +{ + FUN_00417f5c(); + return 1; +} + + + +/* @00418744 file=munga/vchain.cpp name=FUN_00418744 */ + +undefined4 FUN_00418744(void) + +{ + FUN_0040385c(s_VChain__MakeVChainLink___Should_n_004e27c4,s_d__tesla_bt_munga_VCHAIN_CPP_004e27f5, + 0xcd); + return 0; +} + + + +/* @00418764 file=munga/vchain.cpp name=FUN_00418764 */ + +undefined4 FUN_00418764(void) + +{ + FUN_0040385c(s_VChain__CompareVChainLinks___Sho_004e2812,s_d__tesla_bt_munga_VCHAIN_CPP_004e2847, + 0xdc); + return 0; +} + + + +/* @00418784 file=munga/vchain.cpp name=FUN_00418784 */ + +undefined4 FUN_00418784(void) + +{ + FUN_0040385c(s_VChain__CompareValueToVChainLink_004e2864,s_d__tesla_bt_munga_VCHAIN_CPP_004e289f, + 0xeb); + return 0; +} + + + +/* @004187a4 file=? name=FUN_004187a4 */ + +void __cdecl FUN_004187a4(int *param_1,undefined4 param_2) + +{ + (**(code **)(*param_1 + 8))(param_1,param_2,0); + return; +} + + + +/* @004187bc file=? name=FUN_004187bc */ + +void __cdecl FUN_004187bc(int *param_1,undefined4 param_2,undefined4 param_3) + +{ + int iVar1; + int iVar2; + int iVar3; + + iVar2 = (**(code **)(*param_1 + 0x10))(param_1,param_2,param_3); + if (param_1[4] == 0) { + FUN_00418698(iVar2,0,0); + param_1[4] = iVar2; + param_1[5] = iVar2; + } + else { + iVar1 = param_1[4]; + while ((iVar1 != 0 && + (iVar3 = (**(code **)(*param_1 + 0x18))(param_1,param_3,iVar1), -1 < iVar3))) { + iVar1 = *(int *)(iVar1 + 0x14); + } + if (iVar1 == 0) { + FUN_00418698(iVar2,0,param_1[5]); + *(int *)(param_1[5] + 0x14) = iVar2; + param_1[5] = iVar2; + } + else if (iVar1 == param_1[4]) { + FUN_00418698(iVar2,param_1[4],0); + *(int *)(param_1[4] + 0x18) = iVar2; + param_1[4] = iVar2; + } + else { + FUN_00418698(iVar2,iVar1,*(undefined4 *)(iVar1 + 0x18)); + *(int *)(*(int *)(iVar1 + 0x18) + 0x14) = iVar2; + *(int *)(iVar1 + 0x18) = iVar2; + } + } + FUN_00417f78((int)param_1,0,iVar2); + return; +} + + + +/* @00418878 file=? name=FUN_00418878 */ + +undefined4 __cdecl FUN_00418878(int *param_1,undefined4 param_2) + +{ + int iVar1; + undefined4 uVar2; + + iVar1 = FUN_004188a0(param_1,param_2); + if (iVar1 == 0) { + uVar2 = 0; + } + else { + uVar2 = *(undefined4 *)(iVar1 + 8); + } + return uVar2; +} + + + +/* @004188a0 file=? name=FUN_004188a0 */ + +int __cdecl FUN_004188a0(int *param_1,undefined4 param_2) + +{ + int iVar1; + int iVar2; + + iVar1 = param_1[4]; + while( true ) { + if (iVar1 == 0) { + return 0; + } + iVar2 = (**(code **)(*param_1 + 0x18))(param_1,param_2,iVar1); + if (iVar2 == 0) break; + if (iVar2 < 0) { + return 0; + } + iVar1 = *(int *)(iVar1 + 0x14); + } + return iVar1; +} + + + +/* @004188dc file=? name=FUN_004188dc */ + +undefined4 * __cdecl FUN_004188dc(undefined4 *param_1,int param_2) + +{ + FUN_004180fc(param_1,param_2); + *param_1 = &PTR_FUN_004e28bc; + param_1[4] = *(undefined4 *)(param_2 + 0x10); + return param_1; +} + + + +/* @00418904 file=? name=FUN_00418904 */ + +undefined4 * __cdecl FUN_00418904(undefined4 *param_1,int param_2) + +{ + FUN_004180fc(param_1,*(int *)(param_2 + 4)); + *param_1 = &PTR_FUN_004e28bc; + param_1[4] = *(undefined4 *)(param_2 + 0x10); + return param_1; +} + + + +/* @00418930 file=? name=FUN_00418930 */ + +void __cdecl FUN_00418930(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e28bc; + FUN_0041811c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0041895c file=? name=FUN_0041895c */ + +undefined4 FUN_0041895c(void) + +{ + FUN_00418034(); + return 1; +} + + + +/* @00418978 file=? name=FUN_00418978 */ + +void __cdecl FUN_00418978(int param_1) + +{ + *(undefined4 *)(param_1 + 0x10) = *(undefined4 *)(*(int *)(param_1 + 4) + 0x10); + return; +} + + + +/* @0041898c file=? name=FUN_0041898c */ + +void __cdecl FUN_0041898c(int param_1) + +{ + *(undefined4 *)(param_1 + 0x10) = *(undefined4 *)(*(int *)(param_1 + 4) + 0x14); + return; +} + + + +/* @004189a0 file=? name=FUN_004189a0 */ + +void __cdecl FUN_004189a0(int param_1) + +{ + *(undefined4 *)(param_1 + 0x10) = *(undefined4 *)(*(int *)(param_1 + 0x10) + 0x14); + return; +} + + + +/* @004189b4 file=? name=FUN_004189b4 */ + +void __cdecl FUN_004189b4(int param_1) + +{ + *(undefined4 *)(param_1 + 0x10) = *(undefined4 *)(*(int *)(param_1 + 0x10) + 0x18); + return; +} + + + +/* @004189c8 file=? name=FUN_004189c8 */ + +undefined4 __cdecl FUN_004189c8(int param_1) + +{ + int iVar1; + undefined4 uVar2; + + iVar1 = *(int *)(param_1 + 0x10); + if (iVar1 != 0) { + uVar2 = *(undefined4 *)(iVar1 + 8); + *(undefined4 *)(param_1 + 0x10) = *(undefined4 *)(iVar1 + 0x14); + return uVar2; + } + return 0; +} + + + +/* @004189e8 file=? name=FUN_004189e8 */ + +undefined4 __cdecl FUN_004189e8(int param_1) + +{ + int iVar1; + undefined4 uVar2; + + iVar1 = *(int *)(param_1 + 0x10); + if (iVar1 != 0) { + uVar2 = *(undefined4 *)(iVar1 + 8); + *(undefined4 *)(param_1 + 0x10) = *(undefined4 *)(iVar1 + 0x18); + return uVar2; + } + return 0; +} + + + +/* @00418a08 file=? name=FUN_00418a08 */ + +undefined4 __cdecl FUN_00418a08(int param_1) + +{ + if (*(int *)(param_1 + 0x10) != 0) { + return *(undefined4 *)(*(int *)(param_1 + 0x10) + 8); + } + return 0; +} + + + +/* @00418a20 file=? name=FUN_00418a20 */ + +int __cdecl FUN_00418a20(int param_1) + +{ + int iVar1; + int iVar2; + + iVar2 = 0; + for (iVar1 = *(int *)(*(int *)(param_1 + 4) + 0x10); iVar1 != 0; iVar1 = *(int *)(iVar1 + 0x14)) { + iVar2 = iVar2 + 1; + } + return iVar2; +} + + + +/* @00418a40 file=? name=FUN_00418a40 */ + +undefined4 __cdecl FUN_00418a40(int param_1,int param_2) + +{ + int iVar1; + int iVar2; + + iVar2 = 0; + iVar1 = *(int *)(*(int *)(param_1 + 4) + 0x10); + while( true ) { + if (iVar1 == 0) { + return 0; + } + if (param_2 == iVar2) break; + iVar2 = iVar2 + 1; + iVar1 = *(int *)(iVar1 + 0x14); + } + *(int *)(param_1 + 0x10) = iVar1; + return *(undefined4 *)(iVar1 + 8); +} + + + +/* @00418a74 file=? name=FUN_00418a74 */ + +void __cdecl FUN_00418a74(int param_1) + +{ + undefined4 *puVar1; + + puVar1 = *(undefined4 **)(param_1 + 0x10); + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + return; +} + + + +/* @00418a90 file=? name=FUN_00418a90 */ + +undefined4 __cdecl FUN_00418a90(int param_1,undefined4 param_2) + +{ + int iVar1; + undefined4 uVar2; + + iVar1 = FUN_004188a0(*(int **)(param_1 + 4),param_2); + if (iVar1 == 0) { + uVar2 = 0; + } + else { + *(int *)(param_1 + 0x10) = iVar1; + uVar2 = *(undefined4 *)(iVar1 + 8); + } + return uVar2; +} + + + +/* @00418ac0 file=? name=FUN_00418ac0 */ + +void __cdecl FUN_00418ac0(int *param_1,int param_2,int param_3) + +{ + if ((param_2 == 1) && (param_3 == param_1[4])) { + (**(code **)(*param_1 + 0xc))(param_1); + } + return; +} + + + +/* @00418ae0 file=? name=FUN_00418ae0 */ + +undefined4 * __cdecl FUN_00418ae0(undefined4 *param_1,undefined4 param_2,int param_3) + +{ + FUN_00415ddc(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004e2a98; + param_1[5] = 0; + param_1[6] = 0; + param_1[7] = 0; + return param_1; +} + + + +/* @00418b14 file=? name=FUN_00418b14 */ + +void __cdecl FUN_00418b14(int *param_1,byte param_2) + +{ + int iVar1; + int *piVar2; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e2a98; + iVar1 = param_1[1]; + FUN_00417f78(iVar1,1,param_1); + FUN_00418da0(iVar1,(int)param_1); + FUN_00415e38((int)param_1); + piVar2 = *(int **)(iVar1 + 4); + if (piVar2 != (int *)0x0) { + (**(code **)(*piVar2 + 8))(piVar2,iVar1,param_1[2]); + } + FUN_00415e04(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00418b78 file=? name=FUN_00418b78 */ + +undefined4 FUN_00418b78(void) + +{ + FUN_00415e2c(); + return 1; +} + + + +/* @00418b9c file=? name=FUN_00418b9c */ + +void __cdecl FUN_00418b9c(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) + +{ + *(undefined4 *)(param_1 + 0x14) = param_2; + *(undefined4 *)(param_1 + 0x18) = param_3; + *(undefined4 *)(param_1 + 0x1c) = param_4; + return; +} + + + +/* @00418bb8 file=? name=FUN_00418bb8 */ + +undefined4 * __cdecl FUN_00418bb8(undefined4 *param_1,undefined4 param_2,undefined4 param_3) + +{ + FUN_00418070(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004e2a7c; + param_1[4] = 0; + return param_1; +} + + + +/* @00418be0 file=? name=FUN_00418be0 */ + +void __cdecl FUN_00418be0(int *param_1,byte param_2) + +{ + undefined4 *puVar1; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e2a7c; + param_1[1] = 0; + while (puVar1 = (undefined4 *)param_1[4], puVar1 != (undefined4 *)0x0) { + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + } + FUN_00418098(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00418c28 file=? name=FUN_00418c28 */ + +undefined4 FUN_00418c28(void) + +{ + FUN_00417f5c(); + return 1; +} + + + +/* @00418c44 file=? name=FUN_00418c44 */ + +void __cdecl FUN_00418c44(int *param_1,undefined4 param_2) + +{ + (**(code **)(*param_1 + 8))(param_1,param_2,0); + return; +} + + + +/* @00418c5c file=? name=FUN_00418c5c */ + +void __cdecl FUN_00418c5c(int *param_1,undefined4 param_2,undefined4 param_3) + +{ + int iVar1; + + iVar1 = (**(code **)(*param_1 + 0x10))(param_1,param_2,param_3); + FUN_00418d1c(param_1,iVar1); + FUN_00417f78((int)param_1,0,iVar1); + return; +} + + + +/* @00418c94 file=? name=FUN_00418c94 */ + +undefined4 __cdecl FUN_00418c94(int *param_1,undefined4 param_2) + +{ + int iVar1; + undefined4 uVar2; + + iVar1 = FUN_00418ef4(param_1,param_2); + if (iVar1 == 0) { + uVar2 = 0; + } + else { + uVar2 = *(undefined4 *)(iVar1 + 8); + } + return uVar2; +} + + + +/* @00418cbc file=munga/tree.cpp name=FUN_00418cbc */ + +undefined4 FUN_00418cbc(void) + +{ + FUN_0040385c(s_Tree__MakeTreeNode___Shoule_neve_004e2938,s_d__tesla_bt_munga_TREE_CPP_004e2965, + 0x107); + return 0; +} + + + +/* @00418cdc file=munga/tree.cpp name=FUN_00418cdc */ + +undefined4 FUN_00418cdc(void) + +{ + FUN_0040385c(s_Tree__CompareTreeNodes___Shoule_n_004e2980,s_d__tesla_bt_munga_TREE_CPP_004e29b1, + 0x116); + return 0; +} + + + +/* @00418cfc file=munga/tree.cpp name=FUN_00418cfc */ + +undefined4 FUN_00418cfc(void) + +{ + FUN_0040385c(s_Tree__CompareValueToTreeNode___S_004e29cc,s_d__tesla_bt_munga_TREE_CPP_004e2a03, + 0x125); + return 0; +} + + + +/* @00418d1c file=? name=FUN_00418d1c */ + +void __cdecl FUN_00418d1c(int *param_1,int param_2) + +{ + int iVar1; + int iVar2; + + if (param_1[4] == 0) { + FUN_00418b9c(param_2,0,0,0); + param_1[4] = param_2; + } + else { + iVar1 = param_1[4]; + while (iVar1 != 0) { + iVar2 = (**(code **)(*param_1 + 0x14))(param_1,param_2,iVar1); + if (iVar2 < 0) { + if (*(int *)(iVar1 + 0x14) == 0) { + FUN_00418b9c(param_2,0,0,iVar1); + *(int *)(iVar1 + 0x14) = param_2; + return; + } + iVar1 = *(int *)(iVar1 + 0x14); + } + else { + if (*(int *)(iVar1 + 0x18) == 0) { + FUN_00418b9c(param_2,0,0,iVar1); + *(int *)(iVar1 + 0x18) = param_2; + return; + } + iVar1 = *(int *)(iVar1 + 0x18); + } + } + } + return; +} + + + +/* @00418da0 file=? name=FUN_00418da0 */ + +void __cdecl FUN_00418da0(int param_1,int param_2) + +{ + int iVar1; + int iVar2; + + if (*(int *)(param_2 + 0x18) == 0) { + if (*(int *)(param_2 + 0x14) == 0) { + if (param_2 == *(int *)(param_1 + 0x10)) { + *(undefined4 *)(param_1 + 0x10) = 0; + } + else if (param_2 == *(int *)(*(int *)(param_2 + 0x1c) + 0x14)) { + *(undefined4 *)(*(int *)(param_2 + 0x1c) + 0x14) = 0; + } + else { + *(undefined4 *)(*(int *)(param_2 + 0x1c) + 0x18) = 0; + } + } + else if (param_2 == *(int *)(param_1 + 0x10)) { + *(undefined4 *)(param_1 + 0x10) = *(undefined4 *)(param_2 + 0x14); + *(undefined4 *)(*(int *)(param_2 + 0x14) + 0x1c) = 0; + } + else { + if (param_2 == *(int *)(*(int *)(param_2 + 0x1c) + 0x14)) { + *(undefined4 *)(*(int *)(param_2 + 0x1c) + 0x14) = *(undefined4 *)(param_2 + 0x14); + } + else { + *(undefined4 *)(*(int *)(param_2 + 0x1c) + 0x18) = *(undefined4 *)(param_2 + 0x14); + } + *(undefined4 *)(*(int *)(param_2 + 0x14) + 0x1c) = *(undefined4 *)(param_2 + 0x1c); + } + } + else if (*(int *)(param_2 + 0x14) == 0) { + if (param_2 == *(int *)(param_1 + 0x10)) { + *(undefined4 *)(param_1 + 0x10) = *(undefined4 *)(param_2 + 0x18); + *(undefined4 *)(*(int *)(param_2 + 0x18) + 0x1c) = 0; + } + else { + if (param_2 == *(int *)(*(int *)(param_2 + 0x1c) + 0x14)) { + *(undefined4 *)(*(int *)(param_2 + 0x1c) + 0x14) = *(undefined4 *)(param_2 + 0x18); + } + else { + *(undefined4 *)(*(int *)(param_2 + 0x1c) + 0x18) = *(undefined4 *)(param_2 + 0x18); + } + *(undefined4 *)(*(int *)(param_2 + 0x18) + 0x1c) = *(undefined4 *)(param_2 + 0x1c); + } + } + else { + iVar1 = *(int *)(param_2 + 0x18); + do { + iVar2 = iVar1; + iVar1 = *(int *)(iVar2 + 0x14); + } while (*(int *)(iVar2 + 0x14) != 0); + if (iVar2 == *(int *)(*(int *)(iVar2 + 0x1c) + 0x14)) { + *(undefined4 *)(*(int *)(iVar2 + 0x1c) + 0x14) = *(undefined4 *)(iVar2 + 0x18); + } + else { + *(undefined4 *)(*(int *)(iVar2 + 0x1c) + 0x18) = *(undefined4 *)(iVar2 + 0x18); + } + if (*(int *)(iVar2 + 0x18) != 0) { + *(undefined4 *)(*(int *)(iVar2 + 0x18) + 0x1c) = *(undefined4 *)(iVar2 + 0x1c); + } + *(undefined4 *)(iVar2 + 0x1c) = *(undefined4 *)(param_2 + 0x1c); + *(undefined4 *)(iVar2 + 0x14) = *(undefined4 *)(param_2 + 0x14); + *(undefined4 *)(iVar2 + 0x18) = *(undefined4 *)(param_2 + 0x18); + if (param_2 == *(int *)(param_1 + 0x10)) { + *(int *)(param_1 + 0x10) = iVar2; + } + else if (param_2 == *(int *)(*(int *)(iVar2 + 0x1c) + 0x14)) { + *(int *)(*(int *)(iVar2 + 0x1c) + 0x14) = iVar2; + } + else { + *(int *)(*(int *)(iVar2 + 0x1c) + 0x18) = iVar2; + } + if (*(int *)(iVar2 + 0x18) != 0) { + *(int *)(*(int *)(iVar2 + 0x18) + 0x1c) = iVar2; + } + if (*(int *)(iVar2 + 0x14) != 0) { + *(int *)(*(int *)(iVar2 + 0x14) + 0x1c) = iVar2; + } + } + return; +} + + + +/* @00418ef4 file=? name=FUN_00418ef4 */ + +int __cdecl FUN_00418ef4(int *param_1,undefined4 param_2) + +{ + int iVar1; + int iVar2; + + iVar1 = param_1[4]; + while ((iVar1 != 0 && (iVar2 = (**(code **)(*param_1 + 0x18))(param_1,param_2,iVar1), iVar2 != 0)) + ) { + if (iVar2 < 0) { + iVar1 = *(int *)(iVar1 + 0x14); + } + else { + iVar1 = *(int *)(iVar1 + 0x18); + } + } + return iVar1; +} + + + +/* @00418f34 file=? name=FUN_00418f34 */ + +int * __cdecl FUN_00418f34(int *param_1,int param_2) + +{ + FUN_004180fc(param_1,param_2); + *param_1 = (int)&PTR_FUN_004e2a20; + (**(code **)(*param_1 + 4))(param_1); + return param_1; +} + + + +/* @00418f5c file=? name=FUN_00418f5c */ + +void __cdecl FUN_00418f5c(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e2a20; + FUN_0041811c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00418f88 file=? name=FUN_00418f88 */ + +undefined4 FUN_00418f88(void) + +{ + FUN_00418034(); + return 1; +} + + + +/* @00418fa4 file=? name=FUN_00418fa4 */ + +void __cdecl FUN_00418fa4(int param_1) + +{ + int iVar1; + int iVar2; + int iVar3; + + iVar1 = *(int *)(*(int *)(param_1 + 4) + 0x10); + iVar3 = iVar1; + while (iVar2 = iVar1, iVar2 != 0) { + iVar3 = iVar2; + iVar1 = *(int *)(iVar2 + 0x14); + } + *(int *)(param_1 + 0x10) = iVar3; + return; +} + + + +/* @00418fc4 file=? name=FUN_00418fc4 */ + +void FUN_00418fc4(void) + +{ + return; +} + + + +/* @00418fcc file=? name=FUN_00418fcc */ + +void __cdecl FUN_00418fcc(int param_1) + +{ + int iVar1; + int iVar2; + + iVar2 = *(int *)(param_1 + 0x10); + if (iVar2 != 0) { + iVar1 = *(int *)(iVar2 + 0x18); + if (*(int *)(iVar2 + 0x18) != 0) { + do { + iVar2 = iVar1; + iVar1 = *(int *)(iVar2 + 0x14); + } while (iVar1 != 0); + *(int *)(param_1 + 0x10) = iVar2; + return; + } + *(undefined4 *)(param_1 + 0x10) = 0; + for (; iVar1 = *(int *)(iVar2 + 0x1c), iVar1 != 0; iVar2 = *(int *)(iVar2 + 0x1c)) { + if (iVar2 == *(int *)(iVar1 + 0x14)) { + *(int *)(param_1 + 0x10) = iVar1; + return; + } + } + } + return; +} + + + +/* @00419010 file=? name=FUN_00419010 */ + +void FUN_00419010(void) + +{ + return; +} + + + +/* @00419018 file=? name=FUN_00419018 */ + +undefined4 __cdecl FUN_00419018(int param_1) + +{ + if (*(int *)(param_1 + 0x10) != 0) { + return *(undefined4 *)(*(int *)(param_1 + 0x10) + 8); + } + return 0; +} + + + +/* @00419030 file=? name=FUN_00419030 */ + +int __cdecl FUN_00419030(int param_1) + +{ + int iVar1; + int iVar2; + int local_18 [5]; + + FUN_00418f34(local_18,*(int *)(param_1 + 4)); + iVar2 = 0; + while( true ) { + iVar1 = (**(code **)(local_18[0] + 0x28))(local_18); + if (iVar1 == 0) break; + iVar2 = iVar2 + 1; + } + FUN_00418f5c(local_18,2); + return iVar2; +} + + + +/* @00419078 file=? name=FUN_00419078 */ + +void __cdecl FUN_00419078(int param_1) + +{ + undefined4 *puVar1; + + puVar1 = *(undefined4 **)(param_1 + 0x10); + if ((puVar1 != (undefined4 *)0x0) && (puVar1 != (undefined4 *)0x0)) { + (**(code **)*puVar1)(puVar1,3); + } + return; +} + + + +/* @00419098 file=? name=FUN_00419098 */ + +undefined4 __cdecl FUN_00419098(int param_1,undefined4 param_2) + +{ + int iVar1; + undefined4 uVar2; + + iVar1 = FUN_00418ef4(*(int **)(param_1 + 4),param_2); + if (iVar1 == 0) { + uVar2 = 0; + } + else { + *(int *)(param_1 + 0x10) = iVar1; + uVar2 = *(undefined4 *)(iVar1 + 8); + } + return uVar2; +} + + + +/* @004190c8 file=? name=FUN_004190c8 */ + +void __cdecl FUN_004190c8(int *param_1,int param_2,int param_3) + +{ + if ((param_2 == 1) && (param_3 == param_1[4])) { + (**(code **)(*param_1 + 0xc))(param_1); + } + return; +} + + + +/* @004190e8 file=? name=FUN_004190e8 */ + +undefined4 * __cdecl FUN_004190e8(undefined4 *param_1,undefined4 param_2,int param_3) + +{ + FUN_00415ddc(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004e2c08; + return param_1; +} + + + +/* @0041910c file=? name=FUN_0041910c */ + +void __cdecl FUN_0041910c(int *param_1,byte param_2) + +{ + int iVar1; + int *piVar2; + int local_8; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e2c08; + iVar1 = param_1[1]; + local_8 = FUN_0041942c(iVar1,(int)param_1); + FUN_00419450(iVar1,local_8); + FUN_00417f78(iVar1,1,&local_8); + FUN_00415e38((int)param_1); + piVar2 = *(int **)(iVar1 + 4); + if (piVar2 != (int *)0x0) { + (**(code **)(*piVar2 + 8))(piVar2,iVar1,param_1[2]); + } + FUN_00415e04(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00419184 file=? name=FUN_00419184 */ + +undefined4 * __cdecl FUN_00419184(undefined4 *param_1,undefined4 param_2,undefined4 param_3) + +{ + FUN_00418070(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004e2bec; + param_1[4] = 0; + param_1[5] = 0; + return param_1; +} + + + +/* @004191b4 file=? name=FUN_004191b4 */ + +void __cdecl FUN_004191b4(int *param_1,byte param_2) + +{ + undefined4 *puVar1; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e2bec; + param_1[1] = 0; + while (0 < param_1[5]) { + puVar1 = *(undefined4 **)param_1[4]; + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + } + FUN_00418098(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00419204 file=? name=FUN_00419204 */ + +undefined4 FUN_00419204(void) + +{ + FUN_00417f5c(); + return 1; +} + + + +/* @00419228 file=? name=FUN_00419228 */ + +void __cdecl FUN_00419228(int *param_1,undefined4 param_2) + +{ + (**(code **)(*param_1 + 8))(param_1,param_2,0); + return; +} + + + +/* @00419240 file=? name=FUN_00419240 */ + +void __cdecl FUN_00419240(int *param_1,undefined4 param_2,undefined4 param_3) + +{ + undefined4 uVar1; + + uVar1 = (**(code **)(*param_1 + 0x10))(param_1,param_2,param_3); + FUN_00419308((int)param_1,uVar1); + FUN_00419370(param_1); + FUN_00417f78((int)param_1,0,uVar1); + return; +} + + + +/* @0041927c file=? name=FUN_0041927c */ + +undefined4 __cdecl FUN_0041927c(int *param_1,undefined4 param_2) + +{ + uint uVar1; + undefined4 uVar2; + + uVar1 = FUN_004193d0(param_1,param_2); + if (uVar1 == 0xffffffff) { + uVar2 = 0; + } + else { + uVar2 = *(undefined4 *)(*(int *)(param_1[4] + uVar1 * 4) + 8); + } + return uVar2; +} + + + +/* @004192a8 file=munga/table.cpp name=FUN_004192a8 */ + +undefined4 FUN_004192a8(void) + +{ + FUN_0040385c(s_Table__MakeTableEntry___Should_n_004e2a9c,s_d__tesla_bt_munga_TABLE_CPP_004e2acc, + 0xde); + return 0; +} + + + +/* @004192c8 file=munga/table.cpp name=FUN_004192c8 */ + +undefined4 FUN_004192c8(void) + +{ + FUN_0040385c(s_Table__CompareTableEntries___Sho_004e2ae8,s_d__tesla_bt_munga_TABLE_CPP_004e2b1d, + 0xed); + return 0; +} + + + +/* @004192e8 file=munga/table.cpp name=FUN_004192e8 */ + +undefined4 FUN_004192e8(void) + +{ + FUN_0040385c(s_Table__CompareValueToTableEntry___004e2b39,s_d__tesla_bt_munga_TABLE_CPP_004e2b73, + 0xfc); + return 0; +} + + + +/* @00419308 file=? name=FUN_00419308 */ + +void __cdecl FUN_00419308(int param_1,undefined4 param_2) + +{ + undefined4 uVar1; + undefined4 *puVar2; + int iVar3; + + iVar3 = *(int *)(param_1 + 0x14) + 1; + if (*(int *)(param_1 + 0x10) == 0) { + uVar1 = FUN_004022b0(iVar3 * 4); + *(undefined4 *)(param_1 + 0x10) = uVar1; + } + else { + puVar2 = (undefined4 *)FUN_004022b0(iVar3 * 4); + FUN_004d4918(puVar2,*(undefined4 **)(param_1 + 0x10),*(int *)(param_1 + 0x14) << 2); + FUN_004022e8(*(int **)(param_1 + 0x10)); + *(undefined4 **)(param_1 + 0x10) = puVar2; + } + *(int *)(param_1 + 0x14) = iVar3; + *(undefined4 *)(*(int *)(param_1 + 0x10) + -4 + iVar3 * 4) = param_2; + return; +} + + + +/* @00419370 file=? name=FUN_00419370 */ + +void __cdecl FUN_00419370(int *param_1) + +{ + undefined4 uVar1; + int iVar2; + uint uVar3; + uint local_8; + + local_8 = 1; + do { + if ((uint)param_1[5] <= local_8) { + return; + } + uVar1 = *(undefined4 *)(param_1[4] + local_8 * 4); + uVar3 = local_8; + do { + iVar2 = (**(code **)(*param_1 + 0x14)) + (param_1,*(undefined4 *)(param_1[4] + -4 + uVar3 * 4),uVar1); + if (iVar2 < 1) break; + *(undefined4 *)(param_1[4] + uVar3 * 4) = *(undefined4 *)(param_1[4] + -4 + uVar3 * 4); + uVar3 = uVar3 - 1; + } while (uVar3 != 0); + *(undefined4 *)(param_1[4] + uVar3 * 4) = uVar1; + local_8 = local_8 + 1; + } while( true ); +} + + + +/* @004193d0 file=? name=FUN_004193d0 */ + +uint __cdecl FUN_004193d0(int *param_1,undefined4 param_2) + +{ + int iVar1; + uint uVar2; + uint uVar3; + uint uVar4; + + uVar3 = 0; + uVar4 = param_1[5]; + if (param_1[5] != 0) { + do { + uVar2 = (uVar4 + uVar3) - 1 >> 1; + iVar1 = (**(code **)(*param_1 + 0x18)) + (param_1,param_2,*(undefined4 *)(param_1[4] + uVar2 * 4)); + if (iVar1 == 0) { + return uVar2; + } + if (-1 < iVar1) { + uVar3 = uVar2 + 1; + uVar2 = uVar4; + } + uVar4 = uVar2; + } while (uVar3 < uVar2); + } + return 0xffffffff; +} + + + +/* @0041942c file=? name=FUN_0041942c */ + +int __cdecl FUN_0041942c(int param_1,int param_2) + +{ + int iVar1; + int *piVar2; + + iVar1 = 0; + piVar2 = *(int **)(param_1 + 0x10); + while( true ) { + if (*(int *)(param_1 + 0x14) <= iVar1) { + return -1; + } + if (param_2 == *piVar2) break; + iVar1 = iVar1 + 1; + piVar2 = piVar2 + 1; + } + return iVar1; +} + + + +/* @00419450 file=? name=FUN_00419450 */ + +void __cdecl FUN_00419450(int param_1,int param_2) + +{ + undefined4 *puVar1; + undefined4 *puVar2; + int iVar3; + + puVar2 = (undefined4 *)((*(int *)(param_1 + 0x14) + -1) * 4 + *(int *)(param_1 + 0x10)); + puVar1 = (undefined4 *)(param_2 * 4 + *(int *)(param_1 + 0x10)); + if (puVar1 < puVar2) { + FUN_004d493c(puVar1,puVar1 + 1,(int)puVar2 - (int)puVar1); + } + iVar3 = *(int *)(param_1 + 0x14) + -1; + if (iVar3 == 0) { + FUN_004022e8(*(int **)(param_1 + 0x10)); + *(undefined4 *)(param_1 + 0x10) = 0; + } + else { + puVar1 = (undefined4 *)FUN_004022b0(iVar3 * 4); + FUN_004d4918(puVar1,*(undefined4 **)(param_1 + 0x10),iVar3 * 4); + FUN_004022e8(*(int **)(param_1 + 0x10)); + *(undefined4 **)(param_1 + 0x10) = puVar1; + } + *(int *)(param_1 + 0x14) = iVar3; + return; +} + + + +/* @004194d8 file=? name=FUN_004194d8 */ + +undefined4 * __cdecl FUN_004194d8(undefined4 *param_1,int param_2) + +{ + FUN_004180fc(param_1,param_2); + *param_1 = &PTR_FUN_004e2b90; + param_1[4] = *(undefined4 *)(param_2 + 0x10); + param_1[5] = *(undefined4 *)(param_2 + 0x14); + if (param_1[4] == 0) { + param_1[6] = 0xffffffff; + } + else { + param_1[6] = 0; + } + return param_1; +} + + + +/* @0041951c file=? name=FUN_0041951c */ + +void __cdecl FUN_0041951c(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e2b90; + FUN_0041811c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00419548 file=? name=FUN_00419548 */ + +undefined4 FUN_00419548(void) + +{ + FUN_00418034(); + return 1; +} + + + +/* @00419564 file=? name=FUN_00419564 */ + +void __cdecl FUN_00419564(int param_1) + +{ + if (*(int *)(param_1 + 0x10) != 0) { + *(undefined4 *)(param_1 + 0x18) = 0; + } + return; +} + + + +/* @00419578 file=? name=FUN_00419578 */ + +void __cdecl FUN_00419578(int param_1) + +{ + if (*(int *)(param_1 + 0x10) != 0) { + *(int *)(param_1 + 0x18) = *(int *)(param_1 + 0x14) + -1; + } + return; +} + + + +/* @00419590 file=? name=FUN_00419590 */ + +void __cdecl FUN_00419590(int param_1) + +{ + *(int *)(param_1 + 0x18) = *(int *)(param_1 + 0x18) + 1; + if (*(int *)(param_1 + 0x14) <= *(int *)(param_1 + 0x18)) { + *(undefined4 *)(param_1 + 0x18) = 0xffffffff; + } + return; +} + + + +/* @004195ac file=? name=FUN_004195ac */ + +void __cdecl FUN_004195ac(int param_1) + +{ + int *piVar1; + + piVar1 = (int *)(param_1 + 0x18); + *piVar1 = *piVar1 + -1; + if (*piVar1 < 0) { + *(undefined4 *)(param_1 + 0x18) = 0xffffffff; + } + return; +} + + + +/* @004195c0 file=? name=FUN_004195c0 */ + +undefined4 __cdecl FUN_004195c0(int param_1) + +{ + undefined4 uVar1; + + if (*(int *)(param_1 + 0x18) != -1) { + uVar1 = *(undefined4 *)(*(int *)(*(int *)(param_1 + 0x10) + *(int *)(param_1 + 0x18) * 4) + 8); + *(int *)(param_1 + 0x18) = *(int *)(param_1 + 0x18) + 1; + if (*(int *)(param_1 + 0x14) <= *(int *)(param_1 + 0x18)) { + *(undefined4 *)(param_1 + 0x18) = 0xffffffff; + } + return uVar1; + } + return 0; +} + + + +/* @004195f4 file=? name=FUN_004195f4 */ + +undefined4 __cdecl FUN_004195f4(int param_1) + +{ + int *piVar1; + undefined4 uVar2; + + if (*(int *)(param_1 + 0x18) != -1) { + uVar2 = *(undefined4 *)(*(int *)(*(int *)(param_1 + 0x10) + *(int *)(param_1 + 0x18) * 4) + 8); + piVar1 = (int *)(param_1 + 0x18); + *piVar1 = *piVar1 + -1; + if (*piVar1 < 0) { + *(undefined4 *)(param_1 + 0x18) = 0xffffffff; + } + return uVar2; + } + return 0; +} + + + +/* @00419620 file=? name=FUN_00419620 */ + +undefined4 __cdecl FUN_00419620(int param_1) + +{ + if (*(int *)(param_1 + 0x18) != -1) { + return *(undefined4 *)(*(int *)(*(int *)(param_1 + 0x10) + *(int *)(param_1 + 0x18) * 4) + 8); + } + return 0; +} + + + +/* @00419640 file=? name=FUN_00419640 */ + +undefined4 __cdecl FUN_00419640(int param_1) + +{ + return *(undefined4 *)(param_1 + 0x14); +} + + + +/* @0041964c file=? name=FUN_0041964c */ + +undefined4 __cdecl FUN_0041964c(int param_1,int param_2) + +{ + if (param_2 < *(int *)(param_1 + 0x14)) { + *(int *)(param_1 + 0x18) = param_2; + return *(undefined4 *)(*(int *)(*(int *)(param_1 + 0x10) + param_2 * 4) + 8); + } + return 0; +} + + + +/* @00419674 file=? name=FUN_00419674 */ + +void __cdecl FUN_00419674(int param_1) + +{ + undefined4 *puVar1; + + if ((*(int *)(param_1 + 0x18) != -1) && + (puVar1 = *(undefined4 **)(*(int *)(param_1 + 0x10) + *(int *)(param_1 + 0x18) * 4), + puVar1 != (undefined4 *)0x0)) { + (**(code **)*puVar1)(puVar1,3); + } + return; +} + + + +/* @00419698 file=? name=FUN_00419698 */ + +undefined4 __cdecl FUN_00419698(int param_1,undefined4 param_2) + +{ + int *piVar1; + uint uVar2; + int iVar3; + undefined4 uVar4; + + piVar1 = *(int **)(param_1 + 4); + uVar2 = FUN_004193d0(piVar1,param_2); + if (uVar2 == 0xffffffff) { + *(undefined4 *)(param_1 + 0x18) = 0xffffffff; + uVar4 = 0; + } + else { + if (piVar1[3] == 0) { + while ((-1 < (int)(uVar2 - 1) && + (iVar3 = (**(code **)(*piVar1 + 0x14)) + (piVar1,*(undefined4 *)(*(int *)(param_1 + 0x10) + -4 + uVar2 * 4), + *(undefined4 *)(*(int *)(param_1 + 0x10) + uVar2 * 4)), iVar3 == 0) + )) { + uVar2 = uVar2 - 1; + } + } + *(uint *)(param_1 + 0x18) = uVar2; + uVar4 = *(undefined4 *)(*(int *)(*(int *)(param_1 + 0x10) + uVar2 * 4) + 8); + } + return uVar4; +} + + + +/* @00419704 file=? name=FUN_00419704 */ + +void __cdecl FUN_00419704(int param_1,int param_2,int *param_3) + +{ + int iVar1; + + if (param_2 == 0) { + iVar1 = *(int *)(param_1 + 4); + *(undefined4 *)(param_1 + 0x10) = *(undefined4 *)(iVar1 + 0x10); + *(undefined4 *)(param_1 + 0x14) = *(undefined4 *)(iVar1 + 0x14); + iVar1 = FUN_0041942c(iVar1,(int)param_3); + if (iVar1 <= *(int *)(param_1 + 0x18)) { + *(int *)(param_1 + 0x18) = *(int *)(param_1 + 0x18) + 1; + return; + } + } + else { + if (param_2 != 1) { + return; + } + *(undefined4 *)(param_1 + 0x10) = *(undefined4 *)(*(int *)(param_1 + 4) + 0x10); + *(undefined4 *)(param_1 + 0x14) = *(undefined4 *)(*(int *)(param_1 + 4) + 0x14); + if (*param_3 < *(int *)(param_1 + 0x18)) { + *(int *)(param_1 + 0x18) = *(int *)(param_1 + 0x18) + -1; + } + else if (*(int *)(param_1 + 0x14) <= *(int *)(param_1 + 0x18)) { + *(int *)(param_1 + 0x18) = *(int *)(param_1 + 0x18) + -1; + } + } + return; +} + + + +/* @00419774 file=? name=FUN_00419774 */ + +undefined4 * __cdecl +FUN_00419774(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) + +{ + FUN_00418070(param_1,param_3,param_4); + *param_1 = &PTR_FUN_004e2cf8; + param_1[5] = param_2; + FUN_004197a4((int)param_1); + return param_1; +} + + + +/* @004197a4 file=? name=FUN_004197a4 */ + +void __cdecl FUN_004197a4(int param_1) + +{ + undefined4 uVar1; + int iVar2; + + uVar1 = FUN_004022b0(*(int *)(param_1 + 0x14) << 2); + *(undefined4 *)(param_1 + 0x10) = uVar1; + for (iVar2 = 0; iVar2 < *(int *)(param_1 + 0x14); iVar2 = iVar2 + 1) { + *(undefined4 *)(*(int *)(param_1 + 0x10) + iVar2 * 4) = 0; + } + return; +} + + + +/* @004197d4 file=? name=FUN_004197d4 */ + +void __cdecl FUN_004197d4(int *param_1,byte param_2) + +{ + undefined4 *puVar1; + int iVar2; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e2cf8; + for (iVar2 = 0; iVar2 < param_1[5]; iVar2 = iVar2 + 1) { + puVar1 = *(undefined4 **)(param_1[4] + iVar2 * 4); + if ((puVar1 != (undefined4 *)0x0) && (puVar1 != (undefined4 *)0x0)) { + (**(code **)*puVar1)(puVar1,3); + } + } + FUN_004022e8((int *)param_1[4]); + param_1[4] = 0; + param_1[5] = 0; + FUN_00418098(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00419840 file=? name=FUN_00419840 */ + +undefined4 FUN_00419840(void) + +{ + FUN_00417f5c(); + return 1; +} + + + +/* @00419854 file=? name=FUN_00419854 */ + +void __cdecl FUN_00419854(int *param_1,undefined4 param_2) + +{ + (**(code **)(*param_1 + 8))(param_1,param_2,0); + return; +} + + + +/* @0041986c file=? name=FUN_0041986c */ + +void __cdecl FUN_0041986c(int *param_1,undefined4 param_2,undefined4 param_3) + +{ + int iVar1; + int *piVar2; + + iVar1 = (**(code **)(*param_1 + 0x14))(param_1,param_3); + piVar2 = *(int **)(param_1[4] + iVar1 * 4); + if (piVar2 == (int *)0x0) { + piVar2 = (int *)(**(code **)(*param_1 + 0x10))(param_1); + *(int **)(param_1[4] + iVar1 * 4) = piVar2; + } + (**(code **)(*piVar2 + 8))(piVar2,param_2,param_3); + return; +} + + + +/* @004198b0 file=? name=FUN_004198b0 */ + +undefined4 __cdecl FUN_004198b0(int *param_1,undefined4 param_2) + +{ + int *piVar1; + int iVar2; + undefined4 uVar3; + + iVar2 = (**(code **)(*param_1 + 0x14))(param_1,param_2); + piVar1 = *(int **)(param_1[4] + iVar2 * 4); + if (piVar1 == (int *)0x0) { + uVar3 = 0; + } + else { + uVar3 = (**(code **)(*piVar1 + 0xc))(piVar1,param_2); + } + return uVar3; +} + + + +/* @004198e8 file=munga/hash.cpp name=FUN_004198e8 */ + +undefined4 FUN_004198e8(void) + +{ + FUN_0040385c(s_Hash__MakeVChain___Should_never_r_004e2c0c,s_d__tesla_bt_munga_HASH_CPP_004e2c37, + 0xe3); + return 0; +} + + + +/* @00419908 file=munga/hash.cpp name=FUN_00419908 */ + +undefined4 FUN_00419908(void) + +{ + FUN_0040385c(s_Hash__GetHashIndex___Should_neve_004e2c52,s_d__tesla_bt_munga_HASH_CPP_004e2c7f, + 0xef); + return 0; +} + + + +/* @00419928 file=? name=FUN_00419928 */ + +int * __cdecl FUN_00419928(int *param_1,int param_2) + +{ + FUN_004180fc(param_1,param_2); + *param_1 = (int)&PTR_FUN_004e2c9c; + param_1[4] = *(int *)(param_2 + 0x10); + param_1[5] = *(int *)(param_2 + 0x14); + param_1[6] = -1; + param_1[7] = 0; + (**(code **)(*param_1 + 4))(param_1); + return param_1; +} + + + +/* @00419968 file=? name=FUN_00419968 */ + +void __cdecl FUN_00419968(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e2c9c; + param_1[4] = 0; + param_1[5] = 0; + param_1[6] = -1; + FUN_00419b1c((int)param_1); + FUN_0041811c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004199ac file=? name=FUN_004199ac */ + +undefined4 FUN_004199ac(void) + +{ + FUN_00418034(); + return 1; +} + + + +/* @004199c8 file=? name=FUN_004199c8 */ + +void __cdecl FUN_004199c8(int param_1) + +{ + FUN_00419b40(param_1,0); + return; +} + + + +/* @004199dc file=? name=FUN_004199dc */ + +void FUN_004199dc(void) + +{ + return; +} + + + +/* @004199e4 file=? name=FUN_004199e4 */ + +void __cdecl FUN_004199e4(int param_1) + +{ + int *piVar1; + int iVar2; + + piVar1 = *(int **)(param_1 + 0x1c); + if (piVar1 != (int *)0x0) { + iVar2 = (**(code **)(*piVar1 + 0x30))(piVar1); + if (iVar2 != 0) { + (**(code **)(**(int **)(param_1 + 0x1c) + 0xc))(*(int **)(param_1 + 0x1c)); + } + iVar2 = (**(code **)(**(int **)(param_1 + 0x1c) + 0x30))(*(int **)(param_1 + 0x1c)); + if (iVar2 == 0) { + FUN_00419b40(param_1,*(int *)(param_1 + 0x18) + 1); + } + } + return; +} + + + +/* @00419a28 file=? name=FUN_00419a28 */ + +void FUN_00419a28(void) + +{ + return; +} + + + +/* @00419a30 file=? name=FUN_00419a30 */ + +undefined4 __cdecl FUN_00419a30(int param_1) + +{ + int *piVar1; + int iVar2; + undefined4 uVar3; + + piVar1 = *(int **)(param_1 + 0x1c); + if (piVar1 != (int *)0x0) { + iVar2 = (**(code **)(*piVar1 + 0x30))(piVar1); + if (iVar2 != 0) { + uVar3 = (**(code **)(**(int **)(param_1 + 0x1c) + 0x30))(*(int **)(param_1 + 0x1c)); + return uVar3; + } + FUN_00419b40(param_1,*(int *)(param_1 + 0x18) + 1); + piVar1 = *(int **)(param_1 + 0x1c); + if (piVar1 != (int *)0x0) { + uVar3 = (**(code **)(*piVar1 + 0x30))(piVar1); + return uVar3; + } + } + return 0; +} + + + +/* @00419a7c file=? name=FUN_00419a7c */ + +int __cdecl FUN_00419a7c(int param_1) + +{ + int iVar1; + int iVar2; + int local_24 [8]; + + FUN_00419928(local_24,*(int *)(param_1 + 4)); + iVar2 = 0; + while( true ) { + iVar1 = (**(code **)(local_24[0] + 0x28))(local_24); + if (iVar1 == 0) break; + iVar2 = iVar2 + 1; + } + FUN_00419968(local_24,2); + return iVar2; +} + + + +/* @00419ac4 file=? name=FUN_00419ac4 */ + +void __cdecl FUN_00419ac4(int param_1) + +{ + int *piVar1; + int iVar2; + + piVar1 = *(int **)(param_1 + 0x1c); + if (piVar1 != (int *)0x0) { + iVar2 = (**(code **)(*piVar1 + 0x30))(piVar1); + if (iVar2 != 0) { + (**(code **)(**(int **)(param_1 + 0x1c) + 0x48))(*(int **)(param_1 + 0x1c)); + return; + } + FUN_00419b40(param_1,*(int *)(param_1 + 0x18) + 1); + piVar1 = *(int **)(param_1 + 0x1c); + if (piVar1 != (int *)0x0) { + (**(code **)(*piVar1 + 0x48))(piVar1); + } + } + return; +} + + + +/* @00419b0c file=? name=FUN_00419b0c */ + +undefined4 FUN_00419b0c(void) + +{ + return 0; +} + + + +/* @00419b14 file=? name=FUN_00419b14 */ + +void FUN_00419b14(void) + +{ + return; +} + + + +/* @00419b1c file=? name=FUN_00419b1c */ + +void __cdecl FUN_00419b1c(int param_1) + +{ + undefined4 *puVar1; + + puVar1 = *(undefined4 **)(param_1 + 0x1c); + if (puVar1 != (undefined4 *)0x0) { + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + *(undefined4 *)(param_1 + 0x1c) = 0; + } + return; +} + + + +/* @00419b40 file=? name=FUN_00419b40 */ + +void __cdecl FUN_00419b40(int param_1,int param_2) + +{ + undefined4 *puVar1; + int iVar2; + + FUN_00419b1c(param_1); + *(undefined4 *)(param_1 + 0x18) = 0xffffffff; + do { + if (*(int *)(param_1 + 0x14) <= param_2) { + return; + } + if (*(int *)(*(int *)(param_1 + 0x10) + param_2 * 4) != 0) { + puVar1 = (undefined4 *)FUN_00402298(0x14); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_004188dc(puVar1,*(int *)(*(int *)(param_1 + 0x10) + param_2 * 4)); + } + *(undefined4 **)(param_1 + 0x1c) = puVar1; + iVar2 = (**(code **)(**(int **)(param_1 + 0x1c) + 0x30))(*(int **)(param_1 + 0x1c)); + if (iVar2 != 0) { + *(int *)(param_1 + 0x18) = param_2; + return; + } + FUN_00419b1c(param_1); + } + param_2 = param_2 + 1; + } while( true ); +} + + + +/* @00419bbc file=? name=FUN_00419bbc */ + +void __cdecl FUN_00419bbc(int param_1,int param_2) + +{ + int iVar1; + undefined4 *puVar2; + int local_14 [3]; + int *local_8; + + FUN_0041a434(local_14,**(int **)(param_1 + 0xc) + 0x10); + while( true ) { + iVar1 = (**(code **)(local_14[0] + 0x28))(local_14); + if (iVar1 == 0) break; + FUN_00419f28(iVar1,param_1,param_2); + } + local_8 = *(int **)(*(int *)(param_1 + 0xc) + 4); + if (*local_8 < *(int *)(param_2 + 4)) { + puVar2 = &DAT_004e2d10; + } + else { + puVar2 = (undefined4 *)(local_8[1] + -0xc + *(int *)(param_2 + 4) * 0x14); + } + if ((((code *)*puVar2 != DAT_004e2d10) || (puVar2[1] != DAT_004e2d14)) || + (puVar2[2] != DAT_004e2d18)) { + (*(code *)*puVar2)(param_1,param_2); + } + FUN_0041a472(local_14,2); + return; +} + + + +/* @00419c90 file=? name=FUN_00419c90 */ + +void __cdecl FUN_00419c90(int param_1,undefined4 *param_2) + +{ + FUN_00419bbc(param_1,param_2[4]); + if (param_2 != (undefined4 *)0x0) { + (**(code **)*param_2)(param_2,3); + } + return; +} + + + +/* @00419cb8 file=? name=FUN_00419cb8 */ + +void __cdecl FUN_00419cb8(int param_1) + +{ + undefined4 *puVar1; + int local_14 [4]; + + FUN_0041a49e(local_14,param_1,0xffffffff); + while( true ) { + puVar1 = (undefined4 *)(**(code **)(local_14[0] + 0x28))(local_14); + if (puVar1 == (undefined4 *)0x0) break; + if ((puVar1[1] == 9) && (puVar1 != (undefined4 *)0x0)) { + (**(code **)*puVar1)(puVar1,3); + } + } + FUN_0041a503(local_14,2); + return; +} + + + +/* @00419d10 file=? name=FUN_00419d10 */ + +void __cdecl FUN_00419d10(int param_1,int param_2) + +{ + undefined4 *puVar1; + int local_14 [4]; + + FUN_0041a49e(local_14,param_1,0xffffffff); + while( true ) { + puVar1 = (undefined4 *)(**(code **)(local_14[0] + 0x28))(local_14); + if (puVar1 == (undefined4 *)0x0) break; + if ((puVar1[1] == 9) && + (((param_2 == 0 || (param_2 == *(int *)(puVar1[4] + 4))) && (puVar1 != (undefined4 *)0x0)))) + { + (**(code **)*puVar1)(puVar1,3); + } + } + FUN_0041a503(local_14,2); + return; +} + + + +/* @00419d78 file=? name=FUN_00419d78 */ + +void __cdecl FUN_00419d78(int param_1) + +{ + undefined4 *puVar1; + int local_14 [4]; + + FUN_0041a52f(local_14,param_1,0xffffffff); + do { + puVar1 = (undefined4 *)(**(code **)(local_14[0] + 0x28))(local_14); + if (puVar1 == (undefined4 *)0x0) break; + } while (puVar1[1] != 0xd); + if (puVar1 == (undefined4 *)0x0) { + FUN_0041a594(local_14,2); + } + else { + FUN_0041b0a8(puVar1[3],0); + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + FUN_0041a594(local_14,2); + } + return; +} + + + +/* @00419df0 file=? name=FUN_00419df0 */ + +void __cdecl FUN_00419df0(int param_1) + +{ + FUN_0041a1a4(**(int **)(param_1 + 0xc),0x4e2d24); + return; +} + + + +/* @00419e0c file=? name=FUN_00419e0c */ + +undefined4 FUN_00419e0c(void) + +{ + return 1; +} + + + +/* @00419e18 file=? name=FUN_00419e18 */ + +int * __cdecl FUN_00419e18(int *param_1,undefined4 param_2,undefined4 param_3) + +{ + undefined4 local_10; + undefined4 local_c; + undefined4 local_8; + + FUN_0040328c(param_1,0); + *param_1 = (int)&PTR_FUN_004e2f80; + local_10 = param_3; + local_c = param_2; + local_8 = 1; + (**(code **)(*param_1 + 0x20))(param_1,&local_10,param_3); + return param_1; +} + + + +/* @00419e60 file=? name=FUN_00419e60 */ + +int * __cdecl FUN_00419e60(int *param_1,undefined4 *param_2,uint param_3) + +{ + FUN_004033d0(param_1,param_2,param_3); + *(int *)param_1[1] = param_1[2] - param_1[1]; + return param_1; +} + + + +/* @00419e8c file=? name=FUN_00419e8c */ + +undefined4 * __cdecl +FUN_00419e8c(undefined4 *param_1,int param_2,undefined4 param_3,undefined4 param_4, + undefined4 param_5,undefined4 param_6) + +{ + FUN_00415e90(param_1,6); + *param_1 = &PTR_FUN_004e2f7c; + param_1[6] = param_3; + param_1[3] = param_4; + param_1[4] = param_5; + param_1[5] = param_6; + param_1[7] = 0; + param_1[8] = 0; + FUN_0041a144(param_2,param_1); + return param_1; +} + + + +/* @00419ed8 file=? name=FUN_00419ed8 */ + +undefined4 * __cdecl +FUN_00419ed8(undefined4 *param_1,int param_2,undefined4 param_3,undefined4 param_4, + undefined4 param_5,undefined4 param_6,undefined4 param_7,undefined4 param_8) + +{ + FUN_00415e90(param_1,6); + *param_1 = &PTR_FUN_004e2f7c; + param_1[6] = param_3; + param_1[3] = param_4; + param_1[4] = param_5; + param_1[5] = param_6; + param_1[7] = param_8; + param_1[8] = param_7; + FUN_0041a144(param_2,param_1); + return param_1; +} + + + +/* @00419f28 file=? name=FUN_00419f28 */ + +void __cdecl FUN_00419f28(int param_1,int param_2,int param_3) + +{ + if (((*(int *)(param_1 + 0x1c) == 0) || (param_2 == *(int *)(param_1 + 0x1c))) && + ((*(int *)(param_1 + 0x20) == 0 || (*(int *)(param_1 + 0x20) == *(int *)(param_3 + 4))))) { + (**(code **)(param_1 + 0xc))(*(undefined4 *)(param_1 + 0x18),param_3,param_2); + } + return; +} + + + +/* @00419f5c file=? name=FUN_00419f5c */ + +undefined4 FUN_00419f5c(void) + +{ + return 1; +} + + + +/* @00419f68 file=? name=FUN_00419f68 */ + +undefined4 FUN_00419f68(void) + +{ + return 1; +} + + + +/* @00419f74 file=? name=FUN_00419f74 */ + +void __cdecl FUN_00419f74(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + if ((int *)param_1[1] != (int *)0x0) { + FUN_004022e8((int *)param_1[1]); + } + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00419fa0 file=? name=FUN_00419fa0 */ + +void __cdecl FUN_00419fa0(int *param_1,int param_2,int *param_3,int *param_4) + +{ + int iVar1; + int iVar2; + int *piVar3; + undefined4 *puVar4; + undefined4 *puVar5; + int *piVar6; + + *param_1 = 0; + iVar1 = 0; + piVar3 = param_3; + if (0 < param_2) { + do { + if (*param_1 < *piVar3) { + *param_1 = *piVar3; + } + iVar1 = iVar1 + 1; + piVar3 = piVar3 + 5; + } while (iVar1 < param_2); + } + if ((param_4 != (int *)0x0) && (*param_1 < *param_4)) { + *param_1 = *param_4; + } + iVar1 = FUN_004022b0(*param_1 * 0x14); + param_1[1] = iVar1; + iVar1 = 0; + if (param_4 != (int *)0x0) { + for (; iVar1 < *param_4; iVar1 = iVar1 + 1) { + puVar4 = (undefined4 *)(param_4[1] + iVar1 * 0x14); + puVar5 = (undefined4 *)(param_1[1] + iVar1 * 0x14); + for (iVar2 = 5; iVar2 != 0; iVar2 = iVar2 + -1) { + *puVar5 = *puVar4; + puVar4 = puVar4 + 1; + puVar5 = puVar5 + 1; + } + } + } + iVar1 = 0; + if (0 < param_2) { + do { + piVar3 = param_3; + piVar6 = (int *)(param_1[1] + (*param_3 + -1) * 0x14); + for (iVar2 = 5; iVar2 != 0; iVar2 = iVar2 + -1) { + *piVar6 = *piVar3; + piVar3 = piVar3 + 1; + piVar6 = piVar6 + 1; + } + iVar1 = iVar1 + 1; + param_3 = param_3 + 5; + } while (iVar1 < param_2); + } + return; +} + + + +/* @0041a058 file=? name=FUN_0041a058 */ + +int __cdecl FUN_0041a058(int *param_1,char *param_2) + +{ + char *pcVar1; + char *pcVar2; + char *pcVar3; + int iVar4; + bool bVar5; + + iVar4 = 0; + do { + if (*param_1 <= iVar4) { + return 0; + } + pcVar3 = *(char **)(param_1[1] + 4 + iVar4 * 0x14); + pcVar2 = param_2; + do { + if (*pcVar2 != *pcVar3) goto LAB_0041a0a1; + bVar5 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_0041a0a1; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar5 = *pcVar1 == '\0'; + } while (!bVar5); + if (bVar5) { + return iVar4 * 0x14 + param_1[1]; + } +LAB_0041a0a1: + iVar4 = iVar4 + 1; + } while( true ); +} + + + +/* @0041a0b0 file=? name=FUN_0041a0b0 */ + +undefined4 * __cdecl FUN_0041a0b0(undefined4 *param_1,undefined4 param_2) + +{ + FUN_004178cc(param_1,7); + *param_1 = &PTR_FUN_004e2f70; + FUN_0041a37f(param_1 + 4,param_1); + FUN_0041a3ca(param_1 + 8,param_1); + param_1[3] = param_2; + return param_1; +} + + + +/* @0041a0f0 file=? name=FUN_0041a0f0 */ + +undefined4 * __cdecl FUN_0041a0f0(undefined4 *param_1,int param_2,undefined4 param_3) + +{ + FUN_004178cc(param_1,7); + *param_1 = &PTR_FUN_004e2f70; + FUN_0041a37f(param_1 + 4,param_1); + FUN_0041a3ca(param_1 + 8,param_1); + param_1[3] = param_3; + (**(code **)(*(int *)(param_2 + 0x20) + 4))(param_2 + 0x20,param_1); + return param_1; +} + + + +/* @0041a144 file=? name=FUN_0041a144 */ + +void __cdecl FUN_0041a144(int param_1,undefined4 param_2) + +{ + int iVar1; + int local_10 [3]; + + (**(code **)(*(int *)(param_1 + 0x10) + 4))(param_1 + 0x10,param_2); + FUN_0041a5df(local_10,param_1 + 0x20); + while( true ) { + iVar1 = (**(code **)(local_10[0] + 0x28))(local_10); + if (iVar1 == 0) break; + FUN_0041a144(iVar1,param_2); + } + FUN_0041a61d(local_10,2); + return; +} + + + +/* @0041a1a4 file=? name=FUN_0041a1a4 */ + +undefined4 __cdecl FUN_0041a1a4(int param_1,int param_2) + +{ + undefined4 uVar1; + int iVar2; + int local_14 [4]; + + if (param_1 == param_2) { + uVar1 = 1; + } + else { + FUN_0041a649(local_14,param_1,0xffffffff); + do { + iVar2 = (**(code **)(local_14[0] + 0x28))(local_14); + if (iVar2 == 0) { + uVar1 = 0; + FUN_0041a6ae(local_14,2); + return uVar1; + } + } while (*(int *)(iVar2 + 4) != 7); + uVar1 = FUN_0041a1a4(iVar2,param_2); + FUN_0041a6ae(local_14,2); + } + return uVar1; +} + + + +/* @0041a21c file=? name=FUN_0041a21c */ + +undefined4 __cdecl FUN_0041a21c(int param_1,char *param_2) + +{ + char *pcVar1; + char *pcVar2; + undefined4 uVar3; + int iVar4; + char *pcVar5; + bool bVar6; + int local_14 [4]; + + pcVar2 = *(char **)(param_1 + 0xc); + pcVar5 = param_2; + do { + if (*pcVar2 != *pcVar5) goto LAB_0041a254; + bVar6 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar5[1]) goto LAB_0041a254; + pcVar2 = pcVar2 + 2; + pcVar5 = pcVar5 + 2; + bVar6 = *pcVar1 == '\0'; + } while (!bVar6); + if (bVar6) { + uVar3 = 1; + } + else { +LAB_0041a254: + FUN_0041a649(local_14,param_1,0xffffffff); + do { + iVar4 = (**(code **)(local_14[0] + 0x28))(local_14); + if (iVar4 == 0) { + uVar3 = 0; + FUN_0041a6ae(local_14,2); + return uVar3; + } + } while (*(int *)(iVar4 + 4) != 7); + uVar3 = FUN_0041a21c(iVar4,param_2); + FUN_0041a6ae(local_14,2); + } + return uVar3; +} + + + +/* @0041a2b4 file=? name=FUN_0041a2b4 */ + +undefined4 FUN_0041a2b4(void) + +{ + return 1; +} + + + +/* @0041a37f file=? name=FUN_0041a37f */ + +undefined4 * __cdecl FUN_0041a37f(undefined4 *param_1,undefined4 param_2) + +{ + FUN_00417be0(param_1,param_2); + *param_1 = &PTR_FUN_004e2f68; + return param_1; +} + + + +/* @0041a39e file=? name=FUN_0041a39e */ + +void __cdecl FUN_0041a39e(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e2f68; + FUN_00417c0c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0041a3ca file=? name=FUN_0041a3ca */ + +undefined4 * __cdecl FUN_0041a3ca(undefined4 *param_1,undefined4 param_2) + +{ + FUN_00417be0(param_1,param_2); + *param_1 = &PTR_FUN_004e2f60; + return param_1; +} + + + +/* @0041a3e9 file=? name=FUN_0041a3e9 */ + +void __cdecl FUN_0041a3e9(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e2f60; + FUN_00417c0c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0041a415 file=? name=FUN_0041a415 */ + +undefined4 * __cdecl FUN_0041a415(undefined4 *param_1,int param_2) + +{ + FUN_00417d00(param_1,param_2); + *param_1 = &PTR_FUN_004e2f10; + return param_1; +} + + + +/* @0041a434 file=? name=FUN_0041a434 */ + +undefined4 * __cdecl FUN_0041a434(undefined4 *param_1,int param_2) + +{ + FUN_00417d00(param_1,param_2); + *param_1 = &PTR_FUN_004e2f10; + return param_1; +} + + + +/* @0041a453 file=? name=FUN_0041a453 */ + +undefined4 * __cdecl FUN_0041a453(undefined4 *param_1,int param_2) + +{ + FUN_00417d28(param_1,param_2); + *param_1 = &PTR_FUN_004e2f10; + return param_1; +} + + + +/* @0041a472 file=? name=FUN_0041a472 */ + +void __cdecl FUN_0041a472(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e2f10; + FUN_00417d54(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0041a49e file=? name=FUN_0041a49e */ + +undefined4 * __cdecl FUN_0041a49e(undefined4 *param_1,int param_2,undefined4 param_3) + +{ + FUN_00415f30(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004e2ec8; + return param_1; +} + + + +/* @0041a4c1 file=? name=FUN_0041a4c1 */ + +undefined4 * __cdecl FUN_0041a4c1(undefined4 *param_1,int param_2,undefined4 param_3) + +{ + FUN_00415f30(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004e2ec8; + return param_1; +} + + + +/* @0041a4e4 file=? name=FUN_0041a4e4 */ + +undefined4 * __cdecl FUN_0041a4e4(undefined4 *param_1,int param_2) + +{ + FUN_00415f60(param_1,param_2); + *param_1 = &PTR_FUN_004e2ec8; + return param_1; +} + + + +/* @0041a503 file=? name=FUN_0041a503 */ + +void __cdecl FUN_0041a503(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e2ec8; + FUN_00415f90(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0041a52f file=? name=FUN_0041a52f */ + +undefined4 * __cdecl FUN_0041a52f(undefined4 *param_1,int param_2,undefined4 param_3) + +{ + FUN_00415f30(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004e2e80; + return param_1; +} + + + +/* @0041a552 file=? name=FUN_0041a552 */ + +undefined4 * __cdecl FUN_0041a552(undefined4 *param_1,int param_2,undefined4 param_3) + +{ + FUN_00415f30(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004e2e80; + return param_1; +} + + + +/* @0041a575 file=? name=FUN_0041a575 */ + +undefined4 * __cdecl FUN_0041a575(undefined4 *param_1,int param_2) + +{ + FUN_00415f60(param_1,param_2); + *param_1 = &PTR_FUN_004e2e80; + return param_1; +} + + + +/* @0041a594 file=? name=FUN_0041a594 */ + +void __cdecl FUN_0041a594(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e2e80; + FUN_00415f90(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0041a5c0 file=? name=FUN_0041a5c0 */ + +undefined4 * __cdecl FUN_0041a5c0(undefined4 *param_1,int param_2) + +{ + FUN_00417d00(param_1,param_2); + *param_1 = &PTR_FUN_004e2e30; + return param_1; +} + + + +/* @0041a5df file=? name=FUN_0041a5df */ + +undefined4 * __cdecl FUN_0041a5df(undefined4 *param_1,int param_2) + +{ + FUN_00417d00(param_1,param_2); + *param_1 = &PTR_FUN_004e2e30; + return param_1; +} + + + +/* @0041a5fe file=? name=FUN_0041a5fe */ + +undefined4 * __cdecl FUN_0041a5fe(undefined4 *param_1,int param_2) + +{ + FUN_00417d28(param_1,param_2); + *param_1 = &PTR_FUN_004e2e30; + return param_1; +} + + + +/* @0041a61d file=? name=FUN_0041a61d */ + +void __cdecl FUN_0041a61d(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e2e30; + FUN_00417d54(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0041a649 file=? name=FUN_0041a649 */ + +undefined4 * __cdecl FUN_0041a649(undefined4 *param_1,int param_2,undefined4 param_3) + +{ + FUN_00415f30(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004e2de8; + return param_1; +} + + + +/* @0041a66c file=? name=FUN_0041a66c */ + +undefined4 * __cdecl FUN_0041a66c(undefined4 *param_1,int param_2,undefined4 param_3) + +{ + FUN_00415f30(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004e2de8; + return param_1; +} + + + +/* @0041a68f file=? name=FUN_0041a68f */ + +undefined4 * __cdecl FUN_0041a68f(undefined4 *param_1,int param_2) + +{ + FUN_00415f60(param_1,param_2); + *param_1 = &PTR_FUN_004e2de8; + return param_1; +} + + + +/* @0041a6ae file=? name=FUN_0041a6ae */ + +void __cdecl FUN_0041a6ae(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e2de8; + FUN_00415f90(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0041a6da file=? name=FUN_0041a6da */ + +void __cdecl FUN_0041a6da(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + FUN_0041a3e9(param_1 + 8,2); + FUN_0041a39e(param_1 + 4,2); + FUN_0041790c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0041a71c file=? name=FUN_0041a71c */ + +void __cdecl FUN_0041a71c(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + FUN_00415ed8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_00402f98(0x4e2d84,param_1); + } + } + return; +} + + + +/* @0041a750 file=? name=FUN_0041a750 */ + +undefined4 * __cdecl +FUN_0041a750(undefined4 *param_1,uint *param_2,undefined4 param_3,undefined4 param_4) + +{ + undefined4 uVar1; + + FUN_004178cc(param_1,param_4); + *param_1 = &PTR_FUN_004e3268; + param_1[3] = param_3; + uVar1 = FUN_004022b0(*param_2 + 3 & 0xfffffffc); + param_1[4] = uVar1; + FUN_004d4918((undefined4 *)param_1[4],param_2,*param_2); + return param_1; +} + + + +/* @0041a7a4 file=? name=FUN_0041a7a4 */ + +void __cdecl FUN_0041a7a4(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e3268; + if ((int *)param_1[4] != (int *)0x0) { + FUN_004022d0((int *)param_1[4]); + } + FUN_0041790c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0041a7e0 file=munga/event.cpp name=FUN_0041a7e0 */ + +void FUN_0041a7e0(void) + +{ + FUN_0040385c(s_AbstractEvent__Process_should_no_004e2fcc,s_d__tesla_bt_munga_EVENT_CPP_004e2ffa, + 100); + return; +} + + + +/* @0041a7fc file=munga/event.cpp name=FUN_0041a7fc */ + +void FUN_0041a7fc(void) + +{ + FUN_0040385c(s_AbstractEvent__DumpData_should_n_004e3016,s_d__tesla_bt_munga_EVENT_CPP_004e3045, + 0x6c); + return; +} + + + +/* @0041a818 file=? name=FUN_0041a818 */ + +undefined4 * __cdecl +FUN_0041a818(undefined4 *param_1,undefined4 param_2,uint *param_3,undefined4 param_4) + +{ + FUN_0041a750(param_1,param_3,param_4,9); + *param_1 = &PTR_FUN_004e3254; + FUN_0041b688(param_1 + 5,param_1); + (**(code **)(param_1[5] + 4))(param_1 + 5,param_2); + return param_1; +} + + + +/* @0041a860 file=? name=FUN_0041a860 */ + +void __cdecl FUN_0041a860(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e3254; + FUN_0041b6a7(param_1 + 5,2); + FUN_0041a7a4(param_1,0); + if ((param_2 & 1) != 0) { + FUN_00402f98(0x4e2fa4,param_1); + } + } + return; +} + + + +/* @0041a8a4 file=? name=FUN_0041a8a4 */ + +void __cdecl FUN_0041a8a4(int param_1,int param_2,int param_3,int param_4) + +{ + int iVar1; + int local_14 [4]; + + FUN_0041b71e(local_14,param_1,0xffffffff); + do { + iVar1 = (**(code **)(local_14[0] + 0x30))(local_14); + if (iVar1 == 0) { +LAB_0041a8fa: + if (param_4 != 0) { + *(int *)(param_1 + 0xc) = param_4; + } + FUN_0041adec(param_2,param_3,param_1); + FUN_0041b783(local_14,2); + return; + } + iVar1 = *(int *)(iVar1 + 4); + if (((iVar1 == 0xc) || (iVar1 == 0xb)) || (iVar1 == 0xd)) { + FUN_00416190((int)local_14); + goto LAB_0041a8fa; + } + (**(code **)(local_14[0] + 0xc))(local_14); + } while( true ); +} + + + +/* @0041a92c file=? name=FUN_0041a92c */ + +void __cdecl FUN_0041a92c(int param_1) + +{ + int iVar1; + undefined4 *puVar2; + int local_14 [4]; + + iVar1 = FUN_00417ab4(param_1 + 0x14); + FUN_0041a52f(local_14,iVar1,0xffffffff); + do { + puVar2 = (undefined4 *)(**(code **)(local_14[0] + 0x28))(local_14); + if (puVar2 == (undefined4 *)0x0) break; + } while (puVar2[1] != 0xd); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)FUN_00402298(0x1c); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_0041b59c(puVar2,iVar1); + } + } + FUN_0041a8a4(param_1,puVar2[3],0,DAT_004e17f4); + FUN_0041a594(local_14,2); + return; +} + + + +/* @0041a9c0 file=? name=FUN_0041a9c0 */ + +void __cdecl FUN_0041a9c0(int param_1) + +{ + int *piVar1; + + piVar1 = (int *)FUN_00417ab4(param_1 + 0x14); + (**(code **)(*piVar1 + 0x10))(piVar1,param_1); + return; +} + + + +/* @0041a9e0 file=? name=FUN_0041a9e0 */ + +void __cdecl FUN_0041a9e0(int param_1) + +{ + char *pcVar1; + uint uVar2; + uint uVar3; + int iVar4; + int *piVar5; + char *pcVar6; + + iVar4 = FUN_00417ab4(param_1 + 0x14); + piVar5 = *(int **)(DAT_004efc94 + 0x28); + if ((piVar5 != (int *)0x0) && + (piVar5 = (int *)(**(code **)(*piVar5 + 0x14))(piVar5,*(undefined4 *)(iVar4 + 4)), + piVar5 != (int *)0x0)) { + pcVar1 = *(char **)(*piVar5 + 0xc); + iVar4 = *(int *)(*(int *)(param_1 + 0x10) + 4); + if (*(int *)piVar5[1] < iVar4) { + pcVar6 = (char *)0x0; + } + else { + pcVar6 = *(char **)(((int *)piVar5[1])[1] + -0x10 + iVar4 * 0x14); + } + FUN_004dbb24(&DAT_00524e20,pcVar6,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_message_for_class_004e3068,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,pcVar1,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + return; + } + uVar2 = *(uint *)(iVar4 + 4); + uVar3 = *(uint *)(*(int *)(param_1 + 0x10) + 4); + FUN_004dbb24(&DAT_00524e20,s_Message_004e307c,(char *)0x0); + piVar5 = FUN_004db78c(&DAT_00524e20,uVar3); + FUN_004dbb24(piVar5,s_for_object_of_classID_004e3085,(char *)0x0); + piVar5 = FUN_004db78c(piVar5,uVar2); + FUN_004d9c38(piVar5); + return; +} + + + +/* @0041aac8 file=? name=FUN_0041aac8 */ + +void __cdecl FUN_0041aac8(undefined4 *param_1) + +{ + if (param_1 != (undefined4 *)0x0) { + (**(code **)*param_1)(param_1,3); + } + return; +} + + + +/* @0041aae0 file=? name=FUN_0041aae0 */ + +undefined4 * __cdecl +FUN_0041aae0(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4, + uint *param_5,undefined4 param_6) + +{ + FUN_0041a750(param_1,param_5,param_6,10); + *param_1 = &PTR_FUN_004e3240; + param_1[5] = param_2; + param_1[6] = param_3; + param_1[7] = param_4; + return param_1; +} + + + +/* @0041ab1c file=? name=FUN_0041ab1c */ + +void __cdecl FUN_0041ab1c(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e3240; + FUN_0041a7a4(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0041ab48 file=? name=FUN_0041ab48 */ + +void __cdecl FUN_0041ab48(undefined4 *param_1) + +{ + int iVar1; + + iVar1 = param_1[7]; + if (iVar1 == 0) { + (**(code **)(**(int **)(DAT_004efc94 + 0x20) + 0x18)) + (*(int **)(DAT_004efc94 + 0x20),param_1[4],param_1[6],param_1[5]); + } + else if (iVar1 == 1) { + FUN_0041d7b0(*(int **)(DAT_004efc94 + 0x20),param_1[4],param_1[6]); + } + else if (iVar1 == 2) { + (**(code **)(**(int **)(DAT_004efc94 + 0x20) + 0x1c)) + (*(int **)(DAT_004efc94 + 0x20),param_1[4],param_1[6]); + } + if (param_1 != (undefined4 *)0x0) { + (**(code **)*param_1)(param_1,3); + } + return; +} + + + +/* @0041abc4 file=? name=FUN_0041abc4 */ + +undefined4 * __cdecl FUN_0041abc4(undefined4 *param_1,undefined4 param_2) + +{ + FUN_004178cc(param_1,param_2); + *param_1 = &PTR_FUN_004e3234; + FUN_0041b6d3(param_1 + 4,param_1); + FUN_0041b6d3(param_1 + 8,param_1); + param_1[3] = 0xffffffff; + param_1[0xc] = 0; + return param_1; +} + + + +/* @0041ac0c file=? name=FUN_0041ac0c */ + +undefined4 * __cdecl FUN_0041ac0c(undefined4 *param_1) + +{ + FUN_004178cc(param_1,0xb); + *param_1 = &PTR_FUN_004e3234; + FUN_0041b6d3(param_1 + 4,param_1); + FUN_0041b6d3(param_1 + 8,param_1); + param_1[3] = 0xffffffff; + param_1[0xc] = 0; + return param_1; +} + + + +/* @0041ac50 file=? name=FUN_0041ac50 */ + +void __cdecl FUN_0041ac50(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e3234; + FUN_0041b6f2(param_1 + 8,2); + FUN_0041b6f2(param_1 + 4,2); + FUN_0041790c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0041ac98 file=? name=FUN_0041ac98 */ + +void __cdecl FUN_0041ac98(int param_1) + +{ + int extraout_EAX; + + FUN_004de998((int *)0x0,0x34,param_1,0x211,FUN_0041ac0c); + *(int *)(extraout_EAX + 0xc) = param_1; + return; +} + + + +/* @0041acbc file=? name=FUN_0041acbc */ + +void __cdecl +FUN_0041acbc(int param_1,int param_2,undefined4 param_3,uint *param_4,undefined4 param_5) + +{ + undefined4 *puVar1; + + puVar1 = FUN_00402f74(0x4e2fa4); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_0041a818(puVar1,param_3,param_4,param_5); + } + FUN_0041adec(param_1,param_2,(int)puVar1); + return; +} + + + +/* @0041ad08 file=? name=FUN_0041ad08 */ + +void __cdecl +FUN_0041ad08(int param_1,int param_2,undefined4 param_3,undefined4 param_4,uint *param_5, + undefined4 param_6) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00402298(0x20); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_0041aae0(puVar1,param_3,param_4,0,param_5,param_6); + } + FUN_0041adec(param_1,param_2,(int)puVar1); + return; +} + + + +/* @0041ad54 file=? name=FUN_0041ad54 */ + +void __cdecl +FUN_0041ad54(int param_1,int param_2,undefined4 param_3,uint *param_4,undefined4 param_5) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00402298(0x20); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_0041aae0(puVar1,0,param_3,1,param_4,param_5); + } + FUN_0041adec(param_1,param_2,(int)puVar1); + return; +} + + + +/* @0041ada0 file=? name=FUN_0041ada0 */ + +void __cdecl +FUN_0041ada0(int param_1,int param_2,undefined4 param_3,uint *param_4,undefined4 param_5) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00402298(0x20); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_0041aae0(puVar1,0,param_3,2,param_4,param_5); + } + FUN_0041adec(param_1,param_2,(int)puVar1); + return; +} + + + +/* @0041adec file=? name=FUN_0041adec */ + +void __cdecl FUN_0041adec(int param_1,int param_2,int param_3) + +{ + int iVar1; + int local_10 [3]; + + if (*(int *)(param_3 + 0xc) == 0) { + (**(code **)(*(int *)(param_1 + 0x10 + param_2 * 0x34) + 4)) + (param_2 * 0x34 + param_1 + 0x10,param_3); + } + else { + FUN_0041b7ce(local_10,param_2 * 0x34 + param_1 + 0x20); + (**(code **)(local_10[0] + 8))(local_10); + iVar1 = (**(code **)(local_10[0] + 0x30))(local_10); + if ((iVar1 == 0) || (*(int *)(iVar1 + 0xc) <= *(int *)(param_3 + 0xc))) { + (**(code **)(*(int *)(param_1 + 0x20 + param_2 * 0x34) + 4)) + (param_2 * 0x34 + param_1 + 0x20,param_3); + } + else { + do { + (**(code **)(local_10[0] + 0x10))(local_10); + iVar1 = (**(code **)(local_10[0] + 0x30))(local_10); + if (iVar1 == 0) { + (**(code **)(local_10[0] + 4))(local_10); + break; + } + } while (*(int *)(param_3 + 0xc) < *(int *)(iVar1 + 0xc)); + if (iVar1 != 0) { + (**(code **)(local_10[0] + 0xc))(local_10); + } + (**(code **)(local_10[0] + 0x4c))(local_10,param_3); + } + FUN_0041b80c(local_10,2); + } + return; +} + + + +/* @0041af10 file=? name=FUN_0041af10 */ + +int __cdecl FUN_0041af10(int param_1,int param_2) + +{ + int iVar1; + int *piVar2; + int iVar3; + int local_1c [3]; + int local_10 [3]; + + iVar3 = *(int *)(param_1 + 0xc); + while( true ) { + iVar3 = iVar3 + -1; + if (iVar3 < param_2) { + return 0; + } + FUN_0041b7ce(local_10,iVar3 * 0x34 + param_1 + 0x20); + iVar1 = (**(code **)(local_10[0] + 0x30))(local_10); + if ((iVar1 != 0) && (piVar2 = (int *)FUN_00414b60(), *(int *)(iVar1 + 0xc) <= *piVar2)) break; + FUN_0041b7ce(local_1c,iVar3 * 0x34 + param_1 + 0x10); + iVar1 = (**(code **)(local_1c[0] + 0x30))(local_1c); + if (iVar1 != 0) { + FUN_0041b80c(local_1c,2); + FUN_0041b80c(local_10,2); + return iVar1; + } + FUN_0041b80c(local_1c,2); + FUN_0041b80c(local_10,2); + } + FUN_0041b80c(local_10,2); + return iVar1; +} + + + +/* @0041aff4 file=? name=FUN_0041aff4 */ + +undefined4 __cdecl FUN_0041aff4(int param_1,int param_2) + +{ + undefined4 uVar1; + int iVar2; + int local_1c [3]; + int local_10 [3]; + + iVar2 = param_2 * 0x34 + param_1; + FUN_0041b7ce(local_10,iVar2 + 0x10); + FUN_0041b7ce(local_1c,iVar2 + 0x20); + iVar2 = (**(code **)(local_10[0] + 0x30))(local_10); + if (iVar2 == 0) { + iVar2 = (**(code **)(local_1c[0] + 0x30))(local_1c); + if (iVar2 == 0) { + uVar1 = 1; + goto LAB_0041b057; + } + } + uVar1 = 0; +LAB_0041b057: + FUN_0041b80c(local_1c,2); + FUN_0041b80c(local_10,2); + return uVar1; +} + + + +/* @0041b07c file=? name=FUN_0041b07c */ + +undefined4 __cdecl FUN_0041b07c(int param_1,int param_2) + +{ + int *piVar1; + + piVar1 = (int *)FUN_0041af10(param_1,param_2); + if (piVar1 != (int *)0x0) { + (**(code **)(*piVar1 + 0xc))(piVar1); + return 1; + } + return 0; +} + + + +/* @0041b0a8 file=? name=FUN_0041b0a8 */ + +void __cdecl FUN_0041b0a8(int param_1,int param_2) + +{ + int iVar1; + + do { + iVar1 = FUN_0041b07c(param_1,param_2); + } while (iVar1 != 0); + return; +} + + + +/* @0041b0c8 file=? name=FUN_0041b0c8 */ + +void __cdecl FUN_0041b0c8(int param_1,int param_2) + +{ + undefined4 *puVar1; + int local_1c [3]; + int local_10 [3]; + + if (param_2 < 0) { + param_2 = *(int *)(param_1 + 0xc) + -1; + } + for (; -1 < param_2; param_2 = param_2 + -1) { + FUN_0041b7ce(local_10,param_2 * 0x34 + param_1 + 0x20); + while (puVar1 = (undefined4 *)(**(code **)(local_10[0] + 0x28))(local_10), + puVar1 != (undefined4 *)0x0) { + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + } + FUN_0041b7ce(local_1c,param_2 * 0x34 + param_1 + 0x10); + while (puVar1 = (undefined4 *)(**(code **)(local_1c[0] + 0x28))(local_1c), + puVar1 != (undefined4 *)0x0) { + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + } + FUN_0041b80c(local_1c,2); + FUN_0041b80c(local_10,2); + } + return; +} + + + +/* @0041b190 file=? name=FUN_0041b190 */ + +void __cdecl FUN_0041b190(int param_1,int param_2,int param_3) + +{ + undefined4 *puVar1; + int local_1c [3]; + int local_10 [3]; + + if (param_3 < 0) { + param_3 = *(int *)(param_1 + 0xc) + -1; + } + for (; -1 < param_3; param_3 = param_3 + -1) { + FUN_0041b7ce(local_10,param_3 * 0x34 + param_1 + 0x10); + while (puVar1 = (undefined4 *)(**(code **)(local_10[0] + 0x28))(local_10), + puVar1 != (undefined4 *)0x0) { + if (((param_2 == 0) || (param_2 == *(int *)(puVar1[4] + 4))) && (puVar1 != (undefined4 *)0x0)) + { + (**(code **)*puVar1)(puVar1,3); + } + } + FUN_0041b7ce(local_1c,param_3 * 0x34 + param_1 + 0x20); + while (puVar1 = (undefined4 *)(**(code **)(local_1c[0] + 0x28))(local_1c), + puVar1 != (undefined4 *)0x0) { + if (((param_2 == 0) || (param_2 == *(int *)(puVar1[4] + 4))) && (puVar1 != (undefined4 *)0x0)) + { + (**(code **)*puVar1)(puVar1,3); + } + } + FUN_0041b80c(local_1c,2); + FUN_0041b80c(local_10,2); + } + return; +} + + + +/* @0041b27c file=? name=FUN_0041b27c */ + +void __cdecl FUN_0041b27c(int param_1) + +{ + uint uVar1; + int *piVar2; + uint uVar3; + int local_28 [3]; + int local_1c [3]; + uint local_10; + uint local_c; + uint local_8; + + local_8 = 0; + uVar1 = *(uint *)(param_1 + 0xc); + while (uVar1 = uVar1 - 1, -1 < (int)uVar1) { + FUN_004dbb24(&DAT_00524e20,s_EventQueue_priority_004e309d,(char *)0x0); + piVar2 = FUN_004db78c(&DAT_00524e20,uVar1); + FUN_004dbb24(piVar2,s__________________________________004e30b2,(char *)0x0); + FUN_0041b7ce(local_1c,uVar1 * 0x34 + param_1 + 0x10); + uVar3 = 0; + while (piVar2 = (int *)(**(code **)(local_1c[0] + 0x28))(local_1c), piVar2 != (int *)0x0) { + uVar3 = uVar3 + 1; + (**(code **)(*piVar2 + 0x10))(piVar2); + } + local_c = uVar1; + piVar2 = FUN_004db880(&DAT_00524e20,uVar3); + FUN_004dbb24(piVar2,s_priority_004e30f3,(char *)0x0); + piVar2 = FUN_004db78c(piVar2,local_c); + FUN_004dbb24(piVar2,s_events_004e30fe,(char *)0x0); + uVar3 = 0; + FUN_0041b7ce(local_28,uVar1 * 0x34 + param_1 + 0x20); + while (piVar2 = (int *)(**(code **)(local_28[0] + 0x28))(local_28), piVar2 != (int *)0x0) { + uVar3 = uVar3 + 1; + (**(code **)(*piVar2 + 0x10))(piVar2); + } + local_10 = uVar1; + piVar2 = FUN_004db880(&DAT_00524e20,uVar3); + FUN_004dbb24(piVar2,s_priority_004e3108,(char *)0x0); + piVar2 = FUN_004db78c(piVar2,local_10); + FUN_004dbb24(piVar2,s_timed_events_004e3113,(char *)0x0); + local_8 = uVar3 + local_8; + FUN_0041b80c(local_28,2); + FUN_0041b80c(local_1c,2); + } + piVar2 = FUN_004db78c(&DAT_00524e20,local_8); + FUN_004dbb24(piVar2,s_total_events_in_queues_004e3123,(char *)0x0); + return; +} + + + +/* @0041b424 file=? name=FUN_0041b424 */ + +undefined4 * __cdecl FUN_0041b424(undefined4 *param_1) + +{ + FUN_0041abc4(param_1,0xc); + *param_1 = &PTR_FUN_004e3228; + return param_1; +} + + + +/* @0041b444 file=? name=FUN_0041b444 */ + +void __cdecl FUN_0041b444(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e3228; + FUN_0041ac50(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0041b470 file=? name=FUN_0041b470 */ + +void __cdecl FUN_0041b470(int param_1) + +{ + int extraout_EAX; + + FUN_004de998((int *)0x0,0x34,param_1,0x211,FUN_0041b424); + *(int *)(extraout_EAX + 0xc) = param_1; + return; +} + + + +/* @0041b494 file=? name=FUN_0041b494 */ + +void __cdecl FUN_0041b494(int param_1,int param_2,int param_3) + +{ + int *piVar1; + int iVar2; + int local_20 [3]; + int local_14 [3]; + int local_8; + + local_8 = *(int *)(param_1 + 0xc); + while (local_8 = local_8 + -1, -1 < local_8) { + FUN_0041b7ce(local_14,local_8 * 0x34 + param_1 + 0x10); + while (piVar1 = (int *)(**(code **)(local_14[0] + 0x28))(local_14), piVar1 != (int *)0x0) { + iVar2 = FUN_00417ab4((int)(piVar1 + 5)); + if ((param_2 == iVar2) && ((param_3 == 0 || (param_3 == *(int *)(piVar1[4] + 4))))) { + (**(code **)(*piVar1 + 0xc))(piVar1); + } + } + FUN_0041b7ce(local_20,local_8 * 0x34 + param_1 + 0x20); + while (piVar1 = (int *)(**(code **)(local_20[0] + 0x28))(local_20), piVar1 != (int *)0x0) { + iVar2 = FUN_00417ab4((int)(piVar1 + 5)); + if ((param_2 == iVar2) && ((param_3 == 0 || (param_3 == *(int *)(piVar1[4] + 4))))) { + (**(code **)(*piVar1 + 0xc))(piVar1); + } + } + FUN_0041b80c(local_20,2); + FUN_0041b80c(local_14,2); + } + return; +} + + + +/* @0041b59c file=? name=FUN_0041b59c */ + +undefined4 * __cdecl FUN_0041b59c(undefined4 *param_1,undefined4 param_2) + +{ + undefined4 *puVar1; + + FUN_004178cc(param_1,0xd); + *param_1 = &PTR_FUN_004e321c; + FUN_0041b688(param_1 + 4,param_1); + puVar1 = (undefined4 *)FUN_00402298(0x34); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_0041b424(puVar1); + } + param_1[3] = puVar1; + (**(code **)(param_1[4] + 4))(param_1 + 4,param_2); + return param_1; +} + + + +/* @0041b5f8 file=? name=FUN_0041b5f8 */ + +void __cdecl FUN_0041b5f8(int *param_1,byte param_2) + +{ + undefined4 *puVar1; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e321c; + puVar1 = (undefined4 *)param_1[3]; + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + FUN_0041b6a7(param_1 + 4,2); + FUN_0041790c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0041b644 file=? name=FUN_0041b644 */ + +void __cdecl FUN_0041b644(undefined4 *param_1) + +{ + if (param_1 != (undefined4 *)0x0) { + (**(code **)*param_1)(param_1,3); + } + return; +} + + + +/* @0041b688 file=? name=FUN_0041b688 */ + +undefined4 * __cdecl FUN_0041b688(undefined4 *param_1,undefined4 param_2) + +{ + FUN_004179d4(param_1,param_2); + *param_1 = &PTR_FUN_004e3214; + return param_1; +} + + + +/* @0041b6a7 file=? name=FUN_0041b6a7 */ + +void __cdecl FUN_0041b6a7(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e3214; + FUN_004179f8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0041b6d3 file=? name=FUN_0041b6d3 */ + +undefined4 * __cdecl FUN_0041b6d3(undefined4 *param_1,undefined4 param_2) + +{ + FUN_00417be0(param_1,param_2); + *param_1 = &PTR_FUN_004e320c; + return param_1; +} + + + +/* @0041b6f2 file=? name=FUN_0041b6f2 */ + +void __cdecl FUN_0041b6f2(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e320c; + FUN_00417c0c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0041b71e file=? name=FUN_0041b71e */ + +undefined4 * __cdecl FUN_0041b71e(undefined4 *param_1,int param_2,undefined4 param_3) + +{ + FUN_00415f30(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004e31c4; + return param_1; +} + + + +/* @0041b741 file=? name=FUN_0041b741 */ + +undefined4 * __cdecl FUN_0041b741(undefined4 *param_1,int param_2,undefined4 param_3) + +{ + FUN_00415f30(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004e31c4; + return param_1; +} + + + +/* @0041b764 file=? name=FUN_0041b764 */ + +undefined4 * __cdecl FUN_0041b764(undefined4 *param_1,int param_2) + +{ + FUN_00415f60(param_1,param_2); + *param_1 = &PTR_FUN_004e31c4; + return param_1; +} + + + +/* @0041b783 file=? name=FUN_0041b783 */ + +void __cdecl FUN_0041b783(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e31c4; + FUN_00415f90(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0041b7af file=? name=FUN_0041b7af */ + +undefined4 * __cdecl FUN_0041b7af(undefined4 *param_1,int param_2) + +{ + FUN_00417d00(param_1,param_2); + *param_1 = &PTR_FUN_004e3174; + return param_1; +} + + + +/* @0041b7ce file=? name=FUN_0041b7ce */ + +undefined4 * __cdecl FUN_0041b7ce(undefined4 *param_1,int param_2) + +{ + FUN_00417d00(param_1,param_2); + *param_1 = &PTR_FUN_004e3174; + return param_1; +} + + + +/* @0041b7ed file=? name=FUN_0041b7ed */ + +undefined4 * __cdecl FUN_0041b7ed(undefined4 *param_1,int param_2) + +{ + FUN_00417d28(param_1,param_2); + *param_1 = &PTR_FUN_004e3174; + return param_1; +} + + + +/* @0041b80c file=? name=FUN_0041b80c */ + +void __cdecl FUN_0041b80c(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e3174; + FUN_00417d54(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0041b838 file=? name=FUN_0041b838 */ + +undefined4 * __cdecl FUN_0041b838(undefined4 *param_1,undefined4 param_2,undefined4 param_3) + +{ + FUN_004178cc(param_1,param_2); + *param_1 = &PTR_FUN_004e3320; + param_1[3] = param_3; + *param_1 = &PTR_FUN_004e3308; + return param_1; +} + + + +/* @0041b868 file=? name=FUN_0041b868 */ + +undefined4 * __cdecl FUN_0041b868(undefined4 *param_1,int *param_2,undefined4 param_3) + +{ + FUN_004178ec(param_1,param_2); + *param_1 = &PTR_FUN_004e3320; + param_1[3] = param_3; + *param_1 = &PTR_FUN_004e3308; + return param_1; +} + + + +/* @0041b898 file=? name=FUN_0041b898 */ + +void __cdecl FUN_0041b898(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e3308; + FUN_0041790c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0041b8c4 file=munga/cmpnnt.cpp name=FUN_0041b8c4 */ + +void FUN_0041b8c4(void) + +{ + FUN_0040385c(s_Component__Execute___Should_neve_004e32be,s_d__tesla_bt_munga_CMPNNT_CPP_004e32eb, + 0x4e); + return; +} + + + +/* @0041b8e0 file=? name=FUN_0041b8e0 */ + +void __cdecl FUN_0041b8e0(int param_1) + +{ + FUN_0041a1a4(**(int **)(param_1 + 0xc),0x4e327c); + return; +} + + + +/* @0041b956 file=? name=FUN_0041b956 */ + +void __cdecl FUN_0041b956(int param_1,int param_2) + +{ + FUN_00419bbc(param_1,param_2); + return; +} + + + +/* @0041b96b file=? name=FUN_0041b96b */ + +void __cdecl FUN_0041b96b(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + FUN_0041790c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0041b994 file=? name=FUN_0041b994 */ + +undefined4 * __cdecl FUN_0041b994(undefined4 *param_1) + +{ + FUN_004178cc(param_1,2); + *param_1 = &PTR_FUN_004e3440; + FUN_0041c42c(param_1 + 6,0); + FUN_0041c42c(param_1 + 0xb,0); + FUN_0041c42c(param_1 + 0x10,0); + param_1[3] = 0; + param_1[4] = 0; + param_1[5] = 0; + return param_1; +} + + + +/* @0041b9ec file=? name=FUN_0041b9ec */ + +undefined4 * __cdecl FUN_0041b9ec(undefined4 *param_1,undefined4 param_2) + +{ + FUN_004178cc(param_1,2); + *param_1 = &PTR_FUN_004e3440; + FUN_0041c42c(param_1 + 6,0); + FUN_0041c42c(param_1 + 0xb,0); + FUN_0041c42c(param_1 + 0x10,0); + param_1[3] = param_2; + param_1[4] = param_2; + param_1[5] = param_2; + return param_1; +} + + + +/* @0041ba44 file=? name=FUN_0041ba44 */ + +undefined4 * __cdecl FUN_0041ba44(undefined4 *param_1,int param_2) + +{ + FUN_004178cc(param_1,2); + *param_1 = &PTR_FUN_004e3440; + FUN_0041c42c(param_1 + 6,0); + FUN_0041c42c(param_1 + 0xb,0); + FUN_0041c42c(param_1 + 0x10,0); + param_1[3] = *(undefined4 *)(param_2 + 0xc); + param_1[4] = *(undefined4 *)(param_2 + 0x10); + param_1[5] = *(undefined4 *)(param_2 + 0x14); + return param_1; +} + + + +/* @0041baa4 file=? name=FUN_0041baa4 */ + +void __cdecl FUN_0041baa4(int *param_1,byte param_2) + +{ + void *this; + void *this_00; + int local_40 [5]; + int local_2c [5]; + int local_18 [5]; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e3440; + FUN_0041c477(local_18,(int)(param_1 + 6)); + FUN_00417858(local_18,local_18,1); + FUN_0041c4d4(local_18,2); + FUN_0041c477(local_2c,(int)(param_1 + 0xb)); + FUN_00417858(this,local_2c,1); + FUN_0041c4d4(local_2c,2); + FUN_0041c477(local_40,(int)(param_1 + 0x10)); + FUN_00417858(this_00,local_40,1); + FUN_0041c4d4(local_40,2); + FUN_0041c44b(param_1 + 0x10,2); + FUN_0041c44b(param_1 + 0xb,2); + FUN_0041c44b(param_1 + 6,2); + FUN_0041790c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0041bb88 file=? name=FUN_0041bb88 */ + +void __cdecl FUN_0041bb88(int param_1,int param_2) + +{ + *(undefined4 *)(param_1 + 0xc) = *(undefined4 *)(param_2 + 0xc); + *(undefined4 *)(param_1 + 0x10) = *(undefined4 *)(param_2 + 0x10); + *(undefined4 *)(param_1 + 0x14) = *(undefined4 *)(param_2 + 0x14); + return; +} + + + +/* @0041bba8 file=? name=FUN_0041bba8 */ + +undefined4 __cdecl FUN_0041bba8(int param_1,int param_2) + +{ + undefined4 uVar1; + + if (((*(int *)(param_1 + 0xc) == *(int *)(param_2 + 0xc)) && + (*(int *)(param_1 + 0x10) == *(int *)(param_2 + 0x10))) && + (*(int *)(param_1 + 0x14) == *(int *)(param_2 + 0x14))) { + uVar1 = 1; + } + else { + uVar1 = 0; + } + return uVar1; +} + + + +/* @0041bbd8 file=? name=FUN_0041bbd8 */ + +void __cdecl FUN_0041bbd8(int param_1,int param_2) + +{ + int *piVar1; + int local_40 [5]; + int local_2c [5]; + int local_18 [5]; + + *(undefined4 *)(param_1 + 0x10) = *(undefined4 *)(param_1 + 0x14); + if (param_2 != *(int *)(param_1 + 0x14)) { + *(int *)(param_1 + 0x14) = param_2; + FUN_0041c496(local_18,param_1 + 0x18); + while( true ) { + piVar1 = (int *)(**(code **)(local_18[0] + 0x28))(local_18); + if (piVar1 == (int *)0x0) break; + (**(code **)(*piVar1 + 0x14))(piVar1); + } + FUN_0041c4d4(local_18,2); + FUN_0041c496(local_2c,param_1 + 0x2c); + while( true ) { + piVar1 = (int *)(**(code **)(local_2c[0] + 0x28))(local_2c); + if (piVar1 == (int *)0x0) break; + (**(code **)(*piVar1 + 0x14))(piVar1); + } + FUN_0041c4d4(local_2c,2); + FUN_0041c496(local_40,param_1 + 0x40); + while( true ) { + piVar1 = (int *)(**(code **)(local_40[0] + 0x28))(local_40); + if (piVar1 == (int *)0x0) break; + (**(code **)(*piVar1 + 0x14))(piVar1); + } + FUN_0041c4d4(local_40,2); + } + return; +} + + + +/* @0041bca8 file=? name=FUN_0041bca8 */ + +int * __cdecl FUN_0041bca8(int *param_1,int param_2) + +{ + uint uVar1; + int *piVar2; + + uVar1 = *(uint *)(param_2 + 0xc); + FUN_004dbb24(param_1,&DAT_004e33a0,(char *)0x0); + piVar2 = FUN_004db880(param_1,uVar1); + FUN_004dbb24(piVar2,&DAT_004e33a2,(char *)0x0); + piVar2 = FUN_004db880(param_1,*(uint *)(param_2 + 0x10)); + FUN_004dbb24(piVar2,&DAT_004e33a4,(char *)0x0); + piVar2 = FUN_004db880(param_1,*(uint *)(param_2 + 0x14)); + FUN_004dbb24(piVar2,&DAT_004e33a6,(char *)0x0); + return param_1; +} + + + +/* @0041bd28 file=? name=FUN_0041bd28 */ + +undefined4 FUN_0041bd28(void) + +{ + return 1; +} + + + +/* @0041bd34 file=? name=FUN_0041bd34 */ + +void __cdecl FUN_0041bd34(int param_1,int param_2) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00414b60(); + *(undefined4 *)(param_1 + 0x14) = *puVar1; + FUN_0041bbd8(param_1 + 0x2c,*(int *)(param_2 + 0xc)); + return; +} + + + +/* @0041bd60 file=? name=FUN_0041bd60 */ + +void __cdecl FUN_0041bd60(int param_1,undefined4 *param_2,undefined2 param_3) + +{ + param_2[2] = *(undefined4 *)(param_1 + 0x10); + param_2[3] = *(undefined4 *)(param_1 + 0x40); + *param_2 = 0x10; + *(undefined2 *)((int)param_2 + 6) = param_3; + *(undefined4 *)(param_1 + 0x14) = *(undefined4 *)(param_1 + 0x10); + return; +} + + + +/* @0041bd98 file=? name=FUN_0041bd98 */ + +void __cdecl FUN_0041bd98(int *param_1,int *param_2) + +{ + ushort uVar1; + undefined4 *puVar2; + uint uVar3; + int iVar4; + + iVar4 = 0; + uVar1 = *(ushort *)(param_1 + 6); + *(undefined2 *)(param_1 + 6) = 0; + for (uVar3 = (uint)uVar1; uVar3 != 0; uVar3 = (int)uVar3 >> 1) { + if ((uVar3 & 1) != 0) { + puVar2 = (undefined4 *)(**(code **)*param_2)(param_2); + (**(code **)(*param_1 + 0x1c))(param_1,puVar2,iVar4); + (**(code **)(*param_2 + 0x14))(param_2,*puVar2); + } + iVar4 = iVar4 + 1; + } + return; +} + + + +/* @0041bdf0 file=? name=FUN_0041bdf0 */ + +undefined4 * __cdecl FUN_0041bdf0(undefined4 *param_1,undefined4 param_2,undefined4 param_3) + +{ + undefined4 *puVar1; + + FUN_004178cc(param_1,param_2); + *param_1 = &PTR_FUN_004e3320; + param_1[3] = param_3; + *param_1 = &PTR_FUN_004e3420; + FUN_0041b9ec(param_1 + 0xb,*(undefined4 *)(param_1[3] + 0xc)); + FUN_0041c42c(param_1 + 0x20,0); + FUN_0041c42c(param_1 + 0x25,0); + FUN_0041c42c(param_1 + 0x2a,0); + FUN_0041c42c(param_1 + 0x2f,0); + FUN_0041bbd8((int)(param_1 + 0xb),0); + puVar1 = (undefined4 *)FUN_00414b60(); + param_1[4] = *puVar1; + param_1[5] = param_1[4]; + param_1[7] = PTR_FUN_004e3374; + param_1[8] = DAT_004e3378; + param_1[9] = DAT_004e337c; + *(undefined2 *)(param_1 + 6) = 0; + param_1[10] = 0; + return param_1; +} + + + +/* @0041bec4 file=? name=FUN_0041bec4 */ + +void __cdecl FUN_0041bec4(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e3420; + FUN_0041c44b(param_1 + 0x2f,2); + FUN_0041c44b(param_1 + 0x2a,2); + FUN_0041c44b(param_1 + 0x25,2); + FUN_0041c44b(param_1 + 0x20,2); + FUN_0041baa4(param_1 + 0xb,2); + FUN_0041790c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0041bf44 file=? name=FUN_0041bf44 */ + +int __cdecl FUN_0041bf44(int param_1,int param_2) + +{ + int *piVar1; + int iVar2; + int local_14; + int local_10; + + piVar1 = *(int **)(*(int *)(param_1 + 0xc) + 8); + if (*piVar1 < param_2) { + local_14 = DAT_004e3380; + local_10 = DAT_004e3384; + } + else { + iVar2 = piVar1[1]; + local_14 = *(int *)(iVar2 + -8 + param_2 * 0x10); + local_10 = *(int *)(iVar2 + -4 + param_2 * 0x10); + } + if ((local_14 == DAT_004e3380) && (local_10 == DAT_004e3384)) { + iVar2 = 0; + } + else { + iVar2 = param_1 + local_14 + -1; + } + return iVar2; +} + + + +/* @0041bfc0 file=? name=FUN_0041bfc0 */ + +int __cdecl FUN_0041bfc0(int param_1,char *param_2) + +{ + int iVar1; + int local_14; + int local_10; + + FUN_0041c288(&local_14,*(int **)(*(int *)(param_1 + 0xc) + 8),param_2); + if ((local_14 == DAT_004e3380) && (local_10 == DAT_004e3384)) { + iVar1 = 0; + } + else { + iVar1 = param_1 + local_14 + -1; + } + return iVar1; +} + + + +/* @0041c018 file=? name=FUN_0041c018 */ + +void __cdecl FUN_0041c018(int *param_1,int *param_2,int *param_3) + +{ + float fVar1; + + fVar1 = (float)(*param_2 - param_1[4]) / DAT_0052140c; + param_1[4] = *param_2; + (*(code *)param_1[7])(param_1,fVar1); + if ((*(byte *)(param_1 + 10) & 1) == 0) { + FUN_0041c08c((int)param_1); + } + FUN_0041bd98(param_1,param_3); + return; +} + + + +/* @0041c078 file=? name=FUN_0041c078 */ + +void __cdecl FUN_0041c078(int param_1) + +{ + *(uint *)(param_1 + 0x28) = *(uint *)(param_1 + 0x28) | 2; + return; +} + + + +/* @0041c084 file=? name=FUN_0041c084 */ + +void FUN_0041c084(void) + +{ + return; +} + + + +/* @0041c08c file=? name=FUN_0041c08c */ + +void __cdecl FUN_0041c08c(int param_1) + +{ + int *piVar1; + int local_54 [5]; + int local_40 [5]; + int local_2c [5]; + int local_18 [5]; + + FUN_0041c496(local_18,param_1 + 0x80); + while( true ) { + piVar1 = (int *)(**(code **)(local_18[0] + 0x28))(local_18); + if (piVar1 == (int *)0x0) break; + (**(code **)(*piVar1 + 0x14))(piVar1); + } + FUN_0041c4d4(local_18,2); + FUN_0041c496(local_2c,param_1 + 0x94); + while( true ) { + piVar1 = (int *)(**(code **)(local_2c[0] + 0x28))(local_2c); + if (piVar1 == (int *)0x0) break; + (**(code **)(*piVar1 + 0x14))(piVar1); + } + FUN_0041c4d4(local_2c,2); + FUN_0041c496(local_40,param_1 + 0xa8); + while( true ) { + piVar1 = (int *)(**(code **)(local_40[0] + 0x28))(local_40); + if (piVar1 == (int *)0x0) break; + (**(code **)(*piVar1 + 0x14))(piVar1); + } + FUN_0041c4d4(local_40,2); + FUN_0041c496(local_54,param_1 + 0xbc); + while( true ) { + piVar1 = (int *)(**(code **)(local_54[0] + 0x28))(local_54); + if (piVar1 == (int *)0x0) break; + (**(code **)(*piVar1 + 0x14))(piVar1); + } + FUN_0041c4d4(local_54,2); + return; +} + + + +/* @0041c18c file=? name=FUN_0041c18c */ + +void __cdecl FUN_0041c18c(int param_1) + +{ + FUN_0041a1a4(**(int **)(param_1 + 0xc),0x4e3334); + return; +} + + + +/* @0041c1a8 file=? name=FUN_0041c1a8 */ + +void __cdecl FUN_0041c1a8(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + if ((int *)param_1[1] != (int *)0x0) { + FUN_004022e8((int *)param_1[1]); + } + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0041c1d4 file=? name=FUN_0041c1d4 */ + +void __cdecl FUN_0041c1d4(int *param_1,int param_2,int *param_3,int *param_4) + +{ + int iVar1; + int iVar2; + int *piVar3; + undefined4 *puVar4; + undefined4 *puVar5; + int *piVar6; + + *param_1 = 0; + iVar1 = 0; + piVar3 = param_3; + if (0 < param_2) { + do { + if (*param_1 < *piVar3) { + *param_1 = *piVar3; + } + iVar1 = iVar1 + 1; + piVar3 = piVar3 + 4; + } while (iVar1 < param_2); + } + if ((param_4 != (int *)0x0) && (*param_1 < *param_4)) { + *param_1 = *param_4; + } + iVar1 = FUN_004022b0(*param_1 << 4); + param_1[1] = iVar1; + iVar1 = 0; + if (param_4 != (int *)0x0) { + for (; iVar1 < *param_4; iVar1 = iVar1 + 1) { + puVar4 = (undefined4 *)(param_4[1] + iVar1 * 0x10); + puVar5 = (undefined4 *)(param_1[1] + iVar1 * 0x10); + for (iVar2 = 4; iVar2 != 0; iVar2 = iVar2 + -1) { + *puVar5 = *puVar4; + puVar4 = puVar4 + 1; + puVar5 = puVar5 + 1; + } + } + } + iVar1 = 0; + if (0 < param_2) { + do { + piVar3 = param_3; + piVar6 = (int *)(param_1[1] + -0x10 + *param_3 * 0x10); + for (iVar2 = 4; iVar2 != 0; iVar2 = iVar2 + -1) { + *piVar6 = *piVar3; + piVar3 = piVar3 + 1; + piVar6 = piVar6 + 1; + } + iVar1 = iVar1 + 1; + param_3 = param_3 + 4; + } while (iVar1 < param_2); + } + return; +} + + + +/* @0041c288 file=? name=FUN_0041c288 */ + +undefined4 * __cdecl FUN_0041c288(undefined4 *param_1,int *param_2,char *param_3) + +{ + char *pcVar1; + int iVar2; + char *pcVar3; + char *pcVar4; + int iVar5; + bool bVar6; + + iVar5 = 0; + do { + if (*param_2 <= iVar5) { + *param_1 = DAT_004e3380; + param_1[1] = DAT_004e3384; + return param_1; + } + pcVar4 = *(char **)(param_2[1] + 4 + iVar5 * 0x10); + pcVar3 = param_3; + do { + if (*pcVar3 != *pcVar4) goto LAB_0041c2dc; + bVar6 = true; + if (*pcVar3 == '\0') break; + pcVar1 = pcVar3 + 1; + if (*pcVar1 != pcVar4[1]) goto LAB_0041c2dc; + pcVar3 = pcVar3 + 2; + pcVar4 = pcVar4 + 2; + bVar6 = *pcVar1 == '\0'; + } while (!bVar6); + if (bVar6) { + iVar2 = param_2[1]; + *param_1 = *(undefined4 *)(iVar2 + 8 + iVar5 * 0x10); + param_1[1] = *(undefined4 *)(iVar2 + 0xc + iVar5 * 0x10); + return param_1; + } +LAB_0041c2dc: + iVar5 = iVar5 + 1; + } while( true ); +} + + + +/* @0041c2fc file=? name=FUN_0041c2fc */ + +int __cdecl FUN_0041c2fc(int *param_1,char *param_2) + +{ + char *pcVar1; + char *pcVar2; + char *pcVar3; + int iVar4; + bool bVar5; + + iVar4 = 0; + do { + if (*param_1 <= iVar4) { + return 0; + } + pcVar3 = *(char **)(param_1[1] + 4 + iVar4 * 0x10); + pcVar2 = param_2; + do { + if (*pcVar2 != *pcVar3) goto LAB_0041c33f; + bVar5 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_0041c33f; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar5 = *pcVar1 == '\0'; + } while (!bVar5); + if (bVar5) { + return iVar4 * 0x10 + param_1[1]; + } +LAB_0041c33f: + iVar4 = iVar4 + 1; + } while( true ); +} + + + +/* @0041c350 file=? name=FUN_0041c350 */ + +void __cdecl FUN_0041c350(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) + +{ + *(uint *)(param_1 + 0x28) = *(uint *)(param_1 + 0x28) | 1; + FUN_004358e8(*(int *)(DAT_004efc94 + 0x34),param_1,param_2,param_3,param_4); + return; +} + + + +/* @0041c42c file=? name=FUN_0041c42c */ + +undefined4 * __cdecl FUN_0041c42c(undefined4 *param_1,undefined4 param_2) + +{ + FUN_0041827c(param_1,param_2); + *param_1 = &PTR_FUN_004e3418; + return param_1; +} + + + +/* @0041c44b file=? name=FUN_0041c44b */ + +void __cdecl FUN_0041c44b(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e3418; + FUN_004182a8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0041c477 file=? name=FUN_0041c477 */ + +undefined4 * __cdecl FUN_0041c477(undefined4 *param_1,int param_2) + +{ + FUN_00418398(param_1,param_2); + *param_1 = &PTR_FUN_004e33c4; + return param_1; +} + + + +/* @0041c496 file=? name=FUN_0041c496 */ + +undefined4 * __cdecl FUN_0041c496(undefined4 *param_1,int param_2) + +{ + FUN_00418398(param_1,param_2); + *param_1 = &PTR_FUN_004e33c4; + return param_1; +} + + + +/* @0041c4b5 file=? name=FUN_0041c4b5 */ + +undefined4 * __cdecl FUN_0041c4b5(undefined4 *param_1,int param_2) + +{ + FUN_004183c0(param_1,param_2); + *param_1 = &PTR_FUN_004e33c4; + return param_1; +} + + + +/* @0041c4d4 file=? name=FUN_0041c4d4 */ + +void __cdecl FUN_0041c4d4(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e33c4; + FUN_004183ec(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0041c500 file=? name=FUN_0041c500 */ + +void __cdecl FUN_0041c500(int param_1,undefined4 *param_2,undefined2 param_3) + +{ + FUN_0041bd60(param_1,param_2,param_3); + *(short *)(param_2 + 1) = *(short *)(param_1 + 0xd8) + 1; + return; +} + + + +/* @0041c52c file=? name=FUN_0041c52c */ + +undefined4 * __cdecl +FUN_0041c52c(undefined4 *param_1,undefined4 param_2,undefined4 param_3,char *param_4, + undefined4 param_5) + +{ + char cVar1; + int iVar2; + undefined4 uVar3; + uint uVar4; + uint uVar5; + char *pcVar6; + char *pcVar7; + + FUN_0041bdf0(param_1,*(undefined4 *)(param_4 + 0x20),param_5); + *param_1 = &PTR_FUN_004e3598; + param_1[0x34] = param_2; + param_1[0x36] = param_3; + iVar2 = FUN_004d4a78(param_4); + uVar3 = FUN_004022b0(iVar2 + 1); + param_1[0x35] = uVar3; + uVar4 = 0xffffffff; + pcVar6 = param_4; + do { + pcVar7 = pcVar6; + if (uVar4 == 0) break; + uVar4 = uVar4 - 1; + pcVar7 = pcVar6 + 1; + cVar1 = *pcVar6; + pcVar6 = pcVar7; + } while (cVar1 != '\0'); + uVar4 = ~uVar4; + pcVar6 = pcVar7 + -uVar4; + pcVar7 = (char *)param_1[0x35]; + for (uVar5 = uVar4 >> 2; uVar5 != 0; uVar5 = uVar5 - 1) { + *(undefined4 *)pcVar7 = *(undefined4 *)pcVar6; + pcVar6 = pcVar6 + 4; + pcVar7 = pcVar7 + 4; + } + for (uVar4 = uVar4 & 3; uVar4 != 0; uVar4 = uVar4 - 1) { + *pcVar7 = *pcVar6; + pcVar6 = pcVar6 + 1; + pcVar7 = pcVar7 + 1; + } + param_1[0x37] = *(undefined4 *)(param_4 + 0x28); + param_1[10] = *(undefined4 *)(param_4 + 0x2c); + param_1[0x38] = 0; + return param_1; +} + + + +/* @0041c5c0 file=? name=FUN_0041c5c0 */ + +undefined4 * __cdecl +FUN_0041c5c0(undefined4 *param_1,undefined4 param_2,undefined4 param_3,char *param_4, + undefined4 param_5,undefined4 param_6) + +{ + char cVar1; + int iVar2; + undefined4 uVar3; + uint uVar4; + uint uVar5; + char *pcVar6; + char *pcVar7; + + FUN_0041bdf0(param_1,param_5,param_6); + *param_1 = &PTR_FUN_004e3598; + param_1[0x34] = param_2; + param_1[0x36] = param_3; + iVar2 = FUN_004d4a78(param_4); + uVar3 = FUN_004022b0(iVar2 + 1); + param_1[0x35] = uVar3; + uVar4 = 0xffffffff; + do { + pcVar6 = param_4; + if (uVar4 == 0) break; + uVar4 = uVar4 - 1; + pcVar6 = param_4 + 1; + cVar1 = *param_4; + param_4 = pcVar6; + } while (cVar1 != '\0'); + uVar4 = ~uVar4; + pcVar6 = pcVar6 + -uVar4; + pcVar7 = (char *)param_1[0x35]; + for (uVar5 = uVar4 >> 2; uVar5 != 0; uVar5 = uVar5 - 1) { + *(undefined4 *)pcVar7 = *(undefined4 *)pcVar6; + pcVar6 = pcVar6 + 4; + pcVar7 = pcVar7 + 4; + } + for (uVar4 = uVar4 & 3; uVar4 != 0; uVar4 = uVar4 - 1) { + *pcVar7 = *pcVar6; + pcVar6 = pcVar6 + 1; + pcVar7 = pcVar7 + 1; + } + param_1[0x37] = 0xffffffff; + return param_1; +} + + + +/* @0041c648 file=? name=FUN_0041c648 */ + +void __cdecl FUN_0041c648(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e3598; + FUN_004022e8((int *)param_1[0x35]); + FUN_0041bec4(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0041c684 file=? name=FUN_0041c684 */ + +undefined4 __cdecl +FUN_0041c684(int param_1,char *param_2,char *param_3,char *param_4,int param_5,int param_6) + +{ + char cVar1; + char *pcVar2; + uint uVar3; + int *piVar4; + undefined4 uVar5; + uint uVar6; + int iVar7; + char *pcVar8; + bool bVar9; + char *local_c; + char *local_8; + + iVar7 = 0; + pcVar2 = param_4; + do { + *pcVar2 = '\0'; + iVar7 = iVar7 + 1; + pcVar2 = pcVar2 + 1; + } while (iVar7 < 0x20); + param_4[0x24] = '0'; + param_4[0x25] = '\0'; + param_4[0x26] = '\0'; + param_4[0x27] = '\0'; + uVar3 = FUN_004d4a78(param_3); + if (uVar3 < 0x20) { + uVar3 = 0xffffffff; + pcVar2 = param_3; + do { + pcVar8 = pcVar2; + if (uVar3 == 0) break; + uVar3 = uVar3 - 1; + pcVar8 = pcVar2 + 1; + cVar1 = *pcVar2; + pcVar2 = pcVar8; + } while (cVar1 != '\0'); + uVar3 = ~uVar3; + pcVar2 = pcVar8 + -uVar3; + pcVar8 = param_4; + for (uVar6 = uVar3 >> 2; uVar6 != 0; uVar6 = uVar6 - 1) { + *(undefined4 *)pcVar8 = *(undefined4 *)pcVar2; + pcVar2 = pcVar2 + 4; + pcVar8 = pcVar8 + 4; + } + for (uVar3 = uVar3 & 3; uVar3 != 0; uVar3 = uVar3 - 1) { + *pcVar8 = *pcVar2; + pcVar2 = pcVar2 + 1; + pcVar8 = pcVar8 + 1; + } + param_4[0x2c] = '\0'; + param_4[0x2d] = '\0'; + param_4[0x2e] = '\0'; + param_4[0x2f] = '\0'; + iVar7 = FUN_00404088(param_5,param_3,s_SubsystemFlags_004e34c8,&local_8); + if (iVar7 != 0) { + pcVar2 = s_DontReplicateFlag_004e34d7; + do { + if (*local_8 != *pcVar2) goto LAB_0041c772; + bVar9 = true; + if (*local_8 == '\0') break; + pcVar8 = local_8 + 1; + if (*pcVar8 != pcVar2[1]) goto LAB_0041c772; + local_8 = local_8 + 2; + pcVar2 = pcVar2 + 2; + bVar9 = *pcVar8 == '\0'; + } while (!bVar9); + if (!bVar9) { +LAB_0041c772: + FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_has_an_unknown_subsystem_flag__004e34e9,(char *)0x0); + return 0; + } + *(uint *)(param_4 + 0x2c) = *(uint *)(param_4 + 0x2c) | 4; + } + param_4[0x28] = -1; + param_4[0x29] = -1; + param_4[0x2a] = -1; + param_4[0x2b] = -1; + iVar7 = FUN_00404088(param_5,param_3,s_SegmentPageName_004e350a,&local_c); + if (iVar7 != 0) { + iVar7 = FUN_0041c808(param_1,param_2,param_6,local_c); + *(int *)(param_4 + 0x28) = iVar7; + } + uVar5 = 1; + } + else { + FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_is_too_long__Maximum_name_size_i_004e3496,(char *)0x0); + piVar4 = FUN_004db880(&DAT_00524e20,0x1f); + FUN_004dbb24(piVar4,s_character__004e34bb,(char *)0x0); + uVar5 = 0; + } + return uVar5; +} + + + +/* @0041c7e4 file=? name=FUN_0041c7e4 */ + +void __cdecl FUN_0041c7e4(int param_1) + +{ + FUN_0041a1a4(**(int **)(param_1 + 0xc),0x4e345c); + return; +} + + + +/* @0041c800 file=? name=FUN_0041c800 */ + +undefined4 FUN_0041c800(void) + +{ + return 0; +} + + + +/* @0041c808 file=? name=FUN_0041c808 */ + +int __cdecl FUN_0041c808(int param_1,char *param_2,int param_3,char *param_4) + +{ + char cVar1; + undefined4 *puVar2; + int *piVar3; + int iVar4; + int iVar5; + int *piVar6; + char *pcVar7; + char *pcVar8; + uint uVar9; + uint uVar10; + char *pcVar11; + char *pcVar12; + bool bVar13; + char local_34 [32]; + int local_14; + int *local_10; + int *local_c; + char *local_8; + + iVar5 = FUN_00404088(param_1,s_video_004e351a,s_skeleton_004e3520,&local_8); + if (iVar5 == 0) { + FUN_004dbb24((int *)&DAT_00524e68,param_2,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_is_missing__skl_file_specificati_004e3529,(char *)0x0); + } + else { + local_c = (int *)FUN_004064fc(*(char **)(param_3 + 0x10),local_8); + piVar6 = (int *)FUN_00402298(0x20); + if (piVar6 == (int *)0x0) { + piVar6 = (int *)0x0; + } + else { + piVar6 = FUN_00403e84(piVar6,(char *)local_c,1); + } + if ((*(byte *)(piVar6 + 7) & 2) == 0) { + iVar5 = piVar6[3]; + } + else { + iVar5 = piVar6[4]; + } + if (iVar5 != 0) { + local_10 = FUN_0040485c((int)piVar6,(char *)0x0); + iVar5 = 0; + puVar2 = (undefined4 *)local_10[1]; + local_14 = -1; +joined_r0x0041c90c: + do { + iVar4 = local_14; + if (puVar2 == (undefined4 *)0x0) { +LAB_0041c9c2: + local_14 = iVar4; + piVar3 = local_c; + if (local_14 == -1) { + FUN_004dbb24(&DAT_00524e20,param_4,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_SegmentPageName_Not_in_004e357b,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,(char *)piVar3,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + return 0; + } + FUN_004022e8(local_c); + FUN_00403ecc(piVar6,3); + if (local_10 == (int *)0x0) { + return local_14; + } + (**(code **)*local_10)(local_10,3); + return local_14; + } + uVar9 = 0xffffffff; + pcVar8 = (char *)(puVar2 + 2); + do { + pcVar12 = pcVar8; + if (uVar9 == 0) break; + uVar9 = uVar9 - 1; + pcVar12 = pcVar8 + 1; + cVar1 = *pcVar8; + pcVar8 = pcVar12; + } while (cVar1 != '\0'); + uVar9 = ~uVar9; + pcVar8 = pcVar12 + -uVar9; + pcVar12 = local_34; + for (uVar10 = uVar9 >> 2; uVar10 != 0; uVar10 = uVar10 - 1) { + *(undefined4 *)pcVar12 = *(undefined4 *)pcVar8; + pcVar8 = pcVar8 + 4; + pcVar12 = pcVar12 + 4; + } + pcVar11 = s_LAB_ONLY_004e3566; + pcVar7 = local_34; + for (uVar9 = uVar9 & 3; uVar9 != 0; uVar9 = uVar9 - 1) { + *pcVar12 = *pcVar8; + pcVar8 = pcVar8 + 1; + pcVar12 = pcVar12 + 1; + } + do { + bVar13 = *pcVar7 == *pcVar11; + if (!bVar13) break; + if (*pcVar7 == '\0') goto LAB_0041c987; + pcVar8 = pcVar7 + 1; + bVar13 = *pcVar8 == pcVar11[1]; + if (!bVar13) break; + pcVar7 = pcVar7 + 2; + pcVar11 = pcVar11 + 2; + bVar13 = *pcVar8 == '\0'; + } while (!bVar13); + if (!bVar13) { + pcVar8 = local_34; + pcVar12 = s_DamageZones_004e356f; + do { + if (*pcVar8 != *pcVar12) goto LAB_0041c98e; + bVar13 = true; + if (*pcVar8 == '\0') break; + pcVar7 = pcVar8 + 1; + if (*pcVar7 != pcVar12[1]) goto LAB_0041c98e; + pcVar8 = pcVar8 + 2; + pcVar12 = pcVar12 + 2; + bVar13 = *pcVar7 == '\0'; + } while (!bVar13); + if (!bVar13) { +LAB_0041c98e: + pcVar8 = local_34; + pcVar12 = param_4; + do { + if (*pcVar8 != *pcVar12) goto LAB_0041c9b7; + bVar13 = true; + if (*pcVar8 == '\0') break; + pcVar7 = pcVar8 + 1; + if (*pcVar7 != pcVar12[1]) goto LAB_0041c9b7; + pcVar8 = pcVar8 + 2; + pcVar12 = pcVar12 + 2; + bVar13 = *pcVar7 == '\0'; + } while (!bVar13); + iVar4 = iVar5; + if (bVar13) goto LAB_0041c9c2; +LAB_0041c9b7: + iVar5 = iVar5 + 1; + puVar2 = (undefined4 *)*puVar2; + goto joined_r0x0041c90c; + } + } +LAB_0041c987: + puVar2 = (undefined4 *)*puVar2; + } while( true ); + } + FUN_004dbb24((int *)&DAT_00524e68,(char *)local_c,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_is_empty_or_missing__004e354f,(char *)0x0); + FUN_004022e8(local_c); + FUN_00403ecc(piVar6,3); + } + return -1; +} + + + +/* @0041cab2 file=? name=FUN_0041cab2 */ + +void __cdecl FUN_0041cab2(int param_1,undefined4 param_2) + +{ + (**(code **)(**(int **)(param_1 + 0xe0) + 0x18))(*(int **)(param_1 + 0xe0),param_2); + return; +} + + + +/* @0041cacd file=? name=FUN_0041cacd */ + +void FUN_0041cacd(void) + +{ + return; +} + + + +/* @0041cad2 file=? name=FUN_0041cad2 */ + +void FUN_0041cad2(void) + +{ + return; +} + + + +/* @0041cad8 file=? name=FUN_0041cad8 */ + +undefined4 * __cdecl FUN_0041cad8(undefined4 *param_1) + +{ + FUN_00408e90(param_1 + 3,&DAT_004e0f8c); + FUN_00408440(param_1,&DAT_004e0f80); + return param_1; +} + + + +/* @0041cb04 file=? name=FUN_0041cb04 */ + +undefined4 * __cdecl FUN_0041cb04(undefined4 *param_1,undefined4 *param_2) + +{ + FUN_00408e90(param_1 + 3,param_2 + 3); + FUN_00408440(param_1,param_2); + return param_1; +} + + + +/* @0041cb34 file=? name=FUN_0041cb34 */ + +undefined4 FUN_0041cb34(void) + +{ + return 1; +} + + + +/* @0041cb40 file=? name=FUN_0041cb40 */ + +undefined4 * __cdecl FUN_0041cb40(undefined4 *param_1,undefined4 param_2) + +{ + FUN_00415e90(param_1,1); + *param_1 = &PTR_FUN_004e36dc; + param_1[4] = 3; + param_1[5] = 1; + param_1[3] = 0; + param_1[6] = param_2; + return param_1; +} + + + +/* @0041cb78 file=? name=FUN_0041cb78 */ + +undefined4 * __cdecl FUN_0041cb78(undefined4 *param_1,undefined4 param_2,undefined4 param_3) + +{ + undefined4 *puVar1; + + FUN_00415e90(param_1,1); + *param_1 = &PTR_FUN_004e36dc; + param_1[4] = param_3; + param_1[5] = 1; + param_1[6] = param_2; + param_1[3] = 0; + switch(param_3) { + case 0: + puVar1 = (undefined4 *)FUN_00402298(8); + if (puVar1 != (undefined4 *)0x0) { + *puVar1 = 0; + puVar1[1] = 0; + } + param_1[3] = puVar1; + break; + case 1: + puVar1 = (undefined4 *)FUN_00402298(8); + if (puVar1 != (undefined4 *)0x0) { + *puVar1 = 1; + puVar1[1] = 0; + } + param_1[3] = puVar1; + break; + case 2: + puVar1 = (undefined4 *)FUN_00402298(8); + if (puVar1 != (undefined4 *)0x0) { + *puVar1 = 2; + puVar1[1] = 0; + } + param_1[3] = puVar1; + break; + case 4: + puVar1 = (undefined4 *)FUN_00402298(0xc); + if (puVar1 != (undefined4 *)0x0) { + *puVar1 = DAT_004e0f8c; + puVar1[1] = DAT_004e0f90; + puVar1[2] = DAT_004e0f94; + } + param_1[3] = puVar1; + break; + case 5: + puVar1 = (undefined4 *)FUN_00402298(0x18); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_0041cad8(puVar1); + } + param_1[3] = puVar1; + } + return param_1; +} + + + +/* @0041ccc0 file=? name=FUN_0041ccc0 */ + +undefined4 * __cdecl FUN_0041ccc0(undefined4 *param_1,int param_2) + +{ + uint uVar1; + undefined4 *puVar2; + undefined4 *puVar3; + + FUN_00415e90(param_1,1); + *param_1 = &PTR_FUN_004e36dc; + param_1[5] = 1; + param_1[6] = *(undefined4 *)(param_2 + 0x18); + param_1[4] = *(undefined4 *)(param_2 + 0x10); + param_1[3] = 0; + uVar1 = *(uint *)(param_2 + 0x10); + if (uVar1 < 3) { + puVar3 = (undefined4 *)FUN_00402298(8); + if (puVar3 != (undefined4 *)0x0) { + puVar2 = *(undefined4 **)(param_2 + 0xc); + *puVar3 = *puVar2; + puVar3[1] = puVar2[1]; + } + param_1[3] = puVar3; + } + else if (uVar1 != 3) { + if (uVar1 == 4) { + puVar3 = (undefined4 *)FUN_00402298(0xc); + if (puVar3 != (undefined4 *)0x0) { + puVar2 = *(undefined4 **)(param_2 + 0xc); + *puVar3 = *puVar2; + puVar3[1] = puVar2[1]; + puVar3[2] = puVar2[2]; + } + param_1[3] = puVar3; + } + else if (uVar1 == 5) { + puVar3 = (undefined4 *)FUN_00402298(0x18); + if (puVar3 == (undefined4 *)0x0) { + puVar3 = (undefined4 *)0x0; + } + else { + puVar3 = FUN_0041cb04(puVar3,*(undefined4 **)(param_2 + 0xc)); + } + param_1[3] = puVar3; + } + } + return param_1; +} + + + +/* @0041cdd8 file=? name=FUN_0041cdd8 */ + +int __cdecl FUN_0041cdd8(int param_1,int param_2) + +{ + uint uVar1; + undefined4 *puVar2; + undefined4 *puVar3; + + *(undefined4 *)(param_1 + 0x14) = 1; + uVar1 = *(uint *)(param_1 + 0x10); + if (uVar1 == *(uint *)(param_2 + 0x10)) { + uVar1 = *(uint *)(param_2 + 0x10); + if (uVar1 < 3) { + *(undefined4 *)(param_1 + 0xc) = *(undefined4 *)(param_2 + 0xc); + } + else if (uVar1 != 3) { + if (uVar1 == 4) { + *(undefined4 *)(param_1 + 0xc) = *(undefined4 *)(param_2 + 0xc); + } + else if (uVar1 == 5) { + *(undefined4 *)(param_1 + 0xc) = *(undefined4 *)(param_2 + 0xc); + } + } + } + else { + if (uVar1 < 3) { + FUN_004022d0(*(int **)(param_1 + 0xc)); + } + else if (uVar1 != 3) { + if (uVar1 == 4) { + FUN_004022d0(*(int **)(param_1 + 0xc)); + } + else if (uVar1 == 5) { + FUN_004022d0(*(int **)(param_1 + 0xc)); + } + } + *(undefined4 *)(param_1 + 0x10) = *(undefined4 *)(param_2 + 0x10); + uVar1 = *(uint *)(param_2 + 0x10); + if (uVar1 < 3) { + puVar3 = (undefined4 *)FUN_00402298(8); + if (puVar3 != (undefined4 *)0x0) { + puVar2 = *(undefined4 **)(param_2 + 0xc); + *puVar3 = *puVar2; + puVar3[1] = puVar2[1]; + } + *(undefined4 **)(param_1 + 0xc) = puVar3; + } + else if (uVar1 != 3) { + if (uVar1 == 4) { + puVar3 = (undefined4 *)FUN_00402298(0xc); + if (puVar3 != (undefined4 *)0x0) { + puVar2 = *(undefined4 **)(param_2 + 0xc); + *puVar3 = *puVar2; + puVar3[1] = puVar2[1]; + puVar3[2] = puVar2[2]; + } + *(undefined4 **)(param_1 + 0xc) = puVar3; + } + else if (uVar1 == 5) { + puVar3 = (undefined4 *)FUN_00402298(0x18); + if (puVar3 == (undefined4 *)0x0) { + puVar3 = (undefined4 *)0x0; + } + else { + puVar3 = FUN_0041cb04(puVar3,*(undefined4 **)(param_2 + 0xc)); + } + *(undefined4 **)(param_1 + 0xc) = puVar3; + } + } + } + return param_1; +} + + + +/* @0041cf40 file=? name=FUN_0041cf40 */ + +void __cdecl FUN_0041cf40(int *param_1,byte param_2) + +{ + uint uVar1; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e36dc; + uVar1 = param_1[4]; + if (uVar1 < 3) { + FUN_004022d0((int *)param_1[3]); + } + else if (uVar1 != 3) { + if (uVar1 == 4) { + FUN_004022d0((int *)param_1[3]); + } + else if (uVar1 == 5) { + FUN_004022d0((int *)param_1[3]); + } + } + FUN_00415ed8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0041cfa0 file=? name=FUN_0041cfa0 */ + +int __cdecl FUN_0041cfa0(int param_1) + +{ + if (*(int *)(param_1 + 0x10) == 4) { + return *(int *)(param_1 + 0xc); + } + if (*(int *)(param_1 + 0x10) != 5) { + return *(int *)(param_1 + 0xc); + } + return *(int *)(param_1 + 0xc) + 0xc; +} + + + +/* @0041cfc8 file=? name=FUN_0041cfc8 */ + +void __cdecl FUN_0041cfc8(int param_1,int *param_2) + +{ + int *piVar1; + int iVar2; + + iVar2 = FUN_00408d78(*(int **)(param_1 + 0xc),param_2,0.0001); + if (iVar2 == 0) { + *(undefined4 *)(param_1 + 0x14) = 1; + piVar1 = *(int **)(param_1 + 0xc); + *piVar1 = *param_2; + piVar1[1] = param_2[1]; + *(undefined4 *)(*(int *)(param_1 + 0x18) + 0xfc) = 1; + } + return; +} + + + +/* @0041d020 file=? name=FUN_0041d020 */ + +void __cdecl FUN_0041d020(int param_1,float *param_2) + +{ + int iVar1; + + if (*(int *)(param_1 + 0x10) == 4) { + iVar1 = FUN_004091f4(*(float **)(param_1 + 0xc),param_2,0.0001); + if (iVar1 != 0) { + return; + } + FUN_00408e90(*(undefined4 **)(param_1 + 0xc),param_2); + } + else { + if (*(int *)(param_1 + 0x10) != 5) { + return; + } + iVar1 = FUN_004091f4((float *)(*(int *)(param_1 + 0xc) + 0xc),param_2,0.0001); + if (iVar1 != 0) { + return; + } + FUN_00408e90((undefined4 *)(*(int *)(param_1 + 0xc) + 0xc),param_2); + } + *(undefined4 *)(param_1 + 0x14) = 1; + *(undefined4 *)(*(int *)(param_1 + 0x18) + 0xfc) = 1; + return; +} + + + +/* @0041d0a8 file=? name=FUN_0041d0a8 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_0041d0a8(int param_1,float *param_2) + +{ + float10 fVar1; + + fVar1 = FUN_004dcd00((double)(*(float *)(*(int *)(param_1 + 0xc) + 4) - *param_2)); + if ((float10)_DAT_0041d118 < fVar1) { + *(float *)(*(int *)(param_1 + 0xc) + 4) = *param_2; + *(undefined4 *)(param_1 + 0x14) = 1; + *(undefined4 *)(*(int *)(param_1 + 0x18) + 0xfc) = 1; + } + return; +} + + + +/* @0041d11c file=? name=FUN_0041d11c */ + +void __cdecl FUN_0041d11c(int param_1,float *param_2) + +{ + int iVar1; + + *(undefined4 *)(param_1 + 0x14) = 1; + iVar1 = FUN_004084fc(*(float **)(param_1 + 0xc),param_2,0.0001); + if (iVar1 == 0) { + FUN_00408440(*(undefined4 **)(param_1 + 0xc),param_2); + *(undefined4 *)(param_1 + 0x14) = 1; + *(undefined4 *)(*(int *)(param_1 + 0x18) + 0xfc) = 1; + } + return; +} + + + +/* @0041d170 file=? name=FUN_0041d170 */ + +undefined4 * __cdecl +FUN_0041d170(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) + +{ + undefined4 *puVar1; + + FUN_0041c5c0(param_1,param_2,param_3,s_Joint_Subsystem_004e3617,0x33,param_4); + *param_1 = &PTR_FUN_004e36ac; + FUN_0041d2ea(param_1 + 0x39,0,0); + puVar1 = (undefined4 *)FUN_00402298(0x160); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_0041de1c(puVar1,param_1,0); + } + param_1[0x38] = puVar1; + return param_1; +} + + + +/* @0041d1dc file=? name=FUN_0041d1dc */ + +void __cdecl FUN_0041d1dc(int *param_1,byte param_2) + +{ + undefined4 *puVar1; + void *this; + int local_20 [7]; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e36ac; + FUN_0041d3b3(local_20,(int)(param_1 + 0x39)); + FUN_00417858(this,local_20,1); + puVar1 = (undefined4 *)param_1[0x38]; + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + FUN_0041d3d2(local_20,2); + FUN_0041d30d(param_1 + 0x39,2); + FUN_0041c648(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0041d260 file=? name=FUN_0041d260 */ + +void __cdecl FUN_0041d260(int param_1) + +{ + FUN_0041a1a4(**(int **)(param_1 + 0xc),0x4e35d8); + return; +} + + + +/* @0041d2ea file=? name=FUN_0041d2ea */ + +undefined4 * __cdecl FUN_0041d2ea(undefined4 *param_1,undefined4 param_2,undefined4 param_3) + +{ + FUN_00419184(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004e3690; + return param_1; +} + + + +/* @0041d30d file=? name=FUN_0041d30d */ + +void __cdecl FUN_0041d30d(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e3690; + FUN_004191b4(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0041d339 file=? name=FUN_0041d339 */ + +undefined4 __cdecl FUN_0041d339(undefined4 param_1,int param_2,int param_3) + +{ + undefined4 uVar1; + + if (*(int *)(param_3 + 0x14) == *(int *)(param_2 + 0x14)) { + uVar1 = 0; + } + else { + uVar1 = 1; + if (*(int *)(param_2 + 0x14) <= *(int *)(param_3 + 0x14)) { + uVar1 = 0xffffffff; + } + } + return uVar1; +} + + + +/* @0041d368 file=? name=FUN_0041d368 */ + +undefined4 __cdecl FUN_0041d368(undefined4 param_1,int *param_2,int param_3) + +{ + undefined4 uVar1; + + if (*(int *)(param_3 + 0x14) == *param_2) { + uVar1 = 0; + } + else { + uVar1 = 1; + if (*param_2 <= *(int *)(param_3 + 0x14)) { + uVar1 = 0xffffffff; + } + } + return uVar1; +} + + + +/* @0041d394 file=? name=FUN_0041d394 */ + +undefined4 * __cdecl FUN_0041d394(undefined4 *param_1,int param_2) + +{ + FUN_004194d8(param_1,param_2); + *param_1 = &PTR_FUN_004e3634; + return param_1; +} + + + +/* @0041d3b3 file=? name=FUN_0041d3b3 */ + +undefined4 * __cdecl FUN_0041d3b3(undefined4 *param_1,int param_2) + +{ + FUN_004194d8(param_1,param_2); + *param_1 = &PTR_FUN_004e3634; + return param_1; +} + + + +/* @0041d3d2 file=? name=FUN_0041d3d2 */ + +void __cdecl FUN_0041d3d2(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e3634; + FUN_0041951c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0041d3fe file=? name=FUN_0041d3fe */ + +undefined4 * __cdecl FUN_0041d3fe(undefined4 param_1,int param_2,undefined4 *param_3) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_0041d485(); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_0041d42e(puVar1,param_1,param_2,param_3); + } + return puVar1; +} + + + +/* @0041d42e file=? name=FUN_0041d42e */ + +undefined4 * __cdecl +FUN_0041d42e(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 *param_4) + +{ + FUN_004190e8(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004e36e8; + param_1[5] = *param_4; + return param_1; +} + + + +/* @0041d459 file=? name=FUN_0041d459 */ + +void __cdecl FUN_0041d459(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e36e8; + FUN_0041910c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_0041d4d5(param_1); + } + } + return; +} + + + +/* @0041d485 file=? name=FUN_0041d485 */ + +void FUN_0041d485(void) + +{ + int iVar1; + undefined4 *puVar2; + + iVar1 = DAT_004e36e4; + DAT_004e36e4 = DAT_004e36e4 + 1; + puVar2 = DAT_004e36e0; + if ((iVar1 == 0) && (puVar2 = (undefined4 *)FUN_00402298(0x28), puVar2 != (undefined4 *)0x0)) { + FUN_00402b98(puVar2,0x18,100,100,s_TableEntryOf_004e3627); + } + DAT_004e36e0 = puVar2; + FUN_00402f74((int)DAT_004e36e0); + return; +} + + + +/* @0041d4d5 file=? name=FUN_0041d4d5 */ + +void __cdecl FUN_0041d4d5(undefined4 *param_1) + +{ + FUN_00402f98((int)DAT_004e36e0,param_1); + DAT_004e36e4 = DAT_004e36e4 + -1; + if (DAT_004e36e4 == 0) { + if (DAT_004e36e0 != (int *)0x0) { + FUN_00402c28(DAT_004e36e0,0); + FUN_004022d0(DAT_004e36e0); + } + DAT_004e36e0 = (int *)0x0; + } + return; +} + + + +/* @0041d520 file=? name=FUN_0041d520 */ + +undefined4 * __cdecl +FUN_0041d520(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) + +{ + FUN_004178cc(param_1,param_2); + *param_1 = &PTR_FUN_004e3320; + param_1[3] = param_3; + *param_1 = &PTR_FUN_004e3954; + param_1[4] = param_4; + return param_1; +} + + + +/* @0041d554 file=? name=FUN_0041d554 */ + +void __cdecl FUN_0041d554(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e3954; + FUN_0041790c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0041d580 file=? name=FUN_0041d580 */ + +void __cdecl FUN_0041d580(int param_1) + +{ + FUN_0041a1a4(**(int **)(param_1 + 0xc),0x4e36f8); + return; +} + + + +/* @0041d59c file=? name=FUN_0041d59c */ + +void __cdecl FUN_0041d59c(int *param_1,undefined4 param_2,undefined4 param_3) + +{ + (**(code **)(*param_1 + 0xc))(param_1,param_3); + return; +} + + + +/* @0041d5b4 file=? name=FUN_0041d5b4 */ + +undefined4 * __cdecl FUN_0041d5b4(undefined4 *param_1,undefined4 param_2) + +{ + FUN_0041d520(param_1,0x11,param_2,0); + *param_1 = &PTR_FUN_004e3918; + param_1[5] = 0; + param_1[6] = 0; + param_1[7] = 0; + param_1[8] = 0; + param_1[9] = 0; + return param_1; +} + + + +/* @0041d5f0 file=? name=FUN_0041d5f0 */ + +void FUN_0041d5f0(void) + +{ + undefined4 *puVar1; + uint local_10 [3]; + + puVar1 = (undefined4 *)FUN_00402298(0x58); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_00428a78(puVar1,1,0,1); + } + FUN_00428ee0(*(int *)(DAT_004efc94 + 0x2c),(int)puVar1); + local_10[0] = 0xc; + local_10[1] = 10; + local_10[2] = 1; + FUN_0041acbc(*(int *)(DAT_004efc94 + 0x60),2,DAT_004efc94,local_10,DAT_004e17f4); + return; +} + + + +/* @0041d66c file=? name=FUN_0041d66c */ + +undefined4 __cdecl FUN_0041d66c(int param_1) + +{ + undefined4 *puVar1; + + if (*(int **)(param_1 + 0x20) != (int *)0x0) { + FUN_00403ecc(*(int **)(param_1 + 0x20),3); + } + puVar1 = (undefined4 *)FUN_00428f34(*(int *)(DAT_004efc94 + 0x2c)); + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + return 1; +} + + + +/* @0041d6a8 file=? name=FUN_0041d6a8 */ + +void __cdecl FUN_0041d6a8(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e3918; + FUN_0041d554(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0041d6d4 file=? name=FUN_0041d6d4 */ + +void __cdecl FUN_0041d6d4(int param_1,int param_2) + +{ + undefined4 uVar1; + int *piVar2; + + if (*(int *)(param_2 + 0xc) == -1) { + FUN_0044e9c0(DAT_004efc94,*(undefined4 *)(param_1 + 0x20)); + } + else { + if (*(int *)(param_2 + 0xc) == 0) { + uVar1 = FUN_004022b0(*(uint *)(param_2 + 0x10)); + *(undefined4 *)(param_1 + 0x1c) = uVar1; + *(undefined4 *)(param_1 + 0x24) = 0; + } + FUN_004d4918((undefined4 *)(*(int *)(param_1 + 0x1c) + *(int *)(param_1 + 0x24)), + (undefined4 *)(param_2 + 0x18),*(uint *)(param_2 + 0x14)); + *(int *)(param_1 + 0x24) = *(int *)(param_1 + 0x24) + *(int *)(param_2 + 0x14); + if (*(int *)(param_2 + 0x10) <= *(int *)(param_1 + 0x24)) { + piVar2 = (int *)FUN_00402298(0x20); + if (piVar2 == (int *)0x0) { + piVar2 = (int *)0x0; + } + else { + piVar2 = FUN_00403e84(piVar2,(char *)0x0,1); + } + *(int **)(param_1 + 0x20) = piVar2; + FUN_00404d00((int)piVar2,*(char **)(param_1 + 0x1c),*(int *)(param_1 + 0x24)); + FUN_00404d6c(*(undefined4 **)(param_1 + 0x20),s_last_egg_004e37a8); + FUN_0044e9c0(DAT_004efc94,*(undefined4 *)(param_1 + 0x20)); + FUN_004022d0(*(int **)(param_1 + 0x1c)); + } + } + return; +} + + + +/* @0041d7a8 file=? name=FUN_0041d7a8 */ + +void FUN_0041d7a8(void) + +{ + return; +} + + + +/* @0041d7b0 file=? name=FUN_0041d7b0 */ + +void __cdecl FUN_0041d7b0(int *param_1,undefined4 param_2,uint param_3) + +{ + int *piVar1; + + piVar1 = (int *)FUN_0041d7f0((int)param_1,param_3); + (**(code **)(*piVar1 + 0x14))(piVar1,0,param_2); + (**(code **)(*param_1 + 0x1c))(param_1,param_2,param_3); + return; +} + + + +/* @0041d7e8 file=? name=FUN_0041d7e8 */ + +void FUN_0041d7e8(void) + +{ + return; +} + + + +/* @0041d7f0 file=munga/network.cpp name=FUN_0041d7f0 */ + +int __cdecl FUN_0041d7f0(int param_1,uint param_2) + +{ + int *piVar1; + + switch(param_2) { + case 0: + goto switchD_0041d801_caseD_0; + case 1: + return *(int *)(DAT_004efc94 + 0x24); + case 2: + return *(int *)(DAT_004efc94 + 0x2c); + case 3: + return *(int *)(DAT_004efc94 + 0x30); + case 4: + return DAT_004efc94; + default: + FUN_004dbb24(&DAT_00524e20,s_______UNKNOWN_NETWORK_CLIENT_ID_004e37b1,(char *)0x0); + piVar1 = FUN_004db78c(&DAT_00524e20,param_2); + FUN_004d9c38(piVar1); + FUN_0040385c(s_Unknown_Client_ID_004e37d2,s_d__tesla_bt_munga_NETWORK_CPP_004e37e4,0x17e); + param_1 = 0; +switchD_0041d801_caseD_0: + return param_1; + case 6: + return *(int *)(DAT_004efc94 + 0x40); + } +} + + + +/* @0041d8a8 file=munga/network.cpp name=FUN_0041d8a8 */ + +undefined4 __cdecl FUN_0041d8a8(int *param_1) + +{ + int iVar1; + undefined4 uVar2; + int *piVar3; + uint local_64c; + uint local_648; + uint local_644; + undefined1 local_63c [1584]; + uint local_c; + uint local_8; + + iVar1 = (**(code **)(*param_1 + 0x34))(param_1,&local_64c); + if (iVar1 == 0) { + uVar2 = 0; + } + else { + if (local_648 == param_1[5]) { + piVar3 = (int *)FUN_0041d7f0((int)param_1,local_64c); + (**(code **)(*piVar3 + 0x14))(piVar3,&local_64c,local_63c); + } + else { + local_8 = local_644; + local_c = local_648; + FUN_004dbb24(&DAT_00524e20,s___________client_004e3802,(char *)0x0); + piVar3 = FUN_004db78c(&DAT_00524e20,local_64c); + FUN_004dbb24(piVar3,s_gameID_004e3814,(char *)0x0); + piVar3 = FUN_004db78c(piVar3,local_c); + FUN_004dbb24(piVar3,s_fromHost_004e381d,(char *)0x0); + piVar3 = FUN_004db78c(piVar3,local_8); + FUN_004d9c38(piVar3); + FUN_0040385c(s___________NOT_A_PACKET_FOR_THIS_G_004e3828, + s_d__tesla_bt_munga_NETWORK_CPP_004e384e,0x1ac); + } + (**(code **)(*param_1 + 0x38))(param_1,&local_64c); + uVar2 = 1; + } + return uVar2; +} + + + +/* @0041d9a4 file=? name=FUN_0041d9a4 */ + +undefined4 FUN_0041d9a4(void) + +{ + return 1; +} + + + +/* @0041d9b0 file=munga/network.cpp name=FUN_0041d9b0 */ + +undefined4 FUN_0041d9b0(void) + +{ + FUN_0040385c(s_NetworkManager__CheckBuffers___s_004e386c,s_d__tesla_bt_munga_NETWORK_CPP_004e38a4, + 0x1c6); + return 0; +} + + + +/* @0041d9d0 file=munga/network.cpp name=FUN_0041d9d0 */ + +void FUN_0041d9d0(void) + +{ + FUN_0040385c(s_NetworkManager__RemovePacket___s_004e38c2,s_d__tesla_bt_munga_NETWORK_CPP_004e38fa, + 0x1d1); + return; +} + + + +/* @0041dac6 file=? name=FUN_0041dac6 */ + +void FUN_0041dac6(void) + +{ + return; +} + + + +/* @0041dacb file=? name=FUN_0041dacb */ + +void FUN_0041dacb(void) + +{ + return; +} + + + +/* @0041dad0 file=? name=FUN_0041dad0 */ + +undefined4 * __cdecl FUN_0041dad0(undefined4 *param_1) + +{ + undefined4 *puVar1; + + FUN_00415e90(param_1,1); + *param_1 = &PTR_FUN_004e3d0c; + FUN_0041f2cb(param_1 + 4,0); + puVar1 = (undefined4 *)FUN_00402298(0x14); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_0041f335(puVar1,(int)(param_1 + 4)); + } + param_1[3] = puVar1; + return param_1; +} + + + +/* @0041db20 file=? name=FUN_0041db20 */ + +void __thiscall FUN_0041db20(void *this,int *param_1,byte param_2) + +{ + undefined4 *puVar1; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e3d0c; + FUN_00417858(this,(int *)param_1[3],1); + puVar1 = (undefined4 *)param_1[3]; + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + FUN_0041f2ea(param_1 + 4,2); + FUN_00415ed8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0041db7c file=? name=FUN_0041db7c */ + +int __cdecl FUN_0041db7c(int param_1) + +{ + *(undefined4 *)(param_1 + 4) = 0; + FUN_00408440((undefined4 *)(param_1 + 8),&DAT_004e0f74); + *(undefined4 *)(param_1 + 0x14) = 0; + *(undefined4 *)(param_1 + 0x18) = 0x3f800000; + *(undefined4 *)(param_1 + 0x1c) = 0; + FUN_00408440((undefined4 *)(param_1 + 0x20),&DAT_004e0f80); + *(undefined4 *)(param_1 + 0x2c) = 1; + return param_1; +} + + + +/* @0041dbd0 file=? name=FUN_0041dbd0 */ + +int __cdecl FUN_0041dbd0(int param_1,undefined4 param_2) + +{ + int iVar1; + int local_68 [5]; + int local_54 [5]; + int local_40 [5]; + int local_2c [5]; + int local_18 [5]; + + switch(param_2) { + case 1: + FUN_0041f4b3(local_40,param_1 + 0x100); + iVar1 = (**(code **)(local_40[0] + 0x30))(local_40); + if (iVar1 != 0) { + FUN_0041f4f1(local_40,2); + return iVar1; + } + FUN_0041f4f1(local_40,2); + break; + case 2: + FUN_0041f4b3(local_2c,param_1 + 0xec); + iVar1 = (**(code **)(local_2c[0] + 0x30))(local_2c); + if (iVar1 != 0) { + FUN_0041f4f1(local_2c,2); + return iVar1; + } + FUN_0041f4f1(local_2c,2); + break; + case 3: + FUN_0041f4b3(local_68,param_1 + 0x128); + iVar1 = (**(code **)(local_68[0] + 0x30))(local_68); + if (iVar1 != 0) { + FUN_0041f4f1(local_68,2); + return iVar1; + } + FUN_0041f4f1(local_68,2); + break; + case 4: + FUN_0041f4b3(local_54,param_1 + 0x114); + iVar1 = (**(code **)(local_54[0] + 0x30))(local_54); + if (iVar1 != 0) { + FUN_0041f4f1(local_54,2); + return iVar1; + } + FUN_0041f4f1(local_54,2); + } + FUN_0041f4b3(local_18,param_1 + 0xd8); + iVar1 = (**(code **)(local_18[0] + 0x30))(local_18); + FUN_0041f4f1(local_18,2); + return iVar1; +} + + + +/* @0041dd68 file=? name=FUN_0041dd68 */ + +void __cdecl FUN_0041dd68(int param_1) + +{ + FUN_0041bbd8(param_1 + 0x10,0); + FUN_0041bbd8(param_1 + 100,0); + *(undefined4 *)(param_1 + 0x158) = 0; + return; +} + + + +/* @0041dd98 file=? name=FUN_0041dd98 */ + +void __cdecl FUN_0041dd98(int param_1,undefined4 *param_2) + +{ + param_2[2] = *(undefined4 *)(param_1 + 0x158); + param_2[3] = *(undefined4 *)(param_1 + 0x24); + param_2[4] = *(undefined4 *)(param_1 + 0x78); + param_2[1] = *(undefined4 *)(param_1 + 0x13c); + param_2[5] = *(undefined4 *)(param_1 + 0xb8); + *param_2 = 0x18; + *(undefined4 *)(param_1 + 0xb8) = 0; + return; +} + + + +/* @0041ddd8 file=? name=FUN_0041ddd8 */ + +void __cdecl FUN_0041ddd8(int param_1,int param_2) + +{ + *(undefined4 *)(param_1 + 0x158) = *(undefined4 *)(param_2 + 8); + FUN_0041bbd8(param_1 + 0x10,*(int *)(param_2 + 0xc)); + FUN_0041bbd8(param_1 + 100,*(int *)(param_2 + 0x10)); + *(undefined4 *)(param_1 + 0xb8) = *(undefined4 *)(param_2 + 0x14); + return; +} + + + +/* @0041de1c file=? name=FUN_0041de1c */ + +undefined4 * __cdecl FUN_0041de1c(undefined4 *param_1,undefined4 param_2,undefined4 param_3) + +{ + int *piVar1; + undefined4 *puVar2; + int iVar3; + int *local_8; + + FUN_004178cc(param_1,0x4e); + *param_1 = &PTR_FUN_004e3cf0; + FUN_0041b9ec(param_1 + 4,2); + FUN_0041b9ec(param_1 + 0x19,3); + FUN_0041f39f(param_1 + 0x2f,0,0); + FUN_0041f449(param_1 + 0x36,0); + FUN_0041f449(param_1 + 0x3b,0); + FUN_0041f449(param_1 + 0x40,0); + FUN_0041f449(param_1 + 0x45,0); + FUN_0041f449(param_1 + 0x4a,0); + puVar2 = (undefined4 *)FUN_00402298(0x10); + if (puVar2 == (undefined4 *)0x0) { + iVar3 = 0; + } + else { + iVar3 = FUN_004023f4(puVar2); + } + param_1[0x57] = iVar3; + piVar1 = (int *)(param_1[0x57] + 0xc); + *piVar1 = *piVar1 + 1; + param_1[0x4f] = param_3; + param_1[3] = param_2; + param_1[0x56] = 0; + param_1[0x35] = 0; + iVar3 = 0; + puVar2 = param_1 + 0x51; + do { + *puVar2 = 0; + iVar3 = iVar3 + 1; + puVar2 = puVar2 + 1; + } while (iVar3 < 5); + FUN_00402a98((int *)&local_8,param_1 + 0x57,s_TrivialDamageZone_Name_004e396c); + piVar1 = local_8 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_8,3); + } + param_1[0x2e] = 0; + FUN_0041dd68((int)param_1); + return param_1; +} + + + +/* @0041df5c file=? name=FUN_0041df5c */ + +undefined4 * __cdecl +FUN_0041df5c(undefined4 *param_1,undefined4 param_2,undefined4 param_3,int *param_4) + +{ + int *piVar1; + int iVar2; + undefined4 uVar3; + undefined4 *puVar4; + int local_84 [7]; + undefined4 local_68; + int *local_64; + int local_60; + undefined4 *local_5c; + int local_58; + int *local_54; + undefined4 local_50; + int local_4c; + int local_48; + int *local_44; + undefined4 *local_40; + undefined1 local_3c [4]; + undefined4 local_38; + undefined4 local_34; + undefined4 local_30; + undefined4 local_2c; + undefined4 local_28; + undefined4 local_24; + int local_20; + undefined4 local_1c; + int local_18; + int local_14; + int *local_10; + int *local_c; + undefined4 *local_8; + + FUN_004178cc(param_1,0x4e); + *param_1 = &PTR_FUN_004e3cf0; + FUN_0041b9ec(param_1 + 4,2); + FUN_0041b9ec(param_1 + 0x19,3); + FUN_0041f39f(param_1 + 0x2f,0,0); + FUN_0041f449(param_1 + 0x36,0); + FUN_0041f449(param_1 + 0x3b,0); + FUN_0041f449(param_1 + 0x40,0); + FUN_0041f449(param_1 + 0x45,0); + FUN_0041f449(param_1 + 0x4a,0); + local_8 = (undefined4 *)FUN_00402298(0x10); + if (local_8 == (undefined4 *)0x0) { + iVar2 = 0; + } + else { + iVar2 = FUN_004023f4(local_8); + } + param_1[0x57] = iVar2; + piVar1 = (int *)(param_1[0x57] + 0xc); + *piVar1 = *piVar1 + 1; + param_1[3] = param_2; + param_1[0x4f] = param_3; + param_1[0x56] = 0; + param_1[0x35] = 0; + FUN_0041dd68((int)param_1); + local_c = param_1 + 0x57; + local_10 = param_4; + FUN_00402aec(param_4,local_c); + iVar2 = FUN_0041a1a4(**(int **)(param_1[3] + 0xc),0x4e4afc); + if (iVar2 == 0) { + iVar2 = 0; + do { + (**(code **)(*param_4 + 0x1c))(param_4,local_3c,4); + iVar2 = iVar2 + 1; + } while (iVar2 < 5); + } + else { + local_14 = param_1[3]; + local_20 = 0; + do { + (**(code **)(*param_4 + 0x1c))(param_4,&local_18,4); + iVar2 = 0; + if (0 < local_18) { + do { + (**(code **)(*param_4 + 0x1c))(param_4,&local_1c,4); + local_24 = local_1c; + FUN_0041f216(local_84,local_14 + 0x300); + uVar3 = (**(code **)(local_84[0] + 0x34))(local_84,local_24); + FUN_0041f235(local_84,2); + switch(local_20) { + case 0: + local_28 = uVar3; + (**(code **)(param_1[0x36] + 4))(param_1 + 0x36,uVar3); + break; + case 1: + local_2c = uVar3; + (**(code **)(param_1[0x40] + 4))(param_1 + 0x40,uVar3); + break; + case 2: + local_30 = uVar3; + (**(code **)(param_1[0x3b] + 4))(param_1 + 0x3b,uVar3); + break; + case 3: + local_34 = uVar3; + (**(code **)(param_1[0x4a] + 4))(param_1 + 0x4a,uVar3); + break; + case 4: + local_38 = uVar3; + (**(code **)(param_1[0x45] + 4))(param_1 + 0x45,uVar3); + } + iVar2 = iVar2 + 1; + } while (iVar2 < local_18); + } + local_20 = local_20 + 1; + } while (local_20 < 5); + } + local_40 = param_1 + 0x50; + local_44 = param_4; + (**(code **)(*param_4 + 0x1c))(param_4,local_40,4); + local_48 = 0; + do { + (**(code **)(*param_4 + 0x1c))(param_4,param_1 + local_48 + 0x51,4); + local_48 = local_48 + 1; + } while (local_48 < 5); + local_54 = param_4; + (**(code **)(*param_4 + 0x1c))(param_4,&local_4c,4); + local_48 = 0; + if (0 < local_4c) { + do { + (**(code **)(*param_4 + 0x1c))(param_4,&local_50,4); + (**(code **)(*param_4 + 0x1c))(param_4,&local_58,4); + if (local_58 != 0) { + puVar4 = (undefined4 *)FUN_00402298(0x24); + if (puVar4 == (undefined4 *)0x0) { + local_5c = (undefined4 *)0x0; + } + else { + local_5c = FUN_0041dad0(puVar4); + } + local_60 = 0; + if (0 < local_58) { + do { + puVar4 = (undefined4 *)FUN_00402298(0x10); + if (puVar4 == (undefined4 *)0x0) { + local_64 = (int *)0x0; + } + else { + local_64 = (int *)FUN_004023f4(puVar4); + } + local_64[3] = local_64[3] + 1; + FUN_00402aec(param_4,(int *)&local_64); + puVar4 = (undefined4 *)FUN_00402298(0x10); + if (puVar4 == (undefined4 *)0x0) { + puVar4 = (undefined4 *)0x0; + } + else { + puVar4 = FUN_0041547b(puVar4,(int *)&local_64); + } + (**(code **)(local_5c[4] + 4))(local_5c + 4,puVar4); + piVar1 = local_64 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_64,3); + } + local_60 = local_60 + 1; + } while (local_60 < local_58); + } + (**(code **)(*(int *)local_5c[3] + 4))((int *)local_5c[3]); + local_68 = local_50; + (**(code **)(param_1[0x2f] + 8))(param_1 + 0x2f,local_5c,&local_68); + } + local_48 = local_48 + 1; + } while (local_48 < local_4c); + } + param_1[0x2e] = 0; + return param_1; +} + + + +/* @0041e394 file=? name=FUN_0041e394 */ + +void __cdecl FUN_0041e394(int *param_1,byte param_2) + +{ + int *piVar1; + undefined4 *puVar2; + int *piVar3; + void *this; + int local_20 [7]; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e3cf0; + FUN_004012c7(local_20,(int)(param_1 + 0x2f)); + FUN_00417858(this,local_20,1); + puVar2 = (undefined4 *)param_1[0x35]; + if ((puVar2 != (undefined4 *)0x0) && (puVar2 != (undefined4 *)0x0)) { + (**(code **)*puVar2)(puVar2,3); + } + FUN_004012e6(local_20,2); + piVar3 = (int *)param_1[0x57]; + piVar1 = piVar3 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(piVar3,3); + } + FUN_0041f468(param_1 + 0x4a,2); + FUN_0041f468(param_1 + 0x45,2); + FUN_0041f468(param_1 + 0x40,2); + FUN_0041f468(param_1 + 0x3b,2); + FUN_0041f468(param_1 + 0x36,2); + FUN_0041f3c2(param_1 + 0x2f,2); + FUN_0041baa4(param_1 + 0x19,2); + FUN_0041baa4(param_1 + 4,2); + FUN_0041790c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0041e4a8 file=? name=FUN_0041e4a8 */ + +int * __cdecl FUN_0041e4a8(int param_1,int *param_2) + +{ + int *piVar1; + + piVar1 = (int *)FUN_00402298(0x18); + if (piVar1 == (int *)0x0) { + piVar1 = (int *)0x0; + } + else { + piVar1 = FUN_0042a748(piVar1,param_2); + } + *(int **)(param_1 + 0xd4) = piVar1; + return piVar1; +} + + + +/* @0041e4e0 file=? name=FUN_0041e4e0 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_0041e4e0(int *param_1,int *param_2) + +{ + float fVar1; + + param_1[0x56] = (int)((float)param_2[1] * (float)param_1[*param_2 + 0x51] + (float)param_1[0x56]); + fVar1 = _DAT_0041e57c; + if ((_DAT_0041e57c <= (float)param_1[0x56]) && + (fVar1 = _DAT_0041e580, (float)param_1[0x56] <= _DAT_0041e580)) { + fVar1 = (float)param_1[0x56]; + } + param_1[0x56] = (int)fVar1; + param_1[0x2e] = param_1[0x2e] | 4; + if (_DAT_0041e580 <= (float)param_1[0x56]) { + FUN_0041bbd8((int)(param_1 + 4),1); + (**(code **)(*param_1 + 0xc))(param_1,1); + param_1[0x2e] = param_1[0x2e] | 8; + } + return; +} + + + +/* @0041e590 file=? name=FUN_0041e590 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl +FUN_0041e590(int param_1,undefined4 param_2,int param_3,int *param_4,int *param_5,int param_6, + int param_7) + +{ + undefined4 *puVar1; + int iVar2; + undefined4 *puVar3; + uint *puVar4; + int *piVar5; + char cVar6; + undefined4 uVar7; + int *local_d4; + undefined4 *local_d0; + int *local_cc; + int *local_c8; + int local_c4; + int *local_c0; + int *local_bc; + int *local_b8; + int *local_b4; + uint *local_b0; + uint *local_ac; + uint *local_a8; + uint *local_a4; + uint *local_a0; + uint *local_9c; + uint *local_98; + uint *local_94; + uint *local_90; + uint *local_8c; + uint *local_88; + uint *local_84; + uint *local_80; + uint *local_7c; + uint *local_78; + uint *local_74; + undefined4 local_70; + int *local_6c; + int *local_68; + int *local_64; + int local_60; + int *local_5c; + int *local_58; + undefined4 local_54; + int *local_50; + int *local_4c; + int *local_48; + int *local_44; + int *local_40; + int *local_3c; + float local_38; + float local_34; + int *local_30; + int *local_2c; + int *local_28; + char *local_24; + int *local_20; + float local_1c; + undefined4 local_18; + int *local_14; + char *local_10; + int *local_c; + int *local_8; + + local_8 = param_5; + FUN_004029b0(param_5,(int)param_4); + iVar2 = FUN_00403f84(param_6,(char *)param_4[2]); + if (iVar2 == 0) { + local_c = param_4; + local_10 = (char *)param_4[2]; + FUN_004dbb24((int *)&DAT_00524e68,local_10,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_listed_in__skl__does_not_exist_i_004e3983,(char *)0x0); + FUN_004d9c38((int *)&DAT_00524e68); + uVar7 = 0xffffffff; + local_14 = param_4; + piVar5 = param_4 + 3; + *piVar5 = *piVar5 + -1; + if (*piVar5 == 0) { + FUN_004024d8(param_4,3); + } + } + else { + if (param_3 == 0) { + local_18 = 0; + iVar2 = 0; + do { + (**(code **)(*param_5 + 0x20))(param_5,&local_18,4); + iVar2 = iVar2 + 1; + } while (iVar2 < 5); + } + else { + FUN_0041f07c(param_5,(char *)param_4[2],param_6,param_3,s_DefaultEffectSiteName_004e39b0); + FUN_0041f07c(param_5,(char *)param_4[2],param_6,param_3,s_ExternalVideoEffectSiteName_004e39c6 + ); + FUN_0041f07c(param_5,(char *)param_4[2],param_6,param_3,s_InternalVideoEffectSiteName_004e39e2 + ); + FUN_0041f07c(param_5,(char *)param_4[2],param_6,param_3,s_ExternalAudioEffectSiteName_004e39fe + ); + FUN_0041f07c(param_5,(char *)param_4[2],param_6,param_3,s_InternalAudioEffectSiteName_004e3a1a + ); + } + iVar2 = FUN_00404118(param_6,(char *)param_4[2],s_WeaponDamagePoints_004e3a36,&local_1c); + if (iVar2 == 0) { + local_20 = param_4; + local_24 = (char *)param_4[2]; + FUN_004dbb24((int *)&DAT_00524e68,local_24,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_Must_have_a_WeaponDamagePoints_004e3a49,(char *)0x0); + FUN_004d9c38((int *)&DAT_00524e68); + uVar7 = 0; + local_28 = param_4; + piVar5 = param_4 + 3; + *piVar5 = *piVar5 + -1; + if (*piVar5 == 0) { + FUN_004024d8(param_4,3); + } + } + else if (local_1c == _DAT_0041f074) { + FUN_004dbb24((int *)&DAT_00524e68,s_DefaultDamagePoints_must_have_a_n_004e3a69,(char *)0x0); + FUN_004d9c38((int *)&DAT_00524e68); + uVar7 = 0; + local_2c = param_4; + piVar5 = param_4 + 3; + *piVar5 = *piVar5 + -1; + if (*piVar5 == 0) { + FUN_004024d8(param_4,3); + } + } + else { + local_30 = param_5; + (**(code **)(*param_5 + 0x20))(param_5,&local_1c,4); + iVar2 = FUN_00404118(param_6,(char *)param_4[2],s_CollisionDamagePoints_004e3a9a,&local_34); + if (iVar2 == 0) { + local_38 = _DAT_0041f078 / local_1c; + } + else if (local_34 == _DAT_0041f074) { + local_38 = _DAT_0041f078 / local_1c; + } + else { + local_38 = _DAT_0041f078 / local_34; + } + local_3c = param_5; + (**(code **)(*param_5 + 0x20))(param_5,&local_38,4); + iVar2 = FUN_00404118(param_6,(char *)param_4[2],s_BallisticDamagePoints_004e3ab0,&local_34); + local_38 = local_34; + if (iVar2 == 0) { + local_38 = local_1c; + } + local_38 = _DAT_0041f078 / local_38; + local_40 = param_5; + (**(code **)(*param_5 + 0x20))(param_5,&local_38,4); + iVar2 = FUN_00404118(param_6,(char *)param_4[2],s_ExplosiveDamagePoints_004e3ac6,&local_34); + local_38 = local_34; + if (iVar2 == 0) { + local_38 = local_1c; + } + local_38 = _DAT_0041f078 / local_38; + local_44 = param_5; + (**(code **)(*param_5 + 0x20))(param_5,&local_38,4); + iVar2 = FUN_00404118(param_6,(char *)param_4[2],s_LaserDamagePoints_004e3adc,&local_34); + local_38 = local_34; + if (iVar2 == 0) { + local_38 = local_1c; + } + local_38 = _DAT_0041f078 / local_38; + local_48 = param_5; + (**(code **)(*param_5 + 0x20))(param_5,&local_38,4); + iVar2 = FUN_00404118(param_6,(char *)param_4[2],s_EnergyDamagePoints_004e3aee,&local_34); + if (iVar2 == 0) { + local_34 = local_1c; + } + local_38 = _DAT_0041f078 / local_34; + local_4c = param_5; + (**(code **)(*param_5 + 0x20))(param_5,&local_38,4); + local_50 = FUN_00404720(param_1,s_video_004e3b01,&DAT_004e3b07); + if (local_50 == (int *)0x0) { + local_54 = 0; + local_58 = param_5; + (**(code **)(*param_5 + 0x20))(param_5,&local_54,4); + uVar7 = 1; + local_5c = param_4; + piVar5 = param_4 + 3; + *piVar5 = *piVar5 + -1; + if (*piVar5 == 0) { + FUN_004024d8(param_4,3); + } + } + else { + local_60 = FUN_00403b60((int)local_50); + local_64 = param_5; + (**(code **)(*param_5 + 0x20))(param_5,&local_60,4); + if (local_60 != 0) { + puVar1 = (undefined4 *)local_50[1]; + while (puVar1 != (undefined4 *)0x0) { + puVar3 = (undefined4 *)FUN_00402298(0x10); + if (puVar3 == (undefined4 *)0x0) { + local_68 = (int *)0x0; + } + else { + local_68 = (int *)FUN_004023f4(puVar3); + } + local_68[3] = local_68[3] + 1; + FUN_00402a98((int *)&local_6c,(int *)&local_68,(char *)(puVar1 + 2)); + piVar5 = local_6c + 3; + *piVar5 = *piVar5 + -1; + if (*piVar5 == 0) { + FUN_004024d8(local_6c,3); + } + puVar4 = (uint *)FUN_00402298(0x10); + if (puVar4 == (uint *)0x0) { + local_74 = (uint *)0x0; + } + else { + local_74 = FUN_00402460(puVar4,&DAT_004e3b0b); + } + local_74[3] = local_74[3] + 1; + iVar2 = FUN_004027d8((int)local_68,(int)local_74); + cVar6 = iVar2 == 0; + local_78 = local_74; + puVar4 = local_74 + 3; + *puVar4 = *puVar4 - 1; + if (*puVar4 == 0) { + FUN_004024d8((int *)local_74,3); + } + if (cVar6 == '\0') { + puVar4 = (uint *)FUN_00402298(0x10); + if (puVar4 == (uint *)0x0) { + local_7c = (uint *)0x0; + } + else { + local_7c = FUN_00402460(puVar4,&DAT_004e3b0f); + } + local_7c[3] = local_7c[3] + 1; + iVar2 = FUN_004027d8((int)local_68,(int)local_7c); + cVar6 = iVar2 == 0; + local_80 = local_7c; + puVar4 = local_7c + 3; + *puVar4 = *puVar4 - 1; + if (*puVar4 == 0) { + FUN_004024d8((int *)local_7c,3); + } + if (cVar6 == '\0') { + puVar4 = (uint *)FUN_00402298(0x10); + if (puVar4 == (uint *)0x0) { + local_84 = (uint *)0x0; + } + else { + local_84 = FUN_00402460(puVar4,&DAT_004e3b14); + } + local_84[3] = local_84[3] + 1; + iVar2 = FUN_004027d8((int)local_68,(int)local_84); + cVar6 = iVar2 == 0; + local_88 = local_84; + puVar4 = local_84 + 3; + *puVar4 = *puVar4 - 1; + if (*puVar4 == 0) { + FUN_004024d8((int *)local_84,3); + } + if (cVar6 == '\0') { + puVar4 = (uint *)FUN_00402298(0x10); + if (puVar4 == (uint *)0x0) { + local_8c = (uint *)0x0; + } + else { + local_8c = FUN_00402460(puVar4,&DAT_004e3b19); + } + local_8c[3] = local_8c[3] + 1; + iVar2 = FUN_004027d8((int)local_68,(int)local_8c); + cVar6 = iVar2 == 0; + local_90 = local_8c; + puVar4 = local_8c + 3; + *puVar4 = *puVar4 - 1; + if (*puVar4 == 0) { + FUN_004024d8((int *)local_8c,3); + } + if (cVar6 == '\0') { + puVar4 = (uint *)FUN_00402298(0x10); + if (puVar4 == (uint *)0x0) { + local_94 = (uint *)0x0; + } + else { + local_94 = FUN_00402460(puVar4,&DAT_004e3b1e); + } + local_94[3] = local_94[3] + 1; + iVar2 = FUN_004027d8((int)local_68,(int)local_94); + cVar6 = iVar2 == 0; + local_98 = local_94; + puVar4 = local_94 + 3; + *puVar4 = *puVar4 - 1; + if (*puVar4 == 0) { + FUN_004024d8((int *)local_94,3); + } + if (cVar6 == '\0') { + puVar4 = (uint *)FUN_00402298(0x10); + if (puVar4 == (uint *)0x0) { + local_9c = (uint *)0x0; + } + else { + local_9c = FUN_00402460(puVar4,&DAT_004e3b23); + } + local_9c[3] = local_9c[3] + 1; + iVar2 = FUN_004027d8((int)local_68,(int)local_9c); + cVar6 = iVar2 == 0; + local_a0 = local_9c; + puVar4 = local_9c + 3; + *puVar4 = *puVar4 - 1; + if (*puVar4 == 0) { + FUN_004024d8((int *)local_9c,3); + } + if (cVar6 == '\0') { + puVar4 = (uint *)FUN_00402298(0x10); + if (puVar4 == (uint *)0x0) { + local_a4 = (uint *)0x0; + } + else { + local_a4 = FUN_00402460(puVar4,&DAT_004e3b28); + } + local_a4[3] = local_a4[3] + 1; + iVar2 = FUN_004027d8((int)local_68,(int)local_a4); + cVar6 = iVar2 == 0; + local_a8 = local_a4; + puVar4 = local_a4 + 3; + *puVar4 = *puVar4 - 1; + if (*puVar4 == 0) { + FUN_004024d8((int *)local_a4,3); + } + if (cVar6 == '\0') { + puVar4 = (uint *)FUN_00402298(0x10); + if (puVar4 == (uint *)0x0) { + local_ac = (uint *)0x0; + } + else { + local_ac = FUN_00402460(puVar4,&DAT_004e3b2d); + } + local_ac[3] = local_ac[3] + 1; + iVar2 = FUN_004027d8((int)local_68,(int)local_ac); + cVar6 = iVar2 == 0; + local_b0 = local_ac; + puVar4 = local_ac + 3; + *puVar4 = *puVar4 - 1; + if (*puVar4 == 0) { + FUN_004024d8((int *)local_ac,3); + } + if (cVar6 != '\0') { + local_70 = 7; + } + } + else { + local_70 = 6; + } + } + else { + local_70 = 5; + } + } + else { + local_70 = 4; + } + } + else { + local_70 = 3; + } + } + else { + local_70 = 2; + } + } + else { + local_70 = 1; + } + } + else { + local_70 = 0; + } + local_b4 = param_5; + (**(code **)(*param_5 + 0x20))(param_5,&local_70,4); + local_b8 = (int *)FUN_004064fc(*(char **)(param_7 + 0x10),(char *)puVar1[1]); + piVar5 = (int *)FUN_00402298(0x20); + if (piVar5 == (int *)0x0) { + local_bc = (int *)0x0; + } + else { + local_bc = FUN_00403e84(piVar5,(char *)local_b8,1); + } + local_c0 = FUN_00404720((int)local_bc,(char *)param_4[2],s_material_004e3b32); + local_c4 = 0; + if (local_c0 == (int *)0x0) { + (**(code **)(*param_5 + 0x20))(param_5,&local_c4,4); + } + else { + local_c4 = FUN_00403b60((int)local_c0); + local_c8 = param_5; + (**(code **)(*param_5 + 0x20))(param_5,&local_c4,4); + if (local_c4 != 0) { + puVar3 = (undefined4 *)local_c0[1]; + local_d0 = (undefined4 *)FUN_00402298(0x10); + if (local_d0 == (undefined4 *)0x0) { + local_cc = (int *)0x0; + } + else { + local_cc = (int *)FUN_004023f4(local_d0); + } + local_cc[3] = local_cc[3] + 1; + for (; puVar3 != (undefined4 *)0x0; puVar3 = (undefined4 *)*puVar3) { + FUN_00402a98((int *)&local_d4,(int *)&local_cc,(char *)puVar3[1]); + piVar5 = local_d4 + 3; + *piVar5 = *piVar5 + -1; + if (*piVar5 == 0) { + FUN_004024d8(local_d4,3); + } + FUN_004029b0(param_5,(int)local_cc); + } + piVar5 = local_cc + 3; + *piVar5 = *piVar5 + -1; + if (*piVar5 == 0) { + FUN_004024d8(local_cc,3); + } + } + if (local_c0 != (int *)0x0) { + (**(code **)*local_c0)(local_c0,3); + } + } + puVar1 = (undefined4 *)*puVar1; + FUN_004022d0(local_b8); + FUN_00403ecc(local_bc,3); + piVar5 = local_68 + 3; + *piVar5 = *piVar5 + -1; + if (*piVar5 == 0) { + FUN_004024d8(local_68,3); + } + } + } + if (local_50 != (int *)0x0) { + (**(code **)*local_50)(local_50,3); + } + uVar7 = 1; + piVar5 = param_4 + 3; + *piVar5 = *piVar5 + -1; + if (*piVar5 == 0) { + FUN_004024d8(param_4,3); + } + } + } + } + return uVar7; +} + + + +/* @0041f07c file=? name=FUN_0041f07c */ + +undefined4 __cdecl FUN_0041f07c(int *param_1,char *param_2,int param_3,int param_4,char *param_5) + +{ + int *piVar1; + undefined4 *puVar2; + int *piVar3; + undefined4 *puVar4; + undefined4 uVar5; + int *local_14; + int local_10; + int *local_c; + int local_8; + + local_8 = 0; + piVar3 = FUN_00404720(param_3,param_2,param_5); + if (piVar3 == (int *)0x0) { + (**(code **)(*param_1 + 0x20))(param_1,&local_8,4); + } + else { + local_8 = FUN_00403b60((int)piVar3); + (**(code **)(*param_1 + 0x20))(param_1,&local_8,4); + puVar2 = (undefined4 *)piVar3[1]; + puVar4 = (undefined4 *)FUN_00402298(0x10); + if (puVar4 == (undefined4 *)0x0) { + local_c = (int *)0x0; + } + else { + local_c = (int *)FUN_004023f4(puVar4); + } + local_c[3] = local_c[3] + 1; + for (; puVar2 != (undefined4 *)0x0; puVar2 = (undefined4 *)*puVar2) { + FUN_00402a98((int *)&local_14,(int *)&local_c,(char *)puVar2[1]); + piVar1 = local_14 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_14,3); + } + local_c[3] = local_c[3] + 1; + local_10 = FUN_0042760c(local_c,param_4); + if (local_10 == -1) { + FUN_004dbb24((int *)&DAT_00524e68,(char *)local_c[2],(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_not_found_in_skl_file___004e3b3b,(char *)0x0); + FUN_004d9c38((int *)&DAT_00524e68); + if (piVar3 != (int *)0x0) { + (**(code **)*piVar3)(piVar3,3); + } + uVar5 = 0xffffffff; + piVar3 = local_c + 3; + *piVar3 = *piVar3 + -1; + if (*piVar3 == 0) { + FUN_004024d8(local_c,3); + return uVar5; + } + return 0xffffffff; + } + (**(code **)(*param_1 + 0x20))(param_1,&local_10,4); + } + if (piVar3 != (int *)0x0) { + (**(code **)*piVar3)(piVar3,3); + } + piVar3 = local_c + 3; + *piVar3 = *piVar3 + -1; + if (*piVar3 == 0) { + FUN_004024d8(local_c,3); + } + } + return 1; +} + + + +/* @0041f1f7 file=? name=FUN_0041f1f7 */ + +undefined4 * __cdecl FUN_0041f1f7(undefined4 *param_1,int param_2) + +{ + FUN_004194d8(param_1,param_2); + *param_1 = &PTR_FUN_004e3c94; + return param_1; +} + + + +/* @0041f216 file=? name=FUN_0041f216 */ + +undefined4 * __cdecl FUN_0041f216(undefined4 *param_1,int param_2) + +{ + FUN_004194d8(param_1,param_2); + *param_1 = &PTR_FUN_004e3c94; + return param_1; +} + + + +/* @0041f235 file=? name=FUN_0041f235 */ + +void __cdecl FUN_0041f235(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e3c94; + FUN_0041951c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0041f261 file=? name=FUN_0041f261 */ + +undefined4 * __cdecl FUN_0041f261(undefined4 *param_1,int param_2) + +{ + FUN_004194d8(param_1,param_2); + *param_1 = &PTR_FUN_004e3c38; + return param_1; +} + + + +/* @0041f280 file=? name=FUN_0041f280 */ + +undefined4 * __cdecl FUN_0041f280(undefined4 *param_1,int param_2) + +{ + FUN_004194d8(param_1,param_2); + *param_1 = &PTR_FUN_004e3c38; + return param_1; +} + + + +/* @0041f29f file=? name=FUN_0041f29f */ + +void __cdecl FUN_0041f29f(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e3c38; + FUN_0041951c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0041f2cb file=? name=FUN_0041f2cb */ + +undefined4 * __cdecl FUN_0041f2cb(undefined4 *param_1,undefined4 param_2) + +{ + FUN_0041827c(param_1,param_2); + *param_1 = &PTR_FUN_004e3c30; + return param_1; +} + + + +/* @0041f2ea file=? name=FUN_0041f2ea */ + +void __cdecl FUN_0041f2ea(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e3c30; + FUN_004182a8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0041f316 file=? name=FUN_0041f316 */ + +undefined4 * __cdecl FUN_0041f316(undefined4 *param_1,int param_2) + +{ + FUN_00418398(param_1,param_2); + *param_1 = &PTR_FUN_004e3bdc; + return param_1; +} + + + +/* @0041f335 file=? name=FUN_0041f335 */ + +undefined4 * __cdecl FUN_0041f335(undefined4 *param_1,int param_2) + +{ + FUN_00418398(param_1,param_2); + *param_1 = &PTR_FUN_004e3bdc; + return param_1; +} + + + +/* @0041f354 file=? name=FUN_0041f354 */ + +undefined4 * __cdecl FUN_0041f354(undefined4 *param_1,int param_2) + +{ + FUN_004183c0(param_1,param_2); + *param_1 = &PTR_FUN_004e3bdc; + return param_1; +} + + + +/* @0041f373 file=? name=FUN_0041f373 */ + +void __cdecl FUN_0041f373(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e3bdc; + FUN_004183ec(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0041f39f file=? name=FUN_0041f39f */ + +undefined4 * __cdecl FUN_0041f39f(undefined4 *param_1,undefined4 param_2,undefined4 param_3) + +{ + FUN_00419184(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004e3bc0; + return param_1; +} + + + +/* @0041f3c2 file=? name=FUN_0041f3c2 */ + +void __cdecl FUN_0041f3c2(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e3bc0; + FUN_004191b4(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0041f3ee file=? name=FUN_0041f3ee */ + +undefined4 __cdecl FUN_0041f3ee(undefined4 param_1,int param_2,int param_3) + +{ + undefined4 uVar1; + + if (*(int *)(param_3 + 0x14) == *(int *)(param_2 + 0x14)) { + uVar1 = 0; + } + else { + uVar1 = 1; + if (*(int *)(param_2 + 0x14) <= *(int *)(param_3 + 0x14)) { + uVar1 = 0xffffffff; + } + } + return uVar1; +} + + + +/* @0041f41d file=? name=FUN_0041f41d */ + +undefined4 __cdecl FUN_0041f41d(undefined4 param_1,int *param_2,int param_3) + +{ + undefined4 uVar1; + + if (*(int *)(param_3 + 0x14) == *param_2) { + uVar1 = 0; + } + else { + uVar1 = 1; + if (*param_2 <= *(int *)(param_3 + 0x14)) { + uVar1 = 0xffffffff; + } + } + return uVar1; +} + + + +/* @0041f449 file=? name=FUN_0041f449 */ + +undefined4 * __cdecl FUN_0041f449(undefined4 *param_1,undefined4 param_2) + +{ + FUN_0041827c(param_1,param_2); + *param_1 = &PTR_FUN_004e3bb8; + return param_1; +} + + + +/* @0041f468 file=? name=FUN_0041f468 */ + +void __cdecl FUN_0041f468(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e3bb8; + FUN_004182a8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0041f494 file=? name=FUN_0041f494 */ + +undefined4 * __cdecl FUN_0041f494(undefined4 *param_1,int param_2) + +{ + FUN_00418398(param_1,param_2); + *param_1 = &PTR_FUN_004e3b64; + return param_1; +} + + + +/* @0041f4b3 file=? name=FUN_0041f4b3 */ + +undefined4 * __cdecl FUN_0041f4b3(undefined4 *param_1,int param_2) + +{ + FUN_00418398(param_1,param_2); + *param_1 = &PTR_FUN_004e3b64; + return param_1; +} + + + +/* @0041f4d2 file=? name=FUN_0041f4d2 */ + +undefined4 * __cdecl FUN_0041f4d2(undefined4 *param_1,int param_2) + +{ + FUN_004183c0(param_1,param_2); + *param_1 = &PTR_FUN_004e3b64; + return param_1; +} + + + +/* @0041f4f1 file=? name=FUN_0041f4f1 */ + +void __cdecl FUN_0041f4f1(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e3b64; + FUN_004183ec(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0041f51d file=? name=FUN_0041f51d */ + +undefined4 * __cdecl FUN_0041f51d(undefined4 param_1,int param_2,undefined4 *param_3) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_0041d485(); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_0041d42e(puVar1,param_1,param_2,param_3); + } + return puVar1; +} + + + +/* @0041f54d file=? name=FUN_0041f54d */ + +void __cdecl FUN_0041f54d(int param_1,int param_2) + +{ + FUN_0041bbd8(param_1 + 100,param_2); + *(uint *)(param_1 + 0xb8) = *(uint *)(param_1 + 0xb8) | 8; + return; +} + + + +/* @0041f59c file=? name=FUN_0041f59c */ + +void __cdecl FUN_0041f59c(int param_1,uint *param_2) + +{ + if ((int)param_2[1] < 3) { + FUN_00419bbc(param_1,(int)param_2); + } + FUN_00420ef4(param_2 + 3,(undefined4 *)(param_1 + 0x184)); + param_2[5] = *(uint *)(param_1 + 0x194); + if ((*(uint *)(param_1 + 0x28) & 0xc) == 4) { + (**(code **)(**(int **)(DAT_004efc94 + 0x20) + 0x18)) + (*(int **)(DAT_004efc94 + 0x20),param_2,1,*(undefined4 *)(param_1 + 0x18c)); + } + else if ((*(byte *)(param_1 + 0x28) & 0x10) == 0) { + FUN_0041acbc(*(int *)(DAT_004efc94 + 0x60),1,param_1,param_2,DAT_004e17f4); + } + else { + FUN_00419bbc(param_1,(int)param_2); + } + return; +} + + + +/* @0041f640 file=? name=FUN_0041f640 */ + +void __cdecl FUN_0041f640(int param_1,uint *param_2) + +{ + FUN_00420ef4(param_2 + 3,(undefined4 *)(param_1 + 0x184)); + param_2[5] = *(uint *)(param_1 + 0x194); + FUN_00434ea0(*(undefined4 *)(DAT_004efc94 + 0x30),param_1,param_2); + return; +} + + + +/* @0041f680 file=? name=FUN_0041f680 */ + +void __cdecl FUN_0041f680(int param_1,int *param_2,int param_3) + +{ + if (param_3 == 0) { + FUN_0041bd60(param_1,param_2,0); + FUN_0040a938(param_2 + 4,(undefined4 *)(param_1 + 0x100)); + FUN_0040a938((undefined4 *)(param_1 + 300),(undefined4 *)(param_1 + 0x100)); + *param_2 = 0x2c; + } + else if (param_3 == 1) { + param_2[2] = *(int *)(param_1 + 0x10); + *(undefined2 *)((int)param_2 + 6) = 1; + FUN_0041f858(param_1,param_2); + } + else { + FUN_0041bd60(param_1,param_2,(short)param_3); + } + *(undefined2 *)(param_2 + 1) = 0; + return; +} + + + +/* @0041f710 file=? name=FUN_0041f710 */ + +void __cdecl FUN_0041f710(int param_1,undefined4 *param_2) + +{ + int *piVar1; + int *piVar2; + undefined4 local_14; + int local_10; + int *local_c; + int local_8; + + FUN_004030dc(&local_14,param_2,*param_2,0x1c); + for (; piVar1 = local_c, local_8 != (int)local_c - local_10; + local_c = (int *)((int)local_c + *piVar1)) { + piVar2 = (int *)FUN_0041f964(param_1,*(ushort *)(local_c + 1) - 1); + (**(code **)(*piVar2 + 0x18))(piVar2,piVar1); + } + return; +} + + + +/* @0041f76c file=? name=FUN_0041f76c */ + +void __cdecl FUN_0041f76c(int param_1,undefined4 *param_2) + +{ + if (*(short *)((int)param_2 + 6) == 0) { + FUN_0040a938((undefined4 *)(param_1 + 300),param_2 + 4); + if ((*(int *)(DAT_004efc94 + 0x88) < 5) || (*(int *)(DAT_004efc94 + 0x88) == 0xb)) { + FUN_0040a938((undefined4 *)(param_1 + 0x100),(undefined4 *)(param_1 + 300)); + FUN_0040ab44((float *)(param_1 + 0xd0),(undefined4 *)(param_1 + 0x100)); + } + FUN_0041bd34(param_1,(int)param_2); + } + else if (*(short *)((int)param_2 + 6) == 1) { + FUN_0041f800(param_1,param_2); + } + else { + FUN_0041bd34(param_1,(int)param_2); + } + return; +} + + + +/* @0041f800 file=? name=FUN_0041f800 */ + +void __cdecl FUN_0041f800(int param_1,undefined4 *param_2) + +{ + int *piVar1; + int *piVar2; + undefined4 local_14; + int local_10; + int *local_c; + int local_8; + + FUN_004030dc(&local_14,param_2,*param_2,0x10); + for (; piVar2 = local_c, local_8 != (int)local_c - local_10; + local_c = (int *)((int)local_c + *piVar2)) { + piVar1 = *(int **)(*(int *)(param_1 + 0x120) + local_c[1] * 4); + (**(code **)(*piVar1 + 0x10))(piVar1,local_c); + } + return; +} + + + +/* @0041f858 file=? name=FUN_0041f858 */ + +void __cdecl FUN_0041f858(int param_1,int *param_2) + +{ + int *piVar1; + int *piVar2; + int iVar3; + undefined4 local_18 [2]; + int *local_10; + int *local_8; + + FUN_004030dc(local_18,param_2,0x578 - (int)(param_2 + -0x1487eb),0x10); + local_8 = local_10; + for (iVar3 = 0; piVar2 = local_10, iVar3 < *(int *)(param_1 + 0x11c); iVar3 = iVar3 + 1) { + piVar1 = *(int **)(*(int *)(param_1 + 0x120) + iVar3 * 4); + (**(code **)(*piVar1 + 0x14))(piVar1,local_10); + local_10 = (int *)((int)local_10 + *piVar2); + } + if (local_10 != local_8) { + *param_2 = (int)local_10 - (int)param_2; + } + return; +} + + + +/* @0041f8d4 file=? name=FUN_0041f8d4 */ + +undefined4 * __cdecl FUN_0041f8d4(int *param_1,undefined4 param_2) + +{ + int iVar1; + undefined4 *puVar2; + int local_14 [2]; + int local_c; + + FUN_004030dc(local_14,&DAT_00521fac,0x578,0x1c); + iVar1 = local_c; + if (((*(int *)(DAT_004efc94 + 0x88) == 5) || (*(int *)(DAT_004efc94 + 0x88) == 6)) || + ((*(byte *)((int)param_1 + 0x29) & 0x10) != 0)) { + (**(code **)(*param_1 + 0x14))(param_1,param_2,local_14); + } + else { + FUN_0041bd98(param_1,local_14); + } + if (iVar1 == local_c) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = &DAT_00521fac; + DAT_00521fb0 = 0xf; + DAT_00521fac = local_c + -0x521fac; + DAT_00521fb4 = 0; + } + return puVar2; +} + + + +/* @0041f964 file=? name=FUN_0041f964 */ + +int __cdecl FUN_0041f964(int param_1,uint param_2) + +{ + if (param_2 != 0xffffffff) { + if (param_2 < *(uint *)(param_1 + 0x124)) { + return *(int *)(*(int *)(param_1 + 0x128) + param_2 * 4); + } + param_1 = 0; + } + return param_1; +} + + + diff --git a/reference/decomp/archive_2025export/all/part_003.c b/reference/decomp/archive_2025export/all/part_003.c new file mode 100644 index 0000000..d0dc085 --- /dev/null +++ b/reference/decomp/archive_2025export/all/part_003.c @@ -0,0 +1,12552 @@ +/* @0041f98c file=? name=FUN_0041f98c */ + +undefined4 __cdecl FUN_0041f98c(int param_1,char *param_2) + +{ + int iVar1; + int iVar2; + + iVar2 = 0; + while( true ) { + if (*(int *)(param_1 + 0x124) <= iVar2) { + return 0; + } + iVar1 = *(int *)(*(int *)(param_1 + 0x128) + iVar2 * 4); + if ((iVar1 != 0) && (iVar1 = FUN_004d4b58(*(char **)(iVar1 + 0xd4),param_2), iVar1 == 0)) break; + iVar2 = iVar2 + 1; + } + return *(undefined4 *)(*(int *)(param_1 + 0x128) + iVar2 * 4); +} + + + +/* @0041f9e0 file=? name=FUN_0041f9e0 */ + +int __cdecl FUN_0041f9e0(undefined4 param_1,char *param_2) + +{ + int *piVar1; + undefined4 *puVar2; + uint *puVar3; + int iVar4; + int iVar5; + int iVar6; + int local_78 [8]; + uint local_58 [2]; + char *local_50; + uint local_48 [2]; + char *local_40; + int *local_38; + uint *local_34; + int *local_30; + uint *local_2c; + uint *local_28; + char *local_24; + uint *local_20; + char *local_1c; + int *local_18; + uint *local_14; + uint *local_10; + uint *local_c; + int *local_8; + + iVar5 = 0; + puVar2 = (undefined4 *)FUN_00402298(0x10); + if (puVar2 == (undefined4 *)0x0) { + local_8 = (int *)0x0; + } + else { + local_8 = (int *)FUN_004023f4(puVar2); + } + local_8[3] = local_8[3] + 1; + puVar3 = (uint *)FUN_00402298(0x10); + if (puVar3 == (uint *)0x0) { + local_c = (uint *)0x0; + } + else { + local_c = FUN_00402460(puVar3,s_models__004e404d); + } + local_c[3] = local_c[3] + 1; + puVar3 = (uint *)FUN_00402298(0x10); + if (puVar3 == (uint *)0x0) { + local_10 = (uint *)0x0; + } + else { + local_10 = FUN_00402460(puVar3,s_model_name_004e4055); + } + local_10[3] = local_10[3] + 1; + puVar3 = (uint *)FUN_00402298(0x10); + if (puVar3 == (uint *)0x0) { + local_14 = (uint *)0x0; + } + else { + local_14 = FUN_00402460(puVar3,&DAT_004e4060); + } + local_14[3] = local_14[3] + 1; + FUN_00402624(local_48,(int)local_c,(int)local_10); + local_1c = local_40; + puVar3 = (uint *)FUN_00402298(0x10); + if (puVar3 == (uint *)0x0) { + local_20 = (uint *)0x0; + } + else { + local_20 = FUN_00402460(puVar3,local_1c); + } + local_20[3] = local_20[3] + 1; + FUN_004024d8((int *)local_48,2); + FUN_00402624(local_58,(int)local_20,(int)local_14); + local_24 = local_50; + local_2c = (uint *)FUN_00402298(0x10); + if (local_2c == (uint *)0x0) { + local_28 = (uint *)0x0; + } + else { + local_28 = FUN_00402460(local_2c,local_24); + } + local_28[3] = local_28[3] + 1; + FUN_004024d8((int *)local_58,2); + FUN_00402a4c((int *)&local_18,(int *)&local_8,(int *)&local_28); + piVar1 = local_18 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_18,3); + } + puVar3 = local_28 + 3; + *puVar3 = *puVar3 - 1; + if (*puVar3 == 0) { + FUN_004024d8((int *)local_28,3); + } + puVar3 = local_20 + 3; + *puVar3 = *puVar3 - 1; + if (*puVar3 == 0) { + FUN_004024d8((int *)local_20,3); + } + FUN_00403e84(local_78,(char *)local_8[2],1); + local_30 = FUN_0040485c((int)local_78,(char *)0x0); + puVar2 = (undefined4 *)local_30[1]; + while ((iVar6 = -1, puVar2 != (undefined4 *)0x0 && + (iVar4 = FUN_004d4b58(param_2,(char *)(puVar2 + 2)), iVar6 = iVar5, iVar4 != 0))) { + iVar5 = iVar5 + 1; + puVar2 = (undefined4 *)*puVar2; + } + if (local_30 != (int *)0x0) { + (**(code **)*local_30)(local_30,3); + } + FUN_00403ecc(local_78,2); + puVar3 = local_14 + 3; + *puVar3 = *puVar3 - 1; + if (*puVar3 == 0) { + FUN_004024d8((int *)local_14,3); + } + puVar3 = local_10 + 3; + *puVar3 = *puVar3 - 1; + if (*puVar3 == 0) { + FUN_004024d8((int *)local_10,3); + } + local_34 = local_c; + puVar3 = local_c + 3; + *puVar3 = *puVar3 - 1; + if (*puVar3 == 0) { + FUN_004024d8((int *)local_c,3); + } + local_38 = local_8; + piVar1 = local_8 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_8,3); + } + return iVar6; +} + + + +/* @0041fc58 file=? name=FUN_0041fc58 */ + +void __cdecl FUN_0041fc58(int *param_1,int *param_2,int *param_3) + +{ + int *piVar1; + bool bVar2; + int iVar3; + + if (param_1[0x4a] != 0) { + if ((param_1[10] & 0xcU) == 4) { + for (iVar3 = 0; iVar3 < param_1[0x49]; iVar3 = iVar3 + 1) { + piVar1 = *(int **)(param_1[0x4a] + iVar3 * 4); + if (piVar1 != (int *)0x0) { + if (((*(byte *)(piVar1 + 10) & 2) == 0) || (piVar1[4] <= piVar1[5])) { + bVar2 = true; + } + else { + bVar2 = false; + } + if (bVar2) { + (**(code **)(*piVar1 + 0x14))(piVar1,param_2,param_3); + } + } + } + } + else { + for (iVar3 = 0; iVar3 < param_1[0x49]; iVar3 = iVar3 + 1) { + piVar1 = *(int **)(param_1[0x4a] + iVar3 * 4); + if ((piVar1 != (int *)0x0) && ((*(byte *)(piVar1 + 10) & 2) == 0)) { + (**(code **)(*piVar1 + 0x14))(piVar1,param_2,param_3); + } + } + } + } + FUN_0041c018(param_1,param_2,param_3); + return; +} + + + +/* @0041fd18 file=? name=FUN_0041fd18 */ + +void __cdecl FUN_0041fd18(int param_1,int param_2) + +{ + undefined4 uVar1; + + uVar1 = (**(code **)(*(int *)(*(int *)(DAT_004efc94 + 0x2c) + 0x54) + 0xc)) + (*(int *)(DAT_004efc94 + 0x2c) + 0x54,param_2 + 0x1c); + *(undefined4 *)(param_1 + 400) = uVar1; + return; +} + + + +/* @0041fd48 file=? name=FUN_0041fd48 */ + +void __cdecl FUN_0041fd48(int *param_1,undefined4 *param_2) + +{ + int iVar1; + int iVar2; + int *piVar3; + int iVar4; + undefined4 local_c4; + undefined4 local_c0; + undefined4 local_bc; + undefined4 local_b8 [2]; + undefined4 local_b0; + undefined4 local_ac; + undefined4 local_a8 [2]; + int local_a0; + uint local_9c; + undefined4 local_98; + undefined4 local_94; + undefined4 local_90; + undefined4 local_8c; + undefined4 local_88; + undefined4 local_84; + undefined4 local_80; + undefined4 local_7c; + undefined4 local_78; + undefined4 local_74; + undefined4 local_70; + undefined4 local_6c; + int local_68; + uint local_64; + undefined **local_60 [6]; + undefined4 local_48; + undefined4 local_44; + undefined4 local_40; + undefined4 local_3c; + undefined4 local_38; + undefined4 local_34; + undefined4 local_30; + undefined4 local_2c; + undefined4 local_28; + undefined4 local_24; + undefined4 local_20; + undefined4 local_1c; + int local_18; + int local_14; + int local_10; + undefined4 local_c [2]; + + FUN_0041db7c((int)&local_48); + FUN_00420ea4(local_c,param_2 + 0xb); + local_10 = param_2[10]; + FUN_00408440(&local_28,param_2 + 7); + FUN_004032dc(local_60,param_2,*param_2,0x34); + local_60[0] = &PTR_FUN_004e42ac; + (*(code *)PTR_FUN_004e42c8)(local_60,&local_14,4); + iVar4 = 0; + if (0 < local_14) { + do { + piVar3 = (int *)(*(code *)local_60[0][7])(local_60,&local_48,4); + (**(code **)(*piVar3 + 0x1c))(piVar3,&local_44,4); + (*(code *)local_60[0][7])(local_60,&local_18,4); + iVar2 = local_10; + iVar1 = local_18; + local_c4 = 100; + local_c0 = 0x12; + local_bc = 1; + FUN_00420ea4(local_b8,(undefined4 *)&DAT_00522524); + local_b0 = 0; + local_ac = 0; + FUN_00420ea4(local_a8,local_c); + local_a0 = iVar2; + local_9c = (uint)(iVar2 < 0); + local_98 = local_48; + local_94 = local_44; + local_90 = local_40; + local_8c = local_3c; + local_88 = local_38; + local_84 = local_34; + local_80 = local_30; + local_7c = local_2c; + local_78 = local_28; + local_74 = local_24; + local_70 = local_20; + local_6c = local_1c; + local_68 = iVar1; + local_64 = (uint)(iVar1 < 0); + (**(code **)(*param_1 + 0xc))(param_1,&local_c4); + iVar4 = iVar4 + 1; + } while (iVar4 < local_14); + } + FUN_00403310((int *)local_60,0); + return; +} + + + +/* @0041ff08 file=? name=FUN_0041ff08 */ + +void __cdecl FUN_0041ff08(int param_1,int param_2) + +{ + int *piVar1; + + if ((*(int *)(param_1 + 0x120) != 0) && (*(int *)(param_2 + 0x24) != -1)) { + piVar1 = *(int **)(*(int *)(param_1 + 0x120) + *(int *)(param_2 + 0x24) * 4); + (**(code **)(*piVar1 + 0x18))(piVar1,param_2 + 0x2c); + } + return; +} + + + +/* @0041ff38 file=? name=FUN_0041ff38 */ + +undefined4 * FUN_0041ff38(undefined4 *param_1,int param_2,undefined4 param_3) + +{ + int iVar1; + int iVar2; + undefined4 uVar3; + int aiStack_38 [6]; + undefined4 auStack_20 [2]; + int iStack_18; + undefined4 *puStack_14; + float *pfStack_10; + undefined4 *puStack_c; + int iStack_8; + + FUN_0041bdf0(param_1,*(undefined4 *)(param_2 + 0x1c),param_3); + *param_1 = &PTR_FUN_004e4278; + FUN_0040aadc(param_1 + 0x34); + FUN_0041c42c(param_1 + 0x52,0); + FUN_0041c42c(param_1 + 0x57,0); + FUN_0041c42c(param_1 + 0x5c,0); + FUN_00420e8c(param_1 + 0x61); + iVar1 = *(int *)(DAT_004efc94 + 0x2c); + param_1[100] = 0; + iStack_8 = param_2 + 0x20; + param_1[0x6f] = *(undefined4 *)(param_2 + 0x28); + uVar3 = (**(code **)(*(int *)(iVar1 + 0x54) + 0xc))(iVar1 + 0x54,iStack_8); + param_1[0x70] = uVar3; + param_1[10] = *(undefined4 *)(param_2 + 0x2c); + FUN_00420ef4(param_1 + 0x61,(undefined4 *)(param_2 + 0xc)); + param_1[99] = *(undefined4 *)(param_2 + 0x18); + puStack_c = (undefined4 *)FUN_00414b60(); + param_1[0x67] = *puStack_c; + param_1[0x65] = *(undefined4 *)(param_2 + 0x14); + param_1[0x66] = 0; + FUN_0040a938(param_1 + 0x40,(undefined4 *)(param_2 + 0x30)); + FUN_0040a938(param_1 + 0x4b,param_1 + 0x40); + pfStack_10 = (float *)(param_1 + 0x34); + FUN_0040ab44(pfStack_10,param_1 + 0x40); + FUN_0040a938(param_1 + 0x68,&DAT_004e0fec); + param_1[10] = param_1[10] & 0xffffffef; + puStack_14 = param_1 + 0x67; + param_1[4] = *puStack_14; + param_1[0x49] = 0; + param_1[0x4a] = 0; + param_1[0x48] = 0; + param_1[0x47] = 0; + if (param_1[0x6f] != -1) { + iStack_18 = FUN_00407064(*(int *)(DAT_004efc94 + 0x68),param_1[0x6f],0x14); + if (iStack_18 != 0) { + iVar2 = *(int *)(iStack_18 + 4); + *(int *)(iStack_18 + 4) = *(int *)(iStack_18 + 4) + 1; + if (iVar2 == 0) { + FUN_00406cd0(iStack_18); + } + FUN_004032dc(aiStack_38,*(undefined4 *)(iStack_18 + 0x3c),*(undefined4 *)(iStack_18 + 0x40),0) + ; + (**(code **)(aiStack_38[0] + 0x1c))(aiStack_38,param_1 + 0x47,4); + uVar3 = FUN_004022b0(param_1[0x47] << 2); + param_1[0x48] = uVar3; + *(int *)(iStack_18 + 4) = *(int *)(iStack_18 + 4) + -1; + FUN_00403310(aiStack_38,2); + } + } + if ((((param_1[10] & 0xc) == 0) || (((param_1[10] & 0xc) == 0xc && ((param_1[10] & 0x100) != 0)))) + || (((param_1[10] & 0xc) == 8 && + ((*(int *)(param_2 + 0x18) == 0 || (*(int *)(param_2 + 0x18) == -1)))))) { + FUN_0042913c(auStack_20,iVar1); + FUN_00420ef4(param_1 + 0x61,auStack_20); + uVar3 = FUN_0042904c(iVar1); + param_1[99] = uVar3; + FUN_00420ef4((undefined4 *)(param_2 + 0xc),param_1 + 0x61); + *(undefined4 *)(param_2 + 0x18) = param_1[99]; + } + FUN_00429168(iVar1,(int)param_1,param_2); + return param_1; +} + + + +/* @0041ff3e file=? name=FUN_0041ff3e */ + +undefined4 * FUN_0041ff3e(void) + +{ + int *piVar1; + int iVar2; + undefined4 *puVar3; + int iVar4; + undefined4 uVar5; + undefined *puVar6; + int iVar7; + int unaff_EBP; + + iVar2 = *(int *)(unaff_EBP + 0xc); + puVar3 = *(undefined4 **)(unaff_EBP + 8); + FUN_0041bdf0(puVar3,*(undefined4 *)(iVar2 + 0x1c),*(undefined4 *)(unaff_EBP + 0x10)); + *puVar3 = &PTR_FUN_004e4278; + FUN_0040aadc(puVar3 + 0x34); + FUN_0041c42c(puVar3 + 0x52,0); + FUN_0041c42c(puVar3 + 0x57,0); + FUN_0041c42c(puVar3 + 0x5c,0); + FUN_00420e8c(puVar3 + 0x61); + iVar4 = *(int *)(DAT_004efc94 + 0x2c); + puVar3[100] = 0; + puVar3[0x6f] = *(undefined4 *)(iVar2 + 0x28); + *(int *)(unaff_EBP + -4) = iVar2 + 0x20; + uVar5 = (**(code **)(*(int *)(iVar4 + 0x54) + 0xc))(iVar4 + 0x54,*(undefined4 *)(unaff_EBP + -4)); + puVar3[0x70] = uVar5; + puVar3[10] = *(undefined4 *)(iVar2 + 0x2c); + FUN_00420ef4(puVar3 + 0x61,(undefined4 *)(iVar2 + 0xc)); + puVar3[99] = *(undefined4 *)(iVar2 + 0x18); + puVar6 = FUN_00414b60(); + *(undefined **)(unaff_EBP + -8) = puVar6; + puVar3[0x67] = **(undefined4 **)(unaff_EBP + -8); + puVar3[0x65] = *(undefined4 *)(iVar2 + 0x14); + puVar3[0x66] = 0; + FUN_0040a938(puVar3 + 0x40,(undefined4 *)(iVar2 + 0x30)); + FUN_0040a938(puVar3 + 0x4b,puVar3 + 0x40); + *(undefined4 **)(unaff_EBP + -0xc) = puVar3 + 0x34; + FUN_0040ab44(*(float **)(unaff_EBP + -0xc),puVar3 + 0x40); + FUN_0040a938(puVar3 + 0x68,&DAT_004e0fec); + puVar3[10] = puVar3[10] & 0xffffffef; + *(undefined4 **)(unaff_EBP + -0x10) = puVar3 + 0x67; + puVar3[4] = **(undefined4 **)(unaff_EBP + -0x10); + puVar3[0x49] = 0; + puVar3[0x4a] = 0; + puVar3[0x48] = 0; + puVar3[0x47] = 0; + if (puVar3[0x6f] != -1) { + iVar7 = FUN_00407064(*(int *)(DAT_004efc94 + 0x68),puVar3[0x6f],0x14); + *(int *)(unaff_EBP + -0x14) = iVar7; + if (*(int *)(unaff_EBP + -0x14) != 0) { + iVar7 = *(int *)(*(int *)(unaff_EBP + -0x14) + 4); + piVar1 = (int *)(*(int *)(unaff_EBP + -0x14) + 4); + *piVar1 = *piVar1 + 1; + if (iVar7 == 0) { + FUN_00406cd0(*(int *)(unaff_EBP + -0x14)); + } + FUN_004032dc((undefined4 *)(unaff_EBP + -0x34), + *(undefined4 *)(*(int *)(unaff_EBP + -0x14) + 0x3c), + *(undefined4 *)(*(int *)(unaff_EBP + -0x14) + 0x40),0); + (**(code **)(*(int *)(unaff_EBP + -0x34) + 0x1c))(unaff_EBP + -0x34,puVar3 + 0x47,4); + uVar5 = FUN_004022b0(puVar3[0x47] << 2); + puVar3[0x48] = uVar5; + piVar1 = (int *)(*(int *)(unaff_EBP + -0x14) + 4); + *piVar1 = *piVar1 + -1; + FUN_00403310((int *)(unaff_EBP + -0x34),2); + } + } + if ((((puVar3[10] & 0xc) == 0) || (((puVar3[10] & 0xc) == 0xc && ((puVar3[10] & 0x100) != 0)))) || + (((puVar3[10] & 0xc) == 8 && ((*(int *)(iVar2 + 0x18) == 0 || (*(int *)(iVar2 + 0x18) == -1)))) + )) { + FUN_0042913c((undefined4 *)(unaff_EBP + -0x1c),iVar4); + FUN_00420ef4(puVar3 + 0x61,(undefined4 *)(unaff_EBP + -0x1c)); + uVar5 = FUN_0042904c(iVar4); + puVar3[99] = uVar5; + FUN_00420ef4((undefined4 *)(iVar2 + 0xc),puVar3 + 0x61); + *(undefined4 *)(iVar2 + 0x18) = puVar3[99]; + } + FUN_00429168(iVar4,(int)puVar3,iVar2); + return puVar3; +} + + + +/* @00420204 file=? name=FUN_00420204 */ + +undefined4 * __cdecl FUN_00420204(int param_1) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00402298(0x1c4); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_0041ff38(puVar1,param_1,&DAT_004e3d40); + } + return puVar1; +} + + + +/* @00420234 file=? name=FUN_00420234 */ + +undefined4 __cdecl FUN_00420234(undefined4 *param_1) + +{ + char *pcVar1; + undefined4 uVar2; + float10 fVar3; + float local_1c; + float local_18; + float local_14; + float local_10; + float local_c; + float local_8; + + *param_1 = 0x4c; + param_1[1] = 3; + FUN_00420ef4(param_1 + 8,(undefined4 *)&DAT_00522524); + param_1[2] = 0; + param_1[7] = 0x10; + param_1[0xb] = 0; + pcVar1 = FUN_004d4d1c((char *)0x0,&DAT_004e4065); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24((int *)&DAT_00524e68,s_X_position_coordinate_missing__004e4067,(char *)0x0); + uVar2 = 0; + } + else { + fVar3 = (float10)FUN_004dd1cc(pcVar1); + param_1[0xc] = (float)fVar3; + pcVar1 = FUN_004d4d1c((char *)0x0,&DAT_004e4087); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24((int *)&DAT_00524e68,s_Y_position_coordinate_missing__004e4089,(char *)0x0); + uVar2 = 0; + } + else { + fVar3 = (float10)FUN_004dd1cc(pcVar1); + param_1[0xd] = (float)fVar3; + pcVar1 = FUN_004d4d1c((char *)0x0,&DAT_004e40a9); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24((int *)&DAT_00524e68,s_Z_position_coordinate_missing__004e40ab,(char *)0x0); + uVar2 = 0; + } + else { + fVar3 = (float10)FUN_004dd1cc(pcVar1); + param_1[0xe] = (float)fVar3; + pcVar1 = FUN_004d4d1c((char *)0x0,&DAT_004e40cb); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24((int *)&DAT_00524e68,s_Pitch_missing__004e40cd,(char *)0x0); + uVar2 = 0; + } + else { + fVar3 = (float10)FUN_004dd1cc(pcVar1); + local_1c = (float)fVar3; + local_8 = local_1c; + pcVar1 = FUN_004d4d1c((char *)0x0,&DAT_004e40dd); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24((int *)&DAT_00524e68,s_Yaw_missing__004e40df,(char *)0x0); + uVar2 = 0; + } + else { + fVar3 = (float10)FUN_004dd1cc(pcVar1); + local_18 = (float)fVar3; + local_c = local_18; + pcVar1 = FUN_004d4d1c((char *)0x0,&DAT_004e40ed); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24((int *)&DAT_00524e68,s_Roll_missing__004e40ef,(char *)0x0); + uVar2 = 0; + } + else { + fVar3 = (float10)FUN_004dd1cc(pcVar1); + local_14 = (float)fVar3; + local_10 = local_14; + FUN_00409a00((float *)(param_1 + 0xf),&local_1c); + uVar2 = 1; + } + } + } + } + } + } + return uVar2; +} + + + +/* @004203f4 file=? name=FUN_004203f4 */ + +undefined4 __cdecl FUN_004203f4(undefined4 *param_1,undefined4 param_2) + +{ + char *pcVar1; + undefined4 uVar2; + float10 fVar3; + float local_10; + undefined4 local_c; + undefined4 local_8; + + *param_1 = 0x2c; + param_1[1] = 3; + param_1[2] = 4; + pcVar1 = FUN_004d4d1c((char *)0x0,&DAT_004e40fe); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24((int *)&DAT_00524e68,s_X_position_coordinate_missing__004e4100,(char *)0x0); + uVar2 = 0; + } + else { + fVar3 = (float10)FUN_004dd1cc(pcVar1); + param_1[4] = (float)fVar3; + pcVar1 = FUN_004d4d1c((char *)0x0,&DAT_004e4120); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24((int *)&DAT_00524e68,s_Y_position_coordinate_missing__004e4122,(char *)0x0); + uVar2 = 0; + } + else { + fVar3 = (float10)FUN_004dd1cc(pcVar1); + param_1[5] = (float)fVar3; + pcVar1 = FUN_004d4d1c((char *)0x0,&DAT_004e4142); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24((int *)&DAT_00524e68,s_Z_position_coordinate_missing__004e4144,(char *)0x0); + uVar2 = 0; + } + else { + fVar3 = (float10)FUN_004dd1cc(pcVar1); + param_1[6] = (float)fVar3; + local_10 = DAT_004e0f8c; + local_c = DAT_004e0f90; + local_8 = DAT_004e0f94; + FUN_00409a00((float *)(param_1 + 7),&local_10); + param_1[3] = param_2; + uVar2 = 1; + } + } + } + return uVar2; +} + + + +/* @004204f8 file=? name=FUN_004204f8 */ + +void __cdecl FUN_004204f8(int param_1) + +{ + FUN_0042061c(param_1); + return; +} + + + +/* @00420508 file=? name=FUN_00420508 */ + +void __cdecl FUN_00420508(int *param_1,byte param_2) + +{ + undefined4 *puVar1; + int iVar2; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e4278; + FUN_004291d0(*(undefined4 *)(DAT_004efc94 + 0x2c),(int)param_1); + if (param_1[0x4a] != 0) { + for (iVar2 = 0; iVar2 < param_1[0x49]; iVar2 = iVar2 + 1) { + puVar1 = *(undefined4 **)(param_1[0x4a] + iVar2 * 4); + if ((puVar1 != (undefined4 *)0x0) && (puVar1 != (undefined4 *)0x0)) { + (**(code **)*puVar1)(puVar1,3); + } + } + FUN_004022d0((int *)param_1[0x4a]); + } + if (param_1[0x48] != 0) { + for (iVar2 = 0; iVar2 < param_1[0x47]; iVar2 = iVar2 + 1) { + puVar1 = *(undefined4 **)(param_1[0x48] + iVar2 * 4); + if ((puVar1 != (undefined4 *)0x0) && (puVar1 != (undefined4 *)0x0)) { + (**(code **)*puVar1)(puVar1,3); + } + } + FUN_004022d0((int *)param_1[0x48]); + } + FUN_0041c44b(param_1 + 0x5c,2); + FUN_0041c44b(param_1 + 0x57,2); + FUN_0041c44b(param_1 + 0x52,2); + FUN_0041bec4(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0042061c file=? name=FUN_0042061c */ + +void __cdecl FUN_0042061c(int param_1) + +{ + int iVar1; + + if ((*(byte *)(param_1 + 0x29) & 0x20) == 0) { + iVar1 = *(int *)(*(int *)(DAT_004efc94 + 0x24) + 0x14); + (**(code **)(*(int *)(iVar1 + 0x10) + 4))(iVar1 + 0x10,param_1); + *(uint *)(param_1 + 0x28) = *(uint *)(param_1 + 0x28) | 0x2000; + *(uint *)(param_1 + 0x28) = *(uint *)(param_1 + 0x28) | 2; + } + return; +} + + + +/* @00420658 file=? name=FUN_00420658 */ + +void __cdecl FUN_00420658(int param_1) + +{ + FUN_0041a1a4(**(int **)(param_1 + 0xc),0x4e3d10); + return; +} + + + +/* @00420674 file=? name=FUN_00420674 */ + +void __cdecl FUN_00420674(int param_1,undefined4 param_2) + +{ + (**(code **)(*(int *)(param_1 + 0x148) + 4))(param_1 + 0x148,param_2); + return; +} + + + +/* @00420694 file=? name=FUN_00420694 */ + +void __cdecl FUN_00420694(int param_1,undefined4 param_2) + +{ + (**(code **)(*(int *)(param_1 + 0x15c) + 4))(param_1 + 0x15c,param_2); + return; +} + + + +/* @004206b4 file=? name=FUN_004206b4 */ + +void __cdecl FUN_004206b4(int param_1,undefined4 param_2) + +{ + (**(code **)(*(int *)(param_1 + 0x170) + 4))(param_1 + 0x170,param_2); + return; +} + + + +/* @004206d4 file=? name=FUN_004206d4 */ + +bool __cdecl FUN_004206d4(int param_1,int param_2) + +{ + return param_1 != param_2; +} + + + +/* @004206e8 file=? name=FUN_004206e8 */ + +void __cdecl FUN_004206e8(int param_1) + +{ + undefined4 local_20; + undefined4 local_1c; + undefined4 local_18; + undefined4 local_14 [2]; + undefined4 local_c; + undefined4 local_8; + + local_20 = 0x1c; + local_1c = 0xd; + local_18 = 1; + FUN_00420ea4(local_14,(undefined4 *)&DAT_00522524); + local_c = 0; + local_8 = 0; + FUN_00419bbc(param_1,(int)&local_20); + return; +} + + + +/* @00420734 file=? name=FUN_00420734 */ + +void __cdecl FUN_00420734(int param_1) + +{ + *(int *)(param_1 + 0x198) = *(int *)(param_1 + 0x198) + 1; + return; +} + + + +/* @00420744 file=? name=FUN_00420744 */ + +void __cdecl FUN_00420744(int param_1) + +{ + *(int *)(param_1 + 0x198) = *(int *)(param_1 + 0x198) + -1; + return; +} + + + +/* @00420754 file=? name=FUN_00420754 */ + +bool __cdecl FUN_00420754(int param_1,int param_2) + +{ + return param_1 == param_2; +} + + + +/* @0042076c file=? name=FUN_0042076c */ + +int __cdecl FUN_0042076c(int param_1,int *param_2) + +{ + int iVar1; + int iVar2; + + iVar2 = 0; + while( true ) { + if (*(int *)(param_1 + 0x11c) <= iVar2) { + return -1; + } + iVar1 = FUN_004027d8(*(int *)(*(int *)(*(int *)(param_1 + 0x120) + iVar2 * 4) + 0x15c),*param_2) + ; + if (iVar1 == 0) break; + iVar2 = iVar2 + 1; + } + return iVar2; +} + + + +/* @004207b4 file=? name=FUN_004207b4 */ + +undefined4 FUN_004207b4(int param_1,char *param_2,int param_3,undefined4 *param_4) + +{ + int *piVar1; + int iVar2; + undefined4 uVar3; + char *pcVar4; + uint *puVar5; + int *piVar6; + undefined4 *puVar7; + int aiStack_38 [6]; + int *piStack_20; + undefined4 *puStack_1c; + int *piStack_18; + int *piStack_14; + int iStack_10; + uint *puStack_c; + char *pcStack_8; + + iVar2 = FUN_00404088(param_3,s_gamedata_004e4164,s_DamageZones_004e416d,&pcStack_8); + if (iVar2 == 0) { + FUN_004dbb24((int *)&DAT_00524e68,param_2,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_is_missing__dmg_file_specificati_004e4179,(char *)0x0); + uVar3 = 0xffffffff; + } + else { + pcVar4 = FUN_004064fc((char *)*param_4,pcStack_8); + puVar5 = (uint *)FUN_00402298(0x10); + if (puVar5 == (uint *)0x0) { + puStack_c = (uint *)0x0; + } + else { + puStack_c = FUN_00402460(puVar5,pcVar4); + } + puStack_c[3] = puStack_c[3] + 1; + piVar6 = (int *)FUN_00402298(0x20); + if (piVar6 == (int *)0x0) { + piVar6 = (int *)0x0; + } + else { + piVar6 = FUN_00403e84(piVar6,(char *)puStack_c[2],1); + } + if ((*(byte *)(piVar6 + 7) & 2) == 0) { + iStack_10 = piVar6[3]; + } + else { + iStack_10 = piVar6[4]; + } + if (iStack_10 == 0) { + FUN_004dbb24((int *)&DAT_00524e68,(char *)puStack_c[2],(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_is_empty_or_missing__004e419f,(char *)0x0); + FUN_00403ecc(piVar6,3); + uVar3 = 0xffffffff; + puVar5 = puStack_c + 3; + *puVar5 = *puVar5 - 1; + if (*puVar5 == 0) { + FUN_004024d8((int *)puStack_c,3); + } + } + else { + FUN_0040328c(aiStack_38,0); + (**(code **)(aiStack_38[0] + 0x20))(aiStack_38,&iStack_10,4); + piStack_14 = FUN_0040485c((int)piVar6,(char *)0x0); + puVar7 = (undefined4 *)piStack_14[1]; + puStack_1c = (undefined4 *)FUN_00402298(0x10); + if (puStack_1c == (undefined4 *)0x0) { + piStack_18 = (int *)0x0; + } + else { + piStack_18 = (int *)FUN_004023f4(puStack_1c); + } + piStack_18[3] = piStack_18[3] + 1; + for (; puVar7 != (undefined4 *)0x0; puVar7 = (undefined4 *)*puVar7) { + FUN_00402a98((int *)&piStack_20,(int *)&piStack_18,(char *)(puVar7 + 2)); + piVar1 = piStack_20 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(piStack_20,3); + } + piStack_18[3] = piStack_18[3] + 1; + FUN_0041e590(param_3,param_2,0,piStack_18,aiStack_38,(int)piVar6,(int)param_4); + } + puVar7 = (undefined4 *)FUN_00406f3c(param_1,param_2,0x14,1,0,aiStack_38,-1); + FUN_00403ecc(piVar6,3); + if (piStack_14 != (int *)0x0) { + (**(code **)*piStack_14)(piStack_14,3); + } + uVar3 = *puVar7; + piVar6 = piStack_18 + 3; + *piVar6 = *piVar6 + -1; + if (*piVar6 == 0) { + FUN_004024d8(piStack_18,3); + } + FUN_00403310(aiStack_38,2); + puVar5 = puStack_c + 3; + *puVar5 = *puVar5 - 1; + if (*puVar5 == 0) { + FUN_004024d8((int *)puStack_c,3); + } + } + } + return uVar3; +} + + + +/* @004207ba file=? name=FUN_004207ba */ + +undefined4 FUN_004207ba(void) + +{ + char *pcVar1; + int *piVar2; + int iVar3; + undefined4 uVar4; + char *pcVar5; + uint *puVar6; + int *piVar7; + int *piVar8; + undefined4 *puVar9; + int unaff_EBP; + + pcVar1 = *(char **)(unaff_EBP + 0xc); + iVar3 = FUN_00404088(*(int *)(unaff_EBP + 0x10),s_gamedata_004e4164,s_DamageZones_004e416d, + (undefined4 *)(unaff_EBP + -4)); + if (iVar3 == 0) { + FUN_004dbb24((int *)&DAT_00524e68,pcVar1,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_is_missing__dmg_file_specificati_004e4179,(char *)0x0); + uVar4 = 0xffffffff; + } + else { + pcVar5 = FUN_004064fc((char *)**(undefined4 **)(unaff_EBP + 0x14),*(char **)(unaff_EBP + -4)); + puVar6 = (uint *)FUN_00402298(0x10); + if (puVar6 == (uint *)0x0) { + puVar6 = (uint *)0x0; + } + else { + puVar6 = FUN_00402460(puVar6,pcVar5); + } + *(uint **)(unaff_EBP + -8) = puVar6; + piVar7 = (int *)(*(int *)(unaff_EBP + -8) + 0xc); + *piVar7 = *piVar7 + 1; + piVar7 = (int *)FUN_00402298(0x20); + if (piVar7 == (int *)0x0) { + piVar7 = (int *)0x0; + } + else { + piVar7 = FUN_00403e84(piVar7,*(char **)(*(int *)(unaff_EBP + -8) + 8),1); + } + if ((*(byte *)(piVar7 + 7) & 2) == 0) { + iVar3 = piVar7[3]; + } + else { + iVar3 = piVar7[4]; + } + *(int *)(unaff_EBP + -0xc) = iVar3; + if (*(int *)(unaff_EBP + -0xc) == 0) { + FUN_004dbb24((int *)&DAT_00524e68,*(char **)(*(int *)(unaff_EBP + -8) + 8),(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_is_empty_or_missing__004e419f,(char *)0x0); + FUN_00403ecc(piVar7,3); + uVar4 = 0xffffffff; + piVar8 = *(int **)(unaff_EBP + -8); + piVar7 = piVar8 + 3; + *piVar7 = *piVar7 + -1; + if (*piVar7 == 0) { + FUN_004024d8(piVar8,3); + } + } + else { + FUN_0040328c((undefined4 *)(unaff_EBP + -0x34),0); + (**(code **)(*(int *)(unaff_EBP + -0x34) + 0x20))(unaff_EBP + -0x34,unaff_EBP + -0xc,4); + piVar8 = FUN_0040485c((int)piVar7,(char *)0x0); + *(int **)(unaff_EBP + -0x10) = piVar8; + puVar9 = *(undefined4 **)(*(int *)(unaff_EBP + -0x10) + 4); + iVar3 = FUN_00402298(0x10); + *(int *)(unaff_EBP + -0x18) = iVar3; + if (iVar3 == 0) { + uVar4 = *(undefined4 *)(unaff_EBP + -0x18); + } + else { + uVar4 = FUN_004023f4(*(undefined4 **)(unaff_EBP + -0x18)); + } + *(undefined4 *)(unaff_EBP + -0x14) = uVar4; + piVar8 = (int *)(*(int *)(unaff_EBP + -0x14) + 0xc); + *piVar8 = *piVar8 + 1; + for (; puVar9 != (undefined4 *)0x0; puVar9 = (undefined4 *)*puVar9) { + FUN_00402a98((int *)(unaff_EBP + -0x1c),(int *)(unaff_EBP + -0x14),(char *)(puVar9 + 2)); + piVar2 = *(int **)(unaff_EBP + -0x1c); + piVar8 = piVar2 + 3; + *piVar8 = *piVar8 + -1; + if (*piVar8 == 0) { + FUN_004024d8(piVar2,3); + } + iVar3 = *(int *)(unaff_EBP + 0x14); + piVar2 = *(int **)(unaff_EBP + -0x14); + piVar8 = piVar2 + 3; + *piVar8 = *piVar8 + 1; + FUN_0041e590(*(int *)(unaff_EBP + 0x10),pcVar1,0,piVar2,(int *)(unaff_EBP + -0x34), + (int)piVar7,iVar3); + } + puVar9 = (undefined4 *) + FUN_00406f3c(*(int *)(unaff_EBP + 8),pcVar1,0x14,1,0,(int *)(unaff_EBP + -0x34),-1); + FUN_00403ecc(piVar7,3); + if (*(int *)(unaff_EBP + -0x10) != 0) { + (**(code **)**(undefined4 **)(unaff_EBP + -0x10))(*(undefined4 **)(unaff_EBP + -0x10),3); + } + uVar4 = *puVar9; + piVar8 = *(int **)(unaff_EBP + -0x14); + piVar7 = piVar8 + 3; + *piVar7 = *piVar7 + -1; + if (*piVar7 == 0) { + FUN_004024d8(piVar8,3); + } + FUN_00403310((int *)(unaff_EBP + -0x34),2); + piVar8 = *(int **)(unaff_EBP + -8); + piVar7 = piVar8 + 3; + *piVar7 = *piVar7 + -1; + if (*piVar7 == 0) { + FUN_004024d8(piVar8,3); + } + } + } + return uVar4; +} + + + +/* @00420a00 file=? name=FUN_00420a00 */ + +undefined4 __cdecl FUN_00420a00(int param_1,char *param_2,int param_3,undefined4 *param_4) + +{ + int iVar1; + undefined4 uVar2; + char *pcVar3; + uint *puVar4; + int *piVar5; + uint *puVar6; + undefined4 *puVar7; + int *piVar8; + int *piVar9; + int local_44 [6]; + undefined4 local_2c; + char *local_28; + uint *local_24; + char *local_20; + int *local_1c; + char *local_18; + int *local_14; + uint *local_10; + char *local_c; + char *local_8; + + iVar1 = FUN_00404088(param_3,s_gamedata_004e41b6,s_DamageZones_004e41bf,&local_8); + if (iVar1 == 0) { + local_c = param_2; + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_is_missing__dmg_file_specificati_004e41cb,(char *)0x0); + uVar2 = 0xffffffff; + } + else { + pcVar3 = FUN_004064fc((char *)*param_4,local_8); + puVar4 = (uint *)FUN_00402298(0x10); + if (puVar4 == (uint *)0x0) { + local_10 = (uint *)0x0; + } + else { + local_10 = FUN_00402460(puVar4,pcVar3); + } + local_10[3] = local_10[3] + 1; + piVar5 = (int *)FUN_00402298(0x20); + if (piVar5 == (int *)0x0) { + local_14 = (int *)0x0; + } + else { + local_14 = FUN_00403e84(piVar5,(char *)local_10[2],1); + } + if (local_14[3] == 0) { + local_18 = param_2; + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s___dmg_file_is_empty_or_missing__004e41f1,(char *)0x0); + FUN_00403ecc(local_14,3); + uVar2 = 0xffffffff; + puVar4 = local_10 + 3; + *puVar4 = *puVar4 - 1; + if (*puVar4 == 0) { + FUN_004024d8((int *)local_10,3); + } + } + else { + FUN_0040328c(local_44,0); + local_1c = FUN_0040485c((int)local_14,(char *)0x0); + for (puVar7 = (undefined4 *)local_1c[1]; puVar7 != (undefined4 *)0x0; + puVar7 = (undefined4 *)*puVar7) { + iVar1 = FUN_00404088((int)local_14,(char *)(puVar7 + 2),s_ExplosionTable_004e4213,&local_20) + ; + if (iVar1 == 0) { + local_2c = 0; + (**(code **)(local_44[0] + 0x20))(local_44,&local_2c,4); + } + else { + pcVar3 = FUN_004064fc((char *)*param_4,local_20); + puVar4 = (uint *)FUN_00402298(0x10); + if (puVar4 == (uint *)0x0) { + local_24 = (uint *)0x0; + } + else { + local_24 = FUN_00402460(puVar4,pcVar3); + } + local_24[3] = local_24[3] + 1; + piVar5 = (int *)FUN_00402298(0x20); + if (piVar5 == (int *)0x0) { + piVar5 = (int *)0x0; + } + else { + piVar5 = FUN_00403e84(piVar5,(char *)local_24[2],1); + } + if (piVar5[3] == 0) { + FUN_004dbb24((int *)&DAT_00524e68,param_2,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,&DAT_004e4222,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,(char *)local_24[2],(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_is_emoty_or_missing__004e4226,(char *)0x0); + FUN_00403ecc(local_14,3); + if (local_1c != (int *)0x0) { + (**(code **)*local_1c)(local_1c,3); + } + FUN_00403ecc(piVar5,3); + uVar2 = 0xffffffff; + puVar4 = local_24 + 3; + *puVar4 = *puVar4 - 1; + if (*puVar4 == 0) { + FUN_004024d8((int *)local_24,3); + } + FUN_00403310(local_44,2); + puVar4 = local_10 + 3; + *puVar4 = *puVar4 - 1; + if (*puVar4 != 0) { + return uVar2; + } + FUN_004024d8((int *)local_10,3); + return uVar2; + } + piVar9 = local_44; + local_24[3] = local_24[3] + 1; + local_28 = param_2; + piVar8 = piVar5; + puVar4 = local_24; + puVar6 = (uint *)FUN_00402298(0x10); + if (puVar6 == (uint *)0x0) { + puVar6 = (uint *)0x0; + } + else { + puVar6 = FUN_00402460(puVar6,local_28); + } + puVar6[3] = puVar6[3] + 1; + FUN_0042a828(param_1,(int *)puVar6,(uint)piVar8,(int *)puVar4,piVar9); + FUN_00403ecc(piVar5,3); + puVar4 = local_24 + 3; + *puVar4 = *puVar4 - 1; + if (*puVar4 == 0) { + FUN_004024d8((int *)local_24,3); + } + } + } + puVar7 = (undefined4 *)FUN_00406f3c(param_1,param_2,0x1e,1,0,local_44,-1); + FUN_00403ecc(local_14,3); + if (local_1c != (int *)0x0) { + (**(code **)*local_1c)(local_1c,3); + } + uVar2 = *puVar7; + FUN_00403310(local_44,2); + puVar4 = local_10 + 3; + *puVar4 = *puVar4 - 1; + if (*puVar4 == 0) { + FUN_004024d8((int *)local_10,3); + } + } + } + return uVar2; +} + + + +/* @00420e58 file=? name=FUN_00420e58 */ + +void __cdecl FUN_00420e58(undefined4 *param_1) + +{ + *param_1 = 0; + param_1[1] = 0; + param_1[2] = 0; + return; +} + + + +/* @00420e6e file=? name=FUN_00420e6e */ + +void __cdecl FUN_00420e6e(undefined4 *param_1) + +{ + *param_1 = 0; + param_1[1] = 0; + param_1[2] = 0; + return; +} + + + +/* @00420e84 file=? name=FUN_00420e84 */ + +void FUN_00420e84(void) + +{ + return; +} + + + +/* @00420e8c file=? name=FUN_00420e8c */ + +void __cdecl FUN_00420e8c(undefined4 *param_1) + +{ + *param_1 = 0; + param_1[1] = DAT_004e42d0; + return; +} + + + +/* @00420ea4 file=? name=FUN_00420ea4 */ + +void __cdecl FUN_00420ea4(undefined4 *param_1,undefined4 *param_2) + +{ + *param_1 = *param_2; + param_1[1] = param_2[1]; + return; +} + + + +/* @00420ebc file=? name=FUN_00420ebc */ + +void __cdecl FUN_00420ebc(undefined4 *param_1,undefined4 param_2) + +{ + *param_1 = param_2; + param_1[1] = DAT_004e42d0; + return; +} + + + +/* @00420ed4 file=? name=FUN_00420ed4 */ + +void __cdecl FUN_00420ed4(undefined4 *param_1,undefined4 param_2,undefined4 param_3) + +{ + *param_1 = param_2; + param_1[1] = param_3; + return; +} + + + +/* @00420ee8 file=? name=FUN_00420ee8 */ + +undefined4 FUN_00420ee8(void) + +{ + return 1; +} + + + +/* @00420ef4 file=? name=FUN_00420ef4 */ + +void __cdecl FUN_00420ef4(undefined4 *param_1,undefined4 *param_2) + +{ + *param_1 = *param_2; + param_1[1] = param_2[1]; + return; +} + + + +/* @00420f0c file=? name=FUN_00420f0c */ + +void __cdecl FUN_00420f0c(int *param_1,int *param_2) + +{ + *param_1 = *param_1 + *param_2; + param_1[1] = param_1[1] + param_2[1]; + return; +} + + + +/* @00420f24 file=? name=FUN_00420f24 */ + +undefined4 * __cdecl FUN_00420f24(undefined4 *param_1,int *param_2,int *param_3) + +{ + FUN_00420ed4(param_1,*param_2 - *param_3,param_2[1] - param_3[1]); + return param_1; +} + + + +/* @00420f54 file=? name=FUN_00420f54 */ + +void __cdecl FUN_00420f54(int *param_1,int *param_2) + +{ + *param_1 = *param_1 - *param_2; + param_1[1] = param_1[1] - param_2[1]; + return; +} + + + +/* @00420f6c file=? name=FUN_00420f6c */ + +void __cdecl FUN_00420f6c(int param_1,int param_2) + +{ + *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + param_2; + return; +} + + + +/* @00420f7c file=? name=FUN_00420f7c */ + +void __cdecl FUN_00420f7c(int param_1,int param_2) + +{ + *(int *)(param_1 + 4) = *(int *)(param_1 + 4) - param_2; + return; +} + + + +/* @00420f8c file=? name=FUN_00420f8c */ + +bool __cdecl FUN_00420f8c(int *param_1,int *param_2) + +{ + bool bVar1; + + if (*param_1 == *param_2) { + bVar1 = param_1[1] < param_2[1]; + } + else { + bVar1 = *param_1 < *param_2; + } + return bVar1; +} + + + +/* @00420fbc file=? name=FUN_00420fbc */ + +bool __cdecl FUN_00420fbc(int *param_1,int *param_2) + +{ + bool bVar1; + + if (*param_1 == *param_2) { + bVar1 = param_1[1] <= param_2[1]; + } + else { + bVar1 = *param_1 < *param_2; + } + return bVar1; +} + + + +/* @00420fec file=? name=FUN_00420fec */ + +bool __cdecl FUN_00420fec(int *param_1,int *param_2) + +{ + bool bVar1; + + if (*param_1 == *param_2) { + bVar1 = param_2[1] < param_1[1]; + } + else { + bVar1 = *param_2 < *param_1; + } + return bVar1; +} + + + +/* @0042101c file=? name=FUN_0042101c */ + +bool __cdecl FUN_0042101c(int *param_1,int *param_2) + +{ + bool bVar1; + + if (*param_1 == *param_2) { + bVar1 = param_2[1] <= param_1[1]; + } + else { + bVar1 = *param_2 < *param_1; + } + return bVar1; +} + + + +/* @0042104c file=? name=FUN_0042104c */ + +undefined4 __cdecl FUN_0042104c(int *param_1,int *param_2) + +{ + undefined4 uVar1; + + if ((*param_1 == *param_2) && (param_1[1] == param_2[1])) { + uVar1 = 1; + } + else { + uVar1 = 0; + } + return uVar1; +} + + + +/* @00421070 file=? name=FUN_00421070 */ + +undefined4 __cdecl FUN_00421070(int *param_1,int *param_2) + +{ + undefined4 uVar1; + + if ((*param_1 == *param_2) && (param_1[1] == param_2[1])) { + uVar1 = 0; + } + else { + uVar1 = 1; + } + return uVar1; +} + + + +/* @00421094 file=? name=FUN_00421094 */ + +undefined4 __cdecl FUN_00421094(int param_1) + +{ + return *(undefined4 *)(param_1 + 4); +} + + + +/* @004210ac file=? name=FUN_004210ac */ + +undefined4 * __cdecl FUN_004210ac(undefined4 *param_1) + +{ + FUN_004178cc(param_1,2); + *param_1 = &PTR_FUN_004e43cc; + FUN_004213aa(param_1 + 4,0); + return param_1; +} + + + +/* @004210d8 file=? name=FUN_004210d8 */ + +void __cdecl FUN_004210d8(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e43cc; + FUN_004213c9(param_1 + 4,2); + FUN_0041790c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00421114 file=? name=FUN_00421114 */ + +undefined4 * __cdecl FUN_00421114(undefined4 *param_1) + +{ + undefined4 *puVar1; + + FUN_0041d520(param_1,0x12,&DAT_004e4304,1); + *param_1 = &PTR_FUN_004e43b4; + FUN_00403a30(param_1 + 6); + puVar1 = FUN_004212b0((int)param_1,s_DeathRow_004e431a); + param_1[5] = puVar1; + return param_1; +} + + + +/* @00421154 file=? name=FUN_00421154 */ + +void __cdecl FUN_00421154(int *param_1,byte param_2) + +{ + undefined4 *puVar1; + int iVar2; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e43b4; + while (iVar2 = param_1[7], iVar2 != 0) { + puVar1 = *(undefined4 **)(iVar2 + 4); + FUN_00403b1c((int)(param_1 + 6),iVar2 + 8); + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + } + FUN_00403a48(param_1 + 6,2); + FUN_0041d554(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004211bc file=? name=FUN_004211bc */ + +void __cdecl FUN_004211bc(int param_1) + +{ + undefined4 *puVar1; + int local_10 [3]; + + FUN_00421414(local_10,*(int *)(param_1 + 0x14) + 0x10); + puVar1 = (undefined4 *)(**(code **)(local_10[0] + 0x30))(local_10); + if ((puVar1 != (undefined4 *)0x0) && (puVar1 != (undefined4 *)0x0)) { + (**(code **)*puVar1)(puVar1,3); + } + FUN_00421452(local_10,2); + return; +} + + + +/* @0042120c file=? name=FUN_0042120c */ + +void __cdecl FUN_0042120c(undefined4 param_1,undefined4 param_2,uint *param_3) + +{ + int iVar1; + + iVar1 = (**(code **)(*(int *)(*(int *)(DAT_004efc94 + 0x2c) + 0x54) + 0xc)) + (*(int *)(DAT_004efc94 + 0x2c) + 0x54,param_3 + 3); + if (iVar1 == 0) { + if (param_3[1] == 3) { + FUN_00433294(*(int **)(DAT_004efc94 + 0x28),(int)param_3); + } + } + else if ((*(int *)(iVar1 + 4) == 0x30) && (param_3[1] == 0x15)) { + FUN_0041acbc(*(int *)(DAT_004efc94 + 0x60),4,iVar1,param_3,DAT_004e17f4); + } + else { + FUN_0041acbc(*(int *)(DAT_004efc94 + 0x60),2,iVar1,param_3,DAT_004e17f4); + } + return; +} + + + +/* @004212b0 file=? name=FUN_004212b0 */ + +undefined4 * __cdecl FUN_004212b0(int param_1,char *param_2) + +{ + undefined4 *puVar1; + undefined4 uVar2; + + puVar1 = (undefined4 *)FUN_00403ad0(param_1 + 0x18,param_2); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)FUN_00402298(0x20); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_004210ac(puVar1); + } + uVar2 = (**(code **)(*(int *)(param_1 + 0x18) + 4))(param_1 + 0x18,param_2,puVar1); + puVar1[3] = uVar2; + } + return puVar1; +} + + + +/* @00421308 file=? name=FUN_00421308 */ + +void __cdecl FUN_00421308(int param_1,undefined4 *param_2) + +{ + FUN_00403b1c(param_1 + 0x18,param_2[3]); + if (param_2 != (undefined4 *)0x0) { + (**(code **)*param_2)(param_2,3); + } + return; +} + + + +/* @00421334 file=? name=FUN_00421334 */ + +void __cdecl FUN_00421334(int param_1) + +{ + FUN_0041a1a4(**(int **)(param_1 + 0xc),0x4e42d4); + return; +} + + + +/* @004213aa file=? name=FUN_004213aa */ + +undefined4 * __cdecl FUN_004213aa(undefined4 *param_1,undefined4 param_2) + +{ + FUN_00417be0(param_1,param_2); + *param_1 = &PTR_FUN_004e43ac; + return param_1; +} + + + +/* @004213c9 file=? name=FUN_004213c9 */ + +void __cdecl FUN_004213c9(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e43ac; + FUN_00417c0c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004213f5 file=? name=FUN_004213f5 */ + +undefined4 * __cdecl FUN_004213f5(undefined4 *param_1,int param_2) + +{ + FUN_00417d00(param_1,param_2); + *param_1 = &PTR_FUN_004e435c; + return param_1; +} + + + +/* @00421414 file=? name=FUN_00421414 */ + +undefined4 * __cdecl FUN_00421414(undefined4 *param_1,int param_2) + +{ + FUN_00417d00(param_1,param_2); + *param_1 = &PTR_FUN_004e435c; + return param_1; +} + + + +/* @00421433 file=? name=FUN_00421433 */ + +undefined4 * __cdecl FUN_00421433(undefined4 *param_1,int param_2) + +{ + FUN_00417d28(param_1,param_2); + *param_1 = &PTR_FUN_004e435c; + return param_1; +} + + + +/* @00421452 file=? name=FUN_00421452 */ + +void __cdecl FUN_00421452(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e435c; + FUN_00417d54(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00421480 file=? name=FUN_00421480 */ + +undefined4 * __cdecl FUN_00421480(undefined4 *param_1,int param_2) + +{ + FUN_0041c477(param_1,param_2 + 0x148); + *param_1 = &PTR_FUN_004e44bc; + return param_1; +} + + + +/* @004214a4 file=? name=FUN_004214a4 */ + +undefined4 * __cdecl FUN_004214a4(undefined4 *param_1,int param_2) + +{ + FUN_0041c4b5(param_1,param_2); + *param_1 = &PTR_FUN_004e44bc; + return param_1; +} + + + +/* @004214c4 file=? name=FUN_004214c4 */ + +void __cdecl FUN_004214c4(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e44bc; + FUN_0041c4d4(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004214f0 file=? name=FUN_004214f0 */ + +undefined4 * __cdecl FUN_004214f0(undefined4 *param_1,int param_2) + +{ + FUN_0041c477(param_1,param_2 + 0x15c); + *param_1 = &PTR_FUN_004e4468; + return param_1; +} + + + +/* @00421514 file=? name=FUN_00421514 */ + +undefined4 * __cdecl FUN_00421514(undefined4 *param_1,int param_2) + +{ + FUN_0041c4b5(param_1,param_2); + *param_1 = &PTR_FUN_004e4468; + return param_1; +} + + + +/* @00421534 file=? name=FUN_00421534 */ + +void __cdecl FUN_00421534(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e4468; + FUN_0041c4d4(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00421560 file=? name=FUN_00421560 */ + +undefined4 * __cdecl FUN_00421560(undefined4 *param_1,int param_2) + +{ + FUN_0041c477(param_1,param_2 + 0x170); + *param_1 = &PTR_FUN_004e4414; + return param_1; +} + + + +/* @00421584 file=? name=FUN_00421584 */ + +void __cdecl FUN_00421584(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e4414; + FUN_0041c4d4(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004215b0 file=? name=FUN_004215b0 */ + +int __cdecl FUN_004215b0(int param_1,char *param_2) + +{ + char *pcVar1; + undefined4 *puVar2; + int *piVar3; + char *pcVar4; + char *pcVar5; + int iVar6; + bool bVar7; + + piVar3 = FUN_0040485c(param_1,(char *)0x0); + iVar6 = 0; + for (puVar2 = (undefined4 *)piVar3[1]; puVar2 != (undefined4 *)0x0; puVar2 = (undefined4 *)*puVar2 + ) { + pcVar5 = (char *)(puVar2 + 2); + pcVar4 = param_2; + do { + if (*pcVar4 != *pcVar5) goto LAB_00421605; + bVar7 = true; + if (*pcVar4 == '\0') break; + pcVar1 = pcVar4 + 1; + if (*pcVar1 != pcVar5[1]) goto LAB_00421605; + pcVar4 = pcVar4 + 2; + pcVar5 = pcVar5 + 2; + bVar7 = *pcVar1 == '\0'; + } while (!bVar7); + if (bVar7) { + if (piVar3 == (int *)0x0) { + return iVar6; + } + (**(code **)*piVar3)(piVar3,3); + return iVar6; + } +LAB_00421605: + iVar6 = iVar6 + 1; + } + if (piVar3 != (int *)0x0) { + (**(code **)*piVar3)(piVar3,3); + } + pcVar5 = &DAT_004e43d8; + do { + if (*param_2 != *pcVar5) goto LAB_00421644; + bVar7 = true; + if (*param_2 == '\0') break; + pcVar4 = param_2 + 1; + if (*pcVar4 != pcVar5[1]) goto LAB_00421644; + param_2 = param_2 + 2; + pcVar5 = pcVar5 + 2; + bVar7 = *pcVar4 == '\0'; + } while (!bVar7); + if (!bVar7) { +LAB_00421644: + iVar6 = -1; + } + return iVar6; +} + + + +/* @0042164c file=? name=FUN_0042164c */ + +undefined4 FUN_0042164c(void) + +{ + return 1; +} + + + +/* @00421658 file=? name=FUN_00421658 */ + +void __cdecl FUN_00421658(char *param_1,float *param_2) + +{ + uint *puVar1; + float10 fVar2; + uint local_bc [2]; + char *local_b4; + uint local_ac [2]; + char *local_a4; + uint local_9c [2]; + char *local_94; + uint local_8c [2]; + char *local_84; + uint local_7c [2]; + char *local_74; + uint local_6c [2]; + char *local_64; + uint local_5c [2]; + char *local_54; + uint local_4c [2]; + char *local_44; + uint local_3c [2]; + char *local_34; + uint *local_2c; + uint *local_28; + uint *local_24; + uint *local_20; + uint *local_1c; + uint *local_18; + uint *local_14; + uint *local_10; + uint *local_c; + uint *local_8; + + puVar1 = (uint *)FUN_00402298(0x10); + if (puVar1 == (uint *)0x0) { + local_8 = (uint *)0x0; + } + else { + local_8 = FUN_00402460(puVar1,param_1); + } + local_8[3] = local_8[3] + 1; + FUN_00402838(local_3c,local_8,0,(char *)0x0); + puVar1 = (uint *)FUN_00402298(0x10); + if (puVar1 == (uint *)0x0) { + local_c = (uint *)0x0; + } + else { + local_c = FUN_00402460(puVar1,local_34); + } + local_c[3] = local_c[3] + 1; + FUN_004024d8((int *)local_3c,2); + fVar2 = (float10)FUN_004dd1cc(local_c[2]); + *param_2 = (float)fVar2; + puVar1 = local_c + 3; + *puVar1 = *puVar1 - 1; + if (*puVar1 == 0) { + FUN_004024d8((int *)local_c,3); + } + FUN_00402838(local_4c,local_8,1,(char *)0x0); + puVar1 = (uint *)FUN_00402298(0x10); + if (puVar1 == (uint *)0x0) { + local_10 = (uint *)0x0; + } + else { + local_10 = FUN_00402460(puVar1,local_44); + } + local_10[3] = local_10[3] + 1; + FUN_004024d8((int *)local_4c,2); + fVar2 = (float10)FUN_004dd1cc(local_10[2]); + param_2[1] = (float)fVar2; + puVar1 = local_10 + 3; + *puVar1 = *puVar1 - 1; + if (*puVar1 == 0) { + FUN_004024d8((int *)local_10,3); + } + FUN_00402838(local_5c,local_8,2,(char *)0x0); + puVar1 = (uint *)FUN_00402298(0x10); + if (puVar1 == (uint *)0x0) { + local_14 = (uint *)0x0; + } + else { + local_14 = FUN_00402460(puVar1,local_54); + } + local_14[3] = local_14[3] + 1; + FUN_004024d8((int *)local_5c,2); + fVar2 = (float10)FUN_004dd1cc(local_14[2]); + param_2[2] = (float)fVar2; + puVar1 = local_14 + 3; + *puVar1 = *puVar1 - 1; + if (*puVar1 == 0) { + FUN_004024d8((int *)local_14,3); + } + FUN_00402838(local_6c,local_8,3,(char *)0x0); + puVar1 = (uint *)FUN_00402298(0x10); + if (puVar1 == (uint *)0x0) { + local_18 = (uint *)0x0; + } + else { + local_18 = FUN_00402460(puVar1,local_64); + } + local_18[3] = local_18[3] + 1; + FUN_004024d8((int *)local_6c,2); + fVar2 = (float10)FUN_004dd1cc(local_18[2]); + param_2[3] = (float)fVar2; + puVar1 = local_18 + 3; + *puVar1 = *puVar1 - 1; + if (*puVar1 == 0) { + FUN_004024d8((int *)local_18,3); + } + FUN_00402838(local_7c,local_8,4,(char *)0x0); + puVar1 = (uint *)FUN_00402298(0x10); + if (puVar1 == (uint *)0x0) { + local_1c = (uint *)0x0; + } + else { + local_1c = FUN_00402460(puVar1,local_74); + } + local_1c[3] = local_1c[3] + 1; + FUN_004024d8((int *)local_7c,2); + fVar2 = (float10)FUN_004dd1cc(local_1c[2]); + param_2[4] = (float)fVar2; + puVar1 = local_1c + 3; + *puVar1 = *puVar1 - 1; + if (*puVar1 == 0) { + FUN_004024d8((int *)local_1c,3); + } + FUN_00402838(local_8c,local_8,5,(char *)0x0); + puVar1 = (uint *)FUN_00402298(0x10); + if (puVar1 == (uint *)0x0) { + local_20 = (uint *)0x0; + } + else { + local_20 = FUN_00402460(puVar1,local_84); + } + local_20[3] = local_20[3] + 1; + FUN_004024d8((int *)local_8c,2); + fVar2 = (float10)FUN_004dd1cc(local_20[2]); + param_2[5] = (float)fVar2; + puVar1 = local_20 + 3; + *puVar1 = *puVar1 - 1; + if (*puVar1 == 0) { + FUN_004024d8((int *)local_20,3); + } + FUN_00402838(local_9c,local_8,6,(char *)0x0); + puVar1 = (uint *)FUN_00402298(0x10); + if (puVar1 == (uint *)0x0) { + local_24 = (uint *)0x0; + } + else { + local_24 = FUN_00402460(puVar1,local_94); + } + local_24[3] = local_24[3] + 1; + FUN_004024d8((int *)local_9c,2); + fVar2 = (float10)FUN_004dd1cc(local_24[2]); + param_2[6] = (float)fVar2; + puVar1 = local_24 + 3; + *puVar1 = *puVar1 - 1; + if (*puVar1 == 0) { + FUN_004024d8((int *)local_24,3); + } + FUN_00402838(local_ac,local_8,7,(char *)0x0); + puVar1 = (uint *)FUN_00402298(0x10); + if (puVar1 == (uint *)0x0) { + local_28 = (uint *)0x0; + } + else { + local_28 = FUN_00402460(puVar1,local_a4); + } + local_28[3] = local_28[3] + 1; + FUN_004024d8((int *)local_ac,2); + fVar2 = (float10)FUN_004dd1cc(local_28[2]); + param_2[7] = (float)fVar2; + puVar1 = local_28 + 3; + *puVar1 = *puVar1 - 1; + if (*puVar1 == 0) { + FUN_004024d8((int *)local_28,3); + } + FUN_00402838(local_bc,local_8,8,(char *)0x0); + puVar1 = (uint *)FUN_00402298(0x10); + if (puVar1 == (uint *)0x0) { + local_2c = (uint *)0x0; + } + else { + local_2c = FUN_00402460(puVar1,local_b4); + } + local_2c[3] = local_2c[3] + 1; + FUN_004024d8((int *)local_bc,2); + fVar2 = (float10)FUN_004dd1cc(local_2c[2]); + param_2[8] = (float)fVar2; + puVar1 = local_2c + 3; + *puVar1 = *puVar1 - 1; + if (*puVar1 == 0) { + FUN_004024d8((int *)local_2c,3); + } + puVar1 = local_8 + 3; + *puVar1 = *puVar1 - 1; + if (*puVar1 == 0) { + FUN_004024d8((int *)local_8,3); + } + return; +} + + + +/* @00421aa0 file=? name=FUN_00421aa0 */ + +undefined4 * __cdecl FUN_00421aa0(undefined4 *param_1,int param_2) + +{ + undefined4 extraout_EAX; + + *param_1 = &PTR_FUN_004e4510; + param_1[1] = param_2; + FUN_004de998((int *)0x0,0x24,param_2,1,FUN_00421b0a); + param_1[2] = extraout_EAX; + return param_1; +} + + + +/* @00421ad4 file=? name=FUN_00421ad4 */ + +void __cdecl FUN_00421ad4(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e4510; + FUN_004022e8((int *)param_1[2]); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00421b00 file=? name=FUN_00421b00 */ + +undefined4 FUN_00421b00(void) + +{ + return 1; +} + + + +/* @00421b0a file=? name=FUN_00421b0a */ + +undefined4 __cdecl FUN_00421b0a(undefined4 param_1) + +{ + return param_1; +} + + + +/* @00421b12 file=? name=FUN_00421b12 */ + +int __cdecl FUN_00421b12(int param_1,int param_2) + +{ + return param_2 * 0x24 + *(int *)(param_1 + 8); +} + + + +/* @00421b2c file=? name=FUN_00421b2c */ + +void __cdecl FUN_00421b2c(int param_1) + +{ + FUN_00408744((float *)(param_1 + 0x200),(float *)(param_1 + 0x1dc),(float *)(param_1 + 0xd0)); + FUN_00408744((float *)(param_1 + 500),(float *)(param_1 + 0x1c4),(float *)(param_1 + 0xd0)); + return; +} + + + +/* @00421b6c file=? name=FUN_00421b6c */ + +void __cdecl FUN_00421b6c(int param_1) + +{ + FUN_0040879c((float *)(param_1 + 0x1c4),(float *)(param_1 + 500),(float *)(param_1 + 0xd0)); + FUN_0040879c((float *)(param_1 + 0x1dc),(float *)(param_1 + 0x200),(float *)(param_1 + 0xd0)); + return; +} + + + +/* @00421bac file=? name=FUN_00421bac */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_00421bac(int param_1,float param_2) + +{ + float *pfVar1; + float *pfVar2; + float local_24; + undefined4 local_20; + undefined4 local_1c; + undefined4 local_18; + float local_14 [3]; + float local_8; + + local_8 = _DAT_00421ca4 * param_2 * param_2; + FUN_004086ac(local_14,(float *)(param_1 + 0x200),local_8); + pfVar1 = (float *)(param_1 + 500); + FUN_00408614(local_14,local_14,pfVar1,param_2); + FUN_004085ec((float *)(param_1 + 0x100),(float *)(param_1 + 0x100),local_14); + FUN_004086ac(local_14,(float *)(param_1 + 0x1e8),local_8); + pfVar2 = (float *)(param_1 + 0x1d0); + FUN_00408614(local_14,local_14,pfVar2,param_2); + local_24 = *(float *)(param_1 + 0x10c); + local_20 = *(undefined4 *)(param_1 + 0x110); + local_1c = *(undefined4 *)(param_1 + 0x114); + local_18 = *(undefined4 *)(param_1 + 0x118); + FUN_00409f58((float *)(param_1 + 0x10c),&local_24,local_14); + FUN_00408614(pfVar1,pfVar1,(float *)(param_1 + 0x200),param_2); + FUN_00408614(pfVar2,pfVar2,(float *)(param_1 + 0x1e8),param_2); + return; +} + + + +/* @00421ca8 file=? name=FUN_00421ca8 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl +FUN_00421ca8(int param_1,float *param_2,float *param_3,float *param_4,float *param_5,float param_6) + +{ + int iVar1; + float10 fVar2; + float local_20; + float local_1c; + float local_18; + float local_14; + float local_10; + float local_c; + float local_8; + + iVar1 = *(int *)(param_1 + 0x250); + FUN_0040879c(&local_14,(float *)(iVar1 + 0x14),(float *)(param_1 + 0xd0)); + FUN_004085ec(&local_14,&local_14,param_3); + if (_DAT_00421e28 <= local_14) { + *param_2 = -*param_4; + fVar2 = FUN_004dce94((double)local_14,SUB84((double)param_6,0), + (uint)((ulonglong)(double)param_6 >> 0x20)); + } + else { + *param_2 = *param_5; + fVar2 = FUN_004dce94((double)-local_14,SUB84((double)param_6,0), + (uint)((ulonglong)(double)param_6 >> 0x20)); + } + local_20 = (float)fVar2; + if (_DAT_00421e28 <= local_10) { + param_2[1] = -param_4[1]; + fVar2 = FUN_004dce94((double)local_10,SUB84((double)param_6,0), + (uint)((ulonglong)(double)param_6 >> 0x20)); + } + else { + param_2[1] = param_5[1]; + fVar2 = FUN_004dce94((double)-local_10,SUB84((double)param_6,0), + (uint)((ulonglong)(double)param_6 >> 0x20)); + } + local_1c = (float)fVar2; + if (_DAT_00421e28 <= local_c) { + param_2[2] = -param_4[2]; + fVar2 = FUN_004dce94((double)local_c,SUB84((double)param_6,0), + (uint)((ulonglong)(double)param_6 >> 0x20)); + } + else { + param_2[2] = param_5[2]; + fVar2 = FUN_004dce94((double)-local_c,SUB84((double)param_6,0), + (uint)((ulonglong)(double)param_6 >> 0x20)); + } + local_18 = (float)fVar2; + local_8 = *(float *)(iVar1 + 4); + FUN_004086ac(param_2,param_2,local_8); + FUN_004086d0(param_2,param_2,&local_20); + return; +} + + + +/* @00421e2c file=? name=FUN_00421e2c */ + +void __cdecl FUN_00421e2c(int param_1,float param_2) + +{ + float local_10 [3]; + + FUN_00421ca8(param_1,local_10,(float *)(param_1 + 0x1c4),(float *)(param_1 + 0x21c), + (float *)(param_1 + 0x228),param_2); + FUN_004085ec((float *)(param_1 + 0x1dc),(float *)(param_1 + 0x1dc),local_10); + FUN_004086d0(local_10,(float *)(param_1 + 0x234),(float *)(param_1 + 0x1d0)); + FUN_00408644((float *)(param_1 + 0x1e8),(float *)(param_1 + 0x1e8),local_10); + FUN_00421b2c(param_1); + *(float *)(param_1 + 0x204) = *(float *)(param_1 + 0x204) - **(float **)(param_1 + 0x250); + return; +} + + + +/* @00421ec0 file=? name=FUN_00421ec0 */ + +void __cdecl FUN_00421ec0(int param_1,float *param_2,float *param_3) + +{ + float local_10 [3]; + + FUN_004086f8(local_10,param_2,*(float *)(param_1 + 0x20c)); + FUN_00421ef8(param_1,local_10,param_3); + return; +} + + + +/* @00421ef8 file=? name=FUN_00421ef8 */ + +void __cdecl FUN_00421ef8(int param_1,float *param_2,float *param_3) + +{ + float local_10 [3]; + + FUN_004085ec((float *)(param_1 + 0x1dc),(float *)(param_1 + 0x1dc),param_2); + FUN_0040866c(local_10,param_3,param_2); + FUN_004086d0(local_10,local_10,(float *)(param_1 + 0x210)); + FUN_004085ec((float *)(param_1 + 0x1e8),(float *)(param_1 + 0x1e8),local_10); + return; +} + + + +/* @00421f5c file=? name=FUN_00421f5c */ + +undefined4 __cdecl FUN_00421f5c(int param_1) + +{ + FUN_0040a938((undefined4 *)(param_1 + 0x260),(undefined4 *)(param_1 + 300)); + return 0; +} + + + +/* @00421f7c file=? name=FUN_00421f7c */ + +undefined4 __cdecl FUN_00421f7c(int param_1) + +{ + int iVar1; + undefined4 uVar2; + float local_14 [3]; + float local_8; + + if (((*(uint *)(param_1 + 0x28) & 0xc) == 4) && + (*(int *)(param_1 + 0x10) < *(int *)(param_1 + 0x2e0))) { + iVar1 = *(int *)(param_1 + 0x2e0) - *(int *)(param_1 + 0x14); + uVar2 = 1; + } + else { + iVar1 = *(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x14); + uVar2 = 0; + } + local_8 = (float)iVar1 / DAT_0052140c; + FUN_004086ac(local_14,(float *)(param_1 + 0x2c8),local_8); + FUN_004085ec((float *)(param_1 + 0x260),(float *)(param_1 + 300),local_14); + FUN_004086ac(local_14,(float *)(param_1 + 0x2d4),local_8); + FUN_00409f58((float *)(param_1 + 0x26c),(float *)(param_1 + 0x138),local_14); + FUN_0040a7f4((undefined4 *)(param_1 + 0x298),(undefined4 *)(param_1 + 0x2c8)); + return uVar2; +} + + + +/* @00422060 file=? name=FUN_00422060 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl FUN_00422060(int param_1) + +{ + int iVar1; + undefined4 uVar2; + float local_18 [3]; + float local_c; + float local_8; + + if (((*(uint *)(param_1 + 0x28) & 0xc) == 4) && + (*(int *)(param_1 + 0x10) < *(int *)(param_1 + 0x2e0))) { + iVar1 = *(int *)(param_1 + 0x2e0) - *(int *)(param_1 + 0x14); + uVar2 = 1; + } + else { + iVar1 = *(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x14); + uVar2 = 0; + } + local_8 = (float)iVar1 / DAT_0052140c; + local_c = _DAT_004221bc * local_8 * local_8; + FUN_004086ac(local_18,(float *)(param_1 + 0x2b0),local_c); + FUN_00408614(local_18,local_18,(float *)(param_1 + 0x2c8),local_8); + FUN_004085ec((float *)(param_1 + 0x260),(float *)(param_1 + 300),local_18); + FUN_004086ac(local_18,(float *)(param_1 + 700),local_c); + FUN_00408614(local_18,local_18,(float *)(param_1 + 0x2d4),local_8); + FUN_00409f58((float *)(param_1 + 0x26c),(float *)(param_1 + 0x138),local_18); + if ((*(uint *)(param_1 + 0x28) & 0xc) == 4) { + FUN_00408614((float *)(param_1 + 0x298),(float *)(param_1 + 0x2c8),(float *)(param_1 + 0x200), + local_8); + FUN_00408614((float *)(param_1 + 0x2a4),(float *)(param_1 + 0x2d4),(float *)(param_1 + 0x1e8), + local_8); + } + return uVar2; +} + + + +/* @0042249c file=? name=FUN_0042249c */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_0042249c(int *param_1,undefined4 *param_2) + +{ + int *piVar1; + + if (*(short *)((int)param_2 + 6) == 0) { + piVar1 = (int *)FUN_00414b60(); + param_1[0xb8] = *piVar1; + if ((float)(param_1[0xb8] - param_1[5]) / DAT_0052140c < _DAT_004225a0) { + param_1[0xb8] = param_1[0xb8] + (param_1[0xb8] - param_1[5]); + } + FUN_0041f76c((int)param_1,param_2); + FUN_0040a7f4(param_1 + 0x77,param_2 + 0x11); + FUN_00408440(param_1 + 0x80,param_2 + 0x1a); + FUN_00408440(param_1 + 0xb2,param_2 + 0x17); + FUN_00408440(param_1 + 0xb5,param_2 + 0xe); + FUN_00408440(param_1 + 0xac,param_2 + 0x1a); + FUN_00408440(param_1 + 0xaf,param_2 + 0x14); + if ((*(byte *)((int)param_1 + 0x29) & 0x40) == 0) { + (**(code **)(*param_1 + 0x34))(param_1); + } + } + else { + FUN_0041f76c((int)param_1,param_2); + } + return; +} + + + +/* @004225a4 file=? name=FUN_004225a4 */ + +void __cdecl FUN_004225a4(int param_1,int *param_2,int param_3) + +{ + if (param_3 == 0) { + FUN_0041f680(param_1,param_2,0); + *param_2 = 0x74; + FUN_0040a7f4(param_2 + 0xb,(undefined4 *)(param_1 + 0x1c4)); + FUN_0040a7f4(param_2 + 0x11,(undefined4 *)(param_1 + 0x1dc)); + FUN_00408440(param_2 + 0x17,(undefined4 *)(param_1 + 500)); + FUN_00408440(param_2 + 0x1a,(undefined4 *)(param_1 + 0x200)); + FUN_00408440((undefined4 *)(param_1 + 0x2c8),(undefined4 *)(param_1 + 500)); + FUN_00408440((undefined4 *)(param_1 + 0x2d4),(undefined4 *)(param_1 + 0x1d0)); + FUN_00408440((undefined4 *)(param_1 + 0x2b0),(undefined4 *)(param_1 + 0x200)); + FUN_00408440((undefined4 *)(param_1 + 700),(undefined4 *)(param_1 + 0x1e8)); + } + else { + FUN_0041f680(param_1,param_2,param_3); + } + return; +} + + + +/* @00422684 file=? name=FUN_00422684 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_00422684(int param_1) + +{ + float *pfVar1; + int iVar2; + float local_28; + float local_24; + float local_20; + float local_1c; + float local_18; + float local_14; + float local_10; + float local_c; + float local_8; + + if (*(int *)(param_1 + 0x2e4) != 0) { + FUN_0040ab44((float *)(param_1 + 0xd0),(undefined4 *)(param_1 + 0x100)); + pfVar1 = *(float **)(param_1 + 0x2ec); + local_10 = (*pfVar1 + pfVar1[1]) * _DAT_004227ac; + local_c = (pfVar1[2] + pfVar1[3]) * _DAT_004227ac; + local_8 = (pfVar1[4] + pfVar1[5]) * _DAT_004227ac; + local_1c = *(float *)(*(int *)(param_1 + 0x2ec) + 4) - local_10; + local_18 = *(float *)(*(int *)(param_1 + 0x2ec) + 0xc) - local_c; + local_14 = *(float *)(*(int *)(param_1 + 0x2ec) + 0x14) - local_8; + FUN_00408b98(&local_28,&local_10,(float *)(param_1 + 0xd0)); + pfVar1 = *(float **)(param_1 + 0x2e8); + *pfVar1 = local_28 - local_1c; + pfVar1[1] = local_28 + local_1c; + pfVar1[2] = local_24 - local_18; + pfVar1[3] = local_24 + local_18; + pfVar1[4] = local_20 - local_14; + pfVar1[5] = local_20 + local_14; + if ((*(uint *)(param_1 + 0x28) & 0xc) != 4) { + iVar2 = FUN_00433ed4(*(int *)(DAT_004efc94 + 0x30) + 0x14); + iVar2 = FUN_0040e36c(**(int **)(iVar2 + 0x30),*(int *)(param_1 + 0x2e8)); + *(int *)(param_1 + 0x2f0) = iVar2; + } + } + return; +} + + + +/* @004227b0 file=? name=FUN_004227b0 */ + +void __cdecl FUN_004227b0(int param_1) + +{ + undefined4 *puVar1; + + puVar1 = *(undefined4 **)(param_1 + 0x2f4); + if (puVar1 == *(undefined4 **)(param_1 + 0x2f8)) { + puVar1 = puVar1 + 5; + } + puVar1[4] = 0; + puVar1[1] = *puVar1; + puVar1[3] = puVar1[2]; + return; +} + + + +/* @004227e0 file=? name=FUN_004227e0 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +int __cdecl FUN_004227e0(int param_1,int param_2) + +{ + int iVar1; + int iVar2; + float local_24; + float local_20; + float local_1c; + int local_18 [5]; + + if (param_2 == 0) { + param_2 = FUN_004227b0(param_1); + } + FUN_004355bc(local_18,*(int *)(param_1 + 0x2fc)); + while( true ) { + iVar2 = (**(code **)(local_18[0] + 0x28))(local_18); + if (iVar2 == 0) break; + if (param_1 != iVar2) { + FUN_00408644(&local_24,(float *)(iVar2 + 0x100),(float *)(param_1 + 0x100)); + if (local_1c * local_1c + local_20 * local_20 + local_24 * local_24 <= _DAT_00422918) { + iVar1 = FUN_0041a1a4(**(int **)(iVar2 + 0xc),0x4e4518); + if (iVar1 == 0) { + iVar1 = FUN_0041a1a4(**(int **)(iVar2 + 0xc),0x4e744c); + if (iVar1 != 0) { + for (iVar1 = 0; iVar1 < *(int *)(iVar2 + 0x124); iVar1 = iVar1 + 1) { + FUN_00423414(param_1,param_2, + *(float **)(*(int *)(*(int *)(iVar2 + 0x128) + iVar1 * 4) + 0x130)); + } + } + } + else { + FUN_00423414(param_1,param_2,*(float **)(iVar2 + 0x2e8)); + } + } + } + } + FUN_0040e4ac(*(int *)(param_1 + 0x2f0),*(undefined4 *)(param_1 + 0x2e8), + (undefined4 *)*(undefined4 *)(param_1 + 0x2e8),param_2); + FUN_004355e8(local_18,2); + return param_2; +} + + + +/* @0042291c file=? name=FUN_0042291c */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +int __cdecl FUN_0042291c(int param_1,float *param_2,int param_3) + +{ + float *pfVar1; + int iVar2; + int iVar3; + int iVar4; + float local_4c; + float local_48; + float local_44; + float local_40; + float local_3c; + float local_38; + int local_34 [5]; + float local_20 [3]; + float local_14; + float local_10; + int local_c; + float local_8; + + local_8 = param_2[6] * _DAT_00422b20; + FUN_0040cdf4(param_2,local_8,local_20); + FUN_004355bc(local_34,*(int *)(param_1 + 0x2fc)); + local_c = 0; + while( true ) { + iVar4 = (**(code **)(local_34[0] + 0x28))(local_34); + if (iVar4 == 0) break; + if ((param_1 != iVar4) && ((param_3 == 0 || (iVar4 != param_3)))) { + iVar2 = FUN_0041a1a4(**(int **)(iVar4 + 0xc),0x4e4518); + if (iVar2 == 0) { + iVar2 = FUN_0041a1a4(**(int **)(iVar4 + 0xc),0x4e744c); + if (iVar2 != 0) { + FUN_00408644(&local_4c,(float *)(iVar4 + 0x100),local_20); + local_14 = local_8 + _DAT_00422b24; + if (local_44 * local_44 + local_48 * local_48 + local_4c * local_4c <= local_14 * local_14 + ) { + for (iVar2 = 0; iVar2 < *(int *)(iVar4 + 0x124); iVar2 = iVar2 + 1) { + iVar3 = FUN_004234c0(param_1,(int)param_2, + *(int *)(*(int *)(*(int *)(iVar4 + 0x128) + iVar2 * 4) + 0x130)); + if (iVar3 != 0) { + local_c = iVar3; + } + } + } + } + } + else { + FUN_00408644(&local_40,(float *)(iVar4 + 0x100),local_20); + pfVar1 = *(float **)(iVar4 + 0x2e8); + local_10 = local_8 + _DAT_00422b20 * ((pfVar1[3] - pfVar1[2]) + (pfVar1[1] - *pfVar1)); + if (local_38 * local_38 + local_3c * local_3c + local_40 * local_40 <= local_10 * local_10) + { + iVar4 = FUN_004234c0(param_1,(int)param_2,(int)pfVar1); + if (iVar4 != 0) { + local_c = iVar4; + } + } + } + } + } + iVar4 = FUN_00433ed4(*(int *)(DAT_004efc94 + 0x30) + 0x14); + iVar4 = FUN_0040eadc(*(int **)(iVar4 + 0x30),param_2); + if (iVar4 != 0) { + local_c = iVar4; + } + FUN_004355e8(local_34,2); + return local_c; +} + + + +/* @00422bac file=? name=FUN_00422bac */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_00422bac(int *param_1,int *param_2,undefined4 param_3,undefined4 param_4, + undefined4 *param_5) + +{ + int iVar1; + float10 fVar2; + int iStack_74; + int iStack_70; + int iStack_6c; + float fStack_68; + int iStack_64; + int iStack_60; + float fStack_5c; + undefined4 uStack_58; + undefined4 uStack_54; + float fStack_50; + undefined4 uStack_4c; + undefined4 uStack_48; + float fStack_44; + undefined4 uStack_40; + undefined4 uStack_3c; + float fStack_38; + float *pfStack_34; + float *pfStack_30; + int *piStack_2c; + int *piStack_28; + float *pfStack_24; + float fStack_20; + int *piStack_1c; + int *piStack_18; + int iStack_14; + float fStack_10; + int iStack_c; + undefined4 *puStack_8; + + param_5[1] = 0; + *param_5 = 0; + puStack_8 = param_5 + 8; + FUN_00408440(puStack_8,&DAT_004e0f80); + if (param_2[2] == param_2[3]) { + param_1[0xbe] = 0; + return; + } + FUN_0040fbb0(param_2,(float *)(param_1 + 0x7d)); + iStack_c = 0; + fStack_44 = DAT_004e0f74; + uStack_40 = DAT_004e0f78; + uStack_3c = DAT_004e0f7c; + fStack_50 = DAT_004e0f80; + uStack_4c = DAT_004e0f84; + uStack_48 = DAT_004e0f88; + fStack_5c = DAT_004e0f74; + uStack_58 = DAT_004e0f78; + uStack_54 = DAT_004e0f7c; + fStack_68 = (float)param_1[0x7d]; + iStack_64 = param_1[0x7e]; + iStack_60 = param_1[0x7f]; + iStack_74 = param_1[0x40]; + iStack_70 = param_1[0x41]; + iStack_6c = param_1[0x42]; + fStack_10 = 0.0; + for (iStack_14 = 0; iStack_14 < (param_2[2] - param_2[3]) - param_2[4]; iStack_14 = iStack_14 + 1) + { + piStack_18 = param_1 + 0x7d; + FUN_00408440(piStack_18,&fStack_68); + piStack_1c = param_1 + 0x40; + FUN_00408440(piStack_1c,&iStack_74); + param_5[1] = 0; + (**(code **)(*param_1 + 0x3c))(param_1,param_3,*param_2 + iStack_14 * 0x1c,param_4); + if (_DAT_00422f38 < (float)param_5[1]) { + iStack_c = iStack_c + 1; + FUN_004085ec(&fStack_44,&fStack_44,(float *)(param_1 + 0x7d)); + FUN_004085ec(&fStack_50,&fStack_50,(float *)(param_1 + 0x40)); + FUN_004085ec(&fStack_5c,&fStack_5c,(float *)(param_5 + 5)); + fStack_10 = (float)param_5[1] + fStack_10; + iVar1 = *param_2 + iStack_14 * 0x1c; + param_5[8] = ((*(float *)(iVar1 + 4) + *(float *)(iVar1 + 8)) - + (*(float *)param_1[0xba] - ((float *)param_1[0xba])[1])) * _DAT_00422f3c + + (float)param_5[8]; + param_5[9] = ((*(float *)(iVar1 + 0xc) + *(float *)(iVar1 + 0x10)) - + (*(float *)(param_1[0xba] + 8) - *(float *)(param_1[0xba] + 0xc))) * + _DAT_00422f3c + (float)param_5[9]; + param_5[10] = ((*(float *)(iVar1 + 0x14) + *(float *)(iVar1 + 0x18)) - + (*(float *)(param_1[0xba] + 0x10) - *(float *)(param_1[0xba] + 0x14))) * + _DAT_00422f3c + (float)param_5[10]; + } + } + if (iStack_c < 2) { + if (iStack_c != 1) goto LAB_00422f1e; + piStack_28 = param_1 + 0x7d; + FUN_00408440(piStack_28,&fStack_44); + piStack_2c = param_1 + 0x40; + FUN_00408440(piStack_2c,&fStack_50); + pfStack_30 = (float *)(param_5 + 5); + FUN_004087f4(pfStack_30,&fStack_5c); + } + else { + FUN_004086f8((float *)(param_1 + 0x7d),&fStack_44,(float)iStack_c); + fStack_20 = (float)iStack_c; + pfStack_24 = (float *)(param_1 + 0x40); + FUN_004086f8(pfStack_24,&fStack_50,fStack_20); + FUN_004086f8((float *)(param_5 + 5),&fStack_5c,(float)iStack_c); + } + pfStack_34 = (float *)(param_5 + 5); + fStack_38 = (float)param_5[7] * (float)param_5[7] + + (float)param_5[6] * (float)param_5[6] + *pfStack_34 * *pfStack_34; + fVar2 = FUN_004dcd00((double)fStack_38); + if ((float10)_DAT_00422f40 < fVar2) { + FUN_004087f4((float *)(param_5 + 5),(float *)(param_5 + 5)); + } + else { + param_5[5] = 0; + param_5[6] = 0x3f800000; + param_5[7] = 0; + } + (**(code **)(*param_1 + 0x34))(); + param_5[1] = fStack_10; + FUN_00408644((float *)(param_5 + 2),(float *)(param_1 + 0x7d),&fStack_68); +LAB_00422f1e: + param_1[0xbe] = (int)param_2; + return; +} + + + +/* @00422bb2 file=? name=FUN_00422bb2 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_00422bb2(void) + +{ + undefined4 *puVar1; + int *piVar2; + int *piVar3; + undefined4 uVar4; + int iVar5; + int unaff_EBP; + float10 fVar6; + + puVar1 = *(undefined4 **)(unaff_EBP + 0x18); + piVar2 = *(int **)(unaff_EBP + 0xc); + piVar3 = *(int **)(unaff_EBP + 8); + puVar1[1] = 0; + *puVar1 = 0; + *(undefined4 **)(unaff_EBP + -4) = puVar1 + 8; + FUN_00408440(*(undefined4 **)(unaff_EBP + -4),&DAT_004e0f80); + if (piVar2[2] == piVar2[3]) { + piVar3[0xbe] = 0; + return; + } + FUN_0040fbb0(piVar2,(float *)(piVar3 + 0x7d)); + uVar4 = DAT_004e0f74; + *(undefined4 *)(unaff_EBP + -8) = 0; + *(undefined4 *)(unaff_EBP + -0x40) = uVar4; + uVar4 = DAT_004e0f7c; + *(undefined4 *)(unaff_EBP + -0x3c) = DAT_004e0f78; + *(undefined4 *)(unaff_EBP + -0x38) = uVar4; + uVar4 = DAT_004e0f84; + *(undefined4 *)(unaff_EBP + -0x4c) = DAT_004e0f80; + *(undefined4 *)(unaff_EBP + -0x48) = uVar4; + uVar4 = DAT_004e0f74; + *(undefined4 *)(unaff_EBP + -0x44) = DAT_004e0f88; + *(undefined4 *)(unaff_EBP + -0x58) = uVar4; + uVar4 = DAT_004e0f7c; + *(undefined4 *)(unaff_EBP + -0x54) = DAT_004e0f78; + *(undefined4 *)(unaff_EBP + -0x50) = uVar4; + *(int *)(unaff_EBP + -100) = piVar3[0x7d]; + *(int *)(unaff_EBP + -0x60) = piVar3[0x7e]; + *(int *)(unaff_EBP + -0x5c) = piVar3[0x7f]; + *(int *)(unaff_EBP + -0x70) = piVar3[0x40]; + *(int *)(unaff_EBP + -0x6c) = piVar3[0x41]; + *(int *)(unaff_EBP + -0x68) = piVar3[0x42]; + *(undefined4 *)(unaff_EBP + -0xc) = 0; + *(undefined4 *)(unaff_EBP + -0x10) = 0; + while (*(int *)(unaff_EBP + -0x10) < (piVar2[2] - piVar2[3]) - piVar2[4]) { + *(int **)(unaff_EBP + -0x14) = piVar3 + 0x7d; + FUN_00408440(*(undefined4 **)(unaff_EBP + -0x14),(undefined4 *)(unaff_EBP + -100)); + *(int **)(unaff_EBP + -0x18) = piVar3 + 0x40; + FUN_00408440(*(undefined4 **)(unaff_EBP + -0x18),(undefined4 *)(unaff_EBP + -0x70)); + puVar1[1] = 0; + (**(code **)(*piVar3 + 0x3c)) + (piVar3,*(undefined4 *)(unaff_EBP + 0x10),*piVar2 + *(int *)(unaff_EBP + -0x10) * 0x1c + ,*(undefined4 *)(unaff_EBP + 0x14)); + if (_DAT_00422f38 < (float)puVar1[1]) { + *(int *)(unaff_EBP + -8) = *(int *)(unaff_EBP + -8) + 1; + FUN_004085ec((float *)(unaff_EBP + -0x40),(float *)(unaff_EBP + -0x40), + (float *)(piVar3 + 0x7d)); + FUN_004085ec((float *)(unaff_EBP + -0x4c),(float *)(unaff_EBP + -0x4c), + (float *)(piVar3 + 0x40)); + FUN_004085ec((float *)(unaff_EBP + -0x58),(float *)(unaff_EBP + -0x58),(float *)(puVar1 + 5)); + *(float *)(unaff_EBP + -0xc) = (float)puVar1[1] + *(float *)(unaff_EBP + -0xc); + iVar5 = *piVar2 + *(int *)(unaff_EBP + -0x10) * 0x1c; + puVar1[8] = ((*(float *)(iVar5 + 4) + *(float *)(iVar5 + 8)) - + (*(float *)piVar3[0xba] - ((float *)piVar3[0xba])[1])) * _DAT_00422f3c + + (float)puVar1[8]; + puVar1[9] = ((*(float *)(iVar5 + 0xc) + *(float *)(iVar5 + 0x10)) - + (*(float *)(piVar3[0xba] + 8) - *(float *)(piVar3[0xba] + 0xc))) * _DAT_00422f3c + + (float)puVar1[9]; + puVar1[10] = ((*(float *)(iVar5 + 0x14) + *(float *)(iVar5 + 0x18)) - + (*(float *)(piVar3[0xba] + 0x10) - *(float *)(piVar3[0xba] + 0x14))) * + _DAT_00422f3c + (float)puVar1[10]; + } + *(int *)(unaff_EBP + -0x10) = *(int *)(unaff_EBP + -0x10) + 1; + } + if (*(int *)(unaff_EBP + -8) < 2) { + if (*(int *)(unaff_EBP + -8) != 1) goto LAB_00422f1e; + *(int **)(unaff_EBP + -0x24) = piVar3 + 0x7d; + FUN_00408440(*(undefined4 **)(unaff_EBP + -0x24),(undefined4 *)(unaff_EBP + -0x40)); + *(int **)(unaff_EBP + -0x28) = piVar3 + 0x40; + FUN_00408440(*(undefined4 **)(unaff_EBP + -0x28),(undefined4 *)(unaff_EBP + -0x4c)); + *(undefined4 **)(unaff_EBP + -0x2c) = puVar1 + 5; + FUN_004087f4(*(float **)(unaff_EBP + -0x2c),(float *)(unaff_EBP + -0x58)); + } + else { + FUN_004086f8((float *)(piVar3 + 0x7d),(float *)(unaff_EBP + -0x40), + (float)*(int *)(unaff_EBP + -8)); + *(float *)(unaff_EBP + -0x1c) = (float)*(int *)(unaff_EBP + -8); + *(int **)(unaff_EBP + -0x20) = piVar3 + 0x40; + FUN_004086f8(*(float **)(unaff_EBP + -0x20),(float *)(unaff_EBP + -0x4c), + *(float *)(unaff_EBP + -0x1c)); + FUN_004086f8((float *)(puVar1 + 5),(float *)(unaff_EBP + -0x58),(float)*(int *)(unaff_EBP + -8)) + ; + } + *(undefined4 **)(unaff_EBP + -0x30) = puVar1 + 5; + *(float *)(unaff_EBP + -0x34) = + *(float *)(*(int *)(unaff_EBP + -0x30) + 8) * *(float *)(*(int *)(unaff_EBP + -0x30) + 8) + + *(float *)(*(int *)(unaff_EBP + -0x30) + 4) * *(float *)(*(int *)(unaff_EBP + -0x30) + 4) + + **(float **)(unaff_EBP + -0x30) * **(float **)(unaff_EBP + -0x30); + fVar6 = FUN_004dcd00((double)*(float *)(unaff_EBP + -0x34)); + if ((float10)_DAT_00422f40 < fVar6) { + FUN_004087f4((float *)(puVar1 + 5),(float *)(puVar1 + 5)); + } + else { + puVar1[5] = 0; + puVar1[6] = 0x3f800000; + puVar1[7] = 0; + } + (**(code **)(*piVar3 + 0x34))(); + puVar1[1] = *(undefined4 *)(unaff_EBP + -0xc); + FUN_00408644((float *)(puVar1 + 2),(float *)(piVar3 + 0x7d),(float *)(unaff_EBP + -100)); +LAB_00422f1e: + piVar3[0xbe] = (int)piVar2; + return; +} + + + +/* @00422fe0 file=? name=FUN_00422fe0 */ + +void __cdecl FUN_00422fe0(int param_1) + +{ + undefined4 *puVar1; + + puVar1 = FUN_0043544c(param_1); + *(undefined4 **)(param_1 + 0x2fc) = puVar1; + return; +} + + + +/* @00422ff8 file=? name=FUN_00422ff8 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 __cdecl +FUN_00422ff8(int param_1,undefined4 param_2,float param_3,float param_4,float *param_5, + float *param_6,float param_7,float *param_8) + +{ + float *pfVar1; + float10 fVar2; + float local_40 [3]; + float local_34; + float local_30; + float local_2c; + float local_28; + float local_24; + float local_20; + float local_1c; + float local_18; + float local_14; + float local_10; + float local_c; + float local_8; + + local_8 = *(float *)(param_1 + 0x1fc) * param_5[2] + + *(float *)(param_1 + 0x1f8) * param_5[1] + *(float *)(param_1 + 500) * *param_5; + FUN_004086ac(&local_28,param_5,local_8); + FUN_00408644(&local_34,(float *)(param_1 + 500),&local_28); + if (local_8 <= _DAT_00423204) { + if (-local_8 <= param_7 * param_3) { + *param_6 = 0.0; + } + fVar2 = FUN_004dd138((double)(local_2c * local_2c + local_30 * local_30 + local_34 * local_34)); + local_10 = (float)fVar2; + local_c = local_10; + fVar2 = FUN_004dcd00((double)local_10); + if ((float10)_DAT_00423208 < fVar2) { + local_c = ((_DAT_0042320c + *param_6) * *param_8 * local_8) / local_c + _DAT_0042320c; + if (local_c < _DAT_00423204) { + local_c = _DAT_00423204; + *param_8 = _DAT_00423204; + } + } + else { + local_c = _DAT_00423204; + *param_8 = _DAT_00423204; + } + local_14 = local_c - _DAT_0042320c; + pfVar1 = (float *)(param_1 + 500); + FUN_004086ac(local_40,pfVar1,local_14); + local_14 = local_c + *param_6; + FUN_00408614(local_40,local_40,&local_28,-local_14); + local_18 = _DAT_00423210 - *param_6; + local_14 = local_18; + FUN_004086ac(&local_28,&local_28,local_18); + FUN_00408614(&local_34,&local_28,pfVar1,2.0); + FUN_004085ec(pfVar1,pfVar1,local_40); + local_1c = param_4 * param_3; + local_14 = local_1c; + FUN_004086ac(local_40,local_40,local_1c); + FUN_004085ec((float *)(param_1 + 0x100),(float *)(param_1 + 0x100),local_40); + fVar2 = ((float10)local_20 * (float10)local_2c + + (float10)local_24 * (float10)local_30 + (float10)local_28 * (float10)local_34) * + (float10)_DAT_00423214 * (float10)*(float *)(param_1 + 0x20c); + } + else { + fVar2 = (float10)_DAT_00423204; + } + return fVar2; +} + + + +/* @00423414 file=? name=FUN_00423414 */ + +void __cdecl FUN_00423414(int param_1,int param_2,float *param_3) + +{ + int iVar1; + float local_1c [6]; + + while ((param_3 != (float *)0x0 && + ((iVar1 = FUN_0040db98(param_3,*(float **)(param_1 + 0x2e8),local_1c), iVar1 == 0 || + (FUN_0040de78(param_2,param_3,local_1c), *(int *)(param_2 + 0xc) != 0))))) { + param_3 = (float *)param_3[10]; + } + return; +} + + + +/* @00423468 file=? name=FUN_00423468 */ + +void __cdecl FUN_00423468(int param_1,int param_2,float *param_3) + +{ + int iVar1; + float local_1c [6]; + + while ((param_3 != (float *)0x0 && + ((iVar1 = FUN_0040db98(param_3,*(float **)(param_1 + 0x2e8),local_1c), iVar1 == 0 || + (FUN_0040de78(param_2,*(undefined4 *)(param_1 + 0x2e8),local_1c), + *(int *)(param_2 + 0xc) != 0))))) { + param_3 = (float *)param_3[10]; + } + return; +} + + + +/* @004234c0 file=? name=FUN_004234c0 */ + +int __cdecl FUN_004234c0(undefined4 param_1,int param_2,int param_3) + +{ + int iVar1; + int iVar2; + + iVar2 = 0; + for (; param_3 != 0; param_3 = *(int *)(param_3 + 0x28)) { + iVar1 = FUN_0040dc58(param_3,param_2); + if (iVar1 != 0) { + iVar2 = param_3; + } + } + return iVar2; +} + + + +/* @004234f0 file=? name=FUN_004234f0 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +int * __cdecl FUN_004234f0(int *param_1,int param_2,undefined4 param_3) + +{ + float *pfVar1; + float *pfVar2; + int iVar3; + int extraout_EAX; + int iVar4; + int iVar5; + int *piVar6; + int local_54; + + FUN_0041ff38(param_1,param_2,param_3); + pfVar1 = (float *)(param_1 + 0x71); + pfVar2 = (float *)(param_1 + 0x77); + *param_1 = (int)&PTR_FUN_004e4950; + iVar5 = *(int *)(DAT_004efc94 + 0x68); + FUN_0040a7f4(pfVar1,(undefined4 *)(param_2 + 0x4c)); + FUN_0040a7f4(pfVar2,(undefined4 *)(param_2 + 100)); + FUN_00408744((float *)(param_1 + 0x80),pfVar2,(float *)(param_1 + 0x34)); + FUN_00408744((float *)(param_1 + 0x7d),pfVar1,(float *)(param_1 + 0x34)); + FUN_00408440(param_1 + 0xb2,param_1 + 0x7d); + FUN_00408440(param_1 + 0xb5,pfVar1); + FUN_00408440(param_1 + 0xac,param_1 + 0x80); + FUN_00408440(param_1 + 0xaf,pfVar2); + param_1[0xb8] = param_1[5]; + param_1[0x93] = 0; + if ((*(byte *)((int)param_1 + 0x2a) & 1) != 0) { + FUN_0041bbd8((int)(param_1 + 0xb),1); + } + param_1[0xba] = 0; + param_1[0xbb] = 0; + param_1[0xbc] = 0; + param_1[0xbd] = 0; + param_1[0xbe] = 0; + param_1[0xbf] = 0; + param_1[0x95] = DAT_004e4624; + param_1[0x96] = DAT_004e4628; + param_1[0x97] = DAT_004e462c; + param_1[0xb9] = 0; + iVar3 = FUN_00407064(iVar5,param_1[0x6f],0xf); + iVar4 = *(int *)(iVar3 + 4); + *(int *)(iVar3 + 4) = *(int *)(iVar3 + 4) + 1; + if (iVar4 == 0) { + FUN_00406cd0(iVar3); + } + piVar6 = *(int **)(iVar3 + 0x3c); + param_1[0x83] = *piVar6; + param_1[0x84] = (int)(_DAT_00423860 / (float)piVar6[1]); + param_1[0x85] = (int)(_DAT_00423860 / (float)piVar6[2]); + param_1[0x86] = (int)(_DAT_00423860 / (float)piVar6[3]); + FUN_00408440(param_1 + 0x87,piVar6 + 4); + FUN_00408440(param_1 + 0x8a,piVar6 + 7); + FUN_00408440(param_1 + 0x8d,piVar6 + 10); + param_1[0x90] = piVar6[0xd]; + param_1[0x91] = piVar6[0xe]; + param_1[0x92] = piVar6[0xf]; + piVar6 = FUN_004de998((int *)0x0,0x14,2,0x211,FUN_00423d88); + param_1[0xbd] = extraout_EAX; + piVar6[1] = piVar6[1] + -1; + if ((*(byte *)((int)param_1 + 0x29) & 0x40) == 0) { + iVar4 = FUN_00407064(iVar5,param_1[0x6f],9); + iVar5 = *(int *)(iVar4 + 4); + *(int *)(iVar4 + 4) = *(int *)(iVar4 + 4) + 1; + if (iVar5 == 0) { + FUN_00406cd0(iVar4); + } + iVar5 = *(int *)(iVar4 + 0x3c); + param_1[0xb9] = *(uint *)(iVar4 + 0x40) / 0x3c; + for (local_54 = 0; local_54 < param_1[0xb9]; local_54 = local_54 + 1) { + iVar3 = FUN_0040eed8(iVar5,param_1,param_1[0xbb]); + param_1[0xbb] = iVar3; + iVar3 = FUN_0040eed8(iVar5,param_1,param_1[0xba]); + param_1[0xba] = iVar3; + iVar5 = iVar5 + 0x3c; + } + *(int *)(iVar4 + 4) = *(int *)(iVar4 + 4) + -1; + (**(code **)(*param_1 + 0x34))(param_1); + } + return param_1; +} + + + +/* @00423864 file=? name=FUN_00423864 */ + +undefined4 __cdecl FUN_00423864(undefined4 *param_1) + +{ + int iVar1; + + iVar1 = FUN_00420234(param_1); + if (iVar1 == 0) { + return 0; + } + *param_1 = 0x7c; + param_1[7] = 0x1b; + FUN_0040a7f4(param_1 + 0x13,(undefined4 *)&DAT_004e0fd4); + FUN_0040a7f4(param_1 + 0x19,(undefined4 *)&DAT_004e0fd4); + return 1; +} + + + +/* @004238bc file=? name=FUN_004238bc */ + +undefined4 __cdecl +FUN_004238bc(int param_1,char *param_2,int param_3,undefined4 param_4,float *param_5) + +{ + float *pfVar1; + int iVar2; + undefined4 *puVar3; + undefined4 local_18; + float *local_14; + float *local_10; + float *local_c; + float *local_8; + + pfVar1 = param_5; + if ((param_5 == (float *)0x0) && (pfVar1 = (float *)FUN_00402298(0x40), pfVar1 != (float *)0x0)) { + local_8 = pfVar1 + 1; + local_c = pfVar1 + 4; + local_10 = pfVar1 + 7; + local_14 = pfVar1 + 10; + } + iVar2 = FUN_00404118(param_3,s_gamedata_004e472f,s_MoverMass_004e4738,pfVar1); + if (iVar2 == 0) { + FUN_004dbb24((int *)&DAT_00524e68,param_2,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_MoverMass__004e4742,(char *)0x0); + } + else { + iVar2 = FUN_00404088(param_3,s_gamedata_004e4757,s_MomentOfInertia_004e4760,&local_18); + if (iVar2 == 0) { + FUN_004dbb24((int *)&DAT_00524e68,param_2,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_MomentOfInertia__004e4770,(char *)0x0); + } + else { + FUN_004d7f84(local_18,(byte *)s__f__f__f_004e478b); + iVar2 = FUN_00404088(param_3,s_gamedata_004e4794,s_PositiveLinearDragCoefficients_004e479d, + &local_18); + if (iVar2 == 0) { + FUN_004dbb24((int *)&DAT_00524e68,param_2,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_PositiveLinearDragCoeffi_004e47bc,(char *)0x0); + } + else { + FUN_004d7f84(local_18,(byte *)s__f__f__f_004e47e6); + iVar2 = FUN_00404088(param_3,s_gamedata_004e47ef,s_NegativeLinearDragCoefficients_004e47f8, + &local_18); + if (iVar2 == 0) { + FUN_004dbb24((int *)&DAT_00524e68,param_2,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_NegativeLinearDragCoeffi_004e4817,(char *)0x0) + ; + } + else { + FUN_004d7f84(local_18,(byte *)s__f__f__f_004e4841); + iVar2 = FUN_00404088(param_3,s_gamedata_004e484a,s_AngularDragCoefficients_004e4853, + &local_18); + if (iVar2 == 0) { + FUN_004dbb24((int *)&DAT_00524e68,param_2,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_AngularDragCoefficients__004e486b, + (char *)0x0); + } + else { + FUN_004d7f84(local_18,(byte *)s__f__f__f_004e488e); + iVar2 = FUN_00404118(param_3,s_gamedata_004e4897,s_FrictionCoefficient_004e48a0, + pfVar1 + 0xd); + if (iVar2 == 0) { + FUN_004dbb24((int *)&DAT_00524e68,param_2,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_FrictionCoefficient__004e48b4,(char *)0x0) + ; + } + else { + iVar2 = FUN_00404118(param_3,s_gamedata_004e48d3,s_ElasticityCoefficient_004e48dc, + pfVar1 + 0xe); + if (iVar2 == 0) { + FUN_004dbb24((int *)&DAT_00524e68,param_2,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_ElasticityCoefficient__004e48f2, + (char *)0x0); + } + else { + iVar2 = FUN_00404118(param_3,s_gamedata_004e4913,s_MinimumBounceSpeed_004e491c, + pfVar1 + 0xf); + if (iVar2 != 0) { + if (param_5 == (float *)0x0) { + puVar3 = (undefined4 *)FUN_00406db4(param_1,param_2,0xf,1,0,pfVar1,0x40,-1); + FUN_004022d0((int *)pfVar1); + return *puVar3; + } + return 0; + } + FUN_004dbb24((int *)&DAT_00524e68,param_2,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_MinimumBounceSpeed__004e492f,(char *)0x0 + ); + } + } + } + } + } + } + } + if (param_5 == (float *)0x0) { + FUN_004022d0((int *)pfVar1); + } + return 0xffffffff; +} + + + +/* @00423be8 file=? name=FUN_00423be8 */ + +int * __cdecl FUN_00423be8(int param_1) + +{ + int *piVar1; + + piVar1 = (int *)FUN_00402298(0x300); + if (piVar1 == (int *)0x0) { + piVar1 = (int *)0x0; + } + else { + piVar1 = FUN_004234f0(piVar1,param_1,&DAT_004e4548); + } + return piVar1; +} + + + +/* @00423c18 file=? name=FUN_00423c18 */ + +void __cdecl FUN_00423c18(int *param_1,byte param_2) + +{ + int iVar1; + undefined4 *puVar2; + int iVar3; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e4950; + FUN_004de8d4((int *)param_1[0xbd],0x14,0,0x19,FUN_00423daf); + if ((*(byte *)((int)param_1 + 0x29) & 0x40) == 0) { + iVar1 = param_1[0xbb]; + while (iVar3 = iVar1, iVar3 != 0) { + iVar1 = *(int *)(iVar3 + 0x28); + if (iVar3 != 0) { + (*(code *)**(undefined4 **)(iVar3 + 0x18))(iVar3,3); + } + } + iVar1 = param_1[0xba]; + while (iVar3 = iVar1, iVar3 != 0) { + iVar1 = *(int *)(iVar3 + 0x28); + if (iVar3 != 0) { + (*(code *)**(undefined4 **)(iVar3 + 0x18))(iVar3,3); + } + } + } + puVar2 = (undefined4 *)param_1[0xbf]; + if ((puVar2 != (undefined4 *)0x0) && (puVar2 != (undefined4 *)0x0)) { + (**(code **)*puVar2)(puVar2,3); + } + FUN_00420508(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00423cc8 file=? name=FUN_00423cc8 */ + +void __cdecl FUN_00423cc8(int param_1) + +{ + FUN_0041a1a4(**(int **)(param_1 + 0xc),0x4e4518); + return; +} + + + +/* @00423d88 file=? name=FUN_00423d88 */ + +undefined4 * __cdecl FUN_00423d88(undefined4 *param_1) + +{ + FUN_0040de40(param_1,10); + param_1[4] = 0; + param_1[1] = *param_1; + param_1[3] = param_1[2]; + return param_1; +} + + + +/* @00423daf file=? name=FUN_00423daf */ + +void __cdecl FUN_00423daf(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + FUN_004022e8((int *)*param_1); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00423dd3 file=? name=FUN_00423dd3 */ + +void __cdecl FUN_00423dd3(undefined4 *param_1,int param_2) + +{ + *param_1 = *(undefined4 *)(param_2 + 500); + param_1[1] = *(undefined4 *)(param_2 + 0x1f8); + param_1[2] = *(undefined4 *)(param_2 + 0x1fc); + return; +} + + + +/* @00423df4 file=? name=FUN_00423df4 */ + +void __cdecl FUN_00423df4(undefined4 *param_1,int param_2) + +{ + *param_1 = *(undefined4 *)(param_2 + 0x200); + param_1[1] = *(undefined4 *)(param_2 + 0x204); + param_1[2] = *(undefined4 *)(param_2 + 0x208); + return; +} + + + +/* @00423e18 file=? name=FUN_00423e18 */ + +int __cdecl FUN_00423e18(int param_1) + +{ + int iVar1; + + iVar1 = (**(code **)(*(int *)(param_1 + 0xc) + 0xc))(param_1 + 0xc,&stack0x00000008); + if (iVar1 != 0) { + return iVar1 + 0xc; + } + return 0; +} + + + +/* @00423e3c file=? name=FUN_00423e3c */ + +undefined4 * __cdecl FUN_00423e3c(undefined4 *param_1) + +{ + FUN_00415e90(param_1,1); + *param_1 = &PTR_FUN_004e4aec; + FUN_00424527(param_1 + 3,0,0); + return param_1; +} + + + +/* @00423e6c file=? name=FUN_00423e6c */ + +void __cdecl FUN_00423e6c(int *param_1,byte param_2) + +{ + void *this; + int local_18 [5]; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e4aec; + FUN_00424944(local_18,(int)(param_1 + 3)); + FUN_00417858(this,local_18,1); + FUN_00424982(local_18,2); + FUN_0042454a(param_1 + 3,2); + FUN_00415ed8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00423ed8 file=? name=FUN_00423ed8 */ + +void __cdecl FUN_00423ed8(int param_1,int *param_2) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00402298(0x10); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_0041547b(puVar1,param_2); + } + (**(code **)(*(int *)(param_1 + 0xc) + 8))(param_1 + 0xc,puVar1,&stack0x0000000c); + return; +} + + + +/* @00423f18 file=? name=FUN_00423f18 */ + +undefined4 * __cdecl +FUN_00423f18(undefined4 *param_1,int *param_2,undefined4 param_3,undefined4 param_4, + undefined4 param_5,undefined4 param_6,undefined4 *param_7,undefined4 param_8, + undefined4 param_9,undefined4 param_10) + +{ + int *piVar1; + undefined4 *puVar2; + int iVar3; + undefined4 *puVar4; + int *local_8; + + FUN_00415e90(param_1,1); + *param_1 = &PTR_FUN_004e4ae8; + FUN_0040aadc(param_1 + 5); + FUN_0040aadc(param_1 + 0x11); + puVar2 = &DAT_004e107c; + puVar4 = param_1 + 0x1d; + for (iVar3 = 0xc; iVar3 != 0; iVar3 = iVar3 + -1) { + *puVar4 = *puVar2; + puVar2 = puVar2 + 1; + puVar4 = puVar4 + 1; + } + FUN_0042487b(param_1 + 0x29,0,1); + FUN_00424767(param_1 + 0x34,0,1); + FUN_00424767(param_1 + 0x3a,0,1); + FUN_0042466c(param_1 + 0x41,0,1); + puVar2 = (undefined4 *)FUN_00402298(0x10); + if (puVar2 == (undefined4 *)0x0) { + iVar3 = 0; + } + else { + iVar3 = FUN_004023f4(puVar2); + } + param_1[0x47] = iVar3; + piVar1 = (int *)(param_1[0x47] + 0xc); + *piVar1 = *piVar1 + 1; + param_1[3] = 1; + param_1[0x33] = param_3; + param_1[0x32] = param_4; + param_1[0x30] = param_5; + param_1[0x2f] = param_6; + puVar2 = param_1 + 0x1d; + FUN_0040ab28(puVar2,param_7); + param_1[0x31] = param_8; + FUN_00402a4c((int *)&local_8,param_1 + 0x47,(int *)¶m_2); + piVar1 = local_8 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_8,3); + } + param_1[4] = param_9; + param_1[0x40] = param_10; + FUN_0040ab28(param_1 + 5,puVar2); + FUN_0040ab28(param_1 + 0x11,puVar2); + piVar1 = param_2 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(param_2,3); + } + return param_1; +} + + + +/* @00424084 file=? name=FUN_00424084 */ + +int __cdecl FUN_00424084(int param_1,undefined4 param_2) + +{ + int iVar1; + undefined4 local_8; + + local_8 = param_2; + iVar1 = (**(code **)(*(int *)(param_1 + 0xa4) + 0xc))(param_1 + 0xa4,&local_8); + if (iVar1 == 0) { + iVar1 = 0; + } + else { + iVar1 = FUN_00423e18(iVar1); + } + return iVar1; +} + + + +/* @004240c4 file=? name=FUN_004240c4 */ + +void __cdecl FUN_004240c4(int *param_1,byte param_2) + +{ + int *piVar1; + int *piVar2; + void *this; + void *this_00; + void *this_01; + int local_58 [7]; + int local_3c [7]; + int local_20 [7]; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e4ae8; + FUN_00424830(local_20,(int)(param_1 + 0x3a)); + FUN_00417858(this,local_20,1); + FUN_00424830(local_3c,(int)(param_1 + 0x34)); + FUN_00417858(this_00,local_3c,1); + FUN_00401331(local_58,(int)(param_1 + 0x29)); + FUN_00417858(this_01,local_58,1); + FUN_00401350(local_58,2); + FUN_0042484f(local_3c,2); + FUN_0042484f(local_20,2); + piVar2 = (int *)param_1[0x47]; + piVar1 = piVar2 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(piVar2,3); + } + FUN_0042468f(param_1 + 0x41,2); + FUN_0042478a(param_1 + 0x3a,2); + FUN_0042478a(param_1 + 0x34,2); + FUN_0042489e(param_1 + 0x29,2); + FUN_00415ed8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004241dc file=? name=FUN_004241dc */ + +void __cdecl FUN_004241dc(int param_1) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00402298(0x10); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_00424716(puVar1,(undefined4 *)&stack0x00000008); + } + (**(code **)(*(int *)(param_1 + 0xe8) + 8))(param_1 + 0xe8,puVar1,&stack0x0000000c); + return; +} + + + +/* @00424220 file=? name=FUN_00424220 */ + +void __cdecl FUN_00424220(int param_1,undefined4 param_2) + +{ + (**(code **)(*(int *)(param_1 + 0x104) + 8))(param_1 + 0x104,param_2,&stack0x0000000c); + return; +} + + + +/* @00424244 file=? name=FUN_00424244 */ + +void __cdecl FUN_00424244(int param_1) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00402298(0x10); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_00424716(puVar1,(undefined4 *)&stack0x00000008); + } + (**(code **)(*(int *)(param_1 + 0xd0) + 8))(param_1 + 0xd0,puVar1,&stack0x0000000c); + return; +} + + + +/* @00424288 file=? name=FUN_00424288 */ + +void __cdecl FUN_00424288(int param_1,int *param_2,undefined4 param_3,undefined4 param_4) + +{ + int *piVar1; + undefined4 *puVar2; + int local_20 [7]; + + FUN_00401331(local_20,param_1 + 0xa4); + puVar2 = (undefined4 *)(**(code **)(local_20[0] + 0x54))(local_20,¶m_3); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)FUN_00402298(0x24); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_00423e3c(puVar2); + } + (**(code **)(*(int *)(param_1 + 0xa4) + 8))(param_1 + 0xa4,puVar2,¶m_3); + } + FUN_00423ed8((int)puVar2,(int *)¶m_2); + FUN_00401350(local_20,2); + piVar1 = param_2 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(param_2,3); + } + return; +} + + + +/* @0042432c file=? name=FUN_0042432c */ + +int __cdecl FUN_0042432c(int param_1) + +{ + uint uVar1; + float *pfVar2; + int iVar3; + float *pfVar4; + float local_f4 [12]; + float local_c4 [12]; + float local_94 [12]; + float local_64 [12]; + float local_34 [12]; + + iVar3 = *(int *)(param_1 + 0xbc); + if ((iVar3 != 0) && (*(int *)(iVar3 + 0x14) != 0)) { + *(undefined4 *)(iVar3 + 0x14) = 0; + pfVar2 = (float *)(param_1 + 0x74); + pfVar4 = local_34; + for (iVar3 = 0xc; iVar3 != 0; iVar3 = iVar3 + -1) { + *pfVar4 = *pfVar2; + pfVar2 = pfVar2 + 1; + pfVar4 = pfVar4 + 1; + } + FUN_0040aadc(local_64); + uVar1 = *(uint *)(*(int *)(param_1 + 0xbc) + 0x10); + if (uVar1 < 3) { + pfVar2 = (float *)&DAT_004e107c; + pfVar4 = local_c4; + for (iVar3 = 0xc; iVar3 != 0; iVar3 = iVar3 + -1) { + *pfVar4 = *pfVar2; + pfVar2 = pfVar2 + 1; + pfVar4 = pfVar4 + 1; + } + FUN_0040ab70(local_c4,*(int **)(*(int *)(param_1 + 0xbc) + 0xc)); + FUN_0040bc54(local_64,local_c4); + FUN_0040b104((float *)(param_1 + 0x14),local_34,local_64); + } + else if (uVar1 == 4) { + pfVar2 = (float *)&DAT_004e107c; + pfVar4 = local_94; + for (iVar3 = 0xc; iVar3 != 0; iVar3 = iVar3 + -1) { + *pfVar4 = *pfVar2; + pfVar2 = pfVar2 + 1; + pfVar4 = pfVar4 + 1; + } + pfVar2 = (float *)FUN_0041cfa0(*(int *)(param_1 + 0xbc)); + FUN_0040ac6c(local_94,pfVar2); + FUN_0040bc54(local_64,local_94); + FUN_0040b104((float *)(param_1 + 0x14),local_34,local_64); + } + else if (uVar1 == 5) { + pfVar2 = (float *)&DAT_004e107c; + pfVar4 = local_f4; + for (iVar3 = 0xc; iVar3 != 0; iVar3 = iVar3 + -1) { + *pfVar4 = *pfVar2; + pfVar2 = pfVar2 + 1; + pfVar4 = pfVar4 + 1; + } + pfVar2 = (float *)FUN_0041cfa0(*(int *)(param_1 + 0xbc)); + FUN_0040ac6c(local_f4,pfVar2); + pfVar2 = (float *)(param_1 + 0x14); + FUN_0040bc54(pfVar2,local_f4); + FUN_0040b104(local_64,local_34,pfVar2); + FUN_0040ab28(local_34,&DAT_004e107c); + FUN_0040b0ac((int)local_34,3,*(undefined4 **)(*(int *)(param_1 + 0xbc) + 0xc)); + FUN_0040b104(pfVar2,local_64,local_34); + } + } + return param_1 + 0x14; +} + + + +/* @004244dc file=? name=FUN_004244dc */ + +int __cdecl FUN_004244dc(int param_1) + +{ + float *pfVar1; + float *pfVar2; + + if ((*(int *)(param_1 + 0xc) != 0) && (*(int *)(param_1 + 0xc4) != 0)) { + pfVar1 = (float *)FUN_004244dc(*(int *)(param_1 + 0xc4)); + pfVar2 = (float *)FUN_0042432c(param_1); + FUN_0040b104((float *)(param_1 + 0x44),pfVar2,pfVar1); + *(undefined4 *)(param_1 + 0xc) = 0; + } + return param_1 + 0x44; +} + + + +/* @00424527 file=? name=FUN_00424527 */ + +undefined4 * __cdecl FUN_00424527(undefined4 *param_1,undefined4 param_2,undefined4 param_3) + +{ + FUN_004186ac(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004e4acc; + return param_1; +} + + + +/* @0042454a file=? name=FUN_0042454a */ + +void __cdecl FUN_0042454a(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e4acc; + FUN_004186dc(param_1,0); + if ((param_2 & 1) != 0) { + FUN_00424621(param_1); + } + } + return; +} + + + +/* @00424576 file=? name=FUN_00424576 */ + +undefined4 __cdecl FUN_00424576(undefined4 param_1,int param_2,int param_3) + +{ + undefined4 uVar1; + + if (*(int *)(param_3 + 0x1c) == *(int *)(param_2 + 0x1c)) { + uVar1 = 0; + } + else { + uVar1 = 1; + if (*(int *)(param_2 + 0x1c) <= *(int *)(param_3 + 0x1c)) { + uVar1 = 0xffffffff; + } + } + return uVar1; +} + + + +/* @004245a5 file=? name=FUN_004245a5 */ + +undefined4 __cdecl FUN_004245a5(undefined4 param_1,int *param_2,int param_3) + +{ + undefined4 uVar1; + + if (*(int *)(param_3 + 0x1c) == *param_2) { + uVar1 = 0; + } + else { + uVar1 = 1; + if (*param_2 <= *(int *)(param_3 + 0x1c)) { + uVar1 = 0xffffffff; + } + } + return uVar1; +} + + + +/* @004245d1 file=? name=FUN_004245d1 */ + +void FUN_004245d1(void) + +{ + int iVar1; + undefined4 *puVar2; + + iVar1 = DAT_004e49b8; + DAT_004e49b8 = DAT_004e49b8 + 1; + puVar2 = DAT_004e49b4; + if ((iVar1 == 0) && (puVar2 = (undefined4 *)FUN_00402298(0x28), puVar2 != (undefined4 *)0x0)) { + FUN_00402b98(puVar2,0x18,100,100,s_VChainOf_004e4990); + } + DAT_004e49b4 = puVar2; + FUN_00402f74((int)DAT_004e49b4); + return; +} + + + +/* @00424621 file=? name=FUN_00424621 */ + +void __cdecl FUN_00424621(undefined4 *param_1) + +{ + FUN_00402f98((int)DAT_004e49b4,param_1); + DAT_004e49b8 = DAT_004e49b8 + -1; + if (DAT_004e49b8 == 0) { + if (DAT_004e49b4 != (int *)0x0) { + FUN_00402c28(DAT_004e49b4,0); + FUN_004022d0(DAT_004e49b4); + } + DAT_004e49b4 = (int *)0x0; + } + return; +} + + + +/* @0042466c file=? name=FUN_0042466c */ + +undefined4 * __cdecl FUN_0042466c(undefined4 *param_1,undefined4 param_2,undefined4 param_3) + +{ + FUN_00419184(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004e4ab0; + return param_1; +} + + + +/* @0042468f file=? name=FUN_0042468f */ + +void __cdecl FUN_0042468f(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e4ab0; + FUN_004191b4(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004246bb file=? name=FUN_004246bb */ + +undefined4 __cdecl FUN_004246bb(undefined4 param_1,int param_2,int param_3) + +{ + undefined4 uVar1; + + if (*(int *)(param_3 + 0x14) == *(int *)(param_2 + 0x14)) { + uVar1 = 0; + } + else { + uVar1 = 1; + if (*(int *)(param_2 + 0x14) <= *(int *)(param_3 + 0x14)) { + uVar1 = 0xffffffff; + } + } + return uVar1; +} + + + +/* @004246ea file=? name=FUN_004246ea */ + +undefined4 __cdecl FUN_004246ea(undefined4 param_1,int *param_2,int param_3) + +{ + undefined4 uVar1; + + if (*(int *)(param_3 + 0x14) == *param_2) { + uVar1 = 0; + } + else { + uVar1 = 1; + if (*param_2 <= *(int *)(param_3 + 0x14)) { + uVar1 = 0xffffffff; + } + } + return uVar1; +} + + + +/* @00424716 file=? name=FUN_00424716 */ + +undefined4 * __cdecl FUN_00424716(undefined4 *param_1,undefined4 *param_2) + +{ + FUN_00415e90(param_1,1); + *param_1 = &PTR_FUN_004e4aac; + param_1[3] = *param_2; + return param_1; +} + + + +/* @0042473b file=? name=FUN_0042473b */ + +void __cdecl FUN_0042473b(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e4aac; + FUN_00415ed8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00424767 file=? name=FUN_00424767 */ + +undefined4 * __cdecl FUN_00424767(undefined4 *param_1,undefined4 param_2,undefined4 param_3) + +{ + FUN_00419184(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004e4a90; + return param_1; +} + + + +/* @0042478a file=? name=FUN_0042478a */ + +void __cdecl FUN_0042478a(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e4a90; + FUN_004191b4(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004247b6 file=? name=FUN_004247b6 */ + +undefined4 __cdecl FUN_004247b6(undefined4 param_1,int param_2,int param_3) + +{ + undefined4 uVar1; + + if (*(int *)(param_3 + 0x14) == *(int *)(param_2 + 0x14)) { + uVar1 = 0; + } + else { + uVar1 = 1; + if (*(int *)(param_2 + 0x14) <= *(int *)(param_3 + 0x14)) { + uVar1 = 0xffffffff; + } + } + return uVar1; +} + + + +/* @004247e5 file=? name=FUN_004247e5 */ + +undefined4 __cdecl FUN_004247e5(undefined4 param_1,int *param_2,int param_3) + +{ + undefined4 uVar1; + + if (*(int *)(param_3 + 0x14) == *param_2) { + uVar1 = 0; + } + else { + uVar1 = 1; + if (*param_2 <= *(int *)(param_3 + 0x14)) { + uVar1 = 0xffffffff; + } + } + return uVar1; +} + + + +/* @00424811 file=? name=FUN_00424811 */ + +undefined4 * __cdecl FUN_00424811(undefined4 *param_1,int param_2) + +{ + FUN_004194d8(param_1,param_2); + *param_1 = &PTR_FUN_004e4a34; + return param_1; +} + + + +/* @00424830 file=? name=FUN_00424830 */ + +undefined4 * __cdecl FUN_00424830(undefined4 *param_1,int param_2) + +{ + FUN_004194d8(param_1,param_2); + *param_1 = &PTR_FUN_004e4a34; + return param_1; +} + + + +/* @0042484f file=? name=FUN_0042484f */ + +void __cdecl FUN_0042484f(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e4a34; + FUN_0041951c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0042487b file=? name=FUN_0042487b */ + +undefined4 * __cdecl FUN_0042487b(undefined4 *param_1,undefined4 param_2,undefined4 param_3) + +{ + FUN_00419184(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004e4a18; + return param_1; +} + + + +/* @0042489e file=? name=FUN_0042489e */ + +void __cdecl FUN_0042489e(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e4a18; + FUN_004191b4(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004248ca file=? name=FUN_004248ca */ + +undefined4 __cdecl FUN_004248ca(undefined4 param_1,int param_2,int param_3) + +{ + undefined4 uVar1; + + if (*(int *)(param_3 + 0x14) == *(int *)(param_2 + 0x14)) { + uVar1 = 0; + } + else { + uVar1 = 1; + if (*(int *)(param_2 + 0x14) <= *(int *)(param_3 + 0x14)) { + uVar1 = 0xffffffff; + } + } + return uVar1; +} + + + +/* @004248f9 file=? name=FUN_004248f9 */ + +undefined4 __cdecl FUN_004248f9(undefined4 param_1,int *param_2,int param_3) + +{ + undefined4 uVar1; + + if (*(int *)(param_3 + 0x14) == *param_2) { + uVar1 = 0; + } + else { + uVar1 = 1; + if (*param_2 <= *(int *)(param_3 + 0x14)) { + uVar1 = 0xffffffff; + } + } + return uVar1; +} + + + +/* @00424925 file=? name=FUN_00424925 */ + +undefined4 * __cdecl FUN_00424925(undefined4 *param_1,int param_2) + +{ + FUN_004188dc(param_1,param_2); + *param_1 = &PTR_FUN_004e49bc; + return param_1; +} + + + +/* @00424944 file=? name=FUN_00424944 */ + +undefined4 * __cdecl FUN_00424944(undefined4 *param_1,int param_2) + +{ + FUN_004188dc(param_1,param_2); + *param_1 = &PTR_FUN_004e49bc; + return param_1; +} + + + +/* @00424963 file=? name=FUN_00424963 */ + +undefined4 * __cdecl FUN_00424963(undefined4 *param_1,int param_2) + +{ + FUN_00418904(param_1,param_2); + *param_1 = &PTR_FUN_004e49bc; + return param_1; +} + + + +/* @00424982 file=? name=FUN_00424982 */ + +void __cdecl FUN_00424982(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e49bc; + FUN_00418930(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004249ae file=? name=FUN_004249ae */ + +undefined4 * __cdecl FUN_004249ae(undefined4 param_1,int param_2,undefined4 *param_3) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_0041d485(); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_0041d42e(puVar1,param_1,param_2,param_3); + } + return puVar1; +} + + + +/* @004249de file=? name=FUN_004249de */ + +undefined4 * __cdecl FUN_004249de(undefined4 param_1,int param_2,undefined4 *param_3) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_0041d485(); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_0041d42e(puVar1,param_1,param_2,param_3); + } + return puVar1; +} + + + +/* @00424a0e file=? name=FUN_00424a0e */ + +undefined4 * __cdecl FUN_00424a0e(undefined4 param_1,int param_2,undefined4 *param_3) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_0041d485(); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_0041d42e(puVar1,param_1,param_2,param_3); + } + return puVar1; +} + + + +/* @00424a3e file=? name=FUN_00424a3e */ + +undefined4 * __cdecl FUN_00424a3e(undefined4 param_1,int param_2,undefined4 *param_3) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00424ac5(); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_00424a6e(puVar1,param_1,param_2,param_3); + } + return puVar1; +} + + + +/* @00424a6e file=? name=FUN_00424a6e */ + +undefined4 * __cdecl +FUN_00424a6e(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 *param_4) + +{ + FUN_004185bc(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004e4af8; + param_1[7] = *param_4; + return param_1; +} + + + +/* @00424a99 file=? name=FUN_00424a99 */ + +void __cdecl FUN_00424a99(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e4af8; + FUN_004185ec(param_1,0); + if ((param_2 & 1) != 0) { + FUN_00424b15(param_1); + } + } + return; +} + + + +/* @00424ac5 file=? name=FUN_00424ac5 */ + +void FUN_00424ac5(void) + +{ + int iVar1; + undefined4 *puVar2; + + iVar1 = DAT_004e4af4; + DAT_004e4af4 = DAT_004e4af4 + 1; + puVar2 = DAT_004e4af0; + if ((iVar1 == 0) && (puVar2 = (undefined4 *)FUN_00402298(0x28), puVar2 != (undefined4 *)0x0)) { + FUN_00402b98(puVar2,0x20,100,100,s_VChainLinkOf_004e4999); + } + DAT_004e4af0 = puVar2; + FUN_00402f74((int)DAT_004e4af0); + return; +} + + + +/* @00424b15 file=? name=FUN_00424b15 */ + +void __cdecl FUN_00424b15(undefined4 *param_1) + +{ + FUN_00402f98((int)DAT_004e4af0,param_1); + DAT_004e4af4 = DAT_004e4af4 + -1; + if (DAT_004e4af4 == 0) { + if (DAT_004e4af0 != (int *)0x0) { + FUN_00402c28(DAT_004e4af0,0); + FUN_004022d0(DAT_004e4af0); + } + DAT_004e4af0 = (int *)0x0; + } + return; +} + + + +/* @00424b60 file=? name=FUN_00424b60 */ + +int __cdecl FUN_00424b60(int param_1,int *param_2) + +{ + int *piVar1; + int iVar2; + int iVar3; + char cVar4; + int local_24 [7]; + int *local_8; + + FUN_0041f216(local_24,param_1 + 0x300); + do { + iVar3 = (**(code **)(local_24[0] + 0x28))(local_24); + if (iVar3 == 0) { + iVar3 = 0; + FUN_0041f235(local_24,2); + piVar1 = param_2 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 != 0) { + return iVar3; + } + FUN_004024d8(param_2,3); + return iVar3; + } + local_8 = *(int **)(iVar3 + 0x11c); + local_8[3] = local_8[3] + 1; + iVar2 = FUN_004027d8((int)param_2,(int)local_8); + cVar4 = iVar2 == 0; + piVar1 = local_8 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_8,3); + } + } while (cVar4 == '\0'); + FUN_0041f235(local_24,2); + piVar1 = param_2 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(param_2,3); + } + return iVar3; +} + + + +/* @00424c28 file=? name=FUN_00424c28 */ + +int __cdecl FUN_00424c28(int param_1,int *param_2) + +{ + int *piVar1; + undefined4 *puVar2; + int *piVar3; + int iVar4; + int local_2c [7]; + int *local_10; + int *local_c; + int local_8; + + FUN_0041f216(local_2c,param_1 + 0x300); + do { + local_8 = (**(code **)(local_2c[0] + 0x28))(local_2c); + if (local_8 == 0) { + iVar4 = 0; + FUN_0041f235(local_2c,2); + piVar3 = param_2 + 3; + *piVar3 = *piVar3 + -1; + if (*piVar3 == 0) { + FUN_004024d8(param_2,3); + } + return iVar4; + } + puVar2 = (undefined4 *)FUN_00402298(0x1c); + if (puVar2 == (undefined4 *)0x0) { + piVar3 = (int *)0x0; + } + else { + piVar3 = FUN_00424811(puVar2,local_8 + 0xd0); + } + while (iVar4 = (**(code **)(*piVar3 + 0x28))(piVar3), iVar4 != 0) { + puVar2 = (undefined4 *)FUN_00402298(0x10); + if (puVar2 == (undefined4 *)0x0) { + local_c = (int *)0x0; + } + else { + local_c = (int *)FUN_004023f4(puVar2); + } + local_c[3] = local_c[3] + 1; + FUN_00402a4c((int *)&local_10,(int *)&local_c, + (int *)(*(int *)(*(int *)(param_1 + 0x120) + *(int *)(iVar4 + 0xc) * 4) + 0x15c)) + ; + piVar1 = local_10 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_10,3); + } + iVar4 = FUN_004027d8((int)local_c,(int)param_2); + if (iVar4 == 0) { + if (piVar3 != (int *)0x0) { + (**(code **)*piVar3)(piVar3,3); + } + piVar3 = local_c + 3; + *piVar3 = *piVar3 + -1; + iVar4 = local_8; + if (*piVar3 == 0) { + FUN_004024d8(local_c,3); + } + FUN_0041f235(local_2c,2); + piVar3 = param_2 + 3; + *piVar3 = *piVar3 + -1; + if (*piVar3 != 0) { + return iVar4; + } + FUN_004024d8(param_2,3); + return iVar4; + } + piVar1 = local_c + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_c,3); + } + } + if (piVar3 != (int *)0x0) { + (**(code **)*piVar3)(piVar3,3); + } + } while( true ); +} + + + +/* @00424da8 file=? name=FUN_00424da8 */ + +void __cdecl FUN_00424da8(int param_1,int param_2,float *param_3) + +{ + int iVar1; + int iVar2; + float *pfVar3; + int local_20 [7]; + + iVar1 = FUN_00417ab4(param_1 + 0x31c); + if (*(int *)(iVar1 + 0xfc) != 0) { + FUN_0041f216(local_20,param_1 + 0x300); + while( true ) { + iVar2 = (**(code **)(local_20[0] + 0x28))(local_20); + if (iVar2 == 0) break; + *(undefined4 *)(iVar2 + 0xc) = 1; + } + *(undefined4 *)(iVar1 + 0xfc) = 0; + FUN_0041f235(local_20,2); + } + pfVar3 = (float *)FUN_004244dc(param_2); + FUN_0040b104(param_3,pfVar3,(float *)(param_1 + 0xd0)); + return; +} + + + +/* @00424e38 file=? name=FUN_00424e38 */ + +int * __cdecl FUN_00424e38(int *param_1,int param_2,undefined4 param_3) + +{ + int *piVar1; + undefined4 *puVar2; + undefined4 *puVar3; + uint *puVar4; + int iVar5; + int iVar6; + undefined4 uVar7; + int local_108 [7]; + int local_ec [7]; + undefined4 local_d0 [12]; + int local_a0 [6]; + int *local_88; + int *local_84; + undefined1 local_80 [4]; + int local_7c; + undefined1 local_78 [4]; + int local_74; + uint *local_70; + int local_6c; + uint *local_68; + undefined4 local_64; + int local_60; + undefined4 local_5c; + int local_58; + undefined4 *local_54; + undefined4 *local_50; + int local_4c; + undefined4 local_48; + undefined4 *local_44; + int *local_40; + int local_3c; + int local_38; + undefined4 *local_34; + undefined4 *local_30; + int *local_2c; + int local_28; + int local_24; + int *local_20; + int *local_1c; + undefined1 local_18 [4]; + int local_14; + undefined4 *local_10; + undefined4 *local_c; + undefined4 *local_8; + + FUN_004234f0(param_1,param_2,param_3); + *param_1 = (int)&PTR_FUN_004e4fbc; + FUN_0042466c(param_1 + 0xc0,param_1,1); + FUN_00428601(param_1 + 199,0); + local_c = (undefined4 *)FUN_00402298(0x100); + if (local_c == (undefined4 *)0x0) { + local_10 = (undefined4 *)0x0; + } + else { + local_10 = FUN_0041d170(local_c,param_1,0xffffffff,&DAT_004e35c8); + } + local_8 = local_10; + (**(code **)(param_1[199] + 4))(param_1 + 199,local_10); + local_14 = FUN_00407064(*(int *)(DAT_004efc94 + 0x68),*(int *)(param_2 + 0x28),0x15); + iVar6 = *(int *)(local_14 + 4); + *(int *)(local_14 + 4) = *(int *)(local_14 + 4) + 1; + if (iVar6 == 0) { + FUN_00406cd0(local_14); + } + FUN_004032dc(local_a0,*(undefined4 *)(local_14 + 0x3c),*(undefined4 *)(local_14 + 0x40),0); + local_1c = param_1 + 0xc6; + local_20 = (int *)(**(code **)(local_a0[0] + 0x1c))(local_a0,local_1c,4); + (**(code **)(*local_20 + 0x1c))(local_20,local_18,4); + local_28 = 0; + local_30 = (undefined4 *)FUN_00402298(0x10); + if (local_30 == (undefined4 *)0x0) { + local_2c = (int *)0x0; + } + else { + local_2c = (int *)FUN_004023f4(local_30); + } + local_2c[3] = local_2c[3] + 1; + local_44 = (undefined4 *)FUN_00402298(0x10); + if (local_44 == (undefined4 *)0x0) { + local_40 = (int *)0x0; + } + else { + local_40 = (int *)FUN_004023f4(local_44); + } + local_40[3] = local_40[3] + 1; + puVar2 = &DAT_004e107c; + puVar3 = local_d0; + for (iVar6 = 0xc; iVar6 != 0; iVar6 = iVar6 + -1) { + *puVar3 = *puVar2; + puVar2 = puVar2 + 1; + puVar3 = puVar3 + 1; + } + for (local_4c = 0; local_4c < param_1[0xc6]; local_4c = local_4c + 1) { + piVar1 = (int *)FUN_00402aec(local_a0,(int *)&local_2c); + (**(code **)(*piVar1 + 0x1c))(piVar1,&local_3c,4); + if (local_3c == -1) { + uVar7 = 0; + } + else { + FUN_0041f216(local_ec,(int)(param_1 + 0xc0)); + uVar7 = (**(code **)(local_ec[0] + 0x34))(local_ec,local_3c); + FUN_0041f235(local_ec,2); + } + piVar1 = (int *)(**(code **)(local_a0[0] + 0x1c))(local_a0,&local_48,4); + (**(code **)(*piVar1 + 0x1c))(piVar1,&local_24,4); + if (local_24 == -1) { + local_38 = -1; + puVar2 = (undefined4 *)0x0; + } + else { + local_38 = local_28; + local_50 = (undefined4 *)FUN_00402298(0x1c); + if (local_50 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_0041cb78(local_50,local_8,local_24); + } + local_58 = local_28; + local_54 = puVar2; + (**(code **)(local_8[0x39] + 8))(local_8 + 0x39,puVar2,&local_58); + local_28 = local_28 + 1; + } + (**(code **)(local_a0[0] + 0x1c))(local_a0,local_d0,0x30); + (**(code **)(local_a0[0] + 0x1c))(local_a0,&local_5c,4); + puVar3 = (undefined4 *)FUN_00402298(0x120); + if (puVar3 == (undefined4 *)0x0) { + local_34 = (undefined4 *)0x0; + } + else { + local_2c[3] = local_2c[3] + 1; + local_34 = FUN_00423f18(puVar3,local_2c,local_4c,local_3c,local_38,puVar2,local_d0,uVar7, + local_48,local_5c); + } + (**(code **)(param_1[0xc0] + 8))(param_1 + 0xc0,local_34,&local_4c); + (**(code **)(local_a0[0] + 0x1c))(local_a0,&local_60,4); + iVar6 = 0; + if (0 < local_60) { + do { + piVar1 = (int *)(**(code **)(local_a0[0] + 0x1c))(local_a0,&local_64,4); + FUN_00402aec(piVar1,(int *)&local_40); + puVar4 = (uint *)FUN_00402298(0x10); + if (puVar4 == (uint *)0x0) { + local_68 = (uint *)0x0; + } + else { + local_68 = FUN_00402460(puVar4,&DAT_004e4bae); + } + local_68[3] = local_68[3] + 1; + iVar5 = FUN_004027d8((int)local_40,(int)local_68); + puVar4 = local_68 + 3; + *puVar4 = *puVar4 - 1; + if (*puVar4 == 0) { + FUN_004024d8((int *)local_68,3); + } + if (iVar5 != 0) { + local_40[3] = local_40[3] + 1; + FUN_00424288((int)local_34,local_40,local_64,0); + } + iVar6 = iVar6 + 1; + } while (iVar6 < local_60); + } + (**(code **)(local_a0[0] + 0x1c))(local_a0,&local_6c,4); + iVar6 = 0; + if (0 < local_6c) { + do { + piVar1 = (int *)(**(code **)(local_a0[0] + 0x1c))(local_a0,&local_64,4); + FUN_00402aec(piVar1,(int *)&local_40); + puVar4 = (uint *)FUN_00402298(0x10); + if (puVar4 == (uint *)0x0) { + local_70 = (uint *)0x0; + } + else { + local_70 = FUN_00402460(puVar4,&DAT_004e4bb3); + } + local_70[3] = local_70[3] + 1; + iVar5 = FUN_004027d8((int)local_40,(int)local_70); + puVar4 = local_70 + 3; + *puVar4 = *puVar4 - 1; + if (*puVar4 == 0) { + FUN_004024d8((int *)local_70,3); + } + if (iVar5 != 0) { + local_40[3] = local_40[3] + 1; + FUN_00424288((int)local_34,local_40,local_64,1); + } + iVar6 = iVar6 + 1; + } while (iVar6 < local_6c); + } + (**(code **)(local_a0[0] + 0x1c))(local_a0,&local_74,4); + if ((local_74 != 0) && (iVar6 = 0, 0 < local_74)) { + do { + (**(code **)(local_a0[0] + 0x1c))(local_a0,local_78,4); + FUN_00424244((int)local_34); + iVar6 = iVar6 + 1; + } while (iVar6 < local_74); + } + (**(code **)(local_a0[0] + 0x1c))(local_a0,&local_7c,4); + if ((local_7c != 0) && (iVar6 = 0, 0 < local_7c)) { + do { + (**(code **)(local_a0[0] + 0x1c))(local_a0,local_80,4); + FUN_004241dc((int)local_34); + iVar6 = iVar6 + 1; + } while (iVar6 < local_7c); + } + } + *(int *)(local_14 + 4) = *(int *)(local_14 + 4) + -1; + for (local_4c = 0; local_4c < param_1[0xc6]; local_4c = local_4c + 1) { + FUN_0041f216(local_108,(int)(param_1 + 0xc0)); + iVar6 = (**(code **)(local_108[0] + 0x34))(local_108,local_4c); + FUN_004254a8((int)param_1,iVar6); + FUN_0041f235(local_108,2); + } + local_84 = local_40; + piVar1 = local_40 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_40,3); + } + local_88 = local_2c; + piVar1 = local_2c + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_2c,3); + } + FUN_00403310(local_a0,2); + return param_1; +} + + + +/* @004254a8 file=? name=FUN_004254a8 */ + +void __cdecl FUN_004254a8(int param_1,int param_2) + +{ + undefined4 *puVar1; + undefined4 uVar2; + int iVar3; + int local_24 [7]; + int *local_8; + + FUN_0041f216(local_24,param_1 + 0x300); + puVar1 = (undefined4 *)FUN_00402298(0x1c); + if (puVar1 == (undefined4 *)0x0) { + local_8 = (int *)0x0; + } + else { + local_8 = FUN_00424811(puVar1,param_2 + 0xe8); + } + while (iVar3 = (**(code **)(*local_8 + 0x28))(local_8), iVar3 != 0) { + uVar2 = (**(code **)(local_24[0] + 0x34))(local_24,*(undefined4 *)(iVar3 + 0xc)); + FUN_00424220(param_2,uVar2); + } + if (local_8 != (int *)0x0) { + (**(code **)*local_8)(local_8,3); + } + FUN_0041f235(local_24,2); + return; +} + + + +/* @00425550 file=? name=FUN_00425550 */ + +void __cdecl FUN_00425550(int *param_1,byte param_2) + +{ + void *this; + int local_20 [7]; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e4fbc; + FUN_0041f216(local_20,(int)(param_1 + 0xc0)); + FUN_00417858(this,local_20,1); + FUN_0041f235(local_20,2); + FUN_00428620(param_1 + 199,2); + FUN_0042468f(param_1 + 0xc0,2); + FUN_00423c18(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004255d0 file=? name=FUN_004255d0 */ + +undefined4 __cdecl FUN_004255d0(int param_1,char *param_2,int param_3,undefined4 *param_4) + +{ + char cVar1; + bool bVar2; + int iVar3; + int *piVar4; + int *piVar5; + undefined3 extraout_var; + uint *puVar6; + undefined4 *puVar7; + uint uVar8; + uint uVar9; + char *pcVar10; + char *pcVar11; + int *piVar12; + undefined4 uVar13; + undefined4 *puVar14; + char local_5c [32]; + int local_3c [6]; + int local_24; + int *local_20; + int local_1c; + int *local_18; + int *local_14; + char *local_10; + int *local_c; + char *local_8; + + iVar3 = FUN_00404088(param_3,s_video_004e4bb8,s_skeleton_004e4bbe,&local_8); + if (iVar3 == 0) { + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_is_missing__skl_file_specificati_004e4bc7,(char *)0x0); + } + else { + local_c = (int *)FUN_004064fc((char *)param_4[4],local_8); + piVar4 = (int *)FUN_00402298(0x20); + if (piVar4 == (int *)0x0) { + piVar4 = (int *)0x0; + } + else { + piVar4 = FUN_00403e84(piVar4,(char *)local_c,1); + } + if ((*(byte *)(piVar4 + 7) & 2) == 0) { + iVar3 = piVar4[3]; + } + else { + iVar3 = piVar4[4]; + } + if (iVar3 == 0) { + FUN_004dbb24(&DAT_00524e20,(char *)local_c,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_is_empty_or_missing__004e4bed,(char *)0x0); + } + else { + iVar3 = FUN_00404088(param_3,s_gamedata_004e4c04,s_DamageZones_004e4c0d,&local_10); + if (iVar3 == 0) { + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_is_missing__dmg_file_specificati_004e4c19,(char *)0x0); + } + else { + local_14 = (int *)FUN_004064fc((char *)*param_4,local_10); + piVar5 = (int *)FUN_00402298(0x20); + if (piVar5 == (int *)0x0) { + local_18 = (int *)0x0; + } + else { + local_18 = FUN_00403e84(piVar5,(char *)local_14,1); + } + if ((*(byte *)(local_18 + 7) & 2) == 0) { + iVar3 = local_18[3]; + } + else { + iVar3 = local_18[4]; + } + if (iVar3 == 0) { + FUN_004dbb24(&DAT_00524e20,(char *)local_14,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_is_empty_or_missing__004e4c3f,(char *)0x0); + } + else { + bVar2 = FUN_004040d8((int)piVar4,&DAT_004e4c56,s_DZoneCount_004e4c5b,&local_1c); + if (CONCAT31(extraout_var,bVar2) != 0) { + FUN_0040328c(local_3c,0); + (**(code **)(local_3c[0] + 0x20))(local_3c,&local_1c,4); + local_20 = FUN_00404720((int)piVar4,s_DamageZones_004e4c7f,&DAT_004e4c8b); + iVar3 = FUN_00403b60((int)local_20); + if (iVar3 == 0) { + FUN_004dbb24(&DAT_00524e20,s_No_dZones_listed_in_DamageZones_P_004e4c8f,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + } + else { + local_24 = 0; + for (puVar7 = (undefined4 *)local_20[1]; puVar7 != (undefined4 *)0x0; + puVar7 = (undefined4 *)*puVar7) { + local_24 = local_24 + 1; + uVar8 = 0xffffffff; + pcVar10 = (char *)(puVar7 + 2); + do { + pcVar11 = pcVar10; + if (uVar8 == 0) break; + uVar8 = uVar8 - 1; + pcVar11 = pcVar10 + 1; + cVar1 = *pcVar10; + pcVar10 = pcVar11; + } while (cVar1 != '\0'); + uVar8 = ~uVar8; + pcVar10 = pcVar11 + -uVar8; + pcVar11 = local_5c; + for (uVar9 = uVar8 >> 2; uVar9 != 0; uVar9 = uVar9 - 1) { + *(undefined4 *)pcVar11 = *(undefined4 *)pcVar10; + pcVar10 = pcVar10 + 4; + pcVar11 = pcVar11 + 4; + } + for (uVar8 = uVar8 & 3; uVar8 != 0; uVar8 = uVar8 - 1) { + *pcVar11 = *pcVar10; + pcVar10 = pcVar10 + 1; + pcVar11 = pcVar11 + 1; + } + piVar5 = local_3c; + piVar12 = local_18; + puVar14 = param_4; + puVar6 = (uint *)FUN_00402298(0x10); + if (puVar6 == (uint *)0x0) { + puVar6 = (uint *)0x0; + } + else { + puVar6 = FUN_00402460(puVar6,local_5c); + } + puVar6[3] = puVar6[3] + 1; + FUN_0041e590(param_3,param_2,(int)piVar4,(int *)puVar6,piVar5,(int)piVar12, + (int)puVar14); + } + if (local_1c == local_24) { + puVar7 = (undefined4 *)FUN_00406f3c(param_1,param_2,0x14,1,0,local_3c,-1); + FUN_004022d0(local_c); + FUN_00403ecc(piVar4,3); + FUN_004022d0(local_14); + FUN_00403ecc(local_18,3); + if (local_20 != (int *)0x0) { + (**(code **)*local_20)(local_20,3); + } + uVar13 = *puVar7; + FUN_00403310(local_3c,2); + return uVar13; + } + FUN_004dbb24(&DAT_00524e20,s_DZoneCount____damage_zones_found_004e4cb4,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + } + FUN_004022d0(local_c); + FUN_00403ecc(piVar4,3); + FUN_004022d0(local_14); + FUN_00403ecc(local_18,3); + uVar13 = 0xffffffff; + FUN_00403310(local_3c,2); + return uVar13; + } + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_is_missing_DZoneCount_004e4c66,(char *)0x0); + } + FUN_004022e8(local_14); + FUN_00403ecc(local_18,3); + } + } + FUN_004022e8(local_c); + FUN_00403ecc(piVar4,3); + } + return 0xffffffff; +} + + + +/* @004259b0 file=? name=FUN_004259b0 */ + +undefined4 __cdecl FUN_004259b0(int param_1,char *param_2,uint param_3,int param_4) + +{ + char *pcVar1; + undefined4 *puVar2; + bool bVar3; + int iVar4; + int *piVar5; + undefined3 extraout_var; + char *pcVar6; + uint *puVar7; + int *piVar8; + char *pcVar9; + undefined4 *puVar10; + float *pfVar11; + float *pfVar12; + undefined8 uVar13; + int *piVar14; + undefined4 uVar15; + float local_148 [12]; + float local_118; + float local_114; + float local_110; + float local_10c; + float local_108; + float local_104; + int local_100 [6]; + int *local_e8; + undefined4 *local_e4; + char *local_e0; + char *local_dc; + uint *local_d8; + char *local_d4; + int local_d0; + int local_cc; + int *local_c8; + char *local_c4; + int *local_c0; + int local_bc; + int *local_b8; + undefined4 *local_b4; + int *local_b0; + int local_ac; + int local_a8; + int *local_a4; + int *local_a0; + int *local_9c; + uint *local_98; + char *local_94; + char *local_90; + int local_8c; + int *local_88; + uint *local_84; + char *local_80; + uint *local_7c; + char *local_78; + uint *local_74; + int *local_70; + char *local_6c; + int *local_68; + undefined4 local_64; + undefined4 local_60; + char *local_5c; + int *local_58; + int *local_54; + char *local_50; + uint *local_4c; + char *local_48; + char *local_44; + int *local_40; + undefined4 *local_3c; + int *local_38; + int local_34; + int local_30; + int *local_2c; + int *local_28; + char *local_24; + int local_20; + char *local_1c; + int local_18; + int *local_14; + int *local_10; + char *local_c; + char *local_8; + + iVar4 = FUN_00404088(param_3,s_video_004e4ce9,s_skeleton_004e4cef,&local_8); + if (iVar4 == 0) { + local_c = param_2; + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_is_missing__skl_file_specificati_004e4cf8,(char *)0x0); + } + else { + local_10 = (int *)FUN_004064fc(*(char **)(param_4 + 0x10),local_8); + local_14 = (int *)FUN_00402298(0x20); + if (local_14 == (int *)0x0) { + piVar5 = (int *)0x0; + } + else { + piVar5 = FUN_00403e84(local_14,(char *)local_10,1); + } + if ((*(byte *)(piVar5 + 7) & 2) == 0) { + local_18 = piVar5[3]; + } + else { + local_18 = piVar5[4]; + } + iVar4 = FUN_00403f84((int)piVar5,s_LAB_ONLY_004e4d1e); + if (iVar4 != 0) { + local_18 = local_18 + -1; + } + iVar4 = FUN_00403f84((int)piVar5,s_DamageZones_004e4d27); + if (iVar4 != 0) { + local_18 = local_18 + -1; + } + if (local_18 == 0) { + local_1c = param_2; + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_has_no_Segments__004e4d33,(char *)0x0); + } + else { + bVar3 = FUN_004040d8((int)piVar5,&DAT_004e4d46,s_JointCount_004e4d4b,&local_20); + if (CONCAT31(extraout_var,bVar3) != 0) { + FUN_0040328c(local_100,0); + local_28 = (int *)(**(code **)(local_100[0] + 0x20))(local_100,&local_18,4); + (**(code **)(*local_28 + 0x20))(local_28,&local_20,4); + local_2c = FUN_0040485c((int)piVar5,(char *)0x0); + puVar2 = (undefined4 *)local_2c[1]; + local_30 = -1; + local_3c = (undefined4 *)FUN_00402298(0x10); + if (local_3c == (undefined4 *)0x0) { + local_38 = (int *)0x0; + } + else { + local_38 = (int *)FUN_004023f4(local_3c); + } + local_38[3] = local_38[3] + 1; + pfVar11 = (float *)&DAT_004e107c; + pfVar12 = local_148; + for (iVar4 = 0xc; iVar4 != 0; iVar4 = iVar4 + -1) { + *pfVar12 = *pfVar11; + pfVar11 = pfVar11 + 1; + pfVar12 = pfVar12 + 1; + } +joined_r0x00425bbc: + do { + if (puVar2 == (undefined4 *)0x0) { + local_e4 = (undefined4 *)FUN_00406f3c(param_1,param_2,0x15,1,0,local_100,-1); + FUN_004022d0(local_10); + FUN_00403ecc(piVar5,3); + if (local_2c != (int *)0x0) { + (**(code **)*local_2c)(local_2c,3); + } + uVar15 = *local_e4; + local_e8 = local_38; + piVar5 = local_38 + 3; + *piVar5 = *piVar5 + -1; + if (*piVar5 == 0) { + FUN_004024d8(local_38,3); + } + FUN_00403310(local_100,2); + return uVar15; + } + FUN_00402a98((int *)&local_40,(int *)&local_38,(char *)(puVar2 + 2)); + piVar8 = local_40 + 3; + *piVar8 = *piVar8 + -1; + if (*piVar8 == 0) { + FUN_004024d8(local_40,3); + } + pcVar6 = (char *)local_38[2]; + pcVar9 = s_LAB_ONLY_004e4d6f; + do { + bVar3 = *pcVar6 == *pcVar9; + if (!bVar3) break; + if (*pcVar6 == '\0') goto LAB_00425c3b; + pcVar1 = pcVar6 + 1; + bVar3 = *pcVar1 == pcVar9[1]; + if (!bVar3) break; + pcVar6 = pcVar6 + 2; + pcVar9 = pcVar9 + 2; + bVar3 = *pcVar1 == '\0'; + } while (!bVar3); + if (!bVar3) { + pcVar9 = s_DamageZones_004e4d78; + pcVar6 = (char *)local_38[2]; + do { + if (*pcVar6 != *pcVar9) goto LAB_00425c42; + bVar3 = true; + if (*pcVar6 == '\0') break; + pcVar1 = pcVar6 + 1; + if (*pcVar1 != pcVar9[1]) goto LAB_00425c42; + pcVar6 = pcVar6 + 2; + pcVar9 = pcVar9 + 2; + bVar3 = *pcVar1 == '\0'; + } while (!bVar3); + if (!bVar3) { +LAB_00425c42: + FUN_004029b0(local_100,(int)local_38); + iVar4 = FUN_00404088((int)piVar5,(char *)local_38[2],s_parent_004e4d84,&local_44); + if (iVar4 != 0) { + local_48 = local_44; + piVar8 = piVar5; + local_4c = (uint *)FUN_00402298(0x10); + if (local_4c == (uint *)0x0) { + puVar7 = (uint *)0x0; + } + else { + puVar7 = FUN_00402460(local_4c,local_48); + } + puVar7[3] = puVar7[3] + 1; + local_30 = FUN_0042760c((int *)puVar7,(int)piVar8); + if (local_30 == -1) { + local_50 = local_44; + uVar13 = FUN_004dbd4c(&DAT_00524e20,param_3); + local_54 = (int *)uVar13; + FUN_004dbb24(local_54,&DAT_004e4d8b,(char *)0x0); + FUN_004dbb24(local_54,local_50,(char *)0x0); + FUN_004dbb24(local_54,s_Not_Found__004e4d8d,(char *)0x0); + FUN_004d9c38(local_54); + local_58 = local_38; + piVar8 = local_38 + 3; + *piVar8 = *piVar8 + -1; + if (*piVar8 == 0) { + FUN_004024d8(local_38,3); + } + FUN_00403310(local_100,2); + goto LAB_00425abc; + } + } + (**(code **)(local_100[0] + 0x20))(local_100,&local_30,4); + local_60 = 0xffffffff; + local_64 = 0; + iVar4 = FUN_00404088((int)piVar5,(char *)local_38[2],&DAT_004e4d99,&local_5c); + if (iVar4 == 0) { + pcVar9 = &DAT_004e4d9e; + pcVar6 = (char *)local_38[2]; + do { + bVar3 = *pcVar9 == *pcVar6; + if (!bVar3) break; + if (*pcVar9 == '\0') goto LAB_00425eee; + pcVar1 = pcVar9 + 1; + bVar3 = *pcVar1 == pcVar6[1]; + if (!bVar3) break; + pcVar9 = pcVar9 + 2; + pcVar6 = pcVar6 + 2; + bVar3 = *pcVar1 == '\0'; + } while (!bVar3); + if (!bVar3) { + local_64 = 1; + } + } + else { + pcVar9 = s_static_004e4da3; + pcVar6 = local_5c; + do { + if (*pcVar6 != *pcVar9) goto LAB_00425e01; + bVar3 = true; + if (*pcVar6 == '\0') break; + pcVar1 = pcVar6 + 1; + if (*pcVar1 != pcVar9[1]) goto LAB_00425e01; + pcVar6 = pcVar6 + 2; + pcVar9 = pcVar9 + 2; + bVar3 = *pcVar1 == '\0'; + } while (!bVar3); + if (bVar3) { + local_60 = 3; + } + else { +LAB_00425e01: + pcVar9 = s_hingex_004e4daa; + pcVar6 = local_5c; + do { + if (*pcVar6 != *pcVar9) goto LAB_00425e31; + bVar3 = true; + if (*pcVar6 == '\0') break; + pcVar1 = pcVar6 + 1; + if (*pcVar1 != pcVar9[1]) goto LAB_00425e31; + pcVar6 = pcVar6 + 2; + pcVar9 = pcVar9 + 2; + bVar3 = *pcVar1 == '\0'; + } while (!bVar3); + if (bVar3) { + local_60 = 0; + } + else { +LAB_00425e31: + pcVar9 = s_hingey_004e4db1; + pcVar6 = local_5c; + do { + if (*pcVar6 != *pcVar9) goto LAB_00425e63; + bVar3 = true; + if (*pcVar6 == '\0') break; + pcVar1 = pcVar6 + 1; + if (*pcVar1 != pcVar9[1]) goto LAB_00425e63; + pcVar6 = pcVar6 + 2; + pcVar9 = pcVar9 + 2; + bVar3 = *pcVar1 == '\0'; + } while (!bVar3); + if (bVar3) { + local_60 = 1; + } + else { +LAB_00425e63: + pcVar9 = &DAT_004e4db8; + pcVar6 = local_5c; + do { + if (*pcVar6 != *pcVar9) goto LAB_00425e92; + bVar3 = true; + if (*pcVar6 == '\0') break; + pcVar1 = pcVar6 + 1; + if (*pcVar1 != pcVar9[1]) goto LAB_00425e92; + pcVar6 = pcVar6 + 2; + pcVar9 = pcVar9 + 2; + bVar3 = *pcVar1 == '\0'; + } while (!bVar3); + if (bVar3) { + local_60 = 2; + } + else { +LAB_00425e92: + pcVar9 = &DAT_004e4dbf; + pcVar6 = local_5c; + do { + if (*pcVar6 != *pcVar9) goto LAB_00425ec1; + bVar3 = true; + if (*pcVar6 == '\0') break; + pcVar1 = pcVar6 + 1; + if (*pcVar1 != pcVar9[1]) goto LAB_00425ec1; + pcVar6 = pcVar6 + 2; + pcVar9 = pcVar9 + 2; + bVar3 = *pcVar1 == '\0'; + } while (!bVar3); + if (bVar3) { + local_60 = 4; + } + else { +LAB_00425ec1: + pcVar9 = s_balltranslate_004e4dc4; + pcVar6 = local_5c; + do { + if (*pcVar6 != *pcVar9) goto LAB_00425eee; + bVar3 = true; + if (*pcVar6 == '\0') break; + pcVar1 = pcVar6 + 1; + if (*pcVar1 != pcVar9[1]) goto LAB_00425eee; + pcVar6 = pcVar6 + 2; + pcVar9 = pcVar9 + 2; + bVar3 = *pcVar1 == '\0'; + } while (!bVar3); + if (bVar3) { + local_60 = 5; + } + } + } + } + } + } + } +LAB_00425eee: + local_68 = (int *)(**(code **)(local_100[0] + 0x20))(local_100,&local_64,4); + (**(code **)(*local_68 + 0x20))(local_68,&local_60,4); + FUN_00404118((int)piVar5,(char *)local_38[2],s_tranx_004e4dd2,&local_118); + FUN_00404118((int)piVar5,(char *)local_38[2],s_trany_004e4dd8,&local_114); + FUN_00404118((int)piVar5,(char *)local_38[2],s_tranz_004e4dde,&local_110); + FUN_00404118((int)piVar5,(char *)local_38[2],s_pitch_004e4de4,&local_10c); + FUN_00404118((int)piVar5,(char *)local_38[2],&DAT_004e4dea,&local_108); + FUN_00404118((int)piVar5,(char *)local_38[2],&DAT_004e4dee,&local_104); + FUN_0040b0ac((int)local_148,3,&local_118); + FUN_0040ac6c(local_148,&local_10c); + (**(code **)(local_100[0] + 0x20))(local_100,local_148,0x30); + iVar4 = FUN_00404088(param_3,s_video_004e4df3,s_skeleton_004e4df9,&local_6c); + if (iVar4 == 0) { + local_70 = local_38; + piVar8 = local_38 + 3; + *piVar8 = *piVar8 + -1; + if (*piVar8 == 0) { + FUN_004024d8(local_38,3); + } + FUN_00403310(local_100,2); + goto LAB_00425abc; + } + local_78 = FUN_004064fc(*(char **)(param_4 + 0x10),local_6c); + puVar7 = (uint *)FUN_00402298(0x10); + if (puVar7 == (uint *)0x0) { + local_74 = (uint *)0x0; + } + else { + local_74 = FUN_00402460(puVar7,local_78); + } + local_74[3] = local_74[3] + 1; + piVar8 = (int *)FUN_00402298(0x20); + if (piVar8 == (int *)0x0) { + piVar8 = (int *)0x0; + } + else { + piVar8 = FUN_00403e84(piVar8,(char *)local_74[2],1); + } + if ((*(byte *)(piVar8 + 7) & 2) == 0) { + iVar4 = piVar8[3]; + } + else { + iVar4 = piVar8[4]; + } + if (iVar4 == 0) { + local_7c = local_74; + local_80 = (char *)local_74[2]; + FUN_004dbb24(&DAT_00524e20,local_80,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_is_empty_or_missing__004e4e02,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + FUN_00403ecc(piVar8,3); + local_84 = local_74; + puVar7 = local_74 + 3; + *puVar7 = *puVar7 - 1; + if (*puVar7 == 0) { + FUN_004024d8((int *)local_74,3); + } + local_88 = local_38; + piVar8 = local_38 + 3; + *piVar8 = *piVar8 + -1; + if (*piVar8 == 0) { + FUN_004024d8(local_38,3); + } + FUN_00403310(local_100,2); + goto LAB_00425abc; + } + iVar4 = FUN_00404088((int)piVar8,(char *)local_38[2],s_dzone_004e4e18,&local_90); + if (iVar4 == 0) { + local_8c = -1; + } + else { + local_94 = local_90; + piVar14 = piVar8; + local_98 = (uint *)FUN_00402298(0x10); + if (local_98 == (uint *)0x0) { + puVar7 = (uint *)0x0; + } + else { + puVar7 = FUN_00402460(local_98,local_94); + } + puVar7[3] = puVar7[3] + 1; + local_8c = FUN_004274f8((int *)puVar7,(int)piVar14); + } + (**(code **)(local_100[0] + 0x20))(local_100,&local_8c,4); + FUN_00403ecc(piVar8,3); + puVar7 = local_74 + 3; + *puVar7 = *puVar7 - 1; + if (*puVar7 == 0) { + FUN_004024d8((int *)local_74,3); + } + local_38[3] = local_38[3] + 1; + iVar4 = FUN_00426e64(local_100,param_3,local_38,param_4); + if (iVar4 == 0) { + local_9c = local_38; + piVar8 = local_38 + 3; + *piVar8 = *piVar8 + -1; + if (*piVar8 == 0) { + FUN_004024d8(local_38,3); + } + FUN_00403310(local_100,2); + goto LAB_00425abc; + } + local_38[3] = local_38[3] + 1; + iVar4 = FUN_00426780(local_100,param_3,local_38,param_4); + if (iVar4 == 0) { + local_a0 = local_38; + piVar8 = local_38 + 3; + *piVar8 = *piVar8 + -1; + if (*piVar8 == 0) { + FUN_004024d8(local_38,3); + } + FUN_00403310(local_100,2); + goto LAB_00425abc; + } + local_a4 = FUN_00404720((int)piVar5,(char *)(puVar2 + 2),s_dzone_004e4e1e); + puVar10 = (undefined4 *)local_a4[1]; + local_a8 = FUN_00403b60((int)local_a4); + (**(code **)(local_100[0] + 0x20))(local_100,&local_a8,4); + if ((local_a8 != 0) && (local_ac = 0, 0 < local_a8)) { + do { + local_b4 = (undefined4 *)FUN_00402298(0x10); + if (local_b4 == (undefined4 *)0x0) { + local_b0 = (int *)0x0; + } + else { + local_b0 = (int *)FUN_004023f4(local_b4); + } + local_b0[3] = local_b0[3] + 1; + FUN_00402a98((int *)&local_b8,(int *)&local_b0,(char *)puVar10[1]); + piVar8 = local_b8 + 3; + *piVar8 = *piVar8 + -1; + if (*piVar8 == 0) { + FUN_004024d8(local_b8,3); + } + local_b0[3] = local_b0[3] + 1; + local_bc = FUN_004274f8(local_b0,(int)piVar5); + if (local_bc == -1) { + uVar13 = FUN_004dbd4c(&DAT_00524e20,param_3); + piVar8 = (int *)uVar13; + FUN_004dbb24(piVar8,&DAT_004e4e24,(char *)0x0); + local_c0 = local_b0; + local_c4 = (char *)local_b0[2]; + FUN_004dbb24(piVar8,local_c4,(char *)0x0); + FUN_004dbb24(piVar8,s_Not_Found__004e4e26,(char *)0x0); + FUN_004d9c38(piVar8); + piVar8 = local_b0 + 3; + *piVar8 = *piVar8 + -1; + if (*piVar8 == 0) { + FUN_004024d8(local_b0,3); + } + piVar8 = local_38 + 3; + *piVar8 = *piVar8 + -1; + if (*piVar8 == 0) { + FUN_004024d8(local_38,3); + } + FUN_00403310(local_100,2); + goto LAB_00425abc; + } + (**(code **)(local_100[0] + 0x20))(local_100,&local_bc,4); + puVar10 = (undefined4 *)*puVar10; + piVar8 = local_b0 + 3; + *piVar8 = *piVar8 + -1; + if (*piVar8 == 0) { + FUN_004024d8(local_b0,3); + } + local_ac = local_ac + 1; + } while (local_ac < local_a8); + } + if (local_a4 != (int *)0x0) { + (**(code **)*local_a4)(local_a4,3); + } + local_c8 = FUN_00404720((int)piVar5,(char *)(puVar2 + 2),s_joint_004e4e32); + puVar10 = (undefined4 *)local_c8[1]; + local_34 = 0; + for (; puVar10 != (undefined4 *)0x0; puVar10 = (undefined4 *)*puVar10) { + local_34 = local_34 + 1; + } + (**(code **)(local_100[0] + 0x20))(local_100,&local_34,4); + if (local_34 != 0) { + puVar10 = (undefined4 *)local_c8[1]; + local_cc = 0; + if (0 < local_34) { + do { + local_d4 = (char *)puVar10[1]; + piVar8 = piVar5; + local_d8 = (uint *)FUN_00402298(0x10); + if (local_d8 == (uint *)0x0) { + puVar7 = (uint *)0x0; + } + else { + puVar7 = FUN_00402460(local_d8,local_d4); + } + puVar7[3] = puVar7[3] + 1; + local_d0 = FUN_0042760c((int *)puVar7,(int)piVar8); + if (local_d0 == -1) { + local_dc = (char *)(puVar10 + 2); + local_e0 = param_2; + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004e4e38,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,local_dc,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_Not_Found___004e4e3a,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + piVar8 = local_38 + 3; + *piVar8 = *piVar8 + -1; + if (*piVar8 == 0) { + FUN_004024d8(local_38,3); + } + FUN_00403310(local_100,2); + goto LAB_00425abc; + } + (**(code **)(local_100[0] + 0x20))(local_100,&local_d0,4); + puVar10 = (undefined4 *)*puVar10; + local_cc = local_cc + 1; + } while (local_cc < local_34); + } + } + if (local_c8 != (int *)0x0) { + (**(code **)*local_c8)(local_c8,3); + } + puVar2 = (undefined4 *)*puVar2; + goto joined_r0x00425bbc; + } + } +LAB_00425c3b: + puVar2 = (undefined4 *)*puVar2; + } while( true ); + } + local_24 = param_2; + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_is_missing_JointCount_004e4d56,(char *)0x0); + } +LAB_00425abc: + FUN_004022d0(local_10); + FUN_00403ecc(piVar5,3); + } + return 0xffffffff; +} + + + +/* @00426780 file=? name=FUN_00426780 */ + +undefined4 __cdecl FUN_00426780(int *param_1,int param_2,int *param_3,int param_4) + +{ + int *piVar1; + undefined4 *puVar2; + uint *puVar3; + int iVar4; + int *piVar5; + undefined4 *puVar6; + char cVar7; + undefined4 uVar8; + int *local_80; + int *local_7c; + int *local_78; + char *local_74; + int *local_70; + int *local_6c; + uint *local_68; + uint *local_64; + uint *local_60; + char *local_5c; + uint *local_58; + char *local_54; + uint *local_50; + char *local_4c; + uint *local_48; + int *local_44; + uint *local_40; + uint *local_3c; + uint *local_38; + uint *local_34; + uint *local_30; + uint *local_2c; + uint *local_28; + uint *local_24; + undefined4 local_20; + char *local_1c; + uint *local_18; + int *local_14; + int *local_10; + int local_c; + int *local_8; + + local_8 = FUN_00404720(param_2,s_video_004e4e47,s_destroyed_004e4e4d); + local_c = FUN_00403b60((int)local_8); + local_10 = param_1; + (**(code **)(*param_1 + 0x20))(param_1,&local_c,4); + if (local_c == 0) { + if (local_8 != (int *)0x0) { + (**(code **)*local_8)(local_8,3); + } + uVar8 = 1; + local_14 = param_3; + piVar5 = param_3 + 3; + *piVar5 = *piVar5 + -1; + if (*piVar5 == 0) { + FUN_004024d8(param_3,3); + } + } + else { + puVar2 = (undefined4 *)local_8[1]; + while (puVar2 != (undefined4 *)0x0) { + local_1c = (char *)(puVar2 + 2); + puVar3 = (uint *)FUN_00402298(0x10); + if (puVar3 == (uint *)0x0) { + local_18 = (uint *)0x0; + } + else { + local_18 = FUN_00402460(puVar3,local_1c); + } + local_18[3] = local_18[3] + 1; + puVar3 = (uint *)FUN_00402298(0x10); + if (puVar3 == (uint *)0x0) { + local_24 = (uint *)0x0; + } + else { + local_24 = FUN_00402460(puVar3,s_destroyed_004e4e57); + } + local_24[3] = local_24[3] + 1; + iVar4 = FUN_004027d8((int)local_18,(int)local_24); + cVar7 = iVar4 == 0; + puVar3 = local_24 + 3; + *puVar3 = *puVar3 - 1; + if (*puVar3 == 0) { + FUN_004024d8((int *)local_24,3); + } + if (cVar7 == '\0') { + puVar3 = (uint *)FUN_00402298(0x10); + if (puVar3 == (uint *)0x0) { + local_28 = (uint *)0x0; + } + else { + local_28 = FUN_00402460(puVar3,s_destroyeds_004e4e61); + } + local_28[3] = local_28[3] + 1; + iVar4 = FUN_004027d8((int)local_18,(int)local_28); + cVar7 = iVar4 == 0; + puVar3 = local_28 + 3; + *puVar3 = *puVar3 - 1; + if (*puVar3 == 0) { + FUN_004024d8((int *)local_28,3); + } + if (cVar7 == '\0') { + puVar3 = (uint *)FUN_00402298(0x10); + if (puVar3 == (uint *)0x0) { + local_2c = (uint *)0x0; + } + else { + local_2c = FUN_00402460(puVar3,s_destroyedt_004e4e6c); + } + local_2c[3] = local_2c[3] + 1; + iVar4 = FUN_004027d8((int)local_18,(int)local_2c); + cVar7 = iVar4 == 0; + puVar3 = local_2c + 3; + *puVar3 = *puVar3 - 1; + if (*puVar3 == 0) { + FUN_004024d8((int *)local_2c,3); + } + if (cVar7 == '\0') { + puVar3 = (uint *)FUN_00402298(0x10); + if (puVar3 == (uint *)0x0) { + local_30 = (uint *)0x0; + } + else { + local_30 = FUN_00402460(puVar3,s_destroyedo_004e4e77); + } + local_30[3] = local_30[3] + 1; + iVar4 = FUN_004027d8((int)local_18,(int)local_30); + cVar7 = iVar4 == 0; + puVar3 = local_30 + 3; + *puVar3 = *puVar3 - 1; + if (*puVar3 == 0) { + FUN_004024d8((int *)local_30,3); + } + if (cVar7 == '\0') { + puVar3 = (uint *)FUN_00402298(0x10); + if (puVar3 == (uint *)0x0) { + local_34 = (uint *)0x0; + } + else { + local_34 = FUN_00402460(puVar3,s_destroyeda_004e4e82); + } + local_34[3] = local_34[3] + 1; + iVar4 = FUN_004027d8((int)local_18,(int)local_34); + cVar7 = iVar4 == 0; + puVar3 = local_34 + 3; + *puVar3 = *puVar3 - 1; + if (*puVar3 == 0) { + FUN_004024d8((int *)local_34,3); + } + if (cVar7 == '\0') { + puVar3 = (uint *)FUN_00402298(0x10); + if (puVar3 == (uint *)0x0) { + local_38 = (uint *)0x0; + } + else { + local_38 = FUN_00402460(puVar3,s_destroyedb_004e4e8d); + } + local_38[3] = local_38[3] + 1; + iVar4 = FUN_004027d8((int)local_18,(int)local_38); + cVar7 = iVar4 == 0; + puVar3 = local_38 + 3; + *puVar3 = *puVar3 - 1; + if (*puVar3 == 0) { + FUN_004024d8((int *)local_38,3); + } + if (cVar7 == '\0') { + puVar3 = (uint *)FUN_00402298(0x10); + if (puVar3 == (uint *)0x0) { + local_3c = (uint *)0x0; + } + else { + local_3c = FUN_00402460(puVar3,s_destroyedc_004e4e98); + } + local_3c[3] = local_3c[3] + 1; + iVar4 = FUN_004027d8((int)local_18,(int)local_3c); + cVar7 = iVar4 == 0; + puVar3 = local_3c + 3; + *puVar3 = *puVar3 - 1; + if (*puVar3 == 0) { + FUN_004024d8((int *)local_3c,3); + } + if (cVar7 == '\0') { + puVar3 = (uint *)FUN_00402298(0x10); + if (puVar3 == (uint *)0x0) { + local_40 = (uint *)0x0; + } + else { + local_40 = FUN_00402460(puVar3,s_destroyedd_004e4ea3); + } + local_40[3] = local_40[3] + 1; + iVar4 = FUN_004027d8((int)local_18,(int)local_40); + cVar7 = iVar4 == 0; + puVar3 = local_40 + 3; + *puVar3 = *puVar3 - 1; + if (*puVar3 == 0) { + FUN_004024d8((int *)local_40,3); + } + if (cVar7 != '\0') { + local_20 = 7; + } + } + else { + local_20 = 6; + } + } + else { + local_20 = 5; + } + } + else { + local_20 = 4; + } + } + else { + local_20 = 3; + } + } + else { + local_20 = 2; + } + } + else { + local_20 = 1; + } + } + else { + local_20 = 0; + } + local_44 = param_1; + (**(code **)(*param_1 + 0x20))(param_1,&local_20,4); + local_4c = (char *)puVar2[1]; + puVar3 = (uint *)FUN_00402298(0x10); + if (puVar3 == (uint *)0x0) { + local_48 = (uint *)0x0; + } + else { + local_48 = FUN_00402460(puVar3,local_4c); + } + local_48[3] = local_48[3] + 1; + local_54 = FUN_004064fc(*(char **)(param_4 + 0x10),(char *)local_48[2]); + puVar3 = (uint *)FUN_00402298(0x10); + if (puVar3 == (uint *)0x0) { + local_50 = (uint *)0x0; + } + else { + local_50 = FUN_00402460(puVar3,local_54); + } + local_50[3] = local_50[3] + 1; + piVar5 = (int *)FUN_00402298(0x20); + if (piVar5 == (int *)0x0) { + piVar5 = (int *)0x0; + } + else { + piVar5 = FUN_00403e84(piVar5,(char *)local_50[2],1); + } + if ((*(byte *)(piVar5 + 7) & 2) == 0) { + iVar4 = piVar5[3]; + } + else { + iVar4 = piVar5[4]; + } + if (iVar4 == 0) { + local_58 = local_50; + local_5c = (char *)local_50[2]; + FUN_004dbb24(&DAT_00524e20,local_5c,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_is_empty_or_missing__004e4eae,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + if (local_8 != (int *)0x0) { + (**(code **)*local_8)(local_8,3); + } + FUN_00403ecc(piVar5,3); + uVar8 = 0xffffffff; + local_60 = local_50; + puVar3 = local_50 + 3; + *puVar3 = *puVar3 - 1; + if (*puVar3 == 0) { + FUN_004024d8((int *)local_50,3); + } + local_64 = local_48; + puVar3 = local_48 + 3; + *puVar3 = *puVar3 - 1; + if (*puVar3 == 0) { + FUN_004024d8((int *)local_48,3); + } + local_68 = local_18; + puVar3 = local_18 + 3; + *puVar3 = *puVar3 - 1; + if (*puVar3 == 0) { + FUN_004024d8((int *)local_18,3); + } + local_6c = param_3; + piVar5 = param_3 + 3; + *piVar5 = *piVar5 + -1; + if (*piVar5 != 0) { + return uVar8; + } + FUN_004024d8(param_3,3); + return uVar8; + } + puVar6 = (undefined4 *)FUN_00402298(0x10); + if (puVar6 == (undefined4 *)0x0) { + local_70 = (int *)0x0; + } + else { + local_70 = (int *)FUN_004023f4(puVar6); + } + local_70[3] = local_70[3] + 1; + iVar4 = FUN_00404088((int)piVar5,(char *)param_3[2],s_Object_004e4ec4,&local_74); + if (iVar4 == 0) { + FUN_00402a98((int *)&local_80,(int *)&local_70,&DAT_004e4ecb); + piVar1 = local_80 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_80,3); + } + } + else { + FUN_00402a98((int *)&local_78,(int *)&local_70,local_74); + local_7c = local_78; + piVar1 = local_78 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_78,3); + } + } + FUN_004029b0(param_1,(int)local_70); + FUN_00403ecc(piVar5,3); + puVar2 = (undefined4 *)*puVar2; + piVar5 = local_70 + 3; + *piVar5 = *piVar5 + -1; + if (*piVar5 == 0) { + FUN_004024d8(local_70,3); + } + puVar3 = local_50 + 3; + *puVar3 = *puVar3 - 1; + if (*puVar3 == 0) { + FUN_004024d8((int *)local_50,3); + } + puVar3 = local_48 + 3; + *puVar3 = *puVar3 - 1; + if (*puVar3 == 0) { + FUN_004024d8((int *)local_48,3); + } + puVar3 = local_18 + 3; + *puVar3 = *puVar3 - 1; + if (*puVar3 == 0) { + FUN_004024d8((int *)local_18,3); + } + } + if (local_8 != (int *)0x0) { + (**(code **)*local_8)(local_8,3); + } + uVar8 = 1; + piVar5 = param_3 + 3; + *piVar5 = *piVar5 + -1; + if (*piVar5 == 0) { + FUN_004024d8(param_3,3); + } + } + return uVar8; +} + + + +/* @00426e64 file=? name=FUN_00426e64 */ + +undefined4 __cdecl FUN_00426e64(int *param_1,int param_2,int *param_3,int param_4) + +{ + int *piVar1; + undefined4 *puVar2; + uint *puVar3; + int iVar4; + int *piVar5; + undefined4 *puVar6; + char cVar7; + undefined4 uVar8; + int *local_7c; + int *local_78; + int *local_74; + char *local_70; + int *local_6c; + int *local_68; + uint *local_64; + uint *local_60; + uint *local_5c; + char *local_58; + uint *local_54; + char *local_50; + uint *local_4c; + char *local_48; + uint *local_44; + int *local_40; + uint *local_3c; + uint *local_38; + uint *local_34; + uint *local_30; + uint *local_2c; + uint *local_28; + uint *local_24; + uint *local_20; + undefined4 local_1c; + char *local_18; + uint *local_14; + int *local_10; + int local_c; + int *local_8; + + local_8 = FUN_00404720(param_2,s_video_004e4ed0,s_skeleton_004e4ed6); + local_c = FUN_00403b60((int)local_8); + local_10 = param_1; + (**(code **)(*param_1 + 0x20))(param_1,&local_c,4); + puVar2 = (undefined4 *)local_8[1]; + while( true ) { + if (puVar2 == (undefined4 *)0x0) { + if (local_8 != (int *)0x0) { + (**(code **)*local_8)(local_8,3); + } + uVar8 = 1; + piVar5 = param_3 + 3; + *piVar5 = *piVar5 + -1; + if (*piVar5 == 0) { + FUN_004024d8(param_3,3); + } + return uVar8; + } + local_18 = (char *)(puVar2 + 2); + puVar3 = (uint *)FUN_00402298(0x10); + if (puVar3 == (uint *)0x0) { + local_14 = (uint *)0x0; + } + else { + local_14 = FUN_00402460(puVar3,local_18); + } + local_14[3] = local_14[3] + 1; + puVar3 = (uint *)FUN_00402298(0x10); + if (puVar3 == (uint *)0x0) { + local_20 = (uint *)0x0; + } + else { + local_20 = FUN_00402460(puVar3,s_skeleton_004e4edf); + } + local_20[3] = local_20[3] + 1; + iVar4 = FUN_004027d8((int)local_14,(int)local_20); + cVar7 = iVar4 == 0; + puVar3 = local_20 + 3; + *puVar3 = *puVar3 - 1; + if (*puVar3 == 0) { + FUN_004024d8((int *)local_20,3); + } + if (cVar7 == '\0') { + puVar3 = (uint *)FUN_00402298(0x10); + if (puVar3 == (uint *)0x0) { + local_24 = (uint *)0x0; + } + else { + local_24 = FUN_00402460(puVar3,s_skeletons_004e4ee8); + } + local_24[3] = local_24[3] + 1; + iVar4 = FUN_004027d8((int)local_14,(int)local_24); + cVar7 = iVar4 == 0; + puVar3 = local_24 + 3; + *puVar3 = *puVar3 - 1; + if (*puVar3 == 0) { + FUN_004024d8((int *)local_24,3); + } + if (cVar7 == '\0') { + puVar3 = (uint *)FUN_00402298(0x10); + if (puVar3 == (uint *)0x0) { + local_28 = (uint *)0x0; + } + else { + local_28 = FUN_00402460(puVar3,s_skeletont_004e4ef2); + } + local_28[3] = local_28[3] + 1; + iVar4 = FUN_004027d8((int)local_14,(int)local_28); + cVar7 = iVar4 == 0; + puVar3 = local_28 + 3; + *puVar3 = *puVar3 - 1; + if (*puVar3 == 0) { + FUN_004024d8((int *)local_28,3); + } + if (cVar7 == '\0') { + puVar3 = (uint *)FUN_00402298(0x10); + if (puVar3 == (uint *)0x0) { + local_2c = (uint *)0x0; + } + else { + local_2c = FUN_00402460(puVar3,s_skeletono_004e4efc); + } + local_2c[3] = local_2c[3] + 1; + iVar4 = FUN_004027d8((int)local_14,(int)local_2c); + cVar7 = iVar4 == 0; + puVar3 = local_2c + 3; + *puVar3 = *puVar3 - 1; + if (*puVar3 == 0) { + FUN_004024d8((int *)local_2c,3); + } + if (cVar7 == '\0') { + puVar3 = (uint *)FUN_00402298(0x10); + if (puVar3 == (uint *)0x0) { + local_30 = (uint *)0x0; + } + else { + local_30 = FUN_00402460(puVar3,s_skeletona_004e4f06); + } + local_30[3] = local_30[3] + 1; + iVar4 = FUN_004027d8((int)local_14,(int)local_30); + cVar7 = iVar4 == 0; + puVar3 = local_30 + 3; + *puVar3 = *puVar3 - 1; + if (*puVar3 == 0) { + FUN_004024d8((int *)local_30,3); + } + if (cVar7 == '\0') { + puVar3 = (uint *)FUN_00402298(0x10); + if (puVar3 == (uint *)0x0) { + local_34 = (uint *)0x0; + } + else { + local_34 = FUN_00402460(puVar3,s_skeletonb_004e4f10); + } + local_34[3] = local_34[3] + 1; + iVar4 = FUN_004027d8((int)local_14,(int)local_34); + cVar7 = iVar4 == 0; + puVar3 = local_34 + 3; + *puVar3 = *puVar3 - 1; + if (*puVar3 == 0) { + FUN_004024d8((int *)local_34,3); + } + if (cVar7 == '\0') { + puVar3 = (uint *)FUN_00402298(0x10); + if (puVar3 == (uint *)0x0) { + local_38 = (uint *)0x0; + } + else { + local_38 = FUN_00402460(puVar3,s_skeletonc_004e4f1a); + } + local_38[3] = local_38[3] + 1; + iVar4 = FUN_004027d8((int)local_14,(int)local_38); + cVar7 = iVar4 == 0; + puVar3 = local_38 + 3; + *puVar3 = *puVar3 - 1; + if (*puVar3 == 0) { + FUN_004024d8((int *)local_38,3); + } + if (cVar7 == '\0') { + puVar3 = (uint *)FUN_00402298(0x10); + if (puVar3 == (uint *)0x0) { + local_3c = (uint *)0x0; + } + else { + local_3c = FUN_00402460(puVar3,s_skeletond_004e4f24); + } + local_3c[3] = local_3c[3] + 1; + iVar4 = FUN_004027d8((int)local_14,(int)local_3c); + cVar7 = iVar4 == 0; + puVar3 = local_3c + 3; + *puVar3 = *puVar3 - 1; + if (*puVar3 == 0) { + FUN_004024d8((int *)local_3c,3); + } + if (cVar7 != '\0') { + local_1c = 7; + } + } + else { + local_1c = 6; + } + } + else { + local_1c = 5; + } + } + else { + local_1c = 4; + } + } + else { + local_1c = 3; + } + } + else { + local_1c = 2; + } + } + else { + local_1c = 1; + } + } + else { + local_1c = 0; + } + local_40 = param_1; + (**(code **)(*param_1 + 0x20))(param_1,&local_1c,4); + local_48 = (char *)puVar2[1]; + puVar3 = (uint *)FUN_00402298(0x10); + if (puVar3 == (uint *)0x0) { + local_44 = (uint *)0x0; + } + else { + local_44 = FUN_00402460(puVar3,local_48); + } + local_44[3] = local_44[3] + 1; + local_50 = FUN_004064fc(*(char **)(param_4 + 0x10),(char *)local_44[2]); + puVar3 = (uint *)FUN_00402298(0x10); + if (puVar3 == (uint *)0x0) { + local_4c = (uint *)0x0; + } + else { + local_4c = FUN_00402460(puVar3,local_50); + } + local_4c[3] = local_4c[3] + 1; + piVar5 = (int *)FUN_00402298(0x20); + if (piVar5 == (int *)0x0) { + piVar5 = (int *)0x0; + } + else { + piVar5 = FUN_00403e84(piVar5,(char *)local_4c[2],1); + } + if ((*(byte *)(piVar5 + 7) & 2) == 0) { + iVar4 = piVar5[3]; + } + else { + iVar4 = piVar5[4]; + } + if (iVar4 == 0) break; + puVar6 = (undefined4 *)FUN_00402298(0x10); + if (puVar6 == (undefined4 *)0x0) { + local_6c = (int *)0x0; + } + else { + local_6c = (int *)FUN_004023f4(puVar6); + } + local_6c[3] = local_6c[3] + 1; + iVar4 = FUN_00404088((int)piVar5,(char *)param_3[2],s_Object_004e4f44,&local_70); + if (iVar4 == 0) { + FUN_00402a98((int *)&local_7c,(int *)&local_6c,&DAT_004e4f4b); + piVar1 = local_7c + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_7c,3); + } + } + else { + FUN_00402a98((int *)&local_74,(int *)&local_6c,local_70); + local_78 = local_74; + piVar1 = local_74 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_74,3); + } + } + FUN_004029b0(param_1,(int)local_6c); + FUN_00403ecc(piVar5,3); + puVar2 = (undefined4 *)*puVar2; + piVar5 = local_6c + 3; + *piVar5 = *piVar5 + -1; + if (*piVar5 == 0) { + FUN_004024d8(local_6c,3); + } + puVar3 = local_4c + 3; + *puVar3 = *puVar3 - 1; + if (*puVar3 == 0) { + FUN_004024d8((int *)local_4c,3); + } + puVar3 = local_44 + 3; + *puVar3 = *puVar3 - 1; + if (*puVar3 == 0) { + FUN_004024d8((int *)local_44,3); + } + puVar3 = local_14 + 3; + *puVar3 = *puVar3 - 1; + if (*puVar3 == 0) { + FUN_004024d8((int *)local_14,3); + } + } + local_54 = local_4c; + local_58 = (char *)local_4c[2]; + FUN_004dbb24(&DAT_00524e20,local_58,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_is_empty_or_missing__004e4f2e,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + if (local_8 != (int *)0x0) { + (**(code **)*local_8)(local_8,3); + } + FUN_00403ecc(piVar5,3); + uVar8 = 0xffffffff; + local_5c = local_4c; + puVar3 = local_4c + 3; + *puVar3 = *puVar3 - 1; + if (*puVar3 == 0) { + FUN_004024d8((int *)local_4c,3); + } + local_60 = local_44; + puVar3 = local_44 + 3; + *puVar3 = *puVar3 - 1; + if (*puVar3 == 0) { + FUN_004024d8((int *)local_44,3); + } + local_64 = local_14; + puVar3 = local_14 + 3; + *puVar3 = *puVar3 - 1; + if (*puVar3 == 0) { + FUN_004024d8((int *)local_14,3); + } + local_68 = param_3; + piVar5 = param_3 + 3; + *piVar5 = *piVar5 + -1; + if (*piVar5 != 0) { + return uVar8; + } + FUN_004024d8(param_3,3); + return uVar8; +} + + + +/* @004274f8 file=? name=FUN_004274f8 */ + +int __cdecl FUN_004274f8(int *param_1,int param_2) + +{ + char *pcVar1; + undefined4 *puVar2; + int *piVar3; + int iVar4; + char *pcVar5; + char *pcVar6; + bool bVar7; + int local_8; + + local_8 = -1; + piVar3 = FUN_00404720(param_2,s_DamageZones_004e4f50,&DAT_004e4f5c); + iVar4 = FUN_00403b60((int)piVar3); + if (iVar4 == 0) { + FUN_004dbb24(&DAT_00524e20,s_No_dZones_listed_in_DamageZones_P_004e4f60,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + if (piVar3 != (int *)0x0) { + (**(code **)*piVar3)(piVar3,3); + } + iVar4 = -1; + piVar3 = param_1 + 3; + *piVar3 = *piVar3 + -1; + if (*piVar3 == 0) { + FUN_004024d8(param_1,3); + } + } + else { + for (puVar2 = (undefined4 *)piVar3[1]; puVar2 != (undefined4 *)0x0; + puVar2 = (undefined4 *)*puVar2) { + pcVar5 = (char *)(puVar2 + 2); + pcVar6 = (char *)param_1[2]; + do { + if (*pcVar5 != *pcVar6) goto LAB_004275d8; + bVar7 = true; + if (*pcVar5 == '\0') break; + pcVar1 = pcVar5 + 1; + if (*pcVar1 != pcVar6[1]) goto LAB_004275d8; + pcVar5 = pcVar5 + 2; + pcVar6 = pcVar6 + 2; + bVar7 = *pcVar1 == '\0'; + } while (!bVar7); + if (bVar7) { + FUN_00407ae0((char *)puVar2[1],&local_8); + if (piVar3 != (int *)0x0) { + (**(code **)*piVar3)(piVar3,3); + } + piVar3 = param_1 + 3; + *piVar3 = *piVar3 + -1; + if (*piVar3 != 0) { + return local_8; + } + FUN_004024d8(param_1,3); + return local_8; + } +LAB_004275d8: + } + if (piVar3 != (int *)0x0) { + (**(code **)*piVar3)(piVar3,3); + } + piVar3 = param_1 + 3; + *piVar3 = *piVar3 + -1; + iVar4 = local_8; + if (*piVar3 == 0) { + FUN_004024d8(param_1,3); + } + } + return iVar4; +} + + + +/* @0042760c file=? name=FUN_0042760c */ + +int __cdecl FUN_0042760c(int *param_1,int param_2) + +{ + char cVar1; + undefined4 *puVar2; + int *piVar3; + char *pcVar4; + char *pcVar5; + uint uVar6; + uint uVar7; + char *pcVar8; + char *pcVar9; + int iVar10; + bool bVar11; + char local_84 [128]; + + iVar10 = -1; + piVar3 = FUN_0040485c(param_2,(char *)0x0); + puVar2 = (undefined4 *)piVar3[1]; +joined_r0x0042762d: + do { + if (puVar2 == (undefined4 *)0x0) { + if (piVar3 != (int *)0x0) { + (**(code **)*piVar3)(piVar3,3); + } + iVar10 = -1; + piVar3 = param_1 + 3; + *piVar3 = *piVar3 + -1; + if (*piVar3 == 0) { + FUN_004024d8(param_1,3); + } + return iVar10; + } + uVar6 = 0xffffffff; + pcVar5 = (char *)(puVar2 + 2); + do { + pcVar9 = pcVar5; + if (uVar6 == 0) break; + uVar6 = uVar6 - 1; + pcVar9 = pcVar5 + 1; + cVar1 = *pcVar5; + pcVar5 = pcVar9; + } while (cVar1 != '\0'); + uVar6 = ~uVar6; + pcVar5 = pcVar9 + -uVar6; + pcVar9 = local_84; + for (uVar7 = uVar6 >> 2; uVar7 != 0; uVar7 = uVar7 - 1) { + *(undefined4 *)pcVar9 = *(undefined4 *)pcVar5; + pcVar5 = pcVar5 + 4; + pcVar9 = pcVar9 + 4; + } + pcVar8 = s_LAB_ONLY_004e4f85; + pcVar4 = local_84; + for (uVar6 = uVar6 & 3; uVar6 != 0; uVar6 = uVar6 - 1) { + *pcVar9 = *pcVar5; + pcVar5 = pcVar5 + 1; + pcVar9 = pcVar9 + 1; + } + do { + bVar11 = *pcVar4 == *pcVar8; + if (!bVar11) break; + if (*pcVar4 == '\0') goto LAB_004276a8; + pcVar5 = pcVar4 + 1; + bVar11 = *pcVar5 == pcVar8[1]; + if (!bVar11) break; + pcVar4 = pcVar4 + 2; + pcVar8 = pcVar8 + 2; + bVar11 = *pcVar5 == '\0'; + } while (!bVar11); + if (bVar11) { +LAB_004276a8: + puVar2 = (undefined4 *)*puVar2; + goto joined_r0x0042762d; + } + pcVar5 = local_84; + pcVar9 = s_DamageZones_004e4f8e; + do { + if (*pcVar5 != *pcVar9) goto LAB_004276af; + bVar11 = true; + if (*pcVar5 == '\0') break; + pcVar4 = pcVar5 + 1; + if (*pcVar4 != pcVar9[1]) goto LAB_004276af; + pcVar5 = pcVar5 + 2; + pcVar9 = pcVar9 + 2; + bVar11 = *pcVar4 == '\0'; + } while (!bVar11); + if (bVar11) goto LAB_004276a8; +LAB_004276af: + iVar10 = iVar10 + 1; + pcVar5 = local_84; + pcVar9 = (char *)param_1[2]; + do { + if (*pcVar5 != *pcVar9) goto LAB_004276fe; + bVar11 = true; + if (*pcVar5 == '\0') break; + pcVar4 = pcVar5 + 1; + if (*pcVar4 != pcVar9[1]) goto LAB_004276fe; + pcVar5 = pcVar5 + 2; + pcVar9 = pcVar9 + 2; + bVar11 = *pcVar4 == '\0'; + } while (!bVar11); + if (bVar11) { + if (piVar3 != (int *)0x0) { + (**(code **)*piVar3)(piVar3,3); + } + piVar3 = param_1 + 3; + *piVar3 = *piVar3 + -1; + if (*piVar3 != 0) { + return iVar10; + } + FUN_004024d8(param_1,3); + return iVar10; + } +LAB_004276fe: + puVar2 = (undefined4 *)*puVar2; + } while( true ); +} + + + +/* @00427738 file=? name=FUN_00427738 */ + +int * __cdecl FUN_00427738(int param_1) + +{ + int *piVar1; + + piVar1 = (int *)FUN_00402298(0x328); + if (piVar1 == (int *)0x0) { + piVar1 = (int *)0x0; + } + else { + piVar1 = FUN_00424e38(piVar1,param_1,&DAT_004e4b2c); + } + return piVar1; +} + + + +/* @00427768 file=? name=FUN_00427768 */ + +undefined4 * __cdecl FUN_00427768(undefined4 *param_1,int param_2) + +{ + undefined4 uVar1; + + FUN_00415e90(param_1,1); + *param_1 = &PTR_FUN_004e4fb8; + param_1[3] = 0; + param_1[0x10] = param_2; + uVar1 = FUN_00417ab4(param_2 + 0x31c); + param_1[0xe] = uVar1; + param_1[0x11] = 0; + return param_1; +} + + + +/* @004277a8 file=? name=FUN_004277a8 */ + +void __cdecl +FUN_004277a8(int param_1,int param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5) + +{ + int *piVar1; + undefined4 uVar2; + uint uVar3; + int iVar4; + undefined4 *puVar5; + int iVar6; + int local_2c [7]; + int local_10; + int local_c; + int local_8; + + *(undefined4 *)(param_1 + 0x48) = param_3; + *(undefined4 *)(param_1 + 0x4c) = param_4; + *(undefined4 *)(param_1 + 0x50) = param_5; + *(undefined4 *)(param_1 + 0x54) = 0; + *(undefined4 *)(param_1 + 0x3c) = 0; + if (*(int *)(param_1 + 0x44) != 0) { + piVar1 = (int *)(*(int *)(param_1 + 0x44) + 4); + *piVar1 = *piVar1 + -1; + } + iVar4 = FUN_00406fd4(*(int *)(DAT_004efc94 + 0x68),param_2); + *(int *)(param_1 + 0x44) = iVar4; + iVar6 = *(int *)(iVar4 + 4); + *(int *)(iVar4 + 4) = *(int *)(iVar4 + 4) + 1; + if (iVar6 == 0) { + FUN_00406cd0(iVar4); + } + puVar5 = *(undefined4 **)(*(int *)(param_1 + 0x44) + 0x3c); + *(undefined4 *)(param_1 + 0x14) = *puVar5; + *(undefined4 *)(param_1 + 0x18) = puVar5[1]; + *(undefined4 **)(param_1 + 0x20) = puVar5 + 2; + puVar5 = puVar5 + 3; + *(undefined4 **)(param_1 + 0x1c) = puVar5; + puVar5 = puVar5 + *(int *)(param_1 + 0x18); + *(undefined4 **)(param_1 + 0x24) = puVar5; + *(undefined4 **)(param_1 + 0x28) = puVar5 + *(int *)(param_1 + 0x14); + *(undefined4 **)(param_1 + 0x2c) = puVar5 + *(int *)(param_1 + 0x14); + local_8 = *(int *)(param_1 + 0x28); + for (local_c = 0; local_c < *(int *)(param_1 + 0x14); local_c = local_c + 1) { + for (iVar6 = 0; iVar6 < *(int *)(param_1 + 0x18); iVar6 = iVar6 + 1) { + uVar2 = *(undefined4 *)(*(int *)(param_1 + 0x1c) + iVar6 * 4); + FUN_0041d3b3(local_2c,*(int *)(param_1 + 0x38) + 0xe4); + iVar4 = (**(code **)(local_2c[0] + 0x34))(local_2c,uVar2); + FUN_0041d3d2(local_2c,2); + uVar3 = *(uint *)(iVar4 + 0x10); + if (uVar3 < 3) { + local_8 = local_8 + 8; + } + else if (uVar3 == 4) { + local_8 = local_8 + 0xc; + } + else if (uVar3 == 5) { + local_8 = local_8 + 0x18; + } + local_10 = iVar4; + } + } + *(int *)(param_1 + 0x34) = local_8; + return; +} + + + +/* @004278d4 file=? name=FUN_004278d4 */ + +void __cdecl FUN_004278d4(int *param_1,byte param_2) + +{ + int *piVar1; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e4fb8; + if (param_1[0x11] != 0) { + piVar1 = (int *)(param_1[0x11] + 4); + *piVar1 = *piVar1 + -1; + } + FUN_00415ed8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0042790c file=? name=FUN_0042790c */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 __cdecl FUN_0042790c(int param_1,float param_2,int param_3) + +{ + uint uVar1; + int iVar2; + float *pfVar3; + int iVar4; + int iVar5; + float10 fVar6; + float *pfVar7; + float fVar8; + float local_b0 [3]; + float local_a4 [3]; + float local_98 [3]; + int local_8c [7]; + int local_70 [7]; + float *local_54; + float local_50; + float local_4c; + float local_48; + float *local_44; + undefined4 local_40; + float local_3c; + float *local_38; + float local_34; + float *local_30; + float local_2c; + float *local_28; + float *local_24; + float *local_20; + float *local_1c; + float *local_18; + float *local_14; + float local_10; + float local_c; + float *local_8; + + local_c = *(float *)(param_1 + 0x54) + param_2; + local_10 = 0.0; + local_8 = *(float **)(param_1 + 0x2c); + while ((*(int *)(param_1 + 0x3c) < *(int *)(param_1 + 0x14) && + (*(float *)(*(int *)(param_1 + 0x24) + *(int *)(param_1 + 0x3c) * 4) <= local_c))) { + for (iVar5 = 0; iVar5 < *(int *)(param_1 + 0x18); iVar5 = iVar5 + 1) { + FUN_0041d3b3(local_70,*(int *)(param_1 + 0x38) + 0xe4); + iVar2 = (**(code **)(local_70[0] + 0x34))(local_70); + FUN_0041d3d2(local_70,2); + uVar1 = *(uint *)(iVar2 + 0x10); + if (uVar1 < 3) { + local_20 = local_8; + iVar4 = FUN_00408d78(*(int **)(iVar2 + 0xc),(int *)local_8,0.0001); + if ((iVar4 == 0) && (param_3 != 0)) { + FUN_0041cfc8(iVar2,(int *)local_8); + } + local_8 = local_8 + 2; + } + else if (uVar1 != 3) { + if (uVar1 == 4) { + local_24 = local_8; + local_28 = (float *)FUN_0041cfa0(iVar2); + iVar4 = FUN_004091f4(local_28,local_24,0.0001); + if ((iVar4 == 0) && (param_3 != 0)) { + FUN_0041d020(iVar2,local_8); + } + local_8 = local_8 + 3; + } + else if (uVar1 == 5) { + local_14 = local_8; + local_18 = (float *)FUN_0041cfa0(iVar2); + iVar4 = FUN_004091f4(local_18,local_14,0.0001); + if ((iVar4 == 0) && (param_3 != 0)) { + FUN_0041d020(iVar2,local_8); + } + local_1c = local_8 + 3; + local_8 = local_1c; + iVar4 = FUN_004084fc(*(float **)(iVar2 + 0xc),local_1c,0.0001); + if ((iVar4 == 0) && (param_3 != 0)) { + FUN_0041d11c(iVar2,local_8); + } + local_8 = local_8 + 3; + } + } + } + iVar5 = *(int *)(param_1 + 0x3c); + local_10 = (*(float *)(*(int *)(param_1 + 0x24) + iVar5 * 4) - *(float *)(param_1 + 0x54)) * + *(float *)(*(int *)(param_1 + 0x34) + 8 + iVar5 * 0xc) + local_10; + *(undefined4 *)(param_1 + 0x54) = *(undefined4 *)(*(int *)(param_1 + 0x24) + iVar5 * 4); + *(int *)(param_1 + 0x3c) = *(int *)(param_1 + 0x3c) + 1; + } + if (*(int *)(param_1 + 0x14) == *(int *)(param_1 + 0x3c)) { + fVar6 = (float10)(**(code **)(param_1 + 0x48)) + (*(undefined4 *)(param_1 + 0x40),**(undefined4 **)(param_1 + 0x44), + local_c - *(float *)(*(int *)(param_1 + 0x24) + -4 + + *(int *)(param_1 + 0x14) * 4),param_3); + local_10 = (float)(fVar6 + (float10)local_10); + } + else { + *(float **)(param_1 + 0x2c) = local_8; + local_2c = (local_c - *(float *)(param_1 + 0x54)) / + (*(float *)(*(int *)(param_1 + 0x24) + *(int *)(param_1 + 0x3c) * 4) - + *(float *)(param_1 + 0x54)); + for (iVar5 = 0; iVar5 < *(int *)(param_1 + 0x18); iVar5 = iVar5 + 1) { + FUN_0041d3b3(local_8c,*(int *)(param_1 + 0x38) + 0xe4); + iVar2 = (**(code **)(local_8c[0] + 0x34))(local_8c); + FUN_0041d3d2(local_8c,2); + uVar1 = *(uint *)(iVar2 + 0x10); + if (uVar1 < 3) { + FUN_00408dd4(&local_40,*(undefined4 **)(iVar2 + 0xc),(int)local_8,local_2c); + local_44 = (float *)(*(int *)(iVar2 + 0xc) + 4); + local_50 = *local_44; + local_4c = local_3c; + local_48 = local_50; + fVar6 = FUN_004dcd00((double)(local_50 - local_3c)); + if (((float10)_DAT_00427d88 < fVar6) && (param_3 != 0)) { + FUN_0041d0a8(iVar2,&local_3c); + } + local_8 = local_8 + 2; + } + else if (uVar1 != 3) { + if (uVar1 == 4) { + pfVar7 = local_8; + fVar8 = local_2c; + pfVar3 = (float *)FUN_0041cfa0(iVar2); + FUN_00409390(local_b0,pfVar3,pfVar7,fVar8); + local_54 = (float *)FUN_0041cfa0(iVar2); + iVar4 = FUN_004091f4(local_54,local_b0,0.0001); + if ((iVar4 == 0) && (param_3 != 0)) { + FUN_0041d020(iVar2,local_b0); + } + local_8 = local_8 + 3; + } + else if (uVar1 == 5) { + pfVar7 = local_8; + fVar8 = local_2c; + pfVar3 = (float *)FUN_0041cfa0(iVar2); + FUN_00409390(local_a4,pfVar3,pfVar7,fVar8); + local_30 = (float *)FUN_0041cfa0(iVar2); + iVar4 = FUN_004091f4(local_30,local_a4,0.0001); + if ((iVar4 == 0) && (param_3 != 0)) { + FUN_0041d020(iVar2,local_a4); + } + local_8 = local_8 + 3; + local_34 = local_2c; + local_38 = *(float **)(iVar2 + 0xc); + FUN_00408848(local_98,local_38,_DAT_00427d84 - local_2c,local_8,local_2c); + iVar4 = FUN_004084fc(*(float **)(iVar2 + 0xc),local_98,0.0001); + if ((iVar4 == 0) && (param_3 != 0)) { + FUN_0041d11c(iVar2,local_98); + } + local_8 = local_8 + 3; + } + } + } + local_10 = (local_c - *(float *)(param_1 + 0x54)) * + *(float *)(*(int *)(param_1 + 0x34) + 8 + *(int *)(param_1 + 0x3c) * 0xc) + local_10; + *(float *)(param_1 + 0x54) = local_c; + } + return (float10)local_10; +} + + + +/* @00427d92 file=? name=FUN_00427d92 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +bool FUN_00427d92(void) + +{ + int iVar1; + uint uVar2; + bool bVar3; + int iVar4; + float *pfVar5; + int iVar6; + int unaff_EBP; + int iVar7; + float10 fVar8; + float *pfVar9; + float fVar10; + + iVar1 = *(int *)(unaff_EBP + 8); + if (*(int *)(iVar1 + 0xc) == 0) { + *(undefined4 *)(iVar1 + 0xc) = 1; + *(undefined4 *)(iVar1 + 0x10) = *(undefined4 *)(unaff_EBP + 0x10); + } + *(float *)(unaff_EBP + -8) = *(float *)(unaff_EBP + 0xc) / *(float *)(iVar1 + 0x10); + *(undefined4 *)(unaff_EBP + -4) = *(undefined4 *)(iVar1 + 0x2c); + if (*(int *)(unaff_EBP + 0x14) != 0) { + for (iVar7 = 0; iVar7 < *(int *)(iVar1 + 0x18); iVar7 = iVar7 + 1) { + FUN_0041d3b3((undefined4 *)(unaff_EBP + -0x4c),*(int *)(iVar1 + 0x38) + 0xe4); + iVar4 = (**(code **)(*(int *)(unaff_EBP + -0x4c) + 0x34))(unaff_EBP + -0x4c); + FUN_0041d3d2((int *)(unaff_EBP + -0x4c),2); + uVar2 = *(uint *)(iVar4 + 0x10); + if (uVar2 < 3) { + FUN_00408dd4((undefined4 *)(unaff_EBP + -0x1c),*(undefined4 **)(iVar4 + 0xc), + *(int *)(unaff_EBP + -4),*(float *)(unaff_EBP + -8)); + *(int *)(unaff_EBP + -0x20) = *(int *)(iVar4 + 0xc) + 4; + *(undefined4 *)(unaff_EBP + -0x24) = **(undefined4 **)(unaff_EBP + -0x20); + *(undefined4 *)(unaff_EBP + -0x28) = *(undefined4 *)(unaff_EBP + -0x18); + *(undefined4 *)(unaff_EBP + -0x2c) = *(undefined4 *)(unaff_EBP + -0x24); + fVar8 = FUN_004dcd00((double)(*(float *)(unaff_EBP + -0x2c) - *(float *)(unaff_EBP + -0x28)) + ); + if ((float10)_DAT_00427fd4 < fVar8) { + FUN_0041d0a8(iVar4,(float *)(unaff_EBP + -0x18)); + } + *(int *)(unaff_EBP + -4) = *(int *)(unaff_EBP + -4) + 8; + } + else if (uVar2 != 3) { + if (uVar2 == 4) { + fVar10 = *(float *)(unaff_EBP + -8); + pfVar9 = *(float **)(unaff_EBP + -4); + pfVar5 = (float *)FUN_0041cfa0(iVar4); + FUN_00409390((float *)(unaff_EBP + -0x70),pfVar5,pfVar9,fVar10); + iVar6 = FUN_0041cfa0(iVar4); + *(int *)(unaff_EBP + -0x30) = iVar6; + iVar6 = FUN_004091f4(*(float **)(unaff_EBP + -0x30),(float *)(unaff_EBP + -0x70),0.0001); + if (iVar6 == 0) { + FUN_0041d020(iVar4,(float *)(unaff_EBP + -0x70)); + } + *(int *)(unaff_EBP + -4) = *(int *)(unaff_EBP + -4) + 0xc; + } + else if (uVar2 == 5) { + fVar10 = *(float *)(unaff_EBP + -8); + pfVar9 = *(float **)(unaff_EBP + -4); + pfVar5 = (float *)FUN_0041cfa0(iVar4); + FUN_00409390((float *)(unaff_EBP + -100),pfVar5,pfVar9,fVar10); + iVar6 = FUN_0041cfa0(iVar4); + *(int *)(unaff_EBP + -0xc) = iVar6; + iVar6 = FUN_004091f4(*(float **)(unaff_EBP + -0xc),(float *)(unaff_EBP + -100),0.0001); + if (iVar6 == 0) { + FUN_0041d020(iVar4,(float *)(unaff_EBP + -100)); + } + *(int *)(unaff_EBP + -4) = *(int *)(unaff_EBP + -4) + 0xc; + *(undefined4 *)(unaff_EBP + -0x10) = *(undefined4 *)(unaff_EBP + -8); + *(undefined4 *)(unaff_EBP + -0x14) = *(undefined4 *)(iVar4 + 0xc); + FUN_00408848((float *)(unaff_EBP + -0x58),*(float **)(unaff_EBP + -0x14), + _DAT_00427fd0 - *(float *)(unaff_EBP + -0x10),*(float **)(unaff_EBP + -4), + *(float *)(unaff_EBP + -0x10)); + iVar6 = FUN_004084fc(*(float **)(iVar4 + 0xc),(float *)(unaff_EBP + -0x58),0.0001); + if (iVar6 == 0) { + FUN_0041d11c(iVar4,(float *)(unaff_EBP + -0x58)); + } + *(int *)(unaff_EBP + -4) = *(int *)(unaff_EBP + -4) + 0xc; + } + } + } + } + *(float *)(iVar1 + 0x10) = *(float *)(iVar1 + 0x10) - *(float *)(unaff_EBP + 0xc); + bVar3 = _DAT_00427fd8 < *(float *)(iVar1 + 0x10); + if (!bVar3) { + *(undefined4 *)(iVar1 + 0xc) = 0; + } + return bVar3; +} + + + +/* @004283b8 file=? name=FUN_004283b8 */ + +void __cdecl FUN_004283b8(int param_1,int param_2) + +{ + undefined4 uVar1; + int iVar2; + int iVar3; + int local_68 [7]; + float local_4c [7]; + int local_30 [11]; + + if (param_2 != 0) { + local_30[10] = 0; + local_30[9] = 0; + local_30[8] = 0; + local_4c[3] = 0.0; + local_4c[4] = 0.0; + local_4c[5] = 0.0; + local_30[5] = 0; + local_30[6] = 0; + local_30[7] = 0; + local_30[2] = 0x3f800000; + local_30[3] = 0; + local_30[4] = 0x3f800000; + local_4c[6] = 2.0; + local_30[0] = 0; + local_30[1] = 0x40000000; + local_4c[0] = 0.0; + local_4c[1] = 0.0; + local_4c[2] = 0.0; + for (iVar3 = 0; iVar3 < *(int *)(param_1 + 0x18); iVar3 = iVar3 + 1) { + uVar1 = *(undefined4 *)(*(int *)(param_1 + 0x1c) + iVar3 * 4); + FUN_0041d3b3(local_68,*(int *)(param_1 + 0x38) + 0xe4); + iVar2 = (**(code **)(local_68[0] + 0x34))(local_68,uVar1); + FUN_0041d3d2(local_68,2); + switch(*(undefined4 *)(iVar2 + 0x10)) { + case 0: + FUN_0041cfc8(iVar2,local_30 + 6); + break; + case 1: + FUN_0041cfc8(iVar2,local_30 + 3); + break; + case 2: + FUN_0041cfc8(iVar2,local_30); + break; + case 4: + FUN_0041d020(iVar2,local_4c + 3); + break; + case 5: + FUN_0041d020(iVar2,local_4c + 3); + FUN_0041d11c(iVar2,local_4c); + } + } + } + return; +} + + + +/* @00428508 file=? name=FUN_00428508 */ + +int __cdecl FUN_00428508(int param_1) + +{ + undefined4 *puVar1; + int *piVar2; + int iVar3; + + piVar2 = FUN_0040485c(param_1,s_joint_004e4f9a); + iVar3 = 0; + for (puVar1 = (undefined4 *)piVar2[1]; puVar1 != (undefined4 *)0x0; puVar1 = (undefined4 *)*puVar1 + ) { + iVar3 = iVar3 + 1; + } + if (piVar2 != (int *)0x0) { + (**(code **)*piVar2)(piVar2,3); + } + return iVar3; +} + + + +/* @00428544 file=? name=FUN_00428544 */ + +void __cdecl FUN_00428544(int param_1) + +{ + FUN_0041a1a4(**(int **)(param_1 + 0xc),0x4e4afc); + return; +} + + + +/* @00428601 file=? name=FUN_00428601 */ + +undefined4 * __cdecl FUN_00428601(undefined4 *param_1,undefined4 param_2) + +{ + FUN_004179d4(param_1,param_2); + *param_1 = &PTR_FUN_004e4fb0; + return param_1; +} + + + +/* @00428620 file=? name=FUN_00428620 */ + +void __cdecl FUN_00428620(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e4fb0; + FUN_004179f8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0042864c file=? name=FUN_0042864c */ + +void __cdecl FUN_0042864c(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e52e4; + FUN_0041b898(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00428678 file=munga/watcher.cpp name=FUN_00428678 */ + +undefined4 * __cdecl FUN_00428678(undefined4 *param_1,int *param_2,int param_3) + +{ + int *piVar1; + undefined4 *puVar2; + int iVar3; + uint *puVar4; + int *local_10; + uint *local_c; + int *local_8; + + FUN_0041b868(param_1,param_2,&DAT_004e32ac); + *param_1 = &PTR_FUN_004e52e4; + puVar2 = (undefined4 *)FUN_00402298(0x10); + if (puVar2 == (undefined4 *)0x0) { + local_8 = (int *)0x0; + } + else { + local_8 = (int *)FUN_004023f4(puVar2); + } + local_8[3] = local_8[3] + 1; + FUN_00402aec(param_2,(int *)&local_8); + iVar3 = FUN_0041f98c(param_3,(char *)local_8[2]); + param_1[4] = iVar3; + if (iVar3 == 0) { + puVar4 = (uint *)FUN_00402298(0x10); + if (puVar4 == (uint *)0x0) { + local_c = (uint *)0x0; + } + else { + local_c = FUN_00402460(puVar4,s_Entity_004e4ffc); + } + local_c[3] = local_c[3] + 1; + iVar3 = FUN_004027d8((int)local_8,(int)local_c); + if (iVar3 != 0) { + FUN_004dbb24(&DAT_00524e20,s_AttributeWatcher__AttributeWatch_004e5003,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,(char *)local_8[2],(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004e5033,(char *)0x0); + FUN_0040385c(s_AttributeWatcher__AttributeWatch_004e5035, + s_d__tesla_bt_munga_WATCHER_CPP_004e506f,0x70); + } + puVar4 = local_c + 3; + *puVar4 = *puVar4 - 1; + if (*puVar4 == 0) { + FUN_004024d8((int *)local_c,3); + } + param_1[4] = param_3; + } + puVar2 = (undefined4 *)FUN_00402298(0x10); + if (puVar2 == (undefined4 *)0x0) { + local_10 = (int *)0x0; + } + else { + local_10 = (int *)FUN_004023f4(puVar2); + } + local_10[3] = local_10[3] + 1; + FUN_00402aec(param_2,(int *)&local_10); + iVar3 = FUN_0041bfc0(param_1[4],(char *)local_10[2]); + param_1[5] = iVar3; + if (iVar3 == 0) { + FUN_004dbb24(&DAT_00524e20,s_AttributeWatcher__AttributeWatch_004e508d,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,(char *)local_10[2],(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004e50bd,(char *)0x0); + FUN_0040385c(s_AttributeWatcher__AttributeWatch_004e50bf, + s_d__tesla_bt_munga_WATCHER_CPP_004e50f9,0x8d); + } + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 7,4); + param_1[6] = 0; + piVar1 = local_10 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_10,3); + } + piVar1 = local_8 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_8,3); + } + return param_1; +} + + + +/* @0042887c file=munga/watcher.cpp name=FUN_0042887c */ + +void __cdecl FUN_0042887c(int *param_1,int param_2) + +{ + int *piVar1; + undefined4 *puVar2; + char *pcVar3; + undefined4 local_10; + int *local_c; + int *local_8; + + FUN_00414c58(param_1); + puVar2 = (undefined4 *)FUN_00402298(0x10); + if (puVar2 == (undefined4 *)0x0) { + local_8 = (int *)0x0; + } + else { + local_8 = (int *)FUN_004023f4(puVar2); + } + local_8[3] = local_8[3] + 1; + pcVar3 = (char *)FUN_00403ad0(param_2,s_subsystem_004e5117); + if (pcVar3 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004e5121,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_subsystem_004e5146,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004e5150,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004e5152, + s_d__tesla_bt_munga_WATCHER_CPP_004e5192,0xad); + } + FUN_00402b3c(pcVar3,(int *)&local_8); + FUN_004029b0(param_1,(int)local_8); + piVar1 = local_8 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_8,3); + } + puVar2 = (undefined4 *)FUN_00402298(0x10); + if (puVar2 == (undefined4 *)0x0) { + local_c = (int *)0x0; + } + else { + local_c = (int *)FUN_004023f4(puVar2); + } + local_c[3] = local_c[3] + 1; + pcVar3 = (char *)FUN_00403ad0(param_2,s_attribute_004e51b0); + if (pcVar3 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004e51ba,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_attribute_004e51df,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004e51e9,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004e51eb, + s_d__tesla_bt_munga_WATCHER_CPP_004e522b,0xae); + } + FUN_00402b3c(pcVar3,(int *)&local_c); + FUN_004029b0(param_1,(int)local_c); + piVar1 = local_c + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_c,3); + } + local_10 = 1; + (**(code **)(*param_1 + 0x20))(param_1,&local_10,4); + return; +} + + + +/* @00428a2c file=? name=FUN_00428a2c */ + +undefined4 __cdecl FUN_00428a2c(int param_1) + +{ + FUN_0041b8e0(param_1); + return 1; +} + + + +/* @00428a40 file=? name=FUN_00428a40 */ + +undefined4 __cdecl FUN_00428a40(int param_1) + +{ + if (*(int *)(param_1 + 0x18) != 0) { + *(undefined4 *)(param_1 + 0x18) = 0; + return 1; + } + return 0; +} + + + +/* @00428a5c file=munga/watcher.cpp name=FUN_00428a5c */ + +void FUN_00428a5c(void) + +{ + FUN_0040385c(s_AttributeWatcher__SendNotificati_004e5249,s_d__tesla_bt_munga_WATCHER_CPP_004e528e, + 0xda); + return; +} + + + +/* @00428a78 file=? name=FUN_00428a78 */ + +undefined4 * __cdecl +FUN_00428a78(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) + +{ + FUN_004178cc(param_1,2); + *param_1 = &PTR_FUN_004e54a0; + param_1[4] = param_3; + FUN_00428cb4(param_1 + 7,0); + FUN_00428cb4(param_1 + 0xc,0); + FUN_00428cb4(param_1 + 0x11,0); + param_1[3] = param_2; + param_1[5] = param_4; + param_1[6] = 0; + return param_1; +} + + + +/* @00428ad8 file=? name=FUN_00428ad8 */ + +void __cdecl FUN_00428ad8(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e54a0; + FUN_00428cd3(param_1 + 0x11,2); + FUN_00428cd3(param_1 + 0xc,2); + FUN_00428cd3(param_1 + 7,2); + FUN_0041790c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00428b30 file=? name=FUN_00428b30 */ + +undefined4 FUN_00428b30(void) + +{ + FUN_00415f1c(); + return 1; +} + + + +/* @00428b44 file=munga/host.cpp name=FUN_00428b44 */ + +void __cdecl FUN_00428b44(int param_1,int param_2) + +{ + uint uVar1; + + (**(code **)(*(int *)(param_1 + 0x1c) + 4))(param_1 + 0x1c,param_2); + uVar1 = *(uint *)(param_2 + 0x28) & 0xc; + if (uVar1 != 0) { + if (uVar1 == 4) { + if ((*(byte *)(param_2 + 0x29) & 1) == 0) { + return; + } + (**(code **)(*(int *)(param_1 + 0x44) + 4))(param_1 + 0x44,param_2); + return; + } + if ((uVar1 != 8) && (uVar1 != 0xc)) { + FUN_0040385c(s_Host__AddEntity___Should_never_r_004e5300,s_d__tesla_bt_munga_HOST_CPP_004e532a + ,0x77); + return; + } + } + if ((*(byte *)(param_2 + 0x29) & 1) != 0) { + (**(code **)(*(int *)(param_1 + 0x30) + 4))(param_1 + 0x30,param_2); + } + return; +} + + + +/* @00428bc4 file=? name=FUN_00428bc4 */ + +undefined4 * __cdecl FUN_00428bc4(undefined4 *param_1,int param_2) + +{ + FUN_00428cff(param_1,param_2 + 0x1c); + *param_1 = &PTR_FUN_004e544c; + return param_1; +} + + + +/* @00428be8 file=? name=FUN_00428be8 */ + +void __cdecl FUN_00428be8(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e544c; + FUN_00428d5c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00428c14 file=? name=FUN_00428c14 */ + +undefined4 * __cdecl FUN_00428c14(undefined4 *param_1,int param_2) + +{ + FUN_00428cff(param_1,param_2 + 0x30); + *param_1 = &PTR_FUN_004e53f8; + return param_1; +} + + + +/* @00428c38 file=? name=FUN_00428c38 */ + +void __cdecl FUN_00428c38(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e53f8; + FUN_00428d5c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00428c64 file=? name=FUN_00428c64 */ + +undefined4 * __cdecl FUN_00428c64(undefined4 *param_1,int param_2) + +{ + FUN_00428cff(param_1,param_2 + 0x44); + *param_1 = &PTR_FUN_004e53a4; + return param_1; +} + + + +/* @00428c88 file=? name=FUN_00428c88 */ + +void __cdecl FUN_00428c88(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e53a4; + FUN_00428d5c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00428cb4 file=? name=FUN_00428cb4 */ + +undefined4 * __cdecl FUN_00428cb4(undefined4 *param_1,undefined4 param_2) + +{ + FUN_0041827c(param_1,param_2); + *param_1 = &PTR_FUN_004e539c; + return param_1; +} + + + +/* @00428cd3 file=? name=FUN_00428cd3 */ + +void __cdecl FUN_00428cd3(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e539c; + FUN_004182a8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00428cff file=? name=FUN_00428cff */ + +undefined4 * __cdecl FUN_00428cff(undefined4 *param_1,int param_2) + +{ + FUN_00418398(param_1,param_2); + *param_1 = &PTR_FUN_004e5348; + return param_1; +} + + + +/* @00428d1e file=? name=FUN_00428d1e */ + +undefined4 * __cdecl FUN_00428d1e(undefined4 *param_1,int param_2) + +{ + FUN_00418398(param_1,param_2); + *param_1 = &PTR_FUN_004e5348; + return param_1; +} + + + +/* @00428d3d file=? name=FUN_00428d3d */ + +undefined4 * __cdecl FUN_00428d3d(undefined4 *param_1,int param_2) + +{ + FUN_004183c0(param_1,param_2); + *param_1 = &PTR_FUN_004e5348; + return param_1; +} + + + +/* @00428d5c file=? name=FUN_00428d5c */ + +void __cdecl FUN_00428d5c(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e5348; + FUN_004183ec(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00428d88 file=? name=FUN_00428d88 */ + +undefined4 * __cdecl FUN_00428d88(undefined4 *param_1) + +{ + FUN_0041d520(param_1,0x16,&DAT_004e54ac,2); + *param_1 = &PTR_FUN_004e592c; + FUN_004294c1(param_1 + 6,0,1); + FUN_004294c1(param_1 + 0xc,0,1); + FUN_00420e8c(param_1 + 0x13); + FUN_004295d5(param_1 + 0x15,500,0,1); + param_1[5] = 0; + param_1[0x12] = 0; + return param_1; +} + + + +/* @00428df8 file=? name=FUN_00428df8 */ + +void __cdecl FUN_00428df8(int *param_1,byte param_2) + +{ + undefined4 *puVar1; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e592c; + puVar1 = (undefined4 *)param_1[0x12]; + if (puVar1 != (undefined4 *)0x0) { + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + param_1[0x12] = 0; + } + FUN_004295fc(param_1 + 0x15,2); + FUN_004294e4(param_1 + 0xc,2); + FUN_004294e4(param_1 + 6,2); + FUN_0041d554(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00428e68 file=? name=FUN_00428e68 */ + +undefined4 __cdecl FUN_00428e68(int param_1) + +{ + int iVar1; + + iVar1 = FUN_0041a1a4(**(int **)(param_1 + 0xc),0x4e54b4); + if (iVar1 == 0) { + return 0; + } + return 1; +} + + + +/* @00428ea0 file=? name=FUN_00428ea0 */ + +void __cdecl FUN_00428ea0(int param_1) + +{ + int local_18 [5]; + + if (*(int *)(param_1 + 0x14) != 0) { + FUN_00428bc4(local_18,*(int *)(param_1 + 0x14)); + FUN_00417858(local_18,local_18,1); + FUN_00428be8(local_18,2); + } + return; +} + + + +/* @00428ee0 file=? name=FUN_00428ee0 */ + +void __cdecl FUN_00428ee0(int param_1,int param_2) + +{ + undefined4 local_10; + undefined4 local_c [2]; + + *(int *)(param_1 + 0x14) = param_2; + FUN_00420ebc(local_c,*(undefined4 *)(param_2 + 0xc)); + FUN_00420ef4((undefined4 *)(param_1 + 0x4c),local_c); + local_10 = *(undefined4 *)(param_2 + 0xc); + (**(code **)(*(int *)(param_1 + 0x30) + 8))(param_1 + 0x30,param_2,&local_10); + return; +} + + + +/* @00428f34 file=? name=FUN_00428f34 */ + +int __cdecl FUN_00428f34(int param_1) + +{ + int iVar1; + int local_14 [4]; + + iVar1 = *(int *)(param_1 + 0x14); + *(undefined4 *)(param_1 + 0x14) = 0; + FUN_00420ef4((undefined4 *)(param_1 + 0x4c),(undefined4 *)&DAT_00522524); + if (iVar1 != 0) { + FUN_00415f30(local_14,iVar1,0xffffffff); + FUN_004161fc((int)local_14,param_1 + 0x30); + FUN_00415f90(local_14,2); + } + return iVar1; +} + + + +/* @00428f94 file=? name=FUN_00428f94 */ + +void __cdecl FUN_00428f94(int param_1,int param_2) + +{ + undefined4 local_c; + undefined4 local_8; + + local_8 = *(undefined4 *)(param_2 + 0xc); + (**(code **)(*(int *)(param_1 + 0x18) + 8))(param_1 + 0x18,param_2,&local_8); + local_c = *(undefined4 *)(param_2 + 0xc); + (**(code **)(*(int *)(param_1 + 0x30) + 8))(param_1 + 0x30,param_2,&local_c); + return; +} + + + +/* @00428fdc file=? name=FUN_00428fdc */ + +void __cdecl FUN_00428fdc(int param_1,int param_2) + +{ + int local_24 [4]; + int local_14 [4]; + + FUN_00415f30(local_14,param_2,0xffffffff); + FUN_004161fc((int)local_14,param_1 + 0x18); + FUN_00415f90(local_14,2); + FUN_00415f30(local_24,param_2,0xffffffff); + FUN_004161fc((int)local_24,param_1 + 0x30); + FUN_00415f90(local_24,2); + return; +} + + + +/* @0042904c file=? name=FUN_0042904c */ + +undefined4 __cdecl FUN_0042904c(int param_1) + +{ + return *(undefined4 *)(*(int *)(param_1 + 0x14) + 0xc); +} + + + +/* @0042905c file=? name=FUN_0042905c */ + +void __cdecl FUN_0042905c(int param_1) + +{ + (**(code **)(*(int *)(param_1 + 0x18) + 0xc))(param_1 + 0x18,&stack0x00000008); + return; +} + + + +/* @00429078 file=? name=FUN_00429078 */ + +int __cdecl FUN_00429078(int param_1) + +{ + int iVar1; + int local_20 [7]; + + FUN_0042956b(local_20,param_1 + 0x18); + do { + iVar1 = (**(code **)(local_20[0] + 0x28))(local_20); + if (iVar1 == 0) { + iVar1 = 0; + FUN_004295a9(local_20,2); + return iVar1; + } + } while (*(int *)(iVar1 + 0x10) != 3); + FUN_004295a9(local_20,2); + return iVar1; +} + + + +/* @004290d8 file=? name=FUN_004290d8 */ + +int __cdecl FUN_004290d8(int param_1,int param_2) + +{ + int iVar1; + int local_20 [7]; + + FUN_0042956b(local_20,param_1 + 0x30); + do { + iVar1 = (**(code **)(local_20[0] + 0x28))(local_20); + if (iVar1 == 0) { + iVar1 = 0; + FUN_004295a9(local_20,2); + return iVar1; + } + } while (param_2 != *(int *)(iVar1 + 0x14)); + FUN_004295a9(local_20,2); + return iVar1; +} + + + +/* @0042913c file=? name=FUN_0042913c */ + +undefined4 * __cdecl FUN_0042913c(undefined4 *param_1,int param_2) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00420f6c(param_2 + 0x4c,1); + FUN_00420ea4(param_1,puVar1); + return param_1; +} + + + +/* @00429168 file=? name=FUN_00429168 */ + +void __cdecl FUN_00429168(int param_1,int param_2,int param_3) + +{ + FUN_00428b44(*(int *)(param_1 + 0x14),param_2); + (**(code **)(*(int *)(param_1 + 0x54) + 8))(param_1 + 0x54,param_2,param_2 + 0x184); + FUN_00434a60(*(int **)(DAT_004efc94 + 0x30),param_2,param_3); + return; +} + + + +/* @004291b4 file=munga/hostmgr.cpp name=FUN_004291b4 */ + +void FUN_004291b4(void) + +{ + FUN_0040385c(s_HostManager__NotifyOfReplacement_004e5586,s_d__tesla_bt_munga_HOSTMGR_CPP_004e55ca, + 0x1ce); + return; +} + + + +/* @004291d0 file=? name=FUN_004291d0 */ + +void __cdecl FUN_004291d0(undefined4 param_1,int param_2) + +{ + FUN_00434cdc(*(int *)(DAT_004efc94 + 0x30),param_2); + return; +} + + + +/* @004291ec file=? name=FUN_004291ec */ + +undefined4 __cdecl FUN_004291ec(int param_1) + +{ + bool bVar1; + undefined4 *puVar2; + int iVar3; + + if (*(int *)(param_1 + 0x48) == 0) { + puVar2 = (undefined4 *)FUN_00402298(0x1c); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_0042956b(puVar2,param_1 + 0x30); + } + *(undefined4 **)(param_1 + 0x48) = puVar2; + } + bVar1 = false; + do { + iVar3 = (**(code **)(**(int **)(param_1 + 0x48) + 0x30))(*(int **)(param_1 + 0x48)); + if (iVar3 == 0) { + (**(code **)(**(int **)(param_1 + 0x48) + 4))(*(int **)(param_1 + 0x48)); + iVar3 = (**(code **)(**(int **)(param_1 + 0x48) + 0x30))(*(int **)(param_1 + 0x48)); + } + if (*(int *)(iVar3 + 0x10) == 0) { + bVar1 = true; + } + else { + (**(code **)(**(int **)(param_1 + 0x48) + 0xc))(*(int **)(param_1 + 0x48)); + } + } while (!bVar1); + (**(code **)(**(int **)(param_1 + 0x48) + 0xc))(*(int **)(param_1 + 0x48)); + return *(undefined4 *)(iVar3 + 0xc); +} + + + +/* @00429274 file=munga/hostmgr.cpp name=FUN_00429274 */ + +void FUN_00429274(void) + +{ + FUN_0040385c(s_HostManager__EntityTransferOwner_004e55e8,s_d__tesla_bt_munga_HOSTMGR_CPP_004e5629, + 0x270); + return; +} + + + +/* @00429290 file=munga/hostmgr.cpp name=FUN_00429290 */ + +void FUN_00429290(void) + +{ + FUN_0040385c(s_HostManager__EntityNewOwnershipH_004e5647,s_d__tesla_bt_munga_HOSTMGR_CPP_004e5683, + 0x290); + return; +} + + + +/* @004292ac file=? name=FUN_004292ac */ + +undefined4 * __cdecl FUN_004292ac(undefined4 *param_1,int param_2) + +{ + FUN_00428bc4(param_1,*(int *)(param_2 + 0x14)); + *param_1 = &PTR_FUN_004e58d8; + return param_1; +} + + + +/* @004292d0 file=? name=FUN_004292d0 */ + +void __cdecl FUN_004292d0(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e58d8; + FUN_00428be8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004292fc file=? name=FUN_004292fc */ + +undefined4 * __cdecl FUN_004292fc(undefined4 *param_1,int param_2) + +{ + FUN_00428c14(param_1,*(int *)(param_2 + 0x14)); + *param_1 = &PTR_FUN_004e5884; + return param_1; +} + + + +/* @00429320 file=? name=FUN_00429320 */ + +void __cdecl FUN_00429320(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e5884; + FUN_00428c38(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0042934c file=? name=FUN_0042934c */ + +undefined4 * __cdecl FUN_0042934c(undefined4 *param_1,int param_2) + +{ + FUN_00428c64(param_1,*(int *)(param_2 + 0x14)); + *param_1 = &PTR_FUN_004e5830; + return param_1; +} + + + +/* @00429370 file=? name=FUN_00429370 */ + +void __cdecl FUN_00429370(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e5830; + FUN_00428c88(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0042939c file=? name=FUN_0042939c */ + +undefined4 * __cdecl FUN_0042939c(undefined4 *param_1,int param_2) + +{ + FUN_0042956b(param_1,param_2 + 0x18); + *param_1 = &PTR_FUN_004e57d4; + return param_1; +} + + + +/* @004293c0 file=? name=FUN_004293c0 */ + +void __cdecl FUN_004293c0(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e57d4; + FUN_004295a9(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004293ec file=? name=FUN_004293ec */ + +undefined4 * __cdecl FUN_004293ec(undefined4 *param_1,int param_2) + +{ + FUN_0042956b(param_1,param_2 + 0x30); + *param_1 = &PTR_FUN_004e5778; + return param_1; +} + + + +/* @00429410 file=? name=FUN_00429410 */ + +void __cdecl FUN_00429410(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e5778; + FUN_004295a9(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004294c1 file=? name=FUN_004294c1 */ + +undefined4 * __cdecl FUN_004294c1(undefined4 *param_1,undefined4 param_2,undefined4 param_3) + +{ + FUN_00419184(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004e575c; + return param_1; +} + + + +/* @004294e4 file=? name=FUN_004294e4 */ + +void __cdecl FUN_004294e4(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e575c; + FUN_004191b4(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00429510 file=? name=FUN_00429510 */ + +undefined4 __cdecl FUN_00429510(undefined4 param_1,int param_2,int param_3) + +{ + undefined4 uVar1; + + if (*(int *)(param_3 + 0x14) == *(int *)(param_2 + 0x14)) { + uVar1 = 0; + } + else { + uVar1 = 1; + if (*(int *)(param_2 + 0x14) <= *(int *)(param_3 + 0x14)) { + uVar1 = 0xffffffff; + } + } + return uVar1; +} + + + +/* @0042953f file=? name=FUN_0042953f */ + +undefined4 __cdecl FUN_0042953f(undefined4 param_1,int *param_2,int param_3) + +{ + undefined4 uVar1; + + if (*(int *)(param_3 + 0x14) == *param_2) { + uVar1 = 0; + } + else { + uVar1 = 1; + if (*param_2 <= *(int *)(param_3 + 0x14)) { + uVar1 = 0xffffffff; + } + } + return uVar1; +} + + + +/* @0042956b file=? name=FUN_0042956b */ + +undefined4 * __cdecl FUN_0042956b(undefined4 *param_1,int param_2) + +{ + FUN_004194d8(param_1,param_2); + *param_1 = &PTR_FUN_004e5700; + return param_1; +} + + + +/* @0042958a file=? name=FUN_0042958a */ + +undefined4 * __cdecl FUN_0042958a(undefined4 *param_1,int param_2) + +{ + FUN_004194d8(param_1,param_2); + *param_1 = &PTR_FUN_004e5700; + return param_1; +} + + + +/* @004295a9 file=? name=FUN_004295a9 */ + +void __cdecl FUN_004295a9(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e5700; + FUN_0041951c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004295d5 file=? name=FUN_004295d5 */ + +undefined4 * __cdecl +FUN_004295d5(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) + +{ + FUN_00419774(param_1,param_2,param_3,param_4); + *param_1 = &PTR_FUN_004e56e8; + return param_1; +} + + + +/* @004295fc file=? name=FUN_004295fc */ + +void __cdecl FUN_004295fc(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e56e8; + FUN_004197d4(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00429628 file=? name=FUN_00429628 */ + +undefined4 * __cdecl FUN_00429628(int param_1) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_0042973b(); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_00429671(puVar1,*(undefined4 *)(param_1 + 4),*(undefined4 *)(param_1 + 0xc)); + } + return puVar1; +} + + + +/* @00429657 file=? name=FUN_00429657 */ + +int __cdecl FUN_00429657(int param_1,int param_2) + +{ + int iVar1; + + iVar1 = FUN_00421094(param_2); + return iVar1 % *(int *)(param_1 + 0x14); +} + + + +/* @00429671 file=? name=FUN_00429671 */ + +undefined4 * __cdecl FUN_00429671(undefined4 *param_1,undefined4 param_2,undefined4 param_3) + +{ + FUN_004186ac(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004e56cc; + return param_1; +} + + + +/* @00429694 file=? name=FUN_00429694 */ + +void __cdecl FUN_00429694(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e56cc; + FUN_004186dc(param_1,0); + if ((param_2 & 1) != 0) { + FUN_0042978b(param_1); + } + } + return; +} + + + +/* @004296c0 file=? name=FUN_004296c0 */ + +undefined4 __cdecl FUN_004296c0(undefined4 param_1,int param_2,int param_3) + +{ + bool bVar1; + int iVar2; + undefined4 uVar3; + undefined3 extraout_var; + + iVar2 = FUN_0042104c((int *)(param_2 + 0x1c),(int *)(param_3 + 0x1c)); + if (iVar2 == 0) { + bVar1 = FUN_00420fec((int *)(param_2 + 0x1c),(int *)(param_3 + 0x1c)); + if (CONCAT31(extraout_var,bVar1) == 0) { + uVar3 = 0xffffffff; + } + else { + uVar3 = 1; + } + } + else { + uVar3 = 0; + } + return uVar3; +} + + + +/* @004296ff file=? name=FUN_004296ff */ + +undefined4 __cdecl FUN_004296ff(undefined4 param_1,int *param_2,int param_3) + +{ + bool bVar1; + int iVar2; + undefined4 uVar3; + undefined3 extraout_var; + + iVar2 = FUN_0042104c(param_2,(int *)(param_3 + 0x1c)); + if (iVar2 == 0) { + bVar1 = FUN_00420fec(param_2,(int *)(param_3 + 0x1c)); + if (CONCAT31(extraout_var,bVar1) == 0) { + uVar3 = 0xffffffff; + } + else { + uVar3 = 1; + } + } + else { + uVar3 = 0; + } + return uVar3; +} + + + +/* @0042973b file=? name=FUN_0042973b */ + +void FUN_0042973b(void) + +{ + int iVar1; + undefined4 *puVar2; + + iVar1 = DAT_004e56c8; + DAT_004e56c8 = DAT_004e56c8 + 1; + puVar2 = DAT_004e56c4; + if ((iVar1 == 0) && (puVar2 = (undefined4 *)FUN_00402298(0x28), puVar2 != (undefined4 *)0x0)) { + FUN_00402b98(puVar2,0x18,100,100,s_VChainOf_004e56a1); + } + DAT_004e56c4 = puVar2; + FUN_00402f74((int)DAT_004e56c4); + return; +} + + + +/* @0042978b file=? name=FUN_0042978b */ + +void __cdecl FUN_0042978b(undefined4 *param_1) + +{ + FUN_00402f98((int)DAT_004e56c4,param_1); + DAT_004e56c8 = DAT_004e56c8 + -1; + if (DAT_004e56c8 == 0) { + if (DAT_004e56c4 != (int *)0x0) { + FUN_00402c28(DAT_004e56c4,0); + FUN_004022d0(DAT_004e56c4); + } + DAT_004e56c4 = (int *)0x0; + } + return; +} + + + +/* @004297d6 file=? name=FUN_004297d6 */ + +undefined4 * __cdecl FUN_004297d6(undefined4 param_1,int param_2,undefined4 *param_3) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_0042989e(); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_00429836(puVar1,param_1,param_2,param_3); + } + return puVar1; +} + + + +/* @00429806 file=? name=FUN_00429806 */ + +undefined4 * __cdecl FUN_00429806(undefined4 param_1,int param_2,undefined4 *param_3) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_0041d485(); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_0041d42e(puVar1,param_1,param_2,param_3); + } + return puVar1; +} + + + +/* @00429836 file=? name=FUN_00429836 */ + +undefined4 * __cdecl +FUN_00429836(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 *param_4) + +{ + FUN_004185bc(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004e594c; + FUN_00420e8c(param_1 + 7); + FUN_00420ef4(param_1 + 7,param_4); + return param_1; +} + + + +/* @00429872 file=? name=FUN_00429872 */ + +void __cdecl FUN_00429872(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e594c; + FUN_004185ec(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004298ee(param_1); + } + } + return; +} + + + +/* @0042989e file=? name=FUN_0042989e */ + +void FUN_0042989e(void) + +{ + int iVar1; + undefined4 *puVar2; + + iVar1 = DAT_004e5948; + DAT_004e5948 = DAT_004e5948 + 1; + puVar2 = DAT_004e5944; + if ((iVar1 == 0) && (puVar2 = (undefined4 *)FUN_00402298(0x28), puVar2 != (undefined4 *)0x0)) { + FUN_00402b98(puVar2,0x24,100,100,s_VChainLinkOf_004e56b7); + } + DAT_004e5944 = puVar2; + FUN_00402f74((int)DAT_004e5944); + return; +} + + + +/* @004298ee file=? name=FUN_004298ee */ + +void __cdecl FUN_004298ee(undefined4 *param_1) + +{ + FUN_00402f98((int)DAT_004e5944,param_1); + DAT_004e5948 = DAT_004e5948 + -1; + if (DAT_004e5948 == 0) { + if (DAT_004e5944 != (int *)0x0) { + FUN_00402c28(DAT_004e5944,0); + FUN_004022d0(DAT_004e5944); + } + DAT_004e5944 = (int *)0x0; + } + return; +} + + + +/* @0042995c file=? name=FUN_0042995c */ + +void __cdecl +FUN_0042995c(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) + +{ + *param_1 = 0x18; + param_1[1] = 1; + param_1[2] = 1; + param_1[3] = param_2; + param_1[4] = param_3; + param_1[5] = param_4; + return; +} + + + +/* @0042998c file=? name=FUN_0042998c */ + +void __cdecl FUN_0042998c(undefined4 *param_1,undefined4 param_2,undefined4 param_3) + +{ + *param_1 = 0x14; + param_1[1] = 7; + param_1[2] = 1; + param_1[3] = param_2; + param_1[4] = param_3; + return; +} + + + +/* @004299b4 file=? name=FUN_004299b4 */ + +void __cdecl FUN_004299b4(undefined4 *param_1,undefined4 param_2) + +{ + *param_1 = 0x10; + param_1[1] = 0xb; + param_1[2] = 1; + param_1[3] = param_2; + return; +} + + + +/* @004299d8 file=? name=FUN_004299d8 */ + +void __cdecl +FUN_004299d8(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4, + undefined4 param_5) + +{ + *param_1 = 0x1c; + param_1[1] = 0xe; + param_1[2] = 1; + param_1[3] = param_2; + param_1[4] = param_3; + param_1[5] = param_4; + param_1[6] = param_5; + return; +} + + + +/* @00429a0c file=? name=FUN_00429a0c */ + +undefined4 * __cdecl FUN_00429a0c(undefined4 *param_1,int *param_2) + +{ + int *piVar1; + undefined4 *puVar2; + int iVar3; + int *local_8; + + FUN_004178cc(param_1,2); + *param_1 = &PTR_FUN_004e5ac8; + puVar2 = (undefined4 *)FUN_00402298(0x10); + if (puVar2 == (undefined4 *)0x0) { + iVar3 = 0; + } + else { + iVar3 = FUN_004023f4(puVar2); + } + param_1[9] = iVar3; + piVar1 = (int *)(param_1[9] + 0xc); + *piVar1 = *piVar1 + 1; + param_1[4] = 0; + param_1[3] = 0; + param_1[6] = 0; + param_1[5] = 0; + param_1[7] = 0; + param_1[8] = 0; + FUN_00402a4c((int *)&local_8,param_1 + 9,param_2); + piVar1 = local_8 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_8,3); + } + param_1[10] = 0; + return param_1; +} + + + +/* @00429a9c file=? name=FUN_00429a9c */ + +undefined4 * __cdecl FUN_00429a9c(undefined4 *param_1,int *param_2,int *param_3) + +{ + int *piVar1; + int iVar2; + undefined4 *puVar3; + int iVar4; + int *local_8; + + FUN_004178cc(param_1,2); + *param_1 = &PTR_FUN_004e5ac8; + puVar3 = (undefined4 *)FUN_00402298(0x10); + if (puVar3 == (undefined4 *)0x0) { + iVar4 = 0; + } + else { + iVar4 = FUN_004023f4(puVar3); + } + param_1[9] = iVar4; + piVar1 = (int *)(param_1[9] + 0xc); + *piVar1 = *piVar1 + 1; + FUN_00402a4c((int *)&local_8,param_1 + 9,param_2); + piVar1 = local_8 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_8,3); + } + iVar4 = FUN_00406ff8(*(int *)(DAT_004efc94 + 0x68),*(char **)(*param_3 + 8),0xf,-1); + if (iVar4 == 0) { + param_1[4] = 0; + param_1[3] = 0; + param_1[6] = 0; + param_1[5] = 0; + param_1[7] = 0; + param_1[8] = 0; + param_1[10] = 0; + } + else { + iVar2 = *(int *)(iVar4 + 4); + *(int *)(iVar4 + 4) = *(int *)(iVar4 + 4) + 1; + if (iVar2 == 0) { + FUN_00406cd0(iVar4); + } + puVar3 = *(undefined4 **)(iVar4 + 0x3c); + param_1[7] = *puVar3; + param_1[8] = puVar3[1]; + param_1[10] = puVar3[6]; + param_1[4] = puVar3[2]; + param_1[3] = puVar3[3]; + param_1[6] = puVar3[4]; + param_1[5] = puVar3[5]; + *(int *)(iVar4 + 4) = *(int *)(iVar4 + 4) + -1; + } + return param_1; +} + + + +/* @00429b94 file=? name=FUN_00429b94 */ + +float10 __cdecl FUN_00429b94(int param_1,float *param_2) + +{ + return -((float10)*param_2 * (float10)*(float *)(param_1 + 0x10)); +} + + + +/* @00429ba8 file=? name=FUN_00429ba8 */ + +void __cdecl FUN_00429ba8(int *param_1,byte param_2) + +{ + int *piVar1; + int *piVar2; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e5ac8; + piVar2 = (int *)param_1[9]; + piVar1 = piVar2 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(piVar2,3); + } + FUN_0041790c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00429bec file=? name=FUN_00429bec */ + +undefined4 __cdecl +FUN_00429bec(int param_1,char *param_2,int param_3,undefined4 param_4,float *param_5) + +{ + bool bVar1; + float *pfVar2; + int iVar3; + undefined3 extraout_var; + undefined4 *puVar4; + + pfVar2 = param_5; + if (param_5 == (float *)0x0) { + pfVar2 = (float *)FUN_00402298(0x1c); + } + iVar3 = FUN_00404118(param_3,s_gamedata_004e5950,s_KillBonus_004e5959,pfVar2); + if (iVar3 == 0) { + FUN_004dbb24((int *)&DAT_00524e68,param_2,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_Missing_KillBonus_004e5963,(char *)0x0); + FUN_004d9c38((int *)&DAT_00524e68); + } + else { + iVar3 = FUN_00404118(param_3,s_gamedata_004e5975,s_SpecialCaseDeathPenalty_004e597e,pfVar2 + 1); + if (iVar3 == 0) { + FUN_004dbb24((int *)&DAT_00524e68,param_2,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_Missing_SpecialCaseDeathPenalty_004e5996,(char *)0x0); + FUN_004d9c38((int *)&DAT_00524e68); + } + else { + iVar3 = FUN_00404118(param_3,s_gamedata_004e59b6,s_DamageReceivedModifier_004e59bf,pfVar2 + 2) + ; + if (iVar3 == 0) { + FUN_004dbb24((int *)&DAT_00524e68,param_2,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_Missing_DamageReceivedModifier_004e59d6,(char *)0x0); + FUN_004d9c38((int *)&DAT_00524e68); + } + else { + iVar3 = FUN_00404118(param_3,s_gamedata_004e59f5,s_DamageInflictedModifier_004e59fe, + pfVar2 + 3); + if (iVar3 == 0) { + FUN_004dbb24((int *)&DAT_00524e68,param_2,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_Missing_DamageInflictedModifier_004e5a16,(char *)0x0); + FUN_004d9c38((int *)&DAT_00524e68); + } + else { + bVar1 = FUN_004040d8(param_3,s_gamedata_004e5a36,s_ReturnFromDeath_004e5a3f, + (int *)(pfVar2 + 6)); + if (CONCAT31(extraout_var,bVar1) == 0) { + FUN_004dbb24((int *)&DAT_00524e68,param_2,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_Missing_ReturnFromDeath_004e5a4f,(char *)0x0); + FUN_004d9c38((int *)&DAT_00524e68); + } + else { + iVar3 = FUN_00404118(param_3,s_gamedata_004e5a67,s_DamageBias_004e5a70,pfVar2 + 4); + if (iVar3 == 0) { + FUN_004dbb24((int *)&DAT_00524e68,param_2,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_Missing_DamageBias_004e5a7b,(char *)0x0); + FUN_004d9c38((int *)&DAT_00524e68); + } + else { + iVar3 = FUN_00404118(param_3,s_gamedata_004e5a8e,s_FriendlyFirePenalty_004e5a97, + pfVar2 + 5); + if (iVar3 != 0) { + if (param_5 == (float *)0x0) { + puVar4 = (undefined4 *)FUN_00406db4(param_1,param_2,0xf,1,0,pfVar2,0x1c,-1); + FUN_004022d0((int *)pfVar2); + return *puVar4; + } + return 0; + } + FUN_004dbb24((int *)&DAT_00524e68,param_2,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_Missing_FriendlyFirePenalty_004e5aab,(char *)0x0); + FUN_004d9c38((int *)&DAT_00524e68); + } + } + } + } + } + } + if (param_5 == (float *)0x0) { + FUN_004022d0((int *)pfVar2); + } + return 0xffffffff; +} + + + +/* @00429e80 file=? name=FUN_00429e80 */ + +void __cdecl FUN_00429e80(int param_1,int param_2) + +{ + *(float *)(param_1 + 0x204) = *(float *)(param_2 + 0x1c) + *(float *)(param_1 + 0x204); + return; +} + + + +/* @00429e9c file=? name=FUN_00429e9c */ + +void FUN_00429e9c(void) + +{ + return; +} + + + +/* @00429ea4 file=? name=FUN_00429ea4 */ + +undefined4 * __cdecl FUN_00429ea4(undefined4 *param_1,int param_2,undefined4 param_3) + +{ + char cVar1; + undefined4 *puVar2; + uint uVar3; + uint uVar4; + char *pcVar5; + char *pcVar6; + + FUN_0041ff38(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004e5bb8; + uVar3 = 0xffffffff; + pcVar5 = (char *)(param_2 + 0x4c); + do { + pcVar6 = pcVar5; + if (uVar3 == 0) break; + uVar3 = uVar3 - 1; + pcVar6 = pcVar5 + 1; + cVar1 = *pcVar5; + pcVar5 = pcVar6; + } while (cVar1 != '\0'); + uVar3 = ~uVar3; + pcVar5 = pcVar6 + -uVar3; + pcVar6 = (char *)(param_1 + 0x71); + for (uVar4 = uVar3 >> 2; uVar4 != 0; uVar4 = uVar4 - 1) { + *(undefined4 *)pcVar6 = *(undefined4 *)pcVar5; + pcVar5 = pcVar5 + 4; + pcVar6 = pcVar6 + 4; + } + for (uVar3 = uVar3 & 3; uVar3 != 0; uVar3 = uVar3 - 1) { + *pcVar6 = *pcVar5; + pcVar5 = pcVar5 + 1; + pcVar6 = pcVar6 + 1; + } + param_1[0x81] = (float)*(int *)(param_2 + 0x8c); + puVar2 = FUN_004212b0(*(int *)(DAT_004efc94 + 0x24),s_Teams_004e5b7a); + (**(code **)(puVar2[4] + 4))(puVar2 + 4,param_1); + param_1[10] = param_1[10] | 0x10; + return param_1; +} + + + +/* @00429f30 file=? name=FUN_00429f30 */ + +void __cdecl FUN_00429f30(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e5bb8; + FUN_00420508(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00429f5c file=? name=FUN_00429f5c */ + +undefined4 * __cdecl FUN_00429f5c(int param_1) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00402298(0x208); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_00429ea4(puVar1,param_1,&DAT_004e5b04); + } + return puVar1; +} + + + +/* @00429f8c file=? name=FUN_00429f8c */ + +undefined4 __cdecl FUN_00429f8c(undefined4 *param_1) + +{ + char cVar1; + int iVar2; + undefined4 uVar3; + char *pcVar4; + uint uVar5; + uint uVar6; + char *pcVar7; + + iVar2 = FUN_00420234(param_1); + if (iVar2 == 0) { + uVar3 = 0; + } + else { + *param_1 = 0x90; + param_1[7] = 0x58; + param_1[0xb] = 0xa00; + param_1[0x13] = s_DEFUALT_004e5b80._0_4_; + param_1[0x14] = s_DEFUALT_004e5b80._4_4_; + pcVar4 = FUN_004d4d1c((char *)0x0,&DAT_004e5b88); + if (pcVar4 == (char *)0x0) { + FUN_004dbb24((int *)&DAT_00524e68,s_InitialScore_missing__004e5b8a,(char *)0x0); + uVar3 = 0; + } + else { + iVar2 = FUN_004dd1e0(pcVar4); + param_1[0x23] = iVar2; + pcVar4 = FUN_004d4d1c((char *)0x0,&DAT_004e5ba1); + if (pcVar4 == (char *)0x0) { + FUN_004dbb24((int *)&DAT_00524e68,s_teamName_missing__004e5ba3,(char *)0x0); + uVar3 = 0; + } + else { + uVar5 = 0xffffffff; + do { + pcVar7 = pcVar4; + if (uVar5 == 0) break; + uVar5 = uVar5 - 1; + pcVar7 = pcVar4 + 1; + cVar1 = *pcVar4; + pcVar4 = pcVar7; + } while (cVar1 != '\0'); + uVar5 = ~uVar5; + pcVar4 = pcVar7 + -uVar5; + pcVar7 = (char *)(param_1 + 0x13); + for (uVar6 = uVar5 >> 2; uVar6 != 0; uVar6 = uVar6 - 1) { + *(undefined4 *)pcVar7 = *(undefined4 *)pcVar4; + pcVar4 = pcVar4 + 4; + pcVar7 = pcVar7 + 4; + } + uVar3 = 1; + for (uVar5 = uVar5 & 3; uVar5 != 0; uVar5 = uVar5 - 1) { + *pcVar7 = *pcVar4; + pcVar4 = pcVar4 + 1; + pcVar7 = pcVar7 + 1; + } + } + } + } + return uVar3; +} + + + +/* @0042a06c file=? name=FUN_0042a06c */ + +void __cdecl FUN_0042a06c(int param_1) + +{ + FUN_0041a1a4(**(int **)(param_1 + 0xc),0x4e5ad4); + return; +} + + + +/* @0042a150 file=? name=FUN_0042a150 */ + +void __cdecl FUN_0042a150(int param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4) + +{ + undefined4 uVar1; + int *piVar2; + int iVar3; + uint *puVar4; + uint local_88 [5]; + undefined4 local_74; + undefined4 local_70; + undefined4 local_6c; + undefined4 local_68 [2]; + undefined4 local_60; + undefined4 local_5c; + undefined4 local_58; + undefined4 local_54; + undefined4 local_50; + undefined4 local_4c; + undefined4 local_48; + undefined4 local_44; + undefined4 local_40; + undefined4 local_3c [2]; + undefined4 local_34 [2]; + undefined4 local_2c; + undefined4 local_28; + undefined4 local_24; + undefined4 local_20; + undefined4 local_1c; + undefined4 local_18; + undefined4 local_14; + undefined4 local_10; + int local_c; + undefined4 local_8; + + local_2c = DAT_004e0fec; + local_28 = DAT_004e0ff0; + local_24 = DAT_004e0ff4; + local_20 = DAT_004e0ff8; + local_1c = DAT_004e0ffc; + local_18 = DAT_004e1000; + local_14 = DAT_004e1004; + FUN_00408440(&local_2c,param_4); + local_8 = *(undefined4 *)(param_1 + 0x14); + local_88[0] = 0x5c; + local_88[1] = 3; + local_88[2] = 1; + FUN_00420ea4(local_88 + 3,(undefined4 *)&DAT_00522524); + local_74 = 0; + local_70 = 0; + local_6c = 0x31; + FUN_00420ea4(local_68,(undefined4 *)&DAT_00522524); + local_60 = local_8; + local_5c = 0x100; + local_58 = local_2c; + local_54 = local_28; + local_50 = local_24; + local_4c = local_20; + local_48 = local_1c; + local_44 = local_18; + local_40 = local_14; + FUN_00420ea4(local_3c,param_2); + FUN_00420ea4(local_34,param_3); + piVar2 = (int *)FUN_00414b60(); + local_c = *piVar2; + local_10 = *(undefined4 *)(param_1 + 0x18); + iVar3 = FUN_004dcd94(); + local_c = local_c + iVar3; + uVar1 = *(undefined4 *)(DAT_004efc94 + 0x28); + puVar4 = (uint *)FUN_004336f0(local_88); + FUN_0041acbc(*(int *)(DAT_004efc94 + 0x60),3,uVar1,puVar4,local_c); + FUN_004022d0((int *)puVar4); + return; +} + + + +/* @0042a2c8 file=? name=FUN_0042a2c8 */ + +undefined4 * __cdecl FUN_0042a2c8(undefined4 *param_1,int *param_2) + +{ + int *piVar1; + + FUN_00415e90(param_1,1); + *param_1 = &PTR_FUN_004e5d74; + piVar1 = (int *)(**(code **)(*param_2 + 0x1c))(param_2,param_1 + 3,4); + piVar1 = (int *)(**(code **)(*piVar1 + 0x1c))(piVar1,param_1 + 5,4); + (**(code **)(*piVar1 + 0x1c))(piVar1,param_1 + 4,4); + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 6,4); + return param_1; +} + + + +/* @0042a334 file=? name=FUN_0042a334 */ + +void __cdecl FUN_0042a334(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e5d74; + FUN_00415ed8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0042a360 file=? name=FUN_0042a360 */ + +/* WARNING: Type propagation algorithm not settling */ + +undefined4 __cdecl FUN_0042a360(int param_1,int *param_2,int param_3,int *param_4,int *param_5) + +{ + int *piVar1; + char *pcVar2; + int iVar3; + char *pcVar4; + char *pcVar5; + bool bVar6; + undefined4 uVar7; + float local_18 [2]; + char *local_10; + char *local_c; + float local_8; + + iVar3 = FUN_00404118(param_3,(char *)param_4[2],s_DamageLevel_004e5bf0,&local_8); + if (iVar3 == 0) { + local_8 = -1.0; + } + (**(code **)(*param_5 + 0x20))(param_5,&local_8,4); + iVar3 = FUN_00404088(param_3,(char *)param_4[2],s_ExplosionModelFile_004e5bfc,&local_c); + if (iVar3 == 0) { + FUN_004dbb24(&DAT_00524e20,(char *)param_2[2],(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004e5c0f,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,(char *)param_4[2],(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_missing_ExplosionModelFile__004e5c13,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + uVar7 = 0; + piVar1 = param_2 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(param_2,3); + } + piVar1 = param_4 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(param_4,3); + } + } + else { + iVar3 = FUN_00406ff8(param_1,local_c,1,-1); + if (iVar3 == 0) { + FUN_004dbb24(&DAT_00524e20,(char *)param_2[2],(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_cannot_find_004e5c30,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,local_c,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_in_resource_file__004e5c3e,(char *)0x0); + uVar7 = 0; + piVar1 = param_2 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(param_2,3); + } + piVar1 = param_4 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(param_4,3); + } + } + else { + (**(code **)(*param_5 + 0x20))(param_5,iVar3,4); + iVar3 = FUN_00404088(param_3,(char *)param_4[2],s_GraphicState_004e5c52,&local_10); + if (iVar3 == 0) { + local_18[1] = 0.0; + } + else { + pcVar5 = s_Destroyed_004e5c5f; + pcVar4 = local_10; + do { + if (*pcVar4 != *pcVar5) goto LAB_0042a548; + bVar6 = true; + if (*pcVar4 == '\0') break; + pcVar2 = pcVar4 + 1; + if (*pcVar2 != pcVar5[1]) goto LAB_0042a548; + pcVar4 = pcVar4 + 2; + pcVar5 = pcVar5 + 2; + bVar6 = *pcVar2 == '\0'; + } while (!bVar6); + if (bVar6) { + local_18[1] = 1.4013e-45; + } + else { +LAB_0042a548: + pcVar4 = &DAT_004e5c69; + do { + if (*local_10 != *pcVar4) goto LAB_0042a57c; + bVar6 = true; + if (*local_10 == '\0') break; + pcVar5 = local_10 + 1; + if (*pcVar5 != pcVar4[1]) goto LAB_0042a57c; + local_10 = local_10 + 2; + pcVar4 = pcVar4 + 2; + bVar6 = *pcVar5 == '\0'; + } while (!bVar6); + if (bVar6) { + local_18[1] = 2.8026e-45; + } + } + } +LAB_0042a57c: + (**(code **)(*param_5 + 0x20))(param_5,local_18 + 1,4); + iVar3 = FUN_00404118(param_3,(char *)param_4[2],s_TimeDelay_004e5c6e,local_18); + if (iVar3 == 0) { + local_18[0] = 0.0; + } + (**(code **)(*param_5 + 0x20))(param_5,local_18,4); + uVar7 = 1; + piVar1 = param_2 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(param_2,3); + } + piVar1 = param_4 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(param_4,3); + } + } + } + return uVar7; +} + + + +/* @0042a5f4 file=? name=FUN_0042a5f4 */ + +undefined4 __cdecl FUN_0042a5f4(int param_1,float param_2,float param_3) + +{ + int iVar1; + undefined4 uVar2; + int local_20 [7]; + + FUN_0041f261(local_20,param_1); + do { + iVar1 = (**(code **)(local_20[0] + 0x28))(local_20); + if (iVar1 == 0) { + uVar2 = 0; + FUN_0041f29f(local_20,2); + return uVar2; + } + } while ((*(float *)(iVar1 + 0xc) <= param_2) || (param_3 < *(float *)(iVar1 + 0xc))); + uVar2 = 1; + FUN_0041f29f(local_20,2); + return uVar2; +} + + + +/* @0042a664 file=? name=FUN_0042a664 */ + +int __cdecl FUN_0042a664(int param_1,float param_2) + +{ + int iVar1; + int local_20 [7]; + + FUN_0041f261(local_20,param_1); + do { + iVar1 = (**(code **)(local_20[0] + 0x28))(local_20); + if (iVar1 == 0) { + iVar1 = 0; + FUN_0041f29f(local_20,2); + return iVar1; + } + } while (*(float *)(iVar1 + 0xc) <= param_2); + FUN_0041f29f(local_20,2); + return iVar1; +} + + + +/* @0042a6c4 file=? name=FUN_0042a6c4 */ + +int __cdecl FUN_0042a6c4(int param_1,int param_2) + +{ + int iVar1; + int local_20 [7]; + + FUN_0041f261(local_20,param_1); + do { + iVar1 = (**(code **)(local_20[0] + 0x28))(local_20); + if (iVar1 == 0) { + iVar1 = 0; + FUN_0041f29f(local_20,2); + return iVar1; + } + } while (param_2 != *(int *)(iVar1 + 0x10)); + FUN_0041f29f(local_20,2); + return iVar1; +} + + + +/* @0042a728 file=? name=FUN_0042a728 */ + +void __cdecl FUN_0042a728(undefined4 param_1,int param_2,undefined4 *param_3,undefined4 *param_4) + +{ + FUN_0042a150(param_2,param_3,param_4,(undefined4 *)&stack0x00000014); + return; +} + + + +/* @0042a748 file=? name=FUN_0042a748 */ + +int * __cdecl FUN_0042a748(int *param_1,int *param_2) + +{ + undefined4 *puVar1; + int local_c; + int local_8; + + FUN_0042ab72(param_1,0,1); + *param_1 = (int)&PTR_FUN_004e5d58; + (**(code **)(*param_2 + 0x1c))(param_2,&local_8,4); + local_c = 0; + if (0 < local_8) { + do { + puVar1 = (undefined4 *)FUN_00402298(0x1c); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_0042a2c8(puVar1,param_2); + } + (**(code **)(*param_1 + 8))(param_1,puVar1,&local_c); + local_c = local_c + 1; + } while (local_c < local_8); + } + return param_1; +} + + + +/* @0042a7cc file=? name=FUN_0042a7cc */ + +void __cdecl FUN_0042a7cc(int *param_1,byte param_2) + +{ + void *this; + int local_20 [7]; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e5d58; + FUN_0041f261(local_20,(int)param_1); + FUN_00417858(this,local_20,1); + FUN_0041f29f(local_20,2); + FUN_0042ab95(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0042a828 file=? name=FUN_0042a828 */ + +undefined4 __cdecl FUN_0042a828(int param_1,int *param_2,uint param_3,int *param_4,int *param_5) + +{ + undefined4 *puVar1; + int iVar2; + uint *puVar3; + undefined8 uVar4; + undefined4 uVar5; + int *piVar6; + int local_c; + int *local_8; + + local_8 = FUN_0040485c(param_3,(char *)0x0); + iVar2 = FUN_00403b60((int)local_8); + if (iVar2 == 0) { + uVar4 = FUN_004dbd4c(&DAT_00524e20,param_3); + FUN_004dbb24((int *)uVar4,s_is_empty_or_missing_004e5c78,(char *)0x0); + FUN_004d9c38((int *)uVar4); + if (local_8 != (int *)0x0) { + (**(code **)*local_8)(local_8,3); + } + uVar5 = 0; + piVar6 = param_2 + 3; + *piVar6 = *piVar6 + -1; + if (*piVar6 == 0) { + FUN_004024d8(param_2,3); + } + piVar6 = param_4 + 3; + *piVar6 = *piVar6 + -1; + if (*piVar6 == 0) { + FUN_004024d8(param_4,3); + } + } + else { + local_c = FUN_00403b60((int)local_8); + (**(code **)(*param_5 + 0x20))(param_5,&local_c,4); + for (puVar1 = (undefined4 *)local_8[1]; puVar1 != (undefined4 *)0x0; + puVar1 = (undefined4 *)*puVar1) { + piVar6 = param_5; + puVar3 = (uint *)FUN_00402298(0x10); + if (puVar3 == (uint *)0x0) { + puVar3 = (uint *)0x0; + } + else { + puVar3 = FUN_00402460(puVar3,(char *)(puVar1 + 2)); + } + puVar3[3] = puVar3[3] + 1; + param_4[3] = param_4[3] + 1; + FUN_0042a360(param_1,param_4,param_3,(int *)puVar3,piVar6); + } + if (local_8 != (int *)0x0) { + (**(code **)*local_8)(local_8,3); + } + uVar5 = 1; + piVar6 = param_2 + 3; + *piVar6 = *piVar6 + -1; + if (*piVar6 == 0) { + FUN_004024d8(param_2,3); + } + piVar6 = param_4 + 3; + *piVar6 = *piVar6 + -1; + if (*piVar6 == 0) { + FUN_004024d8(param_4,3); + } + } + return uVar5; +} + + + +/* @0042a984 file=? name=FUN_0042a984 */ + +undefined4 * __cdecl FUN_0042a984(undefined4 *param_1,int param_2) + +{ + undefined4 uVar1; + int iVar2; + + FUN_0041b838(param_1,3,&DAT_004e32ac); + *param_1 = &PTR_FUN_004e5d40; + param_1[5] = param_2; + (**(code **)(*(int *)(param_2 + 0xbc) + 4))(param_2 + 0xbc,param_1); + uVar1 = FUN_004022b0(*(int *)(param_1[5] + 0x11c) << 2); + param_1[4] = uVar1; + for (iVar2 = 0; iVar2 < *(int *)(param_1[5] + 0x11c); iVar2 = iVar2 + 1) { + *(undefined4 *)(param_1[4] + iVar2 * 4) = 0; + } + return param_1; +} + + + +/* @0042a9f4 file=? name=FUN_0042a9f4 */ + +void __cdecl FUN_0042a9f4(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e5d40; + FUN_004022e8((int *)param_1[4]); + FUN_0041b898(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0042aa2c file=? name=FUN_0042aa2c */ + +void __cdecl FUN_0042aa2c(int param_1) + +{ + ushort *puVar1; + int iVar2; + int iVar3; + uint uVar4; + int iVar5; + uint local_2c [7]; + int *local_10; + int local_c; + int local_8; + + for (iVar5 = 0; local_c = 0, iVar5 < *(int *)(*(int *)(param_1 + 0x14) + 0x11c); iVar5 = iVar5 + 1 + ) { + iVar2 = *(int *)(*(int *)(*(int *)(param_1 + 0x14) + 0x120) + iVar5 * 4); + local_8 = *(int *)(iVar2 + 0xd4); + if ((*(uint *)(iVar2 + 0xb8) & 4) != 0) { + local_c = FUN_0042a664(local_8,*(float *)(iVar2 + 0x158)); + iVar3 = FUN_0042a5f4(local_8,*(float *)(*(int *)(param_1 + 0x10) + iVar5 * 4), + *(float *)(iVar2 + 0x158)); + if ((iVar3 != 0) && ((*(uint *)(*(int *)(param_1 + 0x14) + 0x28) & 0xc) == 0)) { + puVar1 = (ushort *)(*(int *)(param_1 + 0x14) + 0x18); + *puVar1 = *puVar1 | 2; + } + *(undefined4 *)(*(int *)(param_1 + 0x10) + iVar5 * 4) = *(undefined4 *)(iVar2 + 0x158); + } + if ((*(uint *)(iVar2 + 0xb8) & 8) != 0) { + local_c = FUN_0042a6c4(local_8,*(int *)(iVar2 + 0x78)); + if ((*(uint *)(*(int *)(param_1 + 0x14) + 0x28) & 0xc) == 0) { + puVar1 = (ushort *)(*(int *)(param_1 + 0x14) + 0x18); + *puVar1 = *puVar1 | 2; + } + } + if (local_c != 0) { + local_10 = *(int **)(param_1 + 0x14); + FUN_0043663c(local_2c,(int)local_10,iVar2,*(undefined4 *)(local_c + 0x14)); + FUN_004364e4(*(int *)(DAT_004efc94 + 0x38),local_10,local_2c); + uVar4 = *(uint *)(*(int *)(param_1 + 0x14) + 0x28) & 0xc; + if (((uVar4 == 0) && ((*(byte *)(*(int *)(param_1 + 0x14) + 0x18) & 2) == 0)) || (uVar4 == 4)) + { + *(undefined4 *)(iVar2 + 0xb8) = 0; + } + } + } + return; +} + + + +/* @0042ab68 file=? name=FUN_0042ab68 */ + +undefined4 FUN_0042ab68(void) + +{ + return 1; +} + + + +/* @0042ab72 file=? name=FUN_0042ab72 */ + +undefined4 * __cdecl FUN_0042ab72(undefined4 *param_1,undefined4 param_2,undefined4 param_3) + +{ + FUN_00419184(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004e5d24; + return param_1; +} + + + +/* @0042ab95 file=? name=FUN_0042ab95 */ + +void __cdecl FUN_0042ab95(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e5d24; + FUN_004191b4(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0042abc1 file=? name=FUN_0042abc1 */ + +undefined4 __cdecl FUN_0042abc1(undefined4 param_1,int param_2,int param_3) + +{ + undefined4 uVar1; + + if (*(int *)(param_3 + 0x14) == *(int *)(param_2 + 0x14)) { + uVar1 = 0; + } + else { + uVar1 = 1; + if (*(int *)(param_2 + 0x14) <= *(int *)(param_3 + 0x14)) { + uVar1 = 0xffffffff; + } + } + return uVar1; +} + + + +/* @0042abf0 file=? name=FUN_0042abf0 */ + +undefined4 __cdecl FUN_0042abf0(undefined4 param_1,int *param_2,int param_3) + +{ + undefined4 uVar1; + + if (*(int *)(param_3 + 0x14) == *param_2) { + uVar1 = 0; + } + else { + uVar1 = 1; + if (*param_2 <= *(int *)(param_3 + 0x14)) { + uVar1 = 0xffffffff; + } + } + return uVar1; +} + + + +/* @0042ac1c file=? name=FUN_0042ac1c */ + +undefined4 * __cdecl FUN_0042ac1c(undefined4 *param_1,int param_2) + +{ + FUN_00417d00(param_1,param_2); + *param_1 = &PTR_FUN_004e5cd4; + return param_1; +} + + + +/* @0042ac3b file=? name=FUN_0042ac3b */ + +undefined4 * __cdecl FUN_0042ac3b(undefined4 *param_1,int param_2) + +{ + FUN_00417d00(param_1,param_2); + *param_1 = &PTR_FUN_004e5cd4; + return param_1; +} + + + +/* @0042ac5a file=? name=FUN_0042ac5a */ + +undefined4 * __cdecl FUN_0042ac5a(undefined4 *param_1,int param_2) + +{ + FUN_00417d28(param_1,param_2); + *param_1 = &PTR_FUN_004e5cd4; + return param_1; +} + + + +/* @0042ac79 file=? name=FUN_0042ac79 */ + +void __cdecl FUN_0042ac79(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e5cd4; + FUN_00417d54(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0042aca5 file=? name=FUN_0042aca5 */ + +undefined4 * __cdecl FUN_0042aca5(undefined4 param_1,int param_2,undefined4 *param_3) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_0041d485(); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_0041d42e(puVar1,param_1,param_2,param_3); + } + return puVar1; +} + + + +/* @0042acd8 file=? name=FUN_0042acd8 */ + +undefined4 * __cdecl +FUN_0042acd8(undefined4 *param_1,undefined4 param_2,undefined4 *param_3,undefined4 param_4) + +{ + int *piVar1; + + FUN_00415e90(param_1,1); + *param_1 = &PTR_FUN_004e61a0; + piVar1 = FUN_004de998(param_1 + 3,4,4,1,FUN_0042ba46); + FUN_0040aadc(param_1 + 0xe); + param_1[0x1c] = s_camera_004e5d78._0_4_; + *(undefined2 *)(param_1 + 0x1d) = s_camera_004e5d78._4_2_; + *(char *)((int)param_1 + 0x76) = s_camera_004e5d78[6]; + FUN_004dd3ec((uint)piVar1,(char *)((int)param_1 + 0x76),10); + param_1[0x1b] = piVar1; + param_1[0x1a] = param_4; + FUN_0042b3ac((int)param_1,param_3); + return param_1; +} + + + +/* @0042ad54 file=? name=FUN_0042ad54 */ + +undefined4 * __cdecl FUN_0042ad54(undefined4 *param_1,int param_2) + +{ + int iVar1; + + FUN_00415e90(param_1,1); + *param_1 = &PTR_FUN_004e61a0; + FUN_004de998(param_1 + 3,4,4,1,FUN_0042ba46); + FUN_0040aadc(param_1 + 0xe); + param_1[0x1b] = *(undefined4 *)(param_2 + 8); + FUN_0040a938(param_1 + 7,(undefined4 *)(param_2 + 0xc)); + FUN_0040ab44((float *)(param_1 + 0xe),param_1 + 7); + param_1[0x1a] = *(undefined4 *)(param_2 + 4); + iVar1 = 0; + do { + param_1[iVar1 + 3] = *(undefined4 *)(iVar1 * 4 + param_2 + 0x28); + iVar1 = iVar1 + 1; + } while (iVar1 < 4); + param_1[0x1c] = s_camera_004e5d7f._0_4_; + *(undefined2 *)(param_1 + 0x1d) = s_camera_004e5d7f._4_2_; + *(char *)((int)param_1 + 0x76) = s_camera_004e5d7f[6]; + FUN_004dd3ec(param_1[0x1b],(char *)((int)param_1 + 0x76),10); + return param_1; +} + + + +/* @0042ae14 file=munga/caminst.cpp name=FUN_0042ae14 */ + +undefined4 * __cdecl FUN_0042ae14(undefined4 *param_1,undefined4 param_2,char *param_3) + +{ + char cVar1; + bool bVar2; + int iVar3; + undefined4 uVar4; + undefined3 extraout_var; + uint uVar5; + uint uVar6; + char *pcVar7; + int *piVar8; + char *pcVar9; + char *local_10; + float *local_c; + undefined4 *local_8; + + FUN_00415e90(param_1,1); + *param_1 = &PTR_FUN_004e61a0; + piVar8 = FUN_004de998(param_1 + 3,4,4,1,FUN_0042ba46); + local_8 = param_1 + 0xe; + FUN_0040aadc(local_8); + uVar5 = 0xffffffff; + pcVar7 = param_3; + do { + pcVar9 = pcVar7; + if (uVar5 == 0) break; + uVar5 = uVar5 - 1; + pcVar9 = pcVar7 + 1; + cVar1 = *pcVar7; + pcVar7 = pcVar9; + } while (cVar1 != '\0'); + uVar5 = ~uVar5; + pcVar7 = pcVar9 + -uVar5; + pcVar9 = (char *)(param_1 + 0x1c); + for (uVar6 = uVar5 >> 2; uVar6 != 0; uVar6 = uVar6 - 1) { + *(undefined4 *)pcVar9 = *(undefined4 *)pcVar7; + pcVar7 = pcVar7 + 4; + pcVar9 = pcVar9 + 4; + } + for (uVar5 = uVar5 & 3; uVar5 != 0; uVar5 = uVar5 - 1) { + *pcVar9 = *pcVar7; + pcVar7 = pcVar7 + 1; + pcVar9 = pcVar9 + 1; + } + iVar3 = FUN_00404118((int)piVar8,param_3,s_tranx_004e5d86,(float *)(param_1 + 7)); + if (iVar3 == 0) { + FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_missing_tranx__004e5d8c,(char *)0x0); + FUN_0040385c(s_Bad_cameras__004e5d9d,s_d__tesla_bt_munga_CAMINST_CPP_004e5daa,0x69); + } + iVar3 = FUN_00404118((int)piVar8,param_3,s_trany_004e5dc8,(float *)(param_1 + 8)); + if (iVar3 == 0) { + FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_missing_trany__004e5dce,(char *)0x0); + FUN_0040385c(s_Bad_cameras__004e5ddf,s_d__tesla_bt_munga_CAMINST_CPP_004e5dec,0x6a); + } + iVar3 = FUN_00404118((int)piVar8,param_3,s_tranz_004e5e0a,(float *)(param_1 + 9)); + if (iVar3 == 0) { + FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_missing_tranz__004e5e10,(char *)0x0); + FUN_0040385c(s_Bad_cameras__004e5e21,s_d__tesla_bt_munga_CAMINST_CPP_004e5e2e,0x6b); + } + iVar3 = FUN_00404118((int)piVar8,param_3,s_quatx_004e5e4c,(float *)(param_1 + 10)); + if (iVar3 == 0) { + FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_missing_quatx__004e5e52,(char *)0x0); + FUN_0040385c(s_Bad_cameras__004e5e63,s_d__tesla_bt_munga_CAMINST_CPP_004e5e70,0x72); + } + iVar3 = FUN_00404118((int)piVar8,param_3,s_quaty_004e5e8e,(float *)(param_1 + 0xb)); + if (iVar3 == 0) { + FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_missing_quaty__004e5e94,(char *)0x0); + FUN_0040385c(s_Bad_cameras__004e5ea5,s_d__tesla_bt_munga_CAMINST_CPP_004e5eb2,0x73); + } + iVar3 = FUN_00404118((int)piVar8,param_3,s_quatz_004e5ed0,(float *)(param_1 + 0xc)); + if (iVar3 == 0) { + FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_missing_quatz__004e5ed6,(char *)0x0); + FUN_0040385c(s_Bad_cameras__004e5ee7,s_d__tesla_bt_munga_CAMINST_CPP_004e5ef4,0x74); + } + iVar3 = FUN_00404118((int)piVar8,param_3,s_quatw_004e5f12,(float *)(param_1 + 0xd)); + if (iVar3 == 0) { + FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_missing_quatw__004e5f18,(char *)0x0); + FUN_0040385c(s_Bad_cameras__004e5f29,s_d__tesla_bt_munga_CAMINST_CPP_004e5f36,0x75); + } + local_c = (float *)(param_1 + 0xe); + FUN_0040ab44(local_c,param_1 + 7); + param_1[3] = 0xc0490fdb; + FUN_00404118((int)piVar8,param_3,s_minYawClamp_004e5f54,(float *)(param_1 + 3)); + param_1[4] = 0x40490fdb; + FUN_00404118((int)piVar8,param_3,s_maxYawClamp_004e5f60,(float *)(param_1 + 4)); + param_1[5] = 0xbfc90fdb; + FUN_00404118((int)piVar8,param_3,s_minPitchClamp_004e5f6c,(float *)(param_1 + 5)); + param_1[6] = 0x3fc90fdb; + FUN_00404118((int)piVar8,param_3,s_maxPitchClamp_004e5f7a,(float *)(param_1 + 6)); + iVar3 = FUN_00404088((int)piVar8,param_3,s_cameraType_004e5f88,&local_10); + if (iVar3 == 0) { + param_1[0x1a] = 1; + } + else { + uVar4 = FUN_0042b1fc(local_10); + param_1[0x1a] = uVar4; + } + bVar2 = FUN_004040d8((int)piVar8,param_3,s_cameraID_004e5f93,param_1 + 0x1b); + if (CONCAT31(extraout_var,bVar2) == 0) { + FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_missing_cameraID__004e5f9c,(char *)0x0); + FUN_0040385c(s_Bad_cameras__004e5fb0,s_d__tesla_bt_munga_CAMINST_CPP_004e5fbd,0xaa); + } + return param_1; +} + + + +/* @0042b1d0 file=? name=FUN_0042b1d0 */ + +void __cdecl FUN_0042b1d0(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e61a0; + FUN_00415ed8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0042b1fc file=? name=FUN_0042b1fc */ + +undefined4 __cdecl FUN_0042b1fc(char *param_1) + +{ + char *pcVar1; + char *pcVar2; + char *pcVar3; + bool bVar4; + + pcVar2 = s_DefaultCameraType_004e5fdb; + pcVar3 = param_1; + do { + if (*pcVar2 != *pcVar3) goto LAB_0042b230; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_0042b230; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return 1; + } +LAB_0042b230: + pcVar3 = s_AlwaysSeesCameraType_004e5fed; + do { + if (*pcVar3 != *param_1) { + return 0; + } + bVar4 = true; + if (*pcVar3 == '\0') break; + pcVar2 = pcVar3 + 1; + if (*pcVar2 != param_1[1]) { + return 0; + } + pcVar3 = pcVar3 + 2; + param_1 = param_1 + 2; + bVar4 = *pcVar2 == '\0'; + } while (!bVar4); + if (!bVar4) { + return 0; + } + return 2; +} + + + +/* @0042b264 file=? name=FUN_0042b264 */ + +undefined4 * __cdecl FUN_0042b264(int param_1,undefined4 *param_2) + +{ + undefined4 *puVar1; + int iVar2; + char *pcVar3; + char *pcVar4; + + if (*(int *)(param_1 + 0x68) == 1) { + pcVar3 = s_DefaultCameraType_004e6002; + puVar1 = param_2; + for (iVar2 = 4; iVar2 != 0; iVar2 = iVar2 + -1) { + *puVar1 = *(undefined4 *)pcVar3; + pcVar3 = pcVar3 + 4; + puVar1 = puVar1 + 1; + } + *(undefined2 *)puVar1 = *(undefined2 *)pcVar3; + puVar1 = param_2; + } + else { + puVar1 = (undefined4 *)(*(int *)(param_1 + 0x68) + -2); + if (puVar1 == (undefined4 *)0x0) { + pcVar3 = s_AlwaysSeesCameraType_004e6014; + pcVar4 = (char *)param_2; + for (iVar2 = 5; iVar2 != 0; iVar2 = iVar2 + -1) { + *(undefined4 *)pcVar4 = *(undefined4 *)pcVar3; + pcVar3 = pcVar3 + 4; + pcVar4 = pcVar4 + 4; + } + *pcVar4 = *pcVar3; + puVar1 = param_2; + } + } + return puVar1; +} + + + +/* @0042b2a8 file=? name=FUN_0042b2a8 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_0042b2a8(int param_1,float *param_2,float *param_3) + +{ + float10 fVar1; + float local_20; + float local_1c; + float local_18; + float local_10; + float local_c; + float local_8; + + FUN_00408bf8(&local_20,param_3,(float *)(param_1 + 0x38)); + local_8 = local_18 * local_18 + local_1c * local_1c + local_20 * local_20; + fVar1 = FUN_004dcd00((double)local_8); + if ((float10)_DAT_0042b3a8 < fVar1) { + fVar1 = FUN_004dc8ec((double)-local_20,SUB84((double)-local_18,0), + (uint)((ulonglong)(double)-local_18 >> 0x20)); + fVar1 = FUN_00408110((float)fVar1); + local_c = (float)fVar1; + *param_2 = local_c; + fVar1 = FUN_004dd138((double)(local_18 * local_18 + local_20 * local_20)); + local_10 = (float)fVar1; + fVar1 = FUN_004dc8ec((double)local_1c,SUB84((double)local_10,0), + (uint)((ulonglong)(double)local_10 >> 0x20)); + fVar1 = FUN_00408110((float)fVar1); + param_2[1] = (float)fVar1; + param_2[2] = 0.0; + } + else { + FUN_00409498(param_2,(undefined4 *)&DAT_004e0f98); + } + return; +} + + + +/* @0042b3ac file=? name=FUN_0042b3ac */ + +void __cdecl FUN_0042b3ac(int param_1,undefined4 *param_2) + +{ + float local_10; + undefined4 local_c; + + FUN_0040954c(&local_10,(float *)(param_2 + 3)); + *(undefined4 *)(param_1 + 0x10) = 0; + *(undefined4 *)(param_1 + 0xc) = *(undefined4 *)(param_1 + 0x10); + *(undefined4 *)(param_1 + 0x18) = local_c; + *(undefined4 *)(param_1 + 0x14) = *(undefined4 *)(param_1 + 0x18); + local_c = 0; + FUN_00408440((undefined4 *)(param_1 + 0x1c),param_2); + FUN_00409a38((float *)(param_1 + 0x28),&local_10); + FUN_0040ab44((float *)(param_1 + 0x38),(undefined4 *)(param_1 + 0x1c)); + return; +} + + + +/* @0042b428 file=? name=FUN_0042b428 */ + +void __cdecl FUN_0042b428(int param_1,undefined4 *param_2,float *param_3) + +{ + float *pfVar1; + float local_20; + float local_1c [2]; + float local_14; + float local_10; + float local_8; + + FUN_00408440(param_2,(undefined4 *)(param_1 + 0x1c)); + FUN_0040954c(&local_14,(float *)(param_1 + 0x28)); + FUN_0042b2a8(param_1,&local_20,param_3); + if (*(float *)(param_1 + 0xc) <= local_20) { + if (local_20 <= *(float *)(param_1 + 0x10)) { + pfVar1 = &local_20; + } + else { + pfVar1 = (float *)(param_1 + 0x10); + } + } + else { + pfVar1 = (float *)(param_1 + 0xc); + } + local_8 = *pfVar1; + local_20 = local_8; + if (*(float *)(param_1 + 0x14) <= local_1c[0]) { + if (local_1c[0] <= *(float *)(param_1 + 0x18)) { + pfVar1 = local_1c; + } + else { + pfVar1 = (float *)(param_1 + 0x18); + } + } + else { + pfVar1 = (float *)(param_1 + 0x14); + } + local_1c[0] = *pfVar1; + local_14 = local_8 + local_14; + local_10 = local_1c[0]; + FUN_00409a38((float *)(param_2 + 3),&local_14); + return; +} + + + +/* @0042b4e0 file=? name=FUN_0042b4e0 */ + +void __cdecl FUN_0042b4e0(int param_1,float *param_2) + +{ + float local_10; + float local_c; + + FUN_0042b2a8(param_1,&local_10,param_2); + if (*(float *)(param_1 + 0xc) <= local_10) { + if (*(float *)(param_1 + 0x10) < local_10) { + *(float *)(param_1 + 0x10) = local_10; + } + } + else { + *(float *)(param_1 + 0xc) = local_10; + } + if (*(float *)(param_1 + 0x14) <= local_c) { + if (*(float *)(param_1 + 0x18) < local_c) { + *(float *)(param_1 + 0x18) = local_c; + } + } + else { + *(float *)(param_1 + 0x14) = local_c; + } + return; +} + + + +/* @0042b550 file=? name=FUN_0042b550 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl FUN_0042b550(int param_1,float *param_2) + +{ + undefined4 uVar1; + float local_10; + float local_c; + + FUN_0042b2a8(param_1,&local_10,param_2); + if ((((local_10 < *(float *)(param_1 + 0xc) - _DAT_0042b5c0) || + (*(float *)(param_1 + 0x10) + _DAT_0042b5c0 < local_10)) || + (local_c < *(float *)(param_1 + 0x14) - _DAT_0042b5c4)) || + (*(float *)(param_1 + 0x18) + _DAT_0042b5c4 < local_c)) { + uVar1 = 0; + } + else { + uVar1 = 1; + } + return uVar1; +} + + + +/* @0042b5d4 file=? name=FUN_0042b5d4 */ + +void __cdecl FUN_0042b5d4(int param_1,int param_2) + +{ + char *pcVar1; + char local_84 [128]; + + pcVar1 = (char *)(param_1 + 0x70); + FUN_00404298(param_2,pcVar1,s_cameraID_004e6029,*(uint *)(param_1 + 0x6c)); + FUN_0042b264(param_1,(undefined4 *)local_84); + FUN_00404204(param_2,pcVar1,s_cameraType_004e6032,local_84); + FUN_00404304(param_2,pcVar1,s_tranx_004e603d,*(float *)(param_1 + 0x1c)); + FUN_00404304(param_2,pcVar1,s_trany_004e6043,*(float *)(param_1 + 0x20)); + FUN_00404304(param_2,pcVar1,s_tranz_004e6049,*(float *)(param_1 + 0x24)); + FUN_00404304(param_2,pcVar1,s_quatx_004e604f,*(float *)(param_1 + 0x28)); + FUN_00404304(param_2,pcVar1,s_quaty_004e6055,*(float *)(param_1 + 0x2c)); + FUN_00404304(param_2,pcVar1,s_quatz_004e605b,*(float *)(param_1 + 0x30)); + FUN_00404304(param_2,pcVar1,s_quatw_004e6061,*(float *)(param_1 + 0x34)); + FUN_00404304(param_2,pcVar1,s_minYawClamp_004e6067,*(float *)(param_1 + 0xc)); + FUN_00404304(param_2,pcVar1,s_maxYawClamp_004e6073,*(float *)(param_1 + 0x10)); + FUN_00404304(param_2,pcVar1,s_minPitchClamp_004e607f,*(float *)(param_1 + 0x14)); + FUN_00404304(param_2,pcVar1,s_maxPitchClamp_004e608d,*(float *)(param_1 + 0x18)); + FUN_00404490(param_2,pcVar1,(char *)0x0,(char *)0x0); + return; +} + + + +/* @0042b6f4 file=? name=FUN_0042b6f4 */ + +undefined4 __cdecl FUN_0042b6f4(undefined4 *param_1,int param_2,char *param_3) + +{ + bool bVar1; + int iVar2; + undefined4 uVar3; + undefined3 extraout_var; + char *local_8; + + iVar2 = FUN_00404118(param_2,param_3,s_tranx_004e609b,(float *)(param_1 + 3)); + if (iVar2 == 0) { + FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_missing_tranx__004e60a1,(char *)0x0); + uVar3 = 0; + } + else { + iVar2 = FUN_00404118(param_2,param_3,s_trany_004e60b2,(float *)(param_1 + 4)); + if (iVar2 == 0) { + FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_missing_trany__004e60b8,(char *)0x0); + uVar3 = 0; + } + else { + iVar2 = FUN_00404118(param_2,param_3,s_tranz_004e60c9,(float *)(param_1 + 5)); + if (iVar2 == 0) { + FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_missing_tranz__004e60cf,(char *)0x0); + uVar3 = 0; + } + else { + iVar2 = FUN_00404118(param_2,param_3,s_quatx_004e60e0,(float *)(param_1 + 6)); + if (iVar2 == 0) { + FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_missing_quatx__004e60e6,(char *)0x0); + uVar3 = 0; + } + else { + iVar2 = FUN_00404118(param_2,param_3,s_quaty_004e60f7,(float *)(param_1 + 7)); + if (iVar2 == 0) { + FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_missing_quaty__004e60fd,(char *)0x0); + uVar3 = 0; + } + else { + iVar2 = FUN_00404118(param_2,param_3,s_quatz_004e610e,(float *)(param_1 + 8)); + if (iVar2 == 0) { + FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_missing_quatz__004e6114,(char *)0x0); + uVar3 = 0; + } + else { + iVar2 = FUN_00404118(param_2,param_3,s_quatw_004e6125,(float *)(param_1 + 9)); + if (iVar2 == 0) { + FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_missing_quatw__004e612b,(char *)0x0); + uVar3 = 0; + } + else { + param_1[10] = 0xc0490fdb; + FUN_00404118(param_2,param_3,s_minYawClamp_004e613c,(float *)(param_1 + 10)); + param_1[0xb] = 0x40490fdb; + FUN_00404118(param_2,param_3,s_maxYawClamp_004e6148,(float *)(param_1 + 0xb)); + param_1[0xc] = 0xbfc90fdb; + FUN_00404118(param_2,param_3,s_minPitchClamp_004e6154,(float *)(param_1 + 0xc)); + param_1[0xd] = 0x3fc90fdb; + FUN_00404118(param_2,param_3,s_maxPitchClamp_004e6162,(float *)(param_1 + 0xd)); + iVar2 = FUN_00404088(param_2,param_3,s_cameraType_004e6170,&local_8); + if (iVar2 == 0) { + param_1[1] = 1; + } + else { + uVar3 = FUN_0042b1fc(local_8); + param_1[1] = uVar3; + } + bVar1 = FUN_004040d8(param_2,param_3,s_cameraID_004e617b,param_1 + 2); + if (CONCAT31(extraout_var,bVar1) == 0) { + FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_missing_cameraID__004e6184,(char *)0x0); + uVar3 = 0; + } + else { + *param_1 = 0x38; + uVar3 = 1; + } + } + } + } + } + } + } + } + return uVar3; +} + + + +/* @0042b9d0 file=? name=FUN_0042b9d0 */ + +undefined4 * __cdecl +FUN_0042b9d0(undefined4 *param_1,undefined4 param_2,undefined4 *param_3,undefined4 param_4) + +{ + FUN_0042acd8(param_1,param_2,param_3,param_4); + *param_1 = &PTR_FUN_004e6198; + return param_1; +} + + + +/* @0042b9f8 file=? name=FUN_0042b9f8 */ + +undefined4 * __cdecl FUN_0042b9f8(undefined4 *param_1,int param_2) + +{ + FUN_0042ad54(param_1,param_2); + *param_1 = &PTR_FUN_004e6198; + return param_1; +} + + + +/* @0042ba18 file=? name=FUN_0042ba18 */ + +undefined4 * __cdecl FUN_0042ba18(undefined4 *param_1,undefined4 param_2,char *param_3) + +{ + FUN_0042ae14(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004e6198; + return param_1; +} + + + +/* @0042ba3c file=? name=FUN_0042ba3c */ + +undefined4 FUN_0042ba3c(void) + +{ + return 1; +} + + + +/* @0042ba46 file=? name=FUN_0042ba46 */ + +undefined4 __cdecl FUN_0042ba46(undefined4 param_1) + +{ + return param_1; +} + + + +/* @0042ba4e file=? name=FUN_0042ba4e */ + +void __cdecl FUN_0042ba4e(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + FUN_0042b1d0(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0042ba74 file=? name=FUN_0042ba74 */ + +int * __cdecl FUN_0042ba74(int *param_1) + +{ + undefined4 *puVar1; + + FUN_0042c4b7(param_1,0); + puVar1 = (undefined4 *)FUN_00402298(0x14); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_0042c521(puVar1,(int)param_1); + } + param_1[5] = (int)puVar1; + FUN_0042be3c(param_1); + return param_1; +} + + + +/* @0042bab4 file=? name=FUN_0042bab4 */ + +void __cdecl FUN_0042bab4(int *param_1,byte param_2) + +{ + undefined4 *puVar1; + + if (param_1 != (int *)0x0) { + FUN_0042bca4((int)param_1); + puVar1 = (undefined4 *)param_1[5]; + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + param_1[5] = 0; + FUN_0042c4d6(param_1,2); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0042baf8 file=? name=FUN_0042baf8 */ + +int __cdecl FUN_0042baf8(int param_1) + +{ + bool bVar1; + int iVar2; + int iVar3; + int local_18 [5]; + + FUN_0042c521(local_18,param_1); + iVar3 = 0; + do { + bVar1 = false; + (**(code **)(local_18[0] + 4))(local_18); + do { + iVar2 = (**(code **)(local_18[0] + 0x28))(local_18); + if (iVar2 == 0) goto LAB_0042bb41; + } while (iVar3 != *(int *)(iVar2 + 0x6c)); + bVar1 = true; +LAB_0042bb41: + if (!bVar1) { + FUN_0042c55f(local_18,2); + return iVar3; + } + iVar3 = iVar3 + 1; + } while( true ); +} + + + +/* @0042bb64 file=? name=FUN_0042bb64 */ + +void __cdecl FUN_0042bb64(int *param_1,undefined4 *param_2,int param_3) + +{ + int iVar1; + + if (param_3 == 0) { + iVar1 = (**(code **)(*(int *)param_1[5] + 0x30))((int *)param_1[5]); + if (iVar1 == 0) { + FUN_0042bbac(param_1,param_2); + } + else { + FUN_0042b3ac(iVar1,param_2); + } + } + else { + FUN_0042b3ac(param_3,param_2); + } + return; +} + + + +/* @0042bbac file=? name=FUN_0042bbac */ + +undefined4 * __cdecl FUN_0042bbac(int *param_1,undefined4 *param_2) + +{ + int iVar1; + undefined4 *puVar2; + + iVar1 = FUN_0042baf8((int)param_1); + puVar2 = (undefined4 *)FUN_00402298(0xf0); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_0042acd8(puVar2,iVar1,param_2,1); + } + FUN_0042bbf8(param_1,puVar2); + return puVar2; +} + + + +/* @0042bbf8 file=? name=FUN_0042bbf8 */ + +undefined4 __cdecl FUN_0042bbf8(int *param_1,undefined4 param_2) + +{ + int iVar1; + + iVar1 = (**(code **)(*(int *)param_1[5] + 0x30))((int *)param_1[5]); + if (iVar1 == 0) { + (**(code **)(*param_1 + 4))(param_1,param_2); + (**(code **)(*(int *)param_1[5] + 4))((int *)param_1[5]); + } + else { + (**(code **)(*param_1 + 4))(param_1,param_2); + (**(code **)(*(int *)param_1[5] + 0xc))((int *)param_1[5]); + } + return param_2; +} + + + +/* @0042bc48 file=? name=FUN_0042bc48 */ + +undefined4 __cdecl FUN_0042bc48(int param_1) + +{ + undefined4 *puVar1; + undefined4 uVar2; + int iVar3; + + puVar1 = (undefined4 *)(**(code **)(**(int **)(param_1 + 0x14) + 0x30))(*(int **)(param_1 + 0x14)) + ; + if (puVar1 == (undefined4 *)0x0) { + uVar2 = 0; + } + else { + (**(code **)(**(int **)(param_1 + 0x14) + 0x48))(*(int **)(param_1 + 0x14)); + iVar3 = (**(code **)(**(int **)(param_1 + 0x14) + 0x30))(*(int **)(param_1 + 0x14)); + if (iVar3 == 0) { + (**(code **)(**(int **)(param_1 + 0x14) + 4))(*(int **)(param_1 + 0x14)); + } + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + uVar2 = (**(code **)(**(int **)(param_1 + 0x14) + 0x30))(*(int **)(param_1 + 0x14)); + } + return uVar2; +} + + + +/* @0042bca4 file=? name=FUN_0042bca4 */ + +void __cdecl FUN_0042bca4(int param_1) + +{ + int iVar1; + + while( true ) { + iVar1 = (**(code **)(**(int **)(param_1 + 0x14) + 0x30))(*(int **)(param_1 + 0x14)); + if (iVar1 == 0) break; + FUN_0042bc48(param_1); + } + return; +} + + + +/* @0042bcc8 file=? name=FUN_0042bcc8 */ + +void __cdecl FUN_0042bcc8(int param_1) + +{ + int iVar1; + + iVar1 = (**(code **)(**(int **)(param_1 + 0x14) + 0x30))(*(int **)(param_1 + 0x14)); + if (iVar1 != 0) { + (**(code **)(**(int **)(param_1 + 0x14) + 0x28))(*(int **)(param_1 + 0x14)); + iVar1 = (**(code **)(**(int **)(param_1 + 0x14) + 0x30))(*(int **)(param_1 + 0x14)); + if (iVar1 == 0) { + (**(code **)(**(int **)(param_1 + 0x14) + 4))(*(int **)(param_1 + 0x14)); + } + } + (**(code **)(**(int **)(param_1 + 0x14) + 0x30))(*(int **)(param_1 + 0x14)); + return; +} + + + +/* @0042bd0c file=? name=FUN_0042bd0c */ + +void __cdecl FUN_0042bd0c(int param_1) + +{ + int iVar1; + + iVar1 = (**(code **)(**(int **)(param_1 + 0x14) + 0x30))(*(int **)(param_1 + 0x14)); + if (iVar1 != 0) { + (**(code **)(**(int **)(param_1 + 0x14) + 0x2c))(*(int **)(param_1 + 0x14)); + iVar1 = (**(code **)(**(int **)(param_1 + 0x14) + 0x30))(*(int **)(param_1 + 0x14)); + if (iVar1 == 0) { + (**(code **)(**(int **)(param_1 + 0x14) + 8))(*(int **)(param_1 + 0x14)); + } + } + (**(code **)(**(int **)(param_1 + 0x14) + 0x30))(*(int **)(param_1 + 0x14)); + return; +} + + + +/* @0042bd50 file=? name=FUN_0042bd50 */ + +int __cdecl FUN_0042bd50(int param_1,int param_2) + +{ + int iVar1; + + (**(code **)(**(int **)(param_1 + 0x14) + 4))(*(int **)(param_1 + 0x14)); + while( true ) { + iVar1 = (**(code **)(**(int **)(param_1 + 0x14) + 0x30))(*(int **)(param_1 + 0x14)); + if (iVar1 == 0) { + return 0; + } + if (param_2 == iVar1) break; + (**(code **)(**(int **)(param_1 + 0x14) + 0xc))(*(int **)(param_1 + 0x14)); + } + return iVar1; +} + + + +/* @0042bd94 file=? name=FUN_0042bd94 */ + +int * __cdecl FUN_0042bd94(int param_1,float *param_2) + +{ + int iVar1; + int *piVar2; + int *piVar3; + float local_2c; + float local_28; + float local_24; + int local_20 [5]; + float local_c; + float local_8; + + local_c = 1e+08; + FUN_0042c521(local_20,param_1); + piVar3 = (int *)0x0; + while( true ) { + piVar2 = (int *)(**(code **)(local_20[0] + 0x28))(local_20); + if (piVar2 == (int *)0x0) break; + iVar1 = (**(code **)(*piVar2 + 4))(piVar2,param_2); + if (iVar1 != 0) { + FUN_00408644(&local_2c,param_2,(float *)(piVar2 + 7)); + local_8 = local_24 * local_24 + local_28 * local_28 + local_2c * local_2c; + if (local_8 < local_c) { + piVar3 = piVar2; + local_c = local_8; + } + } + } + FUN_0042c55f(local_20,2); + return piVar3; +} + + + +/* @0042be30 file=? name=FUN_0042be30 */ + +undefined4 FUN_0042be30(void) + +{ + return 1; +} + + + +/* @0042be3c file=? name=FUN_0042be3c */ + +void __cdecl FUN_0042be3c(int *param_1) + +{ + int *piVar1; + int iVar2; + int iVar3; + int local_a0 [38]; + int local_8; + + iVar2 = *(int *)(DAT_004efc94 + 0x68); + local_8 = FUN_00406fd4(iVar2,*(int *)(*(int *)(DAT_004efc94 + 200) + 4)); + piVar1 = param_1 + 6; + *piVar1 = s_cameras__004e61a8._0_4_; + param_1[7] = s_cameras__004e61a8._4_4_; + *(char *)(param_1 + 8) = s_cameras__004e61a8[8]; + FUN_004d49b8((char *)piVar1,(char *)(local_8 + 0xc)); + iVar3 = FUN_004d4a78((char *)piVar1); + if (0x11 < iVar3) { + *(undefined1 *)((int)param_1 + 0x29) = 0; + } + FUN_004d49b8((char *)piVar1,&DAT_004e61b1); + FUN_004da7c0(local_a0,0); + FUN_004da5f8(local_a0,(LPCSTR)piVar1,0x23,DAT_00520540); + if ((*(byte *)(local_a0[0] + 0xc) & 0x86) != 0) { + local_a0[0] = 0; + } + if (local_a0[0] == 0) { + FUN_004da44c(local_a0); + FUN_0042c078(param_1,iVar2,(char *)(local_8 + 0xc)); + } + else { + FUN_004da44c(local_a0); + FUN_0042bf38(param_1); + } + FUN_004da914(local_a0,2); + return; +} + + + +/* @0042bf38 file=? name=FUN_0042bf38 */ + +void __cdecl FUN_0042bf38(int *param_1) + +{ + char cVar1; + undefined4 *puVar2; + int *piVar3; + int iVar4; + undefined4 *puVar5; + uint uVar6; + uint uVar7; + char *pcVar8; + undefined4 *unaff_EDI; + char *pcVar9; + char local_8c [128]; + char *local_c; + int *local_8; + + piVar3 = (int *)FUN_00402298(0x20); + if (piVar3 == (int *)0x0) { + piVar3 = (int *)0x0; + } + else { + piVar3 = FUN_00403e84(piVar3,(char *)(param_1 + 6),1); + } + local_8 = FUN_0040485c((int)piVar3,(char *)0x0); + puVar2 = (undefined4 *)local_8[1]; + do { + if (puVar2 == (undefined4 *)0x0) { + if (local_8 != (int *)0x0) { + (**(code **)*local_8)(local_8,3); + } + FUN_00403ecc(piVar3,3); + return; + } + uVar6 = 0xffffffff; + pcVar8 = (char *)(puVar2 + 2); + do { + pcVar9 = pcVar8; + if (uVar6 == 0) break; + uVar6 = uVar6 - 1; + pcVar9 = pcVar8 + 1; + cVar1 = *pcVar8; + pcVar8 = pcVar9; + } while (cVar1 != '\0'); + uVar6 = ~uVar6; + pcVar8 = pcVar9 + -uVar6; + pcVar9 = local_8c; + for (uVar7 = uVar6 >> 2; uVar7 != 0; uVar7 = uVar7 - 1) { + *(undefined4 *)pcVar9 = *(undefined4 *)pcVar8; + pcVar8 = pcVar8 + 4; + pcVar9 = pcVar9 + 4; + } + for (uVar6 = uVar6 & 3; uVar6 != 0; uVar6 = uVar6 - 1) { + *pcVar9 = *pcVar8; + pcVar8 = pcVar8 + 1; + pcVar9 = pcVar9 + 1; + } + iVar4 = FUN_00404088((int)piVar3,local_8c,s_cameraType_004e61b6,&local_c); + if (iVar4 == 0) { + iVar4 = 1; + } + else { + iVar4 = FUN_0042b1fc(local_c); + } + if (iVar4 == 1) { + puVar5 = (undefined4 *)FUN_00402298(0xf0); + if (puVar5 == (undefined4 *)0x0) { + unaff_EDI = (undefined4 *)0x0; + } + else { + unaff_EDI = FUN_0042ae14(puVar5,piVar3,local_8c); + } + } + else if (iVar4 == 2) { + puVar5 = (undefined4 *)FUN_00402298(0xf0); + if (puVar5 == (undefined4 *)0x0) { + unaff_EDI = (undefined4 *)0x0; + } + else { + unaff_EDI = FUN_0042ba18(puVar5,piVar3,local_8c); + } + } + FUN_0042bbf8(param_1,unaff_EDI); + puVar2 = (undefined4 *)*puVar2; + } while( true ); +} + + + +/* @0042c078 file=? name=FUN_0042c078 */ + +void __cdecl FUN_0042c078(int *param_1,int param_2,char *param_3) + +{ + int iVar1; + int *piVar2; + int iVar3; + undefined4 *puVar4; + undefined4 *unaff_ESI; + undefined4 local_18 [2]; + int *local_10; + int local_8; + + iVar3 = FUN_00406ff8(param_2,param_3,0x1b,-1); + if (iVar3 != 0) { + iVar1 = *(int *)(iVar3 + 4); + *(int *)(iVar3 + 4) = *(int *)(iVar3 + 4) + 1; + if (iVar1 == 0) { + FUN_00406cd0(iVar3); + } + FUN_004030dc(local_18,*(undefined4 *)(iVar3 + 0x3c),*(undefined4 *)(iVar3 + 0x40),0); + local_8 = *local_10; + local_10 = local_10 + 1; + while (piVar2 = local_10, iVar1 = local_8 + -1, local_8 != 0) { + local_8 = iVar1; + if (local_10[1] == 1) { + puVar4 = (undefined4 *)FUN_00402298(0xf0); + if (puVar4 == (undefined4 *)0x0) { + unaff_ESI = (undefined4 *)0x0; + } + else { + unaff_ESI = FUN_0042ad54(puVar4,(int)piVar2); + } + } + else if (local_10[1] == 2) { + puVar4 = (undefined4 *)FUN_00402298(0xf0); + if (puVar4 == (undefined4 *)0x0) { + unaff_ESI = (undefined4 *)0x0; + } + else { + unaff_ESI = FUN_0042b9f8(puVar4,(int)piVar2); + } + } + FUN_0042bbf8(param_1,unaff_ESI); + local_10 = (int *)((int)local_10 + *piVar2); + } + *(int *)(iVar3 + 4) = *(int *)(iVar3 + 4) + -1; + } + return; +} + + + +/* @0042c150 file=munga/cammgr.cpp name=FUN_0042c150 */ + +void __cdecl FUN_0042c150(int param_1) + +{ + int *piVar1; + int iVar2; + int local_18 [5]; + + piVar1 = (int *)FUN_00402298(0x20); + if (piVar1 == (int *)0x0) { + piVar1 = (int *)0x0; + } + else { + piVar1 = FUN_00403e84(piVar1,(char *)0x0,1); + } + if (piVar1 == (int *)0x0) { + FUN_0040385c(s_Error_Opening_Camera_File_004e61c1,s_d__tesla_bt_munga_CAMMGR_CPP_004e61dc,0x274) + ; + } + FUN_0042c521(local_18,param_1); + (**(code **)(local_18[0] + 4))(local_18); + while( true ) { + iVar2 = (**(code **)(local_18[0] + 0x28))(local_18); + if (iVar2 == 0) break; + FUN_0042b5d4(iVar2,(int)piVar1); + } + FUN_00404d6c(piVar1,(char *)(param_1 + 0x18)); + FUN_00403ecc(piVar1,3); + FUN_0042c55f(local_18,2); + return; +} + + + +/* @0042c1fc file=? name=FUN_0042c1fc */ + +undefined4 __cdecl FUN_0042c1fc(int param_1,char *param_2,int param_3) + +{ + char cVar1; + int iVar2; + int iVar3; + int *piVar4; + char *pcVar5; + undefined4 *puVar6; + uint uVar7; + uint uVar8; + char *pcVar9; + char *pcVar10; + int *piVar11; + char *pcVar12; + int *piVar13; + bool bVar14; + undefined4 local_a0; + int local_9c; + int *local_98; + char local_90 [128]; + int *local_10; + int *local_c; + int *local_8; + + iVar2 = FUN_004d4a78(param_2); + iVar3 = FUN_004d4a78(*(char **)(param_3 + 4)); + local_8 = (int *)FUN_004022b0(iVar2 + iVar3 + 1); + uVar7 = 0xffffffff; + pcVar10 = *(char **)(param_3 + 4); + do { + pcVar12 = pcVar10; + if (uVar7 == 0) break; + uVar7 = uVar7 - 1; + pcVar12 = pcVar10 + 1; + cVar1 = *pcVar10; + pcVar10 = pcVar12; + } while (cVar1 != '\0'); + uVar7 = ~uVar7; + piVar4 = (int *)(pcVar12 + -uVar7); + piVar11 = local_8; + for (uVar8 = uVar7 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) { + *piVar11 = *piVar4; + piVar4 = piVar4 + 1; + piVar11 = piVar11 + 1; + } + for (uVar7 = uVar7 & 3; uVar7 != 0; uVar7 = uVar7 - 1) { + *(char *)piVar11 = (char)*piVar4; + piVar4 = (int *)((int)piVar4 + 1); + piVar11 = (int *)((int)piVar11 + 1); + } + iVar2 = FUN_004d4a78(param_2); + FUN_004d4a94((char *)local_8,param_2,iVar2 - 3); + FUN_004d49b8((char *)local_8,&DAT_004e61f9); + piVar4 = (int *)FUN_00402298(0x20); + if (piVar4 == (int *)0x0) { + piVar4 = (int *)0x0; + } + else { + piVar4 = FUN_00403e84(piVar4,(char *)local_8,1); + } + if ((*(byte *)(piVar4 + 7) & 2) == 0) { + iVar2 = piVar4[3]; + } + else { + iVar2 = piVar4[4]; + } + if (iVar2 == 0) { + FUN_004dbb24(&DAT_00524e20,s_Missing__cam_file_004e61fd,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); +LAB_0042c2da: + FUN_00403ecc(piVar4,3); + FUN_004022e8(local_8); + return 0xffffffff; + } + iVar2 = 0; + local_c = FUN_0040485c((int)piVar4,(char *)0x0); + for (puVar6 = (undefined4 *)local_c[1]; puVar6 != (undefined4 *)0x0; + puVar6 = (undefined4 *)*puVar6) { + iVar2 = iVar2 + 1; + } + local_10 = (int *)FUN_004022b0(iVar2 * 0x70); + FUN_004030dc(&local_a0,local_10,iVar2 * 0x70,0); + *local_98 = iVar2; + local_98 = local_98 + 1; + puVar6 = (undefined4 *)local_c[1]; +LAB_0042c360: + if (puVar6 != (undefined4 *)0x0) { + do { + piVar11 = local_98; + uVar7 = 0xffffffff; + pcVar10 = (char *)(puVar6 + 2); + do { + pcVar12 = pcVar10; + if (uVar7 == 0) break; + uVar7 = uVar7 - 1; + pcVar12 = pcVar10 + 1; + cVar1 = *pcVar10; + pcVar10 = pcVar12; + } while (cVar1 != '\0'); + uVar7 = ~uVar7; + pcVar10 = pcVar12 + -uVar7; + pcVar12 = local_90; + for (uVar8 = uVar7 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) { + *(undefined4 *)pcVar12 = *(undefined4 *)pcVar10; + pcVar10 = pcVar10 + 4; + pcVar12 = pcVar12 + 4; + } + pcVar9 = s_CameraInfo_004e620f; + pcVar5 = local_90; + for (uVar7 = uVar7 & 3; uVar7 != 0; uVar7 = uVar7 - 1) { + *pcVar12 = *pcVar10; + pcVar10 = pcVar10 + 1; + pcVar12 = pcVar12 + 1; + } + do { + if (*pcVar5 != *pcVar9) goto LAB_0042c3bf; + bVar14 = true; + if (*pcVar5 == '\0') break; + pcVar10 = pcVar5 + 1; + if (*pcVar10 != pcVar9[1]) goto LAB_0042c3bf; + pcVar5 = pcVar5 + 2; + pcVar9 = pcVar9 + 2; + bVar14 = *pcVar10 == '\0'; + } while (!bVar14); + if (bVar14) goto code_r0x0042c3bb; +LAB_0042c3bf: + iVar2 = FUN_0042b6f4(local_98,(int)piVar4,local_90); + if (iVar2 == 0) { + FUN_004022e8(local_10); + if (local_c != (int *)0x0) { + (**(code **)*local_c)(local_c,3); + } + goto LAB_0042c2da; + } + local_98 = (int *)((int)local_98 + *piVar11); + puVar6 = (undefined4 *)*puVar6; + if (puVar6 == (undefined4 *)0x0) break; + } while( true ); + } + uVar7 = 0xffffffff; + pcVar10 = param_2; + do { + pcVar12 = pcVar10; + if (uVar7 == 0) break; + uVar7 = uVar7 - 1; + pcVar12 = pcVar10 + 1; + cVar1 = *pcVar10; + pcVar10 = pcVar12; + } while (cVar1 != '\0'); + uVar7 = ~uVar7; + piVar11 = (int *)(pcVar12 + -uVar7); + piVar13 = local_8; + for (uVar8 = uVar7 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) { + *piVar13 = *piVar11; + piVar11 = piVar11 + 1; + piVar13 = piVar13 + 1; + } + for (uVar7 = uVar7 & 3; uVar7 != 0; uVar7 = uVar7 - 1) { + *(char *)piVar13 = (char)*piVar11; + piVar11 = (int *)((int)piVar11 + 1); + piVar13 = (int *)((int)piVar13 + 1); + } + iVar2 = FUN_004d4a78(param_2); + *(undefined1 *)((int)local_8 + iVar2 + -4) = 0; + puVar6 = (undefined4 *) + FUN_00406db4(param_1,(char *)local_8,0x1b,1,2,local_10,(int)local_98 - local_9c,-1); + FUN_004022e8(local_10); + FUN_004022e8(local_8); + FUN_00403ecc(piVar4,3); + if (local_c != (int *)0x0) { + (**(code **)*local_c)(local_c,3); + } + return *puVar6; +code_r0x0042c3bb: + puVar6 = (undefined4 *)*puVar6; + goto LAB_0042c360; +} + + + +/* @0042c4b7 file=? name=FUN_0042c4b7 */ + +undefined4 * __cdecl FUN_0042c4b7(undefined4 *param_1,undefined4 param_2) + +{ + FUN_0041827c(param_1,param_2); + *param_1 = &PTR_FUN_004e6270; + return param_1; +} + + + +/* @0042c4d6 file=? name=FUN_0042c4d6 */ + +void __cdecl FUN_0042c4d6(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e6270; + FUN_004182a8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0042c502 file=? name=FUN_0042c502 */ + +undefined4 * __cdecl FUN_0042c502(undefined4 *param_1,int param_2) + +{ + FUN_00418398(param_1,param_2); + *param_1 = &PTR_FUN_004e621c; + return param_1; +} + + + +/* @0042c521 file=? name=FUN_0042c521 */ + +undefined4 * __cdecl FUN_0042c521(undefined4 *param_1,int param_2) + +{ + FUN_00418398(param_1,param_2); + *param_1 = &PTR_FUN_004e621c; + return param_1; +} + + + +/* @0042c540 file=? name=FUN_0042c540 */ + +undefined4 * __cdecl FUN_0042c540(undefined4 *param_1,int param_2) + +{ + FUN_004183c0(param_1,param_2); + *param_1 = &PTR_FUN_004e621c; + return param_1; +} + + + +/* @0042c55f file=? name=FUN_0042c55f */ + +void __cdecl FUN_0042c55f(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e621c; + FUN_004183ec(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0042c630 file=? name=FUN_0042c630 */ + +void __cdecl FUN_0042c630(int param_1,undefined4 param_2) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)**(int **)(param_1 + 0x128); + if ((puVar1 != (undefined4 *)0x0) && (puVar1 != (undefined4 *)0x0)) { + (**(code **)*puVar1)(puVar1,3); + } + **(undefined4 **)(param_1 + 0x128) = param_2; + return; +} + + + +/* @0042c660 file=? name=FUN_0042c660 */ + +void __cdecl FUN_0042c660(int param_1,float param_2) + +{ + int iVar1; + float local_1c [3]; + float local_10 [3]; + + iVar1 = **(int **)(param_1 + 0x128); + if (*(int *)(iVar1 + 0xf8) < 1) { + FUN_00408440((undefined4 *)(param_1 + 500),&DAT_004e0f74); + FUN_0042c764(param_1,iVar1,param_2); + FUN_0040ab44((float *)(param_1 + 0xd0),(undefined4 *)(param_1 + 0x100)); + local_10[0] = 0.0; + local_10[1] = 0.0; + local_10[2] = -1.0; + FUN_00408b98(local_1c,local_10,(float *)(param_1 + 0xd0)); + if (0 < *(int *)(iVar1 + 0xfc)) { + FUN_0042b4e0(*(int *)(param_1 + 0x3b0),local_1c); + } + FUN_0042ca44(param_1,local_1c); + } + else { + FUN_0042c764(param_1,iVar1,param_2); + FUN_0042c870(param_1,iVar1,param_2); + FUN_0042c850(param_1,iVar1); + FUN_0042b3ac(*(int *)(param_1 + 0x3b0),(undefined4 *)(param_1 + 0x100)); + } + FUN_0040ab44((float *)(param_1 + 0xd0),(undefined4 *)(param_1 + 0x100)); + return; +} + + + +/* @0042c764 file=? name=FUN_0042c764 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_0042c764(int param_1,int param_2,float param_3) + +{ + float fVar1; + float local_1c; + float local_18; + float local_10; + float local_c; + float local_8; + + if (_DAT_0042c83c <= *(float *)(param_2 + 0xe4)) { + if (*(float *)(param_2 + 0xe4) <= _DAT_0042c840) { + local_8 = 0.0; + } + else { + local_8 = *(float *)(param_2 + 0xe4) - _DAT_0042c840; + local_8 = local_8 * local_8; + } + } + else { + fVar1 = *(float *)(param_2 + 0xe4) + _DAT_0042c840; + local_8 = _DAT_0042c844 * fVar1 * fVar1; + } + FUN_0040954c(&local_1c,(float *)(param_1 + 0x10c)); + local_c = local_8 * _DAT_0042c848 * param_3; + local_1c = local_c + local_1c; + local_10 = *(float *)(param_2 + 0xe8) * _DAT_0042c848 * _DAT_0042c84c * param_3; + local_18 = local_10 + local_18; + FUN_00409a38((float *)(param_1 + 0x10c),&local_1c); + return; +} + + + +/* @0042c850 file=? name=FUN_0042c850 */ + +void __cdecl FUN_0042c850(int param_1,int param_2) + +{ + *(float *)(param_1 + 0x104) = *(float *)(param_2 + 0xf0) + *(float *)(param_1 + 0x104); + return; +} + + + +/* @0042c870 file=? name=FUN_0042c870 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_0042c870(int param_1,int param_2,float param_3) + +{ + float *pfVar1; + float local_1c [3]; + float local_10 [3]; + + *(float *)(param_1 + 0x1e4) = _DAT_0042c938 * *(float *)(param_2 + 0xec) * param_3; + if (0 < *(int *)(param_2 + 0xf4)) { + *(float *)(param_1 + 0x1e4) = -*(float *)(param_1 + 0x1e4); + } + FUN_004086d0(local_10,(float *)(param_1 + 0x1c4),(float *)(param_1 + 0x21c)); + pfVar1 = (float *)(param_1 + 0x1dc); + FUN_00408644(local_1c,pfVar1,local_10); + FUN_00408440(pfVar1,local_1c); + FUN_004085ec((float *)(param_1 + 0x1c4),(float *)(param_1 + 0x1c4),pfVar1); + FUN_00408744((float *)(param_1 + 500),(float *)(param_1 + 0x1c4),(float *)(param_1 + 0xd0)); + FUN_004085ec((float *)(param_1 + 0x100),(float *)(param_1 + 0x100),(float *)(param_1 + 500)); + return; +} + + + +/* @0042ca20 file=? name=FUN_0042ca20 */ + +void __cdecl FUN_0042ca20(int param_1,float *param_2) + +{ + int *piVar1; + + piVar1 = FUN_0042bd94(param_1 + 0x314,param_2); + *(int **)(param_1 + 0x3b0) = piVar1; + return; +} + + + +/* @0042ca44 file=? name=FUN_0042ca44 */ + +void __cdecl FUN_0042ca44(int param_1,float *param_2) + +{ + FUN_0042b428(*(int *)(param_1 + 0x3b0),(undefined4 *)(param_1 + 0x100),param_2); + FUN_00408440((undefined4 *)(param_1 + 0x1d0),&DAT_004e0f74); + return; +} + + + +/* @0042ca7c file=? name=FUN_0042ca7c */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_0042ca7c(int param_1,float param_2,float *param_3) + +{ + float *pfVar1; + float *pfVar2; + int iVar3; + float *pfVar4; + float *pfVar5; + float10 fVar6; + float local_124 [3]; + float local_118 [3]; + float local_10c [12]; + float local_dc; + float local_d8; + undefined4 local_d4; + float local_d0; + float local_cc; + undefined4 local_c8; + float local_c4 [3]; + float local_b8 [3]; + float local_ac [3]; + float local_a0 [3]; + float local_94 [3]; + float local_88 [3]; + float local_7c; + float local_78; + undefined4 local_74; + float local_70; + float local_6c; + float local_64; + float local_60; + undefined4 local_5c; + float local_58; + float local_54; + undefined4 local_4c [3]; + float local_40 [4]; + float local_30; + float local_2c; + float local_28; + float local_24; + undefined4 local_20; + undefined4 local_1c; + float local_18; + float local_14; + float local_10; + float local_c; + float local_8; + + FUN_0042b428(*(int *)(param_1 + 0x3b0),local_4c,param_3); + FUN_0040954c(&local_58,local_40); + local_8 = local_58; + local_c = local_54; + local_64 = local_54; + local_60 = local_58; + local_5c = 0; + FUN_0040954c(&local_70,(float *)(param_1 + 0x10c)); + local_10 = local_70; + local_14 = local_6c; + local_7c = local_6c; + local_78 = local_70; + local_74 = 0; + fVar6 = FUN_00408110(local_6c); + local_7c = (float)fVar6; + fVar6 = FUN_00408110(local_78); + local_78 = (float)fVar6; + if (local_64 - local_7c <= _DAT_0042cd38) { + if (local_64 - local_7c < _DAT_0042cd40) { + local_64 = _DAT_0042cd3c + local_64; + } + } + else { + local_64 = local_64 - _DAT_0042cd3c; + } + if (local_60 - local_78 <= _DAT_0042cd38) { + if (local_60 - local_78 < _DAT_0042cd40) { + local_60 = _DAT_0042cd3c + local_60; + } + } + else { + local_60 = local_60 - _DAT_0042cd3c; + } + FUN_00408644(local_88,&local_64,&local_7c); + pfVar1 = (float *)(param_1 + 0x1d0); + FUN_004086d0(local_94,pfVar1,(float *)(param_1 + 0x234)); + FUN_004086ac(local_a0,local_88,*(float *)(param_1 + 0x244)); + pfVar2 = (float *)(param_1 + 0x1e8); + FUN_00408644(pfVar2,local_a0,local_94); + local_18 = param_2 * param_2 * _DAT_0042cd44; + FUN_004086ac(local_ac,pfVar2,local_18); + FUN_004086ac(local_b8,pfVar1,param_2); + FUN_004085ec(local_c4,local_b8,local_ac); + FUN_004085ec(&local_d0,&local_7c,local_c4); + local_1c = local_c8; + local_20 = local_c8; + local_24 = local_d0; + local_28 = local_d0; + local_2c = local_cc; + local_30 = local_cc; + local_d8 = local_d0; + local_dc = local_cc; + local_d4 = local_c8; + pfVar4 = (float *)&DAT_004e107c; + pfVar5 = local_10c; + for (iVar3 = 0xc; iVar3 != 0; iVar3 = iVar3 + -1) { + *pfVar5 = *pfVar4; + pfVar4 = pfVar4 + 1; + pfVar5 = pfVar5 + 1; + } + FUN_0040ad2c(local_10c,&local_dc); + FUN_00409a70((float *)(param_1 + 0x10c),local_10c); + FUN_004086ac(local_118,pfVar2,param_2); + FUN_004085ec(local_124,pfVar1,local_118); + FUN_00408440(pfVar1,local_124); + return; +} + + + +/* @0042cd48 file=? name=FUN_0042cd48 */ + +void __cdecl FUN_0042cd48(int param_1) + +{ + undefined4 *puVar1; + + puVar1 = FUN_0042bbac((int *)(param_1 + 0x314),(undefined4 *)(param_1 + 0x100)); + *(undefined4 **)(param_1 + 0x3b0) = puVar1; + FUN_004dbb24(&DAT_00524e20,(char *)(puVar1 + 0x1c),(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + return; +} + + + +/* @0042cd94 file=? name=FUN_0042cd94 */ + +void __cdecl FUN_0042cd94(int param_1) + +{ + undefined4 *puVar1; + int iVar2; + float local_1c [3]; + float local_10 [3]; + + iVar2 = FUN_0042bcc8(param_1 + 0x314); + if (iVar2 != *(int *)(param_1 + 0x3b0)) { + iVar2 = FUN_0042bc48(param_1 + 0x314); + *(int *)(param_1 + 0x3b0) = iVar2; + FUN_004dbb24(&DAT_00524e20,(char *)(iVar2 + 0x70),(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + puVar1 = (undefined4 *)(param_1 + 0x100); + FUN_0040a938(puVar1,(undefined4 *)(*(int *)(param_1 + 0x3b0) + 0x1c)); + FUN_0040ab44((float *)(param_1 + 0xd0),puVar1); + local_10[0] = 0.0; + local_10[1] = 0.0; + local_10[2] = -1.0; + FUN_00408b98(local_1c,local_10,(float *)(param_1 + 0xd0)); + FUN_0042ca44(param_1,local_1c); + FUN_0040ab44((float *)(param_1 + 0xd0),puVar1); + } + return; +} + + + +/* @0042ce64 file=? name=FUN_0042ce64 */ + +void __cdecl FUN_0042ce64(int param_1) + +{ + undefined4 *puVar1; + int iVar2; + float local_1c [3]; + float local_10 [3]; + + iVar2 = FUN_0042bcc8(param_1 + 0x314); + *(int *)(param_1 + 0x3b0) = iVar2; + FUN_004dbb24(&DAT_00524e20,(char *)(iVar2 + 0x70),(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + puVar1 = (undefined4 *)(param_1 + 0x100); + FUN_0040a938(puVar1,(undefined4 *)(*(int *)(param_1 + 0x3b0) + 0x1c)); + FUN_0040ab44((float *)(param_1 + 0xd0),puVar1); + local_10[0] = 0.0; + local_10[1] = 0.0; + local_10[2] = -1.0; + FUN_00408b98(local_1c,local_10,(float *)(param_1 + 0xd0)); + FUN_0042ca44(param_1,local_1c); + FUN_0040ab44((float *)(param_1 + 0xd0),puVar1); + return; +} + + + +/* @0042cf20 file=? name=FUN_0042cf20 */ + +void __cdecl FUN_0042cf20(int param_1) + +{ + undefined4 *puVar1; + int iVar2; + float local_1c [3]; + float local_10 [3]; + + iVar2 = FUN_0042bd0c(param_1 + 0x314); + *(int *)(param_1 + 0x3b0) = iVar2; + FUN_004dbb24(&DAT_00524e20,(char *)(iVar2 + 0x70),(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + puVar1 = (undefined4 *)(param_1 + 0x100); + FUN_0040a938(puVar1,(undefined4 *)(*(int *)(param_1 + 0x3b0) + 0x1c)); + FUN_0040ab44((float *)(param_1 + 0xd0),puVar1); + local_10[0] = 0.0; + local_10[1] = 0.0; + local_10[2] = -1.0; + FUN_00408b98(local_1c,local_10,(float *)(param_1 + 0xd0)); + FUN_0042ca44(param_1,local_1c); + FUN_0040ab44((float *)(param_1 + 0xd0),puVar1); + return; +} + + + +/* @0042cfdc file=? name=FUN_0042cfdc */ + +int * __cdecl FUN_0042cfdc(int *param_1,int param_2,undefined4 param_3) + +{ + int iVar1; + int *piVar2; + float local_1c [3]; + float local_10 [3]; + + FUN_004234f0(param_1,param_2,param_3); + *param_1 = (int)&PTR_FUN_004e6360; + FUN_0042ba74(param_1 + 0xc5); + param_1[10] = param_1[10] | 0x10; + if ((param_1[10] & 0xcU) != 4) { + piVar2 = param_1 + 0x40; + param_1[0xeb] = 0; + FUN_0040a938(piVar2,&DAT_004e0fec); + FUN_00408440(param_1 + 0xed,&DAT_004e0f74); + param_1[0xc0] = 0x447a0000; + param_1[0xc1] = 0; + param_1[0xc2] = 0; + param_1[0x49] = 1; + iVar1 = FUN_004022b0(4); + param_1[0x4a] = iVar1; + *(undefined4 *)param_1[0x4a] = 0; + iVar1 = (**(code **)(*(int *)param_1[0xca] + 0x30))((int *)param_1[0xca]); + param_1[0xec] = iVar1; + if (iVar1 == 0) { + FUN_0042cd48((int)param_1); + } + FUN_0040a938(piVar2,(undefined4 *)(param_1[0xec] + 0x1c)); + FUN_0040ab44((float *)(param_1 + 0x34),piVar2); + local_10[0] = 0.0; + local_10[1] = 0.0; + local_10[2] = -1.0; + FUN_00408b98(local_1c,local_10,(float *)(param_1 + 0x34)); + FUN_0042ca44((int)param_1,local_1c); + FUN_0040ab44((float *)(param_1 + 0x34),piVar2); + piVar2 = (int *)FUN_00414b60(); + param_1[0xc3] = *piVar2; + param_1[0xc4] = 0; + param_1[7] = (int)PTR_LAB_004e6310; + param_1[8] = DAT_004e6314; + param_1[9] = DAT_004e6318; + FUN_0041bbd8((int)(param_1 + 0xb),0); + } + return param_1; +} + + + +/* @0042d16c file=? name=FUN_0042d16c */ + +int * __cdecl FUN_0042d16c(int param_1) + +{ + int *piVar1; + + piVar1 = (int *)FUN_00402298(0x3c0); + if (piVar1 == (int *)0x0) { + piVar1 = (int *)0x0; + } + else { + piVar1 = FUN_0042cfdc(piVar1,param_1,&DAT_004e62a8); + } + return piVar1; +} + + + +/* @0042d19c file=? name=FUN_0042d19c */ + +void __cdecl FUN_0042d19c(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e6360; + FUN_0042bab4(param_1 + 0xc5,2); + FUN_00423c18(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0042d1dc file=? name=FUN_0042d1dc */ + +void __cdecl FUN_0042d1dc(int param_1) + +{ + FUN_0041a1a4(**(int **)(param_1 + 0xc),0x4e6278); + return; +} + + + +/* @0042d2c0 file=? name=FUN_0042d2c0 */ + +void __cdecl FUN_0042d2c0(int *param_1,int param_2) + +{ + int iVar1; + undefined4 local_24; + undefined4 local_20; + undefined4 local_1c; + undefined4 local_18; + undefined4 local_14; + undefined4 local_10; + undefined4 local_c; + undefined4 local_8; + + iVar1 = *(int *)(param_2 + 0xc); + if (iVar1 == 0x44) { +LAB_0042d2e5: + local_14 = 0x10; + local_10 = 4; + local_c = 1; + local_8 = 1; + (**(code **)(*param_1 + 0xc))(param_1,&local_14); + } + else { + if (iVar1 != 0x4f) { + if (iVar1 == 100) goto LAB_0042d2e5; + if (iVar1 != 0x6f) { + return; + } + } + local_24 = 0x10; + local_20 = 9; + local_1c = 1; + local_18 = 1; + (**(code **)(*param_1 + 0xc))(param_1,&local_24); + } + return; +} + + + +/* @0042d340 file=? name=FUN_0042d340 */ + +void __cdecl FUN_0042d340(int param_1,int param_2) + +{ + int iVar1; + undefined4 *puVar2; + + if (0 < *(int *)(param_2 + 0xc)) { + iVar1 = *(int *)(param_1 + 0xd0); + if (*(int *)(iVar1 + 0x40) != 2) { + *(undefined **)(iVar1 + 0x1c) = PTR_FUN_004e6474; + *(undefined4 *)(iVar1 + 0x20) = DAT_004e6478; + *(undefined4 *)(iVar1 + 0x24) = DAT_004e647c; + FUN_0041bbd8(iVar1 + 0x2c,2); + FUN_004dbb24(&DAT_00524e20,(char *)(*(int *)(iVar1 + 0x3b0) + 0x70),(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + return; + } + *(undefined **)(iVar1 + 0x1c) = PTR_LAB_004e6480; + *(undefined4 *)(iVar1 + 0x20) = DAT_004e6484; + *(undefined4 *)(iVar1 + 0x24) = DAT_004e6488; + FUN_0041bbd8(iVar1 + 0x2c,0); + puVar2 = (undefined4 *)FUN_00414b60(); + *(undefined4 *)(iVar1 + 0x30c) = *puVar2; + } + return; +} + + + +/* @0042d3f0 file=? name=FUN_0042d3f0 */ + +void __cdecl FUN_0042d3f0(int param_1,int param_2) + +{ + if (0 < *(int *)(param_2 + 0xc)) { + FUN_0042ce64(*(int *)(param_1 + 0xd0)); + } + return; +} + + + +/* @0042d410 file=? name=FUN_0042d410 */ + +void __cdecl FUN_0042d410(int param_1,int param_2) + +{ + if (0 < *(int *)(param_2 + 0xc)) { + FUN_0042cf20(*(int *)(param_1 + 0xd0)); + } + return; +} + + + +/* @0042d430 file=? name=FUN_0042d430 */ + +void __cdecl FUN_0042d430(int param_1,int param_2) + +{ + if (0 < *(int *)(param_2 + 0xc)) { + FUN_0042cd48(*(int *)(param_1 + 0xd0)); + } + return; +} + + + +/* @0042d450 file=? name=FUN_0042d450 */ + +void __cdecl FUN_0042d450(int param_1,int param_2) + +{ + if (0 < *(int *)(param_2 + 0xc)) { + FUN_0042cd94(*(int *)(param_1 + 0xd0)); + } + return; +} + + + +/* @0042d470 file=? name=FUN_0042d470 */ + +void __cdecl FUN_0042d470(int param_1,int param_2) + +{ + if (0 < *(int *)(param_2 + 0xc)) { + FUN_0042c150(*(int *)(param_1 + 0xd0) + 0x314); + } + return; +} + + + +/* @0042d494 file=? name=FUN_0042d494 */ + +undefined4 * __cdecl +FUN_0042d494(undefined4 *param_1,undefined4 param_2,undefined4 param_3,char *param_4, + undefined4 param_5) + +{ + FUN_0041c52c(param_1,param_2,param_3,param_4,param_5); + *param_1 = &PTR_FUN_004e65d4; + param_1[0x39] = 0; + param_1[0x3a] = 0; + param_1[0x3b] = 0; + param_1[0x3c] = 0; + param_1[0x3e] = 0; + param_1[0x3f] = 0; + param_1[0x3d] = 0; + return param_1; +} + + + +/* @0042d4f8 file=? name=FUN_0042d4f8 */ + +void __cdecl FUN_0042d4f8(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e65d4; + FUN_0041c648(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0042d524 file=? name=FUN_0042d524 */ + +void __cdecl FUN_0042d524(int param_1) + +{ + FUN_0041a1a4(**(int **)(param_1 + 0xc),0x4e63b0); + return; +} + + + +/* @0042d600 file=? name=FUN_0042d600 */ + +void __cdecl FUN_0042d600(int param_1) + +{ + float fVar1; + int *piVar2; + float10 fVar3; + + if (*(int *)(param_1 + 0x40) == 2) { + FUN_0041bbd8(param_1 + 0x2c,1); + } + piVar2 = (int *)FUN_00414b60(); + fVar1 = (float)*piVar2 / DAT_0052140c; + if (*(float *)(param_1 + 0x1cc) <= fVar1 - *(float *)(param_1 + 0x1d0)) { + FUN_0041bbd8(param_1 + 0x2c,2); + *(float *)(param_1 + 0x1d0) = fVar1; + if (DAT_004e0f5c == -1) { + FUN_00407f68(); + } + fVar3 = FUN_00408050(); + *(float *)(param_1 + 0x1cc) = + (float)(((float10)*(float *)(param_1 + 0x1c4) - (float10)*(float *)(param_1 + 0x1c8)) * + fVar3 + (float10)*(float *)(param_1 + 0x1c8)); + } + return; +} + + + +/* @0042d698 file=? name=FUN_0042d698 */ + +undefined4 * __cdecl FUN_0042d698(undefined4 *param_1,int param_2,undefined4 param_3) + +{ + int iVar1; + undefined4 *puVar2; + int iVar3; + int *piVar4; + float10 fVar5; + + FUN_0041ff38(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004e66b0; + param_1[7] = PTR_FUN_004e6648; + param_1[8] = DAT_004e664c; + param_1[9] = DAT_004e6650; + param_1[10] = param_1[10] | 0x10; + iVar3 = FUN_00407064(*(int *)(DAT_004efc94 + 0x68),param_1[0x6f],0xf); + iVar1 = *(int *)(iVar3 + 4); + *(int *)(iVar3 + 4) = *(int *)(iVar3 + 4) + 1; + if (iVar1 == 0) { + FUN_00406cd0(iVar3); + } + puVar2 = *(undefined4 **)(iVar3 + 0x3c); + param_1[0x71] = *puVar2; + param_1[0x72] = puVar2[1]; + *(int *)(iVar3 + 4) = *(int *)(iVar3 + 4) + -1; + fVar5 = FUN_00408050(); + param_1[0x73] = + (float)(((float10)(float)param_1[0x71] - (float10)(float)param_1[0x72]) * fVar5 + + (float10)(float)param_1[0x72]); + FUN_0041bbd8((int)(param_1 + 0xb),1); + piVar4 = (int *)FUN_00414b60(); + param_1[0x74] = (float)*piVar4 / DAT_0052140c; + return param_1; +} + + + +/* @0042d768 file=? name=FUN_0042d768 */ + +undefined4 * __cdecl FUN_0042d768(int param_1) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00402298(0x1d4); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_0042d698(puVar1,param_1,&DAT_004e6604); + } + return puVar1; +} + + + +/* @0042d798 file=? name=FUN_0042d798 */ + +undefined4 __cdecl FUN_0042d798(undefined4 *param_1) + +{ + int iVar1; + + iVar1 = FUN_00420234(param_1); + if (iVar1 == 0) { + return 0; + } + param_1[7] = 0x3f; + param_1[0xb] = 0x30c; + return 1; +} + + + +/* @0042d7d0 file=? name=FUN_0042d7d0 */ + +void __cdecl FUN_0042d7d0(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e66b0; + FUN_00420508(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0042d7fc file=? name=FUN_0042d7fc */ + +undefined4 __cdecl +FUN_0042d7fc(int param_1,char *param_2,int param_3,undefined4 param_4,float *param_5) + +{ + float *pfVar1; + int iVar2; + undefined4 *puVar3; + + pfVar1 = param_5; + if (param_5 == (float *)0x0) { + pfVar1 = (float *)FUN_00402298(8); + } + iVar2 = FUN_00404118(param_3,s_gamedata_004e665d,s_MaxWaitTime_004e6666,pfVar1); + if (iVar2 == 0) { + FUN_004dbb24((int *)&DAT_00524e68,param_2,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_Missing_MaxWaitTime_004e6672,(char *)0x0); + FUN_004d9c38((int *)&DAT_00524e68); + } + else { + iVar2 = FUN_00404118(param_3,s_gamedata_004e6686,s_MinWaitTime_004e668f,pfVar1 + 1); + if (iVar2 != 0) { + if (param_5 == (float *)0x0) { + puVar3 = (undefined4 *)FUN_00406db4(param_1,param_2,0xf,1,0,pfVar1,8,-1); + FUN_004022d0((int *)pfVar1); + return *puVar3; + } + return 0; + } + FUN_004dbb24((int *)&DAT_00524e68,param_2,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_Missing_MinWaitTime_004e669b,(char *)0x0); + FUN_004d9c38((int *)&DAT_00524e68); + } + if (param_5 == (float *)0x0) { + FUN_004022d0((int *)pfVar1); + } + return 0xffffffff; +} + + + +/* @0042d8f8 file=? name=FUN_0042d8f8 */ + +void __cdecl FUN_0042d8f8(int param_1) + +{ + FUN_0041a1a4(**(int **)(param_1 + 0xc),0x4e6618); + return; +} + + + +/* @0042d990 file=? name=FUN_0042d990 */ + +undefined4 * __cdecl +FUN_0042d990(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) + +{ + FUN_004178cc(param_1,2); + *param_1 = &PTR_FUN_004e6a8c; + param_1[4] = param_2; + param_1[3] = param_3; + param_1[5] = param_4; + return param_1; +} + + + +/* @0042d9c0 file=? name=FUN_0042d9c0 */ + +void __cdecl FUN_0042d9c0(int param_1) + +{ + *(undefined4 *)(param_1 + 500) = 0x40400000; + FUN_0041bbd8(param_1 + 0x2c,3); + return; +} + + + +/* @0042d9e0 file=? name=FUN_0042d9e0 */ + +void __cdecl FUN_0042d9e0(int param_1) + +{ + *(undefined4 *)(param_1 + 500) = 0x40400000; + *(ushort *)(param_1 + 0x18) = *(ushort *)(param_1 + 0x18) | 1; + FUN_0041bbd8(param_1 + 0x2c,4); + return; +} + + + +/* @0042da08 file=? name=FUN_0042da08 */ + +bool __cdecl FUN_0042da08(int param_1) + +{ + return (*(uint *)(param_1 + 0x28) & 0xc) != 0; +} + + + +/* @0042da20 file=? name=FUN_0042da20 */ + +void __cdecl FUN_0042da20(int param_1,int param_2) + +{ + *(float *)(param_1 + 0x1c8) = *(float *)(param_2 + 0x1c) + *(float *)(param_1 + 0x1c8); + (**(code **)(**(int **)(param_1 + 0x1fc) + 0x30))(*(int **)(param_1 + 0x1fc),param_2); + return; +} + + + +/* @0042da4c file=munga/player.cpp name=FUN_0042da4c */ + +void FUN_0042da4c(void) + +{ + FUN_0040385c(s_Drop_zone_reply_should_not_be_ha_004e68ca,s_d__tesla_bt_munga_PLAYER_CPP_004e6907, + 0xd8); + return; +} + + + +/* @0042da68 file=? name=FUN_0042da68 */ + +void __cdecl +FUN_0042da68(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5 + ,undefined4 param_6,undefined4 param_7,undefined4 param_8) + +{ + int iVar1; + undefined4 *puVar2; + undefined4 uVar3; + undefined4 uVar4; + undefined4 local_88; + undefined4 local_84; + undefined4 local_80; + undefined4 local_7c [2]; + undefined4 local_74; + undefined4 local_70; + undefined4 local_6c; + undefined4 local_68 [2]; + undefined4 local_60; + undefined4 local_5c; + undefined4 local_58; + undefined4 local_54; + undefined4 local_50; + undefined4 local_4c; + undefined4 local_48; + undefined4 local_44; + undefined4 local_40; + undefined4 local_3c [6]; + undefined4 local_24 [6]; + undefined4 local_c [2]; + + if ((*(uint *)(param_1 + 0x28) & 0x8000) != 0) { + iVar1 = DAT_004efc94[0xb]; + puVar2 = (undefined4 *) + FUN_00406ff8(DAT_004efc94[0x1a],*(char **)(*(int *)(param_1 + 0x1f8) + 0x2c),1,-1); + uVar4 = *puVar2; + uVar3 = FUN_0042904c(iVar1); + puVar2 = (undefined4 *)FUN_00420ebc(local_c,uVar3); + local_88 = 0x7c; + local_84 = 3; + local_80 = 1; + FUN_00420ea4(local_7c,puVar2); + local_74 = 0; + local_70 = 0; + local_6c = 0x45; + FUN_00420ea4(local_68,(undefined4 *)&DAT_00522524); + local_5c = 0x1c100; + local_58 = param_2; + local_54 = param_3; + local_50 = param_4; + local_4c = param_5; + local_48 = param_6; + local_44 = param_7; + local_40 = param_8; + local_60 = uVar4; + FUN_0040a7c0(local_3c,(undefined4 *)&DAT_004e0fd4); + FUN_0040a7c0(local_24,(undefined4 *)&DAT_004e0fd4); + uVar4 = (**(code **)(*DAT_004efc94 + 0x30))(DAT_004efc94,&local_88); + *(undefined4 *)(param_1 + 0x1fc) = uVar4; + } + return; +} + + + +/* @0042db80 file=? name=FUN_0042db80 */ + +void __cdecl FUN_0042db80(int param_1,uint *param_2) + +{ + undefined4 uVar1; + int iVar2; + int *piVar3; + int *unaff_EDI; + undefined4 local_58; + undefined4 local_54; + undefined4 local_50; + undefined4 local_4c [2]; + undefined4 local_44; + undefined4 local_40; + undefined4 local_3c [2]; + undefined4 local_34; + undefined4 local_30; + float local_2c; + float local_28; + float local_24; + int local_20 [3]; + int local_14; + undefined4 *local_10; + float local_c; + float local_8; + + if ((param_2[7] == *(uint *)(param_1 + 0x200)) && (*(int *)(param_1 + 0x40) != 1)) { + iVar2 = FUN_0042104c((int *)(param_2 + 8),(int *)&DAT_00522524); + if (iVar2 == 0) { + unaff_EDI = (int *)(**(code **)(*(int *)(*(int *)(DAT_004efc94 + 0x2c) + 0x54) + 0xc)) + (*(int *)(DAT_004efc94 + 0x2c) + 0x54,param_2 + 8); + } + else { + iVar2 = FUN_00403ad0(*(int *)(DAT_004efc94 + 0x24) + 0x18,s_DropZones_004e6924); + FUN_00421414(local_20,iVar2 + 0x10); + do { + piVar3 = (int *)(**(code **)(local_20[0] + 0x28))(local_20); + if (piVar3 == (int *)0x0) goto LAB_0042dcb8; + iVar2 = FUN_004d4bec((char *)(piVar3 + 0x72),&DAT_004e692e,3); + } while (iVar2 == 0); + FUN_00408644(&local_2c,(float *)(param_1 + 0x100),(float *)(piVar3 + 0x40)); + local_8 = local_24 * local_24 + local_28 * local_28 + local_2c * local_2c; + unaff_EDI = piVar3; +LAB_0042dcb8: + while (piVar3 = (int *)(**(code **)(local_20[0] + 0x28))(local_20), piVar3 != (int *)0x0) { + iVar2 = FUN_004d4bec((char *)(piVar3 + 0x72),&DAT_004e6932,3); + if (iVar2 != 0) { + FUN_00408644(&local_2c,(float *)(param_1 + 0x100),(float *)(piVar3 + 0x40)); + local_c = local_24 * local_24 + local_28 * local_28 + local_2c * local_2c; + if (local_c < local_8) { + unaff_EDI = piVar3; + local_8 = local_c; + } + } + } + FUN_00420ef4(param_2 + 8,unaff_EDI + 0x61); + FUN_00421452(local_20,2); + } + uVar1 = *(undefined4 *)(param_1 + 0x200); + local_10 = (undefined4 *)(param_1 + 0x184); + local_58 = 0x2c; + local_54 = 0x15; + local_50 = 1; + FUN_00420ea4(local_4c,(undefined4 *)&DAT_00522524); + local_44 = 0; + local_40 = 0; + FUN_00420ea4(local_3c,local_10); + local_34 = 0x15; + local_30 = uVar1; + (**(code **)(*unaff_EDI + 0xc))(unaff_EDI,&local_58); + piVar3 = (int *)FUN_00414b60(); + local_14 = *piVar3; + iVar2 = FUN_004dcd94(); + local_14 = local_14 + iVar2; + FUN_0041acbc(*(int *)(DAT_004efc94 + 0x60),3,param_1,param_2,local_14); + } + return; +} + + + +/* @0042df8c file=? name=FUN_0042df8c */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_0042df8c(int param_1,float param_2) + +{ + int iVar1; + undefined4 local_48 [3]; + undefined4 local_3c [4]; + undefined4 local_2c [4]; + undefined4 local_1c [3]; + undefined4 local_10 [3]; + + if (*(int *)(param_1 + 0x40) == 3) { + *(float *)(param_1 + 500) = *(float *)(param_1 + 500) - param_2; + if (*(float *)(param_1 + 500) <= _DAT_0042e0dc) { + FUN_0041bbd8(param_1 + 0x2c,2); + if (DAT_004efc94[0x22] == 4) { + FUN_0044f5b4(local_10); + (**(code **)(*DAT_004efc94 + 0xc))(DAT_004efc94,local_10); + } + else if (DAT_004efc94[0x22] == 9) { + FUN_0044f634(local_1c); + (**(code **)(*DAT_004efc94 + 0xc))(DAT_004efc94,local_1c); + } + } + } + else if ((*(int *)(param_1 + 0x40) == 4) && + (*(float *)(param_1 + 500) = *(float *)(param_1 + 500) - param_2, + *(float *)(param_1 + 500) <= _DAT_0042e0dc)) { + iVar1 = DAT_004efc94[0x22]; + if (iVar1 == 6) { + FUN_0044f5d0(local_2c,0); + (**(code **)(*DAT_004efc94 + 0xc))(DAT_004efc94,local_2c); + } + else if (iVar1 == 8) { + FUN_0044f618(local_48); + (**(code **)(*DAT_004efc94 + 0xc))(DAT_004efc94,local_48); + } + else if (iVar1 == 10) { + FUN_0044f5f4(local_3c,0); + (**(code **)(*DAT_004efc94 + 0xc))(DAT_004efc94,local_3c); + } + } + return; +} + + + +/* @0042e100 file=? name=FUN_0042e100 */ + +void __cdecl FUN_0042e100(int *param_1,float param_2) + +{ + (**(code **)(*param_1 + 0x34))(param_1); + FUN_0042df8c((int)param_1,param_2); + if (param_1[0x7f] != 0) { + FUN_0040a938(param_1 + 0x40,(undefined4 *)(param_1[0x7f] + 0x100)); + FUN_0040ab28(param_1 + 0x34,(undefined4 *)(param_1[0x7f] + 0xd0)); + } + FUN_0042e5a0((int)param_1,param_2); + return; +} + + + +/* @0042e168 file=? name=FUN_0042e168 */ + +void __cdecl FUN_0042e168(int param_1) + +{ + if (*(int *)(param_1 + 0x1fc) != 0) { + FUN_0040a938((undefined4 *)(param_1 + 0x100),(undefined4 *)(*(int *)(param_1 + 0x1fc) + 0x100)); + FUN_0040ab28((undefined4 *)(param_1 + 0xd0),(undefined4 *)(*(int *)(param_1 + 0x1fc) + 0xd0)); + } + return; +} + + + +/* @0042e1ac file=? name=FUN_0042e1ac */ + +undefined4 FUN_0042e1ac(void) + +{ + int iVar1; + int iVar2; + int local_3c [5]; + int local_28 [6]; + int local_10 [3]; + + iVar1 = FUN_00403ad0(*(int *)(DAT_004efc94 + 0x24) + 0x18,s_Players_004e6940); + if (iVar1 != 0) { + iVar2 = 0; + FUN_00421414(local_10,iVar1 + 0x10); + FUN_0042e763(local_28,0,0); + while (iVar1 = (**(code **)(local_10[0] + 0x28))(local_10), iVar1 != 0) { + if ((*(byte *)(iVar1 + 0x29) & 0x40) == 0) { + (**(code **)(local_28[0] + 8))(local_28,iVar1,iVar1 + 0x1c8); + iVar2 = iVar2 + 1; + *(undefined4 *)(iVar1 + 0x1c4) = 0; + } + else { + *(undefined4 *)(iVar1 + 0x1cc) = 0xffffffff; + } + } + FUN_0042e8cb(local_3c,(int)local_28); + while( true ) { + iVar2 = iVar2 + -1; + iVar1 = (**(code **)(local_3c[0] + 0x28))(local_3c); + if (iVar1 == 0) break; + *(int *)(iVar1 + 0x1cc) = iVar2; + if (iVar2 == 0) { + *(undefined4 *)(iVar1 + 0x1c4) = 1; + } + } + FUN_0042e909(local_3c,2); + FUN_0042e786(local_28,2); + FUN_00421452(local_10,2); + } + return 1; +} + + + +/* @0042e2ac file=? name=FUN_0042e2ac */ + +void __cdecl FUN_0042e2ac(int param_1,undefined4 *param_2) + +{ + FUN_0041f76c(param_1,param_2); + *(undefined4 *)(param_1 + 0x1c8) = param_2[0xb]; + FUN_00408440((undefined4 *)(param_1 + 0x1d0),param_2 + 0xc); + return; +} + + + +/* @0042e2e4 file=? name=FUN_0042e2e4 */ + +void __cdecl FUN_0042e2e4(int param_1,int *param_2,int param_3) + +{ + FUN_0041f680(param_1,param_2,param_3); + *param_2 = 0x3c; + param_2[0xb] = *(int *)(param_1 + 0x1c8); + FUN_00408440(param_2 + 0xc,(undefined4 *)(param_1 + 0x1d0)); + return; +} + + + +/* @0042e328 file=? name=FUN_0042e328 */ + +undefined4 * __cdecl FUN_0042e328(undefined4 *param_1,int param_2,undefined4 param_3) + +{ + undefined4 *puVar1; + undefined4 uVar2; + code *in_stack_0000004c; + + FUN_0041ff38(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004e6a48; + FUN_0042e718(param_1 + 0x79,0); + param_1[0x82] = 0; + param_1[0x77] = 0; + param_1[0x7e] = *(undefined4 *)(DAT_004efc94 + 200); + puVar1 = (undefined4 *)FUN_00406ff8(*(int *)(DAT_004efc94 + 0x68),s_player_004e6948,1,-1); + if (puVar1 != (undefined4 *)0x0) { + param_1[0x6f] = *puVar1; + } + if (*(int *)(*(int *)(*(int *)(DAT_004efc94 + 0x2c) + 0x14) + 0xc) != param_1[0x61]) { + FUN_0042939c((undefined4 *)&stack0xffffffdc,*(int *)(DAT_004efc94 + 0x2c)); + (*in_stack_0000004c)(&stack0xffffffdc); + FUN_004293c0((int *)&stack0xffffffdc,2); + } + if ((param_1[10] & 0x8000) == 0) { + puVar1 = FUN_004212b0(*(int *)(DAT_004efc94 + 0x24),s_Players_004e694f); + (**(code **)(puVar1[4] + 4))(puVar1 + 4); + param_1[0x78] = *(undefined4 *)(param_2 + 0x4c); + } + else { + param_1[0x78] = 0xffffffff; + } + param_1[10] = param_1[10] | 0x10; + param_1[0x7f] = 0; + if ((param_1[10] & 0xc) == 4) { + param_1[7] = PTR_FUN_004e6814; + param_1[8] = DAT_004e6818; + param_1[9] = DAT_004e681c; + param_1[0x7e] = 0; + } + else { + param_1[0x7e] = *(undefined4 *)(DAT_004efc94 + 200); + param_1[7] = PTR_LAB_004e6808; + param_1[8] = DAT_004e680c; + param_1[9] = DAT_004e6810; + } + param_1[0x73] = 0; + param_1[0x80] = 0xfffffffe; + param_1[0x72] = 0; + uVar2 = (**(code **)(**(int **)(DAT_004efc94 + 0x40) + 0x18)) + (*(int **)(DAT_004efc94 + 0x40),param_1[99]); + param_1[0x81] = uVar2; + param_1[0x71] = 0; + param_1[0x7d] = 0; + return param_1; +} + + + +/* @0042e4f4 file=? name=FUN_0042e4f4 */ + +undefined4 * __cdecl FUN_0042e4f4(int param_1) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00402298(0x20c); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_0042e328(puVar1,param_1,&DAT_004e6714); + } + return puVar1; +} + + + +/* @0042e524 file=? name=FUN_0042e524 */ + +void __cdecl FUN_0042e524(int *param_1,byte param_2) + +{ + undefined4 *puVar1; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e6a48; + puVar1 = (undefined4 *)param_1[0x81]; + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + param_1[0x81] = 0; + FUN_0042e737(param_1 + 0x79,2); + FUN_00420508(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0042e580 file=? name=FUN_0042e580 */ + +void __cdecl FUN_0042e580(int param_1,undefined4 param_2) + +{ + (**(code **)(*(int *)(param_1 + 0x1e4) + 4))(param_1 + 0x1e4,param_2); + return; +} + + + +/* @0042e5a0 file=? name=FUN_0042e5a0 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_0042e5a0(int param_1,float param_2) + +{ + undefined4 *puVar1; + int iVar2; + int local_10 [3]; + + FUN_0042e954(local_10,param_1 + 0x1e4); + *(undefined4 *)(param_1 + 0x1dc) = 0; + while( true ) { + iVar2 = (**(code **)(local_10[0] + 0x28))(local_10); + if (iVar2 == 0) break; + *(int *)(param_1 + 0x1dc) = iVar2; + } + iVar2 = *(int *)(param_1 + 0x1dc); + if (iVar2 != 0) { + *(float *)(iVar2 + 0x14) = *(float *)(iVar2 + 0x14) - param_2; + puVar1 = *(undefined4 **)(param_1 + 0x1dc); + if ((float)puVar1[5] <= _DAT_0042e630) { + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + *(undefined4 *)(param_1 + 0x1dc) = 0; + } + } + FUN_0042e992(local_10,2); + return; +} + + + +/* @0042e718 file=? name=FUN_0042e718 */ + +undefined4 * __cdecl FUN_0042e718(undefined4 *param_1,undefined4 param_2) + +{ + FUN_00417be0(param_1,param_2); + *param_1 = &PTR_FUN_004e6a40; + return param_1; +} + + + +/* @0042e737 file=? name=FUN_0042e737 */ + +void __cdecl FUN_0042e737(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e6a40; + FUN_00417c0c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0042e763 file=? name=FUN_0042e763 */ + +undefined4 * __cdecl FUN_0042e763(undefined4 *param_1,undefined4 param_2,undefined4 param_3) + +{ + FUN_004186ac(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004e6a24; + return param_1; +} + + + +/* @0042e786 file=? name=FUN_0042e786 */ + +void __cdecl FUN_0042e786(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e6a24; + FUN_004186dc(param_1,0); + if ((param_2 & 1) != 0) { + FUN_0042e861(param_1); + } + } + return; +} + + + +/* @0042e7b2 file=? name=FUN_0042e7b2 */ + +undefined4 __cdecl FUN_0042e7b2(undefined4 param_1,int param_2,int param_3) + +{ + undefined4 uVar1; + + if (*(float *)(param_2 + 0x1c) == *(float *)(param_3 + 0x1c)) { + return 0; + } + if (*(float *)(param_2 + 0x1c) <= *(float *)(param_3 + 0x1c)) { + uVar1 = 0xffffffff; + } + else { + uVar1 = 1; + } + return uVar1; +} + + + +/* @0042e7e3 file=? name=FUN_0042e7e3 */ + +undefined4 __cdecl FUN_0042e7e3(undefined4 param_1,float *param_2,int param_3) + +{ + undefined4 uVar1; + + if (*param_2 == *(float *)(param_3 + 0x1c)) { + return 0; + } + if (*param_2 <= *(float *)(param_3 + 0x1c)) { + uVar1 = 0xffffffff; + } + else { + uVar1 = 1; + } + return uVar1; +} + + + +/* @0042e811 file=? name=FUN_0042e811 */ + +void FUN_0042e811(void) + +{ + int iVar1; + undefined4 *puVar2; + + iVar1 = DAT_004e6974; + DAT_004e6974 = DAT_004e6974 + 1; + puVar2 = DAT_004e6970; + if ((iVar1 == 0) && (puVar2 = (undefined4 *)FUN_00402298(0x28), puVar2 != (undefined4 *)0x0)) { + FUN_00402b98(puVar2,0x18,100,100,s_VChainOf_004e6957); + } + DAT_004e6970 = puVar2; + FUN_00402f74((int)DAT_004e6970); + return; +} + + + +/* @0042e861 file=? name=FUN_0042e861 */ + +void __cdecl FUN_0042e861(undefined4 *param_1) + +{ + FUN_00402f98((int)DAT_004e6970,param_1); + DAT_004e6974 = DAT_004e6974 + -1; + if (DAT_004e6974 == 0) { + if (DAT_004e6970 != (int *)0x0) { + FUN_00402c28(DAT_004e6970,0); + FUN_004022d0(DAT_004e6970); + } + DAT_004e6970 = (int *)0x0; + } + return; +} + + + diff --git a/reference/decomp/archive_2025export/all/part_004.c b/reference/decomp/archive_2025export/all/part_004.c new file mode 100644 index 0000000..c793667 --- /dev/null +++ b/reference/decomp/archive_2025export/all/part_004.c @@ -0,0 +1,9268 @@ +/* @0042e8ac file=? name=FUN_0042e8ac */ + +undefined4 * __cdecl FUN_0042e8ac(undefined4 *param_1,int param_2) + +{ + FUN_004188dc(param_1,param_2); + *param_1 = &PTR_FUN_004e69c8; + return param_1; +} + + + +/* @0042e8cb file=? name=FUN_0042e8cb */ + +undefined4 * __cdecl FUN_0042e8cb(undefined4 *param_1,int param_2) + +{ + FUN_004188dc(param_1,param_2); + *param_1 = &PTR_FUN_004e69c8; + return param_1; +} + + + +/* @0042e8ea file=? name=FUN_0042e8ea */ + +undefined4 * __cdecl FUN_0042e8ea(undefined4 *param_1,int param_2) + +{ + FUN_00418904(param_1,param_2); + *param_1 = &PTR_FUN_004e69c8; + return param_1; +} + + + +/* @0042e909 file=? name=FUN_0042e909 */ + +void __cdecl FUN_0042e909(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e69c8; + FUN_00418930(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0042e935 file=? name=FUN_0042e935 */ + +undefined4 * __cdecl FUN_0042e935(undefined4 *param_1,int param_2) + +{ + FUN_00417d00(param_1,param_2); + *param_1 = &PTR_FUN_004e6978; + return param_1; +} + + + +/* @0042e954 file=? name=FUN_0042e954 */ + +undefined4 * __cdecl FUN_0042e954(undefined4 *param_1,int param_2) + +{ + FUN_00417d00(param_1,param_2); + *param_1 = &PTR_FUN_004e6978; + return param_1; +} + + + +/* @0042e973 file=? name=FUN_0042e973 */ + +undefined4 * __cdecl FUN_0042e973(undefined4 *param_1,int param_2) + +{ + FUN_00417d28(param_1,param_2); + *param_1 = &PTR_FUN_004e6978; + return param_1; +} + + + +/* @0042e992 file=? name=FUN_0042e992 */ + +void __cdecl FUN_0042e992(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e6978; + FUN_00417d54(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0042e9be file=? name=FUN_0042e9be */ + +undefined4 * __cdecl FUN_0042e9be(undefined4 param_1,int param_2,undefined4 *param_3) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_0042ea6b(); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_0042ea14(puVar1,param_1,param_2,param_3); + } + return puVar1; +} + + + +/* @0042e9ee file=? name=FUN_0042e9ee */ + +void __cdecl FUN_0042e9ee(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + FUN_0041790c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0042ea14 file=? name=FUN_0042ea14 */ + +undefined4 * __cdecl +FUN_0042ea14(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 *param_4) + +{ + FUN_004185bc(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004e6aa0; + param_1[7] = *param_4; + return param_1; +} + + + +/* @0042ea3f file=? name=FUN_0042ea3f */ + +void __cdecl FUN_0042ea3f(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e6aa0; + FUN_004185ec(param_1,0); + if ((param_2 & 1) != 0) { + FUN_0042eabb(param_1); + } + } + return; +} + + + +/* @0042ea6b file=? name=FUN_0042ea6b */ + +void FUN_0042ea6b(void) + +{ + int iVar1; + undefined4 *puVar2; + + iVar1 = DAT_004e6a9c; + DAT_004e6a9c = DAT_004e6a9c + 1; + puVar2 = DAT_004e6a98; + if ((iVar1 == 0) && (puVar2 = (undefined4 *)FUN_00402298(0x28), puVar2 != (undefined4 *)0x0)) { + FUN_00402b98(puVar2,0x20,100,100,s_VChainLinkOf_004e6960); + } + DAT_004e6a98 = puVar2; + FUN_00402f74((int)DAT_004e6a98); + return; +} + + + +/* @0042eabb file=? name=FUN_0042eabb */ + +void __cdecl FUN_0042eabb(undefined4 *param_1) + +{ + FUN_00402f98((int)DAT_004e6a98,param_1); + DAT_004e6a9c = DAT_004e6a9c + -1; + if (DAT_004e6a9c == 0) { + if (DAT_004e6a98 != (int *)0x0) { + FUN_00402c28(DAT_004e6a98,0); + FUN_004022d0(DAT_004e6a98); + } + DAT_004e6a98 = (int *)0x0; + } + return; +} + + + +/* @0042eb38 file=? name=FUN_0042eb38 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_0042eb38(int param_1,float param_2) + +{ + int iVar1; + + iVar1 = FUN_00417ab4(param_1 + 0x20c); + if (iVar1 != 0) { + iVar1 = FUN_00417ab4(param_1 + 0x20c); + if (*(int *)(iVar1 + 400) != 0) { + *(undefined4 *)(param_1 + 0x220) = *(undefined4 *)(*(int *)(iVar1 + 400) + 0x1e0); + } + } + if ((*(int *)(DAT_004efc94 + 0x88) == 7) || (*(int *)(DAT_004efc94 + 0x88) == 6)) { + *(undefined4 *)(param_1 + 0x224) = 0; + } + else if (_DAT_0042ec2c < *(float *)(DAT_004efc94 + 0x58)) { + if (*(int *)(param_1 + 0x224) == 0) { + *(float *)(param_1 + 0x22c) = *(float *)(param_1 + 0x22c) - param_2; + if (*(float *)(param_1 + 0x22c) <= _DAT_0042ec30) { + *(undefined4 *)(param_1 + 0x228) = 0; + *(undefined4 *)(param_1 + 0x224) = 1; + } + } + else { + *(float *)(param_1 + 0x228) = param_2 + *(float *)(param_1 + 0x228); + if (*(float *)(param_1 + 0x230) <= *(float *)(param_1 + 0x228)) { + *(undefined4 *)(param_1 + 0x22c) = *(undefined4 *)(param_1 + 0x234); + *(undefined4 *)(param_1 + 0x224) = 0; + } + } + } + else { + *(undefined4 *)(param_1 + 0x224) = 1; + } + return; +} + + + +/* @0042ec3a file=? name=FUN_0042ec3a */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_0042ec3a(void) + +{ + int *piVar1; + int *piVar2; + int iVar3; + int iVar4; + int unaff_EBP; + + piVar2 = *(int **)(unaff_EBP + 8); + FUN_0042e100(piVar2,*(float *)(unaff_EBP + 0xc)); + FUN_0042eb38((int)piVar2,*(float *)(unaff_EBP + 0xc)); + if (((float)piVar2[0x86] <= _DAT_0042ed64) || (*(int *)(DAT_004efc94 + 0x88) != 5)) { + iVar3 = FUN_0042efe4(0); + if ((iVar3 != 0) && (iVar3 = *(int *)(iVar3 + 0x1fc), iVar3 != 0)) { + piVar1 = piVar2 + 0x83; + iVar4 = FUN_00417ab4((int)piVar1); + if (iVar3 != iVar4) { + FUN_00417a5c((int)piVar1); + (**(code **)(piVar2[0x83] + 4))(piVar1,iVar3); + piVar2[0x86] = 0x41200000; + iVar3 = FUN_00417ab4((int)piVar1); + *(undefined4 *)(unaff_EBP + -0x34) = 0x34; + *(undefined4 *)(unaff_EBP + -0x30) = 0x15; + *(undefined4 *)(unaff_EBP + -0x2c) = 1; + FUN_00420ea4((undefined4 *)(unaff_EBP + -0x28),(undefined4 *)&DAT_00522524); + *(undefined4 *)(unaff_EBP + -0x20) = 0; + *(undefined4 *)(unaff_EBP + -0x1c) = 0; + FUN_00420ea4((undefined4 *)(unaff_EBP + -0x18),(undefined4 *)(iVar3 + 0x184)); + *(undefined4 *)(unaff_EBP + -0x10) = 0; + *(undefined4 *)(unaff_EBP + -0xc) = DAT_004e0f80; + *(undefined4 *)(unaff_EBP + -8) = DAT_004e0f84; + *(undefined4 *)(unaff_EBP + -4) = DAT_004e0f88; + (**(code **)(*(int *)piVar2[0x87] + 0xc))((int *)piVar2[0x87],unaff_EBP + -0x34); + } + } + } + else { + piVar2[0x86] = (int)((float)piVar2[0x86] - *(float *)(unaff_EBP + 0xc)); + } + return; +} + + + +/* @0042ed68 file=? name=FUN_0042ed68 */ + +void __cdecl FUN_0042ed68(int *param_1) + +{ + undefined4 local_5c; + undefined4 local_58; + undefined4 local_54; + undefined4 local_50 [2]; + undefined4 local_48; + undefined4 local_44; + undefined4 local_40 [2]; + uint local_38 [5]; + undefined4 local_24; + undefined4 local_20; + undefined4 local_1c [2]; + undefined4 local_14 [2]; + undefined4 local_c [2]; + + (**(code **)(*param_1 + 0x40)) + (param_1,param_1[0x40],param_1[0x41],param_1[0x42],param_1[0x43],param_1[0x44], + param_1[0x45],param_1[0x46]); + FUN_00420ea4(local_c,param_1 + 0x61); + local_38[0] = 0x24; + local_38[1] = 0x14; + local_38[2] = 1; + FUN_00420ea4(local_38 + 3,(undefined4 *)&DAT_00522524); + local_24 = 0; + local_20 = 0; + FUN_00420e8c(local_1c); + FUN_00420ef4(local_1c,local_c); + (**(code **)(*(int *)param_1[0x7f] + 0xc))((int *)param_1[0x7f],local_38); + FUN_0041f640(param_1[0x7f],local_38); + param_1[7] = (int)PTR_LAB_004e6b04; + param_1[8] = DAT_004e6b08; + param_1[9] = DAT_004e6b0c; + param_1[0x80] = 0; + FUN_00420ea4(local_14,(undefined4 *)(param_1[0x7f] + 0x184)); + local_5c = 0x24; + local_58 = 0x15; + local_54 = 1; + FUN_00420ea4(local_50,(undefined4 *)&DAT_00522524); + local_48 = 0; + local_44 = 0; + FUN_00420ea4(local_40,local_14); + (**(code **)(*param_1 + 0xc))(param_1,&local_5c); + return; +} + + + +/* @0042eec8 file=? name=FUN_0042eec8 */ + +undefined4 * __cdecl FUN_0042eec8(undefined4 *param_1,int param_2,undefined4 param_3) + +{ + FUN_0042e328(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004e6b4c; + FUN_0042f121(param_1 + 0x83,param_1); + param_1[0x87] = 0; + param_1[10] = param_1[10] | 0x10; + param_1[0x86] = 0xbf800000; + if ((param_1[10] & 0xc) != 4) { + param_1[7] = PTR_FUN_004e6b10; + param_1[8] = DAT_004e6b14; + param_1[9] = DAT_004e6b18; + } + param_1[0x88] = 0xffffffff; + param_1[0x89] = 0; + param_1[0x8c] = 0x41200000; + param_1[0x8d] = 0x41700000; + param_1[0x8a] = 0; + param_1[0x8b] = param_1[0x8d]; + return param_1; +} + + + +/* @0042ef74 file=? name=FUN_0042ef74 */ + +undefined4 * __cdecl FUN_0042ef74(int param_1) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00402298(0x238); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_0042eec8(puVar1,param_1,&DAT_004e6ad4); + } + return puVar1; +} + + + +/* @0042efa4 file=? name=FUN_0042efa4 */ + +void __cdecl FUN_0042efa4(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e6b4c; + FUN_0042f140(param_1 + 0x83,2); + FUN_0042e524(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0042efe4 file=? name=FUN_0042efe4 */ + +int __cdecl FUN_0042efe4(int param_1) + +{ + int iVar1; + int local_10 [3]; + + iVar1 = FUN_00403ad0(*(int *)(DAT_004efc94 + 0x24) + 0x18,s_Players_004e6b3c); + if (iVar1 == 0) { +LAB_0042f05b: + iVar1 = 0; + } + else { + FUN_00421414(local_10,iVar1 + 0x10); + do { + iVar1 = (**(code **)(local_10[0] + 0x28))(local_10); + if (iVar1 == 0) { + FUN_00421452(local_10,2); + goto LAB_0042f05b; + } + } while (param_1 != *(int *)(iVar1 + 0x1cc)); + FUN_00421452(local_10,2); + } + return iVar1; +} + + + +/* @0042f064 file=? name=FUN_0042f064 */ + +void __cdecl FUN_0042f064(int param_1) + +{ + FUN_0041a1a4(**(int **)(param_1 + 0xc),0x4e6aa4); + return; +} + + + +/* @0042f121 file=? name=FUN_0042f121 */ + +undefined4 * __cdecl FUN_0042f121(undefined4 *param_1,undefined4 param_2) + +{ + FUN_004179d4(param_1,param_2); + *param_1 = &PTR_FUN_004e6b44; + return param_1; +} + + + +/* @0042f140 file=? name=FUN_0042f140 */ + +void __cdecl FUN_0042f140(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e6b44; + FUN_004179f8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0042f16c file=? name=FUN_0042f16c */ + +undefined4 * __cdecl FUN_0042f16c(undefined4 *param_1,undefined4 *param_2,undefined4 param_3) + +{ + char cVar1; + undefined4 *puVar2; + undefined4 extraout_EAX; + undefined4 extraout_EAX_00; + undefined4 extraout_EAX_01; + undefined4 uVar3; + uint uVar4; + uint uVar5; + char *pcVar6; + int iVar7; + char *pcVar8; + undefined4 local_14 [2]; + undefined4 *local_c; + + FUN_0041ff38(param_1,(int)param_2,param_3); + *param_1 = &PTR_FUN_004e6c60; + param_1[10] = param_1[10] | 0x10; + param_1[0x71] = 0; + param_1[0x7a] = 0; + uVar4 = 0xffffffff; + pcVar6 = (char *)(param_2 + 0x13); + do { + pcVar8 = pcVar6; + if (uVar4 == 0) break; + uVar4 = uVar4 - 1; + pcVar8 = pcVar6 + 1; + cVar1 = *pcVar6; + pcVar6 = pcVar8; + } while (cVar1 != '\0'); + uVar4 = ~uVar4; + pcVar6 = pcVar8 + -uVar4; + pcVar8 = (char *)(param_1 + 0x72); + for (uVar5 = uVar4 >> 2; uVar5 != 0; uVar5 = uVar5 - 1) { + *(undefined4 *)pcVar8 = *(undefined4 *)pcVar6; + pcVar6 = pcVar6 + 4; + pcVar8 = pcVar8 + 4; + } + for (uVar4 = uVar4 & 3; uVar4 != 0; uVar4 = uVar4 - 1) { + *pcVar8 = *pcVar6; + pcVar6 = pcVar6 + 1; + pcVar8 = pcVar8 + 1; + } + puVar2 = FUN_004212b0(*(int *)(DAT_004efc94 + 0x24),s_DropZones_004e6c08); + (**(code **)(puVar2[4] + 4))(puVar2 + 4,param_1); + FUN_004030dc(local_14,param_2,*param_2,0x70); + iVar7 = param_2[0x1b]; + param_1[0x71] = iVar7; + FUN_004de998((int *)0x0,0x1c,iVar7,1,FUN_0042fa79); + param_1[0x7a] = extraout_EAX; + FUN_004de998((int *)0x0,4,param_1[0x71],1,FUN_0042fa81); + param_1[0x7b] = extraout_EAX_00; + FUN_004de998((int *)0x0,8,param_1[0x71],1,FUN_00420e8c); + param_1[0x7c] = extraout_EAX_01; + uVar3 = FUN_004022b0(param_1[0x71] << 2); + param_1[0x7d] = uVar3; + for (iVar7 = 0; iVar7 < (int)param_1[0x71]; iVar7 = iVar7 + 1) { + FUN_0040a938((undefined4 *)(iVar7 * 0x1c + param_1[0x7a]),local_c); + *(undefined4 *)(iVar7 * 4 + param_1[0x7b]) = DAT_004e17f4; + FUN_00420ef4((undefined4 *)(iVar7 * 8 + param_1[0x7c]),(undefined4 *)&DAT_00522524); + *(undefined4 *)(param_1[0x7d] + iVar7 * 4) = 0xfffffffd; + local_c = local_c + 7; + } + return param_1; +} + + + +/* @0042f2f8 file=? name=FUN_0042f2f8 */ + +undefined4 * __cdecl FUN_0042f2f8(undefined4 *param_1) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00402298(0x1f8); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_0042f16c(puVar1,param_1,&DAT_004e6bc0); + } + return puVar1; +} + + + +/* @0042f328 file=? name=FUN_0042f328 */ + +void __cdecl FUN_0042f328(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e6c60; + if ((int *)param_1[0x7a] != (int *)0x0) { + FUN_004022e8((int *)param_1[0x7a]); + FUN_004022e8((int *)param_1[0x7b]); + FUN_004022e8((int *)param_1[0x7c]); + FUN_004022e8((int *)param_1[0x7d]); + } + FUN_00420508(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0042f38c file=? name=FUN_0042f38c */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl FUN_0042f38c(int param_1,int param_2) + +{ + int iVar1; + int *piVar2; + + if ((*(int *)(*(int *)(param_1 + 0x1ec) + param_2 * 4) != 0) && + ((iVar1 = *(int *)(param_1 + 0x1ec), piVar2 = (int *)FUN_00414b60(), + (float)(*piVar2 - *(int *)(param_2 * 4 + iVar1)) / DAT_0052140c <= _DAT_0042f400 || + (*(int *)(DAT_004efc94 + 0x88) != 5)))) { + return 0; + } + return 1; +} + + + +/* @0042f9bc file=? name=FUN_0042f9bc */ + +void __cdecl FUN_0042f9bc(int param_1) + +{ + FUN_0041a1a4(**(int **)(param_1 + 0xc),0x4e6b90); + return; +} + + + +/* @0042fa79 file=? name=FUN_0042fa79 */ + +undefined4 __cdecl FUN_0042fa79(undefined4 param_1) + +{ + return param_1; +} + + + +/* @0042fa81 file=? name=FUN_0042fa81 */ + +undefined4 __cdecl FUN_0042fa81(undefined4 param_1) + +{ + return param_1; +} + + + +/* @0042fa8c file=? name=FUN_0042fa8c */ + +void __cdecl FUN_0042fa8c(int param_1) + +{ + int *piVar1; + + piVar1 = (int *)FUN_00414b60(); + if (*(float *)(param_1 + 0x1c4) < (float)(*piVar1 - *(int *)(param_1 + 0x19c)) / DAT_0052140c) { + FUN_0042061c(param_1); + } + return; +} + + + +/* @0042fad0 file=? name=FUN_0042fad0 */ + +void __cdecl +FUN_0042fad0(int param_1,undefined4 param_2,undefined4 param_3,undefined4 *param_4,float param_5) + +{ + float *pfVar1; + int iVar2; + int *piVar3; + int iVar4; + float *pfVar5; + float10 fVar6; + int in_stack_00000024; + undefined4 uVar7; + uint uVar8; + undefined4 local_214; + undefined4 local_210; + undefined4 local_20c; + undefined4 local_208 [2]; + undefined4 local_200; + undefined4 local_1fc; + undefined4 local_1f8 [2]; + undefined4 local_1f0; + undefined4 local_1ec; + undefined4 local_1e8; + undefined4 local_1e4; + undefined4 local_1e0; + undefined4 local_1dc; + undefined4 local_1d8; + undefined4 local_1d4; + undefined4 local_1d0; + undefined4 local_1cc; + undefined4 local_1c8; + undefined4 local_1c4; + undefined4 local_1c0; + int local_1bc; + undefined4 local_1b8; + undefined4 local_1b4; + float local_1b0; + undefined4 local_1ac; + undefined4 local_1a8; + float local_1a4; + undefined4 local_1a0; + undefined4 local_19c; + undefined4 local_198; + undefined4 local_194; + undefined4 local_190; + undefined4 local_18c; + undefined4 local_188; + undefined4 local_184; + undefined4 local_180; + undefined4 local_17c; + undefined4 local_178; + undefined4 local_174; + undefined4 local_170; + undefined4 local_16c; + undefined4 local_168; + undefined4 local_164; + int local_160; + int local_15c; + undefined4 local_158 [6]; + float local_140; + float local_13c; + float local_138; + int local_134 [4]; + int local_124; + int local_120 [6]; + int local_108 [5]; + undefined4 local_f4 [15]; + float local_b8 [6]; + float local_a0; + float local_9c; + float local_98; + float local_94; + float local_90; + float local_8c; + undefined4 local_88; + float local_84 [6]; + float local_6c [6]; + undefined4 local_54; + undefined4 local_50; + int *local_4c; + int *local_48; + int local_44; + int local_40; + undefined4 local_3c; + float *local_38; + int *local_34; + undefined4 local_30; + int local_2c; + int local_28; + float local_24; + float local_20; + float local_1c; + float local_18; + float local_14; + float local_10; + undefined4 *local_c; + undefined4 *local_8; + + FUN_0040de40(&local_4c,10); + local_3c = 0; + local_48 = local_4c; + local_40 = local_44; + local_c = (undefined4 *)FUN_00402298(0x1c); + if (local_c == (undefined4 *)0x0) { + local_8 = (undefined4 *)0x0; + } + else { + local_8 = FUN_00435478(local_c,*(undefined4 *)(*(int *)(param_1 + 0x1c8) + 0x194)); + } + local_54 = 0x11; + local_50 = 2; + local_8c = -param_5; + local_90 = -param_5; + local_94 = -param_5; + local_1c = param_5; + local_20 = param_5; + local_24 = param_5; + local_a0 = param_5; + local_9c = param_5; + local_98 = param_5; + local_18 = local_94; + local_14 = local_90; + local_10 = local_8c; + FUN_0040d210(local_b8,&local_94,&local_a0); + pfVar1 = local_b8; + pfVar5 = local_84; + for (iVar4 = 6; iVar4 != 0; iVar4 = iVar4 + -1) { + *pfVar5 = *pfVar1; + pfVar1 = pfVar1 + 1; + pfVar5 = pfVar5 + 1; + } + pfVar1 = local_b8; + pfVar5 = local_6c; + for (iVar4 = 6; iVar4 != 0; iVar4 = iVar4 + -1) { + *pfVar5 = *pfVar1; + pfVar1 = pfVar1 + 1; + pfVar5 = pfVar5 + 1; + } + FUN_0040f33c(local_f4,&local_88,(float *)(param_1 + 0x100)); + pfVar1 = (float *)FUN_0040eed8((int)local_f4,param_1,0); + FUN_004355bc(local_108,(int)local_8); + while (iVar4 = (**(code **)(local_108[0] + 0x28))(local_108), iVar4 != 0) { + if ((param_1 != iVar4) && (iVar2 = FUN_0041a1a4(**(int **)(iVar4 + 0xc),0x4e4518), iVar2 != 0)) + { + FUN_00423468(iVar4,(int)&local_4c,pfVar1); + } + } + local_28 = *(int *)(DAT_004efc94 + 0x30); + local_30 = *(undefined4 *)(param_1 + 0x194); + local_2c = FUN_00433ed4(local_28 + 0x14); + local_34 = *(int **)(local_2c + 0x30); + local_38 = pfVar1; + FUN_0040e4ac(*local_34,pfVar1,pfVar1,(int)&local_4c); + if (local_8 != (undefined4 *)0x0) { + (**(code **)*local_8)(local_8,3); + } + if (pfVar1 != (float *)0x0) { + (**(code **)pfVar1[6])(pfVar1,3); + } + FUN_0043094a(local_120,0,0); + FUN_00430b36(local_134,(int)local_120); + for (iVar4 = 0; iVar4 < local_44 - local_40; iVar4 = iVar4 + 1) { + local_15c = local_4c[iVar4 * 7]; + FUN_0040d28c(local_158,local_4c + iVar4 * 7 + 1); + iVar2 = *(int *)(local_15c + 0x1c); + if (((iVar2 != *(int *)(param_1 + 0x1c8)) && (param_1 != iVar2)) && (iVar2 != in_stack_00000024) + ) { + FUN_00408440(&local_140,&DAT_004e0f74); + FUN_00408644(&local_140,(float *)(iVar2 + 0x100),(float *)(param_1 + 0x100)); + (**(code **)(local_120[0] + 8))(); + } + } + local_18c = *param_4; + local_188 = param_4[1]; + local_184 = param_4[2]; + local_180 = param_4[3]; + local_17c = param_4[4]; + local_178 = param_4[5]; + local_174 = param_4[6]; + local_170 = param_4[7]; + local_16c = param_4[8]; + local_168 = param_4[9]; + local_164 = param_4[10]; + local_160 = param_4[0xb]; + (**(code **)(local_134[0] + 4))(local_134); + while (piVar3 = (int *)(**(code **)(local_134[0] + 0x30))(local_134), piVar3 != (int *)0x0) { + local_198 = *(undefined4 *)(local_124 + 0x1c); + local_194 = *(undefined4 *)(local_124 + 0x20); + local_190 = *(undefined4 *)(local_124 + 0x24); + FUN_00408440(&local_140,&local_198); + (**(code **)(local_134[0] + 0xc))(local_134); + if (piVar3[0x48] != 0) { + uVar8 = 0x3ff40000; + uVar7 = 0; + fVar6 = FUN_004dd138((double)(local_138 * local_138 + + local_13c * local_13c + local_140 * local_140)); + FUN_004dce94((double)fVar6,uVar7,uVar8); + local_160 = FUN_004dcd94(); + if (local_160 < 1) { + local_160 = 1; + } + local_1a4 = DAT_004e0f74; + local_1a0 = DAT_004e0f78; + local_19c = DAT_004e0f7c; + FUN_00408744(&local_1a4,&local_140,(float *)(param_1 + 0xd0)); + FUN_00408440(&local_184,&local_1a4); + local_1b0 = DAT_004e0f80; + local_1ac = DAT_004e0f84; + local_1a8 = DAT_004e0f88; + FUN_004085ec(&local_1b0,(float *)(param_1 + 0x100),(float *)&stack0x00000018); + FUN_00408440(&local_16c,&local_1b0); + FUN_0042104c(piVar3 + 0x61,¶m_2); + if (in_stack_00000024 != 0) { + FUN_0042104c(piVar3 + 0x61,(int *)(in_stack_00000024 + 0x184)); + } + local_214 = 100; + local_210 = 0x12; + local_20c = 1; + FUN_00420ea4(local_208,(undefined4 *)&DAT_00522524); + local_200 = 0; + local_1fc = 0; + FUN_00420ea4(local_1f8,¶m_2); + local_1f0 = 0xffffffff; + local_1ec = 1; + local_1e8 = local_18c; + local_1e4 = local_188; + local_1e0 = local_184; + local_1dc = local_180; + local_1d8 = local_17c; + local_1d4 = local_178; + local_1d0 = local_174; + local_1cc = local_170; + local_1c8 = local_16c; + local_1c4 = local_168; + local_1c0 = local_164; + local_1bc = local_160; + local_1b8 = 0xffffffff; + local_1b4 = 1; + (**(code **)(*piVar3 + 0xc))(piVar3,&local_214); + } + } + FUN_00430b74(local_134,2); + FUN_0043096d(local_120,2); + FUN_004355e8(local_108,2); + FUN_004022e8(local_4c); + return; +} + + + +/* @00430180 file=? name=FUN_00430180 */ + +undefined4 * __cdecl FUN_00430180(undefined4 *param_1,int param_2,undefined4 param_3) + +{ + int *piVar1; + int iVar2; + undefined4 uVar3; + int iVar4; + + FUN_0041ff38(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004e6eb8; + FUN_00409968(param_1 + 0x43,&DAT_004e0fa4); + iVar2 = FUN_00407064(*(int *)(DAT_004efc94 + 0x68),param_1[0x6f],0xf); + iVar4 = *(int *)(iVar2 + 4); + *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + 1; + if (iVar4 == 0) { + FUN_00406cd0(iVar2); + } + piVar1 = *(int **)(iVar2 + 0x3c); + uVar3 = (**(code **)(*(int *)(*(int *)(DAT_004efc94 + 0x2c) + 0x54) + 0xc)) + (*(int *)(DAT_004efc94 + 0x2c) + 0x54,param_2 + 0x4c); + param_1[0x72] = uVar3; + iVar4 = FUN_00421070((int *)(param_2 + 0x54),(int *)&DAT_00522524); + if (iVar4 == 0) { + param_1[0x73] = 0; + } + else { + uVar3 = (**(code **)(*(int *)(*(int *)(DAT_004efc94 + 0x2c) + 0x54) + 0xc)) + (*(int *)(DAT_004efc94 + 0x2c) + 0x54,param_2 + 0x54); + param_1[0x73] = uVar3; + } + FUN_00408bf8((float *)(param_1 + 0x74),(float *)(param_1 + 0x40),(float *)(param_1[0x72] + 0xd0)); + param_1[0x71] = piVar1[1]; + if (*piVar1 != 0) { + iVar4 = FUN_00416f08(); + iVar4 = FUN_00430878(iVar4,param_1[0x72]); + if (iVar4 != -1) { + param_1[0x6f] = iVar4; + } + } + *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + -1; + param_1[7] = PTR_FUN_004e6cd8; + param_1[8] = DAT_004e6cdc; + param_1[9] = DAT_004e6ce0; + param_1[10] = param_1[10] | 0x10; + return param_1; +} + + + +/* @004302ec file=? name=FUN_004302ec */ + +undefined4 * __cdecl FUN_004302ec(int param_1) + +{ + int iVar1; + undefined4 *puVar2; + + iVar1 = (**(code **)(*(int *)(*(int *)(DAT_004efc94 + 0x2c) + 0x54) + 0xc)) + (*(int *)(DAT_004efc94 + 0x2c) + 0x54,param_1 + 0x4c); + if (iVar1 == 0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = (undefined4 *)FUN_00402298(0x1dc); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_00430180(puVar2,param_1,&DAT_004e6cc4); + } + } + return puVar2; +} + + + +/* @00430340 file=? name=FUN_00430340 */ + +void __cdecl FUN_00430340(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e6eb8; + FUN_00420508(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0043036c file=? name=FUN_0043036c */ + +void __cdecl FUN_0043036c(int param_1) + +{ + FUN_0041a1a4(**(int **)(param_1 + 0xc),0x4e6c94); + return; +} + + + +/* @00430388 file=munga/explode.cpp name=FUN_00430388 */ + +undefined4 __cdecl FUN_00430388(int param_1,char *param_2,uint param_3) + +{ + char *pcVar1; + int iVar2; + undefined4 uVar3; + uint *puVar4; + undefined4 *puVar5; + undefined8 uVar6; + uint *local_14; + char *local_10; + int local_c; + float local_8; + + iVar2 = FUN_00404118(param_3,s_gamedata_004e6cee,s_ExplosionDuration_004e6cf7,&local_8); + if (iVar2 == 0) { + uVar6 = FUN_004dbd4c((int *)&DAT_00524e68,param_3); + FUN_004dbb24((int *)uVar6,s_missing_ExplosionDuration_004e6d09,(char *)0x0); + FUN_004d9c38((int *)uVar6); + uVar3 = 0xffffffff; + } + else { + iVar2 = FUN_00404088(param_3,s_gamedata_004e6d25,s_ExplosionResourceTable_004e6d2e,&local_10); + pcVar1 = local_10; + if (iVar2 == 0) { + local_c = 0; + } + else { + puVar4 = (uint *)FUN_00402298(0x10); + if (puVar4 == (uint *)0x0) { + local_14 = (uint *)0x0; + } + else { + local_14 = FUN_00402460(puVar4,pcVar1); + } + local_14[3] = local_14[3] + 1; + local_c = FUN_00416f60(&local_14); + puVar4 = local_14 + 3; + *puVar4 = *puVar4 - 1; + if (*puVar4 == 0) { + FUN_004024d8((int *)local_14,3); + } + if (local_c == 0) { + FUN_004dbb24(&DAT_00524e20,s_resource_table_name____004e6d45,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,local_10,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004e6d5d,(char *)0x0); + FUN_0040385c(s_Explosion__CreateModelResource___004e6d5f, + s_d__tesla_bt_munga_EXPLODE_CPP_004e6da1,0x23b); + } + } + puVar5 = (undefined4 *)FUN_00406db4(param_1,param_2,0xf,1,0,&local_c,8,-1); + uVar3 = *puVar5; + } + return uVar3; +} + + + +/* @004304cc file=? name=FUN_004304cc */ + +bool __cdecl FUN_004304cc(int param_1,int param_2) + +{ + return param_2 == *(int *)(param_1 + 0x1cc); +} + + + +/* @004304ec file=? name=FUN_004304ec */ + +undefined4 * __cdecl FUN_004304ec(undefined4 *param_1,int *param_2) + +{ + int *piVar1; + undefined4 *puVar2; + int iVar3; + undefined4 local_10; + undefined1 local_c [4]; + int local_8; + + FUN_00415eb4(param_1,param_2); + *param_1 = &PTR_FUN_004e6eb4; + FUN_00424767(param_1 + 3,0,1); + (**(code **)(*param_2 + 0x1c))(param_2,&local_8,4); + iVar3 = 0; + if (0 < local_8) { + do { + piVar1 = (int *)(**(code **)(*param_2 + 0x1c))(param_2,local_c,4); + (**(code **)(*piVar1 + 0x1c))(piVar1,&local_10,4); + puVar2 = (undefined4 *)FUN_00402298(0x10); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_00424716(puVar2,&local_10); + } + (**(code **)(param_1[3] + 8))(param_1 + 3,puVar2,local_c); + iVar3 = iVar3 + 1; + } while (iVar3 < local_8); + } + return param_1; +} + + + +/* @0043059c file=? name=FUN_0043059c */ + +void __cdecl FUN_0043059c(int *param_1,byte param_2) + +{ + void *this; + int local_20 [7]; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e6eb4; + FUN_00424811(local_20,(int)(param_1 + 3)); + FUN_00417858(this,local_20,1); + FUN_0042484f(local_20,2); + FUN_0042478a(param_1 + 3,2); + FUN_00415ed8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00430608 file=? name=FUN_00430608 */ + +void __cdecl FUN_00430608(int *param_1,int param_2) + +{ + undefined4 *puVar1; + bool bVar2; + undefined3 extraout_var; + undefined3 extraout_var_00; + undefined4 *puVar3; + uint *puVar4; + int *piVar5; + int iVar6; + int iVar7; + uint local_4c [2]; + char *local_44; + uint local_3c [2]; + char *local_34; + uint *local_2c; + char *local_28; + uint *local_24; + char *local_20; + int *local_1c; + undefined4 local_18; + int local_14; + int *local_10; + uint *local_c; + int local_8; + + FUN_00414c58(param_1); + local_8 = 0; + for (puVar1 = *(undefined4 **)(param_2 + 4); puVar1 != (undefined4 *)0x0; + puVar1 = (undefined4 *)*puVar1) { + bVar2 = FUN_00403c20((int)puVar1,s_table_entry_004e6dbf); + if (CONCAT31(extraout_var,bVar2) != 0) { + local_8 = local_8 + 1; + } + } + (**(code **)(*param_1 + 0x20))(param_1,&local_8,4); + for (puVar1 = *(undefined4 **)(param_2 + 4); puVar1 != (undefined4 *)0x0; + puVar1 = (undefined4 *)*puVar1) { + bVar2 = FUN_00403c20((int)puVar1,s_table_entry_004e6dcb); + if (CONCAT31(extraout_var_00,bVar2) != 0) { + puVar3 = (undefined4 *)FUN_00402298(0x10); + if (puVar3 == (undefined4 *)0x0) { + local_c = (uint *)0x0; + } + else { + local_c = (uint *)FUN_004023f4(puVar3); + } + local_c[3] = local_c[3] + 1; + puVar3 = (undefined4 *)FUN_00402298(0x10); + if (puVar3 == (undefined4 *)0x0) { + local_10 = (int *)0x0; + } + else { + local_10 = (int *)FUN_004023f4(puVar3); + } + local_10[3] = local_10[3] + 1; + FUN_00402a98((int *)&local_1c,(int *)&local_c,(char *)puVar1[1]); + piVar5 = local_1c + 3; + *piVar5 = *piVar5 + -1; + if (*piVar5 == 0) { + FUN_004024d8(local_1c,3); + } + FUN_00402838(local_3c,local_c,0,(char *)0x0); + local_20 = local_34; + puVar4 = (uint *)FUN_00402298(0x10); + if (puVar4 == (uint *)0x0) { + local_24 = (uint *)0x0; + } + else { + local_24 = FUN_00402460(puVar4,local_20); + } + local_24[3] = local_24[3] + 1; + FUN_004024d8((int *)local_3c,2); + local_14 = FUN_004dd1e0((char *)local_24[2]); + puVar4 = local_24 + 3; + *puVar4 = *puVar4 - 1; + if (*puVar4 == 0) { + FUN_004024d8((int *)local_24,3); + } + iVar7 = -1; + iVar6 = 1; + FUN_00402838(local_4c,local_c,1,(char *)0x0); + local_28 = local_44; + puVar4 = (uint *)FUN_00402298(0x10); + if (puVar4 == (uint *)0x0) { + local_2c = (uint *)0x0; + } + else { + local_2c = FUN_00402460(puVar4,local_28); + } + local_2c[3] = local_2c[3] + 1; + FUN_004024d8((int *)local_4c,2); + puVar3 = (undefined4 *)FUN_00406ff8(param_1[6],(char *)local_2c[2],iVar6,iVar7); + puVar4 = local_2c + 3; + *puVar4 = *puVar4 - 1; + if (*puVar4 == 0) { + FUN_004024d8((int *)local_2c,3); + } + local_18 = *puVar3; + piVar5 = (int *)(**(code **)(*param_1 + 0x20))(param_1,&local_14,4); + (**(code **)(*piVar5 + 0x20))(piVar5,&local_18,4); + piVar5 = local_10 + 3; + *piVar5 = *piVar5 + -1; + if (*piVar5 == 0) { + FUN_004024d8(local_10,3); + } + puVar4 = local_c + 3; + *puVar4 = *puVar4 - 1; + if (*puVar4 == 0) { + FUN_004024d8((int *)local_c,3); + } + } + } + return; +} + + + +/* @00430838 file=? name=FUN_00430838 */ + +undefined4 FUN_00430838(void) + +{ + FUN_00415f1c(); + return 1; +} + + + +/* @0043084c file=? name=FUN_0043084c */ + +undefined4 __cdecl FUN_0043084c(int param_1) + +{ + int iVar1; + undefined4 uVar2; + + iVar1 = (**(code **)(*(int *)(param_1 + 0xc) + 0xc))(param_1 + 0xc,&stack0x00000008); + if (iVar1 == 0) { + uVar2 = 0xffffffff; + } + else { + uVar2 = *(undefined4 *)(iVar1 + 0xc); + } + return uVar2; +} + + + +/* @00430878 file=? name=FUN_00430878 */ + +void __cdecl FUN_00430878(int param_1,int param_2) + +{ + FUN_0042104c((int *)(param_2 + 0x184),(int *)(*(int *)(DAT_004efc94 + 0x6c) + 0x184)); + FUN_0043084c(param_1); + return; +} + + + +/* @0043094a file=? name=FUN_0043094a */ + +undefined4 * __cdecl FUN_0043094a(undefined4 *param_1,undefined4 param_2,undefined4 param_3) + +{ + FUN_004186ac(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004e6e98; + return param_1; +} + + + +/* @0043096d file=? name=FUN_0043096d */ + +void __cdecl FUN_0043096d(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e6e98; + FUN_004186dc(param_1,0); + if ((param_2 & 1) != 0) { + FUN_00430acc(param_1); + } + } + return; +} + + + +/* @00430999 file=? name=FUN_00430999 */ + +undefined4 __cdecl FUN_00430999(undefined4 param_1,int param_2,int param_3) + +{ + int iVar1; + undefined4 uVar2; + float *pfVar3; + float *pfVar4; + + pfVar3 = (float *)(param_2 + 0x1c); + pfVar4 = (float *)(param_3 + 0x1c); + iVar1 = FUN_004084fc(pfVar3,pfVar4,0.0001); + if (iVar1 == 0) { + if (*(float *)(param_2 + 0x24) * *(float *)(param_2 + 0x24) + + *(float *)(param_2 + 0x20) * *(float *)(param_2 + 0x20) + *pfVar3 * *pfVar3 <= + *(float *)(param_3 + 0x24) * *(float *)(param_3 + 0x24) + + *(float *)(param_3 + 0x20) * *(float *)(param_3 + 0x20) + *pfVar4 * *pfVar4) { + uVar2 = 0xffffffff; + } + else { + uVar2 = 1; + } + } + else { + uVar2 = 0; + } + return uVar2; +} + + + +/* @00430a0c file=? name=FUN_00430a0c */ + +undefined4 __cdecl FUN_00430a0c(undefined4 param_1,float *param_2,int param_3) + +{ + int iVar1; + undefined4 uVar2; + float *pfVar3; + + pfVar3 = (float *)(param_3 + 0x1c); + iVar1 = FUN_004084fc(param_2,pfVar3,0.0001); + if (iVar1 == 0) { + if (param_2[2] * param_2[2] + param_2[1] * param_2[1] + *param_2 * *param_2 <= + *(float *)(param_3 + 0x24) * *(float *)(param_3 + 0x24) + + *(float *)(param_3 + 0x20) * *(float *)(param_3 + 0x20) + *pfVar3 * *pfVar3) { + uVar2 = 0xffffffff; + } + else { + uVar2 = 1; + } + } + else { + uVar2 = 0; + } + return uVar2; +} + + + +/* @00430a7c file=? name=FUN_00430a7c */ + +void FUN_00430a7c(void) + +{ + int iVar1; + undefined4 *puVar2; + + iVar1 = DAT_004e6e38; + DAT_004e6e38 = DAT_004e6e38 + 1; + puVar2 = DAT_004e6e34; + if ((iVar1 == 0) && (puVar2 = (undefined4 *)FUN_00402298(0x28), puVar2 != (undefined4 *)0x0)) { + FUN_00402b98(puVar2,0x18,100,100,s_VChainOf_004e6de9); + } + DAT_004e6e34 = puVar2; + FUN_00402f74((int)DAT_004e6e34); + return; +} + + + +/* @00430acc file=? name=FUN_00430acc */ + +void __cdecl FUN_00430acc(undefined4 *param_1) + +{ + FUN_00402f98((int)DAT_004e6e34,param_1); + DAT_004e6e38 = DAT_004e6e38 + -1; + if (DAT_004e6e38 == 0) { + if (DAT_004e6e34 != (int *)0x0) { + FUN_00402c28(DAT_004e6e34,0); + FUN_004022d0(DAT_004e6e34); + } + DAT_004e6e34 = (int *)0x0; + } + return; +} + + + +/* @00430b17 file=? name=FUN_00430b17 */ + +undefined4 * __cdecl FUN_00430b17(undefined4 *param_1,int param_2) + +{ + FUN_004188dc(param_1,param_2); + *param_1 = &PTR_FUN_004e6e3c; + return param_1; +} + + + +/* @00430b36 file=? name=FUN_00430b36 */ + +undefined4 * __cdecl FUN_00430b36(undefined4 *param_1,int param_2) + +{ + FUN_004188dc(param_1,param_2); + *param_1 = &PTR_FUN_004e6e3c; + return param_1; +} + + + +/* @00430b55 file=? name=FUN_00430b55 */ + +undefined4 * __cdecl FUN_00430b55(undefined4 *param_1,int param_2) + +{ + FUN_00418904(param_1,param_2); + *param_1 = &PTR_FUN_004e6e3c; + return param_1; +} + + + +/* @00430b74 file=? name=FUN_00430b74 */ + +void __cdecl FUN_00430b74(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e6e3c; + FUN_00418930(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00430ba0 file=? name=FUN_00430ba0 */ + +undefined4 * __cdecl FUN_00430ba0(undefined4 param_1,int param_2,undefined4 *param_3) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00430c33(); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_00430bd0(puVar1,param_1,param_2,param_3); + } + return puVar1; +} + + + +/* @00430bd0 file=? name=FUN_00430bd0 */ + +undefined4 * __cdecl +FUN_00430bd0(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 *param_4) + +{ + FUN_004185bc(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004e6ef4; + FUN_00408440(param_1 + 7,param_4); + return param_1; +} + + + +/* @00430c07 file=? name=FUN_00430c07 */ + +void __cdecl FUN_00430c07(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e6ef4; + FUN_004185ec(param_1,0); + if ((param_2 & 1) != 0) { + FUN_00430c83(param_1); + } + } + return; +} + + + +/* @00430c33 file=? name=FUN_00430c33 */ + +void FUN_00430c33(void) + +{ + int iVar1; + undefined4 *puVar2; + + iVar1 = DAT_004e6ef0; + DAT_004e6ef0 = DAT_004e6ef0 + 1; + puVar2 = DAT_004e6eec; + if ((iVar1 == 0) && (puVar2 = (undefined4 *)FUN_00402298(0x28), puVar2 != (undefined4 *)0x0)) { + FUN_00402b98(puVar2,0x28,100,100,s_VChainLinkOf_004e6e0a); + } + DAT_004e6eec = puVar2; + FUN_00402f74((int)DAT_004e6eec); + return; +} + + + +/* @00430c83 file=? name=FUN_00430c83 */ + +void __cdecl FUN_00430c83(undefined4 *param_1) + +{ + FUN_00402f98((int)DAT_004e6eec,param_1); + DAT_004e6ef0 = DAT_004e6ef0 + -1; + if (DAT_004e6ef0 == 0) { + if (DAT_004e6eec != (int *)0x0) { + FUN_00402c28(DAT_004e6eec,0); + FUN_004022d0(DAT_004e6eec); + } + DAT_004e6eec = (int *)0x0; + } + return; +} + + + +/* @00430cd0 file=? name=FUN_00430cd0 */ + +undefined4 * __cdecl FUN_00430cd0(undefined4 *param_1,int param_2,undefined4 param_3) + +{ + int iVar1; + int iVar2; + undefined4 uVar3; + undefined4 *puVar4; + undefined4 local_4c [7]; + undefined4 local_30 [8]; + uint local_10; + int *local_c; + undefined4 local_8; + + FUN_0041ff38(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004e7004; + param_1[0x71] = *(undefined4 *)(param_2 + 0x4c); + param_1[10] = param_1[10] | 0x10; + iVar1 = FUN_00407064(*(int *)(DAT_004efc94 + 0x68),param_1[0x6f],9); + param_1[0x72] = 0; + if (iVar1 != 0) { + iVar2 = *(int *)(iVar1 + 4); + *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1; + if (iVar2 == 0) { + FUN_00406cd0(iVar1); + } + local_8 = param_1[0x65]; + iVar2 = FUN_00433ed4(*(int *)(DAT_004efc94 + 0x30) + 0x14); + local_c = *(int **)(iVar2 + 0x30); + puVar4 = *(undefined4 **)(iVar1 + 0x3c); + local_10 = *(uint *)(iVar1 + 0x40) / 0x3c; + while (local_10 != 0) { + local_10 = local_10 - 1; + FUN_0040f33c(local_4c,puVar4,(float *)(param_1 + 0x40)); + uVar3 = FUN_0040eed8((int)local_4c,param_1,param_1[0x72]); + param_1[0x72] = uVar3; + FUN_0040ea6c(local_c,param_1[0x72],local_30); + puVar4 = puVar4 + 0xf; + } + *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + -1; + } + return param_1; +} + + + +/* @00430ddc file=? name=FUN_00430ddc */ + +undefined4 __cdecl FUN_00430ddc(undefined4 *param_1) + +{ + int iVar1; + undefined4 uVar2; + char *pcVar3; + float10 fVar4; + + iVar1 = FUN_00420234(param_1); + if (iVar1 == 0) { + uVar2 = 0; + } + else { + *param_1 = 0x50; + param_1[7] = 0x29; + param_1[0xb] = 0x20c; + pcVar3 = FUN_004d4d1c((char *)0x0,&DAT_004e6fab); + if (pcVar3 == (char *)0x0) { + FUN_004dbb24((int *)&DAT_00524e68,s_Scale_missing__004e6fad,(char *)0x0); + uVar2 = 0; + } + else { + fVar4 = (float10)FUN_004dd1cc(pcVar3); + uVar2 = 1; + param_1[0x13] = (float)fVar4; + } + } + return uVar2; +} + + + +/* @00430e54 file=? name=FUN_00430e54 */ + +undefined4 * __cdecl FUN_00430e54(int param_1) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00402298(0x1cc); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_00430cd0(puVar1,param_1,&DAT_004e6f28); + } + return puVar1; +} + + + +/* @00430e84 file=? name=FUN_00430e84 */ + +void __cdecl FUN_00430e84(int *param_1,byte param_2) + +{ + int iVar1; + int iVar2; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e7004; + iVar1 = param_1[0x72]; + while (iVar2 = iVar1, iVar2 != 0) { + iVar1 = *(int *)(iVar2 + 0x28); + if (iVar2 != 0) { + (*(code *)**(undefined4 **)(iVar2 + 0x18))(iVar2,3); + } + } + FUN_00420508(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00430ed4 file=? name=FUN_00430ed4 */ + +void __cdecl FUN_00430ed4(int param_1) + +{ + FUN_0041a1a4(**(int **)(param_1 + 0xc),0x4e6ef8); + return; +} + + + +/* @00430ef0 file=? name=FUN_00430ef0 */ + +undefined4 * __cdecl FUN_00430ef0(undefined4 *param_1,int param_2,undefined4 param_3) + +{ + int iVar1; + int iVar2; + undefined4 uVar3; + undefined4 *puVar4; + undefined4 local_4c [7]; + undefined4 local_30 [8]; + uint local_10; + int *local_c; + undefined4 local_8; + + FUN_0041ff38(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004e6fd0; + param_1[10] = param_1[10] | 0x10; + iVar1 = FUN_00407064(*(int *)(DAT_004efc94 + 0x68),param_1[0x6f],9); + param_1[0x71] = 0; + if (iVar1 != 0) { + iVar2 = *(int *)(iVar1 + 4); + *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1; + if (iVar2 == 0) { + FUN_00406cd0(iVar1); + } + local_8 = param_1[0x65]; + iVar2 = FUN_00433ed4(*(int *)(DAT_004efc94 + 0x30) + 0x14); + local_c = *(int **)(iVar2 + 0x30); + puVar4 = *(undefined4 **)(iVar1 + 0x3c); + local_10 = *(uint *)(iVar1 + 0x40) / 0x3c; + while (local_10 != 0) { + local_10 = local_10 - 1; + FUN_0040f33c(local_4c,puVar4,(float *)(param_1 + 0x40)); + uVar3 = FUN_0040eed8((int)local_4c,param_1,param_1[0x71]); + param_1[0x71] = uVar3; + FUN_0040ea6c(local_c,param_1[0x71],local_30); + puVar4 = puVar4 + 0xf; + } + *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + -1; + } + return param_1; +} + + + +/* @00430ff0 file=? name=FUN_00430ff0 */ + +undefined4 __cdecl FUN_00430ff0(undefined4 *param_1) + +{ + int iVar1; + + iVar1 = FUN_00420234(param_1); + if (iVar1 == 0) { + return 0; + } + param_1[7] = 0x2a; + param_1[0xb] = 0x20c; + return 1; +} + + + +/* @00431028 file=? name=FUN_00431028 */ + +undefined4 * __cdecl FUN_00431028(int param_1) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00402298(0x1c8); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_00430ef0(puVar1,param_1,&DAT_004e6f84); + } + return puVar1; +} + + + +/* @00431058 file=? name=FUN_00431058 */ + +void __cdecl FUN_00431058(int *param_1,byte param_2) + +{ + int iVar1; + int iVar2; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e6fd0; + iVar1 = param_1[0x71]; + while (iVar2 = iVar1, iVar2 != 0) { + iVar1 = *(int *)(iVar2 + 0x28); + if (iVar2 != 0) { + (*(code *)**(undefined4 **)(iVar2 + 0x18))(iVar2,3); + } + } + FUN_00420508(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004310a8 file=? name=FUN_004310a8 */ + +void __cdecl FUN_004310a8(int param_1) + +{ + FUN_0041a1a4(**(int **)(param_1 + 0xc),0x4e6f54); + return; +} + + + +/* @00431200 file=? name=FUN_00431200 */ + +void __cdecl FUN_00431200(int param_1,int param_2) + +{ + int iVar1; + int *piVar2; + uint local_a4 [5]; + undefined4 local_90; + undefined4 local_8c; + undefined4 local_88; + undefined4 local_84; + undefined4 local_80; + undefined4 local_7c [2]; + undefined4 local_74; + undefined4 local_70; + undefined4 local_6c; + undefined4 local_68 [2]; + undefined4 local_60; + undefined4 local_5c; + undefined4 local_58; + undefined4 local_54; + undefined4 local_50; + undefined4 local_4c; + undefined4 local_48; + undefined4 local_44; + undefined4 local_40; + undefined4 local_3c [2]; + undefined4 local_34 [2]; + undefined4 local_2c; + undefined4 local_28; + undefined4 local_24; + undefined4 local_20; + undefined4 local_1c; + undefined4 local_18; + undefined4 local_14; + undefined4 local_10; + int local_c; + undefined4 local_8; + + if (*(int *)(param_2 + 0x24) == -1) { + *(undefined4 *)(param_2 + 0x24) = 0; + } + if (*(int *)(param_1 + 0x40) == 0) { + if ((*(uint *)(param_1 + 0x28) & 0xc) != 4) { + *(ushort *)(param_1 + 0x18) = *(ushort *)(param_1 + 0x18) | 3; + *(uint *)(param_1 + 0x28) = *(uint *)(param_1 + 0x28) & 0xfffffffd; + } + FUN_0041ff08(param_1,param_2); + for (iVar1 = 0; iVar1 < *(int *)(param_1 + 0x11c); iVar1 = iVar1 + 1) { + if (*(int *)(*(int *)(*(int *)(param_1 + 0x120) + iVar1 * 4) + 0x24) == 1) { + local_2c = *(undefined4 *)(param_1 + 0x100); + local_28 = *(undefined4 *)(param_1 + 0x104); + local_24 = *(undefined4 *)(param_1 + 0x108); + local_20 = *(undefined4 *)(param_1 + 0x10c); + local_1c = *(undefined4 *)(param_1 + 0x110); + local_18 = *(undefined4 *)(param_1 + 0x114); + local_14 = *(undefined4 *)(param_1 + 0x118); + if ((*(int *)(param_2 + 0x2c) == 0) && (*(int *)(param_1 + 0x1cc) != -1)) { + local_8 = *(undefined4 *)(param_1 + 0x1cc); + } + else { + local_8 = *(undefined4 *)(param_1 + 0x1c8); + } + local_88 = 0x5c; + local_84 = 3; + local_80 = 1; + FUN_00420ea4(local_7c,(undefined4 *)&DAT_00522524); + local_74 = 0; + local_70 = 0; + local_6c = 0x31; + FUN_00420ea4(local_68,(undefined4 *)&DAT_00522524); + local_60 = local_8; + local_5c = 0x100; + local_58 = local_2c; + local_54 = local_28; + local_50 = local_24; + local_4c = local_20; + local_48 = local_1c; + local_44 = local_18; + local_40 = local_14; + FUN_00420ea4(local_3c,(undefined4 *)(param_1 + 0x184)); + FUN_00420ea4(local_34,(undefined4 *)(param_1 + 0x184)); + FUN_004302ec((int)&local_88); + local_a4[0] = 0x1c; + local_a4[1] = 0x15; + local_a4[2] = 1; + FUN_00420ea4(local_a4 + 3,(undefined4 *)&DAT_00522524); + local_90 = 0; + local_8c = 0; + piVar2 = (int *)FUN_00414b60(); + local_c = *piVar2; + local_10 = *(undefined4 *)(param_1 + 0x1d4); + iVar1 = FUN_004dcd94(); + local_c = local_c + iVar1; + FUN_0041acbc(*(int *)(DAT_004efc94 + 0x60),3,param_1,local_a4,local_c); + FUN_0041bbd8(param_1 + 0x2c,2); + FUN_00431428(param_1); + return; + } + } + } + return; +} + + + +/* @00431428 file=? name=FUN_00431428 */ + +void __cdecl FUN_00431428(int param_1) + +{ + int *piVar1; + int iVar2; + int iVar3; + + iVar3 = FUN_00433ed4(*(int *)(DAT_004efc94 + 0x30) + 0x14); + piVar1 = *(int **)(iVar3 + 0x30); + iVar3 = *(int *)(param_1 + 0x1c4); + while (iVar2 = iVar3, iVar2 != 0) { + iVar3 = *(int *)(iVar2 + 0x28); + if ((*(uint *)(param_1 + 0x28) & 0x4000) == 0) { + *(float *)(iVar2 + 8) = *(float *)(param_1 + 0x1d0) + *(float *)(iVar2 + 8); + *(float *)(iVar2 + 0xc) = *(float *)(param_1 + 0x1d0) + *(float *)(iVar2 + 0xc); + } + else { + FUN_0040e184(*piVar1,iVar2,(undefined4 *)iVar2); + if (iVar2 != 0) { + (*(code *)**(undefined4 **)(iVar2 + 0x18))(iVar2,3); + } + } + } + *(undefined4 *)(param_1 + 0x1c4) = 0; + return; +} + + + +/* @004314bc file=? name=FUN_004314bc */ + +undefined4 * __cdecl FUN_004314bc(undefined4 *param_1,int param_2,undefined4 param_3) + +{ + int iVar1; + undefined4 *puVar2; + int iVar3; + int local_20 [6]; + int local_8; + + FUN_00430ef0(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004e7418; + param_1[0x76] = s_Defualt_004e7155._0_4_; + param_1[0x77] = s_Defualt_004e7155._4_4_; + iVar1 = FUN_00407064(*(int *)(DAT_004efc94 + 0x68),param_1[0x6f],0xf); + iVar3 = *(int *)(iVar1 + 4); + *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1; + if (iVar3 == 0) { + FUN_00406cd0(iVar1); + } + puVar2 = *(undefined4 **)(iVar1 + 0x3c); + if (puVar2[4] == 0) { + param_1[0x74] = 0; + param_1[10] = param_1[10] | 0x4000; + } + else { + param_1[0x74] = *puVar2; + } + param_1[0x75] = puVar2[1]; + if (puVar2[5] != 0) { + param_1[10] = param_1[10] | 0x8000; + } + param_1[0x72] = puVar2[2]; + param_1[0x73] = puVar2[3]; + *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + -1; + local_8 = FUN_00407064(*(int *)(DAT_004efc94 + 0x68),param_1[0x6f],0x14); + iVar3 = *(int *)(local_8 + 4); + *(int *)(local_8 + 4) = *(int *)(local_8 + 4) + 1; + if (iVar3 == 0) { + FUN_00406cd0(local_8); + } + FUN_004032dc(local_20,*(undefined4 *)(local_8 + 0x3c),*(undefined4 *)(local_8 + 0x40),0); + (**(code **)(local_20[0] + 0x14))(local_20,4); + for (iVar3 = 0; iVar3 < (int)param_1[0x47]; iVar3 = iVar3 + 1) { + puVar2 = (undefined4 *)FUN_00402298(0x160); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_0041df5c(puVar2,param_1,iVar3,local_20); + } + *(undefined4 **)(param_1[0x48] + iVar3 * 4) = puVar2; + } + param_1[10] = param_1[10] | 0x10; + *(int *)(local_8 + 4) = *(int *)(local_8 + 4) + -1; + FUN_00403310(local_20,2); + return param_1; +} + + + +/* @0043162c file=? name=FUN_0043162c */ + +void __cdecl FUN_0043162c(int param_1,undefined4 *param_2) + +{ + FUN_0041f76c(param_1,param_2); + if ((*(int *)(param_1 + 0x40) != *(int *)(param_1 + 0x3c)) && (*(int *)(param_1 + 0x40) == 1)) { + FUN_00431428(param_1); + } + return; +} + + + +/* @00431658 file=? name=FUN_00431658 */ + +undefined4 __cdecl FUN_00431658(undefined4 *param_1) + +{ + int iVar1; + + iVar1 = FUN_00430ff0(param_1); + if (iVar1 == 0) { + return 0; + } + *param_1 = 0x4c; + param_1[7] = 0x5e; + param_1[0xb] = 0xb00; + return 1; +} + + + +/* @00431698 file=? name=FUN_00431698 */ + +undefined4 * __cdecl FUN_00431698(int param_1) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00402298(0x218); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_004314bc(puVar1,param_1,&DAT_004e7068); + } + return puVar1; +} + + + +/* @004316c8 file=? name=FUN_004316c8 */ + +void __cdecl FUN_004316c8(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e7418; + FUN_00431058(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004316f4 file=? name=FUN_004316f4 */ + +undefined4 __cdecl +FUN_004316f4(int param_1,char *param_2,int param_3,undefined4 param_4,float *param_5) + +{ + char *pcVar1; + float *pfVar2; + int iVar3; + undefined4 uVar4; + char *pcVar5; + undefined4 *puVar6; + char *pcVar7; + float *pfVar8; + bool bVar9; + char *local_c; + char *local_8; + + pfVar2 = param_5; + if (param_5 == (float *)0x0) { + pfVar2 = (float *)FUN_00402298(0x18); + } + iVar3 = FUN_00404118(param_3,s_gamedata_004e715d,s_DestroyedYTranslation_004e7166,pfVar2); + if (iVar3 == 0) { + pfVar2[4] = 0.0; + *pfVar2 = 0.0; + } + else { + pfVar2[4] = 1.4013e-45; + } + iVar3 = FUN_00404190(param_3,s_gamedata_004e717c,s_StoppingCollisionVolume_004e7185,pfVar2 + 5); + if (iVar3 == 0) { + pfVar2[5] = 0.0; + } + iVar3 = FUN_00404118(param_3,s_gamedata_004e719d,s_TimeDelay_004e71a6,pfVar2 + 1); + if (iVar3 == 0) { + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_TimeDelay_is_missing_004e71b0,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + FUN_004036a0(1); + } + local_8 = s_Unspecified_004e71c7; + iVar3 = FUN_00404088(param_3,s_gamedata_004e71d3,s_ExplosionModelFile_004e71dc,&local_8); + if (iVar3 == 0) { + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_missing_ExplosionModelFile__004e71ef,(char *)0x0); + uVar4 = 0; + } + else { + pfVar8 = (float *)0x0; + pcVar7 = s_Unspecified_004e720d; + pcVar5 = local_8; + do { + bVar9 = *pcVar5 == *pcVar7; + if (!bVar9) break; + if (*pcVar5 == '\0') goto LAB_0043183e; + pcVar1 = pcVar5 + 1; + bVar9 = *pcVar1 == pcVar7[1]; + if (!bVar9) break; + pcVar5 = pcVar5 + 2; + pcVar7 = pcVar7 + 2; + bVar9 = *pcVar1 == '\0'; + } while (!bVar9); + if (!bVar9) { + pfVar8 = (float *)FUN_00406ff8(param_1,local_8,1,-1); + } +LAB_0043183e: + pcVar5 = local_8; + if (pfVar8 == (float *)0x0) { + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_cannot_find_004e7219,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,pcVar5,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_in_resource_file__004e7227,(char *)0x0); + uVar4 = 0; + } + else { + if (pfVar8 != (float *)0x0) { + pfVar2[2] = *pfVar8; + } + local_c = s_Unspecified_004e723b; + FUN_00404088(param_3,s_gamedata_004e7247,s_CrunchExplosionModelFile_004e7250,&local_c); + pfVar2[3] = -NAN; + pcVar7 = s_Unspecified_004e7269; + pcVar5 = local_c; + do { + if (*pcVar5 != *pcVar7) goto LAB_004318eb; + bVar9 = true; + if (*pcVar5 == '\0') break; + pcVar1 = pcVar5 + 1; + if (*pcVar1 != pcVar7[1]) goto LAB_004318eb; + pcVar5 = pcVar5 + 2; + pcVar7 = pcVar7 + 2; + bVar9 = *pcVar1 == '\0'; + } while (!bVar9); + if (!bVar9) { +LAB_004318eb: + pfVar8 = (float *)FUN_00406ff8(param_1,local_c,1,-1); + pcVar5 = local_c; + if (pfVar8 == (float *)0x0) { + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_cannot_find_004e7275,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,pcVar5,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_in_resource_file__004e7283,(char *)0x0); + return 0; + } + pfVar2[3] = *pfVar8; + } + if (param_5 == (float *)0x0) { + puVar6 = (undefined4 *)FUN_00406db4(param_1,param_2,0xf,1,0,pfVar2,0x18,-1); + FUN_004022d0((int *)pfVar2); + uVar4 = *puVar6; + } + else { + uVar4 = 0; + } + } + } + return uVar4; +} + + + +/* @00431998 file=? name=FUN_00431998 */ + +undefined4 FUN_00431998(int param_1,char *param_2,int param_3,undefined4 *param_4) + +{ + int *piVar1; + int iVar2; + undefined4 uVar3; + char *pcVar4; + uint *puVar5; + int *piVar6; + undefined4 *puVar7; + int aiStack_38 [6]; + int *piStack_20; + undefined4 *puStack_1c; + int *piStack_18; + int *piStack_14; + int iStack_10; + uint *puStack_c; + char *pcStack_8; + + iVar2 = FUN_00404088(param_3,s_gamedata_004e7297,s_DamageZones_004e72a0,&pcStack_8); + if (iVar2 == 0) { + FUN_004dbb24((int *)&DAT_00524e68,param_2,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_is_missing__dmg_file_specificati_004e72ac,(char *)0x0); + uVar3 = 0xffffffff; + } + else { + pcVar4 = FUN_004064fc((char *)*param_4,pcStack_8); + puVar5 = (uint *)FUN_00402298(0x10); + if (puVar5 == (uint *)0x0) { + puStack_c = (uint *)0x0; + } + else { + puStack_c = FUN_00402460(puVar5,pcVar4); + } + puStack_c[3] = puStack_c[3] + 1; + piVar6 = (int *)FUN_00402298(0x20); + if (piVar6 == (int *)0x0) { + piVar6 = (int *)0x0; + } + else { + piVar6 = FUN_00403e84(piVar6,(char *)puStack_c[2],1); + } + if ((*(byte *)(piVar6 + 7) & 2) == 0) { + iStack_10 = piVar6[3]; + } + else { + iStack_10 = piVar6[4]; + } + if (iStack_10 == 0) { + FUN_004dbb24((int *)&DAT_00524e68,(char *)puStack_c[2],(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_is_empty_or_missing__004e72d2,(char *)0x0); + FUN_00403ecc(piVar6,3); + uVar3 = 0xffffffff; + puVar5 = puStack_c + 3; + *puVar5 = *puVar5 - 1; + if (*puVar5 == 0) { + FUN_004024d8((int *)puStack_c,3); + } + } + else { + FUN_0040328c(aiStack_38,0); + (**(code **)(aiStack_38[0] + 0x20))(aiStack_38,&iStack_10,4); + piStack_14 = FUN_0040485c((int)piVar6,(char *)0x0); + puVar7 = (undefined4 *)piStack_14[1]; + puStack_1c = (undefined4 *)FUN_00402298(0x10); + if (puStack_1c == (undefined4 *)0x0) { + piStack_18 = (int *)0x0; + } + else { + piStack_18 = (int *)FUN_004023f4(puStack_1c); + } + piStack_18[3] = piStack_18[3] + 1; + for (; puVar7 != (undefined4 *)0x0; puVar7 = (undefined4 *)*puVar7) { + FUN_00402a98((int *)&piStack_20,(int *)&piStack_18,(char *)(puVar7 + 2)); + piVar1 = piStack_20 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(piStack_20,3); + } + piStack_18[3] = piStack_18[3] + 1; + FUN_0041e590(param_3,param_2,0,piStack_18,aiStack_38,(int)piVar6,(int)param_4); + } + puVar7 = (undefined4 *)FUN_00406f3c(param_1,param_2,0x14,1,0,aiStack_38,-1); + FUN_00403ecc(piVar6,3); + if (piStack_14 != (int *)0x0) { + (**(code **)*piStack_14)(piStack_14,3); + } + uVar3 = *puVar7; + piVar6 = piStack_18 + 3; + *piVar6 = *piVar6 + -1; + if (*piVar6 == 0) { + FUN_004024d8(piStack_18,3); + } + FUN_00403310(aiStack_38,2); + puVar5 = puStack_c + 3; + *puVar5 = *puVar5 - 1; + if (*puVar5 == 0) { + FUN_004024d8((int *)puStack_c,3); + } + } + } + return uVar3; +} + + + +/* @0043199e file=? name=FUN_0043199e */ + +undefined4 FUN_0043199e(void) + +{ + char *pcVar1; + int *piVar2; + int iVar3; + undefined4 uVar4; + char *pcVar5; + uint *puVar6; + int *piVar7; + int *piVar8; + undefined4 *puVar9; + int unaff_EBP; + + pcVar1 = *(char **)(unaff_EBP + 0xc); + iVar3 = FUN_00404088(*(int *)(unaff_EBP + 0x10),s_gamedata_004e7297,s_DamageZones_004e72a0, + (undefined4 *)(unaff_EBP + -4)); + if (iVar3 == 0) { + FUN_004dbb24((int *)&DAT_00524e68,pcVar1,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_is_missing__dmg_file_specificati_004e72ac,(char *)0x0); + uVar4 = 0xffffffff; + } + else { + pcVar5 = FUN_004064fc((char *)**(undefined4 **)(unaff_EBP + 0x14),*(char **)(unaff_EBP + -4)); + puVar6 = (uint *)FUN_00402298(0x10); + if (puVar6 == (uint *)0x0) { + puVar6 = (uint *)0x0; + } + else { + puVar6 = FUN_00402460(puVar6,pcVar5); + } + *(uint **)(unaff_EBP + -8) = puVar6; + piVar7 = (int *)(*(int *)(unaff_EBP + -8) + 0xc); + *piVar7 = *piVar7 + 1; + piVar7 = (int *)FUN_00402298(0x20); + if (piVar7 == (int *)0x0) { + piVar7 = (int *)0x0; + } + else { + piVar7 = FUN_00403e84(piVar7,*(char **)(*(int *)(unaff_EBP + -8) + 8),1); + } + if ((*(byte *)(piVar7 + 7) & 2) == 0) { + iVar3 = piVar7[3]; + } + else { + iVar3 = piVar7[4]; + } + *(int *)(unaff_EBP + -0xc) = iVar3; + if (*(int *)(unaff_EBP + -0xc) == 0) { + FUN_004dbb24((int *)&DAT_00524e68,*(char **)(*(int *)(unaff_EBP + -8) + 8),(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_is_empty_or_missing__004e72d2,(char *)0x0); + FUN_00403ecc(piVar7,3); + uVar4 = 0xffffffff; + piVar8 = *(int **)(unaff_EBP + -8); + piVar7 = piVar8 + 3; + *piVar7 = *piVar7 + -1; + if (*piVar7 == 0) { + FUN_004024d8(piVar8,3); + } + } + else { + FUN_0040328c((undefined4 *)(unaff_EBP + -0x34),0); + (**(code **)(*(int *)(unaff_EBP + -0x34) + 0x20))(unaff_EBP + -0x34,unaff_EBP + -0xc,4); + piVar8 = FUN_0040485c((int)piVar7,(char *)0x0); + *(int **)(unaff_EBP + -0x10) = piVar8; + puVar9 = *(undefined4 **)(*(int *)(unaff_EBP + -0x10) + 4); + iVar3 = FUN_00402298(0x10); + *(int *)(unaff_EBP + -0x18) = iVar3; + if (iVar3 == 0) { + uVar4 = *(undefined4 *)(unaff_EBP + -0x18); + } + else { + uVar4 = FUN_004023f4(*(undefined4 **)(unaff_EBP + -0x18)); + } + *(undefined4 *)(unaff_EBP + -0x14) = uVar4; + piVar8 = (int *)(*(int *)(unaff_EBP + -0x14) + 0xc); + *piVar8 = *piVar8 + 1; + for (; puVar9 != (undefined4 *)0x0; puVar9 = (undefined4 *)*puVar9) { + FUN_00402a98((int *)(unaff_EBP + -0x1c),(int *)(unaff_EBP + -0x14),(char *)(puVar9 + 2)); + piVar2 = *(int **)(unaff_EBP + -0x1c); + piVar8 = piVar2 + 3; + *piVar8 = *piVar8 + -1; + if (*piVar8 == 0) { + FUN_004024d8(piVar2,3); + } + iVar3 = *(int *)(unaff_EBP + 0x14); + piVar2 = *(int **)(unaff_EBP + -0x14); + piVar8 = piVar2 + 3; + *piVar8 = *piVar8 + 1; + FUN_0041e590(*(int *)(unaff_EBP + 0x10),pcVar1,0,piVar2,(int *)(unaff_EBP + -0x34), + (int)piVar7,iVar3); + } + puVar9 = (undefined4 *) + FUN_00406f3c(*(int *)(unaff_EBP + 8),pcVar1,0x14,1,0,(int *)(unaff_EBP + -0x34),-1); + FUN_00403ecc(piVar7,3); + if (*(int *)(unaff_EBP + -0x10) != 0) { + (**(code **)**(undefined4 **)(unaff_EBP + -0x10))(*(undefined4 **)(unaff_EBP + -0x10),3); + } + uVar4 = *puVar9; + piVar8 = *(int **)(unaff_EBP + -0x14); + piVar7 = piVar8 + 3; + *piVar7 = *piVar7 + -1; + if (*piVar7 == 0) { + FUN_004024d8(piVar8,3); + } + FUN_00403310((int *)(unaff_EBP + -0x34),2); + piVar8 = *(int **)(unaff_EBP + -8); + piVar7 = piVar8 + 3; + *piVar7 = *piVar7 + -1; + if (*piVar7 == 0) { + FUN_004024d8(piVar8,3); + } + } + } + return uVar4; +} + + + +/* @00431be4 file=? name=FUN_00431be4 */ + +void __cdecl FUN_00431be4(int param_1,int param_2) + +{ + char *pcVar1; + undefined4 *puVar2; + char *pcVar3; + int iVar4; + char *pcVar5; + bool bVar6; + int local_10 [3]; + + if (*(int *)(param_1 + 0x220) == 0) { + puVar2 = FUN_004212b0(*(int *)(DAT_004efc94 + 0x24),s_Teams_004e72fd); + if (puVar2 != (undefined4 *)0x0) { + FUN_00421414(local_10,(int)(puVar2 + 4)); +LAB_00431c58: + do { + iVar4 = (**(code **)(local_10[0] + 0x28))(local_10); + if (iVar4 == 0) goto LAB_00431c69; + pcVar3 = (char *)(iVar4 + 0x1c4); + pcVar5 = (char *)(param_1 + 0x224); + do { + if (*pcVar3 != *pcVar5) goto LAB_00431c58; + bVar6 = true; + if (*pcVar3 == '\0') break; + pcVar1 = pcVar3 + 1; + if (*pcVar1 != pcVar5[1]) goto LAB_00431c58; + pcVar3 = pcVar3 + 2; + pcVar5 = pcVar5 + 2; + bVar6 = *pcVar1 == '\0'; + } while (!bVar6); + } while (!bVar6); + *(int *)(param_1 + 0x220) = iVar4; +LAB_00431c69: + FUN_00421452(local_10,2); + } + } + if (*(int *)(param_1 + 0x220) == 0) { + FUN_004dbb24(&DAT_00524e20,s_TEAM_____004e7303,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,(char *)(param_1 + 0x224),(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s___was_never_found__004e730c,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + FUN_004dee24(0xffffffff); + } + if (*(int *)(param_1 + 0x40) != 1) { + FUN_00431200(param_1,param_2); + } + return; +} + + + +/* @00431cf0 file=? name=FUN_00431cf0 */ + +void __cdecl FUN_00431cf0(int param_1) + +{ + FUN_0041a1a4(**(int **)(param_1 + 0xc),0x4e7038); + return; +} + + + +/* @00431d0c file=? name=FUN_00431d0c */ + +undefined4 * __cdecl FUN_00431d0c(undefined4 *param_1,int param_2,undefined4 param_3) + +{ + char *pcVar1; + int *piVar2; + char cVar3; + int iVar4; + undefined4 *puVar5; + char *pcVar6; + int iVar7; + uint *puVar8; + undefined4 uVar9; + int iVar10; + uint uVar11; + uint uVar12; + char *pcVar13; + bool bVar14; + uint **ppuVar15; + int local_70 [5]; + int local_5c [5]; + int local_48 [3]; + int *local_3c; + int *local_38; + int *local_34; + int *local_30; + int *local_2c; + int *local_28; + uint *local_24; + uint *local_20; + char *local_1c; + uint *local_18; + uint *local_14; + uint *local_10; + char *local_c; + int local_8; + + FUN_004314bc(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004e73e4; + param_1[0x86] = 0; + param_1[0x88] = 0; + local_8 = *(int *)(DAT_004efc94 + 0x24); + puVar5 = FUN_004212b0(local_8,s_Teams_004e7320); + if (puVar5 != (undefined4 *)0x0) { + FUN_00421414(local_48,(int)(puVar5 + 4)); +LAB_00431da3: + do { + iVar7 = (**(code **)(local_48[0] + 0x28))(local_48); + if (iVar7 == 0) goto LAB_00431db4; + pcVar6 = (char *)(iVar7 + 0x1c4); + pcVar13 = (char *)(param_2 + 0xd0); + do { + if (*pcVar6 != *pcVar13) goto LAB_00431da3; + bVar14 = true; + if (*pcVar6 == '\0') break; + pcVar1 = pcVar6 + 1; + if (*pcVar1 != pcVar13[1]) goto LAB_00431da3; + pcVar6 = pcVar6 + 2; + pcVar13 = pcVar13 + 2; + bVar14 = *pcVar1 == '\0'; + } while (!bVar14); + } while (!bVar14); + param_1[0x88] = iVar7; +LAB_00431db4: + FUN_00421452(local_48,2); + } + uVar11 = 0xffffffff; + pcVar6 = (char *)(param_2 + 0xd0); + do { + pcVar13 = pcVar6; + if (uVar11 == 0) break; + uVar11 = uVar11 - 1; + pcVar13 = pcVar6 + 1; + cVar3 = *pcVar6; + pcVar6 = pcVar13; + } while (cVar3 != '\0'); + uVar11 = ~uVar11; + pcVar6 = pcVar13 + -uVar11; + pcVar13 = (char *)(param_1 + 0x89); + for (uVar12 = uVar11 >> 2; uVar12 != 0; uVar12 = uVar12 - 1) { + *(undefined4 *)pcVar13 = *(undefined4 *)pcVar6; + pcVar6 = pcVar6 + 4; + pcVar13 = pcVar13 + 4; + } + for (uVar11 = uVar11 & 3; uVar11 != 0; uVar11 = uVar11 - 1) { + *pcVar13 = *pcVar6; + pcVar6 = pcVar6 + 1; + pcVar13 = pcVar13 + 1; + } + local_c = (char *)(param_2 + 0x50); + puVar8 = (uint *)FUN_00402298(0x10); + if (puVar8 == (uint *)0x0) { + local_10 = (uint *)0x0; + } + else { + local_10 = FUN_00402460(puVar8,local_c); + } + local_10[3] = local_10[3] + 1; + FUN_004323c7(local_5c,*(int *)(DAT_004efc94 + 200) + 0x50); + uVar9 = (**(code **)(local_5c[0] + 0x54))(local_5c,&local_10); + FUN_00432405(local_5c,2); + param_1[0x86] = uVar9; + puVar8 = local_10 + 3; + *puVar8 = *puVar8 - 1; + if (*puVar8 == 0) { + FUN_004024d8((int *)local_10,3); + } + if (param_1[0x86] == 0) { + puVar5 = (undefined4 *)FUN_00402298(0x2c); + if (puVar5 == (undefined4 *)0x0) { + puVar5 = (undefined4 *)0x0; + } + else { + local_1c = (char *)(param_2 + 0x50); + local_24 = (uint *)FUN_00402298(0x10); + if (local_24 == (uint *)0x0) { + local_20 = (uint *)0x0; + } + else { + local_20 = FUN_00402460(local_24,local_1c); + } + ppuVar15 = &local_20; + local_20[3] = local_20[3] + 1; + local_18 = (uint *)FUN_00402298(0x10); + if (local_18 == (uint *)0x0) { + local_14 = (uint *)0x0; + } + else { + local_14 = FUN_00402460(local_18,s_Role__MapAssigned_004e7326); + } + local_14[3] = local_14[3] + 1; + puVar5 = FUN_00429a9c(puVar5,(int *)&local_14,(int *)ppuVar15); + } + param_1[0x86] = puVar5; + puVar8 = local_20 + 3; + *puVar8 = *puVar8 - 1; + if (*puVar8 == 0) { + FUN_004024d8((int *)local_20,3); + } + puVar8 = local_14 + 3; + *puVar8 = *puVar8 - 1; + if (*puVar8 == 0) { + FUN_004024d8((int *)local_14,3); + } + iVar7 = param_1[0x86]; + iVar4 = *(int *)(DAT_004efc94 + 200); + local_28 = (int *)(iVar7 + 0x24); + local_2c = (int *)*local_28; + local_2c[3] = local_2c[3] + 1; + FUN_004323c7(local_70,iVar4 + 0x50); + iVar10 = (**(code **)(local_70[0] + 0x54))(local_70,&local_2c); + FUN_00432405(local_70,2); + uVar11 = (uint)(iVar10 == 0); + local_30 = local_2c; + piVar2 = local_2c + 3; + *piVar2 = *piVar2 + -1; + if (*piVar2 == 0) { + FUN_004024d8(local_2c,3); + } + if (uVar11 != 0) { + local_34 = (int *)(iVar7 + 0x24); + local_38 = (int *)*local_34; + local_38[3] = local_38[3] + 1; + (**(code **)(*(int *)(iVar4 + 0x50) + 8))(iVar4 + 0x50,iVar7,&local_38); + local_3c = local_38; + piVar2 = local_38 + 3; + *piVar2 = *piVar2 + -1; + if (*piVar2 == 0) { + FUN_004024d8(local_38,3); + } + } + } + puVar5 = FUN_004212b0(local_8,s_Landmarks_004e7338); + (**(code **)(puVar5[4] + 4))(puVar5 + 4,param_1); + return param_1; +} + + + +/* @00432020 file=? name=FUN_00432020 */ + +void __cdecl FUN_00432020(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e73e4; + FUN_004316c8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0043204c file=? name=FUN_0043204c */ + +undefined4 __cdecl FUN_0043204c(undefined4 *param_1) + +{ + char cVar1; + int iVar2; + undefined4 uVar3; + char *pcVar4; + uint uVar5; + uint uVar6; + char *pcVar7; + + iVar2 = FUN_00431658(param_1); + if (iVar2 == 0) { + uVar3 = 0; + } + else { + *param_1 = 0x110; + param_1[7] = 0x56; + pcVar4 = FUN_004d4d1c((char *)0x0,&DAT_004e7342); + if (pcVar4 == (char *)0x0) { + FUN_004dbb24((int *)&DAT_00524e68,s_teamName_missing__004e7344,(char *)0x0); + uVar3 = 0; + } + else { + uVar5 = 0xffffffff; + do { + pcVar7 = pcVar4; + if (uVar5 == 0) break; + uVar5 = uVar5 - 1; + pcVar7 = pcVar4 + 1; + cVar1 = *pcVar4; + pcVar4 = pcVar7; + } while (cVar1 != '\0'); + uVar5 = ~uVar5; + pcVar4 = pcVar7 + -uVar5; + pcVar7 = (char *)(param_1 + 0x34); + for (uVar6 = uVar5 >> 2; uVar6 != 0; uVar6 = uVar6 - 1) { + *(undefined4 *)pcVar7 = *(undefined4 *)pcVar4; + pcVar4 = pcVar4 + 4; + pcVar7 = pcVar7 + 4; + } + for (uVar5 = uVar5 & 3; uVar5 != 0; uVar5 = uVar5 - 1) { + *pcVar7 = *pcVar4; + pcVar4 = pcVar4 + 1; + pcVar7 = pcVar7 + 1; + } + pcVar4 = FUN_004d4d1c((char *)0x0,&DAT_004e7357); + if (pcVar4 == (char *)0x0) { + FUN_004dbb24((int *)&DAT_00524e68,s_roleName_missing__004e7359,(char *)0x0); + uVar3 = 0; + } + else { + uVar5 = 0xffffffff; + do { + pcVar7 = pcVar4; + if (uVar5 == 0) break; + uVar5 = uVar5 - 1; + pcVar7 = pcVar4 + 1; + cVar1 = *pcVar4; + pcVar4 = pcVar7; + } while (cVar1 != '\0'); + uVar5 = ~uVar5; + pcVar4 = pcVar7 + -uVar5; + pcVar7 = (char *)(param_1 + 0x14); + for (uVar6 = uVar5 >> 2; uVar6 != 0; uVar6 = uVar6 - 1) { + *(undefined4 *)pcVar7 = *(undefined4 *)pcVar4; + pcVar4 = pcVar4 + 4; + pcVar7 = pcVar7 + 4; + } + for (uVar5 = uVar5 & 3; uVar5 != 0; uVar5 = uVar5 - 1) { + *pcVar7 = *pcVar4; + pcVar4 = pcVar4 + 1; + pcVar7 = pcVar7 + 1; + } + pcVar4 = FUN_004d4d1c((char *)0x0,&DAT_004e736c); + if (pcVar4 == (char *)0x0) { + FUN_004dbb24((int *)&DAT_00524e68,s_Landmark_Name_missing__004e736e,(char *)0x0); + uVar3 = 0; + } + else { + uVar5 = 0xffffffff; + do { + pcVar7 = pcVar4; + if (uVar5 == 0) break; + uVar5 = uVar5 - 1; + pcVar7 = pcVar4 + 1; + cVar1 = *pcVar4; + pcVar4 = pcVar7; + } while (cVar1 != '\0'); + uVar5 = ~uVar5; + pcVar4 = pcVar7 + -uVar5; + pcVar7 = (char *)(param_1 + 0x24); + for (uVar6 = uVar5 >> 2; uVar6 != 0; uVar6 = uVar6 - 1) { + *(undefined4 *)pcVar7 = *(undefined4 *)pcVar4; + pcVar4 = pcVar4 + 4; + pcVar7 = pcVar7 + 4; + } + uVar3 = 1; + for (uVar5 = uVar5 & 3; uVar5 != 0; uVar5 = uVar5 - 1) { + *pcVar7 = *pcVar4; + pcVar4 = pcVar4 + 1; + pcVar7 = pcVar7 + 1; + } + } + } + } + } + return uVar3; +} + + + +/* @00432190 file=? name=FUN_00432190 */ + +undefined4 * __cdecl FUN_00432190(int param_1) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00402298(0x264); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_00431d0c(puVar1,param_1,&DAT_004e70f4); + } + return puVar1; +} + + + +/* @004321c0 file=? name=FUN_004321c0 */ + +undefined4 __cdecl +FUN_004321c0(int param_1,char *param_2,int param_3,undefined4 param_4,float *param_5) + +{ + int *piVar1; + undefined4 *puVar2; + undefined4 uVar3; + + FUN_004316f4(param_1,param_2,param_3,param_4,param_5); + if (param_5 == (float *)0x0) { + piVar1 = (int *)FUN_00402298(0x18); + puVar2 = (undefined4 *)FUN_00406db4(param_1,param_2,0xf,1,0,piVar1,0x18,-1); + FUN_004022d0(piVar1); + uVar3 = *puVar2; + } + else { + uVar3 = 0; + } + return uVar3; +} + + + +/* @00432224 file=? name=FUN_00432224 */ + +void __cdecl FUN_00432224(int param_1) + +{ + FUN_0041a1a4(**(int **)(param_1 + 0xc),0x4e70c4); + return; +} + + + +/* @004323a8 file=? name=FUN_004323a8 */ + +undefined4 * __cdecl FUN_004323a8(undefined4 *param_1,int param_2) + +{ + FUN_004188dc(param_1,param_2); + *param_1 = &PTR_FUN_004e7388; + return param_1; +} + + + +/* @004323c7 file=? name=FUN_004323c7 */ + +undefined4 * __cdecl FUN_004323c7(undefined4 *param_1,int param_2) + +{ + FUN_004188dc(param_1,param_2); + *param_1 = &PTR_FUN_004e7388; + return param_1; +} + + + +/* @004323e6 file=? name=FUN_004323e6 */ + +undefined4 * __cdecl FUN_004323e6(undefined4 *param_1,int param_2) + +{ + FUN_00418904(param_1,param_2); + *param_1 = &PTR_FUN_004e7388; + return param_1; +} + + + +/* @00432405 file=? name=FUN_00432405 */ + +void __cdecl FUN_00432405(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e7388; + FUN_00418930(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00432450 file=? name=FUN_00432450 */ + +undefined4 * __cdecl FUN_00432450(undefined4 *param_1,int param_2,undefined4 param_3) + +{ + int *piVar1; + undefined4 uVar2; + undefined4 *puVar3; + int iVar4; + undefined4 local_1c [2]; + int *local_14; + undefined4 *local_c; + int local_8; + + FUN_00430ef0(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004e7538; + param_1[10] = param_1[10] | 0x10; + param_1[7] = PTR_FUN_004e7490; + param_1[8] = DAT_004e7494; + param_1[9] = DAT_004e7498; + local_8 = FUN_00407064(*(int *)(DAT_004efc94 + 0x68),param_1[0x6f],0x11); + iVar4 = *(int *)(local_8 + 4); + *(int *)(local_8 + 4) = *(int *)(local_8 + 4) + 1; + if (iVar4 == 0) { + FUN_00406cd0(local_8); + } + FUN_004030dc(local_1c,*(undefined4 *)(local_8 + 0x3c),*(undefined4 *)(local_8 + 0x40),0); + iVar4 = *local_14; + param_1[0x49] = iVar4; + local_14 = local_14 + 1; + uVar2 = FUN_004022b0(iVar4 << 2); + param_1[0x4a] = uVar2; + for (iVar4 = 0; piVar1 = local_14, iVar4 < (int)param_1[0x49]; iVar4 = iVar4 + 1) { + local_c = (undefined4 *)FUN_00402298(0x134); + if (local_c == (undefined4 *)0x0) { + puVar3 = (undefined4 *)0x0; + } + else { + puVar3 = FUN_00432d2c(local_c,(int)param_1,iVar4,(char *)piVar1); + } + *(undefined4 **)(param_1[0x4a] + iVar4 * 4) = puVar3; + local_14 = (int *)((int)local_14 + piVar1[9]); + } + *(int *)(local_8 + 4) = *(int *)(local_8 + 4) + -1; + return param_1; +} + + + +/* @00432558 file=? name=FUN_00432558 */ + +undefined4 * __cdecl FUN_00432558(int param_1) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00402298(0x1c8); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_00432450(puVar1,param_1,&DAT_004e747c); + } + return puVar1; +} + + + +/* @00432588 file=? name=FUN_00432588 */ + +undefined4 __cdecl FUN_00432588(undefined4 *param_1) + +{ + int iVar1; + + iVar1 = FUN_00430ff0(param_1); + if (iVar1 == 0) { + return 0; + } + param_1[7] = 0x5f; + param_1[0xb] = 0xb00; + return 1; +} + + + +/* @004325c0 file=? name=FUN_004325c0 */ + +void __cdecl FUN_004325c0(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e7538; + FUN_00431058(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004325ec file=? name=FUN_004325ec */ + +undefined4 __cdecl FUN_004325ec(int param_1,char *param_2,int param_3,undefined4 *param_4) + +{ + char *pcVar1; + char cVar2; + int iVar3; + undefined4 uVar4; + int *piVar5; + int *piVar6; + char *pcVar7; + undefined4 *puVar8; + uint uVar9; + uint uVar10; + char *pcVar11; + bool bVar12; + byte bVar13; + char local_54 [32]; + int local_34 [2]; + int *local_2c; + char *local_24; + int *local_20; + char *local_1c; + int *local_18; + uint local_14; + int *local_10; + int *local_c; + char *local_8; + + iVar3 = FUN_00404088(param_3,s_gamedata_004e74a6,s_Subsystems_004e74af,&local_8); + if (iVar3 == 0) { + FUN_004dbb24((int *)&DAT_00524e68,param_2,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_is_missing__sub_file_specificati_004e74ba,(char *)0x0); + uVar4 = 0xffffffff; + } + else { + local_c = (int *)FUN_004064fc((char *)*param_4,local_8); + piVar5 = (int *)FUN_00402298(0x20); + if (piVar5 == (int *)0x0) { + piVar5 = (int *)0x0; + } + else { + piVar5 = FUN_00403e84(piVar5,(char *)local_c,1); + } + local_10 = FUN_0040485c((int)piVar5,(char *)0x0); + if ((*(byte *)(piVar5 + 7) & 2) == 0) { + iVar3 = piVar5[3]; + } + else { + iVar3 = piVar5[4]; + } + if (iVar3 == 0) { + FUN_004dbb24((int *)&DAT_00524e68,(char *)local_c,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_empty_of_missing__004e74e0,(char *)0x0); +LAB_004326c3: + FUN_004022d0(local_c); + FUN_00403ecc(piVar5,3); + if (local_10 != (int *)0x0) { + (**(code **)*local_10)(local_10,3); + } + uVar4 = 0xffffffff; + } + else { + local_14 = iVar3 * 0x48 + 4; + local_18 = (int *)FUN_004022b0(local_14); + FUN_004030dc(local_34,local_18,local_14,0); + *local_2c = iVar3; + local_2c = local_2c + 1; + for (puVar8 = (undefined4 *)local_10[1]; puVar8 != (undefined4 *)0x0; + puVar8 = (undefined4 *)*puVar8) { + uVar9 = 0xffffffff; + pcVar7 = (char *)(puVar8 + 2); + do { + pcVar11 = pcVar7; + if (uVar9 == 0) break; + uVar9 = uVar9 - 1; + pcVar11 = pcVar7 + 1; + cVar2 = *pcVar7; + pcVar7 = pcVar11; + } while (cVar2 != '\0'); + uVar9 = ~uVar9; + pcVar7 = pcVar11 + -uVar9; + pcVar11 = local_54; + for (uVar10 = uVar9 >> 2; uVar10 != 0; uVar10 = uVar10 - 1) { + *(undefined4 *)pcVar11 = *(undefined4 *)pcVar7; + pcVar7 = pcVar7 + 4; + pcVar11 = pcVar11 + 4; + } + for (uVar9 = uVar9 & 3; uVar9 != 0; uVar9 = uVar9 - 1) { + *pcVar11 = *pcVar7; + pcVar7 = pcVar7 + 1; + pcVar11 = pcVar11 + 1; + } + iVar3 = FUN_00404088((int)piVar5,local_54,&DAT_004e74f4,&local_1c); + if (iVar3 == 0) { + bVar13 = 0x3a; + FUN_004dbb24((int *)&DAT_00524e68,param_2,(char *)0x0); + piVar6 = FUN_004db92c((int *)&DAT_00524e68,bVar13); + FUN_004dbb24(piVar6,local_54,(char *)0x0); + FUN_004dbb24(piVar6,s_missing_Type__004e74f9,(char *)0x0); +LAB_004327c2: + FUN_004022e8(local_18); + goto LAB_004326c3; + } + pcVar11 = s_DoorClassID_004e7509; + local_20 = local_2c; + pcVar7 = local_1c; + do { + if (*pcVar7 != *pcVar11) goto LAB_00432820; + bVar12 = true; + if (*pcVar7 == '\0') break; + pcVar1 = pcVar7 + 1; + if (*pcVar1 != pcVar11[1]) goto LAB_00432820; + pcVar7 = pcVar7 + 2; + pcVar11 = pcVar11 + 2; + bVar12 = *pcVar1 == '\0'; + } while (!bVar12); + if (!bVar12) { +LAB_00432820: + local_24 = local_1c; + bVar13 = 0x3a; + FUN_004dbb24((int *)&DAT_00524e68,param_2,(char *)0x0); + piVar6 = FUN_004db92c((int *)&DAT_00524e68,bVar13); + FUN_004dbb24(piVar6,local_54,(char *)0x0); + FUN_004dbb24(piVar6,s_has_an_unknown_component_type_of_004e7515,(char *)0x0); + FUN_004dbb24(piVar6,local_24,(char *)0x0); + FUN_004d9c38(piVar6); + goto LAB_004327c2; + } + iVar3 = FUN_00432fa8(param_3,param_2,local_54,(char *)local_2c,(int)piVar5,(int)param_4, + param_1); + if (iVar3 == -1) goto LAB_004327c2; + local_2c = (int *)((int)local_2c + local_20[9]); + } + puVar8 = (undefined4 *)FUN_00406f3c(param_1,param_2,0x11,1,0,local_34,-1); + if (puVar8 == (undefined4 *)0x0) { + uVar4 = 0xffffffff; + } + else { + uVar4 = *puVar8; + } + FUN_004022d0(local_c); + FUN_00403ecc(piVar5,3); + if (local_10 != (int *)0x0) { + (**(code **)*local_10)(local_10,3); + } + FUN_004022e8(local_18); + } + } + return uVar4; +} + + + +/* @004329d4 file=? name=FUN_004329d4 */ + +void __cdecl FUN_004329d4(int param_1,undefined4 *param_2,undefined2 param_3) + +{ + FUN_0041c500(param_1,param_2,param_3); + param_2[4] = *(undefined4 *)(param_1 + 0xe4); + *param_2 = 0x14; + return; +} + + + +/* @00432a04 file=? name=FUN_00432a04 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_00432a04(int param_1,float param_2) + +{ + float *pfVar1; + int unaff_ESI; + float local_8; + + if (param_2 <= _DAT_00432c10) { + *(float *)(param_1 + 0x11c) = *(float *)(param_1 + 0x11c) - param_2; + switch(*(undefined4 *)(param_1 + 0x40)) { + case 0: + *(undefined4 *)(param_1 + 0x11c) = *(undefined4 *)(param_1 + 0x120); + case 3: + while (unaff_ESI = 3, *(float *)(param_1 + 0x11c) <= _DAT_00432c14) { + *(float *)(param_1 + 0x11c) = *(float *)(param_1 + 0x124) + *(float *)(param_1 + 0x11c); +switchD_00432a3d_caseD_4: + unaff_ESI = 4; + if (_DAT_00432c14 < *(float *)(param_1 + 0x11c)) { + local_8 = 0.0; + FUN_00408440((undefined4 *)(param_1 + 0xf8),&DAT_004e0f74); + goto switchD_00432a3d_default; + } + *(float *)(param_1 + 0x11c) = *(float *)(param_1 + 0x120) + *(float *)(param_1 + 0x11c); +switchD_00432a3d_caseD_1: + unaff_ESI = 1; + if (_DAT_00432c14 < *(float *)(param_1 + 0x11c)) { + local_8 = _DAT_00432c10 - *(float *)(param_1 + 0x11c) / *(float *)(param_1 + 0x120); + pfVar1 = (float *)(param_1 + 0xf8); + FUN_00408644(pfVar1,(float *)(param_1 + 0x110),(float *)(*(int *)(param_1 + 0xd0) + 0x100) + ); + FUN_004086f8(pfVar1,pfVar1,*(float *)(param_1 + 0x120)); + goto switchD_00432a3d_default; + } + *(float *)(param_1 + 0x11c) = *(float *)(param_1 + 0x124) + *(float *)(param_1 + 0x11c); +switchD_00432a3d_caseD_2: + unaff_ESI = 2; + if (_DAT_00432c14 < *(float *)(param_1 + 0x11c)) { + local_8 = 1.0; + FUN_00408440((undefined4 *)(param_1 + 0xf8),&DAT_004e0f74); + goto switchD_00432a3d_default; + } + *(float *)(param_1 + 0x11c) = *(float *)(param_1 + 0x120) + *(float *)(param_1 + 0x11c); + } + local_8 = *(float *)(param_1 + 0x11c) / *(float *)(param_1 + 0x120); + pfVar1 = (float *)(param_1 + 0xf8); + FUN_00408644(pfVar1,(float *)(*(int *)(param_1 + 0xd0) + 0x100),(float *)(param_1 + 0x110)); + FUN_004086f8(pfVar1,pfVar1,*(float *)(param_1 + 0x120)); + default: +switchD_00432a3d_default: + FUN_00432c18(param_1,local_8); + FUN_0041bbd8(param_1 + 0x2c,unaff_ESI); + break; + case 1: + goto switchD_00432a3d_caseD_1; + case 2: + goto switchD_00432a3d_caseD_2; + case 4: + goto switchD_00432a3d_caseD_4; + } + } + return; +} + + + +/* @00432c18 file=? name=FUN_00432c18 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_00432c18(int param_1,float param_2) + +{ + float *pfVar1; + float *pfVar2; + float local_18; + float local_14; + float local_10; + float local_c; + float local_8; + + if (((*(int *)(param_1 + 0x40) != *(int *)(param_1 + 0x3c)) && + ((*(uint *)(*(int *)(param_1 + 0xd0) + 0x28) & 0xc) == 0)) && + ((*(byte *)(*(int *)(param_1 + 0xd0) + 0x29) & 1) != 0)) { + *(ushort *)(param_1 + 0x18) = *(ushort *)(param_1 + 0x18) | 1; + } + if (param_2 != *(float *)(param_1 + 0xe4)) { + *(float *)(param_1 + 0xe4) = param_2; + local_8 = *(float *)(param_1 + 0xe4); + FUN_00408848((float *)(param_1 + 0xec),(float *)&DAT_004e0f80,_DAT_00432d28 - local_8, + (float *)(param_1 + 0x104),local_8); + local_c = *(float *)(param_1 + 0xe4); + FUN_00408848(&local_18,(float *)(*(int *)(param_1 + 0xd0) + 0x100),_DAT_00432d28 - local_c, + (float *)(param_1 + 0x110),local_c); + pfVar2 = *(float **)(param_1 + 0x130); + for (pfVar1 = *(float **)(param_1 + 300); pfVar1 != (float *)0x0; pfVar1 = (float *)pfVar1[10]) + { + *pfVar2 = *pfVar1 + local_18; + pfVar2[1] = pfVar1[1] + local_18; + pfVar2[2] = pfVar1[2] + local_14; + pfVar2[3] = pfVar1[3] + local_14; + pfVar2[4] = pfVar1[4] + local_10; + pfVar2[5] = pfVar1[5] + local_10; + pfVar2 = (float *)pfVar2[10]; + } + } + return; +} + + + +/* @00432d2c file=? name=FUN_00432d2c */ + +undefined4 * __cdecl FUN_00432d2c(undefined4 *param_1,int param_2,undefined4 param_3,char *param_4) + +{ + undefined4 uVar1; + undefined4 *puVar2; + int iVar3; + undefined4 local_9c [15]; + undefined4 local_60 [15]; + float local_24; + undefined4 local_20; + undefined4 local_1c; + undefined4 local_18; + undefined4 local_14; + undefined4 local_10; + undefined4 local_c; + int local_8; + + FUN_0041c52c(param_1,param_2,param_3,param_4,&DAT_004e756c); + *param_1 = &PTR_FUN_004e76cc; + FUN_00408440(param_1 + 0x41,(undefined4 *)(param_4 + 0x30)); + param_1[0x48] = *(undefined4 *)(param_4 + 0x3c); + param_1[0x49] = *(undefined4 *)(param_4 + 0x40); + param_1[0x47] = 0; + FUN_00408440(param_1 + 0x3b,&DAT_004e0f80); + param_1[7] = PTR_FUN_004e75f4; + param_1[8] = DAT_004e75f8; + param_1[9] = DAT_004e75fc; + FUN_0041bbd8((int)(param_1 + 0xb),0); + param_1[0x4a] = 0; + param_1[0x4b] = 0; + param_1[0x4c] = 0; + param_1[0x39] = 0xbf800000; + FUN_00408b98((float *)(param_1 + 0x44),(float *)(param_1 + 0x41),(float *)(param_2 + 0xd0)); + local_24 = *(float *)(param_2 + 0x100); + local_20 = *(undefined4 *)(param_2 + 0x104); + local_1c = *(undefined4 *)(param_2 + 0x108); + local_18 = *(undefined4 *)(param_2 + 0x10c); + local_14 = *(undefined4 *)(param_2 + 0x110); + local_10 = *(undefined4 *)(param_2 + 0x114); + local_c = *(undefined4 *)(param_2 + 0x118); + FUN_00408440(&local_24,&DAT_004e0f80); + local_8 = FUN_00406fd4(*(int *)(DAT_004efc94 + 0x68),*(int *)(param_4 + 0x44)); + iVar3 = *(int *)(local_8 + 4); + *(int *)(local_8 + 4) = *(int *)(local_8 + 4) + 1; + if (iVar3 == 0) { + FUN_00406cd0(local_8); + } + puVar2 = *(undefined4 **)(local_8 + 0x3c); + param_1[0x4a] = *(uint *)(local_8 + 0x40) / 0x3c; + for (iVar3 = 0; iVar3 < (int)param_1[0x4a]; iVar3 = iVar3 + 1) { + FUN_0040f33c(local_60,puVar2,(float *)(param_2 + 0x100)); + FUN_0040f33c(local_9c,puVar2,&local_24); + uVar1 = FUN_0040eed8((int)local_9c,param_1,param_1[0x4b]); + param_1[0x4b] = uVar1; + uVar1 = FUN_0040eed8((int)local_60,param_1,param_1[0x4c]); + param_1[0x4c] = uVar1; + puVar2 = puVar2 + 0xf; + } + *(int *)(local_8 + 4) = *(int *)(local_8 + 4) + -1; + FUN_00432c18((int)param_1,0.0); + return param_1; +} + + + +/* @00432f34 file=? name=FUN_00432f34 */ + +void __cdecl FUN_00432f34(int *param_1,byte param_2) + +{ + int iVar1; + int iVar2; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e76cc; + iVar1 = param_1[0x4b]; + while (iVar2 = iVar1, iVar2 != 0) { + iVar1 = *(int *)(iVar2 + 0x28); + if (iVar2 != 0) { + (*(code *)**(undefined4 **)(iVar2 + 0x18))(iVar2,3); + } + } + iVar1 = param_1[0x4c]; + while (iVar2 = iVar1, iVar2 != 0) { + iVar1 = *(int *)(iVar2 + 0x28); + if (iVar2 != 0) { + (*(code *)**(undefined4 **)(iVar2 + 0x18))(iVar2,3); + } + } + FUN_0041c648(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00432fa8 file=? name=FUN_00432fa8 */ + +undefined4 __cdecl +FUN_00432fa8(int param_1,char *param_2,char *param_3,char *param_4,int param_5,int param_6, + int param_7) + +{ + int iVar1; + undefined4 uVar2; + char *local_c; + undefined4 local_8; + + iVar1 = FUN_0041c684(param_1,param_2,param_3,param_4,param_5,param_6); + if (iVar1 == 0) { + uVar2 = 0; + } + else { + param_4[0x24] = 'H'; + param_4[0x25] = '\0'; + param_4[0x26] = '\0'; + param_4[0x27] = '\0'; + param_4[0x20] = '`'; + param_4[0x21] = '\0'; + param_4[0x22] = '\0'; + param_4[0x23] = '\0'; + iVar1 = FUN_00404088(param_5,param_3,s_MotionExtent_004e763f,&local_8); + if (iVar1 == 0) { + FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_MotionExtent___004e764c,(char *)0x0); + uVar2 = 0xffffffff; + } + else { + FUN_004d7f84(local_8,(byte *)s__f__f__f_004e7665); + iVar1 = FUN_00404118(param_5,param_3,s_TravelTime_004e766e,(float *)(param_4 + 0x3c)); + if (iVar1 == 0) { + FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_TravelTime__004e7679,(char *)0x0); + uVar2 = 0xffffffff; + } + else { + iVar1 = FUN_00404118(param_5,param_3,s_DeadTime_004e768f,(float *)(param_4 + 0x40)); + if (iVar1 == 0) { + FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_DeadTime__004e7698,(char *)0x0); + uVar2 = 0; + } + else { + iVar1 = FUN_00404088(param_5,param_3,s_Collision_004e76ac,&local_c); + if (iVar1 == 0) { + FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_Collision__004e76b6,(char *)0x0); + uVar2 = 0; + } + else { + uVar2 = FUN_0040f7d8(local_c,param_7,param_6,0); + *(undefined4 *)(param_4 + 0x44) = uVar2; + uVar2 = 1; + } + } + } + } + } + return uVar2; +} + + + +/* @00433138 file=? name=FUN_00433138 */ + +void __cdecl FUN_00433138(int param_1) + +{ + FUN_0041a1a4(**(int **)(param_1 + 0xc),0x4e757c); + return; +} + + + +/* @00433220 file=? name=FUN_00433220 */ + +undefined4 * __cdecl FUN_00433220(undefined4 *param_1) + +{ + FUN_004178cc(param_1,8); + *param_1 = &PTR_FUN_004e3320; + param_1[3] = &DAT_004e7748; + *param_1 = &PTR_FUN_004e78a0; + return param_1; +} + + + +/* @0043324c file=? name=FUN_0043324c */ + +void __cdecl FUN_0043324c(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e78a0; + FUN_0041790c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00433278 file=? name=FUN_00433278 */ + +void __cdecl FUN_00433278(int param_1) + +{ + FUN_0041a1a4(**(int **)(param_1 + 0xc),0x4e7718); + return; +} + + + +/* @00433294 file=? name=FUN_00433294 */ + +undefined4 __cdecl FUN_00433294(int *param_1,int param_2) + +{ + int iVar1; + undefined4 uVar2; + + iVar1 = (**(code **)(*param_1 + 0x14))(param_1,*(undefined4 *)(param_2 + 0x1c)); + if (iVar1 != 0) { + uVar2 = (**(code **)(iVar1 + 0x10))(param_2); + return uVar2; + } + return 0; +} + + + +/* @004332bc file=munga/registry.cpp name=FUN_004332bc */ + +undefined4 FUN_004332bc(void) + +{ + FUN_0040385c(s_Registry__MakeTransferedEntity___004e7764,s_d__tesla_bt_munga_REGISTRY_CPP_004e7798 + ,0xbe); + return 0; +} + + + +/* @004332dc file=munga/registry.cpp name=FUN_004332dc */ + +undefined4 FUN_004332dc(void) + +{ + FUN_0040385c(s_Registry__MakeEntityReplacement___004e77b7, + s_d__tesla_bt_munga_REGISTRY_CPP_004e77ec,0xcd); + return 0; +} + + + +/* @004332fc file=? name=FUN_004332fc */ + +undefined * __cdecl FUN_004332fc(undefined4 param_1,int param_2) + +{ + if (param_2 < 0x40) { + if (param_2 == 0x3f) { + return &DAT_004e6604; + } + if (param_2 < 0x31) { + if (param_2 == 0x30) { + return &DAT_004e6bc0; + } + if (param_2 == 0x10) { + return &DAT_004e3d40; + } + if (param_2 == 0x29) { + return &DAT_004e6f28; + } + if (param_2 == 0x2a) { + return &DAT_004e6f84; + } + } + else { + if (param_2 == 0x31) { + return &DAT_004e6cc4; + } + if (param_2 == 0x32) { + return &DAT_004e6714; + } + } + } + else if (param_2 < 0x59) { + if (param_2 == 0x58) { + return &DAT_004e5b04; + } + if (param_2 == 0x45) { + return &DAT_004e62a8; + } + if (param_2 == 0x46) { + return &DAT_004e6ad4; + } + if (param_2 == 0x56) { + return &DAT_004e70f4; + } + } + else { + if (param_2 == 0x5e) { + return &DAT_004e7068; + } + if (param_2 == 0x5f) { + return &DAT_004e747c; + } + } + return (undefined *)0x0; +} + + + +/* @004333b0 file=? name=FUN_004333b0 */ + +undefined4 * __cdecl FUN_004333b0(undefined4 param_1,int param_2) + +{ + char *pcVar1; + int iVar2; + undefined4 uVar3; + char *pcVar4; + undefined4 *puVar5; + char *pcVar6; + uint uVar7; + bool bVar8; + undefined4 local_a4; + undefined4 local_a0; + undefined4 local_9c; + undefined4 local_98 [2]; + undefined4 local_90; + undefined4 local_8c; + undefined4 local_88; + undefined4 local_84 [2]; + undefined4 local_7c; + uint local_78; + undefined4 local_74; + undefined4 local_70; + undefined4 local_6c; + undefined4 local_68; + undefined4 local_64; + undefined4 local_60; + undefined4 local_5c; + undefined4 local_58; + undefined4 local_54; + undefined4 local_50; + undefined4 local_4c; + undefined4 local_48 [2]; + undefined4 local_40; + undefined4 local_3c; + undefined4 local_38; + undefined4 local_34 [2]; + undefined4 local_2c; + uint local_28; + undefined4 local_24; + undefined4 local_20; + undefined4 local_1c; + undefined4 local_18; + undefined4 local_14; + undefined4 local_10; + undefined4 local_c; + undefined4 local_8; + + pcVar6 = s_camera_004e780b; + uVar7 = 0x5100; + pcVar4 = *(char **)(param_2 + 0x2c); + do { + if (*pcVar4 != *pcVar6) goto LAB_004333ef; + bVar8 = true; + if (*pcVar4 == '\0') break; + pcVar1 = pcVar4 + 1; + if (*pcVar1 != pcVar6[1]) goto LAB_004333ef; + pcVar4 = pcVar4 + 2; + pcVar6 = pcVar6 + 2; + bVar8 = *pcVar1 == '\0'; + } while (!bVar8); + if (bVar8) { + uVar7 = 0xd100; + } +LAB_004333ef: + iVar2 = *(int *)(*(int *)(*(int *)(DAT_004efc94 + 0x2c) + 0x14) + 0x10); + if (iVar2 == 0) { + uVar3 = *(undefined4 *)(param_2 + 0x4c); + local_54 = 0x50; + local_50 = 3; + local_4c = 1; + FUN_00420ea4(local_48,(undefined4 *)&DAT_00522524); + local_40 = 0; + local_3c = 0; + local_38 = 0x32; + FUN_00420ea4(local_34,(undefined4 *)&DAT_00522524); + local_2c = 0xffffffff; + local_24 = DAT_004e0fec; + local_20 = DAT_004e0ff0; + local_1c = DAT_004e0ff4; + local_18 = DAT_004e0ff8; + local_14 = DAT_004e0ffc; + local_10 = DAT_004e1000; + local_c = DAT_004e1004; + local_28 = uVar7; + local_8 = uVar3; + puVar5 = (undefined4 *)FUN_00402298(0x20c); + if (puVar5 == (undefined4 *)0x0) { + puVar5 = (undefined4 *)0x0; + } + else { + puVar5 = FUN_0042e328(puVar5,(int)&local_54,&DAT_004e6714); + } + } + else if (iVar2 - 1U < 2) { + uVar3 = *(undefined4 *)(param_2 + 0x4c); + local_a4 = 0x50; + local_a0 = 3; + local_9c = 1; + FUN_00420ea4(local_98,(undefined4 *)&DAT_00522524); + local_90 = 0; + local_8c = 0; + local_88 = 0x46; + FUN_00420ea4(local_84,(undefined4 *)&DAT_00522524); + local_7c = 0xffffffff; + local_74 = DAT_004e0fec; + local_70 = DAT_004e0ff0; + local_6c = DAT_004e0ff4; + local_68 = DAT_004e0ff8; + local_64 = DAT_004e0ffc; + local_60 = DAT_004e1000; + local_5c = DAT_004e1004; + local_78 = uVar7 | 0x9100; + local_58 = uVar3; + puVar5 = (undefined4 *)FUN_00402298(0x238); + if (puVar5 == (undefined4 *)0x0) { + puVar5 = (undefined4 *)0x0; + } + else { + puVar5 = FUN_0042eec8(puVar5,(int)&local_a4,&DAT_004e6ad4); + } + } + else { + puVar5 = (undefined4 *)0x0; + } + return puVar5; +} + + + +/* @004335b8 file=? name=FUN_004335b8 */ + +void __cdecl FUN_004335b8(int *param_1,undefined4 *param_2) + +{ + undefined4 local_14 [2]; + int local_c; + + FUN_004030dc(local_14,param_2,*param_2,0); + local_c = local_c + 0xc; + FUN_00433294(param_1,local_c); + return; +} + + + +/* @004335f0 file=? name=FUN_004335f0 */ + +undefined4 __cdecl FUN_004335f0(undefined4 param_1,int param_2) + +{ + undefined4 *puVar1; + undefined4 uVar2; + int local_2c [10]; + + FUN_0043377c(local_2c); + (**(code **)(local_2c[0] + 0x28))(local_2c,param_1,param_2); + puVar1 = (undefined4 *) + FUN_00406f3c(param_2,s_RegistryStaticObjectStream_004e7812,0x1c,1,0,local_2c,-1); + uVar2 = *puVar1; + FUN_00433798(local_2c,2); + return uVar2; +} + + + +/* @0043364c file=? name=FUN_0043364c */ + +void FUN_0043364c(void) + +{ + int iVar1; + int iVar2; + int iVar3; + int iVar4; + int local_30 [10]; + uint local_8; + + iVar4 = 0; + iVar1 = *(int *)(DAT_004efc94 + 0x68); + local_8 = *(uint *)(iVar1 + 0x18); + if (local_8 < 0x80000000) { + do { + iVar3 = FUN_00406fd4(iVar1,iVar4); + if ((iVar3 != 0) && (*(int *)(iVar3 + 8) == 0x1c)) { + iVar2 = *(int *)(iVar3 + 4); + *(int *)(iVar3 + 4) = *(int *)(iVar3 + 4) + 1; + if (iVar2 == 0) { + FUN_00406cd0(iVar3); + } + FUN_0043375c(local_30,iVar3); + (**(code **)(local_30[0] + 0x24))(local_30); + *(int *)(iVar3 + 4) = *(int *)(iVar3 + 4) + -1; + FUN_00433798(local_30,2); + } + iVar4 = iVar4 + 1; + } while (iVar4 <= (int)local_8); + } + FUN_0040717c(iVar1); + return; +} + + + +/* @004336d4 file=? name=FUN_004336d4 */ + +void __cdecl FUN_004336d4(undefined4 *param_1,undefined4 param_2) + +{ + *param_1 = param_2; + param_1[1] = 3; + param_1[2] = 1; + return; +} + + + +/* @004336f0 file=? name=FUN_004336f0 */ + +undefined4 __cdecl FUN_004336f0(uint *param_1) + +{ + undefined4 uVar1; + undefined4 *puVar2; + uint uVar3; + undefined4 local_14 [2]; + undefined4 *local_c; + + uVar3 = *param_1 + 0xc; + uVar1 = FUN_004022b0(uVar3); + FUN_004030dc(local_14,uVar1,uVar3,0); + puVar2 = (undefined4 *)FUN_004022c8(0xc,local_c); + if (puVar2 == (undefined4 *)0x0) { + uVar1 = 0; + } + else { + uVar1 = FUN_004336d4(puVar2,uVar3); + } + local_c = (undefined4 *)((int)local_c + 0xc); + FUN_004d4918(local_c,param_1,*param_1); + return uVar1; +} + + + +/* @0043375c file=? name=FUN_0043375c */ + +undefined4 * __cdecl FUN_0043375c(undefined4 *param_1,int param_2) + +{ + FUN_00416fdc(param_1,param_2); + *param_1 = &PTR_FUN_004e7864; + return param_1; +} + + + +/* @0043377c file=? name=FUN_0043377c */ + +undefined4 * __cdecl FUN_0043377c(undefined4 *param_1) + +{ + FUN_00416f88(param_1); + *param_1 = &PTR_FUN_004e7864; + return param_1; +} + + + +/* @00433798 file=? name=FUN_00433798 */ + +void __cdecl FUN_00433798(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e7864; + FUN_00417008(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004337c4 file=? name=FUN_004337c4 */ + +undefined8 __cdecl FUN_004337c4(int param_1) + +{ + undefined8 uVar1; + + uVar1 = FUN_00417034(param_1); + return CONCAT44((int)((ulonglong)uVar1 >> 0x20),1); +} + + + +/* @004337d8 file=? name=FUN_004337d8 */ + +undefined4 * __cdecl FUN_004337d8(int *param_1,int param_2) + +{ + undefined4 *puVar1; + + if (param_2 == 0x47) { + puVar1 = (undefined4 *)FUN_00402298(0x24); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_004304ec(puVar1,param_1); + } + } + else { + puVar1 = (undefined4 *)FUN_0041639c(); + } + return puVar1; +} + + + +/* @00433818 file=? name=FUN_00433818 */ + +void __cdecl FUN_00433818(undefined4 param_1,int param_2) + +{ + if (*(int *)(param_2 + 4) == 0x47) { + FUN_004170cc(param_1,param_2); + } + return; +} + + + +/* @0043383c file=? name=FUN_0043383c */ + +void __cdecl FUN_0043383c(int *param_1,int param_2,int param_3) + +{ + if (param_3 == 0x47) { + FUN_00430608(param_1,param_2); + } + else { + FUN_00416db0(); + } + return; +} + + + +/* @00433874 file=? name=FUN_00433874 */ + +void __cdecl FUN_00433874(undefined4 param_1,int param_2,undefined4 param_3,undefined4 param_4) + +{ + if (param_2 == 0x47) { + FUN_004171f0(param_1,param_3,param_4); + } + return; +} + + + +/* @00433920 file=? name=FUN_00433920 */ + +undefined4 * __cdecl FUN_00433920(undefined4 *param_1,undefined4 *param_2) + +{ + FUN_00415e90(param_1,1); + *param_1 = &PTR_FUN_004e79d0; + FUN_00434183(param_1 + 3,param_2,param_1); + return param_1; +} + + + +/* @00433950 file=? name=FUN_00433950 */ + +void __cdecl FUN_00433950(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e79d0; + FUN_004341a7(param_1 + 3,2); + FUN_00415ed8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0043398c file=? name=FUN_0043398c */ + +undefined4 * __cdecl FUN_0043398c(undefined4 *param_1,undefined4 *param_2,undefined4 *param_3) + +{ + FUN_00433920(param_1,param_2); + *param_1 = &PTR_FUN_004e79cc; + param_1[0xb] = *param_3; + param_1[0xc] = param_3[1]; + param_1[0xd] = param_3[2]; + param_1[0xe] = param_3[3]; + param_1[0xf] = param_3[4]; + param_1[0x13] = param_3[8]; + FUN_00408440(param_1 + 0x10,param_3 + 5); + return param_1; +} + + + +/* @004339ec file=? name=FUN_004339ec */ + +void __cdecl FUN_004339ec(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e79cc; + FUN_00433950(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00433a18 file=? name=FUN_00433a18 */ + +undefined4 FUN_00433a18(void) + +{ + FUN_00415f1c(); + return 1; +} + + + +/* @00433a2c file=? name=FUN_00433a2c */ + +undefined4 * __cdecl +FUN_00433a2c(undefined4 *param_1,undefined4 *param_2,undefined4 param_3,undefined4 param_4, + undefined4 param_5,undefined4 param_6) + +{ + FUN_00433920(param_1,param_2); + *param_1 = &PTR_FUN_004e79c8; + param_1[0xb] = param_3; + param_1[0xc] = param_4; + param_1[0xd] = param_5; + param_1[0xe] = 0; + param_1[0xf] = param_6; + return param_1; +} + + + +/* @00433a68 file=? name=FUN_00433a68 */ + +void __cdecl FUN_00433a68(int *param_1,byte param_2) + +{ + int *piVar1; + undefined4 *puVar2; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e79c8; + piVar1 = (int *)param_1[0xc]; + if (piVar1 != (int *)0x0) { + FUN_0040eabc(piVar1); + FUN_004022d0(piVar1); + } + param_1[0xc] = 0; + puVar2 = (undefined4 *)param_1[0xd]; + if (puVar2 != (undefined4 *)0x0) { + (**(code **)*puVar2)(puVar2,3); + } + param_1[0xd] = 0; + piVar1 = (int *)param_1[0xf]; + if (piVar1 != (int *)0x0) { + FUN_0040eabc(piVar1); + FUN_004022d0(piVar1); + } + param_1[0xf] = 0; + if ((int *)param_1[0xe] != (int *)0x0) { + FUN_00434a48(*(undefined4 *)(DAT_004efc94 + 0x30),(int *)param_1[0xe]); + puVar2 = (undefined4 *)param_1[0xe]; + param_1[0xe] = 0; + if (puVar2 != (undefined4 *)0x0) { + (**(code **)*puVar2)(puVar2,3); + } + } + FUN_00433950(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00433b14 file=? name=FUN_00433b14 */ + +undefined4 FUN_00433b14(void) + +{ + FUN_00415f1c(); + return 1; +} + + + +/* @00433b3c file=? name=FUN_00433b3c */ + +undefined4 * __cdecl FUN_00433b3c(undefined4 *param_1,undefined4 param_2) + +{ + FUN_004178cc(param_1,2); + *param_1 = &PTR_FUN_004e79bc; + FUN_004341d4(param_1 + 3,0); + (**(code **)(param_1[3] + 4))(param_1 + 3,param_2); + return param_1; +} + + + +/* @00433b78 file=? name=FUN_00433b78 */ + +void __cdecl FUN_00433b78(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e79bc; + FUN_00417a5c((int)(param_1 + 3)); + FUN_004341f3(param_1 + 3,2); + FUN_0041790c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00433bbc file=? name=FUN_00433bbc */ + +undefined4 FUN_00433bbc(void) + +{ + FUN_00415f1c(); + return 1; +} + + + +/* @00433bd0 file=? name=FUN_00433bd0 */ + +undefined4 * __cdecl FUN_00433bd0(undefined4 *param_1) + +{ + FUN_004178cc(param_1,2); + *param_1 = &PTR_FUN_004e79b0; + return param_1; +} + + + +/* @00433bf0 file=? name=FUN_00433bf0 */ + +void __cdecl FUN_00433bf0(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e79b0; + FUN_0041790c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00433c1c file=? name=FUN_00433c1c */ + +undefined4 * __cdecl FUN_00433c1c(undefined4 *param_1) + +{ + FUN_00433bd0(param_1); + *param_1 = &PTR_FUN_004e79a4; + FUN_004341d4(param_1 + 3,0); + return param_1; +} + + + +/* @00433c44 file=? name=FUN_00433c44 */ + +void __cdecl FUN_00433c44(int *param_1,byte param_2) + +{ + undefined4 *puVar1; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e79a4; + puVar1 = (undefined4 *)FUN_00417ab4((int)(param_1 + 3)); + if ((puVar1 != (undefined4 *)0x0) && (puVar1 != (undefined4 *)0x0)) { + (**(code **)*puVar1)(puVar1,3); + } + FUN_004341f3(param_1 + 3,2); + FUN_00433bf0(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00433ca0 file=? name=FUN_00433ca0 */ + +undefined4 FUN_00433ca0(void) + +{ + FUN_00415f1c(); + return 1; +} + + + +/* @00433cb4 file=? name=FUN_00433cb4 */ + +undefined4 * __cdecl FUN_00433cb4(int param_1) + +{ + int iVar1; + undefined4 *puVar2; + int iVar3; + int *piVar4; + undefined4 *puVar5; + undefined4 local_8c [6]; + int local_74 [4]; + undefined4 local_64 [9]; + undefined4 local_40 [6]; + int local_28 [4]; + undefined4 *local_18; + int *local_14; + undefined4 local_10; + int local_c; + undefined4 *local_8; + + puVar2 = (undefined4 *)FUN_00417ab4(param_1 + 0xc); + if (puVar2 == (undefined4 *)0x0) { + local_c = *(int *)(DAT_004efc94 + 0x68); + iVar3 = FUN_00406ff8(local_c,s_EnvironmentZone_004e78bc,0x17,-1); + if (iVar3 != 0) { + iVar1 = *(int *)(iVar3 + 4); + *(int *)(iVar3 + 4) = *(int *)(iVar3 + 4) + 1; + if (iVar1 == 0) { + FUN_00406cd0(iVar3); + } + FUN_004030dc(local_28,*(undefined4 *)(iVar3 + 0x3c),*(undefined4 *)(iVar3 + 0x40),0); + piVar4 = (int *)(**(code **)(local_28[0] + 0x1c))(local_28,local_40,0x18); + (**(code **)(*piVar4 + 0x1c))(piVar4,local_64,0x24); + *(int *)(iVar3 + 4) = *(int *)(iVar3 + 4) + -1; + puVar5 = (undefined4 *)FUN_00402298(0x50); + if (puVar5 == (undefined4 *)0x0) { + local_8 = (undefined4 *)0x0; + } + else { + local_8 = FUN_0043398c(puVar5,local_40,local_64); + } + } + iVar3 = FUN_00406ff8(local_c,s_InterestZone_004e78cc,0x18,-1); + if (iVar3 != 0) { + iVar1 = *(int *)(iVar3 + 4); + *(int *)(iVar3 + 4) = *(int *)(iVar3 + 4) + 1; + if (iVar1 == 0) { + FUN_00406cd0(iVar3); + } + FUN_004030dc(local_74,*(undefined4 *)(iVar3 + 0x3c),*(undefined4 *)(iVar3 + 0x40),0); + puVar2 = (undefined4 *)FUN_00402298(0x10); + if (puVar2 == (undefined4 *)0x0) { + local_14 = (int *)0x0; + } + else { + local_14 = (int *)FUN_004023f4(puVar2); + } + local_14[3] = local_14[3] + 1; + piVar4 = (int *)(**(code **)(local_74[0] + 0x1c))(local_74,local_8c,0x18); + piVar4 = (int *)(**(code **)(*piVar4 + 0x1c))(piVar4,&local_10,4); + FUN_00402aec(piVar4,(int *)&local_14); + *(int *)(iVar3 + 4) = *(int *)(iVar3 + 4) + -1; + puVar2 = (undefined4 *)FUN_00402298(4); + if (puVar2 != (undefined4 *)0x0) { + *puVar2 = 0; + } + local_18 = (undefined4 *)FUN_00402298(4); + if (local_18 != (undefined4 *)0x0) { + *local_18 = 0; + } + puVar5 = (undefined4 *)FUN_00402298(0x40); + if (puVar5 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_00433a2c(puVar5,local_8c,local_10,puVar2,local_8,local_18); + } + piVar4 = local_14 + 3; + *piVar4 = *piVar4 + -1; + if (*piVar4 == 0) { + FUN_004024d8(local_14,3); + } + } + (**(code **)(*(int *)(param_1 + 0xc) + 4))(param_1 + 0xc,puVar2); + } + puVar5 = (undefined4 *)FUN_00402298(0x18); + if (puVar5 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_00433b3c(puVar5,puVar2); + } + return puVar2; +} + + + +/* @00433eb8 file=? name=FUN_00433eb8 */ + +undefined4 __cdecl FUN_00433eb8(int param_1) + +{ + int iVar1; + + iVar1 = FUN_00417ab4(param_1 + 0xc); + return *(undefined4 *)(iVar1 + 0x2c); +} + + + +/* @00433ed4 file=? name=FUN_00433ed4 */ + +void __cdecl FUN_00433ed4(int param_1) + +{ + FUN_00417ab4(param_1 + 0xc); + return; +} + + + +/* @00433ee8 file=? name=FUN_00433ee8 */ + +void __cdecl FUN_00433ee8(int param_1,int param_2) + +{ + int *piVar1; + uint *puVar2; + undefined4 *puVar3; + int local_a4 [6]; + float local_8c [6]; + int local_74 [6]; + float local_5c [9]; + float local_38 [6]; + uint *local_20; + int *local_1c; + char *local_18; + int *local_14; + int local_10; + uint *local_c; + char *local_8; + + FUN_00404088(param_2,s_EnvironmentZone_004e78d9,s_extent_box_004e78e9,&local_8); + FUN_0040d62c(local_8,local_38); + FUN_00404088(param_2,s_EnvironmentZone_004e78f4,s_environment_004e7904,&local_8); + FUN_00421658(local_8,local_5c); + FUN_0040328c(local_74,0); + piVar1 = (int *)(**(code **)(local_74[0] + 0x20))(local_74,local_38,0x18); + (**(code **)(*piVar1 + 0x20))(piVar1,local_5c,0x24); + puVar2 = (uint *)FUN_00402298(0x10); + if (puVar2 == (uint *)0x0) { + local_c = (uint *)0x0; + } + else { + local_c = FUN_00402460(puVar2,s_EnvironmentZone_004e7910); + } + local_c[3] = local_c[3] + 1; + FUN_00406f3c(param_1,(char *)local_c[2],0x17,1,0,local_74,-1); + puVar2 = local_c + 3; + *puVar2 = *puVar2 - 1; + if (*puVar2 == 0) { + FUN_004024d8((int *)local_c,3); + } + FUN_00403310(local_74,2); + puVar3 = (undefined4 *)FUN_00402298(0x10); + if (puVar3 == (undefined4 *)0x0) { + local_14 = (int *)0x0; + } + else { + local_14 = (int *)FUN_004023f4(puVar3); + } + local_14[3] = local_14[3] + 1; + FUN_00404088(param_2,s_InterestZone_004e7920,s_extent_box_004e792d,&local_18); + FUN_0040d62c(local_18,local_8c); + FUN_00404088(param_2,s_InterestZone_004e7938,s_interest_zone_ID_004e7945,&local_18); + FUN_00407ae0(local_18,&local_10); + FUN_00404088(param_2,s_InterestZone_004e7956,s_map_resource_name_004e7963,&local_18); + FUN_00402a98((int *)&local_1c,(int *)&local_14,local_18); + piVar1 = local_1c + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_1c,3); + } + FUN_0040328c(local_a4,0); + piVar1 = (int *)(**(code **)(local_a4[0] + 0x20))(local_a4,local_8c,0x18); + (**(code **)(*piVar1 + 0x20))(piVar1,&local_10,4); + FUN_004029b0(local_a4,(int)local_14); + puVar2 = (uint *)FUN_00402298(0x10); + if (puVar2 == (uint *)0x0) { + local_20 = (uint *)0x0; + } + else { + local_20 = FUN_00402460(puVar2,s_InterestZone_004e7975); + } + local_20[3] = local_20[3] + 1; + FUN_00406f3c(param_1,(char *)local_20[2],0x18,1,0,local_a4,-1); + puVar2 = local_20 + 3; + *puVar2 = *puVar2 - 1; + if (*puVar2 == 0) { + FUN_004024d8((int *)local_20,3); + } + FUN_00403310(local_a4,2); + piVar1 = local_14 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_14,3); + } + return; +} + + + +/* @00434163 file=? name=FUN_00434163 */ + +int __cdecl FUN_00434163(int param_1,undefined4 param_2) + +{ + FUN_0040deb0(param_1,param_2); + *(undefined ***)(param_1 + 0x18) = &PTR_FUN_004e798c; + return param_1; +} + + + +/* @00434183 file=? name=FUN_00434183 */ + +undefined4 * __cdecl FUN_00434183(undefined4 *param_1,undefined4 *param_2,undefined4 param_3) + +{ + FUN_0040ded0(param_1,param_2,param_3); + param_1[6] = &PTR_FUN_004e798c; + return param_1; +} + + + +/* @004341a7 file=? name=FUN_004341a7 */ + +void __cdecl FUN_004341a7(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + param_1[6] = (int)&PTR_FUN_004e798c; + FUN_0040def8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004341d4 file=? name=FUN_004341d4 */ + +undefined4 * __cdecl FUN_004341d4(undefined4 *param_1,undefined4 param_2) + +{ + FUN_004179d4(param_1,param_2); + *param_1 = &PTR_FUN_004e7984; + return param_1; +} + + + +/* @004341f3 file=? name=FUN_004341f3 */ + +void __cdecl FUN_004341f3(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e7984; + FUN_004179f8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00434220 file=? name=FUN_00434220 */ + +undefined4 * __cdecl +FUN_00434220(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) + +{ + FUN_004178cc(param_1,2); + *param_1 = &PTR_FUN_004e7b04; + FUN_00434364(param_1 + 6,0); + param_1[3] = param_2; + param_1[4] = param_3; + param_1[5] = param_4; + return param_1; +} + + + +/* @00434260 file=? name=FUN_00434260 */ + +void __cdecl FUN_00434260(int *param_1,byte param_2) + +{ + undefined4 *puVar1; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e7b04; + puVar1 = (undefined4 *)FUN_00417ab4((int)(param_1 + 6)); + if ((puVar1 != (undefined4 *)0x0) && (puVar1 != (undefined4 *)0x0)) { + (**(code **)*puVar1)(puVar1,3); + } + FUN_00434383(param_1 + 6,2); + FUN_0041790c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004342bc file=? name=FUN_004342bc */ + +undefined4 FUN_004342bc(void) + +{ + FUN_00415f1c(); + return 1; +} + + + +/* @004342d0 file=? name=FUN_004342d0 */ + +void __cdecl FUN_004342d0(int param_1) + +{ + int iVar1; + undefined4 *puVar2; + + iVar1 = FUN_00417ab4(param_1 + 0x18); + if (iVar1 == 0) { + puVar2 = FUN_00433cb4(*(int *)(DAT_004efc94 + 0x30) + 0x14); + (**(code **)(*(int *)(param_1 + 0x18) + 4))(param_1 + 0x18,puVar2); + } + return; +} + + + +/* @00434310 file=munga/intorgn.cpp name=FUN_00434310 */ + +void FUN_00434310(void) + +{ + FUN_0040385c(s_InterestOrigin__AddInterestingEn_004e79d4,s_d__tesla_bt_munga_INTORGN_CPP_004e7a14, + 0x9b); + return; +} + + + +/* @0043432c file=munga/intorgn.cpp name=FUN_0043432c */ + +void FUN_0043432c(void) + +{ + FUN_0040385c(s_InterestOrigin__RemoveUninterest_004e7a32,s_d__tesla_bt_munga_INTORGN_CPP_004e7a77, + 0xa5); + return; +} + + + +/* @00434348 file=munga/intorgn.cpp name=FUN_00434348 */ + +void FUN_00434348(void) + +{ + FUN_0040385c(s_InterestOrigin__RemoveUninterest_004e7a95,s_d__tesla_bt_munga_INTORGN_CPP_004e7adc, + 0xaf); + return; +} + + + +/* @00434364 file=? name=FUN_00434364 */ + +undefined4 * __cdecl FUN_00434364(undefined4 *param_1,undefined4 param_2) + +{ + FUN_004179d4(param_1,param_2); + *param_1 = &PTR_FUN_004e7afc; + return param_1; +} + + + +/* @00434383 file=? name=FUN_00434383 */ + +void __cdecl FUN_00434383(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e7afc; + FUN_004179f8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004343b0 file=? name=FUN_004343b0 */ + +undefined4 * __cdecl FUN_004343b0(undefined4 *param_1,undefined4 param_2) + +{ + FUN_00434220(param_1,param_2,3,1); + *param_1 = &PTR_FUN_004e7b74; + FUN_00428cb4(param_1 + 9,0); + return param_1; +} + + + +/* @004343e4 file=? name=FUN_004343e4 */ + +void __cdecl FUN_004343e4(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e7b74; + FUN_00428cd3(param_1 + 9,2); + FUN_00434260(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00434420 file=? name=FUN_00434420 */ + +undefined4 FUN_00434420(void) + +{ + FUN_004342bc(); + return 1; +} + + + +/* @00434434 file=? name=FUN_00434434 */ + +void __cdecl FUN_00434434(int param_1,int param_2) + +{ + int iVar1; + + if ((*(byte *)(param_2 + 0x29) & 1) != 0) { + iVar1 = FUN_0041a1a4(**(int **)(param_2 + 0xc),0x4e4518); + if (iVar1 == 0) { + iVar1 = FUN_0041a1a4(**(int **)(param_2 + 0xc),0x4e744c); + if (iVar1 != 0) { + (**(code **)(*(int *)(param_1 + 0x24) + 4))(param_1 + 0x24,param_2); + } + } + else if ((*(byte *)(param_2 + 0x29) & 0x80) == 0) { + (**(code **)(*(int *)(param_1 + 0x24) + 4))(param_1 + 0x24,param_2); + } + } + return; +} + + + +/* @004344a4 file=? name=FUN_004344a4 */ + +void __cdecl FUN_004344a4(int param_1,int param_2) + +{ + int local_14 [4]; + + FUN_00415f30(local_14,param_2,0xffffffff); + FUN_004161fc((int)local_14,param_1 + 0x24); + FUN_00415f90(local_14,2); + return; +} + + + +/* @004344e4 file=? name=FUN_004344e4 */ + +void __cdecl FUN_004344e4(int param_1) + +{ + int iVar1; + int local_18 [5]; + + FUN_00428cff(local_18,param_1 + 0x24); + while( true ) { + iVar1 = (**(code **)(local_18[0] + 0x30))(local_18); + if (iVar1 == 0) break; + (**(code **)(local_18[0] + 0x48))(local_18); + } + FUN_00428d5c(local_18,2); + return; +} + + + +/* @0043452c file=? name=FUN_0043452c */ + +undefined4 * __cdecl FUN_0043452c(undefined4 *param_1,int param_2) + +{ + FUN_00428d1e(param_1,param_2 + 0x24); + *param_1 = &PTR_FUN_004e7b20; + return param_1; +} + + + +/* @00434550 file=? name=FUN_00434550 */ + +void __cdecl FUN_00434550(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e7b20; + FUN_00428d5c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0043457c file=? name=FUN_0043457c */ + +undefined4 * __cdecl FUN_0043457c(undefined4 *param_1) + +{ + FUN_0041d520(param_1,0x15,&DAT_004e7b90,3); + *param_1 = &PTR_FUN_004e8074; + FUN_00433c1c(param_1 + 5); + FUN_00435375(param_1 + 0xb,0); + param_1[0x10] = 0; + return param_1; +} + + + +/* @004345c0 file=? name=FUN_004345c0 */ + +void __cdecl FUN_004345c0(int *param_1,byte param_2) + +{ + undefined4 *puVar1; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e8074; + puVar1 = (undefined4 *)param_1[0x10]; + if ((puVar1 != (undefined4 *)0x0) && (puVar1 != (undefined4 *)0x0)) { + (**(code **)*puVar1)(puVar1,3); + } + FUN_00435394(param_1 + 0xb,2); + FUN_00433c44(param_1 + 5,2); + FUN_0041d554(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00434620 file=? name=FUN_00434620 */ + +undefined4 __cdecl FUN_00434620(int param_1) + +{ + int iVar1; + + iVar1 = FUN_0041a1a4(**(int **)(param_1 + 0xc),0x4e7b98); + if (iVar1 == 0) { + return 0; + } + return 1; +} + + + +/* @00434648 file=? name=FUN_00434648 */ + +void __cdecl FUN_00434648(int param_1) + +{ + undefined4 *puVar1; + + puVar1 = FUN_00433cb4(param_1 + 0x14); + *(undefined4 **)(param_1 + 0x40) = puVar1; + return; +} + + + +/* @00434668 file=? name=FUN_00434668 */ + +void __cdecl FUN_00434668(int param_1,int param_2) + +{ + int iVar1; + int iVar2; + undefined4 *puVar3; + undefined4 *puVar4; + int local_30 [4]; + uint local_20; + int *local_1c; + undefined4 local_18; + uint local_14; + undefined4 local_10 [2]; + int local_8; + + if (*(int *)(param_2 + 4) != -1) { + local_8 = *(int *)(DAT_004efc94 + 0x68); + iVar1 = FUN_00406fd4(local_8,*(int *)(param_2 + 4)); + iVar2 = *(int *)(iVar1 + 4); + *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1; + if (iVar2 == 0) { + FUN_00406cd0(iVar1); + } + FUN_004030dc(local_30,*(undefined4 *)(iVar1 + 0x3c),*(undefined4 *)(iVar1 + 0x40),0); + FUN_00420ebc(local_10,0xffffffff); + local_14 = 0; + FUN_004347ac(param_1,local_30,(float *)&DAT_004e0fec,local_10,&local_14); + *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + -1; + iVar2 = FUN_00406fd4(local_8,*(int *)(param_2 + 8)); + if (iVar2 != 0) { + iVar1 = *(int *)(iVar2 + 4); + *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + 1; + if (iVar1 == 0) { + FUN_00406cd0(iVar2); + } + iVar1 = FUN_00417ab4(*(int *)(param_1 + 0x40) + 0xc); + local_18 = *(undefined4 *)(iVar1 + 0x2c); + iVar1 = FUN_00433ed4(param_1 + 0x14); + local_1c = *(int **)(iVar1 + 0x3c); + puVar4 = *(undefined4 **)(iVar2 + 0x3c); + local_20 = *(uint *)(iVar2 + 0x40) / 0x18; + while (local_20 != 0) { + local_20 = local_20 - 1; + puVar3 = (undefined4 *)FUN_00402298(0x1c); + if (puVar3 == (undefined4 *)0x0) { + puVar3 = (undefined4 *)0x0; + } + else { + puVar3 = FUN_0040dac4(puVar3,puVar4); + } + FUN_0040ea6c(local_1c,(int)puVar3,puVar3); + puVar4 = puVar4 + 6; + } + *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + -1; + local_20 = 0xffffffff; + } + FUN_0040717c(local_8); + } + return; +} + + + +/* @004347ac file=munga/interest.cpp name=FUN_004347ac */ + +void __cdecl +FUN_004347ac(undefined4 param_1,int *param_2,float *param_3,undefined4 *param_4,uint *param_5) + +{ + uint uVar1; + bool bVar2; + uint *puVar3; + int iVar4; + int iVar5; + uint *puVar6; + int local_48 [4]; + float local_38; + uint local_34; + uint local_30; + uint local_2c; + uint local_28; + uint local_24; + uint local_20; + uint *local_1c; + float *local_18; + int local_14; + uint *local_10; + int local_c; + int local_8; + + (**(code **)(*param_2 + 0x1c))(param_2); + local_c = 0; + if (0 < local_8) { + do { + puVar3 = (uint *)(**(code **)*param_2)(); + if ((puVar3[2] & 4) == 0) { + bVar2 = true; + if ((*(byte *)((int)puVar3 + 0x2d) & 8) != 0) { + local_14 = *(int *)(DAT_004efc94 + 0x2c); + FUN_00420ea4((undefined4 *)&stack0xffffffa4,puVar3 + 3); + iVar5 = FUN_004291ec(local_14); + iVar4 = FUN_0042904c(local_14); + if (iVar5 != iVar4) { + bVar2 = false; + } + } + if (bVar2) { + puVar6 = (uint *)FUN_004022b0(*puVar3); + FUN_004d4918(puVar6,puVar3,*puVar3); + local_18 = (float *)(puVar6 + 0xc); + FUN_004085ec(local_18,local_18,param_3); + if (puVar6[7] == 0x56) { + uVar1 = *param_5; + *param_5 = *param_5 + 1; + puVar6[0x13] = uVar1; + } + if ((*(byte *)((int)puVar6 + 0x2d) & 1) == 0) { + FUN_00420f6c((int)param_4,1); + FUN_00420ef4(puVar6 + 3,param_4); + } + local_1c = (uint *)FUN_004336f0(puVar6); + FUN_004350d4(param_1,local_1c); + FUN_004022d0((int *)local_1c); + FUN_004022d0((int *)puVar6); + } + (**(code **)(*param_2 + 0x14))(); + } + else { + if (puVar3[1] == 3) { + local_10 = puVar3; + iVar4 = FUN_00406fd4(*(int *)(DAT_004efc94 + 0x68),puVar3[3]); + iVar5 = *(int *)(iVar4 + 4); + *(int *)(iVar4 + 4) = *(int *)(iVar4 + 4) + 1; + if (iVar5 == 0) { + FUN_00406cd0(iVar4); + } + local_38 = (float)local_10[4]; + local_34 = local_10[5]; + local_30 = local_10[6]; + local_2c = local_10[7]; + local_28 = local_10[8]; + local_24 = local_10[9]; + local_20 = local_10[10]; + FUN_004085ec(&local_38,&local_38,param_3); + FUN_004030dc(local_48,*(undefined4 *)(iVar4 + 0x3c),*(undefined4 *)(iVar4 + 0x40),0); + FUN_004347ac(param_1,local_48,&local_38,param_4,param_5); + *(int *)(iVar4 + 4) = *(int *)(iVar4 + 4) + -1; + } + else { + FUN_0040385c(s_Unknown_message_marker_in_map_st_004e7d5c, + s_d__tesla_bt_munga_INTEREST_CPP_004e7d83,0x19f); + } + (**(code **)(*param_2 + 0x14))(); + } + local_c = local_c + 1; + } while (local_c < local_8); + } + return; +} + + + +/* @004349e4 file=? name=FUN_004349e4 */ + +void __cdecl FUN_004349e4(int param_1) + +{ + undefined4 *puVar1; + + puVar1 = *(undefined4 **)(param_1 + 0x40); + if (puVar1 != (undefined4 *)0x0) { + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + *(undefined4 *)(param_1 + 0x40) = 0; + } + return; +} + + + +/* @00434a08 file=? name=FUN_00434a08 */ + +void FUN_00434a08(void) + +{ + return; +} + + + +/* @00434a10 file=? name=FUN_00434a10 */ + +void __cdecl FUN_00434a10(int param_1,int *param_2) + +{ + (**(code **)(*(int *)(param_1 + 0x2c) + 4))(param_1 + 0x2c,param_2); + (**(code **)(*param_2 + 0xc))(param_2,param_2[3]); + FUN_00435080(param_1,param_2); + return; +} + + + +/* @00434a48 file=? name=FUN_00434a48 */ + +void __cdecl FUN_00434a48(undefined4 param_1,int *param_2) + +{ + FUN_00435230(param_1,param_2); + return; +} + + + +/* @00434a60 file=munga/interest.cpp name=FUN_00434a60 */ + +void __cdecl FUN_00434a60(int *param_1,int param_2,int param_3) + +{ + uint uVar1; + int iVar2; + + uVar1 = *(uint *)(param_2 + 0x28) & 0xc; + if (uVar1 == 0) { + FUN_00434b4c(param_1,param_2,param_3); + } + else if (uVar1 == 4) { + FUN_00434c80((int)param_1,param_2); + } + else if (uVar1 == 8) { + iVar2 = FUN_0042904c(*(int *)(DAT_004efc94 + 0x2c)); + if (iVar2 == *(int *)(param_2 + 0x18c)) { + FUN_00434b4c(param_1,param_2,param_3); + } + else { + FUN_00434c80((int)param_1,param_2); + } + } + else if (uVar1 == 0xc) { + if ((*(byte *)(param_2 + 0x29) & 1) == 0) { + FUN_00434b18((int)param_1,param_2); + } + else { + FUN_00434b4c(param_1,param_2,param_3); + } + } + else { + FUN_0040385c(s_InterestManager__NotifyOfEntityC_004e7da2, + s_d__tesla_bt_munga_INTEREST_CPP_004e7de4,0x321); + } + return; +} + + + +/* @00434b18 file=? name=FUN_00434b18 */ + +void __cdecl FUN_00434b18(int param_1,int param_2) + +{ + undefined4 uVar1; + + uVar1 = FUN_00433eb8(param_1 + 0x14); + *(undefined4 *)(param_2 + 0x194) = uVar1; + FUN_00434fe0(param_1,param_2); + return; +} + + + +/* @00434b4c file=? name=FUN_00434b4c */ + +void __cdecl FUN_00434b4c(int *param_1,int param_2,int param_3) + +{ + undefined4 uVar1; + uint uVar2; + + uVar1 = FUN_00433eb8((int)(param_1 + 5)); + *(undefined4 *)(param_2 + 0x194) = uVar1; + FUN_00420ef4((undefined4 *)(param_3 + 0xc),(undefined4 *)(param_2 + 0x184)); + *(undefined4 *)(param_3 + 0x14) = *(undefined4 *)(param_2 + 0x194); + *(undefined4 *)(param_3 + 0x18) = *(undefined4 *)(param_2 + 0x18c); + *(undefined4 *)(param_3 + 4) = 3; + uVar2 = *(uint *)(param_2 + 0x28) & 0xc; + if ((uVar2 == 0) || (uVar2 == 8)) { + FUN_0041d7b0(*(int **)(DAT_004efc94 + 0x20),param_3,3); + } + else { + (**(code **)(*param_1 + 0xc))(param_1,param_3); + } + return; +} + + + +/* @00434be0 file=? name=FUN_00434be0 */ + +void __cdecl FUN_00434be0(int param_1,uint *param_2) + +{ + uint uVar1; + int *piVar2; + int iVar3; + + uVar1 = FUN_0042904c(*(int *)(DAT_004efc94 + 0x2c)); + if (uVar1 == param_2[6]) { + iVar3 = (**(code **)(*(int *)(*(int *)(DAT_004efc94 + 0x2c) + 0x54) + 0xc)) + (*(int *)(DAT_004efc94 + 0x2c) + 0x54,param_2 + 3); + FUN_004206e8(iVar3); + FUN_00434fe0(param_1,iVar3); + } + else { + param_2[1] = 3; + if ((param_2[0xb] & 0xc) == 0) { + param_2[0xb] = param_2[0xb] & 0xfffffff3 | 4; + } + piVar2 = (int *)FUN_004336f0(param_2); + (**(code **)(**(int **)(DAT_004efc94 + 0x28) + 0xc))(*(int **)(DAT_004efc94 + 0x28),piVar2); + FUN_004022d0(piVar2); + } + return; +} + + + +/* @00434c80 file=? name=FUN_00434c80 */ + +void __cdecl FUN_00434c80(int param_1,int param_2) + +{ + undefined4 local_20; + undefined4 uStack_1c; + + FUN_0042904c(*(int *)(DAT_004efc94 + 0x2c)); + FUN_00420ea4(&local_20,(undefined4 *)(param_2 + 0x184)); + FUN_00434df4(); + FUN_004206e8(param_2); + uStack_1c = 0x434cd3; + FUN_00434fe0(param_1,param_2); + return; +} + + + +/* @00434cdc file=? name=FUN_00434cdc */ + +void __cdecl FUN_00434cdc(int param_1,int param_2) + +{ + undefined4 local_20; + undefined4 local_1c; + undefined4 local_18; + undefined4 local_14 [2]; + undefined4 local_c; + undefined4 local_8; + + FUN_00435030(param_1,param_2); + if ((*(uint *)(param_2 + 0x28) & 0xc) == 0) { + local_20 = 0x1c; + local_1c = 4; + local_18 = 1; + FUN_00420ea4(local_14,(undefined4 *)&DAT_00522524); + local_c = 0; + local_8 = 0; + FUN_00420ef4(local_14,(undefined4 *)(param_2 + 0x184)); + local_c = *(undefined4 *)(param_2 + 0x194); + local_8 = *(undefined4 *)(param_2 + 0x18c); + (**(code **)(**(int **)(DAT_004efc94 + 0x20) + 0x1c)) + (*(int **)(DAT_004efc94 + 0x20),&local_20,3); + } + return; +} + + + +/* @00434d70 file=? name=FUN_00434d70 */ + +void __cdecl FUN_00434d70(undefined4 param_1,uint *param_2) + +{ + int iVar1; + + iVar1 = (**(code **)(*(int *)(*(int *)(DAT_004efc94 + 0x2c) + 0x54) + 0xc)) + (*(int *)(DAT_004efc94 + 0x2c) + 0x54,param_2 + 3); + if (iVar1 != 0) { + param_2[1] = 9; + FUN_004351fc(param_1,iVar1,param_2); + } + return; +} + + + +/* @00434db4 file=? name=FUN_00434db4 */ + +void FUN_00434db4(void) + +{ + return; +} + + + +/* @00434dbc file=munga/interest.cpp name=FUN_00434dbc */ + +void FUN_00434dbc(void) + +{ + FUN_0040385c(s_InterestManager__EntityNewIntere_004e7e03,s_d__tesla_bt_munga_INTEREST_CPP_004e7e46 + ,0x6bb); + return; +} + + + +/* @00434dd8 file=munga/interest.cpp name=FUN_00434dd8 */ + +void FUN_00434dd8(void) + +{ + FUN_0040385c(s_InterestManager__LoadResourceFin_004e7e65,s_d__tesla_bt_munga_INTEREST_CPP_004e7ea7 + ,0x6f2); + return; +} + + + +/* @00434df4 file=? name=FUN_00434df4 */ + +void FUN_00434df4(void) + +{ + return; +} + + + +/* @00434dfc file=? name=FUN_00434dfc */ + +void FUN_00434dfc(void) + +{ + return; +} + + + +/* @00434e04 file=? name=FUN_00434e04 */ + +void __cdecl FUN_00434e04(undefined4 param_1,int param_2,int param_3) + +{ + FUN_00420ef4((undefined4 *)(param_3 + 0xc),(undefined4 *)(param_2 + 0x184)); + *(undefined4 *)(param_3 + 0x14) = *(undefined4 *)(param_2 + 0x194); + *(undefined4 *)(param_3 + 0x18) = *(undefined4 *)(param_2 + 0x18c); + *(undefined4 *)(param_3 + 4) = 6; + (**(code **)(**(int **)(DAT_004efc94 + 0x20) + 0x1c))(*(int **)(DAT_004efc94 + 0x20),param_3,3); + return; +} + + + +/* @00434e5c file=? name=FUN_00434e5c */ + +void __cdecl FUN_00434e5c(undefined4 param_1,uint *param_2) + +{ + int iVar1; + + iVar1 = (**(code **)(*(int *)(*(int *)(DAT_004efc94 + 0x2c) + 0x54) + 0xc)) + (*(int *)(DAT_004efc94 + 0x2c) + 0x54,param_2 + 3); + if (iVar1 != 0) { + param_2[1] = 0xf; + FUN_004351b4(param_1,iVar1,param_2); + } + return; +} + + + +/* @00434ea0 file=? name=FUN_00434ea0 */ + +void __cdecl FUN_00434ea0(undefined4 param_1,int param_2,uint *param_3) + +{ + uint uVar1; + undefined4 *puVar2; + undefined4 uVar3; + undefined4 local_14 [2]; + undefined4 *local_c; + + FUN_00420ef4(param_3 + 3,(undefined4 *)(param_2 + 0x184)); + param_3[5] = *(uint *)(param_2 + 0x194); + param_3[6] = *(uint *)(param_2 + 0x18c); + FUN_004030dc(local_14,&DAT_00522530,0x600,0); + uVar1 = *param_3; + puVar2 = (undefined4 *)FUN_004022c8(0xc,local_c); + if (puVar2 == (undefined4 *)0x0) { + uVar3 = 0; + } + else { + uVar3 = FUN_0043525c(puVar2,uVar1 + 0xc); + } + local_c = (undefined4 *)((int)local_c + 0xc); + FUN_004d4918(local_c,param_3,*param_3); + (**(code **)(**(int **)(DAT_004efc94 + 0x20) + 0x1c))(*(int **)(DAT_004efc94 + 0x20),uVar3,3); + return; +} + + + +/* @00434f4c file=? name=FUN_00434f4c */ + +void __cdecl FUN_00434f4c(undefined4 param_1,undefined4 *param_2) + +{ + uint *puVar1; + int iVar2; + undefined4 local_14 [2]; + uint *local_c; + + FUN_004030dc(local_14,param_2,*param_2,0); + puVar1 = (uint *)((int)local_c + 0xc); + iVar2 = (int)local_c + 0x18; + local_c = puVar1; + iVar2 = (**(code **)(*(int *)(*(int *)(DAT_004efc94 + 0x2c) + 0x54) + 0xc)) + (*(int *)(DAT_004efc94 + 0x2c) + 0x54,iVar2); + if (iVar2 != 0) { + FUN_004351b4(param_1,iVar2,puVar1); + } + return; +} + + + +/* @00434fa8 file=munga/interest.cpp name=FUN_00434fa8 */ + +void FUN_00434fa8(void) + +{ + FUN_0040385c(s_InterestManager__HostInterestAre_004e7ec6,s_d__tesla_bt_munga_INTEREST_CPP_004e7f0c + ,0x8f1); + return; +} + + + +/* @00434fc4 file=munga/interest.cpp name=FUN_00434fc4 */ + +void FUN_00434fc4(void) + +{ + FUN_0040385c(s_InterestManager__InterestZoneDel_004e7f2b,s_d__tesla_bt_munga_INTEREST_CPP_004e7f6a + ,0x915); + return; +} + + + +/* @00434fe0 file=? name=FUN_00434fe0 */ + +void __cdecl FUN_00434fe0(int param_1,undefined4 param_2) + +{ + int *piVar1; + int local_18 [5]; + + FUN_004353c0(local_18,param_1 + 0x2c); + while( true ) { + piVar1 = (int *)(**(code **)(local_18[0] + 0x28))(local_18); + if (piVar1 == (int *)0x0) break; + (**(code **)(*piVar1 + 0x10))(piVar1,param_2); + } + FUN_0043541d(local_18,2); + return; +} + + + +/* @00435030 file=? name=FUN_00435030 */ + +void __cdecl FUN_00435030(int param_1,undefined4 param_2) + +{ + int *piVar1; + int local_18 [5]; + + FUN_004353c0(local_18,param_1 + 0x2c); + while( true ) { + piVar1 = (int *)(**(code **)(local_18[0] + 0x28))(local_18); + if (piVar1 == (int *)0x0) break; + (**(code **)(*piVar1 + 0x14))(piVar1,param_2); + } + FUN_0043541d(local_18,2); + return; +} + + + +/* @00435080 file=? name=FUN_00435080 */ + +void __cdecl FUN_00435080(undefined4 param_1,int *param_2) + +{ + int iVar1; + int local_18 [5]; + + FUN_004292ac(local_18,*(int *)(DAT_004efc94 + 0x2c)); + while( true ) { + iVar1 = (**(code **)(local_18[0] + 0x28))(local_18); + if (iVar1 == 0) break; + (**(code **)(*param_2 + 0x10))(param_2,iVar1); + } + FUN_004292d0(local_18,2); + return; +} + + + +/* @004350d4 file=? name=FUN_004350d4 */ + +void __cdecl FUN_004350d4(undefined4 param_1,uint *param_2) + +{ + int iVar1; + + iVar1 = 1; + if (*(int *)(DAT_004efc94 + 0x88) == 5) { + iVar1 = 3; + } + FUN_0041acbc(*(int *)(DAT_004efc94 + 0x60),iVar1,*(undefined4 *)(DAT_004efc94 + 0x28),param_2, + DAT_004e17f4); + return; +} + + + +/* @00435120 file=munga/interest.cpp name=FUN_00435120 */ + +void __cdecl FUN_00435120(undefined4 param_1,int *param_2,int param_3,uint *param_4) + +{ + undefined4 uVar1; + int iVar2; + int unaff_ESI; + + uVar1 = FUN_00417ab4(param_3 + 0x40); + iVar2 = (**(code **)(*param_2 + 0x2c))(param_2,uVar1); + if (iVar2 == 0) { + unaff_ESI = 0; + if (*(int *)(DAT_004efc94 + 0x88) == 5) { + unaff_ESI = 1; + } + } + else if (iVar2 == 1) { + unaff_ESI = 0; + if (*(int *)(DAT_004efc94 + 0x88) == 5) { + unaff_ESI = 2; + } + } + else { + FUN_0040385c(s_Application__PostInterestEvent___004e7f89, + s_d__tesla_bt_munga_INTEREST_CPP_004e7fc2,0x9b1); + } + FUN_0041acbc(*(int *)(DAT_004efc94 + 0x60),unaff_ESI,param_3,param_4,DAT_004e17f4); + return; +} + + + +/* @004351b4 file=? name=FUN_004351b4 */ + +void __cdecl FUN_004351b4(undefined4 param_1,undefined4 param_2,uint *param_3) + +{ + int iVar1; + + iVar1 = 2; + if (*(int *)(DAT_004efc94 + 0x88) == 5) { + iVar1 = 4; + } + FUN_0041acbc(*(int *)(DAT_004efc94 + 0x60),iVar1,param_2,param_3,DAT_004e17f4); + return; +} + + + +/* @004351fc file=? name=FUN_004351fc */ + +void __cdecl FUN_004351fc(undefined4 param_1,undefined4 param_2,uint *param_3) + +{ + FUN_0041acbc(*(int *)(DAT_004efc94 + 0x60),3,param_2,param_3,DAT_004e17f4); + return; +} + + + +/* @00435230 file=? name=FUN_00435230 */ + +void __cdecl FUN_00435230(undefined4 param_1,int *param_2) + +{ + (**(code **)(*param_2 + 0x18))(param_2); + return; +} + + + +/* @00435240 file=? name=FUN_00435240 */ + +void __cdecl FUN_00435240(undefined4 *param_1) + +{ + *param_1 = 0xc; + param_1[1] = 5; + param_1[2] = 1; + return; +} + + + +/* @0043525c file=? name=FUN_0043525c */ + +void __cdecl FUN_0043525c(undefined4 *param_1,undefined4 param_2) + +{ + *param_1 = param_2; + param_1[1] = 7; + param_1[2] = 1; + return; +} + + + +/* @00435278 file=? name=FUN_00435278 */ + +undefined4 * __cdecl FUN_00435278(undefined4 *param_1,undefined4 *param_2,undefined4 param_3) + +{ + *param_1 = 0x18; + param_1[1] = 8; + param_1[2] = 1; + FUN_00420e8c(param_1 + 3); + FUN_00420ef4(param_1 + 3,param_2); + param_1[5] = param_3; + return param_1; +} + + + +/* @004352b8 file=? name=FUN_004352b8 */ + +void __cdecl FUN_004352b8(undefined4 *param_1) + +{ + *param_1 = 0xc; + param_1[1] = 9; + param_1[2] = 1; + return; +} + + + +/* @004352d4 file=? name=FUN_004352d4 */ + +void __cdecl FUN_004352d4(undefined4 *param_1) + +{ + *param_1 = 0xc; + param_1[1] = 10; + param_1[2] = 1; + return; +} + + + +/* @00435375 file=? name=FUN_00435375 */ + +undefined4 * __cdecl FUN_00435375(undefined4 *param_1,undefined4 param_2) + +{ + FUN_0041827c(param_1,param_2); + *param_1 = &PTR_FUN_004e806c; + return param_1; +} + + + +/* @00435394 file=? name=FUN_00435394 */ + +void __cdecl FUN_00435394(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e806c; + FUN_004182a8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004353c0 file=? name=FUN_004353c0 */ + +undefined4 * __cdecl FUN_004353c0(undefined4 *param_1,int param_2) + +{ + FUN_00418398(param_1,param_2); + *param_1 = &PTR_FUN_004e8018; + return param_1; +} + + + +/* @004353df file=? name=FUN_004353df */ + +undefined4 * __cdecl FUN_004353df(undefined4 *param_1,int param_2) + +{ + FUN_00418398(param_1,param_2); + *param_1 = &PTR_FUN_004e8018; + return param_1; +} + + + +/* @004353fe file=? name=FUN_004353fe */ + +undefined4 * __cdecl FUN_004353fe(undefined4 *param_1,int param_2) + +{ + FUN_004183c0(param_1,param_2); + *param_1 = &PTR_FUN_004e8018; + return param_1; +} + + + +/* @0043541d file=? name=FUN_0043541d */ + +void __cdecl FUN_0043541d(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e8018; + FUN_004183ec(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0043544c file=? name=FUN_0043544c */ + +undefined4 * __cdecl FUN_0043544c(int param_1) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00402298(0x1c); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_00435478(puVar1,*(undefined4 *)(param_1 + 0x194)); + } + return puVar1; +} + + + +/* @00435478 file=? name=FUN_00435478 */ + +undefined4 * __cdecl FUN_00435478(undefined4 *param_1,undefined4 param_2) + +{ + FUN_004178cc(param_1,2); + *param_1 = &PTR_FUN_004e80f4; + FUN_00435614(param_1 + 4,0); + param_1[3] = param_2; + FUN_00435544((int)param_1,param_2); + return param_1; +} + + + +/* @004354b8 file=? name=FUN_004354b8 */ + +void __cdecl FUN_004354b8(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e80f4; + FUN_00435633(param_1 + 4,2); + FUN_0041790c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004354f4 file=? name=FUN_004354f4 */ + +undefined4 FUN_004354f4(void) + +{ + FUN_00415f1c(); + return 1; +} + + + +/* @00435508 file=? name=FUN_00435508 */ + +void __cdecl FUN_00435508(int param_1,int param_2) + +{ + int iVar1; + + if (param_2 != *(int *)(param_1 + 0xc)) { + *(int *)(param_1 + 0xc) = param_2; + iVar1 = FUN_00417ab4(param_1 + 0x10); + if (iVar1 != 0) { + FUN_00417a5c(param_1 + 0x10); + } + FUN_00435544(param_1,param_2); + } + return; +} + + + +/* @00435544 file=? name=FUN_00435544 */ + +void __cdecl FUN_00435544(int param_1,undefined4 param_2) + +{ + int iVar1; + undefined4 *puVar2; + int *piVar3; + + iVar1 = FUN_00433ed4(*(int *)(DAT_004efc94 + 0x30) + 0x14); + piVar3 = *(int **)(iVar1 + 0x38); + if (piVar3 == (int *)0x0) { + puVar2 = (undefined4 *)FUN_00402298(0x38); + if (puVar2 == (undefined4 *)0x0) { + piVar3 = (int *)0x0; + } + else { + piVar3 = FUN_004343b0(puVar2,param_2); + } + *(int **)(iVar1 + 0x38) = piVar3; + FUN_00434a10(*(int *)(DAT_004efc94 + 0x30),piVar3); + } + (**(code **)(*(int *)(param_1 + 0x10) + 4))(param_1 + 0x10,piVar3); + return; +} + + + +/* @004355bc file=? name=FUN_004355bc */ + +undefined4 * __cdecl FUN_004355bc(undefined4 *param_1,int param_2) + +{ + int iVar1; + + iVar1 = FUN_00417ab4(param_2 + 0x10); + FUN_0043452c(param_1,iVar1); + *param_1 = &PTR_FUN_004e80a0; + return param_1; +} + + + +/* @004355e8 file=? name=FUN_004355e8 */ + +void __cdecl FUN_004355e8(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e80a0; + FUN_00434550(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00435614 file=? name=FUN_00435614 */ + +undefined4 * __cdecl FUN_00435614(undefined4 *param_1,undefined4 param_2) + +{ + FUN_004179d4(param_1,param_2); + *param_1 = &PTR_FUN_004e8098; + return param_1; +} + + + +/* @00435633 file=? name=FUN_00435633 */ + +void __cdecl FUN_00435633(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e8098; + FUN_004179f8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00435660 file=? name=FUN_00435660 */ + +undefined4 * __cdecl +FUN_00435660(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4, + undefined4 param_5) + +{ + FUN_00415e90(param_1,1); + *param_1 = &PTR_FUN_004e81a0; + param_1[3] = param_2; + param_1[4] = param_3; + param_1[5] = param_4; + param_1[6] = param_5; + param_1[7] = 1; + return param_1; +} + + + +/* @0043569c file=? name=FUN_0043569c */ + +void __cdecl FUN_0043569c(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e81a0; + FUN_00415ed8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_00402f98(0x4e8100,param_1); + } + } + return; +} + + + +/* @004356d4 file=? name=FUN_004356d4 */ + +undefined4 * __cdecl FUN_004356d4(undefined4 *param_1) + +{ + FUN_004178cc(param_1,2); + *param_1 = &PTR_FUN_004e8194; + FUN_004359a8(param_1 + 3,0); + return param_1; +} + + + +/* @00435700 file=? name=FUN_00435700 */ + +void __cdecl FUN_00435700(int *param_1,byte param_2) + +{ + undefined4 *puVar1; + int local_10 [3]; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e8194; + FUN_00435a12(local_10,(int)(param_1 + 3)); + while( true ) { + puVar1 = (undefined4 *)(**(code **)(local_10[0] + 0x28))(local_10); + if (puVar1 == (undefined4 *)0x0) break; + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + } + FUN_00435a50(local_10,2); + FUN_004359c7(param_1 + 3,2); + FUN_0041790c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00435780 file=? name=FUN_00435780 */ + +undefined4 FUN_00435780(void) + +{ + FUN_00415f1c(); + return 1; +} + + + +/* @00435794 file=? name=FUN_00435794 */ + +void FUN_00435794(int param_1) + +{ + bool bVar1; + int *piVar2; + undefined4 *puVar3; + int aiStack_38 [3]; + int aiStack_2c [5]; + int aiStack_18 [5]; + + FUN_0042934c(aiStack_18,*(int *)(DAT_004efc94 + 0x2c)); + FUN_004292fc(aiStack_2c,*(int *)(DAT_004efc94 + 0x2c)); + while (piVar2 = (int *)(**(code **)(aiStack_18[0] + 0x28))(aiStack_18), piVar2 != (int *)0x0) { + if (((*(byte *)(piVar2 + 10) & 2) == 0) || (piVar2[4] <= piVar2[5])) { + bVar1 = true; + } + else { + bVar1 = false; + } + if (bVar1) { + FUN_0041f8d4(piVar2,&stack0x00000008); + } + } + while (piVar2 = (int *)(**(code **)(aiStack_2c[0] + 0x28))(aiStack_2c), piVar2 != (int *)0x0) { + if ((piVar2[0x66] != 0) && ((*(byte *)(piVar2 + 10) & 2) == 0)) { + puVar3 = FUN_0041f8d4(piVar2,&stack0x00000008); + FUN_00434db4(); + if (puVar3 != (undefined4 *)0x0) { + FUN_00434e04(*(undefined4 *)(DAT_004efc94 + 0x30),(int)piVar2,(int)puVar3); + } + } + } + FUN_00435a12(aiStack_38,param_1 + 0xc); + while (puVar3 = (undefined4 *)(**(code **)(aiStack_38[0] + 0x28))(aiStack_38), + puVar3 != (undefined4 *)0x0) { + (*(code *)puVar3[4])(puVar3[3]); + if (puVar3[7] != 0) { + FUN_0041c08c(puVar3[3]); + *(uint *)(puVar3[3] + 0x28) = *(uint *)(puVar3[3] + 0x28) & 0xfffffffe; + } + if (puVar3 != (undefined4 *)0x0) { + (**(code **)*puVar3)(puVar3,3); + } + } + FUN_00435a50(aiStack_38,2); + FUN_00429320(aiStack_2c,2); + FUN_00429370(aiStack_18,2); + return; +} + + + +/* @0043579a file=? name=FUN_0043579a */ + +void FUN_0043579a(void) + +{ + int iVar1; + bool bVar2; + int *piVar3; + undefined4 *puVar4; + int unaff_EBP; + + iVar1 = *(int *)(unaff_EBP + 8); + FUN_0042934c((undefined4 *)(unaff_EBP + -0x14),*(int *)(DAT_004efc94 + 0x2c)); + FUN_004292fc((undefined4 *)(unaff_EBP + -0x28),*(int *)(DAT_004efc94 + 0x2c)); + while (piVar3 = (int *)(**(code **)(*(int *)(unaff_EBP + -0x14) + 0x28))(unaff_EBP + -0x14), + piVar3 != (int *)0x0) { + if (((*(byte *)(piVar3 + 10) & 2) == 0) || (piVar3[4] <= piVar3[5])) { + bVar2 = true; + } + else { + bVar2 = false; + } + if (bVar2) { + FUN_0041f8d4(piVar3,unaff_EBP + 0xc); + } + } + while (piVar3 = (int *)(**(code **)(*(int *)(unaff_EBP + -0x28) + 0x28))(unaff_EBP + -0x28), + piVar3 != (int *)0x0) { + if ((piVar3[0x66] != 0) && ((*(byte *)(piVar3 + 10) & 2) == 0)) { + puVar4 = FUN_0041f8d4(piVar3,unaff_EBP + 0xc); + FUN_00434db4(); + if (puVar4 != (undefined4 *)0x0) { + FUN_00434e04(*(undefined4 *)(DAT_004efc94 + 0x30),(int)piVar3,(int)puVar4); + } + } + } + FUN_00435a12((undefined4 *)(unaff_EBP + -0x34),iVar1 + 0xc); + while (puVar4 = (undefined4 *)(**(code **)(*(int *)(unaff_EBP + -0x34) + 0x28))(unaff_EBP + -0x34) + , puVar4 != (undefined4 *)0x0) { + (*(code *)puVar4[4])(puVar4[3]); + if (puVar4[7] != 0) { + FUN_0041c08c(puVar4[3]); + *(uint *)(puVar4[3] + 0x28) = *(uint *)(puVar4[3] + 0x28) & 0xfffffffe; + } + if (puVar4 != (undefined4 *)0x0) { + (**(code **)*puVar4)(puVar4,3); + } + } + FUN_00435a50((int *)(unaff_EBP + -0x34),2); + FUN_00429320((int *)(unaff_EBP + -0x28),2); + FUN_00429370((int *)(unaff_EBP + -0x14),2); + return; +} + + + +/* @004358e8 file=? name=FUN_004358e8 */ + +void __cdecl +FUN_004358e8(int param_1,int param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5) + +{ + int iVar1; + undefined4 *puVar2; + int local_10 [3]; + + FUN_00435a12(local_10,param_1 + 0xc); + do { + iVar1 = (**(code **)(local_10[0] + 0x28))(local_10); + if (iVar1 == 0) goto LAB_0043592f; + } while ((param_2 != *(int *)(iVar1 + 0xc)) || (*(int *)(iVar1 + 0x1c) == 0)); + *(undefined4 *)(iVar1 + 0x1c) = 0; +LAB_0043592f: + puVar2 = FUN_00402f74(0x4e8100); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_00435660(puVar2,param_2,param_3,param_4,param_5); + } + (**(code **)(*(int *)(param_1 + 0xc) + 4))(param_1 + 0xc,puVar2); + FUN_00435a50(local_10,2); + return; +} + + + +/* @004359a8 file=? name=FUN_004359a8 */ + +undefined4 * __cdecl FUN_004359a8(undefined4 *param_1,undefined4 param_2) + +{ + FUN_00417be0(param_1,param_2); + *param_1 = &PTR_FUN_004e818c; + return param_1; +} + + + +/* @004359c7 file=? name=FUN_004359c7 */ + +void __cdecl FUN_004359c7(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e818c; + FUN_00417c0c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004359f3 file=? name=FUN_004359f3 */ + +undefined4 * __cdecl FUN_004359f3(undefined4 *param_1,int param_2) + +{ + FUN_00417d00(param_1,param_2); + *param_1 = &PTR_FUN_004e813c; + return param_1; +} + + + +/* @00435a12 file=? name=FUN_00435a12 */ + +undefined4 * __cdecl FUN_00435a12(undefined4 *param_1,int param_2) + +{ + FUN_00417d00(param_1,param_2); + *param_1 = &PTR_FUN_004e813c; + return param_1; +} + + + +/* @00435a31 file=? name=FUN_00435a31 */ + +undefined4 * __cdecl FUN_00435a31(undefined4 *param_1,int param_2) + +{ + FUN_00417d28(param_1,param_2); + *param_1 = &PTR_FUN_004e813c; + return param_1; +} + + + +/* @00435a50 file=? name=FUN_00435a50 */ + +void __cdecl FUN_00435a50(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e813c; + FUN_00417d54(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00435a7c file=? name=FUN_00435a7c */ + +void __cdecl FUN_00435a7c(undefined4 *param_1) + +{ + param_1[2] = 1; + *param_1 = 0; + param_1[1] = 0; + param_1[3] = 0; + param_1[4] = 0; + param_1[5] = 0; + param_1[6] = 0; + param_1[7] = 0; + param_1[8] = 0xffffffff; + param_1[9] = 0xffffffff; + return; +} + + + +/* @00435abc file=? name=FUN_00435abc */ + +undefined4 FUN_00435abc(void) + +{ + return 1; +} + + + +/* @00435ac8 file=? name=FUN_00435ac8 */ + +undefined4 __cdecl +FUN_00435ac8(int param_1,char *param_2,int param_3,undefined4 param_4,float *param_5) + +{ + float *pfVar1; + int iVar2; + undefined4 *puVar3; + undefined4 uVar4; + + pfVar1 = param_5; + if (param_5 == (float *)0x0) { + pfVar1 = (float *)FUN_00402298(8); + } + iVar2 = FUN_00404118(param_3,s_gamedata_004e81a4,s_ReticleX_004e81ad,pfVar1); + if (iVar2 == 0) { + *pfVar1 = 0.0; + } + iVar2 = FUN_00404118(param_3,s_gamedata_004e81b6,s_ReticleY_004e81bf,pfVar1 + 1); + if (iVar2 == 0) { + pfVar1[1] = 0.0; + } + if (param_5 == (float *)0x0) { + puVar3 = (undefined4 *)FUN_00406db4(param_1,param_2,0xf,1,0,pfVar1,4,-1); + FUN_004022d0((int *)pfVar1); + uVar4 = *puVar3; + } + else { + uVar4 = 0; + } + return uVar4; +} + + + +/* @00435b64 file=? name=FUN_00435b64 */ + +undefined4 * __cdecl +FUN_00435b64(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4, + undefined4 param_5) + +{ + FUN_00434220(param_1,*(undefined4 *)(param_3 + 0x194),param_4,param_5); + *param_1 = &PTR_FUN_004e821c; + FUN_00428cb4(param_1 + 10,0); + param_1[9] = param_2; + return param_1; +} + + + +/* @00435ba8 file=? name=FUN_00435ba8 */ + +void __cdecl FUN_00435ba8(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e821c; + FUN_00428cd3(param_1 + 10,2); + FUN_00434260(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00435be4 file=? name=FUN_00435be4 */ + +undefined4 FUN_00435be4(void) + +{ + FUN_004342bc(); + return 1; +} + + + +/* @00435bf8 file=? name=FUN_00435bf8 */ + +void __cdecl FUN_00435bf8(int param_1,int *param_2) + +{ + uint local_18 [5]; + + (**(code **)(*(int *)(param_1 + 0x28) + 4))(param_1 + 0x28,param_2); + FUN_00436544(local_18,(int)param_2); + FUN_00435120(*(undefined4 *)(DAT_004efc94 + 0x30),param_2,*(int *)(param_1 + 0x24),local_18); + return; +} + + + +/* @00435c44 file=? name=FUN_00435c44 */ + +void __cdecl FUN_00435c44(int param_1,int param_2) + +{ + int local_14 [4]; + + (**(code **)(**(int **)(param_1 + 0x24) + 0x28))(*(int **)(param_1 + 0x24),param_2); + FUN_00415f30(local_14,param_2,0xffffffff); + FUN_004161fc((int)local_14,param_1 + 0x28); + FUN_00415f90(local_14,2); + return; +} + + + +/* @00435c94 file=? name=FUN_00435c94 */ + +void __cdecl FUN_00435c94(int *param_1) + +{ + int iVar1; + int local_18 [5]; + + FUN_00428cff(local_18,(int)(param_1 + 10)); + while( true ) { + iVar1 = (**(code **)(local_18[0] + 0x30))(local_18); + if (iVar1 == 0) break; + (**(code **)(*param_1 + 0x14))(param_1,iVar1); + } + FUN_00428d5c(local_18,2); + return; +} + + + +/* @00435ce0 file=? name=FUN_00435ce0 */ + +undefined4 * __cdecl FUN_00435ce0(undefined4 *param_1,int param_2) + +{ + FUN_00428cff(param_1,param_2 + 0x28); + *param_1 = &PTR_FUN_004e81c8; + return param_1; +} + + + +/* @00435d04 file=? name=FUN_00435d04 */ + +void __cdecl FUN_00435d04(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e81c8; + FUN_00428d5c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00435d30 file=? name=FUN_00435d30 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 * __cdecl +FUN_00435d30(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4, + undefined4 param_5,undefined4 param_6,undefined4 param_7,undefined4 param_8) + +{ + undefined4 uVar1; + + FUN_004178cc(param_1,param_7); + *param_1 = &PTR_FUN_004e3320; + param_1[3] = param_8; + *param_1 = &PTR_FUN_004e8554; + FUN_00436769(param_1 + 0xd,0); + FUN_0042f121(param_1 + 0x10,0); + param_1[4] = 0; + param_1[5] = param_2; + uVar1 = FUN_004dcd94(); + param_1[6] = uVar1; + uVar1 = FUN_004dcd94(); + param_1[7] = uVar1; + param_1[8] = param_3; + param_1[9] = param_4; + param_1[10] = param_5; + param_1[0xb] = param_6; + param_1[0xc] = DAT_004e8244; + return param_1; +} + + + +/* @00435df8 file=? name=FUN_00435df8 */ + +void __cdecl FUN_00435df8(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e8554; + (**(code **)(*param_1 + 0x18))(param_1); + FUN_0042f140(param_1 + 0x10,2); + FUN_00436788(param_1 + 0xd,2); + FUN_0041790c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00435e48 file=? name=FUN_00435e48 */ + +undefined4 __cdecl FUN_00435e48(int param_1) + +{ + int iVar1; + + iVar1 = FUN_0041a1a4(**(int **)(param_1 + 0xc),0x4e82c8); + if (iVar1 == 0) { + return 0; + } + return 1; +} + + + +/* @00435e70 file=? name=FUN_00435e70 */ + +void __cdecl FUN_00435e70(int *param_1,int param_2) + +{ + undefined4 *puVar1; + int *piVar2; + + (**(code **)(*param_1 + 0x18))(param_1); + (**(code **)(param_1[0x10] + 4))(param_1 + 0x10,param_2); + puVar1 = (undefined4 *)FUN_00402298(0x3c); + if (puVar1 == (undefined4 *)0x0) { + piVar2 = (int *)0x0; + } + else { + piVar2 = FUN_00435b64(puVar1,param_1,param_2,param_1[10],param_1[0xb]); + } + FUN_00434a10(*(int *)(DAT_004efc94 + 0x30),piVar2); + (**(code **)(param_1[0xd] + 4))(param_1 + 0xd,piVar2); + return; +} + + + +/* @00435ee4 file=? name=FUN_00435ee4 */ + +void __cdecl FUN_00435ee4(int param_1) + +{ + int *piVar1; + + piVar1 = (int *)FUN_00417ab4(param_1 + 0x34); + if (piVar1 != (int *)0x0) { + FUN_00417a5c(param_1 + 0x40); + FUN_00434a48(*(undefined4 *)(DAT_004efc94 + 0x30),piVar1); + if (piVar1 != (int *)0x0) { + (**(code **)*piVar1)(piVar1,3); + } + } + return; +} + + + +/* @00435f2c file=? name=FUN_00435f2c */ + +void __cdecl FUN_00435f2c(int *param_1,undefined4 param_2) + +{ + int *piVar1; + + param_1[4] = 1; + piVar1 = (int *)FUN_00414b60(); + param_1[7] = *piVar1; + FUN_00436310(*(int *)(DAT_004efc94 + 0x38),param_1); + (**(code **)(*param_1 + 0x30))(param_1,param_2); + return; +} + + + +/* @00435f6c file=? name=FUN_00435f6c */ + +void __cdecl FUN_00435f6c(int *param_1) + +{ + if (param_1[4] != 0) { + param_1[4] = 0; + FUN_0043632c(*(int *)(DAT_004efc94 + 0x38),(int)param_1); + (**(code **)(*param_1 + 0x34))(param_1); + } + return; +} + + + +/* @00435f9c file=? name=FUN_00435f9c */ + +void __cdecl FUN_00435f9c(int param_1) + +{ + *(undefined4 *)(param_1 + 0x10) = 2; + return; +} + + + +/* @00435fac file=? name=FUN_00435fac */ + +void __cdecl FUN_00435fac(int param_1,int param_2) + +{ + int iVar1; + int *piVar2; + + if ((*(int *)(param_1 + 0x10) != 0) && (*(int *)(param_1 + 0x1c) <= param_2)) { + iVar1 = FUN_00417ab4(param_1 + 0x40); + piVar2 = (int *)FUN_00417ab4(param_1 + 0x34); + (**(code **)(*piVar2 + 0xc))(piVar2,*(undefined4 *)(iVar1 + 0x194)); + } + return; +} + + + +/* @00435ff0 file=? name=FUN_00435ff0 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_00435ff0(int *param_1,int param_2,undefined4 param_3) + +{ + int *piVar1; + float fVar2; + int *piVar3; + int iVar4; + float10 fVar5; + int local_24 [5]; + float local_10; + float local_c; + float local_8; + + if ((param_1[4] != 0) && (param_1[7] <= param_2)) { + piVar3 = (int *)FUN_00414b60(); + piVar1 = param_1 + 7; + *piVar1 = *piVar3; + *piVar1 = *piVar1 + param_1[6]; + fVar5 = FUN_00401b1c(); + local_8 = (float)fVar5; + fVar2 = local_8 + (float)param_1[0xc]; + local_c = _DAT_004360dc; + if ((_DAT_004360dc <= fVar2) && (local_c = fVar2, _DAT_004360e0 < fVar2)) { + local_c = _DAT_004360e0; + } + iVar4 = FUN_00417ab4((int)(param_1 + 0xd)); + FUN_00435ce0(local_24,iVar4); + (**(code **)(*param_1 + 0x2c))(param_1,param_3,local_24); + fVar5 = FUN_00401b1c(); + while (((local_10 = (float)fVar5, local_8 < local_10 && (local_10 < local_c)) && + (iVar4 = (**(code **)(*param_1 + 0x1c))(param_1), iVar4 != 0))) { + fVar5 = FUN_00401b1c(); + } + FUN_00435d04(local_24,2); + } + return; +} + + + +/* @0043610c file=? name=FUN_0043610c */ + +void __cdecl FUN_0043610c(int *param_1,int param_2) + +{ + (**(code **)(*param_1 + 0x28))(param_1,*(undefined4 *)(param_2 + 0xc)); + return; +} + + + +/* @00436124 file=? name=FUN_00436124 */ + +void __cdecl FUN_00436124(int *param_1,int param_2) + +{ + int iVar1; + int iVar2; + int iVar3; + int iVar4; + + iVar1 = FUN_00436610(param_2); + if (iVar1 != 0) { + iVar4 = *(int *)(param_2 + 0x18); + iVar2 = FUN_00407064(*(int *)(DAT_004efc94 + 0x68),iVar4,0xf); + iVar3 = *(int *)(iVar2 + 4); + *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + 1; + if (iVar3 == 0) { + FUN_00406cd0(iVar2); + } + if (**(int **)(iVar2 + 0x3c) != 0) { + iVar3 = FUN_00416f08(); + iVar3 = FUN_00430878(iVar3,iVar1); + if (iVar3 != -1) { + iVar4 = iVar3; + } + } + (**(code **)(*param_1 + 0x38))(param_1,iVar1,*(undefined4 *)(param_2 + 0x14),iVar4); + *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + -1; + } + return; +} + + + +/* @004361a8 file=? name=FUN_004361a8 */ + +void __cdecl FUN_004361a8(int *param_1,int param_2) + +{ + int iVar1; + + iVar1 = FUN_00436610(param_2); + if (iVar1 != 0) { + (**(code **)(*param_1 + 0x3c))(param_1,iVar1); + } + return; +} + + + +/* @004361d0 file=? name=FUN_004361d0 */ + +void __cdecl FUN_004361d0(int *param_1,int param_2) + +{ + int iVar1; + + iVar1 = FUN_00436610(param_2); + if (iVar1 != 0) { + (**(code **)(*param_1 + 0x40)) + (param_1,iVar1,*(undefined4 *)(param_2 + 0x14),*(undefined4 *)(param_2 + 0x18), + *(undefined4 *)(param_2 + 0x1c)); + } + return; +} + + + +/* @00436204 file=? name=FUN_00436204 */ + +void __cdecl FUN_00436204(int *param_1,int param_2) + +{ + int iVar1; + + iVar1 = FUN_00436610(param_2); + if (iVar1 != 0) { + (**(code **)(*param_1 + 0x44)) + (param_1,iVar1,*(undefined4 *)(param_2 + 0x14),*(undefined4 *)(param_2 + 0x18)); + } + return; +} + + + +/* @00436234 file=munga/renderer.cpp name=FUN_00436234 */ + +void FUN_00436234(void) + +{ + FUN_0040385c(s_Renderer__ExecuteImplementation___004e8392, + s_d__tesla_bt_munga_RENDERER_CPP_004e83cc,0x297); + return; +} + + + +/* @00436250 file=munga/renderer.cpp name=FUN_00436250 */ + +void FUN_00436250(void) + +{ + FUN_0040385c(s_Renderer__LoadMissionImplementat_004e83eb,s_d__tesla_bt_munga_RENDERER_CPP_004e8429 + ,0x2a2); + return; +} + + + +/* @0043626c file=munga/renderer.cpp name=FUN_0043626c */ + +void FUN_0043626c(void) + +{ + FUN_0040385c(s_Renderer__ShutdownImplementation_004e8448,s_d__tesla_bt_munga_RENDERER_CPP_004e8483 + ,0x2ad); + return; +} + + + +/* @00436288 file=? name=FUN_00436288 */ + +undefined4 * __cdecl FUN_00436288(undefined4 *param_1) + +{ + FUN_004178cc(param_1,0x26); + *param_1 = &PTR_FUN_004e3320; + param_1[3] = &DAT_004e2d1c; + *param_1 = &PTR_FUN_004e8540; + FUN_004367b4(param_1 + 4,0); + return param_1; +} + + + +/* @004362c0 file=? name=FUN_004362c0 */ + +void __cdecl FUN_004362c0(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e8540; + FUN_004367d3(param_1 + 4,2); + FUN_0041790c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004362fc file=? name=FUN_004362fc */ + +undefined4 __cdecl FUN_004362fc(int param_1) + +{ + FUN_00419df0(param_1); + return 1; +} + + + +/* @00436310 file=? name=FUN_00436310 */ + +void __cdecl FUN_00436310(int param_1,undefined4 param_2) + +{ + (**(code **)(*(int *)(param_1 + 0x10) + 4))(param_1 + 0x10,param_2); + return; +} + + + +/* @0043632c file=? name=FUN_0043632c */ + +void __cdecl FUN_0043632c(int param_1,int param_2) + +{ + int local_18 [5]; + + FUN_004367ff(local_18,param_1 + 0x10); + FUN_0041781c(local_18,param_2); + FUN_0043685c(local_18,2); + return; +} + + + +/* @00436368 file=? name=FUN_00436368 */ + +undefined4 __cdecl FUN_00436368(int param_1) + +{ + int iVar1; + undefined4 uVar2; + int local_18 [5]; + + FUN_004367ff(local_18,param_1 + 0x10); + iVar1 = (**(code **)(local_18[0] + 0x30))(local_18); + if (iVar1 == 0) { + uVar2 = 0; + FUN_0043685c(local_18,2); + } + else { + do { + iVar1 = (**(code **)(local_18[0] + 0x28))(local_18); + if (iVar1 == 0) { + uVar2 = 1; + FUN_0043685c(local_18,2); + return uVar2; + } + } while (*(int *)(iVar1 + 0x10) == 2); + uVar2 = 0; + FUN_0043685c(local_18,2); + } + return uVar2; +} + + + +/* @004363ec file=? name=FUN_004363ec */ + +void __cdecl FUN_004363ec(int param_1,int param_2) + +{ + int iVar1; + int local_18 [5]; + + FUN_004367ff(local_18,param_1 + 0x10); + while( true ) { + iVar1 = (**(code **)(local_18[0] + 0x28))(local_18); + if (iVar1 == 0) break; + FUN_00435fac(iVar1,param_2); + } + FUN_0043685c(local_18,2); + return; +} + + + +/* @00436440 file=? name=FUN_00436440 */ + +void __cdecl FUN_00436440(int param_1,int param_2) + +{ + int *piVar1; + int local_1c [5]; + int local_8; + + FUN_004367ff(local_1c,param_1 + 0x10); + while( true ) { + piVar1 = (int *)(**(code **)(local_1c[0] + 0x28))(local_1c); + if (piVar1 == (int *)0x0) break; + local_8 = piVar1[8]; + FUN_00435ff0(piVar1,param_2,local_8); + } + FUN_0043685c(local_1c,2); + return; +} + + + +/* @0043649c file=? name=FUN_0043649c */ + +void __cdecl FUN_0043649c(int param_1) + +{ + int *piVar1; + int local_18 [5]; + + FUN_004367ff(local_18,param_1 + 0x10); + while( true ) { + piVar1 = (int *)(**(code **)(local_18[0] + 0x28))(local_18); + if (piVar1 == (int *)0x0) break; + (**(code **)(*piVar1 + 0x20))(piVar1); + } + FUN_0043685c(local_18,2); + return; +} + + + +/* @004364e4 file=? name=FUN_004364e4 */ + +void __cdecl FUN_004364e4(int param_1,int *param_2,uint *param_3) + +{ + int iVar1; + int local_18 [5]; + + FUN_004367ff(local_18,param_1 + 0x10); + while( true ) { + iVar1 = (**(code **)(local_18[0] + 0x28))(local_18); + if (iVar1 == 0) break; + FUN_00435120(*(undefined4 *)(DAT_004efc94 + 0x30),param_2,iVar1,param_3); + } + FUN_0043685c(local_18,2); + return; +} + + + +/* @00436544 file=? name=FUN_00436544 */ + +undefined4 * __cdecl FUN_00436544(undefined4 *param_1,int param_2) + +{ + *param_1 = 0x14; + param_1[1] = 3; + param_1[2] = 1; + FUN_00420e8c(param_1 + 3); + FUN_00420ef4(param_1 + 3,(undefined4 *)(param_2 + 0x184)); + return param_1; +} + + + +/* @00436584 file=? name=FUN_00436584 */ + +void __cdecl FUN_00436584(int param_1) + +{ + (**(code **)(*(int *)(*(int *)(DAT_004efc94 + 0x2c) + 0x54) + 0xc)) + (*(int *)(DAT_004efc94 + 0x2c) + 0x54,param_1 + 0xc); + return; +} + + + +/* @004365b0 file=? name=FUN_004365b0 */ + +void __cdecl FUN_004365b0(undefined4 *param_1,undefined4 param_2) + +{ + *param_1 = 0x10; + param_1[1] = 4; + param_1[2] = 1; + param_1[3] = param_2; + return; +} + + + +/* @004365d4 file=? name=FUN_004365d4 */ + +undefined4 * __cdecl +FUN_004365d4(undefined4 *param_1,undefined4 param_2,undefined4 param_3,int param_4) + +{ + *param_1 = param_3; + param_1[1] = param_2; + param_1[2] = 1; + FUN_00420e8c(param_1 + 3); + FUN_00420ef4(param_1 + 3,(undefined4 *)(param_4 + 0x184)); + return param_1; +} + + + +/* @00436610 file=? name=FUN_00436610 */ + +void __cdecl FUN_00436610(int param_1) + +{ + (**(code **)(*(int *)(*(int *)(DAT_004efc94 + 0x2c) + 0x54) + 0xc)) + (*(int *)(DAT_004efc94 + 0x2c) + 0x54,param_1 + 0xc); + return; +} + + + +/* @0043663c file=? name=FUN_0043663c */ + +undefined4 * __cdecl +FUN_0043663c(undefined4 *param_1,int param_2,undefined4 param_3,undefined4 param_4) + +{ + FUN_004365d4(param_1,5,0x1c,param_2); + param_1[5] = param_3; + param_1[6] = param_4; + return param_1; +} + + + +/* @00436668 file=? name=FUN_00436668 */ + +undefined4 * __cdecl FUN_00436668(undefined4 *param_1,int param_2) + +{ + FUN_004365d4(param_1,6,0x14,param_2); + return param_1; +} + + + +/* @00436688 file=? name=FUN_00436688 */ + +undefined4 * __cdecl +FUN_00436688(undefined4 *param_1,int param_2,undefined4 param_3,undefined4 param_4, + undefined4 param_5) + +{ + FUN_004365d4(param_1,7,0x20,param_2); + param_1[5] = param_3; + param_1[6] = param_4; + param_1[7] = param_5; + return param_1; +} + + + +/* @004366b8 file=? name=FUN_004366b8 */ + +undefined4 * __cdecl +FUN_004366b8(undefined4 *param_1,int param_2,undefined4 param_3,undefined4 param_4) + +{ + FUN_004365d4(param_1,8,0x1c,param_2); + param_1[5] = param_3; + param_1[6] = param_4; + return param_1; +} + + + +/* @00436769 file=? name=FUN_00436769 */ + +undefined4 * __cdecl FUN_00436769(undefined4 *param_1,undefined4 param_2) + +{ + FUN_004179d4(param_1,param_2); + *param_1 = &PTR_FUN_004e8538; + return param_1; +} + + + +/* @00436788 file=? name=FUN_00436788 */ + +void __cdecl FUN_00436788(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e8538; + FUN_004179f8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004367b4 file=? name=FUN_004367b4 */ + +undefined4 * __cdecl FUN_004367b4(undefined4 *param_1,undefined4 param_2) + +{ + FUN_0041827c(param_1,param_2); + *param_1 = &PTR_FUN_004e8530; + return param_1; +} + + + +/* @004367d3 file=? name=FUN_004367d3 */ + +void __cdecl FUN_004367d3(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e8530; + FUN_004182a8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004367ff file=? name=FUN_004367ff */ + +undefined4 * __cdecl FUN_004367ff(undefined4 *param_1,int param_2) + +{ + FUN_00418398(param_1,param_2); + *param_1 = &PTR_FUN_004e84dc; + return param_1; +} + + + +/* @0043681e file=? name=FUN_0043681e */ + +undefined4 * __cdecl FUN_0043681e(undefined4 *param_1,int param_2) + +{ + FUN_00418398(param_1,param_2); + *param_1 = &PTR_FUN_004e84dc; + return param_1; +} + + + +/* @0043683d file=? name=FUN_0043683d */ + +undefined4 * __cdecl FUN_0043683d(undefined4 *param_1,int param_2) + +{ + FUN_004183c0(param_1,param_2); + *param_1 = &PTR_FUN_004e84dc; + return param_1; +} + + + +/* @0043685c file=? name=FUN_0043685c */ + +void __cdecl FUN_0043685c(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e84dc; + FUN_004183ec(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00436888 file=? name=FUN_00436888 */ + +undefined4 FUN_00436888(void) + +{ + return 0; +} + + + +/* @0043688f file=? name=FUN_0043688f */ + +undefined4 FUN_0043688f(void) + +{ + return 1; +} + + + +/* @00436899 file=? name=FUN_00436899 */ + +void FUN_00436899(void) + +{ + return; +} + + + +/* @0043689e file=? name=FUN_0043689e */ + +void FUN_0043689e(void) + +{ + return; +} + + + +/* @004368a3 file=? name=FUN_004368a3 */ + +void FUN_004368a3(void) + +{ + return; +} + + + +/* @004368a8 file=? name=FUN_004368a8 */ + +void FUN_004368a8(void) + +{ + return; +} + + + +/* @004368ad file=? name=FUN_004368ad */ + +void FUN_004368ad(void) + +{ + return; +} + + + +/* @004368b2 file=? name=FUN_004368b2 */ + +void FUN_004368b2(void) + +{ + return; +} + + + +/* @004368b8 file=? name=FUN_004368b8 */ + +undefined4 * __cdecl +FUN_004368b8(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4, + undefined4 param_5,undefined4 param_6) + +{ + FUN_00435d30(param_1,param_2,param_3,param_4,param_5,param_6,8,&DAT_004e82f8); + *param_1 = &PTR_FUN_004e85e0; + param_1[0x13] = 0; + return param_1; +} + + + +/* @004368f4 file=? name=FUN_004368f4 */ + +void __cdecl FUN_004368f4(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e85e0; + FUN_00435df8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00436920 file=? name=FUN_00436920 */ + +void __cdecl FUN_00436920(int *param_1,int param_2) + +{ + int iVar1; + int iVar2; + undefined4 uVar3; + + if (param_1[0x13] == 0) { + iVar2 = FUN_00417ab4((int)(param_1 + 0x10)); + if (iVar2 == param_2) { + uVar3 = 1; + } + else { + uVar3 = 0; + } + } + else { + uVar3 = 0; + } + iVar2 = FUN_00407064(*(int *)(DAT_004efc94 + 0x68),*(int *)(param_2 + 0x1bc),10); + if ((iVar2 != 0) && + (iVar1 = *(int *)(iVar2 + 4), *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + 1, iVar1 == 0)) { + FUN_00406cd0(iVar2); + } + (**(code **)(*param_1 + 0x48))(param_1,param_2,iVar2,uVar3); + if (iVar2 != 0) { + *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + -1; + } + return; +} + + + +/* @004369a0 file=? name=FUN_004369a0 */ + +void __cdecl FUN_004369a0(undefined4 param_1,int param_2) + +{ + undefined4 *puVar1; + int local_2c [5]; + int local_18 [5]; + + FUN_004214f0(local_18,param_2); + (**(code **)(local_18[0] + 8))(local_18); + while( true ) { + puVar1 = (undefined4 *)(**(code **)(local_18[0] + 0x2c))(local_18); + if (puVar1 == (undefined4 *)0x0) break; + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + } + FUN_00421534(local_18,2); + FUN_00421480(local_2c,param_2); + (**(code **)(local_2c[0] + 8))(local_2c); + while( true ) { + puVar1 = (undefined4 *)(**(code **)(local_2c[0] + 0x2c))(local_2c); + if (puVar1 == (undefined4 *)0x0) break; + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + } + FUN_004214c4(local_2c,2); + return; +} + + + +/* @00436a40 file=? name=FUN_00436a40 */ + +void FUN_00436a40(void) + +{ + return; +} + + + +/* @00436a48 file=? name=FUN_00436a48 */ + +void __cdecl FUN_00436a48(undefined4 param_1,int param_2) + +{ + uint uVar1; + uint uVar2; + int *piVar3; + byte bVar4; + + if (*(int *)(param_2 + 4) != 0x7d9) { + uVar1 = *(uint *)(param_2 + 4); + FUN_004dbb24(&DAT_00524e20,s_Entity_004e859c,(char *)0x0); + uVar2 = *(uint *)(param_2 + 0x188); + bVar4 = 0x3a; + piVar3 = FUN_004db78c(&DAT_00524e20,*(uint *)(param_2 + 0x184)); + piVar3 = FUN_004db92c(piVar3,bVar4); + piVar3 = FUN_004db78c(piVar3,uVar2); + FUN_004dbb24(piVar3,s_class_004e85a4,(char *)0x0); + FUN_004db78c(piVar3,uVar1); + FUN_004dbb24(&DAT_00524e20,s_couldn_t_figure_out_how_to_MakeE_004e85ab,(char *)0x0); + } + return; +} + + + +/* @00436ae0 file=? name=FUN_00436ae0 */ + +void FUN_00436ae0(void) + +{ + return; +} + + + +/* @00436ae8 file=? name=FUN_00436ae8 */ + +void FUN_00436ae8(void) + +{ + return; +} + + + +/* @00436af0 file=? name=FUN_00436af0 */ + +void FUN_00436af0(void) + +{ + return; +} + + + +/* @00436af8 file=? name=FUN_00436af8 */ + +void FUN_00436af8(void) + +{ + return; +} + + + +/* @00436b00 file=? name=FUN_00436b00 */ + +void __cdecl FUN_00436b00(int param_1) + +{ + FUN_0041a1a4(**(int **)(param_1 + 0xc),0x4e82c8); + return; +} + + + +/* @00436b1c file=? name=FUN_00436b1c */ + +undefined4 * __cdecl FUN_00436b1c(undefined4 *param_1) + +{ + *param_1 = &PTR_FUN_004e87e4; + FUN_0042f121(param_1 + 2,0); + param_1[1] = 0; + param_1[5] = 0x42c80000; + param_1[6] = 0x3f800000; + param_1[7] = 0x3f800000; + param_1[8] = 0x41200000; + param_1[9] = 0x3d4ccccd; + param_1[10] = 0x3f000000; + param_1[0xb] = 0x41200000; + param_1[0xc] = 0x3d4ccccd; + param_1[0xd] = 0x3dcccccd; + param_1[0xe] = 0x43ac8000; + param_1[0xf] = 0x41a00000; + param_1[0x10] = 0x3f000000; + param_1[0x11] = 0x3f000000; + return param_1; +} + + + +/* @00436b9c file=? name=FUN_00436b9c */ + +void __cdecl FUN_00436b9c(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e87e4; + FUN_0042f140(param_1 + 2,2); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00436bcc file=? name=FUN_00436bcc */ + +undefined4 FUN_00436bcc(void) + +{ + return 1; +} + + + +/* @00436bd8 file=? name=FUN_00436bd8 */ + +void __cdecl FUN_00436bd8(int param_1,undefined4 param_2) + +{ + int iVar1; + int iVar2; + + iVar1 = param_1 + 8; + iVar2 = FUN_00417ab4(iVar1); + if (iVar2 != 0) { + FUN_00417a5c(iVar1); + } + (**(code **)(*(int *)(param_1 + 8) + 4))(iVar1,param_2); + return; +} + + + +/* @00436c08 file=? name=FUN_00436c08 */ + +undefined4 * __cdecl FUN_00436c08(undefined4 *param_1,int param_2) + +{ + int iVar1; + int iVar2; + undefined4 *puVar3; + undefined4 *puVar4; + + iVar1 = FUN_00417ab4(param_2 + 8); + puVar3 = (undefined4 *)(iVar1 + 0xd0); + puVar4 = param_1; + for (iVar2 = 0xc; iVar2 != 0; iVar2 = iVar2 + -1) { + *puVar4 = *puVar3; + puVar3 = puVar3 + 1; + puVar4 = puVar4 + 1; + } + return param_1; +} + + + +/* @00436c38 file=? name=FUN_00436c38 */ + +void __cdecl FUN_00436c38(int param_1) + +{ + *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1; + return; +} + + + +/* @00436c44 file=? name=FUN_00436c44 */ + +void __cdecl FUN_00436c44(int param_1,undefined4 param_2) + +{ + *(undefined4 *)(param_1 + 0x14) = param_2; + return; +} + + + +/* @00436c54 file=? name=FUN_00436c54 */ + +bool __cdecl FUN_00436c54(int param_1,float *param_2) + +{ + int iVar1; + float local_10; + float local_c; + float local_8; + + iVar1 = FUN_00417ab4(param_1 + 8); + FUN_00408644(&local_10,(float *)(iVar1 + 0x100),param_2); + return *(float *)(param_1 + 0x14) * *(float *)(param_1 + 0x14) < + local_8 * local_8 + local_c * local_c + local_10 * local_10; +} + + + +/* @00436cac file=? name=FUN_00436cac */ + +void __cdecl FUN_00436cac(int param_1,undefined4 param_2,undefined4 param_3) + +{ + *(undefined4 *)(param_1 + 0x3c) = param_2; + *(undefined4 *)(param_1 + 0x38) = param_3; + return; +} + + + +/* @00436cc0 file=? name=FUN_00436cc0 */ + +void __cdecl FUN_00436cc0(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) + +{ + *(undefined4 *)(param_1 + 0x1c) = param_2; + *(undefined4 *)(param_1 + 0x20) = param_3; + *(undefined4 *)(param_1 + 0x24) = param_4; + return; +} + + + +/* @00436cdc file=? name=FUN_00436cdc */ + +void __cdecl FUN_00436cdc(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) + +{ + *(undefined4 *)(param_1 + 0x28) = param_2; + *(undefined4 *)(param_1 + 0x2c) = param_3; + *(undefined4 *)(param_1 + 0x30) = param_4; + return; +} + + + +/* @00436cf8 file=? name=FUN_00436cf8 */ + +void __cdecl FUN_00436cf8(int param_1,undefined4 param_2,undefined4 param_3) + +{ + *(undefined4 *)(param_1 + 0x40) = param_2; + *(undefined4 *)(param_1 + 0x44) = param_3; + return; +} + + + +/* @00436d0c file=? name=FUN_00436d0c */ + +void FUN_00436d0c(void) + +{ + return; +} + + + +/* @00436d14 file=? name=FUN_00436d14 */ + +undefined4 * __cdecl FUN_00436d14(undefined4 *param_1,int *param_2,undefined4 param_3) + +{ + FUN_0041b868(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004e87c8; + FUN_00436f51(param_1 + 5,0); + param_1[4] = 0xffffffff; + return param_1; +} + + + +/* @00436d4c file=? name=FUN_00436d4c */ + +void __cdecl FUN_00436d4c(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e87c8; + FUN_00436f70(param_1 + 5,2); + FUN_0041b898(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00436d88 file=? name=FUN_00436d88 */ + +undefined4 __cdecl FUN_00436d88(int param_1) + +{ + int iVar1; + + iVar1 = FUN_0041a1a4(**(int **)(param_1 + 0xc),0x4e8668); + if (iVar1 == 0) { + return 0; + } + return 1; +} + + + +/* @00436db0 file=? name=FUN_00436db0 */ + +void __cdecl FUN_00436db0(int param_1) + +{ + int iVar1; + int *piVar2; + int local_10 [3]; + + iVar1 = *(int *)(*(int *)(*(int *)(DAT_004efc94 + 0x44) + 0x4c) + 4); + if (*(int *)(param_1 + 0x10) <= iVar1) { + *(int *)(param_1 + 0x10) = iVar1 + 2; + FUN_00437025(local_10,param_1 + 0x14); + while( true ) { + piVar2 = (int *)(**(code **)(local_10[0] + 0x28))(local_10); + if (piVar2 == (int *)0x0) break; + (**(code **)(*piVar2 + 0x14))(piVar2); + } + FUN_00437082(local_10,2); + } + return; +} + + + +/* @00436e14 file=? name=FUN_00436e14 */ + +void __cdecl FUN_00436e14(int param_1) + +{ + FUN_00436db0(param_1); + return; +} + + + +/* @00436e24 file=munga/audio.cpp name=FUN_00436e24 */ + +void FUN_00436e24(void) + +{ + FUN_0040385c(s_AudioComponent__ReceiveControl___004e86be,s_d__tesla_bt_munga_AUDIO_CPP_004e86f7, + 0x1b4); + return; +} + + + +/* @00436e40 file=? name=FUN_00436e40 */ + +void __cdecl FUN_00436e40(undefined4 param_1,undefined4 param_2,undefined4 param_3) + +{ + uint local_18 [5]; + + FUN_00436ea4(local_18,param_2,param_3); + FUN_0041acbc(*(int *)(DAT_004efc94 + 0x60),2,param_1,local_18,DAT_004e17f4); + return; +} + + + +/* @00436e88 file=? name=FUN_00436e88 */ + +void __cdecl FUN_00436e88(int *param_1,int param_2) + +{ + (**(code **)(*param_1 + 0x18)) + (param_1,*(undefined4 *)(param_2 + 0xc),*(undefined4 *)(param_2 + 0x10)); + return; +} + + + +/* @00436ea4 file=? name=FUN_00436ea4 */ + +void __cdecl FUN_00436ea4(undefined4 *param_1,undefined4 param_2,undefined4 param_3) + +{ + *param_1 = 0x14; + param_1[1] = 3; + param_1[2] = 1; + param_1[3] = param_2; + param_1[4] = param_3; + return; +} + + + +/* @00436f51 file=? name=FUN_00436f51 */ + +undefined4 * __cdecl FUN_00436f51(undefined4 *param_1,undefined4 param_2) + +{ + FUN_00417be0(param_1,param_2); + *param_1 = &PTR_FUN_004e87c0; + return param_1; +} + + + +/* @00436f70 file=? name=FUN_00436f70 */ + +void __cdecl FUN_00436f70(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e87c0; + FUN_00417c0c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00436f9c file=? name=FUN_00436f9c */ + +undefined4 * __cdecl FUN_00436f9c(undefined4 *param_1,int param_2) + +{ + FUN_004188dc(param_1,param_2); + *param_1 = &PTR_FUN_004e8764; + return param_1; +} + + + +/* @00436fbb file=? name=FUN_00436fbb */ + +undefined4 * __cdecl FUN_00436fbb(undefined4 *param_1,int param_2) + +{ + FUN_004188dc(param_1,param_2); + *param_1 = &PTR_FUN_004e8764; + return param_1; +} + + + +/* @00436fda file=? name=FUN_00436fda */ + +undefined4 * __cdecl FUN_00436fda(undefined4 *param_1,int param_2) + +{ + FUN_00418904(param_1,param_2); + *param_1 = &PTR_FUN_004e8764; + return param_1; +} + + + +/* @00436ff9 file=? name=FUN_00436ff9 */ + +void __cdecl FUN_00436ff9(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e8764; + FUN_00418930(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00437025 file=? name=FUN_00437025 */ + +undefined4 * __cdecl FUN_00437025(undefined4 *param_1,int param_2) + +{ + FUN_00417d00(param_1,param_2); + *param_1 = &PTR_FUN_004e8714; + return param_1; +} + + + +/* @00437044 file=? name=FUN_00437044 */ + +undefined4 * __cdecl FUN_00437044(undefined4 *param_1,int param_2) + +{ + FUN_00417d00(param_1,param_2); + *param_1 = &PTR_FUN_004e8714; + return param_1; +} + + + +/* @00437063 file=? name=FUN_00437063 */ + +undefined4 * __cdecl FUN_00437063(undefined4 *param_1,int param_2) + +{ + FUN_00417d28(param_1,param_2); + *param_1 = &PTR_FUN_004e8714; + return param_1; +} + + + +/* @00437082 file=? name=FUN_00437082 */ + +void __cdecl FUN_00437082(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e8714; + FUN_00417d54(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004370b0 file=? name=FUN_004370b0 */ + +undefined4 * __cdecl FUN_004370b0(undefined4 *param_1,int param_2,undefined4 param_3) + +{ + int iVar1; + + FUN_00430180(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004e884c; + FUN_0042f121(param_1 + 0x77,0); + iVar1 = (**(code **)(*(int *)(*(int *)(DAT_004efc94 + 0x2c) + 0x54) + 0xc)) + (*(int *)(DAT_004efc94 + 0x2c) + 0x54,param_2 + 0x5c); + if (iVar1 == 0) { + param_1[0x7a] = 0; + } + else { + (**(code **)(param_1[0x77] + 4))(param_1 + 0x77,iVar1); + param_1[0x7a] = *(undefined4 *)(param_2 + 100); + } + param_1[7] = PTR_FUN_004e8834; + param_1[8] = DAT_004e8838; + param_1[9] = DAT_004e883c; + param_1[10] = param_1[10] | 0x10; + return param_1; +} + + + +/* @00437154 file=? name=FUN_00437154 */ + +void __cdecl FUN_00437154(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e884c; + FUN_0042f140(param_1 + 0x77,2); + FUN_00430340(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00437194 file=? name=FUN_00437194 */ + +undefined4 __cdecl FUN_00437194(int param_1) + +{ + int iVar1; + + iVar1 = FUN_0041a1a4(**(int **)(param_1 + 0xc),0x4e87f0); + if (iVar1 == 0) { + return 0; + } + return 1; +} + + + +/* @004371c8 file=? name=FUN_004371c8 */ + +undefined4 * __cdecl FUN_004371c8(int param_1) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00402298(0x1ec); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_004370b0(puVar1,param_1,&DAT_004e8820); + } + return puVar1; +} + + + +/* @004371f8 file=? name=FUN_004371f8 */ + +void __cdecl FUN_004371f8(int param_1) + +{ + int iVar1; + + iVar1 = FUN_00417ab4(param_1 + 0x1dc); + if (iVar1 == 0) { + FUN_0042061c(param_1); + } + else { + FUN_00424da8(iVar1,*(int *)(param_1 + 0x1e8),(float *)(param_1 + 0xd0)); + FUN_0040a968((undefined4 *)(param_1 + 0x100),(float *)(param_1 + 0xd0)); + FUN_0040a938((undefined4 *)(param_1 + 300),(undefined4 *)(param_1 + 0x100)); + FUN_0042fa8c(param_1); + } + return; +} + + + +/* @00437268 file=? name=FUN_00437268 */ + +undefined4 * __cdecl +FUN_00437268(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4) + +{ + *param_1 = 0x68; + param_1[1] = 3; + param_1[2] = 1; + FUN_00420ea4(param_1 + 3,(undefined4 *)&DAT_00522524); + param_1[5] = 0; + param_1[6] = 0; + param_1[7] = 0x54; + FUN_00420ea4(param_1 + 8,(undefined4 *)&DAT_00522524); + param_1[10] = param_2; + param_1[0xb] = 0x10c; + param_1[0xc] = *(undefined4 *)(param_3 + 0x100); + param_1[0xd] = *(undefined4 *)(param_3 + 0x104); + param_1[0xe] = *(undefined4 *)(param_3 + 0x108); + param_1[0xf] = *(undefined4 *)(param_3 + 0x10c); + param_1[0x10] = *(undefined4 *)(param_3 + 0x110); + param_1[0x11] = *(undefined4 *)(param_3 + 0x114); + param_1[0x12] = *(undefined4 *)(param_3 + 0x118); + FUN_00420ea4(param_1 + 0x13,(undefined4 *)(param_3 + 0x184)); + FUN_00420ea4(param_1 + 0x15,(undefined4 *)&DAT_00522524); + FUN_00420ea4(param_1 + 0x17,(undefined4 *)(param_3 + 0x184)); + param_1[0x19] = param_4; + return param_1; +} + + + +/* @004373e8 file=? name=FUN_004373e8 */ + +void __cdecl FUN_004373e8(undefined4 *param_1) + +{ + *param_1 = *(undefined4 *)(*(int *)(*(int *)(DAT_004efc94 + 0x44) + 0x4c) + 4); + return; +} + + + +/* @00437404 file=? name=FUN_00437404 */ + +void FUN_00437404(void) + +{ + FUN_004dcd94(); + return; +} + + + +/* @00437428 file=? name=FUN_00437428 */ + +float10 __cdecl FUN_00437428(undefined4 param_1,int param_2) + +{ + return (float10)param_2 / (float10)*(float *)(*(int *)(DAT_004efc94 + 0x44) + 0x14); +} + + + +/* @0043744c file=? name=FUN_0043744c */ + +undefined4 * __cdecl FUN_0043744c(undefined4 *param_1,int *param_2) + +{ + undefined4 uVar1; + undefined1 local_8 [4]; + + FUN_00415eb4(param_1,param_2); + *param_1 = &PTR_FUN_004e8b6c; + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 3,4); + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 4,4); + (**(code **)(*param_2 + 0x1c))(param_2,local_8,4); + uVar1 = FUN_004dcd94(); + param_1[5] = uVar1; + return param_1; +} + + + +/* @004374c4 file=munga/audlvl.cpp name=FUN_004374c4 */ + +void __cdecl FUN_004374c4(int *param_1,int param_2) + +{ + char *pcVar1; + uint *puVar2; + int iVar3; + float *pfVar4; + float local_14; + uint *local_10; + int local_c; + int local_8; + + FUN_00414c58(param_1); + pcVar1 = (char *)FUN_00403ad0(param_2,s_voice_count_004e8880); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004e888c,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_voice_count_004e88b1,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004e88bd,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004e88bf,s_d__tesla_bt_munga_AUDLVL_CPP_004e88ff + ,0x58); + } + FUN_00407ae0(pcVar1,&local_8); + (**(code **)(*param_1 + 0x20))(param_1,&local_8,4); + pcVar1 = (char *)FUN_00403ad0(param_2,s_render_type_004e891c); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004e8928,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_render_type_004e894d,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004e8959,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004e895b,s_d__tesla_bt_munga_AUDLVL_CPP_004e899b + ,0x59); + } + FUN_00407ae0(pcVar1,&local_c); + (**(code **)(*param_1 + 0x20))(param_1,&local_c,4); + puVar2 = (uint *)FUN_00402298(0x10); + if (puVar2 == (uint *)0x0) { + local_10 = (uint *)0x0; + } + else { + local_10 = FUN_00402460(puVar2,s_suspend_delay_004e89b8); + } + local_10[3] = local_10[3] + 1; + local_14 = 0.33; + iVar3 = FUN_00403ad0(param_2,(char *)local_10[2]); + if (iVar3 != 0) { + pfVar4 = &local_14; + pcVar1 = (char *)FUN_00403ad0(param_2,(char *)local_10[2]); + FUN_00407b78(pcVar1,pfVar4); + } + (**(code **)(*param_1 + 0x20))(param_1,&local_14,4); + puVar2 = local_10 + 3; + *puVar2 = *puVar2 - 1; + if (*puVar2 == 0) { + FUN_004024d8((int *)local_10,3); + } + return; +} + + + +/* @00437678 file=? name=FUN_00437678 */ + +void __cdecl FUN_00437678(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e8b6c; + FUN_00415ed8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004376a4 file=? name=FUN_004376a4 */ + +undefined4 FUN_004376a4(void) + +{ + FUN_00415f1c(); + return 1; +} + + + +/* @004376b8 file=? name=FUN_004376b8 */ + +undefined4 * __cdecl FUN_004376b8(undefined4 *param_1,int *param_2) + +{ + undefined4 uVar1; + int iVar2; + int local_2c [7]; + int local_10; + undefined1 local_c [4]; + int local_8; + + FUN_004178ec(param_1,param_2); + *param_1 = &PTR_FUN_004e8b60; + FUN_00437c84(param_1 + 4,0,1); + (**(code **)(*param_2 + 0x1c))(param_2,&local_8,4); + iVar2 = 0; + if (0 < local_8) { + do { + (**(code **)(*param_2 + 0x1c))(param_2,local_c,4); + FUN_00437ddc(param_2,&local_10); + (**(code **)(param_1[4] + 8))(param_1 + 4,local_10,local_c); + iVar2 = iVar2 + 1; + } while (iVar2 < local_8); + } + FUN_00437e0b(local_2c,(int)(param_1 + 4)); + uVar1 = (**(code **)(local_2c[0] + 0x30))(local_2c); + param_1[3] = uVar1; + FUN_00437e49(local_2c,2); + return param_1; +} + + + +/* @00437774 file=? name=FUN_00437774 */ + +void __cdecl FUN_00437774(int *param_1,int param_2) + +{ + int *piVar1; + undefined4 *puVar2; + bool bVar3; + undefined3 extraout_var; + undefined3 extraout_var_00; + undefined4 *puVar4; + uint *puVar5; + float *pfVar6; + uint local_48 [2]; + char *local_40; + uint local_38 [2]; + char *local_30; + uint *local_28; + char *local_24; + uint *local_20; + char *local_1c; + int *local_18; + undefined4 local_14; + float local_10; + uint *local_c; + int local_8; + + FUN_00414c58(param_1); + local_8 = 0; + for (puVar2 = *(undefined4 **)(param_2 + 4); puVar2 != (undefined4 *)0x0; + puVar2 = (undefined4 *)*puVar2) { + bVar3 = FUN_00403c20((int)puVar2,s_audio_level_of_detail_004e89c6); + if (CONCAT31(extraout_var,bVar3) != 0) { + local_8 = local_8 + 1; + } + } + (**(code **)(*param_1 + 0x20))(param_1,&local_8,4); + for (puVar2 = *(undefined4 **)(param_2 + 4); puVar2 != (undefined4 *)0x0; + puVar2 = (undefined4 *)*puVar2) { + bVar3 = FUN_00403c20((int)puVar2,s_audio_level_of_detail_004e89dc); + if (CONCAT31(extraout_var_00,bVar3) != 0) { + puVar4 = (undefined4 *)FUN_00402298(0x10); + if (puVar4 == (undefined4 *)0x0) { + local_c = (uint *)0x0; + } + else { + local_c = (uint *)FUN_004023f4(puVar4); + } + local_c[3] = local_c[3] + 1; + FUN_00402a98((int *)&local_18,(int *)&local_c,(char *)puVar2[1]); + piVar1 = local_18 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_18,3); + } + pfVar6 = &local_10; + FUN_00402838(local_38,local_c,0,(char *)0x0); + local_1c = local_30; + puVar5 = (uint *)FUN_00402298(0x10); + if (puVar5 == (uint *)0x0) { + local_20 = (uint *)0x0; + } + else { + local_20 = FUN_00402460(puVar5,local_1c); + } + local_20[3] = local_20[3] + 1; + FUN_004024d8((int *)local_38,2); + FUN_00407b78((char *)local_20[2],pfVar6); + puVar5 = local_20 + 3; + *puVar5 = *puVar5 - 1; + if (*puVar5 == 0) { + FUN_004024d8((int *)local_20,3); + } + (**(code **)(*param_1 + 0x20))(param_1,&local_10,4); + FUN_00402838(local_48,local_c,1,(char *)0x0); + local_24 = local_40; + puVar5 = (uint *)FUN_00402298(0x10); + if (puVar5 == (uint *)0x0) { + local_28 = (uint *)0x0; + } + else { + local_28 = FUN_00402460(puVar5,local_24); + } + local_28[3] = local_28[3] + 1; + FUN_004024d8((int *)local_48,2); + local_14 = FUN_00417208((int)param_1,&local_28); + puVar5 = local_28 + 3; + *puVar5 = *puVar5 - 1; + if (*puVar5 == 0) { + FUN_004024d8((int *)local_28,3); + } + (**(code **)(*param_1 + 0x20))(param_1,&local_14,4); + puVar5 = local_c + 3; + *puVar5 = *puVar5 - 1; + if (*puVar5 == 0) { + FUN_004024d8((int *)local_c,3); + } + } + } + return; +} + + + +/* @00437968 file=? name=FUN_00437968 */ + +void __cdecl FUN_00437968(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e8b60; + FUN_00437ca7(param_1 + 4,2); + FUN_0041790c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004379a4 file=? name=FUN_004379a4 */ + +undefined4 FUN_004379a4(void) + +{ + FUN_00415f1c(); + return 1; +} + + + +/* @004379b8 file=? name=FUN_004379b8 */ + +void __cdecl FUN_004379b8(int param_1,float param_2) + +{ + undefined4 uVar1; + int local_20 [4]; + int local_10; + int local_8; + + FUN_00437e0b(local_20,param_1 + 0x10); + (**(code **)(local_20[0] + 8))(local_20); + while (param_2 < *(float *)(*(int *)(local_10 + local_8 * 4) + 0x14)) { + (**(code **)(local_20[0] + 0x10))(local_20); + } + uVar1 = (**(code **)(local_20[0] + 0x30))(local_20); + *(undefined4 *)(param_1 + 0xc) = uVar1; + FUN_00437e49(local_20,2); + return; +} + + + +/* @00437a20 file=? name=FUN_00437a20 */ + +undefined4 * __cdecl FUN_00437a20(undefined4 *param_1,int *param_2) + +{ + int iVar1; + int local_c; + int local_8; + + FUN_004178ec(param_1,param_2); + *param_1 = &PTR_FUN_004e8b54; + FUN_00437d32(param_1 + 3,0,1); + (**(code **)(*param_2 + 0x1c))(param_2,&local_8,4); + iVar1 = 0; + if (0 < local_8) { + do { + FUN_00437e75(param_2,&local_c); + FUN_00437bec((int)param_1,local_c); + iVar1 = iVar1 + 1; + } while (iVar1 < local_8); + } + return param_1; +} + + + +/* @00437a98 file=? name=FUN_00437a98 */ + +void __cdecl FUN_00437a98(int *param_1,int param_2) + +{ + int *piVar1; + undefined4 *puVar2; + bool bVar3; + undefined3 extraout_var; + undefined3 extraout_var_00; + undefined4 *puVar4; + int *local_14; + undefined4 local_10; + int *local_c; + int local_8; + + FUN_00414c58(param_1); + local_8 = 0; + for (puVar2 = *(undefined4 **)(param_2 + 4); puVar2 != (undefined4 *)0x0; + puVar2 = (undefined4 *)*puVar2) { + bVar3 = FUN_00403c20((int)puVar2,s_audio_resource_004e89f2); + if (CONCAT31(extraout_var,bVar3) != 0) { + local_8 = local_8 + 1; + } + } + (**(code **)(*param_1 + 0x20))(param_1,&local_8,4); + for (puVar2 = *(undefined4 **)(param_2 + 4); puVar2 != (undefined4 *)0x0; + puVar2 = (undefined4 *)*puVar2) { + bVar3 = FUN_00403c20((int)puVar2,s_audio_resource_004e8a01); + if (CONCAT31(extraout_var_00,bVar3) != 0) { + puVar4 = (undefined4 *)FUN_00402298(0x10); + if (puVar4 == (undefined4 *)0x0) { + local_c = (int *)0x0; + } + else { + local_c = (int *)FUN_004023f4(puVar4); + } + local_c[3] = local_c[3] + 1; + FUN_00402a98((int *)&local_14,(int *)&local_c,(char *)puVar2[1]); + piVar1 = local_14 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_14,3); + } + local_10 = FUN_00417208((int)param_1,&local_c); + (**(code **)(*param_1 + 0x20))(param_1,&local_10,4); + piVar1 = local_c + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_c,3); + } + } + } + return; +} + + + +/* @00437b9c file=? name=FUN_00437b9c */ + +void __cdecl FUN_00437b9c(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e8b54; + FUN_00437d55(param_1 + 3,2); + FUN_0041790c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00437bd8 file=? name=FUN_00437bd8 */ + +undefined4 FUN_00437bd8(void) + +{ + FUN_00415f1c(); + return 1; +} + + + +/* @00437bec file=? name=FUN_00437bec */ + +void __cdecl FUN_00437bec(int param_1,undefined4 param_2) + +{ + (**(code **)(*(int *)(param_1 + 0xc) + 8))(param_1 + 0xc,param_2,&stack0x0000000c); + return; +} + + + +/* @00437c0c file=? name=FUN_00437c0c */ + +undefined4 __cdecl FUN_00437c0c(int param_1,undefined4 param_2) + +{ + undefined4 uVar1; + int local_20 [7]; + + FUN_00437ea4(local_20,param_1 + 0xc); + uVar1 = (**(code **)(local_20[0] + 0x34))(local_20,param_2); + FUN_00437ee2(local_20,2); + return uVar1; +} + + + +/* @00437c4c file=? name=FUN_00437c4c */ + +undefined4 __cdecl FUN_00437c4c(int param_1) + +{ + undefined4 uVar1; + int local_20 [7]; + + FUN_00437ea4(local_20,param_1 + 0xc); + uVar1 = (**(code **)(local_20[0] + 0x14))(local_20); + FUN_00437ee2(local_20,2); + return uVar1; +} + + + +/* @00437c84 file=? name=FUN_00437c84 */ + +undefined4 * __cdecl FUN_00437c84(undefined4 *param_1,undefined4 param_2,undefined4 param_3) + +{ + FUN_00419184(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004e8b38; + return param_1; +} + + + +/* @00437ca7 file=? name=FUN_00437ca7 */ + +void __cdecl FUN_00437ca7(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e8b38; + FUN_004191b4(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00437cd3 file=? name=FUN_00437cd3 */ + +undefined4 __cdecl FUN_00437cd3(undefined4 param_1,int param_2,int param_3) + +{ + undefined4 uVar1; + + if (*(float *)(param_2 + 0x14) == *(float *)(param_3 + 0x14)) { + return 0; + } + if (*(float *)(param_2 + 0x14) <= *(float *)(param_3 + 0x14)) { + uVar1 = 0xffffffff; + } + else { + uVar1 = 1; + } + return uVar1; +} + + + +/* @00437d04 file=? name=FUN_00437d04 */ + +undefined4 __cdecl FUN_00437d04(undefined4 param_1,float *param_2,int param_3) + +{ + undefined4 uVar1; + + if (*param_2 == *(float *)(param_3 + 0x14)) { + return 0; + } + if (*param_2 <= *(float *)(param_3 + 0x14)) { + uVar1 = 0xffffffff; + } + else { + uVar1 = 1; + } + return uVar1; +} + + + +/* @00437d32 file=? name=FUN_00437d32 */ + +undefined4 * __cdecl FUN_00437d32(undefined4 *param_1,undefined4 param_2,undefined4 param_3) + +{ + FUN_00419184(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004e8b1c; + return param_1; +} + + + +/* @00437d55 file=? name=FUN_00437d55 */ + +void __cdecl FUN_00437d55(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e8b1c; + FUN_004191b4(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00437d81 file=? name=FUN_00437d81 */ + +undefined4 __cdecl FUN_00437d81(undefined4 param_1,int param_2,int param_3) + +{ + undefined4 uVar1; + + if (*(int *)(param_3 + 0x14) == *(int *)(param_2 + 0x14)) { + uVar1 = 0; + } + else { + uVar1 = 1; + if (*(int *)(param_2 + 0x14) <= *(int *)(param_3 + 0x14)) { + uVar1 = 0xffffffff; + } + } + return uVar1; +} + + + +/* @00437db0 file=? name=FUN_00437db0 */ + +undefined4 __cdecl FUN_00437db0(undefined4 param_1,int *param_2,int param_3) + +{ + undefined4 uVar1; + + if (*(int *)(param_3 + 0x14) == *param_2) { + uVar1 = 0; + } + else { + uVar1 = 1; + if (*param_2 <= *(int *)(param_3 + 0x14)) { + uVar1 = 0xffffffff; + } + } + return uVar1; +} + + + +/* @00437ddc file=? name=FUN_00437ddc */ + +void __cdecl FUN_00437ddc(int *param_1,int *param_2) + +{ + int iVar1; + undefined4 local_8; + + (**(code **)(*param_1 + 0x1c))(param_1,&local_8,4); + iVar1 = FUN_004170e4((int)param_1,local_8); + *param_2 = iVar1; + return; +} + + + +/* @00437e0b file=? name=FUN_00437e0b */ + +undefined4 * __cdecl FUN_00437e0b(undefined4 *param_1,int param_2) + +{ + FUN_004194d8(param_1,param_2); + *param_1 = &PTR_FUN_004e8ac0; + return param_1; +} + + + +/* @00437e2a file=? name=FUN_00437e2a */ + +undefined4 * __cdecl FUN_00437e2a(undefined4 *param_1,int param_2) + +{ + FUN_004194d8(param_1,param_2); + *param_1 = &PTR_FUN_004e8ac0; + return param_1; +} + + + +/* @00437e49 file=? name=FUN_00437e49 */ + +void __cdecl FUN_00437e49(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e8ac0; + FUN_0041951c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00437e75 file=? name=FUN_00437e75 */ + +void __cdecl FUN_00437e75(int *param_1,int *param_2) + +{ + int iVar1; + undefined4 local_8; + + (**(code **)(*param_1 + 0x1c))(param_1,&local_8,4); + iVar1 = FUN_004170e4((int)param_1,local_8); + *param_2 = iVar1; + return; +} + + + +/* @00437ea4 file=? name=FUN_00437ea4 */ + +undefined4 * __cdecl FUN_00437ea4(undefined4 *param_1,int param_2) + +{ + FUN_004194d8(param_1,param_2); + *param_1 = &PTR_FUN_004e8a64; + return param_1; +} + + + +/* @00437ec3 file=? name=FUN_00437ec3 */ + +undefined4 * __cdecl FUN_00437ec3(undefined4 *param_1,int param_2) + +{ + FUN_004194d8(param_1,param_2); + *param_1 = &PTR_FUN_004e8a64; + return param_1; +} + + + +/* @00437ee2 file=? name=FUN_00437ee2 */ + +void __cdecl FUN_00437ee2(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e8a64; + FUN_0041951c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00437f0e file=? name=FUN_00437f0e */ + +undefined4 * __cdecl FUN_00437f0e(undefined4 param_1,int param_2,undefined4 *param_3) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_0041d485(); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_0041d42e(puVar1,param_1,param_2,param_3); + } + return puVar1; +} + + + +/* @00437f3e file=? name=FUN_00437f3e */ + +undefined4 * __cdecl FUN_00437f3e(undefined4 param_1,int param_2,undefined4 *param_3) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00437fc5(); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_00437f6e(puVar1,param_1,param_2,param_3); + } + return puVar1; +} + + + +/* @00437f6e file=? name=FUN_00437f6e */ + +undefined4 * __cdecl +FUN_00437f6e(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 *param_4) + +{ + FUN_004190e8(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004e8b78; + param_1[5] = *param_4; + return param_1; +} + + + +/* @00437f99 file=? name=FUN_00437f99 */ + +void __cdecl FUN_00437f99(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e8b78; + FUN_0041910c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_00438015(param_1); + } + } + return; +} + + + +/* @00437fc5 file=? name=FUN_00437fc5 */ + +void FUN_00437fc5(void) + +{ + int iVar1; + undefined4 *puVar2; + + iVar1 = DAT_004e8b74; + DAT_004e8b74 = DAT_004e8b74 + 1; + puVar2 = DAT_004e8b70; + if ((iVar1 == 0) && (puVar2 = (undefined4 *)FUN_00402298(0x28), puVar2 != (undefined4 *)0x0)) { + FUN_00402b98(puVar2,0x18,100,100,s_TableEntryOf_004e8a2f); + } + DAT_004e8b70 = puVar2; + FUN_00402f74((int)DAT_004e8b70); + return; +} + + + +/* @00438015 file=? name=FUN_00438015 */ + +void __cdecl FUN_00438015(undefined4 *param_1) + +{ + FUN_00402f98((int)DAT_004e8b70,param_1); + DAT_004e8b74 = DAT_004e8b74 + -1; + if (DAT_004e8b74 == 0) { + if (DAT_004e8b70 != (int *)0x0) { + FUN_00402c28(DAT_004e8b70,0); + FUN_004022d0(DAT_004e8b70); + } + DAT_004e8b70 = (int *)0x0; + } + return; +} + + + +/* @00438060 file=? name=FUN_00438060 */ + +undefined4 * __cdecl FUN_00438060(undefined4 *param_1,int *param_2,int param_3) + +{ + undefined4 local_c; + undefined4 local_8; + + FUN_00436d14(param_1,param_2,&DAT_004e8698); + *param_1 = &PTR_FUN_004e8c74; + param_1[10] = 0; + param_1[0xb] = 0; + param_1[0xc] = 0; + param_1[0xf] = 0; + param_1[0x10] = 0; + param_1[0x11] = 0; + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 10,0xc); + (**(code **)(*param_2 + 0x1c))(param_2,&local_8,4); + (**(code **)(*param_2 + 0x1c))(param_2,&local_c,4); + FUN_00438124((int)param_1,param_3,local_8,local_c); + return param_1; +} + + + +/* @004380f8 file=? name=FUN_004380f8 */ + +void __cdecl FUN_004380f8(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e8c74; + FUN_00436d4c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00438124 file=? name=FUN_00438124 */ + +void __cdecl FUN_00438124(int param_1,int param_2,undefined4 param_3,undefined4 param_4) + +{ + *(int *)(param_1 + 0x24) = param_2; + FUN_004206b4(param_2,param_1); + *(undefined4 *)(param_1 + 0x34) = param_4; + *(undefined4 *)(param_1 + 0x38) = 0; + *(undefined4 *)(param_1 + 0x48) = 0x3f800000; + *(undefined4 *)(param_1 + 0x58) = 0; + *(undefined4 *)(param_1 + 0x4c) = 0; + *(undefined4 *)(param_1 + 0x50) = 0x3f800000; + *(undefined4 *)(param_1 + 0x54) = 0x3f800000; + *(undefined4 *)(param_1 + 0x5c) = param_3; + *(undefined4 *)(param_1 + 0x60) = 0xffffffff; + return; +} + + + +/* @00438178 file=? name=FUN_00438178 */ + +undefined4 __cdecl FUN_00438178(int param_1) + +{ + FUN_0041b8e0(param_1); + return 1; +} + + + +/* @0043818c file=munga/audloc.cpp name=FUN_0043818c */ + +void __cdecl FUN_0043818c(int *param_1,int param_2) + +{ + char *pcVar1; + uint *puVar2; + int iVar3; + int *piVar4; + float *pfVar5; + float local_20 [3]; + float local_14; + uint *local_10; + int local_c; + uint *local_8; + + FUN_00414c58(param_1); + pcVar1 = (char *)FUN_00403ad0(param_2,s_location_offset_004e8b7c); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004e8b8c,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_location_offset_004e8bb1,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004e8bc1,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004e8bc3,s_d__tesla_bt_munga_AUDLOC_CPP_004e8c03 + ,0x77); + } + FUN_00408944(pcVar1,local_20); + (**(code **)(*param_1 + 0x20))(param_1,local_20,0xc); + puVar2 = (uint *)FUN_00402298(0x10); + if (puVar2 == (uint *)0x0) { + local_8 = (uint *)0x0; + } + else { + local_8 = FUN_00402460(puVar2,s_update_delay_004e8c20); + } + local_8[3] = local_8[3] + 1; + local_c = 2; + iVar3 = FUN_00403ad0(param_2,(char *)local_8[2]); + if (iVar3 != 0) { + piVar4 = &local_c; + pcVar1 = (char *)FUN_00403ad0(param_2,(char *)local_8[2]); + FUN_00407b30(pcVar1,piVar4); + } + (**(code **)(*param_1 + 0x20))(param_1,&local_c,4); + puVar2 = (uint *)FUN_00402298(0x10); + if (puVar2 == (uint *)0x0) { + local_10 = (uint *)0x0; + } + else { + local_10 = FUN_00402460(puVar2,s_clipping_scale_004e8c2d); + } + local_10[3] = local_10[3] + 1; + local_14 = 1.0; + iVar3 = FUN_00403ad0(param_2,(char *)local_10[2]); + if (iVar3 != 0) { + pfVar5 = &local_14; + pcVar1 = (char *)FUN_00403ad0(param_2,(char *)local_10[2]); + FUN_00407b78(pcVar1,pfVar5); + } + (**(code **)(*param_1 + 0x20))(param_1,&local_14,4); + puVar2 = local_10 + 3; + *puVar2 = *puVar2 - 1; + if (*puVar2 == 0) { + FUN_004024d8((int *)local_10,3); + } + puVar2 = local_8 + 3; + *puVar2 = *puVar2 - 1; + if (*puVar2 == 0) { + FUN_004024d8((int *)local_8,3); + } + return; +} + + + +/* @00438340 file=? name=FUN_00438340 */ + +void FUN_00438340(void) + +{ + return; +} + + + +/* @00438348 file=? name=FUN_00438348 */ + +bool __cdecl FUN_00438348(int param_1,int param_2) + +{ + float fVar1; + int iVar2; + float local_14; + float local_10; + float local_c; + + iVar2 = FUN_00417ab4(param_2 + 8); + FUN_00408644(&local_14,(float *)(iVar2 + 0x100),(float *)(*(int *)(param_1 + 0x24) + 0x100)); + fVar1 = *(float *)(param_2 + 0x14) * *(float *)(param_1 + 0x34); + return fVar1 * fVar1 < local_c * local_c + local_10 * local_10 + local_14 * local_14; +} + + + +/* @004383b4 file=? name=FUN_004383b4 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004383b4(int param_1,int *param_2) + +{ + bool bVar1; + int iVar2; + undefined3 extraout_var; + float10 fVar3; + float *pfVar4; + float local_cc [3]; + float local_c0 [3]; + float local_b4; + float local_b0; + float local_ac; + float local_a8 [3]; + float local_9c; + float local_98; + float local_94; + float local_90 [3]; + float local_84 [3]; + float local_78 [3]; + float local_6c [12]; + float local_3c; + float local_38; + float local_34; + float local_30; + float local_2c; + float local_28; + float local_24; + float local_20; + float local_1c; + float local_18; + float local_14; + float local_10; + int *local_c; + int *local_8; + + local_8 = *(int **)(param_1 + 0x24); + local_c = (int *)FUN_00417ab4((int)(param_2 + 2)); + if ((local_c == local_8) && + (iVar2 = FUN_004084fc((float *)(param_1 + 0x28),(float *)&DAT_004e0f74,0.0001), iVar2 != 0)) { + *(undefined4 *)(param_1 + 0x38) = 1; + FUN_00408440((undefined4 *)(param_1 + 0x3c),&DAT_004e0f74); + *(undefined4 *)(param_1 + 0x48) = 0; + *(undefined4 *)(param_1 + 0x58) = 0; + *(undefined4 *)(param_1 + 0x4c) = 0; + *(undefined4 *)(param_1 + 0x50) = 0x3f800000; + *(undefined4 *)(param_1 + 0x54) = 0x3f800000; + return; + } + *(undefined4 *)(param_1 + 0x38) = 0; + (**(code **)(*param_2 + 4))(local_6c); + FUN_00408744(local_78,(float *)(param_1 + 0x28),(float *)(local_8 + 0x34)); + FUN_004085ec(local_84,(float *)(local_8 + 0x40),local_78); + FUN_00408644(local_90,local_84,(float *)(local_c + 0x40)); + FUN_0040879c((float *)(param_1 + 0x3c),local_90,local_6c); + fVar3 = FUN_004dd138((double)(*(float *)(param_1 + 0x44) * *(float *)(param_1 + 0x44) + + *(float *)(param_1 + 0x40) * *(float *)(param_1 + 0x40) + + *(float *)(param_1 + 0x3c) * *(float *)(param_1 + 0x3c))); + *(float *)(param_1 + 0x48) = (float)fVar3; + local_9c = 0.0; + local_98 = 0.0; + local_94 = -1.0; + local_10 = *(float *)(param_1 + 0x48); + fVar3 = FUN_004dcd00((double)local_10); + if ((float10)_DAT_00438768 < fVar3) { + FUN_004087f4(&local_9c,(float *)(param_1 + 0x3c)); + } + local_14 = *(float *)(param_1 + 0x3c); + fVar3 = FUN_004dcd00((double)local_14); + if (fVar3 <= (float10)_DAT_00438768) { + local_18 = *(float *)(param_1 + 0x44); + fVar3 = FUN_004dcd00((double)local_18); + if (fVar3 <= (float10)_DAT_00438768) { + *(undefined4 *)(param_1 + 0x4c) = 0; + goto LAB_004385b4; + } + } + fVar3 = FUN_004dc8ec((double)*(float *)(param_1 + 0x3c), + SUB84((double)*(float *)(param_1 + 0x44),0), + (uint)((ulonglong)(double)*(float *)(param_1 + 0x44) >> 0x20)); + local_1c = (float)fVar3; + *(float *)(param_1 + 0x4c) = local_1c; +LAB_004385b4: + if (*(float *)(param_1 + 0x48) <= (float)param_2[8]) { + *(undefined4 *)(param_1 + 0x50) = 0x3f800000; + } + else { + local_20 = (*(float *)(param_1 + 0x48) - (float)param_2[8]) * + ((float)param_2[9] / *(float *)(param_1 + 0x34)); + fVar3 = FUN_004dce94((double)local_20,SUB84((double)(float)param_2[7],0), + (uint)((ulonglong)(double)(float)param_2[7] >> 0x20)); + local_24 = (float)(fVar3 + (float10)_DAT_0043876c); + *(float *)(param_1 + 0x50) = _DAT_0043876c / local_24; + } + if (*(float *)(param_1 + 0x48) <= (float)param_2[0xb]) { + *(undefined4 *)(param_1 + 0x54) = 0x3f800000; + } + else { + local_28 = (*(float *)(param_1 + 0x48) - (float)param_2[0xb]) * + ((float)param_2[0xc] / *(float *)(param_1 + 0x34)); + fVar3 = FUN_004dce94((double)local_28,SUB84((double)(float)param_2[10],0), + (uint)((ulonglong)(double)(float)param_2[10] >> 0x20)); + local_2c = (float)(fVar3 + (float10)_DAT_0043876c); + *(float *)(param_1 + 0x54) = _DAT_0043876c / local_2c; + } + (**(code **)(*local_c + 0x20))(local_cc); + pfVar4 = local_cc; + (**(code **)(*local_8 + 0x20))(); + FUN_00408644(local_a8,local_c0,pfVar4); + FUN_0040879c(&local_b4,local_a8,(float *)(local_c + 0x34)); + local_30 = *(float *)(param_1 + 0x48); + fVar3 = FUN_004dcd00((double)local_30); + if (fVar3 <= (float10)_DAT_00438768) { + *(undefined4 *)(param_1 + 0x58) = 0; + } + else { + local_38 = local_94 * local_ac + local_98 * local_b0 + local_9c * local_b4; + local_3c = (float)param_2[6] * _DAT_00438770; + if (*(float *)(param_1 + 0x48) < local_3c) { + local_38 = (*(float *)(param_1 + 0x48) / local_3c) * local_38; + } + bVar1 = FUN_00438774(param_1,(int)param_2,local_38,&local_34); + if (CONCAT31(extraout_var,bVar1) != 0) { + *(float *)(param_1 + 0x58) = local_34; + } + } + return; +} + + + diff --git a/reference/decomp/archive_2025export/all/part_005.c b/reference/decomp/archive_2025export/all/part_005.c new file mode 100644 index 0000000..559545d --- /dev/null +++ b/reference/decomp/archive_2025export/all/part_005.c @@ -0,0 +1,8572 @@ +/* @00438774 file=? name=FUN_00438774 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +bool __cdecl FUN_00438774(undefined4 param_1,int param_2,float param_3,float *param_4) + +{ + float fVar1; + float10 fVar2; + float10 fVar3; + + fVar1 = *(float *)(param_2 + 0x38); + if (-fVar1 <= param_3) { + if (fVar1 < param_3) { + param_3 = fVar1; + } + } + else { + param_3 = -fVar1; + } + fVar3 = FUN_004dcd00((double)(fVar1 - param_3)); + fVar2 = (float10)_DAT_00438800; + if (fVar2 < fVar3) { + *param_4 = (_DAT_00438804 - fVar1 / (fVar1 - param_3)) * *(float *)(param_2 + 0x3c); + } + return fVar2 < fVar3; +} + + + +/* @00438808 file=munga/audcmp.cpp name=FUN_00438808 */ + +undefined4 * __cdecl FUN_00438808(undefined4 *param_1,int *param_2,int param_3) + +{ + int *piVar1; + int iVar2; + undefined4 *puVar3; + int iVar4; + uint *puVar5; + int local_14; + undefined4 local_10; + uint *local_c; + int *local_8; + + FUN_00436d14(param_1,param_2,&DAT_004e8698); + *param_1 = &PTR_FUN_004ea0a4; + FUN_0043acac(param_1 + 9,0); + param_1[0xe] = 0; + puVar3 = (undefined4 *)FUN_00402298(0x10); + if (puVar3 == (undefined4 *)0x0) { + local_8 = (int *)0x0; + } + else { + local_8 = (int *)FUN_004023f4(puVar3); + } + local_8[3] = local_8[3] + 1; + FUN_00402aec(param_2,(int *)&local_8); + iVar4 = FUN_0041f98c(param_3,(char *)local_8[2]); + if (iVar4 == 0) { + puVar5 = (uint *)FUN_00402298(0x10); + if (puVar5 == (uint *)0x0) { + local_c = (uint *)0x0; + } + else { + local_c = FUN_00402460(puVar5,s_Entity_004e8ca0); + } + local_c[3] = local_c[3] + 1; + iVar4 = FUN_004027d8((int)local_8,(int)local_c); + if (iVar4 != 0) { + FUN_004dbb24(&DAT_00524e20,s_MessageWatcher__MessageWatcher___004e8ca7,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,(char *)local_8[2],(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004e8cd3,(char *)0x0); + FUN_0040385c(s_MessageWatcher__MessageWatcher___004e8cd5, + s_d__tesla_bt_munga_AUDCMP_CPP_004e8d0b,0x5c); + } + puVar5 = local_c + 3; + *puVar5 = *puVar5 - 1; + iVar4 = param_3; + if (*puVar5 == 0) { + FUN_004024d8((int *)local_c,3); + } + } + (**(code **)(*param_2 + 0x1c))(param_2,&local_10,4); + FUN_0043afbc(param_2,&local_14); + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0xc,4); + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0xd,4); + (**(code **)(param_1[9] + 4))(param_1 + 9,local_14); + iVar2 = **(int **)(iVar4 + 0xc); + puVar3 = FUN_00402f74(0x4e2d84); + if (puVar3 == (undefined4 *)0x0) { + puVar3 = (undefined4 *)0x0; + } + else { + puVar3 = FUN_00419ed8(puVar3,iVar2,param_1,PTR_FUN_004e8c94,DAT_004e8c98,DAT_004e8c9c,local_10, + iVar4); + } + param_1[0xe] = puVar3; + FUN_004206b4(param_3,param_1); + piVar1 = local_8 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_8,3); + } + return param_1; +} + + + +/* @004389fc file=? name=FUN_004389fc */ + +void __cdecl FUN_004389fc(int *param_1,byte param_2) + +{ + undefined4 *puVar1; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004ea0a4; + puVar1 = (undefined4 *)param_1[0xe]; + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + FUN_0043accb(param_1 + 9,2); + FUN_00436d4c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00438a48 file=munga/audcmp.cpp name=FUN_00438a48 */ + +void __cdecl FUN_00438a48(int *param_1,int param_2) + +{ + int *piVar1; + undefined4 *puVar2; + char *pcVar3; + uint *puVar4; + float local_18; + int local_14; + uint *local_10; + int local_c; + int *local_8; + + FUN_00414c58(param_1); + puVar2 = (undefined4 *)FUN_00402298(0x10); + if (puVar2 == (undefined4 *)0x0) { + local_8 = (int *)0x0; + } + else { + local_8 = (int *)FUN_004023f4(puVar2); + } + local_8[3] = local_8[3] + 1; + pcVar3 = (char *)FUN_00403ad0(param_2,s_subsystem_004e8d28); + if (pcVar3 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004e8d32,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_subsystem_004e8d57,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004e8d61,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004e8d63,s_d__tesla_bt_munga_AUDCMP_CPP_004e8da3 + ,0xa4); + } + FUN_00402b3c(pcVar3,(int *)&local_8); + FUN_004029b0(param_1,(int)local_8); + piVar1 = local_8 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_8,3); + } + pcVar3 = (char *)FUN_00403ad0(param_2,s_message_ID_004e8dc0); + if (pcVar3 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004e8dcb,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_message_ID_004e8df0,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004e8dfb,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004e8dfd,s_d__tesla_bt_munga_AUDCMP_CPP_004e8e3d + ,0xa9); + } + FUN_00407ae0(pcVar3,&local_c); + (**(code **)(*param_1 + 0x20))(param_1,&local_c,4); + puVar4 = (uint *)FUN_00402298(0x10); + if (puVar4 == (uint *)0x0) { + local_10 = (uint *)0x0; + } + else { + local_10 = FUN_00402460(puVar4,s_audio_component_004e8e5a); + } + local_10[3] = local_10[3] + 1; + FUN_00417240(param_1,param_2,(int *)&local_10); + pcVar3 = (char *)FUN_00403ad0(param_2,s_control_ID_004e8e6a); + if (pcVar3 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004e8e75,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_control_ID_004e8e9a,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004e8ea5,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004e8ea7,s_d__tesla_bt_munga_AUDCMP_CPP_004e8ee7 + ,0xb1); + } + FUN_00407ae0(pcVar3,&local_14); + (**(code **)(*param_1 + 0x20))(param_1,&local_14,4); + pcVar3 = (char *)FUN_00403ad0(param_2,s_control_value_004e8f04); + if (pcVar3 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004e8f12,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_control_value_004e8f37,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004e8f45,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004e8f47,s_d__tesla_bt_munga_AUDCMP_CPP_004e8f87 + ,0xb2); + } + FUN_00407b78(pcVar3,&local_18); + (**(code **)(*param_1 + 0x20))(param_1,&local_18,4); + puVar4 = local_10 + 3; + *puVar4 = *puVar4 - 1; + if (*puVar4 == 0) { + FUN_004024d8((int *)local_10,3); + } + return; +} + + + +/* @00438d04 file=? name=FUN_00438d04 */ + +undefined4 __cdecl FUN_00438d04(int param_1) + +{ + FUN_0041b8e0(param_1); + return 1; +} + + + +/* @00438d20 file=? name=FUN_00438d20 */ + +void __cdecl FUN_00438d20(int *param_1,undefined4 param_2) + +{ + int iVar1; + int *piVar2; + + iVar1 = (**(code **)(*param_1 + 0x1c))(param_1,param_2); + if (iVar1 != 0) { + piVar2 = (int *)FUN_00417ab4((int)(param_1 + 9)); + (**(code **)(*piVar2 + 0x18))(piVar2,param_1[0xc],param_1[0xd]); + } + return; +} + + + +/* @00438d58 file=? name=FUN_00438d58 */ + +void FUN_00438d58(void) + +{ + return; +} + + + +/* @00438d60 file=? name=FUN_00438d60 */ + +undefined4 * __cdecl FUN_00438d60(undefined4 *param_1,int *param_2,int param_3) + +{ + FUN_00438808(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004ea084; + return param_1; +} + + + +/* @00438d84 file=? name=FUN_00438d84 */ + +void __cdecl FUN_00438d84(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004ea084; + FUN_004389fc(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00438db0 file=? name=FUN_00438db0 */ + +bool __cdecl FUN_00438db0(undefined4 param_1,int param_2) + +{ + return 0 < *(int *)(param_2 + 0xc); +} + + + +/* @00438dc8 file=? name=FUN_00438dc8 */ + +void __cdecl FUN_00438dc8(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004ea068; + FUN_00436d4c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00438df4 file=? name=FUN_00438df4 */ + +undefined4 * __cdecl FUN_00438df4(undefined4 *param_1,int *param_2,int param_3) + +{ + undefined4 local_10; + undefined4 local_c; + int *local_8; + + FUN_00436d14(param_1,param_2,&DAT_004e8698); + *param_1 = &PTR_FUN_004ea068; + FUN_0043afbc(param_2,(int *)&local_8); + (**(code **)(*param_2 + 0x1c))(param_2,&local_c,4); + (**(code **)(*param_2 + 0x1c))(param_2,&local_10,4); + FUN_004206b4(param_3,param_1); + (**(code **)(*local_8 + 0x18))(local_8,local_c,local_10); + return param_1; +} + + + +/* @00438e70 file=munga/audcmp.cpp name=FUN_00438e70 */ + +void __cdecl FUN_00438e70(int *param_1,int param_2) + +{ + uint *puVar1; + char *pcVar2; + float local_10; + int local_c; + uint *local_8; + + FUN_00414c58(param_1); + puVar1 = (uint *)FUN_00402298(0x10); + if (puVar1 == (uint *)0x0) { + local_8 = (uint *)0x0; + } + else { + local_8 = FUN_00402460(puVar1,s_audio_component_004e8fa4); + } + local_8[3] = local_8[3] + 1; + FUN_00417240(param_1,param_2,(int *)&local_8); + pcVar2 = (char *)FUN_00403ad0(param_2,s_control_ID_004e8fb4); + if (pcVar2 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004e8fbf,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_control_ID_004e8fe4,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004e8fef,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004e8ff1,s_d__tesla_bt_munga_AUDCMP_CPP_004e9031 + ,0x166); + } + FUN_00407ae0(pcVar2,&local_c); + (**(code **)(*param_1 + 0x20))(param_1,&local_c,4); + pcVar2 = (char *)FUN_00403ad0(param_2,s_control_value_004e904e); + if (pcVar2 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004e905c,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_control_value_004e9081,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004e908f,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004e9091,s_d__tesla_bt_munga_AUDCMP_CPP_004e90d1 + ,0x167); + } + FUN_00407b78(pcVar2,&local_10); + (**(code **)(*param_1 + 0x20))(param_1,&local_10,4); + puVar1 = local_8 + 3; + *puVar1 = *puVar1 - 1; + if (*puVar1 == 0) { + FUN_004024d8((int *)local_8,3); + } + return; +} + + + +/* @00438fec file=? name=FUN_00438fec */ + +void FUN_00438fec(void) + +{ + return; +} + + + +/* @00438ff4 file=? name=FUN_00438ff4 */ + +undefined4 * __cdecl FUN_00438ff4(undefined4 *param_1,int *param_2,int param_3) + +{ + int iVar1; + int local_c; + int local_8; + + FUN_00436d14(param_1,param_2,&DAT_004e8698); + *param_1 = &PTR_FUN_004ea04c; + FUN_0043acf7(param_1 + 9,0); + (**(code **)(*param_2 + 0x1c))(param_2,&local_8,4); + iVar1 = 0; + if (0 < local_8) { + do { + FUN_0043afbc(param_2,&local_c); + (**(code **)(param_1[9] + 4))(param_1 + 9,local_c); + (**(code **)(*(int *)(local_c + 0x14) + 4))(local_c + 0x14,param_1); + iVar1 = iVar1 + 1; + } while (iVar1 < local_8); + } + FUN_004206b4(param_3,param_1); + return param_1; +} + + + +/* @00439094 file=? name=FUN_00439094 */ + +void __cdecl FUN_00439094(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004ea04c; + FUN_0043ad16(param_1 + 9,2); + FUN_00436d4c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004390d0 file=munga/audcmp.cpp name=FUN_004390d0 */ + +void __cdecl FUN_004390d0(int *param_1,int param_2) + +{ + int *piVar1; + undefined4 *puVar2; + bool bVar3; + undefined3 extraout_var; + undefined3 extraout_var_00; + undefined4 *puVar4; + int *local_14; + int local_10; + int *local_c; + int local_8; + + FUN_00414c58(param_1); + local_8 = 0; + for (puVar2 = *(undefined4 **)(param_2 + 4); puVar2 != (undefined4 *)0x0; + puVar2 = (undefined4 *)*puVar2) { + bVar3 = FUN_00403c20((int)puVar2,s_audio_component_004e90ee); + if (CONCAT31(extraout_var,bVar3) != 0) { + local_8 = local_8 + 1; + } + } + (**(code **)(*param_1 + 0x20))(param_1,&local_8,4); + for (puVar2 = *(undefined4 **)(param_2 + 4); puVar2 != (undefined4 *)0x0; + puVar2 = (undefined4 *)*puVar2) { + bVar3 = FUN_00403c20((int)puVar2,s_audio_component_004e90fe); + if (CONCAT31(extraout_var_00,bVar3) != 0) { + puVar4 = (undefined4 *)FUN_00402298(0x10); + if (puVar4 == (undefined4 *)0x0) { + local_c = (int *)0x0; + } + else { + local_c = (int *)FUN_004023f4(puVar4); + } + local_c[3] = local_c[3] + 1; + FUN_00402a98((int *)&local_14,(int *)&local_c,(char *)puVar2[1]); + piVar1 = local_14 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_14,3); + } + local_10 = FUN_00417208((int)param_1,&local_c); + if (local_10 == 0) { + FUN_004dbb24(&DAT_00524e20,s_AudioControlSplitter__BuildFromP_004e910e,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,(char *)local_c[2],(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004e9144,(char *)0x0); + FUN_0040385c(s_AudioControlSplitter__BuildFromP_004e9146, + s_d__tesla_bt_munga_AUDCMP_CPP_004e9186,0x1d2); + } + (**(code **)(*param_1 + 0x20))(param_1,&local_10,4); + piVar1 = local_c + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_c,3); + } + } + } + return; +} + + + +/* @00439234 file=? name=FUN_00439234 */ + +undefined4 __cdecl FUN_00439234(int param_1) + +{ + FUN_00436d88(param_1); + return 1; +} + + + +/* @00439248 file=? name=FUN_00439248 */ + +void __cdecl FUN_00439248(int param_1,undefined4 param_2,undefined4 param_3) + +{ + int *piVar1; + int local_18 [5]; + + FUN_0043afeb(local_18,param_1 + 0x24); + while( true ) { + piVar1 = (int *)(**(code **)(local_18[0] + 0x28))(local_18); + if (piVar1 == (int *)0x0) break; + (**(code **)(*piVar1 + 0x18))(piVar1,param_2,param_3); + } + FUN_0043b048(local_18,2); + return; +} + + + +/* @0043929c file=? name=FUN_0043929c */ + +void __cdecl FUN_0043929c(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004ea030; + FUN_0043accb(param_1 + 9,2); + FUN_00436d4c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004392d8 file=? name=FUN_004392d8 */ + +undefined4 * __cdecl FUN_004392d8(undefined4 *param_1,int *param_2,int param_3) + +{ + undefined4 local_14; + int local_10; + int local_c; + int local_8; + + FUN_00436d14(param_1,param_2,&DAT_004e8698); + *param_1 = &PTR_FUN_004ea030; + FUN_0043acac(param_1 + 9,0); + FUN_0043afbc(param_2,&local_8); + (**(code **)(*param_2 + 0x1c))(param_2,&local_c,4); + (**(code **)(*param_2 + 0x1c))(param_2,&local_10,4); + (**(code **)(*param_2 + 0x1c))(param_2,&local_14,4); + FUN_00439574((int)param_1,local_8,param_3,local_c,local_10,local_14); + return param_1; +} + + + +/* @00439370 file=munga/audcmp.cpp name=FUN_00439370 */ + +void __cdecl FUN_00439370(int *param_1,int param_2) + +{ + uint *puVar1; + char *pcVar2; + int local_14; + int local_10; + int local_c; + uint *local_8; + + FUN_00414c58(param_1); + puVar1 = (uint *)FUN_00402298(0x10); + if (puVar1 == (uint *)0x0) { + local_8 = (uint *)0x0; + } + else { + local_8 = FUN_00402460(puVar1,s_audio_component_004e91a3); + } + local_8[3] = local_8[3] + 1; + FUN_00417240(param_1,param_2,(int *)&local_8); + pcVar2 = (char *)FUN_00403ad0(param_2,s_first_input_control_ID_004e91b3); + if (pcVar2 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004e91ca,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_first_input_control_ID_004e91ef,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004e9206,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004e9208,s_d__tesla_bt_munga_AUDCMP_CPP_004e9248 + ,0x23d); + } + FUN_00407ae0(pcVar2,&local_c); + (**(code **)(*param_1 + 0x20))(param_1,&local_c,4); + pcVar2 = (char *)FUN_00403ad0(param_2,s_last_input_control_ID_004e9265); + if (pcVar2 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004e927b,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_last_input_control_ID_004e92a0,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004e92b6,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004e92b8,s_d__tesla_bt_munga_AUDCMP_CPP_004e92f8 + ,0x23e); + } + FUN_00407ae0(pcVar2,&local_10); + (**(code **)(*param_1 + 0x20))(param_1,&local_10,4); + pcVar2 = (char *)FUN_00403ad0(param_2,s_output_control_ID_004e9315); + if (pcVar2 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004e9327,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_output_control_ID_004e934c,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004e935e,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004e9360,s_d__tesla_bt_munga_AUDCMP_CPP_004e93a0 + ,0x23f); + } + FUN_00407ae0(pcVar2,&local_14); + (**(code **)(*param_1 + 0x20))(param_1,&local_14,4); + puVar1 = local_8 + 3; + *puVar1 = *puVar1 - 1; + if (*puVar1 == 0) { + FUN_004024d8((int *)local_8,3); + } + return; +} + + + +/* @00439574 file=? name=FUN_00439574 */ + +void __cdecl +FUN_00439574(int param_1,int param_2,int param_3,int param_4,int param_5,undefined4 param_6) + +{ + undefined4 *puVar1; + int iVar2; + + *(int *)(param_1 + 0x40) = param_4; + *(undefined4 *)(param_1 + 0x48) = param_6; + *(int *)(param_1 + 0x44) = (param_5 - param_4) + 1; + puVar1 = (undefined4 *)(param_1 + 0x30); + for (iVar2 = 0; iVar2 < *(int *)(param_1 + 0x44); iVar2 = iVar2 + 1) { + *puVar1 = 0; + puVar1 = puVar1 + 1; + } + (**(code **)(*(int *)(param_1 + 0x24) + 4))(param_1 + 0x24,param_2); + (**(code **)(*(int *)(param_2 + 0x14) + 4))(param_2 + 0x14,param_1); + FUN_004206b4(param_3,param_1); + return; +} + + + +/* @004395dc file=? name=FUN_004395dc */ + +undefined4 __cdecl FUN_004395dc(int param_1) + +{ + FUN_00436d88(param_1); + return 1; +} + + + +/* @004395f0 file=? name=FUN_004395f0 */ + +void __cdecl FUN_004395f0(int param_1,int param_2,undefined4 param_3) + +{ + int iVar1; + float *pfVar2; + int *piVar3; + float local_8; + + iVar1 = param_2 - *(int *)(param_1 + 0x40); + if ((-1 < iVar1) && (iVar1 < *(int *)(param_1 + 0x44))) { + *(undefined4 *)(param_1 + 0x30 + iVar1 * 4) = param_3; + local_8 = 0.0; + pfVar2 = (float *)(param_1 + 0x30); + for (iVar1 = 0; iVar1 < *(int *)(param_1 + 0x44); iVar1 = iVar1 + 1) { + local_8 = *pfVar2 + local_8; + pfVar2 = pfVar2 + 1; + } + piVar3 = (int *)FUN_00417ab4(param_1 + 0x24); + (**(code **)(*piVar3 + 0x18))(piVar3,*(undefined4 *)(param_1 + 0x48),local_8); + } + return; +} + + + +/* @00439650 file=? name=FUN_00439650 */ + +void __cdecl FUN_00439650(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004ea014; + FUN_0043accb(param_1 + 9,2); + FUN_00436d4c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0043968c file=? name=FUN_0043968c */ + +undefined4 * __cdecl FUN_0043968c(undefined4 *param_1,int *param_2,int param_3) + +{ + undefined4 local_14; + int local_10; + int local_c; + int local_8; + + FUN_00436d14(param_1,param_2,&DAT_004e8698); + *param_1 = &PTR_FUN_004ea014; + FUN_0043acac(param_1 + 9,0); + FUN_0043afbc(param_2,&local_8); + (**(code **)(*param_2 + 0x1c))(param_2,&local_c,4); + (**(code **)(*param_2 + 0x1c))(param_2,&local_10,4); + (**(code **)(*param_2 + 0x1c))(param_2,&local_14,4); + FUN_00439928((int)param_1,local_8,param_3,local_c,local_10,local_14); + return param_1; +} + + + +/* @00439724 file=munga/audcmp.cpp name=FUN_00439724 */ + +void __cdecl FUN_00439724(int *param_1,int param_2) + +{ + uint *puVar1; + char *pcVar2; + int local_14; + int local_10; + int local_c; + uint *local_8; + + FUN_00414c58(param_1); + puVar1 = (uint *)FUN_00402298(0x10); + if (puVar1 == (uint *)0x0) { + local_8 = (uint *)0x0; + } + else { + local_8 = FUN_00402460(puVar1,s_audio_component_004e93bd); + } + local_8[3] = local_8[3] + 1; + FUN_00417240(param_1,param_2,(int *)&local_8); + pcVar2 = (char *)FUN_00403ad0(param_2,s_first_input_control_ID_004e93cd); + if (pcVar2 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004e93e4,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_first_input_control_ID_004e9409,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004e9420,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004e9422,s_d__tesla_bt_munga_AUDCMP_CPP_004e9462 + ,0x2df); + } + FUN_00407ae0(pcVar2,&local_c); + (**(code **)(*param_1 + 0x20))(param_1,&local_c,4); + pcVar2 = (char *)FUN_00403ad0(param_2,s_last_input_control_ID_004e947f); + if (pcVar2 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004e9495,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_last_input_control_ID_004e94ba,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004e94d0,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004e94d2,s_d__tesla_bt_munga_AUDCMP_CPP_004e9512 + ,0x2e0); + } + FUN_00407ae0(pcVar2,&local_10); + (**(code **)(*param_1 + 0x20))(param_1,&local_10,4); + pcVar2 = (char *)FUN_00403ad0(param_2,s_output_control_ID_004e952f); + if (pcVar2 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004e9541,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_output_control_ID_004e9566,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004e9578,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004e957a,s_d__tesla_bt_munga_AUDCMP_CPP_004e95ba + ,0x2e1); + } + FUN_00407ae0(pcVar2,&local_14); + (**(code **)(*param_1 + 0x20))(param_1,&local_14,4); + puVar1 = local_8 + 3; + *puVar1 = *puVar1 - 1; + if (*puVar1 == 0) { + FUN_004024d8((int *)local_8,3); + } + return; +} + + + +/* @00439928 file=? name=FUN_00439928 */ + +void __cdecl +FUN_00439928(int param_1,int param_2,int param_3,int param_4,int param_5,undefined4 param_6) + +{ + undefined4 *puVar1; + int iVar2; + + *(int *)(param_1 + 0x40) = param_4; + *(undefined4 *)(param_1 + 0x48) = param_6; + *(int *)(param_1 + 0x44) = (param_5 - param_4) + 1; + puVar1 = (undefined4 *)(param_1 + 0x30); + for (iVar2 = 0; iVar2 < *(int *)(param_1 + 0x44); iVar2 = iVar2 + 1) { + *puVar1 = 0x3f800000; + puVar1 = puVar1 + 1; + } + (**(code **)(*(int *)(param_1 + 0x24) + 4))(param_1 + 0x24,param_2); + (**(code **)(*(int *)(param_2 + 0x14) + 4))(param_2 + 0x14,param_1); + FUN_004206b4(param_3,param_1); + return; +} + + + +/* @00439994 file=? name=FUN_00439994 */ + +undefined4 __cdecl FUN_00439994(int param_1) + +{ + FUN_00436d88(param_1); + return 1; +} + + + +/* @004399a8 file=? name=FUN_004399a8 */ + +void __cdecl FUN_004399a8(int param_1,int param_2,undefined4 param_3) + +{ + int iVar1; + float *pfVar2; + int *piVar3; + float local_8; + + iVar1 = param_2 - *(int *)(param_1 + 0x40); + if ((-1 < iVar1) && (iVar1 < *(int *)(param_1 + 0x44))) { + *(undefined4 *)(param_1 + 0x30 + iVar1 * 4) = param_3; + local_8 = 1.0; + pfVar2 = (float *)(param_1 + 0x30); + for (iVar1 = 0; iVar1 < *(int *)(param_1 + 0x44); iVar1 = iVar1 + 1) { + local_8 = *pfVar2 * local_8; + pfVar2 = pfVar2 + 1; + } + piVar3 = (int *)FUN_00417ab4(param_1 + 0x24); + (**(code **)(*piVar3 + 0x18))(piVar3,*(undefined4 *)(param_1 + 0x48),local_8); + } + return; +} + + + +/* @00439a0c file=? name=FUN_00439a0c */ + +void __cdecl FUN_00439a0c(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e9ff8; + FUN_0043adb5(param_1 + 0xc,2); + FUN_0043accb(param_1 + 9,2); + FUN_00436d4c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00439a54 file=? name=FUN_00439a54 */ + +undefined4 * __cdecl FUN_00439a54(undefined4 *param_1,int *param_2,int param_3) + +{ + undefined4 local_14; + undefined4 local_10; + uint local_c; + int local_8; + + FUN_00436d14(param_1,param_2,&DAT_004e8698); + *param_1 = &PTR_FUN_004e9ff8; + FUN_0043acac(param_1 + 9,0); + FUN_0043ad42((int)(param_1 + 0xc)); + FUN_0043afbc(param_2,&local_8); + (**(code **)(*param_2 + 0x1c))(param_2,&local_14,4); + (**(code **)(*param_2 + 0x1c))(param_2,&local_c,4); + (**(code **)(*param_2 + 0x1c))(param_2,&local_10,4); + FUN_0043ad70(param_1 + 0xc,local_c,local_10); + FUN_00439cc0((int)param_1,local_8,param_3,local_14); + return param_1; +} + + + +/* @00439b00 file=munga/audcmp.cpp name=FUN_00439b00 */ + +void __cdecl FUN_00439b00(int *param_1,int param_2) + +{ + uint *puVar1; + char *pcVar2; + int iVar3; + float *pfVar4; + float local_14; + int local_10; + int local_c; + uint *local_8; + + FUN_00414c58(param_1); + puVar1 = (uint *)FUN_00402298(0x10); + if (puVar1 == (uint *)0x0) { + local_8 = (uint *)0x0; + } + else { + local_8 = FUN_00402460(puVar1,s_audio_component_004e95d7); + } + local_8[3] = local_8[3] + 1; + FUN_00417240(param_1,param_2,(int *)&local_8); + pcVar2 = (char *)FUN_00403ad0(param_2,s_control_ID_004e95e7); + if (pcVar2 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004e95f2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_control_ID_004e9617,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004e9622,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004e9624,s_d__tesla_bt_munga_AUDCMP_CPP_004e9664 + ,0x38b); + } + FUN_00407ae0(pcVar2,&local_c); + (**(code **)(*param_1 + 0x20))(param_1,&local_c,4); + pcVar2 = (char *)FUN_00403ad0(param_2,s_number_of_samples_004e9681); + if (pcVar2 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004e9693,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_number_of_samples_004e96b8,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004e96ca,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004e96cc,s_d__tesla_bt_munga_AUDCMP_CPP_004e970c + ,0x38c); + } + FUN_00407b08(pcVar2,&local_10); + (**(code **)(*param_1 + 0x20))(param_1,&local_10,4); + local_14 = 0.0; + iVar3 = FUN_00403ad0(param_2,s_initial_fill_value_004e9729); + if (iVar3 != 0) { + pfVar4 = &local_14; + pcVar2 = (char *)FUN_00403ad0(param_2,s_initial_fill_value_004e973c); + FUN_00407b78(pcVar2,pfVar4); + } + (**(code **)(*param_1 + 0x20))(param_1,&local_14,4); + puVar1 = local_8 + 3; + *puVar1 = *puVar1 - 1; + if (*puVar1 == 0) { + FUN_004024d8((int *)local_8,3); + } + return; +} + + + +/* @00439cc0 file=? name=FUN_00439cc0 */ + +void __cdecl FUN_00439cc0(int param_1,int param_2,int param_3,undefined4 param_4) + +{ + *(undefined4 *)(param_1 + 0x3c) = param_4; + (**(code **)(*(int *)(param_1 + 0x24) + 4))(param_1 + 0x24,param_2); + (**(code **)(*(int *)(param_2 + 0x14) + 4))(param_2 + 0x14,param_1); + FUN_004206b4(param_3,param_1); + return; +} + + + +/* @00439d04 file=? name=FUN_00439d04 */ + +undefined4 __cdecl FUN_00439d04(int param_1) + +{ + FUN_00436d88(param_1); + return 1; +} + + + +/* @00439d18 file=? name=FUN_00439d18 */ + +void __cdecl FUN_00439d18(int param_1,int param_2,undefined4 param_3) + +{ + int *piVar1; + float10 fVar2; + + if (param_2 == *(int *)(param_1 + 0x3c)) { + FUN_0043ade4((uint *)(param_1 + 0x30),param_3); + piVar1 = (int *)FUN_00417ab4(param_1 + 0x24); + fVar2 = FUN_0043ae47((uint *)(param_1 + 0x30)); + (**(code **)(*piVar1 + 0x18))(piVar1,*(undefined4 *)(param_1 + 0x3c),(float)fVar2); + } + return; +} + + + +/* @00439d68 file=? name=FUN_00439d68 */ + +void __cdecl FUN_00439d68(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e9fdc; + FUN_0043accb(param_1 + 9,2); + FUN_00436d4c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00439da4 file=? name=FUN_00439da4 */ + +undefined4 * __cdecl FUN_00439da4(undefined4 *param_1,int *param_2,int param_3) + +{ + undefined4 local_1c; + undefined4 local_18; + undefined4 local_14; + undefined4 local_10; + int local_c; + int local_8; + + FUN_00436d14(param_1,param_2,&DAT_004e8698); + *param_1 = &PTR_FUN_004e9fdc; + FUN_0043acac(param_1 + 9,0); + FUN_0043b074(param_2,&local_8); + FUN_0043b0a3(param_2,&local_c); + (**(code **)(*param_2 + 0x1c))(param_2,&local_10,4); + (**(code **)(*param_2 + 0x1c))(param_2,&local_14,4); + (**(code **)(*param_2 + 0x1c))(param_2,&local_18,4); + (**(code **)(*param_2 + 0x1c))(param_2,&local_1c,4); + FUN_0043a130((int)param_1,local_8,param_3,local_c,local_10,local_14,local_18,local_1c); + return param_1; +} + + + +/* @00439e60 file=munga/audcmp.cpp name=FUN_00439e60 */ + +void __cdecl FUN_00439e60(int *param_1,int param_2) + +{ + uint *puVar1; + char *pcVar2; + int local_1c; + float local_18; + float local_14; + int local_10; + uint *local_c; + uint *local_8; + + FUN_00414c58(param_1); + puVar1 = (uint *)FUN_00402298(0x10); + if (puVar1 == (uint *)0x0) { + local_8 = (uint *)0x0; + } + else { + local_8 = FUN_00402460(puVar1,s_audio_source_004e974f); + } + local_8[3] = local_8[3] + 1; + FUN_00417240(param_1,param_2,(int *)&local_8); + puVar1 = (uint *)FUN_00402298(0x10); + if (puVar1 == (uint *)0x0) { + local_c = (uint *)0x0; + } + else { + local_c = FUN_00402460(puVar1,s_audio_resource_index_004e975c); + } + local_c[3] = local_c[3] + 1; + FUN_00417240(param_1,param_2,(int *)&local_c); + pcVar2 = (char *)FUN_00403ad0(param_2,s_control_ID_004e9771); + if (pcVar2 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004e977c,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_control_ID_004e97a1,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004e97ac,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004e97ae,s_d__tesla_bt_munga_AUDCMP_CPP_004e97ee + ,0x41d); + } + FUN_00407ae0(pcVar2,&local_10); + (**(code **)(*param_1 + 0x20))(param_1,&local_10,4); + pcVar2 = (char *)FUN_00403ad0(param_2,s_min_control_value_004e980b); + if (pcVar2 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004e981d,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_min_control_value_004e9842,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004e9854,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004e9856,s_d__tesla_bt_munga_AUDCMP_CPP_004e9896 + ,0x41e); + } + FUN_00407b78(pcVar2,&local_14); + (**(code **)(*param_1 + 0x20))(param_1,&local_14,4); + pcVar2 = (char *)FUN_00403ad0(param_2,s_max_control_value_004e98b3); + if (pcVar2 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004e98c5,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_max_control_value_004e98ea,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004e98fc,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004e98fe,s_d__tesla_bt_munga_AUDCMP_CPP_004e993e + ,0x41f); + } + FUN_00407b78(pcVar2,&local_18); + (**(code **)(*param_1 + 0x20))(param_1,&local_18,4); + pcVar2 = (char *)FUN_00403ad0(param_2,s_dump_value_004e995b); + if (pcVar2 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004e9966,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_dump_value_004e998b,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004e9996,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004e9998,s_d__tesla_bt_munga_AUDCMP_CPP_004e99d8 + ,0x420); + } + FUN_00407ae0(pcVar2,&local_1c); + (**(code **)(*param_1 + 0x20))(param_1,&local_1c,4); + puVar1 = local_c + 3; + *puVar1 = *puVar1 - 1; + if (*puVar1 == 0) { + FUN_004024d8((int *)local_c,3); + } + puVar1 = local_8 + 3; + *puVar1 = *puVar1 - 1; + if (*puVar1 == 0) { + FUN_004024d8((int *)local_8,3); + } + return; +} + + + +/* @0043a130 file=? name=FUN_0043a130 */ + +void __cdecl +FUN_0043a130(int param_1,int param_2,int param_3,undefined4 param_4,undefined4 param_5, + undefined4 param_6,undefined4 param_7,undefined4 param_8) + +{ + *(undefined4 *)(param_1 + 0x34) = param_5; + *(undefined4 *)(param_1 + 0x38) = param_6; + *(undefined4 *)(param_1 + 0x3c) = param_7; + *(undefined4 *)(param_1 + 0x40) = param_8; + *(undefined4 *)(param_1 + 0x30) = param_4; + (**(code **)(*(int *)(param_1 + 0x24) + 4))(param_1 + 0x24,param_2); + (**(code **)(*(int *)(param_2 + 0x14) + 4))(param_2 + 0x14,param_1); + FUN_004206b4(param_3,param_1); + return; +} + + + +/* @0043a18c file=? name=FUN_0043a18c */ + +undefined4 __cdecl FUN_0043a18c(int param_1) + +{ + FUN_00436d88(param_1); + return 1; +} + + + +/* @0043a1a0 file=? name=FUN_0043a1a0 */ + +void __cdecl FUN_0043a1a0(int param_1,int param_2) + +{ + int iVar1; + undefined4 uVar2; + + if ((param_2 == *(int *)(param_1 + 0x34)) && + (iVar1 = FUN_00417ab4(param_1 + 0x24), *(int *)(iVar1 + 0x2c) == 0)) { + FUN_00437c4c(*(int *)(param_1 + 0x30)); + uVar2 = FUN_004dcd94(); + uVar2 = FUN_00437c0c(*(int *)(param_1 + 0x30),uVar2); + FUN_0043b9f4(iVar1,uVar2); + } + return; +} + + + +/* @0043a248 file=? name=FUN_0043a248 */ + +undefined4 * __cdecl FUN_0043a248(undefined4 *param_1,int *param_2,int param_3) + +{ + undefined4 local_1c; + undefined4 local_18; + undefined4 local_14; + undefined1 local_10 [4]; + undefined4 local_c; + int local_8; + + FUN_00436d14(param_1,param_2,&DAT_004e8698); + *param_1 = &PTR_FUN_004e9fc0; + FUN_0043acac(param_1 + 9,0); + param_1[0x10] = 0xffffffff; + param_1[0x11] = 0xffffffff; + local_14 = 0xffffffff; + FUN_0043afbc(param_2,&local_8); + (**(code **)(*param_2 + 0x1c))(param_2,&local_c,4); + (**(code **)(*param_2 + 0x1c))(param_2,local_10,4); + local_14 = FUN_00437404(); + (**(code **)(*param_2 + 0x1c))(param_2,&local_18,4); + (**(code **)(*param_2 + 0x1c))(param_2,&local_1c,4); + FUN_0043a528((int)param_1,local_8,param_3,local_c,&local_14,local_18,local_1c); + return param_1; +} + + + +/* @0043a324 file=munga/audcmp.cpp name=FUN_0043a324 */ + +void __cdecl FUN_0043a324(int *param_1,int param_2) + +{ + uint *puVar1; + char *pcVar2; + int iVar3; + float *pfVar4; + float local_18; + float local_14; + float local_10; + int local_c; + uint *local_8; + + FUN_00414c58(param_1); + puVar1 = (uint *)FUN_00402298(0x10); + if (puVar1 == (uint *)0x0) { + local_8 = (uint *)0x0; + } + else { + local_8 = FUN_00402460(puVar1,s_audio_component_004e99f5); + } + local_8[3] = local_8[3] + 1; + FUN_00417240(param_1,param_2,(int *)&local_8); + pcVar2 = (char *)FUN_00403ad0(param_2,s_control_ID_004e9a05); + if (pcVar2 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004e9a10,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_control_ID_004e9a35,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004e9a40,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004e9a42,s_d__tesla_bt_munga_AUDCMP_CPP_004e9a82 + ,0x4d0); + } + FUN_00407ae0(pcVar2,&local_c); + (**(code **)(*param_1 + 0x20))(param_1,&local_c,4); + pcVar2 = (char *)FUN_00403ad0(param_2,s_sample_duration_004e9a9f); + if (pcVar2 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004e9aaf,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_sample_duration_004e9ad4,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004e9ae4,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004e9ae6,s_d__tesla_bt_munga_AUDCMP_CPP_004e9b26 + ,0x4d1); + } + FUN_00407b78(pcVar2,&local_10); + (**(code **)(*param_1 + 0x20))(param_1,&local_10,4); + local_14 = 0.0; + local_18 = 1.0; + iVar3 = FUN_00403ad0(param_2,s_min_value_004e9b43); + if (iVar3 != 0) { + pfVar4 = &local_14; + pcVar2 = (char *)FUN_00403ad0(param_2,s_min_value_004e9b4d); + FUN_00407b78(pcVar2,pfVar4); + } + iVar3 = FUN_00403ad0(param_2,s_max_value_004e9b57); + if (iVar3 != 0) { + pfVar4 = &local_18; + pcVar2 = (char *)FUN_00403ad0(param_2,s_max_value_004e9b61); + FUN_00407b78(pcVar2,pfVar4); + } + (**(code **)(*param_1 + 0x20))(param_1,&local_14,4); + (**(code **)(*param_1 + 0x20))(param_1,&local_18,4); + puVar1 = local_8 + 3; + *puVar1 = *puVar1 - 1; + if (*puVar1 == 0) { + FUN_004024d8((int *)local_8,3); + } + return; +} + + + +/* @0043a528 file=? name=FUN_0043a528 */ + +void __cdecl +FUN_0043a528(int param_1,int param_2,int param_3,undefined4 param_4,undefined4 *param_5, + undefined4 param_6,undefined4 param_7) + +{ + undefined4 local_8; + + *(undefined4 *)(param_1 + 0x30) = param_4; + *(undefined4 *)(param_1 + 0x3c) = 0; + FUN_004373e8(&local_8); + *(undefined4 *)(param_1 + 0x40) = local_8; + *(undefined4 *)(param_1 + 0x44) = *param_5; + *(undefined4 *)(param_1 + 0x34) = param_6; + *(undefined4 *)(param_1 + 0x38) = param_7; + (**(code **)(*(int *)(param_1 + 0x24) + 4))(param_1 + 0x24,param_2); + (**(code **)(*(int *)(param_2 + 0x14) + 4))(param_2 + 0x14,param_1); + FUN_004206b4(param_3,param_1); + return; +} + + + +/* @0043a59c file=? name=FUN_0043a59c */ + +void __cdecl FUN_0043a59c(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e9fc0; + FUN_0043accb(param_1 + 9,2); + FUN_00436d4c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0043a5d8 file=? name=FUN_0043a5d8 */ + +void __cdecl FUN_0043a5d8(int param_1) + +{ + int local_8; + + FUN_00436e14(param_1); + FUN_004373e8(&local_8); + if (*(int *)(param_1 + 0x40) < local_8) { + FUN_0043a628(param_1); + } + return; +} + + + +/* @0043a610 file=? name=FUN_0043a610 */ + +void __cdecl FUN_0043a610(int param_1,int param_2) + +{ + if (param_2 == 1) { + FUN_0043a628(param_1); + } + return; +} + + + +/* @0043a628 file=? name=FUN_0043a628 */ + +void __cdecl FUN_0043a628(int param_1) + +{ + int *piVar1; + float10 fVar2; + int local_c; + float local_8; + + fVar2 = FUN_00408050(); + local_8 = (float)fVar2; + *(float *)(param_1 + 0x3c) = + (*(float *)(param_1 + 0x38) - *(float *)(param_1 + 0x34)) * local_8 + + *(float *)(param_1 + 0x34); + FUN_004373e8(&local_c); + piVar1 = (int *)(param_1 + 0x40); + *piVar1 = local_c; + *piVar1 = *piVar1 + *(int *)(param_1 + 0x44); + piVar1 = (int *)FUN_00417ab4(param_1 + 0x24); + (**(code **)(*piVar1 + 0x18)) + (piVar1,*(undefined4 *)(param_1 + 0x30),*(undefined4 *)(param_1 + 0x3c)); + return; +} + + + +/* @0043a68c file=? name=FUN_0043a68c */ + +undefined4 * __cdecl FUN_0043a68c(undefined4 *param_1,int *param_2,int param_3) + +{ + undefined4 local_20; + undefined4 local_1c; + undefined4 local_18; + undefined4 local_14; + undefined4 local_10; + undefined4 local_c; + int local_8; + + FUN_00436d14(param_1,param_2,&DAT_004e8698); + *param_1 = &PTR_FUN_004e9fa4; + FUN_0043acac(param_1 + 9,0); + param_1[0x10] = 0xffffffff; + param_1[0x11] = 0xffffffff; + FUN_0043afbc(param_2,&local_8); + (**(code **)(*param_2 + 0x1c))(param_2,&local_c,4); + (**(code **)(*param_2 + 0x1c))(param_2,&local_10,4); + (**(code **)(*param_2 + 0x1c))(param_2,&local_14,4); + (**(code **)(*param_2 + 0x1c))(param_2,&local_18,4); + (**(code **)(*param_2 + 0x1c))(param_2,&local_1c,4); + (**(code **)(*param_2 + 0x1c))(param_2,&local_20,4); + FUN_0043ab00((int)param_1,local_8,param_3,local_c,local_10,local_14,local_18,local_1c,local_20); + return param_1; +} + + + +/* @0043a770 file=munga/audcmp.cpp name=FUN_0043a770 */ + +void __cdecl FUN_0043a770(int *param_1,int param_2) + +{ + uint *puVar1; + char *pcVar2; + int local_20; + float local_1c; + float local_18; + float local_14; + int local_10; + int local_c; + uint *local_8; + + FUN_00414c58(param_1); + puVar1 = (uint *)FUN_00402298(0x10); + if (puVar1 == (uint *)0x0) { + local_8 = (uint *)0x0; + } + else { + local_8 = FUN_00402460(puVar1,s_audio_component_004e9b6b); + } + local_8[3] = local_8[3] + 1; + FUN_00417240(param_1,param_2,(int *)&local_8); + pcVar2 = (char *)FUN_00403ad0(param_2,s_control_ID_004e9b7b); + if (pcVar2 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004e9b86,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_control_ID_004e9bab,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004e9bb6,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004e9bb8,s_d__tesla_bt_munga_AUDCMP_CPP_004e9bf8 + ,0x599); + } + FUN_00407ae0(pcVar2,&local_c); + (**(code **)(*param_1 + 0x20))(param_1,&local_c,4); + pcVar2 = (char *)FUN_00403ad0(param_2,s_wave_form_004e9c15); + if (pcVar2 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004e9c1f,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_wave_form_004e9c44,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004e9c4e,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004e9c50,s_d__tesla_bt_munga_AUDCMP_CPP_004e9c90 + ,0x59a); + } + FUN_00407ae0(pcVar2,&local_10); + (**(code **)(*param_1 + 0x20))(param_1,&local_10,4); + pcVar2 = (char *)FUN_00403ad0(param_2,s_period_004e9cad); + if (pcVar2 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004e9cb4,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_period_004e9cd9,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004e9ce0,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004e9ce2,s_d__tesla_bt_munga_AUDCMP_CPP_004e9d22 + ,0x59b); + } + FUN_00407b78(pcVar2,&local_14); + (**(code **)(*param_1 + 0x20))(param_1,&local_14,4); + pcVar2 = (char *)FUN_00403ad0(param_2,s_min_value_004e9d3f); + if (pcVar2 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004e9d49,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_min_value_004e9d6e,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004e9d78,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004e9d7a,s_d__tesla_bt_munga_AUDCMP_CPP_004e9dba + ,0x5a0); + } + FUN_00407b78(pcVar2,&local_18); + (**(code **)(*param_1 + 0x20))(param_1,&local_18,4); + pcVar2 = (char *)FUN_00403ad0(param_2,s_max_value_004e9dd7); + if (pcVar2 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004e9de1,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_max_value_004e9e06,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004e9e10,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004e9e12,s_d__tesla_bt_munga_AUDCMP_CPP_004e9e52 + ,0x5a1); + } + FUN_00407b78(pcVar2,&local_1c); + (**(code **)(*param_1 + 0x20))(param_1,&local_1c,4); + pcVar2 = (char *)FUN_00403ad0(param_2,s_dump_value_004e9e6f); + if (pcVar2 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004e9e7a,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_dump_value_004e9e9f,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004e9eaa,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004e9eac,s_d__tesla_bt_munga_AUDCMP_CPP_004e9eec + ,0x5a2); + } + FUN_00407ae0(pcVar2,&local_20); + (**(code **)(*param_1 + 0x20))(param_1,&local_20,4); + puVar1 = local_8 + 3; + *puVar1 = *puVar1 - 1; + if (*puVar1 == 0) { + FUN_004024d8((int *)local_8,3); + } + return; +} + + + +/* @0043ab00 file=? name=FUN_0043ab00 */ + +void __cdecl +FUN_0043ab00(int param_1,int param_2,int param_3,undefined4 param_4,undefined4 param_5, + undefined4 param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9) + +{ + undefined4 uVar1; + undefined4 local_c; + undefined4 local_8; + + (**(code **)(*(int *)(param_1 + 0x24) + 4))(param_1 + 0x24,param_2); + (**(code **)(*(int *)(param_2 + 0x14) + 4))(param_2 + 0x14,param_1); + *(undefined4 *)(param_1 + 0x30) = param_4; + *(undefined4 *)(param_1 + 0x34) = param_5; + *(undefined4 *)(param_1 + 0x38) = param_7; + *(undefined4 *)(param_1 + 0x3c) = param_8; + local_8 = param_6; + uVar1 = FUN_00437404(); + *(undefined4 *)(param_1 + 0x40) = uVar1; + FUN_004373e8(&local_c); + *(undefined4 *)(param_1 + 0x44) = local_c; + *(undefined4 *)(param_1 + 0x48) = param_9; + FUN_004206b4(param_3,param_1); + return; +} + + + +/* @0043ab88 file=? name=FUN_0043ab88 */ + +void __cdecl FUN_0043ab88(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e9fa4; + FUN_0043accb(param_1 + 9,2); + FUN_00436d4c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0043abc4 file=? name=FUN_0043abc4 */ + +void __cdecl FUN_0043abc4(int param_1) + +{ + FUN_00436e14(param_1); + FUN_0043abf4(param_1); + return; +} + + + +/* @0043abdc file=? name=FUN_0043abdc */ + +void __cdecl FUN_0043abdc(int param_1,int param_2) + +{ + if (param_2 == 1) { + FUN_0043abf4(param_1); + } + return; +} + + + +/* @0043abf4 file=? name=FUN_0043abf4 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_0043abf4(int param_1) + +{ + int *piVar1; + float10 fVar2; + float10 fVar3; + float10 fVar4; + int local_14; + float local_10; + float local_c; + float local_8; + + FUN_004373e8(&local_14); + fVar2 = FUN_00437428(&local_14,local_14); + local_8 = (float)fVar2; + fVar3 = FUN_00437428((int *)(param_1 + 0x44),*(int *)(param_1 + 0x44)); + fVar2 = (float10)local_8; + fVar4 = FUN_00437428((int *)(param_1 + 0x40),*(int *)(param_1 + 0x40)); + local_8 = (float)((float10)(float)(fVar2 - fVar3) / fVar4); + fVar2 = (float10)FUN_004dd0f4(SUB84((double)(local_8 * _DAT_0043aca0),0), + (int)((ulonglong)(double)(local_8 * _DAT_0043aca0) >> 0x20)); + local_c = (float)((fVar2 + (float10)_DAT_0043aca4) * (float10)_DAT_0043aca8); + local_10 = (*(float *)(param_1 + 0x3c) - *(float *)(param_1 + 0x38)) * local_c + + *(float *)(param_1 + 0x38); + piVar1 = (int *)FUN_00417ab4(param_1 + 0x24); + (**(code **)(*piVar1 + 0x18))(piVar1,*(undefined4 *)(param_1 + 0x30),local_10); + return; +} + + + +/* @0043acac file=? name=FUN_0043acac */ + +undefined4 * __cdecl FUN_0043acac(undefined4 *param_1,undefined4 param_2) + +{ + FUN_004179d4(param_1,param_2); + *param_1 = &PTR_FUN_004e9f9c; + return param_1; +} + + + +/* @0043accb file=? name=FUN_0043accb */ + +void __cdecl FUN_0043accb(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e9f9c; + FUN_004179f8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0043acf7 file=? name=FUN_0043acf7 */ + +undefined4 * __cdecl FUN_0043acf7(undefined4 *param_1,undefined4 param_2) + +{ + FUN_0041827c(param_1,param_2); + *param_1 = &PTR_FUN_004e9f94; + return param_1; +} + + + +/* @0043ad16 file=? name=FUN_0043ad16 */ + +void __cdecl FUN_0043ad16(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e9f94; + FUN_004182a8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0043ad42 file=? name=FUN_0043ad42 */ + +void __cdecl FUN_0043ad42(int param_1) + +{ + *(undefined4 *)(param_1 + 8) = 0; + return; +} + + + +/* @0043ad4f file=? name=FUN_0043ad4f */ + +uint * __cdecl FUN_0043ad4f(uint *param_1,uint param_2,undefined4 param_3) + +{ + param_1[2] = 0; + FUN_0043ad70(param_1,param_2,param_3); + return param_1; +} + + + +/* @0043ad70 file=? name=FUN_0043ad70 */ + +void __cdecl FUN_0043ad70(uint *param_1,uint param_2,undefined4 param_3) + +{ + uint uVar1; + + if ((int *)param_1[2] != (int *)0x0) { + FUN_004022e8((int *)param_1[2]); + } + *param_1 = param_2; + uVar1 = FUN_004022b0(param_2 << 2); + param_1[2] = uVar1; + param_1[1] = 0; + for (uVar1 = 0; uVar1 < *param_1; uVar1 = uVar1 + 1) { + *(undefined4 *)(param_1[2] + uVar1 * 4) = param_3; + } + return; +} + + + +/* @0043adb5 file=? name=FUN_0043adb5 */ + +void __cdecl FUN_0043adb5(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + FUN_004022e8((int *)param_1[2]); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0043adda file=? name=FUN_0043adda */ + +undefined4 FUN_0043adda(void) + +{ + return 1; +} + + + +/* @0043ade4 file=? name=FUN_0043ade4 */ + +void __cdecl FUN_0043ade4(uint *param_1,undefined4 param_2) + +{ + *(undefined4 *)(param_1[2] + param_1[1] * 4) = param_2; + param_1[1] = param_1[1] + 1; + if (*param_1 <= param_1[1]) { + param_1[1] = 0; + } + return; +} + + + +/* @0043ae0b file=? name=FUN_0043ae0b */ + +float10 __cdecl FUN_0043ae0b(uint *param_1) + +{ + uint uVar1; + float *pfVar2; + float local_8; + + local_8 = 0.0; + pfVar2 = (float *)param_1[2]; + for (uVar1 = 0; uVar1 < *param_1; uVar1 = uVar1 + 1) { + local_8 = *pfVar2 + local_8; + pfVar2 = pfVar2 + 1; + } + return (float10)local_8 / (float10)*param_1; +} + + + +/* @0043ae47 file=? name=FUN_0043ae47 */ + +float10 __cdecl FUN_0043ae47(uint *param_1) + +{ + uint uVar1; + float *pfVar2; + float local_10; + float local_c; + float local_8; + + local_c = *(float *)param_1[2]; + local_10 = *(float *)param_1[2]; + local_8 = 0.0; + pfVar2 = (float *)param_1[2]; + for (uVar1 = 0; uVar1 < *param_1; uVar1 = uVar1 + 1) { + local_8 = *pfVar2 + local_8; + if (*pfVar2 < local_c) { + local_c = *pfVar2; + } + if (local_10 < *pfVar2) { + local_10 = *pfVar2; + } + pfVar2 = pfVar2 + 1; + } + return (float10)((local_8 - local_c) - local_10) / (float10)(*param_1 - 2); +} + + + +/* @0043aed4 file=? name=FUN_0043aed4 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 __cdecl FUN_0043aed4(uint *param_1) + +{ + uint uVar1; + float fVar2; + float fVar3; + uint uVar4; + float local_1c; + float local_c; + float local_8; + + local_8 = 0.0; + local_c = 0.0; + uVar1 = *param_1; + fVar2 = (float)uVar1; + fVar3 = fVar2 * fVar2 * _DAT_0043af9c; + fVar2 = fVar2 * _DAT_0043af9c + fVar3; + uVar4 = param_1[1]; + local_1c = 1.0; + do { + local_8 = *(float *)(param_1[2] + uVar4 * 4) + local_8; + local_c = local_1c * *(float *)(param_1[2] + uVar4 * 4) + local_c; + local_1c = _DAT_0043afb8 + local_1c; + uVar4 = uVar4 + 1; + if (uVar4 == *param_1) { + uVar4 = 0; + } + } while (uVar4 != param_1[1]); + return ((float10)uVar1 * (float10)local_c - (float10)fVar2 * (float10)local_8) / + ((float10)uVar1 * + (float10)(float)(_DAT_0043afac * (float10)uVar1 + + _DAT_0043afa0 * (float10)uVar1 * (float10)uVar1 * (float10)uVar1 + + (float10)fVar3) - (float10)fVar2 * (float10)fVar2); +} + + + +/* @0043afbc file=? name=FUN_0043afbc */ + +void __cdecl FUN_0043afbc(int *param_1,int *param_2) + +{ + int iVar1; + undefined4 local_8; + + (**(code **)(*param_1 + 0x1c))(param_1,&local_8,4); + iVar1 = FUN_004170e4((int)param_1,local_8); + *param_2 = iVar1; + return; +} + + + +/* @0043afeb file=? name=FUN_0043afeb */ + +undefined4 * __cdecl FUN_0043afeb(undefined4 *param_1,int param_2) + +{ + FUN_00418398(param_1,param_2); + *param_1 = &PTR_FUN_004e9f40; + return param_1; +} + + + +/* @0043b00a file=? name=FUN_0043b00a */ + +undefined4 * __cdecl FUN_0043b00a(undefined4 *param_1,int param_2) + +{ + FUN_00418398(param_1,param_2); + *param_1 = &PTR_FUN_004e9f40; + return param_1; +} + + + +/* @0043b029 file=? name=FUN_0043b029 */ + +undefined4 * __cdecl FUN_0043b029(undefined4 *param_1,int param_2) + +{ + FUN_004183c0(param_1,param_2); + *param_1 = &PTR_FUN_004e9f40; + return param_1; +} + + + +/* @0043b048 file=? name=FUN_0043b048 */ + +void __cdecl FUN_0043b048(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004e9f40; + FUN_004183ec(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0043b074 file=? name=FUN_0043b074 */ + +void __cdecl FUN_0043b074(int *param_1,int *param_2) + +{ + int iVar1; + undefined4 local_8; + + (**(code **)(*param_1 + 0x1c))(param_1,&local_8,4); + iVar1 = FUN_004170e4((int)param_1,local_8); + *param_2 = iVar1; + return; +} + + + +/* @0043b0a3 file=? name=FUN_0043b0a3 */ + +void __cdecl FUN_0043b0a3(int *param_1,int *param_2) + +{ + int iVar1; + undefined4 local_8; + + (**(code **)(*param_1 + 0x1c))(param_1,&local_8,4); + iVar1 = FUN_004170e4((int)param_1,local_8); + *param_2 = iVar1; + return; +} + + + +/* @0043b0d2 file=? name=FUN_0043b0d2 */ + +undefined4 FUN_0043b0d2(void) + +{ + return 1; +} + + + +/* @0043b0dc file=? name=FUN_0043b0dc */ + +undefined4 * __cdecl FUN_0043b0dc(undefined4 *param_1) + +{ + undefined4 uVar1; + + param_1[4] = 0xffffffff; + param_1[5] = 0xffffffff; + *param_1 = 0x42700000; + param_1[1] = 0; + param_1[2] = 0; + param_1[3] = 0; + uVar1 = FUN_00437404(); + param_1[4] = uVar1; + uVar1 = FUN_00437404(); + param_1[5] = uVar1; + return param_1; +} + + + +/* @0043b138 file=? name=FUN_0043b138 */ + +void __cdecl FUN_0043b138(int *param_1,byte param_2) + +{ + if ((param_1 != (int *)0x0) && ((param_2 & 1) != 0)) { + FUN_004022d0(param_1); + } + return; +} + + + +/* @0043b154 file=? name=FUN_0043b154 */ + +undefined4 FUN_0043b154(void) + +{ + return 1; +} + + + +/* @0043b170 file=? name=FUN_0043b170 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_0043b170(int param_1,float param_2) + +{ + int *piVar1; + int iVar2; + undefined4 uVar3; + int local_14 [2]; + float local_c; + int local_8; + + if (param_2 <= _DAT_0043b228) { + if (*(int *)(param_1 + 4) == 0) { + *(undefined4 *)(param_1 + 8) = 0; + uVar3 = FUN_00437404(); + *(undefined4 *)(param_1 + 0x14) = uVar3; + } + else { + *(undefined4 *)(param_1 + 8) = 1; + FUN_004373e8(local_14); + piVar1 = (int *)(param_1 + 0x14); + *piVar1 = local_14[0]; + iVar2 = FUN_00437404(); + *piVar1 = *piVar1 + iVar2; + *(undefined4 *)(param_1 + 4) = 0; + } + } + else { + *(undefined4 *)(param_1 + 8) = 1; + FUN_004373e8(&local_8); + piVar1 = (int *)(param_1 + 0x14); + *piVar1 = local_8; + local_c = param_2; + iVar2 = FUN_00437404(); + *piVar1 = *piVar1 + iVar2; + } + return; +} + + + +/* @0043b22c file=? name=FUN_0043b22c */ + +undefined4 * __cdecl FUN_0043b22c(undefined4 *param_1,int *param_2,int param_3) + +{ + undefined4 local_34; + undefined4 local_30; + undefined4 local_2c; + undefined1 local_28 [4]; + undefined4 local_24; + undefined4 local_20; + undefined4 local_1c; + undefined4 local_18; + undefined4 local_14; + undefined4 local_10; + int local_c; + int local_8; + + FUN_00436d14(param_1,param_2,&DAT_004ea124); + *param_1 = &PTR_FUN_004ea820; + FUN_0043b0dc(param_1 + 0xc); + FUN_0043b0dc(param_1 + 0x12); + param_1[0x1f] = 0xffffffff; + local_2c = 0xffffffff; + FUN_00437e75(param_2,&local_8); + FUN_0043c11d(param_2,&local_c); + (**(code **)(*param_2 + 0x1c))(param_2,&local_10,4); + (**(code **)(*param_2 + 0x1c))(param_2,&local_14,4); + (**(code **)(*param_2 + 0x1c))(param_2,&local_18,4); + (**(code **)(*param_2 + 0x1c))(param_2,&local_1c,4); + (**(code **)(*param_2 + 0x1c))(param_2,&local_20,4); + (**(code **)(*param_2 + 0x1c))(param_2,&local_24,4); + (**(code **)(*param_2 + 0x1c))(param_2,local_28,4); + local_2c = FUN_00437404(); + (**(code **)(*param_2 + 0x1c))(param_2,&local_30,4); + (**(code **)(*param_2 + 0x1c))(param_2,&local_34,4); + FUN_0043b8e8((int)param_1,local_8,local_c,param_3,local_10,local_14,local_18,local_1c,local_20, + local_24,&local_2c,local_30,local_34); + return param_1; +} + + + +/* @0043b37c file=munga/audsrc.cpp name=FUN_0043b37c */ + +void __cdecl FUN_0043b37c(int *param_1,int param_2) + +{ + uint *puVar1; + char *pcVar2; + int local_30; + int local_2c; + float local_28; + int local_24; + float local_20; + float local_1c; + float local_18; + int local_14; + int local_10; + uint *local_c; + uint *local_8; + + FUN_00414c58(param_1); + puVar1 = (uint *)FUN_00402298(0x10); + if (puVar1 == (uint *)0x0) { + local_8 = (uint *)0x0; + } + else { + local_8 = FUN_00402460(puVar1,s_resource_004ea143); + } + local_8[3] = local_8[3] + 1; + FUN_00417240(param_1,param_2,(int *)&local_8); + puVar1 = (uint *)FUN_00402298(0x10); + if (puVar1 == (uint *)0x0) { + local_c = (uint *)0x0; + } + else { + local_c = FUN_00402460(puVar1,s_location_004ea14c); + } + local_c[3] = local_c[3] + 1; + FUN_00417240(param_1,param_2,(int *)&local_c); + pcVar2 = (char *)FUN_00403ad0(param_2,s_priority_004ea155); + if (pcVar2 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004ea15e,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_priority_004ea183,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004ea18c,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004ea18e,s_d__tesla_bt_munga_AUDSRC_CPP_004ea1ce + ,0xf7); + } + FUN_00407ae0(pcVar2,&local_10); + (**(code **)(*param_1 + 0x20))(param_1,&local_10,4); + pcVar2 = (char *)FUN_00403ad0(param_2,s_mix_presence_004ea1eb); + if (pcVar2 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004ea1f8,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_mix_presence_004ea21d,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004ea22a,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004ea22c,s_d__tesla_bt_munga_AUDSRC_CPP_004ea26c + ,0xf8); + } + FUN_00407ae0(pcVar2,&local_14); + (**(code **)(*param_1 + 0x20))(param_1,&local_14,4); + pcVar2 = (char *)FUN_00403ad0(param_2,s_volume_mix_level_004ea289); + if (pcVar2 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004ea29a,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_volume_mix_level_004ea2bf,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004ea2d0,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004ea2d2,s_d__tesla_bt_munga_AUDSRC_CPP_004ea312 + ,0xf9); + } + FUN_00407b78(pcVar2,&local_18); + (**(code **)(*param_1 + 0x20))(param_1,&local_18,4); + pcVar2 = (char *)FUN_00403ad0(param_2,s_pitch_mix_offset_004ea32f); + if (pcVar2 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004ea340,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_pitch_mix_offset_004ea365,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004ea376,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004ea378,s_d__tesla_bt_munga_AUDSRC_CPP_004ea3b8 + ,0xfa); + } + FUN_00407b78(pcVar2,&local_1c); + (**(code **)(*param_1 + 0x20))(param_1,&local_1c,4); + pcVar2 = (char *)FUN_00403ad0(param_2,s_brightness_mix_level_004ea3d5); + if (pcVar2 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004ea3ea,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_brightness_mix_level_004ea40f,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004ea424,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004ea426,s_d__tesla_bt_munga_AUDSRC_CPP_004ea466 + ,0xfb); + } + FUN_00407b78(pcVar2,&local_20); + (**(code **)(*param_1 + 0x20))(param_1,&local_20,4); + pcVar2 = (char *)FUN_00403ad0(param_2,s_has_compression_curve_004ea483); + if (pcVar2 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004ea499,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_has_compression_curve_004ea4be,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004ea4d4,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004ea4d6,s_d__tesla_bt_munga_AUDSRC_CPP_004ea516 + ,0xfc); + } + FUN_00407ae0(pcVar2,&local_24); + (**(code **)(*param_1 + 0x20))(param_1,&local_24,4); + pcVar2 = (char *)FUN_00403ad0(param_2,s_compression_duration_004ea533); + if (pcVar2 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004ea548,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_compression_duration_004ea56d,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004ea582,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004ea584,s_d__tesla_bt_munga_AUDSRC_CPP_004ea5c4 + ,0xfd); + } + FUN_00407b78(pcVar2,&local_28); + (**(code **)(*param_1 + 0x20))(param_1,&local_28,4); + pcVar2 = (char *)FUN_00403ad0(param_2,s_use_brightness_scale_004ea5e1); + if (pcVar2 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004ea5f6,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_use_brightness_scale_004ea61b,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004ea630,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004ea632,s_d__tesla_bt_munga_AUDSRC_CPP_004ea672 + ,0xfe); + } + FUN_00407ae0(pcVar2,&local_2c); + (**(code **)(*param_1 + 0x20))(param_1,&local_2c,4); + pcVar2 = (char *)FUN_00403ad0(param_2,s_use_attack_time_scale_004ea68f); + if (pcVar2 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004ea6a5,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_use_attack_time_scale_004ea6ca,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004ea6e0,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004ea6e2,s_d__tesla_bt_munga_AUDSRC_CPP_004ea722 + ,0xff); + } + FUN_00407ae0(pcVar2,&local_30); + (**(code **)(*param_1 + 0x20))(param_1,&local_30,4); + puVar1 = local_c + 3; + *puVar1 = *puVar1 - 1; + if (*puVar1 == 0) { + FUN_004024d8((int *)local_c,3); + } + puVar1 = local_8 + 3; + *puVar1 = *puVar1 - 1; + if (*puVar1 == 0) { + FUN_004024d8((int *)local_8,3); + } + return; +} + + + +/* @0043b8e8 file=? name=FUN_0043b8e8 */ + +void __cdecl +FUN_0043b8e8(int param_1,undefined4 param_2,undefined4 param_3,int param_4,undefined4 param_5, + undefined4 param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9, + undefined4 param_10,undefined4 *param_11,undefined4 param_12,undefined4 param_13) + +{ + *(undefined4 *)(param_1 + 0x24) = param_3; + *(undefined4 *)(param_1 + 0x28) = param_2; + *(undefined4 *)(param_1 + 0x2c) = 0; + *(undefined4 *)(param_1 + 0x60) = 0x3f800000; + *(undefined4 *)(param_1 + 100) = param_13; + *(undefined4 *)(param_1 + 0x68) = 0; + *(undefined4 *)(param_1 + 0x6c) = param_5; + *(undefined4 *)(param_1 + 0x70) = param_6; + *(undefined4 *)(param_1 + 0x74) = 0x3f800000; + *(undefined4 *)(param_1 + 0x78) = param_10; + *(undefined4 *)(param_1 + 0x7c) = *param_11; + *(undefined4 *)(param_1 + 0x80) = param_7; + *(undefined4 *)(param_1 + 0x84) = param_8; + *(undefined4 *)(param_1 + 0x88) = param_12; + *(undefined4 *)(param_1 + 0x8c) = param_9; + *(undefined4 *)(param_1 + 0x90) = 0x3f800000; + *(undefined4 *)(param_1 + 0x94) = 0; + *(undefined4 *)(param_1 + 0x98) = 0x3f800000; + *(undefined4 *)(param_1 + 0x9c) = 0xffffffff; + *(undefined4 *)(param_1 + 0xa0) = 0xffffffff; + FUN_004206b4(param_4,param_1); + return; +} + + + +/* @0043b998 file=? name=FUN_0043b998 */ + +void __cdecl FUN_0043b998(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004ea820; + FUN_0043b138(param_1 + 0x12,2); + FUN_0043b138(param_1 + 0xc,2); + FUN_00436d4c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0043b9e0 file=? name=FUN_0043b9e0 */ + +undefined4 __cdecl FUN_0043b9e0(int param_1) + +{ + FUN_00436d88(param_1); + return 1; +} + + + +/* @0043b9f4 file=? name=FUN_0043b9f4 */ + +void __cdecl FUN_0043b9f4(int param_1,undefined4 param_2) + +{ + *(undefined4 *)(param_1 + 0x28) = param_2; + return; +} + + + +/* @0043ba04 file=? name=FUN_0043ba04 */ + +void __cdecl FUN_0043ba04(int param_1,int param_2) + +{ + int local_1c; + undefined4 local_18; + undefined4 local_14; + undefined4 local_10; + undefined4 local_c; + undefined4 local_8; + + if (param_2 == 2) { + FUN_0043b0dc(&local_1c); + *(int *)(param_1 + 0x30) = local_1c; + *(undefined4 *)(param_1 + 0x34) = local_18; + *(undefined4 *)(param_1 + 0x38) = local_14; + *(undefined4 *)(param_1 + 0x3c) = local_10; + *(undefined4 *)(param_1 + 0x40) = local_c; + *(undefined4 *)(param_1 + 0x44) = local_8; + FUN_0043b138(&local_1c,2); + } + *(int *)(param_1 + 0x2c) = param_2; + return; +} + + + +/* @0043ba64 file=? name=FUN_0043ba64 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 __cdecl FUN_0043ba64(int *param_1) + +{ + float10 fVar1; + int local_14; + int local_10; + float local_c; + float local_8; + + fVar1 = (float10)(**(code **)(*param_1 + 0x1c))(param_1); + local_8 = (float)fVar1; + if (param_1[0x1e] == 0) { + fVar1 = (float10)local_8; + } + else { + FUN_004373e8(&local_10); + local_14 = local_10 - param_1[0x16]; + fVar1 = FUN_00437428(&local_14,local_14); + local_c = (float)fVar1; + fVar1 = FUN_00437428(param_1 + 0x1f,param_1[0x1f]); + fVar1 = FUN_004dce94((double)((_DAT_0043bb10 / (float)fVar1) * local_c),0,0x40000000); + fVar1 = (float10)(_DAT_0043bb10 / (_DAT_0043bb10 + (float)fVar1)) * (float10)local_8; + } + return fVar1; +} + + + +/* @0043bb14 file=? name=FUN_0043bb14 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 __cdecl FUN_0043bb14(int param_1) + +{ + float fVar1; + float fVar2; + + FUN_00436db0(param_1); + fVar1 = *(float *)(param_1 + 0x90) * *(float *)(param_1 + 0x80) * *(float *)(param_1 + 0x74); + fVar2 = _DAT_004e8634; + if ((_DAT_004e8634 <= fVar1) && (fVar2 = fVar1, _DAT_004e8630 < fVar1)) { + fVar2 = _DAT_004e8630; + } + return (float10)fVar2; +} + + + +/* @0043bb70 file=? name=FUN_0043bb70 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 __cdecl FUN_0043bb70(int param_1) + +{ + float fVar1; + float fVar2; + + fVar1 = *(float *)(param_1 + 0x98) * *(float *)(param_1 + 0x8c); + fVar2 = _DAT_004e8640; + if ((_DAT_004e8640 <= fVar1) && (fVar2 = fVar1, _DAT_004e863c < fVar1)) { + fVar2 = _DAT_004e863c; + } + return (float10)fVar2; +} + + + +/* @0043bbc0 file=munga/audsrc.cpp name=FUN_0043bbc0 */ + +void __cdecl FUN_0043bbc0(int *param_1,undefined4 param_2,undefined4 param_3) + +{ + uint local_30 [10]; + undefined4 local_8; + + switch(param_2) { + case 0: + case 9: + break; + case 1: + local_8 = param_3; + local_30[5] = 0x14; + local_30[6] = 4; + local_30[7] = 1; + local_30[8] = 1; + local_30[9] = param_3; + FUN_00442068(*(int *)(DAT_004efc94 + 0x44),param_1,local_30 + 5); + break; + case 2: + local_30[0] = 0x14; + local_30[1] = 5; + local_30[2] = 1; + local_30[3] = 2; + local_30[4] = 0; + FUN_00442068(*(int *)(DAT_004efc94 + 0x44),param_1,local_30); + break; + case 3: + (**(code **)(*param_1 + 0x28))(param_1,param_3); + break; + case 4: + (**(code **)(*param_1 + 0x2c))(param_1,param_3); + break; + case 5: + (**(code **)(*param_1 + 0x30))(param_1,param_3); + break; + case 6: + (**(code **)(*param_1 + 0x34))(param_1,param_3); + break; + case 7: + (**(code **)(*param_1 + 0x38))(param_1,param_3); + break; + case 8: + (**(code **)(*param_1 + 0x3c))(param_1,param_3); + break; + case 10: + (**(code **)(*param_1 + 0x40))(param_1,param_3); + break; + case 0xb: + FUN_004421b4(*(int *)(DAT_004efc94 + 0x44),(int)param_1); + break; + default: + FUN_0040385c(s_AudioSource__ReceiveControl___Sh_004ea73f,s_d__tesla_bt_munga_AUDSRC_CPP_004ea775 + ,0x233); + } + return; +} + + + +/* @0043bd20 file=? name=FUN_0043bd20 */ + +void __cdecl FUN_0043bd20(int *param_1,int param_2) + +{ + int local_10; + undefined4 local_c; + int local_8; + + local_c = DAT_004e862c; + local_8 = FUN_00437404(); + if ((param_1[0xb] == 2) && (FUN_004373e8(&local_10), local_10 - param_1[0x16] <= local_8)) { + return; + } + if (param_1[0xb] != 0) { + FUN_0043be08(param_1); + } + param_1[0x12] = param_1[0xc]; + param_1[0x13] = param_1[0xd]; + param_1[0x14] = param_1[0xe]; + param_1[0x15] = param_1[0xf]; + param_1[0x16] = param_1[0x10]; + param_1[0x17] = param_1[0x11]; + FUN_0043b170((int)(param_1 + 0x12),*(float *)(param_2 + 0x10)); + (**(code **)(*param_1 + 0x54))(param_1); + return; +} + + + +/* @0043be08 file=? name=FUN_0043be08 */ + +void __cdecl FUN_0043be08(int *param_1) + +{ + if (param_1[0xb] != 0) { + (**(code **)(*param_1 + 0x58))(param_1); + } + return; +} + + + +/* @0043be20 file=? name=FUN_0043be20 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_0043be20(int param_1,float param_2) + +{ + float fVar1; + + fVar1 = _DAT_004e8634; + if ((_DAT_004e8634 <= param_2) && (fVar1 = param_2, _DAT_004e8630 < param_2)) { + fVar1 = _DAT_004e8630; + } + *(float *)(param_1 + 0x90) = fVar1 / (_DAT_004e8630 - _DAT_004e8634); + return; +} + + + +/* @0043be70 file=? name=FUN_0043be70 */ + +void __cdecl FUN_0043be70(int param_1,undefined4 param_2) + +{ + *(undefined4 *)(param_1 + 0x94) = param_2; + return; +} + + + +/* @0043be84 file=? name=FUN_0043be84 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_0043be84(int param_1,float param_2) + +{ + float fVar1; + + fVar1 = _DAT_004e8640; + if ((_DAT_004e8640 <= param_2) && (fVar1 = param_2, _DAT_004e863c < param_2)) { + fVar1 = _DAT_004e863c; + } + *(float *)(param_1 + 0x98) = fVar1 / (_DAT_004e863c - _DAT_004e8640); + return; +} + + + +/* @0043bed4 file=? name=FUN_0043bed4 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_0043bed4(int param_1,float param_2) + +{ + float fVar1; + + fVar1 = _DAT_004e8648; + if ((_DAT_004e8648 <= param_2) && (fVar1 = param_2, _DAT_004e8644 < param_2)) { + fVar1 = _DAT_004e8644; + } + *(float *)(param_1 + 0x60) = fVar1 / (_DAT_004e8644 - _DAT_004e8648); + return; +} + + + +/* @0043bf20 file=? name=FUN_0043bf20 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_0043bf20(int param_1,float param_2) + +{ + float fVar1; + + fVar1 = _DAT_004e8648; + if ((_DAT_004e8648 <= param_2) && (fVar1 = param_2, _DAT_004e8644 < param_2)) { + fVar1 = _DAT_004e8644; + } + *(float *)(param_1 + 0x68) = fVar1 / (_DAT_004e8644 - _DAT_004e8648); + return; +} + + + +/* @0043bf6c file=? name=FUN_0043bf6c */ + +void __cdecl FUN_0043bf6c(int param_1,undefined4 param_2) + +{ + *(undefined4 *)(param_1 + 0x30) = param_2; + return; +} + + + +/* @0043bf84 file=? name=FUN_0043bf84 */ + +void __cdecl FUN_0043bf84(int param_1,undefined4 param_2) + +{ + *(undefined4 *)(param_1 + 0x34) = 1; + *(undefined4 *)(param_1 + 0x3c) = param_2; + return; +} + + + +/* @0043bfa4 file=? name=FUN_0043bfa4 */ + +void __cdecl FUN_0043bfa4(int param_1) + +{ + undefined4 local_8; + + FUN_004373e8(&local_8); + *(undefined4 *)(param_1 + 0x58) = local_8; + return; +} + + + +/* @0043bfc4 file=munga/audsrc.cpp name=FUN_0043bfc4 */ + +void FUN_0043bfc4(void) + +{ + FUN_0040385c(s_AudioSource__StopImplementation___004ea792,s_d__tesla_bt_munga_AUDSRC_CPP_004ea7cc, + 0x309); + return; +} + + + +/* @0043bfe0 file=? name=FUN_0043bfe0 */ + +void __cdecl FUN_0043bfe0(int *param_1) + +{ + (**(code **)(*param_1 + 0x48))(param_1); + param_1[0x28] = + *(int *)(*(int *)(*(int *)(DAT_004efc94 + 0x44) + 0x4c) + 4) + + *(int *)(*(int *)(param_1[10] + 0xc) + 0x14); + return; +} + + + +/* @0043c014 file=? name=FUN_0043c014 */ + +void __cdecl FUN_0043c014(int *param_1) + +{ + (**(code **)(*param_1 + 0x44))(param_1); + param_1[0x28] = -1; + return; +} + + + +/* @0043c030 file=? name=FUN_0043c030 */ + +void __cdecl FUN_0043c030(int *param_1) + +{ + int iVar1; + int iVar2; + int *piVar3; + + iVar1 = *(int *)(DAT_004efc94 + 0x44); + iVar2 = *(int *)(*(int *)(iVar1 + 0x4c) + 4); + if (param_1[0x27] <= iVar2) { + param_1[0x27] = iVar2 + 2; + iVar1 = *(int *)(iVar1 + 0x4c); + piVar3 = (int *)param_1[9]; + if (piVar3[0x18] <= *(int *)(iVar1 + 4)) { + piVar3[0x18] = *(int *)(iVar1 + 4) + piVar3[0x17]; + (**(code **)(*piVar3 + 0x1c))(piVar3,iVar1); + } + FUN_00436e14((int)param_1); + (**(code **)(*param_1 + 0x5c))(param_1,0); + } + return; +} + + + +/* @0043c11d file=? name=FUN_0043c11d */ + +void __cdecl FUN_0043c11d(int *param_1,int *param_2) + +{ + int iVar1; + undefined4 local_8; + + (**(code **)(*param_1 + 0x1c))(param_1,&local_8,4); + iVar1 = FUN_004170e4((int)param_1,local_8); + *param_2 = iVar1; + return; +} + + + +/* @0043c14c file=? name=FUN_0043c14c */ + +float10 __cdecl FUN_0043c14c(int param_1) + +{ + return (float10)*(float *)(param_1 + 0x84) + (float10)*(float *)(param_1 + 0x94); +} + + + +/* @0043c160 file=? name=FUN_0043c160 */ + +void FUN_0043c160(void) + +{ + return; +} + + + +/* @0043c165 file=? name=FUN_0043c165 */ + +void FUN_0043c165(void) + +{ + return; +} + + + +/* @0043c16a file=? name=FUN_0043c16a */ + +void FUN_0043c16a(void) + +{ + return; +} + + + +/* @0043c170 file=? name=FUN_0043c170 */ + +undefined4 * __cdecl FUN_0043c170(undefined4 *param_1) + +{ + FUN_004178cc(param_1,2); + *param_1 = &PTR_FUN_004ea9d0; + *(undefined2 *)(param_1 + 3) = 0; + param_1[4] = 0; + *(undefined2 *)(param_1 + 5) = 0; + param_1[6] = 0; + param_1[7] = 0; + *(undefined2 *)(param_1 + 8) = 0; + *(undefined2 *)((int)param_1 + 0x22) = 0; + return param_1; +} + + + +/* @0043c1b4 file=? name=FUN_0043c1b4 */ + +void __cdecl FUN_0043c1b4(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004ea9d0; + if ((int *)param_1[7] != (int *)0x0) { + FUN_004022e8((int *)param_1[7]); + param_1[7] = 0; + } + FUN_0041790c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0043c1f4 file=? name=FUN_0043c1f4 */ + +undefined4 FUN_0043c1f4(void) + +{ + FUN_00415f1c(); + return 1; +} + + + +/* @0043c208 file=? name=FUN_0043c208 */ + +undefined4 __cdecl FUN_0043c208(int param_1) + +{ + return *(undefined4 *)(param_1 + 0x10); +} + + + +/* @0043c214 file=? name=FUN_0043c214 */ + +void __cdecl FUN_0043c214(int *param_1) + +{ + uint uVar1; + short sVar2; + + uVar1 = FUN_0043c358(param_1); + while (sVar2 = (short)uVar1, uVar1 = (uint)(ushort)(sVar2 - 1), 0 < sVar2) { + FUN_0043c3c4(param_1); + } + return; +} + + + +/* @0043c240 file=? name=FUN_0043c240 */ + +undefined4 __cdecl FUN_0043c240(int *param_1,char *param_2,short param_3) + +{ + char cVar1; + short sVar2; + uint uVar3; + uint uVar4; + ushort uVar5; + char *pcVar6; + char *pcVar7; + char local_2c [32]; + char *local_c; + char local_8 [4]; + + uVar5 = 0; + local_c = s_expecting_004ea8a0; + while( true ) { + pcVar6 = local_8 + (short)uVar5; + if (uVar5 < 4) { + do { + sVar2 = (**(code **)(*param_1 + 0xc))(param_1); + if (sVar2 == -1) { + local_c = s_EOF_while_expecting_004ea8ab; + goto LAB_0043c2db; + } + *pcVar6 = (char)sVar2; + uVar5 = uVar5 + 1; + pcVar6 = pcVar6 + 1; + } while ((short)uVar5 < 4); + } + if ((((*param_2 == local_8[0]) && (param_2[1] == local_8[1])) && (param_2[2] == local_8[2])) && + (param_2[3] == local_8[3])) { + return 0; + } + if (param_3 == 0) break; + local_8[0] = local_8[1]; + uVar5 = 3; + local_8[1] = local_8[2]; + local_8[2] = local_8[3]; + } +LAB_0043c2db: + uVar3 = 0xffffffff; + pcVar6 = local_c; + do { + pcVar7 = pcVar6; + if (uVar3 == 0) break; + uVar3 = uVar3 - 1; + pcVar7 = pcVar6 + 1; + cVar1 = *pcVar6; + pcVar6 = pcVar7; + } while (cVar1 != '\0'); + uVar3 = ~uVar3; + pcVar6 = pcVar7 + -uVar3; + pcVar7 = local_2c; + for (uVar4 = uVar3 >> 2; uVar4 != 0; uVar4 = uVar4 - 1) { + *(undefined4 *)pcVar7 = *(undefined4 *)pcVar6; + pcVar6 = pcVar6 + 4; + pcVar7 = pcVar7 + 4; + } + for (uVar3 = uVar3 & 3; uVar3 != 0; uVar3 = uVar3 - 1) { + *pcVar7 = *pcVar6; + pcVar6 = pcVar6 + 1; + pcVar7 = pcVar7 + 1; + } + FUN_004d49b8(local_2c,param_2); + FUN_0043c978(param_1,local_2c); + return 0; +} + + + +/* @0043c328 file=? name=FUN_0043c328 */ + +undefined4 __cdecl FUN_0043c328(int *param_1) + +{ + undefined4 uVar1; + + uVar1 = (**(code **)(*param_1 + 0xc))(param_1); + if ((short)uVar1 == -1) { + FUN_0043c978(param_1,s_premature_EOF_004ea8c0); + } + param_1[6] = param_1[6] + -1; + return uVar1; +} + + + +/* @0043c358 file=? name=FUN_0043c358 */ + +undefined4 __cdecl FUN_0043c358(int *param_1) + +{ + undefined4 uVar1; + undefined4 uVar2; + int iVar3; + undefined4 uVar4; + + uVar1 = FUN_0043c240(param_1,&DAT_004ea8ce,(short)param_1[5]); + if ((short)uVar1 == -1) { + uVar2 = 0; + } + else { + iVar3 = FUN_0043c908(param_1); + param_1[6] = iVar3; + uVar1 = FUN_0043c950(param_1); + uVar2 = FUN_0043c950(param_1); + uVar4 = FUN_0043c950(param_1); + (**(code **)(*param_1 + 0x20))(param_1,uVar1,uVar2,uVar4); + while (0 < param_1[6]) { + FUN_0043c328(param_1); + } + } + return uVar2; +} + + + +/* @0043c3c4 file=? name=FUN_0043c3c4 */ + +void __cdecl FUN_0043c3c4(int *param_1) + +{ + short sVar1; + bool bVar2; + bool bVar3; + undefined2 uVar4; + undefined2 uVar5; + undefined4 uVar6; + int iVar7; + uint uVar8; + undefined4 uVar9; + uint uVar10; + uint extraout_EDX; + undefined2 extraout_var; + short sVar11; + short local_8; + + local_8 = 0; + bVar3 = false; + uVar6 = FUN_0043c240(param_1,&DAT_004ea8d3,0); + if ((short)uVar6 != -1) { + iVar7 = FUN_0043c908(param_1); + param_1[6] = iVar7; + param_1[4] = 0; + (**(code **)(*param_1 + 0x14))(param_1); + while (0 < param_1[6]) { + uVar8 = FUN_0043c878(param_1); + param_1[4] = param_1[4] + uVar8; + uVar8 = FUN_0043c328(param_1); + sVar11 = (short)uVar8; + if ((bVar3) && (sVar11 != 0xf7)) { + FUN_0043c978(param_1,s_didn_t_find_expected_continuatio_004ea8d8); + } + if ((uVar8 & 0x80) == 0) { + if (local_8 == 0) { + FUN_0043c978(param_1,s_unexpected_running_status_004ea905); + } + bVar2 = true; + } + else { + bVar2 = false; + local_8 = sVar11; + } + uVar10 = (int)local_8 >> 4 & 0xf; + sVar1 = *(short *)(&DAT_004ea880 + uVar10 * 2); + if (sVar1 == 0) { + if (sVar11 == 0xf0) { + uVar10 = FUN_0043c878(param_1); + iVar7 = param_1[6]; + FUN_0043c990((int)param_1); + FUN_0043c9b8((int)param_1,0xf0); + while ((int)(iVar7 - uVar10) < param_1[6]) { + uVar8 = FUN_0043c328(param_1); + FUN_0043c9b8((int)param_1,(char)uVar8); + } + if (((short)uVar8 == 0xf7) || ((short)param_1[3] == 0)) { + FUN_0043c778(param_1); + } + else { + bVar3 = true; + } + } + else if (sVar11 == 0xf7) { + uVar10 = FUN_0043c878(param_1); + iVar7 = param_1[6]; + if (!bVar3) { + FUN_0043c990((int)param_1); + } + while ((int)(iVar7 - uVar10) < param_1[6]) { + uVar8 = FUN_0043c328(param_1); + FUN_0043c9b8((int)param_1,(char)uVar8); + } + if (bVar3) { + if ((short)uVar8 == 0xf7) { + FUN_0043c778(param_1); + bVar3 = false; + } + } + else { + uVar6 = FUN_0043c9a0((int)param_1); + uVar5 = FUN_0043c9ac((int)param_1); + (**(code **)(*param_1 + 0x44))(param_1,uVar5,uVar6); + } + } + else if (sVar11 == 0xff) { + uVar6 = FUN_0043c328(param_1); + uVar8 = FUN_0043c878(param_1); + iVar7 = param_1[6]; + FUN_0043c990((int)param_1); + while ((int)(iVar7 - uVar8) < param_1[6]) { + uVar9 = FUN_0043c328(param_1); + FUN_0043c9b8((int)param_1,(char)uVar9); + } + FUN_0043c638(param_1,(short)uVar6); + } + else { + FUN_0043c604(param_1); + } + } + else { + if (!bVar2) { + uVar6 = FUN_0043c328(param_1); + sVar11 = (short)uVar6; + uVar10 = extraout_EDX; + } + uVar5 = (undefined2)(uVar10 >> 0x10); + if (sVar1 < 2) { + uVar4 = 0; + } + else { + uVar6 = FUN_0043c328(param_1); + uVar4 = (undefined2)uVar6; + uVar5 = extraout_var; + } + FUN_0043c79c(param_1,CONCAT22(uVar5,local_8),sVar11,uVar4); + } + } + (**(code **)(*param_1 + 0x18))(param_1); + } + return; +} + + + +/* @0043c604 file=? name=FUN_0043c604 */ + +void __cdecl FUN_0043c604(int *param_1) + +{ + undefined1 local_24 [32]; + + FUN_004d7f10(local_24,s_unexpected_byte__0x_02x_004ea91f); + FUN_0043c978(param_1,local_24); + return; +} + + + +/* @0043c638 file=? name=FUN_0043c638 */ + +void __cdecl FUN_0043c638(int *param_1,short param_2) + +{ + undefined2 uVar1; + char *pcVar2; + int iVar3; + undefined4 uVar4; + undefined2 extraout_var; + + uVar1 = FUN_0043c9ac((int)param_1); + pcVar2 = (char *)FUN_0043c9a0((int)param_1); + iVar3 = (int)param_2; + if (iVar3 < 0x55) { + if (iVar3 == 0x54) { + (**(code **)(*param_1 + 0x50)) + (param_1,(int)*pcVar2,(int)pcVar2[1],(int)pcVar2[2],(int)pcVar2[3],(int)pcVar2[4]); + return; + } + if (iVar3 == 0) { + uVar4 = FUN_0043c8ec(param_1,(short)*pcVar2,(short)pcVar2[1]); + (**(code **)(*param_1 + 0x4c))(param_1,uVar4); + return; + } + if (iVar3 - 1U < 0xf) { + (**(code **)(*param_1 + 100))(param_1,CONCAT22(extraout_var,param_2),uVar1,pcVar2); + return; + } + if (iVar3 == 0x2f) { + (**(code **)(*param_1 + 0x1c))(param_1); + return; + } + if (iVar3 == 0x51) { + iVar3 = FUN_0043c8b0(param_1,0,(short)*pcVar2,(short)pcVar2[1],(short)pcVar2[2]); + (**(code **)(*param_1 + 0x58))(param_1,iVar3); + return; + } + } + else { + if (iVar3 == 0x58) { + (**(code **)(*param_1 + 0x54)) + (param_1,(int)*pcVar2,(int)pcVar2[1],(int)pcVar2[2],(int)pcVar2[3]); + return; + } + if (iVar3 == 0x59) { + (**(code **)(*param_1 + 0x5c))(param_1,(int)*pcVar2,(int)pcVar2[1]); + return; + } + if (iVar3 == 0x7f) { + (**(code **)(*param_1 + 0x60))(param_1,uVar1,pcVar2); + return; + } + } + (**(code **)(*param_1 + 0x48))(param_1,param_2,uVar1,pcVar2); + return; +} + + + +/* @0043c778 file=? name=FUN_0043c778 */ + +void __cdecl FUN_0043c778(int *param_1) + +{ + undefined2 uVar1; + undefined4 uVar2; + + uVar2 = FUN_0043c9a0((int)param_1); + uVar1 = FUN_0043c9ac((int)param_1); + (**(code **)(*param_1 + 0x40))(param_1,uVar1,uVar2); + return; +} + + + +/* @0043c79c file=? name=FUN_0043c79c */ + +void __cdecl FUN_0043c79c(int *param_1,uint param_2,undefined2 param_3,undefined2 param_4) + +{ + ushort uVar1; + uint uVar2; + + uVar2 = param_2 & 0xffff000f; + uVar1 = (ushort)param_2 & 0xf0; + if (0xb0 < uVar1) { + if (uVar1 == 0xc0) { + (**(code **)(*param_1 + 0x38))(param_1,uVar2,param_3); + return; + } + if (uVar1 != 0xd0) { + if (uVar1 != 0xe0) { + return; + } + (**(code **)(*param_1 + 0x34))(param_1,uVar2,param_3,param_4); + return; + } + (**(code **)(*param_1 + 0x3c))(param_1,uVar2,param_3); + return; + } + if (uVar1 == 0xb0) { + (**(code **)(*param_1 + 0x30))(param_1,uVar2,param_3,param_4); + return; + } + if (uVar1 != 0x80) { + if (uVar1 == 0x90) { + (**(code **)(*param_1 + 0x24))(param_1,uVar2,param_3,param_4); + return; + } + if (uVar1 != 0xa0) { + return; + } + (**(code **)(*param_1 + 0x2c))(param_1,uVar2,param_3,param_4); + return; + } + (**(code **)(*param_1 + 0x28))(param_1,uVar2,param_3,param_4); + return; +} + + + +/* @0043c878 file=? name=FUN_0043c878 */ + +uint __cdecl FUN_0043c878(int *param_1) + +{ + uint uVar1; + uint uVar2; + + uVar1 = FUN_0043c328(param_1); + uVar2 = (uint)(short)uVar1; + if ((uVar1 & 0x80) != 0) { + uVar2 = uVar2 & 0x7f; + do { + uVar1 = FUN_0043c328(param_1); + uVar2 = uVar2 * 0x80 + ((int)(short)uVar1 & 0x7fU); + } while ((uVar1 & 0x80) != 0); + } + return uVar2; +} + + + +/* @0043c8b0 file=? name=FUN_0043c8b0 */ + +int __cdecl FUN_0043c8b0(undefined4 param_1,short param_2,short param_3,short param_4,short param_5) + +{ + return ((((int)param_2 & 0xffU) * 0x100 + ((int)param_3 & 0xffU)) * 0x100 + ((int)param_4 & 0xffU) + ) * 0x100 + ((int)param_5 & 0xffU); +} + + + +/* @0043c8ec file=? name=FUN_0043c8ec */ + +undefined4 __cdecl FUN_0043c8ec(undefined4 param_1,undefined2 param_2,ushort param_3) + +{ + undefined4 in_EAX; + uint uVar1; + + uVar1 = CONCAT22((short)((uint)in_EAX >> 0x10),param_2) & 0xffff00ff; + return CONCAT22((short)(uVar1 >> 8),(short)(uVar1 << 8) + (param_3 & 0xff)); +} + + + +/* @0043c908 file=? name=FUN_0043c908 */ + +void __cdecl FUN_0043c908(int *param_1) + +{ + undefined4 uVar1; + undefined4 uVar2; + undefined4 uVar3; + undefined4 uVar4; + + uVar1 = FUN_0043c328(param_1); + uVar2 = FUN_0043c328(param_1); + uVar3 = FUN_0043c328(param_1); + uVar4 = FUN_0043c328(param_1); + FUN_0043c8b0(param_1,(short)uVar1,(short)uVar2,(short)uVar3,(short)uVar4); + return; +} + + + +/* @0043c950 file=? name=FUN_0043c950 */ + +void __cdecl FUN_0043c950(int *param_1) + +{ + undefined4 uVar1; + undefined4 uVar2; + + uVar1 = FUN_0043c328(param_1); + uVar2 = FUN_0043c328(param_1); + FUN_0043c8ec(param_1,(short)uVar1,(ushort)uVar2); + return; +} + + + +/* @0043c978 file=? name=FUN_0043c978 */ + +void __cdecl FUN_0043c978(int *param_1,undefined4 param_2) + +{ + (**(code **)(*param_1 + 0x10))(param_1,param_2); + return; +} + + + +/* @0043c990 file=? name=FUN_0043c990 */ + +void __cdecl FUN_0043c990(int param_1) + +{ + *(undefined2 *)(param_1 + 0x22) = 0; + return; +} + + + +/* @0043c9a0 file=? name=FUN_0043c9a0 */ + +undefined4 __cdecl FUN_0043c9a0(int param_1) + +{ + return *(undefined4 *)(param_1 + 0x1c); +} + + + +/* @0043c9ac file=? name=FUN_0043c9ac */ + +undefined2 __cdecl FUN_0043c9ac(int param_1) + +{ + return *(undefined2 *)(param_1 + 0x22); +} + + + +/* @0043c9b8 file=? name=FUN_0043c9b8 */ + +void __cdecl FUN_0043c9b8(int param_1,undefined1 param_2) + +{ + short sVar1; + + if (*(short *)(param_1 + 0x20) <= *(short *)(param_1 + 0x22)) { + FUN_0043c9e8(param_1); + } + sVar1 = *(short *)(param_1 + 0x22); + *(short *)(param_1 + 0x22) = *(short *)(param_1 + 0x22) + 1; + *(undefined1 *)(*(int *)(param_1 + 0x1c) + (int)sVar1) = param_2; + return; +} + + + +/* @0043c9e8 file=? name=FUN_0043c9e8 */ + +void __cdecl FUN_0043c9e8(int param_1) + +{ + short sVar1; + int *piVar2; + undefined1 *puVar3; + int *piVar4; + undefined1 *puVar5; + + sVar1 = *(short *)(param_1 + 0x20); + piVar2 = *(int **)(param_1 + 0x1c); + *(short *)(param_1 + 0x20) = *(short *)(param_1 + 0x20) + 0x80; + puVar3 = (undefined1 *)FUN_004022b0((int)*(short *)(param_1 + 0x20)); + if (piVar2 != (int *)0x0) { + puVar5 = puVar3; + for (piVar4 = piVar2; piVar4 != (int *)((int)sVar1 + (int)piVar2); + piVar4 = (int *)((int)piVar4 + 1)) { + *puVar5 = (char)*piVar4; + puVar5 = puVar5 + 1; + } + FUN_004022e8(piVar2); + } + *(undefined1 **)(param_1 + 0x1c) = puVar3; + return; +} + + + +/* @0043ca48 file=munga/audmidi.cpp name=FUN_0043ca48 */ + +undefined4 FUN_0043ca48(void) + +{ + FUN_0040385c(s_MidiParse__Mf_getc___Should_neve_004ea937,s_d__tesla_bt_munga_AUDMIDI_CPP_004ea964, + 0x2b6); + return 0; +} + + + +/* @0043ca68 file=munga/audmidi.cpp name=FUN_0043ca68 */ + +void FUN_0043ca68(void) + +{ + FUN_0040385c(s_MidiParse__Mf_error___Should_nev_004ea982,s_d__tesla_bt_munga_AUDMIDI_CPP_004ea9b0, + 0x2c1); + return; +} + + + +/* @0043ca84 file=? name=FUN_0043ca84 */ + +void FUN_0043ca84(void) + +{ + return; +} + + + +/* @0043ca89 file=? name=FUN_0043ca89 */ + +void FUN_0043ca89(void) + +{ + return; +} + + + +/* @0043ca8e file=? name=FUN_0043ca8e */ + +void FUN_0043ca8e(void) + +{ + return; +} + + + +/* @0043ca93 file=? name=FUN_0043ca93 */ + +void FUN_0043ca93(void) + +{ + return; +} + + + +/* @0043ca98 file=? name=FUN_0043ca98 */ + +void FUN_0043ca98(void) + +{ + return; +} + + + +/* @0043ca9d file=? name=FUN_0043ca9d */ + +void FUN_0043ca9d(void) + +{ + return; +} + + + +/* @0043caa2 file=? name=FUN_0043caa2 */ + +void FUN_0043caa2(void) + +{ + return; +} + + + +/* @0043caa7 file=? name=FUN_0043caa7 */ + +void FUN_0043caa7(void) + +{ + return; +} + + + +/* @0043caac file=? name=FUN_0043caac */ + +void FUN_0043caac(void) + +{ + return; +} + + + +/* @0043cab1 file=? name=FUN_0043cab1 */ + +void FUN_0043cab1(void) + +{ + return; +} + + + +/* @0043cab6 file=? name=FUN_0043cab6 */ + +void FUN_0043cab6(void) + +{ + return; +} + + + +/* @0043cabb file=? name=FUN_0043cabb */ + +void FUN_0043cabb(void) + +{ + return; +} + + + +/* @0043cac0 file=? name=FUN_0043cac0 */ + +void FUN_0043cac0(void) + +{ + return; +} + + + +/* @0043cac5 file=? name=FUN_0043cac5 */ + +void FUN_0043cac5(void) + +{ + return; +} + + + +/* @0043caca file=? name=FUN_0043caca */ + +void FUN_0043caca(void) + +{ + return; +} + + + +/* @0043cacf file=? name=FUN_0043cacf */ + +void FUN_0043cacf(void) + +{ + return; +} + + + +/* @0043cad4 file=? name=FUN_0043cad4 */ + +void FUN_0043cad4(void) + +{ + return; +} + + + +/* @0043cad9 file=? name=FUN_0043cad9 */ + +void FUN_0043cad9(void) + +{ + return; +} + + + +/* @0043cade file=? name=FUN_0043cade */ + +void FUN_0043cade(void) + +{ + return; +} + + + +/* @0043cae3 file=? name=FUN_0043cae3 */ + +void FUN_0043cae3(void) + +{ + return; +} + + + +/* @0043cae8 file=? name=FUN_0043cae8 */ + +void FUN_0043cae8(void) + +{ + return; +} + + + +/* @0043caf0 file=? name=FUN_0043caf0 */ + +undefined4 * __cdecl +FUN_0043caf0(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) + +{ + FUN_00415e90(param_1,0x4a); + *param_1 = &PTR_FUN_004ead64; + param_1[3] = param_2; + param_1[4] = param_3; + param_1[5] = param_4; + return param_1; +} + + + +/* @0043cb20 file=? name=FUN_0043cb20 */ + +undefined4 * __cdecl FUN_0043cb20(undefined4 *param_1) + +{ + FUN_00415e90(param_1,0x4a); + *param_1 = &PTR_FUN_004ead64; + param_1[3] = 0; + param_1[4] = 0; + param_1[5] = 0; + return param_1; +} + + + +/* @0043cb4c file=? name=FUN_0043cb4c */ + +void __cdecl FUN_0043cb4c(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004ead64; + FUN_00415ed8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0043cb78 file=? name=FUN_0043cb78 */ + +undefined4 FUN_0043cb78(void) + +{ + FUN_00415f1c(); + return 1; +} + + + +/* @0043cb8c file=? name=FUN_0043cb8c */ + +void __cdecl FUN_0043cb8c(int param_1,int *param_2) + +{ + (**(code **)(*param_2 + 0x18)) + (param_2,*(undefined4 *)(param_1 + 0x10),*(undefined4 *)(param_1 + 0x14)); + return; +} + + + +/* @0043cba8 file=? name=FUN_0043cba8 */ + +undefined4 __cdecl FUN_0043cba8(int param_1,int *param_2) + +{ + if (*(int *)(param_1 + 0x10) == 1) { + return 0; + } + if (*(int *)(param_1 + 0x10) != 2) { + return 1; + } + FUN_0043cb8c(param_1,param_2); + return 0; +} + + + +/* @0043cbd8 file=? name=FUN_0043cbd8 */ + +int * __cdecl FUN_0043cbd8(int *param_1,int param_2) + +{ + (**(code **)(*param_1 + 0x1c))(param_1,param_2 + 0xc,4); + (**(code **)(*param_1 + 0x1c))(param_1,param_2 + 0x10,4); + (**(code **)(*param_1 + 0x1c))(param_1,param_2 + 0x14,4); + return param_1; +} + + + +/* @0043cc1c file=? name=FUN_0043cc1c */ + +int * __cdecl FUN_0043cc1c(int *param_1,int param_2) + +{ + (**(code **)(*param_1 + 0x20))(param_1,param_2 + 0xc,4); + (**(code **)(*param_1 + 0x20))(param_1,param_2 + 0x10,4); + (**(code **)(*param_1 + 0x20))(param_1,param_2 + 0x14,4); + return param_1; +} + + + +/* @0043cc60 file=? name=FUN_0043cc60 */ + +int * __cdecl FUN_0043cc60(int *param_1,int param_2) + +{ + int *piVar1; + + FUN_004dbb24(param_1,&DAT_004eaa38,(char *)0x0); + piVar1 = FUN_004db78c(param_1,*(uint *)(param_2 + 0xc)); + FUN_004dbb24(piVar1,&DAT_004eaa3a,(char *)0x0); + piVar1 = FUN_004db78c(param_1,*(uint *)(param_2 + 0x10)); + FUN_004dbb24(piVar1,&DAT_004eaa3c,(char *)0x0); + FUN_004db634(param_1,(float10)*(float *)(param_2 + 0x14)); + FUN_004dbb24(param_1,&DAT_004eaa3e,(char *)0x0); + return param_1; +} + + + +/* @0043ccec file=? name=FUN_0043ccec */ + +undefined4 * __cdecl FUN_0043ccec(undefined4 *param_1,int *param_2,int param_3) + +{ + undefined4 *puVar1; + undefined4 local_20; + undefined4 local_1c; + int local_18; + int local_14; + int local_10; + undefined4 local_c; + undefined1 local_8 [4]; + + FUN_00436d14(param_1,param_2,&DAT_004e8698); + *param_1 = &PTR_FUN_004ead48; + param_1[0xb] = 0xffffffff; + FUN_0043acac(param_1 + 0xe,0); + FUN_0043d7c1(param_1 + 0x11,0); + (**(code **)(*param_2 + 0x1c))(param_2,local_8,4); + (**(code **)(*param_2 + 0x1c))(param_2,&local_c,4); + FUN_0043afbc(param_2,&local_10); + (**(code **)(*param_2 + 0x1c))(param_2,&local_1c,4); + (**(code **)(*param_2 + 0x1c))(param_2,&local_20,4); + (**(code **)(*param_2 + 0x1c))(param_2,&local_18,4); + local_14 = 0; + if (0 < local_18) { + do { + puVar1 = (undefined4 *)FUN_00402298(0x18); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_0043cb20(puVar1); + } + FUN_0043cbd8(param_2,(int)puVar1); + (**(code **)(param_1[0x11] + 4))(param_1 + 0x11,puVar1); + local_14 = local_14 + 1; + } while (local_14 < local_18); + } + FUN_0043ce14((int)param_1,local_10,param_3,local_c,local_1c,local_20); + return param_1; +} + + + +/* @0043ce14 file=? name=FUN_0043ce14 */ + +void __cdecl +FUN_0043ce14(int param_1,int param_2,int param_3,undefined4 param_4,undefined4 param_5, + undefined4 param_6) + +{ + (**(code **)(*(int *)(param_1 + 0x38) + 4))(param_1 + 0x38,param_2); + *(undefined4 *)(param_1 + 0x24) = param_4; + *(undefined4 *)(param_1 + 0x28) = 0; + *(undefined4 *)(param_1 + 0x2c) = DAT_00522b30; + *(undefined4 *)(param_1 + 0x58) = 0; + *(undefined4 *)(param_1 + 0x30) = param_5; + *(undefined4 *)(param_1 + 0x34) = param_6; + (**(code **)(*(int *)(param_2 + 0x14) + 4))(param_2 + 0x14,param_1); + FUN_004206b4(param_3,param_1); + return; +} + + + +/* @0043ce78 file=? name=FUN_0043ce78 */ + +void __cdecl FUN_0043ce78(int *param_1,byte param_2) + +{ + void *this; + int local_18 [5]; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004ead48; + FUN_0043d2d4((int)param_1); + FUN_0043d80c(local_18,(int)(param_1 + 0x11)); + FUN_00417858(this,local_18,1); + FUN_0043d869(local_18,2); + FUN_0043d7e0(param_1 + 0x11,2); + FUN_0043accb(param_1 + 0xe,2); + FUN_00436d4c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0043cef8 file=munga/audseq.cpp name=FUN_0043cef8 */ + +void __cdecl FUN_0043cef8(int *param_1,int param_2) + +{ + char *pcVar1; + uint *puVar2; + int iVar3; + undefined4 *puVar4; + int *piVar5; + int local_130 [11]; + undefined4 local_104; + int local_100; + int local_e4 [6]; + int local_cc [17]; + int local_88 [19]; + int local_3c [6]; + undefined4 local_24; + undefined4 local_20; + int *local_1c; + int *local_18; + int local_14; + uint *local_10; + int local_c; + int local_8; + + FUN_00414c58(param_1); + pcVar1 = (char *)FUN_00403ad0(param_2,s_dump_value_004eaa40); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004eaa4b,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_dump_value_004eaa70,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004eaa7b,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004eaa7d,s_d__tesla_bt_munga_AUDSEQ_CPP_004eaabd + ,0x12e); + } + FUN_00407ae0(pcVar1,&local_8); + (**(code **)(*param_1 + 0x20))(param_1,&local_8,4); + pcVar1 = (char *)FUN_00403ad0(param_2,s_is_looped_004eaada); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004eaae4,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_is_looped_004eab09,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004eab13,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004eab15,s_d__tesla_bt_munga_AUDSEQ_CPP_004eab55 + ,0x12f); + } + FUN_00407ae0(pcVar1,&local_c); + (**(code **)(*param_1 + 0x20))(param_1,&local_c,4); + puVar2 = (uint *)FUN_00402298(0x10); + if (puVar2 == (uint *)0x0) { + local_10 = (uint *)0x0; + } + else { + local_10 = FUN_00402460(puVar2,s_audio_component_004eab72); + } + local_10[3] = local_10[3] + 1; + FUN_00417240(param_1,param_2,(int *)&local_10); + local_14 = 100; + iVar3 = FUN_00403ad0(param_2,s_tempo_004eab82); + if (iVar3 != 0) { + piVar5 = &local_14; + pcVar1 = (char *)FUN_00403ad0(param_2,s_tempo_004eab88); + FUN_00407b30(pcVar1,piVar5); + } + FUN_0040328c(local_3c,0); + puVar4 = (undefined4 *)FUN_00402298(0x10); + if (puVar4 == (undefined4 *)0x0) { + local_18 = (int *)0x0; + } + else { + local_18 = (int *)FUN_004023f4(puVar4); + } + local_18[3] = local_18[3] + 1; + pcVar1 = (char *)FUN_00403ad0(param_2,s_midi_file_004eab8e); + FUN_00402a98((int *)&local_1c,(int *)&local_18,pcVar1); + piVar5 = local_1c + 3; + *piVar5 = *piVar5 + -1; + if (*piVar5 == 0) { + FUN_004024d8(local_1c,3); + } + FUN_004da66c(local_cc,0,(LPCSTR)local_18[2],0x81,DAT_00520540); + FUN_00403164(local_3c,local_88); + (**(code **)(local_3c[0] + 0xc))(local_3c,0); + FUN_004da754(local_cc,2); + piVar5 = local_18 + 3; + *piVar5 = *piVar5 + -1; + if (*piVar5 == 0) { + FUN_004024d8(local_18,3); + } + FUN_0040328c(local_e4,0); + FUN_0043d478(local_130); + FUN_0043d53c(local_130,(int)local_3c,(int)local_e4,local_14); + (**(code **)(local_e4[0] + 0xc))(local_e4,0); + local_20 = local_104; + local_14 = local_100; + (**(code **)(*param_1 + 0x20))(param_1,&local_20,4); + (**(code **)(*param_1 + 0x20))(param_1,&local_14,4); + local_24 = FUN_0043d5a4((int)local_130); + (**(code **)(*param_1 + 0x20))(param_1,&local_24,4); + FUN_00403248(param_1,local_e4); + FUN_0043d4bc(local_130,2); + FUN_00403310(local_e4,2); + FUN_00403310(local_3c,2); + puVar2 = local_10 + 3; + *puVar2 = *puVar2 - 1; + if (*puVar2 == 0) { + FUN_004024d8((int *)local_10,3); + } + return; +} + + + +/* @0043d260 file=? name=FUN_0043d260 */ + +undefined4 __cdecl FUN_0043d260(int param_1) + +{ + FUN_00436d88(param_1); + return 1; +} + + + +/* @0043d27c file=? name=FUN_0043d27c */ + +void __cdecl FUN_0043d27c(int param_1) + +{ + undefined4 *puVar1; + undefined4 local_8; + + if (*(int *)(param_1 + 0x28) != 0) { + FUN_0043d2d4(param_1); + } + puVar1 = (undefined4 *)FUN_00402298(0x14); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_0043d80c(puVar1,param_1 + 0x44); + } + *(undefined4 **)(param_1 + 0x58) = puVar1; + FUN_004373e8(&local_8); + *(undefined4 *)(param_1 + 0x2c) = local_8; + *(undefined4 *)(param_1 + 0x28) = 1; + return; +} + + + +/* @0043d2d4 file=? name=FUN_0043d2d4 */ + +void __cdecl FUN_0043d2d4(int param_1) + +{ + undefined4 *puVar1; + int *piVar2; + int iVar3; + + if (*(int *)(param_1 + 0x28) != 0) { + do { + iVar3 = (**(code **)(**(int **)(param_1 + 0x58) + 0x28))(*(int **)(param_1 + 0x58)); + if (iVar3 == 0) break; + piVar2 = (int *)FUN_00417ab4(param_1 + 0x38); + iVar3 = FUN_0043cba8(iVar3,piVar2); + } while (iVar3 != 0); + puVar1 = *(undefined4 **)(param_1 + 0x58); + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + *(undefined4 *)(param_1 + 0x58) = 0; + *(undefined4 *)(param_1 + 0x28) = 0; + } + return; +} + + + +/* @0043d32c file=? name=FUN_0043d32c */ + +void __cdecl FUN_0043d32c(int param_1) + +{ + bool bVar1; + int iVar2; + int *piVar3; + undefined3 extraout_var; + + if (*(int *)(param_1 + 0x28) != 0) { + iVar2 = (**(code **)(**(int **)(param_1 + 0x58) + 0x30))(*(int **)(param_1 + 0x58)); + while (iVar2 != 0) { + bVar1 = FUN_0043d3ec(param_1,iVar2); + if (CONCAT31(extraout_var,bVar1) == 0) break; + piVar3 = (int *)FUN_00417ab4(param_1 + 0x38); + FUN_0043cb8c(iVar2,piVar3); + (**(code **)(**(int **)(param_1 + 0x58) + 0xc))(*(int **)(param_1 + 0x58)); + iVar2 = (**(code **)(**(int **)(param_1 + 0x58) + 0x30))(*(int **)(param_1 + 0x58)); + } + if (iVar2 == 0) { + FUN_0043d2d4(param_1); + if (*(int *)(param_1 + 0x24) != 0) { + FUN_0043d27c(param_1); + } + } + } + return; +} + + + +/* @0043d3a4 file=? name=FUN_0043d3a4 */ + +void __cdecl FUN_0043d3a4(int param_1,int param_2) + +{ + undefined4 uVar1; + + if (param_2 == 1) { + FUN_0043d27c(param_1); + return; + } + if (param_2 == 2) { + FUN_0043d2d4(param_1); + return; + } + if (param_2 == 9) { + FUN_0043d32c(param_1); + return; + } + if (param_2 == 0xc) { + uVar1 = FUN_004dcd94(); + *(undefined4 *)(param_1 + 0x34) = uVar1; + } + return; +} + + + +/* @0043d3ec file=? name=FUN_0043d3ec */ + +bool __cdecl FUN_0043d3ec(int param_1,int param_2) + +{ + float10 fVar1; + int local_14; + int local_10; + float local_c; + int local_8; + + local_8 = *(int *)(param_1 + 0x2c); + fVar1 = FUN_0043d444(param_1,param_2); + local_c = (float)fVar1; + local_10 = FUN_00437404(); + local_8 = local_8 + local_10; + FUN_004373e8(&local_14); + return local_8 <= local_14; +} + + + +/* @0043d444 file=? name=FUN_0043d444 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 __cdecl FUN_0043d444(int param_1,int param_2) + +{ + return (float10)*(int *)(param_2 + 0xc) / + (float10)(float)(_DAT_0043d46c * + (float10)*(int *)(param_1 + 0x34) * (float10)*(int *)(param_1 + 0x30)); +} + + + +/* @0043d478 file=? name=FUN_0043d478 */ + +undefined4 * __cdecl FUN_0043d478(undefined4 *param_1) + +{ + FUN_0043c170(param_1); + *param_1 = &PTR_FUN_004eace0; + FUN_0043d895(param_1 + 0xd,0,0); + param_1[9] = 0; + param_1[10] = 0; + param_1[0xb] = 0x78; + param_1[0xc] = 100; + return param_1; +} + + + +/* @0043d4bc file=? name=FUN_0043d4bc */ + +void __cdecl FUN_0043d4bc(int *param_1,byte param_2) + +{ + void *this; + int local_18 [5]; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004eace0; + FUN_0043d9da(local_18,(int)(param_1 + 0xd)); + FUN_00417858(this,local_18,1); + FUN_0043da37(local_18,2); + FUN_0043d8b8(param_1 + 0xd,2); + FUN_0043c1b4(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0043d528 file=? name=FUN_0043d528 */ + +undefined4 FUN_0043d528(void) + +{ + FUN_0043c1f4(); + return 1; +} + + + +/* @0043d53c file=? name=FUN_0043d53c */ + +void __cdecl FUN_0043d53c(int *param_1,int param_2,int param_3,int param_4) + +{ + int iVar1; + int local_18 [5]; + + param_1[9] = param_2; + param_1[10] = param_3; + param_1[0xc] = param_4; + FUN_0043c214(param_1); + FUN_0043d9da(local_18,(int)(param_1 + 0xd)); + while( true ) { + iVar1 = (**(code **)(local_18[0] + 0x28))(local_18); + if (iVar1 == 0) break; + FUN_0043cc1c((int *)param_1[10],iVar1); + } + FUN_0043da37(local_18,2); + return; +} + + + +/* @0043d5a4 file=? name=FUN_0043d5a4 */ + +undefined4 __cdecl FUN_0043d5a4(int param_1) + +{ + undefined4 uVar1; + int local_18 [5]; + + FUN_0043d9da(local_18,param_1 + 0x34); + uVar1 = (**(code **)(local_18[0] + 0x14))(local_18); + FUN_0043da37(local_18,2); + return uVar1; +} + + + +/* @0043d5dc file=? name=FUN_0043d5dc */ + +uint __cdecl FUN_0043d5dc(int param_1) + +{ + byte local_5; + + (**(code **)(**(int **)(param_1 + 0x24) + 0x1c))(*(int **)(param_1 + 0x24),&local_5,1); + return (uint)local_5; +} + + + +/* @0043d600 file=munga/audseq.cpp name=FUN_0043d600 */ + +void __cdecl FUN_0043d600(undefined4 param_1,char *param_2) + +{ + FUN_0040385c(param_2,s_d__tesla_bt_munga_AUDSEQ_CPP_004eab98,0x2db); + return; +} + + + +/* @0043d61c file=? name=FUN_0043d61c */ + +void __cdecl FUN_0043d61c(int param_1,undefined4 param_2,undefined4 param_3,short param_4) + +{ + *(int *)(param_1 + 0x2c) = (int)param_4; + return; +} + + + +/* @0043d62c file=? name=FUN_0043d62c */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_0043d62c(int *param_1,undefined2 param_2,short param_3,undefined4 param_4) + +{ + undefined4 *puVar1; + undefined4 local_8; + + if ((short)param_4 == 0) { + (**(code **)(*param_1 + 0x28))(param_1,param_2,param_3,param_4); + } + else { + local_8 = FUN_0043c208((int)param_1); + puVar1 = (undefined4 *)FUN_00402298(0x18); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_0043caf0(puVar1,local_8,8,(float)param_3); + } + (**(code **)(param_1[0xd] + 8))(param_1 + 0xd,puVar1,&local_8); + puVar1 = (undefined4 *)FUN_00402298(0x18); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_0043caf0(puVar1,local_8,6,(float)(_DAT_0043d724 * (float10)(short)param_4)); + } + (**(code **)(param_1[0xd] + 8))(param_1 + 0xd,puVar1,&local_8); + puVar1 = (undefined4 *)FUN_00402298(0x18); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_0043caf0(puVar1,local_8,1,0); + } + (**(code **)(param_1[0xd] + 8))(param_1 + 0xd,puVar1,&local_8); + } + return; +} + + + +/* @0043d7bc file=? name=FUN_0043d7bc */ + +void FUN_0043d7bc(void) + +{ + return; +} + + + +/* @0043d7c1 file=? name=FUN_0043d7c1 */ + +undefined4 * __cdecl FUN_0043d7c1(undefined4 *param_1,undefined4 param_2) + +{ + FUN_0041827c(param_1,param_2); + *param_1 = &PTR_FUN_004eacd8; + return param_1; +} + + + +/* @0043d7e0 file=? name=FUN_0043d7e0 */ + +void __cdecl FUN_0043d7e0(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004eacd8; + FUN_004182a8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0043d80c file=? name=FUN_0043d80c */ + +undefined4 * __cdecl FUN_0043d80c(undefined4 *param_1,int param_2) + +{ + FUN_00418398(param_1,param_2); + *param_1 = &PTR_FUN_004eac84; + return param_1; +} + + + +/* @0043d82b file=? name=FUN_0043d82b */ + +undefined4 * __cdecl FUN_0043d82b(undefined4 *param_1,int param_2) + +{ + FUN_00418398(param_1,param_2); + *param_1 = &PTR_FUN_004eac84; + return param_1; +} + + + +/* @0043d84a file=? name=FUN_0043d84a */ + +undefined4 * __cdecl FUN_0043d84a(undefined4 *param_1,int param_2) + +{ + FUN_004183c0(param_1,param_2); + *param_1 = &PTR_FUN_004eac84; + return param_1; +} + + + +/* @0043d869 file=? name=FUN_0043d869 */ + +void __cdecl FUN_0043d869(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004eac84; + FUN_004183ec(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0043d895 file=? name=FUN_0043d895 */ + +undefined4 * __cdecl FUN_0043d895(undefined4 *param_1,undefined4 param_2,undefined4 param_3) + +{ + FUN_004186ac(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004eac68; + return param_1; +} + + + +/* @0043d8b8 file=? name=FUN_0043d8b8 */ + +void __cdecl FUN_0043d8b8(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004eac68; + FUN_004186dc(param_1,0); + if ((param_2 & 1) != 0) { + FUN_0043d98f(param_1); + } + } + return; +} + + + +/* @0043d8e4 file=? name=FUN_0043d8e4 */ + +undefined4 __cdecl FUN_0043d8e4(undefined4 param_1,int param_2,int param_3) + +{ + undefined4 uVar1; + + if (*(int *)(param_3 + 0x1c) == *(int *)(param_2 + 0x1c)) { + uVar1 = 0; + } + else { + uVar1 = 1; + if (*(int *)(param_2 + 0x1c) <= *(int *)(param_3 + 0x1c)) { + uVar1 = 0xffffffff; + } + } + return uVar1; +} + + + +/* @0043d913 file=? name=FUN_0043d913 */ + +undefined4 __cdecl FUN_0043d913(undefined4 param_1,int *param_2,int param_3) + +{ + undefined4 uVar1; + + if (*(int *)(param_3 + 0x1c) == *param_2) { + uVar1 = 0; + } + else { + uVar1 = 1; + if (*param_2 <= *(int *)(param_3 + 0x1c)) { + uVar1 = 0xffffffff; + } + } + return uVar1; +} + + + +/* @0043d93f file=? name=FUN_0043d93f */ + +void FUN_0043d93f(void) + +{ + int iVar1; + undefined4 *puVar2; + + iVar1 = DAT_004eac08; + DAT_004eac08 = DAT_004eac08 + 1; + puVar2 = DAT_004eac04; + if ((iVar1 == 0) && (puVar2 = (undefined4 *)FUN_00402298(0x28), puVar2 != (undefined4 *)0x0)) { + FUN_00402b98(puVar2,0x18,100,100,s_VChainOf_004eabb5); + } + DAT_004eac04 = puVar2; + FUN_00402f74((int)DAT_004eac04); + return; +} + + + +/* @0043d98f file=? name=FUN_0043d98f */ + +void __cdecl FUN_0043d98f(undefined4 *param_1) + +{ + FUN_00402f98((int)DAT_004eac04,param_1); + DAT_004eac08 = DAT_004eac08 + -1; + if (DAT_004eac08 == 0) { + if (DAT_004eac04 != (int *)0x0) { + FUN_00402c28(DAT_004eac04,0); + FUN_004022d0(DAT_004eac04); + } + DAT_004eac04 = (int *)0x0; + } + return; +} + + + +/* @0043d9da file=? name=FUN_0043d9da */ + +undefined4 * __cdecl FUN_0043d9da(undefined4 *param_1,int param_2) + +{ + FUN_004188dc(param_1,param_2); + *param_1 = &PTR_FUN_004eac0c; + return param_1; +} + + + +/* @0043d9f9 file=? name=FUN_0043d9f9 */ + +undefined4 * __cdecl FUN_0043d9f9(undefined4 *param_1,int param_2) + +{ + FUN_004188dc(param_1,param_2); + *param_1 = &PTR_FUN_004eac0c; + return param_1; +} + + + +/* @0043da18 file=? name=FUN_0043da18 */ + +undefined4 * __cdecl FUN_0043da18(undefined4 *param_1,int param_2) + +{ + FUN_00418904(param_1,param_2); + *param_1 = &PTR_FUN_004eac0c; + return param_1; +} + + + +/* @0043da37 file=? name=FUN_0043da37 */ + +void __cdecl FUN_0043da37(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004eac0c; + FUN_00418930(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0043da63 file=? name=FUN_0043da63 */ + +undefined4 * __cdecl FUN_0043da63(undefined4 param_1,int param_2,undefined4 *param_3) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_0043daea(); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_0043da93(puVar1,param_1,param_2,param_3); + } + return puVar1; +} + + + +/* @0043da93 file=? name=FUN_0043da93 */ + +undefined4 * __cdecl +FUN_0043da93(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 *param_4) + +{ + FUN_004185bc(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004ead70; + param_1[7] = *param_4; + return param_1; +} + + + +/* @0043dabe file=? name=FUN_0043dabe */ + +void __cdecl FUN_0043dabe(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004ead70; + FUN_004185ec(param_1,0); + if ((param_2 & 1) != 0) { + FUN_0043db3a(param_1); + } + } + return; +} + + + +/* @0043daea file=? name=FUN_0043daea */ + +void FUN_0043daea(void) + +{ + int iVar1; + undefined4 *puVar2; + + iVar1 = DAT_004ead6c; + DAT_004ead6c = DAT_004ead6c + 1; + puVar2 = DAT_004ead68; + if ((iVar1 == 0) && (puVar2 = (undefined4 *)FUN_00402298(0x28), puVar2 != (undefined4 *)0x0)) { + FUN_00402b98(puVar2,0x20,100,100,s_VChainLinkOf_004eabd0); + } + DAT_004ead68 = puVar2; + FUN_00402f74((int)DAT_004ead68); + return; +} + + + +/* @0043db3a file=? name=FUN_0043db3a */ + +void __cdecl FUN_0043db3a(undefined4 *param_1) + +{ + FUN_00402f98((int)DAT_004ead68,param_1); + DAT_004ead6c = DAT_004ead6c + -1; + if (DAT_004ead6c == 0) { + if (DAT_004ead68 != (int *)0x0) { + FUN_00402c28(DAT_004ead68,0); + FUN_004022d0(DAT_004ead68); + } + DAT_004ead68 = (int *)0x0; + } + return; +} + + + +/* @0043db88 file=? name=FUN_0043db88 */ + +undefined4 * __cdecl FUN_0043db88(undefined4 *param_1,int *param_2,int param_3) + +{ + int local_8; + + FUN_0041b868(param_1,param_2,&DAT_004e32ac); + *param_1 = &PTR_FUN_004edad8; + FUN_0043acac(param_1 + 4,param_1); + FUN_0043afbc(param_2,&local_8); + FUN_0043dbdc((int)param_1,local_8,param_3); + return param_1; +} + + + +/* @0043dbdc file=? name=FUN_0043dbdc */ + +void __cdecl FUN_0043dbdc(int param_1,undefined4 param_2,int param_3) + +{ + (**(code **)(*(int *)(param_1 + 0x10) + 4))(param_1 + 0x10,param_2); + (**(code **)(*(int *)(param_3 + 0x80) + 4))(param_3 + 0x80,param_1); + return; +} + + + +/* @0043dc14 file=? name=FUN_0043dc14 */ + +void __cdecl FUN_0043dc14(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004edad8; + FUN_0043accb(param_1 + 4,2); + FUN_0041b898(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0043dc50 file=? name=FUN_0043dc50 */ + +void __cdecl FUN_0043dc50(int *param_1,int param_2) + +{ + uint *puVar1; + uint *local_8; + + FUN_00414c58(param_1); + puVar1 = (uint *)FUN_00402298(0x10); + if (puVar1 == (uint *)0x0) { + local_8 = (uint *)0x0; + } + else { + local_8 = FUN_00402460(puVar1,s_audio_component_004ead74); + } + local_8[3] = local_8[3] + 1; + FUN_00417240(param_1,param_2,(int *)&local_8); + puVar1 = local_8 + 3; + *puVar1 = *puVar1 - 1; + if (*puVar1 == 0) { + FUN_004024d8((int *)local_8,3); + } + return; +} + + + +/* @0043dcc0 file=? name=FUN_0043dcc0 */ + +undefined4 __cdecl FUN_0043dcc0(int param_1) + +{ + FUN_0041b8e0(param_1); + return 1; +} + + + +/* @0043dcd4 file=? name=FUN_0043dcd4 */ + +void __cdecl FUN_0043dcd4(undefined4 *param_1,undefined4 *param_2) + +{ + if (param_2 == param_1 + 4) { + if (param_1 != (undefined4 *)0x0) { + (**(code **)*param_1)(param_1,3); + return; + } + } + else { + FUN_00417938(); + } + return; +} + + + +/* @0043dd04 file=? name=FUN_0043dd04 */ + +void __cdecl FUN_0043dd04(int param_1) + +{ + int *piVar1; + + piVar1 = (int *)FUN_00417ab4(param_1 + 0x10); + (**(code **)(*piVar1 + 0x18))(piVar1,9,0); + return; +} + + + +/* @0043dd24 file=? name=FUN_0043dd24 */ + +int * __cdecl FUN_0043dd24(int *param_1,int *param_2,int param_3) + +{ + FUN_0043ebd0(param_1,param_2,param_3); + *param_1 = (int)&PTR_FUN_004edab4; + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0x18,4); + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0x19,4); + FUN_0043f316(param_1); + return param_1; +} + + + +/* @0043dd74 file=? name=FUN_0043dd74 */ + +void __cdecl FUN_0043dd74(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004edab4; + FUN_0043ec7b(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0043dda0 file=munga/audwthr.cpp name=FUN_0043dda0 */ + +void __cdecl FUN_0043dda0(int *param_1,int param_2) + +{ + char *pcVar1; + int local_c; + int local_8; + + FUN_0043eca7(param_1,param_2); + pcVar1 = (char *)FUN_00403ad0(param_2,s_motion_type_004ead84); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004ead90,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_motion_type_004eadb5,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004eadc1,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004eadc3, + s_d__tesla_bt_munga_AUDWTHR_CPP_004eae03,0xbb); + } + FUN_00407ae0(pcVar1,&local_8); + (**(code **)(*param_1 + 0x20))(param_1,&local_8,4); + pcVar1 = (char *)FUN_00403ad0(param_2,s_motion_value_004eae21); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004eae2e,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_motion_value_004eae53,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004eae60,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004eae62, + s_d__tesla_bt_munga_AUDWTHR_CPP_004eaea2,0xbc); + } + FUN_00407ae0(pcVar1,&local_c); + (**(code **)(*param_1 + 0x20))(param_1,&local_c,4); + return; +} + + + +/* @0043ded4 file=munga/audwthr.cpp name=FUN_0043ded4 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 __cdecl FUN_0043ded4(int param_1,float *param_2) + +{ + int iVar1; + float10 fVar2; + + if (*(int *)(param_1 + 0x60) == 0) { + iVar1 = *(int *)(param_1 + 100); + if (iVar1 == 0) { + return (float10)*param_2; + } + if (iVar1 == 1) { + return (float10)param_2[1]; + } + if (iVar1 == 2) { + return (float10)param_2[2]; + } + if (iVar1 == 3) { + fVar2 = FUN_004dd138((double)(param_2[2] * param_2[2] + + param_2[1] * param_2[1] + *param_2 * *param_2)); + return fVar2; + } + } + else if (*(int *)(param_1 + 0x60) == 1) { + iVar1 = *(int *)(param_1 + 100); + if (iVar1 == 0) { + return (float10)param_2[3]; + } + if (iVar1 == 1) { + return (float10)param_2[4]; + } + if (iVar1 == 2) { + return (float10)param_2[5]; + } + if (iVar1 == 3) { + fVar2 = FUN_004dd138((double)(param_2[5] * param_2[5] + + param_2[4] * param_2[4] + param_2[3] * param_2[3])); + return fVar2; + } + } + FUN_0040385c(s_AudioMotionTrigger__ExtractInter_004eaec0,s_d__tesla_bt_munga_AUDWTHR_CPP_004eaf06, + 0xe8); + return (float10)_DAT_0043dfc8; +} + + + +/* @0043e004 file=? name=FUN_0043e004 */ + +int * __cdecl FUN_0043e004(int *param_1,int *param_2,int param_3) + +{ + FUN_0043f38c(param_1,param_2,param_3); + *param_1 = (int)&PTR_FUN_004eda90; + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0x17,4); + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0x18,4); + FUN_0043f316(param_1); + return param_1; +} + + + +/* @0043e054 file=? name=FUN_0043e054 */ + +void __cdecl FUN_0043e054(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004eda90; + FUN_0043f431(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0043e080 file=munga/audwthr.cpp name=FUN_0043e080 */ + +void __cdecl FUN_0043e080(int *param_1,int param_2) + +{ + char *pcVar1; + int local_c; + int local_8; + + FUN_0043f45d(param_1,param_2); + pcVar1 = (char *)FUN_00403ad0(param_2,s_motion_type_004eaf24); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004eaf30,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_motion_type_004eaf55,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004eaf61,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004eaf63, + s_d__tesla_bt_munga_AUDWTHR_CPP_004eafa3,0x150); + } + FUN_00407ae0(pcVar1,&local_8); + (**(code **)(*param_1 + 0x20))(param_1,&local_8,4); + pcVar1 = (char *)FUN_00403ad0(param_2,s_motion_value_004eafc1); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004eafce,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_motion_value_004eaff3,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004eb000,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004eb002, + s_d__tesla_bt_munga_AUDWTHR_CPP_004eb042,0x151); + } + FUN_00407ae0(pcVar1,&local_c); + (**(code **)(*param_1 + 0x20))(param_1,&local_c,4); + return; +} + + + +/* @0043e1b4 file=munga/audwthr.cpp name=FUN_0043e1b4 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 __cdecl FUN_0043e1b4(int param_1,float *param_2) + +{ + int iVar1; + float10 fVar2; + + if (*(int *)(param_1 + 0x5c) == 0) { + iVar1 = *(int *)(param_1 + 0x60); + if (iVar1 == 0) { + return (float10)*param_2; + } + if (iVar1 == 1) { + return (float10)param_2[1]; + } + if (iVar1 == 2) { + return (float10)param_2[2]; + } + if (iVar1 == 3) { + fVar2 = FUN_004dd138((double)(param_2[2] * param_2[2] + + param_2[1] * param_2[1] + *param_2 * *param_2)); + return fVar2; + } + } + else if (*(int *)(param_1 + 0x5c) == 1) { + iVar1 = *(int *)(param_1 + 0x60); + if (iVar1 == 0) { + return (float10)param_2[3]; + } + if (iVar1 == 1) { + return (float10)param_2[4]; + } + if (iVar1 == 2) { + return (float10)param_2[5]; + } + if (iVar1 == 3) { + fVar2 = FUN_004dd138((double)(param_2[5] * param_2[5] + + param_2[4] * param_2[4] + param_2[3] * param_2[3])); + return fVar2; + } + } + FUN_0040385c(s_AudioMotionScale__ExtractInteres_004eb060,s_d__tesla_bt_munga_AUDWTHR_CPP_004eb0a4, + 0x17d); + return (float10)_DAT_0043e2a8; +} + + + +/* @0043e2e4 file=? name=FUN_0043e2e4 */ + +int * __cdecl FUN_0043e2e4(int *param_1,int *param_2,int param_3) + +{ + FUN_0043f8ab(param_1,param_2,param_3); + *param_1 = (int)&PTR_FUN_004eda6c; + FUN_0044001b(param_1); + return param_1; +} + + + +/* @0043e310 file=? name=FUN_0043e310 */ + +void __cdecl FUN_0043e310(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004eda6c; + FUN_0043f950(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0043e33c file=? name=FUN_0043e33c */ + +float10 __cdecl FUN_0043e33c(undefined4 param_1,int param_2) + +{ + return (float10)*(float *)(param_2 + 4); +} + + + +/* @0043e348 file=? name=FUN_0043e348 */ + +void FUN_0043e348(void) + +{ + return; +} + + + +/* @0043e350 file=? name=FUN_0043e350 */ + +int * __cdecl FUN_0043e350(int *param_1,int *param_2,int param_3) + +{ + FUN_0044009c(param_1,param_2,param_3); + *param_1 = (int)&PTR_FUN_004eda48; + FUN_004407df(param_1); + return param_1; +} + + + +/* @0043e37c file=? name=FUN_0043e37c */ + +void __cdecl FUN_0043e37c(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004eda48; + FUN_00440147(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0043e3a8 file=? name=FUN_0043e3a8 */ + +void __cdecl FUN_0043e3a8(int *param_1,int param_2) + +{ + FUN_00440173(param_1,param_2); + return; +} + + + +/* @0043e3c8 file=? name=FUN_0043e3c8 */ + +float10 __cdecl FUN_0043e3c8(undefined4 param_1,float *param_2) + +{ + return (float10)*param_2; +} + + + +/* @0043e3d4 file=? name=FUN_0043e3d4 */ + +int * __cdecl FUN_0043e3d4(int *param_1,int *param_2,int param_3) + +{ + FUN_00440844(param_1,param_2,param_3); + *param_1 = (int)&PTR_FUN_004eda28; + FUN_004407df(param_1); + return param_1; +} + + + +/* @0043e400 file=? name=FUN_0043e400 */ + +void __cdecl FUN_0043e400(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004eda28; + FUN_004408bd(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0043e42c file=? name=FUN_0043e42c */ + +void __cdecl FUN_0043e42c(int *param_1,int param_2) + +{ + FUN_004408e9(param_1,param_2); + return; +} + + + +/* @0043e44c file=? name=FUN_0043e44c */ + +int * __cdecl FUN_0043e44c(int *param_1,int *param_2,int param_3) + +{ + FUN_00440abc(param_1,param_2,param_3); + *param_1 = (int)&PTR_FUN_004eda04; + FUN_004407df(param_1); + return param_1; +} + + + +/* @0043e478 file=? name=FUN_0043e478 */ + +void __cdecl FUN_0043e478(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004eda04; + FUN_00440b61(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0043e4a4 file=? name=FUN_0043e4a4 */ + +float10 __cdecl FUN_0043e4a4(undefined4 param_1,float *param_2) + +{ + return (float10)*param_2; +} + + + +/* @0043e4b0 file=? name=FUN_0043e4b0 */ + +int * __cdecl FUN_0043e4b0(int *param_1,int *param_2,int param_3) + +{ + FUN_00440fdb(param_1,param_2,param_3); + *param_1 = (int)&PTR_FUN_004ed9e0; + FUN_004414d8(param_1); + return param_1; +} + + + +/* @0043e4dc file=? name=FUN_0043e4dc */ + +void __cdecl FUN_0043e4dc(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004ed9e0; + FUN_0044104e(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0043e508 file=? name=FUN_0043e508 */ + +void __cdecl FUN_0043e508(int *param_1,int param_2) + +{ + FUN_0044107a(param_1,param_2); + return; +} + + + +/* @0043e528 file=? name=FUN_0043e528 */ + +undefined4 __cdecl FUN_0043e528(undefined4 param_1,undefined4 *param_2) + +{ + return *param_2; +} + + + +/* @0043e534 file=? name=FUN_0043e534 */ + +int * __cdecl FUN_0043e534(int *param_1,int *param_2,int param_3) + +{ + FUN_00440fdb(param_1,param_2,param_3); + *param_1 = (int)&PTR_FUN_004ed9bc; + FUN_004414d8(param_1); + return param_1; +} + + + +/* @0043e560 file=? name=FUN_0043e560 */ + +void __cdecl FUN_0043e560(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004ed9bc; + FUN_0044104e(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0043e58c file=? name=FUN_0043e58c */ + +void __cdecl FUN_0043e58c(int *param_1,int param_2) + +{ + FUN_0044107a(param_1,param_2); + return; +} + + + +/* @0043e5ac file=? name=FUN_0043e5ac */ + +undefined4 __cdecl FUN_0043e5ac(undefined4 param_1,undefined4 *param_2) + +{ + return *param_2; +} + + + +/* @0043e5b8 file=? name=FUN_0043e5b8 */ + +int * __cdecl FUN_0043e5b8(int *param_1,int *param_2,int param_3) + +{ + FUN_0044153c(param_1,param_2,param_3); + *param_1 = (int)&PTR_FUN_004ed99c; + FUN_004414d8(param_1); + return param_1; +} + + + +/* @0043e5e4 file=? name=FUN_0043e5e4 */ + +void __cdecl FUN_0043e5e4(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004ed99c; + FUN_004415b5(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0043e610 file=? name=FUN_0043e610 */ + +void __cdecl FUN_0043e610(int *param_1,int param_2) + +{ + FUN_004415e1(param_1,param_2); + return; +} + + + +/* @0043e630 file=? name=FUN_0043e630 */ + +int * __cdecl FUN_0043e630(int *param_1,int *param_2,int param_3) + +{ + FUN_0044179a(param_1,param_2,param_3); + *param_1 = (int)&PTR_FUN_004ed978; + FUN_004414d8(param_1); + return param_1; +} + + + +/* @0043e65c file=? name=FUN_0043e65c */ + +void __cdecl FUN_0043e65c(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004ed978; + FUN_00441845(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0043e688 file=? name=FUN_0043e688 */ + +void __cdecl FUN_0043e688(int *param_1,int param_2) + +{ + FUN_00441871(param_1,param_2); + return; +} + + + +/* @0043e6a8 file=? name=FUN_0043e6a8 */ + +float10 __cdecl FUN_0043e6a8(undefined4 param_1,int *param_2) + +{ + return (float10)*param_2; +} + + + +/* @0043e6b4 file=? name=FUN_0043e6b4 */ + +int * __cdecl FUN_0043e6b4(int *param_1,int *param_2,int param_3) + +{ + FUN_0044179a(param_1,param_2,param_3); + *param_1 = (int)&PTR_FUN_004ed954; + FUN_004414d8(param_1); + return param_1; +} + + + +/* @0043e6e0 file=? name=FUN_0043e6e0 */ + +void __cdecl FUN_0043e6e0(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004ed954; + FUN_00441845(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0043e70c file=? name=FUN_0043e70c */ + +void __cdecl FUN_0043e70c(int *param_1,int param_2) + +{ + FUN_00441871(param_1,param_2); + return; +} + + + +/* @0043e72c file=? name=FUN_0043e72c */ + +float10 __cdecl FUN_0043e72c(undefined4 param_1,int *param_2) + +{ + return (float10)*param_2; +} + + + +/* @0043e738 file=? name=FUN_0043e738 */ + +undefined4 * __cdecl FUN_0043e738(undefined4 *param_1,int *param_2,int param_3) + +{ + FUN_00441c8c(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004ed930; + (**(code **)(*(int *)(param_1[5] + 0x18) + 4))(param_1[5] + 0x18,param_1); + return param_1; +} + + + +/* @0043e770 file=? name=FUN_0043e770 */ + +void __cdecl FUN_0043e770(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004ed930; + FUN_00441cdd(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0043e79c file=? name=FUN_0043e79c */ + +void __cdecl FUN_0043e79c(int *param_1) + +{ + (**(code **)(*param_1 + 0x20))(param_1,param_1[0xc],param_1[0xd]); + return; +} + + + +/* @0043e7b8 file=munga/audwthr.cpp name=FUN_0043e7b8 */ + +void FUN_0043e7b8(void) + +{ + FUN_0040385c(s_AudioStateWatcher__StateChanged___004eb0c2,s_d__tesla_bt_munga_AUDWTHR_CPP_004eb0fc + ,0x3a9); + return; +} + + + +/* @0043e7d4 file=? name=FUN_0043e7d4 */ + +int * __cdecl FUN_0043e7d4(int *param_1,int *param_2,int param_3) + +{ + FUN_0043e738(param_1,param_2,param_3); + *param_1 = (int)&PTR_FUN_004ed90c; + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0x20,4); + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0x21,4); + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0x22,4); + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0x23,4); + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0x24,4); + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0x25,4); + FUN_00441ef5(param_1); + return param_1; +} + + + +/* @0043e878 file=? name=FUN_0043e878 */ + +void __cdecl FUN_0043e878(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004ed90c; + FUN_0043e770(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0043e8a4 file=munga/audwthr.cpp name=FUN_0043e8a4 */ + +/* WARNING: Type propagation algorithm not settling */ + +void __cdecl FUN_0043e8a4(int *param_1,int param_2) + +{ + char *pcVar1; + int iVar2; + int *piVar3; + int local_1c [2]; + float local_14; + int local_10; + int local_c; + int local_8; + + FUN_00441d17(param_1,param_2); + pcVar1 = (char *)FUN_00403ad0(param_2,s_trigger_state_004eb11a); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004eb128,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_trigger_state_004eb14d,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004eb15b,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004eb15d, + s_d__tesla_bt_munga_AUDWTHR_CPP_004eb19d,0x3dd); + } + FUN_00407ae0(pcVar1,&local_8); + (**(code **)(*param_1 + 0x20))(param_1,&local_8,4); + pcVar1 = (char *)FUN_00403ad0(param_2,s_inverse_trigger_004eb1bb); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004eb1cb,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_inverse_trigger_004eb1f0,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004eb200,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004eb202, + s_d__tesla_bt_munga_AUDWTHR_CPP_004eb242,0x3de); + } + FUN_00407ae0(pcVar1,&local_c); + (**(code **)(*param_1 + 0x20))(param_1,&local_c,4); + pcVar1 = (char *)FUN_00403ad0(param_2,s_control_ID_004eb260); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004eb26b,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_control_ID_004eb290,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004eb29b,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004eb29d, + s_d__tesla_bt_munga_AUDWTHR_CPP_004eb2dd,0x3df); + } + FUN_00407ae0(pcVar1,&local_10); + (**(code **)(*param_1 + 0x20))(param_1,&local_10,4); + pcVar1 = (char *)FUN_00403ad0(param_2,s_control_value_004eb2fb); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004eb309,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_control_value_004eb32e,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004eb33c,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004eb33e, + s_d__tesla_bt_munga_AUDWTHR_CPP_004eb37e,0x3e0); + } + FUN_00407b78(pcVar1,&local_14); + (**(code **)(*param_1 + 0x20))(param_1,&local_14,4); + local_1c[1] = 0; + local_1c[0] = 0; + iVar2 = FUN_00403ad0(param_2,s_exclude_state_004eb39c); + if (iVar2 != 0) { + local_1c[1] = 1; + piVar3 = local_1c; + pcVar1 = (char *)FUN_00403ad0(param_2,s_exclude_state_004eb3aa); + FUN_00407ae0(pcVar1,piVar3); + } + (**(code **)(*param_1 + 0x20))(param_1,local_1c + 1,4); + (**(code **)(*param_1 + 0x20))(param_1,local_1c,4); + return; +} + + + +/* @0043eb40 file=? name=FUN_0043eb40 */ + +void __cdecl FUN_0043eb40(int param_1,int param_2,int param_3) + +{ + int *piVar1; + + if (((*(int *)(param_1 + 0x90) == 0) || + ((((*(int *)(param_1 + 0x84) != 0 || (param_3 != *(int *)(param_1 + 0x80))) || + (param_2 != *(int *)(param_1 + 0x94))) && + (((*(int *)(param_1 + 0x84) == 0 || (param_2 != *(int *)(param_1 + 0x80))) || + (param_3 != *(int *)(param_1 + 0x94))))))) && + (((*(int *)(param_1 + 0x84) == 0 && (param_3 == *(int *)(param_1 + 0x80))) || + ((*(int *)(param_1 + 0x84) != 0 && (param_2 == *(int *)(param_1 + 0x80))))))) { + piVar1 = (int *)FUN_00417ab4(param_1 + 0x74); + (**(code **)(*piVar1 + 0x18)) + (piVar1,*(undefined4 *)(param_1 + 0x88),*(undefined4 *)(param_1 + 0x8c)); + } + return; +} + + + +/* @0043ebd0 file=? name=FUN_0043ebd0 */ + +undefined4 * __cdecl FUN_0043ebd0(undefined4 *param_1,int *param_2,int param_3) + +{ + FUN_0043f0c2(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004ed8e8; + (**(code **)(*(int *)(param_1[4] + 0x80) + 4))(param_1[4] + 0x80,param_1); + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0x11,4); + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0x12,4); + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0x13,4); + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0x14,4); + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0x15,4); + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0x16,4); + param_1[0x17] = 0; + return param_1; +} + + + +/* @0043ec7b file=? name=FUN_0043ec7b */ + +void __cdecl FUN_0043ec7b(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004ed8e8; + FUN_0043f113(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0043eca7 file=munga/audwthr.hpp name=FUN_0043eca7 */ + +void __cdecl FUN_0043eca7(int *param_1,int param_2) + +{ + char *pcVar1; + float local_1c; + float local_18; + int local_14; + int local_10; + int local_c; + float local_8; + + FUN_0043f14d(param_1,param_2); + pcVar1 = (char *)FUN_00403ad0(param_2,s_attribute_value_threshold_004eb3b8); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004eb3d2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_attribute_value_threshold_004eb3f7,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004eb411,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004eb413, + s_d__tesla_bt_munga_audwthr_hpp_004eb453,0x16b); + } + FUN_00407b78(pcVar1,&local_8); + (**(code **)(*param_1 + 0x20))(param_1,&local_8,4); + pcVar1 = (char *)FUN_00403ad0(param_2,s_inverse_trigger_004eb471); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004eb481,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_inverse_trigger_004eb4a6,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004eb4b6,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004eb4b8, + s_d__tesla_bt_munga_audwthr_hpp_004eb4f8,0x16e); + } + FUN_00407ae0(pcVar1,&local_c); + (**(code **)(*param_1 + 0x20))(param_1,&local_c,4); + pcVar1 = (char *)FUN_00403ad0(param_2,s_control_ID_on_004eb516); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004eb524,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_control_ID_on_004eb549,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004eb557,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004eb559, + s_d__tesla_bt_munga_audwthr_hpp_004eb599,0x171); + } + FUN_00407ae0(pcVar1,&local_10); + (**(code **)(*param_1 + 0x20))(param_1,&local_10,4); + pcVar1 = (char *)FUN_00403ad0(param_2,s_control_ID_off_004eb5b7); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004eb5c6,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_control_ID_off_004eb5eb,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004eb5fa,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004eb5fc, + s_d__tesla_bt_munga_audwthr_hpp_004eb63c,0x174); + } + FUN_00407ae0(pcVar1,&local_14); + (**(code **)(*param_1 + 0x20))(param_1,&local_14,4); + pcVar1 = (char *)FUN_00403ad0(param_2,s_control_value_on_004eb65a); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004eb66b,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_control_value_on_004eb690,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004eb6a1,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004eb6a3, + s_d__tesla_bt_munga_audwthr_hpp_004eb6e3,0x177); + } + FUN_00407b78(pcVar1,&local_18); + (**(code **)(*param_1 + 0x20))(param_1,&local_18,4); + pcVar1 = (char *)FUN_00403ad0(param_2,s_control_value_off_004eb701); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004eb713,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_control_value_off_004eb738,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004eb74a,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004eb74c, + s_d__tesla_bt_munga_audwthr_hpp_004eb78c,0x17a); + } + FUN_00407b78(pcVar1,&local_1c); + (**(code **)(*param_1 + 0x20))(param_1,&local_1c,4); + return; +} + + + +/* @0043efed file=? name=FUN_0043efed */ + +void __cdecl FUN_0043efed(int *param_1) + +{ + float fVar1; + int *piVar2; + float10 fVar3; + + fVar3 = (float10)(**(code **)(*param_1 + 0x20))(param_1,param_1 + 8); + fVar1 = (float)fVar3; + if (param_1[0x17] == 0) { + if (((param_1[0x12] == 0) && ((float)param_1[0x11] < fVar1)) || + ((param_1[0x12] != 0 && (fVar1 < (float)param_1[0x11])))) { + piVar2 = (int *)FUN_00417ab4((int)(param_1 + 0xe)); + (**(code **)(*piVar2 + 0x18))(piVar2,param_1[0x13],param_1[0x15]); + param_1[0x17] = 1; + } + } + else if (((param_1[0x12] == 0) && (fVar1 <= (float)param_1[0x11])) || + ((param_1[0x12] != 0 && ((float)param_1[0x11] <= fVar1)))) { + piVar2 = (int *)FUN_00417ab4((int)(param_1 + 0xe)); + (**(code **)(*piVar2 + 0x18))(piVar2,param_1[0x14],param_1[0x16]); + param_1[0x17] = 0; + } + return; +} + + + +/* @0043f09a file=munga/audwthr.hpp name=FUN_0043f09a */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 FUN_0043f09a(void) + +{ + FUN_0040385c(s_AudioTriggerOf__ExtractIntere_004eb7aa,s_d__tesla_bt_munga_audwthr_hpp_004eb7ef, + 0x1bc); + return (float10)_DAT_0043f0be; +} + + + +/* @0043f0c2 file=? name=FUN_0043f0c2 */ + +undefined4 * __cdecl FUN_0043f0c2(undefined4 *param_1,int *param_2,int param_3) + +{ + int local_8; + + FUN_0043f22c(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004ed8c8; + FUN_0043acac(param_1 + 0xe,param_1); + FUN_0043afbc(param_2,&local_8); + (**(code **)(param_1[0xe] + 4))(param_1 + 0xe,local_8); + return param_1; +} + + + +/* @0043f113 file=? name=FUN_0043f113 */ + +void __cdecl FUN_0043f113(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004ed8c8; + FUN_0043accb(param_1 + 0xe,2); + FUN_0043f200(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0043f14d file=? name=FUN_0043f14d */ + +void __cdecl FUN_0043f14d(int *param_1,int param_2) + +{ + uint *puVar1; + uint *local_8; + + FUN_0043f26e(param_1,param_2); + puVar1 = (uint *)FUN_00402298(0x10); + if (puVar1 == (uint *)0x0) { + local_8 = (uint *)0x0; + } + else { + local_8 = FUN_00402460(puVar1,s_audio_component_004eb80d); + } + local_8[3] = local_8[3] + 1; + FUN_00417240(param_1,param_2,(int *)&local_8); + puVar1 = local_8 + 3; + *puVar1 = *puVar1 - 1; + if (*puVar1 == 0) { + FUN_004024d8((int *)local_8,3); + } + return; +} + + + +/* @0043f1bc file=? name=FUN_0043f1bc */ + +undefined4 __cdecl FUN_0043f1bc(int param_1) + +{ + FUN_00428a2c(param_1); + return 1; +} + + + +/* @0043f1d0 file=? name=FUN_0043f1d0 */ + +void __cdecl FUN_0043f1d0(undefined4 *param_1,undefined4 *param_2) + +{ + if (param_2 == param_1 + 0xe) { + if (param_1 != (undefined4 *)0x0) { + (**(code **)*param_1)(param_1,3); + return; + } + } + else { + FUN_00417938(); + } + return; +} + + + +/* @0043f200 file=? name=FUN_0043f200 */ + +void __cdecl FUN_0043f200(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004ed8a8; + FUN_0042864c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0043f22c file=? name=FUN_0043f22c */ + +undefined4 * __cdecl FUN_0043f22c(undefined4 *param_1,int *param_2,int param_3) + +{ + undefined1 local_8 [4]; + + FUN_00428678(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004ed8a8; + (**(code **)(*param_2 + 0x1c))(param_2,local_8,4); + FUN_0043f34a((int)param_1); + return param_1; +} + + + +/* @0043f26e file=munga/watcher.hpp name=FUN_0043f26e */ + +void __cdecl FUN_0043f26e(int *param_1,int param_2) + +{ + char *pcVar1; + int local_8; + + FUN_0042887c(param_1,param_2); + pcVar1 = (char *)FUN_00403ad0(param_2,s_dump_value_004eb81d); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004eb828,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_dump_value_004eb84d,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004eb858,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004eb85a, + s_d__tesla_bt_munga_watcher_hpp_004eb89a,0x108); + } + FUN_00407ae0(pcVar1,&local_8); + (**(code **)(*param_1 + 0x20))(param_1,&local_8,4); + return; +} + + + +/* @0043f316 file=? name=FUN_0043f316 */ + +void __cdecl FUN_0043f316(int *param_1) + +{ + FUN_0043f362(param_1); + return; +} + + + +/* @0043f325 file=? name=FUN_0043f325 */ + +void __cdecl FUN_0043f325(int *param_1) + +{ + bool bVar1; + undefined3 extraout_var; + + bVar1 = FUN_0040a824((byte *)(param_1 + 8),(byte *)param_1[5]); + if (CONCAT31(extraout_var,bVar1) == 0) { + FUN_0043f362(param_1); + } + return; +} + + + +/* @0043f34a file=? name=FUN_0043f34a */ + +void __cdecl FUN_0043f34a(int param_1) + +{ + FUN_0040a7f4((undefined4 *)(param_1 + 0x20),*(undefined4 **)(param_1 + 0x14)); + return; +} + + + +/* @0043f362 file=? name=FUN_0043f362 */ + +void __cdecl FUN_0043f362(int *param_1) + +{ + FUN_0043f34a((int)param_1); + param_1[6] = 1; + if (param_1[7] != 0) { + (**(code **)(*param_1 + 0x18))(param_1); + } + return; +} + + + +/* @0043f387 file=? name=FUN_0043f387 */ + +void FUN_0043f387(void) + +{ + return; +} + + + +/* @0043f38c file=? name=FUN_0043f38c */ + +undefined4 * __cdecl FUN_0043f38c(undefined4 *param_1,int *param_2,int param_3) + +{ + int iVar1; + + FUN_0043f0c2(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004ed884; + iVar1 = FUN_00417ab4((int)(param_1 + 0xe)); + (**(code **)(*(int *)(iVar1 + 0x14) + 4))(iVar1 + 0x14,param_1); + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0x11,4); + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0x12,4); + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0x13,4); + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0x14,4); + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0x15,4); + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0x16,4); + return param_1; +} + + + +/* @0043f431 file=? name=FUN_0043f431 */ + +void __cdecl FUN_0043f431(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004ed884; + FUN_0043f113(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0043f45d file=munga/audwthr.hpp name=FUN_0043f45d */ + +void __cdecl FUN_0043f45d(int *param_1,int param_2) + +{ + char *pcVar1; + float local_1c; + float local_18; + float local_14; + int local_10; + float local_c; + float local_8; + + FUN_0043f14d(param_1,param_2); + pcVar1 = (char *)FUN_00403ad0(param_2,s_attribute_value_boundary1_004eb8b8); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004eb8d2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_attribute_value_boundary1_004eb8f7,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004eb911,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004eb913, + s_d__tesla_bt_munga_audwthr_hpp_004eb953,0x237); + } + FUN_00407b78(pcVar1,&local_8); + (**(code **)(*param_1 + 0x20))(param_1,&local_8,4); + pcVar1 = (char *)FUN_00403ad0(param_2,s_attribute_value_boundary2_004eb971); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004eb98b,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_attribute_value_boundary2_004eb9b0,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004eb9ca,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004eb9cc, + s_d__tesla_bt_munga_audwthr_hpp_004eba0c,0x23a); + } + FUN_00407b78(pcVar1,&local_c); + (**(code **)(*param_1 + 0x20))(param_1,&local_c,4); + pcVar1 = (char *)FUN_00403ad0(param_2,s_control_ID_004eba2a); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004eba35,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_control_ID_004eba5a,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004eba65,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004eba67, + s_d__tesla_bt_munga_audwthr_hpp_004ebaa7,0x23d); + } + FUN_00407ae0(pcVar1,&local_10); + (**(code **)(*param_1 + 0x20))(param_1,&local_10,4); + pcVar1 = (char *)FUN_00403ad0(param_2,s_control_value_boundary1_004ebac5); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004ebadd,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_control_value_boundary1_004ebb02,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004ebb1a,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004ebb1c, + s_d__tesla_bt_munga_audwthr_hpp_004ebb5c,0x240); + } + FUN_00407b78(pcVar1,&local_14); + (**(code **)(*param_1 + 0x20))(param_1,&local_14,4); + pcVar1 = (char *)FUN_00403ad0(param_2,s_control_value_boundary2_004ebb7a); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004ebb92,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_control_value_boundary2_004ebbb7,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004ebbcf,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004ebbd1, + s_d__tesla_bt_munga_audwthr_hpp_004ebc11,0x243); + } + FUN_00407b78(pcVar1,&local_18); + (**(code **)(*param_1 + 0x20))(param_1,&local_18,4); + pcVar1 = (char *)FUN_00403ad0(param_2,s_exponent_004ebc2f); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004ebc38,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_exponent_004ebc5d,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004ebc66,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004ebc68, + s_d__tesla_bt_munga_audwthr_hpp_004ebca8,0x246); + } + FUN_00407b78(pcVar1,&local_1c); + (**(code **)(*param_1 + 0x20))(param_1,&local_1c,4); + return; +} + + + +/* @0043f7a3 file=? name=FUN_0043f7a3 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_0043f7a3(int *param_1) + +{ + float fVar1; + float fVar2; + float fVar3; + int *piVar4; + float10 fVar5; + + fVar5 = (float10)(**(code **)(*param_1 + 0x20))(param_1); + fVar1 = (float)fVar5; + if ((float)param_1[0x12] <= (float)param_1[0x11]) { + fVar2 = (float)param_1[0x12]; + } + else { + fVar2 = (float)param_1[0x11]; + } + if ((float)param_1[0x11] <= (float)param_1[0x12]) { + fVar3 = (float)param_1[0x12]; + } + else { + fVar3 = (float)param_1[0x11]; + } + if ((fVar2 <= fVar1) && (fVar2 = fVar1, fVar3 < fVar1)) { + fVar2 = fVar3; + } + if ((float)param_1[0x16] != _DAT_0043f87f) { + FUN_004dce94((double)((fVar2 - (float)param_1[0x11]) / + ((float)param_1[0x12] - (float)param_1[0x11])), + SUB84((double)(float)param_1[0x16],0), + (uint)((ulonglong)(double)(float)param_1[0x16] >> 0x20)); + } + piVar4 = (int *)FUN_00417ab4((int)(param_1 + 0xe)); + (**(code **)(*piVar4 + 0x18))(); + return; +} + + + +/* @0043f8ab file=? name=FUN_0043f8ab */ + +undefined4 * __cdecl FUN_0043f8ab(undefined4 *param_1,int *param_2,int param_3) + +{ + int iVar1; + + FUN_0043fdca(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004ed860; + iVar1 = FUN_00417ab4((int)(param_1 + 10)); + (**(code **)(*(int *)(iVar1 + 0x14) + 4))(iVar1 + 0x14,param_1); + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0xd,4); + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0xe,4); + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0xf,4); + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0x10,4); + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0x11,4); + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0x12,4); + return param_1; +} + + + +/* @0043f950 file=? name=FUN_0043f950 */ + +void __cdecl FUN_0043f950(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004ed860; + FUN_0043fe1b(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0043f97c file=munga/audwthr.hpp name=FUN_0043f97c */ + +void __cdecl FUN_0043f97c(int *param_1,int param_2) + +{ + char *pcVar1; + float local_1c; + float local_18; + float local_14; + int local_10; + float local_c; + float local_8; + + FUN_0043fe55(param_1,param_2); + pcVar1 = (char *)FUN_00403ad0(param_2,s_attribute_value_boundary1_004ebd27); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004ebd41,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_attribute_value_boundary1_004ebd66,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004ebd80,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004ebd82, + s_d__tesla_bt_munga_audwthr_hpp_004ebdc2,0x237); + } + FUN_00407b78(pcVar1,&local_8); + (**(code **)(*param_1 + 0x20))(param_1,&local_8,4); + pcVar1 = (char *)FUN_00403ad0(param_2,s_attribute_value_boundary2_004ebde0); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004ebdfa,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_attribute_value_boundary2_004ebe1f,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004ebe39,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004ebe3b, + s_d__tesla_bt_munga_audwthr_hpp_004ebe7b,0x23a); + } + FUN_00407b78(pcVar1,&local_c); + (**(code **)(*param_1 + 0x20))(param_1,&local_c,4); + pcVar1 = (char *)FUN_00403ad0(param_2,s_control_ID_004ebe99); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004ebea4,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_control_ID_004ebec9,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004ebed4,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004ebed6, + s_d__tesla_bt_munga_audwthr_hpp_004ebf16,0x23d); + } + FUN_00407ae0(pcVar1,&local_10); + (**(code **)(*param_1 + 0x20))(param_1,&local_10,4); + pcVar1 = (char *)FUN_00403ad0(param_2,s_control_value_boundary1_004ebf34); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004ebf4c,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_control_value_boundary1_004ebf71,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004ebf89,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004ebf8b, + s_d__tesla_bt_munga_audwthr_hpp_004ebfcb,0x240); + } + FUN_00407b78(pcVar1,&local_14); + (**(code **)(*param_1 + 0x20))(param_1,&local_14,4); + pcVar1 = (char *)FUN_00403ad0(param_2,s_control_value_boundary2_004ebfe9); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004ec001,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_control_value_boundary2_004ec026,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004ec03e,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004ec040, + s_d__tesla_bt_munga_audwthr_hpp_004ec080,0x243); + } + FUN_00407b78(pcVar1,&local_18); + (**(code **)(*param_1 + 0x20))(param_1,&local_18,4); + pcVar1 = (char *)FUN_00403ad0(param_2,s_exponent_004ec09e); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004ec0a7,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_exponent_004ec0cc,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004ec0d5,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004ec0d7, + s_d__tesla_bt_munga_audwthr_hpp_004ec117,0x246); + } + FUN_00407b78(pcVar1,&local_1c); + (**(code **)(*param_1 + 0x20))(param_1,&local_1c,4); + return; +} + + + +/* @0043fcc2 file=? name=FUN_0043fcc2 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_0043fcc2(int *param_1) + +{ + float fVar1; + float fVar2; + float fVar3; + int *piVar4; + float10 fVar5; + + fVar5 = (float10)(**(code **)(*param_1 + 0x20))(param_1); + fVar1 = (float)fVar5; + if ((float)param_1[0xe] <= (float)param_1[0xd]) { + fVar2 = (float)param_1[0xe]; + } + else { + fVar2 = (float)param_1[0xd]; + } + if ((float)param_1[0xd] <= (float)param_1[0xe]) { + fVar3 = (float)param_1[0xe]; + } + else { + fVar3 = (float)param_1[0xd]; + } + if ((fVar2 <= fVar1) && (fVar2 = fVar1, fVar3 < fVar1)) { + fVar2 = fVar3; + } + if ((float)param_1[0x12] != _DAT_0043fd9e) { + FUN_004dce94((double)((fVar2 - (float)param_1[0xd]) / + ((float)param_1[0xe] - (float)param_1[0xd])), + SUB84((double)(float)param_1[0x12],0), + (uint)((ulonglong)(double)(float)param_1[0x12] >> 0x20)); + } + piVar4 = (int *)FUN_00417ab4((int)(param_1 + 10)); + (**(code **)(*piVar4 + 0x18))(); + return; +} + + + +/* @0043fdca file=? name=FUN_0043fdca */ + +undefined4 * __cdecl FUN_0043fdca(undefined4 *param_1,int *param_2,int param_3) + +{ + int local_8; + + FUN_0043ff34(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004ed840; + FUN_0043acac(param_1 + 10,param_1); + FUN_0043afbc(param_2,&local_8); + (**(code **)(param_1[10] + 4))(param_1 + 10,local_8); + return param_1; +} + + + +/* @0043fe1b file=? name=FUN_0043fe1b */ + +void __cdecl FUN_0043fe1b(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004ed840; + FUN_0043accb(param_1 + 10,2); + FUN_0043ff08(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0043fe55 file=? name=FUN_0043fe55 */ + +void __cdecl FUN_0043fe55(int *param_1,int param_2) + +{ + uint *puVar1; + uint *local_8; + + FUN_0043ff73(param_1,param_2); + puVar1 = (uint *)FUN_00402298(0x10); + if (puVar1 == (uint *)0x0) { + local_8 = (uint *)0x0; + } + else { + local_8 = FUN_00402460(puVar1,s_audio_component_004ec196); + } + local_8[3] = local_8[3] + 1; + FUN_00417240(param_1,param_2,(int *)&local_8); + puVar1 = local_8 + 3; + *puVar1 = *puVar1 - 1; + if (*puVar1 == 0) { + FUN_004024d8((int *)local_8,3); + } + return; +} + + + +/* @0043fec4 file=? name=FUN_0043fec4 */ + +undefined4 __cdecl FUN_0043fec4(int param_1) + +{ + FUN_00428a2c(param_1); + return 1; +} + + + +/* @0043fed8 file=? name=FUN_0043fed8 */ + +void __cdecl FUN_0043fed8(undefined4 *param_1,undefined4 *param_2) + +{ + if (param_2 == param_1 + 10) { + if (param_1 != (undefined4 *)0x0) { + (**(code **)*param_1)(param_1,3); + return; + } + } + else { + FUN_00417938(); + } + return; +} + + + +/* @0043ff08 file=? name=FUN_0043ff08 */ + +void __cdecl FUN_0043ff08(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004ed820; + FUN_0042864c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0043ff34 file=? name=FUN_0043ff34 */ + +undefined4 * __cdecl FUN_0043ff34(undefined4 *param_1,int *param_2,int param_3) + +{ + undefined1 local_8 [4]; + + FUN_00428678(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004ed820; + (**(code **)(*param_2 + 0x1c))(param_2,local_8,4); + FUN_00440056((int)param_1); + return param_1; +} + + + +/* @0043ff73 file=munga/watcher.hpp name=FUN_0043ff73 */ + +void __cdecl FUN_0043ff73(int *param_1,int param_2) + +{ + char *pcVar1; + int local_8; + + FUN_0042887c(param_1,param_2); + pcVar1 = (char *)FUN_00403ad0(param_2,s_dump_value_004ec1a6); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004ec1b1,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_dump_value_004ec1d6,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004ec1e1,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004ec1e3, + s_d__tesla_bt_munga_watcher_hpp_004ec223,0x108); + } + FUN_00407ae0(pcVar1,&local_8); + (**(code **)(*param_1 + 0x20))(param_1,&local_8,4); + return; +} + + + +/* @0044001b file=? name=FUN_0044001b */ + +void __cdecl FUN_0044001b(int *param_1) + +{ + FUN_00440072(param_1); + return; +} + + + +/* @0044002a file=? name=FUN_0044002a */ + +void __cdecl FUN_0044002a(int *param_1) + +{ + int iVar1; + + iVar1 = FUN_00408d78(param_1 + 8,(int *)param_1[5],0.0001); + if (iVar1 == 0) { + FUN_00440072(param_1); + } + return; +} + + + +/* @00440056 file=? name=FUN_00440056 */ + +void __cdecl FUN_00440056(int param_1) + +{ + *(undefined4 *)(param_1 + 0x20) = **(undefined4 **)(param_1 + 0x14); + *(undefined4 *)(param_1 + 0x24) = (*(undefined4 **)(param_1 + 0x14))[1]; + return; +} + + + +/* @00440072 file=? name=FUN_00440072 */ + +void __cdecl FUN_00440072(int *param_1) + +{ + FUN_00440056((int)param_1); + param_1[6] = 1; + if (param_1[7] != 0) { + (**(code **)(*param_1 + 0x18))(param_1); + } + return; +} + + + +/* @00440097 file=? name=FUN_00440097 */ + +void FUN_00440097(void) + +{ + return; +} + + + +/* @0044009c file=? name=FUN_0044009c */ + +undefined4 * __cdecl FUN_0044009c(undefined4 *param_1,int *param_2,int param_3) + +{ + FUN_0044058e(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004ed7fc; + (**(code **)(*(int *)(param_1[4] + 0x80) + 4))(param_1[4] + 0x80,param_1); + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0xc,4); + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0xd,4); + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0xe,4); + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0xf,4); + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0x10,4); + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0x11,4); + param_1[0x12] = 0; + return param_1; +} + + + +/* @00440147 file=? name=FUN_00440147 */ + +void __cdecl FUN_00440147(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004ed7fc; + FUN_004405df(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00440173 file=munga/audwthr.hpp name=FUN_00440173 */ + +void __cdecl FUN_00440173(int *param_1,int param_2) + +{ + char *pcVar1; + float local_1c; + float local_18; + int local_14; + int local_10; + int local_c; + float local_8; + + FUN_00440619(param_1,param_2); + pcVar1 = (char *)FUN_00403ad0(param_2,s_attribute_value_threshold_004ec241); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004ec25b,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_attribute_value_threshold_004ec280,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004ec29a,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004ec29c, + s_d__tesla_bt_munga_audwthr_hpp_004ec2dc,0x16b); + } + FUN_00407b78(pcVar1,&local_8); + (**(code **)(*param_1 + 0x20))(param_1,&local_8,4); + pcVar1 = (char *)FUN_00403ad0(param_2,s_inverse_trigger_004ec2fa); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004ec30a,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_inverse_trigger_004ec32f,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004ec33f,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004ec341, + s_d__tesla_bt_munga_audwthr_hpp_004ec381,0x16e); + } + FUN_00407ae0(pcVar1,&local_c); + (**(code **)(*param_1 + 0x20))(param_1,&local_c,4); + pcVar1 = (char *)FUN_00403ad0(param_2,s_control_ID_on_004ec39f); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004ec3ad,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_control_ID_on_004ec3d2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004ec3e0,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004ec3e2, + s_d__tesla_bt_munga_audwthr_hpp_004ec422,0x171); + } + FUN_00407ae0(pcVar1,&local_10); + (**(code **)(*param_1 + 0x20))(param_1,&local_10,4); + pcVar1 = (char *)FUN_00403ad0(param_2,s_control_ID_off_004ec440); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004ec44f,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_control_ID_off_004ec474,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004ec483,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004ec485, + s_d__tesla_bt_munga_audwthr_hpp_004ec4c5,0x174); + } + FUN_00407ae0(pcVar1,&local_14); + (**(code **)(*param_1 + 0x20))(param_1,&local_14,4); + pcVar1 = (char *)FUN_00403ad0(param_2,s_control_value_on_004ec4e3); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004ec4f4,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_control_value_on_004ec519,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004ec52a,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004ec52c, + s_d__tesla_bt_munga_audwthr_hpp_004ec56c,0x177); + } + FUN_00407b78(pcVar1,&local_18); + (**(code **)(*param_1 + 0x20))(param_1,&local_18,4); + pcVar1 = (char *)FUN_00403ad0(param_2,s_control_value_off_004ec58a); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004ec59c,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_control_value_off_004ec5c1,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004ec5d3,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004ec5d5, + s_d__tesla_bt_munga_audwthr_hpp_004ec615,0x17a); + } + FUN_00407b78(pcVar1,&local_1c); + (**(code **)(*param_1 + 0x20))(param_1,&local_1c,4); + return; +} + + + +/* @004404b9 file=? name=FUN_004404b9 */ + +void __cdecl FUN_004404b9(int *param_1) + +{ + float fVar1; + int *piVar2; + float10 fVar3; + + fVar3 = (float10)(**(code **)(*param_1 + 0x20))(param_1,param_1 + 8); + fVar1 = (float)fVar3; + if (param_1[0x12] == 0) { + if (((param_1[0xd] == 0) && ((float)param_1[0xc] < fVar1)) || + ((param_1[0xd] != 0 && (fVar1 < (float)param_1[0xc])))) { + piVar2 = (int *)FUN_00417ab4((int)(param_1 + 9)); + (**(code **)(*piVar2 + 0x18))(piVar2,param_1[0xe],param_1[0x10]); + param_1[0x12] = 1; + } + } + else if (((param_1[0xd] == 0) && (fVar1 <= (float)param_1[0xc])) || + ((param_1[0xd] != 0 && ((float)param_1[0xc] <= fVar1)))) { + piVar2 = (int *)FUN_00417ab4((int)(param_1 + 9)); + (**(code **)(*piVar2 + 0x18))(piVar2,param_1[0xf],param_1[0x11]); + param_1[0x12] = 0; + } + return; +} + + + +/* @00440566 file=munga/audwthr.hpp name=FUN_00440566 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 FUN_00440566(void) + +{ + FUN_0040385c(s_AudioTriggerOf__ExtractIntere_004ec633,s_d__tesla_bt_munga_audwthr_hpp_004ec678, + 0x1bc); + return (float10)_DAT_0044058a; +} + + + +/* @0044058e file=? name=FUN_0044058e */ + +undefined4 * __cdecl FUN_0044058e(undefined4 *param_1,int *param_2,int param_3) + +{ + int local_8; + + FUN_004406f8(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004ed7dc; + FUN_0043acac(param_1 + 9,param_1); + FUN_0043afbc(param_2,&local_8); + (**(code **)(param_1[9] + 4))(param_1 + 9,local_8); + return param_1; +} + + + +/* @004405df file=? name=FUN_004405df */ + +void __cdecl FUN_004405df(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004ed7dc; + FUN_0043accb(param_1 + 9,2); + FUN_004406cc(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00440619 file=? name=FUN_00440619 */ + +void __cdecl FUN_00440619(int *param_1,int param_2) + +{ + uint *puVar1; + uint *local_8; + + FUN_00440737(param_1,param_2); + puVar1 = (uint *)FUN_00402298(0x10); + if (puVar1 == (uint *)0x0) { + local_8 = (uint *)0x0; + } + else { + local_8 = FUN_00402460(puVar1,s_audio_component_004ec696); + } + local_8[3] = local_8[3] + 1; + FUN_00417240(param_1,param_2,(int *)&local_8); + puVar1 = local_8 + 3; + *puVar1 = *puVar1 - 1; + if (*puVar1 == 0) { + FUN_004024d8((int *)local_8,3); + } + return; +} + + + +/* @00440688 file=? name=FUN_00440688 */ + +undefined4 __cdecl FUN_00440688(int param_1) + +{ + FUN_00428a2c(param_1); + return 1; +} + + + +/* @0044069c file=? name=FUN_0044069c */ + +void __cdecl FUN_0044069c(undefined4 *param_1,undefined4 *param_2) + +{ + if (param_2 == param_1 + 9) { + if (param_1 != (undefined4 *)0x0) { + (**(code **)*param_1)(param_1,3); + return; + } + } + else { + FUN_00417938(); + } + return; +} + + + +/* @004406cc file=? name=FUN_004406cc */ + +void __cdecl FUN_004406cc(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004ed7bc; + FUN_0042864c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004406f8 file=? name=FUN_004406f8 */ + +undefined4 * __cdecl FUN_004406f8(undefined4 *param_1,int *param_2,int param_3) + +{ + undefined1 local_8 [4]; + + FUN_00428678(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004ed7bc; + (**(code **)(*param_2 + 0x1c))(param_2,local_8,4); + FUN_0044080a((int)param_1); + return param_1; +} + + + +/* @00440737 file=munga/watcher.hpp name=FUN_00440737 */ + +void __cdecl FUN_00440737(int *param_1,int param_2) + +{ + char *pcVar1; + int local_8; + + FUN_0042887c(param_1,param_2); + pcVar1 = (char *)FUN_00403ad0(param_2,s_dump_value_004ec6a6); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004ec6b1,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_dump_value_004ec6d6,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004ec6e1,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004ec6e3, + s_d__tesla_bt_munga_watcher_hpp_004ec723,0x108); + } + FUN_00407ae0(pcVar1,&local_8); + (**(code **)(*param_1 + 0x20))(param_1,&local_8,4); + return; +} + + + +/* @004407df file=? name=FUN_004407df */ + +void __cdecl FUN_004407df(int *param_1) + +{ + FUN_0044081a(param_1); + return; +} + + + +/* @004407ee file=? name=FUN_004407ee */ + +void __cdecl FUN_004407ee(int *param_1) + +{ + if ((float)param_1[8] != *(float *)param_1[5]) { + FUN_0044081a(param_1); + } + return; +} + + + +/* @0044080a file=? name=FUN_0044080a */ + +void __cdecl FUN_0044080a(int param_1) + +{ + *(undefined4 *)(param_1 + 0x20) = **(undefined4 **)(param_1 + 0x14); + return; +} + + + +/* @0044081a file=? name=FUN_0044081a */ + +void __cdecl FUN_0044081a(int *param_1) + +{ + FUN_0044080a((int)param_1); + param_1[6] = 1; + if (param_1[7] != 0) { + (**(code **)(*param_1 + 0x18))(param_1); + } + return; +} + + + +/* @0044083f file=? name=FUN_0044083f */ + +void FUN_0044083f(void) + +{ + return; +} + + + +/* @00440844 file=? name=FUN_00440844 */ + +undefined4 * __cdecl FUN_00440844(undefined4 *param_1,int *param_2,int param_3) + +{ + FUN_0044058e(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004ed79c; + (**(code **)(*(int *)(param_1[4] + 0x80) + 4))(param_1[4] + 0x80,param_1); + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0xe,4); + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0xf,4); + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0xd,4); + param_1[0xc] = param_1[8]; + return param_1; +} + + + +/* @004408bd file=? name=FUN_004408bd */ + +void __cdecl FUN_004408bd(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004ed79c; + FUN_004405df(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004408e9 file=munga/audwthr.hpp name=FUN_004408e9 */ + +void __cdecl FUN_004408e9(int *param_1,int param_2) + +{ + char *pcVar1; + int iVar2; + float *pfVar3; + float local_10; + float local_c; + int local_8; + + FUN_00440619(param_1,param_2); + pcVar1 = (char *)FUN_00403ad0(param_2,s_control_ID_004ec741); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004ec74c,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_control_ID_004ec771,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004ec77c,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004ec77e, + s_d__tesla_bt_munga_audwthr_hpp_004ec7be,0x39d); + } + FUN_00407ae0(pcVar1,&local_8); + (**(code **)(*param_1 + 0x20))(param_1,&local_8,4); + pcVar1 = (char *)FUN_00403ad0(param_2,s_control_value_004ec7dc); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004ec7ea,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_control_value_004ec80f,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004ec81d,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004ec81f, + s_d__tesla_bt_munga_audwthr_hpp_004ec85f,0x3a0); + } + FUN_00407b78(pcVar1,&local_c); + (**(code **)(*param_1 + 0x20))(param_1,&local_c,4); + local_10 = 0.0001; + iVar2 = FUN_00403ad0(param_2,s_delta_trigger_004ec87d); + if (iVar2 != 0) { + pfVar3 = &local_10; + pcVar1 = (char *)FUN_00403ad0(param_2,s_delta_trigger_004ec88b); + FUN_00407b78(pcVar1,pfVar3); + } + (**(code **)(*param_1 + 0x20))(param_1,&local_10,4); + return; +} + + + +/* @00440a60 file=? name=FUN_00440a60 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_00440a60(int param_1) + +{ + float fVar1; + int *piVar2; + + fVar1 = *(float *)(param_1 + 0x20) - *(float *)(param_1 + 0x30); + if (fVar1 <= _DAT_00440ab8) { + fVar1 = -fVar1; + } + if (*(float *)(param_1 + 0x34) <= fVar1) { + *(float *)(param_1 + 0x30) = *(float *)(param_1 + 0x20); + piVar2 = (int *)FUN_00417ab4(param_1 + 0x24); + (**(code **)(*piVar2 + 0x18)) + (piVar2,*(undefined4 *)(param_1 + 0x38),*(undefined4 *)(param_1 + 0x3c)); + } + return; +} + + + +/* @00440abc file=? name=FUN_00440abc */ + +undefined4 * __cdecl FUN_00440abc(undefined4 *param_1,int *param_2,int param_3) + +{ + int iVar1; + + FUN_0044058e(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004ed778; + iVar1 = FUN_00417ab4((int)(param_1 + 9)); + (**(code **)(*(int *)(iVar1 + 0x14) + 4))(iVar1 + 0x14,param_1); + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0xc,4); + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0xd,4); + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0xe,4); + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0xf,4); + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0x10,4); + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0x11,4); + return param_1; +} + + + +/* @00440b61 file=? name=FUN_00440b61 */ + +void __cdecl FUN_00440b61(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004ed778; + FUN_004405df(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00440b8d file=munga/audwthr.hpp name=FUN_00440b8d */ + +void __cdecl FUN_00440b8d(int *param_1,int param_2) + +{ + char *pcVar1; + float local_1c; + float local_18; + float local_14; + int local_10; + float local_c; + float local_8; + + FUN_00440619(param_1,param_2); + pcVar1 = (char *)FUN_00403ad0(param_2,s_attribute_value_boundary1_004ec899); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004ec8b3,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_attribute_value_boundary1_004ec8d8,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004ec8f2,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004ec8f4, + s_d__tesla_bt_munga_audwthr_hpp_004ec934,0x237); + } + FUN_00407b78(pcVar1,&local_8); + (**(code **)(*param_1 + 0x20))(param_1,&local_8,4); + pcVar1 = (char *)FUN_00403ad0(param_2,s_attribute_value_boundary2_004ec952); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004ec96c,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_attribute_value_boundary2_004ec991,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004ec9ab,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004ec9ad, + s_d__tesla_bt_munga_audwthr_hpp_004ec9ed,0x23a); + } + FUN_00407b78(pcVar1,&local_c); + (**(code **)(*param_1 + 0x20))(param_1,&local_c,4); + pcVar1 = (char *)FUN_00403ad0(param_2,s_control_ID_004eca0b); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004eca16,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_control_ID_004eca3b,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004eca46,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004eca48, + s_d__tesla_bt_munga_audwthr_hpp_004eca88,0x23d); + } + FUN_00407ae0(pcVar1,&local_10); + (**(code **)(*param_1 + 0x20))(param_1,&local_10,4); + pcVar1 = (char *)FUN_00403ad0(param_2,s_control_value_boundary1_004ecaa6); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004ecabe,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_control_value_boundary1_004ecae3,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004ecafb,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004ecafd, + s_d__tesla_bt_munga_audwthr_hpp_004ecb3d,0x240); + } + FUN_00407b78(pcVar1,&local_14); + (**(code **)(*param_1 + 0x20))(param_1,&local_14,4); + pcVar1 = (char *)FUN_00403ad0(param_2,s_control_value_boundary2_004ecb5b); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004ecb73,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_control_value_boundary2_004ecb98,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004ecbb0,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004ecbb2, + s_d__tesla_bt_munga_audwthr_hpp_004ecbf2,0x243); + } + FUN_00407b78(pcVar1,&local_18); + (**(code **)(*param_1 + 0x20))(param_1,&local_18,4); + pcVar1 = (char *)FUN_00403ad0(param_2,s_exponent_004ecc10); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004ecc19,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_exponent_004ecc3e,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004ecc47,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004ecc49, + s_d__tesla_bt_munga_audwthr_hpp_004ecc89,0x246); + } + FUN_00407b78(pcVar1,&local_1c); + (**(code **)(*param_1 + 0x20))(param_1,&local_1c,4); + return; +} + + + +/* @00440ed3 file=? name=FUN_00440ed3 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_00440ed3(int *param_1) + +{ + float fVar1; + float fVar2; + float fVar3; + int *piVar4; + float10 fVar5; + + fVar5 = (float10)(**(code **)(*param_1 + 0x20))(param_1); + fVar1 = (float)fVar5; + if ((float)param_1[0xd] <= (float)param_1[0xc]) { + fVar2 = (float)param_1[0xd]; + } + else { + fVar2 = (float)param_1[0xc]; + } + if ((float)param_1[0xc] <= (float)param_1[0xd]) { + fVar3 = (float)param_1[0xd]; + } + else { + fVar3 = (float)param_1[0xc]; + } + if ((fVar2 <= fVar1) && (fVar2 = fVar1, fVar3 < fVar1)) { + fVar2 = fVar3; + } + if ((float)param_1[0x11] != _DAT_00440faf) { + FUN_004dce94((double)((fVar2 - (float)param_1[0xc]) / + ((float)param_1[0xd] - (float)param_1[0xc])), + SUB84((double)(float)param_1[0x11],0), + (uint)((ulonglong)(double)(float)param_1[0x11] >> 0x20)); + } + piVar4 = (int *)FUN_00417ab4((int)(param_1 + 9)); + (**(code **)(*piVar4 + 0x18))(); + return; +} + + + +/* @00440fdb file=? name=FUN_00440fdb */ + +undefined4 * __cdecl FUN_00440fdb(undefined4 *param_1,int *param_2,int param_3) + +{ + FUN_00441287(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004ed754; + (**(code **)(*(int *)(param_1[4] + 0x80) + 4))(param_1[4] + 0x80,param_1); + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0xc,4); + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0xd,4); + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0xe,4); + return param_1; +} + + + +/* @0044104e file=? name=FUN_0044104e */ + +void __cdecl FUN_0044104e(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004ed754; + FUN_004412d8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0044107a file=munga/audwthr.hpp name=FUN_0044107a */ + +void __cdecl FUN_0044107a(int *param_1,int param_2) + +{ + char *pcVar1; + float local_10; + int local_c; + int local_8; + + FUN_00441312(param_1,param_2); + pcVar1 = (char *)FUN_00403ad0(param_2,s_attribute_match_value_004ecd08); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004ecd1e,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_attribute_match_value_004ecd43,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004ecd59,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004ecd5b, + s_d__tesla_bt_munga_audwthr_hpp_004ecd9b,0x30c); + } + FUN_00407ae0(pcVar1,&local_8); + (**(code **)(*param_1 + 0x20))(param_1,&local_8,4); + pcVar1 = (char *)FUN_00403ad0(param_2,s_control_ID_004ecdb9); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004ecdc4,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_control_ID_004ecde9,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004ecdf4,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004ecdf6, + s_d__tesla_bt_munga_audwthr_hpp_004ece36,0x30f); + } + FUN_00407ae0(pcVar1,&local_c); + (**(code **)(*param_1 + 0x20))(param_1,&local_c,4); + pcVar1 = (char *)FUN_00403ad0(param_2,s_control_value_004ece54); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004ece62,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_control_value_004ece87,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004ece95,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004ece97, + s_d__tesla_bt_munga_audwthr_hpp_004eced7,0x312); + } + FUN_00407b78(pcVar1,&local_10); + (**(code **)(*param_1 + 0x20))(param_1,&local_10,4); + return; +} + + + +/* @00441231 file=? name=FUN_00441231 */ + +void __cdecl FUN_00441231(int *param_1) + +{ + int iVar1; + int *piVar2; + + iVar1 = (**(code **)(*param_1 + 0x20))(param_1,param_1 + 8); + if (iVar1 == param_1[0xc]) { + piVar2 = (int *)FUN_00417ab4((int)(param_1 + 9)); + (**(code **)(*piVar2 + 0x18))(piVar2,param_1[0xd],param_1[0xe]); + } + return; +} + + + +/* @00441269 file=munga/audwthr.hpp name=FUN_00441269 */ + +undefined4 FUN_00441269(void) + +{ + FUN_0040385c(s_AudioMatchOf__ExtractInterest_004ecef5,s_d__tesla_bt_munga_audwthr_hpp_004ecf38, + 0x336); + return 0; +} + + + +/* @00441287 file=? name=FUN_00441287 */ + +undefined4 * __cdecl FUN_00441287(undefined4 *param_1,int *param_2,int param_3) + +{ + int local_8; + + FUN_004413f1(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004ed734; + FUN_0043acac(param_1 + 9,param_1); + FUN_0043afbc(param_2,&local_8); + (**(code **)(param_1[9] + 4))(param_1 + 9,local_8); + return param_1; +} + + + +/* @004412d8 file=? name=FUN_004412d8 */ + +void __cdecl FUN_004412d8(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004ed734; + FUN_0043accb(param_1 + 9,2); + FUN_004413c5(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00441312 file=? name=FUN_00441312 */ + +void __cdecl FUN_00441312(int *param_1,int param_2) + +{ + uint *puVar1; + uint *local_8; + + FUN_00441430(param_1,param_2); + puVar1 = (uint *)FUN_00402298(0x10); + if (puVar1 == (uint *)0x0) { + local_8 = (uint *)0x0; + } + else { + local_8 = FUN_00402460(puVar1,s_audio_component_004ecf56); + } + local_8[3] = local_8[3] + 1; + FUN_00417240(param_1,param_2,(int *)&local_8); + puVar1 = local_8 + 3; + *puVar1 = *puVar1 - 1; + if (*puVar1 == 0) { + FUN_004024d8((int *)local_8,3); + } + return; +} + + + +/* @00441381 file=? name=FUN_00441381 */ + +undefined4 __cdecl FUN_00441381(int param_1) + +{ + FUN_00428a2c(param_1); + return 1; +} + + + +/* @00441395 file=? name=FUN_00441395 */ + +void __cdecl FUN_00441395(undefined4 *param_1,undefined4 *param_2) + +{ + if (param_2 == param_1 + 9) { + if (param_1 != (undefined4 *)0x0) { + (**(code **)*param_1)(param_1,3); + return; + } + } + else { + FUN_00417938(); + } + return; +} + + + +/* @004413c5 file=? name=FUN_004413c5 */ + +void __cdecl FUN_004413c5(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004ed714; + FUN_0042864c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004413f1 file=? name=FUN_004413f1 */ + +undefined4 * __cdecl FUN_004413f1(undefined4 *param_1,int *param_2,int param_3) + +{ + undefined1 local_8 [4]; + + FUN_00428678(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004ed714; + (**(code **)(*param_2 + 0x1c))(param_2,local_8,4); + FUN_00441502((int)param_1); + return param_1; +} + + + +/* @00441430 file=munga/watcher.hpp name=FUN_00441430 */ + +void __cdecl FUN_00441430(int *param_1,int param_2) + +{ + char *pcVar1; + int local_8; + + FUN_0042887c(param_1,param_2); + pcVar1 = (char *)FUN_00403ad0(param_2,s_dump_value_004ecf66); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004ecf71,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_dump_value_004ecf96,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004ecfa1,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004ecfa3, + s_d__tesla_bt_munga_watcher_hpp_004ecfe3,0x108); + } + FUN_00407ae0(pcVar1,&local_8); + (**(code **)(*param_1 + 0x20))(param_1,&local_8,4); + return; +} + + + +/* @004414d8 file=? name=FUN_004414d8 */ + +void __cdecl FUN_004414d8(int *param_1) + +{ + FUN_00441512(param_1); + return; +} + + + +/* @004414e7 file=? name=FUN_004414e7 */ + +void __cdecl FUN_004414e7(int *param_1) + +{ + if (*(int *)param_1[5] != param_1[8]) { + FUN_00441512(param_1); + } + return; +} + + + +/* @00441502 file=? name=FUN_00441502 */ + +void __cdecl FUN_00441502(int param_1) + +{ + *(undefined4 *)(param_1 + 0x20) = **(undefined4 **)(param_1 + 0x14); + return; +} + + + +/* @00441512 file=? name=FUN_00441512 */ + +void __cdecl FUN_00441512(int *param_1) + +{ + FUN_00441502((int)param_1); + param_1[6] = 1; + if (param_1[7] != 0) { + (**(code **)(*param_1 + 0x18))(param_1); + } + return; +} + + + +/* @00441537 file=? name=FUN_00441537 */ + +void FUN_00441537(void) + +{ + return; +} + + + +/* @0044153c file=? name=FUN_0044153c */ + +undefined4 * __cdecl FUN_0044153c(undefined4 *param_1,int *param_2,int param_3) + +{ + FUN_00441287(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004ed6f4; + (**(code **)(*(int *)(param_1[4] + 0x80) + 4))(param_1[4] + 0x80,param_1); + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0xe,4); + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0xf,4); + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0xd,4); + param_1[0xc] = param_1[8]; + return param_1; +} + + + +/* @004415b5 file=? name=FUN_004415b5 */ + +void __cdecl FUN_004415b5(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004ed6f4; + FUN_004412d8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004415e1 file=munga/audwthr.hpp name=FUN_004415e1 */ + +void __cdecl FUN_004415e1(int *param_1,int param_2) + +{ + char *pcVar1; + int iVar2; + int *piVar3; + int local_10; + float local_c; + int local_8; + + FUN_00441312(param_1,param_2); + pcVar1 = (char *)FUN_00403ad0(param_2,s_control_ID_004ed001); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004ed00c,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_control_ID_004ed031,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004ed03c,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004ed03e, + s_d__tesla_bt_munga_audwthr_hpp_004ed07e,0x39d); + } + FUN_00407ae0(pcVar1,&local_8); + (**(code **)(*param_1 + 0x20))(param_1,&local_8,4); + pcVar1 = (char *)FUN_00403ad0(param_2,s_control_value_004ed09c); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004ed0aa,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_control_value_004ed0cf,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004ed0dd,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004ed0df, + s_d__tesla_bt_munga_audwthr_hpp_004ed11f,0x3a0); + } + FUN_00407b78(pcVar1,&local_c); + (**(code **)(*param_1 + 0x20))(param_1,&local_c,4); + local_10 = 0; + iVar2 = FUN_00403ad0(param_2,s_delta_trigger_004ed13d); + if (iVar2 != 0) { + piVar3 = &local_10; + pcVar1 = (char *)FUN_00403ad0(param_2,s_delta_trigger_004ed14b); + FUN_00407ae0(pcVar1,piVar3); + } + (**(code **)(*param_1 + 0x20))(param_1,&local_10,4); + return; +} + + + +/* @00441756 file=? name=FUN_00441756 */ + +void __cdecl FUN_00441756(int param_1) + +{ + int iVar1; + int *piVar2; + + iVar1 = *(int *)(param_1 + 0x20) - *(int *)(param_1 + 0x30); + if (iVar1 < 1) { + iVar1 = -iVar1; + } + if (*(int *)(param_1 + 0x34) <= iVar1) { + *(int *)(param_1 + 0x30) = *(int *)(param_1 + 0x20); + piVar2 = (int *)FUN_00417ab4(param_1 + 0x24); + (**(code **)(*piVar2 + 0x18)) + (piVar2,*(undefined4 *)(param_1 + 0x38),*(undefined4 *)(param_1 + 0x3c)); + } + return; +} + + + +/* @0044179a file=? name=FUN_0044179a */ + +undefined4 * __cdecl FUN_0044179a(undefined4 *param_1,int *param_2,int param_3) + +{ + FUN_00441287(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004ed6d0; + (**(code **)(*(int *)(param_1[4] + 0x80) + 4))(param_1[4] + 0x80,param_1); + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0xc,4); + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0xd,4); + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0xe,4); + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0xf,4); + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0x10,4); + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0x11,4); + param_1[0x12] = 0; + return param_1; +} + + + +/* @00441845 file=? name=FUN_00441845 */ + +void __cdecl FUN_00441845(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004ed6d0; + FUN_004412d8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00441871 file=munga/audwthr.hpp name=FUN_00441871 */ + +void __cdecl FUN_00441871(int *param_1,int param_2) + +{ + char *pcVar1; + float local_1c; + float local_18; + int local_14; + int local_10; + int local_c; + float local_8; + + FUN_00441312(param_1,param_2); + pcVar1 = (char *)FUN_00403ad0(param_2,s_attribute_value_threshold_004ed159); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004ed173,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_attribute_value_threshold_004ed198,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004ed1b2,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004ed1b4, + s_d__tesla_bt_munga_audwthr_hpp_004ed1f4,0x16b); + } + FUN_00407b78(pcVar1,&local_8); + (**(code **)(*param_1 + 0x20))(param_1,&local_8,4); + pcVar1 = (char *)FUN_00403ad0(param_2,s_inverse_trigger_004ed212); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004ed222,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_inverse_trigger_004ed247,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004ed257,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004ed259, + s_d__tesla_bt_munga_audwthr_hpp_004ed299,0x16e); + } + FUN_00407ae0(pcVar1,&local_c); + (**(code **)(*param_1 + 0x20))(param_1,&local_c,4); + pcVar1 = (char *)FUN_00403ad0(param_2,s_control_ID_on_004ed2b7); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004ed2c5,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_control_ID_on_004ed2ea,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004ed2f8,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004ed2fa, + s_d__tesla_bt_munga_audwthr_hpp_004ed33a,0x171); + } + FUN_00407ae0(pcVar1,&local_10); + (**(code **)(*param_1 + 0x20))(param_1,&local_10,4); + pcVar1 = (char *)FUN_00403ad0(param_2,s_control_ID_off_004ed358); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004ed367,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_control_ID_off_004ed38c,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004ed39b,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004ed39d, + s_d__tesla_bt_munga_audwthr_hpp_004ed3dd,0x174); + } + FUN_00407ae0(pcVar1,&local_14); + (**(code **)(*param_1 + 0x20))(param_1,&local_14,4); + pcVar1 = (char *)FUN_00403ad0(param_2,s_control_value_on_004ed3fb); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004ed40c,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_control_value_on_004ed431,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004ed442,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004ed444, + s_d__tesla_bt_munga_audwthr_hpp_004ed484,0x177); + } + FUN_00407b78(pcVar1,&local_18); + (**(code **)(*param_1 + 0x20))(param_1,&local_18,4); + pcVar1 = (char *)FUN_00403ad0(param_2,s_control_value_off_004ed4a2); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004ed4b4,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_control_value_off_004ed4d9,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004ed4eb,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004ed4ed, + s_d__tesla_bt_munga_audwthr_hpp_004ed52d,0x17a); + } + FUN_00407b78(pcVar1,&local_1c); + (**(code **)(*param_1 + 0x20))(param_1,&local_1c,4); + return; +} + + + +/* @00441bb7 file=? name=FUN_00441bb7 */ + +void __cdecl FUN_00441bb7(int *param_1) + +{ + float fVar1; + int *piVar2; + float10 fVar3; + + fVar3 = (float10)(**(code **)(*param_1 + 0x20))(param_1,param_1 + 8); + fVar1 = (float)fVar3; + if (param_1[0x12] == 0) { + if (((param_1[0xd] == 0) && ((float)param_1[0xc] < fVar1)) || + ((param_1[0xd] != 0 && (fVar1 < (float)param_1[0xc])))) { + piVar2 = (int *)FUN_00417ab4((int)(param_1 + 9)); + (**(code **)(*piVar2 + 0x18))(piVar2,param_1[0xe],param_1[0x10]); + param_1[0x12] = 1; + } + } + else if (((param_1[0xd] == 0) && (fVar1 <= (float)param_1[0xc])) || + ((param_1[0xd] != 0 && ((float)param_1[0xc] <= fVar1)))) { + piVar2 = (int *)FUN_00417ab4((int)(param_1 + 9)); + (**(code **)(*piVar2 + 0x18))(piVar2,param_1[0xf],param_1[0x11]); + param_1[0x12] = 0; + } + return; +} + + + +/* @00441c64 file=munga/audwthr.hpp name=FUN_00441c64 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 FUN_00441c64(void) + +{ + FUN_0040385c(s_AudioTriggerOf__ExtractIntere_004ed54b,s_d__tesla_bt_munga_audwthr_hpp_004ed590, + 0x1bc); + return (float10)_DAT_00441c88; +} + + + +/* @00441c8c file=? name=FUN_00441c8c */ + +undefined4 * __cdecl FUN_00441c8c(undefined4 *param_1,int *param_2,int param_3) + +{ + int local_8; + + FUN_00441e04(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004ed6b0; + FUN_0043acac(param_1 + 0x1d,param_1); + FUN_0043afbc(param_2,&local_8); + (**(code **)(param_1[0x1d] + 4))(param_1 + 0x1d,local_8); + return param_1; +} + + + +/* @00441cdd file=? name=FUN_00441cdd */ + +void __cdecl FUN_00441cdd(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004ed6b0; + FUN_0043accb(param_1 + 0x1d,2); + FUN_00441dca(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00441d17 file=? name=FUN_00441d17 */ + +void __cdecl FUN_00441d17(int *param_1,int param_2) + +{ + uint *puVar1; + uint *local_8; + + FUN_00441e4d(param_1,param_2); + puVar1 = (uint *)FUN_00402298(0x10); + if (puVar1 == (uint *)0x0) { + local_8 = (uint *)0x0; + } + else { + local_8 = FUN_00402460(puVar1,s_audio_component_004ed5ae); + } + local_8[3] = local_8[3] + 1; + FUN_00417240(param_1,param_2,(int *)&local_8); + puVar1 = local_8 + 3; + *puVar1 = *puVar1 - 1; + if (*puVar1 == 0) { + FUN_004024d8((int *)local_8,3); + } + return; +} + + + +/* @00441d86 file=? name=FUN_00441d86 */ + +undefined4 __cdecl FUN_00441d86(int param_1) + +{ + FUN_00428a2c(param_1); + return 1; +} + + + +/* @00441d9a file=? name=FUN_00441d9a */ + +void __cdecl FUN_00441d9a(undefined4 *param_1,undefined4 *param_2) + +{ + if (param_2 == param_1 + 0x1d) { + if (param_1 != (undefined4 *)0x0) { + (**(code **)*param_1)(param_1,3); + return; + } + } + else { + FUN_00417938(); + } + return; +} + + + +/* @00441dca file=? name=FUN_00441dca */ + +void __cdecl FUN_00441dca(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004ed690; + FUN_0041baa4(param_1 + 8,2); + FUN_0042864c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00441e04 file=? name=FUN_00441e04 */ + +undefined4 * __cdecl FUN_00441e04(undefined4 *param_1,int *param_2,int param_3) + +{ + undefined1 local_8 [4]; + + FUN_00428678(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004ed690; + FUN_0041b994(param_1 + 8); + (**(code **)(*param_2 + 0x1c))(param_2,local_8,4); + FUN_00441f29((int)param_1); + return param_1; +} + + + +/* @00441e4d file=munga/watcher.hpp name=FUN_00441e4d */ + +void __cdecl FUN_00441e4d(int *param_1,int param_2) + +{ + char *pcVar1; + int local_8; + + FUN_0042887c(param_1,param_2); + pcVar1 = (char *)FUN_00403ad0(param_2,s_dump_value_004ed5be); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004ed5c9,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_dump_value_004ed5ee,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004ed5f9,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004ed5fb, + s_d__tesla_bt_munga_watcher_hpp_004ed63b,0x108); + } + FUN_00407ae0(pcVar1,&local_8); + (**(code **)(*param_1 + 0x20))(param_1,&local_8,4); + return; +} + + + +/* @00441ef5 file=? name=FUN_00441ef5 */ + +void __cdecl FUN_00441ef5(int *param_1) + +{ + FUN_00441f41(param_1); + return; +} + + + +/* @00441f04 file=? name=FUN_00441f04 */ + +void __cdecl FUN_00441f04(int *param_1) + +{ + int iVar1; + + iVar1 = FUN_0041bba8((int)(param_1 + 8),param_1[5]); + if (iVar1 == 0) { + FUN_00441f41(param_1); + } + return; +} + + + +/* @00441f29 file=? name=FUN_00441f29 */ + +void __cdecl FUN_00441f29(int param_1) + +{ + FUN_0041bb88(param_1 + 0x20,*(int *)(param_1 + 0x14)); + return; +} + + + +/* @00441f41 file=? name=FUN_00441f41 */ + +void __cdecl FUN_00441f41(int *param_1) + +{ + FUN_00441f29((int)param_1); + param_1[6] = 1; + if (param_1[7] != 0) { + (**(code **)(*param_1 + 0x18))(param_1); + } + return; +} + + + +/* @00441f66 file=? name=FUN_00441f66 */ + +void FUN_00441f66(void) + +{ + return; +} + + + +/* @00441f6c file=? name=FUN_00441f6c */ + +undefined4 * __cdecl FUN_00441f6c(undefined4 *param_1,undefined4 param_2) + +{ + FUN_00435d30(param_1,param_2,DAT_004e823c,1,1,1,0x1e,&DAT_004e82f8); + *param_1 = &PTR_FUN_004edb74; + FUN_0044242c(param_1 + 0x14,0,0); + param_1[0x13] = 0; + return param_1; +} + + + +/* @00441fb4 file=? name=FUN_00441fb4 */ + +void __cdecl FUN_00441fb4(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004edb74; + FUN_00436b9c((int *)param_1[0x13],3); + FUN_0044244f(param_1 + 0x14,2); + FUN_00435df8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00441ffc file=? name=FUN_00441ffc */ + +void __cdecl FUN_00441ffc(int *param_1) + +{ + int iVar1; + + iVar1 = (**(code **)(*param_1 + 0x4c))(param_1); + param_1[0x13] = iVar1; + return; +} + + + +/* @00442010 file=? name=FUN_00442010 */ + +undefined4 __cdecl FUN_00442010(int param_1) + +{ + FUN_00435e48(param_1); + return 1; +} + + + +/* @0044202c file=? name=FUN_0044202c */ + +void __cdecl FUN_0044202c(int *param_1,int param_2) + +{ + (*(code *)**(undefined4 **)param_1[0x13])((undefined4 *)param_1[0x13],param_2); + FUN_00435e70(param_1,param_2); + return; +} + + + +/* @00442054 file=? name=FUN_00442054 */ + +void __cdecl FUN_00442054(int param_1) + +{ + (**(code **)(**(int **)(param_1 + 0x4c) + 8))(*(int **)(param_1 + 0x4c)); + return; +} + + + +/* @00442068 file=? name=FUN_00442068 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_00442068(int param_1,int *param_2,uint *param_3) + +{ + bool bVar1; + undefined3 extraout_var; + undefined4 *puVar2; + int iVar3; + float10 fVar4; + float local_c; + float local_8; + + bVar1 = FUN_00438348(param_2[9],*(int *)(param_1 + 0x4c)); + if (CONCAT31(extraout_var,bVar1) == 0) { + iVar3 = param_2[0x1b]; + fVar4 = (float10)(**(code **)(*param_2 + 0x1c))(param_2); + local_8 = (float)fVar4; + } + else { + if (*(int *)(*(int *)(param_2[10] + 0xc) + 0x10) == 0) { + return; + } + iVar3 = param_2[0x1b]; + local_8 = 0.0; + } + if (((param_3[3] != 1) || (*(int *)(*(int *)(param_2[10] + 0xc) + 0x10) != 0)) || + (_DAT_004e8638 <= local_8)) { + local_c = (_DAT_00442130 - (float)iVar3) - local_8; + puVar2 = FUN_00402f74(0x4edaf0); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_00442330(puVar2,param_2,param_3); + } + (**(code **)(*(int *)(param_1 + 0x50) + 8))(param_1 + 0x50,puVar2,&local_c); + } + return; +} + + + +/* @00442134 file=? name=FUN_00442134 */ + +undefined4 __cdecl FUN_00442134(int param_1) + +{ + undefined4 *puVar1; + int iVar2; + int iVar3; + undefined4 uVar4; + int local_18 [5]; + + FUN_00436f9c(local_18,param_1 + 0x50); + puVar1 = (undefined4 *)(**(code **)(local_18[0] + 0x30))(local_18); + if (puVar1 == (undefined4 *)0x0) { + uVar4 = 0; + FUN_00436ff9(local_18,2); + } + else { + iVar3 = puVar1[3]; + iVar2 = FUN_00417ab4((int)(puVar1 + 4)); + FUN_00419bbc(iVar2,iVar3); + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + uVar4 = 1; + FUN_00436ff9(local_18,2); + } + return uVar4; +} + + + +/* @004421b4 file=? name=FUN_004421b4 */ + +void __cdecl FUN_004421b4(int param_1,int param_2) + +{ + int iVar1; + int iVar2; + undefined4 *puVar3; + int local_18 [5]; + + FUN_00436f9c(local_18,param_1 + 0x50); + while( true ) { + puVar3 = (undefined4 *)(**(code **)(local_18[0] + 0x28))(local_18); + if (puVar3 == (undefined4 *)0x0) break; + iVar1 = FUN_00417ab4((int)(puVar3 + 4)); + if (param_2 == iVar1) { + if (*(int *)(puVar3[3] + 0xc) == 2) { + iVar1 = puVar3[3]; + iVar2 = FUN_00417ab4((int)(puVar3 + 4)); + FUN_00419bbc(iVar2,iVar1); + if (puVar3 != (undefined4 *)0x0) { + (**(code **)*puVar3)(puVar3,3); + } + } + else if (puVar3 != (undefined4 *)0x0) { + (**(code **)*puVar3)(puVar3,3); + } + } + } + FUN_00436ff9(local_18,2); + return; +} + + + +/* @00442248 file=? name=FUN_00442248 */ + +undefined4 * FUN_00442248(void) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00402298(0x50); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_00436b1c(puVar1); + } + return puVar1; +} + + + +/* @00442268 file=? name=FUN_00442268 */ + +void __cdecl FUN_00442268(int param_1,int *param_2,int param_3,int param_4) + +{ + int *piVar1; + undefined4 *puVar2; + undefined4 uVar3; + int iVar4; + undefined4 local_6c [26]; + + piVar1 = (int *)FUN_00407064(*(int *)(DAT_004efc94 + 0x68),param_4,3); + if (piVar1 != (int *)0x0) { + puVar2 = (undefined4 *)FUN_00407064(*(int *)(DAT_004efc94 + 0x68),*piVar1,1); + if (puVar2 != (undefined4 *)0x0) { + iVar4 = puVar2[1]; + puVar2[1] = puVar2[1] + 1; + if (iVar4 == 0) { + FUN_00406cd0((int)puVar2); + } + iVar4 = piVar1[1]; + piVar1[1] = piVar1[1] + 1; + if (iVar4 == 0) { + FUN_00406cd0((int)piVar1); + } + uVar3 = FUN_00417ab4(param_1 + 0x40); + iVar4 = (**(code **)(*param_2 + 0x28))(param_2,uVar3); + uVar3 = 4; + if (iVar4 != 0) { + uVar3 = 3; + } + iVar4 = FUN_0041dbd0(param_3,uVar3); + FUN_00437268(local_6c,*puVar2,(int)param_2,iVar4); + FUN_004371c8((int)local_6c); + puVar2[1] = puVar2[1] + -1; + piVar1[1] = piVar1[1] + -1; + } + } + return; +} + + + +/* @00442330 file=? name=FUN_00442330 */ + +undefined4 * __cdecl FUN_00442330(undefined4 *param_1,undefined4 param_2,uint *param_3) + +{ + undefined4 uVar1; + + FUN_004178cc(param_1,2); + *param_1 = &PTR_FUN_004edb68; + FUN_004425fa(param_1 + 4,param_1); + uVar1 = FUN_004022b0(*param_3 + 3 & 0xfffffffc); + param_1[3] = uVar1; + FUN_004d4918((undefined4 *)param_1[3],param_3,*param_3); + (**(code **)(param_1[4] + 4))(param_1 + 4,param_2); + return param_1; +} + + + +/* @00442398 file=? name=FUN_00442398 */ + +void __cdecl FUN_00442398(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004edb68; + FUN_004022d0((int *)param_1[3]); + FUN_00442619(param_1 + 4,2); + FUN_0041790c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_00402f98(0x4edaf0,param_1); + } + } + return; +} + + + +/* @004423e8 file=? name=FUN_004423e8 */ + +void __cdecl FUN_004423e8(undefined4 *param_1) + +{ + if (param_1 != (undefined4 *)0x0) { + (**(code **)*param_1)(param_1,3); + } + return; +} + + + +/* @0044242c file=? name=FUN_0044242c */ + +undefined4 * __cdecl FUN_0044242c(undefined4 *param_1,undefined4 param_2,undefined4 param_3) + +{ + FUN_004186ac(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004edb4c; + return param_1; +} + + + +/* @0044244f file=? name=FUN_0044244f */ + +void __cdecl FUN_0044244f(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004edb4c; + FUN_004186dc(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004425af(param_1); + } + } + return; +} + + + +/* @0044247b file=? name=FUN_0044247b */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl FUN_0044247b(undefined4 param_1,int param_2,int param_3) + +{ + undefined4 uVar1; + float10 fVar2; + + fVar2 = FUN_004dcd00((double)(*(float *)(param_2 + 0x1c) - *(float *)(param_3 + 0x1c))); + if ((float10)_DAT_004424eb < fVar2) { + if (*(float *)(param_2 + 0x1c) <= *(float *)(param_3 + 0x1c)) { + uVar1 = 0xffffffff; + } + else { + uVar1 = 1; + } + } + else { + uVar1 = 0; + } + return uVar1; +} + + + +/* @004425af file=? name=FUN_004425af */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004425af(undefined4 *param_1) + +{ + FUN_00402f98((int)DAT_004edb3c,param_1); + _DAT_004edb40 = _DAT_004edb40 + -1; + if (_DAT_004edb40 == 0) { + if (DAT_004edb3c != (int *)0x0) { + FUN_00402c28(DAT_004edb3c,0); + FUN_004022d0(DAT_004edb3c); + } + DAT_004edb3c = (int *)0x0; + } + return; +} + + + +/* @004425fa file=? name=FUN_004425fa */ + +undefined4 * __cdecl FUN_004425fa(undefined4 *param_1,undefined4 param_2) + +{ + FUN_004179d4(param_1,param_2); + *param_1 = &PTR_FUN_004edb44; + return param_1; +} + + + +/* @00442619 file=? name=FUN_00442619 */ + +void __cdecl FUN_00442619(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004edb44; + FUN_004179f8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00442645 file=? name=FUN_00442645 */ + +undefined4 * __cdecl FUN_00442645(undefined4 param_1,int param_2,undefined4 *param_3) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_004426e5(); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_00442684(puVar1,param_1,param_2,param_3); + } + return puVar1; +} + + + +/* @00442675 file=? name=FUN_00442675 */ + +void __cdecl FUN_00442675(int param_1) + +{ + FUN_00442134(param_1); + return; +} + + + +/* @00442684 file=? name=FUN_00442684 */ + +undefined4 * __cdecl +FUN_00442684(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 *param_4) + +{ + FUN_004185bc(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004edbcc; + param_1[7] = 0; + param_1[7] = *param_4; + return param_1; +} + + + +/* @004426b9 file=? name=FUN_004426b9 */ + +void __cdecl FUN_004426b9(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004edbcc; + FUN_004185ec(param_1,0); + if ((param_2 & 1) != 0) { + FUN_00442735(param_1); + } + } + return; +} + + + +/* @004426e5 file=? name=FUN_004426e5 */ + +void FUN_004426e5(void) + +{ + int iVar1; + undefined4 *puVar2; + + iVar1 = DAT_004edbc8; + DAT_004edbc8 = DAT_004edbc8 + 1; + puVar2 = DAT_004edbc4; + if ((iVar1 == 0) && (puVar2 = (undefined4 *)FUN_00402298(0x28), puVar2 != (undefined4 *)0x0)) { + FUN_00402b98(puVar2,0x20,100,100,s_VChainLinkOf_004edb2d); + } + DAT_004edbc4 = puVar2; + FUN_00402f74((int)DAT_004edbc4); + return; +} + + + +/* @00442735 file=? name=FUN_00442735 */ + +void __cdecl FUN_00442735(undefined4 *param_1) + +{ + FUN_00402f98((int)DAT_004edbc4,param_1); + DAT_004edbc8 = DAT_004edbc8 + -1; + if (DAT_004edbc8 == 0) { + if (DAT_004edbc4 != (int *)0x0) { + FUN_00402c28(DAT_004edbc4,0); + FUN_004022d0(DAT_004edbc4); + } + DAT_004edbc4 = (int *)0x0; + } + return; +} + + + +/* @00442780 file=? name=FUN_00442780 */ + +undefined4 * __cdecl FUN_00442780(undefined4 *param_1,char *param_2,undefined4 param_3) + +{ + char cVar1; + uint uVar2; + uint uVar3; + char *pcVar4; + char *pcVar5; + + FUN_00415e90(param_1,0x40); + *param_1 = &PTR_FUN_004edc6c; + uVar2 = 0xffffffff; + do { + pcVar4 = param_2; + if (uVar2 == 0) break; + uVar2 = uVar2 - 1; + pcVar4 = param_2 + 1; + cVar1 = *param_2; + param_2 = pcVar4; + } while (cVar1 != '\0'); + uVar2 = ~uVar2; + pcVar4 = pcVar4 + -uVar2; + pcVar5 = (char *)(param_1 + 3); + for (uVar3 = uVar2 >> 2; uVar3 != 0; uVar3 = uVar3 - 1) { + *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4; + pcVar4 = pcVar4 + 4; + pcVar5 = pcVar5 + 4; + } + for (uVar2 = uVar2 & 3; uVar2 != 0; uVar2 = uVar2 - 1) { + *pcVar5 = *pcVar4; + pcVar4 = pcVar4 + 1; + pcVar5 = pcVar5 + 1; + } + param_1[0xb] = 0; + param_1[0xc] = 1; + param_1[0xd] = param_3; + return param_1; +} + + + +/* @004427dc file=? name=FUN_004427dc */ + +undefined4 * __cdecl FUN_004427dc(undefined4 *param_1,undefined4 param_2,undefined4 param_3) + +{ + FUN_00415e90(param_1,0x40); + *param_1 = &PTR_FUN_004edc6c; + *(undefined1 *)(param_1 + 3) = 0; + param_1[0xb] = param_2; + param_1[0xc] = 1; + param_1[0xd] = param_3; + return param_1; +} + + + +/* @00442810 file=? name=FUN_00442810 */ + +void __cdecl FUN_00442810(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004edc6c; + FUN_00415ed8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + diff --git a/reference/decomp/archive_2025export/all/part_006.c b/reference/decomp/archive_2025export/all/part_006.c new file mode 100644 index 0000000..82e1812 --- /dev/null +++ b/reference/decomp/archive_2025export/all/part_006.c @@ -0,0 +1,9938 @@ +/* @0044283c file=? name=FUN_0044283c */ + +undefined4 FUN_0044283c(void) + +{ + return 1; +} + + + +/* @00442848 file=? name=FUN_00442848 */ + +undefined4 * __cdecl FUN_00442848(undefined4 *param_1) + +{ + FUN_004178cc(param_1,0x41); + *param_1 = &PTR_FUN_004edc60; + FUN_00442a46(param_1 + 3,param_1); + return param_1; +} + + + +/* @00442874 file=? name=FUN_00442874 */ + +void __cdecl FUN_00442874(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004edc60; + FUN_00442a65(param_1 + 3,2); + FUN_0041790c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004428b0 file=? name=FUN_004428b0 */ + +undefined4 FUN_004428b0(void) + +{ + return 1; +} + + + +/* @004428bc file=? name=FUN_004428bc */ + +int __cdecl FUN_004428bc(int param_1,char *param_2) + +{ + int iVar1; + int iVar2; + int local_10 [3]; + + FUN_0044316d(local_10,param_1 + 0xc); + do { + iVar2 = (**(code **)(local_10[0] + 0x28))(local_10); + if (iVar2 == 0) { + iVar2 = 0; + FUN_004431ab(local_10,2); + return iVar2; + } + iVar1 = FUN_004d4b58((char *)(iVar2 + 0xc),param_2); + } while (iVar1 != 0); + FUN_004431ab(local_10,2); + return iVar2; +} + + + +/* @0044292c file=? name=FUN_0044292c */ + +int __cdecl FUN_0044292c(int param_1,int param_2) + +{ + int iVar1; + int local_10 [3]; + + FUN_0044316d(local_10,param_1 + 0xc); + do { + iVar1 = (**(code **)(local_10[0] + 0x28))(local_10); + if (iVar1 == 0) { + iVar1 = 0; + FUN_004431ab(local_10,2); + return iVar1; + } + } while (param_2 != *(int *)(iVar1 + 0x2c)); + FUN_004431ab(local_10,2); + return iVar1; +} + + + +/* @00442990 file=? name=FUN_00442990 */ + +undefined4 * __cdecl FUN_00442990(undefined4 *param_1) + +{ + *param_1 = &PTR_FUN_004edc58; + FUN_00442aa0(param_1 + 1); + FUN_00442cdf(param_1 + 8); + FUN_00442f1e(param_1 + 0xf); + return param_1; +} + + + +/* @004429c0 file=? name=FUN_004429c0 */ + +void __cdecl FUN_004429c0(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004edc58; + (**(code **)(*param_1 + 4))(param_1); + FUN_00442f37(param_1 + 0xf,2); + FUN_00442cf8(param_1 + 8,2); + FUN_00442ab9(param_1 + 1,2); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00442a14 file=? name=FUN_00442a14 */ + +void __cdecl FUN_00442a14(int param_1) + +{ + FUN_00442c82(param_1 + 4); + FUN_00442ec1(param_1 + 0x20); + FUN_00443100(param_1 + 0x3c); + return; +} + + + +/* @00442a3c file=? name=FUN_00442a3c */ + +undefined4 FUN_00442a3c(void) + +{ + return 1; +} + + + +/* @00442a46 file=? name=FUN_00442a46 */ + +undefined4 * __cdecl FUN_00442a46(undefined4 *param_1,undefined4 param_2) + +{ + FUN_00417be0(param_1,param_2); + *param_1 = &PTR_FUN_004edc50; + return param_1; +} + + + +/* @00442a65 file=? name=FUN_00442a65 */ + +void __cdecl FUN_00442a65(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004edc50; + FUN_00417c0c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00442a91 file=? name=FUN_00442a91 */ + +void FUN_00442a91(void) + +{ + FUN_004428b0(); + return; +} + + + +/* @00442aa0 file=? name=FUN_00442aa0 */ + +undefined4 * __cdecl FUN_00442aa0(undefined4 *param_1) + +{ + FUN_00442848(param_1); + *param_1 = &PTR_FUN_004edc44; + return param_1; +} + + + +/* @00442ab9 file=? name=FUN_00442ab9 */ + +void __cdecl FUN_00442ab9(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004edc44; + FUN_00442c82((int)param_1); + FUN_00442874(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00442aec file=? name=FUN_00442aec */ + +undefined4 * __cdecl FUN_00442aec(int param_1,char *param_2,undefined4 param_3) + +{ + int iVar1; + undefined4 *puVar2; + undefined4 *puVar3; + + iVar1 = FUN_004428bc(param_1,param_2); + if (iVar1 == 0) { + puVar2 = FUN_00449148(param_2); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar3 = (undefined4 *)FUN_00402298(0x3c); + if (puVar3 == (undefined4 *)0x0) { + puVar3 = (undefined4 *)0x0; + } + else { + puVar3 = FUN_004431d7(puVar3,param_2,puVar2,param_3); + } + (**(code **)(*(int *)(param_1 + 0xc) + 4))(param_1 + 0xc,puVar3); + } + } + else { + *(int *)(iVar1 + 0x30) = *(int *)(iVar1 + 0x30) + 1; + puVar2 = *(undefined4 **)(iVar1 + 0x38); + } + return puVar2; +} + + + +/* @00442b5c file=? name=FUN_00442b5c */ + +int __cdecl FUN_00442b5c(int param_1,int param_2,undefined4 param_3) + +{ + int iVar1; + undefined4 *puVar2; + + iVar1 = FUN_0044292c(param_1,param_2); + if (iVar1 == 0) { + iVar1 = FUN_004491ac(); + if (iVar1 == 0) { + iVar1 = 0; + } + else { + puVar2 = (undefined4 *)FUN_00402298(0x3c); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_00443200(puVar2,param_2,iVar1,param_3); + } + (**(code **)(*(int *)(param_1 + 0xc) + 4))(param_1 + 0xc,puVar2); + } + } + else { + *(int *)(iVar1 + 0x30) = *(int *)(iVar1 + 0x30) + 1; + iVar1 = *(int *)(iVar1 + 0x38); + } + return iVar1; +} + + + +/* @00442bcc file=? name=FUN_00442bcc */ + +undefined4 __cdecl FUN_00442bcc(int param_1,char *param_2) + +{ + int iVar1; + + iVar1 = FUN_004428bc(param_1,param_2); + if (iVar1 != 0) { + *(int *)(iVar1 + 0x30) = *(int *)(iVar1 + 0x30) + 1; + return *(undefined4 *)(iVar1 + 0x38); + } + return 0; +} + + + +/* @00442bef file=? name=FUN_00442bef */ + +undefined4 __cdecl FUN_00442bef(int param_1,int param_2) + +{ + int iVar1; + + iVar1 = FUN_0044292c(param_1,param_2); + if (iVar1 != 0) { + *(int *)(iVar1 + 0x30) = *(int *)(iVar1 + 0x30) + 1; + return *(undefined4 *)(iVar1 + 0x38); + } + return 0; +} + + + +/* @00442c12 file=? name=FUN_00442c12 */ + +void __cdecl FUN_00442c12(int param_1,char *param_2) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_004428bc(param_1,param_2); + if ((((puVar1 != (undefined4 *)0x0) && (puVar1[0xc] = puVar1[0xc] + -1, (int)puVar1[0xc] < 1)) && + (puVar1[0xd] == 0)) && (puVar1 != (undefined4 *)0x0)) { + (**(code **)*puVar1)(puVar1,3); + } + return; +} + + + +/* @00442c4a file=? name=FUN_00442c4a */ + +void __cdecl FUN_00442c4a(int param_1,int param_2) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_0044292c(param_1,param_2); + if ((((puVar1 != (undefined4 *)0x0) && (puVar1[0xc] = puVar1[0xc] + -1, (int)puVar1[0xc] < 1)) && + (puVar1[0xd] == 0)) && (puVar1 != (undefined4 *)0x0)) { + (**(code **)*puVar1)(puVar1,3); + } + return; +} + + + +/* @00442c82 file=? name=FUN_00442c82 */ + +void __cdecl FUN_00442c82(int param_1) + +{ + undefined4 *puVar1; + int local_10 [3]; + + FUN_0044316d(local_10,param_1 + 0xc); + while( true ) { + puVar1 = (undefined4 *)(**(code **)(local_10[0] + 0x28))(local_10); + if (puVar1 == (undefined4 *)0x0) break; + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + } + FUN_004431ab(local_10,2); + return; +} + + + +/* @00442cd0 file=? name=FUN_00442cd0 */ + +void FUN_00442cd0(void) + +{ + FUN_004428b0(); + return; +} + + + +/* @00442cdf file=? name=FUN_00442cdf */ + +undefined4 * __cdecl FUN_00442cdf(undefined4 *param_1) + +{ + FUN_00442848(param_1); + *param_1 = &PTR_FUN_004edc38; + return param_1; +} + + + +/* @00442cf8 file=? name=FUN_00442cf8 */ + +void __cdecl FUN_00442cf8(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004edc38; + FUN_00442ec1((int)param_1); + FUN_00442874(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00442d2b file=? name=FUN_00442d2b */ + +int * __cdecl FUN_00442d2b(int param_1,char *param_2,undefined4 param_3) + +{ + int iVar1; + int *piVar2; + undefined4 *puVar3; + + iVar1 = FUN_004428bc(param_1,param_2); + if (iVar1 == 0) { + piVar2 = FUN_00449c1c(param_2); + if (piVar2 == (int *)0x0) { + piVar2 = (int *)0x0; + } + else { + puVar3 = (undefined4 *)FUN_00402298(0x3c); + if (puVar3 == (undefined4 *)0x0) { + puVar3 = (undefined4 *)0x0; + } + else { + puVar3 = FUN_0044327a(puVar3,param_2,piVar2,param_3); + } + (**(code **)(*(int *)(param_1 + 0xc) + 4))(param_1 + 0xc,puVar3); + } + } + else { + *(int *)(iVar1 + 0x30) = *(int *)(iVar1 + 0x30) + 1; + piVar2 = *(int **)(iVar1 + 0x38); + } + return piVar2; +} + + + +/* @00442d9b file=? name=FUN_00442d9b */ + +int __cdecl FUN_00442d9b(int param_1,int param_2,undefined4 param_3) + +{ + int iVar1; + undefined4 *puVar2; + + iVar1 = FUN_0044292c(param_1,param_2); + if (iVar1 == 0) { + iVar1 = FUN_00449c80(); + if (iVar1 == 0) { + iVar1 = 0; + } + else { + puVar2 = (undefined4 *)FUN_00402298(0x3c); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_004432a3(puVar2,param_2,iVar1,param_3); + } + (**(code **)(*(int *)(param_1 + 0xc) + 4))(param_1 + 0xc,puVar2); + } + } + else { + *(int *)(iVar1 + 0x30) = *(int *)(iVar1 + 0x30) + 1; + iVar1 = *(int *)(iVar1 + 0x38); + } + return iVar1; +} + + + +/* @00442e0b file=? name=FUN_00442e0b */ + +undefined4 __cdecl FUN_00442e0b(int param_1,char *param_2) + +{ + int iVar1; + + iVar1 = FUN_004428bc(param_1,param_2); + if (iVar1 != 0) { + *(int *)(iVar1 + 0x30) = *(int *)(iVar1 + 0x30) + 1; + return *(undefined4 *)(iVar1 + 0x38); + } + return 0; +} + + + +/* @00442e2e file=? name=FUN_00442e2e */ + +undefined4 __cdecl FUN_00442e2e(int param_1,int param_2) + +{ + int iVar1; + + iVar1 = FUN_0044292c(param_1,param_2); + if (iVar1 != 0) { + *(int *)(iVar1 + 0x30) = *(int *)(iVar1 + 0x30) + 1; + return *(undefined4 *)(iVar1 + 0x38); + } + return 0; +} + + + +/* @00442e51 file=? name=FUN_00442e51 */ + +void __cdecl FUN_00442e51(int param_1,char *param_2) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_004428bc(param_1,param_2); + if ((((puVar1 != (undefined4 *)0x0) && (puVar1[0xc] = puVar1[0xc] + -1, (int)puVar1[0xc] < 1)) && + (puVar1[0xd] == 0)) && (puVar1 != (undefined4 *)0x0)) { + (**(code **)*puVar1)(puVar1,3); + } + return; +} + + + +/* @00442e89 file=? name=FUN_00442e89 */ + +void __cdecl FUN_00442e89(int param_1,int param_2) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_0044292c(param_1,param_2); + if ((((puVar1 != (undefined4 *)0x0) && (puVar1[0xc] = puVar1[0xc] + -1, (int)puVar1[0xc] < 1)) && + (puVar1[0xd] == 0)) && (puVar1 != (undefined4 *)0x0)) { + (**(code **)*puVar1)(puVar1,3); + } + return; +} + + + +/* @00442ec1 file=? name=FUN_00442ec1 */ + +void __cdecl FUN_00442ec1(int param_1) + +{ + undefined4 *puVar1; + int local_10 [3]; + + FUN_0044316d(local_10,param_1 + 0xc); + while( true ) { + puVar1 = (undefined4 *)(**(code **)(local_10[0] + 0x28))(local_10); + if (puVar1 == (undefined4 *)0x0) break; + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + } + FUN_004431ab(local_10,2); + return; +} + + + +/* @00442f0f file=? name=FUN_00442f0f */ + +void FUN_00442f0f(void) + +{ + FUN_004428b0(); + return; +} + + + +/* @00442f1e file=? name=FUN_00442f1e */ + +undefined4 * __cdecl FUN_00442f1e(undefined4 *param_1) + +{ + FUN_00442848(param_1); + *param_1 = &PTR_FUN_004edc2c; + return param_1; +} + + + +/* @00442f37 file=? name=FUN_00442f37 */ + +void __cdecl FUN_00442f37(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004edc2c; + FUN_00443100((int)param_1); + FUN_00442874(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00442f6a file=? name=FUN_00442f6a */ + +int * __cdecl FUN_00442f6a(int param_1,char *param_2,undefined4 param_3) + +{ + int iVar1; + int *piVar2; + undefined4 *puVar3; + + iVar1 = FUN_004428bc(param_1,param_2); + if (iVar1 == 0) { + piVar2 = FUN_004498b4(param_2); + if (piVar2 == (int *)0x0) { + piVar2 = (int *)0x0; + } + else { + puVar3 = (undefined4 *)FUN_00402298(0x3c); + if (puVar3 == (undefined4 *)0x0) { + puVar3 = (undefined4 *)0x0; + } + else { + puVar3 = FUN_0044331a(puVar3,param_2,piVar2,param_3); + } + (**(code **)(*(int *)(param_1 + 0xc) + 4))(param_1 + 0xc,puVar3); + } + } + else { + *(int *)(iVar1 + 0x30) = *(int *)(iVar1 + 0x30) + 1; + piVar2 = *(int **)(iVar1 + 0x38); + } + return piVar2; +} + + + +/* @00442fda file=? name=FUN_00442fda */ + +int __cdecl FUN_00442fda(int param_1,int param_2,undefined4 param_3) + +{ + int iVar1; + undefined4 *puVar2; + + iVar1 = FUN_0044292c(param_1,param_2); + if (iVar1 == 0) { + iVar1 = FUN_00449918(); + if (iVar1 == 0) { + iVar1 = 0; + } + else { + puVar2 = (undefined4 *)FUN_00402298(0x3c); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_00443343(puVar2,param_2,iVar1,param_3); + } + (**(code **)(*(int *)(param_1 + 0xc) + 4))(param_1 + 0xc,puVar2); + } + } + else { + *(int *)(iVar1 + 0x30) = *(int *)(iVar1 + 0x30) + 1; + iVar1 = *(int *)(iVar1 + 0x38); + } + return iVar1; +} + + + +/* @0044304a file=? name=FUN_0044304a */ + +undefined4 __cdecl FUN_0044304a(int param_1,char *param_2) + +{ + int iVar1; + + iVar1 = FUN_004428bc(param_1,param_2); + if (iVar1 != 0) { + *(int *)(iVar1 + 0x30) = *(int *)(iVar1 + 0x30) + 1; + return *(undefined4 *)(iVar1 + 0x38); + } + return 0; +} + + + +/* @0044306d file=? name=FUN_0044306d */ + +undefined4 __cdecl FUN_0044306d(int param_1,int param_2) + +{ + int iVar1; + + iVar1 = FUN_0044292c(param_1,param_2); + if (iVar1 != 0) { + *(int *)(iVar1 + 0x30) = *(int *)(iVar1 + 0x30) + 1; + return *(undefined4 *)(iVar1 + 0x38); + } + return 0; +} + + + +/* @00443090 file=? name=FUN_00443090 */ + +void __cdecl FUN_00443090(int param_1,char *param_2) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_004428bc(param_1,param_2); + if ((((puVar1 != (undefined4 *)0x0) && (puVar1[0xc] = puVar1[0xc] + -1, (int)puVar1[0xc] < 1)) && + (puVar1[0xd] == 0)) && (puVar1 != (undefined4 *)0x0)) { + (**(code **)*puVar1)(puVar1,3); + } + return; +} + + + +/* @004430c8 file=? name=FUN_004430c8 */ + +void __cdecl FUN_004430c8(int param_1,int param_2) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_0044292c(param_1,param_2); + if ((((puVar1 != (undefined4 *)0x0) && (puVar1[0xc] = puVar1[0xc] + -1, (int)puVar1[0xc] < 1)) && + (puVar1[0xd] == 0)) && (puVar1 != (undefined4 *)0x0)) { + (**(code **)*puVar1)(puVar1,3); + } + return; +} + + + +/* @00443100 file=? name=FUN_00443100 */ + +void __cdecl FUN_00443100(int param_1) + +{ + undefined4 *puVar1; + int local_10 [3]; + + FUN_0044316d(local_10,param_1 + 0xc); + while( true ) { + puVar1 = (undefined4 *)(**(code **)(local_10[0] + 0x28))(local_10); + if (puVar1 == (undefined4 *)0x0) break; + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + } + FUN_004431ab(local_10,2); + return; +} + + + +/* @0044314e file=? name=FUN_0044314e */ + +undefined4 * __cdecl FUN_0044314e(undefined4 *param_1,int param_2) + +{ + FUN_00417d00(param_1,param_2); + *param_1 = &PTR_FUN_004edbdc; + return param_1; +} + + + +/* @0044316d file=? name=FUN_0044316d */ + +undefined4 * __cdecl FUN_0044316d(undefined4 *param_1,int param_2) + +{ + FUN_00417d00(param_1,param_2); + *param_1 = &PTR_FUN_004edbdc; + return param_1; +} + + + +/* @0044318c file=? name=FUN_0044318c */ + +undefined4 * __cdecl FUN_0044318c(undefined4 *param_1,int param_2) + +{ + FUN_00417d28(param_1,param_2); + *param_1 = &PTR_FUN_004edbdc; + return param_1; +} + + + +/* @004431ab file=? name=FUN_004431ab */ + +void __cdecl FUN_004431ab(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004edbdc; + FUN_00417d54(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004431d7 file=? name=FUN_004431d7 */ + +undefined4 * __cdecl +FUN_004431d7(undefined4 *param_1,char *param_2,undefined4 param_3,undefined4 param_4) + +{ + FUN_00442780(param_1,param_2,param_4); + *param_1 = &PTR_FUN_004edbd8; + param_1[0xe] = param_3; + return param_1; +} + + + +/* @00443200 file=? name=FUN_00443200 */ + +undefined4 * __cdecl +FUN_00443200(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) + +{ + FUN_004427dc(param_1,param_2,param_4); + *param_1 = &PTR_FUN_004edbd8; + param_1[0xe] = param_3; + return param_1; +} + + + +/* @00443229 file=? name=FUN_00443229 */ + +void __cdecl FUN_00443229(int *param_1,byte param_2) + +{ + undefined4 *puVar1; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004edbd8; + puVar1 = (undefined4 *)param_1[0xe]; + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + param_1[0xe] = 0; + FUN_00442810(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0044326b file=? name=FUN_0044326b */ + +void FUN_0044326b(void) + +{ + FUN_0044283c(); + return; +} + + + +/* @0044327a file=? name=FUN_0044327a */ + +undefined4 * __cdecl +FUN_0044327a(undefined4 *param_1,char *param_2,undefined4 param_3,undefined4 param_4) + +{ + FUN_00442780(param_1,param_2,param_4); + *param_1 = &PTR_FUN_004edbd4; + param_1[0xe] = param_3; + return param_1; +} + + + +/* @004432a3 file=? name=FUN_004432a3 */ + +undefined4 * __cdecl +FUN_004432a3(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) + +{ + FUN_004427dc(param_1,param_2,param_4); + *param_1 = &PTR_FUN_004edbd4; + param_1[0xe] = param_3; + return param_1; +} + + + +/* @004432cc file=? name=FUN_004432cc */ + +void __cdecl FUN_004432cc(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004edbd4; + FUN_00449d0c((int *)param_1[0xe],3); + param_1[0xe] = 0; + FUN_00442810(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0044330b file=? name=FUN_0044330b */ + +void FUN_0044330b(void) + +{ + FUN_0044283c(); + return; +} + + + +/* @0044331a file=? name=FUN_0044331a */ + +undefined4 * __cdecl +FUN_0044331a(undefined4 *param_1,char *param_2,undefined4 param_3,undefined4 param_4) + +{ + FUN_00442780(param_1,param_2,param_4); + *param_1 = &PTR_FUN_004edbd0; + param_1[0xe] = param_3; + return param_1; +} + + + +/* @00443343 file=? name=FUN_00443343 */ + +undefined4 * __cdecl +FUN_00443343(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) + +{ + FUN_004427dc(param_1,param_2,param_4); + *param_1 = &PTR_FUN_004edbd0; + param_1[0xe] = param_3; + return param_1; +} + + + +/* @0044336c file=? name=FUN_0044336c */ + +void __cdecl FUN_0044336c(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004edbd0; + FUN_00449994((int *)param_1[0xe],3); + param_1[0xe] = 0; + FUN_00442810(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004433ab file=? name=FUN_004433ab */ + +void FUN_004433ab(void) + +{ + FUN_0044283c(); + return; +} + + + +/* @004433bc file=? name=FUN_004433bc */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 FUN_004433bc(void) + +{ + float fVar1; + float fVar2; + uint uVar3; + undefined4 local_10; + undefined4 local_c; + undefined4 local_8; + + uVar3 = FUN_004dcd94(); + local_8 = (float)(int)((uVar3 ^ (int)uVar3 >> 0x1f) - ((int)uVar3 >> 0x1f)); + uVar3 = FUN_004dcd94(); + fVar1 = (float)(int)((uVar3 ^ (int)uVar3 >> 0x1f) - ((int)uVar3 >> 0x1f)); + uVar3 = FUN_004dcd94(); + fVar2 = (float)(int)((uVar3 ^ (int)uVar3 >> 0x1f) - ((int)uVar3 >> 0x1f)); + local_c = fVar1; + if (local_8 < fVar1) { + local_c = local_8; + local_8 = fVar1; + } + local_10 = fVar2; + if (local_8 < fVar2) { + local_10 = local_8; + local_8 = fVar2; + } + return ((float10)local_c + (float10)local_10) * (float10)_DAT_00443470 + (float10)local_8; +} + + + +/* @00443474 file=? name=FUN_00443474 */ + +undefined4 * __cdecl FUN_00443474(undefined4 *param_1) + +{ + FUN_004178cc(param_1,0x37); + *param_1 = &PTR_FUN_004edc90; + FUN_00443edc(param_1 + 3,param_1); + return param_1; +} + + + +/* @004434a0 file=? name=FUN_004434a0 */ + +void __cdecl FUN_004434a0(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004edc90; + FUN_004435ac((int)param_1); + FUN_00443efb(param_1 + 3,2); + FUN_0041790c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004434e4 file=? name=FUN_004434e4 */ + +void FUN_004434e4(void) + +{ + FUN_00415f1c(); + return; +} + + + +/* @004434f4 file=? name=FUN_004434f4 */ + +void __cdecl FUN_004434f4(int param_1,undefined4 param_2) + +{ + (**(code **)(*(int *)(param_1 + 0xc) + 4))(param_1 + 0xc,param_2); + return; +} + + + +/* @00443510 file=? name=FUN_00443510 */ + +void __cdecl FUN_00443510(int param_1,int param_2) + +{ + int iVar1; + int local_10 [3]; + + FUN_0042ac3b(local_10,param_1 + 0xc); + do { + iVar1 = (**(code **)(local_10[0] + 0x30))(local_10); + if (iVar1 == 0) { +LAB_0044355d: + FUN_0042ac79(local_10,2); + return; + } + if (param_2 == iVar1) { + (**(code **)(local_10[0] + 0x48))(local_10); + goto LAB_0044355d; + } + (**(code **)(local_10[0] + 0xc))(local_10); + } while( true ); +} + + + +/* @00443574 file=? name=FUN_00443574 */ + +undefined4 __cdecl FUN_00443574(int param_1) + +{ + undefined4 uVar1; + int local_10 [3]; + + FUN_0042ac3b(local_10,param_1 + 0xc); + uVar1 = (**(code **)(local_10[0] + 0x14))(local_10); + FUN_0042ac79(local_10,2); + return uVar1; +} + + + +/* @004435ac file=? name=FUN_004435ac */ + +void __cdecl FUN_004435ac(int param_1) + +{ + int iVar1; + int local_10 [3]; + + FUN_0042ac3b(local_10,param_1 + 0xc); + while( true ) { + iVar1 = (**(code **)(local_10[0] + 0x30))(local_10); + if (iVar1 == 0) break; + (**(code **)(local_10[0] + 0x48))(local_10); + } + FUN_0042ac79(local_10,2); + return; +} + + + +/* @004435f4 file=? name=FUN_004435f4 */ + +int __cdecl FUN_004435f4(int param_1,int param_2,int param_3) + +{ + int iVar1; + int iVar2; + int iVar3; + int local_14 [3]; + int local_8; + + FUN_0042ac3b(local_14,param_1 + 0xc); + iVar3 = 0; +LAB_00443642: + iVar2 = (**(code **)(local_14[0] + 0x28))(local_14); + if (iVar2 == 0) { + FUN_0042ac79(local_14,2); + return iVar3; + } + if (param_3 != 0) goto code_r0x0044361b; + goto LAB_00443634; +code_r0x0044361b: + local_8 = param_3; + iVar1 = FUN_0041a1a4(**(int **)(iVar2 + 0xc),param_3); + if (iVar1 != 0) { +LAB_00443634: + FUN_004434f4(param_2,iVar2); + iVar3 = iVar3 + 1; + } + goto LAB_00443642; +} + + + +/* @0044366c file=? name=FUN_0044366c */ + +int __cdecl +FUN_0044366c(int param_1,int param_2,float param_3,undefined4 param_4,float param_5,float param_6, + undefined4 param_7,float param_8,int param_9) + +{ + int iVar1; + int iVar2; + float local_20 [2]; + float local_18; + int local_14 [3]; + int local_8; + + FUN_0042ac3b(local_14,param_1 + 0xc); + local_8 = 0; +LAB_004436fa: + iVar2 = (**(code **)(local_14[0] + 0x28))(local_14); + if (iVar2 == 0) { + FUN_0042ac79(local_14,2); + return local_8; + } + if (param_9 != 0) goto code_r0x00443696; + goto LAB_004436ab; +code_r0x00443696: + iVar1 = FUN_0041a1a4(**(int **)(iVar2 + 0xc),param_9); + if (iVar1 != 0) { +LAB_004436ab: + FUN_00408440(local_20,(undefined4 *)(iVar2 + 0x100)); + if ((((param_5 <= local_18) && (local_18 <= param_8)) && (param_3 <= local_20[0])) && + (local_20[0] <= param_6)) { + FUN_004434f4(param_2,iVar2); + local_8 = local_8 + 1; + } + } + goto LAB_004436fa; +} + + + +/* @00443728 file=? name=FUN_00443728 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +int __cdecl FUN_00443728(int param_1,int param_2,undefined4 param_3,float param_4,int param_5) + +{ + int iVar1; + int iVar2; + float10 fVar3; + undefined4 local_20 [3]; + int local_14 [3]; + int local_8; + + FUN_0042ac3b(local_14,param_1 + 0xc); + local_8 = 0; +LAB_004437a8: + iVar2 = (**(code **)(local_14[0] + 0x28))(local_14); + if (iVar2 == 0) { + FUN_0042ac79(local_14,2); + return local_8; + } + if (param_5 != 0) goto code_r0x00443752; + goto LAB_00443767; +code_r0x00443752: + iVar1 = FUN_0041a1a4(**(int **)(iVar2 + 0xc),param_5); + if (iVar1 != 0) { +LAB_00443767: + FUN_00408440(local_20,(undefined4 *)(iVar2 + 0x100)); + fVar3 = FUN_004433bc(); + if (fVar3 - (float10)_DAT_004437d4 <= (float10)param_4) { + FUN_004434f4(param_2,iVar2); + local_8 = local_8 + 1; + } + } + goto LAB_004437a8; +} + + + +/* @004437d8 file=? name=FUN_004437d8 */ + +undefined4 * __cdecl FUN_004437d8(undefined4 *param_1) + +{ + FUN_004de998(param_1 + 6,0x1c,0x1000,1,FUN_00443474); + *param_1 = 0; + param_1[1] = 0; + param_1[2] = 0; + param_1[3] = 0; + param_1[4] = 0; + param_1[5] = 0; + return param_1; +} + + + +/* @0044381c file=? name=FUN_0044381c */ + +void __cdecl FUN_0044381c(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + FUN_00443998(param_1); + FUN_004de8d4(param_1 + 6,0x1c,0x1000,1,FUN_004434a0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00443858 file=? name=FUN_00443858 */ + +undefined4 FUN_00443858(void) + +{ + return 1; +} + + + +/* @00443864 file=? name=FUN_00443864 */ + +void __cdecl FUN_00443864(float *param_1,int param_2) + +{ + float fVar1; + float fVar2; + float fVar3; + int iVar4; + int iVar5; + + fVar1 = *(float *)(param_2 + 0x100); + fVar2 = *(float *)(param_2 + 0x104); + fVar3 = *(float *)(param_2 + 0x108); + iVar4 = FUN_00443e94(); + iVar5 = FUN_00443e94(); + FUN_004434f4((int)(param_1 + iVar4 * 0x1c0 + iVar5 * 7 + 6),param_2); + if (fVar1 < *param_1) { + *param_1 = fVar1; + } + if (fVar2 < param_1[1]) { + param_1[1] = fVar2; + } + if (fVar3 < param_1[2]) { + param_1[2] = fVar3; + } + if (param_1[3] < fVar1) { + param_1[3] = fVar1; + } + if (param_1[4] < fVar2) { + param_1[4] = fVar2; + } + if (param_1[5] < fVar3) { + param_1[5] = fVar3; + } + return; +} + + + +/* @00443930 file=? name=FUN_00443930 */ + +void __cdecl FUN_00443930(int param_1,int param_2) + +{ + int iVar1; + int iVar2; + + iVar1 = FUN_00443e94(); + iVar2 = FUN_00443e94(); + FUN_00443510(iVar1 * 0x700 + param_1 + iVar2 * 0x1c + 0x18,param_2); + return; +} + + + +/* @00443998 file=? name=FUN_00443998 */ + +void __cdecl FUN_00443998(undefined4 *param_1) + +{ + int iVar1; + int iVar2; + + iVar2 = 0; + do { + iVar1 = 0; + do { + FUN_004435ac((int)(param_1 + iVar1 * 0x1c0 + iVar2 * 7 + 6)); + iVar1 = iVar1 + 1; + } while (iVar1 < 0x40); + iVar2 = iVar2 + 1; + } while (iVar2 < 0x40); + *param_1 = 0; + param_1[1] = 0; + param_1[2] = 0; + param_1[3] = 0; + param_1[4] = 0; + param_1[5] = 0; + return; +} + + + +/* @004439f8 file=? name=FUN_004439f8 */ + +void __cdecl FUN_004439f8(int param_1) + +{ + int *piVar1; + uint uVar2; + int iVar3; + uint uVar4; + uint local_8; + + uVar4 = 0; + local_8 = 0; + do { + if ((int)uVar4 < 10) { + FUN_004dbb24(&DAT_00524e20,&DAT_004edc70,(char *)0x0); + } + piVar1 = FUN_004db78c(&DAT_00524e20,uVar4); + FUN_004dbb24(piVar1,&DAT_004edc72,(char *)0x0); + iVar3 = 0; + do { + uVar2 = FUN_00443574(iVar3 * 0x700 + param_1 + uVar4 * 0x1c + 0x18); + local_8 = local_8 + uVar2; + if ((int)uVar2 < 100) { + FUN_004dbb24(&DAT_00524e20,&DAT_004edc74,(char *)0x0); + if ((int)uVar2 < 10) { + FUN_004dbb24(&DAT_00524e20,&DAT_004edc76,(char *)0x0); + } + } + piVar1 = FUN_004db78c(&DAT_00524e20,uVar2); + FUN_004dbb24(piVar1,&DAT_004edc78,(char *)0x0); + iVar3 = iVar3 + 1; + } while (iVar3 < 0x40); + FUN_004dbb24(&DAT_00524e20,&DAT_004edc7a,(char *)0x0); + uVar4 = uVar4 + 1; + } while ((int)uVar4 < 0x40); + FUN_004dbb24(&DAT_00524e20,s_Total__004edc7c,(char *)0x0); + piVar1 = FUN_004db78c(&DAT_00524e20,local_8); + FUN_004dbb24(piVar1,&DAT_004edc84,(char *)0x0); + return; +} + + + +/* @00443b28 file=? name=FUN_00443b28 */ + +int __cdecl FUN_00443b28(int param_1,int param_2,int param_3) + +{ + int iVar1; + int iVar2; + int iVar3; + int iVar4; + undefined4 local_8; + + iVar4 = 0; + local_8 = 0; + iVar3 = 0; + iVar2 = local_8; + do { + do { + iVar1 = FUN_004435f4(iVar2 * 0x700 + param_1 + iVar3 * 0x1c + 0x18,param_2,param_3); + iVar4 = iVar4 + iVar1; + iVar2 = iVar2 + 1; + } while (iVar2 < 0x3f); + iVar3 = iVar3 + 1; + iVar2 = local_8; + } while (iVar3 < 0x3f); + return iVar4; +} + + + +/* @00443ba4 file=? name=FUN_00443ba4 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +int __cdecl +FUN_00443ba4(int param_1,int param_2,float param_3,undefined4 param_4,float param_5,float param_6, + undefined4 param_7,float param_8,int param_9) + +{ + int iVar1; + int iVar2; + int iVar3; + undefined4 local_14; + undefined4 local_10; + undefined4 local_c; + undefined4 local_8; + + local_14 = 0; + iVar2 = FUN_00443e94(); + local_10 = FUN_00443e94(); + if (iVar2 < 0) { + iVar2 = 0; + } + else if (0x3f < iVar2) { + iVar2 = 0x3f; + } + if (local_10 < 0) { + local_10 = 0; + } + else if (0x3f < local_10) { + local_10 = 0x3f; + } + local_8 = FUN_00443e94(); + local_c = FUN_00443e94(); + if (local_8 < 0) { + local_8 = 0; + } + else if (0x3f < local_8) { + local_8 = 0x3f; + } + if (local_c < 0) { + local_c = 0; + } + else if (0x3f < local_c) { + local_c = 0x3f; + } + for (; iVar1 = local_8, iVar2 < local_10; iVar2 = iVar2 + 1) { + for (; iVar1 < local_c; iVar1 = iVar1 + 1) { + iVar3 = FUN_0044366c(iVar1 * 0x700 + param_1 + iVar2 * 0x1c + 0x18,param_2,param_3,param_4, + param_5,param_6,param_7,param_8,param_9); + local_14 = local_14 + iVar3; + } + } + return local_14; +} + + + +/* @00443e94 file=? name=FUN_00443e94 */ + +int FUN_00443e94(void) + +{ + int iVar1; + + iVar1 = FUN_004dcd94(); + iVar1 = iVar1 + 0x20; + if (iVar1 < 0) { + iVar1 = 0; + } + if (0x3f < iVar1) { + iVar1 = 0x3f; + } + return iVar1; +} + + + +/* @00443edc file=? name=FUN_00443edc */ + +undefined4 * __cdecl FUN_00443edc(undefined4 *param_1,undefined4 param_2) + +{ + FUN_00417be0(param_1,param_2); + *param_1 = &PTR_FUN_004edc88; + return param_1; +} + + + +/* @00443efb file=? name=FUN_00443efb */ + +void __cdecl FUN_00443efb(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004edc88; + FUN_00417c0c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00443f28 file=? name=FUN_00443f28 */ + +undefined4 * __cdecl +FUN_00443f28(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4, + undefined4 param_5) + +{ + FUN_004178cc(param_1,0x23); + *param_1 = &PTR_FUN_004ee184; + param_1[3] = 0; + param_1[6] = param_2; + param_1[5] = param_4; + param_1[7] = param_3; + param_1[8] = param_5; + param_1[4] = 1; + if (param_1[7] != 0) { + FUN_00447fa0(param_1[7],param_1); + } + return param_1; +} + + + +/* @00443f7c file=? name=FUN_00443f7c */ + +void __cdecl FUN_00443f7c(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004ee184; + FUN_0041790c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00443fa8 file=? name=FUN_00443fa8 */ + +undefined4 FUN_00443fa8(void) + +{ + return 1; +} + + + +/* @00443fb4 file=? name=FUN_00443fb4 */ + +void __cdecl FUN_00443fb4(int *param_1) + +{ + char *pcVar1; + + pcVar1 = (char *)param_1[8]; + FUN_004dbb24(&DAT_00524e20,s_BecameActive___has_not_been_defi_004ede69,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,pcVar1,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s____About_to_call_Inactivate___004ede93,(char *)0x0); + (**(code **)(*param_1 + 0x14))(param_1); + return; +} + + + +/* @00444004 file=? name=FUN_00444004 */ + +void FUN_00444004(void) + +{ + return; +} + + + +/* @0044400c file=? name=FUN_0044400c */ + +void __cdecl FUN_0044400c(int *param_1) + +{ + if (param_1[7] != 0) { + FUN_004480b0(param_1[7],param_1); + } + return; +} + + + +/* @00444028 file=? name=FUN_00444028 */ + +undefined4 __cdecl FUN_00444028(int *param_1) + +{ + char *pcVar1; + + pcVar1 = (char *)param_1[8]; + FUN_004dbb24(&DAT_00524e20,s_Update___has_not_been_defined_fo_004edeb2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,pcVar1,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s____About_to_call_Inactivate___004eded6,(char *)0x0); + (**(code **)(*param_1 + 0x14))(param_1); + return 0; +} + + + +/* @00444078 file=? name=FUN_00444078 */ + +void FUN_00444078(void) + +{ + return; +} + + + +/* @00444080 file=? name=FUN_00444080 */ + +void FUN_00444080(void) + +{ + return; +} + + + +/* @00444088 file=? name=FUN_00444088 */ + +void FUN_00444088(void) + +{ + return; +} + + + +/* @00444090 file=? name=FUN_00444090 */ + +void FUN_00444090(void) + +{ + return; +} + + + +/* @00444098 file=? name=FUN_00444098 */ + +void FUN_00444098(void) + +{ + return; +} + + + +/* @004440a0 file=? name=FUN_004440a0 */ + +undefined4 FUN_004440a0(void) + +{ + return 0; +} + + + +/* @004440a8 file=? name=FUN_004440a8 */ + +undefined4 * __cdecl +FUN_004440a8(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4, + undefined4 param_5) + +{ + FUN_00443f28(param_1,param_2,param_3,param_4,param_5); + *param_1 = &PTR_FUN_004ee150; + return param_1; +} + + + +/* @004440d4 file=? name=FUN_004440d4 */ + +undefined4 * __cdecl +FUN_004440d4(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4,int param_5, + undefined4 param_6) + +{ + undefined4 *puVar1; + + FUN_004440a8(param_1,param_2,param_3,param_4,param_6); + *param_1 = &PTR_FUN_004ee11c; + if (param_3 == 0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = (undefined4 *)FUN_00447f84(param_3,param_5); + } + FUN_0044ad78(param_1 + 9,puVar1); + return param_1; +} + + + +/* @00444124 file=? name=FUN_00444124 */ + +undefined4 * __cdecl FUN_00444124(undefined4 *param_1,undefined4 param_2) + +{ + FUN_00415e90(param_1,1); + *param_1 = &PTR_FUN_004ee110; + param_1[3] = param_2; + return param_1; +} + + + +/* @00444148 file=? name=FUN_00444148 */ + +void __cdecl FUN_00444148(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004ee110; + FUN_00415ed8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00444174 file=? name=FUN_00444174 */ + +undefined4 FUN_00444174(void) + +{ + return 1; +} + + + +/* @00444180 file=munga/gauge.cpp name=FUN_00444180 */ + +void FUN_00444180(void) + +{ + FUN_0040385c(s_GaugeConnection__Update_should_n_004edef5,s_d__tesla_bt_munga_GAUGE_CPP_004edf24, + 0xe2); + return; +} + + + +/* @0044419c file=? name=FUN_0044419c */ + +void __cdecl FUN_0044419c(int param_1,char *param_2) + +{ + char cVar1; + int *piVar2; + uint uVar3; + uint uVar4; + char *pcVar5; + char *pcVar6; + char local_54 [80]; + + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_GaugeConnection__004edf40,(char *)0x0); + uVar3 = 0xffffffff; + do { + pcVar5 = param_2; + if (uVar3 == 0) break; + uVar3 = uVar3 - 1; + pcVar5 = param_2 + 1; + cVar1 = *param_2; + param_2 = pcVar5; + } while (cVar1 != '\0'); + uVar3 = ~uVar3; + pcVar5 = pcVar5 + -uVar3; + pcVar6 = local_54; + for (uVar4 = uVar3 >> 2; uVar4 != 0; uVar4 = uVar4 - 1) { + *(undefined4 *)pcVar6 = *(undefined4 *)pcVar5; + pcVar5 = pcVar5 + 4; + pcVar6 = pcVar6 + 4; + } + for (uVar3 = uVar3 & 3; uVar3 != 0; uVar3 = uVar3 - 1) { + *pcVar6 = *pcVar5; + pcVar5 = pcVar5 + 1; + pcVar6 = pcVar6 + 1; + } + FUN_004d49b8(local_54,&DAT_004edf52); + uVar3 = *(uint *)(param_1 + 0xc); + FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_parameterID__004edf56,(char *)0x0); + piVar2 = FUN_004db78c(&DAT_00524e20,uVar3); + FUN_004dbb24(piVar2,&DAT_004edf63,(char *)0x0); + FUN_004d9c70(piVar2); + return; +} + + + +/* @00444290 file=? name=FUN_00444290 */ + +undefined4 FUN_00444290(void) + +{ + DAT_004edd1c = DAT_004edd1c + 1; + DAT_004edd1c = DAT_004edd1c & 3; + DAT_004edd20 = DAT_004edd20 + 2; + DAT_004edd24 = DAT_004edd24 + 4; + return (&DAT_004edca8)[DAT_004edd1c]; +} + + + +/* @004442b8 file=? name=FUN_004442b8 */ + +undefined4 FUN_004442b8(void) + +{ + DAT_004edd20 = DAT_004edd20 + 1; + DAT_004edd20 = DAT_004edd20 & 7; + DAT_004edd24 = DAT_004edd24 + 2; + return (&DAT_004edcb8)[DAT_004edd20]; +} + + + +/* @004442dc file=? name=FUN_004442dc */ + +undefined4 FUN_004442dc(void) + +{ + DAT_004edd24 = DAT_004edd24 + 1; + DAT_004edd24 = DAT_004edd24 & 0xf; + return (&DAT_004edcd8)[DAT_004edd24]; +} + + + +/* @004442f8 file=? name=FUN_004442f8 */ + +undefined4 __cdecl FUN_004442f8(int param_1) + +{ + return *(undefined4 *)(&DAT_004edc9c + param_1 * 4); +} + + + +/* @00444308 file=? name=FUN_00444308 */ + +undefined4 * __cdecl +FUN_00444308(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4, + undefined4 param_5,undefined4 param_6) + +{ + FUN_00443f28(param_1,param_3,param_4,param_5,param_6); + *param_1 = &PTR_FUN_004ee0cc; + FUN_0044494b(param_1 + 0xb,param_1); + param_1[9] = param_2; + param_1[10] = param_2; + param_1[4] = 0; + param_1[0xf] = 0; + param_1[0x10] = 0; + param_1[0x11] = 0; + return param_1; +} + + + +/* @00444360 file=? name=FUN_00444360 */ + +void __cdecl FUN_00444360(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004ee0cc; + (**(code **)(*param_1 + 0x3c))(param_1); + FUN_0044496a(param_1 + 0xb,2); + FUN_00443f7c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004443a4 file=? name=FUN_004443a4 */ + +void FUN_004443a4(void) + +{ + FUN_00443fa8(); + return; +} + + + +/* @004443b4 file=? name=FUN_004443b4 */ + +void __cdecl FUN_004443b4(int param_1,char *param_2) + +{ + char cVar1; + int *piVar2; + uint uVar3; + uint uVar4; + char *pcVar5; + char *pcVar6; + undefined8 uVar7; + char local_60 [80]; + int local_10 [3]; + + FUN_004449b5(local_10,param_1 + 0x2c); + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_Gauge__004edf65,(char *)0x0); + uVar3 = 0xffffffff; + do { + pcVar5 = param_2; + if (uVar3 == 0) break; + uVar3 = uVar3 - 1; + pcVar5 = param_2 + 1; + cVar1 = *param_2; + param_2 = pcVar5; + } while (cVar1 != '\0'); + uVar3 = ~uVar3; + pcVar5 = pcVar5 + -uVar3; + pcVar6 = local_60; + for (uVar4 = uVar3 >> 2; uVar4 != 0; uVar4 = uVar4 - 1) { + *(undefined4 *)pcVar6 = *(undefined4 *)pcVar5; + pcVar5 = pcVar5 + 4; + pcVar6 = pcVar6 + 4; + } + for (uVar3 = uVar3 & 3; uVar3 != 0; uVar3 = uVar3 - 1) { + *pcVar6 = *pcVar5; + pcVar5 = pcVar5 + 1; + pcVar6 = pcVar6 + 1; + } + FUN_004d49b8(local_60,&DAT_004edf6d); + uVar3 = *(uint *)(param_1 + 0x18); + FUN_004dbb24(&DAT_00524e20,local_60,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_modeMask___004edf71,(char *)0x0); + piVar2 = FUN_004db880(&DAT_00524e20,uVar3); + FUN_004dbb24(piVar2,&DAT_004edf84,(char *)0x0); + uVar3 = *(uint *)(param_1 + 0x1c); + FUN_004dbb24(&DAT_00524e20,local_60,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_renderer___004edf86,(char *)0x0); + uVar7 = FUN_004dbd4c(&DAT_00524e20,uVar3); + FUN_004dbb24((int *)uVar7,&DAT_004edf99,(char *)0x0); + uVar3 = *(uint *)(param_1 + 0x14); + FUN_004dbb24(&DAT_00524e20,local_60,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_ownerID___004edf9b,(char *)0x0); + piVar2 = FUN_004db880(&DAT_00524e20,uVar3); + FUN_004dbb24(piVar2,&DAT_004edfae,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,local_60,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_InstanceList___004edfb0,(char *)0x0); + FUN_004d9c70(&DAT_00524e20); + FUN_004d49b8(local_60,&DAT_004edfc0); + while( true ) { + piVar2 = (int *)(**(code **)(local_10[0] + 0x28))(local_10); + if (piVar2 == (int *)0x0) break; + (**(code **)(*piVar2 + 4))(piVar2,local_60); + } + FUN_004449f3(local_10,2); + return; +} + + + +/* @00444588 file=? name=FUN_00444588 */ + +void __cdecl FUN_00444588(int param_1,undefined4 param_2) + +{ + (**(code **)(*(int *)(param_1 + 0x2c) + 4))(param_1 + 0x2c,param_2); + return; +} + + + +/* @004445a4 file=? name=FUN_004445a4 */ + +void __cdecl FUN_004445a4(int param_1,int param_2) + +{ + undefined4 *puVar1; + int local_10 [3]; + + FUN_004449b5(local_10,param_1 + 0x2c); + while( true ) { + puVar1 = (undefined4 *)(**(code **)(local_10[0] + 0x28))(local_10); + if (puVar1 == (undefined4 *)0x0) break; + if ((param_2 == puVar1[3]) && (puVar1 != (undefined4 *)0x0)) { + (**(code **)*puVar1)(puVar1,3); + } + } + FUN_004449f3(local_10,2); + return; +} + + + +/* @00444600 file=? name=FUN_00444600 */ + +void __cdecl FUN_00444600(int param_1) + +{ + undefined4 *puVar1; + int local_10 [3]; + + FUN_004449b5(local_10,param_1 + 0x2c); + while( true ) { + puVar1 = (undefined4 *)(**(code **)(local_10[0] + 0x28))(local_10); + if (puVar1 == (undefined4 *)0x0) break; + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + } + FUN_004449f3(local_10,2); + return; +} + + + +/* @00444650 file=? name=FUN_00444650 */ + +void __cdecl FUN_00444650(int *param_1,int param_2) + +{ + if (param_2 != 0) { + param_1[9] = 0; + (**(code **)(*param_1 + 0x10))(param_1); + return; + } + param_1[9] = param_1[10]; + (**(code **)(*param_1 + 0xc))(param_1); + return; +} + + + +/* @0044467c file=? name=FUN_0044467c */ + +undefined4 __cdecl FUN_0044467c(int *param_1,uint param_2) + +{ + int *piVar1; + undefined4 uVar2; + int local_10 [3]; + + uVar2 = 0; + if ((param_1[9] & param_2) != 0) { + FUN_004449b5(local_10,(int)(param_1 + 0xb)); + while( true ) { + piVar1 = (int *)(**(code **)(local_10[0] + 0x28))(local_10); + if (piVar1 == (int *)0x0) break; + (**(code **)(*piVar1 + 8))(piVar1); + } + (**(code **)(*param_1 + 0x40))(param_1); + uVar2 = 1; + FUN_004449f3(local_10,2); + } + return uVar2; +} + + + +/* @004446e0 file=munga/gauge.cpp name=FUN_004446e0 */ + +void FUN_004446e0(void) + +{ + FUN_0040385c(s_Gauge__Execute_not_overridden_004edfc4,s_d__tesla_bt_munga_GAUGE_CPP_004edfe2,599); + return; +} + + + +/* @004446fc file=? name=FUN_004446fc */ + +int __cdecl FUN_004446fc(int param_1) + +{ + int *piVar1; + + piVar1 = &DAT_004edd28; + while( true ) { + if (*piVar1 == 0) { + return 0; + } + if (*piVar1 == *(int *)(param_1 + 0x24)) break; + piVar1 = piVar1 + 2; + } + return piVar1[1]; +} + + + +/* @00444720 file=? name=FUN_00444720 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_00444720(int param_1,float param_2) + +{ + if (*(float *)(param_1 + 0x40) < param_2) { + *(float *)(param_1 + 0x40) = param_2; + } + *(float *)(param_1 + 0x3c) = param_2 + *(float *)(param_1 + 0x3c); + *(int *)(param_1 + 0x44) = *(int *)(param_1 + 0x44) + 1; + if (0x4000 < *(int *)(param_1 + 0x44)) { + *(float *)(param_1 + 0x3c) = _DAT_00444760 * *(float *)(param_1 + 0x3c); + *(int *)(param_1 + 0x44) = *(int *)(param_1 + 0x44) >> 1; + } + return; +} + + + +/* @00444818 file=? name=FUN_00444818 */ + +undefined4 * __cdecl +FUN_00444818(undefined4 *param_1,undefined4 param_2,undefined4 param_3,int param_4, + undefined4 param_5,int param_6,undefined4 param_7) + +{ + undefined4 *puVar1; + + FUN_00444308(param_1,param_2,param_3,param_4,param_5,param_7); + *param_1 = &PTR_FUN_004ee088; + if (param_4 == 0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = (undefined4 *)FUN_00447f84(param_4,param_6); + } + FUN_0044ad78(param_1 + 0x12,puVar1); + return param_1; +} + + + +/* @00444870 file=? name=FUN_00444870 */ + +void __cdecl FUN_00444870(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004ee088; + FUN_0044ae0c(param_1 + 0x12,2); + FUN_00444360(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004448ac file=? name=FUN_004448ac */ + +void FUN_004448ac(void) + +{ + FUN_004443a4(); + return; +} + + + +/* @004448bc file=? name=FUN_004448bc */ + +void __cdecl FUN_004448bc(int param_1,char *param_2) + +{ + char cVar1; + uint uVar2; + uint uVar3; + char *pcVar4; + char *pcVar5; + char local_54 [80]; + + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_GraphicGauge__004ee01d,(char *)0x0); + uVar2 = 0xffffffff; + do { + pcVar4 = param_2; + if (uVar2 == 0) break; + uVar2 = uVar2 - 1; + pcVar4 = param_2 + 1; + cVar1 = *param_2; + param_2 = pcVar4; + } while (cVar1 != '\0'); + uVar2 = ~uVar2; + pcVar4 = pcVar4 + -uVar2; + pcVar5 = local_54; + for (uVar3 = uVar2 >> 2; uVar3 != 0; uVar3 = uVar3 - 1) { + *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4; + pcVar4 = pcVar4 + 4; + pcVar5 = pcVar5 + 4; + } + for (uVar2 = uVar2 & 3; uVar2 != 0; uVar2 = uVar2 - 1) { + *pcVar5 = *pcVar4; + pcVar4 = pcVar4 + 1; + pcVar5 = pcVar5 + 1; + } + FUN_004d49b8(local_54,&DAT_004ee02c); + (**(code **)(*(int *)(param_1 + 0x48) + 4))(param_1 + 0x48,local_54); + FUN_004443b4(param_1,local_54); + return; +} + + + +/* @0044494b file=? name=FUN_0044494b */ + +undefined4 * __cdecl FUN_0044494b(undefined4 *param_1,undefined4 param_2) + +{ + FUN_00417be0(param_1,param_2); + *param_1 = &PTR_FUN_004ee080; + return param_1; +} + + + +/* @0044496a file=? name=FUN_0044496a */ + +void __cdecl FUN_0044496a(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004ee080; + FUN_00417c0c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00444996 file=? name=FUN_00444996 */ + +undefined4 * __cdecl FUN_00444996(undefined4 *param_1,int param_2) + +{ + FUN_00417d00(param_1,param_2); + *param_1 = &PTR_FUN_004ee030; + return param_1; +} + + + +/* @004449b5 file=? name=FUN_004449b5 */ + +undefined4 * __cdecl FUN_004449b5(undefined4 *param_1,int param_2) + +{ + FUN_00417d00(param_1,param_2); + *param_1 = &PTR_FUN_004ee030; + return param_1; +} + + + +/* @004449d4 file=? name=FUN_004449d4 */ + +undefined4 * __cdecl FUN_004449d4(undefined4 *param_1,int param_2) + +{ + FUN_00417d28(param_1,param_2); + *param_1 = &PTR_FUN_004ee030; + return param_1; +} + + + +/* @004449f3 file=? name=FUN_004449f3 */ + +void __cdecl FUN_004449f3(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004ee030; + FUN_00417d54(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00444a1f file=? name=FUN_00444a1f */ + +void __cdecl FUN_00444a1f(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + FUN_0044ae0c(param_1 + 9,2); + FUN_00443f7c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00444a53 file=? name=FUN_00444a53 */ + +void __cdecl FUN_00444a53(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + FUN_00443f7c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00444a7c file=? name=FUN_00444a7c */ + +undefined4 * __cdecl FUN_00444a7c(undefined4 *param_1) + +{ + *param_1 = &PTR_FUN_004ee2c0; + FUN_00444f5f(param_1 + 2,0); + FUN_00444f5f(param_1 + 6,0); + FUN_00444f5f(param_1 + 10,0); + param_1[1] = 0; + return param_1; +} + + + +/* @00444ac0 file=? name=FUN_00444ac0 */ + +void __cdecl FUN_00444ac0(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004ee2c0; + FUN_00444d6c((int)param_1); + FUN_00444f7e(param_1 + 10,2); + FUN_00444f7e(param_1 + 6,2); + FUN_00444f7e(param_1 + 2,2); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00444b14 file=? name=FUN_00444b14 */ + +undefined4 FUN_00444b14(void) + +{ + return 1; +} + + + +/* @00444b20 file=? name=FUN_00444b20 */ + +void __cdecl FUN_00444b20(int param_1,uint param_2) + +{ + int *piVar1; + int local_10 [3]; + + if (param_2 != *(uint *)(param_1 + 4)) { + *(uint *)(param_1 + 4) = param_2; + FUN_00444b8c(param_1,param_2); + FUN_00444c0c(param_1,param_2); + } + FUN_00444fc9(local_10,param_1 + 0x18); + while( true ) { + piVar1 = (int *)(**(code **)(local_10[0] + 0x28))(local_10); + if (piVar1 == (int *)0x0) break; + (**(code **)(*piVar1 + 0x10))(piVar1,0); + } + FUN_00445007(local_10,2); + return; +} + + + +/* @00444b8c file=? name=FUN_00444b8c */ + +void __cdecl FUN_00444b8c(int param_1,uint param_2) + +{ + int *piVar1; + int local_10 [3]; + + FUN_00444fc9(local_10,param_1 + 0x28); + while( true ) { + piVar1 = (int *)(**(code **)(local_10[0] + 0x30))(local_10); + if (piVar1 == (int *)0x0) break; + if ((piVar1[4] & param_2) == 0) { + (**(code **)(local_10[0] + 0xc))(local_10); + } + else { + (**(code **)(local_10[0] + 0x48))(local_10); + (**(code **)(*(int *)(param_1 + 0x18) + 4))(param_1 + 0x18,piVar1); + (**(code **)(*piVar1 + 0x10))(piVar1,1); + } + } + FUN_00445007(local_10,2); + return; +} + + + +/* @00444c0c file=? name=FUN_00444c0c */ + +void __cdecl FUN_00444c0c(int param_1,uint param_2) + +{ + int iVar1; + int local_10 [3]; + + FUN_00444fc9(local_10,param_1 + 0x18); + while( true ) { + iVar1 = (**(code **)(local_10[0] + 0x30))(local_10); + if (iVar1 == 0) break; + if ((*(uint *)(iVar1 + 0x10) & param_2) == 0) { + (**(code **)(local_10[0] + 0x48))(local_10); + (**(code **)(*(int *)(param_1 + 0x28) + 4))(param_1 + 0x28,iVar1); + } + else { + (**(code **)(local_10[0] + 0xc))(local_10); + } + } + FUN_00445007(local_10,2); + return; +} + + + +/* @00444c80 file=? name=FUN_00444c80 */ + +int __cdecl FUN_00444c80(int param_1,int param_2,int param_3) + +{ + int iVar1; + int local_10 [3]; + + FUN_00444fc9(local_10,param_1 + 8); + do { + iVar1 = (**(code **)(local_10[0] + 0x28))(local_10); + if (iVar1 == 0) { + iVar1 = 0; + FUN_00445007(local_10,2); + return iVar1; + } + } while ((param_2 != *(int *)(iVar1 + 0xc)) || (param_3 != *(int *)(iVar1 + 0x10))); + FUN_00445007(local_10,2); + return iVar1; +} + + + +/* @00444cf0 file=? name=FUN_00444cf0 */ + +void __cdecl FUN_00444cf0(int param_1,int param_2) + +{ + (**(code **)(*(int *)(param_1 + 8) + 4))(param_1 + 8,param_2); + if ((*(uint *)(param_2 + 0x10) & *(uint *)(param_1 + 4)) == 0) { + (**(code **)(*(int *)(param_1 + 0x28) + 4))(param_1 + 0x28,param_2); + } + else { + (**(code **)(*(int *)(param_1 + 0x18) + 4))(param_1 + 0x18,param_2); + } + return; +} + + + +/* @00444d3c file=? name=FUN_00444d3c */ + +void __cdecl FUN_00444d3c(int param_1,int param_2,int param_3) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00444c80(param_1,param_2,param_3); + if ((param_2 != 0) && (puVar1 != (undefined4 *)0x0)) { + (**(code **)*puVar1)(puVar1,3); + } + return; +} + + + +/* @00444d6c file=? name=FUN_00444d6c */ + +void __cdecl FUN_00444d6c(int param_1) + +{ + undefined4 *puVar1; + int local_10 [3]; + + FUN_00444fc9(local_10,param_1 + 8); + while( true ) { + puVar1 = (undefined4 *)(**(code **)(local_10[0] + 0x28))(local_10); + if (puVar1 == (undefined4 *)0x0) break; + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + } + FUN_00445007(local_10,2); + return; +} + + + +/* @00444dbc file=? name=FUN_00444dbc */ + +undefined4 * __cdecl +FUN_00444dbc(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) + +{ + FUN_004178cc(param_1,0x23); + *param_1 = &PTR_FUN_004ee2a8; + param_1[3] = param_2; + param_1[4] = param_3; + param_1[5] = 0xffffffff; + param_1[6] = param_4; + param_1[7] = 0; + FUN_00444cf0(param_1[6],(int)param_1); + return param_1; +} + + + +/* @00444e04 file=? name=FUN_00444e04 */ + +void __cdecl FUN_00444e04(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004ee2a8; + FUN_0041790c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00444e30 file=? name=FUN_00444e30 */ + +undefined4 FUN_00444e30(void) + +{ + return 1; +} + + + +/* @00444e3c file=? name=FUN_00444e3c */ + +void __cdecl FUN_00444e3c(int *param_1,int param_2) + +{ + if ((param_2 != param_1[5]) && + (param_1[5] = param_2, (*(uint *)(param_1[6] + 4) & param_1[4]) != 0)) { + (**(code **)(*param_1 + 0x14))(param_1); + } + return; +} + + + +/* @00444e64 file=? name=FUN_00444e64 */ + +void __cdecl FUN_00444e64(int *param_1,int param_2) + +{ + if (param_2 == 0) { + param_1[7] = param_1[7] + -1; + if (param_1[7] < 0) { + param_1[7] = 0; + } + } + else { + param_1[7] = param_1[7] + 1; + } + if ((*(uint *)(param_1[6] + 4) & param_1[4]) != 0) { + (**(code **)(*param_1 + 0x14))(param_1); + } + return; +} + + + +/* @00444e9c file=munga/lamp.cpp name=FUN_00444e9c */ + +void FUN_00444e9c(void) + +{ + FUN_0040385c(s_Lamp__Update_method_not_overridd_004ee1f9,s_d__tesla_bt_munga_LAMP_CPP_004ee21d, + 0x14f); + return; +} + + + +/* @00444eb8 file=? name=FUN_00444eb8 */ + +void FUN_00444eb8(void) + +{ + return; +} + + + +/* @00444ec0 file=? name=FUN_00444ec0 */ + +undefined4 * __cdecl +FUN_00444ec0(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4, + int param_5,int param_6) + +{ + undefined4 *puVar1; + + FUN_00444dbc(param_1,param_2,param_3,param_4); + *param_1 = &PTR_FUN_004ee290; + param_1[8] = param_5; + if (param_5 == 0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = (undefined4 *)FUN_00447f84(param_5,param_6); + } + FUN_0044ad78(param_1 + 9,puVar1); + return param_1; +} + + + +/* @00444f14 file=? name=FUN_00444f14 */ + +void __cdecl FUN_00444f14(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004ee290; + FUN_0044ae0c(param_1 + 9,2); + FUN_00444e04(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00444f50 file=? name=FUN_00444f50 */ + +void FUN_00444f50(void) + +{ + FUN_00444e30(); + return; +} + + + +/* @00444f5f file=? name=FUN_00444f5f */ + +undefined4 * __cdecl FUN_00444f5f(undefined4 *param_1,undefined4 param_2) + +{ + FUN_00417be0(param_1,param_2); + *param_1 = &PTR_FUN_004ee288; + return param_1; +} + + + +/* @00444f7e file=? name=FUN_00444f7e */ + +void __cdecl FUN_00444f7e(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004ee288; + FUN_00417c0c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00444faa file=? name=FUN_00444faa */ + +undefined4 * __cdecl FUN_00444faa(undefined4 *param_1,int param_2) + +{ + FUN_00417d00(param_1,param_2); + *param_1 = &PTR_FUN_004ee238; + return param_1; +} + + + +/* @00444fc9 file=? name=FUN_00444fc9 */ + +undefined4 * __cdecl FUN_00444fc9(undefined4 *param_1,int param_2) + +{ + FUN_00417d00(param_1,param_2); + *param_1 = &PTR_FUN_004ee238; + return param_1; +} + + + +/* @00444fe8 file=? name=FUN_00444fe8 */ + +undefined4 * __cdecl FUN_00444fe8(undefined4 *param_1,int param_2) + +{ + FUN_00417d28(param_1,param_2); + *param_1 = &PTR_FUN_004ee238; + return param_1; +} + + + +/* @00445007 file=? name=FUN_00445007 */ + +void __cdecl FUN_00445007(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004ee238; + FUN_00417d54(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00445034 file=? name=FUN_00445034 */ + +undefined4 __cdecl FUN_00445034(undefined4 *param_1,char *param_2) + +{ + int iVar1; + + for (; (char *)*param_1 != (char *)0x0; param_1 = param_1 + 2) { + iVar1 = FUN_004d4b58(param_2,(char *)*param_1); + if (iVar1 == 0) break; + } + return param_1[1]; +} + + + +/* @00445064 file=? name=FUN_00445064 */ + +char * __cdecl +FUN_00445064(char *param_1,undefined4 *param_2,char *param_3,undefined4 param_4,undefined4 param_5) + +{ + char cVar1; + uint uVar2; + uint uVar3; + char *pcVar4; + char *pcVar5; + + *(undefined4 *)(param_1 + 0x28) = *param_2; + *param_2 = param_1; + uVar2 = 0xffffffff; + do { + pcVar4 = param_3; + if (uVar2 == 0) break; + uVar2 = uVar2 - 1; + pcVar4 = param_3 + 1; + cVar1 = *param_3; + param_3 = pcVar4; + } while (cVar1 != '\0'); + uVar2 = ~uVar2; + pcVar4 = pcVar4 + -uVar2; + pcVar5 = param_1; + for (uVar3 = uVar2 >> 2; uVar3 != 0; uVar3 = uVar3 - 1) { + *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4; + pcVar4 = pcVar4 + 4; + pcVar5 = pcVar5 + 4; + } + for (uVar2 = uVar2 & 3; uVar2 != 0; uVar2 = uVar2 - 1) { + *pcVar5 = *pcVar4; + pcVar4 = pcVar4 + 1; + pcVar5 = pcVar5 + 1; + } + *(undefined4 *)(param_1 + 0x20) = param_4; + *(undefined4 *)(param_1 + 0x24) = param_5; + return param_1; +} + + + +/* @004450b0 file=? name=FUN_004450b0 */ + +void __cdecl FUN_004450b0(int *param_1,byte param_2) + +{ + if ((param_1 != (int *)0x0) && ((param_2 & 1) != 0)) { + FUN_004022d0(param_1); + } + return; +} + + + +/* @004450cc file=? name=FUN_004450cc */ + +undefined4 FUN_004450cc(void) + +{ + return 1; +} + + + +/* @004450d8 file=? name=FUN_004450d8 */ + +void __cdecl FUN_004450d8(undefined4 *param_1,undefined4 param_2) + +{ + *param_1 = 0; + param_1[1] = param_2; + return; +} + + + +/* @004450ec file=? name=FUN_004450ec */ + +void __cdecl FUN_004450ec(int *param_1,byte param_2) + +{ + int *piVar1; + int *piVar2; + + if (param_1 != (int *)0x0) { + piVar2 = (int *)*param_1; + while (piVar2 != (int *)0x0) { + piVar1 = (int *)piVar2[10]; + FUN_004450b0(piVar2,3); + piVar2 = piVar1; + } + *param_1 = 0; + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00445128 file=? name=FUN_00445128 */ + +undefined4 FUN_00445128(void) + +{ + return 1; +} + + + +/* @00445134 file=munga/gaugrend.cpp name=FUN_00445134 */ + +void __cdecl FUN_00445134(undefined4 *param_1,char *param_2,int param_3) + +{ + int iVar1; + int *piVar2; + char *pcVar3; + + pcVar3 = (char *)*param_1; + do { + if (pcVar3 == (char *)0x0) { + pcVar3 = (char *)FUN_00402298(0x2c); + if (pcVar3 != (char *)0x0) { + FUN_00445064(pcVar3,param_1,param_2,param_3,1); + } + return; + } + iVar1 = FUN_004d4b58(param_2,pcVar3); + if (iVar1 == 0) { + if (*(int *)(pcVar3 + 0x24) == 0) { + iVar1 = *(int *)(pcVar3 + 0x20); + while (-1 < iVar1) { + piVar2 = (int *)(iVar1 + param_1[1]); + iVar1 = *piVar2; + *piVar2 = param_3; + } + *(int *)(pcVar3 + 0x20) = param_3; + pcVar3[0x24] = '\x01'; + pcVar3[0x25] = '\0'; + pcVar3[0x26] = '\0'; + pcVar3[0x27] = '\0'; + return; + } + FUN_004dbb24(&DAT_00524e20,s_label___004ee34d,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004ee355,(char *)0x0); + FUN_0040385c(s_Already_resolved_004ee357,s_d__tesla_bt_munga_GAUGREND_CPP_004ee368,0xec); + } + pcVar3 = *(char **)(pcVar3 + 0x28); + } while( true ); +} + + + +/* @00445218 file=? name=FUN_00445218 */ + +undefined4 __cdecl FUN_00445218(undefined4 *param_1,char *param_2,undefined4 param_3) + +{ + undefined4 uVar1; + int iVar2; + char *pcVar3; + + pcVar3 = (char *)*param_1; + while( true ) { + if (pcVar3 == (char *)0x0) { + pcVar3 = (char *)FUN_00402298(0x2c); + if (pcVar3 != (char *)0x0) { + FUN_00445064(pcVar3,param_1,param_2,param_3,0); + } + return 0xffffffff; + } + iVar2 = FUN_004d4b58(param_2,pcVar3); + if (iVar2 == 0) break; + pcVar3 = *(char **)(pcVar3 + 0x28); + } + if (*(int *)(pcVar3 + 0x24) != 0) { + return *(undefined4 *)(pcVar3 + 0x20); + } + uVar1 = *(undefined4 *)(pcVar3 + 0x20); + *(undefined4 *)(pcVar3 + 0x20) = param_3; + return uVar1; +} + + + +/* @00445280 file=? name=FUN_00445280 */ + +undefined4 __cdecl FUN_00445280(undefined4 *param_1,char *param_2) + +{ + char *pcVar1; + int iVar2; + + pcVar1 = (char *)*param_1; + while( true ) { + if (pcVar1 == (char *)0x0) { + return 0xfffffffd; + } + iVar2 = FUN_004d4b58(param_2,pcVar1); + if (iVar2 == 0) break; + pcVar1 = *(char **)(pcVar1 + 0x28); + } + if (*(int *)(pcVar1 + 0x24) != 0) { + return *(undefined4 *)(pcVar1 + 0x20); + } + return 0xfffffffe; +} + + + +/* @004452c4 file=? name=FUN_004452c4 */ + +int __cdecl FUN_004452c4(int *param_1,int param_2) + +{ + int iVar1; + + iVar1 = *param_1; + while( true ) { + if (iVar1 == 0) { + return 0; + } + if (param_2 == *(int *)(iVar1 + 0x20)) break; + iVar1 = *(int *)(iVar1 + 0x28); + } + if (*(int *)(iVar1 + 0x24) != 0) { + return iVar1; + } + return 0; +} + + + +/* @004452f0 file=? name=FUN_004452f0 */ + +undefined4 __cdecl FUN_004452f0(int *param_1) + +{ + int iVar1; + + iVar1 = *param_1; + while( true ) { + if (iVar1 == 0) { + return 0; + } + if (*(int *)(iVar1 + 0x24) == 0) break; + iVar1 = *(int *)(iVar1 + 0x28); + } + return 1; +} + + + +/* @00445314 file=? name=FUN_00445314 */ + +undefined4 * __cdecl FUN_00445314(undefined4 *param_1) + +{ + undefined4 uVar1; + undefined4 *puVar2; + int iVar3; + + FUN_004d9d34(param_1); + uVar1 = FUN_004022b0(0x20000); + param_1[0x24] = uVar1; + iVar3 = 0; + puVar2 = param_1 + 0x26; + do { + *puVar2 = 0; + iVar3 = iVar3 + 1; + puVar2 = puVar2 + 1; + } while (iVar3 < 10); + puVar2 = (undefined4 *)FUN_00402298(8); + if (puVar2 == (undefined4 *)0x0) { + uVar1 = 0; + } + else { + uVar1 = FUN_004450d8(puVar2,param_1[0x24]); + } + param_1[0x21] = uVar1; + param_1[0x22] = 0; + param_1[0x23] = 0; + param_1[0x25] = 0; + return param_1; +} + + + +/* @00445390 file=? name=FUN_00445390 */ + +void __cdecl FUN_00445390(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + if ((int *)param_1[0x22] != (int *)0x0) { + FUN_004022e8((int *)param_1[0x22]); + } + FUN_004450ec((int *)param_1[0x21],3); + FUN_004022e8((int *)param_1[0x24]); + FUN_004d9e28(param_1,2); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004453e8 file=? name=FUN_004453e8 */ + +undefined4 FUN_004453e8(void) + +{ + return 1; +} + + + +/* @004453f4 file=munga/gaugrend.cpp name=FUN_004453f4 */ + +/* WARNING: Removing unreachable block (ram,0x004456a4) */ + +int * __cdecl FUN_004453f4(int *param_1) + +{ + int *piVar1; + uint uVar2; + undefined1 uVar3; + int *piVar4; + int local_c; + + if (param_1[0x1f] != 0) { + param_1[0x1f] = 0; + return param_1 + 0xf; + } + piVar4 = param_1 + 0xf; + local_c = 0; +LAB_00445423: + do { + if ((uint)param_1[8] < (uint)param_1[9]) { + uVar2 = (uint)*(byte *)param_1[8]; + } + else { + uVar2 = (**(code **)(*param_1 + 0xc))(param_1); + } + piVar1 = param_1 + 0xf; + if (0x3f < (int)piVar1 - (int)piVar4) { + FUN_0040385c(s_Token_too_large_004ee387,s_d__tesla_bt_munga_GAUGREND_CPP_004ee397,0x240); + return (int *)0x0; + } + if ((int)uVar2 < 0) { + if (piVar1 == piVar4) { + return (int *)0x0; + } + *(undefined1 *)piVar4 = 0; + return piVar1; + } + if (uVar2 == 10) { + param_1[0x20] = param_1[0x20] + 1; + } + if (local_c == 0) { + if ((int)uVar2 < 0xe) { + if (((uVar2 == 0xd) || (uVar2 == 0)) || (uVar2 - 9 < 2)) { +LAB_004454cd: + if ((uint)param_1[8] < (uint)param_1[9]) { + param_1[8] = param_1[8] + 1; + } + else { + (**(code **)(*param_1 + 0xc))(param_1); + } + goto LAB_00445423; + } + } + else { + if (uVar2 == 0x20) goto LAB_004454cd; + if (uVar2 == 0x23) { + if ((uint)param_1[8] < (uint)param_1[9]) { + param_1[8] = param_1[8] + 1; + } + else { + (**(code **)(*param_1 + 0xc))(param_1); + } + local_c = 2; + goto LAB_00445423; + } + } + local_c = 1; + goto LAB_00445423; + } + uVar3 = (undefined1)uVar2; + if (local_c == 1) { + if ((int)uVar2 < 0x28) { + if ((int)uVar2 < 0x21) { + if (((uVar2 == 0x20) || (uVar2 == 0)) || ((uVar2 - 9 < 2 || (uVar2 - 9 == 4)))) { + if ((uint)param_1[8] < (uint)param_1[9]) { + param_1[8] = param_1[8] + 1; + } + else { + (**(code **)(*param_1 + 0xc))(param_1); + } + *(undefined1 *)piVar4 = 0; + return param_1 + 0xf; + } + } + else { + if (uVar2 == 0x22) { + if ((uint)param_1[8] < (uint)param_1[9]) { + param_1[8] = param_1[8] + 1; + } + else { + (**(code **)(*param_1 + 0xc))(param_1); + } + if (piVar4 != param_1 + 0xf) { + *(undefined1 *)piVar4 = 0; + return param_1 + 0xf; + } + local_c = 3; + goto LAB_00445423; + } + if (uVar2 == 0x23) { + if ((uint)param_1[8] < (uint)param_1[9]) { + param_1[8] = param_1[8] + 1; + } + else { + (**(code **)(*param_1 + 0xc))(param_1); + } + local_c = 2; + goto LAB_00445423; + } + } + } + else if ((int)uVar2 < 0x3e) { + if ((uVar2 == 0x3d) || (((uVar2 - 0x28 < 2 || (uVar2 == 0x2c)) || (uVar2 == 0x3b)))) { +LAB_004455cf: + if (piVar4 == param_1 + 0xf) { + if ((uint)param_1[8] < (uint)param_1[9]) { + param_1[8] = param_1[8] + 1; + } + else { + (**(code **)(*param_1 + 0xc))(param_1); + } + *(undefined1 *)piVar4 = uVar3; + piVar4 = (int *)((int)piVar4 + 1); + } + *(undefined1 *)piVar4 = 0; + return param_1 + 0xf; + } + } + else if ((uVar2 == 0x7b) || (uVar2 == 0x7d)) goto LAB_004455cf; + if ((uint)param_1[8] < (uint)param_1[9]) { + param_1[8] = param_1[8] + 1; + } + else { + (**(code **)(*param_1 + 0xc))(param_1); + } + *(undefined1 *)piVar4 = uVar3; + piVar4 = (int *)((int)piVar4 + 1); + goto LAB_00445423; + } + if (local_c == 2) { + if ((uint)param_1[8] < (uint)param_1[9]) { + param_1[8] = param_1[8] + 1; + } + else { + (**(code **)(*param_1 + 0xc))(param_1); + } + if ((uVar2 == 10) || (uVar2 == 0xd)) { + if (piVar4 != param_1 + 0xf) { + *(undefined1 *)piVar4 = 0; + return param_1 + 0xf; + } + local_c = 0; + } + } + else if (local_c == 3) { + if ((uint)param_1[8] < (uint)param_1[9]) { + param_1[8] = param_1[8] + 1; + } + else { + (**(code **)(*param_1 + 0xc))(param_1); + } + if (uVar2 == 0x22) { + *(undefined1 *)piVar4 = 0; + return param_1 + 0xf; + } + *(undefined1 *)piVar4 = uVar3; + piVar4 = (int *)((int)piVar4 + 1); + } + } while( true ); +} + + + +/* @004456c4 file=? name=FUN_004456c4 */ + +void __cdecl FUN_004456c4(int param_1) + +{ + *(undefined4 *)(param_1 + 0x7c) = 1; + return; +} + + + +/* @004456d4 file=? name=FUN_004456d4 */ + +undefined4 __cdecl FUN_004456d4(int *param_1,int *param_2) + +{ + char cVar1; + int *piVar2; + uint uVar3; + int iVar4; + bool bVar5; + + piVar2 = FUN_004453f4(param_1); + iVar4 = 0; + bVar5 = (char)*piVar2 == '-'; + if (bVar5) { + piVar2 = (int *)((int)piVar2 + 1); + } + if (((char)*piVar2 == '0') && (piVar2 = (int *)((int)piVar2 + 1), *(char *)piVar2 == '\0')) { + *param_2 = 0; + } + else { + if (((char)*piVar2 == 'x') || ((char)*piVar2 == 'X')) { + while( true ) { + piVar2 = (int *)((int)piVar2 + 1); + if (*(char *)piVar2 == '\0') break; + uVar3 = FUN_004dc8c4((int)*(char *)piVar2); + if (((&DAT_005207dd)[uVar3] & 0x10) == 0) { + return 0; + } + if (0x39 < (int)uVar3) { + uVar3 = uVar3 - 7; + } + iVar4 = uVar3 + iVar4 * 0x10 + -0x30; + } + } + else { + for (; cVar1 = (char)*piVar2, cVar1 != '\0'; piVar2 = (int *)((int)piVar2 + 1)) { + if (((&DAT_005207dd)[cVar1] & 2) == 0) { + return 0; + } + iVar4 = (int)cVar1 + iVar4 * 10 + -0x30; + } + } + if (bVar5) { + iVar4 = -iVar4; + } + *param_2 = iVar4; + } + return 1; +} + + + +/* @004457a0 file=? name=FUN_004457a0 */ + +undefined4 __thiscall FUN_004457a0(void *this,int *param_1,float *param_2) + +{ + int *piVar1; + int iVar2; + undefined4 uVar3; + bool bVar4; + void *local_8; + + piVar1 = FUN_004453f4(param_1); + bVar4 = (char)*piVar1 == '-'; + if (bVar4) { + piVar1 = (int *)((int)piVar1 + 1); + } + iVar2 = FUN_004d7f84(piVar1,&DAT_004ee3e5); + if (iVar2 < 1) { + FUN_00445a6c((int)param_1,s_Token_not_a_scalar_value_004ee3e8); + uVar3 = 0; + } + else { + local_8 = this; + if (bVar4) { + local_8 = (void *)-(float)this; + } + *param_2 = (float)local_8; + uVar3 = 1; + } + return uVar3; +} + + + +/* @00445808 file=? name=FUN_00445808 */ + +undefined4 __cdecl FUN_00445808(int *param_1,int *param_2) + +{ + char *pcVar1; + int *piVar2; + undefined4 uVar3; + int iVar4; + char *pcVar5; + bool bVar6; + int local_c; + int local_8; + + piVar2 = FUN_004453f4(param_1); + pcVar5 = &DAT_004ee401; + do { + bVar6 = (char)*piVar2 == *pcVar5; + if (!bVar6) break; + if ((char)*piVar2 == '\0') goto LAB_00445851; + pcVar1 = (char *)((int)piVar2 + 1); + bVar6 = *pcVar1 == pcVar5[1]; + if (!bVar6) break; + piVar2 = (int *)((int)piVar2 + 2); + pcVar5 = pcVar5 + 2; + bVar6 = *pcVar1 == '\0'; + } while (!bVar6); + if (bVar6) { +LAB_00445851: + iVar4 = FUN_004456d4(param_1,&local_c); + if (iVar4 == 0) { + uVar3 = 0; + } + else { + piVar2 = FUN_004453f4(param_1); + pcVar5 = &DAT_004ee425; + do { + bVar6 = (char)*piVar2 == *pcVar5; + if (!bVar6) break; + if ((char)*piVar2 == '\0') goto LAB_004458a5; + pcVar1 = (char *)((int)piVar2 + 1); + bVar6 = *pcVar1 == pcVar5[1]; + if (!bVar6) break; + piVar2 = (int *)((int)piVar2 + 2); + pcVar5 = pcVar5 + 2; + bVar6 = *pcVar1 == '\0'; + } while (!bVar6); + if (bVar6) { +LAB_004458a5: + iVar4 = FUN_004456d4(param_1,&local_8); + if (iVar4 == 0) { + uVar3 = 0; + } + else { + piVar2 = FUN_004453f4(param_1); + pcVar5 = &DAT_004ee441; + do { + bVar6 = (char)*piVar2 == *pcVar5; + if (!bVar6) break; + if ((char)*piVar2 == '\0') goto LAB_004458f6; + pcVar1 = (char *)((int)piVar2 + 1); + bVar6 = *pcVar1 == pcVar5[1]; + if (!bVar6) break; + piVar2 = (int *)((int)piVar2 + 2); + pcVar5 = pcVar5 + 2; + bVar6 = *pcVar1 == '\0'; + } while (!bVar6); + if (bVar6) { +LAB_004458f6: + uVar3 = 1; + *param_2 = local_c; + param_2[1] = local_8; + } + else { + FUN_00445a6c((int)param_1,s_Missing_trailing_____for_2D_vect_004ee443); + uVar3 = 0; + } + } + } + else { + FUN_00445a6c((int)param_1,s_Missing_____for_2D_vector_004ee427); + uVar3 = 0; + } + } + } + else { + FUN_00445a6c((int)param_1,s_Missing_leading_____for_2D_vecto_004ee403); + uVar3 = 0; + } + return uVar3; +} + + + +/* @00445910 file=? name=FUN_00445910 */ + +undefined4 __cdecl FUN_00445910(int *param_1,undefined4 *param_2) + +{ + int *piVar1; + uint uVar2; + undefined4 uVar3; + + piVar1 = FUN_004453f4(param_1); + if (((&DAT_005207dd)[(char)*piVar1] & 0xc) == 0) { + FUN_00445a6c((int)param_1,s_Token_is_not_a_valid_rate_004ee466); + } + else { + uVar2 = FUN_004dc8c4((int)(char)*piVar1); + if ((0x40 < (int)uVar2) && ((int)uVar2 < 0x5b)) { + uVar3 = FUN_004442f8(uVar2 - 0x41); + *param_2 = uVar3; + return 1; + } + FUN_00445a6c((int)param_1,s_Token_is_not_a_valid_rate_004ee480); + } + return 0; +} + + + +/* @00445978 file=? name=FUN_00445978 */ + +uint __cdecl FUN_00445978(int *param_1,int *param_2) + +{ + char cVar1; + int *piVar2; + uint uVar3; + uint extraout_EDX; + bool bVar4; + bool bVar5; + int local_8; + + piVar2 = FUN_004453f4(param_1); + local_8 = 0; + bVar4 = (char)*piVar2 == '-'; + if (bVar4) { + piVar2 = (int *)((int)piVar2 + 1); + } + if (((&DAT_005207dd)[(char)*piVar2] & 0xc) == 0) { + bVar5 = (char)*piVar2 == '0'; + if (bVar5) { + piVar2 = (int *)((int)piVar2 + 1); + } + if (((char)*piVar2 == 'x') || ((char)*piVar2 == 'X')) { + while( true ) { + piVar2 = (int *)((int)piVar2 + 1); + if (*(char *)piVar2 == '\0') break; + uVar3 = FUN_004dc8c4((int)*(char *)piVar2); + if (((&DAT_005207dd)[uVar3] & 0x10) == 0) { + return extraout_EDX; + } + if (0x39 < (int)uVar3) { + uVar3 = uVar3 - 7; + } + local_8 = local_8 * 0x10 + (uVar3 - 0x30); + } + uVar3 = 1; + } + else { + for (; cVar1 = (char)*piVar2, cVar1 != '\0'; piVar2 = (int *)((int)piVar2 + 1)) { + if (((&DAT_005207dd)[cVar1] & 2) == 0) { + return (uint)bVar5; + } + local_8 = local_8 * 10 + cVar1 + -0x30; + } + uVar3 = 1; + } + } + else { + uVar3 = (**(code **)**(undefined4 **)(DAT_004efc94 + 0x50)) + (*(undefined4 **)(DAT_004efc94 + 0x50),piVar2,&local_8); + } + if (uVar3 == 1) { + if (bVar4) { + local_8 = -local_8; + } + *param_2 = local_8; + } + return uVar3; +} + + + +/* @00445a6c file=munga/gaugrend.cpp name=FUN_00445a6c */ + +void __cdecl FUN_00445a6c(int param_1,char *param_2) + +{ + uint uVar1; + int *piVar2; + + uVar1 = *(uint *)(param_1 + 0x80); + FUN_004dbb24(&DAT_00524e20,s_Interpreter_parsing_error__004ee49a,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_in_line_004ee4b5,(char *)0x0); + piVar2 = FUN_004db78c(&DAT_00524e20,uVar1); + FUN_004dbb24(piVar2,&DAT_004ee4bf,(char *)0x0); + FUN_0040385c(s_Parsing_error_004ee4c1,s_d__tesla_bt_munga_GAUGREND_CPP_004ee4cf,0x447); + return; +} + + + +/* @00445af0 file=? name=FUN_00445af0 */ + +void __cdecl FUN_00445af0(int *param_1,LPCSTR param_2,int *param_3) + +{ + int *piVar1; + int *piVar2; + int *piVar3; + int iVar4; + uint uVar5; + uint uVar6; + char *pcVar7; + char *pcVar8; + char local_28 [35]; + undefined1 local_5; + + param_1[0x23] = 0; + piVar3 = param_3; + while (piVar3 != (int *)0x0) { + piVar2 = (int *)*piVar3; + piVar3 = piVar3 + 1; + if (*piVar2 == 0) { + piVar3 = (int *)piVar2[3]; + } + else { + param_1[0x23] = param_1[0x23] + 1; + } + } + piVar2 = (int *)FUN_004022b0(param_1[0x23] << 2); + param_1[0x22] = (int)piVar2; + piVar3 = param_3; + while (piVar3 != (int *)0x0) { + piVar1 = (int *)*piVar3; + piVar3 = piVar3 + 1; + if (*piVar1 == 0) { + piVar3 = (int *)piVar1[3]; + } + else { + *piVar2 = (int)piVar1; + piVar2 = piVar2 + 1; + } + } + FUN_004d9f60((int)param_1,param_2,0x21,DAT_00520540); + if ((short)param_1[0xc] == 0) { + FUN_004dbb24(&DAT_00524e20,s_Cannot_open_interpreter_file___004ee4ee,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004ee50d,(char *)0x0); + } + else { + param_1[0x20] = 1; + param_1[0x1f] = 0; + while (piVar3 = FUN_004453f4(param_1), piVar3 != (int *)0x0) { + uVar5 = 0xffffffff; + do { + piVar2 = piVar3; + if (uVar5 == 0) break; + uVar5 = uVar5 - 1; + piVar2 = (int *)((int)piVar3 + 1); + iVar4 = *piVar3; + piVar3 = piVar2; + } while ((char)iVar4 != '\0'); + uVar5 = ~uVar5; + pcVar8 = (char *)((int)piVar2 - uVar5); + pcVar7 = local_28; + for (uVar6 = uVar5 >> 2; uVar6 != 0; uVar6 = uVar6 - 1) { + *(undefined4 *)pcVar7 = *(undefined4 *)pcVar8; + pcVar8 = pcVar8 + 4; + pcVar7 = pcVar7 + 4; + } + for (uVar5 = uVar5 & 3; uVar5 != 0; uVar5 = uVar5 - 1) { + *pcVar7 = *pcVar8; + pcVar8 = pcVar8 + 1; + pcVar7 = pcVar7 + 1; + } + pcVar8 = &DAT_004ee510; + piVar3 = FUN_004453f4(param_1); + iVar4 = FUN_004d4b58((char *)piVar3,pcVar8); + if (iVar4 != 0) { + FUN_00445a6c((int)param_1,s_Missing_____004ee512); + } + FUN_00445134((undefined4 *)param_1[0x21],local_28,param_1[0x25]); + FUN_00445c94(param_1,param_3); + } + iVar4 = FUN_004452f0((int *)param_1[0x21]); + if (iVar4 != 0) { + FUN_00445a6c((int)param_1,s_Unresolved_forward_references_004ee51e); + } + FUN_004d9cc4(param_1); + local_5 = 0; + FUN_004461c8((int)param_1,&local_5,1); + } + return; +} + + + +/* @00445c94 file=? name=FUN_00445c94 */ + +void __cdecl FUN_00445c94(int *param_1,int *param_2) + +{ + int *piVar1; + int iVar2; + uint uVar3; + uint uVar4; + char *pcVar5; + int *piVar6; + int *piVar7; + char *pcVar8; + bool bVar9; + char local_3c [32]; + undefined4 local_1c; + int local_18 [2]; + int local_10; + int local_c; + byte local_6 [2]; + + do { + piVar1 = FUN_004453f4(param_1); + if (piVar1 == (int *)0x0) { + FUN_00445a6c((int)param_1,s_Internal_error__NULL_token__004ee53c); + } + uVar3 = 0xffffffff; + piVar6 = piVar1; + do { + piVar7 = piVar6; + if (uVar3 == 0) break; + uVar3 = uVar3 - 1; + piVar7 = (int *)((int)piVar6 + 1); + iVar2 = *piVar6; + piVar6 = piVar7; + } while ((char)iVar2 != '\0'); + uVar3 = ~uVar3; + pcVar5 = (char *)((int)piVar7 - uVar3); + pcVar8 = local_3c; + for (uVar4 = uVar3 >> 2; uVar4 != 0; uVar4 = uVar4 - 1) { + *(undefined4 *)pcVar8 = *(undefined4 *)pcVar5; + pcVar5 = pcVar5 + 4; + pcVar8 = pcVar8 + 4; + } + for (uVar3 = uVar3 & 3; uVar3 != 0; uVar3 = uVar3 - 1) { + *pcVar8 = *pcVar5; + pcVar5 = pcVar5 + 1; + pcVar8 = pcVar8 + 1; + } + iVar2 = FUN_004d4b58((char *)piVar1,&DAT_004ee558); + if (iVar2 == 0) { + local_6[1] = 1; + FUN_004461c8((int)param_1,local_6 + 1,1); + return; + } + if ((char)*piVar1 == '@') { + iVar2 = FUN_004d4a78((char *)piVar1); + if (iVar2 != 2) { + FUN_00445a6c((int)param_1,s_Ill_formed_attribute_variable_in_004ee55a); + } + local_6[0] = *(char *)((int)piVar1 + 1) - 0x30; + if (10 < local_6[0]) { + FUN_00445a6c((int)param_1,s_Illegal_attribute_variable_index_004ee57e); + } + piVar1 = FUN_004453f4(param_1); + pcVar5 = &DAT_004ee59f; + do { + bVar9 = (char)*piVar1 == *pcVar5; + if (!bVar9) break; + if ((char)*piVar1 == '\0') goto LAB_00445d8c; + pcVar8 = (char *)((int)piVar1 + 1); + bVar9 = *pcVar8 == pcVar5[1]; + if (!bVar9) break; + piVar1 = (int *)((int)piVar1 + 2); + pcVar5 = pcVar5 + 2; + bVar9 = *pcVar8 == '\0'; + } while (!bVar9); + if (!bVar9) { + FUN_00445a6c((int)param_1,s_Missing_____004ee5a1); + } +LAB_00445d8c: + local_6[1] = 7; + FUN_004461c8((int)param_1,local_6 + 1,1); + FUN_004461c8((int)param_1,local_6,1); + piVar1 = FUN_004453f4(param_1); + FUN_0044621c((int)param_1,(char *)piVar1); + } + else { + iVar2 = FUN_004d4b58((char *)piVar1,s_enable_004ee5ad); + if (iVar2 == 0) { + piVar1 = FUN_004453f4(param_1); + pcVar5 = &DAT_004ee5b4; + do { + bVar9 = (char)*piVar1 == *pcVar5; + if (!bVar9) break; + if ((char)*piVar1 == '\0') goto LAB_00445e0e; + pcVar8 = (char *)((int)piVar1 + 1); + bVar9 = *pcVar8 == pcVar5[1]; + if (!bVar9) break; + piVar1 = (int *)((int)piVar1 + 2); + pcVar5 = pcVar5 + 2; + bVar9 = *pcVar8 == '\0'; + } while (!bVar9); + if (!bVar9) { + FUN_00445a6c((int)param_1,s_Missing_____004ee5b6); + } +LAB_00445e0e: + FUN_00445978(param_1,&local_c); + local_6[1] = 5; + FUN_004461c8((int)param_1,local_6 + 1,1); + FUN_004461c8((int)param_1,(undefined1 *)&local_c,4); + } + else { + iVar2 = FUN_004d4b58((char *)piVar1,s_disable_004ee5c2); + if (iVar2 == 0) { + piVar1 = FUN_004453f4(param_1); + pcVar5 = &DAT_004ee5ca; + do { + bVar9 = (char)*piVar1 == *pcVar5; + if (!bVar9) break; + if ((char)*piVar1 == '\0') goto LAB_00445e8c; + pcVar8 = (char *)((int)piVar1 + 1); + bVar9 = *pcVar8 == pcVar5[1]; + if (!bVar9) break; + piVar1 = (int *)((int)piVar1 + 2); + pcVar5 = pcVar5 + 2; + bVar9 = *pcVar8 == '\0'; + } while (!bVar9); + if (!bVar9) { + FUN_00445a6c((int)param_1,s_Missing_____004ee5cc); + } +LAB_00445e8c: + FUN_00445978(param_1,&local_10); + local_6[1] = 6; + FUN_004461c8((int)param_1,local_6 + 1,1); + FUN_004461c8((int)param_1,(undefined1 *)&local_10,4); + } + else { + iVar2 = FUN_004d4b58((char *)piVar1,s_offset_004ee5d8); + if (iVar2 == 0) { + piVar1 = FUN_004453f4(param_1); + pcVar5 = &DAT_004ee5df; + do { + bVar9 = (char)*piVar1 == *pcVar5; + if (!bVar9) break; + if ((char)*piVar1 == '\0') goto LAB_00445f0a; + pcVar8 = (char *)((int)piVar1 + 1); + bVar9 = *pcVar8 == pcVar5[1]; + if (!bVar9) break; + piVar1 = (int *)((int)piVar1 + 2); + pcVar5 = pcVar5 + 2; + bVar9 = *pcVar8 == '\0'; + } while (!bVar9); + if (!bVar9) { + FUN_00445a6c((int)param_1,s_Missing_____004ee5e1); + } +LAB_00445f0a: + FUN_00445808(param_1,local_18); + local_6[1] = 3; + FUN_004461c8((int)param_1,local_6 + 1,1); + FUN_004461c8((int)param_1,(undefined1 *)local_18,8); + } + else { + iVar2 = FUN_004d4b58((char *)piVar1,&DAT_004ee5ed); + if (iVar2 == 0) { + piVar1 = FUN_004453f4(param_1); + pcVar5 = &DAT_004ee5f2; + do { + bVar9 = (char)*piVar1 == *pcVar5; + if (!bVar9) break; + if ((char)*piVar1 == '\0') goto LAB_00445f88; + pcVar8 = (char *)((int)piVar1 + 1); + bVar9 = *pcVar8 == pcVar5[1]; + if (!bVar9) break; + piVar1 = (int *)((int)piVar1 + 2); + pcVar5 = pcVar5 + 2; + bVar9 = *pcVar8 == '\0'; + } while (!bVar9); + if (!bVar9) { + FUN_00445a6c((int)param_1,s_Missing_____004ee5f4); + } +LAB_00445f88: + local_6[1] = 2; + FUN_004461c8((int)param_1,local_6 + 1,1); + piVar1 = FUN_004453f4(param_1); + FUN_0044621c((int)param_1,(char *)piVar1); + } + else { + piVar1 = FUN_004453f4(param_1); + iVar2 = FUN_004d4b58((char *)piVar1,&DAT_004ee600); + if (iVar2 == 0) { + iVar2 = FUN_00446098(param_1,local_3c,param_2); + if (iVar2 == 0) { + FUN_00445a6c((int)param_1,s_Undefined_primitive_004ee602); + } + pcVar5 = &DAT_004ee616; + piVar1 = FUN_004453f4(param_1); + iVar2 = FUN_004d4b58((char *)piVar1,pcVar5); + if (iVar2 != 0) { + FUN_00445a6c((int)param_1,s_Missing_____004ee618); + } + } + else { + FUN_004456c4((int)param_1); + local_6[1] = 4; + FUN_004461c8((int)param_1,local_6 + 1,1); + local_1c = FUN_00445218((undefined4 *)param_1[0x21],local_3c,param_1[0x25]); + FUN_004461c8((int)param_1,(undefined1 *)&local_1c,4); + } + } + } + } + } + } + pcVar5 = &DAT_004ee624; + piVar1 = FUN_004453f4(param_1); + iVar2 = FUN_004d4b58((char *)piVar1,pcVar5); + if (iVar2 != 0) { + FUN_00445a6c((int)param_1,s_Missing_____004ee626); + } + } while( true ); +} + + + +/* @00446098 file=? name=FUN_00446098 */ + +undefined4 __cdecl FUN_00446098(int *param_1,char *param_2,int *param_3) + +{ + undefined4 *puVar1; + bool bVar2; + int iVar3; + int *piVar4; + int iVar5; + char *pcVar6; + int *local_14; + int *local_10; + char local_5; + + local_5 = '\b'; + bVar2 = true; + while( true ) { + while( true ) { + if (param_3 == (int *)0x0) { + return 0; + } + puVar1 = (undefined4 *)*param_3; + param_3 = param_3 + 1; + if ((char *)*puVar1 != (char *)0x0) break; + param_3 = (int *)puVar1[3]; + } + iVar3 = FUN_004d4b58((char *)*puVar1,param_2); + if (iVar3 == 0) break; + local_5 = local_5 + '\x01'; + } + iVar3 = 0; + local_10 = puVar1 + 2; + while( true ) { + if (*local_10 == 0) { + FUN_004461c8((int)param_1,&local_5,1); + iVar3 = 0; + for (local_14 = puVar1 + 2; *local_14 != 0; local_14 = local_14 + 0x11) { + FUN_00446fdc(puVar1 + iVar3 * 0x11 + 2,(int)param_1); + iVar3 = iVar3 + 1; + } + return 1; + } + if (bVar2) { + bVar2 = false; + } + else { + pcVar6 = &DAT_004ee632; + piVar4 = FUN_004453f4(param_1); + iVar5 = FUN_004d4b58((char *)piVar4,pcVar6); + if (iVar5 != 0) { + FUN_00445a6c((int)param_1,s_Missing_____004ee634); + return 0; + } + } + iVar5 = FUN_00446cc0(puVar1 + iVar3 * 0x11 + 2,puVar1 + iVar3 * 0x11 + 2,param_1); + if (iVar5 == 0) break; + iVar3 = iVar3 + 1; + local_10 = local_10 + 0x11; + } + FUN_00445a6c((int)param_1,s_Wrong_or_missing_parameter_004ee640); + return 0; +} + + + +/* @004461c8 file=? name=FUN_004461c8 */ + +void __cdecl FUN_004461c8(int param_1,undefined1 *param_2,int param_3) + +{ + undefined1 uVar1; + int iVar2; + + for (; param_3 != 0; param_3 = param_3 + -1) { + iVar2 = *(int *)(param_1 + 0x94); + *(int *)(param_1 + 0x94) = *(int *)(param_1 + 0x94) + 1; + uVar1 = *param_2; + param_2 = param_2 + 1; + *(undefined1 *)(*(int *)(param_1 + 0x90) + iVar2) = uVar1; + } + return; +} + + + +/* @004461fc file=? name=FUN_004461fc */ + +int __cdecl FUN_004461fc(int param_1,int param_2) + +{ + int iVar1; + + iVar1 = *(int *)(param_1 + 0x94); + *(int *)(param_1 + 0x94) = *(int *)(param_1 + 0x94) + param_2; + return *(int *)(param_1 + 0x90) + iVar1; +} + + + +/* @0044621c file=? name=FUN_0044621c */ + +void __cdecl FUN_0044621c(int param_1,char *param_2) + +{ + int iVar1; + ushort local_6; + + iVar1 = FUN_004d4a78(param_2); + local_6 = (short)iVar1 + 1; + FUN_004461c8(param_1,(undefined1 *)&local_6,2); + FUN_004461c8(param_1,param_2,(uint)local_6); + return; +} + + + +/* @00446258 file=? name=FUN_00446258 */ + +int __cdecl FUN_00446258(int param_1) + +{ + int iVar1; + ushort *puVar2; + + puVar2 = (ushort *)FUN_004461fc(param_1,2); + iVar1 = *(int *)(param_1 + 0x94); + *(int *)(param_1 + 0x94) = *(int *)(param_1 + 0x94) + (uint)*puVar2; + return *(int *)(param_1 + 0x90) + iVar1; +} + + + +/* @00446288 file=? name=FUN_00446288 */ + +void __cdecl +FUN_00446288(int param_1,char *param_2,int param_3,int param_4,int param_5,int param_6,int param_7) + +{ + int iVar1; + + iVar1 = FUN_00445280(*(undefined4 **)(param_1 + 0x84),param_2); + if (iVar1 < 0) { + FUN_004dbb24(&DAT_00524e20,s_GaugeInterpreter__undefined_labe_004ee65b,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004ee67f,(char *)0x0); + } + else { + FUN_00446310(param_1,iVar1,param_3,param_4,param_5,param_6,param_7); + } + return; +} + + + +/* @00446310 file=? name=FUN_00446310 */ + +void __cdecl +FUN_00446310(int param_1,undefined4 param_2,int param_3,int param_4,int param_5,int param_6, + int param_7) + +{ + byte bVar1; + undefined4 uVar2; + uint uVar3; + bool bVar4; + char *pcVar5; + int *piVar6; + byte *pbVar7; + int iVar8; + undefined4 *puVar9; + uint *puVar10; + int local_c; + int local_8; + + bVar4 = true; + *(undefined4 *)(param_1 + 0x94) = param_2; + local_c = param_5; + local_8 = param_6; + do { + pcVar5 = (char *)FUN_004461fc(param_1,1); + switch(*pcVar5) { + case '\0': + case '\x01': + bVar4 = false; + break; + case '\x02': + pcVar5 = (char *)FUN_00446258(param_1); + pcVar5 = FUN_004464d4(param_1,pcVar5); + iVar8 = FUN_00447f1c(param_3,pcVar5); + if (-1 < iVar8) { + param_4 = iVar8; + } + break; + case '\x03': + piVar6 = (int *)FUN_004461fc(param_1,8); + local_c = param_5 + *piVar6; + local_8 = param_6 + piVar6[1]; + break; + case '\x04': + puVar9 = (undefined4 *)FUN_004461fc(param_1,4); + uVar2 = *(undefined4 *)(param_1 + 0x94); + FUN_00446310(param_1,*puVar9,param_3,param_4,local_c,local_8,param_7); + *(undefined4 *)(param_1 + 0x94) = uVar2; + break; + case '\x05': + puVar10 = (uint *)FUN_004461fc(param_1,4); + uVar3 = *puVar10; + iVar8 = *(int *)(DAT_004efc94 + 0x50); + *(undefined4 *)(iVar8 + 8) = *(undefined4 *)(iVar8 + 4); + *(uint *)(iVar8 + 4) = *(uint *)(iVar8 + 4) | uVar3; + break; + case '\x06': + puVar10 = (uint *)FUN_004461fc(param_1,4); + uVar3 = *puVar10; + iVar8 = *(int *)(DAT_004efc94 + 0x50); + *(undefined4 *)(iVar8 + 8) = *(undefined4 *)(iVar8 + 4); + *(uint *)(iVar8 + 4) = *(uint *)(iVar8 + 4) & ~uVar3; + break; + case '\a': + pbVar7 = (byte *)FUN_004461fc(param_1,1); + bVar1 = *pbVar7; + iVar8 = FUN_00446258(param_1); + *(int *)(param_1 + 0x98 + (uint)bVar1 * 4) = iVar8; + break; + default: + FUN_004477c4(*(int *)(*(int *)(param_1 + 0x88) + (uint)(byte)(*pcVar5 - 8) * 4),param_4, + local_c,local_8,param_7,param_3); + } + } while (bVar4); + return; +} + + + +/* @004464d4 file=? name=FUN_004464d4 */ + +char * __cdecl FUN_004464d4(int param_1,char *param_2) + +{ + byte bVar1; + + if (((*param_2 == '@') && (bVar1 = param_2[1], 0x2f < bVar1)) && (bVar1 < 0x3a)) { + param_2 = *(char **)(param_1 + -0x28 + (uint)bVar1 * 4); + } + return param_2; +} + + + +/* @004464fc file=? name=FUN_004464fc */ + +void __cdecl FUN_004464fc(int param_1) + +{ + byte bVar1; + undefined4 *puVar2; + char *pcVar3; + int *piVar4; + byte *pbVar5; + uint *puVar6; + undefined *puVar7; + uint uVar8; + int local_1c; + uint local_c; + uint local_8; + + *(undefined4 *)(param_1 + 0x94) = 0; + do { + pcVar3 = (char *)FUN_004452c4(*(int **)(param_1 + 0x84),*(int *)(param_1 + 0x94)); + if (pcVar3 != (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,pcVar3,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004ee682,(char *)0x0); + } + uVar8 = *(uint *)(param_1 + 0x94); + puVar7 = &LAB_004d9ca4; + FUN_004dbb24(&DAT_00524e20,&DAT_004ee685,(char *)0x0); + piVar4 = FUN_004dbaa8(&DAT_00524e20,puVar7); + piVar4 = FUN_004db78c(piVar4,uVar8); + FUN_004dbb24(piVar4,&DAT_004ee689,(char *)0x0); + pbVar5 = (byte *)FUN_004461fc(param_1,1); + bVar1 = *pbVar5; + switch(bVar1) { + case 0: + FUN_004dbb24(&DAT_00524e20,s__________End_of_table__________004ee68b,(char *)0x0); + break; + case 1: + FUN_004dbb24(&DAT_00524e20,s_return_004ee6ab,(char *)0x0); + break; + case 2: + pcVar3 = (char *)FUN_00446258(param_1); + FUN_004dbb24(&DAT_00524e20,s_setport___004ee6b3,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,pcVar3,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004ee6bd,(char *)0x0); + break; + case 3: + puVar6 = (uint *)FUN_004461fc(param_1,8); + local_c = *puVar6; + local_8 = puVar6[1]; + puVar6 = &local_c; + puVar7 = &LAB_004d9c84; + FUN_004dbb24(&DAT_00524e20,s_offset_004ee6c0,(char *)0x0); + piVar4 = FUN_004dbaa8(&DAT_00524e20,puVar7); + piVar4 = (int *)FUN_00407f08(piVar4,puVar6); + FUN_004dbb24(piVar4,&DAT_004ee6c8,(char *)0x0); + break; + case 4: + puVar6 = (uint *)FUN_004461fc(param_1,4); + uVar8 = *puVar6; + FUN_004dbb24(&DAT_00524e20,s_call_0x_004ee6ca,(char *)0x0); + piVar4 = FUN_004db78c(&DAT_00524e20,uVar8); + FUN_004dbb24(piVar4,&DAT_004ee6d2,(char *)0x0); + pcVar3 = (char *)FUN_004452c4(*(int **)(param_1 + 0x84),uVar8); + if (pcVar3 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_UNDEFINED_____004ee6d5,(char *)0x0); + } + else { + FUN_004dbb24(&DAT_00524e20,pcVar3,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004ee6e4,(char *)0x0); + } + break; + case 5: + puVar6 = (uint *)FUN_004461fc(param_1,4); + uVar8 = *puVar6; + FUN_004dbb24(&DAT_00524e20,s_enable_0x_004ee6e7,(char *)0x0); + piVar4 = FUN_004db880(&DAT_00524e20,uVar8); + FUN_004dbb24(piVar4,&DAT_004ee6f1,(char *)0x0); + break; + case 6: + puVar6 = (uint *)FUN_004461fc(param_1,4); + uVar8 = *puVar6; + FUN_004dbb24(&DAT_00524e20,s_disable_0x_004ee6f3,(char *)0x0); + piVar4 = FUN_004db880(&DAT_00524e20,uVar8); + FUN_004dbb24(piVar4,&DAT_004ee6fe,(char *)0x0); + break; + default: + puVar2 = *(undefined4 **)(*(int *)(param_1 + 0x88) + -0x20 + (uint)bVar1 * 4); + FUN_004dbb24(&DAT_00524e20,(char *)*puVar2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004ee700,(char *)0x0); + local_1c = 0; + for (piVar4 = puVar2 + 2; *piVar4 != 0; piVar4 = piVar4 + 0x11) { + FUN_004472ec(puVar2 + local_1c * 0x11 + 2,param_1,s__004ee703); + local_1c = local_1c + 1; + } + } + } while (bVar1 != 0); + return; +} + + + +/* @00446860 file=? name=FUN_00446860 */ + +void __cdecl FUN_00446860(int *param_1,byte param_2) + +{ + if ((param_1 != (int *)0x0) && ((param_2 & 1) != 0)) { + FUN_004022d0(param_1); + } + return; +} + + + +/* @0044687c file=? name=FUN_0044687c */ + +void FUN_0044687c(void) + +{ + return; +} + + + +/* @00446884 file=? name=FUN_00446884 */ + +void __cdecl FUN_00446884(uint *param_1,char *param_2) + +{ + float fVar1; + uint uVar2; + uint uVar3; + uint uVar4; + int *piVar5; + int iVar6; + uint uVar7; + undefined *puVar8; + undefined1 uVar9; + undefined1 uVar10; + undefined2 uVar11; + + uVar9 = 0x84; + uVar10 = 0x9c; + uVar11 = 0x4d; + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_ParameterDescription__004ee70e,(char *)0x0); + FUN_004dbaa8(&DAT_00524e20,(undefined *)CONCAT22(uVar11,CONCAT11(uVar10,uVar9))); + switch(*param_1) { + case 0: + FUN_004dbb24(&DAT_00524e20,s_empty_004ee724,(char *)0x0); + break; + case 1: + FUN_004dbb24(&DAT_00524e20,s_rate__004ee72a,(char *)0x0); + iVar6 = 0x41; + uVar7 = 0x10000; + do { + if ((param_1[1] & uVar7) != 0) { + FUN_004db92c(&DAT_00524e20,(byte)iVar6); + } + iVar6 = iVar6 + 1; + uVar7 = uVar7 * 2; + } while (iVar6 < 0x51); + break; + case 2: + uVar9 = 0x84; + uVar10 = 0x9c; + uVar11 = 0x4d; + uVar7 = param_1[1]; + piVar5 = FUN_004dbaa8(&DAT_00524e20,&LAB_004d9ca4); + FUN_004dbb24(piVar5,s_modeMask__004ee730,(char *)0x0); + piVar5 = FUN_004db880(piVar5,uVar7); + FUN_004dbaa8(piVar5,(undefined *)CONCAT22(uVar11,CONCAT11(uVar10,uVar9))); + break; + case 3: + uVar7 = param_1[1]; + FUN_004dbb24(&DAT_00524e20,s_integer__004ee73a,(char *)0x0); + FUN_004db78c(&DAT_00524e20,uVar7); + break; + case 4: + uVar9 = 0x84; + uVar10 = 0x9c; + uVar11 = 0x4d; + uVar7 = param_1[1]; + puVar8 = &LAB_004d9ca4; + FUN_004dbb24(&DAT_00524e20,s_color_0x_004ee743,(char *)0x0); + piVar5 = FUN_004dbaa8(&DAT_00524e20,puVar8); + piVar5 = FUN_004db78c(piVar5,uVar7); + FUN_004dbaa8(piVar5,(undefined *)CONCAT22(uVar11,CONCAT11(uVar10,uVar9))); + break; + case 5: + fVar1 = (float)param_1[1]; + FUN_004dbb24(&DAT_00524e20,s_scalar__004ee74c,(char *)0x0); + FUN_004db634(&DAT_00524e20,(float10)fVar1); + break; + case 6: + uVar7 = param_1[2]; + uVar2 = param_1[1]; + FUN_004dbb24(&DAT_00524e20,s_vector____004ee754,(char *)0x0); + piVar5 = FUN_004db78c(&DAT_00524e20,uVar2); + FUN_004dbb24(piVar5,&DAT_004ee75e,(char *)0x0); + piVar5 = FUN_004db78c(piVar5,uVar7); + FUN_004dbb24(piVar5,&DAT_004ee761,(char *)0x0); + break; + case 7: + uVar7 = param_1[4]; + uVar2 = param_1[3]; + uVar3 = param_1[2]; + uVar4 = param_1[1]; + FUN_004dbb24(&DAT_00524e20,s_rectangle_____004ee763,(char *)0x0); + piVar5 = FUN_004db78c(&DAT_00524e20,uVar4); + FUN_004dbb24(piVar5,&DAT_004ee771,(char *)0x0); + piVar5 = FUN_004db78c(piVar5,uVar3); + FUN_004dbb24(piVar5,&DAT_004ee774,(char *)0x0); + piVar5 = FUN_004db78c(piVar5,uVar2); + FUN_004dbb24(piVar5,&DAT_004ee778,(char *)0x0); + piVar5 = FUN_004db78c(piVar5,uVar7); + FUN_004dbb24(piVar5,&DAT_004ee77b,(char *)0x0); + break; + case 8: + if (param_1 + 1 == (uint *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_attribute_NULL_004ee77d,(char *)0x0); + } + else { + FUN_004dbb24(&DAT_00524e20,s_attribute_<_004ee78d,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,(char *)(param_1 + 1),(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004ee799,(char *)0x0); + } + break; + case 9: + if (param_1 + 1 == (uint *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_string_NULL_004ee79b,(char *)0x0); + } + else { + FUN_004dbb24(&DAT_00524e20,s_string_<_004ee7a8,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,(char *)(param_1 + 1),(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004ee7b1,(char *)0x0); + } + break; + default: + uVar7 = *param_1; + FUN_004dbb24(&DAT_00524e20,s_ILLEGAL_TYPE__004ee7b3,(char *)0x0); + FUN_004db78c(&DAT_00524e20,uVar7); + } + FUN_004dbb24(&DAT_00524e20,&DAT_004ee7c1,(char *)0x0); + return; +} + + + +/* @00446c3c file=? name=FUN_00446c3c */ + +int __cdecl FUN_00446c3c(undefined4 param_1,char *param_2,int param_3) + +{ + char cVar1; + int iVar2; + uint uVar3; + uint uVar4; + char *pcVar5; + char *pcVar6; + char *pcVar7; + char local_54 [80]; + + uVar3 = 0xffffffff; + do { + pcVar6 = param_2; + if (uVar3 == 0) break; + uVar3 = uVar3 - 1; + pcVar6 = param_2 + 1; + cVar1 = *param_2; + param_2 = pcVar6; + } while (cVar1 != '\0'); + uVar3 = ~uVar3; + pcVar6 = pcVar6 + -uVar3; + pcVar7 = local_54; + for (uVar4 = uVar3 >> 2; uVar4 != 0; uVar4 = uVar4 - 1) { + *(undefined4 *)pcVar7 = *(undefined4 *)pcVar6; + pcVar6 = pcVar6 + 4; + pcVar7 = pcVar7 + 4; + } + for (uVar3 = uVar3 & 3; pcVar5 = local_54, uVar3 != 0; uVar3 = uVar3 - 1) { + *pcVar7 = *pcVar6; + pcVar6 = pcVar6 + 1; + pcVar7 = pcVar7 + 1; + } + while( true ) { + if (*pcVar5 == '\0') { + iVar2 = FUN_0041bfc0(param_3,local_54); + return iVar2; + } + if (*pcVar5 == '/') break; + pcVar5 = pcVar5 + 1; + } + *pcVar5 = '\0'; + iVar2 = FUN_0041f98c(param_3,local_54); + if (iVar2 == 0) { + return 0; + } + iVar2 = FUN_0041bfc0(iVar2,pcVar5 + 1); + return iVar2; +} + + + +/* @00446cc0 file=munga/gaugrend.cpp name=FUN_00446cc0 */ + +undefined4 __thiscall FUN_00446cc0(void *this,undefined4 *param_1,int *param_2) + +{ + char *pcVar1; + int extraout_EAX; + int iVar2; + uint uVar3; + uint uVar4; + int *piVar5; + uint uVar6; + uint uVar7; + char *pcVar8; + undefined4 *puVar9; + int *piVar10; + bool bVar11; + bool bVar12; + bool bVar13; + bool bVar14; + bool bVar15; + int local_c; + undefined4 local_8; + + switch(*param_1) { + case 0: + FUN_0040385c(s_type____empty__004ee7c3,s_d__tesla_bt_munga_GAUGREND_CPP_004ee7d2,0x8a8); + break; + case 1: + iVar2 = FUN_00445910(param_2,param_1 + 1); + if (iVar2 != 0) { + return 1; + } + break; + case 2: + FUN_00445978(param_2,param_1 + 1); + if (extraout_EAX != 0) { + return 1; + } + break; + case 3: + iVar2 = FUN_004456d4(param_2,param_1 + 1); + if (iVar2 != 0) { + return 1; + } + break; + case 4: + iVar2 = FUN_004456d4(param_2,param_1 + 1); + if (((iVar2 != 0) && ((int)param_1[1] < 0x100)) && (-1 < (int)param_1[1])) { + return 1; + } + break; + case 5: + iVar2 = FUN_004457a0(this,param_2,(float *)(param_1 + 1)); + if (iVar2 != 0) { + return 1; + } + break; + case 6: + iVar2 = FUN_00445808(param_2,&local_c); + if (iVar2 != 0) { + param_1[1] = local_c; + param_1[2] = local_8; + return 1; + } + break; + case 7: + piVar5 = FUN_004453f4(param_2); + pcVar8 = &DAT_004ee7f1; + do { + bVar11 = (char)*piVar5 == *pcVar8; + if ((!bVar11) || (bVar11 = true, (char)*piVar5 == '\0')) break; + pcVar1 = (char *)((int)piVar5 + 1); + bVar11 = *pcVar1 == pcVar8[1]; + if (!bVar11) break; + piVar5 = (int *)((int)piVar5 + 2); + pcVar8 = pcVar8 + 2; + bVar11 = *pcVar1 == '\0'; + } while (!bVar11); + uVar6 = FUN_004456d4(param_2,param_1 + 1); + piVar5 = FUN_004453f4(param_2); + pcVar8 = &DAT_004ee7f3; + do { + bVar12 = (char)*piVar5 == *pcVar8; + if ((!bVar12) || (bVar12 = true, (char)*piVar5 == '\0')) break; + pcVar1 = (char *)((int)piVar5 + 1); + bVar12 = *pcVar1 == pcVar8[1]; + if (!bVar12) break; + piVar5 = (int *)((int)piVar5 + 2); + pcVar8 = pcVar8 + 2; + bVar12 = *pcVar1 == '\0'; + } while (!bVar12); + uVar7 = FUN_004456d4(param_2,param_1 + 2); + piVar5 = FUN_004453f4(param_2); + pcVar8 = &DAT_004ee7f5; + do { + bVar13 = (char)*piVar5 == *pcVar8; + if ((!bVar13) || (bVar13 = true, (char)*piVar5 == '\0')) break; + pcVar1 = (char *)((int)piVar5 + 1); + bVar13 = *pcVar1 == pcVar8[1]; + if (!bVar13) break; + piVar5 = (int *)((int)piVar5 + 2); + pcVar8 = pcVar8 + 2; + bVar13 = *pcVar1 == '\0'; + } while (!bVar13); + uVar3 = FUN_004456d4(param_2,param_1 + 3); + piVar5 = FUN_004453f4(param_2); + pcVar8 = &DAT_004ee7f7; + do { + bVar14 = (char)*piVar5 == *pcVar8; + if ((!bVar14) || (bVar14 = true, (char)*piVar5 == '\0')) break; + pcVar1 = (char *)((int)piVar5 + 1); + bVar14 = *pcVar1 == pcVar8[1]; + if (!bVar14) break; + piVar5 = (int *)((int)piVar5 + 2); + pcVar8 = pcVar8 + 2; + bVar14 = *pcVar1 == '\0'; + } while (!bVar14); + uVar4 = FUN_004456d4(param_2,param_1 + 4); + piVar5 = FUN_004453f4(param_2); + pcVar8 = &DAT_004ee7f9; + do { + bVar15 = (char)*piVar5 == *pcVar8; + if ((!bVar15) || (bVar15 = true, (char)*piVar5 == '\0')) break; + pcVar1 = (char *)((int)piVar5 + 1); + bVar15 = *pcVar1 == pcVar8[1]; + if (!bVar15) break; + piVar5 = (int *)((int)piVar5 + 2); + pcVar8 = pcVar8 + 2; + bVar15 = *pcVar1 == '\0'; + } while (!bVar15); + if ((bVar11 & uVar6 & (uint)bVar12 & uVar7 & (uint)bVar13 & uVar3 & (uint)bVar14 & uVar4 & + (uint)bVar15) != 0) { + return 1; + } + break; + case 8: + piVar5 = FUN_004453f4(param_2); + uVar6 = 0xffffffff; + do { + piVar10 = piVar5; + if (uVar6 == 0) break; + uVar6 = uVar6 - 1; + piVar10 = (int *)((int)piVar5 + 1); + iVar2 = *piVar5; + piVar5 = piVar10; + } while ((char)iVar2 != '\0'); + uVar6 = ~uVar6; + puVar9 = (undefined4 *)((int)piVar10 - uVar6); + for (uVar7 = uVar6 >> 2; param_1 = param_1 + 1, uVar7 != 0; uVar7 = uVar7 - 1) { + *param_1 = *puVar9; + puVar9 = puVar9 + 1; + } + for (uVar6 = uVar6 & 3; uVar6 != 0; uVar6 = uVar6 - 1) { + *(undefined1 *)param_1 = *(undefined1 *)puVar9; + puVar9 = (undefined4 *)((int)puVar9 + 1); + param_1 = (undefined4 *)((int)param_1 + 1); + } + return 1; + case 9: + piVar5 = FUN_004453f4(param_2); + uVar6 = 0xffffffff; + do { + piVar10 = piVar5; + if (uVar6 == 0) break; + uVar6 = uVar6 - 1; + piVar10 = (int *)((int)piVar5 + 1); + iVar2 = *piVar5; + piVar5 = piVar10; + } while ((char)iVar2 != '\0'); + uVar6 = ~uVar6; + puVar9 = (undefined4 *)((int)piVar10 - uVar6); + for (uVar7 = uVar6 >> 2; param_1 = param_1 + 1, uVar7 != 0; uVar7 = uVar7 - 1) { + *param_1 = *puVar9; + puVar9 = puVar9 + 1; + } + for (uVar6 = uVar6 & 3; uVar6 != 0; uVar6 = uVar6 - 1) { + *(undefined1 *)param_1 = *(undefined1 *)puVar9; + puVar9 = (undefined4 *)((int)puVar9 + 1); + param_1 = (undefined4 *)((int)param_1 + 1); + } + return 1; + default: + FUN_0040385c(s_Illegal_type_004ee7fb,s_d__tesla_bt_munga_GAUGREND_CPP_004ee808,0x921); + return 0; + } + return 0; +} + + + +/* @00446fdc file=munga/gaugrend.cpp name=FUN_00446fdc */ + +void __cdecl FUN_00446fdc(undefined4 *param_1,int param_2) + +{ + switch(*param_1) { + case 0: + FUN_0040385c(s_type____empty__004ee827,s_d__tesla_bt_munga_GAUGREND_CPP_004ee836,0x939); + break; + case 1: + FUN_004461c8(param_2,(undefined1 *)(param_1 + 1),4); + break; + case 2: + FUN_004461c8(param_2,(undefined1 *)(param_1 + 1),4); + break; + case 3: + FUN_004461c8(param_2,(undefined1 *)(param_1 + 1),4); + break; + case 4: + FUN_004461c8(param_2,(undefined1 *)(param_1 + 1),4); + break; + case 5: + FUN_004461c8(param_2,(undefined1 *)(param_1 + 1),4); + break; + case 6: + FUN_004461c8(param_2,(undefined1 *)(param_1 + 1),4); + FUN_004461c8(param_2,(undefined1 *)(param_1 + 2),4); + break; + case 7: + FUN_004461c8(param_2,(undefined1 *)(param_1 + 1),4); + FUN_004461c8(param_2,(undefined1 *)(param_1 + 2),4); + FUN_004461c8(param_2,(undefined1 *)(param_1 + 3),4); + FUN_004461c8(param_2,(undefined1 *)(param_1 + 4),4); + break; + case 8: + FUN_0044621c(param_2,(char *)(param_1 + 1)); + break; + case 9: + FUN_0044621c(param_2,(char *)(param_1 + 1)); + break; + default: + FUN_0040385c(s_Illegal_type_004ee855,s_d__tesla_bt_munga_GAUGREND_CPP_004ee862,0x96f); + } + return; +} + + + +/* @00447138 file=munga/gaugrend.cpp name=FUN_00447138 */ + +char * __cdecl FUN_00447138(undefined4 *param_1,int param_2,int param_3) + +{ + char cVar1; + undefined4 *puVar2; + char *pcVar3; + char *pcVar4; + uint uVar5; + uint uVar6; + char *pcVar7; + + switch(*param_1) { + case 0: + pcVar4 = (char *)FUN_0040385c(s_type____empty__004ee881, + s_d__tesla_bt_munga_GAUGREND_CPP_004ee890,0x987); + break; + case 1: + pcVar4 = (char *)FUN_004461fc(param_2,4); + param_1[1] = *(undefined4 *)pcVar4; + break; + case 2: + pcVar4 = (char *)FUN_004461fc(param_2,4); + param_1[1] = *(undefined4 *)pcVar4; + break; + case 3: + puVar2 = (undefined4 *)FUN_004461fc(param_2,4); + pcVar4 = (char *)*puVar2; + param_1[1] = pcVar4; + break; + case 4: + pcVar4 = (char *)FUN_004461fc(param_2,4); + param_1[1] = *(undefined4 *)pcVar4; + break; + case 5: + pcVar4 = (char *)FUN_004461fc(param_2,4); + param_1[1] = *(undefined4 *)pcVar4; + break; + case 6: + puVar2 = (undefined4 *)FUN_004461fc(param_2,4); + param_1[1] = *puVar2; + pcVar4 = (char *)FUN_004461fc(param_2,4); + param_1[2] = *(undefined4 *)pcVar4; + break; + case 7: + puVar2 = (undefined4 *)FUN_004461fc(param_2,4); + param_1[1] = *puVar2; + puVar2 = (undefined4 *)FUN_004461fc(param_2,4); + param_1[2] = *puVar2; + puVar2 = (undefined4 *)FUN_004461fc(param_2,4); + param_1[3] = *puVar2; + pcVar4 = (char *)FUN_004461fc(param_2,4); + param_1[4] = *(undefined4 *)pcVar4; + break; + case 8: + pcVar4 = (char *)FUN_00446258(param_2); + pcVar4 = FUN_004464d4(param_2,pcVar4); + pcVar4 = (char *)FUN_00446c3c(param_1,pcVar4,param_3); + param_1[1] = pcVar4; + break; + case 9: + pcVar4 = (char *)FUN_00446258(param_2); + pcVar3 = FUN_004464d4(param_2,pcVar4); + pcVar4 = (char *)(param_1 + 1); + uVar5 = 0xffffffff; + do { + pcVar7 = pcVar3; + if (uVar5 == 0) break; + uVar5 = uVar5 - 1; + pcVar7 = pcVar3 + 1; + cVar1 = *pcVar3; + pcVar3 = pcVar7; + } while (cVar1 != '\0'); + uVar5 = ~uVar5; + pcVar3 = pcVar7 + -uVar5; + pcVar7 = pcVar4; + for (uVar6 = uVar5 >> 2; uVar6 != 0; uVar6 = uVar6 - 1) { + *(undefined4 *)pcVar7 = *(undefined4 *)pcVar3; + pcVar3 = pcVar3 + 4; + pcVar7 = pcVar7 + 4; + } + for (uVar5 = uVar5 & 3; uVar5 != 0; uVar5 = uVar5 - 1) { + *pcVar7 = *pcVar3; + pcVar3 = pcVar3 + 1; + pcVar7 = pcVar7 + 1; + } + break; + default: + pcVar4 = (char *)FUN_0040385c(s_Illegal_type_004ee8af,s_d__tesla_bt_munga_GAUGREND_CPP_004ee8bc, + 0x9e3); + } + return pcVar4; +} + + + +/* @004472ec file=? name=FUN_004472ec */ + +void __cdecl FUN_004472ec(uint *param_1,int param_2,char *param_3) + +{ + uint uVar1; + uint *puVar2; + undefined4 *puVar3; + char *pcVar4; + int *piVar5; + undefined2 uVar6; + undefined2 uVar7; + uint local_24; + undefined4 local_20; + undefined4 local_1c; + undefined4 local_18; + uint local_14; + undefined4 local_10; + float local_c; + float local_8; + + FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); + switch(*param_1) { + case 0: + FUN_004dbb24(&DAT_00524e20,s____EMPTY____004ee8db,(char *)0x0); + break; + case 1: + puVar2 = (uint *)FUN_004461fc(param_2,4); + uVar1 = *puVar2; + FUN_004dbb24(&DAT_00524e20,s_rate_004ee8e8,(char *)0x0); + piVar5 = FUN_004db880(&DAT_00524e20,uVar1); + FUN_004dbb24(piVar5,&DAT_004ee8ee,(char *)0x0); + break; + case 2: + puVar3 = (undefined4 *)FUN_004461fc(param_2,4); + uVar6 = (undefined2)*puVar3; + uVar7 = (undefined2)((uint)*puVar3 >> 0x10); + FUN_004dbb24(&DAT_00524e20,s_mask_004ee8f0,(char *)0x0); + piVar5 = FUN_004db880(&DAT_00524e20,CONCAT22(uVar7,uVar6)); + FUN_004dbb24(piVar5,&DAT_004ee8f6,(char *)0x0); + break; + case 3: + puVar2 = (uint *)FUN_004461fc(param_2,4); + uVar1 = *puVar2; + piVar5 = FUN_004dbaa8(&DAT_00524e20,&LAB_004d9c84); + FUN_004dbb24(piVar5,&DAT_004ee8f8,(char *)0x0); + piVar5 = FUN_004db78c(piVar5,uVar1); + FUN_004dbb24(piVar5,&DAT_004ee8fd,(char *)0x0); + break; + case 4: + puVar2 = (uint *)FUN_004461fc(param_2,4); + uVar1 = *puVar2; + FUN_004dbb24(&DAT_00524e20,s_color_0x_004ee8ff,(char *)0x0); + piVar5 = FUN_004db78c(&DAT_00524e20,uVar1); + FUN_004dbb24(piVar5,&DAT_004ee908,(char *)0x0); + break; + case 5: + piVar5 = (int *)FUN_004461fc(param_2,4); + local_c = (float)*piVar5; + local_8 = local_c; + piVar5 = FUN_004dbaa8(&DAT_00524e20,&LAB_004d9c84); + FUN_004dbb24(piVar5,s_scalar_004ee90a,(char *)0x0); + piVar5 = FUN_004db634(piVar5,(float10)local_c); + FUN_004dbb24(piVar5,&DAT_004ee912,(char *)0x0); + break; + case 6: + puVar2 = (uint *)FUN_004461fc(param_2,4); + local_14 = *puVar2; + puVar3 = (undefined4 *)FUN_004461fc(param_2,4); + local_10 = *puVar3; + puVar2 = &local_14; + piVar5 = FUN_004dbaa8(&DAT_00524e20,&LAB_004d9c84); + FUN_004dbb24(piVar5,s_vector_004ee914,(char *)0x0); + piVar5 = (int *)FUN_00407f08(piVar5,puVar2); + FUN_004dbb24(piVar5,&DAT_004ee91c,(char *)0x0); + break; + case 7: + FUN_00407b9c(&local_24); + puVar2 = (uint *)FUN_004461fc(param_2,4); + local_24 = *puVar2; + puVar3 = (undefined4 *)FUN_004461fc(param_2,4); + local_20 = *puVar3; + puVar3 = (undefined4 *)FUN_004461fc(param_2,4); + local_1c = *puVar3; + puVar3 = (undefined4 *)FUN_004461fc(param_2,4); + local_18 = *puVar3; + puVar2 = &local_24; + piVar5 = FUN_004dbaa8(&DAT_00524e20,&LAB_004d9c84); + FUN_004dbb24(piVar5,s_rectangle_004ee91e,(char *)0x0); + piVar5 = (int *)FUN_00407d78(piVar5,puVar2); + FUN_004dbb24(piVar5,&DAT_004ee929,(char *)0x0); + break; + case 8: + pcVar4 = (char *)FUN_00446258(param_2); + FUN_004dbb24(&DAT_00524e20,s_attribute___004ee92b,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,pcVar4,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004ee937,(char *)0x0); + break; + case 9: + pcVar4 = (char *)FUN_00446258(param_2); + FUN_004dbb24(&DAT_00524e20,s_string___004ee93a,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,pcVar4,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004ee943,(char *)0x0); + break; + default: + uVar1 = *param_1; + FUN_004dbb24(&DAT_00524e20,s_ILLEGAL_TYPE__004ee946,(char *)0x0); + piVar5 = FUN_004db78c(&DAT_00524e20,uVar1); + FUN_004dbb24(piVar5,&DAT_004ee954,(char *)0x0); + } + return; +} + + + +/* @004476ac file=? name=FUN_004476ac */ + +void __cdecl FUN_004476ac(undefined4 *param_1,char *param_2) + +{ + char *pcVar1; + int iVar2; + int *piVar3; + undefined8 uVar4; + uint uVar5; + char local_54 [80]; + + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_MethodDescription__004ee958,(char *)0x0); + pcVar1 = (char *)*param_1; + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_name___004ee96c,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,pcVar1,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004ee975,(char *)0x0); + uVar5 = param_1[1]; + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_execute__004ee977,(char *)0x0); + uVar4 = FUN_004dbd4c(&DAT_00524e20,uVar5); + FUN_004dbb24((int *)uVar4,&DAT_004ee980,(char *)0x0); + iVar2 = 0; + piVar3 = param_1 + 2; + do { + if (*piVar3 == 0) { + return; + } + FUN_004d7f10(local_54,s__s_2d__004ee982); + FUN_00446884(param_1 + iVar2 * 0x11 + 2,local_54); + iVar2 = iVar2 + 1; + piVar3 = piVar3 + 0x11; + } while (iVar2 < 0x10); + return; +} + + + +/* @004477c4 file=? name=FUN_004477c4 */ + +void __cdecl +FUN_004477c4(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,int param_5, + int param_6) + +{ + int *piVar1; + int iVar2; + + iVar2 = 0; + for (piVar1 = (int *)(param_1 + 8); *piVar1 != 0; piVar1 = piVar1 + 0x11) { + FUN_00447138((undefined4 *)(iVar2 * 0x44 + param_1 + 8),*(int *)(param_6 + 0x50),param_5); + iVar2 = iVar2 + 1; + } + (**(code **)(param_1 + 4))(param_2,param_3,param_4,param_5,param_6); + return; +} + + + +/* @00447828 file=? name=FUN_00447828 */ + +void __cdecl FUN_00447828(undefined4 *param_1) + +{ + *param_1 = 0; + param_1[1] = 0; + param_1[2] = 0; + return; +} + + + +/* @00447840 file=? name=FUN_00447840 */ + +void __cdecl FUN_00447840(int *param_1,float param_2) + +{ + *param_1 = *param_1 + 1; + param_1[1] = (int)(param_2 + (float)param_1[1]); + if ((float)param_1[2] < param_2) { + param_1[2] = (int)param_2; + } + return; +} + + + +/* @00447864 file=? name=FUN_00447864 */ + +float10 __cdecl FUN_00447864(int *param_1) + +{ + float local_8; + + if (*param_1 < 1) { + local_8 = 0.0; + } + else { + local_8 = (float)param_1[1] / (float)*param_1; + } + return (float10)local_8; +} + + + +/* @00447890 file=? name=FUN_00447890 */ + +undefined4 * __cdecl FUN_00447890(undefined4 *param_1) + +{ + undefined4 *puVar1; + int iVar2; + int iVar3; + float10 fVar4; + undefined4 uVar5; + undefined4 uVar6; + undefined4 uVar7; + undefined4 uVar8; + undefined4 uVar9; + undefined *puVar10; + + puVar10 = &DAT_004e82f8; + uVar9 = 0x24; + uVar8 = 1; + uVar7 = 2; + uVar6 = 1; + uVar5 = DAT_004e823c; + fVar4 = FUN_0044e19c(DAT_004efc94); + FUN_00435d30(param_1,(float)fVar4,uVar5,uVar6,uVar7,uVar8,uVar9,puVar10); + *param_1 = &PTR_FUN_004eeb70; + FUN_00443474(param_1 + 0x25); + FUN_004437d8(param_1 + 0x2c); + param_1[0x7032] = 0; + FUN_00448997(param_1 + 0x7036,0); + FUN_00448997(param_1 + 0x703b,0); + FUN_00448997(param_1 + 0x7040,0); + param_1[0x7046] = 0; + param_1[0x7035] = 0; + iVar3 = 0; + puVar1 = param_1 + 0x15; + do { + iVar3 = iVar3 + 1; + *puVar1 = 0; + puVar1 = puVar1 + 1; + } while (iVar3 < 0x10); + param_1[0x7049] = DAT_004ee2c8; + DAT_004ee2c8 = param_1; + param_1[0x7047] = 0; + param_1[0x7048] = 0; + param_1[0x13] = 0; + puVar1 = (undefined4 *)FUN_00402298(0xc0); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_00445314(puVar1); + } + param_1[0x14] = puVar1; + param_1[0x7033] = 0; + param_1[0x7034] = 0; + puVar1 = (undefined4 *)FUN_00402298(0x14); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_004014d9(puVar1,(int)(param_1 + 0x703b)); + } + param_1[0x7045] = puVar1; + iVar3 = 0; + puVar1 = param_1 + 0x704a; + do { + iVar3 = iVar3 + 1; + *puVar1 = 0; + puVar1 = puVar1 + 1; + } while (iVar3 < 0x10); + iVar3 = 0; + do { + iVar2 = 0; + do { + FUN_00447828(param_1 + iVar3 * 0xf + iVar2 * 3 + 0x705a); + iVar2 = iVar2 + 1; + } while (iVar2 < 5); + iVar3 = iVar3 + 1; + } while (iVar3 < 0x10); + return param_1; +} + + + +/* @00447a14 file=? name=FUN_00447a14 */ + +void __cdecl FUN_00447a14(int *param_1,byte param_2) + +{ + undefined4 *puVar1; + int *piVar2; + int *piVar3; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004eeb70; + (**(code **)(*param_1 + 0x34))(param_1); + FUN_00445390((int *)param_1[0x14],3); + puVar1 = (undefined4 *)param_1[0x7033]; + if ((puVar1 != (undefined4 *)0x0) && (puVar1 != (undefined4 *)0x0)) { + (**(code **)*puVar1)(puVar1,3); + } + puVar1 = (undefined4 *)param_1[0x7032]; + if ((puVar1 != (undefined4 *)0x0) && (puVar1 != (undefined4 *)0x0)) { + (**(code **)*puVar1)(puVar1,3); + } + puVar1 = (undefined4 *)param_1[0x7045]; + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + param_1[0x7045] = 0; + piVar2 = (int *)0x0; + for (piVar3 = DAT_004ee2c8; piVar3 != (int *)0x0; piVar3 = (int *)piVar3[0x7049]) { + if (param_1 == piVar3) { + if (piVar2 == (int *)0x0) { + DAT_004ee2c8 = (int *)param_1[0x7049]; + } + else { + piVar2[0x7049] = param_1[0x7049]; + } + break; + } + piVar2 = piVar3; + } + FUN_004489b6(param_1 + 0x7040,2); + FUN_004489b6(param_1 + 0x703b,2); + FUN_004489b6(param_1 + 0x7036,2); + FUN_0044381c(param_1 + 0x2c,2); + FUN_004434a0(param_1 + 0x25,2); + FUN_00435df8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00447b38 file=? name=FUN_00447b38 */ + +void FUN_00447b38(void) + +{ + int *piVar1; + + for (piVar1 = DAT_004ee2c8; piVar1 != (int *)0x0; piVar1 = (int *)piVar1[0x7049]) { + (**(code **)(*piVar1 + 0x48))(piVar1); + } + return; +} + + + +/* @00447b58 file=? name=FUN_00447b58 */ + +void FUN_00447b58(void) + +{ + return; +} + + + +/* @00447b60 file=? name=FUN_00447b60 */ + +void __cdecl FUN_00447b60(int param_1) + +{ + FUN_00435e48(param_1); + return; +} + + + +/* @00447b70 file=? name=FUN_00447b70 */ + +void __cdecl FUN_00447b70(int *param_1,int param_2) + +{ + int *piVar1; + int local_40 [5]; + int local_2c [5]; + int local_18 [5]; + + if (param_1[0x7046] == 0) { + FUN_004014d9(local_18,(int)(param_1 + 0x7036)); + while( true ) { + piVar1 = (int *)(**(code **)(local_18[0] + 0x28))(local_18); + if (piVar1 == (int *)0x0) break; + (**(code **)(*piVar1 + 0x24))(piVar1,param_2); + } + FUN_00401517(local_18,2); + FUN_004014d9(local_2c,(int)(param_1 + 0x703b)); + while( true ) { + piVar1 = (int *)(**(code **)(local_2c[0] + 0x28))(local_2c); + if (piVar1 == (int *)0x0) break; + (**(code **)(*piVar1 + 0x24))(piVar1,param_2); + } + FUN_00401517(local_2c,2); + FUN_004014d9(local_40,(int)(param_1 + 0x7040)); + while( true ) { + piVar1 = (int *)(**(code **)(local_40[0] + 0x28))(local_40); + if (piVar1 == (int *)0x0) break; + (**(code **)(*piVar1 + 0x24))(piVar1,param_2); + } + FUN_00401517(local_40,2); + } + FUN_00435e70(param_1,param_2); + return; +} + + + +/* @00447c58 file=? name=FUN_00447c58 */ + +void __cdecl FUN_00447c58(int param_1,undefined4 param_2) + +{ + int *piVar1; + int local_40 [5]; + int local_2c [5]; + int local_18 [5]; + + if (*(int *)(param_1 + 0x1c118) == 0) { + FUN_004014d9(local_18,param_1 + 0x1c0d8); + while( true ) { + piVar1 = (int *)(**(code **)(local_18[0] + 0x28))(local_18); + if (piVar1 == (int *)0x0) break; + (**(code **)(*piVar1 + 0x28))(piVar1,param_2); + } + FUN_00401517(local_18,2); + FUN_004014d9(local_2c,param_1 + 0x1c0ec); + while( true ) { + piVar1 = (int *)(**(code **)(local_2c[0] + 0x28))(local_2c); + if (piVar1 == (int *)0x0) break; + (**(code **)(*piVar1 + 0x28))(piVar1,param_2); + } + FUN_00401517(local_2c,2); + FUN_004014d9(local_40,param_1 + 0x1c100); + while( true ) { + piVar1 = (int *)(**(code **)(local_40[0] + 0x28))(local_40); + if (piVar1 == (int *)0x0) break; + (**(code **)(*piVar1 + 0x28))(piVar1,param_2); + } + FUN_00401517(local_40,2); + } + return; +} + + + +/* @00447d38 file=? name=FUN_00447d38 */ + +void __cdecl FUN_00447d38(int param_1,undefined4 param_2) + +{ + int *piVar1; + int local_40 [5]; + int local_2c [5]; + int local_18 [5]; + + if (*(int *)(param_1 + 0x1c118) == 0) { + FUN_004014d9(local_18,param_1 + 0x1c0d8); + while( true ) { + piVar1 = (int *)(**(code **)(local_18[0] + 0x28))(local_18); + if (piVar1 == (int *)0x0) break; + (**(code **)(*piVar1 + 0x2c))(piVar1,param_2); + } + FUN_00401517(local_18,2); + FUN_004014d9(local_2c,param_1 + 0x1c0ec); + while( true ) { + piVar1 = (int *)(**(code **)(local_2c[0] + 0x28))(local_2c); + if (piVar1 == (int *)0x0) break; + (**(code **)(*piVar1 + 0x2c))(piVar1,param_2); + } + FUN_00401517(local_2c,2); + FUN_004014d9(local_40,param_1 + 0x1c100); + while( true ) { + piVar1 = (int *)(**(code **)(local_40[0] + 0x28))(local_40); + if (piVar1 == (int *)0x0) break; + (**(code **)(*piVar1 + 0x2c))(piVar1,param_2); + } + FUN_00401517(local_40,2); + } + return; +} + + + +/* @00447e18 file=? name=FUN_00447e18 */ + +void __cdecl +FUN_00447e18(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,int param_5) + +{ + FUN_00448d00(*(int **)(param_1 + 0x1c0cc),param_2,param_3,param_4,param_5); + return; +} + + + +/* @00447e40 file=? name=FUN_00447e40 */ + +void __cdecl FUN_00447e40(int param_1,int param_2,int param_3,int param_4) + +{ + FUN_00448e00(*(int *)(param_1 + 0x1c0cc),param_2,param_3,param_4); + return; +} + + + +/* @00447e64 file=? name=FUN_00447e64 */ + +void FUN_00447e64(void) + +{ + return; +} + + + +/* @00447e6c file=? name=FUN_00447e6c */ + +void __cdecl FUN_00447e6c(int param_1) + +{ + undefined4 *puVar1; + int *piVar2; + int iVar3; + + if (*(int *)(param_1 + 0x1c0cc) != 0) { + FUN_00448cb0(*(int *)(param_1 + 0x1c0cc)); + } + FUN_00447fc0(param_1,0); + if (*(int *)(param_1 + 0x1c0c8) != 0) { + FUN_00444d6c(*(int *)(param_1 + 0x1c0c8)); + } + piVar2 = *(int **)(param_1 + 0x4c); + if (piVar2 != (int *)0x0) { + (**(code **)(*piVar2 + 4))(piVar2); + } + FUN_004435ac(param_1 + 0x94); + FUN_00443998((undefined4 *)(param_1 + 0xb0)); + piVar2 = (int *)(param_1 + 0x54); + iVar3 = 0; + do { + puVar1 = (undefined4 *)*piVar2; + if (puVar1 != (undefined4 *)0x0) { + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + *piVar2 = 0; + } + iVar3 = iVar3 + 1; + piVar2 = piVar2 + 1; + } while (iVar3 < 0x10); + return; +} + + + +/* @00447ef8 file=? name=FUN_00447ef8 */ + +void __cdecl FUN_00447ef8(int param_1) + +{ + *(undefined4 *)(param_1 + 0x1c118) = 1; + return; +} + + + +/* @00447f0c file=? name=FUN_00447f0c */ + +void __cdecl FUN_00447f0c(int param_1) + +{ + *(undefined4 *)(param_1 + 0x1c118) = 0; + return; +} + + + +/* @00447f1c file=? name=FUN_00447f1c */ + +int __cdecl FUN_00447f1c(int param_1,char *param_2) + +{ + int iVar1; + int *piVar2; + int iVar3; + + if (param_2 != (char *)0x0) { + iVar3 = 0; + piVar2 = (int *)(param_1 + 0x54); + do { + if ((*piVar2 != 0) && (iVar1 = FUN_004d4b58((char *)(*piVar2 + 0x18),param_2), iVar1 == 0)) { + return iVar3; + } + iVar3 = iVar3 + 1; + piVar2 = piVar2 + 1; + } while (iVar3 < 0x10); + } + return -1; +} + + + +/* @00447f60 file=? name=FUN_00447f60 */ + +undefined4 __cdecl FUN_00447f60(int param_1,char *param_2) + +{ + int iVar1; + + iVar1 = FUN_00447f1c(param_1,param_2); + if (-1 < iVar1) { + return *(undefined4 *)(param_1 + 0x54 + iVar1 * 4); + } + return 0; +} + + + +/* @00447f84 file=? name=FUN_00447f84 */ + +undefined4 __cdecl FUN_00447f84(int param_1,int param_2) + +{ + if ((-1 < param_2) && (param_2 < 0x10)) { + return *(undefined4 *)(param_1 + 0x54 + param_2 * 4); + } + return 0; +} + + + +/* @00447fa0 file=? name=FUN_00447fa0 */ + +void __cdecl FUN_00447fa0(int param_1,undefined4 param_2) + +{ + (**(code **)(*(int *)(param_1 + 0x1c0d8) + 4))(param_1 + 0x1c0d8,param_2); + return; +} + + + +/* @00447fc0 file=? name=FUN_00447fc0 */ + +void __cdecl FUN_00447fc0(int param_1,int param_2) + +{ + int *piVar1; + undefined4 *puVar2; + int local_2c [5]; + int local_18 [5]; + + FUN_004014d9(local_18,param_1 + 0x1c0ec); + while( true ) { + piVar1 = (int *)(**(code **)(local_18[0] + 0x30))(local_18); + if (piVar1 == (int *)0x0) break; + if ((param_2 == 0) || (param_2 == piVar1[5])) { + (**(code **)(*piVar1 + 0x20))(piVar1,0xffff); + (**(code **)(local_18[0] + 0x48))(local_18); + if (piVar1 != (int *)0x0) { + (**(code **)*piVar1)(piVar1,3); + } + } + else { + (**(code **)(local_18[0] + 0xc))(local_18); + } + } + FUN_00401517(local_18,2); + FUN_004014d9(local_2c,param_1 + 0x1c100); + while( true ) { + puVar2 = (undefined4 *)(**(code **)(local_2c[0] + 0x30))(local_2c); + if (puVar2 == (undefined4 *)0x0) break; + if ((param_2 == 0) || (param_2 == puVar2[5])) { + (**(code **)(local_2c[0] + 0x48))(local_2c); + if (puVar2 != (undefined4 *)0x0) { + (**(code **)*puVar2)(puVar2,3); + } + } + else { + (**(code **)(local_2c[0] + 0xc))(local_2c); + } + } + FUN_00401517(local_2c,2); + return; +} + + + +/* @004480b0 file=? name=FUN_004480b0 */ + +void __cdecl FUN_004480b0(int param_1,int *param_2) + +{ + int *piVar1; + int local_18 [5]; + + FUN_004014d9(local_18,param_1 + 0x1c0ec); + do { + piVar1 = (int *)(**(code **)(local_18[0] + 0x30))(local_18); + if (piVar1 == (int *)0x0) { +LAB_0044811e: + FUN_00401517(local_18,2); + return; + } + if (piVar1 == param_2) { + (**(code **)(local_18[0] + 0x48))(local_18); + (**(code **)(*(int *)(param_1 + 0x1c100) + 4))(param_1 + 0x1c100,param_2); + (**(code **)(*param_2 + 0x10))(param_2); + goto LAB_0044811e; + } + (**(code **)(local_18[0] + 0xc))(local_18); + } while( true ); +} + + + +/* @00448134 file=? name=FUN_00448134 */ + +undefined4 FUN_00448134(void) + +{ + return 0xaaaa; +} + + + +/* @00448140 file=? name=FUN_00448140 */ + +undefined4 FUN_00448140(void) + +{ + return 0x8888; +} + + + +/* @0044814c file=? name=FUN_0044814c */ + +undefined4 FUN_0044814c(void) + +{ + return 0x8080; +} + + + +/* @00448158 file=? name=FUN_00448158 */ + +undefined4 FUN_00448158(void) + +{ + return 0x8000; +} + + + +/* @00448164 file=? name=FUN_00448164 */ + +void __cdecl FUN_00448164(int *param_1) + +{ + if ((param_1[0x7046] == 0) && (param_1[0x7034] == 0)) { + (**(code **)(*param_1 + 0x54))(param_1); + } + return; +} + + + +/* @00448188 file=? name=FUN_00448188 */ + +void __cdecl FUN_00448188(int param_1) + +{ + uint uVar1; + int *piVar2; + int local_1c [5]; + uint local_8; + + uVar1 = *(uint *)(*(int *)(DAT_004efc94 + 0x50) + 4); + local_8 = *(uint *)(param_1 + 0x1c0d4) ^ uVar1; + piVar2 = *(int **)(param_1 + 0x1c0c8); + if (piVar2 != (int *)0x0) { + (**(code **)(*piVar2 + 4))(piVar2,uVar1); + } + FUN_004014d9(local_1c,param_1 + 0x1c0d8); + while( true ) { + piVar2 = (int *)(**(code **)(local_1c[0] + 0x30))(local_1c); + if (piVar2 == (int *)0x0) break; + (**(code **)(local_1c[0] + 0x48))(local_1c); + if ((piVar2[6] & uVar1) == 0) { + (**(code **)(*(int *)(param_1 + 0x1c100) + 4))(param_1 + 0x1c100,piVar2); + } + else if ((piVar2[3] == 0) || ((piVar2[6] & local_8) != 0)) { + (**(code **)(*piVar2 + 0xc))(piVar2); + if (piVar2[4] == 0) { + piVar2[3] = 1; + (**(code **)(*(int *)(param_1 + 0x1c0ec) + 4))(param_1 + 0x1c0ec,piVar2); + } + else { + (**(code **)(*(int *)(param_1 + 0x1c100) + 4))(param_1 + 0x1c100,piVar2); + } + } + } + FUN_00401517(local_1c,2); + if (uVar1 != *(uint *)(param_1 + 0x1c0d4)) { + *(uint *)(param_1 + 0x1c0d4) = uVar1; + FUN_00448318(param_1,uVar1,local_8); + FUN_004483dc(param_1,uVar1); + } + *(undefined4 *)(param_1 + 0x1c0d0) = 1; + (**(code **)(**(int **)(param_1 + 0x1c114) + 4))(*(int **)(param_1 + 0x1c114)); + if (*(int *)(param_1 + 0x1c11c) == 0) { + *(undefined4 *)(param_1 + 0x1c11c) = 0x8000; + *(undefined4 *)(param_1 + 0x1c120) = 0; + } + return; +} + + + +/* @004482d4 file=? name=FUN_004482d4 */ + +undefined4 __fastcall FUN_004482d4(undefined4 param_1,undefined4 param_2,int *param_3) + +{ + int iVar1; + + iVar1 = param_3[0x7034]; + if (iVar1 == 0) { + param_2 = (**(code **)(*param_3 + 0x58))(param_3); + } + else if (iVar1 == 1) { + param_2 = FUN_00448468(param_3); + } + else if (iVar1 == 2) { + param_2 = (**(code **)(*param_3 + 0x58))(param_3); + } + return param_2; +} + + + +/* @00448310 file=? name=FUN_00448310 */ + +undefined4 FUN_00448310(void) + +{ + return 0; +} + + + +/* @00448318 file=? name=FUN_00448318 */ + +void __cdecl FUN_00448318(int param_1,uint param_2,uint param_3) + +{ + int *piVar1; + int local_18 [5]; + + FUN_004014d9(local_18,param_1 + 0x1c100); + while( true ) { + piVar1 = (int *)(**(code **)(local_18[0] + 0x30))(local_18); + if (piVar1 == (int *)0x0) break; + if ((piVar1[6] & param_2) == 0) { + (**(code **)(local_18[0] + 0xc))(local_18); + } + else if ((piVar1[3] == 0) && ((piVar1[6] & param_3) != 0)) { + (**(code **)(*piVar1 + 0xc))(piVar1); + if (piVar1[4] == 0) { + (**(code **)(local_18[0] + 0x48))(local_18); + (**(code **)(*(int *)(param_1 + 0x1c0ec) + 4))(param_1 + 0x1c0ec,piVar1); + piVar1[3] = 1; + } + else { + (**(code **)(local_18[0] + 0xc))(local_18); + } + } + else { + (**(code **)(local_18[0] + 0xc))(local_18); + } + } + FUN_00401517(local_18,2); + return; +} + + + +/* @004483dc file=? name=FUN_004483dc */ + +void __cdecl FUN_004483dc(int param_1,uint param_2) + +{ + int *piVar1; + int local_18 [5]; + + FUN_004014d9(local_18,param_1 + 0x1c0ec); + while( true ) { + piVar1 = (int *)(**(code **)(local_18[0] + 0x30))(local_18); + if (piVar1 == (int *)0x0) break; + if ((piVar1[6] & param_2) == 0) { + piVar1[3] = 0; + (**(code **)(local_18[0] + 0x48))(local_18); + (**(code **)(*(int *)(param_1 + 0x1c100) + 4))(param_1 + 0x1c100,piVar1); + (**(code **)(*piVar1 + 0x10))(piVar1); + } + else { + (**(code **)(local_18[0] + 0xc))(local_18); + } + } + FUN_00401517(local_18,2); + return; +} + + + +/* @00448468 file=? name=FUN_00448468 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl FUN_00448468(int *param_1) + +{ + int *piVar1; + int iVar2; + float10 fVar3; + float10 fVar4; + float local_8; + + piVar1 = (int *)(**(code **)(*(int *)param_1[0x7045] + 0x28))((int *)param_1[0x7045]); + if (piVar1 == (int *)0x0) { + param_1[0x7047] = (uint)param_1[0x7047] >> 1; + param_1[0x7048] = param_1[0x7048] + 1; + param_1[0x7034] = 2; + } + else { + fVar3 = (float10)(**(code **)(*param_1 + 0x5c))(param_1); + iVar2 = (**(code **)(*piVar1 + 0x20))(piVar1,param_1[0x7047]); + fVar4 = (float10)(**(code **)(*param_1 + 0x5c))(param_1); + local_8 = (float)(fVar4 - (float10)(float)fVar3); + if (local_8 < _DAT_00448534) { + local_8 = -local_8; + } + if (iVar2 != 0) { + (**(code **)(*piVar1 + 0x18))(piVar1,local_8); + } + iVar2 = (**(code **)(*piVar1 + 0x30))(piVar1); + FUN_00447840(param_1 + param_1[0x7048] * 0xf + iVar2 * 3 + 0x705a,local_8); + } + return 1; +} + + + +/* @00448548 file=? name=FUN_00448548 */ + +float10 __cdecl FUN_00448548(int param_1,int param_2,int param_3,int param_4) + +{ + byte bVar1; + int iVar2; + int iVar3; + float10 fVar4; + float *local_1c; + int local_14; + float local_10; + float local_c; + float local_8; + + local_c = 0.0; + local_10 = 0.0; + iVar3 = 0; + local_14 = 0; + local_1c = (float *)(param_1 + 0x1c170 + param_3 * 0x3c); + do { + bVar1 = (&PTR_s_ABDHP_004ee2cc)[param_3][local_14]; + if (param_4 == 1) { + local_8 = *local_1c; + } + else { + fVar4 = FUN_00447864((int *)(param_3 * 0x3c + param_1 + local_14 * 0xc + 0x1c168)); + local_8 = (float)fVar4; + } + local_c = local_8 + local_c; + local_10 = (float)param_2 * local_8 + local_10; + if ((float)param_2 < local_10) { + local_10 = (float)param_2; + } + iVar2 = FUN_004dcd94(); + for (; iVar3 < iVar2; iVar3 = iVar3 + 1) { + FUN_004db92c(&DAT_00524e20,bVar1); + } + local_14 = local_14 + 1; + local_1c = local_1c + 3; + } while (local_14 < 5); + for (; iVar3 < param_2; iVar3 = iVar3 + 1) { + FUN_004dbb24(&DAT_00524e20,&DAT_004ee9e9,(char *)0x0); + } + return (float10)local_c; +} + + + +/* @00448654 file=? name=FUN_00448654 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_00448654(int param_1) + +{ + int *piVar1; + int iVar2; + int iVar3; + int iVar4; + float10 fVar5; + char local_8c [80]; + int local_3c [5]; + int local_28 [5]; + int *local_14; + float local_10; + float local_c; + int local_8; + + FUN_004014d9(local_28,param_1 + 0x1c0ec); + FUN_004dbb24(&DAT_00524e20,s_Active_name_count_avg_worst_004ee9eb,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s__________________________________004eea20,(char *)0x0); + while( true ) { + piVar1 = (int *)(**(code **)(local_28[0] + 0x28))(); + if (piVar1 == (int *)0x0) break; + (**(code **)(*piVar1 + 0x1c))(); + } + FUN_00401517(local_28,2); + FUN_004014d9(local_3c,param_1 + 0x1c100); + FUN_004dbb24(&DAT_00524e20,s_Inactive_name_count_avg_worst_004eea55,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s__________________________________004eea8a,(char *)0x0); + while( true ) { + piVar1 = (int *)(**(code **)(local_3c[0] + 0x28))(); + if (piVar1 == (int *)0x0) break; + (**(code **)(*piVar1 + 0x1c))(); + } + FUN_00401517(local_3c,2); + local_8 = 0x28; + FUN_004dbb24(&DAT_00524e20,s_Slot_Count_Tier_values_004eeabf,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s__Total___004eeaf4,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_____________004eeafe,(char *)0x0); + iVar3 = 0; + if (0 < local_8) { + do { + FUN_004dbb24(&DAT_00524e20,&DAT_004eeb0a,(char *)0x0); + iVar3 = iVar3 + 1; + } while (iVar3 < local_8); + } + FUN_004dbb24(&DAT_00524e20,s__________004eeb0c,(char *)0x0); + local_14 = (int *)(param_1 + 0x1c168); + iVar3 = 0; + do { + FUN_004d7f10(local_8c,s__2d___004eeb16); + FUN_004dbb24(&DAT_00524e20,local_8c,(char *)0x0); + iVar2 = 0; + iVar4 = 0; + piVar1 = local_14; + do { + iVar2 = iVar2 + *piVar1; + iVar4 = iVar4 + 1; + piVar1 = piVar1 + 3; + } while (iVar4 < 5); + if (iVar2 < 1) { + FUN_004dbb24(&DAT_00524e20,s_No_samples_available_004eeb1d,(char *)0x0); + } + else { + FUN_004d7f10(local_8c,&DAT_004eeb33); + FUN_004dbb24(&DAT_00524e20,local_8c,(char *)0x0); + fVar5 = FUN_00448548(param_1,local_8,iVar3,0); + local_c = (float)fVar5; + FUN_004d7f10(local_8c,s___5_2f___004eeb38); + FUN_004dbb24(&DAT_00524e20,local_8c,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s__Worst__004eeb42,(char *)0x0); + fVar5 = FUN_00448548(param_1,local_8,iVar3,1); + local_10 = (float)fVar5; + FUN_004d7f10(local_8c,s___5_2f___004eeb4e); + FUN_004dbb24(&DAT_00524e20,local_8c,(char *)0x0); + iVar2 = 0; + do { + FUN_00447828((undefined4 *)(iVar3 * 0x3c + param_1 + iVar2 * 0xc + 0x1c168)); + iVar2 = iVar2 + 1; + } while (iVar2 < 5); + } + iVar3 = iVar3 + 1; + local_14 = local_14 + 0xf; + } while (iVar3 < 0x10); + return; +} + + + +/* @00448928 file=? name=FUN_00448928 */ + +void __cdecl FUN_00448928(int *param_1,LPCSTR param_2,int *param_3) + +{ + FUN_00445af0((int *)param_1[0x14],param_2,param_3); + (**(code **)(*param_1 + 0x50))(param_1,s_Initialization_004eeb58,0); + return; +} + + + +/* @0044895c file=? name=FUN_0044895c */ + +void __cdecl FUN_0044895c(int param_1,char *param_2,int param_3) + +{ + FUN_00446288(*(int *)(param_1 + 0x50),param_2,param_1,0,0,0,param_3); + return; +} + + + +/* @00448997 file=? name=FUN_00448997 */ + +undefined4 * __cdecl FUN_00448997(undefined4 *param_1,undefined4 param_2) + +{ + FUN_0041827c(param_1,param_2); + *param_1 = &PTR_FUN_004eeb68; + return param_1; +} + + + +/* @004489b6 file=? name=FUN_004489b6 */ + +void __cdecl FUN_004489b6(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004eeb68; + FUN_004182a8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004489e2 file=? name=FUN_004489e2 */ + +void FUN_004489e2(void) + +{ + return; +} + + + +/* @004489e8 file=? name=FUN_004489e8 */ + +undefined4 * __cdecl +FUN_004489e8(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) + +{ + FUN_004178cc(param_1,0x5c); + *param_1 = &PTR_FUN_004eed7c; + FUN_00444f5f(param_1 + 6,0); + param_1[3] = param_2; + param_1[4] = param_3; + param_1[5] = param_4; + return param_1; +} + + + +/* @00448a28 file=? name=FUN_00448a28 */ + +void __cdecl FUN_00448a28(int *param_1,byte param_2) + +{ + int *piVar1; + int local_10 [3]; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004eed7c; + FUN_00444fc9(local_10,(int)(param_1 + 6)); + while( true ) { + piVar1 = (int *)(**(code **)(local_10[0] + 0x28))(local_10); + if (piVar1 == (int *)0x0) break; + FUN_00444e64(piVar1,0); + } + FUN_00445007(local_10,2); + FUN_00444f7e(param_1 + 6,2); + FUN_0041790c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00448aa8 file=? name=FUN_00448aa8 */ + +void FUN_00448aa8(void) + +{ + FUN_00415f1c(); + return; +} + + + +/* @00448ab8 file=munga/gaugalrm.cpp name=FUN_00448ab8 */ + +undefined4 FUN_00448ab8(void) + +{ + FUN_0040385c(s_GaugeAlarmManager__CreateGaugeAl_004eec11,s_d__tesla_bt_munga_GAUGALRM_CPP_004eec4f + ,0x71); + return 0; +} + + + +/* @00448ad4 file=munga/gaugalrm.cpp name=FUN_00448ad4 */ + +void FUN_00448ad4(void) + +{ + FUN_0040385c(s_GaugeAlarmManager__ReadGaugeAlar_004eec6e,s_d__tesla_bt_munga_GAUGALRM_CPP_004eecaa + ,0x7e); + return; +} + + + +/* @00448af0 file=? name=FUN_00448af0 */ + +undefined4 __cdecl FUN_00448af0(int *param_1,int param_2,char *param_3,int param_4) + +{ + int *piVar1; + undefined4 *puVar2; + int *piVar3; + int iVar4; + int iVar5; + int local_14; + int local_10; + undefined4 local_c; + undefined4 local_8; + + local_8 = 0xffffffff; + local_c = *(undefined4 *)(param_4 + 0x1c); + *(uint *)(param_4 + 0x1c) = *(uint *)(param_4 + 0x1c) | 0x1f; + piVar1 = FUN_00404720(param_4,s_gaugeAlarm_004eecc9,(char *)0x0); + if (piVar1 != (int *)0x0) { + local_10 = 1; + local_14 = FUN_00403b60((int)piVar1); + puVar2 = (undefined4 *)FUN_00402298(0x18); + if (puVar2 == (undefined4 *)0x0) { + piVar3 = (int *)0x0; + } + else { + piVar3 = FUN_0040328c(puVar2,0); + } + (**(code **)(*piVar3 + 0x20))(piVar3,&local_14,4); + puVar2 = (undefined4 *)piVar1[1]; + iVar5 = 0; + if (0 < local_14) { + do { + iVar4 = (**(code **)(*param_1 + 4))(param_1,piVar3,puVar2 + 2,puVar2[1]); + if (iVar4 == 0) { + FUN_004dbb24(&DAT_00524e20,s_Model_file___004eecd4,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s___has_undefined_alarm_type___004eece1,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,(char *)(puVar2 + 2),(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_____resource_not_built__004eecfe,(char *)0x0); + local_10 = 0; + break; + } + puVar2 = (undefined4 *)*puVar2; + iVar5 = iVar5 + 1; + } while (iVar5 < local_14); + } + if (local_10 != 0) { + puVar2 = (undefined4 *)FUN_00406f3c(param_2,param_3,0x1f,1,0,piVar3,-1); + local_8 = *puVar2; + } + FUN_00403310(piVar3,3); + } + *(undefined4 *)(param_4 + 0x1c) = local_c; + return local_8; +} + + + +/* @00448c54 file=? name=FUN_00448c54 */ + +undefined4 * __cdecl FUN_00448c54(undefined4 *param_1) + +{ + *param_1 = &PTR_FUN_004eed70; + FUN_00448e72(param_1 + 1,0); + return param_1; +} + + + +/* @00448c74 file=? name=FUN_00448c74 */ + +void __cdecl FUN_00448c74(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004eed70; + FUN_00448e91(param_1 + 1,2); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00448ca4 file=? name=FUN_00448ca4 */ + +undefined4 FUN_00448ca4(void) + +{ + return 1; +} + + + +/* @00448cb0 file=? name=FUN_00448cb0 */ + +void __cdecl FUN_00448cb0(int param_1) + +{ + undefined4 *puVar1; + int local_10 [3]; + + FUN_00448edc(local_10,param_1 + 4); + while( true ) { + puVar1 = (undefined4 *)(**(code **)(local_10[0] + 0x28))(local_10); + if (puVar1 == (undefined4 *)0x0) break; + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + } + FUN_00448f1a(local_10,2); + return; +} + + + +/* @00448d00 file=? name=FUN_00448d00 */ + +void __cdecl +FUN_00448d00(int *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,int param_5) + +{ + int iVar1; + int iVar2; + undefined4 *puVar3; + int *piVar4; + int local_10; + undefined4 *local_c; + undefined4 *local_8; + + iVar2 = FUN_00407064(*(int *)(DAT_004efc94 + 0x68),param_5,0x1f); + if (iVar2 != 0) { + iVar1 = *(int *)(iVar2 + 4); + *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + 1; + if (iVar1 == 0) { + FUN_00406cd0(iVar2); + } + puVar3 = (undefined4 *)FUN_00402298(0x18); + if (puVar3 == (undefined4 *)0x0) { + piVar4 = (int *)0x0; + } + else { + piVar4 = FUN_004032dc(puVar3,*(undefined4 *)(iVar2 + 0x3c),*(undefined4 *)(iVar2 + 0x40),0); + } + if (piVar4 != (int *)0x0) { + local_c = (undefined4 *)FUN_00402298(0x28); + if (local_c == (undefined4 *)0x0) { + local_8 = (undefined4 *)0x0; + } + else { + local_8 = FUN_004489e8(local_c,param_2,param_3,param_4); + } + (**(code **)(param_1[1] + 4))(param_1 + 1,local_8); + (**(code **)(*piVar4 + 0x1c))(piVar4,&local_10,4); + for (; 0 < local_10; local_10 = local_10 + -1) { + (**(code **)(*param_1 + 8))(param_1,local_8,param_2,param_3,param_4,piVar4); + } + FUN_00403310(piVar4,3); + } + *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + -1; + } + return; +} + + + +/* @00448e00 file=? name=FUN_00448e00 */ + +void __cdecl FUN_00448e00(int param_1,int param_2,int param_3,int param_4) + +{ + undefined4 *puVar1; + int local_10 [3]; + + FUN_00448edc(local_10,param_1 + 4); + do { + puVar1 = (undefined4 *)(**(code **)(local_10[0] + 0x28))(local_10); + if (puVar1 == (undefined4 *)0x0) goto LAB_00448e5d; + } while (((param_2 != puVar1[3]) || (param_3 != puVar1[4])) || (puVar1[5] != param_4)); + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } +LAB_00448e5d: + FUN_00448f1a(local_10,2); + return; +} + + + +/* @00448e72 file=? name=FUN_00448e72 */ + +undefined4 * __cdecl FUN_00448e72(undefined4 *param_1,undefined4 param_2) + +{ + FUN_00417be0(param_1,param_2); + *param_1 = &PTR_FUN_004eed68; + return param_1; +} + + + +/* @00448e91 file=? name=FUN_00448e91 */ + +void __cdecl FUN_00448e91(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004eed68; + FUN_00417c0c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00448ebd file=? name=FUN_00448ebd */ + +undefined4 * __cdecl FUN_00448ebd(undefined4 *param_1,int param_2) + +{ + FUN_00417d00(param_1,param_2); + *param_1 = &PTR_FUN_004eed18; + return param_1; +} + + + +/* @00448edc file=? name=FUN_00448edc */ + +undefined4 * __cdecl FUN_00448edc(undefined4 *param_1,int param_2) + +{ + FUN_00417d00(param_1,param_2); + *param_1 = &PTR_FUN_004eed18; + return param_1; +} + + + +/* @00448efb file=? name=FUN_00448efb */ + +undefined4 * __cdecl FUN_00448efb(undefined4 *param_1,int param_2) + +{ + FUN_00417d28(param_1,param_2); + *param_1 = &PTR_FUN_004eed18; + return param_1; +} + + + +/* @00448f1a file=? name=FUN_00448f1a */ + +void __cdecl FUN_00448f1a(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004eed18; + FUN_00417d54(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00448f48 file=? name=FUN_00448f48 */ + +undefined4 __cdecl FUN_00448f48(LPCSTR param_1,char *param_2,int *param_3,char *param_4) + +{ + uint uVar1; + int *piVar2; + undefined4 uVar3; + uint uVar4; + undefined1 *puVar5; + int iVar6; + char local_19; + uint local_18; + int local_14; + uint local_10; + int local_c; + uint local_8; + + piVar2 = FUN_004d6f54(param_1,&DAT_004eed88); + if (piVar2 == (int *)0x0) { + uVar3 = 0; + } + else { + uVar4 = FUN_004d71e0(param_2,0x80,1,piVar2); + if (uVar4 == 1) { + if ((((*param_2 == '\n') && (param_2[3] == '\b')) && (param_2[2] == '\x01')) && + (param_2[0x41] == '\x01')) { + local_8 = (uint)*(ushort *)(param_2 + 0x42); + local_c = ((uint)*(ushort *)(param_2 + 8) - (uint)*(ushort *)(param_2 + 4)) + 1; + iVar6 = ((uint)*(ushort *)(param_2 + 10) - (uint)*(ushort *)(param_2 + 6)) + 1; + if (param_3 == (int *)0x0) { + FUN_004d7270(piVar2,-0x301,2); + } + else { + if ((int *)*param_3 != (int *)0x0) { + FUN_004022d0((int *)*param_3); + *param_3 = 0; + } + puVar5 = (undefined1 *)FUN_004022b0(local_c * iVar6); + *param_3 = (int)puVar5; + for (local_14 = iVar6; iVar6 = local_c, uVar4 = local_8, 0 < local_14; + local_14 = local_14 + -1) { + while (local_10 = uVar4, 0 < (int)local_10) { + uVar4 = FUN_004d744c(piVar2); + if ((*(byte *)((int)piVar2 + 0x12) & 0x10) != 0) { + FUN_004d6b08(piVar2); + FUN_004022d0((int *)*param_3); + *param_3 = 0; + return 0; + } + if ((uVar4 & 0xc0) == 0xc0) { + local_18 = uVar4 & 0x3f; + local_10 = local_10 - local_18; + uVar4 = FUN_004d744c(piVar2); + while (uVar1 = local_18 - 1, local_18 != 0) { + local_18 = uVar1; + if (0 < iVar6) { + iVar6 = iVar6 + -1; + *puVar5 = (char)uVar4; + puVar5 = puVar5 + 1; + } + } + local_18 = 0xffffffff; + uVar4 = local_10; + } + else { + if (0 < iVar6) { + iVar6 = iVar6 + -1; + *puVar5 = (char)uVar4; + puVar5 = puVar5 + 1; + } + uVar4 = local_10 - 1; + } + } + } + } + if (param_4 != (char *)0x0) { + uVar4 = FUN_004d71e0(&local_19,1,1,piVar2); + if (uVar4 != 1) { + FUN_004d6b08(piVar2); + return 0; + } + if (local_19 != '\f') { + FUN_004d6b08(piVar2); + return 0; + } + uVar4 = FUN_004d71e0(param_4,0x300,1,piVar2); + if (uVar4 != 1) { + FUN_004d6b08(piVar2); + return 0; + } + } + FUN_004d6b08(piVar2); + uVar3 = 1; + } + else { + FUN_004d6b08(piVar2); + uVar3 = 0; + } + } + else { + FUN_004d6b08(piVar2); + uVar3 = 0; + } + } + return uVar3; +} + + + +/* @00449148 file=? name=FUN_00449148 */ + +undefined4 * __cdecl FUN_00449148(char *param_1) + +{ + undefined4 *puVar1; + undefined4 local_54; + undefined2 uStack_50; + undefined1 uStack_4e; + + local_54 = DAT_004eed8b; + uStack_50 = DAT_004eed8f; + uStack_4e = DAT_004eed91; + FUN_004d49b8((char *)&local_54,param_1); + puVar1 = (undefined4 *)FUN_00402298(0x1c); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_0044927c(puVar1,(LPCSTR)&local_54); + } + if (puVar1[6] == 0) { + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + puVar1 = (undefined4 *)0x0; + } + return puVar1; +} + + + +/* @004491ac file=? name=FUN_004491ac */ + +undefined4 FUN_004491ac(void) + +{ + return 0; +} + + + +/* @004491b4 file=? name=FUN_004491b4 */ + +undefined4 * __cdecl FUN_004491b4(undefined4 *param_1,int param_2,int param_3) + +{ + undefined4 uVar1; + + FUN_00415e90(param_1,1); + *param_1 = &PTR_FUN_004ef674; + param_1[5] = param_2 + 0xf >> 4; + uVar1 = FUN_004022b0(param_1[5] * param_3 * 2); + param_1[6] = uVar1; + param_1[3] = param_2; + param_1[4] = param_3; + return param_1; +} + + + +/* @004491fc file=? name=FUN_004491fc */ + +undefined4 * __cdecl FUN_004491fc(undefined4 *param_1,int param_2,int param_3,undefined4 *param_4) + +{ + int iVar1; + undefined4 uVar2; + + FUN_00415e90(param_1,1); + *param_1 = &PTR_FUN_004ef674; + param_1[5] = 0; + param_1[3] = 0; + param_1[4] = 0; + if ((0 < param_2) && (0 < param_3)) { + iVar1 = param_2 + 0xf >> 4; + uVar2 = FUN_004022b0(iVar1 * param_3 * 2); + param_1[6] = uVar2; + param_1[5] = iVar1; + param_1[3] = param_2; + param_1[4] = param_3; + FUN_004d4918((undefined4 *)param_1[6],param_4,iVar1 * param_3 * 2); + } + return param_1; +} + + + +/* @0044927c file=? name=FUN_0044927c */ + +undefined4 * __cdecl FUN_0044927c(undefined4 *param_1,LPCSTR param_2) + +{ + ushort uVar1; + ushort uVar2; + int iVar3; + ushort uVar4; + char local_94 [4]; + ushort local_90; + ushort local_8e; + ushort local_8c; + ushort local_8a; + int local_14; + ushort *local_10; + int *local_c; + int *local_8; + + FUN_00415e90(param_1,1); + *param_1 = &PTR_FUN_004ef674; + local_8 = (int *)0x0; + param_1[5] = 0; + param_1[3] = 0; + param_1[4] = 0; + param_1[6] = 0; + iVar3 = FUN_00448f48(param_2,local_94,(int *)&local_8,(char *)0x0); + if ((iVar3 == 1) && (local_8 != (int *)0x0)) { + param_1[3] = ((uint)local_8c - (uint)local_90) + 1; + param_1[4] = ((uint)local_8a - (uint)local_8e) + 1; + iVar3 = param_1[3] + 0xf >> 4; + param_1[5] = iVar3; + local_10 = (ushort *)FUN_004022b0(iVar3 * param_1[4] * 2); + param_1[6] = local_10; + uVar4 = 0; + uVar2 = 0x8000; + local_c = local_8; + for (local_14 = param_1[4]; 0 < local_14; local_14 = local_14 + -1) { + for (iVar3 = param_1[3]; 0 < iVar3; iVar3 = iVar3 + -1) { + if ((char)*local_c != '\0') { + uVar4 = uVar4 | uVar2; + } + uVar1 = uVar2 >> 1; + if (uVar2 >> 1 == 0) { + *local_10 = uVar4; + local_10 = local_10 + 1; + uVar1 = 0x8000; + uVar4 = 0; + } + uVar2 = uVar1; + local_c = (int *)((int)local_c + 1); + } + if (uVar2 != 0x8000) { + uVar2 = 0x8000; + *local_10 = uVar4; + local_10 = local_10 + 1; + uVar4 = 0; + } + } + FUN_004022d0(local_8); + } + return param_1; +} + + + +/* @004493a8 file=? name=FUN_004493a8 */ + +undefined4 * __cdecl FUN_004493a8(undefined4 *param_1,int param_2,char *param_3) + +{ + char *pcVar1; + undefined4 *puVar2; + bool bVar3; + undefined3 extraout_var; + undefined3 extraout_var_00; + undefined3 extraout_var_01; + undefined4 uVar4; + int *piVar5; + char *pcVar6; + uint uVar7; + int iVar8; + char *pcVar9; + int iVar10; + int iVar11; + undefined2 *local_1c; + int local_10; + int local_c; + int local_8; + + FUN_00415e90(param_1,1); + *param_1 = &PTR_FUN_004ef674; + param_1[3] = 0; + param_1[4] = 0; + param_1[5] = 0; + param_1[6] = 0; + bVar3 = FUN_004040d8(param_2,param_3,&DAT_004eed92,&local_8); + if (((CONCAT31(extraout_var,bVar3) != 0) && + (bVar3 = FUN_004040d8(param_2,param_3,&DAT_004eed94,&local_c), + CONCAT31(extraout_var_00,bVar3) != 0)) && + (bVar3 = FUN_004040d8(param_2,param_3,s_width_004eed96,&local_10), + CONCAT31(extraout_var_01,bVar3) != 0)) { + uVar4 = FUN_004022b0(local_10 * local_c * 2); + param_1[6] = uVar4; + param_1[3] = local_8; + param_1[4] = local_c; + param_1[5] = local_10; + piVar5 = FUN_00404720(param_2,param_3,(char *)0x0); + iVar10 = 0; + iVar11 = 4; + local_1c = (undefined2 *)param_1[6]; + for (puVar2 = (undefined4 *)piVar5[1]; puVar2 != (undefined4 *)0x0; + puVar2 = (undefined4 *)*puVar2) { + pcVar6 = (char *)(puVar2 + 2); + if (pcVar6 != (char *)0x0) { + pcVar9 = s_bitmap_004eed9c; + do { + bVar3 = *pcVar6 == *pcVar9; + if (!bVar3) break; + if (*pcVar6 == '\0') goto LAB_004494d6; + pcVar1 = pcVar6 + 1; + bVar3 = *pcVar1 == pcVar9[1]; + if (!bVar3) break; + pcVar6 = pcVar6 + 2; + pcVar9 = pcVar9 + 2; + bVar3 = *pcVar1 == '\0'; + } while (!bVar3); + if (bVar3) { +LAB_004494d6: + for (pcVar6 = (char *)puVar2[1]; *pcVar6 != '\0'; pcVar6 = pcVar6 + 1) { + uVar7 = FUN_004dc8c4((int)*pcVar6); + if (0x39 < (int)uVar7) { + uVar7 = uVar7 - 7; + } + iVar10 = (uVar7 - 0x30) + iVar10 * 0x10; + iVar11 = iVar11 + -1; + if (iVar11 < 1) { + iVar8 = (int)local_1c - param_1[6] >> 1; + if (iVar8 < 0) { + iVar8 = iVar8 + (uint)(((int)local_1c - param_1[6] & 1U) != 0); + } + if (local_10 * local_c <= iVar8) break; + iVar11 = 4; + *local_1c = (short)iVar10; + local_1c = local_1c + 1; + iVar10 = 0; + } + } + } + } + } + if (piVar5 != (int *)0x0) { + (**(code **)*piVar5)(piVar5,3); + } + } + return param_1; +} + + + +/* @00449568 file=? name=FUN_00449568 */ + +void __cdecl FUN_00449568(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004ef674; + if ((int *)param_1[6] != (int *)0x0) { + FUN_004022d0((int *)param_1[6]); + param_1[3] = 0; + param_1[4] = 0; + param_1[6] = 0; + } + FUN_00415ed8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004495b4 file=? name=FUN_004495b4 */ + +undefined4 FUN_004495b4(void) + +{ + return 1; +} + + + +/* @004495c0 file=? name=FUN_004495c0 */ + +void __cdecl FUN_004495c0(int param_1,char *param_2) + +{ + char cVar1; + ushort uVar2; + int *piVar3; + uint uVar4; + uint uVar5; + char *pcVar6; + char *pcVar7; + undefined8 uVar8; + uint *puVar9; + char local_64 [80]; + ushort *local_14; + int local_10; + int local_c; + int local_8; + + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_BitMap__004eeda3,(char *)0x0); + uVar4 = 0xffffffff; + do { + pcVar6 = param_2; + if (uVar4 == 0) break; + uVar4 = uVar4 - 1; + pcVar6 = param_2 + 1; + cVar1 = *param_2; + param_2 = pcVar6; + } while (cVar1 != '\0'); + uVar4 = ~uVar4; + pcVar6 = pcVar6 + -uVar4; + pcVar7 = local_64; + for (uVar5 = uVar4 >> 2; uVar5 != 0; uVar5 = uVar5 - 1) { + *(undefined4 *)pcVar7 = *(undefined4 *)pcVar6; + pcVar6 = pcVar6 + 4; + pcVar7 = pcVar7 + 4; + } + for (uVar4 = uVar4 & 3; uVar4 != 0; uVar4 = uVar4 - 1) { + *pcVar7 = *pcVar6; + pcVar6 = pcVar6 + 1; + pcVar7 = pcVar7 + 1; + } + FUN_004d49b8(local_64,&DAT_004eedac); + puVar9 = (uint *)(param_1 + 0xc); + FUN_004dbb24(&DAT_00524e20,local_64,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_Size___004eedb0,(char *)0x0); + piVar3 = (int *)FUN_00407f08(&DAT_00524e20,puVar9); + FUN_004dbb24(piVar3,&DAT_004eedbe,(char *)0x0); + uVar4 = *(uint *)(param_1 + 0x14); + FUN_004dbb24(&DAT_00524e20,local_64,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_WidthInWords__004eedc0,(char *)0x0); + piVar3 = FUN_004db78c(&DAT_00524e20,uVar4); + FUN_004dbb24(piVar3,&DAT_004eedce,(char *)0x0); + uVar4 = *(uint *)(param_1 + 0x18); + FUN_004dbb24(&DAT_00524e20,local_64,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_MapPointer___004eedd0,(char *)0x0); + uVar8 = FUN_004dbd4c(&DAT_00524e20,uVar4); + FUN_004dbb24((int *)uVar8,&DAT_004eedde,(char *)0x0); + FUN_004d9c70(&DAT_00524e20); + local_14 = *(ushort **)(param_1 + 0x18); + if (local_14 != (ushort *)0x0) { + for (local_c = *(int *)(param_1 + 0x10); 0 < local_c; local_c = local_c + -1) { + FUN_004dbb24(&DAT_00524e20,local_64,(char *)0x0); + local_10 = 0; + for (local_8 = *(int *)(param_1 + 0x14); 0 < local_8; local_8 = local_8 + -1) { + uVar4 = 0x8000; + uVar2 = *local_14; + local_14 = local_14 + 1; + do { + local_10 = local_10 + 1; + if (*(int *)(param_1 + 0xc) < local_10) { + FUN_004dbb24(&DAT_00524e20,&DAT_004eede0,(char *)0x0); + } + else if ((uVar4 & uVar2) == 0) { + FUN_004dbb24(&DAT_00524e20,&DAT_004eede4,(char *)0x0); + } + else { + FUN_004dbb24(&DAT_00524e20,&DAT_004eede2,(char *)0x0); + } + uVar4 = (int)uVar4 >> 1; + } while (uVar4 != 0); + } + FUN_004dbb24(&DAT_00524e20,&DAT_004eede6,(char *)0x0); + } + FUN_004dbb24(&DAT_00524e20,&DAT_004eede8,(char *)0x0); + } + return; +} + + + +/* @00449808 file=? name=FUN_00449808 */ + +void __cdecl FUN_00449808(undefined4 *param_1,byte *param_2) + +{ + byte bVar1; + byte bVar2; + byte bVar3; + int *piVar4; + byte bVar5; + byte bVar6; + undefined *puVar7; + + puVar7 = &LAB_004d9c84; + bVar1 = param_2[2]; + bVar6 = 0x3a; + bVar2 = param_2[1]; + bVar5 = 0x3a; + bVar3 = *param_2; + piVar4 = FUN_004dbaa8(param_1,&LAB_004d9ca4); + piVar4 = FUN_004db78c(piVar4,(uint)bVar3); + piVar4 = FUN_004db92c(piVar4,bVar5); + piVar4 = FUN_004db78c(piVar4,(uint)bVar2); + piVar4 = FUN_004db92c(piVar4,bVar6); + piVar4 = FUN_004db78c(piVar4,(uint)bVar1); + FUN_004dbaa8(piVar4,puVar7); + return; +} + + + +/* @004498a8 file=? name=FUN_004498a8 */ + +void __cdecl FUN_004498a8(undefined4 *param_1) + +{ + *param_1 = 0; + return; +} + + + +/* @004498b4 file=? name=FUN_004498b4 */ + +int * __cdecl FUN_004498b4(char *param_1) + +{ + undefined4 *puVar1; + int *piVar2; + undefined4 local_54; + undefined2 uStack_50; + undefined1 uStack_4e; + + local_54 = DAT_004eedea; + uStack_50 = DAT_004eedee; + uStack_4e = DAT_004eedf0; + FUN_004d49b8((char *)&local_54,param_1); + puVar1 = (undefined4 *)FUN_00402298(0x304); + if (puVar1 == (undefined4 *)0x0) { + piVar2 = (int *)0x0; + } + else { + piVar2 = FUN_00449968(puVar1,(LPCSTR)&local_54); + } + if (*piVar2 == 0) { + FUN_00449994(piVar2,3); + piVar2 = (int *)0x0; + } + return piVar2; +} + + + +/* @00449918 file=? name=FUN_00449918 */ + +undefined4 FUN_00449918(void) + +{ + return 0; +} + + + +/* @00449920 file=? name=FUN_00449920 */ + +undefined4 * __cdecl FUN_00449920(undefined4 *param_1,int param_2,undefined1 *param_3) + +{ + int iVar1; + int iVar2; + + iVar1 = 0; + if (0 < param_2) { + do { + iVar2 = iVar1 + 1; + *(undefined1 *)((int)param_1 + iVar1 * 3 + 4) = *param_3; + *(undefined1 *)((int)param_1 + iVar1 * 3 + 5) = param_3[1]; + *(undefined1 *)((int)param_1 + iVar1 * 3 + 6) = param_3[2]; + iVar1 = iVar2; + param_3 = param_3 + 3; + } while (iVar2 < param_2); + } + *param_1 = 1; + return param_1; +} + + + +/* @00449968 file=? name=FUN_00449968 */ + +undefined4 * __cdecl FUN_00449968(undefined4 *param_1,LPCSTR param_2) + +{ + undefined4 uVar1; + char local_84 [128]; + + uVar1 = FUN_00448f48(param_2,local_84,(int *)0x0,(char *)(param_1 + 1)); + *param_1 = uVar1; + return param_1; +} + + + +/* @00449994 file=? name=FUN_00449994 */ + +void __cdecl FUN_00449994(int *param_1,byte param_2) + +{ + if ((param_1 != (int *)0x0) && ((param_2 & 1) != 0)) { + FUN_004022d0(param_1); + } + return; +} + + + +/* @004499b0 file=? name=FUN_004499b0 */ + +void __cdecl FUN_004499b0(int param_1,int param_2,int param_3,undefined4 param_4) + +{ + int iVar1; + + for (; param_2 <= param_3; param_2 = param_2 + 1) { + iVar1 = param_2 * 3 + param_1; + *(undefined1 *)(iVar1 + 4) = (undefined1)param_4; + *(undefined1 *)(iVar1 + 5) = param_4._1_1_; + *(undefined1 *)(iVar1 + 6) = param_4._2_1_; + } + return; +} + + + +/* @004499e4 file=? name=FUN_004499e4 */ + +void __cdecl FUN_004499e4(int param_1,int param_2,int param_3,uint param_4,uint param_5) + +{ + int iVar1; + undefined1 *puVar2; + int iVar3; + int iVar4; + int iVar5; + + iVar4 = param_3 - param_2; + if (iVar4 == 0) { + iVar4 = param_2 * 3 + param_1; + *(undefined1 *)(iVar4 + 4) = (undefined1)param_4; + *(byte *)(iVar4 + 5) = param_4._1_1_; + *(byte *)(iVar4 + 6) = param_4._2_1_; + } + else { + iVar3 = (param_4 & 0xff) << 5; + iVar5 = (uint)param_4._1_1_ << 5; + iVar1 = (uint)param_4._2_1_ << 5; + puVar2 = (undefined1 *)(param_1 + 4 + param_2 * 3); + for (; param_2 <= param_3; param_2 = param_2 + 1) { + *puVar2 = (char)(iVar3 >> 5); + puVar2[1] = (char)(iVar5 >> 5); + puVar2[2] = (char)(iVar1 >> 5); + iVar3 = iVar3 + (int)(((param_5 & 0xff) - (param_4 & 0xff)) * 0x20) / iVar4; + iVar5 = iVar5 + (int)(((param_5 >> 8 & 0xff) - (uint)param_4._1_1_) * 0x20) / iVar4; + iVar1 = iVar1 + (int)(((param_5 >> 0x10 & 0xff) - (uint)param_4._2_1_) * 0x20) / iVar4; + puVar2 = puVar2 + 3; + } + } + return; +} + + + +/* @00449ab4 file=? name=FUN_00449ab4 */ + +undefined4 FUN_00449ab4(void) + +{ + return 1; +} + + + +/* @00449ac0 file=? name=FUN_00449ac0 */ + +void __cdecl FUN_00449ac0(uint *param_1,char *param_2) + +{ + char cVar1; + int *piVar2; + uint uVar3; + uint uVar4; + char *pcVar5; + int iVar6; + char *pcVar7; + uint *puVar8; + uint *puVar9; + char local_78 [32]; + char local_58 [80]; + int local_8; + + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_Palette8__004eedf1,(char *)0x0); + uVar3 = 0xffffffff; + do { + pcVar5 = param_2; + if (uVar3 == 0) break; + uVar3 = uVar3 - 1; + pcVar5 = param_2 + 1; + cVar1 = *param_2; + param_2 = pcVar5; + } while (cVar1 != '\0'); + uVar3 = ~uVar3; + pcVar5 = pcVar5 + -uVar3; + pcVar7 = local_58; + for (uVar4 = uVar3 >> 2; uVar4 != 0; uVar4 = uVar4 - 1) { + *(undefined4 *)pcVar7 = *(undefined4 *)pcVar5; + pcVar5 = pcVar5 + 4; + pcVar7 = pcVar7 + 4; + } + for (uVar3 = uVar3 & 3; uVar3 != 0; uVar3 = uVar3 - 1) { + *pcVar7 = *pcVar5; + pcVar5 = pcVar5 + 1; + pcVar7 = pcVar7 + 1; + } + FUN_004d49b8(local_58,&DAT_004eedfc); + uVar3 = *param_1; + FUN_004dbb24(&DAT_00524e20,local_58,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_Valid___004eee00,(char *)0x0); + piVar2 = FUN_004db78c(&DAT_00524e20,uVar3); + FUN_004dbb24(piVar2,&DAT_004eee08,(char *)0x0); + if (*param_1 != 0) { + puVar9 = param_1 + 1; + local_8 = 0; + do { + FUN_004d7f10(local_78,s__02X__004eee0a); + FUN_004dbb24(&DAT_00524e20,local_58,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,local_78,(char *)0x0); + iVar6 = 4; + puVar8 = puVar9; + do { + puVar9 = (uint *)((int)puVar8 + 3); + piVar2 = (int *)FUN_00449808(&DAT_00524e20,(byte *)puVar8); + FUN_004dbb24(piVar2,&DAT_004eee11,(char *)0x0); + iVar6 = iVar6 + -1; + puVar8 = puVar9; + } while (0 < iVar6); + FUN_004dbb24(&DAT_00524e20,&DAT_004eee13,(char *)0x0); + local_8 = local_8 + 4; + } while (local_8 < 0x100); + } + return; +} + + + +/* @00449c1c file=? name=FUN_00449c1c */ + +int * __cdecl FUN_00449c1c(char *param_1) + +{ + int *piVar1; + undefined4 local_54; + undefined2 uStack_50; + undefined1 uStack_4e; + + local_54 = DAT_004eee15; + uStack_50 = DAT_004eee19; + uStack_4e = DAT_004eee1b; + FUN_004d49b8((char *)&local_54,param_1); + piVar1 = (int *)FUN_00402298(0xc); + if (piVar1 == (int *)0x0) { + piVar1 = (int *)0x0; + } + else { + piVar1 = FUN_00449cb0(piVar1,(LPCSTR)&local_54); + } + if (piVar1[2] == 0) { + FUN_00449d0c(piVar1,3); + piVar1 = (int *)0x0; + } + return piVar1; +} + + + +/* @00449c80 file=? name=FUN_00449c80 */ + +undefined4 FUN_00449c80(void) + +{ + return 0; +} + + + +/* @00449c88 file=? name=FUN_00449c88 */ + +int * __cdecl FUN_00449c88(int *param_1,int param_2,int param_3) + +{ + int iVar1; + + *param_1 = param_2; + param_1[1] = param_3; + iVar1 = FUN_004022b0(param_2 * param_3); + param_1[2] = iVar1; + return param_1; +} + + + +/* @00449cb0 file=? name=FUN_00449cb0 */ + +int * __cdecl FUN_00449cb0(int *param_1,LPCSTR param_2) + +{ + int iVar1; + char local_84 [4]; + ushort local_80; + ushort local_7e; + ushort local_7c; + ushort local_7a; + + param_1[2] = 0; + iVar1 = FUN_00448f48(param_2,local_84,param_1 + 2,(char *)0x0); + if (iVar1 == 1) { + if (param_1[2] == 0) { + *param_1 = 0; + param_1[1] = 0; + } + else { + *param_1 = ((uint)local_7c - (uint)local_80) + 1; + param_1[1] = ((uint)local_7a - (uint)local_7e) + 1; + } + } + return param_1; +} + + + +/* @00449d0c file=? name=FUN_00449d0c */ + +void __cdecl FUN_00449d0c(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + if ((int *)param_1[2] != (int *)0x0) { + FUN_004022d0((int *)param_1[2]); + *param_1 = 0; + param_1[1] = 0; + param_1[2] = 0; + } + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00449d44 file=? name=FUN_00449d44 */ + +undefined4 FUN_00449d44(void) + +{ + return 1; +} + + + +/* @00449d50 file=? name=FUN_00449d50 */ + +void __cdecl FUN_00449d50(uint *param_1,char *param_2) + +{ + char cVar1; + int *piVar2; + uint uVar3; + uint uVar4; + char *pcVar5; + char *pcVar6; + undefined8 uVar7; + uint *puVar8; + char local_78 [32]; + char local_58 [80]; + uint local_8; + + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_PixelMap8__004eee1c,(char *)0x0); + uVar3 = 0xffffffff; + do { + pcVar5 = param_2; + if (uVar3 == 0) break; + uVar3 = uVar3 - 1; + pcVar5 = param_2 + 1; + cVar1 = *param_2; + param_2 = pcVar5; + } while (cVar1 != '\0'); + uVar3 = ~uVar3; + pcVar5 = pcVar5 + -uVar3; + pcVar6 = local_58; + for (uVar4 = uVar3 >> 2; uVar4 != 0; uVar4 = uVar4 - 1) { + *(undefined4 *)pcVar6 = *(undefined4 *)pcVar5; + pcVar5 = pcVar5 + 4; + pcVar6 = pcVar6 + 4; + } + for (uVar3 = uVar3 & 3; uVar3 != 0; uVar3 = uVar3 - 1) { + *pcVar6 = *pcVar5; + pcVar5 = pcVar5 + 1; + pcVar6 = pcVar6 + 1; + } + FUN_004d49b8(local_58,&DAT_004eee28); + puVar8 = param_1; + FUN_004dbb24(&DAT_00524e20,local_58,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_Size___004eee2c,(char *)0x0); + piVar2 = (int *)FUN_00407f08(&DAT_00524e20,puVar8); + FUN_004dbb24(piVar2,&DAT_004eee3a,(char *)0x0); + uVar3 = param_1[2]; + FUN_004dbb24(&DAT_00524e20,local_58,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_MapPointer___004eee3c,(char *)0x0); + uVar7 = FUN_004dbd4c(&DAT_00524e20,uVar3); + FUN_004dbb24((int *)uVar7,&DAT_004eee4a,(char *)0x0); + if (param_1[2] != 0) { + for (local_8 = param_1[1]; 0 < (int)local_8; local_8 = local_8 - 1) { + FUN_004dbb24(&DAT_00524e20,local_58,(char *)0x0); + for (uVar3 = *param_1; 0 < (int)uVar3; uVar3 = uVar3 - 1) { + FUN_004d7f10(local_78,s__02X_004eee4c); + FUN_004dbb24(&DAT_00524e20,local_78,(char *)0x0); + } + FUN_004dbb24(&DAT_00524e20,&DAT_004eee52,(char *)0x0); + } + } + return; +} + + + +/* @00449ed0 file=? name=FUN_00449ed0 */ + +int * __cdecl FUN_00449ed0(int *param_1,int param_2,int param_3) + +{ + int iVar1; + + *param_1 = param_2; + param_1[1] = param_3; + iVar1 = FUN_004022b0(param_2 * param_3 * 2); + param_1[2] = iVar1; + return param_1; +} + + + +/* @00449efc file=munga/graph2d.cpp name=FUN_00449efc */ + +undefined4 * __cdecl FUN_00449efc(undefined4 *param_1) + +{ + FUN_0040385c(s_PixelMap16__PixelMap16_char____U_004eee54,s_d__tesla_bt_munga_GRAPH2D_CPP_004eee82, + 0x3d0); + param_1[2] = 0; + *param_1 = 0; + param_1[1] = 0; + return param_1; +} + + + +/* @00449f30 file=? name=FUN_00449f30 */ + +void __cdecl FUN_00449f30(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + if ((int *)param_1[2] != (int *)0x0) { + FUN_004022d0((int *)param_1[2]); + *param_1 = 0; + param_1[1] = 0; + param_1[2] = 0; + } + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00449f68 file=? name=FUN_00449f68 */ + +undefined4 FUN_00449f68(void) + +{ + return 1; +} + + + +/* @00449f74 file=? name=FUN_00449f74 */ + +void __cdecl FUN_00449f74(uint *param_1,char *param_2) + +{ + char cVar1; + int *piVar2; + uint uVar3; + uint uVar4; + char *pcVar5; + char *pcVar6; + undefined8 uVar7; + uint *puVar8; + char local_54 [80]; + + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_PixelMap16__004eeea0,(char *)0x0); + uVar3 = 0xffffffff; + do { + pcVar5 = param_2; + if (uVar3 == 0) break; + uVar3 = uVar3 - 1; + pcVar5 = param_2 + 1; + cVar1 = *param_2; + param_2 = pcVar5; + } while (cVar1 != '\0'); + uVar3 = ~uVar3; + pcVar5 = pcVar5 + -uVar3; + pcVar6 = local_54; + for (uVar4 = uVar3 >> 2; uVar4 != 0; uVar4 = uVar4 - 1) { + *(undefined4 *)pcVar6 = *(undefined4 *)pcVar5; + pcVar5 = pcVar5 + 4; + pcVar6 = pcVar6 + 4; + } + for (uVar3 = uVar3 & 3; uVar3 != 0; uVar3 = uVar3 - 1) { + *pcVar6 = *pcVar5; + pcVar5 = pcVar5 + 1; + pcVar6 = pcVar6 + 1; + } + FUN_004d49b8(local_54,&DAT_004eeead); + puVar8 = param_1; + FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_Size___004eeeb1,(char *)0x0); + piVar2 = (int *)FUN_00407f08(&DAT_00524e20,puVar8); + FUN_004dbb24(piVar2,&DAT_004eeebf,(char *)0x0); + uVar3 = param_1[2]; + FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_MapPointer___004eeec1,(char *)0x0); + uVar7 = FUN_004dbd4c(&DAT_00524e20,uVar3); + FUN_004dbb24((int *)uVar7,&DAT_004eeecf,(char *)0x0); + return; +} + + + +/* @0044a078 file=? name=FUN_0044a078 */ + +undefined4 * __cdecl FUN_0044a078(undefined4 *param_1,int param_2,int param_3) + +{ + *param_1 = &PTR_FUN_004ef640; + FUN_00407b9c(param_1 + 1); + param_1[1] = 0; + param_1[2] = 0; + param_1[3] = param_2 + -1; + param_1[4] = param_3 + -1; + return param_1; +} + + + +/* @0044a0ac file=? name=FUN_0044a0ac */ + +void __cdecl FUN_0044a0ac(int *param_1,byte param_2) + +{ + if ((param_1 != (int *)0x0) && (*param_1 = (int)&PTR_FUN_004ef640, (param_2 & 1) != 0)) { + FUN_004022d0(param_1); + } + return; +} + + + +/* @0044a0cc file=? name=FUN_0044a0cc */ + +void __cdecl FUN_0044a0cc(int param_1,char *param_2) + +{ + char cVar1; + int *piVar2; + uint uVar3; + uint uVar4; + uint *puVar5; + char *pcVar6; + char *pcVar7; + char local_54 [80]; + + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_GraphicsDisplay__004eeed1,(char *)0x0); + uVar3 = 0xffffffff; + do { + pcVar6 = param_2; + if (uVar3 == 0) break; + uVar3 = uVar3 - 1; + pcVar6 = param_2 + 1; + cVar1 = *param_2; + param_2 = pcVar6; + } while (cVar1 != '\0'); + uVar3 = ~uVar3; + pcVar6 = pcVar6 + -uVar3; + pcVar7 = local_54; + for (uVar4 = uVar3 >> 2; uVar4 != 0; uVar4 = uVar4 - 1) { + *(undefined4 *)pcVar7 = *(undefined4 *)pcVar6; + pcVar6 = pcVar6 + 4; + pcVar7 = pcVar7 + 4; + } + for (uVar3 = uVar3 & 3; uVar3 != 0; uVar3 = uVar3 - 1) { + *pcVar7 = *pcVar6; + pcVar6 = pcVar6 + 1; + pcVar7 = pcVar7 + 1; + } + FUN_004d49b8(local_54,&DAT_004eeee3); + puVar5 = (uint *)(param_1 + 4); + FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_bounds___004eeee7,(char *)0x0); + piVar2 = (int *)FUN_00407d78(&DAT_00524e20,puVar5); + FUN_004dbb24(piVar2,&DAT_004eeef0,(char *)0x0); + return; +} + + + +/* @0044a188 file=? name=FUN_0044a188 */ + +undefined4 FUN_0044a188(void) + +{ + return 1; +} + + + +/* @0044a194 file=? name=FUN_0044a194 */ + +undefined4 FUN_0044a194(void) + +{ + return 0; +} + + + +/* @0044a19c file=? name=FUN_0044a19c */ + +void FUN_0044a19c(void) + +{ + return; +} + + + +/* @0044a1a4 file=munga/graph2d.cpp name=FUN_0044a1a4 */ + +undefined4 * __cdecl FUN_0044a1a4(undefined4 *param_1) + +{ + undefined4 local_14; + undefined4 local_10; + undefined4 local_c; + undefined4 local_8; + + FUN_0040385c(s_GraphicsDisplay__TextBounds______004eeef2,s_d__tesla_bt_munga_GRAPH2D_CPP_004eef25, + 0x43f); + FUN_00407b9c(&local_14); + *param_1 = local_14; + param_1[1] = local_10; + param_1[2] = local_c; + param_1[3] = local_8; + return param_1; +} + + + +/* @0044a1f0 file=munga/graph2d.cpp name=FUN_0044a1f0 */ + +void FUN_0044a1f0(void) + +{ + FUN_0040385c(s_GraphicsDisplay__DrawPoint_not_o_004eef43,s_d__tesla_bt_munga_GRAPH2D_CPP_004eef6d, + 0x450); + return; +} + + + +/* @0044a20c file=munga/graph2d.cpp name=FUN_0044a20c */ + +void FUN_0044a20c(void) + +{ + FUN_0040385c(s_GraphicsDisplay__DrawLine_not_ov_004eef8b,s_d__tesla_bt_munga_GRAPH2D_CPP_004eefb4, + 0x45f); + return; +} + + + +/* @0044a228 file=munga/graph2d.cpp name=FUN_0044a228 */ + +void FUN_0044a228(void) + +{ + FUN_0040385c(s_GraphicsDisplay__DrawFilledRecta_004eefd2,s_d__tesla_bt_munga_GRAPH2D_CPP_004ef006, + 0x46d); + return; +} + + + +/* @0044a244 file=munga/graph2d.cpp name=FUN_0044a244 */ + +void FUN_0044a244(void) + +{ + FUN_0040385c(s_GraphicsDisplay__DrawText_not_ov_004ef024,s_d__tesla_bt_munga_GRAPH2D_CPP_004ef04d, + 0x47e); + return; +} + + + +/* @0044a260 file=munga/graph2d.cpp name=FUN_0044a260 */ + +void FUN_0044a260(void) + +{ + FUN_0040385c(s_GraphicsDisplay__DrawBitMap_not_o_004ef06b,s_d__tesla_bt_munga_GRAPH2D_CPP_004ef096 + ,0x490); + return; +} + + + +/* @0044a27c file=munga/graph2d.cpp name=FUN_0044a27c */ + +void FUN_0044a27c(void) + +{ + FUN_0040385c(s_GraphicsDisplay__DrawBitMapOpaqu_004ef0b4,s_d__tesla_bt_munga_GRAPH2D_CPP_004ef0e5, + 0x4a3); + return; +} + + + +/* @0044a298 file=munga/graph2d.cpp name=FUN_0044a298 */ + +void FUN_0044a298(void) + +{ + FUN_0040385c(s_GraphicsDisplay__DrawPixelMap8_n_004ef103,s_d__tesla_bt_munga_GRAPH2D_CPP_004ef131, + 0x4b6); + return; +} + + + +/* @0044a2b4 file=munga/graph2d.cpp name=FUN_0044a2b4 */ + +void FUN_0044a2b4(void) + +{ + FUN_0040385c(s_GraphicsDisplay__DrawPixelMap8Si_004ef14f,s_d__tesla_bt_munga_GRAPH2D_CPP_004ef188, + 0x4c8); + return; +} + + + +/* @0044a2d0 file=? name=FUN_0044a2d0 */ + +undefined4 * __cdecl FUN_0044a2d0(undefined4 *param_1,undefined4 *param_2,char *param_3) + +{ + char cVar1; + int iVar2; + uint uVar3; + uint uVar4; + undefined4 *puVar5; + char *pcVar6; + undefined4 *puVar7; + char *pcVar8; + + *param_1 = &PTR_FUN_004ef610; + FUN_00407b9c(param_1 + 1); + if (param_2 == (undefined4 *)0x0) { + param_1[1] = 0; + param_1[2] = 0; + param_1[3] = 0; + param_1[4] = 0; + } + else { + iVar2 = 4; + puVar5 = param_2; + puVar7 = param_1; + while( true ) { + puVar7 = puVar7 + 1; + puVar5 = puVar5 + 1; + if (iVar2 == 0) break; + iVar2 = iVar2 + -1; + *puVar7 = *puVar5; + } + } + param_1[5] = param_2; + uVar3 = 0xffffffff; + do { + pcVar6 = param_3; + if (uVar3 == 0) break; + uVar3 = uVar3 - 1; + pcVar6 = param_3 + 1; + cVar1 = *param_3; + param_3 = pcVar6; + } while (cVar1 != '\0'); + uVar3 = ~uVar3; + pcVar6 = pcVar6 + -uVar3; + pcVar8 = (char *)(param_1 + 6); + for (uVar4 = uVar3 >> 2; uVar4 != 0; uVar4 = uVar4 - 1) { + *(undefined4 *)pcVar8 = *(undefined4 *)pcVar6; + pcVar6 = pcVar6 + 4; + pcVar8 = pcVar8 + 4; + } + for (uVar3 = uVar3 & 3; uVar3 != 0; uVar3 = uVar3 - 1) { + *pcVar8 = *pcVar6; + pcVar6 = pcVar6 + 1; + pcVar8 = pcVar8 + 1; + } + return param_1; +} + + + +/* @0044a348 file=? name=FUN_0044a348 */ + +void __cdecl FUN_0044a348(int *param_1,byte param_2) + +{ + if ((param_1 != (int *)0x0) && (*param_1 = (int)&PTR_FUN_004ef610, (param_2 & 1) != 0)) { + FUN_004022d0(param_1); + } + return; +} + + + +/* @0044a368 file=? name=FUN_0044a368 */ + +undefined4 FUN_0044a368(void) + +{ + return 1; +} + + + +/* @0044a374 file=? name=FUN_0044a374 */ + +void __cdecl FUN_0044a374(int param_1,char *param_2) + +{ + char cVar1; + int *piVar2; + uint uVar3; + uint uVar4; + char *pcVar5; + char *pcVar6; + undefined8 uVar7; + uint *puVar8; + char local_54 [80]; + + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_GraphicsPort__004ef1a6,(char *)0x0); + uVar3 = 0xffffffff; + do { + pcVar5 = param_2; + if (uVar3 == 0) break; + uVar3 = uVar3 - 1; + pcVar5 = param_2 + 1; + cVar1 = *param_2; + param_2 = pcVar5; + } while (cVar1 != '\0'); + uVar3 = ~uVar3; + pcVar5 = pcVar5 + -uVar3; + pcVar6 = local_54; + for (uVar4 = uVar3 >> 2; uVar4 != 0; uVar4 = uVar4 - 1) { + *(undefined4 *)pcVar6 = *(undefined4 *)pcVar5; + pcVar5 = pcVar5 + 4; + pcVar6 = pcVar6 + 4; + } + for (uVar3 = uVar3 & 3; uVar3 != 0; uVar3 = uVar3 - 1) { + *pcVar6 = *pcVar5; + pcVar5 = pcVar5 + 1; + pcVar6 = pcVar6 + 1; + } + FUN_004d49b8(local_54,&DAT_004ef1b5); + puVar8 = (uint *)(param_1 + 4); + FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_bounds___004ef1b9,(char *)0x0); + piVar2 = (int *)FUN_00407d78(&DAT_00524e20,puVar8); + FUN_004dbb24(piVar2,&DAT_004ef1ca,(char *)0x0); + uVar3 = *(uint *)(param_1 + 0x14); + FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_graphicsDisplay__004ef1cc,(char *)0x0); + uVar7 = FUN_004dbd4c(&DAT_00524e20,uVar3); + FUN_004dbb24((int *)uVar7,&DAT_004ef1dd,(char *)0x0); + FUN_004d9c70(&DAT_00524e20); + return; +} + + + +/* @0044a488 file=? name=FUN_0044a488 */ + +undefined4 __cdecl +FUN_0044a488(undefined4 param_1,int param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5 + ,undefined4 param_6) + +{ + (**(code **)(**(int **)(param_2 + 0x14) + 0x10)) + (param_1,*(int **)(param_2 + 0x14),param_3,param_4,param_5,param_6); + return param_1; +} + + + +/* @0044a4b8 file=munga/graph2d.cpp name=FUN_0044a4b8 */ + +void FUN_0044a4b8(void) + +{ + FUN_0040385c(s_GraphicsPort__SetColor_not_overr_004ef1df,s_d__tesla_bt_munga_GRAPH2D_CPP_004ef205, + 0x522); + return; +} + + + +/* @0044a4d4 file=munga/graph2d.cpp name=FUN_0044a4d4 */ + +void FUN_0044a4d4(void) + +{ + FUN_0040385c(s_GraphicsPort__DrawPoint_not_over_004ef223,s_d__tesla_bt_munga_GRAPH2D_CPP_004ef24a, + 0x52d); + return; +} + + + +/* @0044a4f0 file=munga/graph2d.cpp name=FUN_0044a4f0 */ + +void FUN_0044a4f0(void) + +{ + FUN_0040385c(s_GraphicsPort__DrawLine_not_overr_004ef268,s_d__tesla_bt_munga_GRAPH2D_CPP_004ef28e, + 0x53b); + return; +} + + + +/* @0044a50c file=munga/graph2d.cpp name=FUN_0044a50c */ + +void FUN_0044a50c(void) + +{ + FUN_0040385c(s_GraphicsPort__DrawFilledRectangl_004ef2ac,s_d__tesla_bt_munga_GRAPH2D_CPP_004ef2dd, + 0x548); + return; +} + + + +/* @0044a528 file=munga/graph2d.cpp name=FUN_0044a528 */ + +void FUN_0044a528(void) + +{ + FUN_0040385c(s_GraphicsPort__DrawText_not_overr_004ef2fb,s_d__tesla_bt_munga_GRAPH2D_CPP_004ef321, + 0x558); + return; +} + + + +/* @0044a544 file=munga/graph2d.cpp name=FUN_0044a544 */ + +void FUN_0044a544(void) + +{ + FUN_0040385c(s_GraphicsPort__DrawBitMap_not_ove_004ef33f,s_d__tesla_bt_munga_GRAPH2D_CPP_004ef367, + 0x569); + return; +} + + + +/* @0044a560 file=munga/graph2d.cpp name=FUN_0044a560 */ + +void FUN_0044a560(void) + +{ + FUN_0040385c(s_GraphicsPort__DrawBitMapOpaque_n_004ef385,s_d__tesla_bt_munga_GRAPH2D_CPP_004ef3b3, + 0x57b); + return; +} + + + +/* @0044a57c file=munga/graph2d.cpp name=FUN_0044a57c */ + +void FUN_0044a57c(void) + +{ + FUN_0040385c(s_GraphicsPort__DrawPixelMap8_not_o_004ef3d1,s_d__tesla_bt_munga_GRAPH2D_CPP_004ef3fc + ,0x58c); + return; +} + + + +/* @0044a598 file=munga/graph2d.cpp name=FUN_0044a598 */ + +void FUN_0044a598(void) + +{ + FUN_0040385c(s_GraphicsPort__DrawPixelMap8Singl_004ef41a,s_d__tesla_bt_munga_GRAPH2D_CPP_004ef450, + 0x59d); + return; +} + + + +/* @0044a5b4 file=? name=FUN_0044a5b4 */ + +uint * __cdecl FUN_0044a5b4(uint *param_1) + +{ + uint uVar1; + + *param_1 = 0x1000; + param_1[1] = 0; + uVar1 = FUN_004022b0(*param_1); + param_1[2] = uVar1; + param_1[3] = 0; + return param_1; +} + + + +/* @0044a5dc file=? name=FUN_0044a5dc */ + +void __cdecl FUN_0044a5dc(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + if ((int *)param_1[3] != (int *)0x0) { + FUN_0044a5dc((int *)param_1[3],3); + param_1[3] = 0; + } + if ((int *)param_1[2] != (int *)0x0) { + FUN_004022d0((int *)param_1[2]); + param_1[2] = 0; + } + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0044a624 file=? name=FUN_0044a624 */ + +undefined4 FUN_0044a624(void) + +{ + return 1; +} + + + +/* @0044a630 file=? name=FUN_0044a630 */ + +void __cdecl FUN_0044a630(int param_1) + +{ + if (*(int *)(param_1 + 0xc) != 0) { + FUN_0044a630(*(int *)(param_1 + 0xc)); + } + *(undefined4 *)(param_1 + 4) = 0; + return; +} + + + +/* @0044a650 file=? name=FUN_0044a650 */ + +void __cdecl FUN_0044a650(int *param_1,int param_2,uint param_3) + +{ + int *piVar1; + bool bVar2; + int iVar3; + undefined4 uVar4; + uint uVar5; + uint uVar6; + uint uVar7; + uint uVar8; + uint uVar9; + uint uVar10; + uint uVar11; + uint uVar12; + uint uVar13; + uint uVar14; + + piVar1 = *(int **)(param_2 + 0x40); + if (piVar1 == (int *)0x0) { + FUN_0044a630((int)param_1); + } + else { + bVar2 = true; + FUN_0044aab0(param_1,0); + FUN_0044a630((int)param_1); + do { + iVar3 = FUN_0044ab0c(param_1); + switch(iVar3) { + case 0: + bVar2 = false; + break; + case 1: + uVar6 = FUN_0044abc4(param_1); + iVar3 = FUN_0044ab0c(param_1); + uVar7 = FUN_0044abc4(param_1); + uVar8 = FUN_0044abc4(param_1); + if (param_3 != 0xffffffff) { + uVar6 = param_3; + } + (**(code **)(*piVar1 + 0x10))(piVar1,uVar6,iVar3,uVar7,uVar8); + break; + case 2: + uVar6 = FUN_0044abc4(param_1); + iVar3 = FUN_0044ab0c(param_1); + uVar7 = FUN_0044abc4(param_1); + uVar8 = FUN_0044abc4(param_1); + uVar9 = FUN_0044abc4(param_1); + uVar10 = FUN_0044abc4(param_1); + uVar4 = FUN_0044ab80(param_1); + if (param_3 != 0xffffffff) { + uVar6 = param_3; + } + (**(code **)(*piVar1 + 0x14))(piVar1,uVar6,iVar3,uVar7,uVar8,uVar9,uVar10,uVar4); + break; + case 3: + uVar6 = FUN_0044abc4(param_1); + iVar3 = FUN_0044ab0c(param_1); + uVar7 = FUN_0044abc4(param_1); + uVar8 = FUN_0044abc4(param_1); + uVar9 = FUN_0044abc4(param_1); + uVar10 = FUN_0044abc4(param_1); + if (param_3 != 0xffffffff) { + uVar6 = param_3; + } + (**(code **)(*piVar1 + 0x18))(piVar1,uVar6,iVar3,uVar7,uVar8,uVar9,uVar10); + break; + case 4: + uVar6 = FUN_0044abc4(param_1); + iVar3 = FUN_0044ab0c(param_1); + uVar7 = FUN_0044abc4(param_1); + uVar8 = FUN_0044abc4(param_1); + uVar9 = FUN_0044abc4(param_1); + uVar10 = FUN_0044ac48(param_1); + uVar11 = FUN_0044abc4(param_1); + uVar12 = FUN_0044abc4(param_1); + uVar13 = FUN_0044abc4(param_1); + uVar14 = FUN_0044abc4(param_1); + if (param_3 != 0xffffffff) { + uVar6 = param_3; + } + (**(code **)(*piVar1 + 0x20)) + (piVar1,uVar6,iVar3,uVar7,uVar8,uVar9,uVar10,uVar11,uVar12,uVar13,uVar14); + break; + case 5: + uVar6 = FUN_0044abc4(param_1); + uVar7 = FUN_0044abc4(param_1); + iVar3 = FUN_0044ab0c(param_1); + uVar8 = FUN_0044abc4(param_1); + uVar9 = FUN_0044abc4(param_1); + uVar10 = FUN_0044abc4(param_1); + uVar11 = FUN_0044ac48(param_1); + uVar12 = FUN_0044abc4(param_1); + uVar13 = FUN_0044abc4(param_1); + uVar14 = FUN_0044abc4(param_1); + uVar5 = FUN_0044abc4(param_1); + if (param_3 != 0xffffffff) { + uVar6 = param_3; + } + (**(code **)(*piVar1 + 0x24)) + (piVar1,uVar6,uVar7,iVar3,uVar8,uVar9,uVar10,uVar11,uVar12,uVar13,uVar14,uVar5); + break; + case 6: + iVar3 = FUN_0044ab0c(param_1); + uVar6 = FUN_0044abc4(param_1); + uVar7 = FUN_0044abc4(param_1); + uVar8 = FUN_0044abc4(param_1); + uVar9 = FUN_0044abc4(param_1); + uVar10 = FUN_0044ac48(param_1); + uVar11 = FUN_0044abc4(param_1); + uVar12 = FUN_0044abc4(param_1); + uVar13 = FUN_0044abc4(param_1); + uVar14 = FUN_0044abc4(param_1); + if (param_3 == 0xffffffff) { + (**(code **)(*piVar1 + 0x28)) + (piVar1,iVar3,uVar6,uVar7,uVar8,uVar9,uVar10,uVar11,uVar12,uVar13,uVar14); + } + else { + (**(code **)(*piVar1 + 0x2c)) + (piVar1,param_3,iVar3,uVar7,uVar8,uVar9,uVar10,uVar11,uVar12,uVar13,uVar14); + } + break; + case 7: + uVar6 = FUN_0044abc4(param_1); + iVar3 = FUN_0044ab0c(param_1); + uVar7 = FUN_0044abc4(param_1); + uVar8 = FUN_0044abc4(param_1); + uVar9 = FUN_0044abc4(param_1); + uVar10 = FUN_0044ac48(param_1); + uVar11 = FUN_0044abc4(param_1); + uVar12 = FUN_0044abc4(param_1); + uVar13 = FUN_0044abc4(param_1); + uVar14 = FUN_0044abc4(param_1); + if (param_3 != 0xffffffff) { + uVar6 = param_3; + } + (**(code **)(*piVar1 + 0x2c)) + (piVar1,uVar6,iVar3,uVar7,uVar8,uVar9,uVar10,uVar11,uVar12,uVar13,uVar14); + } + } while (bVar2); + } + return; +} + + + +/* @0044aab0 file=? name=FUN_0044aab0 */ + +void __cdecl FUN_0044aab0(int *param_1,undefined4 param_2) + +{ + int iVar1; + uint *puVar2; + + if (param_1[1] < *param_1) { + iVar1 = param_1[1]; + param_1[1] = param_1[1] + 1; + *(char *)(param_1[2] + iVar1) = (char)param_2; + } + else { + if (param_1[3] == 0) { + puVar2 = (uint *)FUN_00402298(0x10); + if (puVar2 == (uint *)0x0) { + puVar2 = (uint *)0x0; + } + else { + puVar2 = FUN_0044a5b4(puVar2); + } + param_1[3] = (int)puVar2; + } + FUN_0044aab0((int *)param_1[3],param_2); + } + return; +} + + + +/* @0044ab0c file=munga/graph2d.cpp name=FUN_0044ab0c */ + +int __cdecl FUN_0044ab0c(int *param_1) + +{ + int iVar1; + + if (param_1[1] < *param_1) { + iVar1 = param_1[1]; + param_1[1] = param_1[1] + 1; + return (int)*(char *)(param_1[2] + iVar1); + } + if (param_1[3] == 0) { + FUN_0040385c(s_GraphicsViewRecord__GetChar___ha_004ef46e, + s_d__tesla_bt_munga_GRAPH2D_CPP_004ef498,0x746); + return 0; + } + iVar1 = FUN_0044ab0c((int *)param_1[3]); + return iVar1; +} + + + +/* @0044ab58 file=? name=FUN_0044ab58 */ + +void __cdecl FUN_0044ab58(int *param_1,int param_2) + +{ + if (param_2 != 0) { + FUN_0044aab0(param_1,1); + return; + } + FUN_0044aab0(param_1,0); + return; +} + + + +/* @0044ab80 file=? name=FUN_0044ab80 */ + +undefined4 __cdecl FUN_0044ab80(int *param_1) + +{ + int iVar1; + + iVar1 = FUN_0044ab0c(param_1); + if (iVar1 != 0) { + return 1; + } + return 0; +} + + + +/* @0044ab9c file=? name=FUN_0044ab9c */ + +void __cdecl FUN_0044ab9c(int *param_1,int param_2) + +{ + FUN_0044aab0(param_1,param_2 >> 8); + FUN_0044aab0(param_1,param_2); + return; +} + + + +/* @0044abc4 file=? name=FUN_0044abc4 */ + +uint __cdecl FUN_0044abc4(int *param_1) + +{ + int iVar1; + uint uVar2; + + iVar1 = FUN_0044ab0c(param_1); + uVar2 = FUN_0044ab0c(param_1); + uVar2 = iVar1 << 8 | uVar2 & 0xff; + if ((iVar1 << 8 & 0x8000U) != 0) { + uVar2 = uVar2 | 0xffff0000; + } + return uVar2; +} + + + +/* @0044abf8 file=? name=FUN_0044abf8 */ + +void __cdecl FUN_0044abf8(int *param_1,int param_2) + +{ + FUN_0044aab0(param_1,param_2 >> 0x18); + FUN_0044aab0(param_1,param_2 >> 0x10); + FUN_0044aab0(param_1,param_2 >> 8); + FUN_0044aab0(param_1,param_2); + return; +} + + + +/* @0044ac48 file=? name=FUN_0044ac48 */ + +uint __cdecl FUN_0044ac48(int *param_1) + +{ + int iVar1; + uint uVar2; + uint uVar3; + uint uVar4; + + iVar1 = FUN_0044ab0c(param_1); + uVar2 = FUN_0044ab0c(param_1); + uVar3 = FUN_0044ab0c(param_1); + uVar4 = FUN_0044ab0c(param_1); + return iVar1 << 0x18 | (uVar2 & 0xff) << 0x10 | (uVar3 & 0xff) << 8 | uVar4 & 0xff; +} + + + +/* @0044ac98 file=? name=FUN_0044ac98 */ + +undefined4 * __cdecl +FUN_0044ac98(undefined4 *param_1,int param_2,undefined4 param_3,undefined4 param_4, + undefined4 param_5,undefined4 param_6) + +{ + int *piVar1; + int iVar2; + undefined4 *puVar3; + undefined4 *puVar4; + + *param_1 = &PTR_FUN_004ef59c; + piVar1 = param_1 + 1; + FUN_00407b9c(piVar1); + FUN_00407b9c(param_1 + 0xb); + param_1[0x10] = param_2; + param_1[7] = 0; + param_1[8] = 0; + param_1[9] = 0; + param_1[10] = 1; + param_1[0xf] = 0; + if (param_2 == 0) { + param_1[1] = 0; + param_1[2] = 0; + param_1[3] = 0; + param_1[4] = 0; + param_1[5] = param_1[1]; + param_1[6] = param_1[2]; + } + else { + param_1[1] = param_3; + param_1[2] = param_4; + param_1[3] = param_5; + param_1[4] = param_6; + FUN_00407de3(piVar1,piVar1,(int *)(param_1[0x10] + 4)); + FUN_00407de3(param_1 + 3,param_1 + 3,(int *)(param_1[0x10] + 4)); + param_1[5] = param_1[1]; + param_1[6] = param_1[2]; + FUN_00407cd0(piVar1,piVar1,(int *)(param_1[0x10] + 4)); + } + puVar4 = param_1 + 0xb; + puVar3 = param_1; + for (iVar2 = 4; puVar3 = puVar3 + 1, iVar2 != 0; iVar2 = iVar2 + -1) { + *puVar4 = *puVar3; + puVar4 = puVar4 + 1; + } + param_1[0x11] = 0; + return param_1; +} + + + +/* @0044ad78 file=? name=FUN_0044ad78 */ + +undefined4 * __cdecl FUN_0044ad78(undefined4 *param_1,undefined4 *param_2) + +{ + int iVar1; + undefined4 *puVar2; + undefined4 *puVar3; + + *param_1 = &PTR_FUN_004ef59c; + FUN_00407b9c(param_1 + 1); + FUN_00407b9c(param_1 + 0xb); + param_1[0x10] = param_2; + param_1[7] = 0; + param_1[8] = 0; + param_1[9] = 0; + param_1[10] = 1; + param_1[0xf] = 0; + if (param_2 == (undefined4 *)0x0) { + param_1[1] = 0; + param_1[2] = 0; + param_1[3] = 0; + param_1[4] = 0; + } + else { + iVar1 = 4; + puVar2 = param_1; + while( true ) { + puVar2 = puVar2 + 1; + param_2 = param_2 + 1; + if (iVar1 == 0) break; + iVar1 = iVar1 + -1; + *puVar2 = *param_2; + } + } + param_1[5] = param_1[1]; + param_1[6] = param_1[2]; + puVar3 = param_1 + 0xb; + puVar2 = param_1; + for (iVar1 = 4; puVar2 = puVar2 + 1, iVar1 != 0; iVar1 = iVar1 + -1) { + *puVar3 = *puVar2; + puVar3 = puVar3 + 1; + } + param_1[0x11] = 0; + return param_1; +} + + + +/* @0044ae0c file=? name=FUN_0044ae0c */ + +void __cdecl FUN_0044ae0c(int *param_1,byte param_2) + +{ + if ((param_1 != (int *)0x0) && (*param_1 = (int)&PTR_FUN_004ef59c, (param_2 & 1) != 0)) { + FUN_004022d0(param_1); + } + return; +} + + + +/* @0044ae2c file=? name=FUN_0044ae2c */ + +void __cdecl +FUN_0044ae2c(undefined4 *param_1,undefined4 param_2,undefined4 param_3,int param_4,int param_5) + +{ + int *piVar1; + int iVar2; + undefined4 *puVar3; + + if (param_1[0x10] != 0) { + piVar1 = param_1 + 1; + param_1[1] = param_2; + param_1[2] = param_3; + param_1[3] = param_4 + -1; + param_1[4] = param_5 + -1; + FUN_00407de3(piVar1,piVar1,(int *)(param_1[0x10] + 4)); + FUN_00407de3(param_1 + 3,param_1 + 3,(int *)(param_1[0x10] + 4)); + param_1[5] = param_1[1]; + param_1[6] = param_1[2]; + FUN_00407cd0(piVar1,piVar1,(int *)(param_1[0x10] + 4)); + puVar3 = param_1 + 0xb; + for (iVar2 = 4; param_1 = param_1 + 1, iVar2 != 0; iVar2 = iVar2 + -1) { + *puVar3 = *param_1; + puVar3 = puVar3 + 1; + } + } + return; +} + + + +/* @0044aeb0 file=? name=FUN_0044aeb0 */ + +undefined4 FUN_0044aeb0(void) + +{ + return 1; +} + + + +/* @0044aebc file=? name=FUN_0044aebc */ + +void __cdecl FUN_0044aebc(int param_1,char *param_2) + +{ + char cVar1; + int iVar2; + int *piVar3; + uint uVar4; + uint uVar5; + char *pcVar6; + char *pcVar7; + undefined8 uVar8; + uint *puVar9; + char local_54 [80]; + + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_GraphicsView__004ef4b6,(char *)0x0); + uVar4 = 0xffffffff; + do { + pcVar6 = param_2; + if (uVar4 == 0) break; + uVar4 = uVar4 - 1; + pcVar6 = param_2 + 1; + cVar1 = *param_2; + param_2 = pcVar6; + } while (cVar1 != '\0'); + uVar4 = ~uVar4; + pcVar6 = pcVar6 + -uVar4; + pcVar7 = local_54; + for (uVar5 = uVar4 >> 2; uVar5 != 0; uVar5 = uVar5 - 1) { + *(undefined4 *)pcVar7 = *(undefined4 *)pcVar6; + pcVar6 = pcVar6 + 4; + pcVar7 = pcVar7 + 4; + } + for (uVar4 = uVar4 & 3; uVar4 != 0; uVar4 = uVar4 - 1) { + *pcVar7 = *pcVar6; + pcVar6 = pcVar6 + 1; + pcVar7 = pcVar7 + 1; + } + FUN_004d49b8(local_54,&DAT_004ef4c5); + puVar9 = (uint *)(param_1 + 4); + FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_areaWithinPort___004ef4c9,(char *)0x0); + piVar3 = (int *)FUN_00407d78(&DAT_00524e20,puVar9); + FUN_004dbb24(piVar3,&DAT_004ef4dd,(char *)0x0); + puVar9 = (uint *)(param_1 + 0x14); + FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_origin___004ef4df,(char *)0x0); + piVar3 = (int *)FUN_00407f08(&DAT_00524e20,puVar9); + FUN_004dbb24(piVar3,&DAT_004ef4f3,(char *)0x0); + puVar9 = (uint *)(param_1 + 0x1c); + FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_currentPosition___004ef4f5,(char *)0x0); + piVar3 = (int *)FUN_00407f08(&DAT_00524e20,puVar9); + FUN_004dbb24(piVar3,&DAT_004ef509,(char *)0x0); + uVar4 = *(uint *)(param_1 + 0x24); + FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_currentFontID___004ef50b,(char *)0x0); + piVar3 = FUN_004db78c(&DAT_00524e20,uVar4); + FUN_004dbb24(piVar3,&DAT_004ef51f,(char *)0x0); + uVar4 = *(uint *)(param_1 + 0x28); + FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_currentColor___004ef521,(char *)0x0); + piVar3 = FUN_004db78c(&DAT_00524e20,uVar4); + FUN_004dbb24(piVar3,&DAT_004ef535,(char *)0x0); + puVar9 = (uint *)(param_1 + 0x2c); + FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_clippingRectangle___004ef537,(char *)0x0); + piVar3 = (int *)FUN_00407d78(&DAT_00524e20,puVar9); + FUN_004dbb24(piVar3,&DAT_004ef54b,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_currentOperation___004ef54d,(char *)0x0); + iVar2 = *(int *)(param_1 + 0x3c); + if (iVar2 == 0) { + FUN_004dbb24(&DAT_00524e20,s_REPLACE_004ef56a,(char *)0x0); + } + else if (iVar2 == 1) { + FUN_004dbb24(&DAT_00524e20,&DAT_004ef561,(char *)0x0); + } + else if (iVar2 == 2) { + FUN_004dbb24(&DAT_00524e20,&DAT_004ef566,(char *)0x0); + } + else { + uVar4 = *(uint *)(param_1 + 0x3c); + FUN_004dbb24(&DAT_00524e20,s_Unsupported_type__004ef573,(char *)0x0); + piVar3 = FUN_004db78c(&DAT_00524e20,uVar4); + FUN_004dbb24(piVar3,&DAT_004ef585,(char *)0x0); + } + uVar4 = *(uint *)(param_1 + 0x40); + FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_graphicsPort___004ef587,(char *)0x0); + uVar8 = FUN_004dbd4c(&DAT_00524e20,uVar4); + FUN_004dbb24((int *)uVar8,&DAT_004ef598,(char *)0x0); + return; +} + + + +/* @0044b1e8 file=? name=FUN_0044b1e8 */ + +void __cdecl FUN_0044b1e8(int param_1,undefined4 param_2) + +{ + *(undefined4 *)(param_1 + 0x3c) = param_2; + return; +} + + + +/* @0044b1f8 file=? name=FUN_0044b1f8 */ + +void __cdecl FUN_0044b1f8(int param_1,int param_2,int param_3) + +{ + int *piVar1; + + piVar1 = (int *)(param_1 + 0x1c); + FUN_00407e04(piVar1,piVar1,(int *)(param_1 + 0x14)); + *(int *)(param_1 + 0x14) = param_2 + *(int *)(param_1 + 4); + *(int *)(param_1 + 0x18) = param_3 + *(int *)(param_1 + 8); + FUN_00407de3(piVar1,piVar1,(int *)(param_1 + 0x14)); + return; +} + + + +/* @0044b240 file=? name=FUN_0044b240 */ + +void __cdecl FUN_0044b240(int param_1,undefined4 param_2) + +{ + *(undefined4 *)(param_1 + 0x24) = param_2; + return; +} + + + +/* @0044b250 file=? name=FUN_0044b250 */ + +void __cdecl FUN_0044b250(int param_1,undefined4 param_2) + +{ + *(undefined4 *)(param_1 + 0x28) = param_2; + return; +} + + + +/* @0044b260 file=? name=FUN_0044b260 */ + +void __cdecl FUN_0044b260(int param_1,int *param_2) + +{ + int iVar1; + int *piVar2; + int local_14 [4]; + + FUN_00407b9c(local_14); + piVar2 = local_14; + for (iVar1 = 4; iVar1 != 0; iVar1 = iVar1 + -1) { + *piVar2 = *param_2; + param_2 = param_2 + 1; + piVar2 = piVar2 + 1; + } + FUN_00407de3(local_14,local_14,(int *)(param_1 + 0x14)); + FUN_00407de3(local_14 + 2,local_14 + 2,(int *)(param_1 + 0x14)); + if (*(int *)(param_1 + 0x40) == 0) { + *(undefined4 *)(param_1 + 0x2c) = 1; + *(undefined4 *)(param_1 + 0x34) = 0; + } + else { + FUN_00407cd0((int *)(param_1 + 0x2c),(int *)(*(int *)(param_1 + 0x40) + 4),local_14); + } + return; +} + + + +/* @0044b2e0 file=? name=FUN_0044b2e0 */ + +void __cdecl FUN_0044b2e0(undefined4 *param_1) + +{ + int iVar1; + undefined4 *puVar2; + + puVar2 = param_1 + 0xb; + for (iVar1 = 4; param_1 = param_1 + 1, iVar1 != 0; iVar1 = iVar1 + -1) { + *puVar2 = *param_1; + puVar2 = puVar2 + 1; + } + return; +} + + + +/* @0044b2fc file=? name=FUN_0044b2fc */ + +void __cdecl FUN_0044b2fc(int param_1,int param_2,int param_3) + +{ + *(int *)(param_1 + 0x1c) = *(int *)(param_1 + 0x14) + param_2; + *(int *)(param_1 + 0x20) = *(int *)(param_1 + 0x18) + param_3; + return; +} + + + +/* @0044b318 file=? name=FUN_0044b318 */ + +void __cdecl FUN_0044b318(int param_1,int param_2,int param_3) + +{ + *(int *)(param_1 + 0x1c) = *(int *)(param_1 + 0x1c) + param_2; + *(int *)(param_1 + 0x20) = *(int *)(param_1 + 0x20) + param_3; + return; +} + + + +/* @0044b32c file=? name=FUN_0044b32c */ + +void __cdecl FUN_0044b32c(int *param_1) + +{ + int *piVar1; + int iVar2; + + iVar2 = (**(code **)(*param_1 + 0x6c))(param_1,param_1[7],param_1[8]); + piVar1 = (int *)param_1[0x10]; + if ((piVar1 != (int *)0x0) && (iVar2 == 0)) { + (**(code **)(*piVar1 + 0x10))(piVar1,param_1[10],param_1[0xf],param_1[7],param_1[8]); + if ((int *)param_1[0x11] != (int *)0x0) { + FUN_0044aab0((int *)param_1[0x11],1); + FUN_0044ab9c((int *)param_1[0x11],param_1[10]); + FUN_0044aab0((int *)param_1[0x11],param_1[0xf]); + FUN_0044ab9c((int *)param_1[0x11],param_1[7]); + FUN_0044ab9c((int *)param_1[0x11],param_1[8]); + } + } + return; +} + + + +/* @0044b3c8 file=? name=FUN_0044b3c8 */ + +void __cdecl FUN_0044b3c8(int *param_1,int param_2,int param_3) + +{ + int iVar1; + int iVar2; + + iVar1 = param_1[5]; + iVar2 = param_1[6]; + FUN_0044bdfc(param_1,param_1[7],param_1[8],iVar1 + param_2,iVar2 + param_3,1); + param_1[7] = iVar1 + param_2; + param_1[8] = iVar2 + param_3; + return; +} + + + +/* @0044b428 file=? name=FUN_0044b428 */ + +void __cdecl FUN_0044b428(int *param_1,int param_2,int param_3) + +{ + int iVar1; + int iVar2; + + iVar1 = param_1[7]; + iVar2 = param_1[8]; + FUN_0044bdfc(param_1,param_1[7],param_1[8],iVar1 + param_2,iVar2 + param_3,1); + param_1[7] = iVar1 + param_2; + param_1[8] = iVar2 + param_3; + return; +} + + + +/* @0044b488 file=? name=FUN_0044b488 */ + +void __cdecl FUN_0044b488(int *param_1,int param_2,int param_3) + +{ + int iVar1; + int iVar2; + + iVar1 = param_1[5]; + iVar2 = param_1[6]; + FUN_0044bcf0(param_1,param_1[7],param_1[8],iVar1 + param_2,iVar2 + param_3); + param_1[7] = iVar1 + param_2; + param_1[8] = iVar2 + param_3; + return; +} + + + +/* @0044b4f8 file=? name=FUN_0044b4f8 */ + +void __cdecl FUN_0044b4f8(int *param_1,int param_2,int param_3) + +{ + int iVar1; + int iVar2; + + iVar2 = param_1[7] + param_2; + iVar1 = param_1[8] + param_3; + FUN_0044bcf0(param_1,param_1[7],param_1[8],iVar2,iVar1); + param_1[7] = iVar2; + param_1[8] = iVar1; + return; +} + + + +/* @0044b568 file=? name=FUN_0044b568 */ + +void __cdecl FUN_0044b568(int *param_1,int param_2,int param_3) + +{ + int local_c; + int local_8; + + local_c = param_1[7]; + local_8 = param_1[8]; + FUN_00407e04(&local_c,&local_c,param_1 + 5); + (**(code **)(*param_1 + 0x30))(param_1,local_c,param_3); + (**(code **)(*param_1 + 0x30))(param_1,param_2,param_3); + (**(code **)(*param_1 + 0x30))(param_1,param_2,local_8); + (**(code **)(*param_1 + 0x30))(param_1,local_c,local_8); + param_1[7] = param_2; + param_1[8] = param_3; + return; +} + + + +/* @0044b5e0 file=? name=FUN_0044b5e0 */ + +void __cdecl FUN_0044b5e0(int *param_1,int param_2,int param_3) + +{ + int local_c; + int local_8; + + local_c = param_1[7]; + local_8 = param_1[8]; + FUN_00407e04(&local_c,&local_c,param_1 + 5); + (**(code **)(*param_1 + 0x34))(param_1,0,param_3); + (**(code **)(*param_1 + 0x34))(param_1,param_2,0); + (**(code **)(*param_1 + 0x34))(param_1,0,-param_3); + (**(code **)(*param_1 + 0x34))(param_1,-param_2,0); + param_1[7] = param_2 + local_c; + param_1[8] = param_3 + local_8; + return; +} + + + +/* @0044b664 file=? name=FUN_0044b664 */ + +void __cdecl FUN_0044b664(int param_1,int param_2,int param_3) + +{ + int local_14; + int local_10; + int local_c; + int local_8; + + FUN_00407b9c(&local_14); + local_14 = *(int *)(param_1 + 0x1c); + local_10 = *(int *)(param_1 + 0x20); + local_c = *(int *)(param_1 + 0x14) + param_2; + local_8 = *(int *)(param_1 + 0x18) + param_3; + FUN_0044c074(param_1,local_14,local_10,local_c,local_8); + *(int *)(param_1 + 0x1c) = local_c; + *(int *)(param_1 + 0x20) = local_8; + return; +} + + + +/* @0044b6d0 file=? name=FUN_0044b6d0 */ + +void __cdecl FUN_0044b6d0(int param_1,int param_2,int param_3) + +{ + int local_14; + int local_10; + int local_c; + int local_8; + + FUN_00407b9c(&local_14); + local_14 = *(int *)(param_1 + 0x1c); + local_10 = *(int *)(param_1 + 0x20); + local_c = *(int *)(param_1 + 0x1c) + param_2; + local_8 = *(int *)(param_1 + 0x20) + param_3; + FUN_0044c074(param_1,local_14,local_10,local_c,local_8); + *(int *)(param_1 + 0x1c) = local_c; + *(int *)(param_1 + 0x20) = local_8; + return; +} + + + +/* @0044b73c file=? name=FUN_0044b73c */ + +void FUN_0044b73c(void) + +{ + return; +} + + + +/* @0044b744 file=? name=FUN_0044b744 */ + +void __cdecl +FUN_0044b744(int param_1,int param_2,int param_3,undefined4 param_4,undefined4 param_5, + undefined4 param_6,undefined4 param_7) + +{ + int iVar1; + int local_1c; + int local_18; + int local_14; + int local_10; + int local_c; + int local_8; + + FUN_00407bd0(&local_1c,param_4,param_5,param_6,param_7); + if (param_3 != 0) { + iVar1 = FUN_0044c174(param_1,&local_1c,&local_c,*(int *)(param_3 + 0xc),*(int *)(param_3 + 0x10) + ); + if (iVar1 != 0) { + (**(code **)(**(int **)(param_1 + 0x40) + 0x20)) + (*(int **)(param_1 + 0x40),*(undefined4 *)(param_1 + 0x28), + *(undefined4 *)(param_1 + 0x3c),param_2,local_c,local_8,param_3,local_1c,local_18, + local_14,local_10); + if (*(int **)(param_1 + 0x44) != (int *)0x0) { + FUN_0044aab0(*(int **)(param_1 + 0x44),4); + FUN_0044ab9c(*(int **)(param_1 + 0x44),*(int *)(param_1 + 0x28)); + FUN_0044aab0(*(int **)(param_1 + 0x44),*(undefined4 *)(param_1 + 0x3c)); + FUN_0044ab9c(*(int **)(param_1 + 0x44),param_2); + FUN_0044ab9c(*(int **)(param_1 + 0x44),local_c); + FUN_0044ab9c(*(int **)(param_1 + 0x44),local_8); + FUN_0044abf8(*(int **)(param_1 + 0x44),param_3); + FUN_0044ab9c(*(int **)(param_1 + 0x44),local_1c); + FUN_0044ab9c(*(int **)(param_1 + 0x44),local_18); + FUN_0044ab9c(*(int **)(param_1 + 0x44),local_14); + FUN_0044ab9c(*(int **)(param_1 + 0x44),local_10); + } + } + } + return; +} + + + +/* @0044b88c file=? name=FUN_0044b88c */ + +void __cdecl +FUN_0044b88c(int param_1,int param_2,int param_3,int param_4,undefined4 param_5,undefined4 param_6, + undefined4 param_7,undefined4 param_8) + +{ + int iVar1; + int local_1c; + int local_18; + int local_14; + int local_10; + int local_c; + int local_8; + + FUN_00407bd0(&local_1c,param_5,param_6,param_7,param_8); + if (param_4 != 0) { + iVar1 = FUN_0044c174(param_1,&local_1c,&local_c,*(int *)(param_4 + 0xc),*(int *)(param_4 + 0x10) + ); + if (iVar1 != 0) { + (**(code **)(**(int **)(param_1 + 0x40) + 0x24)) + (*(int **)(param_1 + 0x40),*(undefined4 *)(param_1 + 0x28),param_2, + *(undefined4 *)(param_1 + 0x3c),param_3,local_c,local_8,param_4,local_1c,local_18, + local_14,local_10); + if (*(int **)(param_1 + 0x44) != (int *)0x0) { + FUN_0044aab0(*(int **)(param_1 + 0x44),5); + FUN_0044ab9c(*(int **)(param_1 + 0x44),*(int *)(param_1 + 0x28)); + FUN_0044ab9c(*(int **)(param_1 + 0x44),param_2); + FUN_0044aab0(*(int **)(param_1 + 0x44),*(undefined4 *)(param_1 + 0x3c)); + FUN_0044ab9c(*(int **)(param_1 + 0x44),param_3); + FUN_0044ab9c(*(int **)(param_1 + 0x44),local_c); + FUN_0044ab9c(*(int **)(param_1 + 0x44),local_8); + FUN_0044abf8(*(int **)(param_1 + 0x44),param_4); + FUN_0044ab9c(*(int **)(param_1 + 0x44),local_1c); + FUN_0044ab9c(*(int **)(param_1 + 0x44),local_18); + FUN_0044ab9c(*(int **)(param_1 + 0x44),local_14); + FUN_0044ab9c(*(int **)(param_1 + 0x44),local_10); + } + } + } + return; +} + + + +/* @0044b9e8 file=? name=FUN_0044b9e8 */ + +void __cdecl +FUN_0044b9e8(int param_1,int param_2,int param_3,int *param_4,undefined4 param_5,undefined4 param_6, + undefined4 param_7,undefined4 param_8) + +{ + int iVar1; + int local_1c; + int local_18; + int local_14; + int local_10; + int local_c; + int local_8; + + FUN_00407bd0(&local_1c,param_5,param_6,param_7,param_8); + if (param_4 != (int *)0x0) { + iVar1 = FUN_0044c174(param_1,&local_1c,&local_c,*param_4,param_4[1]); + if (iVar1 != 0) { + (**(code **)(**(int **)(param_1 + 0x40) + 0x28)) + (*(int **)(param_1 + 0x40),*(undefined4 *)(param_1 + 0x3c),param_2,param_3,local_c, + local_8,param_4,local_1c,local_18,local_14,local_10); + if (*(int **)(param_1 + 0x44) != (int *)0x0) { + FUN_0044aab0(*(int **)(param_1 + 0x44),6); + FUN_0044aab0(*(int **)(param_1 + 0x44),*(undefined4 *)(param_1 + 0x3c)); + FUN_0044ab9c(*(int **)(param_1 + 0x44),param_2); + FUN_0044ab9c(*(int **)(param_1 + 0x44),param_3); + FUN_0044ab9c(*(int **)(param_1 + 0x44),local_c); + FUN_0044ab9c(*(int **)(param_1 + 0x44),local_8); + FUN_0044abf8(*(int **)(param_1 + 0x44),(int)param_4); + FUN_0044ab9c(*(int **)(param_1 + 0x44),local_1c); + FUN_0044ab9c(*(int **)(param_1 + 0x44),local_18); + FUN_0044ab9c(*(int **)(param_1 + 0x44),local_14); + FUN_0044ab9c(*(int **)(param_1 + 0x44),local_10); + } + } + } + return; +} + + + +/* @0044bb30 file=? name=FUN_0044bb30 */ + +void __cdecl +FUN_0044bb30(int param_1,int param_2,int *param_3,undefined4 param_4,undefined4 param_5, + undefined4 param_6,undefined4 param_7) + +{ + int iVar1; + int local_1c; + int local_18; + int local_14; + int local_10; + int local_c; + int local_8; + + FUN_00407bd0(&local_1c,param_4,param_5,param_6,param_7); + if (param_3 != (int *)0x0) { + iVar1 = FUN_0044c174(param_1,&local_1c,&local_c,*param_3,param_3[1]); + if (iVar1 != 0) { + (**(code **)(**(int **)(param_1 + 0x40) + 0x2c)) + (*(int **)(param_1 + 0x40),*(undefined4 *)(param_1 + 0x28), + *(undefined4 *)(param_1 + 0x3c),param_2,local_c,local_8,param_3,local_1c,local_18, + local_14,local_10); + if (*(int **)(param_1 + 0x44) != (int *)0x0) { + FUN_0044aab0(*(int **)(param_1 + 0x44),7); + FUN_0044ab9c(*(int **)(param_1 + 0x44),*(int *)(param_1 + 0x28)); + FUN_0044aab0(*(int **)(param_1 + 0x44),*(undefined4 *)(param_1 + 0x3c)); + FUN_0044ab9c(*(int **)(param_1 + 0x44),param_2); + FUN_0044ab9c(*(int **)(param_1 + 0x44),local_c); + FUN_0044ab9c(*(int **)(param_1 + 0x44),local_8); + FUN_0044abf8(*(int **)(param_1 + 0x44),(int)param_3); + FUN_0044ab9c(*(int **)(param_1 + 0x44),local_1c); + FUN_0044ab9c(*(int **)(param_1 + 0x44),local_18); + FUN_0044ab9c(*(int **)(param_1 + 0x44),local_14); + FUN_0044ab9c(*(int **)(param_1 + 0x44),local_10); + } + } + } + return; +} + + + +/* @0044bc78 file=? name=FUN_0044bc78 */ + +void __cdecl FUN_0044bc78(int param_1,undefined4 param_2,undefined4 param_3) + +{ + int *piVar1; + + piVar1 = *(int **)(param_1 + 0x40); + if (piVar1 != (int *)0x0) { + (**(code **)(*piVar1 + 0xc))(piVar1,param_2,param_3); + } + return; +} + + + +/* @0044bc98 file=? name=FUN_0044bc98 */ + +void __cdecl FUN_0044bc98(int param_1,undefined4 param_2) + +{ + *(undefined4 *)(param_1 + 0x44) = param_2; + return; +} + + + +/* @0044bca8 file=? name=FUN_0044bca8 */ + +void __cdecl FUN_0044bca8(int param_1) + +{ + *(undefined4 *)(param_1 + 0x44) = 0; + return; +} + + + +/* @0044bcb8 file=? name=FUN_0044bcb8 */ + +uint __cdecl FUN_0044bcb8(int param_1,int param_2,int param_3) + +{ + uint uVar1; + + uVar1 = 0; + if (param_2 < *(int *)(param_1 + 0x2c)) { + uVar1 = 1; + } + else if (*(int *)(param_1 + 0x34) < param_2) { + uVar1 = 2; + } + if (param_3 < *(int *)(param_1 + 0x30)) { + uVar1 = uVar1 | 4; + } + else if (*(int *)(param_1 + 0x38) < param_3) { + uVar1 = uVar1 | 8; + } + return uVar1; +} + + + +/* @0044bcf0 file=? name=FUN_0044bcf0 */ + +void __cdecl FUN_0044bcf0(int *param_1,int param_2,int param_3,int param_4,int param_5) + +{ + FUN_0044bdfc(param_1,param_2,param_3,param_4,param_5,1); + FUN_0044bdfc(param_1,param_2 + -1,param_3,param_4 + -1,param_5,1); + FUN_0044bdfc(param_1,param_2,param_3 + 1,param_4,param_5 + 1,1); + FUN_0044bdfc(param_1,param_2 + 1,param_3,param_4 + 1,param_5,1); + FUN_0044bdfc(param_1,param_2,param_3 + -1,param_4,param_5 + -1,1); + return; +} + + + +/* @0044bdfc file=? name=FUN_0044bdfc */ + +void __cdecl FUN_0044bdfc(int *param_1,int param_2,int param_3,int param_4,int param_5,int param_6) + +{ + bool bVar1; + bool bVar2; + bool bVar3; + uint uVar4; + int iVar5; + int iVar6; + uint uVar7; + uint local_8; + + bVar3 = false; + bVar1 = false; + bVar2 = false; + if (param_1[0x10] != 0) { + uVar4 = (**(code **)(*param_1 + 0x6c))(param_1,param_2,param_3); + local_8 = (**(code **)(*param_1 + 0x6c))(param_1,param_4,param_5); + while (iVar6 = param_3, iVar5 = param_2, local_8 != 0 || uVar4 != 0) { + if ((local_8 & uVar4) != 0) { + return; + } + uVar7 = uVar4; + if (uVar4 == 0) { + param_2 = param_4; + param_3 = param_5; + param_4 = iVar5; + param_5 = iVar6; + bVar1 = (bool)(bVar1 ^ 1); + uVar7 = local_8; + local_8 = uVar4; + bVar2 = bVar3; + } + if ((uVar7 & 1) == 0) { + if ((uVar7 & 2) == 0) { + if ((uVar7 & 8) == 0) { + if ((uVar7 & 4) != 0) { + bVar3 = true; + param_2 = param_2 + ((param_4 - param_2) * (param_1[0xc] - param_3)) / + (param_5 - param_3); + param_3 = param_1[0xc]; + } + } + else { + param_2 = param_2 + ((param_4 - param_2) * (param_1[0xe] - param_3)) / + (param_5 - param_3); + bVar3 = true; + param_3 = param_1[0xe]; + } + } + else { + iVar5 = param_1[0xd] - param_2; + iVar6 = param_4 - param_2; + bVar3 = true; + param_2 = param_1[0xd]; + param_3 = param_3 + ((param_5 - param_3) * iVar5) / iVar6; + } + } + else { + iVar5 = param_1[0xb] - param_2; + iVar6 = param_4 - param_2; + bVar3 = true; + param_2 = param_1[0xb]; + param_3 = param_3 + ((param_5 - param_3) * iVar5) / iVar6; + } + uVar4 = (**(code **)(*param_1 + 0x6c))(param_1,param_2,param_3); + } + if (bVar1) { + param_2 = param_4; + param_3 = param_5; + param_4 = iVar5; + param_5 = iVar6; + bVar2 = bVar3; + } + if (bVar2) { + param_6 = 1; + } + (**(code **)(*(int *)param_1[0x10] + 0x14)) + ((int *)param_1[0x10],param_1[10],param_1[0xf],param_2,param_3,param_4,param_5,param_6 + ); + if ((int *)param_1[0x11] != (int *)0x0) { + FUN_0044aab0((int *)param_1[0x11],2); + FUN_0044ab9c((int *)param_1[0x11],param_1[10]); + FUN_0044aab0((int *)param_1[0x11],param_1[0xf]); + FUN_0044ab9c((int *)param_1[0x11],param_2); + FUN_0044ab9c((int *)param_1[0x11],param_3); + FUN_0044ab9c((int *)param_1[0x11],param_4); + FUN_0044ab9c((int *)param_1[0x11],param_5); + FUN_0044ab58((int *)param_1[0x11],param_6); + } + } + return; +} + + + +/* @0044c074 file=? name=FUN_0044c074 */ + +void __cdecl FUN_0044c074(int param_1,int param_2,int param_3,int param_4,int param_5) + +{ + bool bVar1; + int iVar2; + int iVar3; + + iVar3 = param_3; + iVar2 = param_2; + if (*(int *)(param_1 + 0x40) != 0) { + if (param_4 < param_2) { + param_2 = param_4; + param_4 = iVar2; + } + if (param_5 < param_3) { + param_3 = param_5; + param_5 = iVar3; + } + FUN_00407cd0(¶m_2,(int *)(param_1 + 0x2c),¶m_2); + bVar1 = true; + if ((param_2 <= param_4) && (param_3 <= param_5)) { + bVar1 = false; + } + if (!bVar1) { + (**(code **)(**(int **)(param_1 + 0x40) + 0x18)) + (*(int **)(param_1 + 0x40),*(undefined4 *)(param_1 + 0x28), + *(undefined4 *)(param_1 + 0x3c),param_2,param_3,param_4,param_5); + if (*(int **)(param_1 + 0x44) != (int *)0x0) { + FUN_0044aab0(*(int **)(param_1 + 0x44),3); + FUN_0044ab9c(*(int **)(param_1 + 0x44),*(int *)(param_1 + 0x28)); + FUN_0044aab0(*(int **)(param_1 + 0x44),*(undefined4 *)(param_1 + 0x3c)); + FUN_0044ab9c(*(int **)(param_1 + 0x44),param_2); + FUN_0044ab9c(*(int **)(param_1 + 0x44),param_3); + FUN_0044ab9c(*(int **)(param_1 + 0x44),param_4); + FUN_0044ab9c(*(int **)(param_1 + 0x44),param_5); + } + } + } + return; +} + + + +/* @0044c174 file=? name=FUN_0044c174 */ + +undefined4 __cdecl FUN_0044c174(int param_1,int *param_2,int *param_3,int param_4,int param_5) + +{ + bool bVar1; + int iVar2; + int *piVar3; + int *piVar4; + int local_34 [4]; + int local_24 [4]; + int local_14; + int local_10; + int local_c; + int local_8; + + if (*(int *)(param_1 + 0x40) != 0) { + FUN_00407b9c(local_24); + if (*param_2 < 0) { + *param_2 = 0; + } + if (param_4 <= param_2[2]) { + param_2[2] = param_4 + -1; + } + if (param_2[1] < 0) { + param_2[1] = 0; + } + if (param_5 <= param_2[3]) { + param_2[3] = param_5 + -1; + } + local_c = *param_2; + local_8 = param_2[1]; + local_14 = param_2[2]; + local_10 = param_2[3]; + FUN_00407e04(&local_14,&local_14,param_2); + local_24[0] = *(int *)(param_1 + 0x1c); + local_24[1] = *(int *)(param_1 + 0x20); + local_24[2] = *(int *)(param_1 + 0x1c); + local_24[3] = *(int *)(param_1 + 0x20); + FUN_00407de3(local_24 + 2,local_24 + 2,&local_14); + FUN_00407b9c(local_34); + piVar3 = local_24; + piVar4 = local_34; + for (iVar2 = 4; iVar2 != 0; iVar2 = iVar2 + -1) { + *piVar4 = *piVar3; + piVar3 = piVar3 + 1; + piVar4 = piVar4 + 1; + } + FUN_00407cd0(local_24,local_34,(int *)(param_1 + 0x2c)); + bVar1 = true; + if ((local_24[0] <= local_24[2]) && (local_24[1] <= local_24[3])) { + bVar1 = false; + } + if (!bVar1) { + *param_3 = local_24[0]; + param_3[1] = local_24[1]; + local_14 = local_24[2]; + local_10 = local_24[3]; + FUN_00407e04(&local_14,&local_14,local_24); + *param_2 = local_c; + param_2[1] = local_8; + param_2[2] = local_c; + param_2[3] = local_8; + FUN_00407de3(param_2 + 2,param_2 + 2,&local_14); + return 1; + } + } + return 0; +} + + + +/* @0044c2d0 file=? name=FUN_0044c2d0 */ + +void __cdecl FUN_0044c2d0(undefined4 *param_1,undefined4 param_2) + +{ + *param_1 = &PTR_FUN_004ef68c; + param_1[1] = param_2; + return; +} + + + +/* @0044c2e4 file=? name=FUN_0044c2e4 */ + +void __cdecl FUN_0044c2e4(int *param_1,byte param_2) + +{ + if ((param_1 != (int *)0x0) && (*param_1 = (int)&PTR_FUN_004ef68c, (param_2 & 1) != 0)) { + FUN_004022d0(param_1); + } + return; +} + + + +/* @0044c304 file=? name=FUN_0044c304 */ + +undefined4 FUN_0044c304(void) + +{ + return 1; +} + + + +/* @0044c310 file=? name=FUN_0044c310 */ + +undefined4 __cdecl FUN_0044c310(undefined4 param_1,char *param_2,undefined4 *param_3) + +{ + int iVar1; + + iVar1 = FUN_004d4b58(param_2,s_ModeAlwaysActive_004ef678); + if (iVar1 == 0) { + *param_3 = 0xffffffff; + return 1; + } + *param_3 = 0; + return 0; +} + + + +/* @0044c344 file=? name=FUN_0044c344 */ + +undefined4 * __cdecl +FUN_0044c344(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) + +{ + FUN_004178cc(param_1,param_2); + *param_1 = &PTR_FUN_004ef8d4; + FUN_0044ca72(param_1 + 4,param_1); + param_1[3] = param_3; + (**(code **)(param_1[4] + 4))(param_1 + 4,param_4); + return param_1; +} + + + +/* @0044c388 file=? name=FUN_0044c388 */ + +void __cdecl FUN_0044c388(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004ef8d4; + FUN_0044ca91(param_1 + 4,2); + FUN_0041790c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0044c3c4 file=munga/controls.cpp name=FUN_0044c3c4 */ + +void FUN_0044c3c4(void) + +{ + FUN_0040385c(s_ControlsInstance__Update_not_ove_004ef6cc,s_d__tesla_bt_munga_CONTROLS_CPP_004ef6f5 + ,0x3d); + return; +} + + + +/* @0044c3e0 file=? name=FUN_0044c3e0 */ + +void __cdecl FUN_0044c3e0(undefined4 *param_1) + +{ + if (param_1 != (undefined4 *)0x0) { + (**(code **)*param_1)(param_1,3); + } + return; +} + + + +/* @0044c3f8 file=? name=FUN_0044c3f8 */ + +undefined4 * __cdecl FUN_0044c3f8(undefined4 *param_1) + +{ + FUN_004178cc(param_1,0x18); + *param_1 = &PTR_FUN_004ef8c0; + FUN_0044cabd(param_1 + 3,param_1); + return param_1; +} + + + +/* @0044c424 file=? name=FUN_0044c424 */ + +void __cdecl FUN_0044c424(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004ef8c0; + (**(code **)(*param_1 + 0xc))(param_1,0); + FUN_0044cadc(param_1 + 3,2); + FUN_0041790c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0044c46c file=? name=FUN_0044c46c */ + +void __cdecl FUN_0044c46c(int param_1,uint param_2) + +{ + undefined4 *puVar1; + int local_10 [3]; + + FUN_0044cb72(local_10,param_1 + 0xc); + while( true ) { + puVar1 = (undefined4 *)(**(code **)(local_10[0] + 0x28))(local_10); + if (puVar1 == (undefined4 *)0x0) break; + puVar1[3] = puVar1[3] & ~param_2; + if ((puVar1[3] == 0) && (puVar1 != (undefined4 *)0x0)) { + (**(code **)*puVar1)(puVar1,3); + } + } + FUN_0044cbb0(local_10,2); + return; +} + + + +/* @0044c4d0 file=? name=FUN_0044c4d0 */ + +void __cdecl FUN_0044c4d0(int param_1,undefined4 param_2,uint param_3) + +{ + int *piVar1; + int local_10 [3]; + + FUN_0044cb72(local_10,param_1 + 0xc); + while( true ) { + piVar1 = (int *)(**(code **)(local_10[0] + 0x28))(local_10); + if (piVar1 == (int *)0x0) break; + if ((piVar1[3] & param_3) != 0) { + (**(code **)(*piVar1 + 0xc))(piVar1,param_2); + } + } + FUN_0044cbb0(local_10,2); + return; +} + + + +/* @0044c52c file=? name=FUN_0044c52c */ + +undefined4 __cdecl FUN_0044c52c(int param_1,uint param_2) + +{ + int iVar1; + undefined4 uVar2; + int local_10 [3]; + + FUN_0044cb72(local_10,param_1 + 0xc); + do { + iVar1 = (**(code **)(local_10[0] + 0x28))(local_10); + if (iVar1 == 0) { + uVar2 = 0; + FUN_0044cbb0(local_10,2); + return uVar2; + } + } while ((*(uint *)(iVar1 + 0xc) & param_2) == 0); + uVar2 = 1; + FUN_0044cbb0(local_10,2); + return uVar2; +} + + + +/* @0044c594 file=? name=FUN_0044c594 */ + +undefined4 * __cdecl FUN_0044c594(undefined4 *param_1,undefined4 param_2,undefined4 param_3) + +{ + FUN_004178cc(param_1,param_2); + *param_1 = &PTR_FUN_004e3320; + param_1[3] = param_3; + *param_1 = &PTR_FUN_004ef894; + param_1[4] = 0; + param_1[5] = 0; + param_1[6] = 0; + param_1[7] = 0; + param_1[8] = DAT_004ef6c4; + DAT_004ef6c4 = param_1; + return param_1; +} + + + +/* @0044c5e4 file=? name=FUN_0044c5e4 */ + +void __cdecl FUN_0044c5e4(int *param_1,byte param_2) + +{ + int *piVar1; + int *piVar2; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004ef894; + piVar1 = (int *)0x0; + for (piVar2 = DAT_004ef6c4; piVar2 != (int *)0x0; piVar2 = (int *)piVar2[8]) { + if (param_1 == piVar2) { + if (piVar1 == (int *)0x0) { + DAT_004ef6c4 = (int *)param_1[8]; + } + else { + piVar1[8] = param_1[8]; + } + break; + } + piVar1 = piVar2; + } + FUN_0041790c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0044c640 file=munga/controls.cpp name=FUN_0044c640 */ + +void FUN_0044c640(void) + +{ + FUN_0040385c(s_ControlsManager__Remove_should_n_004ef724,s_d__tesla_bt_munga_CONTROLS_CPP_004ef753 + ,0x120); + return; +} + + + +/* @0044c65c file=munga/controls.cpp name=FUN_0044c65c */ + +void FUN_0044c65c(void) + +{ + FUN_0040385c(s_ControlsManager__Execute_should_n_004ef772, + s_d__tesla_bt_munga_CONTROLS_CPP_004ef7a2,0x126); + return; +} + + + +/* @0044c678 file=? name=FUN_0044c678 */ + +void __cdecl +FUN_0044c678(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5 + ,uint param_6,uint param_7) + +{ + int iVar1; + + *(undefined4 *)(param_1 + 0x14) = param_3; + *(undefined4 *)(param_1 + 0x18) = param_5; + *(undefined4 *)(param_1 + 0x10) = param_2; + *(undefined4 *)(param_1 + 0x1c) = param_4; + iVar1 = *(int *)(DAT_004efc94 + 0x50); + *(undefined4 *)(iVar1 + 8) = *(undefined4 *)(iVar1 + 4); + *(uint *)(iVar1 + 4) = *(uint *)(iVar1 + 4) & ~param_6; + *(undefined4 *)(iVar1 + 8) = *(undefined4 *)(iVar1 + 4); + *(uint *)(iVar1 + 4) = *(uint *)(iVar1 + 4) | param_7; + return; +} + + + +/* @0044c6fc file=? name=FUN_0044c6fc */ + +void FUN_0044c6fc(void) + +{ + return; +} + + + +/* @0044c704 file=? name=FUN_0044c704 */ + +void __cdecl FUN_0044c704(int param_1) + +{ + FUN_0041a1a4(**(int **)(param_1 + 0xc),0x4ef690); + return; +} + + + +/* @0044c720 file=? name=FUN_0044c720 */ + +void FUN_0044c720(void) + +{ + int *piVar1; + + for (piVar1 = DAT_004ef6c4; piVar1 != (int *)0x0; piVar1 = (int *)piVar1[8]) { + (**(code **)(*piVar1 + 0x1c))(piVar1); + } + return; +} + + + +/* @0044c73c file=? name=FUN_0044c73c */ + +void FUN_0044c73c(void) + +{ + return; +} + + + +/* @0044c744 file=? name=FUN_0044c744 */ + +undefined4 * __cdecl +FUN_0044c744(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4, + undefined4 param_5,undefined4 param_6) + +{ + FUN_004178cc(param_1,0x52); + *param_1 = &PTR_FUN_004ef888; + param_1[3] = DAT_004ef6c8; + DAT_004ef6c8 = DAT_004ef6c8 + 1; + param_1[4] = param_2; + param_1[0xb] = param_3; + param_1[0xd] = param_4; + param_1[0xe] = param_5; + param_1[0xc] = param_6; + *(undefined1 *)(param_1 + 5) = 0; + param_1[10] = 0; + return param_1; +} + + + +/* @0044c798 file=? name=FUN_0044c798 */ + +void __cdecl FUN_0044c798(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004ef888; + FUN_0041790c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0044c7c4 file=? name=FUN_0044c7c4 */ + +undefined4 FUN_0044c7c4(void) + +{ + return 1; +} + + + +/* @0044c7d0 file=? name=FUN_0044c7d0 */ + +void __cdecl FUN_0044c7d0(int param_1,int param_2,undefined1 param_3) + +{ + int iVar1; + int iVar2; + undefined4 local_14; + undefined4 local_10; + undefined4 local_c; + undefined4 local_8; + + if (param_2 == *(int *)(param_1 + 0x2c)) { + iVar2 = FUN_004d4a78(*(char **)(param_1 + 0x10)); + if (0x10 < iVar2) { + iVar2 = 0x10; + } + if (iVar2 < *(int *)(param_1 + 0x28)) { + *(int *)(param_1 + 0x28) = iVar2; + *(undefined1 *)(param_1 + 0x14 + iVar2) = 0; + } + if (*(int *)(param_1 + 0x28) < iVar2) { + iVar1 = *(int *)(param_1 + 0x28); + *(int *)(param_1 + 0x28) = *(int *)(param_1 + 0x28) + 1; + *(undefined1 *)(param_1 + 0x14 + iVar1) = param_3; + *(undefined1 *)(param_1 + 0x14 + *(int *)(param_1 + 0x28)) = 0; + } + else { + if (1 < iVar2) { + FUN_004d493c((undefined4 *)(param_1 + 0x14),(undefined4 *)(param_1 + 0x15),iVar2 - 1); + } + *(undefined1 *)(param_1 + 0x13 + iVar2) = param_3; + } + iVar2 = FUN_004d4bec((char *)(param_1 + 0x14),*(char **)(param_1 + 0x10),iVar2); + if (iVar2 == 0) { + local_8 = *(undefined4 *)(param_1 + 0x30); + local_10 = *(undefined4 *)(param_1 + 0x38); + local_14 = 0x10; + local_c = 1; + (**(code **)(**(int **)(param_1 + 0x34) + 0xc))(*(int **)(param_1 + 0x34),&local_14); + *(undefined1 *)(param_1 + 0x14) = 0; + *(undefined4 *)(param_1 + 0x28) = 0; + } + } + return; +} + + + +/* @0044c8a0 file=? name=FUN_0044c8a0 */ + +undefined4 * __cdecl FUN_0044c8a0(undefined4 *param_1) + +{ + FUN_004178cc(param_1,0x53); + *param_1 = &PTR_FUN_004ef87c; + FUN_0044cb08(param_1 + 3,param_1); + return param_1; +} + + + +/* @0044c8cc file=? name=FUN_0044c8cc */ + +void __cdecl FUN_0044c8cc(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004ef87c; + FUN_0044c970((int)param_1,0); + FUN_0044cb27(param_1 + 3,2); + FUN_0041790c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0044c914 file=? name=FUN_0044c914 */ + +undefined4 FUN_0044c914(void) + +{ + return 1; +} + + + +/* @0044c920 file=? name=FUN_0044c920 */ + +undefined4 __cdecl +FUN_0044c920(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5 + ,undefined4 param_6) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00402298(0x3c); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_0044c744(puVar1,param_2,param_3,param_4,param_5,param_6); + } + (**(code **)(*(int *)(param_1 + 0xc) + 4))(param_1 + 0xc,puVar1); + return puVar1[3]; +} + + + +/* @0044c970 file=? name=FUN_0044c970 */ + +void __cdecl FUN_0044c970(int param_1,int param_2) + +{ + undefined4 *puVar1; + int local_10 [3]; + + FUN_0044cbfb(local_10,param_1 + 0xc); + do { + do { + puVar1 = (undefined4 *)(**(code **)(local_10[0] + 0x28))(local_10); + if (puVar1 == (undefined4 *)0x0) goto LAB_0044c9be; + } while ((param_2 != 0) && (param_2 != puVar1[3])); + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + } while (param_2 == 0); +LAB_0044c9be: + FUN_0044cc39(local_10,2); + return; +} + + + diff --git a/reference/decomp/archive_2025export/all/part_007.c b/reference/decomp/archive_2025export/all/part_007.c new file mode 100644 index 0000000..c66691a --- /dev/null +++ b/reference/decomp/archive_2025export/all/part_007.c @@ -0,0 +1,10306 @@ +/* @0044c9d4 file=? name=FUN_0044c9d4 */ + +void __cdecl FUN_0044c9d4(int param_1,int param_2,undefined1 param_3) + +{ + int iVar1; + int local_10 [3]; + + FUN_0044cbfb(local_10,param_1 + 0xc); + while( true ) { + iVar1 = (**(code **)(local_10[0] + 0x28))(local_10); + if (iVar1 == 0) break; + FUN_0044c7d0(iVar1,param_2,param_3); + } + FUN_0044cc39(local_10,2); + return; +} + + + +/* @0044ca72 file=? name=FUN_0044ca72 */ + +undefined4 * __cdecl FUN_0044ca72(undefined4 *param_1,undefined4 param_2) + +{ + FUN_004179d4(param_1,param_2); + *param_1 = &PTR_FUN_004ef874; + return param_1; +} + + + +/* @0044ca91 file=? name=FUN_0044ca91 */ + +void __cdecl FUN_0044ca91(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004ef874; + FUN_004179f8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0044cabd file=? name=FUN_0044cabd */ + +undefined4 * __cdecl FUN_0044cabd(undefined4 *param_1,undefined4 param_2) + +{ + FUN_00417be0(param_1,param_2); + *param_1 = &PTR_FUN_004ef86c; + return param_1; +} + + + +/* @0044cadc file=? name=FUN_0044cadc */ + +void __cdecl FUN_0044cadc(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004ef86c; + FUN_00417c0c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0044cb08 file=? name=FUN_0044cb08 */ + +undefined4 * __cdecl FUN_0044cb08(undefined4 *param_1,undefined4 param_2) + +{ + FUN_00417be0(param_1,param_2); + *param_1 = &PTR_FUN_004ef864; + return param_1; +} + + + +/* @0044cb27 file=? name=FUN_0044cb27 */ + +void __cdecl FUN_0044cb27(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004ef864; + FUN_00417c0c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0044cb53 file=? name=FUN_0044cb53 */ + +undefined4 * __cdecl FUN_0044cb53(undefined4 *param_1,int param_2) + +{ + FUN_00417d00(param_1,param_2); + *param_1 = &PTR_FUN_004ef814; + return param_1; +} + + + +/* @0044cb72 file=? name=FUN_0044cb72 */ + +undefined4 * __cdecl FUN_0044cb72(undefined4 *param_1,int param_2) + +{ + FUN_00417d00(param_1,param_2); + *param_1 = &PTR_FUN_004ef814; + return param_1; +} + + + +/* @0044cb91 file=? name=FUN_0044cb91 */ + +undefined4 * __cdecl FUN_0044cb91(undefined4 *param_1,int param_2) + +{ + FUN_00417d28(param_1,param_2); + *param_1 = &PTR_FUN_004ef814; + return param_1; +} + + + +/* @0044cbb0 file=? name=FUN_0044cbb0 */ + +void __cdecl FUN_0044cbb0(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004ef814; + FUN_00417d54(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0044cbdc file=? name=FUN_0044cbdc */ + +undefined4 * __cdecl FUN_0044cbdc(undefined4 *param_1,int param_2) + +{ + FUN_00417d00(param_1,param_2); + *param_1 = &PTR_FUN_004ef7c4; + return param_1; +} + + + +/* @0044cbfb file=? name=FUN_0044cbfb */ + +undefined4 * __cdecl FUN_0044cbfb(undefined4 *param_1,int param_2) + +{ + FUN_00417d00(param_1,param_2); + *param_1 = &PTR_FUN_004ef7c4; + return param_1; +} + + + +/* @0044cc1a file=? name=FUN_0044cc1a */ + +undefined4 * __cdecl FUN_0044cc1a(undefined4 *param_1,int param_2) + +{ + FUN_00417d28(param_1,param_2); + *param_1 = &PTR_FUN_004ef7c4; + return param_1; +} + + + +/* @0044cc39 file=? name=FUN_0044cc39 */ + +void __cdecl FUN_0044cc39(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004ef7c4; + FUN_00417d54(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0044cc68 file=? name=FUN_0044cc68 */ + +undefined4 * __cdecl FUN_0044cc68(undefined4 *param_1,int *param_2,undefined4 param_3) + +{ + int *piVar1; + int iVar2; + + FUN_00415e90(param_1,1); + *param_1 = &PTR_FUN_004efc14; + iVar2 = *param_2; + param_1[3] = iVar2; + piVar1 = (int *)(iVar2 + 0xc); + *piVar1 = *piVar1 + 1; + param_1[4] = param_3; + return param_1; +} + + + +/* @0044cc98 file=? name=FUN_0044cc98 */ + +void __cdecl FUN_0044cc98(int *param_1,byte param_2) + +{ + int *piVar1; + int *piVar2; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004efc14; + piVar2 = (int *)param_1[3]; + piVar1 = piVar2 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(piVar2,3); + } + FUN_00415ed8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0044ccdc file=? name=FUN_0044ccdc */ + +void __cdecl FUN_0044ccdc(int param_1,int param_2) + +{ + uint *puVar1; + undefined4 *puVar2; + char *pcVar3; + uint *puVar4; + undefined4 *puVar5; + int local_c; + int *local_8; + + local_8 = FUN_00404720(param_2,s_ordinals_004ef8e4,s_bitmap_004ef8ed); + if (local_8 != (int *)0x0) { + puVar2 = (undefined4 *)local_8[1]; + local_c = 0; + while (puVar2 != (undefined4 *)0x0) { + local_c = local_c + 1; + pcVar3 = (char *)puVar2[1]; + puVar4 = (uint *)FUN_00402298(0x10); + if (puVar4 == (uint *)0x0) { + puVar4 = (uint *)0x0; + } + else { + puVar4 = FUN_00402460(puVar4,pcVar3); + } + puVar4[3] = puVar4[3] + 1; + puVar5 = (undefined4 *)FUN_00402298(0x1c); + if (puVar5 == (undefined4 *)0x0) { + puVar5 = (undefined4 *)0x0; + } + else { + puVar5 = FUN_004493a8(puVar5,param_2,(char *)puVar4[2]); + } + (**(code **)(*(int *)(param_1 + 0x98) + 8))(param_1 + 0x98,puVar5,&local_c); + puVar2 = (undefined4 *)*puVar2; + puVar1 = puVar4 + 3; + *puVar1 = *puVar1 - 1; + if (*puVar1 == 0) { + FUN_004024d8((int *)puVar4,3); + } + } + if (local_8 != (int *)0x0) { + (**(code **)*local_8)(local_8,3); + } + } + return; +} + + + +/* @0044cdc8 file=? name=FUN_0044cdc8 */ + +void __cdecl FUN_0044cdc8(int param_1,int param_2) + +{ + undefined4 *puVar1; + uint *puVar2; + undefined4 *puVar3; + char *local_18; + char *local_14; + uint *local_10; + int local_c; + int *local_8; + + local_8 = FUN_00404720(param_2,s_teams_004ef8f4,&DAT_004ef8fa); + if (local_8 != (int *)0x0) { + puVar1 = (undefined4 *)local_8[1]; + local_c = 0; + while (puVar1 != (undefined4 *)0x0) { + local_14 = (char *)puVar1[1]; + puVar2 = (uint *)FUN_00402298(0x10); + if (puVar2 == (uint *)0x0) { + local_10 = (uint *)0x0; + } + else { + local_10 = FUN_00402460(puVar2,local_14); + } + local_10[3] = local_10[3] + 1; + FUN_00404088(param_2,(char *)local_10[2],s_bitmap_004ef8ff,&local_18); + puVar3 = (undefined4 *)FUN_00402298(0x1c); + if (puVar3 == (undefined4 *)0x0) { + puVar3 = (undefined4 *)0x0; + } + else { + puVar3 = FUN_004493a8(puVar3,param_2,local_18); + } + (**(code **)(*(int *)(param_1 + 0xb0) + 8))(param_1 + 0xb0,puVar3,&local_c); + local_c = local_c + 1; + puVar1 = (undefined4 *)*puVar1; + puVar2 = local_10 + 3; + *puVar2 = *puVar2 - 1; + if (*puVar2 == 0) { + FUN_004024d8((int *)local_10,3); + } + } + if (local_8 != (int *)0x0) { + (**(code **)*local_8)(local_8,3); + } + } + return; +} + + + +/* @0044cecc file=? name=FUN_0044cecc */ + +void __cdecl FUN_0044cecc(int param_1,int param_2) + +{ + int *piVar1; + undefined4 *puVar2; + undefined4 *puVar3; + undefined4 *puVar4; + int *local_2c; + undefined4 *local_28; + int *local_24; + int local_20; + undefined4 *local_1c; + int *local_18; + undefined4 *local_14; + int *local_10; + int *local_c; + int *local_8; + + local_8 = FUN_00404720(param_2,s_largebitmap_004ef906,s_bitmap_004ef912); + if (local_8 != (int *)0x0) { + puVar4 = (undefined4 *)local_8[1]; + local_c = FUN_00404720(param_2,s_smallbitmap_004ef919,s_bitmap_004ef925); + if (local_c != (int *)0x0) { + puVar3 = (undefined4 *)local_c[1]; + local_14 = (undefined4 *)FUN_00402298(0x10); + if (local_14 == (undefined4 *)0x0) { + local_10 = (int *)0x0; + } + else { + local_10 = (int *)FUN_004023f4(local_14); + } + local_10[3] = local_10[3] + 1; + local_1c = (undefined4 *)FUN_00402298(0x10); + if (local_1c == (undefined4 *)0x0) { + local_18 = (int *)0x0; + } + else { + local_18 = (int *)FUN_004023f4(local_1c); + } + local_18[3] = local_18[3] + 1; + local_20 = 0; + for (; (puVar4 != (undefined4 *)0x0 && (puVar3 != (undefined4 *)0x0)); + puVar3 = (undefined4 *)*puVar3) { + local_20 = local_20 + 1; + FUN_00402a98((int *)&local_24,(int *)&local_10,(char *)puVar4[1]); + piVar1 = local_24 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_24,3); + } + local_28 = (undefined4 *)FUN_00402298(0x1c); + if (local_28 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_004493a8(local_28,param_2,(char *)local_10[2]); + } + (**(code **)(*(int *)(param_1 + 0x68) + 8))(param_1 + 0x68,puVar2,&local_20); + FUN_00402a98((int *)&local_2c,(int *)&local_18,(char *)puVar3[1]); + piVar1 = local_2c + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_2c,3); + } + puVar2 = (undefined4 *)FUN_00402298(0x1c); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_004493a8(puVar2,param_2,(char *)local_18[2]); + } + (**(code **)(*(int *)(param_1 + 0x80) + 8))(param_1 + 0x80,puVar2,&local_20); + puVar4 = (undefined4 *)*puVar4; + } + if (local_8 != (int *)0x0) { + (**(code **)*local_8)(local_8,3); + } + if (local_c != (int *)0x0) { + (**(code **)*local_c)(local_c,3); + } + piVar1 = local_18 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_18,3); + } + piVar1 = local_10 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_10,3); + } + } + } + return; +} + + + +/* @0044d0bc file=? name=FUN_0044d0bc */ + +void __cdecl FUN_0044d0bc(int param_1,int param_2) + +{ + undefined4 *puVar1; + uint *puVar2; + undefined4 *puVar3; + char *local_18; + char *local_14; + uint *local_10; + int local_c; + int *local_8; + + local_8 = FUN_00404720(param_2,s_landmarks_004ef92c,s_landmark_004ef936); + if (local_8 != (int *)0x0) { + puVar1 = (undefined4 *)local_8[1]; + local_c = 0; + while (puVar1 != (undefined4 *)0x0) { + local_14 = (char *)puVar1[1]; + puVar2 = (uint *)FUN_00402298(0x10); + if (puVar2 == (uint *)0x0) { + local_10 = (uint *)0x0; + } + else { + local_10 = FUN_00402460(puVar2,local_14); + } + local_10[3] = local_10[3] + 1; + FUN_00404088(param_2,(char *)local_10[2],s_bitmap_004ef93f,&local_18); + puVar3 = (undefined4 *)FUN_00402298(0x1c); + if (puVar3 == (undefined4 *)0x0) { + puVar3 = (undefined4 *)0x0; + } + else { + puVar3 = FUN_004493a8(puVar3,param_2,local_18); + } + (**(code **)(*(int *)(param_1 + 200) + 8))(param_1 + 200,puVar3,&local_c); + local_c = local_c + 1; + puVar1 = (undefined4 *)*puVar1; + puVar2 = local_10 + 3; + *puVar2 = *puVar2 - 1; + if (*puVar2 == 0) { + FUN_004024d8((int *)local_10,3); + } + } + if (local_8 != (int *)0x0) { + (**(code **)*local_8)(local_8,3); + } + } + return; +} + + + +/* @0044d1c0 file=? name=FUN_0044d1c0 */ + +undefined4 * __cdecl FUN_0044d1c0(undefined4 *param_1,int param_2,int param_3) + +{ + uint *puVar1; + char cVar2; + bool bVar3; + int iVar4; + undefined4 *puVar5; + char *pcVar6; + undefined3 extraout_var; + undefined4 *puVar7; + uint uVar8; + uint uVar9; + char *pcVar10; + int local_28; + uint *local_24; + char *local_20; + uint *local_1c; + int *local_18; + char *local_14; + char *local_10; + char *local_c; + char *local_8; + + *param_1 = &PTR_FUN_004efc0c; + FUN_0044d884(param_1 + 3,0); + FUN_0044d8cf(param_1 + 0x14,0,1); + FUN_0044da50(param_1 + 0x1a,0,1); + FUN_0044da50(param_1 + 0x20,0,1); + FUN_0044da50(param_1 + 0x26,0,1); + FUN_0044da50(param_1 + 0x2c,0,1); + FUN_0044da50(param_1 + 0x32,0,1); + param_1[8] = 0; + param_1[9] = 0; + param_1[10] = 0; + param_1[0xb] = 0; + param_1[0xc] = 0; + param_1[0xd] = 0; + param_1[0xe] = 0; + param_1[0x10] = 0; + iVar4 = FUN_00404088(param_2,s_mission_004ef946,&DAT_004ef94e,&local_8); + if (iVar4 == 0) { + FUN_004dbb24(&DAT_00524e20,s_ERROR__no_map_in_egg__004ef952,(char *)0x0); + FUN_004036a0(1); + } + param_1[0x38] = 0; + FUN_00404118(param_2,s_mission_004ef969,s_length_004ef971,(float *)(param_1 + 0x38)); + puVar5 = (undefined4 *)FUN_00406ff8(param_3,local_8,0xe,-1); + if (puVar5 == (undefined4 *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_ERROR__Couldn_t_find_map_in_reso_004ef978,(char *)0x0); + FUN_004036a0(1); + } + param_1[1] = *puVar5; + puVar5 = (undefined4 *)FUN_00406ff8(param_3,local_8,0x1a,-1); + if (puVar5 == (undefined4 *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_ERROR__Couldn_t_find_existance_m_004ef9a4,(char *)0x0); + FUN_004036a0(1); + } + param_1[2] = *puVar5; + iVar4 = FUN_00404088(param_2,s_mission_004ef9da,&DAT_004ef9e2,&local_c); + if (iVar4 == 0) { + FUN_004dbb24(&DAT_00524e20,s_ERROR__no_time_in_egg__004ef9e7,(char *)0x0); + FUN_004036a0(1); + } + iVar4 = FUN_00404088(param_2,s_mission_004ef9ff,s_weather_004efa07,&local_10); + if (iVar4 == 0) { + FUN_004dbb24(&DAT_00524e20,s_ERROR__no_weather_in_egg__004efa0f,(char *)0x0); + FUN_004036a0(1); + } + iVar4 = FUN_00404088(param_2,s_mission_004efa2a,s_scenario_004efa32,&local_14); + if (iVar4 == 0) { + FUN_004dbb24(&DAT_00524e20,s_ERROR__no_scenario_in_egg__004efa3b,(char *)0x0); + FUN_004036a0(1); + } + iVar4 = FUN_004d4a78(local_c); + pcVar6 = (char *)FUN_004022b0(iVar4 + 1); + param_1[0xc] = pcVar6; + uVar8 = 0xffffffff; + do { + pcVar10 = local_c; + if (uVar8 == 0) break; + uVar8 = uVar8 - 1; + pcVar10 = local_c + 1; + cVar2 = *local_c; + local_c = pcVar10; + } while (cVar2 != '\0'); + uVar8 = ~uVar8; + pcVar10 = pcVar10 + -uVar8; + for (uVar9 = uVar8 >> 2; uVar9 != 0; uVar9 = uVar9 - 1) { + *(undefined4 *)pcVar6 = *(undefined4 *)pcVar10; + pcVar10 = pcVar10 + 4; + pcVar6 = pcVar6 + 4; + } + for (uVar8 = uVar8 & 3; uVar8 != 0; uVar8 = uVar8 - 1) { + *pcVar6 = *pcVar10; + pcVar10 = pcVar10 + 1; + pcVar6 = pcVar6 + 1; + } + iVar4 = FUN_004d4a78(local_10); + pcVar6 = (char *)FUN_004022b0(iVar4 + 1); + param_1[0xd] = pcVar6; + uVar8 = 0xffffffff; + do { + pcVar10 = local_10; + if (uVar8 == 0) break; + uVar8 = uVar8 - 1; + pcVar10 = local_10 + 1; + cVar2 = *local_10; + local_10 = pcVar10; + } while (cVar2 != '\0'); + uVar8 = ~uVar8; + pcVar10 = pcVar10 + -uVar8; + for (uVar9 = uVar8 >> 2; uVar9 != 0; uVar9 = uVar9 - 1) { + *(undefined4 *)pcVar6 = *(undefined4 *)pcVar10; + pcVar10 = pcVar10 + 4; + pcVar6 = pcVar6 + 4; + } + for (uVar8 = uVar8 & 3; uVar8 != 0; uVar8 = uVar8 - 1) { + *pcVar6 = *pcVar10; + pcVar10 = pcVar10 + 1; + pcVar6 = pcVar6 + 1; + } + iVar4 = FUN_004d4a78(local_14); + pcVar6 = (char *)FUN_004022b0(iVar4 + 1); + param_1[0xe] = pcVar6; + uVar8 = 0xffffffff; + do { + pcVar10 = local_14; + if (uVar8 == 0) break; + uVar8 = uVar8 - 1; + pcVar10 = local_14 + 1; + cVar2 = *local_14; + local_14 = pcVar10; + } while (cVar2 != '\0'); + uVar8 = ~uVar8; + pcVar10 = pcVar10 + -uVar8; + for (uVar9 = uVar8 >> 2; uVar9 != 0; uVar9 = uVar9 - 1) { + *(undefined4 *)pcVar6 = *(undefined4 *)pcVar10; + pcVar10 = pcVar10 + 4; + pcVar6 = pcVar6 + 4; + } + for (uVar8 = uVar8 & 3; uVar8 != 0; uVar8 = uVar8 - 1) { + *pcVar6 = *pcVar10; + pcVar10 = pcVar10 + 1; + pcVar6 = pcVar6 + 1; + } + param_1[0x12] = 0; + local_18 = FUN_00404720(param_2,s_pilots_004efa57,s_pilot_004efa5e); + puVar5 = (undefined4 *)local_18[1]; + while (puVar5 != (undefined4 *)0x0) { + pcVar6 = (char *)puVar5[1]; + local_20 = pcVar6; + local_24 = (uint *)FUN_00402298(0x10); + if (local_24 == (uint *)0x0) { + local_1c = (uint *)0x0; + } + else { + local_1c = FUN_00402460(local_24,local_20); + } + local_1c[3] = local_1c[3] + 1; + bVar3 = FUN_004040d8(param_2,pcVar6,s_hostType_004efa64,&local_28); + if (CONCAT31(extraout_var,bVar3) == 0) { + FUN_004dbb24(&DAT_00524e20,s_ERROR__no_host_type_in_egg__004efa6d,(char *)0x0); + FUN_004036a0(1); + } + puVar7 = (undefined4 *)FUN_00402298(0x14); + if (puVar7 == (undefined4 *)0x0) { + puVar7 = (undefined4 *)0x0; + } + else { + puVar7 = FUN_0044cc68(puVar7,(int *)&local_1c,local_28); + } + (**(code **)(param_1[3] + 4))(param_1 + 3,puVar7); + param_1[0x12] = param_1[0x12] + 1; + puVar5 = (undefined4 *)*puVar5; + puVar1 = local_1c + 3; + *puVar1 = *puVar1 - 1; + if (*puVar1 == 0) { + FUN_004024d8((int *)local_1c,3); + } + } + if (local_18 != (int *)0x0) { + (**(code **)*local_18)(local_18,3); + } + FUN_0044ccdc((int)param_1,param_2); + FUN_0044cecc((int)param_1,param_2); + param_1[0x10] = 0; + return param_1; +} + + + +/* @0044d5d4 file=? name=FUN_0044d5d4 */ + +void __cdecl FUN_0044d5d4(int *param_1,byte param_2) + +{ + void *this; + void *this_00; + void *this_01; + void *this_02; + void *this_03; + void *this_04; + int local_90 [5]; + int local_7c [5]; + int local_68 [5]; + int local_54 [5]; + int local_40 [5]; + int local_2c [5]; + int local_18 [5]; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004efc0c; + FUN_0044db95(local_18,(int)(param_1 + 3)); + FUN_00417858(local_18,local_18,1); + if ((int *)param_1[0xb] != (int *)0x0) { + FUN_004022e8((int *)param_1[0xb]); + } + if ((int *)param_1[10] != (int *)0x0) { + FUN_004022e8((int *)param_1[10]); + } + if ((int *)param_1[8] != (int *)0x0) { + FUN_004022e8((int *)param_1[8]); + } + if ((int *)param_1[9] != (int *)0x0) { + FUN_004022e8((int *)param_1[9]); + } + if ((int *)param_1[0x10] != (int *)0x0) { + FUN_004022e8((int *)param_1[0x10]); + } + if ((int *)param_1[0xc] != (int *)0x0) { + FUN_004022e8((int *)param_1[0xc]); + } + if ((int *)param_1[0xd] != (int *)0x0) { + FUN_004022e8((int *)param_1[0xd]); + } + if ((int *)param_1[0xe] != (int *)0x0) { + FUN_004022e8((int *)param_1[0xe]); + } + FUN_0044dc3d(local_2c,(int)(param_1 + 0x20)); + FUN_00417858(this,local_2c,1); + FUN_0044dc3d(local_40,(int)(param_1 + 0x1a)); + FUN_00417858(this_00,local_40,1); + FUN_0044dc3d(local_54,(int)(param_1 + 0x26)); + FUN_00417858(this_01,local_54,1); + FUN_0044dc3d(local_68,(int)(param_1 + 0x2c)); + FUN_00417858(this_02,local_68,1); + FUN_0044dc3d(local_7c,(int)(param_1 + 0x32)); + FUN_00417858(this_03,local_7c,1); + FUN_004323c7(local_90,(int)(param_1 + 0x14)); + FUN_00417858(this_04,local_90,1); + FUN_00432405(local_90,2); + FUN_0044dc7b(local_7c,2); + FUN_0044dc7b(local_68,2); + FUN_0044dc7b(local_54,2); + FUN_0044dc7b(local_40,2); + FUN_0044dc7b(local_2c,2); + FUN_0044dbf2(local_18,2); + FUN_0044da73(param_1 + 0x32,2); + FUN_0044da73(param_1 + 0x2c,2); + FUN_0044da73(param_1 + 0x26,2); + FUN_0044da73(param_1 + 0x20,2); + FUN_0044da73(param_1 + 0x1a,2); + FUN_0044d8f2(param_1 + 0x14,2); + FUN_0044d8a3(param_1 + 3,2); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0044d820 file=? name=FUN_0044d820 */ + +void FUN_0044d820(void) + +{ + return; +} + + + +/* @0044d828 file=? name=FUN_0044d828 */ + +undefined4 FUN_0044d828(void) + +{ + return 1; +} + + + +/* @0044d834 file=? name=FUN_0044d834 */ + +undefined4 * __cdecl FUN_0044d834(undefined4 *param_1,int param_2) + +{ + FUN_0044db95(param_1,param_2 + 0xc); + *param_1 = &PTR_FUN_004efbb8; + return param_1; +} + + + +/* @0044d858 file=? name=FUN_0044d858 */ + +void __cdecl FUN_0044d858(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004efbb8; + FUN_0044dbf2(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0044d884 file=? name=FUN_0044d884 */ + +undefined4 * __cdecl FUN_0044d884(undefined4 *param_1,undefined4 param_2) + +{ + FUN_0041827c(param_1,param_2); + *param_1 = &PTR_FUN_004efbb0; + return param_1; +} + + + +/* @0044d8a3 file=? name=FUN_0044d8a3 */ + +void __cdecl FUN_0044d8a3(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004efbb0; + FUN_004182a8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0044d8cf file=? name=FUN_0044d8cf */ + +undefined4 * __cdecl FUN_0044d8cf(undefined4 *param_1,undefined4 param_2,undefined4 param_3) + +{ + FUN_004186ac(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004efb94; + return param_1; +} + + + +/* @0044d8f2 file=? name=FUN_0044d8f2 */ + +void __cdecl FUN_0044d8f2(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004efb94; + FUN_004186dc(param_1,0); + if ((param_2 & 1) != 0) { + FUN_0044da05(param_1); + } + } + return; +} + + + +/* @0044d91e file=? name=FUN_0044d91e */ + +undefined4 __cdecl FUN_0044d91e(undefined4 param_1,int param_2,int param_3) + +{ + int iVar1; + undefined4 uVar2; + + iVar1 = FUN_004027d8(*(int *)(param_2 + 0x1c),*(int *)(param_3 + 0x1c)); + if (iVar1 == 0) { + uVar2 = 0; + } + else { + iVar1 = FUN_004027d8(*(int *)(param_2 + 0x1c),*(int *)(param_3 + 0x1c)); + if (iVar1 < 1) { + uVar2 = 0xffffffff; + } + else { + uVar2 = 1; + } + } + return uVar2; +} + + + +/* @0044d96b file=? name=FUN_0044d96b */ + +undefined4 __cdecl FUN_0044d96b(undefined4 param_1,int *param_2,int param_3) + +{ + int iVar1; + undefined4 uVar2; + + iVar1 = FUN_004027d8(*param_2,*(int *)(param_3 + 0x1c)); + if (iVar1 == 0) { + uVar2 = 0; + } + else { + iVar1 = FUN_004027d8(*param_2,*(int *)(param_3 + 0x1c)); + if (iVar1 < 1) { + uVar2 = 0xffffffff; + } + else { + uVar2 = 1; + } + } + return uVar2; +} + + + +/* @0044d9b5 file=? name=FUN_0044d9b5 */ + +void FUN_0044d9b5(void) + +{ + int iVar1; + undefined4 *puVar2; + + iVar1 = DAT_004efabc; + DAT_004efabc = DAT_004efabc + 1; + puVar2 = DAT_004efab8; + if ((iVar1 == 0) && (puVar2 = (undefined4 *)FUN_00402298(0x28), puVar2 != (undefined4 *)0x0)) { + FUN_00402b98(puVar2,0x18,100,100,s_VChainOf_004efa8a); + } + DAT_004efab8 = puVar2; + FUN_00402f74((int)DAT_004efab8); + return; +} + + + +/* @0044da05 file=? name=FUN_0044da05 */ + +void __cdecl FUN_0044da05(undefined4 *param_1) + +{ + FUN_00402f98((int)DAT_004efab8,param_1); + DAT_004efabc = DAT_004efabc + -1; + if (DAT_004efabc == 0) { + if (DAT_004efab8 != (int *)0x0) { + FUN_00402c28(DAT_004efab8,0); + FUN_004022d0(DAT_004efab8); + } + DAT_004efab8 = (int *)0x0; + } + return; +} + + + +/* @0044da50 file=? name=FUN_0044da50 */ + +undefined4 * __cdecl FUN_0044da50(undefined4 *param_1,undefined4 param_2,undefined4 param_3) + +{ + FUN_004186ac(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004efb78; + return param_1; +} + + + +/* @0044da73 file=? name=FUN_0044da73 */ + +void __cdecl FUN_0044da73(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004efb78; + FUN_004186dc(param_1,0); + if ((param_2 & 1) != 0) { + FUN_0044db4a(param_1); + } + } + return; +} + + + +/* @0044da9f file=? name=FUN_0044da9f */ + +undefined4 __cdecl FUN_0044da9f(undefined4 param_1,int param_2,int param_3) + +{ + undefined4 uVar1; + + if (*(int *)(param_3 + 0x1c) == *(int *)(param_2 + 0x1c)) { + uVar1 = 0; + } + else { + uVar1 = 1; + if (*(int *)(param_2 + 0x1c) <= *(int *)(param_3 + 0x1c)) { + uVar1 = 0xffffffff; + } + } + return uVar1; +} + + + +/* @0044dace file=? name=FUN_0044dace */ + +undefined4 __cdecl FUN_0044dace(undefined4 param_1,int *param_2,int param_3) + +{ + undefined4 uVar1; + + if (*(int *)(param_3 + 0x1c) == *param_2) { + uVar1 = 0; + } + else { + uVar1 = 1; + if (*param_2 <= *(int *)(param_3 + 0x1c)) { + uVar1 = 0xffffffff; + } + } + return uVar1; +} + + + +/* @0044dafa file=? name=FUN_0044dafa */ + +void FUN_0044dafa(void) + +{ + int iVar1; + undefined4 *puVar2; + + iVar1 = DAT_004efac4; + DAT_004efac4 = DAT_004efac4 + 1; + puVar2 = DAT_004efac0; + if ((iVar1 == 0) && (puVar2 = (undefined4 *)FUN_00402298(0x28), puVar2 != (undefined4 *)0x0)) { + FUN_00402b98(puVar2,0x18,100,100,s_VChainOf_004efa93); + } + DAT_004efac0 = puVar2; + FUN_00402f74((int)DAT_004efac0); + return; +} + + + +/* @0044db4a file=? name=FUN_0044db4a */ + +void __cdecl FUN_0044db4a(undefined4 *param_1) + +{ + FUN_00402f98((int)DAT_004efac0,param_1); + DAT_004efac4 = DAT_004efac4 + -1; + if (DAT_004efac4 == 0) { + if (DAT_004efac0 != (int *)0x0) { + FUN_00402c28(DAT_004efac0,0); + FUN_004022d0(DAT_004efac0); + } + DAT_004efac0 = (int *)0x0; + } + return; +} + + + +/* @0044db95 file=? name=FUN_0044db95 */ + +undefined4 * __cdecl FUN_0044db95(undefined4 *param_1,int param_2) + +{ + FUN_00418398(param_1,param_2); + *param_1 = &PTR_FUN_004efb24; + return param_1; +} + + + +/* @0044dbb4 file=? name=FUN_0044dbb4 */ + +undefined4 * __cdecl FUN_0044dbb4(undefined4 *param_1,int param_2) + +{ + FUN_00418398(param_1,param_2); + *param_1 = &PTR_FUN_004efb24; + return param_1; +} + + + +/* @0044dbd3 file=? name=FUN_0044dbd3 */ + +undefined4 * __cdecl FUN_0044dbd3(undefined4 *param_1,int param_2) + +{ + FUN_004183c0(param_1,param_2); + *param_1 = &PTR_FUN_004efb24; + return param_1; +} + + + +/* @0044dbf2 file=? name=FUN_0044dbf2 */ + +void __cdecl FUN_0044dbf2(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004efb24; + FUN_004183ec(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0044dc1e file=? name=FUN_0044dc1e */ + +undefined4 * __cdecl FUN_0044dc1e(undefined4 *param_1,int param_2) + +{ + FUN_004188dc(param_1,param_2); + *param_1 = &PTR_FUN_004efac8; + return param_1; +} + + + +/* @0044dc3d file=? name=FUN_0044dc3d */ + +undefined4 * __cdecl FUN_0044dc3d(undefined4 *param_1,int param_2) + +{ + FUN_004188dc(param_1,param_2); + *param_1 = &PTR_FUN_004efac8; + return param_1; +} + + + +/* @0044dc5c file=? name=FUN_0044dc5c */ + +undefined4 * __cdecl FUN_0044dc5c(undefined4 *param_1,int param_2) + +{ + FUN_00418904(param_1,param_2); + *param_1 = &PTR_FUN_004efac8; + return param_1; +} + + + +/* @0044dc7b file=? name=FUN_0044dc7b */ + +void __cdecl FUN_0044dc7b(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004efac8; + FUN_00418930(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0044dca7 file=? name=FUN_0044dca7 */ + +undefined4 * __cdecl FUN_0044dca7(undefined4 param_1,int param_2,undefined4 *param_3) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00424ac5(); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_00424a6e(puVar1,param_1,param_2,param_3); + } + return puVar1; +} + + + +/* @0044dcd7 file=? name=FUN_0044dcd7 */ + +undefined4 * __cdecl FUN_0044dcd7(undefined4 param_1,int param_2,int *param_3) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00415bd2(); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_00415b1e(puVar1,param_1,param_2,param_3); + } + return puVar1; +} + + + +/* @0044dd08 file=? name=FUN_0044dd08 */ + +undefined4 * __cdecl FUN_0044dd08(undefined4 *param_1,undefined4 param_2) + +{ + FUN_0041b838(param_1,param_2,&DAT_004e32ac); + *param_1 = &PTR_FUN_004efc7c; + return param_1; +} + + + +/* @0044dd2c file=? name=FUN_0044dd2c */ + +void __cdecl FUN_0044dd2c(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004efc7c; + FUN_0041b898(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0044dd58 file=? name=FUN_0044dd58 */ + +undefined4 * __cdecl FUN_0044dd58(undefined4 *param_1) + +{ + undefined4 *puVar1; + + FUN_0041b838(param_1,3,&DAT_004e32ac); + *param_1 = &PTR_FUN_004efc64; + FUN_0044df10(param_1 + 4,0); + puVar1 = (undefined4 *)FUN_00402298(0x14); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_00401662(puVar1,(int)(param_1 + 4)); + } + param_1[9] = puVar1; + return param_1; +} + + + +/* @0044ddac file=? name=FUN_0044ddac */ + +void __thiscall FUN_0044ddac(void *this,int *param_1,byte param_2) + +{ + undefined4 *puVar1; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004efc64; + FUN_00417858(this,(int *)param_1[9],1); + puVar1 = (undefined4 *)param_1[9]; + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + FUN_0044df2f(param_1 + 4,2); + FUN_0041b898(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0044de08 file=? name=FUN_0044de08 */ + +undefined4 __cdecl FUN_0044de08(int param_1) + +{ + FUN_0041b8e0(param_1); + return 1; +} + + + +/* @0044de1c file=? name=FUN_0044de1c */ + +void __cdecl FUN_0044de1c(int param_1,undefined4 param_2) + +{ + (**(code **)(*(int *)(param_1 + 0x10) + 4))(param_1 + 0x10,param_2); + return; +} + + + +/* @0044de38 file=? name=FUN_0044de38 */ + +void __cdecl FUN_0044de38(int param_1) + +{ + int iVar1; + int *piVar2; + + iVar1 = (**(code **)(**(int **)(param_1 + 0x24) + 0x30))(*(int **)(param_1 + 0x24)); + if (iVar1 == 0) { + (**(code **)(**(int **)(param_1 + 0x24) + 4))(*(int **)(param_1 + 0x24)); + } + piVar2 = (int *)(**(code **)(**(int **)(param_1 + 0x24) + 0x30))(*(int **)(param_1 + 0x24)); + (**(code **)(*piVar2 + 0x14))(piVar2); + (**(code **)(**(int **)(param_1 + 0x24) + 0xc))(*(int **)(param_1 + 0x24)); + return; +} + + + +/* @0044df10 file=? name=FUN_0044df10 */ + +undefined4 * __cdecl FUN_0044df10(undefined4 *param_1,undefined4 param_2) + +{ + FUN_0041827c(param_1,param_2); + *param_1 = &PTR_FUN_004efc5c; + return param_1; +} + + + +/* @0044df2f file=? name=FUN_0044df2f */ + +void __cdecl FUN_0044df2f(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004efc5c; + FUN_004182a8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0044dfe0 file=? name=FUN_0044dfe0 */ + +undefined4 * __cdecl +FUN_0044dfe0(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4, + undefined4 param_5) + +{ + undefined4 uVar1; + undefined4 *puVar2; + + FUN_0041d520(param_1,param_4,param_5,4); + *param_1 = &PTR_FUN_004f03ac; + FUN_0041b9ec(param_1 + 0x1d,0xc); + param_1[0x15] = param_3; + uVar1 = FUN_0041ac98(5); + param_1[0x18] = uVar1; + param_1[0x1a] = param_2; + param_1[5] = 0; + param_1[8] = 0; + param_1[10] = 0; + param_1[0xf] = 0; + param_1[0x10] = 0; + param_1[0x19] = 0; + param_1[0xc] = 0; + param_1[0x11] = 0; + param_1[0x12] = 0; + param_1[0x13] = 0; + param_1[0x1b] = 0; + param_1[0x32] = 0; + puVar2 = (undefined4 *)FUN_00402298(0x24); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_00421114(puVar2); + } + param_1[9] = puVar2; + puVar2 = (undefined4 *)FUN_00402298(0x6c); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_00428d88(puVar2); + } + param_1[0xb] = puVar2; + puVar2 = (undefined4 *)FUN_00402298(0x1c); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_004356d4(puVar2); + } + param_1[0xd] = puVar2; + puVar2 = (undefined4 *)FUN_00402298(0x24); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_00436288(puVar2); + } + param_1[0xe] = puVar2; + puVar2 = (undefined4 *)FUN_00402298(0x28); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_0044dd58(puVar2); + } + param_1[0x19] = puVar2; + param_1[0x1c] = 0; + FUN_0041bbd8((int)(param_1 + 0x1d),0); + param_1[0x32] = 0; + param_1[0x16] = 0; + param_1[6] = 0; + param_1[0x33] = 0; + puVar2 = (undefined4 *)FUN_00414b60(); + param_1[7] = *puVar2; + return param_1; +} + + + +/* @0044e13c file=? name=FUN_0044e13c */ + +int __cdecl FUN_0044e13c(int param_1) + +{ + int iVar1; + int local_14 [4]; + + FUN_0044f0d5(local_14,param_1,0xffffffff); + do { + iVar1 = (**(code **)(local_14[0] + 0x28))(local_14); + if (iVar1 == 0) { + iVar1 = 0; + FUN_0044f13a(local_14,2); + return iVar1; + } + } while (*(int *)(iVar1 + 4) != 0x4d); + FUN_0044f13a(local_14,2); + return iVar1; +} + + + +/* @0044e19c file=? name=FUN_0044e19c */ + +float10 __cdecl FUN_0044e19c(int param_1) + +{ + int iVar1; + + iVar1 = FUN_0044e13c(param_1); + return (float10)*(float *)(iVar1 + 0x10); +} + + + +/* @0044e1b0 file=? name=FUN_0044e1b0 */ + +void __cdecl FUN_0044e1b0(int *param_1) + +{ + int iVar1; + int *piVar2; + + iVar1 = (**(code **)(*param_1 + 0x4c))(param_1); + param_1[0xc] = iVar1; + iVar1 = (**(code **)(*param_1 + 0x3c))(param_1); + param_1[8] = iVar1; + iVar1 = (**(code **)(*param_1 + 0x40))(param_1); + param_1[10] = iVar1; + if (iVar1 != 0) { + FUN_0043364c(); + } + iVar1 = (**(code **)(*param_1 + 0x5c))(param_1); + param_1[0x14] = iVar1; + piVar2 = (int *)(**(code **)(*param_1 + 0x50))(param_1); + param_1[0x11] = (int)piVar2; + if (piVar2 != (int *)0x0) { + (**(code **)(*piVar2 + 0x48))(piVar2); + } + iVar1 = (**(code **)(*param_1 + 0x44))(param_1); + param_1[0xf] = iVar1; + iVar1 = (**(code **)(*param_1 + 0x48))(param_1); + param_1[0x10] = iVar1; + (**(code **)(*param_1 + 0x1c))(param_1); + param_1[0x1c] = 1; + FUN_0041bbd8((int)(param_1 + 0x1d),1); + iVar1 = (**(code **)(*param_1 + 0x54))(param_1); + param_1[0x12] = iVar1; + iVar1 = (**(code **)(*param_1 + 0x58))(param_1); + param_1[0x13] = iVar1; + return; +} + + + +/* @0044e254 file=? name=FUN_0044e254 */ + +void __cdecl FUN_0044e254(int param_1) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00402298(0x10); + if (puVar1 != (undefined4 *)0x0) { + FUN_0044dd08(puVar1,0x48); + *puVar1 = &PTR_FUN_004f0394; + } + FUN_0044de1c(*(int *)(param_1 + 100),puVar1); + puVar1 = (undefined4 *)FUN_00402298(0x10); + if (puVar1 != (undefined4 *)0x0) { + FUN_0044dd08(puVar1,0x48); + *puVar1 = &PTR_FUN_004f037c; + } + FUN_0044de1c(*(int *)(param_1 + 100),puVar1); + puVar1 = (undefined4 *)FUN_00402298(0x10); + if (puVar1 != (undefined4 *)0x0) { + FUN_0044dd08(puVar1,0x48); + *puVar1 = &PTR_FUN_004f0364; + } + FUN_0044de1c(*(int *)(param_1 + 100),puVar1); + puVar1 = (undefined4 *)FUN_00402298(0x10); + if (puVar1 != (undefined4 *)0x0) { + FUN_0044dd08(puVar1,0x48); + *puVar1 = &PTR_FUN_004f034c; + } + FUN_0044de1c(*(int *)(param_1 + 100),puVar1); + puVar1 = (undefined4 *)FUN_00402298(0x10); + if (puVar1 != (undefined4 *)0x0) { + FUN_0044dd08(puVar1,0x48); + *puVar1 = &PTR_FUN_004f0334; + } + FUN_0044de1c(*(int *)(param_1 + 100),puVar1); + puVar1 = (undefined4 *)FUN_00402298(0x10); + if (puVar1 != (undefined4 *)0x0) { + FUN_0044dd08(puVar1,0x48); + *puVar1 = &PTR_FUN_004f031c; + } + FUN_0044de1c(*(int *)(param_1 + 100),puVar1); + puVar1 = (undefined4 *)FUN_00402298(0x10); + if (puVar1 != (undefined4 *)0x0) { + FUN_0044dd08(puVar1,0x48); + *puVar1 = &PTR_FUN_004f0304; + } + FUN_0044de1c(*(int *)(param_1 + 100),puVar1); + return; +} + + + +/* @0044e3c0 file=? name=FUN_0044e3c0 */ + +undefined4 * FUN_0044e3c0(void) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00402298(0x44); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_0043457c(puVar1); + } + return puVar1; +} + + + +/* @0044e3e0 file=? name=FUN_0044e3e0 */ + +undefined4 * FUN_0044e3e0(void) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00402298(0x28); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_0041d5b4(puVar1,&DAT_004e3744); + } + return puVar1; +} + + + +/* @0044e408 file=munga/app.cpp name=FUN_0044e408 */ + +undefined4 FUN_0044e408(void) + +{ + FUN_0040385c(s_Application__MakeRegistry___Shou_004efe5c,s_d__tesla_bt_munga_APP_CPP_004efe90, + 0x215); + return 0; +} + + + +/* @0044e428 file=munga/app.cpp name=FUN_0044e428 */ + +undefined4 FUN_0044e428(void) + +{ + FUN_0040385c(s_Application__MakeModeManager___S_004efeaa,s_d__tesla_bt_munga_APP_CPP_004efee1, + 0x221); + return 0; +} + + + +/* @0044e448 file=munga/app.cpp name=FUN_0044e448 */ + +undefined4 FUN_0044e448(void) + +{ + FUN_0040385c(s_Application__MakeControlsManager_004efefb,s_d__tesla_bt_munga_APP_CPP_004eff36, + 0x22d); + return 0; +} + + + +/* @0044e468 file=munga/app.cpp name=FUN_0044e468 */ + +undefined4 FUN_0044e468(void) + +{ + FUN_0040385c(s_Application__MakeIntercomManager_004eff50,s_d__tesla_bt_munga_APP_CPP_004eff8b, + 0x239); + return 0; +} + + + +/* @0044e488 file=? name=FUN_0044e488 */ + +undefined4 __cdecl FUN_0044e488(int param_1,int param_2) + +{ + int *piVar1; + undefined4 uVar2; + + uVar2 = 0; + if (*(int *)(param_1 + 0x70) != 0) { + FUN_004dcd94(); + (**(code **)(**(int **)(param_1 + 0x3c) + 0x18))(*(int **)(param_1 + 0x3c)); + if (*(int *)(param_1 + 0x88) == 1) { + uVar2 = *(undefined4 *)(param_1 + 0x70); + } + else { + FUN_00435794(*(int *)(param_1 + 0x34)); + FUN_004363ec(*(int *)(param_1 + 0x38),param_2); + FUN_00434a08(); + FUN_0043649c(*(int *)(param_1 + 0x38)); + FUN_00436440(*(int *)(param_1 + 0x38),param_2); + (**(code **)(**(int **)(param_1 + 0x40) + 0x24))(*(int **)(param_1 + 0x40)); + if (*(int *)(param_1 + 0x88) == 5) { + piVar1 = (int *)FUN_00414b60(); + *(float *)(param_1 + 0x58) = + *(float *)(*(int *)(param_1 + 200) + 0xe0) - + (float)(*piVar1 - *(int *)(param_1 + 0x5c)) / DAT_0052140c; + } + *(undefined4 *)(param_1 + 0xcc) = 0; + if ((*(int *)(param_1 + 0x70) == 0) || (DAT_004efc98 != 0)) { + uVar2 = 0; + } + else { + uVar2 = 1; + } + } + } + return uVar2; +} + + + +/* @0044e6c0 file=? name=FUN_0044e6c0 */ + +void __cdecl FUN_0044e6c0(int param_1) + +{ + *(undefined4 *)(param_1 + 0x70) = 0; + FUN_004d9c70(&DAT_00524e20); + FUN_0041bbd8(param_1 + 0x74,7); + return; +} + + + +/* @0044e6e8 file=? name=FUN_0044e6e8 */ + +undefined4 __cdecl FUN_0044e6e8(int param_1) + +{ + undefined4 *puVar1; + + if (*(int **)(param_1 + 0x4c) != (int *)0x0) { + FUN_00435f6c(*(int **)(param_1 + 0x4c)); + (**(code **)(**(int **)(param_1 + 0x4c) + 0x18))(*(int **)(param_1 + 0x4c)); + } + if (*(int **)(param_1 + 0x48) != (int *)0x0) { + FUN_00435f6c(*(int **)(param_1 + 0x48)); + (**(code **)(**(int **)(param_1 + 0x48) + 0x18))(*(int **)(param_1 + 0x48)); + } + if (*(int **)(param_1 + 0x44) != (int *)0x0) { + FUN_00435f6c(*(int **)(param_1 + 0x44)); + (**(code **)(**(int **)(param_1 + 0x44) + 0x18))(*(int **)(param_1 + 0x44)); + } + puVar1 = *(undefined4 **)(param_1 + 0x6c); + if (puVar1 != (undefined4 *)0x0) { + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + *(undefined4 *)(param_1 + 0x6c) = 0; + } + (**(code **)(**(int **)(param_1 + 0x30) + 0x20))(*(int **)(param_1 + 0x30)); + FUN_00428ea0(*(int *)(param_1 + 0x2c)); + (**(code **)(**(int **)(param_1 + 0x20) + 0x28))(*(int **)(param_1 + 0x20)); + puVar1 = *(undefined4 **)(param_1 + 200); + if (puVar1 != (undefined4 *)0x0) { + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + *(undefined4 *)(param_1 + 200) = 0; + } + *(undefined4 *)(param_1 + 0x70) = 1; + FUN_0041bbd8(param_1 + 0x74,1); + return 0; +} + + + +/* @0044e7ac file=? name=FUN_0044e7ac */ + +void __cdecl FUN_0044e7ac(int param_1) + +{ + undefined4 *puVar1; + + puVar1 = *(undefined4 **)(param_1 + 0x4c); + if (puVar1 != (undefined4 *)0x0) { + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + *(undefined4 *)(param_1 + 0x4c) = 0; + } + puVar1 = *(undefined4 **)(param_1 + 0x48); + if (puVar1 != (undefined4 *)0x0) { + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + *(undefined4 *)(param_1 + 0x48) = 0; + } + puVar1 = *(undefined4 **)(param_1 + 0x44); + if (puVar1 != (undefined4 *)0x0) { + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + *(undefined4 *)(param_1 + 0x44) = 0; + } + puVar1 = *(undefined4 **)(param_1 + 0x40); + if (puVar1 != (undefined4 *)0x0) { + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + *(undefined4 *)(param_1 + 0x40) = 0; + } + puVar1 = *(undefined4 **)(param_1 + 0x3c); + if (puVar1 != (undefined4 *)0x0) { + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + *(undefined4 *)(param_1 + 0x3c) = 0; + } + if (*(int **)(param_1 + 0x50) != (int *)0x0) { + FUN_0044c2e4(*(int **)(param_1 + 0x50),3); + *(undefined4 *)(param_1 + 0x50) = 0; + } + puVar1 = *(undefined4 **)(param_1 + 0x28); + if (puVar1 != (undefined4 *)0x0) { + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + *(undefined4 *)(param_1 + 0x28) = 0; + } + puVar1 = *(undefined4 **)(param_1 + 0x20); + if (puVar1 != (undefined4 *)0x0) { + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + *(undefined4 *)(param_1 + 0x20) = 0; + } + puVar1 = *(undefined4 **)(param_1 + 0x30); + if (puVar1 != (undefined4 *)0x0) { + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + *(undefined4 *)(param_1 + 0x30) = 0; + } + return; +} + + + +/* @0044e8a0 file=? name=FUN_0044e8a0 */ + +void __cdecl FUN_0044e8a0(int *param_1,byte param_2) + +{ + undefined4 *puVar1; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f03ac; + puVar1 = (undefined4 *)param_1[0x19]; + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + param_1[0x19] = 0; + puVar1 = (undefined4 *)param_1[0xe]; + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + param_1[0xe] = 0; + puVar1 = (undefined4 *)param_1[0xd]; + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + param_1[0xd] = 0; + puVar1 = (undefined4 *)param_1[0xb]; + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + param_1[0xb] = 0; + puVar1 = (undefined4 *)param_1[9]; + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + param_1[9] = 0; + param_1[0x1a] = 0; + FUN_004de8d4((int *)param_1[0x18],0x34,0,0x19,FUN_0041ac50); + param_1[0x18] = 0; + FUN_0041baa4(param_1 + 0x1d,2); + FUN_0041d554(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0044e970 file=? name=FUN_0044e970 */ + +void __cdecl FUN_0044e970(int param_1) + +{ + int iVar1; + undefined4 local_1c [6]; + + iVar1 = FUN_00429078(*(int *)(param_1 + 0x2c)); + if (iVar1 != 0) { + FUN_0042995c(local_1c,0,*(undefined4 *)(param_1 + 0x88),*(undefined4 *)(param_1 + 0x54)); + (**(code **)(**(int **)(param_1 + 0x20) + 0x18)) + (*(int **)(param_1 + 0x20),local_1c,5,*(undefined4 *)(iVar1 + 0xc)); + } + return; +} + + + +/* @0044e9c0 file=? name=FUN_0044e9c0 */ + +void __cdecl FUN_0044e9c0(int *param_1,undefined4 param_2) + +{ + int iVar1; + + iVar1 = (**(code **)(*param_1 + 0x34))(param_1,param_2,param_1[0x1a]); + param_1[0x32] = iVar1; + param_1[0x16] = *(int *)(iVar1 + 0xe0); + (**(code **)(*(int *)param_1[8] + 0x24))((int *)param_1[8],param_1[0x32]); + (**(code **)(*(int *)param_1[0x32] + 4))((int *)param_1[0x32],param_2); + (**(code **)(*(int *)param_1[0xc] + 0x18))((int *)param_1[0xc],param_1[0x32]); + return; +} + + + +/* @0044ea28 file=munga/app.cpp name=FUN_0044ea28 */ + +undefined4 FUN_0044ea28(void) + +{ + FUN_0040385c(s_Application__MakeMisson___Should_004effcf,s_d__tesla_bt_munga_APP_CPP_004f0001, + 0x4cb); + return 0; +} + + + +/* @0044ea48 file=? name=FUN_0044ea48 */ + +void __cdecl FUN_0044ea48(int param_1) + +{ + undefined4 uVar1; + + (**(code **)(**(int **)(param_1 + 0x30) + 0x1c)) + (*(int **)(param_1 + 0x30),*(undefined4 *)(param_1 + 200)); + uVar1 = (**(code **)(**(int **)(param_1 + 0x28) + 0x18)) + (*(int **)(param_1 + 0x28),*(undefined4 *)(param_1 + 200)); + *(undefined4 *)(param_1 + 0x14) = uVar1; + FUN_0041bbd8(param_1 + 0x74,0xb); + return; +} + + + +/* @0044ea8c file=? name=FUN_0044ea8c */ + +int __cdecl FUN_0044ea8c(int *param_1,undefined4 param_2) + +{ + int *piVar1; + int iVar2; + uint local_10 [3]; + + iVar2 = (**(code **)(*param_1 + 0x38))(param_1,param_2); + param_1[0x1b] = iVar2; + FUN_0044f034(local_10); + FUN_0041acbc(param_1[0x18],2,param_1,local_10,DAT_004e17f4); + piVar1 = (int *)param_1[0x11]; + if (piVar1 != (int *)0x0) { + (**(code **)(*piVar1 + 0x14))(piVar1,param_1[0x1b]); + FUN_00435f2c((int *)param_1[0x11],param_1[0x32]); + FUN_00435f9c(param_1[0x11]); + } + piVar1 = (int *)param_1[0x12]; + if (piVar1 != (int *)0x0) { + (**(code **)(*piVar1 + 0x14))(piVar1,param_1[0x1b]); + FUN_00435f2c((int *)param_1[0x12],param_1[0x32]); + FUN_00435f9c(param_1[0x12]); + } + piVar1 = (int *)param_1[0x13]; + if (piVar1 != (int *)0x0) { + (**(code **)(*piVar1 + 0x14))(piVar1,param_1[0x1b]); + FUN_00435f2c((int *)param_1[0x13],param_1[0x32]); + FUN_00435f9c(param_1[0x13]); + } + return param_1[0x1b]; +} + + + +/* @0044eb6c file=munga/app.cpp name=FUN_0044eb6c */ + +undefined4 FUN_0044eb6c(void) + +{ + FUN_0040385c(s_Application__MakeViewpointEntity_004f001b,s_d__tesla_bt_munga_APP_CPP_004f0056, + 0x54b); + return 0; +} + + + +/* @0044eb8c file=munga/app.cpp name=FUN_0044eb8c */ + +undefined4 FUN_0044eb8c(void) + +{ + FUN_0040385c(s_Application__MakeAudioRenderer___004f0070,s_d__tesla_bt_munga_APP_CPP_004f00a9, + 0x557); + return 0; +} + + + +/* @0044ebac file=munga/app.cpp name=FUN_0044ebac */ + +undefined4 FUN_0044ebac(void) + +{ + FUN_0040385c(s_Application__MakeVideoRenderer___004f00c3,s_d__tesla_bt_munga_APP_CPP_004f00fc, + 0x563); + return 0; +} + + + +/* @0044ebcc file=munga/app.cpp name=FUN_0044ebcc */ + +undefined4 FUN_0044ebcc(void) + +{ + FUN_0040385c(s_Application__MakeGaugeRenderer___004f0116,s_d__tesla_bt_munga_APP_CPP_004f014f, + 0x56f); + return 0; +} + + + +/* @0044ebec file=? name=FUN_0044ebec */ + +void __cdecl FUN_0044ebec(int param_1,uint *param_2) + +{ + uint uVar1; + int iVar2; + int *piVar3; + uint local_14 [3]; + int local_8; + + uVar1 = *(int *)(param_1 + 0x88) - 2; + if ((uVar1 < 2) || (uVar1 == 9)) { + iVar2 = FUN_0041aff4(*(int *)(param_1 + 0x60),0); + if (iVar2 != 0) { + if (*(int *)(param_1 + 0x88) == 2) { + FUN_0040717c(*(int *)(param_1 + 0x68)); + } + FUN_0041bbd8(param_1 + 0x74,3); + iVar2 = FUN_00429078(*(int *)(param_1 + 0x2c)); + if ((iVar2 == 0) || ((iVar2 != 0 && (*(int *)(iVar2 + 0x18) != 3)))) { + FUN_0044f5b4(local_14); + FUN_0041acbc(*(int *)(param_1 + 0x60),2,param_1,local_14,DAT_004e17f4); + } + } + piVar3 = (int *)FUN_00414b60(); + local_8 = *piVar3; + iVar2 = FUN_004dcd94(); + local_8 = local_8 + iVar2; + FUN_0041acbc(*(int *)(param_1 + 0x60),2,param_1,param_2,local_8); + } + return; +} + + + +/* @0044ecdc file=munga/app.cpp name=FUN_0044ecdc */ + +void __cdecl FUN_0044ecdc(int param_1) + +{ + int iVar1; + int *piVar2; + undefined4 *puVar3; + undefined4 local_20; + undefined4 local_1c; + undefined4 local_18; + undefined4 local_14 [2]; + undefined4 local_c; + undefined4 local_8; + + iVar1 = *(int *)(param_1 + 0x88); + if (iVar1 == 3) { + FUN_0041bbd8(param_1 + 0x74,4); + piVar2 = *(int **)(param_1 + 0x14); + local_20 = 0x1c; + local_1c = 0x18; + local_18 = 1; + FUN_00420ea4(local_14,(undefined4 *)&DAT_00522524); + local_c = 0; + local_8 = 0; + (**(code **)(*piVar2 + 0xc))(piVar2,&local_20); + } + else if (iVar1 == 4) { + FUN_0041bbd8(param_1 + 0x74,5); + puVar3 = (undefined4 *)FUN_00414b60(); + *(undefined4 *)(param_1 + 0x5c) = *puVar3; + } + else if (iVar1 != 5) { + FUN_0040385c(s_Application__RunMissionMessageHa_004f0169,s_d__tesla_bt_munga_APP_CPP_004f01a4, + 0x609); + } + return; +} + + + +/* @0044ed88 file=munga/app.cpp name=FUN_0044ed88 */ + +void __cdecl FUN_0044ed88(int param_1) + +{ + undefined4 local_20; + undefined4 local_1c; + undefined4 local_18; + undefined4 local_14 [2]; + undefined4 local_c; + undefined4 local_8; + + if (*(int *)(param_1 + 0x88) == 5) { + local_20 = 0x1c; + local_1c = 0x19; + local_18 = 1; + FUN_00420ea4(local_14,(undefined4 *)&DAT_00522524); + local_c = 0; + local_8 = 0; + FUN_0041bbd8(param_1 + 0x74,8); + (**(code **)(**(int **)(param_1 + 0x14) + 0xc))(*(int **)(param_1 + 0x14),&local_20); + } + else if (*(int *)(param_1 + 0x88) != 8) { + FUN_0040385c(s_Application__SuspendMissionMessa_004f01be,s_d__tesla_bt_munga_APP_CPP_004f01f8, + 0x643); + } + return; +} + + + +/* @0044ee10 file=munga/app.cpp name=FUN_0044ee10 */ + +void __cdecl FUN_0044ee10(int param_1) + +{ + undefined4 *puVar1; + undefined4 local_20; + undefined4 local_1c; + undefined4 local_18; + undefined4 local_14 [2]; + undefined4 local_c; + undefined4 local_8; + + if (*(int *)(param_1 + 0x88) == 8) { + local_20 = 0x1c; + local_1c = 0x18; + local_18 = 1; + FUN_00420ea4(local_14,(undefined4 *)&DAT_00522524); + local_c = 0; + local_8 = 0; + FUN_0041bbd8(param_1 + 0x74,9); + (**(code **)(**(int **)(param_1 + 0x14) + 0xc))(*(int **)(param_1 + 0x14),&local_20); + } + else if (*(int *)(param_1 + 0x88) == 9) { + FUN_0041bbd8(param_1 + 0x74,5); + puVar1 = (undefined4 *)FUN_00414b60(); + *(undefined4 *)(param_1 + 0x5c) = *puVar1; + } + else { + FUN_0040385c(s_Application__ResumeMissionMessag_004f0212,s_d__tesla_bt_munga_APP_CPP_004f024c, + 0x679); + } + return; +} + + + +/* @0044eeb4 file=? name=FUN_0044eeb4 */ + +void __cdecl FUN_0044eeb4(int param_1) + +{ + int iVar1; + int *piVar2; + undefined4 local_20; + undefined4 local_1c; + undefined4 local_18; + undefined4 local_14 [2]; + undefined4 local_c; + undefined4 local_8; + + iVar1 = *(int *)(param_1 + 0x88); + if (iVar1 != 6) { + if (iVar1 == 7) { + return; + } + if (iVar1 != 10) { + FUN_0041bbd8(param_1 + 0x74,6); + piVar2 = *(int **)(param_1 + 0x14); + if (piVar2 != (int *)0x0) { + (**(code **)(**(int **)(param_1 + 0x20) + 0x30))(*(int **)(param_1 + 0x20),0); + local_20 = 0x1c; + local_1c = 0x19; + local_18 = 1; + FUN_00420ea4(local_14,(undefined4 *)&DAT_00522524); + local_c = 0; + local_8 = 0; + (**(code **)(*piVar2 + 0xc))(piVar2,&local_20); + return; + } + FUN_0044e6c0(param_1); + return; + } + } + FUN_0044e6c0(param_1); + return; +} + + + +/* @0044ef4c file=? name=FUN_0044ef4c */ + +void __cdecl FUN_0044ef4c(int param_1) + +{ + int iVar1; + int *piVar2; + undefined4 local_20; + undefined4 local_1c; + undefined4 local_18; + undefined4 local_14 [2]; + undefined4 local_c; + undefined4 local_8; + + iVar1 = *(int *)(param_1 + 0x88); + if (iVar1 != 6) { + if (iVar1 == 7) { + return; + } + if (iVar1 != 10) { + FUN_0041bbd8(param_1 + 0x74,10); + piVar2 = *(int **)(param_1 + 0x14); + if (piVar2 != (int *)0x0) { + local_20 = 0x1c; + local_1c = 0x19; + local_18 = 1; + FUN_00420ea4(local_14,(undefined4 *)&DAT_00522524); + local_c = 0; + local_8 = 0; + (**(code **)(*piVar2 + 0xc))(piVar2,&local_20); + return; + } + FUN_0044e6c0(param_1); + return; + } + } + FUN_0044e6c0(param_1); + return; +} + + + +/* @0044efd8 file=? name=FUN_0044efd8 */ + +void __cdecl FUN_0044efd8(int param_1,int param_2) + +{ + if ((*(int *)(param_2 + 0xc) == 0x26) && (*(int *)(param_1 + 0x88) != 7)) { + DAT_004efc98 = 1; + FUN_0044e6c0(param_1); + FUN_004dbb24(&DAT_00524e20,s_Mission_stopped_by_keystroke__004f0266,(char *)0x0); + if (*(int *)(param_1 + 0x88) == 1) { + FUN_0041bbd8(param_1 + 0x74,6); + } + } + return; +} + + + +/* @0044f034 file=? name=FUN_0044f034 */ + +void __cdecl FUN_0044f034(undefined4 *param_1) + +{ + *param_1 = 0xc; + param_1[1] = 4; + param_1[2] = 1; + return; +} + + + +/* @0044f0d5 file=? name=FUN_0044f0d5 */ + +undefined4 * __cdecl FUN_0044f0d5(undefined4 *param_1,int param_2,undefined4 param_3) + +{ + FUN_00415f30(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004f02bc; + return param_1; +} + + + +/* @0044f0f8 file=? name=FUN_0044f0f8 */ + +undefined4 * __cdecl FUN_0044f0f8(undefined4 *param_1,int param_2,undefined4 param_3) + +{ + FUN_00415f30(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004f02bc; + return param_1; +} + + + +/* @0044f11b file=? name=FUN_0044f11b */ + +undefined4 * __cdecl FUN_0044f11b(undefined4 *param_1,int param_2) + +{ + FUN_00415f60(param_1,param_2); + *param_1 = &PTR_FUN_004f02bc; + return param_1; +} + + + +/* @0044f13a file=? name=FUN_0044f13a */ + +void __cdecl FUN_0044f13a(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f02bc; + FUN_00415f90(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0044f166 file=? name=FUN_0044f166 */ + +void __cdecl FUN_0044f166(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f0304; + FUN_0044dd2c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0044f192 file=? name=FUN_0044f192 */ + +void __cdecl FUN_0044f192(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f031c; + FUN_0044dd2c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0044f1be file=? name=FUN_0044f1be */ + +void __cdecl FUN_0044f1be(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f0334; + FUN_0044dd2c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0044f1ea file=? name=FUN_0044f1ea */ + +void __cdecl FUN_0044f1ea(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f034c; + FUN_0044dd2c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0044f216 file=? name=FUN_0044f216 */ + +void __cdecl FUN_0044f216(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f0364; + FUN_0044dd2c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0044f242 file=? name=FUN_0044f242 */ + +void __cdecl FUN_0044f242(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f037c; + FUN_0044dd2c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0044f26e file=? name=FUN_0044f26e */ + +void __cdecl FUN_0044f26e(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f0394; + FUN_0044dd2c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0044f29c file=? name=FUN_0044f29c */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 * __cdecl FUN_0044f29c(undefined4 *param_1,undefined4 param_2) + +{ + FUN_004178cc(param_1,0x4d); + *param_1 = &PTR_FUN_004f04a0; + FUN_0044f4bc(param_1 + 5,param_1); + param_1[4] = param_2; + param_1[3] = _DAT_0044f2d8 / (float)param_1[4]; + return param_1; +} + + + +/* @0044f2dc file=? name=FUN_0044f2dc */ + +void __cdecl FUN_0044f2dc(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f04a0; + FUN_0044f4db(param_1 + 5,2); + FUN_0041790c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0044f318 file=? name=FUN_0044f318 */ + +void __cdecl FUN_0044f318(int param_1,int *param_2) + +{ + (**(code **)(*(int *)(param_1 + 0x14) + 4))(param_1 + 0x14,param_2); + DAT_004efc94 = param_2; + (**(code **)(*param_2 + 0x18))(param_2); + return; +} + + + +/* @0044f344 file=munga/appmgr.cpp name=FUN_0044f344 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_0044f344(int param_1) + +{ + int *piVar1; + int iVar2; + int local_24 [5]; + int local_10; + undefined4 local_c; + int local_8; + + FUN_0044f526(local_24,param_1 + 0x14); + while( true ) { + (**(code **)(local_24[0] + 4))(local_24); + piVar1 = (int *)FUN_00414b60(); + local_8 = *piVar1; + local_c = *(undefined4 *)(param_1 + 0xc); + iVar2 = FUN_004dcd94(); + local_8 = local_8 + iVar2; + if (_DAT_0044f4b8 < *(float *)(param_1 + 0xc)) { + FUN_0040385c(s_frameDuration_has_grown__004f040c,s_d__tesla_bt_munga_APPMGR_CPP_004f0426,0x36) + ; + } + while( true ) { + DAT_004efc94 = (int *)(**(code **)(local_24[0] + 0x28))(local_24); + if (DAT_004efc94 == (int *)0x0) break; + iVar2 = (**(code **)(*DAT_004efc94 + 0x20)) + (DAT_004efc94,local_8,*(undefined4 *)(param_1 + 0xc)); + if (iVar2 == 0) { + iVar2 = (**(code **)(*DAT_004efc94 + 0x28))(DAT_004efc94); + if (iVar2 == 0) { + (**(code **)(*DAT_004efc94 + 0x2c))(DAT_004efc94); + if (DAT_004efc94 != (int *)0x0) { + (**(code **)*DAT_004efc94)(DAT_004efc94,3); + } + } + } + } + (**(code **)(local_24[0] + 4))(local_24); + DAT_004efc94 = (int *)(**(code **)(local_24[0] + 0x30))(local_24); + if (DAT_004efc94 == (int *)0x0) break; + while( true ) { + do { + (**(code **)(*DAT_004efc94 + 0x24))(DAT_004efc94); + (**(code **)(local_24[0] + 0xc))(local_24); + DAT_004efc94 = (int *)(**(code **)(local_24[0] + 0x30))(local_24); + } while (DAT_004efc94 != (int *)0x0); + piVar1 = (int *)FUN_00414b60(); + local_10 = *piVar1; + if (local_8 <= local_10) break; + (**(code **)(local_24[0] + 4))(local_24); + DAT_004efc94 = (int *)(**(code **)(local_24[0] + 0x30))(local_24); + } + } + FUN_0044f564(local_24,2); + return; +} + + + +/* @0044f4bc file=? name=FUN_0044f4bc */ + +undefined4 * __cdecl FUN_0044f4bc(undefined4 *param_1,undefined4 param_2) + +{ + FUN_0041827c(param_1,param_2); + *param_1 = &PTR_FUN_004f0498; + return param_1; +} + + + +/* @0044f4db file=? name=FUN_0044f4db */ + +void __cdecl FUN_0044f4db(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f0498; + FUN_004182a8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0044f507 file=? name=FUN_0044f507 */ + +undefined4 * __cdecl FUN_0044f507(undefined4 *param_1,int param_2) + +{ + FUN_00418398(param_1,param_2); + *param_1 = &PTR_FUN_004f0444; + return param_1; +} + + + +/* @0044f526 file=? name=FUN_0044f526 */ + +undefined4 * __cdecl FUN_0044f526(undefined4 *param_1,int param_2) + +{ + FUN_00418398(param_1,param_2); + *param_1 = &PTR_FUN_004f0444; + return param_1; +} + + + +/* @0044f545 file=? name=FUN_0044f545 */ + +undefined4 * __cdecl FUN_0044f545(undefined4 *param_1,int param_2) + +{ + FUN_004183c0(param_1,param_2); + *param_1 = &PTR_FUN_004f0444; + return param_1; +} + + + +/* @0044f564 file=? name=FUN_0044f564 */ + +void __cdecl FUN_0044f564(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f0444; + FUN_004183ec(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0044f590 file=? name=FUN_0044f590 */ + +void __cdecl FUN_0044f590(undefined4 *param_1,undefined4 param_2) + +{ + *param_1 = 0x10; + param_1[1] = 3; + param_1[2] = 1; + param_1[3] = param_2; + return; +} + + + +/* @0044f5b4 file=? name=FUN_0044f5b4 */ + +void __cdecl FUN_0044f5b4(undefined4 *param_1) + +{ + *param_1 = 0xc; + param_1[1] = 5; + param_1[2] = 1; + return; +} + + + +/* @0044f5d0 file=? name=FUN_0044f5d0 */ + +void __cdecl FUN_0044f5d0(undefined4 *param_1,undefined4 param_2) + +{ + *param_1 = 0x10; + param_1[1] = 6; + param_1[2] = 1; + param_1[3] = param_2; + return; +} + + + +/* @0044f5f4 file=? name=FUN_0044f5f4 */ + +void __cdecl FUN_0044f5f4(undefined4 *param_1,undefined4 param_2) + +{ + *param_1 = 0x10; + param_1[1] = 0xb; + param_1[2] = 1; + param_1[3] = param_2; + return; +} + + + +/* @0044f618 file=? name=FUN_0044f618 */ + +void __cdecl FUN_0044f618(undefined4 *param_1) + +{ + *param_1 = 0xc; + param_1[1] = 8; + param_1[2] = 1; + return; +} + + + +/* @0044f634 file=? name=FUN_0044f634 */ + +void __cdecl FUN_0044f634(undefined4 *param_1) + +{ + *param_1 = 0xc; + param_1[1] = 9; + param_1[2] = 1; + return; +} + + + +/* @0044f650 file=? name=FUN_0044f650 */ + +undefined4 * __cdecl +FUN_0044f650(undefined4 *param_1,undefined4 param_2,undefined4 param_3,int param_4) + +{ + FUN_004030dc(param_1,param_2,param_3,param_4); + *param_1 = &PTR_FUN_004f0604; + param_1[4] = 0; + return param_1; +} + + + +/* @0044f67c file=? name=FUN_0044f67c */ + +undefined4 * __cdecl FUN_0044f67c(undefined4 *param_1,int param_2) + +{ + FUN_004030dc(param_1,*(int *)(param_2 + 4),*(undefined4 *)(param_2 + 0xc), + *(int *)(param_2 + 8) - *(int *)(param_2 + 4)); + *param_1 = &PTR_FUN_004f0604; + param_1[4] = *(undefined4 *)(param_2 + 0x10); + return param_1; +} + + + +/* @0044f6b0 file=? name=FUN_0044f6b0 */ + +void __cdecl FUN_0044f6b0(int *param_1,byte param_2) + +{ + if ((param_1 != (int *)0x0) && (*param_1 = (int)&PTR_FUN_004f0604, (param_2 & 1) != 0)) { + FUN_004022d0(param_1); + } + return; +} + + + +/* @0044f6d0 file=? name=FUN_0044f6d0 */ + +void __cdecl FUN_0044f6d0(int *param_1,LPCSTR param_2) + +{ + char *pcVar1; + char *pcVar2; + undefined **local_20 [6]; + char *local_8; + + FUN_004034b0(local_20,param_2,1); + local_8 = (char *)(param_1[2] - param_1[1]); + (*(code *)local_20[0][8])(local_20,&local_8,4); + (**(code **)(*param_1 + 0xc))(param_1,0); + pcVar2 = local_8; + pcVar1 = (char *)(**(code **)*param_1)(param_1); + FUN_00403614((int)local_20,pcVar1,pcVar2); + local_20[0] = &PTR_FUN_004e09e0; + FUN_00403564((int)local_20); + return; +} + + + +/* @0044f744 file=? name=FUN_0044f744 */ + +void __cdecl FUN_0044f744(int *param_1,LPCSTR param_2) + +{ + char *pcVar1; + undefined **local_20 [4]; + int local_10; + char *local_8; + + FUN_004034b0(local_20,param_2,0); + if (local_10 == -1) { + param_1[4] = 0; + local_20[0] = &PTR_FUN_004e09e0; + FUN_00403564((int)local_20); + } + else { + local_8 = (char *)0x0; + (*(code *)local_20[0][7])(local_20,&local_8,4); + pcVar1 = (char *)(**(code **)(*param_1 + 4))(param_1); + if ((pcVar1 < local_8) || (local_8 == (char *)0x0)) { + param_1[4] = 0; + } + else { + FUN_004035f0((int)local_20,(char *)param_1[1],local_8); + param_1[3] = (int)local_8; + (**(code **)(*param_1 + 0xc))(param_1,0); + param_1[4] = 2; + } + local_20[0] = &PTR_FUN_004e09e0; + FUN_00403564((int)local_20); + } + return; +} + + + +/* @0044f7f4 file=? name=FUN_0044f7f4 */ + +void __cdecl FUN_0044f7f4(int *param_1,undefined4 *param_2) + +{ + int iVar1; + undefined4 *puVar2; + uint uVar3; + uint uVar4; + + uVar3 = param_2[4] + 0x10; + iVar1 = (**(code **)(*param_1 + 4))(param_1); + if (iVar1 < (int)uVar3) { + FUN_004dbb24(&DAT_00524e20,s_Error__Spool_file_ran_out_of_mem_004f04ac,(char *)0x0); + FUN_004036a0(1); + } + uVar4 = uVar3; + puVar2 = (undefined4 *)(**(code **)*param_1)(param_1); + FUN_004d4918(puVar2,param_2,uVar4); + (**(code **)(*param_1 + 0x14))(param_1,uVar3); + return; +} + + + +/* @0044f850 file=? name=FUN_0044f850 */ + +undefined4 __cdecl FUN_0044f850(int *param_1) + +{ + int iVar1; + undefined4 uVar2; + uint uVar3; + uint uVar4; + + iVar1 = (**(code **)(*param_1 + 4))(param_1); + if (iVar1 == 0) { + uVar2 = 0; + } + else { + iVar1 = (**(code **)*param_1)(param_1); + uVar4 = *(int *)(iVar1 + 0x10) + 0x10; + uVar3 = (**(code **)(*param_1 + 4))(param_1); + if (uVar3 < uVar4) { + FUN_004dbb24(&DAT_00524e20,s_Error__Partial_packet_in_spool_f_004f04d2,(char *)0x0); + FUN_004036a0(1); + uVar2 = 0; + } + else { + (**(code **)(*param_1 + 0x14))(param_1,uVar4); + uVar2 = (**(code **)*param_1)(param_1); + } + } + return uVar2; +} + + + +/* @0044f8b8 file=? name=FUN_0044f8b8 */ + +undefined4 * __cdecl +FUN_0044f8b8(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) + +{ + undefined4 uVar1; + undefined4 *puVar2; + int iVar3; + + FUN_0044f29c(param_1,param_2); + *param_1 = &PTR_FUN_004f05f8; + param_1[10] = param_3; + param_1[0xd] = param_4; + uVar1 = FUN_004022b0(param_1[10] << 2); + param_1[0xc] = uVar1; + uVar1 = FUN_004022b0(param_1[10] << 2); + param_1[0xb] = uVar1; + for (iVar3 = 0; iVar3 < (int)param_1[10]; iVar3 = iVar3 + 1) { + uVar1 = FUN_004022b0(param_1[0xd]); + *(undefined4 *)(param_1[0xc] + iVar3 * 4) = uVar1; + puVar2 = (undefined4 *)FUN_00402298(0x14); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_0044f650(puVar2,*(undefined4 *)(param_1[0xc] + iVar3 * 4),param_1[0xd],0); + } + *(undefined4 **)(param_1[0xb] + iVar3 * 4) = puVar2; + } + return param_1; +} + + + +/* @0044f950 file=? name=FUN_0044f950 */ + +void __cdecl FUN_0044f950(int *param_1,byte param_2) + +{ + int *piVar1; + int iVar2; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f05f8; + for (iVar2 = 0; iVar2 < param_1[10]; iVar2 = iVar2 + 1) { + piVar1 = *(int **)(param_1[0xb] + iVar2 * 4); + if (piVar1 != (int *)0x0) { + FUN_0044f6b0(piVar1,3); + } + FUN_004022d0(*(int **)(param_1[0xc] + iVar2 * 4)); + } + FUN_004022d0((int *)param_1[0xb]); + FUN_004022d0((int *)param_1[0xc]); + FUN_0044f2dc(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0044f9c4 file=munga/spooler.cpp name=FUN_0044f9c4 */ + +int __cdecl FUN_0044f9c4(int param_1) + +{ + int iVar1; + int iVar2; + + iVar2 = 0; + while( true ) { + if (*(int *)(param_1 + 0x28) <= iVar2) { + FUN_0040385c(s_No_spool_files_available__004f04f8,s_d__tesla_bt_munga_SPOOLER_CPP_004f0512, + 0xee); + return 0; + } + iVar1 = *(int *)(*(int *)(param_1 + 0x2c) + iVar2 * 4); + if (*(int *)(iVar1 + 0x10) == 0) break; + iVar2 = iVar2 + 1; + } + *(undefined4 *)(iVar1 + 0x10) = 1; + return iVar1; +} + + + +/* @0044fa14 file=? name=FUN_0044fa14 */ + +undefined8 __fastcall FUN_0044fa14(undefined4 param_1,int param_2,int param_3) + +{ + int *piVar1; + int iVar2; + + iVar2 = 0; + do { + if (*(int *)(param_3 + 0x28) <= iVar2) { + iVar2 = 0; +LAB_0044fa68: + return CONCAT44(param_2,iVar2); + } + piVar1 = *(int **)(*(int *)(param_3 + 0x2c) + iVar2 * 4); + if (piVar1[4] == 0) { + FUN_0044f744(piVar1,s_last_spl_004f0530); + iVar2 = *(int *)(*(int *)(param_3 + 0x2c) + iVar2 * 4); + param_2 = *(int *)(iVar2 + 0x10); + if (param_2 == 2) { + *(undefined4 *)(iVar2 + 0x10) = 3; + param_2 = *(int *)(param_3 + 0x2c); + } + else { + iVar2 = 0; + } + goto LAB_0044fa68; + } + iVar2 = iVar2 + 1; + } while( true ); +} + + + +/* @0044fa6c file=? name=FUN_0044fa6c */ + +void __cdecl FUN_0044fa6c(int param_1,int *param_2) + +{ + int *piVar1; + int iVar2; + + iVar2 = 0; + while( true ) { + if (*(int *)(param_1 + 0x28) <= iVar2) { + return; + } + piVar1 = *(int **)(*(int *)(param_1 + 0x2c) + iVar2 * 4); + if (param_2 == piVar1) break; + iVar2 = iVar2 + 1; + } + piVar1[4] = 2; + FUN_0044f6d0(piVar1,s_last_spl_004f0539); + piVar1 = *(int **)(*(int *)(param_1 + 0x2c) + iVar2 * 4); + (**(code **)(*piVar1 + 0xc))(piVar1,0); + return; +} + + + +/* @0044fac0 file=? name=FUN_0044fac0 */ + +void __cdecl FUN_0044fac0(int param_1,int *param_2) + +{ + int *piVar1; + int iVar2; + + iVar2 = 0; + while( true ) { + if (*(int *)(param_1 + 0x28) <= iVar2) { + return; + } + piVar1 = *(int **)(*(int *)(param_1 + 0x2c) + iVar2 * 4); + if (param_2 == piVar1) break; + iVar2 = iVar2 + 1; + } + piVar1[4] = 0; + (**(code **)(*piVar1 + 0xc))(piVar1,0); + return; +} + + + +/* @0044fafc file=? name=FUN_0044fafc */ + +undefined4 * __cdecl FUN_0044fafc(undefined4 *param_1,undefined4 param_2,undefined4 param_3) + +{ + FUN_00415e90(param_1,0x43); + *param_1 = &PTR_FUN_004f0744; + param_1[3] = param_2; + param_1[4] = param_3; + param_1[5] = 0xffffffff; + param_1[6] = 0xffffffff; + param_1[7] = 0; + param_1[8] = 0; + return param_1; +} + + + +/* @0044fb40 file=? name=FUN_0044fb40 */ + +void __cdecl FUN_0044fb40(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f0744; + (**(code **)(*param_1 + 8))(param_1,0); + (**(code **)(*param_1 + 4))(param_1,0xffffffff); + FUN_00415ed8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0044fb84 file=? name=FUN_0044fb84 */ + +undefined4 FUN_0044fb84(void) + +{ + FUN_00415f1c(); + return 1; +} + + + +/* @0044fb98 file=? name=FUN_0044fb98 */ + +void __cdecl FUN_0044fb98(int param_1,undefined4 param_2) + +{ + uint local_20 [4]; + undefined4 local_10; + undefined4 local_c; + undefined4 local_8; + + local_20[2] = 1; + local_10 = *(undefined4 *)(param_1 + 0x10); + local_20[3] = *(undefined4 *)(param_1 + 0xc); + local_20[0] = 0x18; + local_20[1] = 3; + local_c = param_2; + local_8 = DAT_004e17f4; + FUN_0041ad54(*(int *)(DAT_004efc94 + 0x60),2,6,local_20,DAT_004e17f4); + return; +} + + + +/* @0044fc00 file=? name=FUN_0044fc00 */ + +void __cdecl FUN_0044fc00(int param_1,undefined4 param_2) + +{ + *(undefined4 *)(param_1 + 0x14) = param_2; + return; +} + + + +/* @0044fc10 file=? name=FUN_0044fc10 */ + +undefined4 __cdecl FUN_0044fc10(int param_1) + +{ + return *(undefined4 *)(param_1 + 0x14); +} + + + +/* @0044fc1c file=? name=FUN_0044fc1c */ + +void __cdecl FUN_0044fc1c(int param_1,undefined4 param_2) + +{ + uint local_20 [4]; + undefined4 local_10; + undefined4 local_c; + undefined4 local_8; + + if (*(int *)(param_1 + 0x20) == 0) { + local_20[2] = 1; + local_10 = *(undefined4 *)(param_1 + 0x10); + local_20[3] = *(undefined4 *)(param_1 + 0xc); + local_20[0] = 0x18; + local_20[1] = 4; + local_c = param_2; + local_8 = DAT_004e17f4; + FUN_0041ad54(*(int *)(DAT_004efc94 + 0x60),2,6,local_20,DAT_004e17f4); + } + return; +} + + + +/* @0044fc8c file=? name=FUN_0044fc8c */ + +void __cdecl FUN_0044fc8c(int param_1,undefined4 param_2) + +{ + if (*(int *)(param_1 + 0x20) == 0) { + *(undefined4 *)(param_1 + 0x1c) = param_2; + } + return; +} + + + +/* @0044fca0 file=? name=FUN_0044fca0 */ + +undefined4 __cdecl FUN_0044fca0(int param_1) + +{ + return *(undefined4 *)(param_1 + 0x1c); +} + + + +/* @0044fcac file=? name=FUN_0044fcac */ + +void __cdecl FUN_0044fcac(int param_1,undefined4 param_2) + +{ + uint local_20 [4]; + undefined4 local_10; + undefined4 local_c; + undefined4 local_8; + + local_20[2] = 1; + local_10 = *(undefined4 *)(param_1 + 0x10); + local_20[3] = *(undefined4 *)(param_1 + 0xc); + local_20[0] = 0x18; + local_20[1] = 5; + local_c = param_2; + local_8 = DAT_004e17f4; + FUN_0041ad54(*(int *)(DAT_004efc94 + 0x60),2,6,local_20,DAT_004e17f4); + return; +} + + + +/* @0044fd14 file=? name=FUN_0044fd14 */ + +void __cdecl FUN_0044fd14(int *param_1,int param_2) + +{ + if (param_2 == 1) { + if (param_1[8] == 0) { + param_1[6] = param_1[5]; + } + if (param_1[7] == 1) { + (**(code **)(*param_1 + 8))(param_1,0); + } + } + else { + (**(code **)(*param_1 + 4))(param_1,param_1[6]); + } + param_1[8] = param_2; + return; +} + + + +/* @0044fd58 file=? name=FUN_0044fd58 */ + +undefined4 __cdecl FUN_0044fd58(int param_1) + +{ + return *(undefined4 *)(param_1 + 0x20); +} + + + +/* @0044fd64 file=? name=FUN_0044fd64 */ + +undefined4 * __cdecl FUN_0044fd64(undefined4 *param_1,undefined4 param_2) + +{ + FUN_0041d520(param_1,0x44,param_2,6); + *param_1 = &PTR_FUN_004f0718; + FUN_0045005e(param_1 + 6,param_1); + param_1[5] = 0; + return param_1; +} + + + +/* @0044fd9c file=? name=FUN_0044fd9c */ + +void __cdecl FUN_0044fd9c(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f0718; + (**(code **)(*param_1 + 0x20))(param_1); + FUN_0045007d(param_1 + 6,2); + FUN_0041d554(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0044fde0 file=? name=FUN_0044fde0 */ + +void __cdecl FUN_0044fde0(int param_1) + +{ + FUN_0041a1a4(**(int **)(param_1 + 0xc),0x4f0628); + return; +} + + + +/* @0044fdfc file=? name=FUN_0044fdfc */ + +void FUN_0044fdfc(void) + +{ + return; +} + + + +/* @0044fe04 file=? name=FUN_0044fe04 */ + +void __cdecl FUN_0044fe04(int param_1) + +{ + undefined4 *puVar1; + int local_10 [3]; + + FUN_004500c8(local_10,param_1 + 0x18); + while( true ) { + puVar1 = (undefined4 *)(**(code **)(local_10[0] + 0x28))(local_10); + if (puVar1 == (undefined4 *)0x0) break; + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + } + FUN_00450106(local_10,2); + return; +} + + + +/* @0044fe54 file=munga/icom.cpp name=FUN_0044fe54 */ + +void FUN_0044fe54(void) + +{ + FUN_0040385c(s_IcomManager__Execute___should_no_004f066c,s_d__tesla_bt_munga_ICOM_CPP_004f06a3, + 0x166); + return; +} + + + +/* @0044fe70 file=? name=FUN_0044fe70 */ + +undefined4 * __cdecl FUN_0044fe70(int param_1,undefined4 param_2,undefined4 param_3) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00402298(0x24); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_0044fafc(puVar1,param_2,param_3); + } + (**(code **)(*(int *)(param_1 + 0x18) + 4))(param_1 + 0x18,puVar1); + return puVar1; +} + + + +/* @0044feb4 file=? name=FUN_0044feb4 */ + +void __cdecl FUN_0044feb4(int param_1,int param_2) + +{ + int iVar1; + int local_10 [3]; + + FUN_004500c8(local_10,param_1 + 0x18); + if (param_2 == -1) { + while (iVar1 = (**(code **)(local_10[0] + 0x28))(local_10), iVar1 != 0) { + FUN_0044fcac(iVar1,0); + } + } + else { + while (iVar1 = (**(code **)(local_10[0] + 0x28))(local_10), iVar1 != 0) { + FUN_0044fcac(iVar1,1); + FUN_0044fb98(iVar1,param_2); + } + } + FUN_00450106(local_10,2); + return; +} + + + +/* @0044ff34 file=? name=FUN_0044ff34 */ + +int __cdecl FUN_0044ff34(int param_1,int param_2,int param_3) + +{ + int iVar1; + int local_10 [3]; + + FUN_004500c8(local_10,param_1 + 0x18); + do { + iVar1 = (**(code **)(local_10[0] + 0x28))(local_10); + if (iVar1 == 0) { + iVar1 = 0; + FUN_00450106(local_10,2); + return iVar1; + } + } while ((param_2 != *(int *)(iVar1 + 0xc)) || (param_3 != *(int *)(iVar1 + 0x10))); + FUN_00450106(local_10,2); + return iVar1; +} + + + +/* @0044ffa4 file=? name=FUN_0044ffa4 */ + +void __cdecl FUN_0044ffa4(int param_1,undefined4 param_2,int param_3) + +{ + int iVar1; + int *piVar2; + + piVar2 = (int *)FUN_0044ff34(param_1,*(int *)(param_3 + 0xc),*(int *)(param_3 + 0x10)); + if (piVar2 != (int *)0x0) { + iVar1 = *(int *)(param_3 + 4); + if (iVar1 == 3) { + (**(code **)(*piVar2 + 4))(piVar2,*(undefined4 *)(param_3 + 0x14)); + return; + } + if (iVar1 == 4) { + (**(code **)(*piVar2 + 8))(piVar2,*(undefined4 *)(param_3 + 0x14)); + return; + } + if (iVar1 != 5) { + return; + } + (**(code **)(*piVar2 + 0xc))(piVar2,*(undefined4 *)(param_3 + 0x14)); + } + return; +} + + + +/* @0045005e file=? name=FUN_0045005e */ + +undefined4 * __cdecl FUN_0045005e(undefined4 *param_1,undefined4 param_2) + +{ + FUN_00417be0(param_1,param_2); + *param_1 = &PTR_FUN_004f0710; + return param_1; +} + + + +/* @0045007d file=? name=FUN_0045007d */ + +void __cdecl FUN_0045007d(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f0710; + FUN_00417c0c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004500a9 file=? name=FUN_004500a9 */ + +undefined4 * __cdecl FUN_004500a9(undefined4 *param_1,int param_2) + +{ + FUN_00417d00(param_1,param_2); + *param_1 = &PTR_FUN_004f06c0; + return param_1; +} + + + +/* @004500c8 file=? name=FUN_004500c8 */ + +undefined4 * __cdecl FUN_004500c8(undefined4 *param_1,int param_2) + +{ + FUN_00417d00(param_1,param_2); + *param_1 = &PTR_FUN_004f06c0; + return param_1; +} + + + +/* @004500e7 file=? name=FUN_004500e7 */ + +undefined4 * __cdecl FUN_004500e7(undefined4 *param_1,int param_2) + +{ + FUN_00417d28(param_1,param_2); + *param_1 = &PTR_FUN_004f06c0; + return param_1; +} + + + +/* @00450106 file=? name=FUN_00450106 */ + +void __cdecl FUN_00450106(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f06c0; + FUN_00417d54(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00450134 file=? name=FUN_00450134 */ + +undefined4 * __cdecl +FUN_00450134(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4, + undefined4 param_5,int *param_6) + +{ + int *piVar1; + int iVar2; + + FUN_00428a78(param_1,param_2,param_3,param_4); + *param_1 = &PTR_FUN_004f0754; + iVar2 = *param_6; + param_1[0x419] = iVar2; + piVar1 = (int *)(iVar2 + 0xc); + *piVar1 = *piVar1 + 1; + param_1[0x418] = param_5; + *(undefined2 *)((int)param_1 + 0x105a) = 0; + *(undefined2 *)(param_1 + 0x417) = 0; + *(undefined2 *)(param_1 + 0x416) = 0x1000; + return param_1; +} + + + +/* @00450190 file=? name=FUN_00450190 */ + +void __cdecl FUN_00450190(int *param_1,byte param_2) + +{ + int *piVar1; + int *piVar2; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f0754; + piVar2 = (int *)param_1[0x419]; + piVar1 = piVar2 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(piVar2,3); + } + FUN_00428ad8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004501d4 file=munga_l4/l4net.cpp name=FUN_004501d4 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +int * __cdecl FUN_004501d4(int *param_1) + +{ + int *piVar1; + char *pcVar2; + int iVar3; + int *piVar4; + undefined4 extraout_ECX; + undefined4 extraout_ECX_00; + undefined4 extraout_ECX_01; + uint extraout_EDX; + uint uVar5; + undefined8 uVar6; + undefined4 uVar7; + uint local_408 [256]; + int *local_8; + + FUN_0041d5b4(param_1,&DAT_004f0764); + *param_1 = (int)&PTR_FUN_004f131c; + FUN_004527b8(param_1 + 0x14,param_1); + uVar5 = DAT_00523310; + param_1[0x13] = 0; + param_1[0x12] = 2; + param_1[0x10] = 0; + param_1[0x11] = 0; + param_1[0xf] = 0; + param_1[0xe] = 0; + param_1[0xb] = 0; + param_1[0xc] = 0; + param_1[0xd] = 0x7fffffff; + piVar4 = DAT_0052330c; + if (uVar5 == 0) { + DAT_004f0760 = (uint *)0x0; + local_8 = DAT_0052330c; + DAT_0052330c[3] = DAT_0052330c[3] + 1; + pcVar2 = (char *)piVar4[2]; + piVar1 = piVar4 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(piVar4,3); + } + if ((pcVar2 == (char *)0x0) || (iVar3 = FUN_004d4a78(pcVar2), iVar3 == 0)) { + FUN_004dbb24(&DAT_00524e20,s_ERROR__No_source_exists_for_egg__004f0846,(char *)0x0); + FUN_004036a0(1); + } + piVar4 = (int *)FUN_00402298(0x20); + if (piVar4 == (int *)0x0) { + piVar4 = (int *)0x0; + } + else { + piVar4 = FUN_00403e84(piVar4,pcVar2,1); + } + param_1[8] = (int)piVar4; + FUN_00404d6c((undefined4 *)param_1[8],s_last_egg_004f0868); + param_1[0x10] = 0; + local_408[0] = 0x400; + local_408[1] = 3; + local_408[2] = 1; + local_408[3] = 0xffffffff; + local_408[4] = 10; + local_408[5] = 10; + FUN_004d4918(local_408 + 6,(undefined4 *)s_local_egg_004f0871,10); + FUN_0041acbc(*(int *)(DAT_004efc94 + 0x60),2,param_1,local_408,DAT_004e17f4); + return param_1; + } + uVar7 = 0xff10; + DAT_004f0760 = (uint *)FUN_00402298(0xff10); + DAT_00522b88 = (int)DAT_004f0760 + 6; + DAT_00522b84 = (int)DAT_004f0760 + 10; + DAT_00522b8c = (short)(uVar5 & 0xffff000f); + DAT_00522b8e = (undefined2)(uVar5 >> 4); + uVar6 = FUN_0047d0b0(uVar7,uVar5 & 0xffff000f); + DAT_00522b92 = DAT_00522b8c + 6; + DAT_00522b94 = DAT_00522b8c + 10; + FUN_0047d14d(extraout_ECX,(int)((ulonglong)uVar6 >> 0x20)); + _DAT_00522b90 = (undefined2)DAT_004f0760[1]; + uVar5 = *DAT_004f0760; + uVar7 = extraout_ECX_00; + DAT_00522b98 = uVar5; + if (uVar5 != 0xb) { + FUN_004dbb24(&DAT_00524e20,s_Netnub_version_004f087b,(char *)0x0); + piVar4 = FUN_004db78c(&DAT_00524e20,uVar5); + FUN_004dbb24(piVar4,s___code_version_004f088b,(char *)0x0); + piVar4 = FUN_004db78c(piVar4,0xb); + FUN_004d9c38(piVar4); + FUN_0040385c(s_MUNGA_was_compiled_with_an_old_v_004f089b, + s_d__tesla_bt_munga_l4_L4NET_CPP_004f08ce,0x10a); + uVar7 = extraout_ECX_01; + uVar5 = extraout_EDX; + } + iVar3 = FUN_004521d0(uVar7,uVar5); + param_1[6] = iVar3; + if (iVar3 == 0) { + FUN_0040385c(s_Unable_to_initialize_the_network_004f08ed, + s_d__tesla_bt_munga_l4_L4NET_CPP_004f090e,0x113); + } + (**(code **)(*param_1 + 0x30))(param_1,0); + return param_1; +} + + + +/* @0045046c file=? name=FUN_0045046c */ + +void __cdecl FUN_0045046c(int param_1) + +{ + int iVar1; + undefined4 *puVar2; + uint *puVar3; + uint *local_c; + uint local_8; + + if (DAT_004f0760 != 0) { + *(undefined4 *)(param_1 + 0x48) = 2; + *(undefined4 *)(param_1 + 0x38) = 0; + *(undefined4 *)(param_1 + 0x40) = 1; + *(undefined4 *)(param_1 + 0x30) = 0; + *(undefined4 *)(param_1 + 0x2c) = 0; + local_8 = FUN_00452378(param_1,4,0x5dd,0,0); + puVar2 = (undefined4 *)FUN_00402298(0x1068); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar3 = (uint *)FUN_00402298(0x10); + if (puVar3 == (uint *)0x0) { + local_c = (uint *)0x0; + } + else { + local_c = FUN_00402460(puVar3,s_Console_004f092d); + } + local_c[3] = local_c[3] + 1; + puVar2 = FUN_00450134(puVar2,1,3,DAT_004e36ec,local_8,(int *)&local_c); + } + *(undefined4 **)(param_1 + 0x44) = puVar2; + puVar3 = local_c + 3; + *puVar3 = *puVar3 - 1; + if (*puVar3 == 0) { + FUN_004024d8((int *)local_c,3); + } + iVar1 = *(int *)(param_1 + 0x44); + *(undefined4 *)(iVar1 + 0x18) = 2; + FUN_00428f94(*(int *)(DAT_004efc94 + 0x2c),iVar1); + *(undefined4 *)(param_1 + 0x20) = 0; + } + return; +} + + + +/* @00450554 file=munga_l4/l4net.cpp name=FUN_00450554 */ + +void __cdecl FUN_00450554(int *param_1,int param_2) + +{ + int *piVar1; + int iVar2; + undefined4 *puVar3; + uint uVar4; + undefined4 uVar5; + uint local_54 [14]; + undefined4 *local_1c; + int *local_18; + int *local_14; + int *local_10; + uint local_c; + int local_8; + + param_1[0xb] = 0; + FUN_0044d834(local_54 + 9,param_2); + if (DAT_004f0760 == 0) { + iVar2 = (**(code **)(local_54[9] + 0x28))(local_54 + 9); + puVar3 = (undefined4 *)FUN_00402298(0x1068); + if (puVar3 == (undefined4 *)0x0) { + puVar3 = (undefined4 *)0x0; + } + else { + local_10 = *(int **)(iVar2 + 0xc); + local_10[3] = local_10[3] + 1; + puVar3 = FUN_00450134(puVar3,1,*(undefined4 *)(iVar2 + 0x10),DAT_004e36ec,0,(int *)&local_10); + } + piVar1 = local_10 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_10,3); + } + FUN_00428ee0(*(int *)(DAT_004efc94 + 0x2c),(int)puVar3); + local_54[6] = 0xc; + local_54[7] = 10; + local_54[8] = 1; + FUN_0041acbc(*(int *)(DAT_004efc94 + 0x60),2,DAT_004efc94,local_54 + 6,DAT_004e17f4); + FUN_0044d858((int *)(local_54 + 9),2); + } + else { + local_8 = 0; + param_1[0xd] = 0; + while( true ) { + iVar2 = (**(code **)(local_54[9] + 0x28))(local_54 + 9); + if (iVar2 == 0) break; + local_18 = *(int **)(iVar2 + 0xc); + local_18[3] = local_18[3] + 1; + local_18[3] = local_18[3] + 1; + local_18[3] = local_18[3] + 1; + local_14 = local_18; + uVar4 = FUN_00452244(param_1,local_18); + if (uVar4 == param_1[6]) { + puVar3 = (undefined4 *)FUN_00402298(0x1068); + if (puVar3 == (undefined4 *)0x0) { + puVar3 = (undefined4 *)0x0; + } + else { + puVar3 = FUN_00450134(puVar3,param_1[0x12],*(undefined4 *)(iVar2 + 0x10),param_1[6],0, + (int *)&local_14); + } + local_8 = 1; + FUN_00428ee0(*(int *)(DAT_004efc94 + 0x2c),(int)puVar3); + } + else { + param_1[0xd] = param_1[0xd] + 1; + if (local_8 == 0) { + local_c = FUN_00452378(param_1,3,0,0x5de,uVar4); + } + else { + local_c = FUN_00452378(param_1,4,0x5de,0,uVar4); + } + local_1c = (undefined4 *)FUN_00402298(0x1068); + if (local_1c == (undefined4 *)0x0) { + puVar3 = (undefined4 *)0x0; + } + else { + puVar3 = FUN_00450134(local_1c,param_1[0x12],*(undefined4 *)(iVar2 + 0x10),uVar4,local_c, + (int *)&local_14); + } + uVar5 = 2; + if (local_8 == 0) { + uVar5 = 1; + } + puVar3[6] = uVar5; + FUN_00428f94(*(int *)(DAT_004efc94 + 0x2c),(int)puVar3); + } + param_1[0x12] = param_1[0x12] + 1; + piVar1 = local_14 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_14,3); + } + piVar1 = local_18 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_18,3); + } + } + if (param_1[0xe] == 0) { + local_54[3] = 0xc; + local_54[4] = 4; + local_54[5] = 1; + (**(code **)(*param_1 + 0x18))(param_1,local_54 + 3,0,*(undefined4 *)(param_1[0x11] + 0xc)); + if (param_1[0xd] <= param_1[0xb]) { + local_54[0] = 0xc; + local_54[1] = 10; + local_54[2] = 1; + FUN_0041acbc(*(int *)(DAT_004efc94 + 0x60),2,DAT_004efc94,local_54,DAT_004e17f4); + } + } + else { + FUN_0040385c(s_host_is_in_an_illegal_startup_mo_004f0935, + s_d__tesla_bt_munga_l4_L4NET_CPP_004f0959,0x21c); + } + FUN_0044d858((int *)(local_54 + 9),2); + } + return; +} + + + +/* @0045084c file=? name=FUN_0045084c */ + +undefined4 __cdecl FUN_0045084c(int param_1) + +{ + int iVar1; + undefined4 *puVar2; + undefined4 uVar3; + int local_20 [7]; + + iVar1 = DAT_00523310; + if (*(int **)(param_1 + 0x20) != (int *)0x0) { + FUN_00403ecc(*(int **)(param_1 + 0x20),3); + *(undefined4 *)(param_1 + 0x20) = 0; + } + if (iVar1 == 0) { + puVar2 = (undefined4 *)FUN_00428f34(*(int *)(DAT_004efc94 + 0x2c)); + if (puVar2 != (undefined4 *)0x0) { + (**(code **)*puVar2)(puVar2,3); + } + uVar3 = 1; + } + else { + iVar1 = *(int *)(DAT_004efc94 + 0x2c); + FUN_0042939c(local_20,iVar1); + while( true ) { + puVar2 = (undefined4 *)(**(code **)(local_20[0] + 0x28))(local_20); + if (puVar2 == (undefined4 *)0x0) break; + if (puVar2[4] != 3) { + if (puVar2[6] != 0) { + FUN_004524c8(puVar2[6],puVar2[4],param_1,puVar2[0x418]); + } + FUN_00428fdc(iVar1,(int)puVar2); + if (puVar2 != (undefined4 *)0x0) { + (**(code **)*puVar2)(puVar2,3); + } + } + } + puVar2 = (undefined4 *)FUN_00428f34(iVar1); + if ((puVar2 != (undefined4 *)0x0) && (puVar2 != (undefined4 *)0x0)) { + (**(code **)*puVar2)(puVar2,3); + } + *(undefined4 *)(param_1 + 0x34) = 0x7fffffff; + *(undefined4 *)(param_1 + 0x48) = 2; + *(undefined4 *)(param_1 + 0x38) = 0; + *(undefined4 *)(param_1 + 0x40) = 1; + *(undefined4 *)(param_1 + 0x30) = 0; + *(undefined4 *)(param_1 + 0x2c) = 0; + uVar3 = 1; + FUN_004293c0(local_20,2); + } + return uVar3; +} + + + +/* @00450960 file=? name=FUN_00450960 */ + +void __cdecl FUN_00450960(int *param_1,byte param_2) + +{ + int iVar1; + undefined4 *puVar2; + int local_20 [7]; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f131c; + if (DAT_004f0760 != (int *)0x0) { + iVar1 = *(int *)(DAT_004efc94 + 0x2c); + FUN_0042939c(local_20,iVar1); + while( true ) { + puVar2 = (undefined4 *)(**(code **)(local_20[0] + 0x28))(local_20); + if (puVar2 == (undefined4 *)0x0) break; + if (puVar2[6] != 0) { + FUN_004524c8(puVar2[0x418],puVar2[6],param_1,puVar2[0x418]); + } + FUN_00428fdc(iVar1,(int)puVar2); + if (puVar2 != (undefined4 *)0x0) { + (**(code **)*puVar2)(puVar2,3); + } + } + FUN_004022d0(DAT_004f0760); + DAT_004f0760 = (int *)0x0; + FUN_004293c0(local_20,2); + } + FUN_004527f8(param_1 + 0x14,2); + FUN_0041d6a8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00450a2c file=? name=FUN_00450a2c */ + +void __cdecl FUN_00450a2c(int param_1,int param_2) + +{ + undefined4 uVar1; + int *piVar2; + + if (*(int *)(param_2 + 0xc) == -1) { + FUN_0044e9c0(DAT_004efc94,*(undefined4 *)(param_1 + 0x20)); + } + else { + if (*(int *)(param_2 + 0xc) == 0) { + uVar1 = FUN_004022b0(*(uint *)(param_2 + 0x10)); + *(undefined4 *)(param_1 + 0x1c) = uVar1; + *(undefined4 *)(param_1 + 0x24) = 0; + } + FUN_004d4918((undefined4 *)(*(int *)(param_1 + 0x1c) + *(int *)(param_1 + 0x24)), + (undefined4 *)(param_2 + 0x18),*(uint *)(param_2 + 0x14)); + *(int *)(param_1 + 0x24) = *(int *)(param_1 + 0x24) + *(int *)(param_2 + 0x14); + if (*(int *)(param_2 + 0x10) <= *(int *)(param_1 + 0x24)) { + piVar2 = (int *)FUN_00402298(0x20); + if (piVar2 == (int *)0x0) { + piVar2 = (int *)0x0; + } + else { + piVar2 = FUN_00403e84(piVar2,(char *)0x0,1); + } + *(int **)(param_1 + 0x20) = piVar2; + FUN_00404d00((int)piVar2,*(char **)(param_1 + 0x1c),*(int *)(param_1 + 0x24)); + FUN_00404d6c(*(undefined4 **)(param_1 + 0x20),s_last_egg_004f0978); + *(undefined4 *)(param_1 + 0x40) = 0; + FUN_0044e9c0(DAT_004efc94,*(undefined4 *)(param_1 + 0x20)); + FUN_004022d0(*(int **)(param_1 + 0x1c)); + } + } + return; +} + + + +/* @00450b08 file=? name=FUN_00450b08 */ + +void __cdecl FUN_00450b08(int param_1) + +{ + *(undefined4 *)(param_1 + 0x3c) = 1; + return; +} + + + +/* @00450b18 file=munga_l4/l4net.cpp name=FUN_00450b18 */ + +void __cdecl FUN_00450b18(int *param_1,int param_2) + +{ + int iVar1; + uint uVar2; + int *piVar3; + uint uVar4; + uint uVar5; + uint local_18 [3]; + int *local_c; + int *local_8; + + iVar1 = FUN_0042905c(*(int *)(DAT_004efc94 + 0x2c)); + *(undefined4 *)(iVar1 + 0x18) = 3; + iVar1 = *(int *)(iVar1 + 0x10); + if (iVar1 == 0) { + param_1[0xb] = param_1[0xb] + 1; + FUN_004dbb24(&DAT_00524e20,s_Connected_to_GameMachineHost_at_004f0981,(char *)0x0); + } + else if (iVar1 == 1) { + param_1[0xb] = param_1[0xb] + 1; + FUN_004dbb24(&DAT_00524e20,s_Connected_to_CameraShipHost_at_004f09a3,(char *)0x0); + } + else if (iVar1 == 2) { + param_1[0xb] = param_1[0xb] + 1; + FUN_004dbb24(&DAT_00524e20,s_Connected_to_MissionReviewHost_a_004f09c4,(char *)0x0); + } + else if (iVar1 == 3) { + param_1[0xc] = param_1[0xc] + 1; + FUN_004dbb24(&DAT_00524e20,s_Connected_to_ConsoleHost_at_004f09e8,(char *)0x0); + } + else { + FUN_0040385c(s_L4NetworkManager__HostConnectedM_004f0a06, + s_d__tesla_bt_munga_l4_L4NET_CPP_004f0a48,0x32d); + } + uVar5 = *(uint *)(param_2 + 0x10) & 0xff; + uVar4 = *(uint *)(param_2 + 0x10) >> 8 & 0xff; + uVar2 = *(uint *)(param_2 + 0x10) >> 0x10 & 0xff; + local_c = FUN_004db880(&DAT_00524e20,*(uint *)(param_2 + 0x10) >> 0x18); + FUN_004dbb24(local_c,&DAT_004f0a67,(char *)0x0); + local_8 = FUN_004db880(local_c,uVar2); + FUN_004dbb24(local_8,&DAT_004f0a69,(char *)0x0); + piVar3 = FUN_004db880(local_8,uVar4); + FUN_004dbb24(piVar3,&DAT_004f0a6b,(char *)0x0); + piVar3 = FUN_004db880(piVar3,uVar5); + piVar3 = FUN_004d9c38(piVar3); + FUN_004d9c70(piVar3); + if (param_1[0xd] <= param_1[0xb]) { + FUN_004dbb24(&DAT_00524e20,s_All_connections_completed__004f0a6d,(char *)0x0); + FUN_004d9c70(&DAT_00524e20); + (**(code **)(*param_1 + 0x2c))(param_1,s_MUNGA_MARKER__All_connections_co_004f0a89); + local_18[0] = 0xc; + local_18[1] = 10; + local_18[2] = 1; + FUN_0041acbc(*(int *)(DAT_004efc94 + 0x60),2,DAT_004efc94,local_18,DAT_004e17f4); + } + return; +} + + + +/* @00450cf8 file=munga_l4/l4net.cpp name=FUN_00450cf8 */ + +void __cdecl FUN_00450cf8(int param_1,int param_2) + +{ + uint uVar1; + int iVar2; + undefined4 *puVar3; + uint *puVar4; + uint uVar5; + int *piVar6; + undefined4 extraout_ECX; + uint *local_c; + uint local_8; + + puVar3 = (undefined4 *)FUN_0042905c(*(int *)(DAT_004efc94 + 0x2c)); + puVar3[6] = 0; + uVar1 = puVar3[5]; + FUN_004524c8(extraout_ECX,*(undefined4 *)(param_2 + 0x10),param_1,*(undefined4 *)(param_2 + 0x10)) + ; + iVar2 = puVar3[4]; + if (iVar2 == 0) { + *(int *)(param_1 + 0x2c) = *(int *)(param_1 + 0x2c) + -1; + FUN_004dbb24(&DAT_00524e20,s_Disconnected_from_GameMachineHos_004f0ab3,(char *)0x0); + } + else if (iVar2 == 1) { + *(int *)(param_1 + 0x2c) = *(int *)(param_1 + 0x2c) + -1; + FUN_004dbb24(&DAT_00524e20,s_Disconnected_from_CameraShipHost_004f0ada,(char *)0x0); + } + else if (iVar2 == 2) { + *(int *)(param_1 + 0x2c) = *(int *)(param_1 + 0x2c) + -1; + FUN_004dbb24(&DAT_00524e20,s_Disconnected_from_MissionReviewH_004f0b00,(char *)0x0); + } + else if (iVar2 == 3) { + *(int *)(param_1 + 0x30) = *(int *)(param_1 + 0x30) + -1; + FUN_004dbb24(&DAT_00524e20,s_Disconnected_from_ConsoleHost_at_004f0b29,(char *)0x0); + local_8 = FUN_00452378(param_1,4,0x5dd,0,0); + FUN_00428fdc(*(int *)(DAT_004efc94 + 0x2c),(int)puVar3); + if (puVar3 != (undefined4 *)0x0) { + (**(code **)*puVar3)(puVar3,3); + } + puVar3 = (undefined4 *)FUN_00402298(0x1068); + if (puVar3 == (undefined4 *)0x0) { + puVar3 = (undefined4 *)0x0; + } + else { + puVar4 = (uint *)FUN_00402298(0x10); + if (puVar4 == (uint *)0x0) { + local_c = (uint *)0x0; + } + else { + local_c = FUN_00402460(puVar4,s_Console_004f0b4c); + } + local_c[3] = local_c[3] + 1; + puVar3 = FUN_00450134(puVar3,1,3,DAT_004e36ec,local_8,(int *)&local_c); + } + puVar4 = local_c + 3; + *puVar4 = *puVar4 - 1; + if (*puVar4 == 0) { + FUN_004024d8((int *)local_c,3); + } + puVar3[6] = 2; + FUN_00428f94(*(int *)(DAT_004efc94 + 0x2c),(int)puVar3); + *(undefined4 **)(param_1 + 0x44) = puVar3; + } + else { + FUN_0040385c(s_L4NetworkManager__HostDisconnect_004f0b54, + s_d__tesla_bt_munga_l4_L4NET_CPP_004f0b99,0x3a6); + } + uVar5 = uVar1 >> 0x10 & 0xff; + piVar6 = FUN_004db880(&DAT_00524e20,uVar1 >> 0x18); + FUN_004dbb24(piVar6,&DAT_004f0bb8,(char *)0x0); + piVar6 = FUN_004db880(piVar6,uVar5); + FUN_004dbb24(piVar6,&DAT_004f0bba,(char *)0x0); + uVar5 = uVar1 & 0xff; + piVar6 = FUN_004db880(&DAT_00524e20,uVar1 >> 8 & 0xff); + FUN_004dbb24(piVar6,&DAT_004f0bbc,(char *)0x0); + piVar6 = FUN_004db880(piVar6,uVar5); + FUN_004dbb24(piVar6,&DAT_004f0bbe,(char *)0x0); + FUN_004d9c70(&DAT_00524e20); + return; +} + + + +/* @00450f48 file=? name=FUN_00450f48 */ + +void __cdecl FUN_00450f48(int param_1,uint *param_2,undefined4 param_3,undefined4 param_4) + +{ + int iVar1; + + if (*(int *)(param_1 + 0x7c) == 0) { + iVar1 = FUN_00450fa8(param_1,param_2,param_3); + if (iVar1 == 0) { + FUN_00452870(param_1 + 0x50,param_4,param_3,param_2); + } + } + else { + FUN_00452870(param_1 + 0x50,param_4,param_3,param_2); + FUN_004528dc(param_1 + 0x50); + } + return; +} + + + +/* @00450fa8 file=munga_l4/l4net.cpp name=FUN_00450fa8 */ + +undefined4 __cdecl FUN_00450fa8(int param_1,uint *param_2,undefined4 param_3) + +{ + undefined4 *puVar1; + short sVar2; + int iVar3; + int iVar4; + int iVar5; + undefined4 uVar6; + uint uVar7; + int *piVar8; + undefined4 extraout_ECX; + undefined2 extraout_var; + uint uVar9; + undefined4 local_24; + undefined4 local_20; + undefined4 local_1c; + undefined4 local_18; + undefined4 local_14; + undefined4 *local_10; + uint local_c; + undefined4 local_8; + + iVar3 = *(int *)(DAT_004efc94 + 0x2c); + iVar5 = FUN_0042905c(iVar3); + iVar4 = DAT_004f0760; + if (*(int *)(iVar5 + 0x18) == 3) { + iVar3 = *(int *)(iVar3 + 0x14); + if (iVar3 == 0) { + local_8 = 0; + } + else { + local_8 = *(undefined4 *)(iVar3 + 0xc); + } + local_c = *param_2 + 0x10; + if ((*param_2 < 8) || (0x63c < local_c)) { + uVar9 = *(uint *)(iVar5 + 0x14); + FUN_004dbb24(&DAT_00524e20,s_L4NetworkManager__SendMessageToN_004f0bc0,(char *)0x0); + uVar7 = uVar9 >> 0x10 & 0xff; + piVar8 = FUN_004db880(&DAT_00524e20,uVar9 >> 0x18); + FUN_004dbb24(piVar8,&DAT_004f0be9,(char *)0x0); + piVar8 = FUN_004db880(piVar8,uVar7); + FUN_004dbb24(piVar8,&DAT_004f0beb,(char *)0x0); + uVar7 = uVar9 & 0xff; + piVar8 = FUN_004db880(&DAT_00524e20,uVar9 >> 8 & 0xff); + FUN_004dbb24(piVar8,&DAT_004f0bed,(char *)0x0); + FUN_004db880(piVar8,uVar7); + uVar9 = local_c; + FUN_004dbb24(&DAT_00524e20,s_Requested_to_send_a_004f0bef,(char *)0x0); + piVar8 = FUN_004db78c(&DAT_00524e20,uVar9); + FUN_004dbb24(piVar8,s_size_message_004f0c04,(char *)0x0); + FUN_004d9c70(&DAT_00524e20); + FUN_0040385c(s_L4NetworkManager__SendMessageToN_004f0c13, + s_d__tesla_bt_munga_l4_L4NET_CPP_004f0c52,0x4c2); + uVar6 = 1; + } + else { + puVar1 = (undefined4 *)(DAT_004f0760 + 0x10); + *(undefined4 *)(DAT_004f0760 + 0xc) = *(undefined4 *)(iVar5 + 0x1060); + *puVar1 = param_3; + *(undefined4 *)(iVar4 + 0x14) = *(undefined4 *)(param_1 + 0x14); + *(undefined4 *)(iVar4 + 0x18) = local_8; + local_10 = (undefined4 *)FUN_00414b60(); + *(undefined4 *)(iVar4 + 0x1c) = *local_10; + FUN_004d4918((undefined4 *)(iVar4 + 0x20),param_2,*param_2); + iVar3 = DAT_004f0760; + *(short *)(DAT_004f0760 + 10) = (short)local_c + 4; + *(undefined2 *)(iVar3 + 6) = 1; + FUN_00452100(extraout_ECX,CONCAT22(extraout_var,(short)local_c + 4)); + sVar2 = *(short *)(DAT_004f0760 + 8); + if (sVar2 == -4) { + uVar6 = 0; + } + else if (sVar2 == -3) { + FUN_004dbb24(&DAT_00524e20,s_L4NetworkManager__SendMessageToN_004f0c71,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_Disconnect_detected_in_send_004f0c9a,(char *)0x0); + FUN_004d9c70(&DAT_00524e20); + local_14 = *(undefined4 *)(iVar5 + 0x1060); + local_18 = *(undefined4 *)(iVar5 + 0xc); + local_24 = 0x14; + local_20 = 6; + local_1c = 1; + piVar8 = (int *)FUN_0041d7f0(param_1,0); + (**(code **)(*piVar8 + 0x14))(piVar8,0,&local_24); + uVar6 = 1; + } + else if (sVar2 == 0) { + uVar6 = 1; + } + else { + uVar9 = *(uint *)(iVar5 + 0x14); + FUN_004dbb24(&DAT_00524e20,s_L4NetworkManager__SendMessageToN_004f0cb7,(char *)0x0); + sVar2 = *(short *)(DAT_004f0760 + 8); + FUN_004dbb24(&DAT_00524e20,s_Error_004f0ce0,(char *)0x0); + piVar8 = FUN_004db78c(&DAT_00524e20,(int)sVar2); + FUN_004dbb24(piVar8,&DAT_004f0ce7,(char *)0x0); + uVar7 = uVar9 >> 0x10 & 0xff; + piVar8 = FUN_004db880(&DAT_00524e20,uVar9 >> 0x18); + FUN_004dbb24(piVar8,&DAT_004f0cec,(char *)0x0); + piVar8 = FUN_004db880(piVar8,uVar7); + FUN_004dbb24(piVar8,&DAT_004f0cee,(char *)0x0); + uVar7 = uVar9 & 0xff; + piVar8 = FUN_004db880(&DAT_00524e20,uVar9 >> 8 & 0xff); + FUN_004dbb24(piVar8,&DAT_004f0cf0,(char *)0x0); + piVar8 = FUN_004db880(piVar8,uVar7); + FUN_004dbb24(piVar8,&DAT_004f0cf2,(char *)0x0); + FUN_004d9c70(&DAT_00524e20); + FUN_0040385c(s_NetNub_error_in_transmit_004f0cf4,s_d__tesla_bt_munga_l4_L4NET_CPP_004f0d0e, + 0x538); + uVar6 = 1; + } + } + } + else { + uVar6 = 1; + } + return uVar6; +} + + + +/* @0045134c file=? name=FUN_0045134c */ + +void __cdecl FUN_0045134c(int param_1,uint *param_2,undefined4 param_3) + +{ + int iVar1; + int local_3c [3]; + int local_30 [4]; + int local_20 [7]; + + if (*(int *)(param_1 + 0x7c) == 0) { + FUN_0040158e(local_30,0); + FUN_00451448(param_1,param_2,param_3,local_30); + FUN_004015d9(local_3c,(int)local_30); + while( true ) { + iVar1 = (**(code **)(local_3c[0] + 0x28))(local_3c); + if (iVar1 == 0) break; + FUN_00452870(param_1 + 0x50,*(undefined4 *)(iVar1 + 0xc),param_3,param_2); + } + FUN_00401636(local_3c,2); + FUN_004015ad(local_30,2); + } + else { + FUN_0042939c(local_20,*(int *)(DAT_004efc94 + 0x2c)); + while( true ) { + iVar1 = (**(code **)(local_20[0] + 0x28))(local_20); + if (iVar1 == 0) break; + if ((*(int *)(iVar1 + 0x10) != 3) && (*(int *)(iVar1 + 0x18) == 3)) { + FUN_00452870(param_1 + 0x50,*(undefined4 *)(iVar1 + 0xc),param_3,param_2); + } + } + FUN_004528dc(param_1 + 0x50); + FUN_004293c0(local_20,2); + } + return; +} + + + +/* @00451448 file=munga_l4/l4net.cpp name=FUN_00451448 */ + +void __cdecl FUN_00451448(int param_1,uint *param_2,undefined4 param_3,int *param_4) + +{ + int iVar1; + int iVar2; + undefined4 *puVar3; + uint uVar4; + int *piVar5; + undefined4 extraout_ECX; + undefined2 extraout_var; + int *piVar6; + int *piVar7; + uint uVar8; + undefined4 local_8c; + undefined4 local_88; + undefined4 local_84; + undefined4 local_80; + undefined4 local_7c; + int local_78 [10]; + int local_50 [7]; + int *local_34; + int *local_30; + int *local_2c; + int *local_28; + short local_22; + int local_20; + int local_1c; + undefined4 *local_18; + int *local_14; + int *local_10; + uint local_c; + undefined4 local_8; + + if (DAT_004f0760 != 0) { + iVar2 = *(int *)(*(int *)(DAT_004efc94 + 0x2c) + 0x14); + if (iVar2 == 0) { + local_8 = 0; + } + else { + local_8 = *(undefined4 *)(iVar2 + 0xc); + } + local_c = *param_2 + 0x10; + if ((*param_2 < 8) || (0x63c < local_c)) { + FUN_004dbb24(&DAT_00524e20,s_L4NetworkManager__SendBatchedMes_004f0d2d,(char *)0x0); + uVar8 = local_c; + FUN_004dbb24(&DAT_00524e20,s_Requested_to_send_a_004f0d5d,(char *)0x0); + local_10 = FUN_004db78c(&DAT_00524e20,uVar8); + FUN_004dbb24(local_10,s_size_message_004f0d72,(char *)0x0); + FUN_004d9c70(&DAT_00524e20); + FUN_0040385c(s_L4NetworkManager__SendBatchedMes_004f0d81, + s_d__tesla_bt_munga_l4_L4NET_CPP_004f0dc7,0x6b2); + } + else { + local_14 = (int *)(DAT_004f0760 + 0xc); + local_18 = (undefined4 *)(DAT_004f0760 + 0x38); + FUN_0042939c(local_50,*(int *)(DAT_004efc94 + 0x2c)); + local_1c = 0; + piVar6 = local_78; + piVar7 = local_14 + 1; + while (iVar2 = (**(code **)(local_50[0] + 0x28))(local_50), iVar2 != 0) { + if ((*(int *)(iVar2 + 0x10) != 3) && (*(int *)(iVar2 + 0x18) == 3)) { + if (9 < local_1c) { + FUN_004dbb24(&DAT_00524e20,s_L4NetworkManager__SendBatchedMes_004f0de6,(char *)0x0); + FUN_0040385c(s_Tried_to_send_to_too_many_destin_004f0e16, + s_d__tesla_bt_munga_l4_L4NET_CPP_004f0e3e,0x6e8); + FUN_004293c0(local_50,2); + return; + } + *piVar6 = iVar2; + *piVar7 = *(int *)(iVar2 + 0x1060); + piVar7 = piVar7 + 1; + local_1c = local_1c + 1; + piVar6 = piVar6 + 1; + } + } + *local_14 = local_1c; + if (local_1c == 0) { + FUN_004293c0(local_50,2); + } + else { + *local_18 = param_3; + local_18[1] = *(undefined4 *)(param_1 + 0x14); + local_18[2] = local_8; + puVar3 = (undefined4 *)FUN_00414b60(); + local_18[3] = *puVar3; + FUN_004d4918(local_18 + 4,param_2,*param_2); + iVar2 = DAT_004f0760; + *(short *)(DAT_004f0760 + 10) = (short)local_c + 0x2c; + *(undefined2 *)(iVar2 + 6) = 0xf; + FUN_00452100(extraout_ECX,CONCAT22(extraout_var,(short)local_c + 0x2c)); + if (*(short *)(DAT_004f0760 + 8) == 0) { + FUN_004293c0(local_50,2); + } + else { + piVar6 = (int *)(iVar2 + 0x10); + local_20 = 0; + piVar7 = local_78; + if (0 < local_1c) { + do { + iVar2 = *piVar7; + iVar1 = *piVar6; + if (iVar1 == -4) { + (**(code **)(*param_4 + 4))(param_4,iVar2); + } + else if (iVar1 == -3) { + FUN_004dbb24(&DAT_00524e20,s_L4NetworkManager__SendBatchedMes_004f0e5d,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_Disconnect_detected_in_send_004f0e8d,(char *)0x0); + FUN_004d9c70(&DAT_00524e20); + local_7c = *(undefined4 *)(iVar2 + 0x1060); + local_80 = *(undefined4 *)(iVar2 + 0xc); + local_8c = 0x14; + local_88 = 6; + local_84 = 1; + piVar5 = (int *)FUN_0041d7f0(param_1,0); + (**(code **)(*piVar5 + 0x14))(piVar5,0,&local_8c); + } + else if (iVar1 != 0) { + uVar8 = *(uint *)(iVar2 + 0x14); + FUN_004dbb24(&DAT_00524e20,s_L4NetworkManager__SendBatchedMes_004f0eaa,(char *)0x0); + local_22 = *(short *)(DAT_004f0760 + 8); + FUN_004dbb24(&DAT_00524e20,s_Error_004f0eda,(char *)0x0); + local_28 = FUN_004db78c(&DAT_00524e20,(int)local_22); + FUN_004dbb24(local_28,&DAT_004f0ee1,(char *)0x0); + uVar4 = uVar8 >> 0x10 & 0xff; + local_30 = FUN_004db880(&DAT_00524e20,uVar8 >> 0x18); + FUN_004dbb24(local_30,&DAT_004f0ee6,(char *)0x0); + local_2c = FUN_004db880(local_30,uVar4); + FUN_004dbb24(local_2c,&DAT_004f0ee8,(char *)0x0); + uVar4 = uVar8 & 0xff; + local_34 = FUN_004db880(&DAT_00524e20,uVar8 >> 8 & 0xff); + FUN_004dbb24(local_34,&DAT_004f0eea,(char *)0x0); + piVar5 = FUN_004db880(local_34,uVar4); + FUN_004dbb24(piVar5,&DAT_004f0eec,(char *)0x0); + FUN_004d9c70(&DAT_00524e20); + FUN_0040385c(s_NetNub_error_in_transmit_004f0eee, + s_d__tesla_bt_munga_l4_L4NET_CPP_004f0f08,0x771); + } + local_20 = local_20 + 1; + piVar6 = piVar6 + 1; + piVar7 = piVar7 + 1; + } while (local_20 < local_1c); + } + FUN_004293c0(local_50,2); + } + } + } + } + return; +} + + + +/* @00451894 file=? name=FUN_00451894 */ + +undefined4 __cdecl FUN_00451894(int param_1) + +{ + if (*(int *)(param_1 + 0x7c) != 0) { + FUN_004528dc(param_1 + 0x50); + return 1; + } + return 0; +} + + + +/* @004518b8 file=munga_l4/l4net.cpp name=FUN_004518b8 */ + +undefined4 __cdecl FUN_004518b8(int param_1,undefined4 *param_2) + +{ + int iVar1; + uint uVar2; + int iVar3; + int iVar4; + int *piVar5; + uint uVar6; + undefined4 *puVar7; + undefined4 uVar8; + undefined4 local_140; + undefined4 local_13c; + undefined4 local_138; + undefined4 local_134; + undefined4 local_130; + undefined4 local_12c; + undefined4 local_128; + undefined4 local_124; + undefined4 local_120; + int local_11c; + undefined4 local_118; + int local_114 [7]; + undefined4 local_f8; + undefined4 local_f4; + undefined4 local_f0; + undefined4 local_ec; + int local_e8; + undefined4 local_e4; + undefined4 local_e0; + undefined4 local_dc; + undefined4 local_d8; + undefined4 local_d4; + int local_d0; + undefined4 local_cc; + undefined4 local_c8; + undefined4 local_c4; + undefined4 local_c0; + undefined4 local_bc; + uint local_b8; + undefined4 local_b4; + int local_b0 [7]; + int aiStack_94 [10]; + int *local_6c; + undefined4 local_68; + int local_64; + undefined4 local_60; + int local_5c; + int *local_58; + undefined4 local_54; + int local_50; + undefined4 local_4c; + undefined4 local_48; + int *local_44; + undefined4 local_40; + uint local_3c; + undefined4 local_38; + int *local_34; + int *local_30; + int *local_2c; + int *local_28; + int *local_24; + int *local_20; + int *local_1c; + int local_18; + int *local_14; + undefined4 local_10; + int local_c; + undefined4 *local_8; + + local_14 = (int *)(DAT_004f0760 + 0xc); + local_18 = DAT_004f0760 + 0xc; + puVar7 = (undefined4 *)(DAT_004f0760 + 0x10); + local_8 = (undefined4 *)(DAT_004f0760 + 0x38); + FUN_0042939c(local_b0,*(int *)(DAT_004efc94 + 0x2c)); + iVar1 = FUN_00452000(param_1,param_2,local_b0); + if (iVar1 != 0) { + uVar8 = 1; + FUN_004293c0(local_b0,2); + return uVar8; + } + local_c = 0; + (**(code **)(local_b0[0] + 4))(local_b0); + while (iVar1 = (**(code **)(local_b0[0] + 0x28))(local_b0), iVar1 != 0) { + iVar3 = *(int *)(iVar1 + 0x18); + if (iVar3 != 0) { + if (iVar3 == 1) { + local_b8 = FUN_00452318(param_1,*(undefined4 *)(iVar1 + 0x1060)); + if (local_b8 != 0) { + uVar6 = *(uint *)(iVar1 + 0x14); + if (uVar6 != local_b8) { + FUN_004dbb24(&DAT_00524e20,s_Host_004f0f27,(char *)0x0); + uVar2 = uVar6 >> 0x10 & 0xff; + local_20 = FUN_004db880(&DAT_00524e20,uVar6 >> 0x18); + FUN_004dbb24(local_20,&DAT_004f0f2d,(char *)0x0); + local_1c = FUN_004db880(local_20,uVar2); + FUN_004dbb24(local_1c,&DAT_004f0f2f,(char *)0x0); + uVar2 = uVar6 & 0xff; + local_24 = FUN_004db880(&DAT_00524e20,uVar6 >> 8 & 0xff); + FUN_004dbb24(local_24,&DAT_004f0f31,(char *)0x0); + FUN_004db880(local_24,uVar2); + FUN_004dbb24(&DAT_00524e20,s_client_004f0f33,(char *)0x0); + uVar6 = local_b8 >> 0x10 & 0xff; + local_2c = FUN_004db880(&DAT_00524e20,local_b8 >> 0x18); + FUN_004dbb24(local_2c,&DAT_004f0f3c,(char *)0x0); + local_28 = FUN_004db880(local_2c,uVar6); + FUN_004dbb24(local_28,&DAT_004f0f3e,(char *)0x0); + uVar6 = local_b8 & 0xff; + local_34 = FUN_004db880(&DAT_00524e20,local_b8 >> 8 & 0xff); + FUN_004dbb24(local_34,&DAT_004f0f40,(char *)0x0); + local_30 = FUN_004db880(local_34,uVar6); + FUN_004dbb24(local_30,&DAT_004f0f42,(char *)0x0); + FUN_0040385c(s_For_an_OPEN_the_host_MUST_match_t_004f0f44, + s_d__tesla_bt_munga_l4_L4NET_CPP_004f0f91,0x7fe); + } + local_b4 = *(undefined4 *)(iVar1 + 0x1060); + local_bc = *(undefined4 *)(iVar1 + 0xc); + local_c8 = 0x18; + local_c4 = 5; + local_c0 = 1; + local_40 = local_bc; + local_3c = local_b8; + local_38 = local_b4; + local_44 = (int *)FUN_0041d7f0(param_1,0); + (**(code **)(*local_44 + 0x14))(local_44,0,&local_c8); + uVar8 = 0; + FUN_004293c0(local_b0,2); + return uVar8; + } + } + else if (iVar3 == 2) { + iVar3 = FUN_00452318(param_1,*(undefined4 *)(iVar1 + 0x1060)); + if (iVar3 != 0) { + local_48 = *(undefined4 *)(iVar1 + 0x1060); + if (iVar3 == *(int *)(iVar1 + 0x14)) { + local_cc = *(undefined4 *)(iVar1 + 0x1060); + local_d4 = *(undefined4 *)(iVar1 + 0xc); + local_e0 = 0x18; + local_dc = 5; + local_d8 = 1; + local_d0 = iVar3; + local_54 = local_d4; + local_50 = iVar3; + local_4c = local_cc; + local_58 = (int *)FUN_0041d7f0(param_1,0); + (**(code **)(*local_58 + 0x14))(local_58,0,&local_e0); + } + else if (*(int *)(iVar1 + 0x10) == 3) { + *(int *)(iVar1 + 0x14) = iVar3; + local_e4 = *(undefined4 *)(iVar1 + 0x1060); + local_ec = *(undefined4 *)(iVar1 + 0xc); + local_f8 = 0x18; + local_f4 = 5; + local_f0 = 1; + local_e8 = iVar3; + local_68 = local_ec; + local_64 = iVar3; + local_60 = local_e4; + local_5c = iVar3; + local_6c = (int *)FUN_0041d7f0(param_1,0); + (**(code **)(*local_6c + 0x14))(local_6c,0,&local_f8); + } + else { + FUN_0042939c(local_114,*(int *)(DAT_004efc94 + 0x2c)); + while (iVar4 = (**(code **)(local_114[0] + 0x28))(local_114), iVar4 != 0) { + if ((*(int *)(iVar4 + 0x18) == 2) && (iVar3 == *(int *)(iVar4 + 0x14))) { + *(undefined4 *)(iVar1 + 0x1060) = *(undefined4 *)(iVar4 + 0x1060); + *(undefined4 *)(iVar4 + 0x1060) = local_48; + local_120 = *(undefined4 *)(iVar4 + 0xc); + local_12c = 0x18; + local_128 = 5; + local_124 = 1; + local_118 = local_48; + local_11c = iVar3; + piVar5 = (int *)FUN_0041d7f0(param_1,0); + (**(code **)(*piVar5 + 0x14))(piVar5,0,&local_12c); + uVar8 = 0; + FUN_004293c0(local_114,2); + FUN_004293c0(local_b0,2); + return uVar8; + } + } + FUN_004293c0(local_114,2); + } + uVar8 = 0; + FUN_004293c0(local_b0,2); + return uVar8; + } + } + else { + if (iVar3 != 3) { + FUN_0040385c(s_Host_had_illegal_connection_stat_004f0fb0, + s_d__tesla_bt_munga_l4_L4NET_CPP_004f0fd4,0x875); + } + if (0x63f < (short)(*(short *)(iVar1 + 0x1058) - *(short *)(iVar1 + 0x105c))) { + aiStack_94[local_c] = iVar1; + local_c = local_c + 1; + *puVar7 = *(undefined4 *)(iVar1 + 0x1060); + puVar7 = puVar7 + 1; + } + } + } + } + if (local_c == 0) { + uVar8 = 0; + FUN_004293c0(local_b0,2); + return uVar8; + } + *local_14 = local_c; + *(undefined2 *)(DAT_004f0760 + 6) = 0x10; + iVar1 = DAT_004f0760; + *(undefined2 *)(DAT_004f0760 + 10) = 0x2c; + FUN_00452100(local_c,iVar1); + if (*(short *)(DAT_004f0760 + 8) == 0) { + uVar8 = 0; + FUN_004293c0(local_b0,2); + return uVar8; + } + iVar1 = 0; + if (0 < local_c) { + do { + iVar3 = aiStack_94[iVar1]; + uVar6 = *(uint *)(local_18 + 4 + iVar1 * 4); + if (uVar6 != 0) { + if (uVar6 == 0xfffffffd) { + local_130 = *(undefined4 *)(iVar3 + 0x1060); + local_134 = *(undefined4 *)(iVar3 + 0xc); + local_140 = 0x14; + local_13c = 6; + local_138 = 1; + piVar5 = (int *)FUN_0041d7f0(param_1,0); + (**(code **)(*piVar5 + 0x14))(piVar5,0,&local_140); + } + else if ((int)uVar6 < 0) { + FUN_004dbb24(&DAT_00524e20,s_MUNGA_reported_network_error_004f0ff3,(char *)0x0); + piVar5 = FUN_004db78c(&DAT_00524e20,uVar6); + FUN_004dbb24(piVar5,&DAT_004f1011,(char *)0x0); + FUN_0040385c(s_MUNGA_network_error_004f1013,s_d__tesla_bt_munga_l4_L4NET_CPP_004f1027, + 0x8e9); + } + else { + FUN_004d4918((undefined4 *)((uint)*(ushort *)(iVar3 + 0x105c) + iVar3 + 0x58),local_8, + uVar6); + *(short *)(iVar3 + 0x105c) = *(short *)(iVar3 + 0x105c) + (short)uVar6; + local_8 = (undefined4 *)((int)local_8 + uVar6); + } + } + iVar1 = iVar1 + 1; + } while (iVar1 < local_c); + } + uVar8 = FUN_00452000(param_1,param_2,local_b0); + local_10 = uVar8; + FUN_004293c0(local_b0,2); + return uVar8; +} + + + +/* @00452000 file=? name=FUN_00452000 */ + +undefined4 __cdecl FUN_00452000(int param_1,undefined4 *param_2,int *param_3) + +{ + short sVar1; + int iVar2; + short sVar3; + short local_6; + + sVar1 = (**(code **)(*param_3 + 0x14))(param_3); + local_6 = 0; + if (0 < sVar1) { + do { + *(int *)(param_1 + 0x4c) = *(int *)(param_1 + 0x4c) + 1; + iVar2 = (**(code **)(*param_3 + 0x14))(param_3); + if (iVar2 <= *(int *)(param_1 + 0x4c)) { + *(undefined4 *)(param_1 + 0x4c) = 0; + } + iVar2 = (**(code **)(*param_3 + 0x34))(param_3,*(undefined4 *)(param_1 + 0x4c)); + if (iVar2 == 0) { + return 0; + } + if ((((*(int *)(param_1 + 0x40) != 1) || (*(int *)(iVar2 + 0x10) == 3)) && + (0x1b < *(ushort *)(iVar2 + 0x105c))) && + (sVar3 = *(short *)(iVar2 + 0x68) + 0x10, + (int)sVar3 <= (int)(uint)*(ushort *)(iVar2 + 0x105c))) { + FUN_004d4918(param_2,(undefined4 *)(iVar2 + 0x58),(int)sVar3); + sVar1 = *(short *)(iVar2 + 0x105c) - sVar3; + if (sVar1 != 0) { + FUN_004d493c((undefined4 *)(iVar2 + 0x58),(undefined4 *)(sVar3 + iVar2 + 0x58),(int)sVar1) + ; + } + *(short *)(iVar2 + 0x105c) = *(short *)(iVar2 + 0x105c) - sVar3; + return 1; + } + local_6 = local_6 + 1; + } while (local_6 < sVar1); + } + return 0; +} + + + +/* @004520f8 file=? name=FUN_004520f8 */ + +void FUN_004520f8(void) + +{ + return; +} + + + +/* @00452100 file=munga_l4/l4net.cpp name=FUN_00452100 */ + +undefined8 __fastcall FUN_00452100(undefined4 param_1,undefined4 param_2) + +{ + uint uVar1; + int *piVar2; + undefined4 extraout_ECX; + undefined4 uVar3; + undefined4 extraout_EDX; + undefined4 extraout_EDX_00; + undefined4 uVar4; + undefined8 uVar5; + undefined1 auStack_64 [12]; + undefined4 local_58; + undefined2 local_44; + undefined2 local_3e; + undefined2 local_3c; + undefined2 local_36; + undefined2 local_34; + uint local_30; + undefined1 local_2c; + undefined1 local_2b; + undefined4 local_28; + undefined1 *local_1c; + int local_18; + undefined2 local_10 [6]; + + FUN_0047d10f(param_1,param_2); + local_30 = 0x300; + local_2c = DAT_00522b90; + local_2b = 0; + local_28 = 0; + local_1c = auStack_64; + FUN_004d46fc(local_10); + local_58 = 0; + local_3e = 0; + local_3c = 0; + local_44 = 0; + local_34 = 0; + local_36 = 0; + FUN_004d461f(0x31,(int)&local_30,&local_30,local_10); + uVar1 = local_30; + uVar3 = 0; + uVar4 = extraout_EDX; + if (local_18 != 0) { + FUN_004dbb24(&DAT_00524e20,s_int386x___ERROR__004f1046,(char *)0x0); + piVar2 = FUN_004db880(&DAT_00524e20,uVar1); + FUN_004d9c38(piVar2); + FUN_0040385c(s_Error_calling_netnub_004f1057,s_d__tesla_bt_munga_l4_L4NET_CPP_004f106d,0x9a6); + uVar3 = extraout_ECX; + uVar4 = extraout_EDX_00; + } + uVar5 = FUN_0047d0ce(uVar3,uVar4); + return uVar5; +} + + + +/* @004521d0 file=? name=FUN_004521d0 */ + +undefined4 __fastcall FUN_004521d0(undefined4 param_1,undefined4 param_2) + +{ + short sVar1; + int iVar2; + int *piVar3; + + iVar2 = DAT_004f0760; + *(undefined2 *)(DAT_004f0760 + 6) = 0; + *(undefined2 *)(iVar2 + 10) = 0; + FUN_00452100(param_1,param_2); + sVar1 = *(short *)(DAT_004f0760 + 8); + if (sVar1 == 0) { + return *(undefined4 *)(DAT_004f0760 + 0xc); + } + FUN_004dbb24(&DAT_00524e20,s_Status_not_ok__it_s_004f108c,(char *)0x0); + piVar3 = FUN_004db78c(&DAT_00524e20,(int)sVar1); + FUN_004dbb24(piVar3,&DAT_004f10a1,(char *)0x0); + return 0; +} + + + +/* @00452244 file=munga_l4/l4net.cpp name=FUN_00452244 */ + +undefined4 __cdecl FUN_00452244(undefined4 param_1,int *param_2) + +{ + int *piVar1; + char cVar2; + int iVar3; + uint uVar4; + uint uVar5; + char *pcVar6; + char *pcVar7; + undefined4 uVar8; + + iVar3 = DAT_004f0760; + *(undefined2 *)(DAT_004f0760 + 6) = 6; + *(short *)(iVar3 + 10) = (short)param_2[1]; + uVar4 = 0xffffffff; + pcVar6 = (char *)param_2[2]; + do { + pcVar7 = pcVar6; + if (uVar4 == 0) break; + uVar4 = uVar4 - 1; + pcVar7 = pcVar6 + 1; + cVar2 = *pcVar6; + pcVar6 = pcVar7; + } while (cVar2 != '\0'); + uVar4 = ~uVar4; + pcVar6 = pcVar7 + -uVar4; + pcVar7 = (char *)(iVar3 + 0xc); + for (uVar5 = uVar4 >> 2; uVar5 != 0; uVar5 = uVar5 - 1) { + *(undefined4 *)pcVar7 = *(undefined4 *)pcVar6; + pcVar6 = pcVar6 + 4; + pcVar7 = pcVar7 + 4; + } + for (uVar5 = uVar4 & 3; uVar5 != 0; uVar5 = uVar5 - 1) { + *pcVar7 = *pcVar6; + pcVar6 = pcVar6 + 1; + pcVar7 = pcVar7 + 1; + } + FUN_00452100(0,uVar4); + if (*(short *)(DAT_004f0760 + 8) != 0) { + FUN_004dbb24(&DAT_00524e20,s_Couldn_t_resolve_004f10a3,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,(char *)param_2[2],(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_to_a_net_address_004f10b5,(char *)0x0); + FUN_0040385c(s_unresolvable_network_address_004f10c8,s_d__tesla_bt_munga_l4_L4NET_CPP_004f10e6, + 0x9ee); + } + uVar8 = *(undefined4 *)(DAT_004f0760 + 0xc); + piVar1 = param_2 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(param_2,3); + } + return uVar8; +} + + + +/* @00452318 file=munga_l4/l4net.cpp name=FUN_00452318 */ + +undefined4 __cdecl FUN_00452318(undefined4 param_1,undefined4 param_2) + +{ + int iVar1; + undefined4 *puVar2; + + iVar1 = DAT_004f0760; + puVar2 = (undefined4 *)(DAT_004f0760 + 0xc); + *(undefined2 *)(DAT_004f0760 + 6) = 7; + *(undefined2 *)(iVar1 + 10) = 4; + *puVar2 = param_2; + FUN_00452100(puVar2,puVar2); + if (*(short *)(DAT_004f0760 + 8) == 0) { + return 0; + } + if (*(short *)(DAT_004f0760 + 8) == 2) { + return *puVar2; + } + FUN_0040385c(s_CheckSocket_returned_an_illegal_s_004f1105, + s_d__tesla_bt_munga_l4_L4NET_CPP_004f1132,0xa17); + return 0; +} + + + +/* @00452378 file=munga_l4/l4net.cpp name=FUN_00452378 */ + +uint __cdecl +FUN_00452378(undefined4 param_1,undefined2 param_2,undefined2 param_3,undefined2 param_4, + uint param_5) + +{ + int iVar1; + int *piVar2; + uint *puVar3; + uint uVar4; + + iVar1 = DAT_004f0760; + puVar3 = (uint *)(DAT_004f0760 + 0xc); + *(undefined2 *)(DAT_004f0760 + 6) = param_2; + *(undefined2 *)(iVar1 + 10) = 0xc; + *(undefined2 *)puVar3 = param_3; + *(undefined2 *)(iVar1 + 0xe) = param_4; + *(uint *)(iVar1 + 0x10) = param_5; + *(undefined4 *)(iVar1 + 0x14) = 0; + FUN_00452100(0,CONCAT22((short)((uint)iVar1 >> 0x10),param_4)); + if (*(short *)(DAT_004f0760 + 8) == -1) { + uVar4 = *puVar3; + FUN_004dbb24(&DAT_00524e20,s_NetNub_TCP_Open_Listen_error___004f1151,(char *)0x0); + piVar2 = FUN_004db880(&DAT_00524e20,uVar4); + FUN_004dbb24(piVar2,s_listening_for_004f1170,(char *)0x0); + piVar2 = FUN_004db78c(&DAT_00524e20,(int)param_5 >> 0x18 & 0xff); + FUN_004dbb24(piVar2,&DAT_004f1180,(char *)0x0); + piVar2 = FUN_004db78c(piVar2,(int)param_5 >> 0x10 & 0xff); + FUN_004dbb24(piVar2,&DAT_004f1182,(char *)0x0); + piVar2 = FUN_004db78c(&DAT_00524e20,(int)param_5 >> 8 & 0xff); + FUN_004dbb24(piVar2,&DAT_004f1184,(char *)0x0); + piVar2 = FUN_004db78c(piVar2,param_5 & 0xff); + FUN_004dbb24(piVar2,&DAT_004f1186,(char *)0x0); + FUN_0040385c(s_Netnub_error_during_open_listen_004f1188, + s_d__tesla_bt_munga_l4_L4NET_CPP_004f11a9,0xa46); + } + return *puVar3; +} + + + +/* @004524c8 file=? name=FUN_004524c8 */ + +undefined4 __fastcall +FUN_004524c8(undefined4 param_1,undefined4 param_2,undefined4 param_3,uint param_4) + +{ + short sVar1; + int iVar2; + int *piVar3; + undefined4 uVar4; + undefined8 uVar5; + + iVar2 = DAT_004f0760; + *(undefined2 *)(DAT_004f0760 + 6) = 5; + *(undefined2 *)(iVar2 + 10) = 4; + *(uint *)(iVar2 + 0xc) = param_4; + uVar5 = FUN_00452100(param_1,param_2); + uVar4 = (undefined4)uVar5; + if (*(short *)(DAT_004f0760 + 8) != 0) { + sVar1 = *(short *)(DAT_004f0760 + 8); + FUN_004dbb24(&DAT_00524e20,s_NetNub_close_error_004f11c8,(char *)0x0); + piVar3 = FUN_004db78c(&DAT_00524e20,(int)sVar1); + FUN_004dbb24(piVar3,s_on_stream_004f11dc,(char *)0x0); + piVar3 = FUN_004db880(piVar3,param_4); + uVar4 = FUN_004dbb24(piVar3,&DAT_004f11e8,(char *)0x0); + } + return uVar4; +} + + + +/* @0045255c file=? name=FUN_0045255c */ + +undefined4 __thiscall FUN_0045255c(void *this,undefined4 param_1,int param_2) + +{ + int iVar1; + undefined4 uVar2; + undefined8 uVar3; + + uVar2 = 0; + if (DAT_004f0760 != 0) { + if (param_2 == 0) { + *(undefined4 *)(DAT_004f0760 + 0xc) = 1; + } + else if (param_2 + -1 == 0) { + this = (void *)0x0; + *(undefined4 *)(DAT_004f0760 + 0xc) = 0; + } + iVar1 = DAT_004f0760; + *(undefined2 *)(DAT_004f0760 + 6) = 0x11; + *(undefined2 *)(iVar1 + 10) = 4; + uVar3 = FUN_00452100(this,param_2 + -1); + uVar2 = (undefined4)uVar3; + if (*(short *)(DAT_004f0760 + 8) != 0) { + uVar2 = FUN_004dbb24(&DAT_00524e20,s_NetNub_mode_call_failed_004f11ea,(char *)0x0); + } + } + return uVar2; +} + + + +/* @004525bc file=? name=FUN_004525bc */ + +undefined4 __cdecl FUN_004525bc(undefined4 param_1,char *param_2) + +{ + int iVar1; + int iVar2; + undefined4 uVar3; + undefined4 extraout_ECX; + undefined4 extraout_EDX; + undefined8 uVar4; + + uVar3 = 0; + if (DAT_004f0760 != 0) { + iVar2 = FUN_004d4a78(param_2); + FUN_004d4918((undefined4 *)(DAT_004f0760 + 0xc),(undefined4 *)param_2,iVar2 + 1U); + iVar1 = DAT_004f0760; + *(undefined2 *)(DAT_004f0760 + 6) = 0xb; + *(short *)(iVar1 + 10) = (short)(iVar2 + 1U); + uVar4 = FUN_00452100(extraout_ECX,extraout_EDX); + uVar3 = (undefined4)uVar4; + if (*(short *)(DAT_004f0760 + 8) != 0) { + uVar3 = FUN_004dbb24(&DAT_00524e20,s_NetNub_marker_text_call_failed_004f1203,(char *)0x0); + } + } + return uVar3; +} + + + +/* @00452624 file=? name=FUN_00452624 */ + +void __cdecl FUN_00452624(int param_1) + +{ + FUN_0041a1a4(**(int **)(param_1 + 0xc),0x4f076c); + return; +} + + + +/* @00452640 file=? name=FUN_00452640 */ + +undefined4 * __cdecl FUN_00452640(undefined4 *param_1,undefined4 param_2,uint *param_3) + +{ + undefined4 *puVar1; + + FUN_00415e90(param_1,1); + *param_1 = &PTR_FUN_004f1318; + param_1[3] = param_2; + puVar1 = (undefined4 *)FUN_004022b0(*param_3); + param_1[4] = puVar1; + FUN_004d4918(puVar1,param_3,*param_3); + return param_1; +} + + + +/* @00452688 file=? name=FUN_00452688 */ + +void __cdecl FUN_00452688(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f1318; + FUN_004022d0((int *)param_1[4]); + FUN_00415ed8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004526c0 file=? name=FUN_004526c0 */ + +undefined4 FUN_004526c0(void) + +{ + return 1; +} + + + +/* @004526cc file=? name=FUN_004526cc */ + +undefined4 * __cdecl FUN_004526cc(undefined4 *param_1,undefined4 param_2) + +{ + FUN_004178cc(param_1,2); + *param_1 = &PTR_FUN_004f130c; + FUN_00452a1d(param_1 + 4,0); + param_1[3] = param_2; + return param_1; +} + + + +/* @00452700 file=? name=FUN_00452700 */ + +void __cdecl FUN_00452700(int *param_1,byte param_2) + +{ + void *this; + int local_10 [3]; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f130c; + FUN_00452b12(local_10,(int)(param_1 + 4)); + FUN_00417858(this,local_10,1); + FUN_00452b6f(local_10,2); + FUN_00452a3c(param_1 + 4,2); + FUN_0041790c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0045276c file=? name=FUN_0045276c */ + +undefined4 FUN_0045276c(void) + +{ + return 1; +} + + + +/* @00452778 file=? name=FUN_00452778 */ + +void __cdecl FUN_00452778(int param_1,undefined4 param_2,uint *param_3) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00402298(0x14); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_00452640(puVar1,param_2,param_3); + } + (**(code **)(*(int *)(param_1 + 0x10) + 4))(param_1 + 0x10,puVar1); + return; +} + + + +/* @004527b8 file=? name=FUN_004527b8 */ + +undefined4 * __cdecl FUN_004527b8(undefined4 *param_1,undefined4 param_2) + +{ + FUN_004178cc(param_1,2); + *param_1 = &PTR_FUN_004f1300; + FUN_00452a68(param_1 + 4,0,1); + param_1[3] = param_2; + param_1[10] = 0; + param_1[0xb] = 0; + return param_1; +} + + + +/* @004527f8 file=? name=FUN_004527f8 */ + +void __cdecl FUN_004527f8(int *param_1,byte param_2) + +{ + void *this; + int local_20 [7]; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f1300; + FUN_00452b9b(local_20,(int)(param_1 + 4)); + FUN_00417858(this,local_20,1); + FUN_00452bd9(local_20,2); + FUN_00452a8b(param_1 + 4,2); + FUN_0041790c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00452864 file=? name=FUN_00452864 */ + +undefined4 FUN_00452864(void) + +{ + return 1; +} + + + +/* @00452870 file=? name=FUN_00452870 */ + +void __cdecl FUN_00452870(int param_1,undefined4 param_2,undefined4 param_3,uint *param_4) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)(**(code **)(*(int *)(param_1 + 0x10) + 0xc))(param_1 + 0x10,¶m_2); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)FUN_00402298(0x20); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_004526cc(puVar1,param_2); + } + (**(code **)(*(int *)(param_1 + 0x10) + 8))(param_1 + 0x10,puVar1,¶m_2); + } + FUN_00452778((int)puVar1,param_3,param_4); + *(int *)(param_1 + 0x2c) = *(int *)(param_1 + 0x2c) + 1; + return; +} + + + +/* @004528dc file=? name=FUN_004528dc */ + +void __cdecl FUN_004528dc(int param_1) + +{ + int iVar1; + undefined4 *puVar2; + int local_2c [3]; + int local_20 [7]; + + FUN_00452b9b(local_20,param_1 + 0x10); + do { + iVar1 = (**(code **)(local_20[0] + 0x14))(local_20); + *(int *)(param_1 + 0x28) = *(int *)(param_1 + 0x28) + 1; + if (iVar1 <= *(int *)(param_1 + 0x28)) { + *(undefined4 *)(param_1 + 0x28) = 0; + } + iVar1 = (**(code **)(local_20[0] + 0x34))(local_20,*(undefined4 *)(param_1 + 0x28)); + FUN_00452b12(local_2c,iVar1 + 0x10); + puVar2 = (undefined4 *)(**(code **)(local_2c[0] + 0x30))(local_2c); + FUN_00452b6f(local_2c,2); + } while (puVar2 == (undefined4 *)0x0); + iVar1 = FUN_00450fa8(*(int *)(param_1 + 0xc),(uint *)puVar2[4],puVar2[3]); + if (iVar1 != 0) { + if (puVar2 != (undefined4 *)0x0) { + (**(code **)*puVar2)(puVar2,3); + } + *(int *)(param_1 + 0x2c) = *(int *)(param_1 + 0x2c) + -1; + } + FUN_00452bd9(local_20,2); + return; +} + + + +/* @00452a1d file=? name=FUN_00452a1d */ + +undefined4 * __cdecl FUN_00452a1d(undefined4 *param_1,undefined4 param_2) + +{ + FUN_00417be0(param_1,param_2); + *param_1 = &PTR_FUN_004f12f8; + return param_1; +} + + + +/* @00452a3c file=? name=FUN_00452a3c */ + +void __cdecl FUN_00452a3c(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f12f8; + FUN_00417c0c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00452a68 file=? name=FUN_00452a68 */ + +undefined4 * __cdecl FUN_00452a68(undefined4 *param_1,undefined4 param_2,undefined4 param_3) + +{ + FUN_00419184(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004f12dc; + return param_1; +} + + + +/* @00452a8b file=? name=FUN_00452a8b */ + +void __cdecl FUN_00452a8b(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f12dc; + FUN_004191b4(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00452ab7 file=? name=FUN_00452ab7 */ + +undefined4 __cdecl FUN_00452ab7(undefined4 param_1,int param_2,int param_3) + +{ + undefined4 uVar1; + + if (*(int *)(param_3 + 0x14) == *(int *)(param_2 + 0x14)) { + uVar1 = 0; + } + else { + uVar1 = 1; + if (*(int *)(param_2 + 0x14) <= *(int *)(param_3 + 0x14)) { + uVar1 = 0xffffffff; + } + } + return uVar1; +} + + + +/* @00452ae6 file=? name=FUN_00452ae6 */ + +undefined4 __cdecl FUN_00452ae6(undefined4 param_1,int *param_2,int param_3) + +{ + undefined4 uVar1; + + if (*(int *)(param_3 + 0x14) == *param_2) { + uVar1 = 0; + } + else { + uVar1 = 1; + if (*param_2 <= *(int *)(param_3 + 0x14)) { + uVar1 = 0xffffffff; + } + } + return uVar1; +} + + + +/* @00452b12 file=? name=FUN_00452b12 */ + +undefined4 * __cdecl FUN_00452b12(undefined4 *param_1,int param_2) + +{ + FUN_00417d00(param_1,param_2); + *param_1 = &PTR_FUN_004f128c; + return param_1; +} + + + +/* @00452b31 file=? name=FUN_00452b31 */ + +undefined4 * __cdecl FUN_00452b31(undefined4 *param_1,int param_2) + +{ + FUN_00417d00(param_1,param_2); + *param_1 = &PTR_FUN_004f128c; + return param_1; +} + + + +/* @00452b50 file=? name=FUN_00452b50 */ + +undefined4 * __cdecl FUN_00452b50(undefined4 *param_1,int param_2) + +{ + FUN_00417d28(param_1,param_2); + *param_1 = &PTR_FUN_004f128c; + return param_1; +} + + + +/* @00452b6f file=? name=FUN_00452b6f */ + +void __cdecl FUN_00452b6f(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f128c; + FUN_00417d54(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00452b9b file=? name=FUN_00452b9b */ + +undefined4 * __cdecl FUN_00452b9b(undefined4 *param_1,int param_2) + +{ + FUN_004194d8(param_1,param_2); + *param_1 = &PTR_FUN_004f1230; + return param_1; +} + + + +/* @00452bba file=? name=FUN_00452bba */ + +undefined4 * __cdecl FUN_00452bba(undefined4 *param_1,int param_2) + +{ + FUN_004194d8(param_1,param_2); + *param_1 = &PTR_FUN_004f1230; + return param_1; +} + + + +/* @00452bd9 file=? name=FUN_00452bd9 */ + +void __cdecl FUN_00452bd9(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f1230; + FUN_0041951c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00452c05 file=? name=FUN_00452c05 */ + +undefined4 * __cdecl FUN_00452c05(undefined4 param_1,int param_2,undefined4 *param_3) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_0041d485(); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_0041d42e(puVar1,param_1,param_2,param_3); + } + return puVar1; +} + + + +/* @00452c38 file=? name=FUN_00452c38 */ + +void __cdecl FUN_00452c38(uint param_1) + +{ + FUN_00401cf0(DAT_004f1ab0,param_1); + return; +} + + + +/* @00452c50 file=? name=FUN_00452c50 */ + +uint * __cdecl FUN_00452c50(int param_1,int param_2) + +{ + uint *puVar1; + + puVar1 = FUN_00401cf0(DAT_004f1ab0,param_1 * param_2); + FUN_004d4988(puVar1,0,param_2 * param_1); + return puVar1; +} + + + +/* @00452c88 file=? name=FUN_00452c88 */ + +void __cdecl FUN_00452c88(int *param_1) + +{ + FUN_00401ec8(DAT_004f1ab0,param_1); + return; +} + + + +/* @00452ca0 file=? name=FUN_00452ca0 */ + +void FUN_00452ca0(void) + +{ + FUN_00401f30(DAT_004f1ab0); + return; +} + + + +/* @00452cad file=? name=FUN_00452cad */ + +undefined4 * __cdecl FUN_00452cad(undefined4 *param_1,undefined4 param_2) + +{ + FUN_00417be0(param_1,param_2); + *param_1 = &PTR_FUN_004f1358; + return param_1; +} + + + +/* @00452ccc file=? name=FUN_00452ccc */ + +void __cdecl FUN_00452ccc(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f1358; + FUN_00417c0c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00452cf8 file=? name=FUN_00452cf8 */ + +undefined4 * __cdecl FUN_00452cf8(undefined4 *param_1,int param_2,int param_3) + +{ + undefined4 uVar1; + + FUN_0041b838(param_1,2,&DAT_004e32ac); + *param_1 = &PTR_FUN_004f1a90; + uVar1 = FUN_00489708(); + param_1[4] = uVar1; + uVar1 = FUN_00489724(); + param_1[5] = uVar1; + FUN_0048a714(param_1[4],param_3); + FUN_0048ab0c(param_1[5],param_2); + FUN_0048ad48(param_1[5],1); + FUN_0048add4(param_1[5],0); + FUN_0048ac30(param_1[5],1); + FUN_00489e04(param_1[4],param_1[5]); + FUN_00489ba8(param_1[4]); + FUN_0048d5d4((undefined4 *)param_1[5]); + FUN_0048d3e8((undefined4 *)param_1[4]); + return param_1; +} + + + +/* @00452da4 file=? name=FUN_00452da4 */ + +void __cdecl FUN_00452da4(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f1a90; + FUN_0048a130(param_1[4],param_1[5]); + FUN_00489e58(param_1[4]); + FUN_004898f8((int *)param_1[5]); + FUN_004898b8((int *)param_1[4]); + param_1[4] = 0; + FUN_0041b898(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00452e04 file=? name=FUN_00452e04 */ + +undefined4 __cdecl FUN_00452e04(int param_1) + +{ + FUN_0041b8e0(param_1); + return 1; +} + + + +/* @00452e18 file=? name=FUN_00452e18 */ + +undefined4 * __cdecl +FUN_00452e18(undefined4 *param_1,undefined4 param_2,undefined4 param_3,int param_4,int param_5) + +{ + undefined4 *puVar1; + + FUN_004530ec(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004f1a78; + FUN_0040aadc(param_1 + 8); + puVar1 = FUN_00460c04(*(int *)(DAT_004efc94 + 0x48),param_4,param_5); + param_1[7] = puVar1; + puVar1 = (undefined4 *)FUN_0048a630(puVar1[4]); + FUN_0040beb0(puVar1,(undefined4 *)(param_1[5] + 0xd0)); + FUN_0045fbf4(param_1[4],*(undefined4 *)(param_1[7] + 0x10)); + return param_1; +} + + + +/* @00452e98 file=? name=FUN_00452e98 */ + +void __cdecl FUN_00452e98(int *param_1,byte param_2) + +{ + undefined4 *puVar1; + undefined4 local_10; + undefined4 local_c; + undefined4 local_8; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f1a78; + local_10 = 0; + local_c = 0x461c4000; + local_8 = 0; + puVar1 = (undefined4 *)FUN_0048a630(*(int *)(param_1[7] + 0x10)); + FUN_0040c18c(puVar1,&local_10); + FUN_0045fbf4(param_1[4],*(undefined4 *)(param_1[7] + 0x10)); + FUN_00460cb0(*(int *)(DAT_004efc94 + 0x48),param_1[7]); + FUN_00453198(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00452f1c file=? name=FUN_00452f1c */ + +undefined4 __cdecl FUN_00452f1c(int param_1) + +{ + FUN_004531c4(param_1); + return 1; +} + + + +/* @00452f30 file=? name=FUN_00452f30 */ + +void __cdecl FUN_00452f30(int param_1) + +{ + float *pfVar1; + int iVar2; + undefined4 *puVar3; + + pfVar1 = (float *)(param_1 + 0x20); + iVar2 = FUN_0040aff0(pfVar1,(float *)(*(int *)(param_1 + 0x14) + 0xd0)); + if (iVar2 != 0) { + FUN_0040ab28(pfVar1,(undefined4 *)(*(int *)(param_1 + 0x14) + 0xd0)); + puVar3 = (undefined4 *)FUN_0048a630(*(int *)(*(int *)(param_1 + 0x1c) + 0x10)); + FUN_0040beb0(puVar3,pfVar1); + FUN_0045fbf4(*(int *)(param_1 + 0x10),*(undefined4 *)(*(int *)(param_1 + 0x1c) + 0x10)); + } + return; +} + + + +/* @00452f98 file=? name=FUN_00452f98 */ + +undefined4 * __cdecl FUN_00452f98(undefined4 *param_1,undefined4 param_2,int *param_3,uint param_4) + +{ + int *piVar1; + int iVar2; + undefined4 uVar3; + int *local_c; + undefined4 *local_8; + + FUN_004530ec(param_1,param_2,0); + *param_1 = &PTR_FUN_004f1a60; + local_8 = (undefined4 *)FUN_00402298(0x10); + if (local_8 == (undefined4 *)0x0) { + iVar2 = 0; + } + else { + iVar2 = FUN_004023f4(local_8); + } + param_1[7] = iVar2; + piVar1 = (int *)(param_1[7] + 0xc); + *piVar1 = *piVar1 + 1; + if (param_4 == 1) { + uVar3 = FUN_00460b04(*(int *)(DAT_004efc94 + 0x48),param_3); + param_1[9] = uVar3; + if (param_1[9] == 0) { + iVar2 = FUN_00498448(*(char **)(*param_3 + 8),1); + param_1[9] = iVar2; + } + } + else { + iVar2 = FUN_00498448(*(char **)(*param_3 + 8),param_4); + param_1[9] = iVar2; + } + param_1[8] = param_4; + FUN_00402a4c((int *)&local_c,param_1 + 7,param_3); + piVar1 = local_c + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_c,3); + } + return param_1; +} + + + +/* @00453068 file=? name=FUN_00453068 */ + +void __cdecl FUN_00453068(int *param_1,byte param_2) + +{ + int *piVar1; + int *piVar2; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f1a60; + if (param_1[8] == 1) { + FUN_00460b48(*(int *)(DAT_004efc94 + 0x48),param_1 + 7,param_1[9]); + } + param_1[9] = 0; + piVar2 = (int *)param_1[7]; + piVar1 = piVar2 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(piVar2,3); + } + FUN_00453198(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004530d0 file=? name=FUN_004530d0 */ + +undefined4 __cdecl FUN_004530d0(int param_1) + +{ + FUN_004531c4(param_1); + return 1; +} + + + +/* @004530e4 file=? name=FUN_004530e4 */ + +void FUN_004530e4(void) + +{ + return; +} + + + +/* @004530ec file=munga_l4/l4vidrnd.cpp name=FUN_004530ec */ + +undefined4 * __cdecl FUN_004530ec(undefined4 *param_1,undefined4 param_2,undefined4 param_3) + +{ + int iVar1; + + FUN_0041b838(param_1,2,&DAT_004e32ac); + *param_1 = &PTR_FUN_004f1a48; + param_1[5] = param_2; + param_1[6] = param_3; + param_1[4] = *(undefined4 *)(DAT_004efc94 + 0x48); + iVar1 = param_1[6]; + if (iVar1 == 0) { + FUN_00420674(param_1[5],param_1); + } + else if (iVar1 == 1) { + FUN_00420674(param_1[5],param_1); + FUN_0045a744(param_1[4],param_1); + } + else if (iVar1 == 2) { + FUN_00420674(param_1[5],param_1); + } + else if (iVar1 == 3) { + FUN_00420674(param_1[5],param_1); + } + else { + FUN_0040385c(s_VideoRenderable__Illegal_executi_004f1360, + s_d__tesla_bt_munga_l4_L4VIDRND_CP_004f1389,0x1b4); + } + return param_1; +} + + + +/* @00453198 file=? name=FUN_00453198 */ + +void __cdecl FUN_00453198(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f1a48; + FUN_0041b898(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004531c4 file=? name=FUN_004531c4 */ + +undefined4 __cdecl FUN_004531c4(int param_1) + +{ + FUN_0041b8e0(param_1); + return 1; +} + + + +/* @004531d8 file=? name=FUN_004531d8 */ + +void FUN_004531d8(void) + +{ + return; +} + + + +/* @004531e0 file=? name=FUN_004531e0 */ + +undefined4 * __cdecl +FUN_004531e0(undefined4 *param_1,undefined4 param_2,undefined4 param_3,int param_4, + undefined4 param_5,undefined4 *param_6,undefined4 param_7,undefined4 param_8, + undefined4 param_9,undefined4 param_10,undefined4 param_11,undefined4 param_12, + undefined4 param_13) + +{ + undefined4 *puVar1; + undefined4 uVar2; + undefined4 *puVar3; + + FUN_004530ec(param_1,param_2,param_3); + puVar1 = param_1 + 0xb; + *param_1 = &PTR_FUN_004f1a30; + FUN_0040aadc(puVar1); + param_1[10] = param_4; + param_1[9] = param_5; + FUN_0040ab28(puVar1,param_6); + uVar2 = FUN_00489708(); + param_1[8] = uVar2; + puVar3 = FUN_0048973c(); + param_1[7] = puVar3; + FUN_0048b1e0((int)puVar3,param_12); + FUN_0048b26c(param_1[7],param_7,param_8,param_9); + FUN_0048b134(param_1[7],param_1[8]); + FUN_0048b318(param_1[7],param_10,param_11); + FUN_004905f0(param_1[7],param_13); + FUN_00489cec(param_1[9],param_1[8]); + FUN_0048a714(param_1[8],param_4); + puVar3 = (undefined4 *)FUN_0048a630(param_1[8]); + FUN_0040beb0(puVar3,puVar1); + FUN_0048d478((undefined4 *)param_1[7]); + FUN_0048d3e8((undefined4 *)param_1[8]); + return param_1; +} + + + +/* @004532dc file=? name=FUN_004532dc */ + +void __cdecl FUN_004532dc(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f1a30; + FUN_004898b8((int *)param_1[8]); + FUN_00489938((int *)param_1[7]); + FUN_00453198(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0045331c file=? name=FUN_0045331c */ + +undefined4 __cdecl FUN_0045331c(int param_1) + +{ + FUN_0041b8e0(param_1); + return 1; +} + + + +/* @00453330 file=? name=FUN_00453330 */ + +void FUN_00453330(void) + +{ + return; +} + + + +/* @00453338 file=? name=FUN_00453338 */ + +undefined4 * __cdecl +FUN_00453338(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4, + undefined4 param_5,undefined4 param_6,undefined4 param_7) + +{ + int iVar1; + + FUN_004530ec(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004f1a18; + param_1[7] = param_4; + param_1[8] = param_5; + param_1[9] = param_6; + param_1[10] = param_7; + param_1[0xb] = 0; + param_1[0xc] = 0; + iVar1 = FUN_00489708(); + param_1[0xb] = iVar1; + FUN_0048a714(iVar1,param_1[8]); + if (param_1[7] != 0) { + iVar1 = FUN_00489724(); + param_1[0xc] = iVar1; + FUN_0048ab0c(iVar1,param_1[7]); + FUN_0048ad48(param_1[0xc],param_1[9]); + FUN_0048add4(param_1[0xc],param_1[10]); + FUN_0048ac30(param_1[0xc],1); + FUN_00489e04(param_1[0xb],param_1[0xc]); + FUN_0048d5d4((undefined4 *)param_1[0xc]); + } + return param_1; +} + + + +/* @004533fc file=? name=FUN_004533fc */ + +void __cdecl FUN_004533fc(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f1a18; + if (param_1[0xc] != 0) { + FUN_0048a130(param_1[0xb],param_1[0xc]); + FUN_004898f8((int *)param_1[0xc]); + } + FUN_004898b8((int *)param_1[0xb]); + param_1[0xb] = 0; + FUN_00453198(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00453458 file=? name=FUN_00453458 */ + +undefined4 __cdecl FUN_00453458(int param_1) + +{ + FUN_004531c4(param_1); + return 1; +} + + + +/* @0045346c file=? name=FUN_0045346c */ + +void FUN_0045346c(void) + +{ + return; +} + + + +/* @00453474 file=? name=FUN_00453474 */ + +undefined4 * __cdecl +FUN_00453474(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4, + undefined4 param_5,undefined4 param_6,undefined4 param_7,undefined4 param_8) + +{ + int iVar1; + + FUN_004530ec(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004f1a00; + param_1[7] = param_4; + param_1[8] = param_6; + param_1[9] = param_7; + param_1[10] = param_5; + iVar1 = FUN_00489724(); + param_1[0xb] = iVar1; + FUN_0048ab0c(iVar1,param_1[7]); + FUN_0048ad48(param_1[0xb],param_1[8]); + FUN_0048add4(param_1[0xb],param_1[9]); + FUN_0048ac30(param_1[0xb],param_8); + FUN_00489e04(param_1[10],param_1[0xb]); + FUN_0048d5d4((undefined4 *)param_1[0xb]); + return param_1; +} + + + +/* @00453514 file=? name=FUN_00453514 */ + +void __cdecl FUN_00453514(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f1a00; + FUN_0048a130(param_1[10],param_1[0xb]); + FUN_004898f8((int *)param_1[0xb]); + FUN_00453198(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0045355c file=? name=FUN_0045355c */ + +undefined4 __cdecl FUN_0045355c(int param_1) + +{ + FUN_004531c4(param_1); + return 1; +} + + + +/* @00453570 file=? name=FUN_00453570 */ + +void FUN_00453570(void) + +{ + return; +} + + + +/* @00453578 file=? name=FUN_00453578 */ + +undefined4 * __cdecl +FUN_00453578(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4, + undefined4 param_5,undefined4 param_6,undefined4 param_7) + +{ + undefined4 *puVar1; + + FUN_00453338(param_1,param_2,param_3,param_4,param_5,param_6,param_7); + *param_1 = &PTR_FUN_004f19e8; + FUN_0040aadc(param_1 + 0xd); + FUN_0040ab28(param_1 + 0xd,(undefined4 *)(param_1[5] + 0xd0)); + FUN_00489ba8(param_1[0xb]); + puVar1 = (undefined4 *)FUN_0048a630(param_1[0xb]); + FUN_0040beb0(puVar1,(undefined4 *)(param_1[5] + 0xd0)); + FUN_0048d3e8((undefined4 *)param_1[0xb]); + return param_1; +} + + + +/* @00453600 file=? name=FUN_00453600 */ + +void __cdecl FUN_00453600(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f19e8; + FUN_00489e58(param_1[0xb]); + FUN_004533fc(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00453638 file=? name=FUN_00453638 */ + +undefined4 __cdecl FUN_00453638(int param_1) + +{ + FUN_00453458(param_1); + return 1; +} + + + +/* @0045364c file=? name=FUN_0045364c */ + +void __cdecl FUN_0045364c(int param_1) + +{ + float *pfVar1; + int iVar2; + undefined4 *puVar3; + + pfVar1 = (float *)(param_1 + 0x34); + iVar2 = FUN_0040aff0(pfVar1,(float *)(*(int *)(param_1 + 0x14) + 0xd0)); + if (iVar2 != 0) { + FUN_0040ab28(pfVar1,(undefined4 *)(*(int *)(param_1 + 0x14) + 0xd0)); + puVar3 = (undefined4 *)FUN_0048a630(*(int *)(param_1 + 0x2c)); + FUN_0040beb0(puVar3,pfVar1); + FUN_0045fbf4(*(int *)(param_1 + 0x10),*(undefined4 *)(param_1 + 0x2c)); + } + FUN_0045346c(); + return; +} + + + +/* @004536b4 file=? name=FUN_004536b4 */ + +undefined4 * __cdecl +FUN_004536b4(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4, + undefined4 param_5,undefined4 param_6,undefined4 param_7,undefined4 param_8, + undefined4 *param_9) + +{ + undefined4 *puVar1; + undefined4 uVar2; + undefined4 *puVar3; + + FUN_00453338(param_1,param_2,param_3,param_4,param_5,param_6,param_7); + puVar1 = param_1 + 0xd; + *param_1 = &PTR_FUN_004f19d0; + FUN_0040aadc(puVar1); + FUN_0040ab28(puVar1,param_9); + param_1[0x1a] = 0; + param_1[0x19] = param_8; + uVar2 = FUN_00489708(); + param_1[0x1a] = uVar2; + FUN_0048a714(param_1[0xb],param_1[8]); + FUN_00489cec(param_1[0x1a],param_1[0xb]); + FUN_00489cec(param_1[0x19],param_1[0x1a]); + puVar3 = (undefined4 *)FUN_0048a630(param_1[0x1a]); + FUN_0040beb0(puVar3,puVar1); + FUN_0048d3e8((undefined4 *)param_1[0x1a]); + return param_1; +} + + + +/* @00453768 file=? name=FUN_00453768 */ + +void __cdecl FUN_00453768(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f19d0; + FUN_0048a068(param_1[0x19],param_1[0x1a]); + FUN_0048a068(param_1[0x1a],param_1[0xb]); + FUN_004898b8((int *)param_1[0x1a]); + param_1[0x1a] = 0; + FUN_004533fc(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004537c4 file=? name=FUN_004537c4 */ + +undefined4 __cdecl FUN_004537c4(int param_1) + +{ + FUN_00453458(param_1); + return 1; +} + + + +/* @004537d8 file=? name=FUN_004537d8 */ + +void FUN_004537d8(void) + +{ + FUN_0045346c(); + return; +} + + + +/* @004537e8 file=? name=FUN_004537e8 */ + +undefined4 * __cdecl +FUN_004537e8(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4, + undefined4 param_5,undefined4 param_6,undefined4 param_7,undefined4 param_8, + undefined4 *param_9,undefined4 *param_10) + +{ + int iVar1; + float local_10; + undefined4 local_c; + undefined4 *local_8; + + FUN_004536b4(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9); + *param_1 = &PTR_FUN_004f19b8; + param_1[0x1b] = param_10; + local_8 = param_10 + 1; + param_1[0x1c] = *param_10; + param_1[0x1d] = *local_8; + FUN_00408328(&local_10,(float *)(param_1[0x1b] + 4)); + iVar1 = *(int *)param_1[0x1b]; + if (iVar1 == 0) { + FUN_0048fedc(param_1[0xb],local_10,local_c); + } + else if (iVar1 == 1) { + FUN_0048ff04(param_1[0xb],local_10,local_c); + } + else if (iVar1 == 2) { + FUN_0048ff2c(param_1[0xb],local_10,local_c); + } + FUN_0048d3e8((undefined4 *)param_1[0xb]); + return param_1; +} + + + +/* @004538b4 file=? name=FUN_004538b4 */ + +void __cdecl FUN_004538b4(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f19b8; + FUN_00453768(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004538e0 file=? name=FUN_004538e0 */ + +undefined4 __cdecl FUN_004538e0(int param_1) + +{ + FUN_004537c4(param_1); + return 1; +} + + + +/* @004538f4 file=? name=FUN_004538f4 */ + +void __cdecl FUN_004538f4(int param_1) + +{ + int iVar1; + float local_10; + undefined4 local_c; + int *local_8; + + iVar1 = FUN_00408d78((int *)(param_1 + 0x70),*(int **)(param_1 + 0x6c),0.0001); + if (iVar1 == 0) { + local_8 = *(int **)(param_1 + 0x6c) + 1; + *(int *)(param_1 + 0x70) = **(int **)(param_1 + 0x6c); + *(int *)(param_1 + 0x74) = *local_8; + FUN_00408328(&local_10,(float *)(*(int *)(param_1 + 0x6c) + 4)); + iVar1 = **(int **)(param_1 + 0x6c); + if (iVar1 == 0) { + FUN_0048fedc(*(int *)(param_1 + 0x2c),local_10,local_c); + } + else if (iVar1 == 1) { + FUN_0048ff04(*(int *)(param_1 + 0x2c),local_10,local_c); + } + else if (iVar1 == 2) { + FUN_0048ff2c(*(int *)(param_1 + 0x2c),local_10,local_c); + } + FUN_0045fbf4(*(int *)(param_1 + 0x10),*(undefined4 *)(param_1 + 0x2c)); + } + FUN_004537d8(); + return; +} + + + +/* @004539b4 file=? name=FUN_004539b4 */ + +undefined4 * __cdecl +FUN_004539b4(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4, + undefined4 param_5,undefined4 param_6,undefined4 param_7,undefined4 param_8, + undefined4 *param_9,undefined4 *param_10) + +{ + float *pfVar1; + + FUN_004536b4(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9); + *param_1 = &PTR_FUN_004f19a0; + param_1[0x1b] = param_10; + FUN_00408e90(param_1 + 0x1c,param_10); + pfVar1 = (float *)FUN_0048a630(param_1[0xb]); + FUN_0040bf58(pfVar1,(float *)(param_1 + 0x1c)); + FUN_0048d3e8((undefined4 *)param_1[0xb]); + return param_1; +} + + + +/* @00453a24 file=? name=FUN_00453a24 */ + +void __cdecl FUN_00453a24(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f19a0; + FUN_00453768(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00453a50 file=? name=FUN_00453a50 */ + +undefined4 __cdecl FUN_00453a50(int param_1) + +{ + FUN_004537c4(param_1); + return 1; +} + + + +/* @00453a64 file=? name=FUN_00453a64 */ + +void __cdecl FUN_00453a64(int param_1) + +{ + float *pfVar1; + int iVar2; + float *pfVar3; + + pfVar1 = (float *)(param_1 + 0x70); + iVar2 = FUN_004091f4(pfVar1,*(float **)(param_1 + 0x6c),0.0001); + if (iVar2 == 0) { + FUN_00408e90(pfVar1,*(undefined4 **)(param_1 + 0x6c)); + pfVar3 = (float *)FUN_0048a630(*(int *)(param_1 + 0x2c)); + FUN_0040bf58(pfVar3,pfVar1); + FUN_0045fbf4(*(int *)(param_1 + 0x10),*(undefined4 *)(param_1 + 0x2c)); + } + FUN_004537d8(); + return; +} + + + +/* @00453ac4 file=? name=FUN_00453ac4 */ + +undefined4 * __cdecl +FUN_00453ac4(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4, + undefined4 param_5,undefined4 param_6,undefined4 param_7,undefined4 param_8, + undefined4 *param_9,undefined4 *param_10,undefined4 *param_11) + +{ + undefined4 *puVar1; + float local_34 [12]; + + FUN_004536b4(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9); + *param_1 = &PTR_FUN_004f1988; + FUN_0040aadc(local_34); + param_1[0x1f] = param_10; + FUN_00408e90(param_1 + 0x20,param_10); + param_1[0x1b] = param_11; + FUN_00408440(param_1 + 0x1c,param_11); + puVar1 = (undefined4 *)FUN_0048a630(param_1[0xb]); + FUN_0040b0ac((int)local_34,3,param_1 + 0x1c); + FUN_0040ac6c(local_34,(float *)(param_1 + 0x20)); + FUN_0040beb0(puVar1,local_34); + FUN_0048d3e8((undefined4 *)param_1[0xb]); + return param_1; +} + + + +/* @00453b84 file=? name=FUN_00453b84 */ + +void __cdecl FUN_00453b84(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f1988; + FUN_00453768(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00453bb0 file=? name=FUN_00453bb0 */ + +undefined4 __cdecl FUN_00453bb0(int param_1) + +{ + FUN_004537c4(param_1); + return 1; +} + + + +/* @00453bc4 file=? name=FUN_00453bc4 */ + +void __cdecl FUN_00453bc4(int param_1) + +{ + float *pfVar1; + int iVar2; + undefined4 *puVar3; + float local_34 [12]; + + pfVar1 = (float *)(param_1 + 0x80); + iVar2 = FUN_004091f4(pfVar1,*(float **)(param_1 + 0x7c),0.0001); + if (iVar2 != 0) { + iVar2 = FUN_004084fc((float *)(param_1 + 0x70),*(float **)(param_1 + 0x6c),0.0001); + if (iVar2 != 0) goto LAB_00453c74; + } + FUN_00408e90(pfVar1,*(undefined4 **)(param_1 + 0x7c)); + FUN_00408440((undefined4 *)(param_1 + 0x70),*(undefined4 **)(param_1 + 0x6c)); + puVar3 = (undefined4 *)FUN_0048a630(*(int *)(param_1 + 0x2c)); + FUN_0040aadc(local_34); + FUN_0040b0ac((int)local_34,3,(undefined4 *)(param_1 + 0x70)); + FUN_0040ac6c(local_34,pfVar1); + FUN_0040beb0(puVar3,local_34); + FUN_0045fbf4(*(int *)(param_1 + 0x10),*(undefined4 *)(param_1 + 0x2c)); +LAB_00453c74: + FUN_004537d8(); + return; +} + + + +/* @00453c84 file=? name=FUN_00453c84 */ + +undefined4 * __cdecl +FUN_00453c84(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4, + undefined4 param_5,undefined4 param_6,undefined4 param_7,undefined4 param_8, + undefined4 *param_9,undefined4 param_10,undefined4 param_11,undefined4 *param_12, + undefined4 param_13) + +{ + float *pfVar1; + undefined4 *puVar2; + int iVar3; + float *pfVar4; + float *pfVar5; + float local_94 [12]; + float local_64 [12]; + float local_34 [12]; + + FUN_004536b4(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9); + *param_1 = &PTR_FUN_004f1970; + param_1[0x1b] = param_10; + param_1[0x1c] = param_11; + param_1[0x1d] = param_12; + param_1[0x1f] = param_13; + param_1[0x1e] = *param_12; + param_1[0x20] = 0; + puVar2 = (undefined4 *)FUN_0048a630(param_1[0xb]); + FUN_0040aadc(local_34); + pfVar1 = (float *)param_1[0x1c]; + pfVar4 = local_34; + pfVar5 = local_64; + for (iVar3 = 0xc; iVar3 != 0; iVar3 = iVar3 + -1) { + *pfVar5 = *pfVar4; + pfVar4 = pfVar4 + 1; + pfVar5 = pfVar5 + 1; + } + FUN_0040b374(local_34,local_64,pfVar1); + pfVar1 = (float *)param_1[0x1b]; + pfVar4 = local_34; + pfVar5 = local_94; + for (iVar3 = 0xc; iVar3 != 0; iVar3 = iVar3 + -1) { + *pfVar5 = *pfVar4; + pfVar4 = pfVar4 + 1; + pfVar5 = pfVar5 + 1; + } + FUN_0040b3e8(local_34,local_94,pfVar1); + FUN_0040beb0(puVar2,local_34); + FUN_0048d3e8((undefined4 *)param_1[0xb]); + FUN_0048ac30(param_1[0xc],param_1[0x1e]); + FUN_0048d5d4((undefined4 *)param_1[0xc]); + return param_1; +} + + + +/* @00453d84 file=? name=FUN_00453d84 */ + +void __cdecl FUN_00453d84(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f1970; + FUN_00453768(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00453db0 file=? name=FUN_00453db0 */ + +undefined4 __cdecl FUN_00453db0(int param_1) + +{ + FUN_004537c4(param_1); + return 1; +} + + + +/* @00453dc4 file=? name=FUN_00453dc4 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_00453dc4(int param_1) + +{ + undefined4 *puVar1; + int iVar2; + float *pfVar3; + float *pfVar4; + float *pfVar5; + float local_b4 [12]; + float local_84 [12]; + float local_54 [4]; + float local_44 [12]; + undefined4 local_14; + undefined4 local_10; + int local_c; + undefined4 local_8; + + iVar2 = **(int **)(param_1 + 0x74); + if (iVar2 != *(int *)(param_1 + 0x78)) { + *(int *)(param_1 + 0x78) = iVar2; + FUN_0048ac30(*(int *)(param_1 + 0x30),iVar2); + FUN_0048d5d4(*(undefined4 **)(param_1 + 0x30)); + } + if (*(int *)(param_1 + 0x78) != 0) { + *(float *)(param_1 + 0x80) = *(float *)(param_1 + 0x7c) + *(float *)(param_1 + 0x80); + if (_DAT_00453f14 < *(float *)(param_1 + 0x80)) { + *(float *)(param_1 + 0x80) = *(float *)(param_1 + 0x80) - _DAT_00453f14; + } + local_14 = *(undefined4 *)(param_1 + 0x80); + local_c = 2; + local_10 = local_14; + local_8 = local_14; + puVar1 = (undefined4 *)FUN_0048a630(*(int *)(param_1 + 0x2c)); + FUN_0040aadc(local_44); + FUN_0040998c(local_54,&local_c); + FUN_0040adec(local_44,local_54); + pfVar4 = *(float **)(param_1 + 0x70); + pfVar3 = local_44; + pfVar5 = local_84; + for (iVar2 = 0xc; iVar2 != 0; iVar2 = iVar2 + -1) { + *pfVar5 = *pfVar3; + pfVar3 = pfVar3 + 1; + pfVar5 = pfVar5 + 1; + } + FUN_0040b374(local_44,local_84,pfVar4); + FUN_00409968(local_54,*(undefined4 **)(param_1 + 0x6c)); + pfVar4 = local_44; + pfVar3 = local_b4; + for (iVar2 = 0xc; iVar2 != 0; iVar2 = iVar2 + -1) { + *pfVar3 = *pfVar4; + pfVar4 = pfVar4 + 1; + pfVar3 = pfVar3 + 1; + } + FUN_0040b3e8(local_44,local_b4,local_54); + FUN_0040beb0(puVar1,local_44); + FUN_0045fbf4(*(int *)(param_1 + 0x10),*(undefined4 *)(param_1 + 0x2c)); + } + FUN_004537d8(); + return; +} + + + +/* @00453f18 file=? name=FUN_00453f18 */ + +undefined4 * __cdecl +FUN_00453f18(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4, + undefined4 param_5,undefined4 param_6,undefined4 param_7,undefined4 param_8) + +{ + int iVar1; + undefined4 uVar2; + int iVar3; + + FUN_004530ec(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004f1958; + if (param_3 != 2) { + FUN_004dbb24(&DAT_00524e20,s_POVTranslocateRenderable_wants_t_004f13ab,(char *)0x0); + } + param_1[0x11] = param_4; + param_1[0x10] = param_5; + param_1[0xe] = param_6; + param_1[0xc] = param_7; + param_1[8] = param_8; + param_1[7] = 0; + param_1[9] = 0; + param_1[10] = 0x3e4ccccd; + iVar1 = FUN_00498448(s_tsphere_bgf_004f13e6,0); + uVar2 = FUN_00489724(); + param_1[0xd] = uVar2; + iVar3 = FUN_00489708(); + param_1[0xf] = iVar3; + FUN_00489cec(param_1[0xe],iVar3); + FUN_0048a714(param_1[0xf],param_1[0x10]); + FUN_0048ab0c(param_1[0xd],iVar1); + FUN_0048ad48(param_1[0xd],1); + FUN_0048add4(param_1[0xd],0); + FUN_0048ac30(param_1[0xd],0); + FUN_00489e04(param_1[0xf],param_1[0xd]); + FUN_0048d5d4((undefined4 *)param_1[0xd]); + FUN_0048d3e8((undefined4 *)param_1[0xf]); + (**(code **)(*(int *)(param_1[0xc] + 0x2c) + 4))(param_1[0xc] + 0x2c,param_1); + return param_1; +} + + + +/* @00454038 file=? name=FUN_00454038 */ + +void __cdecl FUN_00454038(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f1958; + FUN_0048a068(param_1[0xe],param_1[0xf]); + FUN_0048a130(param_1[0xf],param_1[0xd]); + FUN_004898f8((int *)param_1[0xd]); + FUN_004898b8((int *)param_1[0xf]); + FUN_00453198(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00454098 file=? name=FUN_00454098 */ + +undefined4 __cdecl FUN_00454098(int param_1) + +{ + FUN_004531c4(param_1); + return 1; +} + + + +/* @004540ac file=? name=FUN_004540ac */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004540ac(int param_1) + +{ + int iVar1; + undefined4 *puVar2; + float10 fVar3; + float local_8c [5]; + float local_78; + float local_64; + float local_5c; + float local_58; + undefined4 local_54; + float local_50 [5]; + float local_3c; + float local_28; + float local_20; + float local_1c; + float local_18; + float local_14; + float local_10; + float local_c; + float local_8; + + local_c = *(float *)(*(int *)(param_1 + 0x10) + 0x80); + iVar1 = *(int *)(*(int *)(param_1 + 0x30) + 0x14); + switch(*(undefined4 *)(param_1 + 0x1c)) { + case 0: + if (iVar1 == *(int *)(param_1 + 0x20)) { + *(undefined4 *)(param_1 + 0x1c) = 2; + *(float *)(param_1 + 0x2c) = local_c + _DAT_00454374; + FUN_0048ac30(*(int *)(param_1 + 0x34),1); + FUN_0048d5d4(*(undefined4 **)(param_1 + 0x34)); + FUN_0045a744(*(int *)(param_1 + 0x10),param_1); + } + break; + case 1: + *(undefined4 *)(param_1 + 0x1c) = 2; + break; + case 2: + local_10 = (*(float *)(param_1 + 0x2c) - local_c) * _DAT_00454374; + if (_DAT_00454378 < local_10) { + local_18 = local_10 * _DAT_0045437c + _DAT_00454374; + } + else { + local_18 = 1.0; + FUN_0048a8d8(*(int *)(param_1 + 0x44)); + FUN_0048d4b0(*(undefined4 **)(param_1 + 0x44)); + *(float *)(param_1 + 0x2c) = local_c; + *(undefined4 *)(param_1 + 0x1c) = 3; + } + FUN_0040aadc(local_50); + local_50[0] = local_18; + local_3c = local_18; + local_28 = local_18; + puVar2 = (undefined4 *)FUN_0048a630(*(int *)(param_1 + 0x3c)); + FUN_0040beb0(puVar2,local_50); + FUN_0045fbf4(*(int *)(param_1 + 0x10),*(undefined4 *)(param_1 + 0x3c)); + break; + case 3: + if (iVar1 == *(int *)(param_1 + 0x20)) { + local_8 = local_c - *(float *)(param_1 + 0x2c); + fVar3 = (float10)FUN_004dd0f4(SUB84((double)(local_8 * _DAT_00454380),0), + (int)((ulonglong)(double)(local_8 * _DAT_00454380) >> 0x20)); + local_1c = (float)(fVar3 * (float10)_DAT_00454384); + fVar3 = (float10)FUN_004dc9b4(SUB84((double)(local_8 * (float)_DAT_00454388),0), + (int)((ulonglong)(double)(local_8 * (float)_DAT_00454388) >> + 0x20)); + local_5c = (float)(fVar3 * (float10)_DAT_00454384); + local_58 = local_1c; + local_54 = 0; + local_20 = local_5c; + puVar2 = (undefined4 *)FUN_0048a630(*(int *)(param_1 + 0x3c)); + FUN_0040c18c(puVar2,&local_5c); + FUN_0045fbf4(*(int *)(param_1 + 0x10),*(undefined4 *)(param_1 + 0x3c)); + } + else { + FUN_0048a890(*(int *)(param_1 + 0x44)); + FUN_0048d4b0(*(undefined4 **)(param_1 + 0x44)); + *(undefined4 *)(param_1 + 0x1c) = 4; + *(float *)(param_1 + 0x2c) = local_c + _DAT_00454374; + } + break; + case 4: + if (iVar1 == *(int *)(param_1 + 0x20)) { + *(undefined4 *)(param_1 + 0x1c) = 2; + *(float *)(param_1 + 0x2c) = local_c + _DAT_00454374; + } + local_14 = _DAT_00454374 - (*(float *)(param_1 + 0x2c) - local_c) * _DAT_00454374; + if (local_14 < _DAT_00454374) { + local_18 = local_14 * _DAT_00454390 + _DAT_00454374; + } + else { + FUN_0048ac30(*(int *)(param_1 + 0x34),0); + FUN_0048d5d4(*(undefined4 **)(param_1 + 0x34)); + *(undefined4 *)(param_1 + 0x1c) = 0; + local_18 = 1.0; + FUN_0045a764(*(int *)(param_1 + 0x10),param_1); + } + FUN_0040aadc(local_8c); + local_8c[0] = local_18; + local_78 = local_18; + local_64 = local_18; + puVar2 = (undefined4 *)FUN_0048a630(*(int *)(param_1 + 0x3c)); + FUN_0040beb0(puVar2,local_8c); + FUN_0045fbf4(*(int *)(param_1 + 0x10),*(undefined4 *)(param_1 + 0x3c)); + } + return; +} + + + +/* @00454394 file=? name=FUN_00454394 */ + +undefined4 * __cdecl +FUN_00454394(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4, + undefined4 param_5,undefined4 param_6,undefined4 param_7,undefined4 param_8, + undefined4 param_9,undefined4 param_10,undefined4 param_11,undefined4 param_12, + undefined4 param_13,undefined4 param_14) + +{ + FUN_004530ec(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004f1940; + if (param_3 != 2) { + FUN_004dbb24(&DAT_00524e20,s_POVStartEndRenderable_wants_to_b_004f13f2,(char *)0x0); + } + param_1[0x12] = param_4; + param_1[0x11] = param_5; + param_1[0x10] = param_7; + param_1[0x13] = param_6; + param_1[7] = 0; + param_1[10] = param_8; + param_1[0xb] = param_9; + param_1[0xc] = param_10; + param_1[0xd] = param_11; + param_1[0xe] = param_12; + param_1[8] = param_13; + param_1[9] = param_14; + FUN_0045a7a8(param_1[4],1); + (**(code **)(*(int *)(param_1[0x10] + 0x2c) + 4))(param_1[0x10] + 0x2c,param_1); + return param_1; +} + + + +/* @0045443c file=? name=FUN_0045443c */ + +void __cdecl FUN_0045443c(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f1940; + FUN_00453198(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00454468 file=? name=FUN_00454468 */ + +undefined4 __cdecl FUN_00454468(int param_1) + +{ + FUN_004531c4(param_1); + return 1; +} + + + +/* @0045447c file=? name=FUN_0045447c */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_0045447c(int param_1) + +{ + int iVar1; + float fVar2; + float local_c; + + iVar1 = *(int *)(*(int *)(param_1 + 0x40) + 0x14); + fVar2 = *(float *)(*(int *)(param_1 + 0x10) + 0x80); + switch(*(undefined4 *)(param_1 + 0x1c)) { + case 0: + FUN_0045a7a8(*(int *)(param_1 + 0x10),1); + if (iVar1 == *(int *)(param_1 + 0x20)) { + *(undefined4 *)(param_1 + 0x1c) = 1; + *(float *)(param_1 + 0x3c) = fVar2 + _DAT_00454740; + FUN_0048b6b4(*(int *)(param_1 + 0x4c),5,0x3f800000,0x3f800000,0x3f800000,0x3c23d70a,0x3d4ccccd + ); + FUN_0048d42c(*(undefined4 **)(param_1 + 0x4c)); + FUN_0045a744(*(int *)(param_1 + 0x10),param_1); + } + break; + case 1: + if (*(float *)(param_1 + 0x3c) <= fVar2) { + *(float *)(param_1 + 0x3c) = fVar2 + _DAT_00454744; + *(undefined4 *)(param_1 + 0x1c) = 2; + } + break; + case 2: + local_c = (*(float *)(param_1 + 0x3c) - fVar2) * _DAT_00454744; + if (local_c <= _DAT_00454748) { + local_c = 0.0; + *(undefined4 *)(param_1 + 0x1c) = 3; + FUN_0045a7a8(*(int *)(param_1 + 0x10),0); + FUN_0045a764(*(int *)(param_1 + 0x10),param_1); + } + fVar2 = _DAT_00454744 - local_c; + FUN_0045a954(*(int *)(param_1 + 0x10),(undefined4 *)(param_1 + 0x28), + (undefined4 *)(param_1 + 0x2c),(undefined4 *)(param_1 + 0x30), + (undefined4 *)(param_1 + 0x34),(undefined4 *)(param_1 + 0x38)); + FUN_0048b6b4(*(int *)(param_1 + 0x4c),5, + (_DAT_00454744 - *(float *)(param_1 + 0x28)) * local_c + *(float *)(param_1 + 0x28) + ,(_DAT_00454744 - *(float *)(param_1 + 0x2c)) * local_c + + *(float *)(param_1 + 0x2c), + (_DAT_00454744 - *(float *)(param_1 + 0x30)) * local_c + *(float *)(param_1 + 0x30) + ,*(float *)(param_1 + 0x34) * fVar2 + _DAT_00454750, + *(float *)(param_1 + 0x38) * fVar2 + _DAT_0045474c); + FUN_0048d42c(*(undefined4 **)(param_1 + 0x4c)); + break; + case 3: + if (iVar1 == *(int *)(param_1 + 0x24)) { + *(undefined4 *)(param_1 + 0x1c) = 4; + *(float *)(param_1 + 0x3c) = fVar2 + _DAT_00454744; + FUN_0045a7a8(*(int *)(param_1 + 0x10),1); + FUN_0045a744(*(int *)(param_1 + 0x10),param_1); + } + break; + case 4: + local_c = (*(float *)(param_1 + 0x3c) - fVar2) * _DAT_00454744; + if (local_c <= _DAT_00454748) { + *(undefined4 *)(param_1 + 0x1c) = 0; + local_c = 0.0; + FUN_0045a764(*(int *)(param_1 + 0x10),param_1); + } + FUN_0045a954(*(int *)(param_1 + 0x10),(undefined4 *)(param_1 + 0x28), + (undefined4 *)(param_1 + 0x2c),(undefined4 *)(param_1 + 0x30), + (undefined4 *)(param_1 + 0x34),(undefined4 *)(param_1 + 0x38)); + FUN_0048b6b4(*(int *)(param_1 + 0x4c),5,*(float *)(param_1 + 0x28) * local_c, + *(float *)(param_1 + 0x2c) * local_c,*(float *)(param_1 + 0x30) * local_c, + *(float *)(param_1 + 0x34) * local_c + _DAT_00454750, + *(float *)(param_1 + 0x38) * local_c + _DAT_0045474c); + FUN_0048d42c(*(undefined4 **)(param_1 + 0x4c)); + } + return; +} + + + +/* @00454924 file=? name=FUN_00454924 */ + +void __cdecl FUN_00454924(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f1928; + FUN_00488ab4(param_1[0xc],0); + FUN_0048d42c((undefined4 *)param_1[0xc]); + FUN_00487f78((int *)param_1[0xd]); + FUN_00487f78((int *)param_1[0xe]); + *(undefined4 *)param_1[10] = 0; + FUN_00453198(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00454984 file=? name=FUN_00454984 */ + +undefined4 __cdecl FUN_00454984(int param_1) + +{ + FUN_004531c4(param_1); + return 1; +} + + + +/* @00454998 file=? name=FUN_00454998 */ + +void __cdecl FUN_00454998(int param_1) + +{ + int iVar1; + undefined4 local_1c [6]; + + iVar1 = *(int *)(*(int *)(param_1 + 0x2c) + 8); + if (iVar1 != *(int *)(param_1 + 0x24)) { + *(int *)(param_1 + 0x24) = iVar1; + if (iVar1 == 0) { + FUN_00488ab4(*(int *)(param_1 + 0x30),0); + FUN_0048d42c(*(undefined4 **)(param_1 + 0x30)); + } + else if (iVar1 == 1) { + FUN_00488ab4(*(int *)(param_1 + 0x30),*(undefined4 *)(param_1 + 0x34)); + FUN_0048d42c(*(undefined4 **)(param_1 + 0x30)); + } + } + iVar1 = FUN_0045961f((float *)(param_1 + 0x1c),*(float **)(param_1 + 0x2c),0.0001); + if (iVar1 == 0) { + *(undefined4 *)(param_1 + 0x1c) = **(undefined4 **)(param_1 + 0x2c); + *(undefined4 *)(param_1 + 0x20) = (*(undefined4 **)(param_1 + 0x2c))[1]; + FUN_00487fbc(*(int *)(param_1 + 0x38),1); + FUN_00488b80(local_1c); + FUN_00488bac((int)local_1c,*(float *)(param_1 + 0x1c),*(float *)(param_1 + 0x20)); + FUN_00488718(*(int *)(param_1 + 0x38),local_1c); + FUN_00488030(*(int *)(param_1 + 0x38)); + FUN_00488054(*(byte **)(param_1 + 0x38)); + } + return; +} + + + +/* @00454a70 file=? name=FUN_00454a70 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 * __cdecl +FUN_00454a70(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4, + undefined4 param_5) + +{ + int iVar1; + undefined4 uVar2; + int iVar3; + int *piVar4; + int local_40 [3]; + int local_34 [3]; + int local_28 [3]; + int local_1c [3]; + float local_10; + int local_c; + undefined4 local_8; + + FUN_004530ec(param_1,param_2,param_3); + *param_1 = &PTR_LAB_004f1910; + iVar1 = FUN_00498448(s_PNAME1_bgf_004f142a,0); + param_1[0xe] = iVar1; + iVar1 = FUN_00498448(s_PNAME2_bgf_004f1435,0); + param_1[0xf] = iVar1; + iVar1 = FUN_00498448(s_PNAME3_bgf_004f1440,0); + param_1[0x10] = iVar1; + iVar1 = FUN_00498448(s_PNAME4_bgf_004f144b,0); + param_1[0x11] = iVar1; + iVar1 = FUN_00498448(s_PNAME5_bgf_004f1456,0); + param_1[0x12] = iVar1; + iVar1 = FUN_00498448(s_PNAME6_bgf_004f1461,0); + param_1[0x13] = iVar1; + iVar1 = FUN_00498448(s_PNAME7_bgf_004f146c,0); + param_1[0x14] = iVar1; + iVar1 = FUN_00498448(s_PNAME8_bgf_004f1477,0); + param_1[0x15] = iVar1; + iVar1 = FUN_00498448(s_PLACE1_bgf_004f1482,0); + param_1[0x1a] = iVar1; + iVar1 = FUN_00498448(s_PLACE2_bgf_004f148d,0); + param_1[0x1b] = iVar1; + iVar1 = FUN_00498448(s_PLACE3_bgf_004f1498,0); + param_1[0x1c] = iVar1; + iVar1 = FUN_00498448(s_PLACE4_bgf_004f14a3,0); + param_1[0x1d] = iVar1; + iVar1 = FUN_00498448(s_PLACE5_bgf_004f14ae,0); + param_1[0x1e] = iVar1; + iVar1 = FUN_00498448(s_PLACE6_bgf_004f14b9,0); + param_1[0x1f] = iVar1; + iVar1 = FUN_00498448(s_PLACE7_bgf_004f14c4,0); + param_1[0x20] = iVar1; + iVar1 = FUN_00498448(s_PLACE8_bgf_004f14cf,0); + param_1[0x21] = iVar1; + param_1[9] = param_4; + param_1[8] = 0xffffffff; + uVar2 = FUN_00489708(); + param_1[0x26] = uVar2; + uVar2 = FUN_00489724(); + param_1[0x28] = uVar2; + FUN_00491cc4(param_1[0x26],0.2,0x3e4ccccd,0x3f800000); + FUN_00491c58(param_1[0x26],0,0xbe19999a,0xbf000000); + FUN_004901a0(param_1[0x26],1); + FUN_0048fe54(param_1[0x26],7); + FUN_00489ba8(param_1[0x26]); + FUN_0048ab0c(param_1[0x28],param_1[0xe]); + FUN_00489e04(param_1[0x26],param_1[0x28]); + FUN_0048ac30(param_1[0x28],1); + FUN_0048d5d4((undefined4 *)param_1[0x28]); + FUN_0048d3e8((undefined4 *)param_1[0x26]); + uVar2 = FUN_00489708(); + param_1[0x27] = uVar2; + uVar2 = FUN_00489724(); + param_1[0x29] = uVar2; + FUN_00489cec(param_1[0x26],param_1[0x27]); + FUN_0048ab0c(param_1[0x29],param_1[0x1a]); + FUN_00489e04(param_1[0x27],param_1[0x29]); + FUN_004901a0(param_1[0x27],1); + FUN_0048fe54(param_1[0x27],7); + FUN_00491c58(param_1[0x27],0xbf400000,0,0); + FUN_0048ac30(param_1[0x29],0); + FUN_0048d5d4((undefined4 *)param_1[0x29]); + FUN_0048d3e8((undefined4 *)param_1[0x27]); + param_1[0xc] = param_5; + param_1[0xd] = 0; + local_8 = 0x3e23d70a; + iVar1 = FUN_00489708(); + param_1[0x2a] = iVar1; + FUN_00491cc4(iVar1,0.12,0x3df5c28f,0x3f800000); + FUN_00491c58(param_1[0x2a],0x3e6147ae,local_8,0xbf000000); + FUN_004901a0(param_1[0x2a],1); + FUN_0048fe54(param_1[0x2a],7); + FUN_00489ba8(param_1[0x2a]); + FUN_0048d3e8((undefined4 *)param_1[0x2a]); + param_1[10] = 0; + param_1[0xb] = 0; + param_1[0x2b] = 0; + param_1[0x2c] = 0; + param_1[0x2d] = 0; + param_1[0x2e] = 0; + param_1[7] = 0; + iVar1 = *(int *)(DAT_004efc94 + 0x24); + iVar3 = FUN_00403ad0(iVar1 + 0x18,s_Players_004f14da); + if (iVar3 != 0) { + FUN_00421414(local_1c,iVar3 + 0x10); + uVar2 = (**(code **)(local_1c[0] + 0x14))(local_1c); + param_1[7] = uVar2; + FUN_00421452(local_1c,2); + } + local_c = FUN_00403ad0(iVar1 + 0x18,s_CameraPlayers_004f14e2); + iVar1 = 0; + if (local_c != 0) { + FUN_00421414(local_28,local_c + 0x10); + iVar1 = (**(code **)(local_28[0] + 0x14))(local_28); + FUN_00421452(local_28,2); + } + if (param_1[7] != 0) { + iVar1 = iVar1 + param_1[7]; + uVar2 = FUN_004022b0(iVar1 * 4); + param_1[10] = uVar2; + if (iVar3 != 0) { + FUN_00421414(local_34,iVar3 + 0x10); + while( true ) { + iVar3 = (**(code **)(local_34[0] + 0x28))(local_34); + if (iVar3 == 0) break; + *(int *)(param_1[10] + -4 + *(int *)(iVar3 + 0x1e0) * 4) = iVar3 + 0x1cc; + } + FUN_00421452(local_34,2); + } + if (local_c != 0) { + FUN_00421414(local_40,local_c + 0x10); + while( true ) { + iVar3 = (**(code **)(local_40[0] + 0x28))(local_40); + if (iVar3 == 0) break; + *(int *)(param_1[10] + -4 + *(int *)(iVar3 + 0x1e0) * 4) = iVar3 + 0x1cc; + } + FUN_00421452(local_40,2); + } + uVar2 = FUN_004022b0(iVar1 * 4); + param_1[0xb] = uVar2; + iVar3 = 0; + if (0 < iVar1) { + do { + *(undefined4 *)(param_1[0xb] + iVar3 * 4) = 0xffffffff; + iVar3 = iVar3 + 1; + } while (iVar3 < iVar1); + } + uVar2 = FUN_004022b0(param_1[7] << 2); + param_1[0x2b] = uVar2; + uVar2 = FUN_004022b0(param_1[7] << 2); + param_1[0x2c] = uVar2; + uVar2 = FUN_004022b0(param_1[7] << 2); + param_1[0x2d] = uVar2; + uVar2 = FUN_004022b0(param_1[7] << 2); + param_1[0x2e] = uVar2; + piVar4 = param_1 + 0xe; + for (iVar1 = 0; iVar1 < (int)param_1[7]; iVar1 = iVar1 + 1) { + local_10 = -((float)iVar1 * (float)_DAT_004551b8); + uVar2 = FUN_00489708(); + *(undefined4 *)(param_1[0x2b] + iVar1 * 4) = uVar2; + uVar2 = FUN_00489724(); + *(undefined4 *)(param_1[0x2d] + iVar1 * 4) = uVar2; + FUN_00489cec(param_1[0x2a],*(int *)(param_1[0x2b] + iVar1 * 4)); + FUN_0048ab0c(*(int *)(param_1[0x2d] + iVar1 * 4),*piVar4); + FUN_004901a0(*(int *)(param_1[0x2b] + iVar1 * 4),1); + FUN_0048fe54(*(int *)(param_1[0x2b] + iVar1 * 4),7); + FUN_00491c58(*(int *)(param_1[0x2b] + iVar1 * 4),0,local_10,0); + FUN_00489e04(*(int *)(param_1[0x2b] + iVar1 * 4),*(int *)(param_1[0x2d] + iVar1 * 4)); + FUN_0048ac30(*(int *)(param_1[0x2d] + iVar1 * 4),0); + FUN_0048d5d4(*(undefined4 **)(param_1[0x2d] + iVar1 * 4)); + FUN_0048d3e8(*(undefined4 **)(param_1[0x2b] + iVar1 * 4)); + uVar2 = FUN_00489708(); + *(undefined4 *)(param_1[0x2c] + iVar1 * 4) = uVar2; + uVar2 = FUN_00489724(); + *(undefined4 *)(param_1[0x2e] + iVar1 * 4) = uVar2; + FUN_00489cec(*(int *)(param_1[0x2b] + iVar1 * 4),*(int *)(param_1[0x2c] + iVar1 * 4)); + FUN_0048ab0c(*(int *)(param_1[0x2e] + iVar1 * 4),piVar4[0xc]); + FUN_00489e04(*(int *)(param_1[0x2c] + iVar1 * 4),*(int *)(param_1[0x2e] + iVar1 * 4)); + FUN_004901a0(*(int *)(param_1[0x2c] + iVar1 * 4),1); + FUN_0048fe54(*(int *)(param_1[0x2c] + iVar1 * 4),7); + FUN_00491c58(*(int *)(param_1[0x2c] + iVar1 * 4),0xbf400000,0,0); + FUN_0048ac30(*(int *)(param_1[0x2e] + iVar1 * 4),0); + FUN_0048d5d4(*(undefined4 **)(param_1[0x2e] + iVar1 * 4)); + FUN_0048d3e8(*(undefined4 **)(param_1[0x2c] + iVar1 * 4)); + piVar4 = piVar4 + 1; + } + } + return param_1; +} + + + +/* @004553ac file=? name=FUN_004553ac */ + +void __cdecl FUN_004553ac(int param_1) + +{ + int iVar1; + int iVar2; + int *piVar3; + + if ((*(int *)(param_1 + 0x1c) != 0) && (0 < **(int **)(param_1 + 0x24))) { + iVar2 = **(int **)(param_1 + 0x24) + -1; + if ((iVar2 != *(int *)(param_1 + 0x20)) && (*(int *)(param_1 + 0x20) = iVar2, iVar2 < 8)) { + FUN_0048ab0c(*(int *)(param_1 + 0xa0),*(int *)(param_1 + 0x38 + iVar2 * 4)); + FUN_0048d5d4(*(undefined4 **)(param_1 + 0xa0)); + FUN_0048ab0c(*(int *)(param_1 + 0xa4), + *(int *)(param_1 + 0x68 + + **(int **)(*(int *)(param_1 + 0x28) + *(int *)(param_1 + 0x20) * 4) * 4)) + ; + FUN_0048d5d4(*(undefined4 **)(param_1 + 0xa4)); + } + piVar3 = (int *)(param_1 + 0x38); + for (iVar2 = 0; iVar2 < *(int *)(param_1 + 0x1c); iVar2 = iVar2 + 1) { + iVar1 = **(int **)(*(int *)(param_1 + 0x28) + iVar2 * 4); + if (iVar1 != *(int *)(*(int *)(param_1 + 0x2c) + iVar2 * 4)) { + *(int *)(*(int *)(param_1 + 0x2c) + iVar2 * 4) = iVar1; + FUN_0048ab0c(*(int *)(*(int *)(param_1 + 0xb4) + + *(int *)(*(int *)(param_1 + 0x2c) + iVar2 * 4) * 4),*piVar3); + FUN_0048d5d4(*(undefined4 **) + (*(int *)(param_1 + 0xb4) + *(int *)(*(int *)(param_1 + 0x2c) + iVar2 * 4) * 4 + )); + } + piVar3 = piVar3 + 1; + } + if (**(int **)(param_1 + 0x30) != *(int *)(param_1 + 0x34)) { + *(int *)(param_1 + 0x34) = **(int **)(param_1 + 0x30); + for (iVar2 = 0; iVar2 < *(int *)(param_1 + 0x1c); iVar2 = iVar2 + 1) { + if (*(int *)(param_1 + 0x34) == 0) { + FUN_0048ac30(*(int *)(*(int *)(param_1 + 0xb4) + iVar2 * 4),0); + FUN_0048ac30(*(int *)(*(int *)(param_1 + 0xb8) + iVar2 * 4),0); + } + else { + FUN_0048ac30(*(int *)(*(int *)(param_1 + 0xb4) + iVar2 * 4),1); + FUN_0048ac30(*(int *)(*(int *)(param_1 + 0xb8) + iVar2 * 4),1); + } + FUN_0048d5d4(*(undefined4 **)(*(int *)(param_1 + 0xb4) + iVar2 * 4)); + FUN_0048d5d4(*(undefined4 **)(*(int *)(param_1 + 0xb8) + iVar2 * 4)); + } + } + if ((*(int *)(DAT_004efc94 + 0x88) == 7) || (*(int *)(DAT_004efc94 + 0x88) == 6)) { + FUN_0048ac30(*(int *)(param_1 + 0xa4),0); + FUN_0048ac30(*(int *)(param_1 + 0xa0),0); + FUN_0048d5d4(*(undefined4 **)(param_1 + 0xa4)); + FUN_0048d5d4(*(undefined4 **)(param_1 + 0xa0)); + } + } + return; +} + + + +/* @00455584 file=? name=FUN_00455584 */ + +undefined4 __cdecl FUN_00455584(int param_1) + +{ + FUN_004531c4(param_1); + return 1; +} + + + +/* @00455598 file=? name=FUN_00455598 */ + +undefined4 * __cdecl +FUN_00455598(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4, + undefined4 param_5,undefined4 param_6,undefined4 *param_7,undefined4 param_8, + undefined4 param_9,undefined4 param_10,undefined4 param_11) + +{ + int iVar1; + + FUN_004530ec(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004f18f8; + param_1[0xc] = param_4; + param_1[10] = param_5; + param_1[0xb] = param_6; + param_1[9] = param_7; + param_1[8] = *param_7; + param_1[7] = param_8; + param_1[0xd] = param_9; + param_1[0xe] = param_10; + param_1[0xf] = param_11; + param_1[0x10] = 0; + param_1[0x11] = 0; + iVar1 = FUN_00489708(); + param_1[0x10] = iVar1; + FUN_0048a714(iVar1,param_1[0xd]); + iVar1 = FUN_00489724(); + param_1[0x11] = iVar1; + FUN_0048ab0c(iVar1,param_1[0xc]); + FUN_0048ad48(param_1[0x11],param_1[0xe]); + FUN_0048add4(param_1[0x11],param_1[0xf]); + FUN_0048ac30(param_1[0x11],1); + FUN_00489e04(param_1[0x10],param_1[0x11]); + FUN_0048d5d4((undefined4 *)param_1[0x11]); + FUN_004904dc(param_1[0xc],param_1[10],param_1[0xb],param_1[8],param_1[7]); + return param_1; +} + + + +/* @00455690 file=? name=FUN_00455690 */ + +void __cdecl FUN_00455690(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f18f8; + FUN_0048a130(param_1[0x10],param_1[0x11]); + FUN_004898f8((int *)param_1[0x11]); + FUN_004898b8((int *)param_1[0x10]); + param_1[0x10] = 0; + FUN_00453198(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004556e8 file=? name=FUN_004556e8 */ + +undefined4 __cdecl FUN_004556e8(int param_1) + +{ + FUN_004531c4(param_1); + return 1; +} + + + +/* @004556fc file=? name=FUN_004556fc */ + +void __cdecl FUN_004556fc(int param_1) + +{ + if (*(float *)(param_1 + 0x20) != **(float **)(param_1 + 0x24)) { + *(undefined4 *)(param_1 + 0x20) = **(undefined4 **)(param_1 + 0x24); + FUN_004904dc(*(int *)(param_1 + 0x30),*(int *)(param_1 + 0x28),*(int *)(param_1 + 0x2c), + *(undefined4 *)(param_1 + 0x20),*(undefined4 *)(param_1 + 0x1c)); + } + return; +} + + + +/* @00455734 file=? name=FUN_00455734 */ + +undefined4 * __cdecl +FUN_00455734(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4, + undefined4 param_5,undefined4 param_6,undefined4 *param_7,undefined4 param_8, + undefined4 param_9,undefined4 param_10,undefined4 param_11) + +{ + undefined4 *puVar1; + + FUN_00455598(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9,param_10, + param_11); + *param_1 = &PTR_FUN_004f18e0; + FUN_0040aadc(param_1 + 0x12); + FUN_0040ab28(param_1 + 0x12,(undefined4 *)(param_1[5] + 0xd0)); + FUN_00489ba8(param_1[0x10]); + puVar1 = (undefined4 *)FUN_0048a630(param_1[0x10]); + FUN_0040beb0(puVar1,(undefined4 *)(param_1[5] + 0xd0)); + FUN_0048d3e8((undefined4 *)param_1[0x10]); + return param_1; +} + + + +/* @004557cc file=? name=FUN_004557cc */ + +void __cdecl FUN_004557cc(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f18e0; + FUN_00489e58(param_1[0x10]); + FUN_00455690(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00455804 file=? name=FUN_00455804 */ + +undefined4 __cdecl FUN_00455804(int param_1) + +{ + FUN_004556e8(param_1); + return 1; +} + + + +/* @00455818 file=? name=FUN_00455818 */ + +void __cdecl FUN_00455818(int param_1) + +{ + float *pfVar1; + int iVar2; + undefined4 *puVar3; + + pfVar1 = (float *)(param_1 + 0x48); + iVar2 = FUN_0040aff0(pfVar1,(float *)(*(int *)(param_1 + 0x14) + 0xd0)); + if (iVar2 != 0) { + FUN_0040ab28(pfVar1,(undefined4 *)(*(int *)(param_1 + 0x14) + 0xd0)); + puVar3 = (undefined4 *)FUN_0048a630(*(int *)(param_1 + 0x40)); + FUN_0040beb0(puVar3,pfVar1); + FUN_0045fbf4(*(int *)(param_1 + 0x10),*(undefined4 *)(param_1 + 0x40)); + } + FUN_004556fc(param_1); + return; +} + + + +/* @00455880 file=? name=FUN_00455880 */ + +undefined4 * __cdecl +FUN_00455880(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4, + undefined4 param_5,undefined4 param_6,undefined4 *param_7,undefined4 param_8, + undefined4 param_9,undefined4 param_10,undefined4 param_11,int param_12) + +{ + FUN_00455598(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9,param_10, + param_11); + *param_1 = &PTR_FUN_004f18c8; + FUN_00489cec(param_12,param_1[0x10]); + FUN_0048d3e8((undefined4 *)param_1[0x10]); + return param_1; +} + + + +/* @004558e0 file=? name=FUN_004558e0 */ + +void __cdecl FUN_004558e0(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f18c8; + FUN_00455690(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0045590c file=? name=FUN_0045590c */ + +undefined4 __cdecl FUN_0045590c(int param_1) + +{ + FUN_004556e8(param_1); + return 1; +} + + + +/* @00455920 file=? name=FUN_00455920 */ + +void __cdecl FUN_00455920(int param_1) + +{ + FUN_004556fc(param_1); + return; +} + + + +/* @00455930 file=? name=FUN_00455930 */ + +undefined4 * __cdecl +FUN_00455930(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4, + undefined4 param_5,undefined4 param_6,undefined4 param_7,undefined4 param_8, + undefined4 *param_9,undefined4 *param_10,undefined4 *param_11,undefined4 param_12, + undefined4 param_13) + +{ + undefined4 *puVar1; + int iVar2; + float *pfVar3; + float *pfVar4; + float local_94 [12]; + float local_64 [12]; + float local_34 [12]; + + FUN_004536b4(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9); + *param_1 = &PTR_FUN_004f18b0; + param_1[0x24] = 0x3c23d70a; + param_1[0x25] = 0x3c23d70a; + param_1[0x26] = 0x3c23d70a; + FUN_00408440(param_1 + 0x27,param_10); + FUN_00408440(param_1 + 0x21,param_11); + param_1[0x1d] = param_12; + param_1[0x1c] = 0; + param_1[0x1e] = 0; + param_1[0x1f] = 0; + param_1[0x20] = 0; + param_1[0x1b] = param_13; + puVar1 = (undefined4 *)FUN_0048a630(param_1[0xb]); + FUN_0040aadc(local_34); + pfVar3 = local_34; + pfVar4 = local_64; + for (iVar2 = 0xc; iVar2 != 0; iVar2 = iVar2 + -1) { + *pfVar4 = *pfVar3; + pfVar3 = pfVar3 + 1; + pfVar4 = pfVar4 + 1; + } + FUN_0040b374(local_34,local_64,(float *)(param_1 + 0x24)); + pfVar3 = local_34; + pfVar4 = local_94; + for (iVar2 = 0xc; iVar2 != 0; iVar2 = iVar2 + -1) { + *pfVar4 = *pfVar3; + pfVar3 = pfVar3 + 1; + pfVar4 = pfVar4 + 1; + } + FUN_0040b42c((int)local_34,(int)local_94,(float *)(param_1 + 0x1e)); + FUN_0040beb0(puVar1,local_34); + FUN_0048d3e8((undefined4 *)param_1[0xb]); + return param_1; +} + + + +/* @00455a68 file=? name=FUN_00455a68 */ + +void __cdecl FUN_00455a68(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f18b0; + FUN_00453768(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00455a94 file=? name=FUN_00455a94 */ + +undefined4 __cdecl FUN_00455a94(int param_1) + +{ + FUN_00453458(param_1); + return 1; +} + + + +/* @00455aa8 file=? name=FUN_00455aa8 */ + +void __cdecl FUN_00455aa8(int param_1) + +{ + undefined4 *puVar1; + int iVar2; + float *pfVar3; + float *pfVar4; + float *pfVar5; + float local_94 [12]; + float local_64 [12]; + float local_34 [12]; + + if ((*(int **)(param_1 + 0x6c) == (int *)0x0) || (**(int **)(param_1 + 0x6c) != 0)) { + pfVar3 = (float *)(param_1 + 0x9c); + FUN_004085ec(pfVar3,pfVar3,(float *)(param_1 + 0x84)); + pfVar5 = (float *)(param_1 + 0x90); + FUN_004085ec(pfVar5,pfVar5,pfVar3); + *(float *)(param_1 + 0x70) = *(float *)(param_1 + 0x74) + *(float *)(param_1 + 0x70); + *(float *)(param_1 + 0x7c) = *(float *)(param_1 + 0x70) + *(float *)(param_1 + 0x7c); + puVar1 = (undefined4 *)FUN_0048a630(*(int *)(param_1 + 0x2c)); + FUN_0040aadc(local_34); + pfVar3 = local_34; + pfVar4 = local_64; + for (iVar2 = 0xc; iVar2 != 0; iVar2 = iVar2 + -1) { + *pfVar4 = *pfVar3; + pfVar3 = pfVar3 + 1; + pfVar4 = pfVar4 + 1; + } + FUN_0040b374(local_34,local_64,pfVar5); + pfVar3 = local_34; + pfVar5 = local_94; + for (iVar2 = 0xc; iVar2 != 0; iVar2 = iVar2 + -1) { + *pfVar5 = *pfVar3; + pfVar3 = pfVar3 + 1; + pfVar5 = pfVar5 + 1; + } + FUN_0040b42c((int)local_34,(int)local_94,(float *)(param_1 + 0x78)); + FUN_0040beb0(puVar1,local_34); + FUN_0045fbf4(*(int *)(param_1 + 0x10),*(undefined4 *)(param_1 + 0x2c)); + FUN_004537d8(); + } + return; +} + + + +/* @00455b94 file=? name=FUN_00455b94 */ + +undefined4 * __cdecl FUN_00455b94(undefined4 *param_1,undefined4 param_2,undefined4 param_3) + +{ + FUN_004530ec(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004f1898; + FUN_0041c42c(param_1 + 7,0); + return param_1; +} + + + +/* @00455bc8 file=? name=FUN_00455bc8 */ + +void __cdecl FUN_00455bc8(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f1898; + FUN_0041c44b(param_1 + 7,2); + FUN_00453198(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00455c04 file=? name=FUN_00455c04 */ + +undefined4 __cdecl FUN_00455c04(int param_1) + +{ + FUN_004531c4(param_1); + return 1; +} + + + +/* @00455c18 file=? name=FUN_00455c18 */ + +void __cdecl FUN_00455c18(int param_1,undefined4 param_2) + +{ + (**(code **)(*(int *)(param_1 + 0x1c) + 4))(param_1 + 0x1c,param_2); + return; +} + + + +/* @00455c34 file=? name=FUN_00455c34 */ + +void __cdecl FUN_00455c34(int param_1) + +{ + int *piVar1; + int local_18 [5]; + + FUN_0041c477(local_18,param_1 + 0x1c); + while( true ) { + piVar1 = (int *)(**(code **)(local_18[0] + 0x28))(local_18); + if (piVar1 == (int *)0x0) break; + (**(code **)(*piVar1 + 0x14))(piVar1); + } + FUN_0041c4d4(local_18,2); + return; +} + + + +/* @00455c7c file=? name=FUN_00455c7c */ + +undefined4 * __cdecl +FUN_00455c7c(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 *param_4, + undefined4 param_5) + +{ + FUN_00455b94(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004f1880; + param_1[0xc] = param_4; + param_1[0xd] = *param_4; + param_1[0xe] = param_5; + return param_1; +} + + + +/* @00455cb0 file=? name=FUN_00455cb0 */ + +void __cdecl FUN_00455cb0(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f1880; + FUN_00455bc8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00455cdc file=? name=FUN_00455cdc */ + +undefined4 __cdecl FUN_00455cdc(int param_1) + +{ + FUN_00455c04(param_1); + return 1; +} + + + +/* @00455cf0 file=? name=FUN_00455cf0 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_00455cf0(int param_1) + +{ + float fVar1; + + if (**(float **)(param_1 + 0x30) - *(float *)(param_1 + 0x34) <= _DAT_00455d38) { + fVar1 = -(**(float **)(param_1 + 0x30) - *(float *)(param_1 + 0x34)); + } + else { + fVar1 = **(float **)(param_1 + 0x30) - *(float *)(param_1 + 0x34); + } + if (*(float *)(param_1 + 0x38) <= fVar1) { + *(undefined4 *)(param_1 + 0x34) = **(undefined4 **)(param_1 + 0x30); + FUN_00455c34(param_1); + } + return; +} + + + +/* @00455d3c file=? name=FUN_00455d3c */ + +undefined4 * __cdecl +FUN_00455d3c(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) + +{ + FUN_00455b94(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004f1868; + param_1[0xd] = param_4; + param_1[0xc] = *(undefined4 *)(param_1[4] + 0x80); + return param_1; +} + + + +/* @00455d74 file=? name=FUN_00455d74 */ + +void __cdecl FUN_00455d74(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f1868; + FUN_00455bc8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00455da0 file=? name=FUN_00455da0 */ + +undefined4 __cdecl FUN_00455da0(int param_1) + +{ + FUN_00455c04(param_1); + return 1; +} + + + +/* @00455db4 file=? name=FUN_00455db4 */ + +void __cdecl FUN_00455db4(int param_1) + +{ + if (*(float *)(param_1 + 0x30) <= *(float *)(*(int *)(param_1 + 0x10) + 0x80)) { + *(float *)(param_1 + 0x30) = + *(float *)(*(int *)(param_1 + 0x10) + 0x80) + *(float *)(param_1 + 0x34); + FUN_00455c34(param_1); + } + return; +} + + + +/* @00455de4 file=? name=FUN_00455de4 */ + +undefined4 * __cdecl +FUN_00455de4(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4, + undefined4 param_5) + +{ + FUN_00455b94(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004f1850; + FUN_0041c42c(param_1 + 0x13,0); + param_1[0xd] = param_4; + param_1[0xe] = param_5; + param_1[0xc] = 1; + param_1[0xf] = *(undefined4 *)(param_1[4] + 0x80); + param_1[0x11] = *(undefined4 *)(param_1[4] + 0x80); + param_1[0x10] = 0; + param_1[0x12] = 0; + return param_1; +} + + + +/* @00455e4c file=? name=FUN_00455e4c */ + +void __cdecl FUN_00455e4c(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f1850; + FUN_0041c44b(param_1 + 0x13,2); + FUN_00455bc8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00455e88 file=? name=FUN_00455e88 */ + +void __cdecl FUN_00455e88(int param_1,undefined4 param_2) + +{ + (**(code **)(*(int *)(param_1 + 0x4c) + 4))(param_1 + 0x4c,param_2); + return; +} + + + +/* @00455ea4 file=? name=FUN_00455ea4 */ + +undefined4 __cdecl FUN_00455ea4(int param_1) + +{ + FUN_00455c04(param_1); + return 1; +} + + + +/* @00455eb8 file=? name=FUN_00455eb8 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_00455eb8(int param_1) + +{ + int *piVar1; + int local_48 [5]; + float local_34; + undefined4 local_30; + float local_2c; + int local_28 [5]; + float local_14; + undefined4 local_10; + float local_c; + float local_8; + + if (*(int *)(param_1 + 0x34) == 0) { + local_8 = *(float *)(*(int *)(param_1 + 0x10) + 0x80); + FUN_00408440(&local_14,(undefined4 *)(*(int *)(param_1 + 0x14) + 0x100)); + local_34 = local_14; + local_30 = local_10; + local_2c = local_c; + FUN_00408b98(&local_14,&local_34,(float *)(*(int *)(param_1 + 0x10) + 0x50)); + if (local_c - _DAT_00456120 < _DAT_00456124) { + if (local_c < _DAT_00456124) { + if (local_c <= _DAT_00456124) { + local_c = -local_c; + } + } + else { + local_c = 0.1; + } + if (local_14 <= _DAT_00456124) { + local_14 = -local_14; + } + if ((local_14 - _DAT_00456120) / local_c <= *(float *)(*(int *)(param_1 + 0x10) + 0x11c)) { + if (*(int *)(param_1 + 0x30) == 0) { + *(undefined4 *)(param_1 + 0x30) = 1; + FUN_0048a890(*(int *)(param_1 + 0x38)); + FUN_0048d4b0(*(undefined4 **)(param_1 + 0x38)); + *(undefined4 *)(param_1 + 0x40) = 0; + *(float *)(param_1 + 0x3c) = local_8; + *(float *)(param_1 + 0x44) = local_8; + } + if (_DAT_00456128 <= local_c) { + *(undefined4 *)(param_1 + 0x48) = 0x3e800000; + } + else { + *(undefined4 *)(param_1 + 0x48) = 0; + } + } + else if (*(int *)(param_1 + 0x30) != 0) { + *(undefined4 *)(param_1 + 0x30) = 0; + FUN_0048a8d8(*(int *)(param_1 + 0x38)); + FUN_0048d4b0(*(undefined4 **)(param_1 + 0x38)); + *(undefined4 *)(param_1 + 0x40) = 0x3f800000; + *(undefined4 *)(param_1 + 0x48) = 0x42700000; + *(float *)(param_1 + 0x3c) = local_8 + *(float *)(param_1 + 0x40); + *(float *)(param_1 + 0x44) = local_8 + *(float *)(param_1 + 0x48); + } + } + else if (*(int *)(param_1 + 0x30) != 0) { + *(undefined4 *)(param_1 + 0x30) = 0; + FUN_0048a8d8(*(int *)(param_1 + 0x38)); + FUN_0048d4b0(*(undefined4 **)(param_1 + 0x38)); + *(undefined4 *)(param_1 + 0x40) = 0x3f800000; + *(undefined4 *)(param_1 + 0x48) = 0x42700000; + *(float *)(param_1 + 0x3c) = local_8 + *(float *)(param_1 + 0x40); + *(float *)(param_1 + 0x44) = local_8 + *(float *)(param_1 + 0x48); + } + if (*(float *)(param_1 + 0x44) <= local_8) { + *(float *)(param_1 + 0x44) = local_8 + *(float *)(param_1 + 0x48); + FUN_0041c477(local_48,param_1 + 0x4c); + while (piVar1 = (int *)(**(code **)(local_48[0] + 0x28))(local_48), piVar1 != (int *)0x0) { + (**(code **)(*piVar1 + 0x14))(piVar1); + } + FUN_0041c4d4(local_48,2); + } + if (*(float *)(param_1 + 0x3c) <= local_8) { + *(float *)(param_1 + 0x3c) = local_8 + *(float *)(param_1 + 0x40); + FUN_00455c34(param_1); + } + } + else { + FUN_00455c34(param_1); + FUN_0041c477(local_28,param_1 + 0x4c); + while (piVar1 = (int *)(**(code **)(local_28[0] + 0x28))(local_28), piVar1 != (int *)0x0) { + (**(code **)(*piVar1 + 0x14))(piVar1); + } + *(undefined4 *)(param_1 + 0x30) = 1; + FUN_0041c4d4(local_28,2); + } + return; +} + + + +/* @0045612c file=? name=FUN_0045612c */ + +undefined4 * __cdecl +FUN_0045612c(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4, + undefined4 param_5,int *param_6) + +{ + int iVar1; + + FUN_004530ec(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004f1838; + param_1[7] = param_5; + param_1[8] = param_4; + param_1[9] = param_6; + iVar1 = *param_6; + param_1[10] = iVar1; + if (iVar1 == param_1[7]) { + FUN_0048ac30(param_1[8],1); + } + else { + FUN_0048ac30(param_1[8],0); + } + FUN_0048d5d4((undefined4 *)param_1[8]); + return param_1; +} + + + +/* @00456198 file=? name=FUN_00456198 */ + +void __cdecl FUN_00456198(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f1838; + FUN_00453198(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004561c4 file=? name=FUN_004561c4 */ + +undefined4 __cdecl FUN_004561c4(int param_1) + +{ + FUN_004531c4(param_1); + return 1; +} + + + +/* @004561d8 file=? name=FUN_004561d8 */ + +void __cdecl FUN_004561d8(int param_1) + +{ + int iVar1; + + iVar1 = **(int **)(param_1 + 0x24); + if (iVar1 != *(int *)(param_1 + 0x28)) { + *(int *)(param_1 + 0x28) = iVar1; + if (iVar1 == *(int *)(param_1 + 0x1c)) { + FUN_0048ac30(*(int *)(param_1 + 0x20),1); + } + else { + FUN_0048ac30(*(int *)(param_1 + 0x20),0); + } + FUN_0048d5d4(*(undefined4 **)(param_1 + 0x20)); + } + return; +} + + + +/* @00456224 file=? name=FUN_00456224 */ + +undefined4 * __cdecl +FUN_00456224(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4, + undefined4 param_5,int param_6,int param_7) + +{ + FUN_004530ec(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004f1820; + param_1[9] = param_4; + param_1[8] = param_5; + param_1[0xb] = param_6; + param_1[10] = param_7; + if (param_7 == *(int *)(param_1[0xb] + 0x14)) { + if (param_1[8] == 1) { + param_1[7] = 1; + } + else { + param_1[7] = 0; + } + } + else if (param_1[8] == 1) { + param_1[7] = 0; + } + else { + param_1[7] = 1; + } + FUN_0048ac30(param_1[9],param_1[7]); + FUN_0048d5d4((undefined4 *)param_1[9]); + (**(code **)(*(int *)(param_6 + 0x2c) + 4))(param_6 + 0x2c,param_1); + return param_1; +} + + + +/* @004562c0 file=? name=FUN_004562c0 */ + +void __cdecl FUN_004562c0(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f1820; + FUN_00453198(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004562ec file=? name=FUN_004562ec */ + +undefined4 __cdecl FUN_004562ec(int param_1) + +{ + FUN_004531c4(param_1); + return 1; +} + + + +/* @00456300 file=? name=FUN_00456300 */ + +void __cdecl FUN_00456300(int param_1) + +{ + int iVar1; + + if (*(int *)(*(int *)(param_1 + 0x2c) + 0x14) == *(int *)(param_1 + 0x28)) { + if (*(int *)(param_1 + 0x20) == 1) { + iVar1 = 1; + } + else { + iVar1 = 0; + } + } + else if (*(int *)(param_1 + 0x20) == 1) { + iVar1 = 0; + } + else { + iVar1 = 1; + } + if (iVar1 != *(int *)(param_1 + 0x1c)) { + *(int *)(param_1 + 0x1c) = iVar1; + FUN_0048ac30(*(int *)(param_1 + 0x24),iVar1); + FUN_0048d5d4(*(undefined4 **)(param_1 + 0x24)); + } + return; +} + + + +/* @0045635c file=? name=FUN_0045635c */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 * __cdecl +FUN_0045635c(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4, + float param_5,undefined4 *param_6) + +{ + FUN_004530ec(param_1,param_2,param_3); + *param_1 = &PTR_LAB_004f1808; + if (param_6 == (undefined4 *)0x0) { + param_1[9] = 1; + param_1[8] = param_1 + 9; + param_1[10] = 0; + } + else { + param_1[8] = param_6; + param_1[10] = *param_6; + } + param_1[7] = param_4; + FUN_00408440(param_1 + 0xb,&DAT_004e0f80); + param_1[0xf] = param_5 * _DAT_004563cc; + return param_1; +} + + + +/* @004563fc file=? name=FUN_004563fc */ + +undefined4 __cdecl FUN_004563fc(int param_1) + +{ + FUN_004531c4(param_1); + return 1; +} + + + +/* @00456410 file=? name=FUN_00456410 */ + +void __cdecl FUN_00456410(int param_1) + +{ + float fVar1; + undefined4 *puVar2; + + if (**(int **)(param_1 + 0x20) != *(int *)(param_1 + 0x28)) { + if (*(int *)(param_1 + 0x28) == 0) { + *(undefined4 *)(param_1 + 0x38) = *(undefined4 *)(*(int *)(param_1 + 0x10) + 0x80); + FUN_00408440((undefined4 *)(param_1 + 0x2c),&DAT_004e0f80); + } + *(undefined4 *)(param_1 + 0x28) = **(undefined4 **)(param_1 + 0x20); + } + if (*(int *)(param_1 + 0x28) != 0) { + fVar1 = *(float *)(*(int *)(param_1 + 0x10) + 0x80) - *(float *)(param_1 + 0x38); + *(float *)(param_1 + 0x30) = fVar1 * fVar1 * *(float *)(param_1 + 0x3c); + puVar2 = (undefined4 *)FUN_0048a630(*(int *)(param_1 + 0x1c)); + FUN_0040c18c(puVar2,(undefined4 *)(param_1 + 0x2c)); + FUN_0045fbf4(*(int *)(param_1 + 0x10),*(undefined4 *)(param_1 + 0x1c)); + } + return; +} + + + +/* @004564a8 file=? name=FUN_004564a8 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 * __cdecl +FUN_004564a8(undefined4 *param_1,undefined4 param_2,undefined4 param_3,float param_4,float param_5) + +{ + float10 fVar1; + + FUN_004530ec(param_1,param_2,param_3); + *param_1 = &PTR_LAB_004f17f0; + param_1[7] = 0; + fVar1 = FUN_004dcd00((double)param_5); + param_1[8] = (uint)((float10)_DAT_00456528 < fVar1); + param_1[9] = *(undefined4 *)(param_1[4] + 0x80); + param_1[9] = param_4 + (float)param_1[9]; + param_1[10] = (float)param_1[9] + param_5; + param_1[0xb] = 0; + return param_1; +} + + + +/* @00456558 file=? name=FUN_00456558 */ + +undefined4 __cdecl FUN_00456558(int param_1) + +{ + FUN_004531c4(param_1); + return 1; +} + + + +/* @0045656c file=munga_l4/l4vidrnd.cpp name=FUN_0045656c */ + +void __cdecl FUN_0045656c(int param_1) + +{ + float fVar1; + + if (*(int *)(param_1 + 0x1c) != 2) { + fVar1 = *(float *)(*(int *)(param_1 + 0x10) + 0x80); + if (*(int *)(param_1 + 0x1c) == 0) { + if (*(float *)(param_1 + 0x24) < fVar1) { + *(undefined4 *)(param_1 + 0x2c) = 1; + if (*(int *)(param_1 + 0x20) != 0) { + *(undefined4 *)(param_1 + 0x1c) = 1; + return; + } + *(undefined4 *)(param_1 + 0x1c) = 2; + FUN_0045a764(*(int *)(param_1 + 0x10),param_1); + return; + } + } + else if (*(int *)(param_1 + 0x1c) == 1) { + if (*(float *)(param_1 + 0x28) < fVar1) { + *(undefined4 *)(param_1 + 0x2c) = 0; + *(undefined4 *)(param_1 + 0x1c) = 2; + FUN_0045a764(*(int *)(param_1 + 0x10),param_1); + return; + } + } + else { + FUN_0040385c(s_invalid_myState_004f14f0,s_d__tesla_bt_munga_l4_L4VIDRND_CP_004f1500,0xfb4); + } + } + return; +} + + + +/* @00456610 file=? name=FUN_00456610 */ + +undefined4 * __cdecl +FUN_00456610(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4, + undefined4 param_5,undefined4 *param_6,undefined4 param_7,undefined4 param_8, + undefined4 param_9) + +{ + FUN_004530ec(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004f17d8; + if (param_6 == (undefined4 *)0x0) { + param_1[7] = 1; + param_1[9] = param_1 + 7; + param_1[8] = 0; + } + else { + param_1[9] = param_6; + param_1[8] = *param_6; + } + param_1[0xc] = param_9; + param_1[0xd] = param_7; + param_1[0xe] = param_8; + param_1[10] = param_5; + param_1[0x10] = param_4; + param_1[0x11] = param_1[0xd]; + return param_1; +} + + + +/* @00456684 file=? name=FUN_00456684 */ + +void __cdecl FUN_00456684(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f17d8; + FUN_00453198(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004566b0 file=? name=FUN_004566b0 */ + +undefined4 __cdecl FUN_004566b0(int param_1) + +{ + FUN_004531c4(param_1); + return 1; +} + + + +/* @004566c4 file=? name=FUN_004566c4 */ + +void __cdecl FUN_004566c4(int param_1) + +{ + float fVar1; + float10 fVar2; + + if (**(int **)(param_1 + 0x24) != *(int *)(param_1 + 0x20)) { + if (*(int *)(param_1 + 0x20) == 0) { + *(undefined4 *)(param_1 + 0x3c) = *(undefined4 *)(*(int *)(param_1 + 0x10) + 0x80); + *(undefined4 *)(param_1 + 0x44) = *(undefined4 *)(param_1 + 0x34); + *(undefined4 *)(param_1 + 0x2c) = *(undefined4 *)(param_1 + 0x28); + } + *(undefined4 *)(param_1 + 0x20) = **(undefined4 **)(param_1 + 0x24); + } + if ((*(int *)(param_1 + 0x20) != 0) && (0 < *(int *)(param_1 + 0x2c))) { + fVar1 = *(float *)(*(int *)(param_1 + 0x10) + 0x80); + if ((*(float *)(param_1 + 0x38) <= *(float *)(param_1 + 0x44)) && + (*(int *)(param_1 + 0x2c) = *(int *)(param_1 + 0x2c) + -1, 0 < *(int *)(param_1 + 0x2c))) { + *(float *)(param_1 + 0x3c) = fVar1; + } + *(float *)(param_1 + 0x44) = + ((fVar1 - *(float *)(param_1 + 0x3c)) * + (*(float *)(param_1 + 0x38) - *(float *)(param_1 + 0x34))) / *(float *)(param_1 + 0x40) + + *(float *)(param_1 + 0x34); + if (*(int *)(param_1 + 0x30) == 1) { + fVar2 = FUN_004dd138((double)*(float *)(param_1 + 0x44)); + *(float *)(param_1 + 0x44) = (float)fVar2; + } + if (*(float *)(param_1 + 0x38) < *(float *)(param_1 + 0x44)) { + *(undefined4 *)(param_1 + 0x44) = *(undefined4 *)(param_1 + 0x38); + } + } + return; +} + + + +/* @00456778 file=? name=FUN_00456778 */ + +undefined4 * __cdecl +FUN_00456778(undefined4 *param_1,undefined4 param_2,undefined4 param_3,int *param_4,int param_5) + +{ + FUN_004530ec(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004f17c0; + param_1[7] = param_4; + param_1[9] = (uint)(*param_4 == 0); + if (param_5 == 0) { + param_1[8] = param_1[7]; + } + else { + param_1[8] = param_5; + } + param_1[10] = (uint)(*(int *)param_1[8] == 0); + return param_1; +} + + + +/* @004567d4 file=? name=FUN_004567d4 */ + +void __cdecl FUN_004567d4(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f17c0; + FUN_00453198(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00456800 file=? name=FUN_00456800 */ + +undefined4 __cdecl FUN_00456800(int param_1) + +{ + FUN_004531c4(param_1); + return 1; +} + + + +/* @00456814 file=? name=FUN_00456814 */ + +void __cdecl FUN_00456814(int param_1) + +{ + if ((**(int **)(param_1 + 0x1c) != *(int *)(param_1 + 0x24)) || + (**(int **)(param_1 + 0x20) != *(int *)(param_1 + 0x28))) { + *(int *)(param_1 + 0x24) = **(int **)(param_1 + 0x1c); + *(undefined4 *)(param_1 + 0x28) = **(undefined4 **)(param_1 + 0x20); + if ((*(int *)(param_1 + 0x24) != 0) || (*(int *)(param_1 + 0x28) != 0)) { + FUN_0045a7a8(*(int *)(param_1 + 0x10),2); + return; + } + FUN_0045a7a8(*(int *)(param_1 + 0x10),3); + } + return; +} + + + +/* @00456868 file=? name=FUN_00456868 */ + +undefined4 * __cdecl +FUN_00456868(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 *param_4, + undefined4 param_5,undefined4 param_6,undefined4 *param_7) + +{ + FUN_004530ec(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004f17a8; + param_1[7] = param_4; + param_1[8] = *param_4; + param_1[9] = param_5; + param_1[10] = param_6; + FUN_00408440(param_1 + 0xb,param_7); + return param_1; +} + + + +/* @004568b8 file=? name=FUN_004568b8 */ + +void __cdecl FUN_004568b8(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f17a8; + FUN_00453198(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004568e4 file=? name=FUN_004568e4 */ + +undefined4 __cdecl FUN_004568e4(int param_1) + +{ + FUN_004531c4(param_1); + return 1; +} + + + +/* @004568f8 file=? name=FUN_004568f8 */ + +void __cdecl FUN_004568f8(int param_1) + +{ + undefined4 local_18; + undefined4 local_14; + undefined4 local_10; + undefined4 local_c; + + if (**(int **)(param_1 + 0x1c) != *(int *)(param_1 + 0x20)) { + *(int *)(param_1 + 0x20) = **(int **)(param_1 + 0x1c); + local_c = *(undefined4 *)(param_1 + 0x24); + local_18 = *(undefined4 *)(param_1 + 0x2c); + local_14 = *(undefined4 *)(param_1 + 0x30); + local_10 = *(undefined4 *)(param_1 + 0x34); + FUN_0048d060(0,*(int *)(param_1 + 0x28),&local_18); + } + return; +} + + + +/* @0045693c file=munga_l4/l4vidrnd.cpp name=FUN_0045693c */ + +undefined4 * __cdecl +FUN_0045693c(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 *param_4, + undefined4 *param_5,undefined4 param_6,undefined4 *param_7) + +{ + int iVar1; + undefined4 *puVar2; + + FUN_004530ec(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004f1790; + if (param_5 == (undefined4 *)0x0) { + FUN_0040385c(s_A_pfx_was_not_defined_in_the__in_004f1522, + s_d__tesla_bt_munga_l4_L4VIDRND_CP_004f154a,0x10f5); + } + param_1[0x48] = param_4; + param_1[0x49] = *param_4; + param_1[0x4a] = param_6; + FUN_00408440(param_1 + 0x4b,param_7); + puVar2 = param_1 + 7; + for (iVar1 = 0x41; iVar1 != 0; iVar1 = iVar1 + -1) { + *puVar2 = *param_5; + param_5 = param_5 + 1; + puVar2 = puVar2 + 1; + } + return param_1; +} + + + +/* @004569bc file=? name=FUN_004569bc */ + +void __cdecl FUN_004569bc(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f1790; + FUN_0048d060(2,0,param_1 + 7); + FUN_00453198(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004569f8 file=? name=FUN_004569f8 */ + +undefined4 __cdecl FUN_004569f8(int param_1) + +{ + FUN_004531c4(param_1); + return 1; +} + + + +/* @00456a0c file=? name=FUN_00456a0c */ + +void __cdecl FUN_00456a0c(int param_1) + +{ + int iVar1; + uint uVar2; + + iVar1 = **(int **)(param_1 + 0x120); + if ((iVar1 != *(int *)(param_1 + 0x124)) && (*(int *)(param_1 + 0x124) = iVar1, iVar1 == 1)) { + uVar2 = FUN_00460ae4(*(int *)(DAT_004efc94 + 0x48)); + *(uint *)(param_1 + 0x1c) = uVar2 | *(uint *)(param_1 + 0x1c) & 0xffff0000; + FUN_0048d060(1,*(int *)(param_1 + 0x128),(undefined4 *)(param_1 + 0x1c)); + } + return; +} + + + +/* @00456a68 file=munga_l4/l4vidrnd.cpp name=FUN_00456a68 */ + +undefined4 * __cdecl +FUN_00456a68(undefined4 *param_1,undefined4 param_2,undefined4 param_3,int param_4, + undefined4 param_5,undefined4 *param_6,undefined4 param_7,undefined4 *param_8) + +{ + int iVar1; + undefined4 *puVar2; + + FUN_004530ec(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004f1778; + if (param_6 == (undefined4 *)0x0) { + FUN_0040385c(s_A_pfx_was_not_defined_in_the__in_004f156c, + s_d__tesla_bt_munga_l4_L4VIDRND_CP_004f1594,0x1154); + } + param_1[0x48] = param_5; + param_1[0x49] = param_4; + param_1[0x4a] = param_7; + FUN_00408440(param_1 + 0x4b,param_8); + puVar2 = param_1 + 7; + for (iVar1 = 0x41; iVar1 != 0; iVar1 = iVar1 + -1) { + *puVar2 = *param_6; + param_6 = param_6 + 1; + puVar2 = puVar2 + 1; + } + (**(code **)(*(int *)(param_4 + 0x2c) + 4))(param_4 + 0x2c,param_1); + return param_1; +} + + + +/* @00456afc file=? name=FUN_00456afc */ + +void __cdecl FUN_00456afc(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f1778; + FUN_0048d060(2,0,param_1 + 7); + FUN_00453198(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00456b38 file=? name=FUN_00456b38 */ + +undefined4 __cdecl FUN_00456b38(int param_1) + +{ + FUN_004531c4(param_1); + return 1; +} + + + +/* @00456b4c file=? name=FUN_00456b4c */ + +void __cdecl FUN_00456b4c(int param_1) + +{ + uint uVar1; + + if (*(int *)(*(int *)(param_1 + 0x124) + 0x14) == *(int *)(param_1 + 0x120)) { + uVar1 = FUN_00460ae4(*(int *)(DAT_004efc94 + 0x48)); + *(uint *)(param_1 + 0x1c) = uVar1 | *(uint *)(param_1 + 0x1c) & 0xffff0000; + FUN_0048d060(1,*(int *)(param_1 + 0x128),(undefined4 *)(param_1 + 0x1c)); + } + return; +} + + + +/* @00456ba0 file=? name=FUN_00456ba0 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 * __cdecl +FUN_00456ba0(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4, + undefined4 param_5,undefined4 param_6,undefined4 param_7,undefined4 param_8, + undefined4 param_9,undefined4 param_10,undefined4 param_11,undefined4 param_12, + undefined4 param_13,undefined4 param_14,undefined4 param_15,undefined4 param_16, + undefined4 param_17,undefined4 param_18,undefined4 param_19,int param_20,float param_21, + int param_22) + +{ + int iVar1; + + FUN_004530ec(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004f1760; + iVar1 = FUN_004897a0(); + param_1[7] = iVar1; + if (param_3 == 0) { + FUN_0048ba98(iVar1,param_4,param_5,param_6); + FUN_0048bb54(param_1[7],param_7,param_8,param_9); + FUN_0048bc10(param_1[7],param_10,param_11,param_12); + FUN_0048bccc(param_1[7],param_13,param_14,param_15,param_16); + FUN_0048bd94(param_1[7],param_17,param_18,param_19); + if (param_20 != 0) { + FUN_0048be50(param_1[7],param_20); + } + if (param_21 != _DAT_00456c98) { + FUN_0048fe94(param_1[7],param_21); + } + if (param_22 != 0) { + FUN_004902a0(param_1[7],param_22); + } + FUN_0048d4d4((undefined4 *)param_1[7]); + } + return param_1; +} + + + +/* @00456c9c file=? name=FUN_00456c9c */ + +void __cdecl FUN_00456c9c(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f1760; + FUN_00489a28((int *)param_1[7]); + FUN_00453198(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00456cd4 file=? name=FUN_00456cd4 */ + +undefined4 __cdecl FUN_00456cd4(int param_1) + +{ + FUN_004531c4(param_1); + return 1; +} + + + +/* @00456ce8 file=? name=FUN_00456ce8 */ + +void FUN_00456ce8(void) + +{ + return; +} + + + +/* @00456cf0 file=? name=FUN_00456cf0 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 * __cdecl +FUN_00456cf0(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4, + undefined4 param_5,undefined4 param_6,undefined4 param_7,undefined4 param_8, + undefined4 param_9,undefined4 param_10,undefined4 param_11,undefined4 param_12, + undefined4 param_13,undefined4 param_14,undefined4 param_15,undefined4 param_16, + undefined4 param_17,undefined4 param_18,undefined4 param_19,int param_20,float param_21, + int param_22,undefined4 param_23,undefined4 param_24,undefined4 param_25, + undefined4 param_26,undefined4 param_27,undefined4 param_28,undefined4 param_29, + undefined4 param_30,undefined4 param_31,undefined4 param_32,undefined4 param_33, + undefined4 param_34,undefined4 param_35,undefined4 param_36,undefined4 param_37, + undefined4 param_38,undefined4 param_39,undefined4 *param_40) + +{ + float fVar1; + float fVar2; + + FUN_00456ba0(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9,param_10, + param_11,param_12,param_13,param_14,param_15,param_16,param_17,param_18,param_19, + param_20,param_21,param_22); + *param_1 = &PTR_LAB_004f1748; + param_1[10] = param_4; + param_1[0xb] = param_5; + param_1[0xc] = param_6; + param_1[0xd] = param_7; + param_1[0xe] = param_8; + param_1[0xf] = param_9; + param_1[0x10] = param_10; + param_1[0x11] = param_11; + param_1[0x12] = param_12; + param_1[0x13] = param_13; + param_1[0x14] = param_14; + param_1[0x15] = param_15; + param_1[0x16] = param_16; + param_1[0x17] = param_17; + param_1[0x18] = param_18; + param_1[0x19] = param_19; + param_1[9] = param_20; + param_1[0x1a] = param_21; + param_1[8] = param_22; + param_1[0x1b] = param_23; + param_1[0x1c] = param_24; + param_1[0x1d] = param_25; + param_1[0x1e] = param_26; + param_1[0x1f] = param_27; + param_1[0x20] = param_28; + param_1[0x21] = param_29; + param_1[0x22] = param_30; + param_1[0x23] = param_31; + param_1[0x24] = param_32; + param_1[0x25] = param_33; + param_1[0x26] = param_34; + param_1[0x27] = param_35; + param_1[0x28] = param_36; + param_1[0x29] = param_37; + param_1[0x2a] = param_38; + param_1[0x2b] = param_39; + param_1[0x2c] = param_40; + param_1[0x2d] = *param_40; + fVar2 = _DAT_00457104 - (float)param_1[0x2d]; + fVar1 = (float)param_1[0x2d]; + param_1[0x2e] = (float)param_1[0x1b] * fVar1 + (float)param_1[10] * fVar2; + param_1[0x2f] = (float)param_1[0x1c] * fVar1 + (float)param_1[0xb] * fVar2; + param_1[0x30] = (float)param_1[0x1d] * fVar1 + (float)param_1[0xc] * fVar2; + param_1[0x31] = (float)param_1[0x1e] * fVar1 + (float)param_1[0xd] * fVar2; + param_1[0x32] = (float)param_1[0x1f] * fVar1 + (float)param_1[0xe] * fVar2; + param_1[0x33] = (float)param_1[0x20] * fVar1 + (float)param_1[0xf] * fVar2; + param_1[0x34] = (float)param_1[0x21] * fVar1 + (float)param_1[0x10] * fVar2; + param_1[0x35] = (float)param_1[0x22] * fVar1 + (float)param_1[0x11] * fVar2; + param_1[0x36] = (float)param_1[0x23] * fVar1 + (float)param_1[0x12] * fVar2; + param_1[0x37] = (float)param_1[0x24] * fVar1 + (float)param_1[0x13] * fVar2; + param_1[0x38] = (float)param_1[0x25] * fVar1 + (float)param_1[0x14] * fVar2; + param_1[0x39] = (float)param_1[0x26] * fVar1 + (float)param_1[0x15] * fVar2; + param_1[0x3a] = (float)param_1[0x27] * fVar1 + (float)param_1[0x16] * fVar2; + param_1[0x3b] = (float)param_1[0x28] * fVar1 + (float)param_1[0x17] * fVar2; + param_1[0x3c] = (float)param_1[0x29] * fVar1 + (float)param_1[0x18] * fVar2; + param_1[0x3d] = (float)param_1[0x2a] * fVar1 + (float)param_1[0x19] * fVar2; + param_1[0x3e] = (float)param_1[0x2b] * fVar1 + (float)param_1[0x1a] * fVar2; + FUN_0048ba98(param_1[7],param_1[0x2e],param_1[0x2f],param_1[0x30]); + FUN_0048bb54(param_1[7],param_1[0x31],param_1[0x32],param_1[0x33]); + FUN_0048bc10(param_1[7],param_1[0x34],param_1[0x35],param_1[0x36]); + FUN_0048bccc(param_1[7],param_1[0x37],param_1[0x38],param_1[0x39],param_1[0x3a]); + FUN_0048bd94(param_1[7],param_1[0x3b],param_1[0x3c],param_1[0x3d]); + if (param_1[9] != 0) { + FUN_0048be50(param_1[7],param_1[9]); + } + if ((float)param_1[0x3e] != _DAT_00457108) { + FUN_0048fe94(param_1[7],param_1[0x3e]); + } + if (param_1[8] != 0) { + FUN_004902a0(param_1[7],param_1[8]); + } + FUN_0048d4d4((undefined4 *)param_1[7]); + return param_1; +} + + + +/* @00457138 file=? name=FUN_00457138 */ + +undefined4 __cdecl FUN_00457138(int param_1) + +{ + FUN_004531c4(param_1); + return 1; +} + + + +/* @0045714c file=? name=FUN_0045714c */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_0045714c(int param_1) + +{ + float fVar1; + float fVar2; + + if (*(float *)(param_1 + 0xb4) != **(float **)(param_1 + 0xb0)) { + *(undefined4 *)(param_1 + 0xb4) = **(undefined4 **)(param_1 + 0xb0); + fVar2 = _DAT_004573dc - *(float *)(param_1 + 0xb4); + fVar1 = *(float *)(param_1 + 0xb4); + *(float *)(param_1 + 0xb8) = + *(float *)(param_1 + 0x6c) * fVar1 + *(float *)(param_1 + 0x28) * fVar2; + *(float *)(param_1 + 0xbc) = + *(float *)(param_1 + 0x70) * fVar1 + *(float *)(param_1 + 0x2c) * fVar2; + *(float *)(param_1 + 0xc0) = + *(float *)(param_1 + 0x74) * fVar1 + *(float *)(param_1 + 0x30) * fVar2; + *(float *)(param_1 + 0xc4) = + *(float *)(param_1 + 0x78) * fVar1 + *(float *)(param_1 + 0x34) * fVar2; + *(float *)(param_1 + 200) = + *(float *)(param_1 + 0x7c) * fVar1 + *(float *)(param_1 + 0x38) * fVar2; + *(float *)(param_1 + 0xcc) = + *(float *)(param_1 + 0x80) * fVar1 + *(float *)(param_1 + 0x3c) * fVar2; + *(float *)(param_1 + 0xd0) = + *(float *)(param_1 + 0x84) * fVar1 + *(float *)(param_1 + 0x40) * fVar2; + *(float *)(param_1 + 0xd4) = + *(float *)(param_1 + 0x88) * fVar1 + *(float *)(param_1 + 0x44) * fVar2; + *(float *)(param_1 + 0xd8) = + *(float *)(param_1 + 0x8c) * fVar1 + *(float *)(param_1 + 0x48) * fVar2; + *(float *)(param_1 + 0xdc) = + *(float *)(param_1 + 0x90) * fVar1 + *(float *)(param_1 + 0x4c) * fVar2; + *(float *)(param_1 + 0xe0) = + *(float *)(param_1 + 0x94) * fVar1 + *(float *)(param_1 + 0x50) * fVar2; + *(float *)(param_1 + 0xe4) = + *(float *)(param_1 + 0x98) * fVar1 + *(float *)(param_1 + 0x54) * fVar2; + *(float *)(param_1 + 0xe8) = + *(float *)(param_1 + 0x9c) * fVar1 + *(float *)(param_1 + 0x58) * fVar2; + *(float *)(param_1 + 0xec) = + *(float *)(param_1 + 0xa0) * fVar1 + *(float *)(param_1 + 0x5c) * fVar2; + *(float *)(param_1 + 0xf0) = + *(float *)(param_1 + 0xa4) * fVar1 + *(float *)(param_1 + 0x60) * fVar2; + *(float *)(param_1 + 0xf4) = + *(float *)(param_1 + 0xa8) * fVar1 + *(float *)(param_1 + 100) * fVar2; + *(float *)(param_1 + 0xf8) = + *(float *)(param_1 + 0xac) * fVar1 + *(float *)(param_1 + 0x68) * fVar2; + FUN_0048ba98(*(int *)(param_1 + 0x1c),*(undefined4 *)(param_1 + 0xb8), + *(undefined4 *)(param_1 + 0xbc),*(undefined4 *)(param_1 + 0xc0)); + FUN_0048bb54(*(int *)(param_1 + 0x1c),*(undefined4 *)(param_1 + 0xc4), + *(undefined4 *)(param_1 + 200),*(undefined4 *)(param_1 + 0xcc)); + FUN_0048bc10(*(int *)(param_1 + 0x1c),*(undefined4 *)(param_1 + 0xd0), + *(undefined4 *)(param_1 + 0xd4),*(undefined4 *)(param_1 + 0xd8)); + FUN_0048bccc(*(int *)(param_1 + 0x1c),*(undefined4 *)(param_1 + 0xdc), + *(undefined4 *)(param_1 + 0xe0),*(undefined4 *)(param_1 + 0xe4), + *(undefined4 *)(param_1 + 0xe8)); + FUN_0048bd94(*(int *)(param_1 + 0x1c),*(undefined4 *)(param_1 + 0xec), + *(undefined4 *)(param_1 + 0xf0),*(undefined4 *)(param_1 + 0xf4)); + if (*(float *)(param_1 + 0xf8) != _DAT_004573e0) { + FUN_0048fe94(*(int *)(param_1 + 0x1c),*(undefined4 *)(param_1 + 0xf8)); + } + FUN_0048d4d4(*(undefined4 **)(param_1 + 0x1c)); + } + return; +} + + + +/* @004573e4 file=? name=FUN_004573e4 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 * __cdecl +FUN_004573e4(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4, + undefined4 *param_5,float param_6) + +{ + float fVar1; + float fVar2; + + FUN_004530ec(param_1,param_2,param_3); + *param_1 = &PTR_LAB_004f1730; + param_1[7] = param_4; + param_1[8] = param_5; + param_1[9] = *param_5; + FUN_0048baf4(param_1[7],param_1 + 10,param_1 + 0xb,param_1 + 0xc); + FUN_0048bbb0(param_1[7],param_1 + 0xd,param_1 + 0xe,param_1 + 0xf); + FUN_0048bc6c(param_1[7],param_1 + 0x10,param_1 + 0x11,param_1 + 0x12); + FUN_0048bd2c(param_1[7],param_1 + 0x13,param_1 + 0x14,param_1 + 0x15,param_1 + 0x16); + FUN_0048bdf0(param_1[7],param_1 + 0x17,param_1 + 0x18,param_1 + 0x19); + param_1[0x1a] = param_6 * (float)param_1[10]; + param_1[0x1b] = param_6 * (float)param_1[0xb]; + param_1[0x1c] = param_6 * (float)param_1[0xc]; + param_1[0x1d] = param_6 * (float)param_1[0xd]; + param_1[0x1e] = param_6 * (float)param_1[0xe]; + param_1[0x1f] = param_6 * (float)param_1[0xf]; + param_1[0x20] = param_6 * (float)param_1[0x10]; + param_1[0x21] = param_6 * (float)param_1[0x11]; + param_1[0x22] = param_6 * (float)param_1[0x12]; + param_1[0x23] = param_6 * (float)param_1[0x13]; + param_1[0x24] = param_6 * (float)param_1[0x14]; + param_1[0x25] = param_6 * (float)param_1[0x15]; + param_1[0x26] = param_6 * (float)param_1[0x16]; + param_1[0x27] = param_6 * (float)param_1[0x17]; + param_1[0x28] = param_6 * (float)param_1[0x18]; + param_1[0x29] = param_6 * (float)param_1[0x19]; + fVar2 = _DAT_00457740 - (float)param_1[9]; + fVar1 = (float)param_1[9]; + param_1[0x2a] = (float)param_1[0x1a] * fVar1 + (float)param_1[10] * fVar2; + param_1[0x2b] = (float)param_1[0x1b] * fVar1 + (float)param_1[0xb] * fVar2; + param_1[0x2c] = (float)param_1[0x1c] * fVar1 + (float)param_1[0xc] * fVar2; + param_1[0x2d] = (float)param_1[0x1d] * fVar1 + (float)param_1[0xd] * fVar2; + param_1[0x2e] = (float)param_1[0x1e] * fVar1 + (float)param_1[0xe] * fVar2; + param_1[0x2f] = (float)param_1[0x1f] * fVar1 + (float)param_1[0xf] * fVar2; + param_1[0x30] = (float)param_1[0x20] * fVar1 + (float)param_1[0x10] * fVar2; + param_1[0x31] = (float)param_1[0x21] * fVar1 + (float)param_1[0x11] * fVar2; + param_1[0x32] = (float)param_1[0x22] * fVar1 + (float)param_1[0x12] * fVar2; + param_1[0x33] = (float)param_1[0x23] * fVar1 + (float)param_1[0x13] * fVar2; + param_1[0x34] = (float)param_1[0x24] * fVar1 + (float)param_1[0x14] * fVar2; + param_1[0x35] = (float)param_1[0x25] * fVar1 + (float)param_1[0x15] * fVar2; + param_1[0x36] = (float)param_1[0x26] * fVar1 + (float)param_1[0x16] * fVar2; + param_1[0x37] = (float)param_1[0x27] * fVar1 + (float)param_1[0x17] * fVar2; + param_1[0x38] = (float)param_1[0x28] * fVar1 + (float)param_1[0x18] * fVar2; + param_1[0x39] = (float)param_1[0x29] * fVar1 + (float)param_1[0x19] * fVar2; + FUN_0048ba98(param_1[7],param_1[0x2a],param_1[0x2b],param_1[0x2c]); + FUN_0048bb54(param_1[7],param_1[0x2d],param_1[0x2e],param_1[0x2f]); + FUN_0048bc10(param_1[7],param_1[0x30],param_1[0x31],param_1[0x32]); + FUN_0048bccc(param_1[7],param_1[0x33],param_1[0x34],param_1[0x35],param_1[0x36]); + FUN_0048d4d4((undefined4 *)param_1[7]); + return param_1; +} + + + +/* @00457770 file=? name=FUN_00457770 */ + +undefined4 __cdecl FUN_00457770(int param_1) + +{ + FUN_004531c4(param_1); + return 1; +} + + + +/* @00457784 file=? name=FUN_00457784 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_00457784(int param_1) + +{ + float fVar1; + float fVar2; + + if (*(float *)(param_1 + 0x24) != **(float **)(param_1 + 0x20)) { + *(undefined4 *)(param_1 + 0x24) = **(undefined4 **)(param_1 + 0x20); + fVar2 = _DAT_004579a4 - *(float *)(param_1 + 0x24); + fVar1 = *(float *)(param_1 + 0x24); + *(float *)(param_1 + 0xa8) = + *(float *)(param_1 + 0x68) * fVar1 + *(float *)(param_1 + 0x28) * fVar2; + *(float *)(param_1 + 0xac) = + *(float *)(param_1 + 0x6c) * fVar1 + *(float *)(param_1 + 0x2c) * fVar2; + *(float *)(param_1 + 0xb0) = + *(float *)(param_1 + 0x70) * fVar1 + *(float *)(param_1 + 0x30) * fVar2; + *(float *)(param_1 + 0xb4) = + *(float *)(param_1 + 0x74) * fVar1 + *(float *)(param_1 + 0x34) * fVar2; + *(float *)(param_1 + 0xb8) = + *(float *)(param_1 + 0x78) * fVar1 + *(float *)(param_1 + 0x38) * fVar2; + *(float *)(param_1 + 0xbc) = + *(float *)(param_1 + 0x7c) * fVar1 + *(float *)(param_1 + 0x3c) * fVar2; + *(float *)(param_1 + 0xc0) = + *(float *)(param_1 + 0x80) * fVar1 + *(float *)(param_1 + 0x40) * fVar2; + *(float *)(param_1 + 0xc4) = + *(float *)(param_1 + 0x84) * fVar1 + *(float *)(param_1 + 0x44) * fVar2; + *(float *)(param_1 + 200) = + *(float *)(param_1 + 0x88) * fVar1 + *(float *)(param_1 + 0x48) * fVar2; + *(float *)(param_1 + 0xcc) = + *(float *)(param_1 + 0x8c) * fVar1 + *(float *)(param_1 + 0x4c) * fVar2; + *(float *)(param_1 + 0xd0) = + *(float *)(param_1 + 0x90) * fVar1 + *(float *)(param_1 + 0x50) * fVar2; + *(float *)(param_1 + 0xd4) = + *(float *)(param_1 + 0x94) * fVar1 + *(float *)(param_1 + 0x54) * fVar2; + *(float *)(param_1 + 0xd8) = + *(float *)(param_1 + 0x98) * fVar1 + *(float *)(param_1 + 0x58) * fVar2; + *(float *)(param_1 + 0xdc) = + *(float *)(param_1 + 0x9c) * fVar1 + *(float *)(param_1 + 0x5c) * fVar2; + *(float *)(param_1 + 0xe0) = + *(float *)(param_1 + 0xa0) * fVar1 + *(float *)(param_1 + 0x60) * fVar2; + *(float *)(param_1 + 0xe4) = + *(float *)(param_1 + 0xa4) * fVar1 + *(float *)(param_1 + 100) * fVar2; + FUN_0048ba98(*(int *)(param_1 + 0x1c),*(undefined4 *)(param_1 + 0xa8), + *(undefined4 *)(param_1 + 0xac),*(undefined4 *)(param_1 + 0xb0)); + FUN_0048bb54(*(int *)(param_1 + 0x1c),*(undefined4 *)(param_1 + 0xb4), + *(undefined4 *)(param_1 + 0xb8),*(undefined4 *)(param_1 + 0xbc)); + FUN_0048bc10(*(int *)(param_1 + 0x1c),*(undefined4 *)(param_1 + 0xc0), + *(undefined4 *)(param_1 + 0xc4),*(undefined4 *)(param_1 + 200)); + FUN_0048bccc(*(int *)(param_1 + 0x1c),*(undefined4 *)(param_1 + 0xcc), + *(undefined4 *)(param_1 + 0xd0),*(undefined4 *)(param_1 + 0xd4), + *(undefined4 *)(param_1 + 0xd8)); + FUN_0048d4d4(*(undefined4 **)(param_1 + 0x1c)); + } + return; +} + + + +/* @004579a8 file=? name=FUN_004579a8 */ + +undefined4 * __cdecl +FUN_004579a8(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 *param_4, + undefined4 param_5,undefined4 *param_6,undefined4 *param_7) + +{ + int iVar1; + undefined4 *puVar2; + float *pfVar3; + float *pfVar4; + float local_94 [12]; + float local_64 [12]; + float local_34 [12]; + + FUN_0041b838(param_1,2,&DAT_004e32ac); + *param_1 = &PTR_FUN_004f1718; + FUN_0040aadc(param_1 + 6); + param_1[0x16] = param_2; + param_1[5] = param_5; + FUN_0040ab28(param_1 + 6,param_4); + param_1[0x12] = param_7; + if (param_7 == (undefined4 *)0x0) { + FUN_0040aadc(local_34); + FUN_00408f7c((float *)(param_1 + 0x13),local_34); + } + else { + FUN_00408e90(param_1 + 0x13,param_7); + } + iVar1 = FUN_00489708(); + param_1[4] = iVar1; + FUN_00489cec(param_1[5],iVar1); + FUN_0048a714(param_1[4],param_3); + FUN_0040aadc(local_64); + if ((float *)param_1[0x12] != (float *)0x0) { + FUN_0040ac6c(local_64,(float *)param_1[0x12]); + } + pfVar3 = local_64; + pfVar4 = local_94; + for (iVar1 = 0xc; iVar1 != 0; iVar1 = iVar1 + -1) { + *pfVar4 = *pfVar3; + pfVar3 = pfVar3 + 1; + pfVar4 = pfVar4 + 1; + } + FUN_0040b104(local_64,local_94,(float *)(param_1 + 6)); + puVar2 = (undefined4 *)FUN_0048a630(param_1[4]); + FUN_0040beb0(puVar2,local_64); + FUN_0048b4ac((int)param_6,param_1[4]); + FUN_0048d42c(param_6); + FUN_0048d3e8((undefined4 *)param_1[4]); + FUN_00420674(param_1[0x16],param_1); + FUN_0045a744(*(int *)(DAT_004efc94 + 0x48),param_1); + return param_1; +} + + + +/* @00457af4 file=? name=FUN_00457af4 */ + +void __cdecl FUN_00457af4(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f1718; + FUN_004898b8((int *)param_1[4]); + FUN_0041b898(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00457b2c file=? name=FUN_00457b2c */ + +undefined4 __cdecl FUN_00457b2c(int param_1) + +{ + FUN_0041b8e0(param_1); + return 1; +} + + + +/* @00457b48 file=? name=FUN_00457b48 */ + +void __cdecl FUN_00457b48(int param_1) + +{ + int iVar1; + undefined4 *puVar2; + float *pfVar3; + float *pfVar4; + float local_64 [12]; + float local_34 [12]; + + if (*(float **)(param_1 + 0x48) != (float *)0x0) { + iVar1 = FUN_004091f4(*(float **)(param_1 + 0x48),(float *)(param_1 + 0x4c),0.0001); + if (iVar1 == 0) { + FUN_00408e90((undefined4 *)(param_1 + 0x4c),*(undefined4 **)(param_1 + 0x48)); + FUN_0040aadc(local_34); + FUN_0040ac6c(local_34,*(float **)(param_1 + 0x48)); + pfVar3 = local_34; + pfVar4 = local_64; + for (iVar1 = 0xc; iVar1 != 0; iVar1 = iVar1 + -1) { + *pfVar4 = *pfVar3; + pfVar3 = pfVar3 + 1; + pfVar4 = pfVar4 + 1; + } + FUN_0040b104(local_34,local_64,(float *)(param_1 + 0x18)); + puVar2 = (undefined4 *)FUN_0048a630(*(int *)(param_1 + 0x10)); + FUN_0040beb0(puVar2,local_34); + FUN_0045fbf4(*(int *)(DAT_004efc94 + 0x48),*(undefined4 *)(param_1 + 0x10)); + } + } + return; +} + + + +/* @00457bf4 file=? name=FUN_00457bf4 */ + +undefined4 * __cdecl +FUN_00457bf4(undefined4 *param_1,undefined4 param_2,int param_3,int param_4,undefined4 param_5, + undefined4 param_6,undefined4 *param_7,undefined4 param_8,undefined4 *param_9) + +{ + int iVar1; + undefined4 *puVar2; + undefined4 *puVar3; + + FUN_0041b838(param_1,2,&DAT_004e32ac); + puVar3 = param_1 + 8; + *param_1 = &PTR_FUN_004f1700; + FUN_0040aadc(puVar3); + param_1[0x14] = param_2; + param_1[6] = param_8; + param_1[0x15] = param_9; + FUN_0040ab28(puVar3,param_7); + FUN_00408440(param_1 + 0x16,param_9); + iVar1 = FUN_00489708(); + param_1[4] = iVar1; + FUN_00489cec(param_1[6],iVar1); + FUN_0048a714(param_1[4],param_3); + iVar1 = FUN_00489708(); + param_1[5] = iVar1; + FUN_00489cec(param_1[4],iVar1); + FUN_0048a714(param_1[5],param_3); + puVar2 = (undefined4 *)FUN_0048a630(param_1[4]); + FUN_0040beb0(puVar2,puVar3); + puVar3 = (undefined4 *)FUN_0048a630(param_1[5]); + FUN_0040c18c(puVar3,(undefined4 *)param_1[0x15]); + if (param_4 == 0) { + param_1[7] = 0; + } + else { + iVar1 = FUN_00489724(); + param_1[7] = iVar1; + FUN_0048ab0c(iVar1,param_4); + FUN_0048ad48(param_1[7],param_5); + FUN_0048add4(param_1[7],param_6); + FUN_0048ac30(param_1[7],1); + FUN_00489e04(param_1[5],param_1[7]); + FUN_0048d5d4((undefined4 *)param_1[7]); + } + FUN_0048d3e8((undefined4 *)param_1[4]); + FUN_0048d3e8((undefined4 *)param_1[5]); + FUN_00420674(param_1[0x14],param_1); + FUN_0045a744(*(int *)(DAT_004efc94 + 0x48),param_1); + return param_1; +} + + + +/* @00457d74 file=? name=FUN_00457d74 */ + +void __cdecl FUN_00457d74(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f1700; + FUN_004898b8((int *)param_1[5]); + FUN_004898b8((int *)param_1[4]); + if ((int *)param_1[7] != (int *)0x0) { + FUN_004898f8((int *)param_1[7]); + } + FUN_0041b898(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00457dc4 file=? name=FUN_00457dc4 */ + +void __cdecl FUN_00457dc4(int param_1) + +{ + float *pfVar1; + int iVar2; + undefined4 *puVar3; + + pfVar1 = (float *)(param_1 + 0x58); + iVar2 = FUN_004084fc(pfVar1,*(float **)(param_1 + 0x54),0.0001); + if (iVar2 == 0) { + FUN_00408440(pfVar1,*(undefined4 **)(param_1 + 0x54)); + puVar3 = (undefined4 *)FUN_0048a630(*(int *)(param_1 + 0x14)); + FUN_0040c18c(puVar3,pfVar1); + FUN_0045fbf4(*(int *)(DAT_004efc94 + 0x48),*(undefined4 *)(param_1 + 0x14)); + } + return; +} + + + +/* @00457e24 file=? name=FUN_00457e24 */ + +undefined4 __cdecl FUN_00457e24(int param_1) + +{ + FUN_0041b8e0(param_1); + return 1; +} + + + +/* @00457e40 file=? name=FUN_00457e40 */ + +undefined4 * __cdecl +FUN_00457e40(undefined4 *param_1,undefined4 param_2,int param_3,int param_4,undefined4 param_5, + undefined4 param_6,undefined4 *param_7,undefined4 param_8,undefined4 *param_9, + undefined4 *param_10) + +{ + int iVar1; + undefined4 *puVar2; + float *pfVar3; + float *pfVar4; + float local_98 [12]; + float local_68 [12]; + float local_38 [12]; + float *local_8; + + FUN_0041b838(param_1,2,&DAT_004e32ac); + *param_1 = &PTR_FUN_004f16e8; + param_1[0x15] = param_2; + param_1[7] = param_8; + param_1[0x16] = param_9; + param_1[4] = param_10; + FUN_0040ab28(param_1 + 9,param_7); + FUN_00408440(param_1 + 0x17,param_9); + param_1[5] = *param_10; + iVar1 = FUN_00489708(); + param_1[6] = iVar1; + FUN_00489cec(param_1[7],iVar1); + FUN_0048a714(param_1[6],param_3); + puVar2 = (undefined4 *)FUN_0048a630(param_1[6]); + FUN_0040aadc(local_38); + local_8 = (float *)(param_1 + 0x17); + pfVar3 = local_38; + pfVar4 = local_68; + for (iVar1 = 0xc; iVar1 != 0; iVar1 = iVar1 + -1) { + *pfVar4 = *pfVar3; + pfVar3 = pfVar3 + 1; + pfVar4 = pfVar4 + 1; + } + FUN_0040b374(local_38,local_68,local_8); + pfVar3 = local_38; + pfVar4 = local_98; + for (iVar1 = 0xc; iVar1 != 0; iVar1 = iVar1 + -1) { + *pfVar4 = *pfVar3; + pfVar3 = pfVar3 + 1; + pfVar4 = pfVar4 + 1; + } + FUN_0040b104(local_38,local_98,(float *)(param_1 + 9)); + FUN_0040beb0(puVar2,local_38); + iVar1 = FUN_00489724(); + param_1[8] = iVar1; + FUN_0048ab0c(iVar1,param_4); + FUN_0048ad48(param_1[8],param_5); + FUN_0048add4(param_1[8],param_6); + FUN_0048ac30(param_1[8],param_1[5]); + FUN_00489e04(param_1[6],param_1[8]); + FUN_0048d5d4((undefined4 *)param_1[8]); + FUN_0048d3e8((undefined4 *)param_1[6]); + FUN_00420674(param_1[0x15],param_1); + FUN_0045a744(*(int *)(DAT_004efc94 + 0x48),param_1); + return param_1; +} + + + +/* @00457fd8 file=? name=FUN_00457fd8 */ + +void __cdecl FUN_00457fd8(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f16e8; + FUN_004898b8((int *)param_1[6]); + FUN_004898f8((int *)param_1[8]); + FUN_0041b898(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00458018 file=? name=FUN_00458018 */ + +void __cdecl FUN_00458018(int param_1) + +{ + int iVar1; + undefined4 *puVar2; + float *pfVar3; + float *pfVar4; + float *pfVar5; + float local_94 [12]; + float local_64 [12]; + float local_34 [12]; + + iVar1 = **(int **)(param_1 + 0x10); + if (iVar1 != *(int *)(param_1 + 0x14)) { + *(int *)(param_1 + 0x14) = iVar1; + FUN_0048ac30(*(int *)(param_1 + 0x20),iVar1); + FUN_0048d5d4(*(undefined4 **)(param_1 + 0x20)); + } + pfVar4 = (float *)(param_1 + 0x5c); + iVar1 = FUN_004084fc(pfVar4,*(float **)(param_1 + 0x58),0.0001); + if (iVar1 == 0) { + FUN_00408440(pfVar4,*(undefined4 **)(param_1 + 0x58)); + puVar2 = (undefined4 *)FUN_0048a630(*(int *)(param_1 + 0x18)); + FUN_0040aadc(local_34); + pfVar3 = local_34; + pfVar5 = local_64; + for (iVar1 = 0xc; iVar1 != 0; iVar1 = iVar1 + -1) { + *pfVar5 = *pfVar3; + pfVar3 = pfVar3 + 1; + pfVar5 = pfVar5 + 1; + } + FUN_0040b374(local_34,local_64,pfVar4); + pfVar4 = local_34; + pfVar3 = local_94; + for (iVar1 = 0xc; iVar1 != 0; iVar1 = iVar1 + -1) { + *pfVar3 = *pfVar4; + pfVar4 = pfVar4 + 1; + pfVar3 = pfVar3 + 1; + } + FUN_0040b104(local_34,local_94,(float *)(param_1 + 0x24)); + FUN_0040beb0(puVar2,local_34); + FUN_0045fbf4(*(int *)(DAT_004efc94 + 0x48),*(undefined4 *)(param_1 + 0x18)); + } + return; +} + + + +/* @00458108 file=? name=FUN_00458108 */ + +undefined4 __cdecl FUN_00458108(int param_1) + +{ + FUN_0041b8e0(param_1); + return 1; +} + + + +/* @0045811c file=? name=FUN_0045811c */ + +undefined4 * __cdecl +FUN_0045811c(undefined4 *param_1,undefined4 param_2,int param_3,int param_4,undefined4 param_5, + undefined4 param_6,undefined4 *param_7,undefined4 param_8,undefined4 *param_9, + undefined4 *param_10,undefined4 *param_11) + +{ + int iVar1; + undefined4 *puVar2; + float *pfVar3; + float *pfVar4; + float local_dc [12]; + float local_ac [12]; + float local_7c [12]; + float local_4c [16]; + float *local_c; + float *local_8; + + FUN_0041b838(param_1,2,&DAT_004e32ac); + *param_1 = &PTR_FUN_004f16d0; + param_1[0x15] = param_2; + param_1[7] = param_8; + param_1[0x16] = param_9; + param_1[0x1b] = param_10; + param_1[4] = param_11; + FUN_0040ab28(param_1 + 9,param_7); + FUN_00409968(param_1 + 0x17,param_9); + FUN_00408440(param_1 + 0x1c,param_10); + param_1[5] = *param_11; + iVar1 = FUN_00489708(); + param_1[6] = iVar1; + FUN_00489cec(param_1[7],iVar1); + FUN_0048a714(param_1[6],param_3); + puVar2 = (undefined4 *)FUN_0048a630(param_1[6]); + FUN_0040aadc(local_4c); + local_8 = (float *)(param_1 + 0x1c); + pfVar3 = local_4c; + pfVar4 = local_7c; + for (iVar1 = 0xc; iVar1 != 0; iVar1 = iVar1 + -1) { + *pfVar4 = *pfVar3; + pfVar3 = pfVar3 + 1; + pfVar4 = pfVar4 + 1; + } + FUN_0040b374(local_4c,local_7c,local_8); + local_c = (float *)(param_1 + 0x17); + pfVar3 = local_4c; + pfVar4 = local_ac; + for (iVar1 = 0xc; iVar1 != 0; iVar1 = iVar1 + -1) { + *pfVar4 = *pfVar3; + pfVar3 = pfVar3 + 1; + pfVar4 = pfVar4 + 1; + } + FUN_0040b3e8(local_4c,local_ac,local_c); + pfVar3 = local_4c; + pfVar4 = local_dc; + for (iVar1 = 0xc; iVar1 != 0; iVar1 = iVar1 + -1) { + *pfVar4 = *pfVar3; + pfVar3 = pfVar3 + 1; + pfVar4 = pfVar4 + 1; + } + FUN_0040b104(local_4c,local_dc,(float *)(param_1 + 9)); + FUN_0040beb0(puVar2,local_4c); + iVar1 = FUN_00489724(); + param_1[8] = iVar1; + FUN_0048ab0c(iVar1,param_4); + FUN_0048ad48(param_1[8],param_5); + FUN_0048add4(param_1[8],param_6); + FUN_0048ac30(param_1[8],param_1[5]); + FUN_00489e04(param_1[6],param_1[8]); + FUN_0048d5d4((undefined4 *)param_1[8]); + FUN_0048d3e8((undefined4 *)param_1[6]); + FUN_00420674(param_1[0x15],param_1); + FUN_0045a744(*(int *)(DAT_004efc94 + 0x48),param_1); + return param_1; +} + + + +/* @004582fc file=? name=FUN_004582fc */ + +void __cdecl FUN_004582fc(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f16d0; + FUN_004898b8((int *)param_1[6]); + FUN_004898f8((int *)param_1[8]); + FUN_0041b898(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0045833c file=? name=FUN_0045833c */ + +void __cdecl FUN_0045833c(int param_1) + +{ + int iVar1; + undefined4 *puVar2; + float *pfVar3; + float *pfVar4; + float *pfVar5; + float local_c4 [12]; + float local_94 [12]; + float local_64 [12]; + float local_34 [12]; + + iVar1 = **(int **)(param_1 + 0x10); + if (iVar1 != *(int *)(param_1 + 0x14)) { + *(int *)(param_1 + 0x14) = iVar1; + FUN_0048ac30(*(int *)(param_1 + 0x20),iVar1); + FUN_0048d5d4(*(undefined4 **)(param_1 + 0x20)); + } + pfVar4 = (float *)(param_1 + 0x70); + iVar1 = FUN_004084fc(pfVar4,*(float **)(param_1 + 0x6c),0.0001); + if ((iVar1 != 0) && + (iVar1 = FUN_004d4b14((byte *)(param_1 + 0x5c),*(byte **)(param_1 + 0x58),0x10), iVar1 == 0)) { + return; + } + FUN_00408440(pfVar4,*(undefined4 **)(param_1 + 0x6c)); + FUN_00409968((undefined4 *)(param_1 + 0x5c),*(undefined4 **)(param_1 + 0x58)); + puVar2 = (undefined4 *)FUN_0048a630(*(int *)(param_1 + 0x18)); + FUN_0040aadc(local_34); + pfVar3 = local_34; + pfVar5 = local_64; + for (iVar1 = 0xc; iVar1 != 0; iVar1 = iVar1 + -1) { + *pfVar5 = *pfVar3; + pfVar3 = pfVar3 + 1; + pfVar5 = pfVar5 + 1; + } + FUN_0040b374(local_34,local_64,pfVar4); + pfVar4 = local_34; + pfVar3 = local_94; + for (iVar1 = 0xc; iVar1 != 0; iVar1 = iVar1 + -1) { + *pfVar3 = *pfVar4; + pfVar4 = pfVar4 + 1; + pfVar3 = pfVar3 + 1; + } + FUN_0040b3e8(local_34,local_94,(float *)(param_1 + 0x5c)); + pfVar4 = local_34; + pfVar3 = local_c4; + for (iVar1 = 0xc; iVar1 != 0; iVar1 = iVar1 + -1) { + *pfVar3 = *pfVar4; + pfVar4 = pfVar4 + 1; + pfVar3 = pfVar3 + 1; + } + FUN_0040b104(local_34,local_c4,(float *)(param_1 + 0x24)); + FUN_0040beb0(puVar2,local_34); + FUN_0045fbf4(*(int *)(DAT_004efc94 + 0x48),*(undefined4 *)(param_1 + 0x18)); + return; +} + + + +/* @00458478 file=? name=FUN_00458478 */ + +undefined4 __cdecl FUN_00458478(int param_1) + +{ + FUN_0041b8e0(param_1); + return 1; +} + + + +/* @0045848c file=? name=FUN_0045848c */ + +undefined4 * __cdecl +FUN_0045848c(undefined4 *param_1,undefined4 param_2,int param_3,int param_4,undefined4 param_5, + undefined4 param_6,undefined4 *param_7,undefined4 param_8) + +{ + undefined4 *puVar1; + int iVar2; + undefined4 *puVar3; + + FUN_0041b838(param_1,2,&DAT_004e32ac); + puVar1 = param_1 + 7; + *param_1 = &PTR_FUN_004f16b8; + FUN_0040aadc(puVar1); + param_1[0x13] = param_2; + param_1[5] = param_8; + FUN_0040ab28(puVar1,param_7); + iVar2 = FUN_00489708(); + param_1[4] = iVar2; + FUN_00489cec(param_1[5],iVar2); + FUN_0048a714(param_1[4],param_3); + puVar3 = (undefined4 *)FUN_0048a630(param_1[4]); + FUN_0040beb0(puVar3,puVar1); + if (param_4 == 0) { + param_1[6] = 0; + } + else { + iVar2 = FUN_00489724(); + param_1[6] = iVar2; + FUN_0048ab0c(iVar2,param_4); + FUN_0048ad48(param_1[6],param_5); + FUN_0048add4(param_1[6],param_6); + FUN_0048ac30(param_1[6],1); + FUN_00489e04(param_1[4],param_1[6]); + FUN_0048d5d4((undefined4 *)param_1[6]); + } + FUN_0048d3e8((undefined4 *)param_1[4]); + FUN_00420674(param_1[0x13],param_1); + return param_1; +} + + + +/* @00458598 file=? name=FUN_00458598 */ + +void __cdecl FUN_00458598(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f16b8; + FUN_004898b8((int *)param_1[4]); + if ((int *)param_1[6] != (int *)0x0) { + FUN_004898f8((int *)param_1[6]); + } + FUN_0041b898(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004585dc file=? name=FUN_004585dc */ + +undefined4 __cdecl FUN_004585dc(int param_1) + +{ + FUN_0041b8e0(param_1); + return 1; +} + + + +/* @004585f8 file=? name=FUN_004585f8 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 * __cdecl +FUN_004585f8(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 *param_4, + undefined4 param_5,int param_6,undefined4 param_7,undefined4 param_8,float param_9) + +{ + FUN_0041b838(param_1,2,&DAT_004e32ac); + *param_1 = &PTR_LAB_004f16a0; + param_1[0xe] = param_2; + param_1[8] = param_5; + FUN_00408440(param_1 + 9,param_4); + param_1[7] = param_6; + param_1[6] = *(undefined4 *)(param_6 + 0x14); + param_1[5] = param_7; + param_1[4] = param_8; + param_1[0xc] = _DAT_0045868c / (param_9 * _DAT_00458688); + param_1[0xd] = 0; + FUN_00420674(param_1[0xe],param_1); + FUN_0045a744(*(int *)(DAT_004efc94 + 0x48),param_1); + return param_1; +} + + + +/* @004586bc file=? name=FUN_004586bc */ + +undefined4 __cdecl FUN_004586bc(int param_1) + +{ + FUN_0041b8e0(param_1); + return 1; +} + + + +/* @004586d0 file=? name=FUN_004586d0 */ + +void __cdecl FUN_004586d0(int param_1) + +{ + int iVar1; + int *piVar2; + undefined4 local_1c; + undefined4 local_18; + undefined4 local_14; + undefined4 local_10; + float local_8; + + iVar1 = *(int *)(*(int *)(param_1 + 0x1c) + 0x14); + if (iVar1 == *(int *)(param_1 + 0x14)) { + if (iVar1 != *(int *)(param_1 + 0x18)) { + *(undefined4 *)(param_1 + 0x34) = 0; + } + piVar2 = (int *)FUN_00414b60(); + local_8 = (float)*piVar2 / DAT_0052140c; + if (*(float *)(param_1 + 0x34) + *(float *)(param_1 + 0x30) < local_8) { + local_10 = *(undefined4 *)(param_1 + 0x10); + local_1c = *(undefined4 *)(param_1 + 0x24); + local_18 = *(undefined4 *)(param_1 + 0x28); + local_14 = *(undefined4 *)(param_1 + 0x2c); + FUN_0048d060(0,*(int *)(param_1 + 0x20),&local_1c); + *(float *)(param_1 + 0x34) = local_8; + } + } + *(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(*(int *)(param_1 + 0x1c) + 0x14); + return; +} + + + +/* @00458754 file=? name=FUN_00458754 */ + +undefined4 * __cdecl +FUN_00458754(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 *param_4, + undefined4 param_5,undefined4 param_6,undefined4 param_7) + +{ + FUN_0041b838(param_1,2,&DAT_004e32ac); + *param_1 = &PTR_FUN_004f1688; + param_1[4] = param_2; + param_1[5] = param_5; + FUN_00408440(param_1 + 6,param_4); + param_1[9] = param_6; + param_1[10] = param_7; + param_1[0xb] = 0; + FUN_00420674(param_1[4],param_1); + FUN_0045a744(*(int *)(DAT_004efc94 + 0x48),param_1); + return param_1; +} + + + +/* @004587c8 file=? name=FUN_004587c8 */ + +void __cdecl FUN_004587c8(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f1688; + FUN_0041b898(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004587f4 file=? name=FUN_004587f4 */ + +undefined4 __cdecl FUN_004587f4(int param_1) + +{ + FUN_0041b8e0(param_1); + return 1; +} + + + +/* @00458808 file=? name=FUN_00458808 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_00458808(int param_1) + +{ + int *piVar1; + undefined4 local_1c; + undefined4 local_18; + undefined4 local_14; + undefined4 local_10; + float local_8; + + if (**(float **)(param_1 + 0x28) == _DAT_00458890) { + *(undefined4 *)(param_1 + 0x2c) = 0; + } + else { + piVar1 = (int *)FUN_00414b60(); + local_8 = (float)*piVar1 / DAT_0052140c; + if (_DAT_00458898 / (**(float **)(param_1 + 0x28) * _DAT_00458894) + *(float *)(param_1 + 0x2c) + < local_8) { + *(float *)(param_1 + 0x2c) = local_8; + local_10 = *(undefined4 *)(param_1 + 0x24); + local_1c = *(undefined4 *)(param_1 + 0x18); + local_18 = *(undefined4 *)(param_1 + 0x1c); + local_14 = *(undefined4 *)(param_1 + 0x20); + FUN_0048d060(0,*(int *)(param_1 + 0x14),&local_1c); + } + } + return; +} + + + +/* @004589a0 file=? name=FUN_004589a0 */ + +void __cdecl FUN_004589a0(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f1670; + FUN_0041b898(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004589cc file=? name=FUN_004589cc */ + +undefined4 __cdecl FUN_004589cc(int param_1) + +{ + FUN_0041b8e0(param_1); + return 1; +} + + + +/* @004589e0 file=? name=FUN_004589e0 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004589e0(int param_1) + +{ + int iVar1; + undefined4 *puVar2; + float local_9c [5]; + float local_88; + float local_74; + float local_6c [5]; + float local_58; + float local_44; + float local_3c [5]; + float local_28; + float local_14; + float local_c; + float local_8; + + local_8 = *(float *)(*(int *)(DAT_004efc94 + 0x48) + 0x80); + iVar1 = *(int *)(param_1 + 0x10); + if (iVar1 == 0) { + if (*(int *)(*(int *)(param_1 + 0x24) + 0x14) == *(int *)(param_1 + 0x14)) { + *(undefined4 *)(param_1 + 0x10) = 1; + *(float *)(param_1 + 0x20) = local_8; + local_c = local_8 - *(float *)(param_1 + 0x20); + if (local_c < _DAT_00458c4c) { + local_c = 0.05; + } + puVar2 = (undefined4 *)FUN_0048a630(*(int *)(param_1 + 0x2c)); + FUN_0040aadc(local_3c); + local_3c[0] = local_c; + local_28 = local_c; + local_14 = local_c; + FUN_0040b0ac((int)local_3c,3,*(undefined4 **)(param_1 + 0x38)); + FUN_0040beb0(puVar2,local_3c); + FUN_0048ac30(*(int *)(param_1 + 0x28),1); + FUN_0048d5d4(*(undefined4 **)(param_1 + 0x28)); + FUN_0045fbf4(*(int *)(DAT_004efc94 + 0x48),*(undefined4 *)(param_1 + 0x2c)); + } + } + else if (iVar1 == 1) { + local_c = local_8 - *(float *)(param_1 + 0x20); + if (local_c < _DAT_00458c4c) { + local_c = 0.05; + } + if (_DAT_00458c50 <= local_c) { + local_c = 1.0; + *(undefined4 *)(param_1 + 0x10) = 2; + } + puVar2 = (undefined4 *)FUN_0048a630(*(int *)(param_1 + 0x2c)); + FUN_0040aadc(local_6c); + local_6c[0] = local_c; + local_58 = local_c; + local_44 = local_c; + FUN_0040b0ac((int)local_6c,3,*(undefined4 **)(param_1 + 0x38)); + FUN_0040beb0(puVar2,local_6c); + FUN_0045fbf4(*(int *)(DAT_004efc94 + 0x48),*(undefined4 *)(param_1 + 0x2c)); + } + else if (iVar1 == 2) { + if (_DAT_00458c54 <= local_8 - *(float *)(param_1 + 0x20)) { + *(undefined4 *)(param_1 + 0x10) = 3; + *(float *)(param_1 + 0x20) = local_8 + _DAT_00458c50; + } + } + else if (iVar1 == 3) { + local_c = *(float *)(param_1 + 0x20) - local_8; + if (local_c < _DAT_00458c4c) { + local_c = 0.05; + FUN_0048ac30(*(int *)(param_1 + 0x28),0); + FUN_0048d5d4(*(undefined4 **)(param_1 + 0x28)); + *(undefined4 *)(param_1 + 0x10) = 0; + } + puVar2 = (undefined4 *)FUN_0048a630(*(int *)(param_1 + 0x2c)); + FUN_0040aadc(local_9c); + local_9c[0] = local_c; + local_88 = local_c; + local_74 = local_c; + FUN_0040b0ac((int)local_9c,3,*(undefined4 **)(param_1 + 0x38)); + FUN_0040beb0(puVar2,local_9c); + FUN_0045fbf4(*(int *)(DAT_004efc94 + 0x48),*(undefined4 *)(param_1 + 0x2c)); + } + return; +} + + + +/* @00458c58 file=munga_l4/l4vidrnd.cpp name=FUN_00458c58 */ + +undefined4 * __cdecl +FUN_00458c58(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 *param_4, + int param_5) + +{ + uint uVar1; + int iVar2; + undefined4 *puVar3; + + FUN_004530ec(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004f1658; + if (param_4 == (undefined4 *)0x0) { + FUN_0040385c(s_A_pfx_was_not_defined_in_the__in_004f15be, + s_d__tesla_bt_munga_l4_L4VIDRND_CP_004f15e6,0x182a); + } + puVar3 = param_1 + 7; + for (iVar2 = 0x41; iVar2 != 0; iVar2 = iVar2 + -1) { + *puVar3 = *param_4; + param_4 = param_4 + 1; + puVar3 = puVar3 + 1; + } + uVar1 = FUN_00460ae4(param_1[4]); + param_1[7] = uVar1 | param_1[7] & 0xffff0000; + FUN_0048d060(1,param_5,param_1 + 7); + return param_1; +} + + + +/* @00458cd4 file=? name=FUN_00458cd4 */ + +void __cdecl FUN_00458cd4(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f1658; + FUN_0048d060(2,0,param_1 + 7); + FUN_00453198(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00458d10 file=? name=FUN_00458d10 */ + +undefined4 __cdecl FUN_00458d10(int param_1) + +{ + FUN_004531c4(param_1); + return 1; +} + + + +/* @00458d24 file=? name=FUN_00458d24 */ + +void FUN_00458d24(void) + +{ + return; +} + + + +/* @00458d2c file=? name=FUN_00458d2c */ + +undefined4 * __cdecl +FUN_00458d2c(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4, + undefined4 param_5,undefined4 param_6,undefined4 param_7) + +{ + int iVar1; + undefined4 uVar2; + int iVar3; + + FUN_004530ec(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004f1640; + param_1[0xe] = param_4; + param_1[0xb] = param_5; + param_1[0xf] = param_6; + param_1[8] = param_7; + param_1[7] = 0; + iVar1 = FUN_00498448(s_tsphere_004f1608,0); + uVar2 = FUN_00489724(); + param_1[0xc] = uVar2; + iVar3 = FUN_00489708(); + param_1[0xd] = iVar3; + FUN_00489ba8(iVar3); + FUN_0048a714(param_1[0xd],param_1[0xe]); + FUN_0048ab0c(param_1[0xc],iVar1); + FUN_0048ad48(param_1[0xc],1); + FUN_0048add4(param_1[0xc],0); + FUN_0048ac30(param_1[0xc],0); + FUN_00489e04(param_1[0xd],param_1[0xc]); + FUN_0048d5d4((undefined4 *)param_1[0xc]); + FUN_0048d3e8((undefined4 *)param_1[0xd]); + (**(code **)(*(int *)(param_1[0xb] + 0x2c) + 4))(param_1[0xb] + 0x2c,param_1); + return param_1; +} + + + +/* @00458e1c file=? name=FUN_00458e1c */ + +void __cdecl FUN_00458e1c(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f1640; + FUN_00453198(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00458e48 file=? name=FUN_00458e48 */ + +undefined4 __cdecl FUN_00458e48(int param_1) + +{ + FUN_0041b8e0(param_1); + return 1; +} + + + diff --git a/reference/decomp/archive_2025export/all/part_008.c b/reference/decomp/archive_2025export/all/part_008.c new file mode 100644 index 0000000..566d095 --- /dev/null +++ b/reference/decomp/archive_2025export/all/part_008.c @@ -0,0 +1,16820 @@ +/* @00458e5c file=? name=FUN_00458e5c */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_00458e5c(int param_1) + +{ + int iVar1; + undefined4 *puVar2; + float local_9c [5]; + float local_88; + float local_74; + float local_6c [5]; + float local_58; + float local_44; + float local_3c [5]; + float local_28; + float local_14; + float local_c; + float local_8; + + local_8 = *(float *)(*(int *)(param_1 + 0x10) + 0x80); + iVar1 = *(int *)(param_1 + 0x1c); + if (iVar1 == 0) { + if (*(int *)(*(int *)(param_1 + 0x2c) + 0x14) == *(int *)(param_1 + 0x20)) { + *(undefined4 *)(param_1 + 0x1c) = 1; + *(float *)(param_1 + 0x28) = local_8; + local_c = local_8 - *(float *)(param_1 + 0x28); + if (local_c < _DAT_004590cc) { + local_c = 0.05; + } + puVar2 = (undefined4 *)FUN_0048a630(*(int *)(param_1 + 0x34)); + FUN_0040aadc(local_3c); + local_3c[0] = local_c; + local_28 = local_c; + local_14 = local_c; + FUN_0040b0ac((int)local_3c,3,*(undefined4 **)(param_1 + 0x3c)); + FUN_0040beb0(puVar2,local_3c); + FUN_0048ac30(*(int *)(param_1 + 0x30),1); + FUN_0048d5d4(*(undefined4 **)(param_1 + 0x30)); + FUN_0045fbf4(*(int *)(param_1 + 0x10),*(undefined4 *)(param_1 + 0x34)); + FUN_0045a744(*(int *)(param_1 + 0x10),param_1); + } + } + else if (iVar1 == 1) { + local_c = local_8 - *(float *)(param_1 + 0x28); + if (local_c < _DAT_004590cc) { + local_c = 0.05; + } + if (_DAT_004590d0 <= local_c) { + local_c = 1.0; + *(undefined4 *)(param_1 + 0x1c) = 2; + } + puVar2 = (undefined4 *)FUN_0048a630(*(int *)(param_1 + 0x34)); + FUN_0040aadc(local_6c); + local_6c[0] = local_c; + local_58 = local_c; + local_44 = local_c; + FUN_0040b0ac((int)local_6c,3,*(undefined4 **)(param_1 + 0x3c)); + FUN_0040beb0(puVar2,local_6c); + FUN_0045fbf4(*(int *)(param_1 + 0x10),*(undefined4 *)(param_1 + 0x34)); + } + else if (iVar1 == 2) { + if (_DAT_004590d4 <= local_8 - *(float *)(param_1 + 0x28)) { + *(undefined4 *)(param_1 + 0x1c) = 3; + *(float *)(param_1 + 0x28) = local_8 + _DAT_004590d0; + } + } + else if (iVar1 == 3) { + local_c = *(float *)(param_1 + 0x28) - local_8; + if (local_c < _DAT_004590cc) { + local_c = 0.05; + FUN_0048ac30(*(int *)(param_1 + 0x30),0); + FUN_0048d5d4(*(undefined4 **)(param_1 + 0x30)); + *(undefined4 *)(param_1 + 0x1c) = 0; + FUN_0045a764(*(int *)(param_1 + 0x10),param_1); + } + puVar2 = (undefined4 *)FUN_0048a630(*(int *)(param_1 + 0x34)); + FUN_0040aadc(local_9c); + local_9c[0] = local_c; + local_88 = local_c; + local_74 = local_c; + FUN_0040b0ac((int)local_9c,3,*(undefined4 **)(param_1 + 0x3c)); + FUN_0040beb0(puVar2,local_9c); + FUN_0045fbf4(*(int *)(param_1 + 0x10),*(undefined4 *)(param_1 + 0x34)); + } + return; +} + + + +/* @004590d8 file=? name=FUN_004590d8 */ + +undefined4 * __cdecl +FUN_004590d8(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4, + undefined4 param_5,undefined4 param_6,undefined4 param_7,undefined4 param_8, + undefined4 *param_9,undefined4 param_10,undefined4 param_11,undefined4 param_12, + undefined4 param_13,undefined4 param_14) + +{ + float *pfVar1; + undefined4 *puVar2; + int iVar3; + float *pfVar4; + float *pfVar5; + float local_94 [12]; + float local_64 [12]; + float local_34 [12]; + + FUN_004536b4(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9); + *param_1 = &PTR_FUN_004f1628; + param_1[0x1b] = param_10; + param_1[0x1c] = param_11; + param_1[0x1f] = 0; + param_1[0x1d] = param_12; + param_1[0x1e] = param_13; + param_1[0x20] = param_14; + param_1[0x21] = 0; + puVar2 = (undefined4 *)FUN_0048a630(param_1[0xb]); + FUN_0040aadc(local_34); + pfVar1 = (float *)param_1[0x1e]; + pfVar4 = local_34; + pfVar5 = local_64; + for (iVar3 = 0xc; iVar3 != 0; iVar3 = iVar3 + -1) { + *pfVar5 = *pfVar4; + pfVar4 = pfVar4 + 1; + pfVar5 = pfVar5 + 1; + } + FUN_0040b374(local_34,local_64,pfVar1); + pfVar1 = (float *)param_1[0x1d]; + pfVar4 = local_34; + pfVar5 = local_94; + for (iVar3 = 0xc; iVar3 != 0; iVar3 = iVar3 + -1) { + *pfVar5 = *pfVar4; + pfVar4 = pfVar4 + 1; + pfVar5 = pfVar5 + 1; + } + FUN_0040b3e8(local_34,local_94,pfVar1); + FUN_0040beb0(puVar2,local_34); + FUN_0048d3e8((undefined4 *)param_1[0xb]); + FUN_0048ac30(param_1[0xc],param_1[0x1f]); + FUN_0048d5d4((undefined4 *)param_1[0xc]); + (**(code **)(*(int *)(param_1[0x1b] + 0x2c) + 4))(param_1[0x1b] + 0x2c,param_1); + return param_1; +} + + + +/* @004591f8 file=? name=FUN_004591f8 */ + +void __cdecl FUN_004591f8(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f1628; + FUN_00453768(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00459224 file=? name=FUN_00459224 */ + +undefined4 __cdecl FUN_00459224(int param_1) + +{ + FUN_004537c4(param_1); + return 1; +} + + + +/* @00459238 file=? name=FUN_00459238 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_00459238(int param_1) + +{ + float *pfVar1; + undefined4 *puVar2; + int iVar3; + float *pfVar4; + float *pfVar5; + float local_b4 [12]; + float local_84 [12]; + float local_54 [4]; + float local_44 [12]; + undefined4 local_14; + undefined4 local_10; + int local_c; + undefined4 local_8; + + if (*(int *)(*(int *)(param_1 + 0x6c) + 0x14) == *(int *)(param_1 + 0x70)) { + if (*(int *)(param_1 + 0x7c) == 0) { + *(undefined4 *)(param_1 + 0x7c) = 1; + FUN_0048ac30(*(int *)(param_1 + 0x30),1); + FUN_0048d5d4(*(undefined4 **)(param_1 + 0x30)); + FUN_0045a744(*(int *)(param_1 + 0x10),param_1); + } + *(float *)(param_1 + 0x84) = *(float *)(param_1 + 0x80) + *(float *)(param_1 + 0x84); + if (_DAT_004593bc < *(float *)(param_1 + 0x84)) { + *(float *)(param_1 + 0x84) = *(float *)(param_1 + 0x84) - _DAT_004593bc; + } + local_14 = *(undefined4 *)(param_1 + 0x84); + local_c = 2; + local_10 = local_14; + local_8 = local_14; + puVar2 = (undefined4 *)FUN_0048a630(*(int *)(param_1 + 0x2c)); + FUN_0040aadc(local_44); + FUN_0040998c(local_54,&local_c); + FUN_0040adec(local_44,local_54); + pfVar1 = *(float **)(param_1 + 0x78); + pfVar4 = local_44; + pfVar5 = local_84; + for (iVar3 = 0xc; iVar3 != 0; iVar3 = iVar3 + -1) { + *pfVar5 = *pfVar4; + pfVar4 = pfVar4 + 1; + pfVar5 = pfVar5 + 1; + } + FUN_0040b374(local_44,local_84,pfVar1); + pfVar1 = *(float **)(param_1 + 0x74); + pfVar4 = local_44; + pfVar5 = local_b4; + for (iVar3 = 0xc; iVar3 != 0; iVar3 = iVar3 + -1) { + *pfVar5 = *pfVar4; + pfVar4 = pfVar4 + 1; + pfVar5 = pfVar5 + 1; + } + FUN_0040b3e8(local_44,local_b4,pfVar1); + FUN_0040beb0(puVar2,local_44); + FUN_0045fbf4(*(int *)(param_1 + 0x10),*(undefined4 *)(param_1 + 0x2c)); + } + else if (*(int *)(param_1 + 0x7c) != 0) { + *(undefined4 *)(param_1 + 0x7c) = 0; + FUN_0048ac30(*(int *)(param_1 + 0x30),0); + FUN_0048d5d4(*(undefined4 **)(param_1 + 0x30)); + FUN_0045a764(*(int *)(param_1 + 0x10),param_1); + } + FUN_004537d8(); + return; +} + + + +/* @004593c0 file=? name=FUN_004593c0 */ + +undefined4 * __cdecl +FUN_004593c0(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4, + undefined4 param_5,undefined4 param_6,undefined4 param_7,undefined4 param_8, + undefined4 *param_9,undefined4 param_10,undefined4 param_11,undefined4 param_12, + undefined4 param_13) + +{ + float *pfVar1; + undefined4 *puVar2; + int iVar3; + float *pfVar4; + float *pfVar5; + float local_94 [12]; + float local_64 [12]; + float local_34 [12]; + + FUN_004536b4(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9); + *param_1 = &PTR_FUN_004f1610; + param_1[0x1b] = param_10; + param_1[0x1c] = param_11; + param_1[0x1f] = 0; + param_1[0x1d] = param_12; + param_1[0x1e] = param_13; + puVar2 = (undefined4 *)FUN_0048a630(param_1[0xb]); + FUN_0040aadc(local_34); + pfVar1 = (float *)param_1[0x1e]; + pfVar4 = local_34; + pfVar5 = local_64; + for (iVar3 = 0xc; iVar3 != 0; iVar3 = iVar3 + -1) { + *pfVar5 = *pfVar4; + pfVar4 = pfVar4 + 1; + pfVar5 = pfVar5 + 1; + } + FUN_0040b374(local_34,local_64,pfVar1); + pfVar1 = (float *)param_1[0x1d]; + pfVar4 = local_34; + pfVar5 = local_94; + for (iVar3 = 0xc; iVar3 != 0; iVar3 = iVar3 + -1) { + *pfVar5 = *pfVar4; + pfVar4 = pfVar4 + 1; + pfVar5 = pfVar5 + 1; + } + FUN_0040b3e8(local_34,local_94,pfVar1); + FUN_0040beb0(puVar2,local_34); + FUN_0048d3e8((undefined4 *)param_1[0xb]); + FUN_0048ac30(param_1[0xc],param_1[0x1f]); + FUN_0048d5d4((undefined4 *)param_1[0xc]); + (**(code **)(*(int *)(param_1[0x1b] + 0x2c) + 4))(param_1[0x1b] + 0x2c,param_1); + return param_1; +} + + + +/* @004594cc file=? name=FUN_004594cc */ + +void __cdecl FUN_004594cc(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f1610; + FUN_00453768(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004594f8 file=? name=FUN_004594f8 */ + +undefined4 __cdecl FUN_004594f8(int param_1) + +{ + FUN_004537c4(param_1); + return 1; +} + + + +/* @0045950c file=? name=FUN_0045950c */ + +void __cdecl FUN_0045950c(int param_1) + +{ + float *pfVar1; + undefined4 *puVar2; + int iVar3; + float *pfVar4; + float *pfVar5; + float local_94 [12]; + float local_64 [12]; + float local_34 [12]; + + if (*(int *)(*(int *)(param_1 + 0x6c) + 0x14) == *(int *)(param_1 + 0x70)) { + if (*(int *)(param_1 + 0x7c) == 0) { + *(undefined4 *)(param_1 + 0x7c) = 1; + FUN_0048ac30(*(int *)(param_1 + 0x30),1); + FUN_0048d5d4(*(undefined4 **)(param_1 + 0x30)); + FUN_0045a744(*(int *)(param_1 + 0x10),param_1); + } + puVar2 = (undefined4 *)FUN_0048a630(*(int *)(param_1 + 0x2c)); + FUN_0040aadc(local_34); + pfVar1 = *(float **)(param_1 + 0x78); + pfVar4 = local_34; + pfVar5 = local_64; + for (iVar3 = 0xc; iVar3 != 0; iVar3 = iVar3 + -1) { + *pfVar5 = *pfVar4; + pfVar4 = pfVar4 + 1; + pfVar5 = pfVar5 + 1; + } + FUN_0040b374(local_34,local_64,pfVar1); + pfVar1 = *(float **)(param_1 + 0x74); + pfVar4 = local_34; + pfVar5 = local_94; + for (iVar3 = 0xc; iVar3 != 0; iVar3 = iVar3 + -1) { + *pfVar5 = *pfVar4; + pfVar4 = pfVar4 + 1; + pfVar5 = pfVar5 + 1; + } + FUN_0040b3e8(local_34,local_94,pfVar1); + FUN_0040beb0(puVar2,local_34); + FUN_0045fbf4(*(int *)(param_1 + 0x10),*(undefined4 *)(param_1 + 0x2c)); + } + else if (*(int *)(param_1 + 0x7c) != 0) { + *(undefined4 *)(param_1 + 0x7c) = 0; + FUN_0048ac30(*(int *)(param_1 + 0x30),0); + FUN_0048d5d4(*(undefined4 **)(param_1 + 0x30)); + FUN_0045a764(*(int *)(param_1 + 0x10),param_1); + } + FUN_004537d8(); + return; +} + + + +/* @0045961f file=? name=FUN_0045961f */ + +undefined4 __cdecl FUN_0045961f(float *param_1,float *param_2,float param_3) + +{ + float10 fVar1; + + fVar1 = FUN_004dcd00((double)(*param_1 - *param_2)); + if ((fVar1 <= (float10)param_3) && + (fVar1 = FUN_004dcd00((double)(param_1[1] - param_2[1])), fVar1 <= (float10)param_3)) { + return 1; + } + return 0; +} + + + +/* @004596a6 file=? name=FUN_004596a6 */ + +void FUN_004596a6(void) + +{ + return; +} + + + +/* @00459eb8 file=? name=FUN_00459eb8 */ + +char * __cdecl FUN_00459eb8(char *param_1) + +{ + char cVar1; + undefined4 *puVar2; + char *pcVar3; + uint uVar4; + int iVar5; + uint uVar6; + char *pcVar7; + char *pcVar8; + + puVar2 = *(undefined4 **)(DAT_004f1aac + 4); + while( true ) { + if (puVar2 == (undefined4 *)0x0) { + return param_1; + } + pcVar7 = (char *)(puVar2 + 2); + if (((pcVar7 != (char *)0x0) && (*pcVar7 != '\0')) && + (pcVar3 = FUN_004d4c78(param_1,pcVar7), pcVar3 != (char *)0x0)) break; + puVar2 = (undefined4 *)*puVar2; + } + pcVar8 = (char *)puVar2[1]; + DAT_00522b9c = 0; + uVar4 = (int)pcVar3 - (int)param_1; + for (; *pcVar8 == '<'; pcVar8 = pcVar8 + 1) { + uVar4 = uVar4 - 1; + } + if (0 < (int)uVar4) { + FUN_004d4a94(&DAT_00522b9c,param_1,uVar4); + } + iVar5 = FUN_004d4a78(pcVar7); + pcVar3 = pcVar3 + iVar5; + uVar4 = FUN_004d4a78(pcVar8); + pcVar7 = pcVar8 + (uVar4 - 1); + while ((uVar4 != 0 && (*pcVar7 == '>'))) { + uVar4 = uVar4 - 1; + pcVar7 = pcVar7 + -1; + if (*pcVar3 != '\0') { + pcVar3 = pcVar3 + 1; + } + } + if (0 < (int)uVar4) { + FUN_004d4a94(&DAT_00522b9c,pcVar8,uVar4); + } + FUN_004d49b8(&DAT_00522b9c,pcVar3); + uVar4 = 0xffffffff; + pcVar7 = &DAT_00522b9c; + do { + pcVar3 = pcVar7; + if (uVar4 == 0) break; + uVar4 = uVar4 - 1; + pcVar3 = pcVar7 + 1; + cVar1 = *pcVar7; + pcVar7 = pcVar3; + } while (cVar1 != '\0'); + uVar4 = ~uVar4; + pcVar7 = pcVar3 + -uVar4; + pcVar3 = param_1; + for (uVar6 = uVar4 >> 2; uVar6 != 0; uVar6 = uVar6 - 1) { + *(undefined4 *)pcVar3 = *(undefined4 *)pcVar7; + pcVar7 = pcVar7 + 4; + pcVar3 = pcVar3 + 4; + } + for (uVar4 = uVar4 & 3; uVar4 != 0; uVar4 = uVar4 - 1) { + *pcVar3 = *pcVar7; + pcVar7 = pcVar7 + 1; + pcVar3 = pcVar3 + 1; + } + return param_1; +} + + + +/* @00459fb4 file=? name=FUN_00459fb4 */ + +char * __cdecl +FUN_00459fb4(char *param_1,char *param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5, + undefined4 param_6) + +{ + char cVar1; + int iVar2; + char *pcVar3; + uint uVar4; + uint uVar5; + char *pcVar6; + + uVar4 = 0xffffffff; + pcVar3 = param_2; + do { + pcVar6 = pcVar3; + if (uVar4 == 0) break; + uVar4 = uVar4 - 1; + pcVar6 = pcVar3 + 1; + cVar1 = *pcVar3; + pcVar3 = pcVar6; + } while (cVar1 != '\0'); + uVar4 = ~uVar4; + pcVar3 = pcVar6 + -uVar4; + pcVar6 = param_1; + for (uVar5 = uVar4 >> 2; uVar5 != 0; uVar5 = uVar5 - 1) { + *(undefined4 *)pcVar6 = *(undefined4 *)pcVar3; + pcVar3 = pcVar3 + 4; + pcVar6 = pcVar6 + 4; + } + for (uVar4 = uVar4 & 3; uVar4 != 0; uVar4 = uVar4 - 1) { + *pcVar6 = *pcVar3; + pcVar3 = pcVar3 + 1; + pcVar6 = pcVar6 + 1; + } + iVar2 = FUN_004d4a78(param_2); + pcVar3 = param_1 + iVar2; + while (pcVar3 = pcVar3 + 1, pcVar3 < param_1 + 0xf) { + *pcVar3 = '\0'; + } + *(undefined4 *)(param_1 + 0x10) = param_3; + *(undefined4 *)(param_1 + 0x14) = param_4; + *(undefined4 *)(param_1 + 0x18) = param_5; + *(undefined4 *)(param_1 + 0x1c) = param_6; + return param_1; +} + + + +/* @0045a01c file=? name=FUN_0045a01c */ + +void __cdecl FUN_0045a01c(int *param_1,byte param_2) + +{ + if ((param_1 != (int *)0x0) && ((param_2 & 1) != 0)) { + FUN_004022d0(param_1); + } + return; +} + + + +/* @0045a038 file=? name=FUN_0045a038 */ + +undefined4 FUN_0045a038(void) + +{ + return 1; +} + + + +/* @0045a044 file=? name=FUN_0045a044 */ + +undefined4 * __cdecl FUN_0045a044(undefined4 *param_1,undefined4 param_2,undefined4 param_3) + +{ + FUN_00415e90(param_1,1); + *param_1 = &PTR_FUN_004f3358; + param_1[3] = param_2; + param_1[4] = param_3; + return param_1; +} + + + +/* @0045a070 file=? name=FUN_0045a070 */ + +void __cdecl FUN_0045a070(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f3358; + if (param_1[4] != 0) { + FUN_0045a01c((int *)param_1[3],3); + } + FUN_00415ed8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0045a0b0 file=? name=FUN_0045a0b0 */ + +undefined4 FUN_0045a0b0(void) + +{ + return 1; +} + + + +/* @0045a0c4 file=? name=FUN_0045a0c4 */ + +int __cdecl FUN_0045a0c4(int *param_1,int param_2) + +{ + int iVar1; + undefined4 *puVar2; + int *piVar3; + int iVar4; + + iVar1 = **(int **)(param_2 + 0x3c); + iVar4 = 0; + piVar3 = *(int **)(param_2 + 0x3c) + 1; + if (0 < iVar1) { + do { + puVar2 = (undefined4 *)FUN_00402298(0x14); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_0045a044(puVar2,piVar3,0); + } + (**(code **)(*param_1 + 4))(param_1,puVar2); + iVar4 = iVar4 + 1; + piVar3 = piVar3 + 8; + } while (iVar4 < iVar1); + } + return iVar1; +} + + + +/* @0045a134 file=? name=FUN_0045a134 */ + +void __cdecl FUN_0045a134(int param_1) + +{ + undefined4 *puVar1; + int local_10 [3]; + + FUN_004614b8(local_10,param_1); + while( true ) { + puVar1 = (undefined4 *)(**(code **)(local_10[0] + 0x28))(local_10); + if (puVar1 == (undefined4 *)0x0) break; + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + } + FUN_00461515(local_10,2); + return; +} + + + +/* @0045a180 file=? name=FUN_0045a180 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 * __cdecl +FUN_0045a180(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4, + undefined4 param_5,undefined4 param_6) + +{ + int *piVar1; + char *pcVar2; + undefined4 *puVar3; + undefined4 uVar4; + int iVar5; + float10 fVar6; + undefined4 local_d0 [32]; + char local_50; + float local_1c; + float local_18; + float local_14; + undefined4 local_10; + undefined4 local_c; + undefined4 local_8; + + FUN_004368b8(param_1,param_2,param_3,param_4,param_5,param_6); + *param_1 = &PTR_FUN_004f330c; + FUN_0040aadc(param_1 + 0x14); + FUN_004612dd(param_1 + 0xdf,0); + FUN_00461328(param_1 + 0xe4,0,0); + FUN_0046140e(param_1 + 0xe9,0,0); + FUN_0041c42c(param_1 + 0xef,0); + param_1[0x2c] = 0; + param_1[0x2d] = 0; + param_1[0x2f] = 0; + param_1[0x2b] = 1; + param_1[0x32] = 0; + param_1[0x33] = 0; + param_1[0x34] = 0; + param_1[0x35] = 0; + param_1[0x36] = 0; + param_1[0x37] = 0; + param_1[0x39] = 0; + param_1[0x38] = 0; + param_1[0x3a] = 0; + param_1[0x3b] = 0; + param_1[0x3c] = 0; + param_1[0x3e] = 0; + param_1[0x3d] = 0; + param_1[0x3f] = 0; + param_1[0x40] = 0; + param_1[0x41] = 0; + param_1[0x42] = 0; + param_1[0x43] = 0; + param_1[0x44] = 0; + param_1[0x45] = 0; + param_1[0x46] = 0x41f00000; + param_1[0x49] = 0; + param_1[0x4a] = 0; + param_1[0x4b] = 0; + param_1[0x4c] = 0; + param_1[0xdb] = 0; + param_1[0xdc] = 0; + param_1[0xdd] = 0; + param_1[0xde] = 0; + param_1[0xb2] = 0; + param_1[0x2e] = 0; + param_1[0xf4] = 0; + param_1[0xf6] = 0; + param_1[0xf5] = 0; + param_1[0xf7] = 0; + FUN_0040ab28(param_1 + 0x14,&DAT_004e107c); + piVar1 = (int *)FUN_00414b60(); + param_1[0x20] = (float)*piVar1 / DAT_0052140c; + piVar1 = (int *)FUN_00402298(0x24); + if (piVar1 == (int *)0x0) { + DAT_004f1ab0 = (int *)0x0; + } + else { + DAT_004f1ab0 = FUN_00401c18(piVar1,0x4f1e7a,2000000); + } + iVar5 = 0; + puVar3 = param_1 + 0xb3; + do { + iVar5 = iVar5 + 1; + *puVar3 = 0; + puVar3 = puVar3 + 1; + } while (iVar5 < 0x28); + local_8 = 0; + local_c = 0x41200000; + local_10 = 0; + local_14 = 0.0; + local_18 = 0.0; + local_1c = 0.0; + local_50 = '\0'; + pcVar2 = (char *)FUN_004dee74(s_DPLARG_004f1e83); + iVar5 = FUN_004dee74(s_L4EYES_004f1e8a); + if (iVar5 != 0) { + FUN_004d7f84(iVar5,(byte *)s__f__f__f__f__f__f__s_004f1e91); + FUN_004d771c(s__f___f___f__f___f___f_004f1ea6); + param_1[0x13] = 1; + if (local_50 == 'r') { + FUN_004dbb24(&DAT_00524e20,s_DPLRenderer__DPLRenderer_Eye_wil_004f1ebe,(char *)0x0); + param_1[0x2c] = 1; + } + } + if (pcVar2 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DPLARG_must_be_set_for_the_Divis_004f1eff,(char *)0x0); + } + iVar5 = FUN_0046181c(pcVar2); + if (iVar5 == 0) { + FUN_004dbb24(&DAT_00524e20,s_DPLARG_is_bad__I_couldn_t_unders_004f1f34,(char *)0x0); + } + iVar5 = FUN_00461d14((int)local_d0,pcVar2,'~'); + FUN_0048d108(iVar5,local_d0); + FUN_00497b9c(&DAT_004f1f67,FUN_00495048); + FUN_00498d38(&DAT_004f1f6c,FUN_0049a1dc); + FUN_00498d38(&DAT_004f1f71,FUN_00499ab0); + FUN_00496634(&LAB_004596ac); + FUN_00496604(&LAB_00459e64); + puVar3 = FUN_004896cc(); + param_1[0x4b] = puVar3; + puVar3 = FUN_004896cc(); + param_1[0x4a] = puVar3; + uVar4 = FUN_004896f0(); + param_1[0x49] = uVar4; + iVar5 = FUN_00489708(); + param_1[0x48] = iVar5; + FUN_00491c90(iVar5,local_1c,2); + FUN_00491c90(param_1[0x48],local_14,0); + FUN_00491c90(param_1[0x48],local_18,1); + FUN_00491c58(param_1[0x48],local_8,local_c,local_10); + FUN_0048a714(param_1[0x48],param_1[0x4b]); + FUN_0048b4ac(param_1[0x49],param_1[0x48]); + FUN_0048a890(param_1[0x4b]); + FUN_0048a890(param_1[0x4a]); + FUN_0048b56c(param_1[0x49],0x3f800000,0x40000000); + FUN_0048b608(param_1[0x49],0,0,0); + FUN_0048b83c(0,0,0,DAT_004f3368,DAT_004f336c); + fVar6 = (float10)FUN_004dd188(0x40000000,0x3fe0c152); + FUN_0048b9d0(param_1[0x49],0xbf800000,0xbf800000,0x3f800000,0x3f800000, + (float)((float10)_DAT_0045a720 / fVar6)); + FUN_0048b788(param_1[0x49],0); + FUN_00489bd4(param_1[0x49]); + FUN_0048b6b4(param_1[0x49],5,0,0,0,0x3c23d70a,0x3d4ccccd); + FUN_0048d3e8((undefined4 *)param_1[0x48]); + FUN_0048d42c((undefined4 *)param_1[0x49]); + FUN_0048d4b0((undefined4 *)param_1[0x4b]); + FUN_0048d4b0((undefined4 *)param_1[0x4a]); + FUN_0048a1bc(); + puVar3 = (undefined4 *)FUN_00414b60(); + param_1[0x2a] = *puVar3; + param_1[0x31] = 0; + FUN_0045f784((int)param_1); + param_1[0x28] = 0; + return param_1; +} + + + +/* @0045a724 file=? name=FUN_0045a724 */ + +undefined4 * FUN_0045a724(void) + +{ + undefined4 *puVar1; + + puVar1 = FUN_004896cc(); + FUN_0048a890((int)puVar1); + FUN_0048d4b0(puVar1); + return puVar1; +} + + + +/* @0045a744 file=? name=FUN_0045a744 */ + +void __cdecl FUN_0045a744(int param_1,undefined4 param_2) + +{ + (**(code **)(*(int *)(param_1 + 0x3bc) + 4))(param_1 + 0x3bc,param_2); + return; +} + + + +/* @0045a764 file=? name=FUN_0045a764 */ + +void __cdecl FUN_0045a764(int param_1,int param_2) + +{ + int local_14 [4]; + + FUN_00415f30(local_14,param_2,0xffffffff); + FUN_004161fc((int)local_14,param_1 + 0x3bc); + FUN_00415f90(local_14,2); + return; +} + + + +/* @0045a7a8 file=? name=FUN_0045a7a8 */ + +void __cdecl FUN_0045a7a8(int param_1,undefined4 param_2) + +{ + switch(param_2) { + case 0: + *(undefined4 *)(param_1 + 0xac) = 1; + return; + case 1: + *(undefined4 *)(param_1 + 0xac) = 0; + return; + case 2: + *(undefined4 *)(param_1 + 200) = *(undefined4 *)(param_1 + 0xdc); + *(undefined4 *)(param_1 + 0xd0) = *(undefined4 *)(param_1 + 0xe4); + *(undefined4 *)(param_1 + 0xcc) = *(undefined4 *)(param_1 + 0xe0); + *(undefined4 *)(param_1 + 0xd4) = *(undefined4 *)(param_1 + 0xe8); + *(undefined4 *)(param_1 + 0xd8) = *(undefined4 *)(param_1 + 0xec); + if (*(int *)(param_1 + 0xac) != 0) { + FUN_0048b6b4(*(int *)(param_1 + 0x124),5,*(undefined4 *)(param_1 + 200), + *(undefined4 *)(param_1 + 0xd0),*(undefined4 *)(param_1 + 0xcc), + *(undefined4 *)(param_1 + 0xd4),*(undefined4 *)(param_1 + 0xd8)); + FUN_0048d42c(*(undefined4 **)(param_1 + 0x124)); + return; + } + break; + case 3: + *(undefined4 *)(param_1 + 200) = *(undefined4 *)(param_1 + 0xf0); + *(undefined4 *)(param_1 + 0xd0) = *(undefined4 *)(param_1 + 0xf8); + *(undefined4 *)(param_1 + 0xcc) = *(undefined4 *)(param_1 + 0xf4); + *(undefined4 *)(param_1 + 0xd4) = *(undefined4 *)(param_1 + 0xfc); + *(undefined4 *)(param_1 + 0xd8) = *(undefined4 *)(param_1 + 0x100); + if (*(int *)(param_1 + 0xac) != 0) { + FUN_0048b6b4(*(int *)(param_1 + 0x124),5,*(undefined4 *)(param_1 + 200), + *(undefined4 *)(param_1 + 0xd0),*(undefined4 *)(param_1 + 0xcc), + *(undefined4 *)(param_1 + 0xd4),*(undefined4 *)(param_1 + 0xd8)); + FUN_0048d42c(*(undefined4 **)(param_1 + 0x124)); + return; + } + break; + case 4: + FUN_0048b56c(*(int *)(param_1 + 0x124),0x3e800000,0x44898000); + FUN_0048b6b4(*(int *)(param_1 + 0x124),5,0x3ea3d70a,0x3e99999a,0x3f266666,0x42c80000,0x44834000) + ; + FUN_0048d42c(*(undefined4 **)(param_1 + 0x124)); + } + return; +} + + + +/* @0045a954 file=? name=FUN_0045a954 */ + +void __cdecl +FUN_0045a954(int param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4, + undefined4 *param_5,undefined4 *param_6) + +{ + *param_2 = *(undefined4 *)(param_1 + 200); + *param_3 = *(undefined4 *)(param_1 + 0xd0); + *param_4 = *(undefined4 *)(param_1 + 0xcc); + *param_5 = *(undefined4 *)(param_1 + 0xd4); + *param_6 = *(undefined4 *)(param_1 + 0xd8); + return; +} + + + +/* @0045a994 file=munga_l4/l4video.cpp name=FUN_0045a994 */ + +void __cdecl FUN_0045a994(undefined4 param_1,int param_2,undefined4 param_3) + +{ + int iVar1; + int iVar2; + + iVar1 = FUN_004904a0(param_2); + if (iVar1 != 0) { + FUN_0040385c(s_DPLRenderer__MarkDCSHiearchy_tri_004f1f76, + s_d__tesla_bt_munga_l4_L4VIDEO_CPP_004f1fc1,0x5c8); + } + FUN_00490490(param_2,param_3); + iVar1 = 0; + while( true ) { + iVar2 = FUN_0048a2ec(param_2,iVar1); + if (iVar2 == 0) break; + FUN_0045a994(param_1,iVar2,param_3); + iVar1 = iVar1 + 1; + } + return; +} + + + +/* @0045a9f8 file=munga_l4/l4video.cpp name=FUN_0045a9f8 */ + +int __cdecl FUN_0045a9f8(undefined4 param_1,char *param_2) + +{ + int *piVar1; + int iVar2; + char *pcVar3; + char *pcVar4; + undefined4 uVar5; + undefined4 *puVar6; + int iVar7; + undefined4 local_108; + undefined2 uStack_104; + undefined1 uStack_102; + int local_8; + + local_108 = DAT_004f1fe2; + uStack_104 = DAT_004f1fe6; + uStack_102 = DAT_004f1fe8; + FUN_004d49b8((char *)&local_108,param_2); + piVar1 = FUN_004d6f54((LPCSTR)&local_108,&DAT_004f1fe9); + if (piVar1 == (int *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_Could_not_open_pfx_file_004f1fec,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,(char *)&local_108,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_effects_using_it_will_fail_004f2005,(char *)0x0); + iVar2 = 0; + } + else { + iVar2 = FUN_00402298(0x104); + if (iVar2 == 0) { + FUN_0040385c(s_ran_out_of_RAM_trying_to_read_a_p_004f2022, + s_d__tesla_bt_munga_l4_L4VIDEO_CPP_004f204c,0x5f8); + } + pcVar3 = (char *)FUN_004d6c20(&local_108,0xff,piVar1); + iVar7 = 0; + pcVar4 = pcVar3; + do { + if (*pcVar4 == '\n') { + *pcVar4 = '\0'; + } + iVar7 = iVar7 + 1; + pcVar4 = pcVar4 + 1; + } while (iVar7 < 0xff); + uVar5 = FUN_00497730(pcVar3,0,&local_8); + *(undefined4 *)(iVar2 + 0x100) = uVar5; + puVar6 = FUN_004d6c20(&local_108,0xff,piVar1); + local_8 = FUN_004d7f84(puVar6,(byte *)s__x__d__f__f_004f206d); + if (local_8 < 4) { + FUN_004dbb24(&DAT_00524e20,s_pfx_file_004f207a,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_did_not_read_correctly_004f2084,(char *)0x0); + iVar2 = 0; + } + else { + puVar6 = FUN_004d6c20(&local_108,0xff,piVar1); + local_8 = FUN_004d7f84(puVar6,(byte *)s__f__f__f__f_004f209d); + if (local_8 < 4) { + FUN_004dbb24(&DAT_00524e20,s_pfx_file_004f20aa,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_did_not_read_correctly_004f20b4,(char *)0x0); + iVar2 = 0; + } + else { + puVar6 = FUN_004d6c20(&local_108,0xff,piVar1); + local_8 = FUN_004d7f84(puVar6,(byte *)s__f__f__f__f__f__f_004f20cd); + if (local_8 < 6) { + FUN_004dbb24(&DAT_00524e20,s_pfx_file_004f20e0,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_did_not_read_correctly_004f20ea,(char *)0x0); + iVar2 = 0; + } + else { + puVar6 = FUN_004d6c20(&local_108,0xff,piVar1); + local_8 = FUN_004d7f84(puVar6,(byte *)s__f__f__f__f__f__f_004f2103); + if (local_8 < 6) { + FUN_004dbb24(&DAT_00524e20,s_pfx_file_004f2116,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_did_not_read_correctly_004f2120,(char *)0x0); + iVar2 = 0; + } + else { + puVar6 = FUN_004d6c20(&local_108,0xff,piVar1); + local_8 = FUN_004d7f84(puVar6,(byte *)s__f__f__f__f__f__f_004f2139); + if (local_8 < 6) { + FUN_004dbb24(&DAT_00524e20,s_pfx_file_004f214c,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_did_not_read_correctly_004f2156,(char *)0x0); + iVar2 = 0; + } + else { + puVar6 = FUN_004d6c20(&local_108,0xff,piVar1); + local_8 = FUN_004d7f84(puVar6,(byte *)s__f__f_004f216f); + if (local_8 < 2) { + FUN_004dbb24(&DAT_00524e20,s_pfx_file_004f2176,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_did_not_read_correctly_004f2180,(char *)0x0); + iVar2 = 0; + } + else { + puVar6 = FUN_004d6c20(&local_108,0xff,piVar1); + local_8 = FUN_004d7f84(puVar6,(byte *)s__f__f__f__f__f__f__f__f_004f2199); + if (local_8 < 8) { + FUN_004dbb24(&DAT_00524e20,s_pfx_file_004f21b2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_did_not_read_correctly_004f21bc,(char *)0x0); + iVar2 = 0; + } + else { + puVar6 = FUN_004d6c20(&local_108,0xff,piVar1); + local_8 = FUN_004d7f84(puVar6,(byte *)s__f__f__f__f__f__f__f__f_004f21d5); + if (local_8 < 8) { + FUN_004dbb24(&DAT_00524e20,s_pfx_file_004f21ee,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_did_not_read_correctly_004f21f8,(char *)0x0); + iVar2 = 0; + } + else { + puVar6 = FUN_004d6c20(&local_108,0xff,piVar1); + local_8 = FUN_004d7f84(puVar6,(byte *)s__f__f__f__f__f__f__f__f_004f2211); + if (local_8 < 8) { + FUN_004dbb24(&DAT_00524e20,s_pfx_file_004f222a,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_did_not_read_correctly_004f2234,(char *)0x0); + iVar2 = 0; + } + else { + puVar6 = FUN_004d6c20(&local_108,0xff,piVar1); + local_8 = FUN_004d7f84(puVar6,(byte *)s__f__f__f__f__f__f__f__f_004f224d); + if (local_8 < 8) { + FUN_004dbb24(&DAT_00524e20,s_pfx_file_004f2266,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_did_not_read_correctly_004f2270,(char *)0x0); + iVar2 = 0; + } + else { + puVar6 = FUN_004d6c20(&local_108,0xff,piVar1); + local_8 = FUN_004d7f84(puVar6,(byte *)s__f__f_004f2289); + if (local_8 < 2) { + FUN_004dbb24(&DAT_00524e20,s_pfx_file_004f2290,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_did_not_read_correctly_004f229a,(char *)0x0); + iVar2 = 0; + } + else { + puVar6 = FUN_004d6c20(&local_108,0xff,piVar1); + local_8 = FUN_004d7f84(puVar6,(byte *)s__f__f_004f22b3); + if (local_8 < 2) { + FUN_004dbb24(&DAT_00524e20,s_pfx_file_004f22ba,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_did_not_read_correctly_004f22c4,(char *)0x0 + ); + iVar2 = 0; + } + else { + FUN_004d6b08(piVar1); + } + } + } + } + } + } + } + } + } + } + } + } + } + return iVar2; +} + + + +/* @0045b1b8 file=munga_l4/l4video.cpp name=FUN_0045b1b8 */ + +void FUN_0045b1b8(int param_1,undefined4 *param_2,char *param_3,int param_4,int param_5) + +{ + char *pcVar1; + int iVar2; + undefined4 *puVar3; + undefined4 uVar4; + undefined4 *puVar5; + uint uVar6; + char *pcVar7; + int *piVar8; + uint *puVar9; + char *pcVar10; + int *piVar11; + bool bVar12; + char *local_248; + uint local_240 [2]; + char *local_238; + uint local_230 [2]; + char *local_228; + int local_220 [10]; + uint *local_1f8; + int *local_1f4; + int *local_1f0; + uint *local_1ec; + char *local_1e8; + uint *local_1e4; + int *local_1e0; + char *local_1dc; + uint *local_1d8; + int *local_1d4; + uint *local_1d0; + uint *local_1cc; + char *local_1c8; + uint local_1c4; + int *local_1c0; + int *local_1bc; + uint *local_1b8; + uint *local_1b4; + char *local_1b0; + uint local_1ac; + int *local_1a8; + char *local_1a4; + uint *local_1a0; + int *local_19c; + int *local_198; + uint *local_194; + char *local_190; + int local_18c; + int *local_188; + int local_184; + char *local_180; + int *local_17c; + uint local_178; + int *local_174; + int *local_170; + int *local_16c; + int *local_168; + int *local_164; + int *local_160; + int *local_15c; + int *local_158; + uint *local_154; + uint *local_150; + char *local_14c; + uint local_148; + int *local_144; + char *local_140; + uint *local_13c; + int local_138; + uint local_134; + uint *local_130; + char *local_12c; + uint *local_128; + undefined4 *local_124; + int *local_120; + undefined4 *local_11c; + int *local_118; + uint *local_114; + uint *local_110; + int *local_10c; + int local_108; + char *local_104; + char *local_100; + int *local_fc; + uint local_f8; + char *local_f4; + char *local_f0; + int local_ec; + undefined4 local_e8; + undefined4 local_e4; + float local_e0; + float local_dc; + undefined4 local_d8; + undefined4 local_d4; + undefined4 local_d0; + float local_cc; + float local_c8; + float local_c4; + float local_c0; + int local_bc; + int local_b8; + int local_b4; + uint local_b0; + int local_ac; + char *local_a8; + int *local_a4; + uint local_a0; + int *local_9c; + uint local_98; + char *local_94; + char *local_90; + char *local_8c; + char *local_88; + char *local_84; + char *local_80; + char *local_7c; + char *local_78; + float local_74; + char *local_70; + char *local_6c; + char *local_68; + char *local_64; + int local_60; + char *local_5c; + char *local_58; + char *local_54; + char *local_50; + char *local_4c; + char *local_48; + char *local_44; + char *local_40; + char *local_3c; + char *local_38; + int *local_34; + int *local_30; + int *local_2c; + int *local_28; + int *local_24; + int *local_20; + float local_1c; + float local_18; + float local_14; + undefined4 local_10; + undefined4 local_c; + undefined4 local_8; + + if (param_5 != 0) { + local_44 = param_3; + FUN_004dbb24(&DAT_00524e20,s_DPLReadINIPage_processing_004f22dd,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,local_44,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004f22f8,(char *)0x0); + } + local_34 = FUN_00404720((int)param_2,param_3,s_objectpath_004f22fa); + if (local_34 != (int *)0x0) { + for (puVar3 = (undefined4 *)local_34[1]; puVar3 != (undefined4 *)0x0; + puVar3 = (undefined4 *)*puVar3) { + FUN_00497b18((char *)puVar3[1],1); + if (param_5 != 0) { + local_48 = (char *)FUN_00497b88(); + FUN_004dbb24(&DAT_00524e20,s_objectpath___004f2305,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,local_48,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004f2312,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + } + } + if (local_34 != (int *)0x0) { + (**(code **)*local_34)(local_34,3); + } + } + local_34 = FUN_00404720((int)param_2,param_3,s_texmappath_004f2314); + if (local_34 != (int *)0x0) { + for (puVar3 = (undefined4 *)local_34[1]; puVar3 != (undefined4 *)0x0; + puVar3 = (undefined4 *)*puVar3) { + FUN_00498cb4((char *)puVar3[1],1); + if (param_5 != 0) { + local_4c = (char *)FUN_00498d24(); + FUN_004dbb24(&DAT_00524e20,s_texmappath___004f231f,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,local_4c,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004f232c,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + } + } + if (local_34 != (int *)0x0) { + (**(code **)*local_34)(local_34,3); + } + } + local_34 = FUN_00404720((int)param_2,param_3,s_materialpath_004f232e); + if (local_34 != (int *)0x0) { + for (puVar3 = (undefined4 *)local_34[1]; puVar3 != (undefined4 *)0x0; + puVar3 = (undefined4 *)*puVar3) { + FUN_004978a0((char *)puVar3[1],1); + if (param_5 != 0) { + local_50 = (char *)FUN_00497910(); + FUN_004dbb24(&DAT_00524e20,s_materialpath___004f233b,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,local_50,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004f234a,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + } + } + if (local_34 != (int *)0x0) { + (**(code **)*local_34)(local_34,3); + } + } + iVar2 = FUN_00404088((int)param_2,param_3,s_priorityobjectpath_004f234c,&local_3c); + if ((iVar2 != 0) && (FUN_00497b18(local_3c,0), param_5 != 0)) { + local_54 = local_3c; + FUN_004dbb24(&DAT_00524e20,s_priorityobjectpath___004f235f,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004f2374,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + } + iVar2 = FUN_00404088((int)param_2,param_3,s_prioritytexmappath_004f2376,&local_3c); + if ((iVar2 != 0) && (FUN_00498cb4(local_3c,0), param_5 != 0)) { + local_58 = local_3c; + FUN_004dbb24(&DAT_00524e20,s_prioritytexmappath___004f2389,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,local_58,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004f239e,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + } + iVar2 = FUN_00404088((int)param_2,param_3,s_prioritymaterialpath_004f23a0,&local_3c); + if ((iVar2 != 0) && (FUN_004978a0(local_3c,0), param_5 != 0)) { + local_5c = local_3c; + FUN_004dbb24(&DAT_00524e20,s_prioritymaterialpath___004f23b5,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,local_5c,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004f23cc,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + } + local_20 = FUN_00404720((int)param_2,param_3,s_cache_004f23ce); + if (local_20 != (int *)0x0) { + for (puVar3 = (undefined4 *)local_20[1]; puVar3 != (undefined4 *)0x0; + puVar3 = (undefined4 *)*puVar3) { + local_60 = FUN_00498448((char *)puVar3[1],0); + if (local_60 == 0) { + local_64 = (char *)puVar3[1]; + FUN_004dbb24(&DAT_00524e20,s_Unable_to_cache_004f23d4,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,local_64,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004f23e5,(char *)0x0); + } + else if (param_5 != 0) { + local_68 = (char *)puVar3[1]; + FUN_004dbb24(&DAT_00524e20,s_Caching_004f23e7,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,local_68,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004f23f0,(char *)0x0); + } + } + if (local_20 != (int *)0x0) { + (**(code **)*local_20)(local_20,3); + } + } + iVar2 = FUN_00404088((int)param_2,param_3,&DAT_004f23f2,&local_3c); + if (iVar2 != 0) { + FUN_004d7f84(local_3c,(byte *)s__f__f_004f23f7); + FUN_0048b56c(*(int *)(param_1 + 0x124),*(undefined4 *)(param_1 + 0x104), + *(undefined4 *)(param_1 + 0x108)); + if (param_5 != 0) { + local_6c = local_3c; + FUN_004dbb24(&DAT_00524e20,s_Clip_Range_004f23fd,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,local_6c,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004f2409,(char *)0x0); + } + } + iVar2 = FUN_00404088((int)param_2,param_3,s_backgnd_004f240b,&local_3c); + if (iVar2 != 0) { + FUN_004d7f84(local_3c,(byte *)s__f__f__f_004f2413); + FUN_0048b608(*(int *)(param_1 + 0x124),*(undefined4 *)(param_1 + 0x10c), + *(undefined4 *)(param_1 + 0x110),*(undefined4 *)(param_1 + 0x114)); + if (param_5 != 0) { + local_70 = local_3c; + FUN_004dbb24(&DAT_00524e20,s_Background_Color_004f241c,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,local_70,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004f242e,(char *)0x0); + } + } + iVar2 = FUN_00404088((int)param_2,param_3,s_viewangle_004f2430,&local_3c); + if (iVar2 != 0) { + FUN_004d7f84(local_3c,&DAT_004f243a); + FUN_0048b83c(0,0,0,DAT_004f3368,DAT_004f336c); + local_74 = *(float *)(param_1 + 0x118); + FUN_00460770(param_1,local_74); + FUN_0048b788(*(int *)(param_1 + 0x124),0); + if (param_5 != 0) { + local_78 = local_3c; + FUN_004dbb24(&DAT_00524e20,s_View_Angle_004f243d,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,local_78,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004f2449,(char *)0x0); + } + } + iVar2 = FUN_00404088((int)param_2,param_3,&DAT_004f244b,&local_3c); + if (iVar2 != 0) { + FUN_004d7f84(local_3c,(byte *)s__f__f__f__f__f_004f244f); + *(undefined4 *)(param_1 + 0xdc) = *(undefined4 *)(param_1 + 200); + *(undefined4 *)(param_1 + 0xe4) = *(undefined4 *)(param_1 + 0xd0); + *(undefined4 *)(param_1 + 0xe0) = *(undefined4 *)(param_1 + 0xcc); + *(undefined4 *)(param_1 + 0xe8) = *(undefined4 *)(param_1 + 0xd4); + *(undefined4 *)(param_1 + 0xec) = *(undefined4 *)(param_1 + 0xd8); + *(undefined4 *)(param_1 + 0xf0) = *(undefined4 *)(param_1 + 200); + *(undefined4 *)(param_1 + 0xf8) = *(undefined4 *)(param_1 + 0xd0); + *(undefined4 *)(param_1 + 0xf4) = *(undefined4 *)(param_1 + 0xcc); + *(undefined4 *)(param_1 + 0xfc) = *(undefined4 *)(param_1 + 0xd4); + *(undefined4 *)(param_1 + 0x100) = *(undefined4 *)(param_1 + 0xd8); + FUN_0048b6b4(*(int *)(param_1 + 0x124),5,0,0,0,0x3c23d70a,0x3d4ccccd); + if (param_5 != 0) { + local_7c = local_3c; + FUN_004dbb24(&DAT_00524e20,&DAT_004f245e,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,local_7c,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004f2463,(char *)0x0); + } + } + iVar2 = FUN_00404088((int)param_2,param_3,s_nosearchlightfog_004f2465,&local_3c); + if ((iVar2 != 0) && (FUN_004d7f84(local_3c,(byte *)s__f__f__f__f__f_004f2476), param_5 != 0)) { + local_80 = local_3c; + FUN_004dbb24(&DAT_00524e20,s_nosearchlightfog_004f2485,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,local_80,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004f2497,(char *)0x0); + } + iVar2 = FUN_00404088((int)param_2,param_3,s_ambient_004f2499,&local_3c); + if (iVar2 != 0) { + FUN_004d7f84(local_3c,(byte *)s__f__f__f_004f24a1); + puVar3 = FUN_0048973c(); + *(undefined4 **)(param_1 + 0x3d0) = puVar3; + FUN_0048b1e0(*(int *)(param_1 + 0x3d0),2); + FUN_0048b26c(*(int *)(param_1 + 0x3d0),local_8,local_c,local_10); + FUN_0048d478(*(undefined4 **)(param_1 + 0x3d0)); + if (param_5 != 0) { + local_84 = local_3c; + FUN_004dbb24(&DAT_00524e20,s_Ambient_Light_004f24ab,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,local_84,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004f24ba,(char *)0x0); + } + } + local_24 = FUN_00404720((int)param_2,param_3,s_light_004f24bc); + if (local_24 != (int *)0x0) { + iVar2 = FUN_00403b60((int)local_24); + if (iVar2 != 0) { + if (*(int *)(param_1 + 0x3dc) != 0) { + FUN_0040385c(s_All_lights_must_be_defined_on_a_s_004f24c2, + s_d__tesla_bt_munga_l4_L4VIDEO_CPP_004f24f9,0x81c); + } + iVar2 = FUN_00403b60((int)local_24); + *(int *)(param_1 + 0x3dc) = iVar2; + if (*(int *)(param_1 + 0x3dc) != 0) { + uVar4 = FUN_004022b0(*(int *)(param_1 + 0x3dc) << 2); + *(undefined4 *)(param_1 + 0x3d8) = uVar4; + uVar4 = FUN_004022b0(*(int *)(param_1 + 0x3dc) << 2); + *(undefined4 *)(param_1 + 0x3d4) = uVar4; + } + iVar2 = 0; + for (puVar3 = (undefined4 *)local_24[1]; puVar3 != (undefined4 *)0x0; + puVar3 = (undefined4 *)*puVar3) { + FUN_004d7f84(puVar3[1],(byte *)s__f__f__f__f__f__f_004f251a); + if (param_5 != 0) { + local_88 = (char *)puVar3[1]; + FUN_004dbb24(&DAT_00524e20,s_Light_004f252c,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,local_88,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004f2533,(char *)0x0); + } + puVar5 = FUN_0048973c(); + *(undefined4 **)(*(int *)(param_1 + 0x3d4) + iVar2 * 4) = puVar5; + uVar4 = FUN_00489708(); + *(undefined4 *)(*(int *)(param_1 + 0x3d8) + iVar2 * 4) = uVar4; + FUN_00489ba8(*(int *)(*(int *)(param_1 + 0x3d8) + iVar2 * 4)); + FUN_0048b1e0(*(int *)(*(int *)(param_1 + 0x3d4) + iVar2 * 4),3); + FUN_0048b26c(*(int *)(*(int *)(param_1 + 0x3d4) + iVar2 * 4),local_8,local_c,local_10); + FUN_0048b134(*(int *)(*(int *)(param_1 + 0x3d4) + iVar2 * 4), + *(int *)(*(int *)(param_1 + 0x3d8) + iVar2 * 4)); + FUN_00491c90(*(int *)(*(int *)(param_1 + 0x3d8) + iVar2 * 4),local_1c,2); + FUN_00491c90(*(int *)(*(int *)(param_1 + 0x3d8) + iVar2 * 4),local_14,0); + FUN_00491c90(*(int *)(*(int *)(param_1 + 0x3d8) + iVar2 * 4),local_18,1); + FUN_0048d478(*(undefined4 **)(*(int *)(param_1 + 0x3d4) + iVar2 * 4)); + FUN_0048d3e8(*(undefined4 **)(*(int *)(param_1 + 0x3d8) + iVar2 * 4)); + iVar2 = iVar2 + 1; + } + } + if (local_24 != (int *)0x0) { + (**(code **)*local_24)(local_24,3); + } + } + local_28 = FUN_00404720((int)param_2,param_3,&DAT_004f2535); + if (local_28 != (int *)0x0) { + for (puVar3 = (undefined4 *)local_28[1]; puVar3 != (undefined4 *)0x0; + puVar3 = (undefined4 *)*puVar3) { + local_90 = (char *)(puVar3 + 3); + uVar6 = FUN_004dd1e0(local_90); + local_8c = (char *)puVar3[1]; + if (param_5 != 0) { + local_98 = uVar6; + local_94 = local_8c; + FUN_004dbb24(&DAT_00524e20,&DAT_004f253a,(char *)0x0); + local_9c = FUN_004db78c(&DAT_00524e20,local_98); + FUN_004dbb24(local_9c,&DAT_004f253f,(char *)0x0); + FUN_004dbb24(local_9c,local_94,(char *)0x0); + FUN_004dbb24(local_9c,&DAT_004f2541,(char *)0x0); + } + if (((int)uVar6 < 0) || (0x27 < (int)uVar6)) { + FUN_0040385c(s_PSFX_id_number_was_not_in_the_al_004f2543, + s_d__tesla_bt_munga_l4_L4VIDEO_CPP_004f256f,0x86d); + } + if (*(int *)(param_1 + 0x2cc + uVar6 * 4) != 0) { + local_a0 = uVar6; + FUN_004dbb24(&DAT_00524e20,s_psfx__004f2590,(char *)0x0); + local_a4 = FUN_004db78c(&DAT_00524e20,local_a0); + FUN_004dbb24(local_a4,s_already_existed_from_an_earlier_p_004f2596,(char *)0x0); + FUN_004022d0(*(int **)(param_1 + 0x2cc + uVar6 * 4)); + } + iVar2 = FUN_0045a9f8(param_1,local_8c); + *(int *)(param_1 + 0x2cc + uVar6 * 4) = iVar2; + } + if (local_28 != (int *)0x0) { + (**(code **)*local_28)(local_28,3); + } + } + local_2c = FUN_00404720((int)param_2,param_3,s_specialfx_004f25cc); + if (local_2c != (int *)0x0) { + for (puVar3 = (undefined4 *)local_2c[1]; puVar3 != (undefined4 *)0x0; + puVar3 = (undefined4 *)*puVar3) { + local_f0 = (char *)((int)puVar3 + 0x11); + local_b0 = FUN_004dd1e0(local_f0); + pcVar7 = (char *)puVar3[1]; + if (param_5 != 0) { + local_f8 = local_b0; + local_f4 = pcVar7; + FUN_004dbb24(&DAT_00524e20,s_specialfx_004f25d6,(char *)0x0); + local_fc = FUN_004db78c(&DAT_00524e20,local_f8); + FUN_004dbb24(local_fc,&DAT_004f25e0,(char *)0x0); + FUN_004dbb24(local_fc,local_f4,(char *)0x0); + FUN_004dbb24(local_fc,&DAT_004f25e2,(char *)0x0); + } + FUN_004040d8((int)param_2,pcVar7,&DAT_004f25e4,&local_b4); + FUN_00404118((int)param_2,pcVar7,&DAT_004f25e9,&local_c0); + FUN_00404118((int)param_2,pcVar7,s_velocity_004f25ee,&local_c4); + FUN_00404118((int)param_2,pcVar7,s_v_bias_004f25f7,&local_c8); + FUN_00404118((int)param_2,pcVar7,s_y_off_004f25fe,&local_cc); + FUN_00404118((int)param_2,pcVar7,s_variance_004f2604,&local_dc); + FUN_00404118((int)param_2,pcVar7,s_gravity_004f260d,&local_e0); + FUN_004040d8((int)param_2,pcVar7,s_count_004f2615,&local_b8); + FUN_004040d8((int)param_2,pcVar7,s_repeats_004f261b,&local_bc); + FUN_00404088((int)param_2,pcVar7,&DAT_004f2623,&local_3c); + FUN_004d7f84(local_3c,(byte *)s__f__f__f_004f2628); + FUN_00404088((int)param_2,pcVar7,&DAT_004f2631,&local_3c); + FUN_004d7f84(local_3c,(byte *)s__f__f_004f2636); + FUN_00404088((int)param_2,pcVar7,s_texture_004f263c,&local_3c); + local_a8 = local_3c; + local_ec = FUN_00497730(local_3c,0,&local_ac); + if (local_ec == 0) { + local_100 = local_a8; + FUN_004dbb24(&DAT_00524e20,s_couldn_t_find_texture_004f2644,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,local_100,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_for_an_effect_004f265b,(char *)0x0); + } + FUN_00490210(local_b0,local_ec,local_b4,local_c0,local_c4,local_c8,local_cc,local_d0,local_d4, + local_d8,local_dc,local_e0,local_e4,local_e8,local_b8,local_bc,3); + } + if (local_2c != (int *)0x0) { + (**(code **)*local_2c)(local_2c,3); + } + } + local_30 = FUN_00404720((int)param_2,param_3,s_include_004f266b); + if (local_30 != (int *)0x0) { + for (puVar3 = (undefined4 *)local_30[1]; puVar3 != (undefined4 *)0x0; + puVar3 = (undefined4 *)*puVar3) { + local_38 = (char *)puVar3[1]; + FUN_0045b1b8(param_1,param_2,local_38,param_4,param_5); + if (param_5 != 0) { + local_104 = param_3; + FUN_004dbb24(&DAT_00524e20,s_DPLReadINIPage_returned_to_004f2673,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,local_104,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004f268f,(char *)0x0); + } + } + if (local_30 != (int *)0x0) { + (**(code **)*local_30)(local_30,3); + } + } + iVar2 = FUN_00404088((int)param_2,param_3,s_compare_004f2691,&local_40); + if (iVar2 != 0) { + piVar11 = FUN_004de998(local_220,4,10,1,FUN_00461280); + local_114 = (uint *)FUN_00402298(0x10); + if (local_114 == (uint *)0x0) { + local_110 = (uint *)0x0; + } + else { + local_110 = FUN_00402460(local_114,&DAT_004f2699); + } + local_110[3] = local_110[3] + 1; + local_11c = (undefined4 *)FUN_00402298(0x10); + if (local_11c == (undefined4 *)0x0) { + local_118 = (int *)0x0; + } + else { + local_118 = (int *)FUN_004023f4(local_11c); + } + local_118[3] = local_118[3] + 1; + local_124 = (undefined4 *)FUN_00402298(0x10); + if (local_124 == (undefined4 *)0x0) { + local_120 = (int *)0x0; + } + else { + local_120 = (int *)FUN_004023f4(local_124); + } + local_120[3] = local_120[3] + 1; + local_12c = local_40; + local_130 = (uint *)FUN_00402298(0x10); + if (local_130 == (uint *)0x0) { + local_128 = (uint *)0x0; + } + else { + local_128 = FUN_00402460(local_130,local_12c); + } + local_128[3] = local_128[3] + 1; + local_138 = *(int *)(DAT_004efc94 + 0x68); + if (param_5 != 0) { + FUN_004dbb24(&DAT_00524e20,s_compare___004f269b,(char *)0x0); + local_13c = local_128; + local_140 = (char *)local_128[2]; + FUN_004dbb24(&DAT_00524e20,local_140,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004f26a6,(char *)0x0); + } + local_134 = 0; + while( true ) { + local_148 = local_134; + FUN_00402838(local_230,local_128,local_134,&DAT_004f26a8); + local_14c = local_228; + puVar9 = (uint *)FUN_00402298(0x10); + if (puVar9 == (uint *)0x0) { + local_150 = (uint *)0x0; + } + else { + local_150 = FUN_00402460(puVar9,local_14c); + } + local_150[3] = local_150[3] + 1; + FUN_004024d8((int *)local_230,2); + FUN_00402a4c((int *)&local_144,(int *)&local_120,(int *)&local_150); + uVar6 = (uint)(local_144[2] != 0); + piVar8 = local_144 + 3; + *piVar8 = *piVar8 + -1; + if (*piVar8 == 0) { + FUN_004024d8(local_144,3); + } + local_154 = local_150; + puVar9 = local_150 + 3; + *puVar9 = *puVar9 - 1; + if (*puVar9 == 0) { + FUN_004024d8((int *)local_150,3); + } + if (uVar6 == 0) break; + pcVar7 = (char *)local_120[2]; + pcVar10 = s_location_004f26aa; + do { + if (*pcVar7 != *pcVar10) goto LAB_0045c510; + bVar12 = true; + if (*pcVar7 == '\0') break; + pcVar1 = pcVar7 + 1; + if (*pcVar1 != pcVar10[1]) goto LAB_0045c510; + pcVar7 = pcVar7 + 2; + pcVar10 = pcVar10 + 2; + bVar12 = *pcVar1 == '\0'; + } while (!bVar12); + if (bVar12) { + iVar2 = FUN_00406fd4(local_138,*(int *)(param_4 + 4)); + FUN_00402a98((int *)&local_158,local_220 + local_134,(char *)(iVar2 + 0xc)); + local_15c = local_158; + piVar8 = local_158 + 3; + *piVar8 = *piVar8 + -1; + if (*piVar8 == 0) { + FUN_004024d8(local_158,3); + } + } + else { +LAB_0045c510: + pcVar10 = &DAT_004f26b3; + pcVar7 = (char *)local_120[2]; + do { + if (*pcVar7 != *pcVar10) goto LAB_0045c595; + bVar12 = true; + if (*pcVar7 == '\0') break; + pcVar1 = pcVar7 + 1; + if (*pcVar1 != pcVar10[1]) goto LAB_0045c595; + pcVar7 = pcVar7 + 2; + pcVar10 = pcVar10 + 2; + bVar12 = *pcVar1 == '\0'; + } while (!bVar12); + if (bVar12) { + FUN_00402a98((int *)&local_160,local_220 + local_134,*(char **)(param_4 + 0x30)); + local_164 = local_160; + piVar8 = local_160 + 3; + *piVar8 = *piVar8 + -1; + if (*piVar8 == 0) { + FUN_004024d8(local_160,3); + } + } + else { +LAB_0045c595: + pcVar10 = s_weather_004f26b8; + pcVar7 = (char *)local_120[2]; + do { + if (*pcVar7 != *pcVar10) goto LAB_0045c61a; + bVar12 = true; + if (*pcVar7 == '\0') break; + pcVar1 = pcVar7 + 1; + if (*pcVar1 != pcVar10[1]) goto LAB_0045c61a; + pcVar7 = pcVar7 + 2; + pcVar10 = pcVar10 + 2; + bVar12 = *pcVar1 == '\0'; + } while (!bVar12); + if (bVar12) { + FUN_00402a98((int *)&local_168,local_220 + local_134,*(char **)(param_4 + 0x34)); + local_16c = local_168; + piVar8 = local_168 + 3; + *piVar8 = *piVar8 + -1; + if (*piVar8 == 0) { + FUN_004024d8(local_168,3); + } + } + else { +LAB_0045c61a: + pcVar10 = s_scenario_004f26c0; + pcVar7 = (char *)local_120[2]; + do { + if (*pcVar7 != *pcVar10) goto LAB_0045c69f; + bVar12 = true; + if (*pcVar7 == '\0') break; + pcVar1 = pcVar7 + 1; + if (*pcVar1 != pcVar10[1]) goto LAB_0045c69f; + pcVar7 = pcVar7 + 2; + pcVar10 = pcVar10 + 2; + bVar12 = *pcVar1 == '\0'; + } while (!bVar12); + if (bVar12) { + FUN_00402a98((int *)&local_170,local_220 + local_134,*(char **)(param_4 + 0x38)); + local_174 = local_170; + piVar8 = local_170 + 3; + *piVar8 = *piVar8 + -1; + if (*piVar8 == 0) { + FUN_004024d8(local_170,3); + } + } + else { +LAB_0045c69f: + local_178 = local_134; + FUN_004dbb24(&DAT_00524e20,s_Mission_variable_004f26c9,(char *)0x0); + piVar8 = FUN_004db78c(&DAT_00524e20,local_178); + FUN_004dbb24(piVar8,&DAT_004f26db,(char *)0x0); + local_17c = local_120; + local_180 = (char *)local_120[2]; + FUN_004dbb24(piVar8,local_180,(char *)0x0); + FUN_004dbb24(piVar8,s_IS_AN_UNKNOWN_MISSION_VARIABLE_004f26de,(char *)0x0); + } + } + } + } + local_134 = local_134 + 1; + } + if (param_5 != 0) { + FUN_004dbb24(&DAT_00524e20,s_comparing_to__004f26ff,(char *)0x0); + local_184 = 0; + if (0 < (int)local_134) { + do { + local_188 = local_220 + local_184; + local_18c = *local_188; + local_190 = *(char **)(local_18c + 8); + FUN_004dbb24(&DAT_00524e20,local_190,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004f270e,(char *)0x0); + local_184 = local_184 + 1; + } while (local_184 < (int)local_134); + } + FUN_004dbb24(&DAT_00524e20,&DAT_004f2711,(char *)0x0); + } + local_10c = FUN_00404720((int)param_2,param_3,s_branch_004f2713); + for (puVar3 = (undefined4 *)local_10c[1]; puVar3 != (undefined4 *)0x0; + puVar3 = (undefined4 *)*puVar3) { + puVar5 = (undefined4 *)FUN_00402298(0x10); + if (puVar5 == (undefined4 *)0x0) { + local_194 = (uint *)0x0; + } + else { + local_194 = (uint *)FUN_004023f4(puVar5); + } + local_194[3] = local_194[3] + 1; + puVar5 = (undefined4 *)FUN_00402298(0x10); + if (puVar5 == (undefined4 *)0x0) { + local_198 = (int *)0x0; + } + else { + local_198 = (int *)FUN_004023f4(puVar5); + } + local_198[3] = local_198[3] + 1; + FUN_00402a98((int *)&local_19c,(int *)&local_194,(char *)puVar3[1]); + piVar8 = local_19c + 3; + *piVar8 = *piVar8 + -1; + if (*piVar8 == 0) { + FUN_004024d8(local_19c,3); + } + if (param_5 != 0) { + FUN_004dbb24(&DAT_00524e20,s_branch___004f271a,(char *)0x0); + local_1a0 = local_194; + local_1a4 = (char *)local_194[2]; + FUN_004dbb24(&DAT_00524e20,local_1a4,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004f2724,(char *)0x0); + } + local_108 = 1; + uVar6 = 0; + if (0 < (int)local_134) { + do { + local_1ac = uVar6; + FUN_00402838(local_240,local_194,uVar6,&DAT_004f2726); + local_1b0 = local_238; + local_1b8 = (uint *)FUN_00402298(0x10); + if (local_1b8 == (uint *)0x0) { + local_1b4 = (uint *)0x0; + } + else { + local_1b4 = FUN_00402460(local_1b8,local_1b0); + } + local_1b4[3] = local_1b4[3] + 1; + FUN_004024d8((int *)local_240,2); + FUN_00402a4c((int *)&local_1a8,(int *)&local_198,(int *)&local_1b4); + piVar8 = local_1a8 + 3; + *piVar8 = *piVar8 + -1; + if (*piVar8 == 0) { + FUN_004024d8(local_1a8,3); + } + puVar9 = local_1b4 + 3; + *puVar9 = *puVar9 - 1; + if (*puVar9 == 0) { + FUN_004024d8((int *)local_1b4,3); + } + local_1bc = local_220 + uVar6; + iVar2 = FUN_004027d8((int)local_198,*local_1bc); + if ((iVar2 != 0) && (iVar2 = FUN_004027d8((int)local_198,(int)local_110), iVar2 != 0)) { + local_108 = 0; + break; + } + uVar6 = uVar6 + 1; + } while ((int)uVar6 < (int)local_134); + } + if (local_108 != 0) { + local_1c4 = uVar6; + FUN_00402838((uint *)&stack0xfffffdb0,local_194,uVar6,&DAT_004f2728); + local_1c8 = local_248; + local_1d0 = (uint *)FUN_00402298(0x10); + if (local_1d0 == (uint *)0x0) { + local_1cc = (uint *)0x0; + } + else { + local_1cc = FUN_00402460(local_1d0,local_1c8); + } + local_1cc[3] = local_1cc[3] + 1; + FUN_004024d8((int *)&stack0xfffffdb0,2); + FUN_00402a4c((int *)&local_1c0,(int *)&local_198,(int *)&local_1cc); + local_1d4 = local_1c0; + piVar8 = local_1c0 + 3; + *piVar8 = *piVar8 + -1; + if (*piVar8 == 0) { + FUN_004024d8(local_1c0,3); + } + local_1d8 = local_1cc; + puVar9 = local_1cc + 3; + *puVar9 = *puVar9 - 1; + if (*puVar9 == 0) { + FUN_004024d8((int *)local_1cc,3); + } + FUN_0045b1b8((int)piVar11,param_2,(char *)local_198[2],param_4,param_5); + if (param_5 != 0) { + local_1dc = param_3; + FUN_004dbb24(&DAT_00524e20,s_DPLReadINIPage_returned_to_004f272a,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,local_1dc,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004f2746,(char *)0x0); + } + local_1e0 = local_198; + piVar11 = local_198 + 3; + *piVar11 = *piVar11 + -1; + if (*piVar11 == 0) { + FUN_004024d8(local_198,3); + } + local_1e4 = local_194; + puVar9 = local_194 + 3; + *puVar9 = *puVar9 - 1; + if (*puVar9 == 0) { + FUN_004024d8((int *)local_194,3); + } + break; + } + piVar8 = local_198 + 3; + *piVar8 = *piVar8 + -1; + if (*piVar8 == 0) { + FUN_004024d8(local_198,3); + } + puVar9 = local_194 + 3; + *puVar9 = *puVar9 - 1; + if (*puVar9 == 0) { + FUN_004024d8((int *)local_194,3); + } + } + if (local_10c != (int *)0x0) { + (**(code **)*local_10c)(local_10c,3); + } + if (local_108 == 0) { + local_1e8 = (char *)*param_2; + FUN_004dbb24(&DAT_00524e20,s_BRANCH_ERROR_IN___004f2748,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,local_1e8,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s___NO_MATCH_FOUND___004f275a,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + } + local_1ec = local_128; + puVar9 = local_128 + 3; + *puVar9 = *puVar9 - 1; + if (*puVar9 == 0) { + FUN_004024d8((int *)local_128,3); + } + local_1f0 = local_120; + piVar11 = local_120 + 3; + *piVar11 = *piVar11 + -1; + if (*piVar11 == 0) { + FUN_004024d8(local_120,3); + } + local_1f4 = local_118; + piVar11 = local_118 + 3; + *piVar11 = *piVar11 + -1; + if (*piVar11 == 0) { + FUN_004024d8(local_118,3); + } + local_1f8 = local_110; + puVar9 = local_110 + 3; + *puVar9 = *puVar9 - 1; + if (*puVar9 == 0) { + FUN_004024d8((int *)local_110,3); + } + FUN_004de8d4(local_220,4,10,1,FUN_004612b0); + } + return; +} + + + +/* @0045ce5c file=? name=FUN_0045ce5c */ + +void __cdecl FUN_0045ce5c(int param_1,int param_2) + +{ + char *pcVar1; + int *piVar2; + int iVar3; + int extraout_var; + int iVar4; + + pcVar1 = (char *)FUN_004dee74(s_L4DPLCFG_004f276d); + iVar4 = extraout_var; + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_L4DPLCFG_not_defined__using_dpld_004f2776,(char *)0x0); + pcVar1 = s_dpldflt_ini_004f27a0; + } + piVar2 = (int *)FUN_00402298(0x20); + if (piVar2 == (int *)0x0) { + piVar2 = (int *)0x0; + } + else { + piVar2 = FUN_00403e84(piVar2,pcVar1,1); + } + if ((*(byte *)(piVar2 + 7) & 2) == 0) { + iVar3 = piVar2[3]; + } + else { + iVar3 = piVar2[4]; + } + if (iVar3 == 0) { + FUN_004dbb24(&DAT_00524e20,s_Renderer_config_notation_file_004f27ac,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,pcVar1,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_was_empty__can_t_continue_004f27cb,(char *)0x0); + } + iVar3 = FUN_00403f84((int)piVar2,&DAT_004f27e6); + if (iVar3 == 0) { + iVar3 = FUN_00404190((int)piVar2,s_dpl_config_004f27fb,s_debug_004f2806, + (undefined4 *)&stack0xfffffff8); + if (iVar3 == 0) { + iVar4 = 0; + } + pcVar1 = (char *)*piVar2; + FUN_004dbb24(&DAT_00524e20,s_READING_OLD_FORMAT_INI_FILE___004f280c,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,pcVar1,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_____hope_this_works_004f282a,(char *)0x0); + FUN_00497b4c(s___video_004f283f,(char *)0x0,(char *)0x0); + FUN_00498ce8(s___video_004f2847,(char *)0x0,(char *)0x0); + FUN_004978d4(s___video_004f284f,(char *)0x0,(char *)0x0); + FUN_0045b1b8(param_1,piVar2,s_dpl_config_004f2857,param_2,iVar4); + } + else { + iVar3 = FUN_00404190((int)piVar2,&DAT_004f27eb,s_debug_004f27f0,(undefined4 *)&stack0xfffffff8); + if (iVar3 == 0) { + iVar4 = 0; + } + FUN_0045b1b8(param_1,piVar2,&DAT_004f27f6,param_2,iVar4); + } + if (iVar4 != 0) { + pcVar1 = (char *)FUN_00497b88(); + FUN_004dbb24(&DAT_00524e20,s_ObjectFilePath___004f2862,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,pcVar1,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004f2875,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + pcVar1 = (char *)FUN_00498d24(); + FUN_004dbb24(&DAT_00524e20,s_TexmapFilePath___004f2877,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,pcVar1,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004f288a,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + pcVar1 = (char *)FUN_00497910(); + FUN_004dbb24(&DAT_00524e20,s_MaterialFilePath___004f288c,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,pcVar1,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004f289f,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + } + FUN_00403ecc(piVar2,3); + FUN_0048d42c(*(undefined4 **)(param_1 + 0x124)); + return; +} + + + +/* @0045d0f4 file=? name=FUN_0045d0f4 */ + +void __cdecl FUN_0045d0f4(int *param_1,byte param_2) + +{ + int *piVar1; + int iVar2; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f330c; + FUN_0045ff4c((undefined4 *)0x0,0,0,0); + iVar2 = 0; + piVar1 = param_1 + 0xb3; + do { + if ((int *)*piVar1 != (int *)0x0) { + FUN_004022d0((int *)*piVar1); + *piVar1 = 0; + } + iVar2 = iVar2 + 1; + piVar1 = piVar1 + 1; + } while (iVar2 < 0x28); + if ((int *)param_1[0xf4] != (int *)0x0) { + FUN_00489938((int *)param_1[0xf4]); + } + if ((param_1[0xf6] != 0) && (param_1[0xf5] != 0)) { + for (iVar2 = 0; iVar2 < param_1[0xf7]; iVar2 = iVar2 + 1) { + FUN_00489e58(*(int *)(param_1[0xf6] + iVar2 * 4)); + FUN_004898b8(*(int **)(param_1[0xf6] + iVar2 * 4)); + } + FUN_004022e8((int *)param_1[0xf5]); + FUN_004022e8((int *)param_1[0xf6]); + } + FUN_00401c70(DAT_004f1ab0,3); + DAT_004f1ab0 = (int *)0x0; + FUN_0041c44b(param_1 + 0xef,2); + FUN_00461431(param_1 + 0xe9,2); + FUN_0046134b(param_1 + 0xe4,2); + FUN_004612fc(param_1 + 0xdf,2); + FUN_004368f4(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0045d228 file=? name=FUN_0045d228 */ + +undefined4 __cdecl FUN_0045d228(int param_1) + +{ + FUN_00436b00(param_1); + return 1; +} + + + +/* @0045d23c file=? name=FUN_0045d23c */ + +void __cdecl FUN_0045d23c(undefined4 param_1,byte *param_2) + +{ + int iVar1; + undefined4 *puVar2; + int local_8; + + iVar1 = FUN_00497730(s_bmap_bmap1_tex_004f28a1,0,&local_8); + if (iVar1 == 0) { + FUN_004dbb24(&DAT_00524e20,s_WARNING__textures_for_player_nam_004f28b0,(char *)0x0); + } + else { + puVar2 = (undefined4 *)FUN_0048c2f0(iVar1); + if (puVar2 == (undefined4 *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_WARNING__texmap_for_player_names_004f28e0,(char *)0x0); + } + else { + FUN_0048c460((int)puVar2,param_2,0x80,0x40); + FUN_0048d5b0(puVar2); + } + } + return; +} + + + +/* @0045d2b4 file=? name=FUN_0045d2b4 */ + +void __cdecl FUN_0045d2b4(undefined4 param_1,int param_2,uint param_3,uint *param_4) + +{ + int iVar1; + int iVar2; + ushort *puVar3; + uint local_10; + uint local_c; + int local_8; + + puVar3 = *(ushort **)(param_2 + 0x18); + if ((param_3 & 1) != 0) { + param_4 = param_4 + 0x1000; + } + switch(param_3) { + case 1: + case 2: + local_c = 0xf000; + local_10 = 0xffff0fff; + break; + case 3: + case 4: + local_c = 0xf00; + local_10 = 0xfffff0ff; + break; + case 5: + case 6: + local_c = 0xf00000; + local_10 = 0xff0fffff; + break; + case 7: + case 8: + local_c = 0xf0000; + local_10 = 0xfff0ffff; + break; + case 9: + case 10: + local_c = 0xf0000000; + local_10 = 0xfffffff; + break; + case 0xb: + case 0xc: + local_c = 0xf000000; + local_10 = 0xf0ffffff; + } + iVar1 = 0xf; + local_8 = 0; + do { + iVar2 = 0; + do { + if ((1 << ((byte)iVar1 & 0x1f) & (uint)*puVar3) == 0) { + *param_4 = *param_4 & local_10; + } + else { + *param_4 = *param_4 | local_c; + } + param_4 = param_4 + 1; + iVar1 = iVar1 + -1; + if (iVar1 < 0) { + iVar1 = 0xf; + puVar3 = puVar3 + 1; + } + iVar2 = iVar2 + 1; + } while (iVar2 < 0x80); + local_8 = local_8 + 1; + } while (local_8 < 0x20); + return; +} + + + +/* @0045d3cc file=? name=FUN_0045d3cc */ + +void __cdecl FUN_0045d3cc(undefined4 param_1,int param_2) + +{ + if ((param_2 != 0x68) && (param_2 != 0x6a)) { + return; + } + FUN_00498448(s_flamebig_bgf_004f290e,0); + FUN_00498448(s_thrdbr_bgf_004f291b,0); + FUN_00498448(s_ldbr_bgf_004f2926,0); + FUN_00498448(s_flamesml_bgf_004f292f,0); + return; +} + + + +/* @0045d41c file=munga_l4/l4video.cpp name=FUN_0045d41c */ + +void __cdecl +FUN_0045d41c(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5 + ) + +{ + undefined4 *puVar1; + int iVar2; + undefined4 *puVar3; + undefined4 local_39c; + undefined4 local_398; + undefined4 local_394; + undefined4 local_390; + undefined4 local_38c; + undefined4 local_388; + undefined4 local_384 [12]; + undefined4 local_354; + undefined4 local_350; + undefined4 local_34c; + undefined4 local_348 [12]; + undefined4 local_318; + undefined4 local_314; + undefined4 local_310; + undefined4 local_30c [12]; + undefined4 local_2dc; + undefined4 local_2d8; + undefined4 local_2d4; + undefined4 local_2d0; + undefined4 local_2cc; + undefined4 local_2c8; + float local_2c4 [18]; + undefined4 local_27c [12]; + undefined4 local_24c; + undefined4 local_248; + undefined4 local_244; + undefined4 local_240; + undefined4 local_23c; + undefined4 local_238; + undefined4 local_234; + undefined4 local_230; + undefined4 local_22c; + undefined4 local_228; + undefined4 local_224; + undefined4 local_220; + float local_21c [18]; + undefined4 local_1d4 [12]; + undefined4 local_1a4; + undefined4 local_1a0; + undefined4 local_19c; + undefined4 local_198; + undefined4 local_194; + undefined4 local_190; + undefined4 local_18c; + undefined4 local_188; + undefined4 local_184; + undefined4 local_180; + undefined4 local_17c; + undefined4 local_178; + undefined4 local_174 [12]; + undefined4 local_144; + undefined4 local_140; + undefined4 local_13c; + undefined4 local_138; + undefined4 local_134; + undefined4 local_130; + undefined4 *local_12c; + undefined4 *local_128; + undefined4 *local_124; + undefined4 *local_120; + int local_11c; + undefined4 *local_118; + int local_114; + undefined4 *local_110; + int local_10c; + undefined4 *local_108; + undefined4 *local_104; + undefined4 *local_100; + undefined4 *local_fc; + undefined4 *local_f8; + undefined4 *local_f4; + undefined4 *local_f0; + int local_ec; + undefined4 *local_e8; + undefined4 *local_e4; + undefined4 *local_e0; + int local_dc; + undefined4 *local_d8; + undefined4 *local_d4; + undefined4 *local_d0; + undefined4 *local_cc; + undefined4 *local_c8; + undefined4 *local_c4; + undefined4 *local_c0; + undefined4 *local_bc; + int local_b8; + int local_b4; + int local_b0; + undefined4 *local_ac; + undefined4 *local_a8; + undefined4 *local_a4; + undefined4 *local_a0; + int local_9c; + int local_98; + undefined4 *local_94; + undefined4 *local_90; + undefined4 *local_8c; + undefined4 *local_88; + undefined4 *local_84; + undefined4 *local_80; + undefined4 *local_7c; + undefined4 *local_78; + int local_74; + undefined4 *local_70; + undefined4 *local_6c; + undefined4 *local_68; + undefined4 *local_64; + undefined4 *local_60; + undefined4 *local_5c; + undefined4 local_58; + undefined4 local_54; + undefined4 local_50; + undefined4 *local_4c; + undefined4 *local_48; + int local_44; + undefined4 *local_40; + undefined4 *local_3c; + undefined4 *local_38; + undefined4 *local_34; + undefined4 *local_30; + undefined4 *local_2c; + undefined4 local_28; + undefined4 local_24; + undefined4 local_20; + undefined4 *local_1c; + int local_18; + undefined4 *local_14; + undefined4 *local_10; + undefined4 *local_c; + int local_8; + + puVar1 = (undefined4 *)FUN_00402298(100); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_00453578(puVar1,param_2,1,0,*(undefined4 *)(param_1 + 300),1,0); + } + switch(param_5) { + case 0: + local_8 = FUN_00498448(s_shock_bgf_004f293c,0); + local_138 = 0x40600000; + local_134 = 0x40600000; + local_130 = 0x40600000; + local_144 = 0; + local_140 = 0; + local_13c = 0; + FUN_0040aadc(local_174); + local_10 = (undefined4 *)FUN_00402298(0xa8); + if (local_10 == (undefined4 *)0x0) { + local_c = (undefined4 *)0x0; + } + else { + local_c = FUN_00455930(local_10,param_2,1,local_8,*(undefined4 *)(param_1 + 300),1,0, + puVar1[0xb],local_174,&local_138,&local_144,0,0); + } + puVar1 = (undefined4 *)FUN_00402298(0x48); + if (puVar1 == (undefined4 *)0x0) { + local_14 = (undefined4 *)0x0; + } + else { + local_14 = FUN_00456610(puVar1,param_2,1,0x3f000000,1,(undefined4 *)0x0,0,0x3f800000,0); + } + iVar2 = FUN_00497730(s_btfx_firesmoke1_scr_tex_004f2946,0,&local_18); + if (iVar2 == 0) { + FUN_004dbb24(&DAT_00524e20,s_couldn_t_find_texture_btfx_fires_004f295e,(char *)0x0); + } + puVar1 = (undefined4 *)FUN_00402298(0xfc); + if (puVar1 == (undefined4 *)0x0) { + local_1c = (undefined4 *)0x0; + } + else { + local_1c = FUN_00456cf0(puVar1,param_2,1,0x3f800000,0x3f800000,0x3f800000,0x3f800000, + 0x3f800000,0x3f800000,0x3f800000,0x3f800000,0x3f800000,0,0,0,0, + 0x40800000,0x3e4ccccd,0xbd4ccccd,iVar2,0.0,0,0x3f000000,0x3f000000, + 0x3f000000,0x3f000000,0x3f000000,0x3f000000,0x3f000000,0x3f000000, + 0x3f000000,0,0,0,0,0x3dcccccd,0x3dcccccd,0xbd4ccccd,0,local_14 + 0x11) + ; + } + puVar1 = (undefined4 *)FUN_0048a38c(local_c[0xb],1); + if (puVar1 == (undefined4 *)0x0) { + FUN_0040385c(s_explosion_1_instance_came_back_n_004f299b, + s_d__tesla_bt_munga_l4_L4VIDEO_CPP_004f29c0,0xb58); + } + FUN_0048ae48((int)puVar1,local_1c[7]); + FUN_0048d5d4(puVar1); + break; + case 1: + local_8 = FUN_00498448(s_exp_bgf_004f29e1,0); + local_180 = 0x3e19999a; + local_17c = 0x3e19999a; + local_178 = 0x3e19999a; + local_18c = 0x3e3851ec; + local_188 = 0x3e6147ae; + local_184 = 0x3e3851ec; + local_198 = 0; + local_194 = 0; + local_190 = 0; + local_1a4 = 0; + local_1a0 = 0; + local_19c = 0; + FUN_0040aadc(local_1d4); + FUN_0040aadc(local_21c + 6); + local_21c[3] = 0.0; + local_21c[4] = 0.0; + local_21c[5] = 0.0; + local_20 = 0; + local_24 = 0x3f800000; + local_28 = 0; + local_21c[0] = 0.0; + local_21c[1] = 1.0; + local_21c[2] = 0.0; + FUN_0040ac6c(local_21c + 6,local_21c); + FUN_0040b0ac((int)(local_21c + 6),3,local_21c + 3); + local_30 = (undefined4 *)FUN_00402298(0xa8); + if (local_30 == (undefined4 *)0x0) { + local_2c = (undefined4 *)0x0; + } + else { + local_2c = FUN_00455930(local_30,param_2,1,local_8,*(undefined4 *)(param_1 + 300),1,0, + puVar1[0xb],local_1d4,&local_180,&local_198,0,0); + } + local_38 = (undefined4 *)FUN_00402298(0xa8); + if (local_38 == (undefined4 *)0x0) { + local_34 = (undefined4 *)0x0; + } + else { + local_34 = FUN_00455930(local_38,param_2,1,local_8,*(undefined4 *)(param_1 + 300),1,0, + puVar1[0xb],local_21c + 6,&local_18c,&local_1a4,0,0); + } + puVar1 = (undefined4 *)FUN_00402298(0x48); + if (puVar1 == (undefined4 *)0x0) { + local_3c = (undefined4 *)0x0; + } + else { + local_3c = FUN_00456610(puVar1,param_2,1,0x40400000,1,(undefined4 *)0x0,0,0x3f800000,0); + } + puVar1 = (undefined4 *)FUN_00402298(0x48); + if (puVar1 == (undefined4 *)0x0) { + local_40 = (undefined4 *)0x0; + } + else { + local_40 = FUN_00456610(puVar1,param_2,1,0x40000000,1,(undefined4 *)0x0,0,0x3f800000,0); + } + iVar2 = FUN_00497730(s_btfx_firesmoke1_scr_tex_004f29e9,0,&local_44); + if (iVar2 == 0) { + FUN_004dbb24(&DAT_00524e20,s_couldn_t_find_texture_btfx_fires_004f2a01,(char *)0x0); + } + puVar1 = (undefined4 *)FUN_00402298(0xfc); + if (puVar1 == (undefined4 *)0x0) { + local_48 = (undefined4 *)0x0; + } + else { + local_48 = FUN_00456cf0(puVar1,param_2,1,0x3f666666,0,0,0x3f800000,0x3e4ccccd,0,0x3f800000, + 0x3e4ccccd,0,0,0,0,0,0x41200000,0x3f19999a,0xbd4ccccd,iVar2,0.0,0, + 0x3e99999a,0,0,0x3f000000,0,0,0x3e4ccccd,0,0,0,0,0,0,0x3e800000, + 0x3e800000,0xbd4ccccd,0x41700000,local_3c + 0x11); + } + puVar1 = (undefined4 *)FUN_00402298(0xfc); + if (puVar1 == (undefined4 *)0x0) { + local_4c = (undefined4 *)0x0; + } + else { + local_4c = FUN_00456cf0(puVar1,param_2,1,0x3f666666,0,0,0x3f800000,0x3f19999a,0x3e99999a, + 0x3f800000,0x3ecccccd,0x3e4ccccd,0,0,0,0,0x41000000,0x3e4ccccd, + 0xbd4ccccd,iVar2,0.0,0,0x3dcccccd,0,0,0,0,0,0x3dcccccd,0,0,0,0,0,0, + 0x3e800000,0x3e800000,0xbd4ccccd,0x41700000,local_40 + 0x11); + } + puVar1 = (undefined4 *)FUN_0048a38c(local_2c[0xb],1); + puVar3 = (undefined4 *)FUN_0048a38c(local_34[0xb],1); + if (puVar1 == (undefined4 *)0x0) { + FUN_0040385c(s_explosion_1_instance_came_back_n_004f2a3e, + s_d__tesla_bt_munga_l4_L4VIDEO_CPP_004f2a63,0xbe6); + } + if (puVar3 == (undefined4 *)0x0) { + FUN_0040385c(s_explosion_2_instance_came_back_n_004f2a84, + s_d__tesla_bt_munga_l4_L4VIDEO_CPP_004f2aa9,0xbe8); + } + FUN_0048ae48((int)puVar1,local_48[7]); + FUN_0048ae48((int)puVar3,local_4c[7]); + FUN_0048d5d4(puVar1); + FUN_0048d5d4(puVar3); + break; + case 2: + local_8 = FUN_00498448(s_exp_bgf_004f2aca,0); + local_228 = 0x3f800000; + local_224 = 0x3e4ccccd; + local_220 = 0x3f800000; + local_234 = 0x3f400000; + local_230 = 0x3f400000; + local_22c = 0x3f400000; + local_240 = 0xbbed9168; + local_23c = 0xbb83126f; + local_238 = 0xbbed9168; + local_24c = 0xbc6368f1; + local_248 = 0xbc6368f1; + local_244 = 0xbc6368f1; + FUN_0040aadc(local_27c); + FUN_0040aadc(local_2c4 + 6); + local_2c4[3] = 0.0; + local_2c4[4] = 0.0; + local_2c4[5] = 0.0; + local_50 = 0; + local_54 = 0x3f800000; + local_58 = 0; + local_2c4[0] = 0.0; + local_2c4[1] = 1.0; + local_2c4[2] = 0.0; + FUN_0040ac6c(local_2c4 + 6,local_2c4); + FUN_0040b0ac((int)(local_2c4 + 6),3,local_2c4 + 3); + local_60 = (undefined4 *)FUN_00402298(0xa8); + if (local_60 == (undefined4 *)0x0) { + local_5c = (undefined4 *)0x0; + } + else { + local_5c = FUN_00455930(local_60,param_2,1,local_8,*(undefined4 *)(param_1 + 300),1,0, + puVar1[0xb],local_27c,&local_228,&local_240,0,0); + } + local_68 = (undefined4 *)FUN_00402298(0xa8); + if (local_68 == (undefined4 *)0x0) { + local_64 = (undefined4 *)0x0; + } + else { + local_64 = FUN_00455930(local_68,param_2,1,local_8,*(undefined4 *)(param_1 + 300),1,0, + puVar1[0xb],local_2c4 + 6,&local_234,&local_24c,0,0); + } + puVar1 = (undefined4 *)FUN_00402298(0x48); + if (puVar1 == (undefined4 *)0x0) { + local_6c = (undefined4 *)0x0; + } + else { + local_6c = FUN_00456610(puVar1,param_2,1,0x40400000,1,(undefined4 *)0x0,0,0x3f800000,0); + } + puVar1 = (undefined4 *)FUN_00402298(0x48); + if (puVar1 == (undefined4 *)0x0) { + local_70 = (undefined4 *)0x0; + } + else { + local_70 = FUN_00456610(puVar1,param_2,1,0x40000000,1,(undefined4 *)0x0,0,0x3f800000,0); + } + iVar2 = FUN_00497730(s_btfx_firesmoke1_scr_tex_004f2ad2,0,&local_74); + if (iVar2 == 0) { + FUN_004dbb24(&DAT_00524e20,s_couldn_t_find_texture_btfx_fires_004f2aea,(char *)0x0); + } + local_7c = (undefined4 *)FUN_00402298(0xfc); + if (local_7c == (undefined4 *)0x0) { + local_78 = (undefined4 *)0x0; + } + else { + local_78 = FUN_00456cf0(local_7c,param_2,1,0x3f666666,0,0,0x3f800000,0x3e4ccccd,0,0x3f800000, + 0x3e4ccccd,0,0,0,0,0,0x41000000,0x3e4ccccd,0xbd4ccccd,iVar2,0.0,0, + 0x3e99999a,0,0,0x3f000000,0,0,0x3e4ccccd,0,0,0,0,0,0,0x3e800000, + 0x3e800000,0xbd4ccccd,0x41700000,local_6c + 0x11); + } + local_84 = (undefined4 *)FUN_00402298(0xfc); + if (local_84 == (undefined4 *)0x0) { + local_80 = (undefined4 *)0x0; + } + else { + local_80 = FUN_00456cf0(local_84,param_2,1,0x3f666666,0,0,0x3f800000,0x3f19999a,0x3ecccccd, + 0x3f800000,0x3e99999a,0x3e4ccccd,0,0,0,0,0x41000000,0x3e4ccccd, + 0xbd4ccccd,iVar2,0.0,0,0x3dcccccd,0,0,0,0,0,0,0,0,0,0,0,0,0x3e800000, + 0x3e800000,0xbd4ccccd,0x41700000,local_70 + 0x11); + } + puVar1 = (undefined4 *)FUN_0048a38c(local_5c[0xb],1); + puVar3 = (undefined4 *)FUN_0048a38c(local_64[0xb],1); + if (puVar1 == (undefined4 *)0x0) { + FUN_0040385c(s_explosion_1_instance_came_back_n_004f2b27, + s_d__tesla_bt_munga_l4_L4VIDEO_CPP_004f2b4c,0xc7b); + } + if (puVar3 == (undefined4 *)0x0) { + FUN_0040385c(s_explosion_2_instance_came_back_n_004f2b6d, + s_d__tesla_bt_munga_l4_L4VIDEO_CPP_004f2b92,0xc7d); + } + FUN_0048ae48((int)puVar1,local_78[7]); + FUN_0048ae48((int)puVar3,local_80[7]); + FUN_0048d5d4(puVar1); + FUN_0048d5d4(puVar3); + break; + case 3: + local_8 = FUN_00498448(s_spk1_bgf_004f2bb3,0); + local_2d0 = 0x3dcccccd; + local_2cc = 0x3dcccccd; + local_2c8 = 0x3dcccccd; + local_2dc = 0; + local_2d8 = 0; + local_2d4 = 0; + FUN_0040aadc(local_30c); + local_8c = (undefined4 *)FUN_00402298(0xa8); + if (local_8c == (undefined4 *)0x0) { + local_88 = (undefined4 *)0x0; + } + else { + local_88 = FUN_00455930(local_8c,param_2,1,local_8,*(undefined4 *)(param_1 + 300),1,0, + puVar1[0xb],local_30c,&local_2d0,&local_2dc,0xbe19999a,0); + } + local_94 = (undefined4 *)FUN_00402298(0x48); + if (local_94 == (undefined4 *)0x0) { + local_90 = (undefined4 *)0x0; + } + else { + local_90 = FUN_00456610(local_94,param_2,1,0x3f000000,1,(undefined4 *)0x0,0,0x3f800000,0); + } + local_9c = FUN_00497730(s_btfx_firesmoke1_scr_tex_004f2bbc,0,&local_98); + if (local_9c == 0) { + FUN_004dbb24(&DAT_00524e20,s_couldn_t_find_texture_btfx_fires_004f2bd4,(char *)0x0); + } + local_a4 = (undefined4 *)FUN_00402298(0xfc); + if (local_a4 == (undefined4 *)0x0) { + local_a0 = (undefined4 *)0x0; + } + else { + local_a0 = FUN_00456cf0(local_a4,param_2,1,0x3f800000,0x3f800000,0,0x3f800000,0x3f800000,0, + 0x3f800000,0x3f800000,0,0,0,0,0,0x3f800000,0x3f800000,0x3f800000, + local_9c,0.0,2,0x3f666666,0,0,0x3f666666,0,0,0x3f666666,0,0,0,0,0,0, + 0x3f800000,0x3f800000,0x3f800000,0,local_90 + 0x11); + } + puVar1 = (undefined4 *)FUN_0048a38c(local_88[0xb],1); + if (puVar1 == (undefined4 *)0x0) { + FUN_0040385c(s_explosion_1_instance_came_back_n_004f2c11, + s_d__tesla_bt_munga_l4_L4VIDEO_CPP_004f2c36,0xcd1); + } + FUN_0048ae48((int)puVar1,local_a0[7]); + FUN_0048d5d4(puVar1); + break; + case 4: + local_318 = 0; + local_314 = 0; + local_310 = 0; + FUN_0040aadc(local_348); + local_354 = 0; + local_350 = 0x40c66666; + local_34c = 0; + FUN_0040aadc(local_384); + FUN_0040b0ac((int)local_384,3,&local_354); + local_ac = (undefined4 *)FUN_00402298(0x50); + if (local_ac == (undefined4 *)0x0) { + local_a8 = (undefined4 *)0x0; + } + else { + local_a8 = FUN_0045848c(local_ac,param_2,*(int *)(param_1 + 300),0,1,0,local_384,puVar1[0xb]); + } + local_b0 = FUN_00498448(s_thrdbr_bgf_004f2c57,0); + local_b4 = FUN_00498448(s_ldbr_bgf_004f2c62,0); + local_b8 = FUN_00498448(s_flamesml_bgf_004f2c6b,0); + local_c0 = (undefined4 *)FUN_00402298(0x30); + if (local_c0 == (undefined4 *)0x0) { + local_bc = (undefined4 *)0x0; + } + else { + local_bc = FUN_004564a8(local_c0,param_2,1,0.55,0.0); + } + local_390 = 0xbf800000; + local_38c = 0x40a00000; + local_388 = 0xbf800000; + local_c4 = (undefined4 *)FUN_00402298(0x38); + if (local_c4 != (undefined4 *)0x0) { + FUN_00456868(local_c4,param_2,1,local_bc + 0xb,0xf,local_a8[4],&local_390); + } + local_cc = (undefined4 *)FUN_00402298(0x30); + if (local_cc == (undefined4 *)0x0) { + local_c8 = (undefined4 *)0x0; + } + else { + local_c8 = FUN_004564a8(local_cc,param_2,1,0.25,0.0); + } + local_d4 = (undefined4 *)FUN_00402298(0x50); + if (local_d4 == (undefined4 *)0x0) { + local_d0 = (undefined4 *)0x0; + } + else { + local_d0 = FUN_0045848c(local_d4,param_2,*(int *)(param_1 + 300),local_b0,1,0,local_348, + puVar1[0xb]); + } + local_d8 = (undefined4 *)FUN_00402298(0x40); + if (local_d8 != (undefined4 *)0x0) { + FUN_0045635c(local_d8,param_2,1,local_d0[4],-0.025,local_c8 + 0xb); + } + local_dc = FUN_0048a38c(local_d0[4],1); + local_e0 = (undefined4 *)FUN_00402298(0x2c); + if (local_e0 != (undefined4 *)0x0) { + FUN_0045612c(local_e0,param_2,1,local_dc,1,local_c8 + 0xb); + } + local_e8 = (undefined4 *)FUN_00402298(0x50); + if (local_e8 == (undefined4 *)0x0) { + local_e4 = (undefined4 *)0x0; + } + else { + local_e4 = FUN_0045848c(local_e8,param_2,*(int *)(param_1 + 300),local_b4,1,0,local_348, + local_d0[4]); + } + local_ec = FUN_0048a38c(local_e4[4],1); + local_f0 = (undefined4 *)FUN_00402298(0x2c); + if (local_f0 != (undefined4 *)0x0) { + FUN_0045612c(local_f0,param_2,1,local_ec,1,local_c8 + 0xb); + } + local_f8 = (undefined4 *)FUN_00402298(0x30); + if (local_f8 == (undefined4 *)0x0) { + local_f4 = (undefined4 *)0x0; + } + else { + local_f4 = FUN_004564a8(local_f8,param_2,1,0.25,0.0); + } + local_fc = (undefined4 *)FUN_00402298(0x50); + if (local_fc == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_0045848c(local_fc,param_2,*(int *)(param_1 + 300),0,1,0,local_348,puVar1[0xb]); + } + local_100 = (undefined4 *)FUN_00402298(0x40); + if (local_100 != (undefined4 *)0x0) { + FUN_0045635c(local_100,param_2,1,puVar1[4],-0.01,local_f4 + 0xb); + } + local_108 = (undefined4 *)FUN_00402298(0x50); + if (local_108 == (undefined4 *)0x0) { + local_104 = (undefined4 *)0x0; + } + else { + local_104 = FUN_0045848c(local_108,param_2,*(int *)(param_1 + 300),local_b8,1,0,local_348, + puVar1[4]); + } + local_10c = FUN_0048a38c(local_104[4],1); + local_110 = (undefined4 *)FUN_00402298(0x2c); + if (local_110 != (undefined4 *)0x0) { + FUN_0045612c(local_110,param_2,1,local_10c,1,local_f4 + 0xb); + } + local_114 = FUN_00498448(s_flamebig_bgf_004f2c78,0); + local_118 = (undefined4 *)FUN_00402298(0x50); + if (local_118 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_0045848c(local_118,param_2,*(int *)(param_1 + 300),local_114,1,0,local_348, + puVar1[4]); + } + FUN_0048a674(puVar1[4],2); + FUN_0048d3e8((undefined4 *)puVar1[4]); + local_11c = FUN_0048a38c(puVar1[4],1); + local_120 = (undefined4 *)FUN_00402298(0x2c); + if (local_120 != (undefined4 *)0x0) { + FUN_0045612c(local_120,param_2,1,local_11c,1,local_f4 + 0xb); + } + break; + case 5: + local_39c = 0; + local_398 = 0; + local_394 = 0; + local_128 = (undefined4 *)FUN_00402298(0x30); + if (local_128 == (undefined4 *)0x0) { + local_124 = (undefined4 *)0x0; + } + else { + local_124 = FUN_004564a8(local_128,param_2,1,0.15,0.0); + } + local_12c = (undefined4 *)FUN_00402298(0x38); + if (local_12c != (undefined4 *)0x0) { + FUN_00456868(local_12c,param_2,1,local_124 + 0xb,0xc,puVar1[0xb],&local_39c); + } + break; + case 6: + FUN_004dbb24(&DAT_00524e20,s_Explosion_effect_104_called__thi_004f2c85,(char *)0x0); + } + return; +} + + + +/* @0045e744 file=? name=FUN_0045e744 */ + +void __cdecl FUN_0045e744(int param_1,int param_2,int param_3,int param_4) + +{ + uint uVar1; + undefined4 *puVar2; + int iVar3; + undefined4 *puVar4; + undefined4 local_1e0 [12]; + undefined4 local_1b0 [12]; + undefined4 local_180 [12]; + int local_150 [3]; + int local_144 [4]; + uint local_134; + undefined4 *local_130; + undefined4 *local_12c; + undefined4 *local_128; + undefined4 *local_124; + undefined4 *local_120; + undefined4 *local_11c; + undefined4 *local_118; + undefined4 *local_114; + undefined4 *local_110; + char *local_10c; + char *local_108; + int local_104; + undefined4 *local_100; + undefined4 *local_fc; + undefined4 local_f8; + undefined4 local_f4; + int local_f0; + undefined4 *local_ec; + undefined4 *local_e8; + undefined4 *local_e4; + undefined4 *local_e0; + undefined4 *local_dc; + undefined4 *local_d8; + undefined4 *local_d4; + undefined4 *local_d0; + undefined4 *local_cc; + undefined4 *local_c8; + int local_c4; + undefined4 *local_c0; + int local_bc; + int local_b8; + int local_b4; + int local_b0; + int local_ac; + int local_a8; + int local_a4; + int local_a0; + undefined4 *local_9c; + undefined4 *local_98; + undefined4 *local_94; + undefined4 *local_90; + int local_8c; + int local_88; + int local_84; + undefined4 *local_80; + char *local_7c; + undefined4 *local_78; + char *local_74; + int local_70; + undefined4 *local_6c; + undefined4 *local_68; + int local_64; + undefined4 *local_60; + int local_5c; + uint local_58; + undefined4 *local_54; + undefined4 *local_50; + int local_4c; + undefined4 *local_48; + undefined4 *local_44; + undefined4 *local_40; + undefined4 *local_3c; + undefined4 *local_38; + char *local_34; + char *local_30; + int local_2c; + undefined4 *local_28; + undefined4 *local_24; + undefined4 local_20; + undefined4 local_1c; + int local_18; + undefined4 local_14; + undefined4 *local_10; + int local_c; + char *local_8; + + FUN_00452cad(local_144,0); + local_10 = (undefined4 *)0x0; + DAT_004f1aa8 = param_2; + if (param_3 != 0) { + FUN_0045a0c4(local_144,param_3); + } + FUN_004614d7(local_150,(int)local_144); + iVar3 = *(int *)(param_2 + 4); + if (iVar3 < 0x47) { + if (iVar3 == 0x46) { + if ((*(uint *)(param_2 + 0x28) & 0xc) == 0) { + local_84 = param_2; + local_88 = param_2 + 0x220; + local_8c = param_2 + 0x224; + local_90 = (undefined4 *)FUN_00402298(0xbc); + if (local_90 != (undefined4 *)0x0) { + FUN_00454a70(local_90,param_2,1,local_88,local_8c); + } + } + } + else if (iVar3 < 0x33) { + if ((iVar3 != 0x32) && (iVar3 != 0x30)) { + if (iVar3 != 0x31) { +LAB_0045f121: + puVar2 = &DAT_004e107c; + puVar4 = local_1e0; + for (iVar3 = 0xc; iVar3 != 0; iVar3 = iVar3 + -1) { + *puVar4 = *puVar2; + puVar2 = puVar2 + 1; + puVar4 = puVar4 + 1; + } + if (param_3 == 0) { + FUN_00436a48(param_1,param_2); + DAT_004f1aa8 = 0; + FUN_00461515(local_150,2); + FUN_00452ccc(local_144,2); + return; + } + if (param_4 == 1) { + local_f4 = 1; + local_f8 = 0; + } + else { + local_f4 = 3; + local_f8 = 0xffffffff; + } + local_104 = 1; + (**(code **)(local_150[0] + 4))(local_150); +LAB_0045f52e: + while (iVar3 = (**(code **)(local_150[0] + 0x28))(local_150), iVar3 != 0) { + local_8 = *(char **)(iVar3 + 0xc); + local_c = *(int *)(local_8 + 0x10); + uVar1 = *(uint *)(local_8 + 0x14); + if ((local_c == 2) || (local_c == 3)) { + local_f0 = FUN_00498448(local_8,0); + if (local_f0 == 0) goto code_r0x0045f253; + goto LAB_0045f2a8; + } + local_108 = local_8; + FUN_004dbb24(&DAT_00524e20,s_L4VIDEO_cpp_wrong_video_resource_004f2d43,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,local_108,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004f2d75,(char *)0x0); + } + goto LAB_0045f549; + } + (**(code **)(local_150[0] + 4))(local_150); + while (iVar3 = (**(code **)(local_150[0] + 0x28))(local_150), iVar3 != 0) { + local_7c = *(char **)(iVar3 + 0xc); + iVar3 = FUN_004dd1e0(local_7c); + if ((iVar3 < 100) || (999 < iVar3)) { + local_80 = (undefined4 *)(param_2 + 0x100); + FUN_004606d4(param_1,*local_80,*(undefined4 *)(param_2 + 0x104), + *(undefined4 *)(param_2 + 0x108),iVar3,0,0); + } + else { + FUN_0045d41c(param_1,param_2,param_3,param_4,iVar3 + -100); + } + } + } + } + else if (iVar3 == 0x3f) { + local_6c = (undefined4 *)FUN_00402298(100); + if (local_6c == (undefined4 *)0x0) { + local_68 = (undefined4 *)0x0; + } + else { + local_68 = FUN_00453578(local_6c,param_2,1,0,*(undefined4 *)(param_1 + 300),1,0); + } + local_70 = FUN_0041bfc0(param_2,s_SimulationState_004f2d33); + (**(code **)(local_150[0] + 4))(local_150); + while (iVar3 = (**(code **)(local_150[0] + 0x28))(local_150), iVar3 != 0) { + local_74 = *(char **)(iVar3 + 0xc); + local_64 = FUN_004dd1e0(local_74); + local_78 = (undefined4 *)FUN_00402298(0x3c); + if (local_78 != (undefined4 *)0x0) { + FUN_004585f8(local_78,param_2,*(undefined4 *)(param_1 + 300),&DAT_004e0f80,local_68[0xb], + local_70,2,local_64,0.01); + } + } + } + else { + if (iVar3 != 0x45) goto LAB_0045f121; + if (param_4 == 1) { + local_98 = (undefined4 *)FUN_00402298(100); + if (local_98 == (undefined4 *)0x0) { + local_94 = (undefined4 *)0x0; + } + else { + local_94 = FUN_00453578(local_98,param_2,1,0,*(undefined4 *)(param_1 + 300),1,0); + } + local_9c = (undefined4 *)FUN_00402298(0x5c); + if (local_9c != (undefined4 *)0x0) { + FUN_004579a8(local_9c,param_2,*(int *)(param_1 + 300),&DAT_004e107c,local_94[0xb], + *(undefined4 **)(param_1 + 0x124),(undefined4 *)0x0); + } + } + } + } + else { + if (iVar3 < 0x5f) { + if (iVar3 != 0x5e) { + if (iVar3 == 0x54) goto LAB_0045f549; + if (iVar3 != 0x56) goto LAB_0045f121; + } + puVar2 = &DAT_004e107c; + puVar4 = local_180; + for (iVar3 = 0xc; iVar3 != 0; iVar3 = iVar3 + -1) { + *puVar4 = *puVar2; + puVar2 = puVar2 + 1; + puVar4 = puVar4 + 1; + } + if (param_3 == 0) { + FUN_00436a48(param_1,param_2); + DAT_004f1aa8 = 0; + FUN_00461515(local_150,2); + FUN_00452ccc(local_144,2); + return; + } + local_1c = 3; + local_20 = 0xffffffff; + local_2c = 1; + (**(code **)(local_150[0] + 4))(local_150); +LAB_0045eb35: + while (iVar3 = (**(code **)(local_150[0] + 0x28))(local_150), iVar3 != 0) { + local_8 = *(char **)(iVar3 + 0xc); + local_c = *(int *)(local_8 + 0x10); + uVar1 = *(uint *)(local_8 + 0x14); + if ((local_c == 2) || (local_c == 3)) { + local_18 = FUN_00498448(local_8,0); + if (local_18 == 0) goto code_r0x0045e91e; + goto LAB_0045e96a; + } + local_30 = local_8; + FUN_004dbb24(&DAT_00524e20,s_L4VIDEO_cpp_wrong_video_resource_004f2ccb,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,local_30,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004f2cfd,(char *)0x0); + } + goto LAB_0045f549; + } + if (iVar3 == 0x5f) { + local_b8 = 0; + (**(code **)(local_150[0] + 4))(local_150); + while (iVar3 = (**(code **)(local_150[0] + 0x28))(local_150), iVar3 != 0) { + local_8 = *(char **)(iVar3 + 0xc); + switch(local_b8) { + case 0: + local_a0 = FUN_00498448(local_8,0); + break; + case 1: + local_a4 = FUN_00498448(local_8,0); + break; + case 2: + local_a8 = FUN_00498448(local_8,0); + break; + case 3: + local_ac = FUN_00498448(local_8,0); + break; + case 4: + local_b0 = FUN_00498448(local_8,0); + break; + case 5: + local_b4 = FUN_00498448(local_8,0); + } + local_b8 = local_b8 + 1; + } + local_bc = **(int **)(param_2 + 0x128); + local_c0 = (undefined4 *)(local_bc + 0xec); + local_c4 = *(int *)(*(int *)(param_2 + 0x128) + 4); + local_c8 = (undefined4 *)(local_c4 + 0xec); + local_d0 = (undefined4 *)FUN_00402298(100); + if (local_d0 == (undefined4 *)0x0) { + local_cc = (undefined4 *)0x0; + } + else { + local_cc = FUN_00453578(local_d0,param_2,0,local_a0,*(undefined4 *)(param_1 + 300),1,0); + } + local_10 = (undefined4 *)local_cc[0xb]; + FUN_0040aadc(local_1b0); + local_d8 = (undefined4 *)FUN_00402298(100); + if (local_d8 == (undefined4 *)0x0) { + local_d4 = (undefined4 *)0x0; + } + else { + local_d4 = FUN_00457bf4(local_d8,param_2,*(int *)(param_1 + 300),local_a4,1,0,local_1b0, + local_cc[0xb],local_c0); + } + local_e0 = (undefined4 *)FUN_00402298(100); + if (local_e0 == (undefined4 *)0x0) { + local_dc = (undefined4 *)0x0; + } + else { + local_dc = FUN_00457bf4(local_e0,param_2,*(int *)(param_1 + 300),local_a8,1,0,local_1b0, + local_cc[0xb],local_c8); + } + local_e4 = (undefined4 *)FUN_00402298(0x30); + if (local_e4 != (undefined4 *)0x0) { + FUN_00453474(local_e4,param_2,0,local_ac,local_cc[0xb],1,0,1); + } + local_e8 = (undefined4 *)FUN_00402298(0x30); + if (local_e8 != (undefined4 *)0x0) { + FUN_00453474(local_e8,param_2,0,local_b0,local_d4[5],1,0,1); + } + local_ec = (undefined4 *)FUN_00402298(0x30); + if (local_ec != (undefined4 *)0x0) { + FUN_00453474(local_ec,param_2,0,local_b4,local_dc[5],1,0,1); + } + } + else { + if (iVar3 != 0x7d2) goto LAB_0045f121; + (**(code **)(local_150[0] + 4))(local_150); + iVar3 = (**(code **)(local_150[0] + 0x28))(local_150); + local_8 = *(char **)(iVar3 + 0xc); + local_5c = FUN_00498448(local_8,0); + local_60 = (undefined4 *)FUN_00402298(0x50); + if (local_60 != (undefined4 *)0x0) { + FUN_00452e18(local_60,param_2,1,local_5c,*(int *)(param_1 + 300)); + } + } + } +LAB_0045f549: + FUN_0045a134((int)local_144); + DAT_004f1aa8 = 0; + if (local_10 != (undefined4 *)0x0) { + FUN_0045a994(param_1,(int)local_10,param_2); + } + FUN_00461515(local_150,2); + FUN_00452ccc(local_144,2); + return; +code_r0x0045e91e: + local_34 = local_8; + FUN_004dbb24(&DAT_00524e20,s_L4VIDEO_cpp_couldn_t_load_object_004f2cff,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,local_34,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004f2d21,(char *)0x0); + if (local_2c != 0) { +LAB_0045e96a: + if (local_2c == 0) { + if ((uVar1 | 7) == 0) { + local_48 = (undefined4 *)FUN_00402298(0x30); + if (local_48 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_00453474(local_48,param_2,0,local_18,local_24,local_1c,local_20,1); + } + local_28 = (undefined4 *)0x0; + local_14 = puVar2[0xb]; + } + else { + local_44 = (undefined4 *)FUN_00402298(0x50); + if (local_44 == (undefined4 *)0x0) { + local_40 = (undefined4 *)0x0; + } + else { + local_40 = FUN_0045848c(local_44,param_2,*(int *)(param_1 + 300),local_18,local_1c, + local_20,local_180,local_24); + } + local_28 = (undefined4 *)local_40[4]; + local_14 = local_40[6]; + } + } + else { + local_2c = 0; + local_3c = (undefined4 *)FUN_00402298(100); + if (local_3c == (undefined4 *)0x0) { + local_38 = (undefined4 *)0x0; + } + else { + local_38 = FUN_00453578(local_3c,param_2,0,local_18,*(undefined4 *)(param_1 + 300),local_1c, + local_20); + } + local_28 = (undefined4 *)local_38[0xb]; + local_14 = local_38[0xc]; + local_24 = local_28; + local_10 = local_28; + } + local_4c = FUN_0041bfc0(param_2,s_SimulationState_004f2d23); + if (local_c == 2) { + local_50 = (undefined4 *)FUN_00402298(0x30); + if (local_50 != (undefined4 *)0x0) { + FUN_00456224(local_50,param_2,2,local_14,0,local_4c,1); + } + } + else if ((local_c == 3) && + (local_54 = (undefined4 *)FUN_00402298(0x30), local_54 != (undefined4 *)0x0)) { + FUN_00456224(local_54,param_2,2,local_14,1,local_4c,1); + } + if ((local_28 != (undefined4 *)0x0) && ((uVar1 & 7) != 0)) { + local_58 = (uint)((uVar1 & 1) != 0); + if ((uVar1 & 2) != 0) { + local_58 = local_58 | 2; + } + if ((uVar1 & 4) != 0) { + local_58 = local_58 | 4; + } + FUN_0048a674((int)local_28,local_58); + FUN_0048d3e8(local_28); + } + } + goto LAB_0045eb35; +code_r0x0045f253: + local_10c = local_8; + FUN_004dbb24(&DAT_00524e20,s_L4VIDEO_cpp_couldn_t_load_object_004f2d77,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,local_10c,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004f2d99,(char *)0x0); + if (local_104 != 0) { +LAB_0045f2a8: + if (local_104 == 0) { + if ((uVar1 | 7) == 0) { + local_130 = (undefined4 *)FUN_00402298(0x30); + if (local_130 != (undefined4 *)0x0) { + FUN_00453474(local_130,param_2,0,local_f0,local_fc,local_f4,local_f8,1); + } + local_100 = (undefined4 *)0x0; + } + else { + local_12c = (undefined4 *)FUN_00402298(0x50); + if (local_12c == (undefined4 *)0x0) { + local_128 = (undefined4 *)0x0; + } + else { + local_128 = FUN_0045848c(local_12c,param_2,*(int *)(param_1 + 300),local_f0,local_f4, + local_f8,local_1e0,local_fc); + } + local_100 = (undefined4 *)local_128[4]; + } + } + else { + local_104 = 0; + iVar3 = FUN_0041a1a4(**(int **)(param_2 + 0xc),0x4e4518); + if (iVar3 == 0) { + local_11c = (undefined4 *)FUN_00402298(100); + if (local_11c == (undefined4 *)0x0) { + local_118 = (undefined4 *)0x0; + } + else { + local_118 = FUN_00453578(local_11c,param_2,0,local_f0,*(undefined4 *)(param_1 + 300), + local_f4,local_f8); + } + local_fc = (undefined4 *)local_118[0xb]; + } + else { + local_114 = (undefined4 *)FUN_00402298(100); + if (local_114 == (undefined4 *)0x0) { + local_110 = (undefined4 *)0x0; + } + else { + local_110 = FUN_00453578(local_114,param_2,1,local_f0,*(undefined4 *)(param_1 + 300), + local_f4,local_f8); + } + local_fc = (undefined4 *)local_110[0xb]; + } + local_10 = local_fc; + if (param_4 == 1) { + local_120 = (undefined4 *)FUN_0041bfc0(param_2,s_EyepointRotation_004f2d9b); + local_124 = (undefined4 *)FUN_00402298(0x5c); + if (local_124 != (undefined4 *)0x0) { + FUN_004579a8(local_124,param_2,*(int *)(param_1 + 300),&DAT_004e107c,local_fc, + *(undefined4 **)(param_1 + 0x124),local_120); + } + } + local_100 = local_fc; + } + if ((local_100 != (undefined4 *)0x0) && ((uVar1 & 7) != 0)) { + local_134 = (uint)((uVar1 & 1) != 0); + if ((uVar1 & 2) != 0) { + local_134 = local_134 | 2; + } + if ((uVar1 & 4) != 0) { + local_134 = local_134 | 4; + } + FUN_0048a674((int)local_100,local_134); + FUN_0048d3e8(local_100); + } + } + goto LAB_0045f52e; +} + + + +/* @0045f59c file=munga_l4/l4video.cpp name=FUN_0045f59c */ + +void __cdecl FUN_0045f59c(int param_1) + +{ + int iVar1; + float *pfVar2; + int iVar3; + uint *puVar4; + float local_cc [12]; + float local_9c [12]; + float local_6c [12]; + float local_3c [12]; + uint *local_c; + int local_8; + + FUN_0040aadc(local_3c); + FUN_0040aadc(local_6c); + FUN_0040aadc(local_9c); + FUN_0040aadc(local_cc); + iVar1 = FUN_00417ab4(param_1 + 0x40); + pfVar2 = (float *)FUN_0041bfc0(iVar1,s_EyepointRotation_004f2dac); + iVar3 = FUN_0041a1a4(**(int **)(iVar1 + 0xc),0x4e4afc); + if (iVar3 == 0) { + FUN_0040ab44(local_3c,(undefined4 *)(iVar1 + 0x100)); + if (pfVar2 == (float *)0x0) { + FUN_0040bc54((float *)(param_1 + 0x50),local_3c); + } + else { + FUN_0040bc54(local_6c,local_3c); + FUN_0040ac6c(local_9c,pfVar2); + FUN_0040bc54(local_cc,local_9c); + FUN_0040b104((float *)(param_1 + 0x50),local_6c,local_cc); + } + } + else { + local_8 = iVar1; + local_c = (uint *)FUN_00402298(0x10); + if (local_c == (uint *)0x0) { + puVar4 = (uint *)0x0; + } + else { + puVar4 = FUN_00402460(local_c,s_siteeyepoint_004f2dbd); + } + puVar4[3] = puVar4[3] + 1; + iVar1 = FUN_00424b60(local_8,(int *)puVar4); + if (iVar1 == 0) { + FUN_0040385c(s_DPLRenderer__SetupCull_jointed_m_004f2dca, + s_d__tesla_bt_munga_l4_L4VIDEO_CPP_004f2e04,5000); + } + if (pfVar2 == (float *)0x0) { + FUN_0040385c(s_DPLRenderer__SetupCull_jointed_m_004f2e25, + s_d__tesla_bt_munga_l4_L4VIDEO_CPP_004f2e6d,0x138c); + } + FUN_00424da8(local_8,iVar1,local_3c); + if (pfVar2 == (float *)0x0) { + FUN_0040bc54((float *)(param_1 + 0x50),local_3c); + } + else { + FUN_0040bc54(local_6c,local_3c); + FUN_0040ac6c(local_9c,pfVar2); + FUN_0040bc54(local_cc,local_9c); + FUN_0040b104((float *)(param_1 + 0x50),local_6c,local_cc); + } + } + return; +} + + + +/* @0045f784 file=? name=FUN_0045f784 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_0045f784(int param_1) + +{ + *(undefined4 *)(param_1 + 0x84) = 0; + *(undefined4 *)(param_1 + 0x88) = 0; + *(undefined4 *)(param_1 + 0x8c) = 0; + *(undefined4 *)(param_1 + 0x90) = 0; + *(undefined4 *)(param_1 + 0x98) = 0; + *(undefined4 *)(param_1 + 0x94) = 56000; + *(undefined4 *)(param_1 + 0x9c) = 0; + *(float *)(param_1 + 0xa4) = *(float *)(param_1 + 0x80) + _DAT_0045f7d8; + return; +} + + + +/* @0045f7dc file=? name=FUN_0045f7dc */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_0045f7dc(int param_1) + +{ + int *piVar1; + undefined4 uVar2; + undefined2 uVar3; + undefined2 uVar4; + + if (*(int *)(param_1 + 0x98) != 0) { + uVar3 = (undefined2)*(undefined4 *)(param_1 + 0x98); + uVar4 = (undefined2)((uint)*(undefined4 *)(param_1 + 0x98) >> 0x10); + FUN_004dbb24(&DAT_00524e20,s_Frames_004f2e8e,(char *)0x0); + piVar1 = FUN_004db880(&DAT_00524e20,CONCAT22(uVar4,uVar3)); + FUN_004dbb24(piVar1,&DAT_004f2e96,(char *)0x0); + piVar1 = FUN_004db634(&DAT_00524e20, + (float10)(float)(((float10)*(uint *)(param_1 + 0x9c) / + (float10)*(uint *)(param_1 + 0x98)) * + (float10)_DAT_0045fa04)); + FUN_004dbb24(piVar1,s___of_the_frames_were_under_the_t_004f2e98,(char *)0x0); + uVar2 = FUN_004dcd94(); + uVar3 = (undefined2)uVar2; + uVar4 = (undefined2)((uint)uVar2 >> 0x10); + FUN_004dbb24(&DAT_00524e20,s_Average_Cull_004f2eca,(char *)0x0); + piVar1 = FUN_004db880(&DAT_00524e20,CONCAT22(uVar4,uVar3)); + FUN_004dbb24(piVar1,&DAT_004f2ed8,(char *)0x0); + uVar2 = FUN_004dcd94(); + uVar3 = (undefined2)uVar2; + uVar4 = (undefined2)((uint)uVar2 >> 0x10); + FUN_004dbb24(&DAT_00524e20,s_Average_Draw_004f2eda,(char *)0x0); + piVar1 = FUN_004db880(&DAT_00524e20,CONCAT22(uVar4,uVar3)); + FUN_004dbb24(piVar1,&DAT_004f2ee8,(char *)0x0); + uVar2 = FUN_004dcd94(); + uVar3 = (undefined2)uVar2; + uVar4 = (undefined2)((uint)uVar2 >> 0x10); + FUN_004dbb24(&DAT_00524e20,s_Average_Pixel_Planes_004f2eea,(char *)0x0); + piVar1 = FUN_004db880(&DAT_00524e20,CONCAT22(uVar4,uVar3)); + FUN_004dbb24(piVar1,&DAT_004f2f00,(char *)0x0); + uVar2 = FUN_004dcd94(); + uVar3 = (undefined2)uVar2; + uVar4 = (undefined2)((uint)uVar2 >> 0x10); + FUN_004dbb24(&DAT_00524e20,s_Average_Frame_Time_004f2f02,(char *)0x0); + piVar1 = FUN_004db880(&DAT_00524e20,CONCAT22(uVar4,uVar3)); + FUN_004dbb24(piVar1,&DAT_004f2f16,(char *)0x0); + } + return; +} + + + +/* @0045fbf4 file=? name=FUN_0045fbf4 */ + +void __cdecl FUN_0045fbf4(int param_1,undefined4 param_2) + +{ + int iVar1; + + if (*(int *)(param_1 + 0x2c8) == 100) { + FUN_0045fc24(param_1); + } + iVar1 = *(int *)(param_1 + 0x2c8); + *(int *)(param_1 + 0x2c8) = *(int *)(param_1 + 0x2c8) + 1; + *(undefined4 *)(param_1 + 0x134 + iVar1 * 4) = param_2; + return; +} + + + +/* @0045fc24 file=? name=FUN_0045fc24 */ + +void __cdecl FUN_0045fc24(int param_1) + +{ + if (*(int *)(param_1 + 0x2c8) != 0) { + *(undefined4 *)(param_1 + 0x134 + *(int *)(param_1 + 0x2c8) * 4) = 0; + FUN_0048ffa4((int *)(param_1 + 0x134)); + *(undefined4 *)(param_1 + 0x2c8) = 0; + } + return; +} + + + +/* @0045fc58 file=? name=FUN_0045fc58 */ + +void __cdecl FUN_0045fc58(undefined4 param_1,int *param_2) + +{ + uint uVar1; + int *piVar2; + + uVar1 = FUN_00490380(); + FUN_004dbb24(param_2,s_Free_memory_in_card__004f2f18,(char *)0x0); + piVar2 = FUN_004db78c(param_2,uVar1); + FUN_004dbb24(piVar2,s_bytes__004f2f2f,(char *)0x0); + FUN_004d9c38(piVar2); + return; +} + + + +/* @0045fca0 file=? name=FUN_0045fca0 */ + +void __cdecl FUN_0045fca0(int param_1,int *param_2) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + uint uVar4; + uint uVar5; + int *piVar6; + + uVar1 = DAT_00524690; + FUN_004dbb24(param_2,s_sect_time_004f2f37,(char *)0x0); + piVar6 = FUN_004db78c(param_2,uVar1); + FUN_004dbb24(piVar6,s_dcs_and_inst_not_available_004f2f42,(char *)0x0); + FUN_004d9c38(piVar6); + uVar5 = DAT_00524ae8; + uVar4 = DAT_00524ae4; + uVar3 = DAT_00524ae0; + uVar2 = DAT_00524adc; + uVar1 = DAT_00524ad8; + FUN_004dbb24(param_2,s_cull_004f2f5e,(char *)0x0); + piVar6 = FUN_004db78c(param_2,uVar1); + FUN_004dbb24(piVar6,s_draw_004f2f64,(char *)0x0); + piVar6 = FUN_004db78c(piVar6,uVar2); + FUN_004dbb24(piVar6,s_frame_004f2f6b,(char *)0x0); + piVar6 = FUN_004db78c(piVar6,uVar3); + FUN_004dbb24(piVar6,s_pxpl_004f2f73,(char *)0x0); + piVar6 = FUN_004db78c(piVar6,uVar4); + FUN_004dbb24(piVar6,s_prims_004f2f7a,(char *)0x0); + piVar6 = FUN_004db78c(piVar6,uVar5); + FUN_004d9c38(piVar6); + if (*(int *)(param_1 + 0xa0) == 0) { + FUN_0045f784(param_1); + *(undefined4 *)(param_1 + 0xa0) = 1; + } + else { + FUN_0045f7dc(param_1); + } + return; +} + + + +/* @0045fdd8 file=? name=FUN_0045fdd8 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_0045fdd8(void) + +{ + _DAT_004f1ab4 = _DAT_004f1ab4 ^ 1; + if (_DAT_004f1ab4 != 0) { + FUN_004dbb24(&DAT_00524e20,s_wireframe_ON_004f2f82,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + FUN_0048a544(1,1,(undefined4 *)0x0); + return; + } + FUN_004dbb24(&DAT_00524e20,s_wireframe_OFF_004f2f8f,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + FUN_0048a544(1,2,(undefined4 *)0x0); + return; +} + + + +/* @0045fe44 file=? name=FUN_0045fe44 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_0045fe44(void) + +{ + undefined4 local_18; + undefined4 local_14; + undefined4 local_10; + undefined4 local_c; + + local_10 = _DAT_0045fec4; + local_14 = _DAT_0045fec4; + local_18 = _DAT_0045fec4; + _DAT_004f1ab8 = _DAT_004f1ab8 ^ 1; + if (_DAT_004f1ab8 == 0) { + FUN_004dbb24(&DAT_00524e20,s_pvision_OFF_004f2fa8,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + local_c = 0xfffffffe; + } + else { + FUN_004dbb24(&DAT_00524e20,s_pvision_ON_004f2f9d,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + local_c = 0xffffffff; + } + FUN_0048d060(0,0,&local_18); + return; +} + + + +/* @0045fec8 file=? name=FUN_0045fec8 */ + +void __cdecl +FUN_0045fec8(undefined1 *param_1,int param_2,int param_3,int param_4,int param_5,int param_6) + +{ + undefined2 uVar1; + undefined2 uVar2; + undefined2 uVar3; + undefined2 *puVar4; + int iVar5; + undefined2 *puVar6; + undefined2 *puVar7; + int local_8; + + iVar5 = param_5 * param_6; + local_8 = 0; + puVar7 = (undefined2 *)(param_4 + iVar5 * 2); + puVar4 = (undefined2 *)(param_3 + iVar5 * 2); + puVar6 = (undefined2 *)(param_2 + iVar5 * 2); + if (0 < param_6) { + do { + uVar1 = *puVar6; + uVar2 = *puVar4; + puVar4 = puVar4 + 1; + uVar3 = *puVar7; + puVar7 = puVar7 + 1; + puVar6 = puVar6 + 1; + *param_1 = (char)((ushort)uVar1 >> 8); + param_1[1] = (char)((ushort)uVar2 >> 8); + param_1[2] = (char)((ushort)uVar3 >> 8); + param_1 = param_1 + 3; + local_8 = local_8 + 1; + } while (local_8 < param_6); + } + return; +} + + + +/* @0045ff4c file=? name=FUN_0045ff4c */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_0045ff4c(undefined4 *param_1,int param_2,int param_3,int param_4) + +{ + short *psVar1; + undefined4 uVar2; + short sVar3; + int *piVar4; + uint uVar5; + int iVar6; + uint uVar7; + byte *pbVar8; + char *pcVar9; + int iVar10; + byte local_84 [13]; + undefined1 local_77; + undefined1 local_76; + undefined1 local_75; + undefined1 local_74; + undefined1 local_73; + char local_70 [64]; + undefined4 *local_30; + float *local_2c; + float *local_28; + undefined4 local_24; + float local_20; + float local_1c; + float local_18; + float local_14; + uint local_10; + int local_c; + uint local_8; + + if (param_1 == (undefined4 *)0x0) { + if (DAT_004f1ac0 != (byte *)0x0) { + FUN_004022d0((int *)DAT_004f1ac0); + } + if (DAT_004f1ac4 != (int *)0x0) { + FUN_004022d0(DAT_004f1ac4); + } + if (DAT_004f1ac8 != (int *)0x0) { + FUN_004022d0(DAT_004f1ac8); + } + if (DAT_004f1acc != (int *)0x0) { + FUN_004022d0(DAT_004f1acc); + } + } + else { + if (DAT_004f1ad8 == '\0') { + _DAT_004f1ad4 = _DAT_0046055c / (float)param_2; + DAT_004f1ad8 = '\x01'; + } + if (DAT_004f1ae0 == '\0') { + _DAT_004f1adc = _DAT_0046055c / (float)param_3; + DAT_004f1ae0 = '\x01'; + } + if (DAT_004f1ae8 == '\0') { + _DAT_004f1ae4 = _DAT_004f1ad4 * _DAT_00460560; + DAT_004f1ae8 = '\x01'; + } + if (DAT_004f1af0 == '\0') { + _DAT_004f1aec = _DAT_004f1adc * _DAT_00460560; + DAT_004f1af0 = '\x01'; + } + if (DAT_004f1b0c == '\0') { + DAT_004f1afc = -(_DAT_004f1ae4 + _DAT_004f1af4); + DAT_004f1b0c = '\x01'; + _DAT_004f1b00 = _DAT_004f1ae4 - _DAT_004f1af4; + _DAT_004f1b04 = _DAT_004f1af4 - _DAT_004f1ae4; + _DAT_004f1b08 = _DAT_004f1af4 + _DAT_004f1ae4; + } + if (DAT_004f1b20 == '\0') { + DAT_004f1b10 = _DAT_004f1aec - _DAT_004f1af8; + DAT_004f1b20 = '\x01'; + _DAT_004f1b14 = _DAT_004f1aec + _DAT_004f1af8; + _DAT_004f1b18 = -(_DAT_004f1af8 + _DAT_004f1aec); + _DAT_004f1b1c = _DAT_004f1af8 - _DAT_004f1aec; + } + local_8 = 4; + if (param_4 == 0) { + local_8 = 1; + } + iVar6 = param_2 * param_3; + if (param_4 == 0) { + pcVar9 = s_False_004f2fd7; + } + else { + pcVar9 = &DAT_004f2fd2; + } + FUN_004dbb24(&DAT_00524e20,s_Dump_frame_buffer__antialias__004f2fb4,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,pcVar9,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_____press_Esc_to_cancel__004f2fdd,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + if (DAT_004f1ac0 == (byte *)0x0) { + DAT_004f1ac0 = (byte *)FUN_004022b0(0x1000); + uVar5 = iVar6 * 2; + DAT_004f1ac4 = (int *)FUN_004022b0(uVar5); + DAT_004f1ac8 = (int *)FUN_004022b0(uVar5); + DAT_004f1acc = (int *)FUN_004022b0(uVar5); + } + iVar10 = 0; + local_c = 0; + if (0 < iVar6) { + do { + *(undefined2 *)((int)DAT_004f1ac4 + iVar10 * 2) = 0; + *(undefined2 *)((int)DAT_004f1ac8 + iVar10 * 2) = 0; + *(undefined2 *)((int)DAT_004f1acc + iVar10 * 2) = 0; + iVar10 = iVar10 + 1; + local_c = local_c + 1; + } while (iVar6 - local_c != 0 && local_c <= iVar6); + } + FUN_00490474(); + FUN_00490474(); + local_c = 0; + local_30 = &DAT_004f1b24; + local_2c = &DAT_004f1b10; + local_28 = &DAT_004f1afc; + if (0 < (int)local_8) { + do { + uVar5 = local_8; + uVar7 = local_c + 1; + FUN_004dbb24(&DAT_00524e20,s_pass_004f2ff6,(char *)0x0); + piVar4 = FUN_004db78c(&DAT_00524e20,uVar7); + FUN_004dbb24(piVar4,&DAT_004f2ffe,(char *)0x0); + piVar4 = FUN_004db78c(piVar4,uVar5); + FUN_004dbb24(piVar4,&DAT_004f3003,(char *)0x0); + FUN_0048ba30((int)param_1,&local_14,&local_18,&local_1c,&local_20,&local_24); + FUN_0048b9d0((int)param_1,local_14 + *local_28,local_18 + *local_2c,local_1c + *local_28, + local_20 + *local_2c,local_24); + FUN_0048d42c(param_1); + FUN_00490474(); + FUN_00490474(); + iVar6 = 0; + uVar2 = *local_30; + local_10 = 0; + if (0 < param_3) { + do { + pbVar8 = DAT_004f1ac0; + iVar10 = FUN_004d4888(); + if ((iVar10 != 0) && (uVar5 = FUN_004d4718(), uVar5 == 0x1b)) { + piVar4 = FUN_004d9c38(&DAT_00524e20); + FUN_004dbb24(piVar4,s_cancelled__004f3005,(char *)0x0); + FUN_004d9c38(piVar4); + return; + } + if ((local_10 & 0xf) == 0) { + FUN_004dbb24(&DAT_00524e20,&DAT_004f3010,(char *)0x0); + } + FUN_0048cf38(param_1,(undefined4 *)pbVar8,0,local_10,param_2,1); + iVar10 = 0; + if (0 < param_2) { + do { + iVar10 = iVar10 + 1; + sVar3 = (short)uVar2; + psVar1 = (short *)((int)DAT_004f1ac4 + iVar6 * 2); + *psVar1 = *psVar1 + (ushort)pbVar8[2] * sVar3; + psVar1 = (short *)((int)DAT_004f1ac8 + iVar6 * 2); + *psVar1 = *psVar1 + (ushort)pbVar8[1] * sVar3; + psVar1 = (short *)((int)DAT_004f1acc + iVar6 * 2); + *psVar1 = *psVar1 + (ushort)*pbVar8 * sVar3; + iVar6 = iVar6 + 1; + pbVar8 = pbVar8 + 4; + } while (iVar10 < param_2); + } + local_10 = local_10 + 1; + } while ((int)local_10 < param_3); + } + FUN_004d9c38(&DAT_00524e20); + local_c = local_c + 1; + local_30 = local_30 + 1; + local_2c = local_2c + 1; + local_28 = local_28 + 1; + } while (local_c < (int)local_8); + } + FUN_004d7f10(local_70,s_dump_d_tga_004f3012); + local_84[0] = 0; + local_84[1] = 0; + local_84[2] = 2; + local_84[3] = 0; + local_84[4] = 0; + local_84[5] = 0; + local_84[6] = 0; + local_84[7] = 0; + local_84[8] = 0; + local_84[9] = 0; + local_84[10] = 0; + local_84[0xb] = 0; + local_84[0xc] = (undefined1)param_2; + local_77 = (undefined1)((uint)param_2 >> 8); + local_76 = (undefined1)param_3; + local_75 = (undefined1)((uint)param_3 >> 8); + local_74 = 0x18; + local_73 = 0; + FUN_004dbb24(&DAT_00524e20,s_Writing_image_to_file___004f301d,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,local_70,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_________004f3035,(char *)0x0); + piVar4 = FUN_004d6f54(local_70,&DAT_004f303e); + FUN_004d7358(local_84,0x12,1,piVar4); + local_10 = 0; + if (0 < param_3) { + do { + FUN_0045fec8(DAT_004f1ac0,(int)DAT_004f1ac4,(int)DAT_004f1ac8,(int)DAT_004f1acc, + (param_3 + -1) - local_10,param_2); + FUN_004d7358(DAT_004f1ac0,param_2 * 3,1,piVar4); + local_10 = local_10 + 1; + } while ((int)local_10 < param_3); + } + FUN_004d6b08(piVar4); + FUN_004dbb24(&DAT_00524e20,s_done__004f3041,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + DAT_004f1abc = DAT_004f1abc + 1; + } + return; +} + + + +/* @00460590 file=? name=FUN_00460590 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl FUN_00460590(int param_1) + +{ + int iVar1; + + if ((*(int *)(param_1 + 0xb4) != 0) && (iVar1 = FUN_0048a184(), iVar1 != 0)) { + FUN_0045fc24(param_1); + FUN_0048a1bc(); + if (*(int *)(param_1 + 0xa0) != 0) { + *(int *)(param_1 + 0x84) = *(int *)(param_1 + 0x84) + DAT_00524ad8; + *(int *)(param_1 + 0x88) = *(int *)(param_1 + 0x88) + DAT_00524adc; + *(int *)(param_1 + 0x8c) = *(int *)(param_1 + 0x8c) + DAT_00524ae4; + *(int *)(param_1 + 0x90) = *(int *)(param_1 + 0x90) + DAT_00524ae0; + *(int *)(param_1 + 0x98) = *(int *)(param_1 + 0x98) + 1; + if (DAT_00524ae0 <= *(uint *)(param_1 + 0x94)) { + *(int *)(param_1 + 0x9c) = *(int *)(param_1 + 0x9c) + 1; + } + if (*(float *)(param_1 + 0xa4) < *(float *)(param_1 + 0x80)) { + FUN_0045f7dc(param_1); + *(float *)(param_1 + 0xa4) = *(float *)(param_1 + 0x80) + _DAT_00460650; + } + } + *(undefined4 *)(param_1 + 0xb4) = 0; + return 1; + } + return 0; +} + + + +/* @00460654 file=? name=FUN_00460654 */ + +void __cdecl +FUN_00460654(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,uint *param_5, + int param_6,uint param_7) + +{ + uint uVar1; + int iVar2; + uint *puVar3; + uint *puVar4; + uint local_108 [4]; + undefined4 local_f8; + undefined4 local_f4; + undefined4 local_f0; + + puVar3 = param_5; + puVar4 = local_108; + for (iVar2 = 0x41; iVar2 != 0; iVar2 = iVar2 + -1) { + *puVar4 = *puVar3; + puVar3 = puVar3 + 1; + puVar4 = puVar4 + 1; + } + uVar1 = FUN_00460ae4(param_1); + local_108[0] = uVar1 | *param_5 & 0xffff0000 | (param_7 & 0xff) << 0x10; + local_f8 = param_2; + local_f4 = param_3; + local_f0 = param_4; + FUN_0048d060(1,param_6,local_108); + return; +} + + + +/* @004606d4 file=munga_l4/l4video.cpp name=FUN_004606d4 */ + +void __cdecl +FUN_004606d4(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,int param_5, + int param_6,uint param_7) + +{ + int iVar1; + undefined4 local_18; + undefined4 local_14; + undefined4 local_10; + int local_c; + + if (param_5 < 1000) { + local_c = param_5; + local_18 = param_2; + local_14 = param_3; + local_10 = param_4; + FUN_0048d060(0,param_6,&local_18); + } + else { + iVar1 = param_5 + -1000; + if ((iVar1 < 0) || (0x27 < iVar1)) { + FUN_0040385c(s_PSFX_id_number_was_not_in_the_al_004f3047, + s_d__tesla_bt_munga_l4_L4VIDEO_CPP_004f3073,0x174b); + } + FUN_00460654(param_1,param_2,param_3,param_4,*(uint **)(param_1 + 0x2cc + iVar1 * 4),param_6, + param_7); + } + return; +} + + + +/* @00460770 file=? name=FUN_00460770 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_00460770(int param_1,float param_2) + +{ + double dVar1; + float10 fVar2; + + *(float *)(param_1 + 0x118) = param_2 * _DAT_00460814; + dVar1 = (double)(*(float *)(param_1 + 0x118) * _DAT_00460818); + fVar2 = (float10)FUN_004dd188(SUB84(dVar1,0),(int)((ulonglong)dVar1 >> 0x20)); + *(float *)(param_1 + 0x11c) = (float)fVar2; + *(float *)(param_1 + 0xc0) = (float)DAT_004f336c / (float)DAT_004f3368; + FUN_0048b9d0(*(int *)(param_1 + 0x124),0xbf800000,-*(float *)(param_1 + 0xc0),0x3f800000, + *(undefined4 *)(param_1 + 0xc0),_DAT_0046081c / *(float *)(param_1 + 0x11c)); + FUN_0048d42c(*(undefined4 **)(param_1 + 0x124)); + return; +} + + + +/* @00460840 file=? name=FUN_00460840 */ + +void __cdecl FUN_00460840(undefined4 param_1) + +{ + int iVar1; + int iVar2; + int local_18 [3]; + undefined4 local_c; + uint *local_8; + + local_8 = FUN_00460994(); + iVar1 = FUN_00403ad0(*(int *)(DAT_004efc94 + 0x24) + 0x18,s_Players_004f3094); + FUN_00421414(local_18,iVar1 + 0x10); + while( true ) { + iVar1 = (**(code **)(local_18[0] + 0x28))(local_18); + if (iVar1 == 0) break; + local_c = *(undefined4 *)(iVar1 + 0x1e0); + iVar2 = (**(code **)(*(int *)(*(int *)(DAT_004efc94 + 200) + 0x68) + 0xc)) + (*(int *)(DAT_004efc94 + 200) + 0x68,&local_c); + if ((iVar2 != 0) && ((*(byte *)(iVar1 + 0x29) & 0x40) == 0)) { + FUN_0045d2b4(param_1,iVar2,*(int *)(iVar1 + 0x1cc) + 1,local_8); + } + } + FUN_00460914(param_1,local_8); + FUN_0045d23c(param_1,(byte *)local_8); + FUN_004de420((int *)local_8); + FUN_00421452(local_18,2); + return; +} + + + +/* @00460914 file=? name=FUN_00460914 */ + +void __cdecl FUN_00460914(undefined4 param_1,uint *param_2) + +{ + int iVar1; + int iVar2; + uint uVar3; + int local_8; + + if ((*(uint *)(*(int *)(DAT_004efc94 + 0x14) + 0x28) & 0xc) == 0) { + iVar1 = FUN_0041a1a4(**(int **)(*(int *)(DAT_004efc94 + 0x14) + 0xc),0x4e6aa4); + if (iVar1 != 0) { + uVar3 = 9; + iVar1 = 1; + do { + local_8 = iVar1; + iVar2 = (**(code **)(*(int *)(*(int *)(DAT_004efc94 + 200) + 0x98) + 0xc)) + (*(int *)(DAT_004efc94 + 200) + 0x98,&local_8); + FUN_0045d2b4(param_1,iVar2,uVar3,param_2); + uVar3 = uVar3 + 1; + iVar1 = iVar1 + 1; + } while (iVar1 < 5); + } + } + return; +} + + + +/* @00460994 file=munga_l4/l4video.cpp name=FUN_00460994 */ + +undefined4 * FUN_00460994(void) + +{ + undefined4 *puVar1; + undefined4 *puVar2; + int iVar3; + + puVar1 = (undefined4 *)FUN_004022b0(0x8000); + if (puVar1 == (undefined4 *)0x0) { + FUN_0040385c(s_Could_not_allocate_RAM_for_worst_004f309c, + s_d__tesla_bt_munga_l4_L4VIDEO_CPP_004f30ca,0x17ec); + } + iVar3 = 0; + puVar2 = puVar1; + do { + *puVar2 = 0; + iVar3 = iVar3 + 1; + puVar2 = puVar2 + 1; + } while (iVar3 < 0x2000); + return puVar1; +} + + + +/* @004609dc file=? name=FUN_004609dc */ + +void __cdecl FUN_004609dc(undefined4 param_1) + +{ + int iVar1; + int iVar2; + int local_10; + int local_c; + uint *local_8; + + local_8 = FUN_00460994(); + local_c = *(int *)(*(int *)(DAT_004efc94 + 200) + 0x48); + iVar2 = 0; + if (0 < local_c) { + do { + local_10 = iVar2 + 1; + iVar1 = (**(code **)(*(int *)(*(int *)(DAT_004efc94 + 200) + 0x68) + 0xc)) + (*(int *)(DAT_004efc94 + 200) + 0x68,&local_10); + if (iVar1 != 0) { + FUN_0045d2b4(param_1,iVar1,iVar2 + 1,local_8); + } + iVar2 = iVar2 + 1; + } while (iVar2 < local_c); + } + FUN_00460914(param_1,local_8); + FUN_0045d23c(param_1,(byte *)local_8); + FUN_004022e8((int *)local_8); + return; +} + + + +/* @00460a7c file=? name=FUN_00460a7c */ + +void __cdecl FUN_00460a7c(int param_1) + +{ + int local_2c [5]; + int local_18 [5]; + + FUN_0049060c(); + FUN_00461541(local_18,param_1 + 0x37c); + FUN_004615ca(local_2c,param_1 + 0x390); + FUN_00461608(local_2c,2); + FUN_0046159e(local_18,2); + return; +} + + + +/* @00460ad4 file=? name=FUN_00460ad4 */ + +void FUN_00460ad4(void) + +{ + return; +} + + + +/* @00460adc file=? name=FUN_00460adc */ + +void FUN_00460adc(void) + +{ + return; +} + + + +/* @00460ae4 file=? name=FUN_00460ae4 */ + +uint __cdecl FUN_00460ae4(int param_1) + +{ + uint uVar1; + + uVar1 = *(int *)(param_1 + 0xb8) + 1U & 0xffff; + *(uint *)(param_1 + 0xb8) = uVar1; + return uVar1; +} + + + +/* @00460b04 file=? name=FUN_00460b04 */ + +undefined4 __cdecl FUN_00460b04(int param_1,undefined4 param_2) + +{ + undefined4 *puVar1; + undefined4 uVar2; + + puVar1 = (undefined4 *)(**(code **)(*(int *)(param_1 + 0x390) + 0xc))(param_1 + 0x390,param_2); + if (puVar1 == (undefined4 *)0x0) { + uVar2 = 0; + } + else { + uVar2 = puVar1[4]; + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + } + return uVar2; +} + + + +/* @00460b48 file=? name=FUN_00460b48 */ + +void __cdecl FUN_00460b48(int param_1,int *param_2,undefined4 param_3) + +{ + int *piVar1; + undefined4 *puVar2; + int iVar3; + int *local_14; + undefined4 *local_10; + int *local_c; + undefined4 local_8; + + puVar2 = (undefined4 *)FUN_00402298(0x14); + if (puVar2 != (undefined4 *)0x0) { + local_8 = param_3; + local_c = param_2; + FUN_00415e90(puVar2,1); + *puVar2 = &PTR_FUN_004f3308; + local_10 = (undefined4 *)FUN_00402298(0x10); + if (local_10 == (undefined4 *)0x0) { + iVar3 = 0; + } + else { + iVar3 = FUN_004023f4(local_10); + } + puVar2[3] = iVar3; + piVar1 = (int *)(puVar2[3] + 0xc); + *piVar1 = *piVar1 + 1; + FUN_00402a4c((int *)&local_14,puVar2 + 3,local_c); + puVar2[4] = local_8; + piVar1 = local_14 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_14,3); + } + } + (**(code **)(*(int *)(param_1 + 0x390) + 8))(param_1 + 0x390,puVar2,param_2); + return; +} + + + +/* @00460c04 file=? name=FUN_00460c04 */ + +undefined4 * __cdecl FUN_00460c04(int param_1,int param_2,int param_3) + +{ + undefined4 *puVar1; + undefined4 *puVar2; + int iVar3; + int local_18 [5]; + + FUN_00461541(local_18,param_1 + 0x37c); + puVar2 = (undefined4 *)(**(code **)(local_18[0] + 0x30))(local_18); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)FUN_00402298(0x18); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_00452cf8(puVar2,param_2,param_3); + } + FUN_0046159e(local_18,2); + } + else { + (**(code **)(local_18[0] + 0x48))(local_18); + puVar1 = (undefined4 *)puVar2[5]; + iVar3 = FUN_0048ab68((int)puVar1); + if (param_2 != iVar3) { + FUN_0048ab0c((int)puVar1,param_2); + FUN_0048d5d4(puVar1); + } + FUN_0046159e(local_18,2); + } + return puVar2; +} + + + +/* @00460cb0 file=? name=FUN_00460cb0 */ + +void __cdecl FUN_00460cb0(int param_1,undefined4 param_2) + +{ + (**(code **)(*(int *)(param_1 + 0x37c) + 4))(param_1 + 0x37c,param_2); + return; +} + + + +/* @00460cd0 file=munga_l4/l4video.cpp name=FUN_00460cd0 */ + +undefined4 * __cdecl FUN_00460cd0(undefined4 *param_1,int param_2,int param_3) + +{ + int iVar1; + undefined4 uVar2; + int unaff_EBX; + int local_40 [7]; + int local_24 [7]; + int local_8; + + FUN_00415e90(param_1,1); + *param_1 = &PTR_FUN_004f3304; + iVar1 = FUN_0041a1a4(**(int **)(param_2 + 0xc),0x4e4afc); + if (iVar1 == 0) { + FUN_0040385c(s_DPLJointToDCSTranslator_was_call_004f30eb, + s_d__tesla_bt_munga_l4_L4VIDEO_CPP_004f312f,0x18c5); + param_2 = unaff_EBX; + } + local_8 = FUN_00417ab4(param_2 + 0x31c); + FUN_0041d3b3(local_24,local_8 + 0xe4); + iVar1 = (**(code **)(local_24[0] + 0x14))(local_24); + FUN_0041d3d2(local_24,2); + uVar2 = FUN_004022b0(iVar1 << 2); + param_1[4] = uVar2; + FUN_0041f216(local_40,param_2 + 0x300); + while (iVar1 = (**(code **)(local_40[0] + 0x28))(local_40), iVar1 != 0) { + if (*(int *)(iVar1 + 0xc0) != -1) { + *(undefined4 *)(param_1[4] + *(int *)(iVar1 + 0xc0) * 4) = + *(undefined4 *)(param_3 + *(int *)(iVar1 + 0xcc) * 4); + } + } + FUN_0041f235(local_40,2); + return param_1; +} + + + +/* @00460dcc file=? name=FUN_00460dcc */ + +void __cdecl FUN_00460dcc(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f3304; + FUN_004022e8((int *)param_1[4]); + param_1[4] = 0; + FUN_00415ed8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00460e08 file=? name=FUN_00460e08 */ + +undefined4 FUN_00460e08(void) + +{ + return 1; +} + + + +/* @00460e14 file=? name=FUN_00460e14 */ + +undefined4 __cdecl FUN_00460e14(int param_1,char *param_2,int param_3) + +{ + char *pcVar1; + char cVar2; + undefined4 *puVar3; + char *pcVar4; + int iVar5; + undefined4 uVar6; + int iVar7; + char *pcVar8; + char *pcVar9; + int *piVar10; + int *piVar11; + uint uVar12; + int *piVar13; + bool bVar14; + int local_60 [3]; + int local_54 [4]; + char local_44 [40]; + uint local_1c; + int local_18; + int *local_14; + undefined4 local_10; + undefined4 *local_c; + int *local_8; + + puVar3 = (undefined4 *)FUN_00406ff8(param_1,param_2,10,-1); + if (puVar3 == (undefined4 *)0x0) { + local_8 = FUN_00404720(param_3,s_video_004f3150,(char *)0x0); + if (local_8 != (int *)0x0) { + FUN_00452cad(local_54,0); + local_c = (undefined4 *)local_8[1]; +LAB_00460e73: + if (local_c != (undefined4 *)0x0) { + do { + puVar3 = (undefined4 *)*local_c; + pcVar9 = (char *)(local_c + 2); + if ((pcVar9 != (char *)0x0) && (*pcVar9 != '\0')) { + pcVar8 = s_object_004f3156; + pcVar4 = pcVar9; + do { + if (*pcVar4 != *pcVar8) goto LAB_00460ecc; + bVar14 = true; + if (*pcVar4 == '\0') break; + pcVar1 = pcVar4 + 1; + if (*pcVar1 != pcVar8[1]) goto LAB_00460ecc; + pcVar4 = pcVar4 + 2; + pcVar8 = pcVar8 + 2; + bVar14 = *pcVar1 == '\0'; + } while (!bVar14); + if (bVar14) { + local_10 = 2; + } + else { +LAB_00460ecc: + pcVar8 = s_rubble_004f315d; + pcVar4 = pcVar9; + do { + if (*pcVar4 != *pcVar8) goto LAB_00460efd; + bVar14 = true; + if (*pcVar4 == '\0') break; + pcVar1 = pcVar4 + 1; + if (*pcVar1 != pcVar8[1]) goto LAB_00460efd; + pcVar4 = pcVar4 + 2; + pcVar8 = pcVar8 + 2; + bVar14 = *pcVar1 == '\0'; + } while (!bVar14); + if (bVar14) { + local_10 = 3; + } + else { +LAB_00460efd: + pcVar8 = s_skeleton_004f3164; + pcVar4 = pcVar9; + do { + if (*pcVar4 != *pcVar8) goto LAB_00460f2e; + bVar14 = true; + if (*pcVar4 == '\0') break; + pcVar1 = pcVar4 + 1; + if (*pcVar1 != pcVar8[1]) goto LAB_00460f2e; + pcVar4 = pcVar4 + 2; + pcVar8 = pcVar8 + 2; + bVar14 = *pcVar1 == '\0'; + } while (!bVar14); + if (!bVar14) goto LAB_00460f2e; + local_10 = 1; + } + } + pcVar9 = (char *)local_c[1]; + local_c = puVar3; + while ((puVar3 = local_c, pcVar9 != (char *)0x0 && (pcVar4 = pcVar9, *pcVar9 != '\0'))) + { + while ((*pcVar4 != '\0' && (((&DAT_005207dd)[*pcVar4] & 1) != 0))) { + pcVar4 = pcVar4 + 1; + } + pcVar9 = pcVar4; + if (*pcVar4 == '\0') break; + while ((*pcVar9 != '\0' && (((&DAT_005207dd)[*pcVar9] & 1) == 0))) { + pcVar9 = pcVar9 + 1; + } + FUN_004d4b9c((undefined4 *)local_44,pcVar4,(int)pcVar9 - (int)pcVar4); + local_44[(int)pcVar9 - (int)pcVar4] = '\0'; + uVar12 = 0; + iVar5 = 0; + for (pcVar4 = local_44; *pcVar4 != '\0'; pcVar4 = pcVar4 + 1) { + if (iVar5 == 0) { + if (*pcVar4 == '/') { + *pcVar4 = '\0'; + iVar5 = 2; + } + } + else if (iVar5 == 1) { + if (*pcVar4 == '/') { + iVar5 = 2; + } + } + else if (iVar5 == 2) { + cVar2 = *pcVar4; + if (cVar2 == 'B') { +LAB_004610c8: + iVar5 = 3; + } + else { + if (cVar2 != 'I') { + if (cVar2 == 'b') goto LAB_004610c8; + if (cVar2 != 'i') { + iVar5 = 1; + goto LAB_00461121; + } + } + uVar12 = uVar12 | 0x10; + iVar5 = 1; + } + } + else if (iVar5 == 3) { + cVar2 = *pcVar4; + if (cVar2 < '[') { + if (cVar2 == 'Z') { +LAB_00461110: + uVar12 = uVar12 | 4; + } + else { + if (cVar2 != '/') { + if (cVar2 != 'X') { + if (cVar2 != 'Y') goto LAB_0046111c; + goto LAB_0046110b; + } + goto LAB_00461106; + } + iVar5 = 2; + } + } + else if (cVar2 == 'x') { +LAB_00461106: + uVar12 = uVar12 | 1; + } + else if (cVar2 == 'y') { +LAB_0046110b: + uVar12 = uVar12 | 2; + } + else { + if (cVar2 == 'z') goto LAB_00461110; +LAB_0046111c: + iVar5 = 1; + } + } +LAB_00461121: + } + pcVar4 = (char *)FUN_00402298(0x20); + if (pcVar4 == (char *)0x0) { + pcVar4 = (char *)0x0; + } + else { + pcVar4 = FUN_00459fb4(pcVar4,local_44,local_10,uVar12,0,0); + } + puVar3 = (undefined4 *)FUN_00402298(0x14); + if (puVar3 == (undefined4 *)0x0) { + puVar3 = (undefined4 *)0x0; + } + else { + puVar3 = FUN_0045a044(puVar3,pcVar4,1); + } + (**(code **)(local_54[0] + 4))(local_54,puVar3); + } + } + local_c = puVar3; + if (local_c == (undefined4 *)0x0) break; + } while( true ); + } + FUN_004614d7(local_60,(int)local_54); + local_18 = (**(code **)(local_60[0] + 0x14))(local_60); + local_1c = local_18 * 0x20 + 4; + local_14 = (int *)FUN_004022b0(local_1c); + *local_14 = local_18; + piVar10 = local_14 + 1; + while (iVar5 = (**(code **)(local_60[0] + 0x28))(local_60), iVar5 != 0) { + piVar11 = *(int **)(iVar5 + 0xc); + piVar13 = piVar10; + for (iVar7 = 8; iVar7 != 0; iVar7 = iVar7 + -1) { + *piVar13 = *piVar11; + piVar11 = piVar11 + 1; + piVar13 = piVar13 + 1; + } + piVar10 = piVar10 + 8; + } + puVar3 = (undefined4 *)FUN_00406db4(param_1,param_2,10,1,0,local_14,local_1c,-1); + FUN_0045a134((int)local_54); + FUN_004022d0(local_14); + if (local_8 != (int *)0x0) { + (**(code **)*local_8)(local_8,3); + } + FUN_00461515(local_60,2); + FUN_00452ccc(local_54,2); + goto LAB_00461277; + } + uVar6 = 0xffffffff; + } + else { +LAB_00461277: + uVar6 = *puVar3; + } + return uVar6; +LAB_00460f2e: + if (((*pcVar9 == ';') || (*pcVar9 == '#')) || + ((*pcVar9 == '/' && (*(char *)((int)local_c + 9) == '/')))) { + bVar14 = true; + } + else { + bVar14 = false; + } + local_c = puVar3; + if ((((!bVar14) && (iVar5 = FUN_004d4ae0(pcVar9,s_skeleton_004f316d,8), iVar5 != 0)) && + (iVar5 = FUN_004d4ae0(pcVar9,s_destroyed_004f3176,9), iVar5 != 0)) && + (iVar5 = FUN_004d4ae0(pcVar9,&DAT_004f3180,3), iVar5 != 0)) { + FUN_004dbb24(&DAT_00524e20,s_Unknown_entry___004f3184,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,pcVar9,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s___in_model___004f3194,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s___ignored__004f31a1,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + } + goto LAB_00460e73; +} + + + +/* @00461280 file=? name=FUN_00461280 */ + +int * __cdecl FUN_00461280(int *param_1) + +{ + undefined4 *puVar1; + int iVar2; + + puVar1 = (undefined4 *)FUN_00402298(0x10); + if (puVar1 == (undefined4 *)0x0) { + iVar2 = 0; + } + else { + iVar2 = FUN_004023f4(puVar1); + } + *param_1 = iVar2; + *(int *)(iVar2 + 0xc) = *(int *)(iVar2 + 0xc) + 1; + return param_1; +} + + + +/* @004612b0 file=? name=FUN_004612b0 */ + +void __cdecl FUN_004612b0(int *param_1,byte param_2) + +{ + int *piVar1; + int *piVar2; + + if (param_1 != (int *)0x0) { + piVar2 = (int *)*param_1; + piVar1 = piVar2 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(piVar2,3); + } + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004612dd file=? name=FUN_004612dd */ + +undefined4 * __cdecl FUN_004612dd(undefined4 *param_1,undefined4 param_2) + +{ + FUN_0041827c(param_1,param_2); + *param_1 = &PTR_FUN_004f32fc; + return param_1; +} + + + +/* @004612fc file=? name=FUN_004612fc */ + +void __cdecl FUN_004612fc(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f32fc; + FUN_004182a8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00461328 file=? name=FUN_00461328 */ + +undefined4 * __cdecl FUN_00461328(undefined4 *param_1,undefined4 param_2,undefined4 param_3) + +{ + FUN_00418bb8(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004f32e0; + return param_1; +} + + + +/* @0046134b file=? name=FUN_0046134b */ + +void __cdecl FUN_0046134b(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f32e0; + FUN_00418be0(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00461377 file=? name=FUN_00461377 */ + +undefined4 __cdecl FUN_00461377(undefined4 param_1,int param_2,int param_3) + +{ + int iVar1; + undefined4 uVar2; + + iVar1 = FUN_004027d8(*(int *)(param_2 + 0x20),*(int *)(param_3 + 0x20)); + if (iVar1 == 0) { + uVar2 = 0; + } + else { + iVar1 = FUN_004027d8(*(int *)(param_2 + 0x20),*(int *)(param_3 + 0x20)); + if (iVar1 < 1) { + uVar2 = 0xffffffff; + } + else { + uVar2 = 1; + } + } + return uVar2; +} + + + +/* @004613c4 file=? name=FUN_004613c4 */ + +undefined4 __cdecl FUN_004613c4(undefined4 param_1,int *param_2,int param_3) + +{ + int iVar1; + undefined4 uVar2; + + iVar1 = FUN_004027d8(*param_2,*(int *)(param_3 + 0x20)); + if (iVar1 == 0) { + uVar2 = 0; + } + else { + iVar1 = FUN_004027d8(*param_2,*(int *)(param_3 + 0x20)); + if (iVar1 < 1) { + uVar2 = 0xffffffff; + } + else { + uVar2 = 1; + } + } + return uVar2; +} + + + +/* @0046140e file=? name=FUN_0046140e */ + +undefined4 * __cdecl FUN_0046140e(undefined4 *param_1,undefined4 param_2,undefined4 param_3) + +{ + FUN_00419184(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004f32c4; + return param_1; +} + + + +/* @00461431 file=? name=FUN_00461431 */ + +void __cdecl FUN_00461431(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f32c4; + FUN_004191b4(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0046145d file=? name=FUN_0046145d */ + +undefined4 __cdecl FUN_0046145d(undefined4 param_1,int param_2,int param_3) + +{ + undefined4 uVar1; + + if (*(uint *)(param_3 + 0x14) == *(uint *)(param_2 + 0x14)) { + uVar1 = 0; + } + else { + uVar1 = 1; + if (*(uint *)(param_2 + 0x14) <= *(uint *)(param_3 + 0x14)) { + uVar1 = 0xffffffff; + } + } + return uVar1; +} + + + +/* @0046148c file=? name=FUN_0046148c */ + +undefined4 __cdecl FUN_0046148c(undefined4 param_1,uint *param_2,int param_3) + +{ + undefined4 uVar1; + + if (*(uint *)(param_3 + 0x14) == *param_2) { + uVar1 = 0; + } + else { + uVar1 = 1; + if (*param_2 <= *(uint *)(param_3 + 0x14)) { + uVar1 = 0xffffffff; + } + } + return uVar1; +} + + + +/* @004614b8 file=? name=FUN_004614b8 */ + +undefined4 * __cdecl FUN_004614b8(undefined4 *param_1,int param_2) + +{ + FUN_00417d00(param_1,param_2); + *param_1 = &PTR_FUN_004f3274; + return param_1; +} + + + +/* @004614d7 file=? name=FUN_004614d7 */ + +undefined4 * __cdecl FUN_004614d7(undefined4 *param_1,int param_2) + +{ + FUN_00417d00(param_1,param_2); + *param_1 = &PTR_FUN_004f3274; + return param_1; +} + + + +/* @004614f6 file=? name=FUN_004614f6 */ + +undefined4 * __cdecl FUN_004614f6(undefined4 *param_1,int param_2) + +{ + FUN_00417d28(param_1,param_2); + *param_1 = &PTR_FUN_004f3274; + return param_1; +} + + + +/* @00461515 file=? name=FUN_00461515 */ + +void __cdecl FUN_00461515(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f3274; + FUN_00417d54(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00461541 file=? name=FUN_00461541 */ + +undefined4 * __cdecl FUN_00461541(undefined4 *param_1,int param_2) + +{ + FUN_00418398(param_1,param_2); + *param_1 = &PTR_FUN_004f3220; + return param_1; +} + + + +/* @00461560 file=? name=FUN_00461560 */ + +undefined4 * __cdecl FUN_00461560(undefined4 *param_1,int param_2) + +{ + FUN_00418398(param_1,param_2); + *param_1 = &PTR_FUN_004f3220; + return param_1; +} + + + +/* @0046157f file=? name=FUN_0046157f */ + +undefined4 * __cdecl FUN_0046157f(undefined4 *param_1,int param_2) + +{ + FUN_004183c0(param_1,param_2); + *param_1 = &PTR_FUN_004f3220; + return param_1; +} + + + +/* @0046159e file=? name=FUN_0046159e */ + +void __cdecl FUN_0046159e(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f3220; + FUN_004183ec(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004615ca file=? name=FUN_004615ca */ + +int * __cdecl FUN_004615ca(int *param_1,int param_2) + +{ + FUN_00418f34(param_1,param_2); + *param_1 = (int)&PTR_FUN_004f31c4; + return param_1; +} + + + +/* @004615e9 file=? name=FUN_004615e9 */ + +int * __cdecl FUN_004615e9(int *param_1,int param_2) + +{ + FUN_00418f34(param_1,param_2); + *param_1 = (int)&PTR_FUN_004f31c4; + return param_1; +} + + + +/* @00461608 file=? name=FUN_00461608 */ + +void __cdecl FUN_00461608(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f31c4; + FUN_00418f5c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00461634 file=? name=FUN_00461634 */ + +undefined4 * __cdecl FUN_00461634(undefined4 param_1,int param_2,undefined4 *param_3) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_0046172c(); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_004616d5(puVar1,param_1,param_2,param_3); + } + return puVar1; +} + + + +/* @00461664 file=? name=FUN_00461664 */ + +undefined4 * __cdecl FUN_00461664(undefined4 param_1,int param_2,int *param_3) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00415a83(); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_004159cf(puVar1,param_1,param_2,param_3); + } + return puVar1; +} + + + +/* @00461694 file=? name=FUN_00461694 */ + +void __cdecl FUN_00461694(int *param_1,byte param_2) + +{ + int *piVar1; + int *piVar2; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f3308; + piVar2 = (int *)param_1[3]; + piVar1 = piVar2 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(piVar2,3); + } + FUN_00415ed8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004616d5 file=? name=FUN_004616d5 */ + +undefined4 * __cdecl +FUN_004616d5(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 *param_4) + +{ + FUN_004190e8(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004f3364; + param_1[5] = *param_4; + return param_1; +} + + + +/* @00461700 file=? name=FUN_00461700 */ + +void __cdecl FUN_00461700(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f3364; + FUN_0041910c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_0046177c(param_1); + } + } + return; +} + + + +/* @0046172c file=? name=FUN_0046172c */ + +void FUN_0046172c(void) + +{ + int iVar1; + undefined4 *puVar2; + + iVar1 = DAT_004f3360; + DAT_004f3360 = DAT_004f3360 + 1; + puVar2 = DAT_004f335c; + if ((iVar1 == 0) && (puVar2 = (undefined4 *)FUN_00402298(0x28), puVar2 != (undefined4 *)0x0)) { + FUN_00402b98(puVar2,0x18,100,100,s_TableEntryOf_004f31ac); + } + DAT_004f335c = puVar2; + FUN_00402f74((int)DAT_004f335c); + return; +} + + + +/* @0046177c file=? name=FUN_0046177c */ + +void __cdecl FUN_0046177c(undefined4 *param_1) + +{ + FUN_00402f98((int)DAT_004f335c,param_1); + DAT_004f3360 = DAT_004f3360 + -1; + if (DAT_004f3360 == 0) { + if (DAT_004f335c != (int *)0x0) { + FUN_00402c28(DAT_004f335c,0); + FUN_004022d0(DAT_004f335c); + } + DAT_004f335c = (int *)0x0; + } + return; +} + + + +/* @004617c8 file=? name=FUN_004617c8 */ + +char * __cdecl FUN_004617c8(char *param_1,char *param_2) + +{ + int iVar1; + int iVar2; + + iVar1 = FUN_004d4a78(param_2); + while( true ) { + if (*param_1 == '\0') { + return (char *)0x0; + } + iVar2 = FUN_004d4ae0(param_1,param_2,iVar1); + if (iVar2 == 0) break; + param_1 = param_1 + 1; + } + while( true ) { + if (*param_1 == '~') { + if (param_1[1] != '\0') { + return param_1 + 1; + } + return (char *)0x0; + } + if (*param_1 == '\0') break; + param_1 = param_1 + 1; + } + return (char *)0x0; +} + + + +/* @0046181c file=? name=FUN_0046181c */ + +undefined4 __cdecl FUN_0046181c(char *param_1) + +{ + char *pcVar1; + int iVar2; + + pcVar1 = FUN_004617c8(param_1,s_video_004f3378); + if (pcVar1 == (char *)0x0) { + return 0; + } + iVar2 = FUN_004d4ae0(pcVar1,&DAT_004f337e,4); + if (iVar2 == 0) { + DAT_004f3368 = 0x2c0; + DAT_004f336c = 0x1e0; + return 1; + } + iVar2 = FUN_004d4ae0(pcVar1,s_ntsc_rgb_004f3383,4); + if (iVar2 == 0) { + DAT_004f3368 = 0x2c0; + DAT_004f336c = 0x1e0; + return 1; + } + iVar2 = FUN_004d4ae0(pcVar1,&DAT_004f338c,3); + if (iVar2 == 0) { + DAT_004f3368 = 0x280; + DAT_004f336c = 0x1e0; + return 1; + } + iVar2 = FUN_004d4ae0(pcVar1,&DAT_004f3390,3); + if (iVar2 == 0) { + DAT_004f3368 = 0x340; + DAT_004f336c = 0x200; + return 1; + } + iVar2 = FUN_004d4ae0(pcVar1,s_pal_rgb_004f3394,7); + if (iVar2 == 0) { + DAT_004f3368 = 0x340; + DAT_004f336c = 0x200; + return 1; + } + iVar2 = FUN_004d4ae0(pcVar1,s_hires_004f339c,5); + if (iVar2 == 0) { + DAT_004f3368 = 0x400; + DAT_004f336c = 0x300; + return 1; + } + iVar2 = FUN_004d4ae0(pcVar1,&DAT_004f33a2,4); + if (iVar2 == 0) { + DAT_004f3368 = 0x340; + DAT_004f336c = 0x200; + return 1; + } + iVar2 = FUN_004d4ae0(pcVar1,s_nucolor_004f33a7,7); + if (iVar2 == 0) { + DAT_004f3368 = 0x280; + DAT_004f336c = 0x1e0; + return 1; + } + iVar2 = FUN_004d4ae0(pcVar1,s_kaiser_004f33af,6); + if (iVar2 == 0) { + DAT_004f3368 = 0x340; + DAT_004f336c = 0x100; + return 1; + } + FUN_004d771c(s_Unknown_video_format__s_004f33b6); + DAT_004f3368 = 0x280; + DAT_004f336c = 0x1e0; + return 0; +} + + + +/* @00461a14 file=? name=FUN_00461a14 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 * __cdecl FUN_00461a14(int param_1,int *param_2,int *param_3,float param_4) + +{ + undefined4 *puVar1; + undefined4 *puVar2; + int iVar3; + undefined4 *puVar4; + float local_8; + + if (param_4 <= DAT_004f3374) { + local_8 = DAT_004f3374; + } + else { + local_8 = param_4 + _DAT_00461c70; + } + FUN_004d771c(s_initialize_eyes_004f33cf); + puVar2 = FUN_004896cc(); + FUN_004d771c(s_create_1st_view_004f33e0); + iVar3 = FUN_004896f0(); + *param_2 = iVar3; + if (iVar3 == 0) { + FUN_004d771c(s_NULL_eye_004f33f1); + puVar2 = (undefined4 *)0x0; + } + else { + puVar1 = (undefined4 *)*param_2; + puVar4 = (undefined4 *)FUN_00489708(); + FUN_0048b4ac((int)puVar1,(int)puVar4); + FUN_0048a890((int)puVar2); + FUN_0048b56c((int)puVar1,DAT_004f3370,DAT_004f3374); + FUN_0048b608((int)puVar1,0x3ecccccd,0x3f19999a,0x3f666666); + FUN_0048b6b4((int)puVar1,0,0x3f000000,0x3f000000,0x3f19999a,param_4,local_8); + FUN_0048b8fc((int)puVar1); + FUN_0048b9d0((int)puVar1,0xbf800000,0xbf800000,0x3f800000,0x3f800000,0x3fa66666); + FUN_00489bd4((int)puVar1); + FUN_0048d3e8(puVar4); + FUN_0048d42c(puVar1); + FUN_0048d4b0(puVar2); + if (param_1 == 0) { + *param_3 = 0; + } + else { + FUN_004d771c(s_create_2nd_view_004f33fb); + iVar3 = FUN_004896f0(); + *param_3 = iVar3; + if (iVar3 == 0) { + FUN_004d771c(s_NULL_rye_004f340c); + puVar2 = (undefined4 *)0x0; + } + else { + puVar1 = (undefined4 *)*param_3; + puVar4 = (undefined4 *)FUN_00489708(); + FUN_0048b4ac((int)puVar1,(int)puVar4); + FUN_0048b56c((int)puVar1,DAT_004f3370,DAT_004f3374); + FUN_0048b608((int)puVar1,0x3ecccccd,0x3f19999a,0x3f666666); + FUN_0048b6b4((int)puVar1,0,0x3f000000,0x3f000000,0x3f19999a,param_4,local_8); + FUN_0048b8fc((int)puVar1); + FUN_0048b9d0((int)puVar1,0xbf800000,0xbf800000,0x3f800000,0x3f800000,0x3fa66666); + FUN_00489bd4((int)puVar1); + FUN_0048d3e8(puVar4); + FUN_0048d42c(puVar1); + } + } + } + return puVar2; +} + + + +/* @00461c74 file=? name=FUN_00461c74 */ + +char * __cdecl FUN_00461c74(char *param_1,int *param_2,char param_3) + +{ + bool bVar1; + int *piVar2; + uint uVar3; + char *pcVar4; + + bVar1 = true; + uVar3 = 0; + pcVar4 = param_1; + do { + if (*pcVar4 == param_3) { + if (uVar3 == 0) { + piVar2 = FUN_004de55c(1); + *param_2 = (int)piVar2; + *(undefined1 *)*param_2 = 0; + } + else { + piVar2 = FUN_004de55c(uVar3 + 1); + *param_2 = (int)piVar2; + FUN_004d4918((undefined4 *)*param_2,(undefined4 *)param_1,uVar3); + *(undefined1 *)(*param_2 + uVar3) = 0; + } + pcVar4 = pcVar4 + 1; + bVar1 = false; + } + else if (*pcVar4 == '\0') { + if (uVar3 == 0) { + return (char *)0x0; + } + piVar2 = FUN_004de55c(uVar3 + 1); + *param_2 = (int)piVar2; + FUN_004d4918((undefined4 *)*param_2,(undefined4 *)param_1,uVar3); + *(undefined1 *)(*param_2 + uVar3) = 0; + bVar1 = false; + } + else { + uVar3 = uVar3 + 1; + pcVar4 = pcVar4 + 1; + } + } while (bVar1); + return pcVar4; +} + + + +/* @00461d14 file=? name=FUN_00461d14 */ + +int __cdecl FUN_00461d14(int param_1,char *param_2,char param_3) + +{ + int iVar1; + + iVar1 = 0; + while ((*param_2 != '\0' && + (param_2 = FUN_00461c74(param_2,(int *)(param_1 + iVar1 * 4),param_3), + param_2 != (char *)0x0))) { + iVar1 = iVar1 + 1; + } + return iVar1; +} + + + +/* @00461d50 file=? name=FUN_00461d50 */ + +void __cdecl FUN_00461d50(char *param_1,int param_2,int *param_3,int *param_4,float param_5) + +{ + int iVar1; + undefined4 local_84 [32]; + + iVar1 = FUN_00461d14((int)local_84,param_1,'~'); + FUN_0048d108(iVar1,local_84); + FUN_00461a14(param_2,param_3,param_4,param_5); + return; +} + + + +/* @00461d90 file=? name=FUN_00461d90 */ + +undefined4 __cdecl FUN_00461d90(int param_1,LPCSTR param_2) + +{ + undefined4 uVar1; + uint uVar2; + int *piVar3; + char *pcVar4; + char *pcVar5; + DWORD DVar6; + int iVar7; + uint unaff_EDI; + undefined4 local_14; + undefined4 local_10; + int local_8; + + if (*(int *)(&DAT_004f3558 + param_1 * 4) == 0xf) { + uVar1 = 0xffffffff; + } + else { + uVar2 = thunk_FUN_004d93ac(param_2,0x8000,unaff_EDI); + if (uVar2 == 0xffffffff) { + uVar1 = 0xfffffffe; + } + else { + piVar3 = FUN_004de55c(0x2000); + if (piVar3 == (int *)0x0) { + thunk_FUN_004d92c4(uVar2); + uVar1 = 0xfffffffd; + } + else { + pcVar4 = (char *)FUN_0048790c(*(undefined4 *)(&DAT_00501368 + param_1 * 0x68), + *(undefined4 *)(&DAT_0050136c + param_1 * 0x68),local_14, + local_10,*(undefined4 *)(&DAT_004f3558 + param_1 * 4),0); + if (pcVar4 == (char *)0xffffffff) { + FUN_004de420(piVar3); + thunk_FUN_004d92c4(uVar2); + uVar1 = 0xfffffffc; + } + else { + pcVar5 = thunk_FUN_004d892c(uVar2,(char *)piVar3,pcVar4); + if (pcVar5 == (char *)0xffffffff) { + uVar1 = 0xfffffffb; + } + else { + uVar1 = FUN_0047ef40(); + local_8 = FUN_0048790c(*(undefined4 *)(&DAT_00501380 + param_1 * 0x68), + *(undefined4 *)(&DAT_00501384 + param_1 * 0x68),piVar3,uVar1, + *(undefined4 *)(&DAT_004f3558 + param_1 * 4),0); + if (local_8 == -1) { + FUN_004de420(piVar3); + thunk_FUN_004d92c4(uVar2); + uVar1 = 0xfffffffa; + } + else { + DVar6 = thunk_FUN_004d9334(uVar2,local_8,0); + if (DVar6 == 0xffffffff) { + thunk_FUN_004d92c4(uVar2); + FUN_004de420(*(int **)(&DAT_004f3418 + + *(int *)(&DAT_004f3558 + param_1 * 4) * 4 + param_1 * 0x40)); + uVar1 = 0xfffffff9; + } + else { + do { + pcVar4 = thunk_FUN_004d892c(uVar2,(char *)piVar3,pcVar4); + if (pcVar4 == (char *)0xffffffff) { + return 0xfffffff8; + } + uVar1 = FUN_0047ef40(); + pcVar4 = (char *)FUN_0048790c(*(undefined4 *)(&DAT_00501370 + param_1 * 0x68), + *(undefined4 *)(&DAT_00501374 + param_1 * 0x68), + piVar3,uVar1, + *(undefined4 *)(&DAT_004f3558 + param_1 * 4),0); + if (pcVar4 == (char *)0xffffffff) { + thunk_FUN_004d92c4(uVar2); + FUN_004de420(piVar3); + return 0xfffffff7; + } + } while (pcVar4 != (char *)0x0); + FUN_004de420(piVar3); + pcVar4 = (char *)FUN_0048790c(*(undefined4 *)(&DAT_00501378 + param_1 * 0x68), + *(undefined4 *)(&DAT_0050137c + param_1 * 0x68),piVar3 + ,uVar1,0,0); + uVar1 = FUN_0047ef40(); + FUN_0048790c(*(undefined4 *)(&DAT_00501388 + param_1 * 0x68), + *(undefined4 *)(&DAT_0050138c + param_1 * 0x68),&local_8,uVar1,0,0); + piVar3 = FUN_004de55c((uint)pcVar4); + *(int **)(&DAT_004f3418 + *(int *)(&DAT_004f3558 + param_1 * 4) * 4 + param_1 * 0x40 + ) = piVar3; + if (piVar3 == (int *)0x0) { + thunk_FUN_004d92c4(uVar2); + uVar1 = 0xfffffff6; + } + else { + DVar6 = thunk_FUN_004d9334(uVar2,local_8,0); + if (DVar6 == 0xffffffff) { + thunk_FUN_004d92c4(uVar2); + FUN_004de420(*(int **)(&DAT_004f3418 + + *(int *)(&DAT_004f3558 + param_1 * 4) * 4 + param_1 * 0x40 + )); + uVar1 = 0xfffffff5; + } + else { + pcVar4 = thunk_FUN_004d892c(uVar2,*(char **)(&DAT_004f3418 + + *(int *)(&DAT_004f3558 + param_1 * 4 + ) * 4 + param_1 * 0x40), + pcVar4); + if (pcVar4 == (char *)0xffffffff) { + thunk_FUN_004d92c4(uVar2); + FUN_004de420(*(int **)(&DAT_004f3418 + + *(int *)(&DAT_004f3558 + param_1 * 4) * 4 + + param_1 * 0x40)); + uVar1 = 0xfffffff4; + } + else { + uVar1 = FUN_0047ef40(); + iVar7 = FUN_0048790c(*(undefined4 *)(&DAT_00501390 + param_1 * 0x68), + *(undefined4 *)(&DAT_00501394 + param_1 * 0x68), + *(undefined4 *) + (&DAT_004f3418 + + *(int *)(&DAT_004f3558 + param_1 * 4) * 4 + + param_1 * 0x40),uVar1,0,0); + if (iVar7 == -1) { + FUN_004de420(*(int **)(&DAT_004f3418 + + *(int *)(&DAT_004f3558 + param_1 * 4) * 4 + + param_1 * 0x40)); + thunk_FUN_004d92c4(uVar2); + uVar1 = 0xfffffff3; + } + else { + thunk_FUN_004d92c4(uVar2); + *(int *)(&DAT_004f3558 + param_1 * 4) = + *(int *)(&DAT_004f3558 + param_1 * 4) + 1; + uVar1 = *(undefined4 *)(&DAT_004f3558 + param_1 * 4); + } + } + } + } + } + } + } + } + } + } + } + return uVar1; +} + + + +/* @00462124 file=? name=FUN_00462124 */ + +undefined4 __cdecl FUN_00462124(int param_1) + +{ + int iVar1; + undefined4 uVar2; + undefined *puVar3; + uint uVar4; + undefined4 local_c; + undefined4 local_8; + + iVar1 = FUN_0048790c(*(undefined4 *)(&DAT_00501388 + param_1 * 0x68), + *(undefined4 *)(&DAT_0050138c + param_1 * 0x68),local_c,local_8,1,0); + if (iVar1 == -1) { + uVar2 = 0xffffffff; + } + else { + puVar3 = &DAT_004f341c; + for (uVar4 = 1; uVar4 < *(uint *)(&DAT_004f3558 + param_1 * 4); uVar4 = uVar4 + 1) { + FUN_004de420(*(int **)(puVar3 + param_1 * 0x40)); + puVar3 = puVar3 + 4; + } + *(undefined4 *)(&DAT_004f3558 + param_1 * 4) = 1; + uVar2 = 0; + } + return uVar2; +} + + + +/* @004621ac file=? name=FUN_004621ac */ + +undefined4 __cdecl +FUN_004621ac(int param_1,undefined1 param_2,byte param_3,undefined1 param_4,undefined1 param_5, + undefined1 param_6) + +{ + byte local_14; + undefined1 local_13; + undefined1 local_12; + + local_14 = param_3 | 0xb0; + local_13 = 0; + local_12 = param_2; + FUN_00486402(param_1,&local_14,3); + local_14 = param_3 | 0xc0; + local_13 = param_4; + FUN_00486402(param_1,&local_14,2); + local_14 = param_3 | 0x90; + local_13 = param_5; + local_12 = param_6; + FUN_00486402(param_1,&local_14,2); + return 0; +} + + + +/* @00462224 file=? name=FUN_00462224 */ + +undefined4 __cdecl FUN_00462224(int param_1,byte param_2,undefined1 param_3) + +{ + byte local_14; + undefined1 local_13; + undefined1 local_12; + + local_14 = param_2 | 0x90; + local_13 = param_3; + local_12 = 0; + FUN_00486402(param_1,&local_14,3); + return 0; +} + + + +/* @00462254 file=? name=FUN_00462254 */ + +undefined4 FUN_00462254(void) + +{ + return 1; +} + + + +/* @00462260 file=? name=FUN_00462260 */ + +int * __cdecl FUN_00462260(int *param_1,byte *param_2) + +{ + int *piVar1; + + FUN_004dbb24(param_1,&DAT_004f3582,(char *)0x0); + piVar1 = FUN_004db78c(param_1,*param_2 & 0xf); + FUN_004dbb24(piVar1,&DAT_004f3584,(char *)0x0); + piVar1 = FUN_004db78c(param_1,(int)(uint)*param_2 >> 4); + FUN_004dbb24(piVar1,&DAT_004f3586,(char *)0x0); + piVar1 = FUN_004db78c(param_1,(uint)param_2[1]); + FUN_004dbb24(piVar1,&DAT_004f3588,(char *)0x0); + piVar1 = FUN_004db78c(param_1,(uint)param_2[2]); + FUN_004dbb24(piVar1,&DAT_004f358a,(char *)0x0); + return param_1; +} + + + +/* @0046230c file=? name=FUN_0046230c */ + +undefined4 * __cdecl +FUN_0046230c(undefined4 *param_1,undefined4 param_2,undefined1 param_3,undefined4 param_4) + +{ + FUN_00415e90(param_1,1); + *param_1 = &PTR_FUN_004f36b4; + param_1[3] = param_2; + *(undefined1 *)(param_1 + 4) = param_3; + param_1[5] = 0; + param_1[6] = param_4; + return param_1; +} + + + +/* @00462340 file=? name=FUN_00462340 */ + +void __cdecl FUN_00462340(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f36b4; + FUN_00415ed8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0046236c file=? name=FUN_0046236c */ + +undefined4 FUN_0046236c(void) + +{ + FUN_00415f1c(); + return 1; +} + + + +/* @00462380 file=? name=FUN_00462380 */ + +undefined4 * __cdecl FUN_00462380(undefined4 *param_1) + +{ + undefined4 *puVar1; + byte bVar2; + + FUN_004178cc(param_1,2); + *param_1 = &PTR_FUN_004f36a8; + FUN_00462c4e(param_1 + 0x15,0); + FUN_00462c4e(param_1 + 0x19,0); + bVar2 = 0; + param_1[0x14] = 0x20; + do { + if (bVar2 == 9) { + puVar1 = (undefined4 *)FUN_00402298(0x1c); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_0046230c(puVar1,1,9,param_1); + } + (**(code **)(param_1[0x19] + 4))(param_1 + 0x19,puVar1); + } + else { + puVar1 = (undefined4 *)FUN_00402298(0x1c); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_0046230c(puVar1,0,bVar2,param_1); + } + (**(code **)(param_1[0x15] + 4))(param_1 + 0x15,puVar1); + } + bVar2 = bVar2 + 1; + } while (bVar2 < 0x10); + return param_1; +} + + + +/* @00462430 file=? name=FUN_00462430 */ + +void __cdecl FUN_00462430(int *param_1,byte param_2) + +{ + void *this; + void *this_00; + int local_1c [3]; + int local_10 [3]; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f36a8; + FUN_00462c99(local_10,(int)(param_1 + 0x15)); + FUN_00417858(this,local_10,1); + FUN_00462cf6(local_10,2); + FUN_00462c99(local_1c,(int)(param_1 + 0x19)); + FUN_00417858(this_00,local_1c,1); + FUN_00462cf6(local_1c,2); + FUN_00462c6d(param_1 + 0x19,2); + FUN_00462c6d(param_1 + 0x15,2); + FUN_0041790c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004624d8 file=? name=FUN_004624d8 */ + +undefined4 FUN_004624d8(void) + +{ + FUN_00415f1c(); + return 1; +} + + + +/* @004624ec file=munga_l4/l4audhdw.cpp name=FUN_004624ec */ + +void __cdecl FUN_004624ec(int param_1) + +{ + int iVar1; + char *pcVar2; + + *(undefined4 *)(param_1 + 0x28) = 0; + *(undefined4 *)(param_1 + 0x40) = *(undefined4 *)(param_1 + 0x1c); + iVar1 = FUN_004832c2(0xa008,(undefined4 *)(param_1 + 0x40),param_1 + 0x20,(uint *)(param_1 + 0x4c) + ); + if (iVar1 != 0) { + pcVar2 = FUN_004814e9(iVar1); + FUN_004dbb24(&DAT_00524e20,pcVar2,(char *)0x0); + FUN_0040385c(s_AudioCard__Initialize___sosMIDII_004f358c, + s_d__tesla_bt_munga_l4_L4AUDHDW_CP_004f35be,0xfa); + } + return; +} + + + +/* @0046254c file=? name=FUN_0046254c */ + +void __cdecl FUN_0046254c(int param_1) + +{ + FUN_00462124(*(int *)(param_1 + 0x4c)); + FUN_00483799(*(int *)(param_1 + 0x4c)); + FUN_004836b0(*(uint *)(param_1 + 0x4c),1); + return; +} + + + +/* @00462578 file=? name=FUN_00462578 */ + +void __cdecl FUN_00462578(int param_1,char *param_2) + +{ + char *pcVar1; + int iVar2; + int iVar3; + char *local_14; + int local_10; + int local_c; + int local_8; + + iVar3 = 0xffff; + local_8 = 0xffff; + local_c = 0xffff; + local_10 = 0xffff; + iVar2 = 0xffff; + local_14 = (char *)FUN_004dee74(param_2); + while (*local_14 != '\0') { + if ((*local_14 == 'a') || (pcVar1 = local_14, *local_14 == 'A')) { + pcVar1 = local_14 + 1; + if (*pcVar1 != '\0') { + if (*pcVar1 == ':') { + pcVar1 = local_14 + 2; + } + local_14 = pcVar1; + iVar3 = FUN_00462abc(param_1,(int *)&local_14); + pcVar1 = local_14; + } + } + local_14 = pcVar1; + if ((*local_14 == 'i') || (pcVar1 = local_14, *local_14 == 'I')) { + pcVar1 = local_14 + 1; + if (*pcVar1 != '\0') { + if (*pcVar1 == ':') { + pcVar1 = local_14 + 2; + } + local_14 = pcVar1; + local_8 = FUN_00462abc(param_1,(int *)&local_14); + pcVar1 = local_14; + } + } + local_14 = pcVar1; + if ((*local_14 == 'd') || (pcVar1 = local_14, *local_14 == 'D')) { + pcVar1 = local_14 + 1; + if (*pcVar1 != '\0') { + if (*pcVar1 == ':') { + pcVar1 = local_14 + 2; + } + local_14 = pcVar1; + local_c = FUN_00462abc(param_1,(int *)&local_14); + pcVar1 = local_14; + } + } + local_14 = pcVar1; + if ((*local_14 == 'e') || (pcVar1 = local_14, *local_14 == 'E')) { + pcVar1 = local_14 + 1; + if (*pcVar1 != '\0') { + if (*pcVar1 == ':') { + pcVar1 = local_14 + 2; + } + local_14 = pcVar1; + iVar2 = FUN_00462abc(param_1,(int *)&local_14); + pcVar1 = local_14; + } + } + local_14 = pcVar1; + if ((*local_14 == 'p') || (pcVar1 = local_14, *local_14 == 'P')) { + pcVar1 = local_14 + 1; + if (*pcVar1 != '\0') { + if (*pcVar1 == ':') { + pcVar1 = local_14 + 2; + } + local_14 = pcVar1; + local_10 = FUN_00462abc(param_1,(int *)&local_14); + pcVar1 = local_14; + } + } + while ((local_14 = pcVar1, *local_14 != '\0' && (*local_14 != ' '))) { + pcVar1 = local_14 + 1; + } + for (; *local_14 == ' '; local_14 = local_14 + 1) { + } + } + if (iVar2 == 0xffff) { + iVar2 = iVar3 + 0x400; + } + *(int *)(param_1 + 0xc) = iVar3; + *(int *)(param_1 + 0x10) = local_8; + *(int *)(param_1 + 0x14) = local_c; + *(int *)(param_1 + 0x18) = local_10; + *(int *)(param_1 + 0x1c) = iVar2; + return; +} + + + +/* @00462728 file=? name=FUN_00462728 */ + +undefined4 FUN_00462728(void) + +{ + return 0; +} + + + +/* @00462730 file=? name=FUN_00462730 */ + +void FUN_00462730(void) + +{ + return; +} + + + +/* @00462738 file=? name=FUN_00462738 */ + +undefined4 FUN_00462738(void) + +{ + return 0; +} + + + +/* @00462740 file=? name=FUN_00462740 */ + +undefined4 FUN_00462740(void) + +{ + return 0; +} + + + +/* @00462748 file=? name=FUN_00462748 */ + +void __cdecl FUN_00462748(int param_1) + +{ + int iVar1; + int local_1c [3]; + int local_10 [3]; + + FUN_00462c99(local_10,param_1 + 0x54); + while( true ) { + iVar1 = (**(code **)(local_10[0] + 0x28))(local_10); + if (iVar1 == 0) break; + FUN_0046285c(*(int *)(iVar1 + 0x18),*(byte *)(iVar1 + 0x10),0x18); + } + FUN_00462cf6(local_10,2); + FUN_00462c99(local_1c,param_1 + 100); + iVar1 = (**(code **)(local_1c[0] + 0x30))(local_1c); + FUN_0046285c(*(int *)(iVar1 + 0x18),*(byte *)(iVar1 + 0x10),0x18); + FUN_00462cf6(local_1c,2); + return; +} + + + +/* @004627d8 file=? name=FUN_004627d8 */ + +void __cdecl FUN_004627d8(int param_1,LPCSTR param_2) + +{ + FUN_00461d90(*(int *)(param_1 + 0x4c),param_2); + return; +} + + + +/* @004627f4 file=? name=FUN_004627f4 */ + +void __cdecl FUN_004627f4(int param_1) + +{ + FUN_00462124(*(int *)(param_1 + 0x4c)); + return; +} + + + +/* @00462808 file=? name=FUN_00462808 */ + +void __cdecl FUN_00462808(int param_1,byte param_2,int param_3) + +{ + uint uVar1; + uint uVar2; + byte local_27; + undefined1 local_26; + undefined1 local_25; + + uVar1 = param_3 + 0x2000; + uVar2 = uVar1; + if ((int)uVar1 < 0) { + uVar2 = param_3 + 0x207f; + } + uVar1 = uVar1 & 0x8000007f; + if ((int)uVar1 < 0) { + uVar1 = (uVar1 - 1 | 0xffffff80) + 1; + } + local_27 = param_2 | 0xe0; + local_26 = (undefined1)uVar1; + local_25 = (undefined1)((int)uVar2 >> 7); + FUN_00486402(*(int *)(param_1 + 0x4c),&local_27,3); + return; +} + + + +/* @0046285c file=? name=FUN_0046285c */ + +void __cdecl FUN_0046285c(int param_1,byte param_2,undefined1 param_3) + +{ + byte local_2f [3]; + byte local_2c [5]; + byte local_27 [35]; + + local_27[0] = param_2 | 0xb0; + local_27[1] = 0x65; + local_27[2] = 0; + FUN_00486402(*(int *)(param_1 + 0x4c),local_27,3); + local_2c[0] = param_2 | 0xb0; + local_2c[1] = 100; + local_2c[2] = 0; + FUN_00486402(*(int *)(param_1 + 0x4c),local_2c,3); + local_2f[0] = param_2 | 0xb0; + local_2f[1] = 6; + local_2f[2] = param_3; + FUN_00486402(*(int *)(param_1 + 0x4c),local_2f,3); + return; +} + + + +/* @004628d8 file=? name=FUN_004628d8 */ + +void __cdecl FUN_004628d8(int param_1,byte param_2,undefined1 param_3,int param_4) + +{ + int iVar1; + uint uVar2; + byte local_34 [5]; + byte local_2f [3]; + byte local_2c [5]; + byte local_27 [35]; + + local_27[0] = param_2 | 0xb0; + local_27[1] = 99; + local_27[2] = 0x7f; + FUN_00486402(*(int *)(param_1 + 0x4c),local_27,3); + local_2c[0] = param_2 | 0xb0; + local_2c[1] = 0x62; + local_2c[2] = param_3; + FUN_00486402(*(int *)(param_1 + 0x4c),local_2c,3); + iVar1 = param_4 + 0x2000; + if (iVar1 < 0) { + iVar1 = param_4 + 0x207f; + } + local_2f[0] = param_2 | 0xb0; + local_2f[1] = 6; + local_2f[2] = (byte)(iVar1 >> 7); + FUN_00486402(*(int *)(param_1 + 0x4c),local_2f,3); + uVar2 = param_4 + 0x2000U & 0x8000007f; + if ((int)uVar2 < 0) { + uVar2 = (uVar2 - 1 | 0xffffff80) + 1; + } + local_34[0] = param_2 | 0xb0; + local_34[1] = 0x26; + local_34[2] = (byte)uVar2; + FUN_00486402(*(int *)(param_1 + 0x4c),local_34,3); + return; +} + + + +/* @0046299c file=? name=FUN_0046299c */ + +void __cdecl FUN_0046299c(int param_1,int param_2,undefined1 param_3) + +{ + if (param_2 == 0) { + DAT_004f3574 = param_3; + FUN_004629e4(param_1,&DAT_004f356c,0xb); + return; + } + if (param_2 != 1) { + return; + } + DAT_004f357f = param_3; + FUN_004629e4(param_1,&DAT_004f3577,0xb); + return; +} + + + +/* @004629e4 file=munga_l4/l4audhdw.cpp name=FUN_004629e4 */ + +void __cdecl FUN_004629e4(int param_1,undefined4 param_2,undefined4 param_3) + +{ + int iVar1; + + iVar1 = FUN_00486402(*(int *)(param_1 + 0x4c),param_2,param_3); + if (iVar1 != 0) { + FUN_0040385c(s_AudioCard__SendSysex___wError____004f35e0, + s_d__tesla_bt_munga_l4_L4AUDHDW_CP_004f360f,0x2b9); + } + return; +} + + + +/* @00462a1c file=? name=FUN_00462a1c */ + +int __cdecl FUN_00462a1c(int param_1,int param_2) + +{ + int iVar1; + int local_10 [3]; + + if (*(int *)(param_1 + 0x50) < param_2) { + iVar1 = 0; + } + else { + FUN_00462c99(local_10,param_1 + 0x54); + iVar1 = (**(code **)(local_10[0] + 0x30))(local_10); + if (iVar1 == 0) { + iVar1 = 0; + FUN_00462cf6(local_10,2); + } + else { + (**(code **)(local_10[0] + 0x48))(local_10); + *(int *)(param_1 + 0x50) = *(int *)(param_1 + 0x50) - param_2; + *(int *)(iVar1 + 0x14) = param_2; + FUN_00462cf6(local_10,2); + } + } + return iVar1; +} + + + +/* @00462a98 file=? name=FUN_00462a98 */ + +void __cdecl FUN_00462a98(int param_1,int param_2) + +{ + *(int *)(param_1 + 0x50) = *(int *)(param_1 + 0x50) + *(int *)(param_2 + 0x14); + *(undefined4 *)(param_2 + 0x14) = 0; + (**(code **)(*(int *)(param_1 + 0x54) + 4))(param_1 + 0x54,param_2); + return; +} + + + +/* @00462abc file=? name=FUN_00462abc */ + +int __cdecl FUN_00462abc(undefined4 param_1,int *param_2) + +{ + char *pcVar1; + int iVar2; + + iVar2 = 0; + while( true ) { + while( true ) { + while( true ) { + if (*(char *)*param_2 == '\0') { + return iVar2; + } + if ((*(char *)*param_2 < '0') || ('9' < *(char *)*param_2)) break; + pcVar1 = (char *)*param_2; + *param_2 = *param_2 + 1; + iVar2 = iVar2 * 0x10 + *pcVar1 + -0x30; + } + if ((*(char *)*param_2 < 'a') || ('f' < *(char *)*param_2)) break; + pcVar1 = (char *)*param_2; + *param_2 = *param_2 + 1; + iVar2 = iVar2 * 0x10 + (int)*pcVar1 + -0x57; + } + if (*(char *)*param_2 < 'A') break; + if ('F' < *(char *)*param_2) { + return iVar2; + } + pcVar1 = (char *)*param_2; + *param_2 = *param_2 + 1; + iVar2 = iVar2 * 0x10 + (int)*pcVar1 + -0x37; + } + return iVar2; +} + + + +/* @00462b38 file=? name=FUN_00462b38 */ + +undefined4 * __cdecl FUN_00462b38(undefined4 *param_1) + +{ + FUN_004178cc(param_1,2); + *param_1 = &PTR_FUN_004f369c; + FUN_00462380(param_1 + 3); + FUN_00462380(param_1 + 0x20); + return param_1; +} + + + +/* @00462b6c file=? name=FUN_00462b6c */ + +void __cdecl FUN_00462b6c(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f369c; + FUN_00462430(param_1 + 0x20,2); + FUN_00462430(param_1 + 3,2); + FUN_0041790c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00462bb8 file=? name=FUN_00462bb8 */ + +undefined4 FUN_00462bb8(void) + +{ + FUN_00415f1c(); + return 1; +} + + + +/* @00462bcc file=? name=FUN_00462bcc */ + +void __cdecl FUN_00462bcc(int param_1) + +{ + int iVar1; + int iVar2; + + FUN_00483193((char *)0x0); + iVar1 = param_1 + 0xc; + FUN_00462578(iVar1,s_AWE_FRONT_004f3631); + iVar2 = param_1 + 0x80; + FUN_00462578(iVar2,s_AWE_REAR_004f363b); + FUN_004624ec(iVar1); + FUN_004624ec(iVar2); + FUN_00462748(iVar1); + FUN_00462748(iVar2); + return; +} + + + +/* @00462c28 file=? name=FUN_00462c28 */ + +void __cdecl FUN_00462c28(int param_1) + +{ + FUN_0046254c(param_1 + 0xc); + FUN_0046254c(param_1 + 0x80); + FUN_004832a1(); + return; +} + + + +/* @00462c4e file=? name=FUN_00462c4e */ + +undefined4 * __cdecl FUN_00462c4e(undefined4 *param_1,undefined4 param_2) + +{ + FUN_00417be0(param_1,param_2); + *param_1 = &PTR_FUN_004f3694; + return param_1; +} + + + +/* @00462c6d file=? name=FUN_00462c6d */ + +void __cdecl FUN_00462c6d(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f3694; + FUN_00417c0c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00462c99 file=? name=FUN_00462c99 */ + +undefined4 * __cdecl FUN_00462c99(undefined4 *param_1,int param_2) + +{ + FUN_00417d00(param_1,param_2); + *param_1 = &PTR_FUN_004f3644; + return param_1; +} + + + +/* @00462cb8 file=? name=FUN_00462cb8 */ + +undefined4 * __cdecl FUN_00462cb8(undefined4 *param_1,int param_2) + +{ + FUN_00417d00(param_1,param_2); + *param_1 = &PTR_FUN_004f3644; + return param_1; +} + + + +/* @00462cd7 file=? name=FUN_00462cd7 */ + +undefined4 * __cdecl FUN_00462cd7(undefined4 *param_1,int param_2) + +{ + FUN_00417d28(param_1,param_2); + *param_1 = &PTR_FUN_004f3644; + return param_1; +} + + + +/* @00462cf6 file=? name=FUN_00462cf6 */ + +void __cdecl FUN_00462cf6(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f3644; + FUN_00417d54(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00462d24 file=? name=FUN_00462d24 */ + +void __cdecl FUN_00462d24(undefined4 *param_1) + +{ + *param_1 = 0; + param_1[1] = 0; + param_1[2] = 0; + param_1[3] = 0; + param_1[4] = 0; + param_1[5] = 0; + param_1[6] = 0; + param_1[7] = 0; + param_1[8] = 0; + param_1[9] = 0; + return; +} + + + +/* @00462d60 file=? name=FUN_00462d60 */ + +void __cdecl FUN_00462d60(int *param_1,byte param_2) + +{ + if ((param_1 != (int *)0x0) && ((param_2 & 1) != 0)) { + FUN_004022d0(param_1); + } + return; +} + + + +/* @00462d7c file=? name=FUN_00462d7c */ + +undefined4 FUN_00462d7c(void) + +{ + return 1; +} + + + +/* @00462d88 file=? name=FUN_00462d88 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_00462d88(float *param_1,float param_2) + +{ + float fVar1; + int iVar2; + float fVar3; + float10 fVar4; + float10 fVar5; + + *param_1 = param_2; + *param_1 = _DAT_0046312c + *param_1; + if (_DAT_0046312c < *param_1) { + *param_1 = *param_1 - _DAT_00463130; + } + iVar2 = *(int *)(*(int *)(DAT_004efc94 + 0x44) + 0x4c); + param_1[1] = 0.0; + param_1[2] = 0.0; + param_1[3] = 0.0; + param_1[4] = 0.0; + fVar3 = *(float *)(iVar2 + 0x48); + param_1[5] = 0.0; + param_1[6] = 0.0; + param_1[7] = 0.0; + param_1[8] = 0.0; + if ((*param_1 <= -0.7853982) || (0.7853982 <= *param_1)) { + if ((*param_1 <= 0.7853982) || (_DAT_0046312c - 0.7853982 <= *param_1)) { + if ((_DAT_0046312c - 0.7853982 < *param_1) || (*param_1 < _DAT_00463144 + 0.7853982)) { + param_1[9] = 2.8026e-45; + *param_1 = *param_1 - _DAT_0046312c; + fVar4 = (float10)FUN_004dd188(SUB84((double)*param_1,0), + (int)((ulonglong)(double)*param_1 >> 0x20)); + fVar5 = (float10)FUN_004dd188(0x60000000,0x3fe921fb); + fVar1 = (float)(((float10)(double)fVar4 / fVar5) * (float10)_DAT_00463134); + fVar4 = FUN_004dd138((double)(_DAT_00463134 + fVar1)); + param_1[4] = (float)fVar4; + fVar4 = FUN_004dd138((double)(_DAT_00463134 - fVar1)); + param_1[3] = (float)fVar4; + if (*param_1 <= -0.7853982) { + param_1[8] = -(-fVar1 * fVar3 * _DAT_0046313c); + } + else { + param_1[7] = -(fVar3 * fVar1 * _DAT_0046313c); + } + } + else { + param_1[9] = 4.2039e-45; + *param_1 = *param_1 + _DAT_00463140; + fVar4 = (float10)FUN_004dd188(SUB84((double)*param_1,0), + (int)((ulonglong)(double)*param_1 >> 0x20)); + fVar5 = (float10)FUN_004dd188(SUB84((double)(_DAT_00463140 - 0.7853982),0), + (int)((ulonglong)(double)(_DAT_00463140 - 0.7853982) >> 0x20)) + ; + fVar1 = (float)(((float10)(double)fVar4 / fVar5) * (float10)_DAT_00463134); + fVar4 = FUN_004dd138((double)(_DAT_00463134 + fVar1)); + param_1[2] = (float)fVar4; + fVar4 = FUN_004dd138((double)(_DAT_00463134 - fVar1)); + param_1[4] = (float)fVar4; + if (*param_1 <= _DAT_00463138) { + param_1[8] = -fVar1 * fVar3 * _DAT_0046313c; + } + else { + param_1[6] = fVar3 * fVar1 * _DAT_0046313c; + } + } + } + else { + param_1[9] = 1.4013e-45; + *param_1 = *param_1 - _DAT_00463140; + fVar4 = (float10)FUN_004dd188(SUB84((double)*param_1,0), + (int)((ulonglong)(double)*param_1 >> 0x20)); + fVar5 = (float10)FUN_004dd188(SUB84((double)(_DAT_00463140 - 0.7853982),0), + (int)((ulonglong)(double)(_DAT_00463140 - 0.7853982) >> 0x20)); + fVar1 = (float)(((float10)(double)fVar4 / fVar5) * (float10)_DAT_00463134); + fVar4 = FUN_004dd138((double)(_DAT_00463134 + fVar1)); + param_1[3] = (float)fVar4; + fVar4 = FUN_004dd138((double)(_DAT_00463134 - fVar1)); + param_1[1] = (float)fVar4; + if (*param_1 <= _DAT_00463138) { + param_1[5] = -fVar1 * fVar3 * _DAT_0046313c; + } + else { + param_1[7] = fVar3 * fVar1 * _DAT_0046313c; + } + } + } + else { + param_1[9] = 0.0; + fVar4 = (float10)FUN_004dd188(SUB84((double)*param_1,0), + (int)((ulonglong)(double)*param_1 >> 0x20)); + fVar5 = (float10)FUN_004dd188(0x60000000,0x3fe921fb); + fVar1 = (float)(((float10)(double)fVar4 / fVar5) * (float10)_DAT_00463134); + fVar4 = FUN_004dd138((double)(_DAT_00463134 + fVar1)); + param_1[1] = (float)fVar4; + fVar4 = FUN_004dd138((double)(_DAT_00463134 - fVar1)); + param_1[2] = (float)fVar4; + if (*param_1 <= _DAT_00463138) { + param_1[6] = -fVar1 * fVar3 * _DAT_0046313c; + } + else { + param_1[5] = fVar3 * fVar1 * _DAT_0046313c; + } + } + return; +} + + + +/* @00463148 file=? name=FUN_00463148 */ + +undefined4 * __cdecl FUN_00463148(undefined4 *param_1,int *param_2,int param_3) + +{ + FUN_00438060(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004f3ac0; + FUN_00462d24(param_1 + 0x19); + FUN_0046317c((int)param_1); + return param_1; +} + + + +/* @0046317c file=? name=FUN_0046317c */ + +void __cdecl FUN_0046317c(int param_1) + +{ + int *piVar1; + int iVar2; + int *piVar3; + + iVar2 = *(int *)(*(int *)(DAT_004efc94 + 0x44) + 0x18); + piVar3 = (int *)FUN_00414b60(); + piVar1 = (int *)(param_1 + 0x8c); + *piVar1 = *piVar3; + *piVar1 = *piVar1 - iVar2; + *(undefined4 *)(param_1 + 0x90) = 0; + *(undefined4 *)(param_1 + 0x94) = 0; + *(undefined4 *)(param_1 + 0x98) = 0; + *(undefined4 *)(param_1 + 0x9c) = 0; + *(undefined4 *)(param_1 + 0xa0) = 0; + *(undefined4 *)(param_1 + 0xa4) = 0; + *(undefined4 *)(param_1 + 0xa8) = 0; + *(undefined4 *)(param_1 + 0xac) = 0; + return; +} + + + +/* @004631f4 file=? name=FUN_004631f4 */ + +void __cdecl FUN_004631f4(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f3ac0; + FUN_00462d60(param_1 + 0x19,2); + FUN_004380f8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00463230 file=? name=FUN_00463230 */ + +undefined4 __cdecl FUN_00463230(int param_1) + +{ + FUN_00438178(param_1); + return 1; +} + + + +/* @00463244 file=? name=FUN_00463244 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_00463244(int param_1,int param_2) + +{ + int iVar1; + float fVar2; + float fVar3; + int *piVar4; + float10 fVar5; + + FUN_004383b4(param_1,(int *)param_2); + if (*(int *)(param_1 + 0x38) == 0) { + FUN_00462d88((float *)(param_1 + 100),*(float *)(param_1 + 0x4c)); + piVar4 = (int *)FUN_00414b60(); + iVar1 = *piVar4 - *(int *)(param_1 + 0x8c); + piVar4 = (int *)FUN_00414b60(); + *(int *)(param_1 + 0x8c) = *piVar4; + *(undefined4 *)(param_1 + 0xa0) = 0; + *(undefined4 *)(param_1 + 0xa4) = 0; + *(undefined4 *)(param_1 + 0xa8) = 0; + *(undefined4 *)(param_1 + 0xac) = 0; + fVar5 = FUN_004dcd00((double)((float)iVar1 / DAT_0052140c)); + if ((float10)_DAT_00463574 < fVar5) { + if (*(float *)(param_1 + 0x90) != *(float *)(param_1 + 0x78)) { + *(float *)(param_1 + 0xa0) = + ((*(float *)(param_1 + 0x78) - *(float *)(param_1 + 0x90)) * 1915.5) / + ((float)iVar1 / DAT_0052140c); + *(undefined4 *)(param_1 + 0x90) = *(undefined4 *)(param_1 + 0x78); + } + if (*(float *)(param_1 + 0x94) != *(float *)(param_1 + 0x7c)) { + *(float *)(param_1 + 0xa4) = + ((*(float *)(param_1 + 0x7c) - *(float *)(param_1 + 0x94)) * 1915.5) / + ((float)iVar1 / DAT_0052140c); + *(undefined4 *)(param_1 + 0x94) = *(undefined4 *)(param_1 + 0x7c); + } + if (*(float *)(param_1 + 0x98) != *(float *)(param_1 + 0x80)) { + *(float *)(param_1 + 0xa8) = + ((*(float *)(param_1 + 0x80) - *(float *)(param_1 + 0x98)) * 1915.5) / + ((float)iVar1 / DAT_0052140c); + *(undefined4 *)(param_1 + 0x98) = *(undefined4 *)(param_1 + 0x80); + } + if (*(float *)(param_1 + 0x9c) != *(float *)(param_1 + 0x84)) { + *(float *)(param_1 + 0xac) = + ((*(float *)(param_1 + 0x84) - *(float *)(param_1 + 0x9c)) * 1915.5) / + ((float)iVar1 / DAT_0052140c); + *(undefined4 *)(param_1 + 0x9c) = *(undefined4 *)(param_1 + 0x84); + } + } + fVar3 = *(float *)(param_2 + 0x18) * _DAT_00463578; + fVar5 = FUN_004dd138((double)(*(float *)(param_1 + 0x44) * *(float *)(param_1 + 0x44) + + *(float *)(param_1 + 0x3c) * *(float *)(param_1 + 0x3c) + 0.0)); + if ((float)fVar5 < fVar3) { + fVar3 = ((fVar3 - (float)fVar5) * _DAT_00463578) / fVar3; + fVar5 = FUN_004dd138((double)(_DAT_0046357c - fVar3)); + fVar2 = (float)fVar5; + fVar5 = FUN_004dd138((double)fVar3); + fVar3 = (float)fVar5; + iVar1 = *(int *)(param_1 + 0x88); + if (iVar1 == 0) { + *(float *)(param_1 + 0x70) = *(float *)(param_1 + 0x68) * fVar3; + *(float *)(param_1 + 0x74) = *(float *)(param_1 + 0x6c) * fVar3; + *(float *)(param_1 + 0x68) = fVar2 * *(float *)(param_1 + 0x68); + *(float *)(param_1 + 0x6c) = fVar2 * *(float *)(param_1 + 0x6c); + } + else if (iVar1 == 1) { + *(float *)(param_1 + 0x74) = *(float *)(param_1 + 0x70) * fVar3; + *(float *)(param_1 + 0x6c) = *(float *)(param_1 + 0x68) * fVar3; + *(float *)(param_1 + 0x70) = fVar2 * *(float *)(param_1 + 0x70); + *(float *)(param_1 + 0x68) = fVar2 * *(float *)(param_1 + 0x68); + } + else if (iVar1 == 2) { + *(float *)(param_1 + 0x6c) = *(float *)(param_1 + 0x74) * fVar3; + *(float *)(param_1 + 0x68) = *(float *)(param_1 + 0x70) * fVar3; + *(float *)(param_1 + 0x74) = fVar2 * *(float *)(param_1 + 0x74); + *(float *)(param_1 + 0x70) = fVar2 * *(float *)(param_1 + 0x70); + } + else if (iVar1 == 3) { + *(float *)(param_1 + 0x68) = *(float *)(param_1 + 0x6c) * fVar3; + *(float *)(param_1 + 0x70) = *(float *)(param_1 + 0x74) * fVar3; + *(float *)(param_1 + 0x6c) = fVar2 * *(float *)(param_1 + 0x6c); + *(float *)(param_1 + 0x74) = fVar2 * *(float *)(param_1 + 0x74); + } + } + } + else { + *(undefined4 *)(param_1 + 0x68) = 0x3f800000; + *(undefined4 *)(param_1 + 0x6c) = 0x3f800000; + *(undefined4 *)(param_1 + 0x70) = 0x3f800000; + *(undefined4 *)(param_1 + 0x74) = 0x3f800000; + *(undefined4 *)(param_1 + 0xa0) = 0; + *(undefined4 *)(param_1 + 0xa4) = 0; + *(undefined4 *)(param_1 + 0xa8) = 0; + *(undefined4 *)(param_1 + 0xac) = 0; + } + return; +} + + + +/* @0046324a file=? name=FUN_0046324a */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_0046324a(void) + +{ + int *piVar1; + int iVar2; + int iVar3; + undefined4 *puVar4; + int *piVar5; + int unaff_EBP; + float10 fVar6; + + piVar1 = *(int **)(unaff_EBP + 0xc); + iVar2 = *(int *)(unaff_EBP + 8); + FUN_004383b4(iVar2,piVar1); + if (*(int *)(iVar2 + 0x38) == 0) { + FUN_00462d88((float *)(iVar2 + 100),*(float *)(iVar2 + 0x4c)); + *(undefined4 *)(unaff_EBP + -4) = 0x44ef7000; + puVar4 = (undefined4 *)FUN_00414b60(); + *(undefined4 *)(unaff_EBP + -8) = *puVar4; + *(int *)(unaff_EBP + -8) = *(int *)(unaff_EBP + -8) - *(int *)(iVar2 + 0x8c); + piVar5 = (int *)FUN_00414b60(); + *(int *)(iVar2 + 0x8c) = *piVar5; + *(undefined4 *)(iVar2 + 0xa0) = 0; + *(undefined4 *)(iVar2 + 0xa4) = 0; + *(undefined4 *)(iVar2 + 0xa8) = 0; + *(undefined4 *)(iVar2 + 0xac) = 0; + *(float *)(unaff_EBP + -0xc) = (float)*(int *)(unaff_EBP + -8) / DAT_0052140c; + fVar6 = FUN_004dcd00((double)*(float *)(unaff_EBP + -0xc)); + if ((float10)_DAT_00463574 < fVar6) { + if (*(float *)(iVar2 + 0x90) != *(float *)(iVar2 + 0x78)) { + *(float *)(iVar2 + 0xa0) = + ((*(float *)(iVar2 + 0x78) - *(float *)(iVar2 + 0x90)) * *(float *)(unaff_EBP + -4)) / + ((float)*(int *)(unaff_EBP + -8) / DAT_0052140c); + *(undefined4 *)(iVar2 + 0x90) = *(undefined4 *)(iVar2 + 0x78); + } + if (*(float *)(iVar2 + 0x94) != *(float *)(iVar2 + 0x7c)) { + *(float *)(iVar2 + 0xa4) = + ((*(float *)(iVar2 + 0x7c) - *(float *)(iVar2 + 0x94)) * *(float *)(unaff_EBP + -4)) / + ((float)*(int *)(unaff_EBP + -8) / DAT_0052140c); + *(undefined4 *)(iVar2 + 0x94) = *(undefined4 *)(iVar2 + 0x7c); + } + if (*(float *)(iVar2 + 0x98) != *(float *)(iVar2 + 0x80)) { + *(float *)(iVar2 + 0xa8) = + ((*(float *)(iVar2 + 0x80) - *(float *)(iVar2 + 0x98)) * *(float *)(unaff_EBP + -4)) / + ((float)*(int *)(unaff_EBP + -8) / DAT_0052140c); + *(undefined4 *)(iVar2 + 0x98) = *(undefined4 *)(iVar2 + 0x80); + } + if (*(float *)(iVar2 + 0x9c) != *(float *)(iVar2 + 0x84)) { + *(float *)(iVar2 + 0xac) = + ((*(float *)(iVar2 + 0x84) - *(float *)(iVar2 + 0x9c)) * *(float *)(unaff_EBP + -4)) / + ((float)*(int *)(unaff_EBP + -8) / DAT_0052140c); + *(undefined4 *)(iVar2 + 0x9c) = *(undefined4 *)(iVar2 + 0x84); + } + } + *(float *)(unaff_EBP + -0x10) = (float)piVar1[6] * _DAT_00463578; + *(undefined4 *)(unaff_EBP + -0x18) = *(undefined4 *)(iVar2 + 0x44); + *(undefined4 *)(unaff_EBP + -0x1c) = *(undefined4 *)(iVar2 + 0x3c); + *(undefined4 *)(unaff_EBP + -0x34) = *(undefined4 *)(unaff_EBP + -0x1c); + *(undefined4 *)(unaff_EBP + -0x30) = 0; + *(undefined4 *)(unaff_EBP + -0x2c) = *(undefined4 *)(unaff_EBP + -0x18); + fVar6 = FUN_004dd138((double)(*(float *)(unaff_EBP + -0x2c) * *(float *)(unaff_EBP + -0x2c) + + *(float *)(unaff_EBP + -0x30) * *(float *)(unaff_EBP + -0x30) + + *(float *)(unaff_EBP + -0x34) * *(float *)(unaff_EBP + -0x34))); + *(float *)(unaff_EBP + -0x14) = (float)fVar6; + if (*(float *)(unaff_EBP + -0x14) < *(float *)(unaff_EBP + -0x10)) { + *(float *)(unaff_EBP + -0x20) = + ((*(float *)(unaff_EBP + -0x10) - *(float *)(unaff_EBP + -0x14)) * _DAT_00463578) / + *(float *)(unaff_EBP + -0x10); + fVar6 = FUN_004dd138((double)(_DAT_0046357c - *(float *)(unaff_EBP + -0x20))); + *(float *)(unaff_EBP + -0x24) = (float)fVar6; + fVar6 = FUN_004dd138((double)*(float *)(unaff_EBP + -0x20)); + *(float *)(unaff_EBP + -0x28) = (float)fVar6; + iVar3 = *(int *)(iVar2 + 0x88); + if (iVar3 == 0) { + *(float *)(iVar2 + 0x70) = *(float *)(iVar2 + 0x68) * *(float *)(unaff_EBP + -0x28); + *(float *)(iVar2 + 0x74) = *(float *)(iVar2 + 0x6c) * *(float *)(unaff_EBP + -0x28); + *(float *)(iVar2 + 0x68) = *(float *)(unaff_EBP + -0x24) * *(float *)(iVar2 + 0x68); + *(float *)(iVar2 + 0x6c) = *(float *)(unaff_EBP + -0x24) * *(float *)(iVar2 + 0x6c); + } + else if (iVar3 == 1) { + *(float *)(iVar2 + 0x74) = *(float *)(iVar2 + 0x70) * *(float *)(unaff_EBP + -0x28); + *(float *)(iVar2 + 0x6c) = *(float *)(iVar2 + 0x68) * *(float *)(unaff_EBP + -0x28); + *(float *)(iVar2 + 0x70) = *(float *)(unaff_EBP + -0x24) * *(float *)(iVar2 + 0x70); + *(float *)(iVar2 + 0x68) = *(float *)(unaff_EBP + -0x24) * *(float *)(iVar2 + 0x68); + } + else if (iVar3 == 2) { + *(float *)(iVar2 + 0x6c) = *(float *)(iVar2 + 0x74) * *(float *)(unaff_EBP + -0x28); + *(float *)(iVar2 + 0x68) = *(float *)(iVar2 + 0x70) * *(float *)(unaff_EBP + -0x28); + *(float *)(iVar2 + 0x74) = *(float *)(unaff_EBP + -0x24) * *(float *)(iVar2 + 0x74); + *(float *)(iVar2 + 0x70) = *(float *)(unaff_EBP + -0x24) * *(float *)(iVar2 + 0x70); + } + else if (iVar3 == 3) { + *(float *)(iVar2 + 0x68) = *(float *)(iVar2 + 0x6c) * *(float *)(unaff_EBP + -0x28); + *(float *)(iVar2 + 0x70) = *(float *)(iVar2 + 0x74) * *(float *)(unaff_EBP + -0x28); + *(float *)(iVar2 + 0x6c) = *(float *)(unaff_EBP + -0x24) * *(float *)(iVar2 + 0x6c); + *(float *)(iVar2 + 0x74) = *(float *)(unaff_EBP + -0x24) * *(float *)(iVar2 + 0x74); + } + } + } + else { + *(undefined4 *)(iVar2 + 0x68) = 0x3f800000; + *(undefined4 *)(iVar2 + 0x6c) = 0x3f800000; + *(undefined4 *)(iVar2 + 0x70) = 0x3f800000; + *(undefined4 *)(iVar2 + 0x74) = 0x3f800000; + *(undefined4 *)(iVar2 + 0xa0) = 0; + *(undefined4 *)(iVar2 + 0xa4) = 0; + *(undefined4 *)(iVar2 + 0xa8) = 0; + *(undefined4 *)(iVar2 + 0xac) = 0; + } + return; +} + + + +/* @00463580 file=? name=FUN_00463580 */ + +undefined4 * __cdecl FUN_00463580(undefined4 *param_1) + +{ + undefined4 *puVar1; + int iVar2; + + iVar2 = 0; + puVar1 = param_1; + do { + *puVar1 = 0; + puVar1[4] = 0; + iVar2 = iVar2 + 1; + puVar1 = puVar1 + 1; + } while (iVar2 < 4); + return param_1; +} + + + +/* @004635a4 file=? name=FUN_004635a4 */ + +undefined4 FUN_004635a4(void) + +{ + int iVar1; + + iVar1 = 0; + do { + iVar1 = iVar1 + 1; + } while (iVar1 < 4); + return 1; +} + + + +/* @004635c0 file=? name=FUN_004635c0 */ + +void __cdecl FUN_004635c0(undefined4 *param_1) + +{ + int iVar1; + + iVar1 = 0; + do { + *param_1 = 0; + param_1[4] = 1; + iVar1 = iVar1 + 1; + param_1 = param_1 + 1; + } while (iVar1 < 4); + return; +} + + + +/* @004635e0 file=? name=FUN_004635e0 */ + +void __cdecl FUN_004635e0(int *param_1) + +{ + int iVar1; + int iVar2; + + iVar2 = 0; + do { + iVar1 = *param_1; + if (iVar1 != 0) { + FUN_00462a98(*(int *)(iVar1 + 0x18),iVar1); + *param_1 = 0; + } + iVar2 = iVar2 + 1; + param_1 = param_1 + 1; + } while (iVar2 < 4); + return; +} + + + +/* @00463610 file=? name=FUN_00463610 */ + +undefined4 * __cdecl FUN_00463610(undefined4 *param_1,int *param_2,int param_3) + +{ + FUN_0043b22c(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004f3a60; + FUN_00463580(param_1 + 0x29); + FUN_00463668(); + return param_1; +} + + + +/* @00463648 file=? name=FUN_00463648 */ + +void __cdecl FUN_00463648(int *param_1,int param_2) + +{ + FUN_0043b37c(param_1,param_2); + return; +} + + + +/* @00463668 file=? name=FUN_00463668 */ + +void FUN_00463668(void) + +{ + return; +} + + + +/* @00463670 file=? name=FUN_00463670 */ + +void __cdecl FUN_00463670(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f3a60; + FUN_0043b998(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0046369c file=? name=FUN_0046369c */ + +undefined4 __cdecl FUN_0046369c(int param_1) + +{ + FUN_0043b9e0(param_1); + return 1; +} + + + +/* @004636b0 file=? name=FUN_004636b0 */ + +void __cdecl FUN_004636b0(int *param_1) + +{ + FUN_00467a9c(*(int *)(DAT_004efc94 + 0x44),param_1); + return; +} + + + +/* @004636cc file=? name=FUN_004636cc */ + +void __cdecl FUN_004636cc(int param_1,undefined4 *param_2) + +{ + int iVar1; + undefined4 *puVar2; + + puVar2 = (undefined4 *)(param_1 + 0xa4); + for (iVar1 = 8; iVar1 != 0; iVar1 = iVar1 + -1) { + *puVar2 = *param_2; + param_2 = param_2 + 1; + puVar2 = puVar2 + 1; + } + return; +} + + + +/* @004636ec file=? name=FUN_004636ec */ + +int __cdecl FUN_004636ec(int param_1) + +{ + return param_1 + 0xa4; +} + + + +/* @004636fc file=? name=FUN_004636fc */ + +void __cdecl FUN_004636fc(int param_1) + +{ + FUN_004635e0((int *)(param_1 + 0xa4)); + return; +} + + + +/* @00463710 file=? name=FUN_00463710 */ + +undefined4 * __cdecl FUN_00463710(undefined4 *param_1,int *param_2,int param_3) + +{ + FUN_00463610(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004f3a00; + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0x31,4); + param_1[0x32] = 0; + return param_1; +} + + + +/* @00463754 file=munga_l4/l4audio.cpp name=FUN_00463754 */ + +void __cdecl FUN_00463754(int *param_1,int param_2) + +{ + char *pcVar1; + int local_8; + + FUN_00463648(param_1,param_2); + pcVar1 = (char *)FUN_00403ad0(param_2,s_position_004f36b8); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004f36c1,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_position_004f36e6,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004f36ef,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004f36f1, + s_d__tesla_bt_munga_l4_L4AUDIO_CPP_004f3731,0x330); + } + FUN_00407ae0(pcVar1,&local_8); + (**(code **)(*param_1 + 0x20))(param_1,&local_8,4); + return; +} + + + +/* @004637fc file=? name=FUN_004637fc */ + +void __cdecl FUN_004637fc(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f3a00; + FUN_00463670(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00463828 file=? name=FUN_00463828 */ + +undefined4 __cdecl FUN_00463828(int param_1) + +{ + FUN_0046369c(param_1); + return 1; +} + + + +/* @00463848 file=? name=FUN_00463848 */ + +void __cdecl FUN_00463848(int *param_1) + +{ + int iVar1; + int *piVar2; + int *piVar3; + + piVar2 = &DAT_00522c9c; + piVar3 = param_1 + 0x29; + for (iVar1 = 8; iVar1 != 0; iVar1 = iVar1 + -1) { + *piVar3 = *piVar2; + piVar2 = piVar2 + 1; + piVar3 = piVar3 + 1; + } + iVar1 = param_1[0x31]; + if (iVar1 == 0) { +LAB_0046387c: + param_1[0x2d] = 1; + } + else { + if (iVar1 != 1) { + if (iVar1 - 2U < 2) goto LAB_0046387c; + if (1 < iVar1 - 4U) goto LAB_00463892; + } + param_1[0x2f] = 1; + } +LAB_00463892: + FUN_0046797c(*(int *)(DAT_004efc94 + 0x44),param_1); + return; +} + + + +/* @004638a8 file=? name=FUN_004638a8 */ + +void __cdecl FUN_004638a8(int *param_1) + +{ + undefined4 uVar1; + int iVar2; + undefined4 uVar3; + byte local_601; + undefined1 local_600; + undefined1 local_5ff; + byte local_502 [255]; + byte local_403 [255]; + byte local_304 [4]; + undefined1 local_300; + undefined1 local_2ff; + byte local_202 [255]; + byte local_103 [255]; + + FUN_0043bfa4((int)param_1); + iVar2 = param_1[0x31]; + if (iVar2 == 0) { +LAB_004638d8: + param_1[0x32] = param_1[0x29]; + } + else { + if (iVar2 != 1) { + if (iVar2 - 2U < 2) goto LAB_004638d8; + if (1 < iVar2 - 4U) goto LAB_004638f2; + } + param_1[0x32] = param_1[0x2b]; + } +LAB_004638f2: + FUN_00436db0((int)param_1); + local_103[0] = *(byte *)(param_1[0x32] + 0x10) | 0xb0; + local_103[1] = 7; + local_103[2] = 0; + FUN_00486402(*(int *)(*(int *)(param_1[0x32] + 0x18) + 0x4c),local_103,3); + iVar2 = param_1[10]; + FUN_004379b8(iVar2,*(float *)(param_1[9] + 0x48)); + FUN_00465cb4(iVar2,param_1[0x32]); + local_202[0] = *(byte *)(param_1[0x32] + 0x10) | 0xb0; + local_202[1] = 0x5b; + local_202[2] = 0; + FUN_00486402(*(int *)(*(int *)(param_1[0x32] + 0x18) + 0x4c),local_202,3); + local_304[3] = *(byte *)(param_1[0x32] + 0x10) | 0xb0; + local_300 = 0x5d; + local_2ff = 0; + FUN_00486402(*(int *)(*(int *)(param_1[0x32] + 0x18) + 0x4c),local_304 + 3,3); + switch(param_1[0x31]) { + case 0: + case 1: + local_304[0] = *(byte *)(param_1[0x32] + 0x10) | 0xb0; + local_304[1] = 10; + local_304[2] = 0x3f; + FUN_00486402(*(int *)(*(int *)(param_1[0x32] + 0x18) + 0x4c),local_304,3); + break; + case 2: + case 4: + local_403[0] = *(byte *)(param_1[0x32] + 0x10) | 0xb0; + local_403[1] = 10; + local_403[2] = 0; + FUN_00486402(*(int *)(*(int *)(param_1[0x32] + 0x18) + 0x4c),local_403,3); + break; + case 3: + case 5: + local_502[0] = *(byte *)(param_1[0x32] + 0x10) | 0xb0; + local_502[1] = 10; + local_502[2] = 0x7f; + FUN_00486402(*(int *)(*(int *)(param_1[0x32] + 0x18) + 0x4c),local_502,3); + } + *(undefined1 *)(param_1 + 0x33) = 0; + param_1[0x34] = 0; + param_1[0x35] = 0x7f; + uVar1 = FUN_004dcd94(); + if (param_1[0x19] != 0) { + iVar2 = FUN_004dcd94(); + FUN_004628d8(*(int *)(param_1[0x32] + 0x18),*(byte *)(param_1[0x32] + 0x10),0xb,iVar2); + } + (**(code **)(*param_1 + 0x5c))(param_1,1); + uVar3 = FUN_004dcd94(); + local_601 = *(byte *)(param_1[0x32] + 0x10) | 0x90; + local_600 = (undefined1)uVar3; + local_5ff = (undefined1)uVar1; + FUN_00486402(*(int *)(*(int *)(param_1[0x32] + 0x18) + 0x4c),&local_601,3); + return; +} + + + +/* @00463bbc file=? name=FUN_00463bbc */ + +void __cdecl FUN_00463bbc(int *param_1,int param_2) + +{ + int iVar1; + uint uVar2; + int iVar3; + float10 fVar4; + byte local_103 [243]; + float local_10; + float local_c; + float local_8; + + fVar4 = (float10)(**(code **)(*param_1 + 0x20))(param_1); + local_8 = (float)fVar4; + iVar1 = FUN_004dcd94(); + if (iVar1 < -0x1fff) { + iVar1 = -0x1fff; + } + else if (0x1fff < iVar1) { + iVar1 = 0x1fff; + } + iVar3 = param_1[0x34] - iVar1; + if (iVar3 < 1) { + iVar3 = -iVar3; + } + if ((0xb < iVar3) || (param_2 != 0)) { + param_1[0x34] = iVar1; + FUN_00462808(*(int *)(param_1[0x32] + 0x18),*(byte *)(param_1[0x32] + 0x10),iVar1); + } + if (param_1[0x22] != 0) { + fVar4 = (float10)(**(code **)(*param_1 + 0x24))(param_1); + local_c = (float)fVar4; + FUN_00465ccc(param_1[10]); + iVar1 = FUN_004dcd94(); + iVar3 = param_1[0x35] - iVar1; + if (iVar3 < 1) { + iVar3 = -iVar3; + } + if (1 < iVar3) { + param_1[0x35] = iVar1; + FUN_004628d8(*(int *)(param_1[0x32] + 0x18),*(byte *)(param_1[0x32] + 0x10),0x15,iVar1); + } + } + fVar4 = (float10)(**(code **)(*param_1 + 0x1c))(param_1); + local_10 = (float)fVar4; + uVar2 = FUN_004dcd94(); + local_103[2] = (byte)uVar2; + iVar1 = (uint)*(byte *)(param_1 + 0x33) - (uVar2 & 0xff); + if (iVar1 < 1) { + iVar1 = -iVar1; + } + if (1 < iVar1) { + *(byte *)(param_1 + 0x33) = local_103[2]; + local_103[0] = *(byte *)(param_1[0x32] + 0x10) | 0xb0; + local_103[1] = 7; + FUN_00486402(*(int *)(*(int *)(param_1[0x32] + 0x18) + 0x4c),local_103,3); + } + return; +} + + + +/* @00463d4c file=? name=FUN_00463d4c */ + +undefined4 * __cdecl FUN_00463d4c(undefined4 *param_1,int *param_2,int param_3) + +{ + FUN_00463610(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004f39a0; + return param_1; +} + + + +/* @00463d70 file=? name=FUN_00463d70 */ + +void __cdecl FUN_00463d70(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f39a0; + FUN_00463670(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00463d9c file=? name=FUN_00463d9c */ + +undefined4 __cdecl FUN_00463d9c(int param_1) + +{ + FUN_0046369c(param_1); + return 1; +} + + + +/* @00463db0 file=? name=FUN_00463db0 */ + +void __cdecl FUN_00463db0(int *param_1) + +{ + FUN_004635c0(param_1 + 0x29); + FUN_0046797c(*(int *)(DAT_004efc94 + 0x44),param_1); + return; +} + + + +/* @00463ddc file=? name=FUN_00463ddc */ + +void __cdecl FUN_00463ddc(int *param_1) + +{ + int iVar1; + undefined4 uVar2; + int iVar3; + int *piVar4; + byte local_704; + undefined1 local_703; + undefined1 local_702; + undefined1 local_609; + int local_608; + undefined1 local_604; + byte local_603 [255]; + byte local_504 [4]; + undefined1 local_500; + undefined1 local_4ff; + byte local_402 [255]; + byte local_303 [255]; + byte local_204 [251]; + undefined1 local_109; + int local_108; + byte local_103 [251]; + undefined4 local_8; + + FUN_0043bfa4((int)param_1); + local_8 = *(undefined4 *)(*(int *)(DAT_004efc94 + 0x44) + 0x4c); + FUN_00436db0((int)param_1); + iVar3 = 0; + piVar4 = param_1 + 0x29; + do { + local_103[0] = *(byte *)(*piVar4 + 0x10) | 0xb0; + local_103[1] = 7; + local_103[2] = 0; + FUN_00486402(*(int *)(*(int *)(*piVar4 + 0x18) + 0x4c),local_103,3); + iVar3 = iVar3 + 1; + piVar4 = piVar4 + 1; + } while (iVar3 < 4); + local_108 = param_1[10]; + FUN_004379b8(local_108,*(float *)(param_1[9] + 0x48)); + iVar3 = 0; + piVar4 = param_1 + 0x29; + do { + FUN_00465cb4(local_108,*piVar4); + iVar3 = iVar3 + 1; + piVar4 = piVar4 + 1; + } while (iVar3 < 4); + uVar2 = FUN_004dcd94(); + local_109 = (undefined1)uVar2; + iVar3 = 0; + piVar4 = param_1 + 0x29; + do { + iVar1 = *piVar4; + local_204[0] = *(byte *)(iVar1 + 0x10) | 0xb0; + local_204[1] = 0x5b; + local_204[2] = local_109; + FUN_00486402(*(int *)(*(int *)(iVar1 + 0x18) + 0x4c),local_204,3); + local_303[0] = *(byte *)(iVar1 + 0x10) | 0xb0; + local_303[1] = 0x5d; + local_303[2] = 0; + FUN_00486402(*(int *)(*(int *)(iVar1 + 0x18) + 0x4c),local_303,3); + iVar3 = iVar3 + 1; + piVar4 = piVar4 + 1; + } while (iVar3 < 4); + local_402[0] = *(byte *)(param_1[0x29] + 0x10) | 0xb0; + local_402[1] = 10; + local_402[2] = 0; + FUN_00486402(*(int *)(*(int *)(param_1[0x29] + 0x18) + 0x4c),local_402,3); + local_504[3] = *(byte *)(param_1[0x2a] + 0x10) | 0xb0; + local_500 = 10; + local_4ff = 0x7f; + FUN_00486402(*(int *)(*(int *)(param_1[0x2a] + 0x18) + 0x4c),local_504 + 3,3); + local_504[0] = *(byte *)(param_1[0x2b] + 0x10) | 0xb0; + local_504[1] = 10; + local_504[2] = 0; + FUN_00486402(*(int *)(*(int *)(param_1[0x2b] + 0x18) + 0x4c),local_504,3); + local_603[0] = *(byte *)(param_1[0x2c] + 0x10) | 0xb0; + local_603[1] = 10; + local_603[2] = 0x7f; + FUN_00486402(*(int *)(*(int *)(param_1[0x2c] + 0x18) + 0x4c),local_603,3); + *(undefined1 *)(param_1 + 0x31) = 0; + *(undefined1 *)((int)param_1 + 0xc5) = 0; + *(undefined1 *)((int)param_1 + 0xc6) = 0; + *(undefined1 *)((int)param_1 + 199) = 0; + param_1[0x32] = 0; + param_1[0x33] = 0; + param_1[0x34] = 0; + param_1[0x35] = 0; + param_1[0x36] = 0x7f; + uVar2 = FUN_004dcd94(); + local_604 = (undefined1)uVar2; + if (param_1[0x19] != 0) { + local_608 = FUN_004dcd94(); + iVar3 = 0; + piVar4 = param_1 + 0x29; + do { + FUN_004628d8(*(int *)(*piVar4 + 0x18),*(byte *)(*piVar4 + 0x10),0xb,local_608); + iVar3 = iVar3 + 1; + piVar4 = piVar4 + 1; + } while (iVar3 < 4); + } + (**(code **)(*param_1 + 0x5c))(param_1,1); + iVar3 = 0; + piVar4 = param_1 + 0x29; + do { + iVar1 = *piVar4; + local_609 = local_604; + uVar2 = FUN_004dcd94(); + local_704 = *(byte *)(iVar1 + 0x10) | 0x90; + local_703 = (undefined1)uVar2; + local_702 = local_609; + FUN_00486402(*(int *)(*(int *)(iVar1 + 0x18) + 0x4c),&local_704,3); + iVar3 = iVar3 + 1; + piVar4 = piVar4 + 1; + } while (iVar3 < 4); + return; +} + + + +/* @004641e0 file=? name=FUN_004641e0 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004641e0(int *param_1,int param_2) + +{ + bool bVar1; + undefined4 uVar2; + int iVar3; + int iVar4; + int iVar5; + float10 fVar6; + byte local_404 [255]; + byte local_305; + char local_304; + byte local_303 [255]; + byte local_204; + char local_203; + byte local_202 [255]; + byte local_103; + char local_102; + byte local_101 [171]; + byte local_56; + char local_55; + int local_54; + int local_50; + int local_4c; + uint local_48; + int local_44; + int local_40; + undefined4 local_3c; + float local_38; + int local_34; + int local_30; + int local_2c; + float local_28; + char local_24; + char local_23; + char local_22; + char local_21; + float local_20; + float local_1c; + int local_18; + int local_14; + int local_10; + int local_c; + int local_8; + + FUN_0043c030(param_1); + local_8 = param_1[10]; + iVar4 = param_1[9]; + local_c = param_1[0x29]; + local_10 = param_1[0x2a]; + local_14 = param_1[0x2b]; + local_18 = param_1[0x2c]; + fVar6 = (float10)(**(code **)(*param_1 + 0x1c))(param_1); + local_1c = (float)fVar6; + local_20 = local_1c * _DAT_00464818; + uVar2 = FUN_004dcd94(); + local_21 = (char)uVar2; + uVar2 = FUN_004dcd94(); + local_22 = (char)uVar2; + uVar2 = FUN_004dcd94(); + local_23 = (char)uVar2; + uVar2 = FUN_004dcd94(); + local_24 = (char)uVar2; + fVar6 = (float10)(**(code **)(*param_1 + 0x20))(param_1); + local_28 = *(float *)(iVar4 + 0x58) + (float)fVar6; + iVar3 = FUN_004dcd94(); + local_2c = FUN_004dcd94(); + local_30 = FUN_004dcd94(); + local_34 = FUN_004dcd94(); + if (iVar3 < -0x1fff) { + iVar3 = -0x1fff; + } + else if (0x1fff < iVar3) { + iVar3 = 0x1fff; + } + if (local_2c < -0x1fff) { + local_2c = -0x1fff; + } + else if (0x1fff < local_2c) { + local_2c = 0x1fff; + } + if (local_30 < -0x1fff) { + local_30 = -0x1fff; + } + else if (0x1fff < local_30) { + local_30 = 0x1fff; + } + if (local_34 < -0x1fff) { + local_34 = -0x1fff; + } + else if (0x1fff < local_34) { + local_34 = 0x1fff; + } + fVar6 = (float10)(**(code **)(*param_1 + 0x24))(param_1); + local_38 = *(float *)(iVar4 + 0x54) * (float)fVar6; + FUN_00465ccc(local_8); + iVar4 = FUN_004dcd94(); + local_3c = 2; + iVar5 = iVar3 - param_1[0x32]; + if (iVar5 < 1) { + iVar5 = -iVar5; + } + if ((1 < iVar5) || (param_2 != 0)) { + param_1[0x32] = iVar3; + FUN_00462808(*(int *)(local_c + 0x18),*(byte *)(local_c + 0x10),iVar3); + } + iVar3 = local_2c - param_1[0x33]; + if (iVar3 < 1) { + iVar3 = -iVar3; + } + if ((1 < iVar3) || (param_2 != 0)) { + param_1[0x33] = local_2c; + FUN_00462808(*(int *)(local_10 + 0x18),*(byte *)(local_10 + 0x10),local_2c); + } + iVar3 = local_30 - param_1[0x34]; + if (iVar3 < 1) { + iVar3 = -iVar3; + } + if ((1 < iVar3) || (param_2 != 0)) { + param_1[0x34] = local_30; + local_40 = local_30; + FUN_00462808(*(int *)(local_14 + 0x18),*(byte *)(local_14 + 0x10),local_30); + } + iVar3 = local_34 - param_1[0x35]; + if (iVar3 < 1) { + iVar3 = -iVar3; + } + if ((1 < iVar3) || (param_2 != 0)) { + param_1[0x35] = local_34; + local_44 = local_34; + FUN_00462808(*(int *)(local_18 + 0x18),*(byte *)(local_18 + 0x10),local_34); + } + local_48 = 0; + local_4c = 0; + local_50 = 0; + local_54 = 0; + if ((char)param_1[0x31] != local_21) { + local_48 = (uint)((char)param_1[0x31] == '\0'); + *(char *)(param_1 + 0x31) = local_21; + local_55 = local_21; + local_56 = *(byte *)(local_c + 0x10); + local_101[0] = local_56 | 0xb0; + local_101[1] = 7; + local_101[2] = local_21; + FUN_00486402(*(int *)(*(int *)(local_c + 0x18) + 0x4c),local_101,3); + } + if (*(char *)((int)param_1 + 0xc5) != local_22) { + if (*(char *)((int)param_1 + 0xc5) == '\0') { + local_4c = 1; + } + *(char *)((int)param_1 + 0xc5) = local_22; + local_102 = local_22; + local_103 = *(byte *)(local_10 + 0x10); + local_202[0] = local_103 | 0xb0; + local_202[1] = 7; + local_202[2] = local_22; + FUN_00486402(*(int *)(*(int *)(local_10 + 0x18) + 0x4c),local_202,3); + } + if (*(char *)((int)param_1 + 0xc6) != local_23) { + if (*(char *)((int)param_1 + 0xc6) == '\0') { + local_50 = 1; + } + *(char *)((int)param_1 + 0xc6) = local_23; + local_203 = local_23; + local_204 = *(byte *)(local_14 + 0x10); + local_303[0] = local_204 | 0xb0; + local_303[1] = 7; + local_303[2] = local_23; + FUN_00486402(*(int *)(*(int *)(local_14 + 0x18) + 0x4c),local_303,3); + } + if (*(char *)((int)param_1 + 199) != local_24) { + if (*(char *)((int)param_1 + 199) == '\0') { + local_54 = 1; + } + *(char *)((int)param_1 + 199) = local_24; + local_304 = local_24; + local_305 = *(byte *)(local_18 + 0x10); + local_404[0] = local_305 | 0xb0; + local_404[1] = 7; + local_404[2] = local_24; + FUN_00486402(*(int *)(*(int *)(local_18 + 0x18) + 0x4c),local_404,3); + } + iVar3 = iVar4 - param_1[0x36]; + if (iVar3 < 1) { + iVar3 = -iVar3; + } + bVar1 = 3 < iVar3; + if ((local_48 != 0) || ((bVar1 && (local_21 != '\0')))) { + param_1[0x36] = iVar4; + FUN_004628d8(*(int *)(local_c + 0x18),*(byte *)(local_c + 0x10),0x15,iVar4); + } + if ((local_4c != 0) || ((bVar1 && (local_22 != '\0')))) { + param_1[0x36] = iVar4; + FUN_004628d8(*(int *)(local_10 + 0x18),*(byte *)(local_10 + 0x10),0x15,iVar4); + } + if ((local_50 != 0) || ((bVar1 && (local_23 != '\0')))) { + param_1[0x36] = iVar4; + FUN_004628d8(*(int *)(local_14 + 0x18),*(byte *)(local_14 + 0x10),0x15,iVar4); + } + if ((local_54 != 0) || ((bVar1 && (local_24 != '\0')))) { + param_1[0x36] = iVar4; + FUN_004628d8(*(int *)(local_18 + 0x18),*(byte *)(local_18 + 0x10),0x15,iVar4); + } + return; +} + + + +/* @0046487c file=? name=FUN_0046487c */ + +undefined4 * __cdecl FUN_0046487c(undefined4 *param_1,int *param_2,int param_3) + +{ + FUN_00463610(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004f3940; + param_1[0x31] = 0; + param_1[0x32] = 0; + param_1[0x33] = 0; + FUN_00462d24(param_1 + 0x35); + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0x34,4); + return param_1; +} + + + +/* @004648d8 file=? name=FUN_004648d8 */ + +void __cdecl FUN_004648d8(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f3940; + FUN_00462d60(param_1 + 0x35,2); + FUN_00463670(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00464918 file=munga_l4/l4audio.cpp name=FUN_00464918 */ + +void __cdecl FUN_00464918(int *param_1,int param_2) + +{ + int iVar1; + char *pcVar2; + undefined4 local_c; + int local_8; + + FUN_00463648(param_1,param_2); + iVar1 = FUN_00403ad0(param_2,s_use_internal_004f3752); + if (iVar1 == 0) { + local_c = 1; + (**(code **)(*param_1 + 0x20))(param_1,&local_c,4); + } + else { + pcVar2 = (char *)FUN_00403ad0(param_2,s_use_internal_004f375f); + if (pcVar2 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004f376c,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_use_internal_004f3791,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004f379e,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004f37a0, + s_d__tesla_bt_munga_l4_L4AUDIO_CPP_004f37e0,0x6a2); + } + FUN_00407ae0(pcVar2,&local_8); + (**(code **)(*param_1 + 0x20))(param_1,&local_8,4); + } + return; +} + + + +/* @004649f4 file=? name=FUN_004649f4 */ + +undefined4 __cdecl FUN_004649f4(int param_1) + +{ + FUN_0046369c(param_1); + return 1; +} + + + +/* @00464a14 file=? name=FUN_00464a14 */ + +void __cdecl FUN_00464a14(int param_1,undefined4 *param_2) + +{ + FUN_00408440((undefined4 *)(param_1 + 0xc4),param_2); + return; +} + + + +/* @00464a34 file=? name=FUN_00464a34 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_00464a34(int *param_1) + +{ + int iVar1; + int *piVar2; + int iVar3; + float10 fVar4; + float local_c; + + iVar1 = *(int *)(DAT_004efc94 + 0x44); + if (param_1[0x34] == 0) { + iVar3 = *(int *)(iVar1 + 0x4c); + piVar2 = (int *)param_1[9]; + if (piVar2[0x18] <= *(int *)(iVar3 + 4)) { + piVar2[0x18] = *(int *)(iVar3 + 4) + piVar2[0x17]; + (**(code **)(*piVar2 + 0x1c))(piVar2); + } + iVar3 = param_1[9]; + param_1[0x36] = *(int *)(iVar3 + 0x68); + param_1[0x37] = *(int *)(iVar3 + 0x6c); + param_1[0x38] = *(int *)(iVar3 + 0x70); + param_1[0x39] = *(int *)(iVar3 + 0x74); + param_1[0x3a] = *(int *)(iVar3 + 0x78); + param_1[0x3b] = *(int *)(iVar3 + 0x7c); + param_1[0x3c] = *(int *)(iVar3 + 0x80); + param_1[0x3d] = *(int *)(iVar3 + 0x84); + param_1[0x3e] = *(int *)(iVar3 + 0x88); + param_1[0x35] = *(int *)(iVar3 + 100); + } + else { + fVar4 = FUN_004dcd00((double)(float)param_1[0x31]); + if (((float10)_DAT_00464bf8 < fVar4) || + (fVar4 = FUN_004dcd00((double)(float)param_1[0x33]), (float10)_DAT_00464bf8 < fVar4)) { + fVar4 = FUN_004dc8ec((double)(float)param_1[0x31],SUB84((double)(float)param_1[0x33],0), + (uint)((ulonglong)(double)(float)param_1[0x33] >> 0x20)); + local_c = (float)fVar4; + } + else { + local_c = 0.0; + } + FUN_00462d88((float *)(param_1 + 0x35),local_c); + } + param_1[0x2d] = 0; + param_1[0x2e] = 0; + param_1[0x2f] = 0; + param_1[0x30] = 0; + iVar3 = param_1[0x3e]; + if (iVar3 == 0) { + param_1[0x2d] = 1; + } + else if (iVar3 == 1) { + param_1[0x2d] = 1; + param_1[0x2f] = 1; + } + else if (iVar3 == 2) { + param_1[0x2f] = 1; + } + else if (iVar3 == 3) { + param_1[0x2e] = 1; + param_1[0x30] = 1; + } + FUN_0046797c(iVar1,param_1); + return; +} + + + +/* @004651ac file=? name=FUN_004651ac */ + +void __cdecl FUN_004651ac(int *param_1,int param_2) + +{ + int iVar1; + int iVar2; + int iVar3; + undefined4 uVar4; + float10 fVar5; + byte local_602 [255]; + byte local_503; + char local_502; + byte local_501 [251]; + byte local_406; + char local_405; + char local_404; + char local_403; + byte local_402 [255]; + byte local_303; + char local_302; + byte local_301 [251]; + byte local_206; + char local_205; + byte local_204 [255]; + byte local_105; + char local_104; + char local_103; + char local_102; + byte local_101 [207]; + byte local_32; + char local_31; + int local_30; + int local_2c; + int local_28; + int local_24; + float local_20; + float local_1c; + float local_18; + int local_14; + int local_10; + int local_c; + int local_8; + + iVar2 = param_1[10]; + local_8 = param_1[0x29]; + local_c = param_1[0x2a]; + local_10 = param_1[0x2b]; + local_14 = param_1[0x2c]; + fVar5 = (float10)(**(code **)(*param_1 + 0x1c))(param_1); + local_18 = (float)fVar5; + fVar5 = (float10)(**(code **)(*param_1 + 0x20))(param_1); + local_1c = (float)fVar5; + iVar1 = FUN_004dcd94(); + if (iVar1 < -0x1fff) { + iVar1 = -0x1fff; + } + else if (0x1fff < iVar1) { + iVar1 = 0x1fff; + } + fVar5 = (float10)(**(code **)(*param_1 + 0x24))(param_1); + local_20 = (float)fVar5; + FUN_00465ccc(iVar2); + iVar2 = FUN_004dcd94(); + iVar3 = iVar1 - param_1[0x40]; + if (iVar3 < 1) { + iVar3 = -iVar3; + } + if ((1 < iVar3) || (param_2 != 0)) { + param_1[0x40] = iVar1; + iVar3 = param_1[0x3e]; + if (iVar3 == 0) { + FUN_00462808(*(int *)(local_8 + 0x18),*(byte *)(local_8 + 0x10),iVar1); + } + else if (iVar3 == 1) { + FUN_00462808(*(int *)(local_8 + 0x18),*(byte *)(local_8 + 0x10),iVar1); + FUN_00462808(*(int *)(local_10 + 0x18),*(byte *)(local_10 + 0x10),iVar1); + } + else if (iVar3 == 2) { + FUN_00462808(*(int *)(local_10 + 0x18),*(byte *)(local_10 + 0x10),iVar1); + } + else if (iVar3 == 3) { + FUN_00462808(*(int *)(local_c + 0x18),*(byte *)(local_c + 0x10),iVar1); + FUN_00462808(*(int *)(local_14 + 0x18),*(byte *)(local_14 + 0x10),iVar1); + } + } + if (param_1[0x22] != 0) { + iVar1 = iVar2 - param_1[0x41]; + if (iVar1 < 1) { + iVar1 = -iVar1; + } + if (1 < iVar1) { + param_1[0x41] = iVar2; + iVar1 = param_1[0x3e]; + if (iVar1 == 0) { + FUN_004628d8(*(int *)(local_8 + 0x18),*(byte *)(local_8 + 0x10),0x15,iVar2); + } + else if (iVar1 == 1) { + FUN_004628d8(*(int *)(local_8 + 0x18),*(byte *)(local_8 + 0x10),0x15,iVar2); + local_24 = iVar2; + FUN_004628d8(*(int *)(local_10 + 0x18),*(byte *)(local_10 + 0x10),0x15,iVar2); + } + else if (iVar1 == 2) { + local_28 = iVar2; + FUN_004628d8(*(int *)(local_10 + 0x18),*(byte *)(local_10 + 0x10),0x15,iVar2); + } + else if (iVar1 == 3) { + local_2c = iVar2; + FUN_004628d8(*(int *)(local_c + 0x18),*(byte *)(local_c + 0x10),0x15,iVar2); + local_30 = iVar2; + FUN_004628d8(*(int *)(local_14 + 0x18),*(byte *)(local_14 + 0x10),0x15,iVar2); + } + } + } + iVar2 = param_1[0x3e]; + if (iVar2 == 0) { + uVar4 = FUN_004dcd94(); + local_101[2] = (byte)uVar4; + if (local_101[2] != (char)param_1[0x3f]) { + *(byte *)(param_1 + 0x3f) = local_101[2]; + local_32 = *(byte *)(local_8 + 0x10); + local_101[0] = local_32 | 0xb0; + local_101[1] = 7; + local_31 = local_101[2]; + FUN_00486402(*(int *)(*(int *)(local_8 + 0x18) + 0x4c),local_101,3); + } + } + else if (iVar2 == 1) { + uVar4 = FUN_004dcd94(); + local_102 = (char)uVar4; + uVar4 = FUN_004dcd94(); + local_103 = (char)uVar4; + if (local_102 != (char)param_1[0x3f]) { + *(char *)(param_1 + 0x3f) = local_102; + local_104 = local_102; + local_105 = *(byte *)(local_8 + 0x10); + local_204[0] = local_105 | 0xb0; + local_204[1] = 7; + local_204[2] = local_102; + FUN_00486402(*(int *)(*(int *)(local_8 + 0x18) + 0x4c),local_204,3); + } + if (local_103 != *(char *)((int)param_1 + 0xfe)) { + *(char *)((int)param_1 + 0xfe) = local_103; + local_205 = local_103; + local_206 = *(byte *)(local_10 + 0x10); + local_301[0] = local_206 | 0xb0; + local_301[1] = 7; + local_301[2] = local_103; + FUN_00486402(*(int *)(*(int *)(local_10 + 0x18) + 0x4c),local_301,3); + } + } + else if (iVar2 == 2) { + uVar4 = FUN_004dcd94(); + local_402[2] = (byte)uVar4; + if (local_402[2] != *(char *)((int)param_1 + 0xfe)) { + *(byte *)((int)param_1 + 0xfe) = local_402[2]; + local_303 = *(byte *)(local_10 + 0x10); + local_402[0] = local_303 | 0xb0; + local_402[1] = 7; + local_302 = local_402[2]; + FUN_00486402(*(int *)(*(int *)(local_10 + 0x18) + 0x4c),local_402,3); + } + } + else if (iVar2 == 3) { + uVar4 = FUN_004dcd94(); + local_403 = (char)uVar4; + uVar4 = FUN_004dcd94(); + local_404 = (char)uVar4; + if (local_403 != *(char *)((int)param_1 + 0xfd)) { + *(char *)((int)param_1 + 0xfd) = local_403; + local_405 = local_403; + local_406 = *(byte *)(local_c + 0x10); + local_501[0] = local_406 | 0xb0; + local_501[1] = 7; + local_501[2] = local_403; + FUN_00486402(*(int *)(*(int *)(local_c + 0x18) + 0x4c),local_501,3); + } + if (local_404 != *(char *)((int)param_1 + 0xff)) { + *(char *)((int)param_1 + 0xff) = local_404; + local_502 = local_404; + local_503 = *(byte *)(local_14 + 0x10); + local_602[0] = local_503 | 0xb0; + local_602[1] = 7; + local_602[2] = local_404; + FUN_00486402(*(int *)(*(int *)(local_14 + 0x18) + 0x4c),local_602,3); + } + } + return; +} + + + +/* @004657c9 file=? name=FUN_004657c9 */ + +undefined4 * __cdecl FUN_004657c9(undefined4 *param_1,int param_2) + +{ + FUN_004188dc(param_1,param_2); + *param_1 = &PTR_FUN_004f38e4; + return param_1; +} + + + +/* @004657e8 file=? name=FUN_004657e8 */ + +undefined4 * __cdecl FUN_004657e8(undefined4 *param_1,int param_2) + +{ + FUN_004188dc(param_1,param_2); + *param_1 = &PTR_FUN_004f38e4; + return param_1; +} + + + +/* @00465807 file=? name=FUN_00465807 */ + +undefined4 * __cdecl FUN_00465807(undefined4 *param_1,int param_2) + +{ + FUN_00418904(param_1,param_2); + *param_1 = &PTR_FUN_004f38e4; + return param_1; +} + + + +/* @00465826 file=? name=FUN_00465826 */ + +void __cdecl FUN_00465826(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f38e4; + FUN_00418930(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00465852 file=? name=FUN_00465852 */ + +undefined4 * __cdecl FUN_00465852(undefined4 *param_1,int param_2) + +{ + FUN_00417d00(param_1,param_2); + *param_1 = &PTR_FUN_004f3894; + return param_1; +} + + + +/* @00465871 file=? name=FUN_00465871 */ + +undefined4 * __cdecl FUN_00465871(undefined4 *param_1,int param_2) + +{ + FUN_00417d00(param_1,param_2); + *param_1 = &PTR_FUN_004f3894; + return param_1; +} + + + +/* @00465890 file=? name=FUN_00465890 */ + +undefined4 * __cdecl FUN_00465890(undefined4 *param_1,int param_2) + +{ + FUN_00417d28(param_1,param_2); + *param_1 = &PTR_FUN_004f3894; + return param_1; +} + + + +/* @004658af file=? name=FUN_004658af */ + +void __cdecl FUN_004658af(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f3894; + FUN_00417d54(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004658db file=? name=FUN_004658db */ + +undefined4 * __cdecl FUN_004658db(undefined4 *param_1,int param_2) + +{ + FUN_004188dc(param_1,param_2); + *param_1 = &PTR_FUN_004f3838; + return param_1; +} + + + +/* @004658fa file=? name=FUN_004658fa */ + +undefined4 * __cdecl FUN_004658fa(undefined4 *param_1,int param_2) + +{ + FUN_004188dc(param_1,param_2); + *param_1 = &PTR_FUN_004f3838; + return param_1; +} + + + +/* @00465919 file=? name=FUN_00465919 */ + +undefined4 * __cdecl FUN_00465919(undefined4 *param_1,int param_2) + +{ + FUN_00418904(param_1,param_2); + *param_1 = &PTR_FUN_004f3838; + return param_1; +} + + + +/* @00465938 file=? name=FUN_00465938 */ + +void __cdecl FUN_00465938(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f3838; + FUN_00418930(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00465964 file=? name=FUN_00465964 */ + +undefined4 * __cdecl FUN_00465964(undefined4 *param_1,int *param_2) + +{ + FUN_0043744c(param_1,param_2); + *param_1 = &PTR_FUN_004f3d04; + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 6,1); + (**(code **)(*param_2 + 0x1c))(param_2,(int)param_1 + 0x19,1); + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 7,4); + return param_1; +} + + + +/* @004659b8 file=munga_l4/l4audlvl.cpp name=FUN_004659b8 */ + +void __cdecl FUN_004659b8(int *param_1,int param_2) + +{ + char *pcVar1; + int local_c; + undefined1 local_6; + undefined1 local_5; + + FUN_004374c4(param_1,param_2); + pcVar1 = (char *)FUN_00403ad0(param_2,s_bank_ID_004f3ae0); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004f3ae8,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_bank_ID_004f3b0d,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004f3b15,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004f3b17, + s_d__tesla_bt_munga_l4_L4AUDLVL_CP_004f3b57,0x57); + } + FUN_00407ab8(pcVar1,&local_5); + (**(code **)(*param_1 + 0x20))(param_1,&local_5,1); + pcVar1 = (char *)FUN_00403ad0(param_2,s_patch_ID_004f3b79); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004f3b82,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_patch_ID_004f3ba7,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004f3bb0,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004f3bb2, + s_d__tesla_bt_munga_l4_L4AUDLVL_CP_004f3bf2,0x58); + } + FUN_00407ab8(pcVar1,&local_6); + (**(code **)(*param_1 + 0x20))(param_1,&local_6,1); + pcVar1 = (char *)FUN_00403ad0(param_2,s_max_filter_cutoff_004f3c14); + if (pcVar1 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004f3c26,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_max_filter_cutoff_004f3c4b,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004f3c5d,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004f3c5f, + s_d__tesla_bt_munga_l4_L4AUDLVL_CP_004f3c9f,0x59); + } + FUN_00407ae0(pcVar1,&local_c); + (**(code **)(*param_1 + 0x20))(param_1,&local_c,4); + return; +} + + + +/* @00465b68 file=? name=FUN_00465b68 */ + +void __cdecl FUN_00465b68(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f3d04; + FUN_00437678(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00465b94 file=? name=FUN_00465b94 */ + +undefined4 FUN_00465b94(void) + +{ + FUN_004376a4(); + return 1; +} + + + +/* @00465ba8 file=? name=FUN_00465ba8 */ + +void __cdecl FUN_00465ba8(int param_1,int param_2) + +{ + byte local_d [4]; + undefined1 local_9; + undefined1 local_8; + byte local_7 [3]; + + local_7[2] = *(undefined1 *)(param_1 + 0x18); + local_7[0] = *(byte *)(param_2 + 0x10) | 0xb0; + local_7[1] = 0; + FUN_00486402(*(int *)(*(int *)(param_2 + 0x18) + 0x4c),local_7,3); + local_9 = *(undefined1 *)(param_1 + 0x19); + local_d[3] = *(byte *)(param_2 + 0x10) | 0xc0; + local_8 = 0; + FUN_00486402(*(int *)(*(int *)(param_2 + 0x18) + 0x4c),local_d + 3,2); + local_d[0] = *(byte *)(param_2 + 0x10) | 0xb0; + local_d[1] = 0x79; + local_d[2] = 0x7f; + FUN_00486402(*(int *)(*(int *)(param_2 + 0x18) + 0x4c),local_d,3); + return; +} + + + +/* @00465c34 file=? name=FUN_00465c34 */ + +undefined4 * __cdecl FUN_00465c34(undefined4 *param_1,int *param_2) + +{ + FUN_004376b8(param_1,param_2); + *param_1 = &PTR_FUN_004f3cf8; + return param_1; +} + + + +/* @00465c54 file=? name=FUN_00465c54 */ + +void __cdecl FUN_00465c54(int *param_1,int param_2) + +{ + FUN_00437774(param_1,param_2); + return; +} + + + +/* @00465c74 file=? name=FUN_00465c74 */ + +void __cdecl FUN_00465c74(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f3cf8; + FUN_00437968(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00465ca0 file=? name=FUN_00465ca0 */ + +undefined4 FUN_00465ca0(void) + +{ + FUN_004379a4(); + return 1; +} + + + +/* @00465cb4 file=? name=FUN_00465cb4 */ + +void __cdecl FUN_00465cb4(int param_1,int param_2) + +{ + FUN_00465ba8(*(int *)(param_1 + 0xc),param_2); + return; +} + + + +/* @00465ccc file=? name=FUN_00465ccc */ + +undefined4 __cdecl FUN_00465ccc(int param_1) + +{ + return *(undefined4 *)(*(int *)(param_1 + 0xc) + 0x1c); +} + + + +/* @00465d08 file=? name=FUN_00465d08 */ + +int * __cdecl FUN_00465d08(int *param_1,int *param_2,int param_3) + +{ + int *piVar1; + undefined4 *puVar2; + int iVar3; + int *local_8; + + FUN_0043e738(param_1,param_2,param_3); + *param_1 = (int)&PTR_LAB_004f3fd4; + puVar2 = (undefined4 *)FUN_00402298(0x10); + if (puVar2 == (undefined4 *)0x0) { + local_8 = (int *)0x0; + } + else { + local_8 = (int *)FUN_004023f4(puVar2); + } + local_8[3] = local_8[3] + 1; + FUN_00402aec(param_2,(int *)&local_8); + iVar3 = FUN_0041bfc0(param_3,(char *)local_8[2]); + param_1[0x20] = iVar3; + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0x21,4); + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0x22,4); + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0x23,4); + FUN_00441ef5(param_1); + piVar1 = local_8 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_8,3); + } + return param_1; +} + + + +/* @00465dd0 file=munga_l4/l4audwtr.cpp name=FUN_00465dd0 */ + +void __cdecl FUN_00465dd0(int *param_1,int param_2) + +{ + int *piVar1; + undefined4 *puVar2; + char *pcVar3; + float local_14; + int local_10; + int local_c; + int *local_8; + + FUN_00441d17(param_1,param_2); + puVar2 = (undefined4 *)FUN_00402298(0x10); + if (puVar2 == (undefined4 *)0x0) { + local_8 = (int *)0x0; + } + else { + local_8 = (int *)FUN_004023f4(puVar2); + } + local_8[3] = local_8[3] + 1; + pcVar3 = (char *)FUN_00403ad0(param_2,s_normal_attribute_004f3d08); + if (pcVar3 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004f3d19,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_normal_attribute_004f3d3e,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004f3d4f,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004f3d51, + s_d__tesla_bt_munga_l4_L4AUDWTR_CP_004f3d91,0x75); + } + FUN_00402b3c(pcVar3,(int *)&local_8); + FUN_004029b0(param_1,(int)local_8); + piVar1 = local_8 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_8,3); + } + pcVar3 = (char *)FUN_00403ad0(param_2,s_trigger_state_004f3db3); + if (pcVar3 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004f3dc1,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_trigger_state_004f3de6,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004f3df4,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004f3df6, + s_d__tesla_bt_munga_l4_L4AUDWTR_CP_004f3e36,0x7a); + } + FUN_00407ae0(pcVar3,&local_c); + (**(code **)(*param_1 + 0x20))(param_1,&local_c,4); + pcVar3 = (char *)FUN_00403ad0(param_2,s_control_ID_004f3e58); + if (pcVar3 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004f3e63,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_control_ID_004f3e88,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004f3e93,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004f3e95, + s_d__tesla_bt_munga_l4_L4AUDWTR_CP_004f3ed5,0x7b); + } + FUN_00407ae0(pcVar3,&local_10); + (**(code **)(*param_1 + 0x20))(param_1,&local_10,4); + pcVar3 = (char *)FUN_00403ad0(param_2,s_control_value_004f3ef7); + if (pcVar3 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004f3f05,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_control_value_004f3f2a,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004f3f38,(char *)0x0); + FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004f3f3a, + s_d__tesla_bt_munga_l4_L4AUDWTR_CP_004f3f7a,0x7c); + } + FUN_00407b78(pcVar3,&local_14); + (**(code **)(*param_1 + 0x20))(param_1,&local_14,4); + return; +} + + + +/* @00466034 file=? name=FUN_00466034 */ + +undefined4 __cdecl FUN_00466034(int param_1) + +{ + FUN_00441d86(param_1); + return 1; +} + + + +/* @00466048 file=? name=FUN_00466048 */ + +void __cdecl FUN_00466048(int param_1,undefined4 param_2,int param_3) + +{ + int *piVar1; + float local_10 [3]; + + if (param_3 == *(int *)(param_1 + 0x84)) { + piVar1 = (int *)FUN_00417ab4(param_1 + 0x74); + local_10[0] = 0.0; + local_10[1] = 0.0; + local_10[2] = 0.0; + FUN_00408644(local_10,local_10,*(float **)(param_1 + 0x80)); + FUN_00464a14((int)piVar1,local_10); + (**(code **)(*piVar1 + 0x18)) + (piVar1,*(undefined4 *)(param_1 + 0x88),*(undefined4 *)(param_1 + 0x8c)); + } + return; +} + + + +/* @004660c0 file=? name=FUN_004660c0 */ + +void __cdecl FUN_004660c0(int param_1) + +{ + float local_10 [3]; + + local_10[0] = 0.0; + local_10[1] = 0.0; + local_10[2] = 0.0; + FUN_00408644(local_10,local_10,*(float **)(param_1 + 0x80)); + return; +} + + + +/* @004660f4 file=? name=FUN_004660f4 */ + +undefined4 * __cdecl FUN_004660f4(undefined4 *param_1,int param_2,undefined4 param_3) + +{ + FUN_00416fdc(param_1,param_2); + *param_1 = &PTR_FUN_004f4150; + param_1[10] = param_3; + return param_1; +} + + + +/* @0046611c file=? name=FUN_0046611c */ + +undefined4 * __cdecl FUN_0046611c(undefined4 *param_1) + +{ + FUN_00416f88(param_1); + *param_1 = &PTR_FUN_004f4150; + param_1[10] = 0; + return param_1; +} + + + +/* @0046613c file=? name=FUN_0046613c */ + +void __cdecl FUN_0046613c(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f4150; + FUN_00417008(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00466168 file=? name=FUN_00466168 */ + +undefined8 __cdecl FUN_00466168(int param_1) + +{ + undefined8 uVar1; + + uVar1 = FUN_00417034(param_1); + return CONCAT44((int)((ulonglong)uVar1 >> 0x20),1); +} + + + +/* @00466184 file=? name=FUN_00466184 */ + +int * __cdecl FUN_00466184(int *param_1,int param_2) + +{ + undefined4 *puVar1; + int *piVar2; + + if (param_2 < 0x43) { + if (param_2 == 0x42) { + piVar2 = (int *)FUN_00402298(0x4c); + if (piVar2 != (int *)0x0) { + piVar2 = FUN_0043e6b4(piVar2,param_1,param_1[10]); + return piVar2; + } + return (int *)0x0; + } + switch(param_2) { + case 0x1c: + piVar2 = (int *)FUN_00402298(0x98); + if (piVar2 != (int *)0x0) { + piVar2 = FUN_0043e7d4(piVar2,param_1,param_1[10]); + return piVar2; + } + return (int *)0x0; + case 0x1d: + piVar2 = (int *)FUN_00402298(100); + if (piVar2 != (int *)0x0) { + piVar2 = FUN_0043e004(piVar2,param_1,param_1[10]); + return piVar2; + } + return (int *)0x0; + case 0x27: + piVar2 = (int *)FUN_00402298(0x68); + if (piVar2 != (int *)0x0) { + piVar2 = FUN_0043dd24(piVar2,param_1,param_1[10]); + return piVar2; + } + return (int *)0x0; + case 0x2b: + puVar1 = (undefined4 *)FUN_00402298(0x4c); + if (puVar1 != (undefined4 *)0x0) { + piVar2 = FUN_004392d8(puVar1,param_1,param_1[10]); + return piVar2; + } + return (int *)0x0; + case 0x2c: + piVar2 = (int *)FUN_00402298(0x4c); + if (piVar2 != (int *)0x0) { + piVar2 = FUN_0043e2e4(piVar2,param_1,param_1[10]); + return piVar2; + } + return (int *)0x0; + case 0x2d: + puVar1 = (undefined4 *)FUN_00402298(0x40); + if (puVar1 != (undefined4 *)0x0) { + piVar2 = FUN_00439a54(puVar1,param_1,param_1[10]); + return piVar2; + } + return (int *)0x0; + case 0x2e: + puVar1 = (undefined4 *)FUN_00402298(0x4c); + if (puVar1 != (undefined4 *)0x0) { + piVar2 = FUN_0043968c(puVar1,param_1,param_1[10]); + return piVar2; + } + return (int *)0x0; + case 0x2f: + puVar1 = (undefined4 *)FUN_00402298(0x44); + if (puVar1 != (undefined4 *)0x0) { + piVar2 = FUN_00439da4(puVar1,param_1,param_1[10]); + return piVar2; + } + return (int *)0x0; + case 0x34: + puVar1 = (undefined4 *)FUN_00402298(0x24); + if (puVar1 != (undefined4 *)0x0) { + piVar2 = FUN_00437a20(puVar1,param_1); + return piVar2; + } + return (int *)0x0; + case 0x35: + piVar2 = (int *)FUN_00402298(0x48); + if (piVar2 != (int *)0x0) { + piVar2 = FUN_0043e44c(piVar2,param_1,param_1[10]); + return piVar2; + } + return (int *)0x0; + case 0x36: + puVar1 = (undefined4 *)FUN_00402298(0x24); + if (puVar1 != (undefined4 *)0x0) { + piVar2 = FUN_00438df4(puVar1,param_1,param_1[10]); + return piVar2; + } + return (int *)0x0; + case 0x3a: + puVar1 = (undefined4 *)FUN_00402298(0x48); + if (puVar1 != (undefined4 *)0x0) { + piVar2 = FUN_0043a248(puVar1,param_1,param_1[10]); + return piVar2; + } + return (int *)0x0; + case 0x3b: + piVar2 = (int *)FUN_00402298(0x4c); + if (piVar2 != (int *)0x0) { + piVar2 = FUN_0043e350(piVar2,param_1,param_1[10]); + return piVar2; + } + return (int *)0x0; + case 0x3c: + piVar2 = (int *)FUN_00402298(0x3c); + if (piVar2 != (int *)0x0) { + piVar2 = FUN_0043e534(piVar2,param_1,param_1[10]); + return piVar2; + } + return (int *)0x0; + case 0x3d: + piVar2 = (int *)FUN_00402298(0x4c); + if (piVar2 != (int *)0x0) { + piVar2 = FUN_0043e630(piVar2,param_1,param_1[10]); + return piVar2; + } + return (int *)0x0; + case 0x3e: + piVar2 = (int *)FUN_00402298(0x3c); + if (piVar2 != (int *)0x0) { + piVar2 = FUN_0043e4b0(piVar2,param_1,param_1[10]); + return piVar2; + } + return (int *)0x0; + } + } + else if (param_2 < 0x5b) { + if (param_2 == 0x5a) { + puVar1 = (undefined4 *)FUN_00402298(0x3c); + if (puVar1 != (undefined4 *)0x0) { + piVar2 = FUN_00438d60(puVar1,param_1,param_1[10]); + return piVar2; + } + return (int *)0x0; + } + switch(param_2) { + case 0x49: + puVar1 = (undefined4 *)FUN_00402298(0x1c); + if (puVar1 != (undefined4 *)0x0) { + piVar2 = FUN_0043db88(puVar1,param_1,param_1[10]); + return piVar2; + } + return (int *)0x0; + case 0x4b: + puVar1 = (undefined4 *)FUN_00402298(0x5c); + if (puVar1 != (undefined4 *)0x0) { + piVar2 = FUN_0043ccec(puVar1,param_1,param_1[10]); + return piVar2; + } + return (int *)0x0; + case 0x4c: + puVar1 = (undefined4 *)FUN_00402298(0x38); + if (puVar1 != (undefined4 *)0x0) { + piVar2 = FUN_00438ff4(puVar1,param_1,param_1[10]); + return piVar2; + } + return (int *)0x0; + case 0x4f: + puVar1 = (undefined4 *)FUN_00402298(0x4c); + if (puVar1 != (undefined4 *)0x0) { + piVar2 = FUN_0043a68c(puVar1,param_1,param_1[10]); + return piVar2; + } + return (int *)0x0; + case 0x50: + piVar2 = (int *)FUN_00402298(0x40); + if (piVar2 != (int *)0x0) { + piVar2 = FUN_0043e5b8(piVar2,param_1,param_1[10]); + return piVar2; + } + return (int *)0x0; + case 0x51: + piVar2 = (int *)FUN_00402298(0x40); + if (piVar2 != (int *)0x0) { + piVar2 = FUN_0043e3d4(piVar2,param_1,param_1[10]); + return piVar2; + } + return (int *)0x0; + case 0x59: + puVar1 = (undefined4 *)FUN_00402298(0x3c); + if (puVar1 != (undefined4 *)0x0) { + piVar2 = FUN_00438808(puVar1,param_1,param_1[10]); + return piVar2; + } + return (int *)0x0; + } + } + else { + switch(param_2) { + case 1000: + puVar1 = (undefined4 *)FUN_00402298(0xb0); + if (puVar1 == (undefined4 *)0x0) { + return (int *)0x0; + } + piVar2 = FUN_00463148(puVar1,param_1,param_1[10]); + return piVar2; + case 0x3e9: + puVar1 = (undefined4 *)FUN_00402298(0xd8); + if (puVar1 == (undefined4 *)0x0) { + return (int *)0x0; + } + piVar2 = FUN_00463710(puVar1,param_1,param_1[10]); + return piVar2; + case 0x3ea: + puVar1 = (undefined4 *)FUN_00402298(0xdc); + if (puVar1 == (undefined4 *)0x0) { + return (int *)0x0; + } + piVar2 = FUN_00463d4c(puVar1,param_1,param_1[10]); + return piVar2; + case 0x3ec: + puVar1 = (undefined4 *)FUN_00402298(0x28); + if (puVar1 == (undefined4 *)0x0) { + return (int *)0x0; + } + piVar2 = FUN_00465c34(puVar1,param_1); + return piVar2; + case 0x3ed: + puVar1 = (undefined4 *)FUN_00402298(0x108); + if (puVar1 == (undefined4 *)0x0) { + return (int *)0x0; + } + piVar2 = FUN_0046487c(puVar1,param_1,param_1[10]); + return piVar2; + case 0x3ee: + piVar2 = (int *)FUN_00402298(0x90); + if (piVar2 == (int *)0x0) { + return (int *)0x0; + } + piVar2 = FUN_00465d08(piVar2,param_1,param_1[10]); + return piVar2; + case 0x3f3: + puVar1 = (undefined4 *)FUN_00402298(0x20); + if (puVar1 == (undefined4 *)0x0) { + return (int *)0x0; + } + piVar2 = FUN_00465964(puVar1,param_1); + return piVar2; + } + } + piVar2 = (int *)FUN_0041639c(); + return piVar2; +} + + + +/* @00466804 file=? name=FUN_00466804 */ + +void __cdecl FUN_00466804(int param_1,int param_2) + +{ + int iVar1; + + iVar1 = *(int *)(param_2 + 4); + if (((iVar1 != 0x34) && (iVar1 != 0x3ec)) && (iVar1 != 0x3f3)) { + FUN_004170b0(param_1,param_2); + return; + } + FUN_004170cc(param_1,param_2); + return; +} + + + +/* @00466844 file=? name=FUN_00466844 */ + +void __cdecl FUN_00466844(int *param_1,int param_2,int param_3) + +{ + if (param_3 < 0x43) { + if (param_3 == 0x42) { + FUN_0043e70c(param_1,param_2); + return; + } + switch(param_3) { + case 0x1c: + FUN_0043e8a4(param_1,param_2); + return; + case 0x1d: + FUN_0043e080(param_1,param_2); + return; + case 0x27: + FUN_0043dda0(param_1,param_2); + return; + case 0x2b: + FUN_00439370(param_1,param_2); + return; + case 0x2c: + FUN_0043f97c(param_1,param_2); + return; + case 0x2d: + FUN_00439b00(param_1,param_2); + return; + case 0x2e: + FUN_00439724(param_1,param_2); + return; + case 0x2f: + FUN_00439e60(param_1,param_2); + return; + case 0x34: + FUN_00437a98(param_1,param_2); + return; + case 0x35: + FUN_00440b8d(param_1,param_2); + return; + case 0x36: + FUN_00438e70(param_1,param_2); + return; + case 0x3a: + FUN_0043a324(param_1,param_2); + return; + case 0x3b: + FUN_0043e3a8(param_1,param_2); + return; + case 0x3c: + FUN_0043e58c(param_1,param_2); + return; + case 0x3d: + FUN_0043e688(param_1,param_2); + return; + case 0x3e: + FUN_0043e508(param_1,param_2); + return; + } + } + else if (param_3 < 0x5b) { + if (param_3 == 0x5a) { + FUN_00438a48(param_1,param_2); + return; + } + switch(param_3) { + case 0x49: + FUN_0043dc50(param_1,param_2); + return; + case 0x4b: + FUN_0043cef8(param_1,param_2); + return; + case 0x4c: + FUN_004390d0(param_1,param_2); + return; + case 0x4f: + FUN_0043a770(param_1,param_2); + return; + case 0x50: + FUN_0043e610(param_1,param_2); + return; + case 0x51: + FUN_0043e42c(param_1,param_2); + return; + case 0x59: + FUN_00438a48(param_1,param_2); + return; + } + } + else { + switch(param_3) { + case 1000: + FUN_0043818c(param_1,param_2); + return; + case 0x3e9: + FUN_00463754(param_1,param_2); + return; + case 0x3ea: + FUN_00463648(param_1,param_2); + return; + case 0x3ec: + FUN_00465c54(param_1,param_2); + return; + case 0x3ed: + FUN_00464918(param_1,param_2); + return; + case 0x3ee: + FUN_00465dd0(param_1,param_2); + return; + case 0x3f3: + FUN_004659b8(param_1,param_2); + return; + } + } + FUN_00416db0(); + return; +} + + + +/* @00466bc4 file=? name=FUN_00466bc4 */ + +void __cdecl FUN_00466bc4(int param_1,int param_2,undefined4 param_3,int *param_4) + +{ + if (*(int *)(*param_4 + 4) != 0) { + if (((param_2 == 0x34) || (param_2 == 0x3ec)) || (param_2 == 0x3f3)) { + FUN_004171f0(param_1,param_3,param_4); + return; + } + FUN_004171b4(param_1,param_3,param_4); + } + return; +} + + + +/* @00466c10 file=? name=FUN_00466c10 */ + +undefined4 * __cdecl FUN_00466c10(undefined4 *param_1) + +{ + FUN_004178cc(param_1,2); + *param_1 = &PTR_FUN_004f4144; + return param_1; +} + + + +/* @00466c30 file=? name=FUN_00466c30 */ + +void __cdecl FUN_00466c30(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f4144; + FUN_0041790c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00466c5c file=? name=FUN_00466c5c */ + +undefined4 FUN_00466c5c(void) + +{ + FUN_00415f1c(); + return 1; +} + + + +/* @00466c70 file=? name=FUN_00466c70 */ + +void __cdecl FUN_00466c70(undefined4 param_1,int param_2,int param_3) + +{ + undefined4 *puVar1; + int iVar2; + bool bVar3; + int *piVar4; + undefined3 extraout_var; + int iVar5; + int local_30 [11]; + + piVar4 = FUN_00404720(param_2,s_AudioResources_004f3ff8,(char *)0x0); + for (puVar1 = (undefined4 *)piVar4[1]; puVar1 != (undefined4 *)0x0; puVar1 = (undefined4 *)*puVar1 + ) { + bVar3 = FUN_00403c20((int)puVar1,s_front_audio_resource_004f4007); + if (CONCAT31(extraout_var,bVar3) == 0) { + FUN_004627d8(param_3 + 0x80,(LPCSTR)puVar1[1]); + } + else { + FUN_004627d8(param_3 + 0xc,(LPCSTR)puVar1[1]); + } + } + if (piVar4 != (int *)0x0) { + (**(code **)*piVar4)(piVar4,3); + } + iVar5 = FUN_00406ff8(*(int *)(DAT_004efc94 + 0x68),s_StaticAudioStream_004f401c,0xb,-1); + iVar2 = *(int *)(iVar5 + 4); + *(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1; + if (iVar2 == 0) { + FUN_00406cd0(iVar5); + } + FUN_004660f4(local_30,iVar5,0); + (**(code **)(local_30[0] + 0x24))(local_30); + *(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + -1; + FUN_0046613c(local_30,2); + return; +} + + + +/* @00466d44 file=? name=FUN_00466d44 */ + +void __cdecl FUN_00466d44(undefined4 param_1,int param_2) + +{ + FUN_004627f4(param_2 + 0xc); + FUN_004627f4(param_2 + 0x80); + return; +} + + + +/* @00466d68 file=? name=FUN_00466d68 */ + +undefined4 __cdecl FUN_00466d68(int param_1) + +{ + undefined4 *puVar1; + undefined4 uVar2; + int local_50 [11]; + int local_24 [8]; + + FUN_00403e84(local_24,s_audio_static_scp_004f402e,1); + FUN_0046611c(local_50); + (**(code **)(local_50[0] + 0x28))(local_50,local_24,param_1); + puVar1 = (undefined4 *)FUN_00406f3c(param_1,s_StaticAudioStream_004f403f,0xb,1,0,local_50,-1); + uVar2 = *puVar1; + FUN_0046613c(local_50,2); + FUN_00403ecc(local_24,2); + return uVar2; +} + + + +/* @00466de4 file=? name=FUN_00466de4 */ + +void __cdecl FUN_00466de4(undefined4 param_1,int param_2,int param_3) + +{ + int iVar1; + int *piVar2; + int iVar3; + int local_30 [11]; + + piVar2 = (int *)FUN_00407064(*(int *)(DAT_004efc94 + 0x68),*(int *)(param_2 + 0x1bc),3); + if (piVar2 != (int *)0x0) { + iVar3 = 0xc; + if (param_3 != 0) { + iVar3 = 0xd; + } + iVar3 = FUN_00407064(*(int *)(DAT_004efc94 + 0x68),*piVar2,iVar3); + if (iVar3 != 0) { + iVar1 = *(int *)(iVar3 + 4); + *(int *)(iVar3 + 4) = *(int *)(iVar3 + 4) + 1; + if (iVar1 == 0) { + FUN_00406cd0(iVar3); + } + iVar1 = piVar2[1]; + piVar2[1] = piVar2[1] + 1; + if (iVar1 == 0) { + FUN_00406cd0((int)piVar2); + } + FUN_004660f4(local_30,iVar3,param_2); + (**(code **)(local_30[0] + 0x24))(local_30); + *(int *)(iVar3 + 4) = *(int *)(iVar3 + 4) + -1; + piVar2[1] = piVar2[1] + -1; + FUN_0046613c(local_30,2); + } + } + return; +} + + + +/* @00466e90 file=? name=FUN_00466e90 */ + +void __cdecl FUN_00466e90(undefined4 param_1,int param_2) + +{ + int *piVar1; + int *this; + int local_18 [5]; + + FUN_00421560(local_18,param_2); + while( true ) { + this = local_18; + piVar1 = (int *)(**(code **)(local_18[0] + 0x28))(); + if (piVar1 == (int *)0x0) break; + (**(code **)(*piVar1 + 0x18))(piVar1,2,0); + (**(code **)(*piVar1 + 0x18))(piVar1,0xb,0); + } + FUN_00417858(this,local_18,1); + FUN_00421584(local_18,2); + return; +} + + + +/* @00466ef8 file=munga_l4/l4audres.cpp name=FUN_00466ef8 */ + +undefined4 __cdecl FUN_00466ef8(int param_1,char *param_2,int param_3) + +{ + uint *puVar1; + int iVar2; + int *piVar3; + undefined4 *puVar4; + undefined4 uVar5; + int iVar6; + int local_124 [11]; + int local_f8 [8]; + uint local_d8 [2]; + char *local_d0; + int local_c8 [11]; + int local_9c [8]; + uint local_7c [2]; + char *local_74; + int local_6c [3]; + char *local_60; + char *local_5c; + uint *local_58; + uint *local_54; + char *local_50; + int *local_4c; + uint *local_48; + uint *local_44; + uint *local_40; + char *local_3c; + uint *local_38; + int *local_34; + uint *local_30; + uint *local_2c; + char *local_28; + int *local_24; + uint *local_20; + uint *local_1c; + uint *local_18; + char *local_14; + uint *local_10; + int *local_c; + char *local_8; + + iVar6 = 0; + local_8 = (char *)0x0; + local_6c[0] = -1; + local_6c[1] = 0xffffffff; + local_6c[2] = 0xffffffff; + iVar2 = FUN_00404088(param_3,s_audio_004f4051,s_external_004f4057,&local_8); + if (iVar2 != 0) { + local_c = (int *)FUN_00406ff8(param_1,local_8,0xd,-1); + if (local_c == (int *)0x0) { + local_14 = local_8; + local_18 = (uint *)FUN_00402298(0x10); + if (local_18 == (uint *)0x0) { + local_10 = (uint *)0x0; + } + else { + local_10 = FUN_00402460(local_18,local_14); + } + local_10[3] = local_10[3] + 1; + local_20 = (uint *)FUN_00402298(0x10); + if (local_20 == (uint *)0x0) { + local_1c = (uint *)0x0; + } + else { + local_1c = FUN_00402460(local_20,s_audio__004f4060); + } + local_1c[3] = local_1c[3] + 1; + FUN_00402624(local_7c,(int)local_1c,(int)local_10); + local_28 = local_74; + local_30 = (uint *)FUN_00402298(0x10); + if (local_30 == (uint *)0x0) { + local_2c = (uint *)0x0; + } + else { + local_2c = FUN_00402460(local_30,local_28); + } + local_2c[3] = local_2c[3] + 1; + FUN_004024d8((int *)local_7c,2); + FUN_00402a4c((int *)&local_24,(int *)&local_10,(int *)&local_2c); + piVar3 = local_24 + 3; + *piVar3 = *piVar3 + -1; + if (*piVar3 == 0) { + FUN_004024d8(local_24,3); + } + puVar1 = local_2c + 3; + *puVar1 = *puVar1 - 1; + if (*puVar1 == 0) { + FUN_004024d8((int *)local_2c,3); + } + FUN_00403e84(local_9c,(char *)local_10[2],1); + FUN_0046611c(local_c8); + (**(code **)(local_c8[0] + 0x28))(local_c8,local_9c,param_1); + local_c = (int *)FUN_00406f3c(param_1,local_8,0xd,1,0,local_c8,-1); + FUN_0046613c(local_c8,2); + FUN_00403ecc(local_9c,2); + puVar1 = local_1c + 3; + *puVar1 = *puVar1 - 1; + if (*puVar1 == 0) { + FUN_004024d8((int *)local_1c,3); + } + puVar1 = local_10 + 3; + *puVar1 = *puVar1 - 1; + if (*puVar1 == 0) { + FUN_004024d8((int *)local_10,3); + } + } + local_6c[0] = *local_c; + iVar6 = 1; + } + iVar2 = FUN_00404088(param_3,s_audio_004f4067,s_internal_004f406d,&local_8); + if (iVar2 != 0) { + local_34 = (int *)FUN_00406ff8(param_1,local_8,0xc,-1); + if (local_34 == (int *)0x0) { + local_3c = local_8; + local_40 = (uint *)FUN_00402298(0x10); + if (local_40 == (uint *)0x0) { + local_38 = (uint *)0x0; + } + else { + local_38 = FUN_00402460(local_40,local_3c); + } + local_38[3] = local_38[3] + 1; + local_48 = (uint *)FUN_00402298(0x10); + if (local_48 == (uint *)0x0) { + local_44 = (uint *)0x0; + } + else { + local_44 = FUN_00402460(local_48,s_audio__004f4076); + } + local_44[3] = local_44[3] + 1; + FUN_00402624(local_d8,(int)local_44,(int)local_38); + local_50 = local_d0; + local_58 = (uint *)FUN_00402298(0x10); + if (local_58 == (uint *)0x0) { + local_54 = (uint *)0x0; + } + else { + local_54 = FUN_00402460(local_58,local_50); + } + local_54[3] = local_54[3] + 1; + FUN_004024d8((int *)local_d8,2); + FUN_00402a4c((int *)&local_4c,(int *)&local_38,(int *)&local_54); + piVar3 = local_4c + 3; + *piVar3 = *piVar3 + -1; + if (*piVar3 == 0) { + FUN_004024d8(local_4c,3); + } + puVar1 = local_54 + 3; + *puVar1 = *puVar1 - 1; + if (*puVar1 == 0) { + FUN_004024d8((int *)local_54,3); + } + FUN_00403e84(local_f8,(char *)local_38[2],1); + FUN_0046611c(local_124); + (**(code **)(local_124[0] + 0x28))(local_124,local_f8,param_1); + local_34 = (int *)FUN_00406f3c(param_1,local_8,0xc,1,0,local_124,-1); + FUN_0046613c(local_124,2); + FUN_00403ecc(local_f8,2); + puVar1 = local_44 + 3; + *puVar1 = *puVar1 - 1; + if (*puVar1 == 0) { + FUN_004024d8((int *)local_44,3); + } + puVar1 = local_38 + 3; + *puVar1 = *puVar1 - 1; + if (*puVar1 == 0) { + FUN_004024d8((int *)local_38,3); + } + } + local_6c[iVar6] = *local_34; + iVar6 = iVar6 + 1; + } + local_5c = (char *)0x0; + iVar2 = FUN_00404088(param_3,s_audio_004f407d,s_model_004f4083,&local_5c); + if (iVar2 != 0) { + piVar3 = (int *)FUN_00406ff8(param_1,local_5c,1,-1); + if (piVar3 == (int *)0x0) { + local_60 = local_5c; + FUN_004dbb24(&DAT_00524e20,s_audio_entity_model____004f4089,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,local_60,(char *)0x0); + FUN_0040385c(s_L4AudioResourceManager__CreateMo_004f40a0, + s_d__tesla_bt_munga_l4_L4AUDRES_CP_004f40e9,0x3e0); + } + local_6c[iVar6] = *piVar3; + iVar6 = iVar6 + 1; + } + if (iVar6 == 0) { + uVar5 = 0xffffffff; + } + else { + puVar4 = (undefined4 *)FUN_00406ec4(param_1,param_2,3,1,0,local_6c,iVar6,-1); + uVar5 = *puVar4; + } + return uVar5; +} + + + +/* @0046739c file=? name=FUN_0046739c */ + +undefined4 * __cdecl FUN_0046739c(undefined4 *param_1,undefined4 param_2,undefined4 param_3) + +{ + FUN_00441f6c(param_1,param_2); + *param_1 = &PTR_FUN_004f49b0; + FUN_00462b38(param_1 + 0x1b); + FUN_00466c10(param_1 + 0x58); + FUN_004683b9(param_1 + 0x5c,0,0); + FUN_00468587(param_1 + 0x62,0); + FUN_004685d2(param_1 + 0x66,0,0); + param_1[0x1a] = param_3; + param_1[0x5b] = 0xffffffff; + return param_1; +} + + + +/* @00467418 file=? name=FUN_00467418 */ + +void __cdecl FUN_00467418(int *param_1,byte param_2) + +{ + int *piVar1; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f49b0; + piVar1 = param_1 + 0x1b; + FUN_00466d44(param_1 + 0x58,(int)piVar1); + FUN_00462c28((int)piVar1); + FUN_004685f5(param_1 + 0x66,2); + FUN_004685a6(param_1 + 0x62,2); + FUN_004683dc(param_1 + 0x5c,2); + FUN_00466c30(param_1 + 0x58,2); + FUN_00462b6c(piVar1,2); + FUN_00441fb4(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004674b0 file=? name=FUN_004674b0 */ + +undefined4 __cdecl FUN_004674b0(int param_1) + +{ + FUN_00442010(param_1); + return 1; +} + + + +/* @004674c4 file=? name=FUN_004674c4 */ + +void FUN_004674c4(int param_1) + +{ + int *piVar1; + int iVar2; + undefined4 *puVar3; + int iVar4; + int aiStack_74 [8]; + float fStack_54; + float fStack_50; + float fStack_4c; + float fStack_48; + float fStack_44; + float fStack_40; + float fStack_3c; + float fStack_38; + float fStack_34; + float fStack_30; + float fStack_2c; + float fStack_28; + float fStack_24; + float fStack_20; + float fStack_1c; + float fStack_18; + float fStack_14; + int *piStack_10; + int *piStack_c; + int *piStack_8; + + FUN_00441ffc((int *)param_1); + iVar2 = *(int *)(param_1 + 0x4c); + puVar3 = (undefined4 *)FUN_00402298(0x10); + if (puVar3 == (undefined4 *)0x0) { + piStack_8 = (int *)0x0; + } + else { + piStack_8 = (int *)FUN_004023f4(puVar3); + } + piStack_8[3] = piStack_8[3] + 1; + if (*(int *)(param_1 + 0x68) == 0) { + FUN_00402a98((int *)&piStack_10,(int *)&piStack_8,s_audio_audio_ini_004f419e); + piVar1 = piStack_10 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(piStack_10,3); + } + } + else { + FUN_00402a98((int *)&piStack_c,(int *)&piStack_8,s_audio_audiomr_ini_004f418c); + piVar1 = piStack_c + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(piStack_c,3); + } + } + FUN_00403e84(aiStack_74,(char *)piStack_8[2],1); + iVar4 = FUN_00404118((int)aiStack_74,s_AudioRenderer_004f41ae,s_clipping_radius_004f41bc, + &fStack_14); + if (iVar4 == 0) { + FUN_0040385c(s_L4AudioRenderer__Initialize___cl_004f41cc, + s_d__tesla_bt_munga_l4_L4AUDRND_CP_004f4206,0xa1); + } + FUN_00436c44(iVar2,fStack_14); + iVar4 = FUN_00404118((int)aiStack_74,s_AudioRenderer_004f4228,s_distance_between_ears_004f4236, + &fStack_18); + if (iVar4 == 0) { + FUN_0040385c(s_L4AudioRenderer__Initialize___di_004f424c, + s_d__tesla_bt_munga_l4_L4AUDRND_CP_004f428c,0xb3); + } + fStack_1c = fStack_18; + *(float *)(iVar2 + 0x18) = fStack_18; + iVar4 = FUN_00404118((int)aiStack_74,s_AudioRenderer_004f42ae,s_amplitude_rolloff_004f42bc, + &fStack_20); + if (iVar4 == 0) { + FUN_0040385c(s_L4AudioRenderer__Initialize___am_004f42ce, + s_d__tesla_bt_munga_l4_L4AUDRND_CP_004f430a,200); + } + iVar4 = FUN_00404118((int)aiStack_74,s_AudioRenderer_004f432c, + s_amplitude_rolloff_distance_scale_004f433a,&fStack_28); + if (iVar4 == 0) { + FUN_0040385c(s_L4AudioRenderer__Initialize___am_004f435b, + s_d__tesla_bt_munga_l4_L4AUDRND_CP_004f43a6,0xd1); + } + iVar4 = FUN_00404118((int)aiStack_74,s_AudioRenderer_004f43c8,s_amplitude_rolloff_knee_004f43d6, + &fStack_24); + if (iVar4 == 0) { + FUN_0040385c(s_L4AudioRenderer__Initialize___am_004f43ed, + s_d__tesla_bt_munga_l4_L4AUDRND_CP_004f442e,0xda); + } + FUN_00436cc0(iVar2,fStack_20,fStack_24,fStack_28); + iVar4 = FUN_00404118((int)aiStack_74,s_AudioRenderer_004f4450,s_high_frequency_rolloff_004f445e, + &fStack_2c); + if (iVar4 == 0) { + FUN_0040385c(s_L4AudioRenderer__Initialize___hi_004f4475, + s_d__tesla_bt_munga_l4_L4AUDRND_CP_004f44b6,0xf4); + } + iVar4 = FUN_00404118((int)aiStack_74,s_AudioRenderer_004f44d8, + s_high_frequency_rolloff_knee_004f44e6,&fStack_30); + if (iVar4 == 0) { + FUN_0040385c(s_L4AudioRenderer__Initialize___hi_004f4502, + s_d__tesla_bt_munga_l4_L4AUDRND_CP_004f4548,0xfd); + } + iVar4 = FUN_00404118((int)aiStack_74,s_AudioRenderer_004f456a, + s_high_frequency_rolloff_distance__004f4578,&fStack_34); + if (iVar4 == 0) { + FUN_0040385c(s_L4AudioRenderer__Initialize___hi_004f459e, + s_d__tesla_bt_munga_l4_L4AUDRND_CP_004f45ee,0x106); + } + FUN_00436cdc(iVar2,fStack_2c,fStack_30,fStack_34); + iVar4 = FUN_00404118((int)aiStack_74,s_AudioRenderer_004f4610,s_doppler_range_004f461e,&fStack_38) + ; + if (iVar4 == 0) { + FUN_0040385c(s_L4AudioRenderer__Initialize___do_004f462c, + s_d__tesla_bt_munga_l4_L4AUDRND_CP_004f4664,0x11f); + } + iVar4 = FUN_00404118((int)aiStack_74,s_AudioRenderer_004f4686,s_speed_of_sound_004f4694,&fStack_3c + ); + if (iVar4 == 0) { + FUN_0040385c(s_L4AudioRenderer__Initialize___sp_004f46a3, + s_d__tesla_bt_munga_l4_L4AUDRND_CP_004f46dc,0x128); + } + FUN_00436cac(iVar2,fStack_38,fStack_3c); + iVar4 = FUN_00404118((int)aiStack_74,s_AudioRenderer_004f46fe,s_compression_exponent_004f470c, + &fStack_40); + if (iVar4 == 0) { + FUN_0040385c(s_L4AudioRenderer__Initialize___co_004f4721, + s_d__tesla_bt_munga_l4_L4AUDRND_CP_004f4760,0x140); + } + iVar4 = FUN_00404118((int)aiStack_74,s_AudioRenderer_004f4782,s_compression_scale_004f4790, + &fStack_44); + if (iVar4 == 0) { + FUN_0040385c(s_L4AudioRenderer__Initialize___co_004f47a2, + s_d__tesla_bt_munga_l4_L4AUDRND_CP_004f47de,0x149); + } + FUN_00436cf8(iVar2,fStack_40,fStack_44); + iVar4 = FUN_00404118((int)aiStack_74,s_AudioRenderer_004f4800,s_itd_difference_004f480e,&fStack_48 + ); + if (iVar4 == 0) { + FUN_0040385c(s_L4AudioRenderer__Initialize___it_004f481d, + s_d__tesla_bt_munga_l4_L4AUDRND_CP_004f4856,0x160); + } + fStack_4c = fStack_48; + *(float *)(iVar2 + 0x48) = fStack_48; + iVar4 = FUN_00404118((int)aiStack_74,s_AudioRenderer_004f4878,s_global_reverb_scale_004f4886, + &fStack_50); + if (iVar4 == 0) { + FUN_0040385c(s_L4AudioRenderer__Initialize___gl_004f489a, + s_d__tesla_bt_munga_l4_L4AUDRND_CP_004f48d8,0x174); + } + fStack_54 = fStack_50; + *(float *)(iVar2 + 0x4c) = fStack_50; + FUN_00462bcc(param_1 + 0x6c); + FUN_00466c70(param_1 + 0x160,(int)aiStack_74,param_1 + 0x6c); + FUN_00403ecc(aiStack_74,2); + piVar1 = piStack_8 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(piStack_8,3); + } + return; +} + + + +/* @004674ca file=munga_l4/l4audrnd.cpp name=FUN_004674ca */ + +void FUN_004674ca(void) + +{ + int *piVar1; + int *piVar2; + int iVar3; + int *piVar4; + undefined4 *puVar5; + undefined4 uVar6; + int iVar7; + int unaff_EBP; + + piVar2 = *(int **)(unaff_EBP + 8); + FUN_00441ffc(piVar2); + iVar3 = piVar2[0x13]; + puVar5 = (undefined4 *)FUN_00402298(0x10); + if (puVar5 == (undefined4 *)0x0) { + uVar6 = 0; + } + else { + uVar6 = FUN_004023f4(puVar5); + } + *(undefined4 *)(unaff_EBP + -4) = uVar6; + piVar1 = (int *)(*(int *)(unaff_EBP + -4) + 0xc); + *piVar1 = *piVar1 + 1; + if (piVar2[0x1a] == 0) { + FUN_00402a98((int *)(unaff_EBP + -0xc),(int *)(unaff_EBP + -4),s_audio_audio_ini_004f419e); + piVar4 = *(int **)(unaff_EBP + -0xc); + piVar1 = piVar4 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(piVar4,3); + } + } + else { + FUN_00402a98((int *)(unaff_EBP + -8),(int *)(unaff_EBP + -4),s_audio_audiomr_ini_004f418c); + piVar4 = *(int **)(unaff_EBP + -8); + piVar1 = piVar4 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(piVar4,3); + } + } + FUN_00403e84((int *)(unaff_EBP + -0x70),*(char **)(*(int *)(unaff_EBP + -4) + 8),1); + iVar7 = FUN_00404118(unaff_EBP + -0x70,s_AudioRenderer_004f41ae,s_clipping_radius_004f41bc, + (float *)(unaff_EBP + -0x10)); + if (iVar7 == 0) { + FUN_0040385c(s_L4AudioRenderer__Initialize___cl_004f41cc, + s_d__tesla_bt_munga_l4_L4AUDRND_CP_004f4206,0xa1); + } + FUN_00436c44(iVar3,*(undefined4 *)(unaff_EBP + -0x10)); + iVar7 = FUN_00404118(unaff_EBP + -0x70,s_AudioRenderer_004f4228,s_distance_between_ears_004f4236, + (float *)(unaff_EBP + -0x14)); + if (iVar7 == 0) { + FUN_0040385c(s_L4AudioRenderer__Initialize___di_004f424c, + s_d__tesla_bt_munga_l4_L4AUDRND_CP_004f428c,0xb3); + } + *(undefined4 *)(unaff_EBP + -0x18) = *(undefined4 *)(unaff_EBP + -0x14); + *(undefined4 *)(iVar3 + 0x18) = *(undefined4 *)(unaff_EBP + -0x18); + iVar7 = FUN_00404118(unaff_EBP + -0x70,s_AudioRenderer_004f42ae,s_amplitude_rolloff_004f42bc, + (float *)(unaff_EBP + -0x1c)); + if (iVar7 == 0) { + FUN_0040385c(s_L4AudioRenderer__Initialize___am_004f42ce, + s_d__tesla_bt_munga_l4_L4AUDRND_CP_004f430a,200); + } + iVar7 = FUN_00404118(unaff_EBP + -0x70,s_AudioRenderer_004f432c, + s_amplitude_rolloff_distance_scale_004f433a,(float *)(unaff_EBP + -0x24)); + if (iVar7 == 0) { + FUN_0040385c(s_L4AudioRenderer__Initialize___am_004f435b, + s_d__tesla_bt_munga_l4_L4AUDRND_CP_004f43a6,0xd1); + } + iVar7 = FUN_00404118(unaff_EBP + -0x70,s_AudioRenderer_004f43c8,s_amplitude_rolloff_knee_004f43d6, + (float *)(unaff_EBP + -0x20)); + if (iVar7 == 0) { + FUN_0040385c(s_L4AudioRenderer__Initialize___am_004f43ed, + s_d__tesla_bt_munga_l4_L4AUDRND_CP_004f442e,0xda); + } + FUN_00436cc0(iVar3,*(undefined4 *)(unaff_EBP + -0x1c),*(undefined4 *)(unaff_EBP + -0x20), + *(undefined4 *)(unaff_EBP + -0x24)); + iVar7 = FUN_00404118(unaff_EBP + -0x70,s_AudioRenderer_004f4450,s_high_frequency_rolloff_004f445e, + (float *)(unaff_EBP + -0x28)); + if (iVar7 == 0) { + FUN_0040385c(s_L4AudioRenderer__Initialize___hi_004f4475, + s_d__tesla_bt_munga_l4_L4AUDRND_CP_004f44b6,0xf4); + } + iVar7 = FUN_00404118(unaff_EBP + -0x70,s_AudioRenderer_004f44d8, + s_high_frequency_rolloff_knee_004f44e6,(float *)(unaff_EBP + -0x2c)); + if (iVar7 == 0) { + FUN_0040385c(s_L4AudioRenderer__Initialize___hi_004f4502, + s_d__tesla_bt_munga_l4_L4AUDRND_CP_004f4548,0xfd); + } + iVar7 = FUN_00404118(unaff_EBP + -0x70,s_AudioRenderer_004f456a, + s_high_frequency_rolloff_distance__004f4578,(float *)(unaff_EBP + -0x30)); + if (iVar7 == 0) { + FUN_0040385c(s_L4AudioRenderer__Initialize___hi_004f459e, + s_d__tesla_bt_munga_l4_L4AUDRND_CP_004f45ee,0x106); + } + FUN_00436cdc(iVar3,*(undefined4 *)(unaff_EBP + -0x28),*(undefined4 *)(unaff_EBP + -0x2c), + *(undefined4 *)(unaff_EBP + -0x30)); + iVar7 = FUN_00404118(unaff_EBP + -0x70,s_AudioRenderer_004f4610,s_doppler_range_004f461e, + (float *)(unaff_EBP + -0x34)); + if (iVar7 == 0) { + FUN_0040385c(s_L4AudioRenderer__Initialize___do_004f462c, + s_d__tesla_bt_munga_l4_L4AUDRND_CP_004f4664,0x11f); + } + iVar7 = FUN_00404118(unaff_EBP + -0x70,s_AudioRenderer_004f4686,s_speed_of_sound_004f4694, + (float *)(unaff_EBP + -0x38)); + if (iVar7 == 0) { + FUN_0040385c(s_L4AudioRenderer__Initialize___sp_004f46a3, + s_d__tesla_bt_munga_l4_L4AUDRND_CP_004f46dc,0x128); + } + FUN_00436cac(iVar3,*(undefined4 *)(unaff_EBP + -0x34),*(undefined4 *)(unaff_EBP + -0x38)); + iVar7 = FUN_00404118(unaff_EBP + -0x70,s_AudioRenderer_004f46fe,s_compression_exponent_004f470c, + (float *)(unaff_EBP + -0x3c)); + if (iVar7 == 0) { + FUN_0040385c(s_L4AudioRenderer__Initialize___co_004f4721, + s_d__tesla_bt_munga_l4_L4AUDRND_CP_004f4760,0x140); + } + iVar7 = FUN_00404118(unaff_EBP + -0x70,s_AudioRenderer_004f4782,s_compression_scale_004f4790, + (float *)(unaff_EBP + -0x40)); + if (iVar7 == 0) { + FUN_0040385c(s_L4AudioRenderer__Initialize___co_004f47a2, + s_d__tesla_bt_munga_l4_L4AUDRND_CP_004f47de,0x149); + } + FUN_00436cf8(iVar3,*(undefined4 *)(unaff_EBP + -0x3c),*(undefined4 *)(unaff_EBP + -0x40)); + iVar7 = FUN_00404118(unaff_EBP + -0x70,s_AudioRenderer_004f4800,s_itd_difference_004f480e, + (float *)(unaff_EBP + -0x44)); + if (iVar7 == 0) { + FUN_0040385c(s_L4AudioRenderer__Initialize___it_004f481d, + s_d__tesla_bt_munga_l4_L4AUDRND_CP_004f4856,0x160); + } + *(undefined4 *)(unaff_EBP + -0x48) = *(undefined4 *)(unaff_EBP + -0x44); + *(undefined4 *)(iVar3 + 0x48) = *(undefined4 *)(unaff_EBP + -0x48); + iVar7 = FUN_00404118(unaff_EBP + -0x70,s_AudioRenderer_004f4878,s_global_reverb_scale_004f4886, + (float *)(unaff_EBP + -0x4c)); + if (iVar7 == 0) { + FUN_0040385c(s_L4AudioRenderer__Initialize___gl_004f489a, + s_d__tesla_bt_munga_l4_L4AUDRND_CP_004f48d8,0x174); + } + *(undefined4 *)(unaff_EBP + -0x50) = *(undefined4 *)(unaff_EBP + -0x4c); + *(undefined4 *)(iVar3 + 0x4c) = *(undefined4 *)(unaff_EBP + -0x50); + FUN_00462bcc((int)(piVar2 + 0x1b)); + FUN_00466c70(piVar2 + 0x58,unaff_EBP + -0x70,(int)(piVar2 + 0x1b)); + FUN_00403ecc((int *)(unaff_EBP + -0x70),2); + piVar1 = *(int **)(unaff_EBP + -4); + piVar2 = piVar1 + 3; + *piVar2 = *piVar2 + -1; + if (*piVar2 == 0) { + FUN_004024d8(piVar1,3); + } + return; +} + + + +/* @00467908 file=? name=FUN_00467908 */ + +void __cdecl FUN_00467908(int param_1,int *param_2) + +{ + undefined4 uVar1; + int iVar2; + + uVar1 = FUN_00417ab4(param_1 + 0x40); + iVar2 = (**(code **)(*param_2 + 0x28))(param_2,uVar1); + FUN_00466de4(param_1 + 0x160,(int)param_2,iVar2); + return; +} + + + +/* @00467940 file=? name=FUN_00467940 */ + +void __cdecl FUN_00467940(int param_1,int param_2) + +{ + FUN_00466e90(param_1 + 0x160,param_2); + return; +} + + + +/* @0046795c file=? name=FUN_0046795c */ + +void FUN_0046795c(void) + +{ + return; +} + + + +/* @00467964 file=? name=FUN_00467964 */ + +void FUN_00467964(void) + +{ + return; +} + + + +/* @0046796c file=? name=FUN_0046796c */ + +void FUN_0046796c(void) + +{ + return; +} + + + +/* @00467974 file=? name=FUN_00467974 */ + +void FUN_00467974(void) + +{ + return; +} + + + +/* @0046797c file=? name=FUN_0046797c */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_0046797c(int param_1,int *param_2) + +{ + int *piVar1; + int iVar2; + float10 fVar3; + int local_38 [8]; + int local_18; + float local_14; + float local_10; + float local_c; + int local_8; + + FUN_00463580(local_38); + iVar2 = FUN_00468190(param_1,param_2,local_38); + if (iVar2 == 0) { + if (*(int *)(*(int *)(param_2[10] + 0xc) + 0x10) == 1) { + FUN_0043ba04((int)param_2,1); + (**(code **)(*(int *)(param_1 + 0x188) + 4))(param_1 + 0x188,param_2); + } + } + else { + local_8 = *(int *)(param_1 + 0x4c); + piVar1 = (int *)param_2[9]; + if (piVar1[0x18] <= *(int *)(local_8 + 4)) { + piVar1[0x18] = *(int *)(local_8 + 4) + piVar1[0x17]; + (**(code **)(*piVar1 + 0x1c))(piVar1,local_8); + } + FUN_004636cc((int)param_2,local_38); + (**(code **)(*param_2 + 0x44))(param_2); + FUN_0043ba04((int)param_2,2); + fVar3 = (float10)(**(code **)(*param_2 + 0x1c))(param_2); + local_c = (float)fVar3; + local_14 = (_DAT_00467a98 - (float)param_2[0x1b]) - local_c; + local_10 = local_14; + (**(code **)(*(int *)(param_1 + 0x170) + 8))(param_1 + 0x170,param_2,&local_14); + local_18 = param_2[0x1c]; + if (local_18 != 0) { + (**(code **)(*(int *)(param_1 + 0x198) + 8))(param_1 + 0x198,param_2,&local_18); + } + } + return; +} + + + +/* @00467a9c file=? name=FUN_00467a9c */ + +void __cdecl FUN_00467a9c(int param_1,int *param_2) + +{ + int local_14 [4]; + + if ((param_2[0xb] == 1) || (param_2[0xb] == 3)) { + FUN_0043ba04((int)param_2,0); + FUN_00415f30(local_14,(int)param_2,0xffffffff); + FUN_004161fc((int)local_14,param_1 + 0x188); + FUN_00415f90(local_14,2); + } + else { + FUN_00468098(param_1,param_2); + } + return; +} + + + +/* @00467b04 file=? name=FUN_00467b04 */ + +void __cdecl FUN_00467b04(int param_1) + +{ + FUN_00442054(param_1); + FUN_00467b34(param_1); + FUN_00467c0c(param_1); + FUN_00467e9c(param_1); + return; +} + + + +/* @00467b34 file=? name=FUN_00467b34 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_00467b34(int param_1) + +{ + float fVar1; + int iVar2; + int *piVar3; + int iVar4; + float10 fVar5; + int local_30 [5]; + float local_1c; + float local_18; + float local_14; + float local_10; + float local_c; + float local_8; + + local_8 = 1.0; + local_c = 0.0; + iVar4 = 3; + FUN_004658db(local_30,param_1 + 0x198); + local_10 = *(float *)(*(int *)(param_1 + 0x4c) + 0x44); + local_14 = *(float *)(*(int *)(param_1 + 0x4c) + 0x40); + iVar2 = (**(code **)(local_30[0] + 0x30))(); + fVar1 = local_c; + if (iVar2 != 0) { + iVar4 = *(int *)(iVar2 + 0x70); + } + while (local_c = fVar1, piVar3 = (int *)(**(code **)(local_30[0] + 0x28))(), piVar3 != (int *)0x0) + { + iVar2 = piVar3[0x1c]; + if (iVar4 != iVar2) { + fVar5 = FUN_004dce94((double)(local_10 * local_c),SUB84((double)local_14,0), + (uint)((ulonglong)(double)local_14 >> 0x20)); + local_8 = (float)((float10)_DAT_00467c08 - fVar5); + iVar4 = iVar2; + } + local_18 = local_8; + piVar3[0x1d] = (int)local_8; + fVar5 = FUN_0043ba64(piVar3); + local_1c = (float)fVar5; + fVar1 = local_1c; + if (local_1c < local_c) { + fVar1 = local_c; + } + } + FUN_00465938(local_30,2); + return; +} + + + +/* @00467c0c file=? name=FUN_00467c0c */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_00467c0c(int param_1) + +{ + bool bVar1; + undefined3 extraout_var; + int *piVar2; + float10 fVar3; + int aiStack_70 [3]; + int aiStack_64 [4]; + int iStack_54; + int aiStack_50 [4]; + float fStack_40; + float fStack_3c; + float fStack_38; + float fStack_34; + float fStack_30; + float fStack_2c; + float fStack_28; + int iStack_24; + float fStack_20; + float fStack_1c; + int iStack_18; + int iStack_14; + int iStack_10; + int iStack_c; + int iStack_8; + + FUN_00468587(aiStack_50,0); + FUN_004657c9(aiStack_64,param_1 + 0x170); +LAB_00467deb: + do { + while( true ) { + while( true ) { + while( true ) { + piVar2 = (int *)(**(code **)(aiStack_64[0] + 0x30))(); + if (piVar2 == (int *)0x0) { + FUN_00465852(aiStack_70,(int)aiStack_50); + while( true ) { + piVar2 = (int *)(**(code **)(aiStack_70[0] + 0x28))(); + if (piVar2 == (int *)0x0) break; + fVar3 = (float10)(**(code **)(*piVar2 + 0x1c))(); + fStack_38 = (float)fVar3; + fStack_40 = (_DAT_00467e94 - (float)piVar2[0x1b]) - fStack_38; + fStack_3c = fStack_40; + (**(code **)(*(int *)(param_1 + 0x170) + 8))(param_1 + 0x170,piVar2); + } + FUN_004658af(aiStack_70,2); + FUN_00465826(aiStack_64,2); + FUN_004685a6(aiStack_50,2); + return; + } + if (piVar2[0x27] <= *(int *)(*(int *)(param_1 + 0x4c) + 4)) break; + (**(code **)(aiStack_64[0] + 0xc))(); + } + bVar1 = FUN_00438348(piVar2[9],*(int *)(param_1 + 0x4c)); + if (CONCAT31(extraout_var,bVar1) == 0) break; + if (*(int *)(*(int *)(piVar2[10] + 0xc) + 0x10) == 0) { + FUN_00468098(param_1,piVar2); + } + else { + FUN_00468108(param_1,piVar2); + } + } + if (piVar2[0x14] == 0) { + bVar1 = false; + } + else { + FUN_004373e8(&iStack_8); + bVar1 = piVar2[0x17] < iStack_8; + } + if (!bVar1) break; + FUN_00468098(param_1,piVar2); + } + if (*(int *)(*(int *)(piVar2[10] + 0xc) + 0x10) == 1) { + iStack_c = FUN_00437404(); + FUN_004373e8(&iStack_10); + iStack_18 = iStack_10 - piVar2[0x16]; + iStack_14 = iStack_18; + if (iStack_c < iStack_18) { + (**(code **)(*piVar2 + 0x4c))(); + FUN_0043ba04((int)piVar2,3); + (**(code **)(*piVar2 + 0x50))(); + FUN_0043ba04((int)piVar2,2); + (**(code **)(aiStack_64[0] + 0xc))(); + goto LAB_00467deb; + } + } + (**(code **)(*piVar2 + 0x14))(); + fStack_1c = *(float *)(iStack_54 + 0x1c); + fVar3 = (float10)(**(code **)(*piVar2 + 0x1c))(); + fStack_20 = (float)fVar3; + iStack_24 = piVar2[0x1b]; + fStack_34 = (_DAT_00467e94 - (float)iStack_24) - fStack_20; + fStack_30 = fStack_1c; + fStack_2c = fStack_34; + fStack_28 = fStack_34; + fVar3 = FUN_004dcd00((double)(fStack_34 - fStack_1c)); + if (fVar3 <= (float10)_DAT_00467e98) { + (**(code **)(aiStack_64[0] + 0xc))(); + } + else { + (**(code **)(aiStack_64[0] + 0x48))(); + (**(code **)(aiStack_50[0] + 4))(aiStack_50); + } + } while( true ); +} + + + +/* @00467c12 file=? name=FUN_00467c12 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_00467c12(void) + +{ + int iVar1; + bool bVar2; + undefined3 extraout_var; + undefined4 uVar3; + int *piVar4; + int unaff_EBP; + float10 fVar5; + + iVar1 = *(int *)(unaff_EBP + 8); + FUN_00468587((undefined4 *)(unaff_EBP + -0x4c),0); + FUN_004657c9((undefined4 *)(unaff_EBP + -0x60),iVar1 + 0x170); +LAB_00467deb: + do { + while( true ) { + while( true ) { + while( true ) { + piVar4 = (int *)(**(code **)(*(int *)(unaff_EBP + -0x60) + 0x30))(); + if (piVar4 == (int *)0x0) { + FUN_00465852((undefined4 *)(unaff_EBP + -0x6c),unaff_EBP + -0x4c); + while( true ) { + piVar4 = (int *)(**(code **)(*(int *)(unaff_EBP + -0x6c) + 0x28))(); + if (piVar4 == (int *)0x0) break; + fVar5 = (float10)(**(code **)(*piVar4 + 0x1c))(); + *(float *)(unaff_EBP + -0x34) = (float)fVar5; + *(int *)(unaff_EBP + -0x70) = piVar4[0x1b]; + *(float *)(unaff_EBP + -0x38) = + (_DAT_00467e94 - (float)*(int *)(unaff_EBP + -0x70)) - + *(float *)(unaff_EBP + -0x34); + *(undefined4 *)(unaff_EBP + -0x3c) = *(undefined4 *)(unaff_EBP + -0x38); + (**(code **)(*(int *)(iVar1 + 0x170) + 8))(iVar1 + 0x170,piVar4); + } + FUN_004658af((int *)(unaff_EBP + -0x6c),2); + FUN_00465826((int *)(unaff_EBP + -0x60),2); + FUN_004685a6((int *)(unaff_EBP + -0x4c),2); + return; + } + if (piVar4[0x27] <= *(int *)(*(int *)(iVar1 + 0x4c) + 4)) break; + (**(code **)(*(int *)(unaff_EBP + -0x60) + 0xc))(); + } + bVar2 = FUN_00438348(piVar4[9],*(int *)(iVar1 + 0x4c)); + if (CONCAT31(extraout_var,bVar2) == 0) break; + if (*(int *)(*(int *)(piVar4[10] + 0xc) + 0x10) == 0) { + FUN_00468098(iVar1,piVar4); + } + else { + FUN_00468108(iVar1,piVar4); + } + } + if (piVar4[0x14] == 0) { + bVar2 = false; + } + else { + FUN_004373e8((undefined4 *)(unaff_EBP + -4)); + bVar2 = piVar4[0x17] < *(int *)(unaff_EBP + -4); + } + if (!bVar2) break; + FUN_00468098(iVar1,piVar4); + } + if (*(int *)(*(int *)(piVar4[10] + 0xc) + 0x10) == 1) { + uVar3 = FUN_00437404(); + *(undefined4 *)(unaff_EBP + -8) = uVar3; + FUN_004373e8((undefined4 *)(unaff_EBP + -0xc)); + *(int *)(unaff_EBP + -0x10) = *(int *)(unaff_EBP + -0xc) - piVar4[0x16]; + *(undefined4 *)(unaff_EBP + -0x14) = *(undefined4 *)(unaff_EBP + -0x10); + if (*(int *)(unaff_EBP + -8) < *(int *)(unaff_EBP + -0x14)) { + (**(code **)(*piVar4 + 0x4c))(); + FUN_0043ba04((int)piVar4,3); + (**(code **)(*piVar4 + 0x50))(); + FUN_0043ba04((int)piVar4,2); + (**(code **)(*(int *)(unaff_EBP + -0x60) + 0xc))(); + goto LAB_00467deb; + } + } + (**(code **)(*piVar4 + 0x14))(); + *(undefined4 *)(unaff_EBP + -0x18) = *(undefined4 *)(*(int *)(unaff_EBP + -0x50) + 0x1c); + fVar5 = (float10)(**(code **)(*piVar4 + 0x1c))(); + *(float *)(unaff_EBP + -0x1c) = (float)fVar5; + *(int *)(unaff_EBP + -0x20) = piVar4[0x1b]; + *(float *)(unaff_EBP + -0x24) = + (_DAT_00467e94 - (float)*(int *)(unaff_EBP + -0x20)) - *(float *)(unaff_EBP + -0x1c); + *(undefined4 *)(unaff_EBP + -0x28) = *(undefined4 *)(unaff_EBP + -0x24); + *(undefined4 *)(unaff_EBP + -0x2c) = *(undefined4 *)(unaff_EBP + -0x18); + *(undefined4 *)(unaff_EBP + -0x30) = *(undefined4 *)(unaff_EBP + -0x28); + fVar5 = FUN_004dcd00((double)(*(float *)(unaff_EBP + -0x30) - *(float *)(unaff_EBP + -0x2c))); + if (fVar5 <= (float10)_DAT_00467e98) { + (**(code **)(*(int *)(unaff_EBP + -0x60) + 0xc))(); + } + else { + (**(code **)(*(int *)(unaff_EBP + -0x60) + 0x48))(); + (**(code **)(*(int *)(unaff_EBP + -0x4c) + 4))(unaff_EBP + -0x4c); + } + } while( true ); +} + + + +/* @00467e9c file=? name=FUN_00467e9c */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_00467e9c(int param_1) + +{ + int *piVar1; + bool bVar2; + undefined3 extraout_var; + int *piVar3; + int iVar4; + float10 fVar5; + int local_84 [4]; + int local_74 [8]; + int local_54 [4]; + int local_44; + int local_40 [3]; + int local_34 [6]; + int local_1c; + int local_18; + undefined4 local_14; + float local_10; + float local_c; + float local_8; + + FUN_004683b9(local_34,0,0); + FUN_00465852(local_40,param_1 + 0x188); + while( true ) { + piVar3 = (int *)(**(code **)(local_40[0] + 0x28))(local_40); + if (piVar3 == (int *)0x0) break; + if (piVar3[0x28] <= *(int *)(*(int *)(param_1 + 0x4c) + 4)) { + bVar2 = FUN_00438348(piVar3[9],*(int *)(param_1 + 0x4c)); + if (CONCAT31(extraout_var,bVar2) == 0) { + fVar5 = (float10)(**(code **)(*piVar3 + 0x1c))(piVar3); + local_8 = (float)fVar5; + local_10 = (_DAT_00468094 - (float)piVar3[0x1b]) - local_8; + local_c = local_10; + (**(code **)(local_34[0] + 8))(local_34,piVar3,&local_10); + } + } + } + FUN_004657c9(local_54,(int)local_34); + while( true ) { + piVar3 = (int *)(**(code **)(local_54[0] + 0x30))(local_54); + if (piVar3 == (int *)0x0) break; + FUN_00463580(local_74); + iVar4 = FUN_00468190(param_1,piVar3,local_74); + if (iVar4 == 0) break; + FUN_00415f30(local_84,(int)piVar3,0xffffffff); + FUN_004161fc((int)local_84,param_1 + 0x188); + local_14 = *(undefined4 *)(local_44 + 0x1c); + (**(code **)(local_54[0] + 0x48))(local_54); + local_18 = *(int *)(param_1 + 0x4c); + piVar1 = (int *)piVar3[9]; + if (piVar1[0x18] <= *(int *)(local_18 + 4)) { + piVar1[0x18] = *(int *)(local_18 + 4) + piVar1[0x17]; + (**(code **)(*piVar1 + 0x1c))(piVar1,local_18); + } + FUN_004636cc((int)piVar3,local_74); + (**(code **)(*piVar3 + 0x50))(piVar3); + FUN_0043ba04((int)piVar3,2); + (**(code **)(*(int *)(param_1 + 0x170) + 8))(param_1 + 0x170,piVar3,&local_14); + if (piVar3[0x1c] != 0) { + local_1c = piVar3[0x1c]; + (**(code **)(*(int *)(param_1 + 0x198) + 8))(param_1 + 0x198,piVar3,&local_1c); + } + FUN_00415f90(local_84,2); + } + FUN_00465826(local_54,2); + FUN_004658af(local_40,2); + FUN_004683dc(local_34,2); + return; +} + + + +/* @00468098 file=? name=FUN_00468098 */ + +void __cdecl FUN_00468098(int param_1,int *param_2) + +{ + int local_14 [4]; + + (**(code **)(*param_2 + 0x48))(param_2); + FUN_0043ba04((int)param_2,0); + FUN_004636fc((int)param_2); + FUN_00415f30(local_14,(int)param_2,0xffffffff); + FUN_004161fc((int)local_14,param_1 + 0x170); + FUN_004161fc((int)local_14,param_1 + 0x198); + FUN_00415f90(local_14,2); + return; +} + + + +/* @00468108 file=? name=FUN_00468108 */ + +void __cdecl FUN_00468108(int param_1,int *param_2) + +{ + int local_14 [4]; + + (**(code **)(*param_2 + 0x4c))(param_2); + FUN_0043ba04((int)param_2,3); + FUN_004636fc((int)param_2); + FUN_00415f30(local_14,(int)param_2,0xffffffff); + FUN_004161fc((int)local_14,param_1 + 0x170); + FUN_004161fc((int)local_14,param_1 + 0x198); + (**(code **)(*(int *)(param_1 + 0x188) + 4))(param_1 + 0x188,param_2); + FUN_00415f90(local_14,2); + return; +} + + + +/* @00468190 file=? name=FUN_00468190 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +int __cdecl FUN_00468190(int param_1,int *param_2,int *param_3) + +{ + bool bVar1; + undefined3 extraout_var; + int iVar2; + int *piVar3; + undefined3 extraout_var_00; + undefined3 extraout_var_01; + int *piVar4; + float10 fVar5; + int local_2c [4]; + int local_1c; + float local_18; + float local_14; + float local_10; + float local_c; + float local_8; + + bVar1 = FUN_00438348(param_2[9],*(int *)(param_1 + 0x4c)); + if (CONCAT31(extraout_var,bVar1) == 0) { + piVar3 = (int *)FUN_004636ec((int)param_2); + piVar4 = param_3; + for (iVar2 = 8; iVar2 != 0; iVar2 = iVar2 + -1) { + *piVar4 = *piVar3; + piVar3 = piVar3 + 1; + piVar4 = piVar4 + 1; + } + bVar1 = FUN_004682f4(param_1,*(int *)(*(int *)(param_2[10] + 0xc) + 0xc),param_3); + iVar2 = CONCAT31(extraout_var_00,bVar1); + if (iVar2 == 0) { + FUN_004657c9(local_2c,param_1 + 0x170); + local_8 = 0.0; + (**(code **)(local_2c[0] + 8))(local_2c); + piVar3 = (int *)(**(code **)(local_2c[0] + 0x30))(local_2c); + fVar5 = (float10)(**(code **)(*param_2 + 0x1c))(param_2); + local_c = (float)fVar5; + local_14 = (_DAT_004682f0 - (float)param_2[0x1b]) - local_c; + local_10 = local_14; + local_8 = local_14; + while (((iVar2 == 0 && (piVar3 != (int *)0x0)) && + (local_18 = *(float *)(local_1c + 0x1c), local_8 < local_18))) { + if (*(int *)(*(int *)(piVar3[10] + 0xc) + 0x10) == 0) { + FUN_00468098(param_1,piVar3); + } + else { + FUN_00468108(param_1,piVar3); + } + bVar1 = FUN_004682f4(param_1,*(int *)(*(int *)(param_2[10] + 0xc) + 0xc),param_3); + iVar2 = CONCAT31(extraout_var_01,bVar1); + (**(code **)(local_2c[0] + 8))(local_2c); + piVar3 = (int *)(**(code **)(local_2c[0] + 0x30))(local_2c); + } + FUN_00465826(local_2c,2); + } + } + else { + iVar2 = 0; + } + return iVar2; +} + + + +/* @004682f4 file=? name=FUN_004682f4 */ + +bool __cdecl FUN_004682f4(int param_1,int param_2,int *param_3) + +{ + bool bVar1; + int iVar2; + + bVar1 = false; + if (param_3[4] != 0) { + iVar2 = FUN_00462a1c(param_1 + 0x78,param_2); + if (iVar2 == 0) goto LAB_0046839b; + *param_3 = iVar2; + } + if (param_3[5] != 0) { + iVar2 = FUN_00462a1c(param_1 + 0x78,param_2); + if (iVar2 == 0) goto LAB_0046839b; + param_3[1] = iVar2; + } + if (param_3[6] != 0) { + iVar2 = FUN_00462a1c(param_1 + 0xec,param_2); + if (iVar2 == 0) goto LAB_0046839b; + param_3[2] = iVar2; + } + if (param_3[7] != 0) { + iVar2 = FUN_00462a1c(param_1 + 0xec,param_2); + if (iVar2 == 0) goto LAB_0046839b; + param_3[3] = iVar2; + } + bVar1 = true; +LAB_0046839b: + if (!bVar1) { + FUN_004635e0(param_3); + } + return bVar1; +} + + + +/* @004683b9 file=? name=FUN_004683b9 */ + +undefined4 * __cdecl FUN_004683b9(undefined4 *param_1,undefined4 param_2,undefined4 param_3) + +{ + FUN_004186ac(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004f4994; + return param_1; +} + + + +/* @004683dc file=? name=FUN_004683dc */ + +void __cdecl FUN_004683dc(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f4994; + FUN_004186dc(param_1,0); + if ((param_2 & 1) != 0) { + FUN_0046853c(param_1); + } + } + return; +} + + + +/* @00468408 file=? name=FUN_00468408 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl FUN_00468408(undefined4 param_1,int param_2,int param_3) + +{ + undefined4 uVar1; + float10 fVar2; + + fVar2 = FUN_004dcd00((double)(*(float *)(param_2 + 0x1c) - *(float *)(param_3 + 0x1c))); + if ((float10)_DAT_00468478 < fVar2) { + if (*(float *)(param_2 + 0x1c) <= *(float *)(param_3 + 0x1c)) { + uVar1 = 0xffffffff; + } + else { + uVar1 = 1; + } + } + else { + uVar1 = 0; + } + return uVar1; +} + + + +/* @0046853c file=? name=FUN_0046853c */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_0046853c(undefined4 *param_1) + +{ + FUN_00402f98((int)DAT_004f4960,param_1); + _DAT_004f4964 = _DAT_004f4964 + -1; + if (_DAT_004f4964 == 0) { + if (DAT_004f4960 != (int *)0x0) { + FUN_00402c28(DAT_004f4960,0); + FUN_004022d0(DAT_004f4960); + } + DAT_004f4960 = (int *)0x0; + } + return; +} + + + +/* @00468587 file=? name=FUN_00468587 */ + +undefined4 * __cdecl FUN_00468587(undefined4 *param_1,undefined4 param_2) + +{ + FUN_00417be0(param_1,param_2); + *param_1 = &PTR_FUN_004f498c; + return param_1; +} + + + +/* @004685a6 file=? name=FUN_004685a6 */ + +void __cdecl FUN_004685a6(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f498c; + FUN_00417c0c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004685d2 file=? name=FUN_004685d2 */ + +undefined4 * __cdecl FUN_004685d2(undefined4 *param_1,undefined4 param_2,undefined4 param_3) + +{ + FUN_004186ac(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004f4970; + return param_1; +} + + + +/* @004685f5 file=? name=FUN_004685f5 */ + +void __cdecl FUN_004685f5(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f4970; + FUN_004186dc(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004686cc(param_1); + } + } + return; +} + + + +/* @00468621 file=? name=FUN_00468621 */ + +undefined4 __cdecl FUN_00468621(undefined4 param_1,int param_2,int param_3) + +{ + undefined4 uVar1; + + if (*(int *)(param_3 + 0x1c) == *(int *)(param_2 + 0x1c)) { + uVar1 = 0; + } + else { + uVar1 = 1; + if (*(int *)(param_2 + 0x1c) <= *(int *)(param_3 + 0x1c)) { + uVar1 = 0xffffffff; + } + } + return uVar1; +} + + + +/* @00468650 file=? name=FUN_00468650 */ + +undefined4 __cdecl FUN_00468650(undefined4 param_1,int *param_2,int param_3) + +{ + undefined4 uVar1; + + if (*(int *)(param_3 + 0x1c) == *param_2) { + uVar1 = 0; + } + else { + uVar1 = 1; + if (*param_2 <= *(int *)(param_3 + 0x1c)) { + uVar1 = 0xffffffff; + } + } + return uVar1; +} + + + +/* @0046867c file=? name=FUN_0046867c */ + +void FUN_0046867c(void) + +{ + int iVar1; + undefined4 *puVar2; + + iVar1 = DAT_004f496c; + DAT_004f496c = DAT_004f496c + 1; + puVar2 = DAT_004f4968; + if ((iVar1 == 0) && (puVar2 = (undefined4 *)FUN_00402298(0x28), puVar2 != (undefined4 *)0x0)) { + FUN_00402b98(puVar2,0x18,100,100,s_VChainOf_004f4915); + } + DAT_004f4968 = puVar2; + FUN_00402f74((int)DAT_004f4968); + return; +} + + + +/* @004686cc file=? name=FUN_004686cc */ + +void __cdecl FUN_004686cc(undefined4 *param_1) + +{ + FUN_00402f98((int)DAT_004f4968,param_1); + DAT_004f496c = DAT_004f496c + -1; + if (DAT_004f496c == 0) { + if (DAT_004f4968 != (int *)0x0) { + FUN_00402c28(DAT_004f4968,0); + FUN_004022d0(DAT_004f4968); + } + DAT_004f4968 = (int *)0x0; + } + return; +} + + + +/* @00468717 file=? name=FUN_00468717 */ + +undefined4 * __cdecl FUN_00468717(undefined4 param_1,int param_2,undefined4 *param_3) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00424ac5(); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_00424a6e(puVar1,param_1,param_2,param_3); + } + return puVar1; +} + + + +/* @00468747 file=? name=FUN_00468747 */ + +undefined4 * __cdecl FUN_00468747(undefined4 param_1,int param_2,undefined4 *param_3) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_004426e5(); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_00442684(puVar1,param_1,param_2,param_3); + } + return puVar1; +} + + + +/* @00468778 file=? name=FUN_00468778 */ + +undefined4 * __cdecl FUN_00468778(undefined4 *param_1) + +{ + FUN_00442990(param_1); + *param_1 = &PTR_FUN_004f4a10; + FUN_00468812(param_1 + 0x16); + return param_1; +} + + + +/* @0046879c file=? name=FUN_0046879c */ + +void __cdecl FUN_0046879c(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f4a10; + FUN_0046882b(param_1 + 0x16,2); + FUN_004429c0(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004687d8 file=? name=FUN_004687d8 */ + +void __cdecl FUN_004687d8(int param_1) + +{ + FUN_004689f4(param_1 + 0x58); + FUN_00442a14(param_1); + return; +} + + + +/* @004687f4 file=? name=FUN_004687f4 */ + +void FUN_004687f4(void) + +{ + FUN_00442a3c(); + return; +} + + + +/* @00468803 file=? name=FUN_00468803 */ + +void FUN_00468803(void) + +{ + FUN_004428b0(); + return; +} + + + +/* @00468812 file=? name=FUN_00468812 */ + +undefined4 * __cdecl FUN_00468812(undefined4 *param_1) + +{ + FUN_00442848(param_1); + *param_1 = &PTR_FUN_004f4a04; + return param_1; +} + + + +/* @0046882b file=? name=FUN_0046882b */ + +void __cdecl FUN_0046882b(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f4a04; + FUN_004689f4((int)param_1); + FUN_00442874(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0046885e file=? name=FUN_0046885e */ + +int __cdecl FUN_0046885e(int param_1,char *param_2,undefined4 param_3) + +{ + int iVar1; + undefined4 *puVar2; + + iVar1 = FUN_004428bc(param_1,param_2); + if (iVar1 == 0) { + iVar1 = FUN_0046eb64(); + if (iVar1 == 0) { + iVar1 = 0; + } + else { + puVar2 = (undefined4 *)FUN_00402298(0x3c); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_00468a42(puVar2,param_2,iVar1,param_3); + } + (**(code **)(*(int *)(param_1 + 0xc) + 4))(param_1 + 0xc,puVar2); + } + } + else { + *(int *)(iVar1 + 0x30) = *(int *)(iVar1 + 0x30) + 1; + iVar1 = *(int *)(iVar1 + 0x38); + } + return iVar1; +} + + + +/* @004688ce file=? name=FUN_004688ce */ + +int * __cdecl FUN_004688ce(int param_1,int param_2,undefined4 param_3) + +{ + int iVar1; + int *piVar2; + undefined4 *puVar3; + + iVar1 = FUN_0044292c(param_1,param_2); + if (iVar1 == 0) { + piVar2 = FUN_0046eb6c(param_2); + if (piVar2 == (int *)0x0) { + piVar2 = (int *)0x0; + } + else { + puVar3 = (undefined4 *)FUN_00402298(0x3c); + if (puVar3 == (undefined4 *)0x0) { + puVar3 = (undefined4 *)0x0; + } + else { + puVar3 = FUN_00468a6b(puVar3,param_2,piVar2,param_3); + } + (**(code **)(*(int *)(param_1 + 0xc) + 4))(param_1 + 0xc,puVar3); + } + } + else { + *(int *)(iVar1 + 0x30) = *(int *)(iVar1 + 0x30) + 1; + piVar2 = *(int **)(iVar1 + 0x38); + } + return piVar2; +} + + + +/* @0046893e file=? name=FUN_0046893e */ + +undefined4 __cdecl FUN_0046893e(int param_1,char *param_2) + +{ + int iVar1; + + iVar1 = FUN_004428bc(param_1,param_2); + if (iVar1 != 0) { + *(int *)(iVar1 + 0x30) = *(int *)(iVar1 + 0x30) + 1; + return *(undefined4 *)(iVar1 + 0x38); + } + return 0; +} + + + +/* @00468961 file=? name=FUN_00468961 */ + +undefined4 __cdecl FUN_00468961(int param_1,int param_2) + +{ + int iVar1; + + iVar1 = FUN_0044292c(param_1,param_2); + if (iVar1 != 0) { + *(int *)(iVar1 + 0x30) = *(int *)(iVar1 + 0x30) + 1; + return *(undefined4 *)(iVar1 + 0x38); + } + return 0; +} + + + +/* @00468984 file=? name=FUN_00468984 */ + +void __cdecl FUN_00468984(int param_1,char *param_2) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_004428bc(param_1,param_2); + if ((((puVar1 != (undefined4 *)0x0) && (puVar1[0xc] = puVar1[0xc] + -1, (int)puVar1[0xc] < 1)) && + (puVar1[0xd] == 0)) && (puVar1 != (undefined4 *)0x0)) { + (**(code **)*puVar1)(puVar1,3); + } + return; +} + + + +/* @004689bc file=? name=FUN_004689bc */ + +void __cdecl FUN_004689bc(int param_1,int param_2) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_0044292c(param_1,param_2); + if ((((puVar1 != (undefined4 *)0x0) && (puVar1[0xc] = puVar1[0xc] + -1, (int)puVar1[0xc] < 1)) && + (puVar1[0xd] == 0)) && (puVar1 != (undefined4 *)0x0)) { + (**(code **)*puVar1)(puVar1,3); + } + return; +} + + + +/* @004689f4 file=? name=FUN_004689f4 */ + +void __cdecl FUN_004689f4(int param_1) + +{ + undefined4 *puVar1; + int local_10 [3]; + + FUN_0044316d(local_10,param_1 + 0xc); + while( true ) { + puVar1 = (undefined4 *)(**(code **)(local_10[0] + 0x28))(local_10); + if (puVar1 == (undefined4 *)0x0) break; + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + } + FUN_004431ab(local_10,2); + return; +} + + + +/* @00468a42 file=? name=FUN_00468a42 */ + +undefined4 * __cdecl +FUN_00468a42(undefined4 *param_1,char *param_2,undefined4 param_3,undefined4 param_4) + +{ + FUN_00442780(param_1,param_2,param_4); + *param_1 = &PTR_FUN_004f4a00; + param_1[0xe] = param_3; + return param_1; +} + + + +/* @00468a6b file=? name=FUN_00468a6b */ + +undefined4 * __cdecl +FUN_00468a6b(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) + +{ + FUN_004427dc(param_1,param_2,param_4); + *param_1 = &PTR_FUN_004f4a00; + param_1[0xe] = param_3; + return param_1; +} + + + +/* @00468a94 file=? name=FUN_00468a94 */ + +void __cdecl FUN_00468a94(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f4a00; + FUN_0046ecdc((int *)param_1[0xe],3); + param_1[0xe] = 0; + FUN_00442810(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00468ad3 file=? name=FUN_00468ad3 */ + +void FUN_00468ad3(void) + +{ + FUN_0044283c(); + return; +} + + + +/* @00468ae4 file=? name=FUN_00468ae4 */ + +undefined4 * __cdecl FUN_00468ae4(undefined4 *param_1,int param_2,int param_3) + +{ + int *piVar1; + undefined4 uVar2; + undefined2 *puVar3; + int iVar4; + + FUN_0044a078(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004f4b00; + piVar1 = (int *)FUN_00402298(0xc); + if (piVar1 == (int *)0x0) { + piVar1 = (int *)0x0; + } + else { + piVar1 = FUN_00449c88(piVar1,param_2,param_3); + } + param_1[0xb] = piVar1; + param_1[6] = 1; + param_1[8] = param_3; + param_1[7] = param_2; + param_1[10] = param_1[8] + -1; + param_1[9] = param_1[7] + -1; + uVar2 = FUN_004022b0(param_1[8] * 2); + param_1[0xc] = uVar2; + param_1[5] = 1; + puVar3 = (undefined2 *)param_1[0xc]; + for (iVar4 = param_1[8]; 0 < iVar4; iVar4 = iVar4 + -1) { + *puVar3 = 0; + puVar3 = puVar3 + 1; + } + return param_1; +} + + + +/* @00468b7c file=? name=FUN_00468b7c */ + +undefined4 * __cdecl FUN_00468b7c(undefined4 *param_1,int *param_2) + +{ + int iVar1; + undefined2 *puVar2; + + FUN_0044a078(param_1,*param_2,param_2[1]); + *param_1 = &PTR_FUN_004f4b00; + param_1[0xb] = param_2; + param_1[6] = 0; + param_1[8] = *(undefined4 *)(param_1[0xb] + 4); + param_1[7] = *(undefined4 *)param_1[0xb]; + param_1[10] = param_1[8] + -1; + param_1[9] = param_1[7] + -1; + iVar1 = FUN_004022b0(param_1[8] * 2); + param_1[0xc] = iVar1; + if (iVar1 == 0) { + param_1[5] = 0; + } + else { + param_1[5] = 1; + puVar2 = (undefined2 *)param_1[0xc]; + for (iVar1 = param_1[8]; 0 < iVar1; iVar1 = iVar1 + -1) { + *puVar2 = 0; + puVar2 = puVar2 + 1; + } + } + return param_1; +} + + + +/* @00468c04 file=? name=FUN_00468c04 */ + +void __cdecl FUN_00468c04(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f4b00; + if ((int *)param_1[0xc] != (int *)0x0) { + FUN_004022d0((int *)param_1[0xc]); + param_1[0xc] = 0; + } + if (param_1[6] != 0) { + if ((int *)param_1[0xb] != (int *)0x0) { + FUN_00449d0c((int *)param_1[0xb],3); + param_1[0xb] = 0; + } + param_1[6] = 0; + } + FUN_0044a0ac(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00468c68 file=? name=FUN_00468c68 */ + +undefined4 FUN_00468c68(void) + +{ + return 1; +} + + + +/* @00468c74 file=? name=FUN_00468c74 */ + +void __cdecl FUN_00468c74(int param_1,char *param_2) + +{ + char cVar1; + int *piVar2; + uint uVar3; + uint uVar4; + char *pcVar5; + char *pcVar6; + undefined8 uVar7; + char local_54 [80]; + + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_Video8BitBuffered__004f4a18,(char *)0x0); + uVar3 = 0xffffffff; + do { + pcVar5 = param_2; + if (uVar3 == 0) break; + uVar3 = uVar3 - 1; + pcVar5 = param_2 + 1; + cVar1 = *param_2; + param_2 = pcVar5; + } while (cVar1 != '\0'); + uVar3 = ~uVar3; + pcVar5 = pcVar5 + -uVar3; + pcVar6 = local_54; + for (uVar4 = uVar3 >> 2; uVar4 != 0; uVar4 = uVar4 - 1) { + *(undefined4 *)pcVar6 = *(undefined4 *)pcVar5; + pcVar5 = pcVar5 + 4; + pcVar6 = pcVar6 + 4; + } + for (uVar3 = uVar3 & 3; uVar3 != 0; uVar3 = uVar3 - 1) { + *pcVar6 = *pcVar5; + pcVar5 = pcVar5 + 1; + pcVar6 = pcVar6 + 1; + } + FUN_004d49b8(local_54,&DAT_004f4a2c); + uVar3 = *(uint *)(param_1 + 0x1c); + FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_width___004f4a30,(char *)0x0); + piVar2 = FUN_004db78c(&DAT_00524e20,uVar3); + FUN_004dbb24(piVar2,&DAT_004f4a3d,(char *)0x0); + uVar3 = *(uint *)(param_1 + 0x20); + FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_height___004f4a3f,(char *)0x0); + piVar2 = FUN_004db78c(&DAT_00524e20,uVar3); + FUN_004dbb24(piVar2,&DAT_004f4a4c,(char *)0x0); + uVar3 = *(uint *)(param_1 + 0x24); + FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_maximumX___004f4a4e,(char *)0x0); + piVar2 = FUN_004db78c(&DAT_00524e20,uVar3); + FUN_004dbb24(piVar2,&DAT_004f4a5b,(char *)0x0); + uVar3 = *(uint *)(param_1 + 0x28); + FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_maximumY___004f4a5d,(char *)0x0); + piVar2 = FUN_004db78c(&DAT_00524e20,uVar3); + FUN_004dbb24(piVar2,&DAT_004f4a6a,(char *)0x0); + uVar3 = *(uint *)(param_1 + 0x30); + FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_changedLine__004f4a6c,(char *)0x0); + uVar7 = FUN_004dbd4c(&DAT_00524e20,uVar3); + FUN_004dbb24((int *)uVar7,&DAT_004f4a79,(char *)0x0); + FUN_00449d50(*(uint **)(param_1 + 0x2c),local_54); + FUN_0044a0cc(param_1,local_54); + return; +} + + + +/* @00468e78 file=? name=FUN_00468e78 */ + +void __cdecl FUN_00468e78(int param_1,int param_2,int param_3,int *param_4) + +{ + *param_4 = *(int *)(*(int *)(param_1 + 0x2c) + 8) + param_2 + param_3 * *(int *)(param_1 + 0x1c); + return; +} + + + +/* @00468e9c file=? name=FUN_00468e9c */ + +void __cdecl FUN_00468e9c(int param_1,int param_2,int param_3) + +{ + short *psVar1; + int iVar2; + + iVar2 = param_3; + if (param_3 < param_2) { + iVar2 = param_2; + param_2 = param_3; + } + psVar1 = (short *)(*(int *)(param_1 + 0x30) + param_2 * 2); + *psVar1 = *psVar1 + 1; + if (iVar2 < *(int *)(param_1 + 0x28)) { + psVar1 = (short *)(*(int *)(param_1 + 0x30) + 2 + iVar2 * 2); + *psVar1 = *psVar1 + -1; + } + return; +} + + + +/* @00468ecc file=? name=FUN_00468ecc */ + +void __cdecl +FUN_00468ecc(int param_1,byte param_2,undefined4 param_3,int param_4,int param_5,int param_6) + +{ + int iVar1; + byte *local_8; + + if (*(int *)(param_1 + 0x14) != 0) { + iVar1 = *(int *)(param_1 + 0x28) - param_6; + FUN_00468e9c(param_1,iVar1,iVar1); + FUN_00468e78(param_1,param_5,iVar1,(int *)&local_8); + if (param_4 == 0) { + *local_8 = param_2; + } + else if (param_4 == 1) { + *local_8 = *local_8 & param_2; + } + else if (param_4 == 2) { + *local_8 = *local_8 | param_2; + } + else if (param_4 == 3) { + *local_8 = *local_8 ^ param_2; + } + } + return; +} + + + +/* @00468f40 file=? name=FUN_00468f40 */ + +void __cdecl +FUN_00468f40(int *param_1,undefined4 param_2,undefined4 param_3,int param_4,int param_5,int param_6, + int param_7,int param_8,int param_9) + +{ + int iVar1; + int iVar2; + int iVar3; + bool bVar4; + byte *local_10; + int local_c; + uint local_8; + + if (param_1[5] != 0) { + if ((param_7 == param_5) && (param_6 == param_8)) { + if (param_9 != 0) { + (**(code **)(*param_1 + 0x14))(param_1,param_2,0,param_4,param_5,param_6); + } + } + else { + iVar2 = param_1[10] - param_6; + iVar1 = param_1[10] - param_8; + FUN_00468e9c((int)param_1,iVar2,iVar1); + iVar3 = param_7 - param_5; + bVar4 = iVar3 < 0; + if (bVar4) { + iVar3 = -iVar3; + } + local_8 = (uint)bVar4; + local_c = iVar1 - iVar2; + if (local_c < 0) { + local_8 = local_8 | 2; + local_c = -local_c; + } + if (local_c < iVar3) { + local_8 = local_8 | 4; + } + FUN_00468e78((int)param_1,param_5,iVar2,(int *)&local_10); + iVar1 = 0x400; + switch(local_8) { + case 0: + iVar2 = local_c; + if (param_9 == 0) { + iVar2 = local_c + -1; + } + for (; 0 < iVar2; iVar2 = iVar2 + -1) { + if (param_4 == 0) { + *local_10 = (byte)param_2; + } + else if (param_4 == 1) { + *local_10 = *local_10 & (byte)param_2; + } + else if (param_4 == 2) { + *local_10 = *local_10 | (byte)param_2; + } + else if (param_4 == 3) { + *local_10 = *local_10 ^ (byte)param_2; + } + local_10 = local_10 + param_1[7]; + iVar1 = iVar1 + (iVar3 << 0xb) / local_c; + if (0x800 < iVar1) { + iVar1 = iVar1 + -0x800; + local_10 = local_10 + 1; + } + } + break; + case 1: + iVar2 = local_c; + if (param_9 == 0) { + iVar2 = local_c + -1; + } + for (; 0 < iVar2; iVar2 = iVar2 + -1) { + if (param_4 == 0) { + *local_10 = (byte)param_2; + } + else if (param_4 == 1) { + *local_10 = *local_10 & (byte)param_2; + } + else if (param_4 == 2) { + *local_10 = *local_10 | (byte)param_2; + } + else if (param_4 == 3) { + *local_10 = *local_10 ^ (byte)param_2; + } + local_10 = local_10 + param_1[7]; + iVar1 = iVar1 + (iVar3 << 0xb) / local_c; + if (0x800 < iVar1) { + iVar1 = iVar1 + -0x800; + local_10 = local_10 + -1; + } + } + break; + case 2: + iVar2 = local_c; + if (param_9 == 0) { + iVar2 = local_c + -1; + } + for (; 0 < iVar2; iVar2 = iVar2 + -1) { + if (param_4 == 0) { + *local_10 = (byte)param_2; + } + else if (param_4 == 1) { + *local_10 = *local_10 & (byte)param_2; + } + else if (param_4 == 2) { + *local_10 = *local_10 | (byte)param_2; + } + else if (param_4 == 3) { + *local_10 = *local_10 ^ (byte)param_2; + } + local_10 = local_10 + -param_1[7]; + iVar1 = iVar1 + (iVar3 << 0xb) / local_c; + if (0x800 < iVar1) { + iVar1 = iVar1 + -0x800; + local_10 = local_10 + 1; + } + } + break; + case 3: + iVar2 = local_c; + if (param_9 == 0) { + iVar2 = local_c + -1; + } + for (; 0 < iVar2; iVar2 = iVar2 + -1) { + if (param_4 == 0) { + *local_10 = (byte)param_2; + } + else if (param_4 == 1) { + *local_10 = *local_10 & (byte)param_2; + } + else if (param_4 == 2) { + *local_10 = *local_10 | (byte)param_2; + } + else if (param_4 == 3) { + *local_10 = *local_10 ^ (byte)param_2; + } + local_10 = local_10 + -param_1[7]; + iVar1 = iVar1 + (iVar3 << 0xb) / local_c; + if (0x800 < iVar1) { + iVar1 = iVar1 + -0x800; + local_10 = local_10 + -1; + } + } + break; + case 4: + iVar2 = iVar3; + if (param_9 == 0) { + iVar2 = iVar3 + -1; + } + for (; 0 < iVar2; iVar2 = iVar2 + -1) { + if (param_4 == 0) { + *local_10 = (byte)param_2; + } + else if (param_4 == 1) { + *local_10 = *local_10 & (byte)param_2; + } + else if (param_4 == 2) { + *local_10 = *local_10 | (byte)param_2; + } + else if (param_4 == 3) { + *local_10 = *local_10 ^ (byte)param_2; + } + local_10 = local_10 + 1; + iVar1 = iVar1 + (local_c << 0xb) / iVar3; + if (0x800 < iVar1) { + iVar1 = iVar1 + -0x800; + local_10 = local_10 + param_1[7]; + } + } + break; + case 5: + iVar2 = iVar3; + if (param_9 == 0) { + iVar2 = iVar3 + -1; + } + for (; 0 < iVar2; iVar2 = iVar2 + -1) { + if (param_4 == 0) { + *local_10 = (byte)param_2; + } + else if (param_4 == 1) { + *local_10 = *local_10 & (byte)param_2; + } + else if (param_4 == 2) { + *local_10 = *local_10 | (byte)param_2; + } + else if (param_4 == 3) { + *local_10 = *local_10 ^ (byte)param_2; + } + local_10 = local_10 + -1; + iVar1 = iVar1 + (local_c << 0xb) / iVar3; + if (0x800 < iVar1) { + iVar1 = iVar1 + -0x800; + local_10 = local_10 + param_1[7]; + } + } + break; + case 6: + iVar2 = iVar3; + if (param_9 == 0) { + iVar2 = iVar3 + -1; + } + for (; 0 < iVar2; iVar2 = iVar2 + -1) { + if (param_4 == 0) { + *local_10 = (byte)param_2; + } + else if (param_4 == 1) { + *local_10 = *local_10 & (byte)param_2; + } + else if (param_4 == 2) { + *local_10 = *local_10 | (byte)param_2; + } + else if (param_4 == 3) { + *local_10 = *local_10 ^ (byte)param_2; + } + local_10 = local_10 + 1; + iVar1 = iVar1 + (local_c << 0xb) / iVar3; + if (0x800 < iVar1) { + iVar1 = iVar1 + -0x800; + local_10 = local_10 + -param_1[7]; + } + } + break; + case 7: + iVar2 = iVar3; + if (param_9 == 0) { + iVar2 = iVar3 + -1; + } + for (; 0 < iVar2; iVar2 = iVar2 + -1) { + if (param_4 == 0) { + *local_10 = (byte)param_2; + } + else if (param_4 == 1) { + *local_10 = *local_10 & (byte)param_2; + } + else if (param_4 == 2) { + *local_10 = *local_10 | (byte)param_2; + } + else if (param_4 == 3) { + *local_10 = *local_10 ^ (byte)param_2; + } + local_10 = local_10 + -1; + iVar1 = iVar1 + (local_c << 0xb) / iVar3; + if (0x800 < iVar1) { + iVar1 = iVar1 + -0x800; + local_10 = local_10 + -param_1[7]; + } + } + } + } + } + return; +} + + + +/* @004693e0 file=? name=FUN_004693e0 */ + +void __cdecl +FUN_004693e0(int param_1,byte param_2,undefined4 param_3,int param_4,int param_5,int param_6, + int param_7,int param_8) + +{ + int iVar1; + int iVar2; + int iVar3; + int iVar4; + byte *local_8; + + iVar3 = param_5; + if (*(int *)(param_1 + 0x14) != 0) { + param_8 = *(int *)(param_1 + 0x28) - param_8; + iVar2 = *(int *)(param_1 + 0x28) - param_6; + if (param_7 < param_5) { + param_5 = param_7; + param_7 = iVar3; + } + iVar3 = iVar2; + if (param_8 < iVar2) { + iVar3 = param_8; + param_8 = iVar2; + } + FUN_00468e9c(param_1,iVar3,param_8); + FUN_00468e78(param_1,param_5,iVar3,(int *)&local_8); + iVar4 = (param_7 - param_5) + 1; + iVar3 = (param_8 - iVar3) + 1; + iVar2 = *(int *)(param_1 + 0x1c) - iVar4; + if (param_4 == 0) { + for (; iVar1 = iVar4, 0 < iVar3; iVar3 = iVar3 + -1) { + for (; 0 < iVar1; iVar1 = iVar1 + -1) { + *local_8 = param_2; + local_8 = local_8 + 1; + } + local_8 = local_8 + iVar2; + } + } + else if (param_4 == 1) { + for (; iVar1 = iVar4, 0 < iVar3; iVar3 = iVar3 + -1) { + for (; 0 < iVar1; iVar1 = iVar1 + -1) { + *local_8 = *local_8 & param_2; + local_8 = local_8 + 1; + } + local_8 = local_8 + iVar2; + } + } + else if (param_4 == 2) { + for (; iVar1 = iVar4, 0 < iVar3; iVar3 = iVar3 + -1) { + for (; 0 < iVar1; iVar1 = iVar1 + -1) { + *local_8 = *local_8 | param_2; + local_8 = local_8 + 1; + } + local_8 = local_8 + iVar2; + } + } + else if (param_4 == 3) { + for (; iVar1 = iVar4, 0 < iVar3; iVar3 = iVar3 + -1) { + for (; 0 < iVar1; iVar1 = iVar1 + -1) { + *local_8 = *local_8 ^ param_2; + local_8 = local_8 + 1; + } + local_8 = local_8 + iVar2; + } + } + } + return; +} + + + +/* @00469518 file=? name=FUN_00469518 */ + +undefined4 __cdecl FUN_00469518(int param_1) + +{ + return *(undefined4 *)(param_1 + 0x14); +} + + + +/* @00469528 file=? name=FUN_00469528 */ + +void __cdecl +FUN_00469528(int param_1,byte param_2,undefined4 param_3,int param_4,int param_5,int param_6, + int param_7,int param_8,int param_9,int param_10,int param_11,int param_12) + +{ + byte *pbVar1; + uint uVar2; + int iVar3; + int iVar4; + int iVar5; + ushort *puVar6; + byte *local_18; + ushort *local_14; + uint local_10; + uint local_c; + int local_8; + + if (*(int *)(param_1 + 0x14) != 0) { + iVar3 = *(int *)(param_1 + 0x28) - param_7; + iVar4 = *(int *)(param_8 + 0x10) + -1; + iVar5 = iVar4 - param_10; + local_8 = (param_11 - param_9) + 1; + iVar4 = (iVar5 - (iVar4 - param_12)) + 1; + local_14 = (ushort *) + (*(int *)(param_8 + 0x18) + (param_9 >> 4) * 2 + *(int *)(param_8 + 0x14) * iVar5 * 2 + ); + local_10 = 1 << (0xf - ((byte)param_9 & 0xf) & 0x1f); + FUN_00468e78(param_1,param_6,iVar3,(int *)&local_18); + if (param_5 == 0x5a) { + FUN_00468e9c(param_1,iVar3,iVar3 + local_8); + for (; 0 < iVar4; iVar4 = iVar4 + -1) { + iVar3 = *(int *)(param_8 + 0x14); + pbVar1 = local_18 + 1; + local_c = (uint)*local_14; + puVar6 = local_14 + 1; + uVar2 = local_10; + for (iVar5 = local_8; 0 < iVar5; iVar5 = iVar5 + -1) { + if (uVar2 == 0) { + local_c = (uint)*puVar6; + puVar6 = puVar6 + 1; + uVar2 = 0x8000; + } + if ((local_c & uVar2) != 0) { + if (param_4 == 0) { + *local_18 = param_2; + } + else if (param_4 == 1) { + *local_18 = *local_18 & param_2; + } + else if (param_4 == 2) { + *local_18 = *local_18 | param_2; + } + else if (param_4 == 3) { + *local_18 = *local_18 ^ param_2; + } + } + uVar2 = (int)uVar2 >> 1; + local_18 = local_18 + *(int *)(param_1 + 0x1c); + } + local_18 = pbVar1; + local_14 = local_14 + -iVar3; + } + } + else if (param_5 == 0xb4) { + FUN_00468e9c(param_1,iVar3,iVar3 + iVar4); + for (; 0 < iVar4; iVar4 = iVar4 + -1) { + iVar3 = *(int *)(param_8 + 0x14); + pbVar1 = local_18 + *(int *)(param_1 + 0x1c); + local_c = (uint)*local_14; + puVar6 = local_14 + 1; + uVar2 = local_10; + for (iVar5 = local_8; 0 < iVar5; iVar5 = iVar5 + -1) { + if (uVar2 == 0) { + local_c = (uint)*puVar6; + puVar6 = puVar6 + 1; + uVar2 = 0x8000; + } + if ((local_c & uVar2) != 0) { + if (param_4 == 0) { + *local_18 = param_2; + } + else if (param_4 == 1) { + *local_18 = *local_18 & param_2; + } + else if (param_4 == 2) { + *local_18 = *local_18 | param_2; + } + else if (param_4 == 3) { + *local_18 = *local_18 ^ param_2; + } + } + local_18 = local_18 + -1; + uVar2 = (int)uVar2 >> 1; + } + local_18 = pbVar1; + local_14 = local_14 + -iVar3; + } + } + else if (param_5 == 0x10e) { + FUN_00468e9c(param_1,iVar3 - (local_8 + -1),iVar3); + for (; 0 < iVar4; iVar4 = iVar4 + -1) { + iVar3 = *(int *)(param_8 + 0x14); + pbVar1 = local_18 + -1; + local_c = (uint)*local_14; + puVar6 = local_14 + 1; + uVar2 = local_10; + for (iVar5 = local_8; 0 < iVar5; iVar5 = iVar5 + -1) { + if (uVar2 == 0) { + local_c = (uint)*puVar6; + puVar6 = puVar6 + 1; + uVar2 = 0x8000; + } + if ((local_c & uVar2) != 0) { + if (param_4 == 0) { + *local_18 = param_2; + } + else if (param_4 == 1) { + *local_18 = *local_18 & param_2; + } + else if (param_4 == 2) { + *local_18 = *local_18 | param_2; + } + else if (param_4 == 3) { + *local_18 = *local_18 ^ param_2; + } + } + uVar2 = (int)uVar2 >> 1; + local_18 = local_18 + -*(int *)(param_1 + 0x1c); + } + local_18 = pbVar1; + local_14 = local_14 + -iVar3; + } + } + else { + FUN_00468e9c(param_1,(iVar3 - iVar4) + 1,iVar3); + for (; 0 < iVar4; iVar4 = iVar4 + -1) { + iVar3 = *(int *)(param_8 + 0x14); + pbVar1 = local_18 + -*(int *)(param_1 + 0x1c); + local_c = (uint)*local_14; + puVar6 = local_14 + 1; + uVar2 = local_10; + for (iVar5 = local_8; 0 < iVar5; iVar5 = iVar5 + -1) { + if (uVar2 == 0) { + local_c = (uint)*puVar6; + puVar6 = puVar6 + 1; + uVar2 = 0x8000; + } + if ((local_c & uVar2) != 0) { + if (param_4 == 0) { + *local_18 = param_2; + } + else if (param_4 == 1) { + *local_18 = *local_18 & param_2; + } + else if (param_4 == 2) { + *local_18 = *local_18 | param_2; + } + else if (param_4 == 3) { + *local_18 = *local_18 ^ param_2; + } + } + local_18 = local_18 + 1; + uVar2 = (int)uVar2 >> 1; + } + local_18 = pbVar1; + local_14 = local_14 + -iVar3; + } + } + } + return; +} + + + +/* @004698a4 file=? name=FUN_004698a4 */ + +void __cdecl +FUN_004698a4(int param_1,byte param_2,byte param_3,undefined4 param_4,int param_5,int param_6, + int param_7,int param_8,int param_9,int param_10,int param_11,int param_12,int param_13) + +{ + byte *pbVar1; + uint uVar2; + byte bVar3; + int iVar4; + int iVar5; + int iVar6; + byte *local_1c; + ushort *local_18; + ushort *local_14; + uint local_10; + uint local_c; + int local_8; + + if (*(int *)(param_1 + 0x14) != 0) { + iVar4 = *(int *)(param_1 + 0x28) - param_8; + iVar5 = *(int *)(param_9 + 0x10) + -1; + iVar6 = iVar5 - param_11; + local_8 = (param_12 - param_10) + 1; + iVar5 = (iVar6 - (iVar5 - param_13)) + 1; + local_14 = (ushort *) + (*(int *)(param_9 + 0x18) + (param_10 >> 4) * 2 + + *(int *)(param_9 + 0x14) * iVar6 * 2); + local_10 = 1 << (0xf - ((byte)param_10 & 0xf) & 0x1f); + FUN_00468e78(param_1,param_7,iVar4,(int *)&local_1c); + if (param_6 == 0x5a) { + FUN_00468e9c(param_1,iVar4,iVar4 + local_8); + for (; 0 < iVar5; iVar5 = iVar5 + -1) { + iVar4 = *(int *)(param_9 + 0x14); + pbVar1 = local_1c + 1; + local_c = (uint)*local_14; + local_18 = local_14 + 1; + uVar2 = local_10; + for (iVar6 = local_8; 0 < iVar6; iVar6 = iVar6 + -1) { + if (uVar2 == 0) { + uVar2 = 0x8000; + local_c = (uint)*local_18; + local_18 = local_18 + 1; + } + bVar3 = param_3; + if ((local_c & uVar2) != 0) { + bVar3 = param_2; + } + if (param_5 == 0) { + *local_1c = bVar3; + } + else if (param_5 == 1) { + *local_1c = *local_1c & bVar3; + } + else if (param_5 == 2) { + *local_1c = *local_1c | bVar3; + } + else if (param_5 == 3) { + *local_1c = *local_1c ^ bVar3; + } + uVar2 = (int)uVar2 >> 1; + local_1c = local_1c + *(int *)(param_1 + 0x1c); + } + local_1c = pbVar1; + local_14 = local_14 + -iVar4; + } + } + else if (param_6 == 0xb4) { + FUN_00468e9c(param_1,iVar4,iVar4 + iVar5); + for (; 0 < iVar5; iVar5 = iVar5 + -1) { + iVar4 = *(int *)(param_9 + 0x14); + pbVar1 = local_1c + *(int *)(param_1 + 0x1c); + local_c = (uint)*local_14; + local_18 = local_14 + 1; + uVar2 = local_10; + for (iVar6 = local_8; 0 < iVar6; iVar6 = iVar6 + -1) { + if (uVar2 == 0) { + uVar2 = 0x8000; + local_c = (uint)*local_18; + local_18 = local_18 + 1; + } + bVar3 = param_3; + if ((local_c & uVar2) != 0) { + bVar3 = param_2; + } + if (param_5 == 0) { + *local_1c = bVar3; + } + else if (param_5 == 1) { + *local_1c = *local_1c & bVar3; + } + else if (param_5 == 2) { + *local_1c = *local_1c | bVar3; + } + else if (param_5 == 3) { + *local_1c = *local_1c ^ bVar3; + } + local_1c = local_1c + -1; + uVar2 = (int)uVar2 >> 1; + } + local_1c = pbVar1; + local_14 = local_14 + -iVar4; + } + } + else if (param_6 == 0x10e) { + FUN_00468e9c(param_1,iVar4 - (local_8 + -1),iVar4); + for (; 0 < iVar5; iVar5 = iVar5 + -1) { + iVar4 = *(int *)(param_9 + 0x14); + pbVar1 = local_1c + -1; + local_c = (uint)*local_14; + local_18 = local_14 + 1; + uVar2 = local_10; + for (iVar6 = local_8; 0 < iVar6; iVar6 = iVar6 + -1) { + if (uVar2 == 0) { + uVar2 = 0x8000; + local_c = (uint)*local_18; + local_18 = local_18 + 1; + } + bVar3 = param_3; + if ((local_c & uVar2) != 0) { + bVar3 = param_2; + } + if (param_5 == 0) { + *local_1c = bVar3; + } + else if (param_5 == 1) { + *local_1c = *local_1c & bVar3; + } + else if (param_5 == 2) { + *local_1c = *local_1c | bVar3; + } + else if (param_5 == 3) { + *local_1c = *local_1c ^ bVar3; + } + uVar2 = (int)uVar2 >> 1; + local_1c = local_1c + -*(int *)(param_1 + 0x1c); + } + local_1c = pbVar1; + local_14 = local_14 + -iVar4; + } + } + else { + FUN_00468e9c(param_1,(iVar4 - iVar5) + 1,iVar4); + for (; 0 < iVar5; iVar5 = iVar5 + -1) { + iVar4 = *(int *)(param_9 + 0x14); + pbVar1 = local_1c + -*(int *)(param_1 + 0x1c); + local_c = (uint)*local_14; + local_18 = local_14 + 1; + uVar2 = local_10; + for (iVar6 = local_8; 0 < iVar6; iVar6 = iVar6 + -1) { + if (uVar2 == 0) { + uVar2 = 0x8000; + local_c = (uint)*local_18; + local_18 = local_18 + 1; + } + bVar3 = param_3; + if ((local_c & uVar2) != 0) { + bVar3 = param_2; + } + if (param_5 == 0) { + *local_1c = bVar3; + } + else if (param_5 == 1) { + *local_1c = *local_1c & bVar3; + } + else if (param_5 == 2) { + *local_1c = *local_1c | bVar3; + } + else if (param_5 == 3) { + *local_1c = *local_1c ^ bVar3; + } + local_1c = local_1c + 1; + uVar2 = (int)uVar2 >> 1; + } + local_1c = pbVar1; + local_14 = local_14 + -iVar4; + } + } + } + return; +} + + + +/* @00469c3c file=? name=FUN_00469c3c */ + +void __cdecl +FUN_00469c3c(int param_1,undefined4 param_2,undefined4 param_3,int param_4,int param_5,int param_6, + int param_7,int param_8,int *param_9,int param_10,int param_11,int param_12,int param_13 + ) + +{ + byte *pbVar1; + byte *pbVar2; + byte bVar3; + int iVar4; + int iVar5; + int iVar6; + byte *local_10; + byte *local_c; + int local_8; + + if (*(int *)(param_1 + 0x14) != 0) { + iVar4 = *(int *)(param_1 + 0x28) - param_8; + iVar5 = (param_9[1] + -1) - param_11; + local_8 = (param_12 - param_10) + 1; + iVar6 = (iVar5 - ((param_9[1] + -1) - param_13)) + 1; + local_c = (byte *)(param_10 + param_9[2] + *param_9 * iVar5); + FUN_00468e78(param_1,param_7,iVar4,(int *)&local_10); + if (param_5 == 0) { + if (param_6 == 0x5a) { + FUN_00468e9c(param_1,iVar4,iVar4 + local_8); + for (; 0 < iVar6; iVar6 = iVar6 + -1) { + pbVar1 = local_c + -*param_9; + pbVar2 = local_10 + 1; + for (iVar4 = local_8; 0 < iVar4; iVar4 = iVar4 + -1) { + bVar3 = *local_c; + local_c = local_c + 1; + if (bVar3 != 0) { + if (param_4 == 0) { + *local_10 = bVar3; + } + else if (param_4 == 1) { + *local_10 = *local_10 & bVar3; + } + else if (param_4 == 2) { + *local_10 = *local_10 | bVar3; + } + else if (param_4 == 3) { + *local_10 = *local_10 ^ bVar3; + } + } + local_10 = local_10 + *(int *)(param_1 + 0x1c); + } + local_10 = pbVar2; + local_c = pbVar1; + } + } + else if (param_6 == 0xb4) { + FUN_00468e9c(param_1,iVar4,iVar4 + iVar6); + for (; 0 < iVar6; iVar6 = iVar6 + -1) { + pbVar1 = local_c + -*param_9; + pbVar2 = local_10 + *(int *)(param_1 + 0x1c); + for (iVar4 = local_8; 0 < iVar4; iVar4 = iVar4 + -1) { + bVar3 = *local_c; + local_c = local_c + 1; + if (bVar3 != 0) { + if (param_4 == 0) { + *local_10 = bVar3; + } + else if (param_4 == 1) { + *local_10 = *local_10 & bVar3; + } + else if (param_4 == 2) { + *local_10 = *local_10 | bVar3; + } + else if (param_4 == 3) { + *local_10 = *local_10 ^ bVar3; + } + } + local_10 = local_10 + -1; + } + local_10 = pbVar2; + local_c = pbVar1; + } + } + else if (param_6 == 0x10e) { + FUN_00468e9c(param_1,iVar4 - (local_8 + -1),iVar4); + for (; 0 < iVar6; iVar6 = iVar6 + -1) { + pbVar1 = local_c + -*param_9; + pbVar2 = local_10 + -1; + for (iVar4 = local_8; 0 < iVar4; iVar4 = iVar4 + -1) { + bVar3 = *local_c; + local_c = local_c + 1; + if (bVar3 != 0) { + if (param_4 == 0) { + *local_10 = bVar3; + } + else if (param_4 == 1) { + *local_10 = *local_10 & bVar3; + } + else if (param_4 == 2) { + *local_10 = *local_10 | bVar3; + } + else if (param_4 == 3) { + *local_10 = *local_10 ^ bVar3; + } + } + local_10 = local_10 + -*(int *)(param_1 + 0x1c); + } + local_10 = pbVar2; + local_c = pbVar1; + } + } + else { + FUN_00468e9c(param_1,(iVar4 - iVar6) + 1,iVar4); + for (; 0 < iVar6; iVar6 = iVar6 + -1) { + pbVar1 = local_c + -*param_9; + pbVar2 = local_10 + -*(int *)(param_1 + 0x1c); + for (iVar4 = local_8; 0 < iVar4; iVar4 = iVar4 + -1) { + bVar3 = *local_c; + local_c = local_c + 1; + if (bVar3 != 0) { + if (param_4 == 0) { + *local_10 = bVar3; + } + else if (param_4 == 1) { + *local_10 = *local_10 & bVar3; + } + else if (param_4 == 2) { + *local_10 = *local_10 | bVar3; + } + else if (param_4 == 3) { + *local_10 = *local_10 ^ bVar3; + } + } + local_10 = local_10 + 1; + } + local_10 = pbVar2; + local_c = pbVar1; + } + } + } + else if (param_6 == 0x5a) { + FUN_00468e9c(param_1,iVar4,iVar4 + local_8); + for (; 0 < iVar6; iVar6 = iVar6 + -1) { + pbVar1 = local_c + -*param_9; + pbVar2 = local_10 + 1; + for (iVar4 = local_8; 0 < iVar4; iVar4 = iVar4 + -1) { + bVar3 = *local_c; + local_c = local_c + 1; + if (param_4 == 0) { + *local_10 = bVar3; + } + else if (param_4 == 1) { + *local_10 = *local_10 & bVar3; + } + else if (param_4 == 2) { + *local_10 = *local_10 | bVar3; + } + else if (param_4 == 3) { + *local_10 = *local_10 ^ bVar3; + } + local_10 = local_10 + *(int *)(param_1 + 0x1c); + } + local_10 = pbVar2; + local_c = pbVar1; + } + } + else if (param_6 == 0xb4) { + FUN_00468e9c(param_1,iVar4,iVar4 + iVar6); + for (; 0 < iVar6; iVar6 = iVar6 + -1) { + pbVar1 = local_c + -*param_9; + pbVar2 = local_10 + *(int *)(param_1 + 0x1c); + for (iVar4 = local_8; 0 < iVar4; iVar4 = iVar4 + -1) { + bVar3 = *local_c; + local_c = local_c + 1; + if (param_4 == 0) { + *local_10 = bVar3; + } + else if (param_4 == 1) { + *local_10 = *local_10 & bVar3; + } + else if (param_4 == 2) { + *local_10 = *local_10 | bVar3; + } + else if (param_4 == 3) { + *local_10 = *local_10 ^ bVar3; + } + local_10 = local_10 + -1; + } + local_10 = pbVar2; + local_c = pbVar1; + } + } + else if (param_6 == 0x10e) { + FUN_00468e9c(param_1,iVar4 - (local_8 + -1),iVar4); + for (; 0 < iVar6; iVar6 = iVar6 + -1) { + pbVar1 = local_c + -*param_9; + pbVar2 = local_10 + -1; + for (iVar4 = local_8; 0 < iVar4; iVar4 = iVar4 + -1) { + bVar3 = *local_c; + local_c = local_c + 1; + if (param_4 == 0) { + *local_10 = bVar3; + } + else if (param_4 == 1) { + *local_10 = *local_10 & bVar3; + } + else if (param_4 == 2) { + *local_10 = *local_10 | bVar3; + } + else if (param_4 == 3) { + *local_10 = *local_10 ^ bVar3; + } + local_10 = local_10 + -*(int *)(param_1 + 0x1c); + } + local_10 = pbVar2; + local_c = pbVar1; + } + } + else { + FUN_00468e9c(param_1,(iVar4 - iVar6) + 1,iVar4); + for (; 0 < iVar6; iVar6 = iVar6 + -1) { + pbVar1 = local_c + -*param_9; + pbVar2 = local_10 + -*(int *)(param_1 + 0x1c); + for (iVar4 = local_8; 0 < iVar4; iVar4 = iVar4 + -1) { + bVar3 = *local_c; + local_c = local_c + 1; + if (param_4 == 0) { + *local_10 = bVar3; + } + else if (param_4 == 1) { + *local_10 = *local_10 & bVar3; + } + else if (param_4 == 2) { + *local_10 = *local_10 | bVar3; + } + else if (param_4 == 3) { + *local_10 = *local_10 ^ bVar3; + } + local_10 = local_10 + 1; + } + local_10 = pbVar2; + local_c = pbVar1; + } + } + } + return; +} + + + +/* @0046a0e4 file=? name=FUN_0046a0e4 */ + +void __cdecl +FUN_0046a0e4(int param_1,byte param_2,undefined4 param_3,int param_4,int param_5,int param_6, + int param_7,int *param_8,int param_9,int param_10,int param_11,int param_12) + +{ + char *pcVar1; + byte *pbVar2; + char cVar3; + int iVar4; + int iVar5; + int iVar6; + byte *local_10; + char *local_c; + int local_8; + + if (*(int *)(param_1 + 0x14) != 0) { + iVar4 = *(int *)(param_1 + 0x28) - param_7; + iVar5 = (param_8[1] + -1) - param_10; + local_8 = (param_11 - param_9) + 1; + iVar6 = (iVar5 - ((param_8[1] + -1) - param_12)) + 1; + local_c = (char *)(param_8[2] + param_9 + *param_8 * iVar5); + FUN_00468e78(param_1,param_6,iVar4,(int *)&local_10); + if (param_5 == 0x5a) { + FUN_00468e9c(param_1,iVar4,iVar4 + local_8); + for (; 0 < iVar6; iVar6 = iVar6 + -1) { + pcVar1 = local_c + -*param_8; + pbVar2 = local_10 + 1; + for (iVar4 = local_8; 0 < iVar4; iVar4 = iVar4 + -1) { + cVar3 = *local_c; + local_c = local_c + 1; + if (cVar3 != '\0') { + if (param_4 == 0) { + *local_10 = param_2; + } + else if (param_4 == 1) { + *local_10 = *local_10 & param_2; + } + else if (param_4 == 2) { + *local_10 = *local_10 | param_2; + } + else if (param_4 == 3) { + *local_10 = *local_10 ^ param_2; + } + } + local_10 = local_10 + *(int *)(param_1 + 0x1c); + } + local_10 = pbVar2; + local_c = pcVar1; + } + } + else if (param_5 == 0xb4) { + FUN_00468e9c(param_1,iVar4,iVar4 + iVar6); + for (; 0 < iVar6; iVar6 = iVar6 + -1) { + pcVar1 = local_c + -*param_8; + pbVar2 = local_10 + *(int *)(param_1 + 0x1c); + for (iVar4 = local_8; 0 < iVar4; iVar4 = iVar4 + -1) { + cVar3 = *local_c; + local_c = local_c + 1; + if (cVar3 != '\0') { + if (param_4 == 0) { + *local_10 = param_2; + } + else if (param_4 == 1) { + *local_10 = *local_10 & param_2; + } + else if (param_4 == 2) { + *local_10 = *local_10 | param_2; + } + else if (param_4 == 3) { + *local_10 = *local_10 ^ param_2; + } + } + local_10 = local_10 + -1; + } + local_10 = pbVar2; + local_c = pcVar1; + } + } + else if (param_5 == 0x10e) { + FUN_00468e9c(param_1,iVar4 - local_8,iVar4); + for (; 0 < iVar6; iVar6 = iVar6 + -1) { + pcVar1 = local_c + -*param_8; + pbVar2 = local_10 + -1; + for (iVar4 = local_8; 0 < iVar4; iVar4 = iVar4 + -1) { + cVar3 = *local_c; + local_c = local_c + 1; + if (cVar3 != '\0') { + if (param_4 == 0) { + *local_10 = param_2; + } + else if (param_4 == 1) { + *local_10 = *local_10 & param_2; + } + else if (param_4 == 2) { + *local_10 = *local_10 | param_2; + } + else if (param_4 == 3) { + *local_10 = *local_10 ^ param_2; + } + } + local_10 = local_10 + -*(int *)(param_1 + 0x1c); + } + local_10 = pbVar2; + local_c = pcVar1; + } + } + else { + FUN_00468e9c(param_1,(iVar4 - iVar6) + 1,iVar4); + for (; 0 < iVar6; iVar6 = iVar6 + -1) { + pcVar1 = local_c + -*param_8; + pbVar2 = local_10 + -*(int *)(param_1 + 0x1c); + for (iVar4 = local_8; 0 < iVar4; iVar4 = iVar4 + -1) { + cVar3 = *local_c; + local_c = local_c + 1; + if (cVar3 != '\0') { + if (param_4 == 0) { + *local_10 = param_2; + } + else if (param_4 == 1) { + *local_10 = *local_10 & param_2; + } + else if (param_4 == 2) { + *local_10 = *local_10 | param_2; + } + else if (param_4 == 3) { + *local_10 = *local_10 ^ param_2; + } + } + local_10 = local_10 + 1; + } + local_10 = pbVar2; + local_c = pcVar1; + } + } + } + return; +} + + + +/* @0046a3a8 file=? name=FUN_0046a3a8 */ + +undefined4 * __cdecl +FUN_0046a3a8(undefined4 *param_1,undefined4 *param_2,char *param_3,undefined4 param_4) + +{ + FUN_0044a2d0(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004f4ad0; + param_1[10] = param_4; + param_1[0xb] = param_1[3] - param_1[1]; + param_1[0xc] = param_1[4] - param_1[2]; + if (((param_1[10] == 0x5a) || (param_1[10] == 0x10e)) && (param_2 != (undefined4 *)0x0)) { + param_1[1] = param_2[2]; + param_1[2] = param_2[1]; + param_1[3] = param_2[4]; + param_1[4] = param_2[3]; + } + return param_1; +} + + + +/* @0046a418 file=? name=FUN_0046a418 */ + +void __cdecl FUN_0046a418(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f4ad0; + FUN_0044a348(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0046a444 file=? name=FUN_0046a444 */ + +undefined4 FUN_0046a444(void) + +{ + return 1; +} + + + +/* @0046a450 file=? name=FUN_0046a450 */ + +void __cdecl FUN_0046a450(int param_1,char *param_2) + +{ + char cVar1; + int *piVar2; + uint uVar3; + uint uVar4; + char *pcVar5; + char *pcVar6; + uint *puVar7; + char local_54 [80]; + + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_L4BytePort__004f4a7b,(char *)0x0); + uVar3 = 0xffffffff; + do { + pcVar5 = param_2; + if (uVar3 == 0) break; + uVar3 = uVar3 - 1; + pcVar5 = param_2 + 1; + cVar1 = *param_2; + param_2 = pcVar5; + } while (cVar1 != '\0'); + uVar3 = ~uVar3; + pcVar5 = pcVar5 + -uVar3; + pcVar6 = local_54; + for (uVar4 = uVar3 >> 2; uVar4 != 0; uVar4 = uVar4 - 1) { + *(undefined4 *)pcVar6 = *(undefined4 *)pcVar5; + pcVar5 = pcVar5 + 4; + pcVar6 = pcVar6 + 4; + } + for (uVar3 = uVar3 & 3; uVar3 != 0; uVar3 = uVar3 - 1) { + *pcVar6 = *pcVar5; + pcVar5 = pcVar5 + 1; + pcVar6 = pcVar6 + 1; + } + FUN_004d49b8(local_54,&DAT_004f4a88); + uVar3 = *(uint *)(param_1 + 0x28); + FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_baseRotation___004f4a8c,(char *)0x0); + piVar2 = FUN_004db78c(&DAT_00524e20,uVar3); + FUN_004dbb24(piVar2,&DAT_004f4a9b,(char *)0x0); + uVar3 = *(uint *)(param_1 + 0x2c); + FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_maximumX___004f4a9d,(char *)0x0); + piVar2 = FUN_004db78c(&DAT_00524e20,uVar3); + FUN_004dbb24(piVar2,&DAT_004f4aac,(char *)0x0); + uVar3 = *(uint *)(param_1 + 0x30); + FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_maximumY___004f4aae,(char *)0x0); + piVar2 = FUN_004db78c(&DAT_00524e20,uVar3); + FUN_004dbb24(piVar2,&DAT_004f4abd,(char *)0x0); + puVar7 = (uint *)(param_1 + 4); + FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_bounds___004f4abf,(char *)0x0); + piVar2 = (int *)FUN_00407d78(&DAT_00524e20,puVar7); + FUN_004dbb24(piVar2,&DAT_004f4ace,(char *)0x0); + FUN_004d9c70(&DAT_00524e20); + FUN_0044a374(param_1,local_54); + return; +} + + + +/* @0046a604 file=? name=FUN_0046a604 */ + +void __cdecl FUN_0046a604(int param_1,undefined4 param_2,undefined4 param_3,int param_4,int param_5) + +{ + int local_c; + int local_8; + + if (*(int *)(param_1 + 0x14) != 0) { + FUN_0046aa18(param_1,&local_8,&local_c,param_4,param_5); + (**(code **)(**(int **)(param_1 + 0x14) + 0x14)) + (*(int **)(param_1 + 0x14),param_2,0,param_3,local_8 + *(int *)(param_1 + 4), + local_c + *(int *)(param_1 + 8)); + } + return; +} + + + +/* @0046a65c file=? name=FUN_0046a65c */ + +void __cdecl +FUN_0046a65c(int param_1,undefined4 param_2,undefined4 param_3,int param_4,int param_5,int param_6, + int param_7,undefined4 param_8) + +{ + int local_14; + int local_10; + int local_c; + int local_8; + + if (*(int *)(param_1 + 0x14) != 0) { + FUN_0046aa18(param_1,&local_8,&local_c,param_4,param_5); + FUN_0046aa18(param_1,&local_10,&local_14,param_6,param_7); + (**(code **)(**(int **)(param_1 + 0x14) + 0x18)) + (*(int **)(param_1 + 0x14),param_2,0,param_3,local_8 + *(int *)(param_1 + 4), + local_c + *(int *)(param_1 + 8),local_10 + *(int *)(param_1 + 4), + local_14 + *(int *)(param_1 + 8),param_8); + } + return; +} + + + +/* @0046a6dc file=? name=FUN_0046a6dc */ + +void __cdecl +FUN_0046a6dc(int param_1,undefined4 param_2,undefined4 param_3,int param_4,int param_5,int param_6, + int param_7) + +{ + int local_14; + int local_10; + int local_c; + int local_8; + + if (*(int *)(param_1 + 0x14) != 0) { + FUN_0046aa18(param_1,&local_8,&local_c,param_4,param_5); + FUN_0046aa18(param_1,&local_10,&local_14,param_6,param_7); + (**(code **)(**(int **)(param_1 + 0x14) + 0x1c)) + (*(int **)(param_1 + 0x14),param_2,0,param_3,local_8 + *(int *)(param_1 + 4), + local_c + *(int *)(param_1 + 8),local_10 + *(int *)(param_1 + 4), + local_14 + *(int *)(param_1 + 8)); + } + return; +} + + + +/* @0046a758 file=? name=FUN_0046a758 */ + +void FUN_0046a758(void) + +{ + return; +} + + + +/* @0046a760 file=? name=FUN_0046a760 */ + +void __cdecl +FUN_0046a760(int param_1,undefined4 param_2,undefined4 param_3,int param_4,int param_5,int param_6, + int param_7,undefined4 param_8,undefined4 param_9,undefined4 param_10, + undefined4 param_11) + +{ + int iVar1; + int local_c; + int local_8; + + if (((*(int *)(param_1 + 0x14) != 0) && (param_7 != 0)) && (*(int *)(param_7 + 0x18) != 0)) { + FUN_0046aa18(param_1,&local_8,&local_c,param_5,param_6); + for (iVar1 = param_4 + *(int *)(param_1 + 0x28); iVar1 < 0; iVar1 = iVar1 + 0x168) { + } + for (; 0x167 < iVar1; iVar1 = iVar1 + -0x168) { + } + (**(code **)(**(int **)(param_1 + 0x14) + 0x24)) + (*(int **)(param_1 + 0x14),param_2,0,param_3,iVar1,local_8 + *(int *)(param_1 + 4), + local_c + *(int *)(param_1 + 8),param_7,param_8,param_9,param_10,param_11); + } + return; +} + + + +/* @0046a80c file=? name=FUN_0046a80c */ + +void __cdecl +FUN_0046a80c(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,int param_5, + int param_6,int param_7,int param_8,undefined4 param_9,undefined4 param_10, + undefined4 param_11,undefined4 param_12) + +{ + int iVar1; + int local_c; + int local_8; + + if (((*(int *)(param_1 + 0x14) != 0) && (param_8 != 0)) && (*(int *)(param_8 + 0x18) != 0)) { + FUN_0046aa18(param_1,&local_8,&local_c,param_6,param_7); + for (iVar1 = param_5 + *(int *)(param_1 + 0x28); iVar1 < 0; iVar1 = iVar1 + 0x168) { + } + for (; 0x167 < iVar1; iVar1 = iVar1 + -0x168) { + } + (**(code **)(**(int **)(param_1 + 0x14) + 0x28)) + (*(int **)(param_1 + 0x14),param_2,param_3,0,param_4,iVar1, + local_8 + *(int *)(param_1 + 4),local_c + *(int *)(param_1 + 8),param_8,param_9, + param_10,param_11,param_12); + } + return; +} + + + +/* @0046a8bc file=? name=FUN_0046a8bc */ + +void __cdecl +FUN_0046a8bc(int param_1,undefined4 param_2,undefined4 param_3,int param_4,int param_5,int param_6, + int param_7,undefined4 param_8,undefined4 param_9,undefined4 param_10, + undefined4 param_11) + +{ + int iVar1; + int local_c; + int local_8; + + if (((*(int *)(param_1 + 0x14) != 0) && (param_7 != 0)) && (*(int *)(param_7 + 8) != 0)) { + FUN_0046aa18(param_1,&local_8,&local_c,param_5,param_6); + for (iVar1 = param_4 + *(int *)(param_1 + 0x28); iVar1 < 0; iVar1 = iVar1 + 0x168) { + } + for (; 0x167 < iVar1; iVar1 = iVar1 + -0x168) { + } + (**(code **)(**(int **)(param_1 + 0x14) + 0x2c)) + (*(int **)(param_1 + 0x14),0,0,param_2,param_3,iVar1,local_8 + *(int *)(param_1 + 4), + local_c + *(int *)(param_1 + 8),param_7,param_8,param_9,param_10,param_11); + } + return; +} + + + +/* @0046a96c file=? name=FUN_0046a96c */ + +void __cdecl +FUN_0046a96c(int param_1,undefined4 param_2,undefined4 param_3,int param_4,int param_5,int param_6, + int param_7,undefined4 param_8,undefined4 param_9,undefined4 param_10, + undefined4 param_11) + +{ + int iVar1; + int local_c; + int local_8; + + if (((*(int *)(param_1 + 0x14) != 0) && (param_7 != 0)) && (*(int *)(param_7 + 8) != 0)) { + FUN_0046aa18(param_1,&local_8,&local_c,param_5,param_6); + for (iVar1 = param_4 + *(int *)(param_1 + 0x28); iVar1 < 0; iVar1 = iVar1 + 0x168) { + } + for (; 0x167 < iVar1; iVar1 = iVar1 + -0x168) { + } + (**(code **)(**(int **)(param_1 + 0x14) + 0x30)) + (*(int **)(param_1 + 0x14),param_2,0,param_3,iVar1,local_8 + *(int *)(param_1 + 4), + local_c + *(int *)(param_1 + 8),param_7,param_8,param_9,param_10,param_11); + } + return; +} + + + +/* @0046aa18 file=? name=FUN_0046aa18 */ + +void __cdecl FUN_0046aa18(int param_1,int *param_2,int *param_3,int param_4,int param_5) + +{ + int iVar1; + + iVar1 = *(int *)(param_1 + 0x28); + if (iVar1 == 0x5a) { + *param_2 = param_5; + *param_3 = *(int *)(param_1 + 0x30) - param_4; + } + else if (iVar1 == 0xb4) { + *param_2 = *(int *)(param_1 + 0x2c) - param_4; + *param_3 = *(int *)(param_1 + 0x30) - param_5; + } + else if (iVar1 == 0x10e) { + *param_2 = *(int *)(param_1 + 0x2c) - param_5; + *param_3 = param_4; + } + else { + *param_2 = param_4; + *param_3 = param_5; + } + return; +} + + + +/* @0046aa78 file=? name=FUN_0046aa78 */ + +void __cdecl FUN_0046aa78(undefined4 *param_1,undefined4 param_2,undefined4 param_3) + +{ + param_1[2] = param_2; + param_1[1] = param_3; + *param_1 = 0; + return; +} + + + +/* @0046aa90 file=? name=FUN_0046aa90 */ + +void __cdecl FUN_0046aa90(uint *param_1) + +{ + *param_1 = *param_1 & ~param_1[2]; + return; +} + + + +/* @0046aaa0 file=? name=FUN_0046aaa0 */ + +void __cdecl FUN_0046aaa0(uint *param_1) + +{ + *param_1 = *param_1 & param_1[2]; + return; +} + + + +/* @0046aab0 file=? name=FUN_0046aab0 */ + +undefined4 __cdecl FUN_0046aab0(uint *param_1) + +{ + uint uVar1; + uint uVar2; + + uVar2 = param_1[1]; + uVar1 = 1; + while( true ) { + if ((int)uVar2 < 1) { + return 0; + } + if (((param_1[2] & uVar1) != 0) && (*param_1 = *param_1 ^ uVar1, (*param_1 & uVar1) != 0)) + break; + uVar2 = uVar2 - 1; + uVar1 = uVar1 * 2; + } + return 1; +} + + + +/* @0046aae0 file=? name=FUN_0046aae0 */ + +undefined4 __cdecl FUN_0046aae0(uint *param_1) + +{ + uint uVar1; + uint uVar2; + + uVar1 = 1; + uVar2 = param_1[1]; + while( true ) { + if ((int)uVar2 < 1) { + return 0; + } + if (((uVar1 & ~param_1[2]) != 0) && (*param_1 = *param_1 ^ uVar1, (*param_1 & uVar1) != 0)) + break; + uVar2 = uVar2 - 1; + uVar1 = uVar1 * 2; + } + return 1; +} + + + +/* @0046ab18 file=? name=FUN_0046ab18 */ + +int __cdecl FUN_0046ab18(int param_1) + +{ + uint uVar1; + int iVar2; + + iVar2 = 0; + for (uVar1 = *(uint *)(param_1 + 8); uVar1 != 0; uVar1 = uVar1 & uVar1 - 1) { + iVar2 = iVar2 + 1; + } + return iVar2; +} + + + +/* @0046ab38 file=? name=FUN_0046ab38 */ + +int __cdecl FUN_0046ab38(int param_1) + +{ + int iVar1; + + iVar1 = FUN_0046ab18(param_1); + return *(int *)(param_1 + 4) - iVar1; +} + + + +/* @0046ab50 file=? name=FUN_0046ab50 */ + +undefined4 * __cdecl FUN_0046ab50(undefined4 *param_1,int param_2,int param_3) + +{ + undefined4 uVar1; + undefined4 *puVar2; + int iVar3; + + FUN_0044a078(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004f4d70; + FUN_00449ed0(param_1 + 0xb,param_2,param_3); + param_1[8] = param_3; + param_1[6] = param_2; + param_1[7] = param_2 >> 5; + iVar3 = param_1[8] * (param_2 >> 5); + param_1[10] = param_1[8] + -1; + param_1[9] = param_1[6] + -1; + uVar1 = FUN_004022b0(param_1[8]); + param_1[0xe] = uVar1; + uVar1 = FUN_004022b0(iVar3 * 4); + param_1[0xf] = uVar1; + if ((param_1[0xe] == 0) || (param_1[0xf] == 0)) { + param_1[5] = 0; + } + else { + param_1[5] = 1; + FUN_004d4988((undefined4 *)param_1[0xe],0,param_1[8]); + puVar2 = (undefined4 *)param_1[0xf]; + for (; 0 < iVar3; iVar3 = iVar3 + -1) { + *puVar2 = 0; + puVar2 = puVar2 + 1; + } + } + return param_1; +} + + + +/* @0046ac08 file=? name=FUN_0046ac08 */ + +void __cdecl FUN_0046ac08(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f4d70; + if ((int *)param_1[0xe] != (int *)0x0) { + FUN_004022d0((int *)param_1[0xe]); + param_1[0xe] = 0; + } + if ((int *)param_1[0xf] != (int *)0x0) { + FUN_004022d0((int *)param_1[0xf]); + param_1[0xf] = 0; + } + FUN_00449f30(param_1 + 0xb,2); + FUN_0044a0ac(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0046ac68 file=? name=FUN_0046ac68 */ + +undefined4 FUN_0046ac68(void) + +{ + return 1; +} + + + +/* @0046ac74 file=? name=FUN_0046ac74 */ + +void __cdecl FUN_0046ac74(int param_1,char *param_2) + +{ + char cVar1; + int *piVar2; + uint uVar3; + uint uVar4; + char *pcVar5; + char *pcVar6; + undefined8 uVar7; + char local_54 [80]; + + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_Video16BitBuffered__004f4b3c,(char *)0x0); + uVar3 = 0xffffffff; + do { + pcVar5 = param_2; + if (uVar3 == 0) break; + uVar3 = uVar3 - 1; + pcVar5 = param_2 + 1; + cVar1 = *param_2; + param_2 = pcVar5; + } while (cVar1 != '\0'); + uVar3 = ~uVar3; + pcVar5 = pcVar5 + -uVar3; + pcVar6 = local_54; + for (uVar4 = uVar3 >> 2; uVar4 != 0; uVar4 = uVar4 - 1) { + *(undefined4 *)pcVar6 = *(undefined4 *)pcVar5; + pcVar5 = pcVar5 + 4; + pcVar6 = pcVar6 + 4; + } + for (uVar3 = uVar3 & 3; uVar3 != 0; uVar3 = uVar3 - 1) { + *pcVar6 = *pcVar5; + pcVar5 = pcVar5 + 1; + pcVar6 = pcVar6 + 1; + } + FUN_004d49b8(local_54,&DAT_004f4b51); + uVar3 = *(uint *)(param_1 + 0x18); + FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_width___004f4b55,(char *)0x0); + piVar2 = FUN_004db78c(&DAT_00524e20,uVar3); + FUN_004dbb24(piVar2,&DAT_004f4b62,(char *)0x0); + uVar3 = *(uint *)(param_1 + 0x20); + FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_height___004f4b64,(char *)0x0); + piVar2 = FUN_004db78c(&DAT_00524e20,uVar3); + FUN_004dbb24(piVar2,&DAT_004f4b71,(char *)0x0); + uVar3 = *(uint *)(param_1 + 0x24); + FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_maximumX___004f4b73,(char *)0x0); + piVar2 = FUN_004db78c(&DAT_00524e20,uVar3); + FUN_004dbb24(piVar2,&DAT_004f4b80,(char *)0x0); + uVar3 = *(uint *)(param_1 + 0x28); + FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_maximumY___004f4b82,(char *)0x0); + piVar2 = FUN_004db78c(&DAT_00524e20,uVar3); + FUN_004dbb24(piVar2,&DAT_004f4b8f,(char *)0x0); + pcVar5 = *(char **)(param_1 + 0x38); + FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_changedLine__004f4b91,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,pcVar5,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004f4b9e,(char *)0x0); + uVar3 = *(uint *)(param_1 + 0x3c); + FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_changedBit___004f4ba0,(char *)0x0); + uVar7 = FUN_004dbd4c(&DAT_00524e20,uVar3); + FUN_004dbb24((int *)uVar7,&DAT_004f4bad,(char *)0x0); + FUN_00449f74((uint *)(param_1 + 0x2c),local_54); + FUN_0044a0cc(param_1,local_54); + return; +} + + + +/* @0046aec4 file=? name=FUN_0046aec4 */ + +void __cdecl +FUN_0046aec4(int param_1,int param_2,int param_3,int *param_4,int *param_5,int *param_6) + +{ + *param_4 = param_2 * 2 + *(int *)(param_1 + 0x34) + param_3 * *(int *)(param_1 + 0x18) * 2; + *param_5 = (param_2 >> 5) * 4 + *(int *)(param_1 + 0x3c) + param_3 * *(int *)(param_1 + 0x1c) * 4; + *param_6 = 1 << (0x1f - ((byte)param_2 & 0x1f) & 0x1f); + return; +} + + + +/* @0046af20 file=? name=FUN_0046af20 */ + +void __cdecl FUN_0046af20(int param_1,int param_2,int param_3) + +{ + int iVar1; + + iVar1 = param_2; + if (param_3 < param_2) { + iVar1 = param_3; + param_3 = param_2; + } + FUN_004d4988((undefined4 *)(iVar1 + *(int *)(param_1 + 0x38)),1,(param_3 - iVar1) + 1); + return; +} + + + +/* @0046af50 file=? name=FUN_0046af50 */ + +void __cdecl +FUN_0046af50(int param_1,ushort param_2,ushort param_3,int param_4,int param_5,int param_6) + +{ + int iVar1; + uint local_10; + uint *local_c; + ushort *local_8; + + if (*(int *)(param_1 + 0x14) != 0) { + iVar1 = *(int *)(param_1 + 0x28) - param_6; + FUN_0046af20(param_1,iVar1,iVar1); + FUN_0046aec4(param_1,param_5,iVar1,(int *)&local_8,(int *)&local_c,(int *)&local_10); + if (param_4 == 0) { + *local_8 = *local_8 & ~param_3 | param_2; + } + else if (param_4 == 1) { + *local_8 = *local_8 & param_2; + } + else if (param_4 == 2) { + *local_8 = *local_8 | param_2; + } + else if (param_4 == 3) { + *local_8 = *local_8 ^ param_2; + } + *local_c = *local_c | local_10; + DAT_00522cbc = DAT_00522cbc + 1; + } + return; +} + + + +/* @0046aff8 file=? name=FUN_0046aff8 */ + +void __cdecl +FUN_0046aff8(int *param_1,undefined4 param_2,undefined4 param_3,int param_4,int param_5,int param_6, + int param_7,int param_8,int param_9) + +{ + int iVar1; + int iVar2; + int iVar3; + bool bVar4; + uint local_18; + uint *local_14; + ushort *local_10; + int local_c; + uint local_8; + + if (param_1[5] != 0) { + if ((param_7 == param_5) && (param_6 == param_8)) { + if (param_9 != 0) { + (**(code **)(*param_1 + 0x14))(param_1,param_2,param_3,param_4,param_5,param_6); + } + } + else { + iVar2 = param_1[10] - param_6; + iVar1 = param_1[10] - param_8; + FUN_0046af20((int)param_1,iVar2,iVar1); + param_3._0_2_ = ~(ushort)param_3; + iVar3 = param_7 - param_5; + bVar4 = iVar3 < 0; + if (bVar4) { + iVar3 = -iVar3; + } + local_8 = (uint)bVar4; + local_c = iVar1 - iVar2; + if (local_c < 0) { + local_8 = local_8 | 2; + local_c = -local_c; + } + if (local_c < iVar3) { + local_8 = local_8 | 4; + } + FUN_0046aec4((int)param_1,param_5,iVar2,(int *)&local_10,(int *)&local_14,(int *)&local_18); + iVar1 = 0x400; + switch(local_8) { + case 0: + iVar2 = local_c; + if (param_9 == 0) { + iVar2 = local_c + -1; + } + for (; 0 < iVar2; iVar2 = iVar2 + -1) { + if (param_4 == 0) { + *local_10 = *local_10 & (ushort)param_3 | (ushort)param_2; + } + else if (param_4 == 1) { + *local_10 = *local_10 & (ushort)param_2; + } + else if (param_4 == 2) { + *local_10 = *local_10 | (ushort)param_2; + } + else if (param_4 == 3) { + *local_10 = *local_10 ^ (ushort)param_2; + } + *local_14 = *local_14 | local_18; + DAT_00522cbc = DAT_00522cbc + 1; + local_10 = local_10 + param_1[6]; + local_14 = local_14 + param_1[7]; + iVar1 = iVar1 + (iVar3 << 0xb) / local_c; + if (0x800 < iVar1) { + local_10 = local_10 + 1; + local_18 = local_18 >> 1; + iVar1 = iVar1 + -0x800; + if (local_18 == 0) { + local_14 = local_14 + 1; + local_18 = 0x80000000; + } + } + } + break; + case 1: + iVar2 = local_c; + if (param_9 == 0) { + iVar2 = local_c + -1; + } + for (; 0 < iVar2; iVar2 = iVar2 + -1) { + if (param_4 == 0) { + *local_10 = *local_10 & (ushort)param_3 | (ushort)param_2; + } + else if (param_4 == 1) { + *local_10 = *local_10 & (ushort)param_2; + } + else if (param_4 == 2) { + *local_10 = *local_10 | (ushort)param_2; + } + else if (param_4 == 3) { + *local_10 = *local_10 ^ (ushort)param_2; + } + *local_14 = *local_14 | local_18; + DAT_00522cbc = DAT_00522cbc + 1; + local_10 = local_10 + param_1[6]; + local_14 = local_14 + param_1[7]; + iVar1 = iVar1 + (iVar3 << 0xb) / local_c; + if (0x800 < iVar1) { + local_10 = local_10 + -1; + local_18 = local_18 << 1; + iVar1 = iVar1 + -0x800; + if (local_18 == 0) { + local_14 = local_14 + -1; + local_18 = 1; + } + } + } + break; + case 2: + iVar2 = local_c; + if (param_9 == 0) { + iVar2 = local_c + -1; + } + for (; 0 < iVar2; iVar2 = iVar2 + -1) { + if (param_4 == 0) { + *local_10 = *local_10 & (ushort)param_3 | (ushort)param_2; + } + else if (param_4 == 1) { + *local_10 = *local_10 & (ushort)param_2; + } + else if (param_4 == 2) { + *local_10 = *local_10 | (ushort)param_2; + } + else if (param_4 == 3) { + *local_10 = *local_10 ^ (ushort)param_2; + } + *local_14 = *local_14 | local_18; + DAT_00522cbc = DAT_00522cbc + 1; + local_10 = local_10 + -param_1[6]; + local_14 = local_14 + -param_1[7]; + iVar1 = iVar1 + (iVar3 << 0xb) / local_c; + if (0x800 < iVar1) { + local_10 = local_10 + 1; + local_18 = local_18 >> 1; + iVar1 = iVar1 + -0x800; + if (local_18 == 0) { + local_14 = local_14 + 1; + local_18 = 0x80000000; + } + } + } + break; + case 3: + iVar2 = local_c; + if (param_9 == 0) { + iVar2 = local_c + -1; + } + for (; 0 < iVar2; iVar2 = iVar2 + -1) { + if (param_4 == 0) { + *local_10 = *local_10 & (ushort)param_3 | (ushort)param_2; + } + else if (param_4 == 1) { + *local_10 = *local_10 & (ushort)param_2; + } + else if (param_4 == 2) { + *local_10 = *local_10 | (ushort)param_2; + } + else if (param_4 == 3) { + *local_10 = *local_10 ^ (ushort)param_2; + } + *local_14 = *local_14 | local_18; + DAT_00522cbc = DAT_00522cbc + 1; + local_10 = local_10 + -param_1[6]; + local_14 = local_14 + -param_1[7]; + iVar1 = iVar1 + (iVar3 << 0xb) / local_c; + if (0x800 < iVar1) { + local_10 = local_10 + -1; + local_18 = local_18 << 1; + iVar1 = iVar1 + -0x800; + if (local_18 == 0) { + local_14 = local_14 + -1; + local_18 = 1; + } + } + } + break; + case 4: + iVar2 = iVar3; + if (param_9 == 0) { + iVar2 = iVar3 + -1; + } + for (; 0 < iVar2; iVar2 = iVar2 + -1) { + if (param_4 == 0) { + *local_10 = *local_10 & (ushort)param_3 | (ushort)param_2; + } + else if (param_4 == 1) { + *local_10 = *local_10 & (ushort)param_2; + } + else if (param_4 == 2) { + *local_10 = *local_10 | (ushort)param_2; + } + else if (param_4 == 3) { + *local_10 = *local_10 ^ (ushort)param_2; + } + *local_14 = *local_14 | local_18; + local_10 = local_10 + 1; + local_18 = local_18 >> 1; + DAT_00522cbc = DAT_00522cbc + 1; + if (local_18 == 0) { + local_14 = local_14 + 1; + local_18 = 0x80000000; + } + iVar1 = iVar1 + (local_c << 0xb) / iVar3; + if (0x800 < iVar1) { + iVar1 = iVar1 + -0x800; + local_10 = local_10 + param_1[6]; + local_14 = local_14 + param_1[7]; + } + } + break; + case 5: + iVar2 = iVar3; + if (param_9 == 0) { + iVar2 = iVar3 + -1; + } + for (; 0 < iVar2; iVar2 = iVar2 + -1) { + if (param_4 == 0) { + *local_10 = *local_10 & (ushort)param_3 | (ushort)param_2; + } + else if (param_4 == 1) { + *local_10 = *local_10 & (ushort)param_2; + } + else if (param_4 == 2) { + *local_10 = *local_10 | (ushort)param_2; + } + else if (param_4 == 3) { + *local_10 = *local_10 ^ (ushort)param_2; + } + *local_14 = *local_14 | local_18; + local_10 = local_10 + -1; + local_18 = local_18 << 1; + DAT_00522cbc = DAT_00522cbc + 1; + if (local_18 == 0) { + local_14 = local_14 + -1; + local_18 = 1; + } + iVar1 = iVar1 + (local_c << 0xb) / iVar3; + if (0x800 < iVar1) { + iVar1 = iVar1 + -0x800; + local_10 = local_10 + param_1[6]; + local_14 = local_14 + param_1[7]; + } + } + break; + case 6: + iVar2 = iVar3; + if (param_9 == 0) { + iVar2 = iVar3 + -1; + } + for (; 0 < iVar2; iVar2 = iVar2 + -1) { + if (param_4 == 0) { + *local_10 = *local_10 & (ushort)param_3 | (ushort)param_2; + } + else if (param_4 == 1) { + *local_10 = *local_10 & (ushort)param_2; + } + else if (param_4 == 2) { + *local_10 = *local_10 | (ushort)param_2; + } + else if (param_4 == 3) { + *local_10 = *local_10 ^ (ushort)param_2; + } + *local_14 = *local_14 | local_18; + local_10 = local_10 + 1; + local_18 = local_18 >> 1; + DAT_00522cbc = DAT_00522cbc + 1; + if (local_18 == 0) { + local_14 = local_14 + 1; + local_18 = 0x80000000; + } + iVar1 = iVar1 + (local_c << 0xb) / iVar3; + if (0x800 < iVar1) { + iVar1 = iVar1 + -0x800; + local_10 = local_10 + -param_1[6]; + local_14 = local_14 + -param_1[7]; + } + } + break; + case 7: + iVar2 = iVar3; + if (param_9 == 0) { + iVar2 = iVar3 + -1; + } + for (; 0 < iVar2; iVar2 = iVar2 + -1) { + if (param_4 == 0) { + *local_10 = *local_10 & (ushort)param_3 | (ushort)param_2; + } + else if (param_4 == 1) { + *local_10 = *local_10 & (ushort)param_2; + } + else if (param_4 == 2) { + *local_10 = *local_10 | (ushort)param_2; + } + else if (param_4 == 3) { + *local_10 = *local_10 ^ (ushort)param_2; + } + *local_14 = *local_14 | local_18; + local_10 = local_10 + -1; + local_18 = local_18 << 1; + DAT_00522cbc = DAT_00522cbc + 1; + if (local_18 == 0) { + local_14 = local_14 + -1; + local_18 = 1; + } + iVar1 = iVar1 + (local_c << 0xb) / iVar3; + if (0x800 < iVar1) { + iVar1 = iVar1 + -0x800; + local_10 = local_10 + -param_1[6]; + local_14 = local_14 + -param_1[7]; + } + } + } + } + } + return; +} + + + +/* @0046b6d4 file=? name=FUN_0046b6d4 */ + +void __cdecl +FUN_0046b6d4(int param_1,ushort param_2,ushort param_3,int param_4,int param_5,int param_6, + int param_7,int param_8) + +{ + uint *puVar1; + int iVar2; + uint uVar3; + int iVar4; + int iVar5; + int iVar6; + uint local_10; + uint *local_c; + ushort *local_8; + + iVar6 = param_5; + if (*(int *)(param_1 + 0x14) != 0) { + iVar2 = *(int *)(param_1 + 0x28) - param_8; + iVar4 = *(int *)(param_1 + 0x28) - param_6; + if (param_7 < param_5) { + param_5 = param_7; + param_7 = iVar6; + } + iVar6 = iVar4; + if (iVar2 < iVar4) { + iVar6 = iVar2; + iVar2 = iVar4; + } + FUN_0046af20(param_1,iVar6,iVar2); + param_3 = ~param_3; + FUN_0046aec4(param_1,param_5,iVar6,(int *)&local_8,(int *)&local_c,(int *)&local_10); + iVar6 = (iVar2 - iVar6) + 1; + iVar2 = (param_7 - param_5) + 1; + iVar4 = *(int *)(param_1 + 0x18) - iVar2; + if (param_4 == 0) { + for (; 0 < iVar6; iVar6 = iVar6 + -1) { + puVar1 = local_c + *(int *)(param_1 + 0x1c); + uVar3 = local_10; + for (iVar5 = iVar2; 0 < iVar5; iVar5 = iVar5 + -1) { + *local_8 = *local_8 & param_3 | param_2; + local_8 = local_8 + 1; + *local_c = *local_c | uVar3; + DAT_00522cbc = DAT_00522cbc + 1; + uVar3 = uVar3 >> 1; + if (uVar3 == 0) { + local_c = local_c + 1; + uVar3 = 0x80000000; + } + } + local_8 = local_8 + iVar4; + local_c = puVar1; + } + } + else if (param_4 == 1) { + for (; 0 < iVar6; iVar6 = iVar6 + -1) { + puVar1 = local_c + *(int *)(param_1 + 0x1c); + uVar3 = local_10; + for (iVar5 = iVar2; 0 < iVar5; iVar5 = iVar5 + -1) { + *local_8 = *local_8 & param_2; + local_8 = local_8 + 1; + *local_c = *local_c | uVar3; + DAT_00522cbc = DAT_00522cbc + 1; + uVar3 = uVar3 >> 1; + if (uVar3 == 0) { + local_c = local_c + 1; + uVar3 = 0x80000000; + } + } + local_8 = local_8 + iVar4; + local_c = puVar1; + } + } + else if (param_4 == 2) { + for (; 0 < iVar6; iVar6 = iVar6 + -1) { + puVar1 = local_c + *(int *)(param_1 + 0x1c); + uVar3 = local_10; + for (iVar5 = iVar2; 0 < iVar5; iVar5 = iVar5 + -1) { + *local_8 = *local_8 | param_2; + local_8 = local_8 + 1; + *local_c = *local_c | uVar3; + DAT_00522cbc = DAT_00522cbc + 1; + uVar3 = uVar3 >> 1; + if (uVar3 == 0) { + local_c = local_c + 1; + uVar3 = 0x80000000; + } + } + local_8 = local_8 + iVar4; + local_c = puVar1; + } + } + else if (param_4 == 3) { + for (; 0 < iVar6; iVar6 = iVar6 + -1) { + puVar1 = local_c + *(int *)(param_1 + 0x1c); + uVar3 = local_10; + for (iVar5 = iVar2; 0 < iVar5; iVar5 = iVar5 + -1) { + *local_8 = *local_8 ^ param_2; + local_8 = local_8 + 1; + *local_c = *local_c | uVar3; + DAT_00522cbc = DAT_00522cbc + 1; + uVar3 = uVar3 >> 1; + if (uVar3 == 0) { + local_c = local_c + 1; + uVar3 = 0x80000000; + } + } + local_8 = local_8 + iVar4; + local_c = puVar1; + } + } + } + return; +} + + + +/* @0046b91c file=? name=FUN_0046b91c */ + +undefined4 __cdecl FUN_0046b91c(int param_1) + +{ + return *(undefined4 *)(param_1 + 0x14); +} + + + +/* @0046b92c file=? name=FUN_0046b92c */ + +void __cdecl +FUN_0046b92c(int param_1,ushort param_2,ushort param_3,int param_4,int param_5,int param_6, + int param_7,int param_8,int param_9,int param_10,int param_11,int param_12) + +{ + ushort *puVar1; + uint *puVar2; + uint uVar3; + uint uVar4; + int iVar5; + int iVar6; + int iVar7; + uint *local_28; + uint *local_24; + uint local_20; + ushort *local_1c; + ushort *local_18; + ushort *local_14; + uint local_10; + uint local_c; + int local_8; + + if (*(int *)(param_1 + 0x14) != 0) { + iVar5 = *(int *)(param_1 + 0x28) - param_7; + iVar6 = *(int *)(param_8 + 0x10) + -1; + iVar7 = iVar6 - param_10; + local_8 = (param_11 - param_9) + 1; + param_3 = ~param_3; + iVar6 = (iVar7 - (iVar6 - param_12)) + 1; + local_14 = (ushort *) + (*(int *)(param_8 + 0x18) + (param_9 >> 4) * 2 + *(int *)(param_8 + 0x14) * iVar7 * 2 + ); + local_10 = 1 << (0xf - ((byte)param_9 & 0xf) & 0x1f); + FUN_0046aec4(param_1,param_6,iVar5,(int *)&local_1c,(int *)&local_24,(int *)&local_20); + if (param_5 == 0x5a) { + FUN_0046af20(param_1,iVar5,iVar5 + local_8); + puVar2 = local_24; + uVar4 = local_20; + for (; 0 < iVar6; iVar6 = iVar6 + -1) { + iVar5 = *(int *)(param_8 + 0x14); + local_20 = uVar4 >> 1; + local_24 = puVar2; + if (local_20 == 0) { + local_24 = puVar2 + 1; + local_20 = 0x80000000; + } + puVar1 = local_1c + 1; + local_c = (uint)*local_14; + local_18 = local_14 + 1; + uVar3 = local_10; + for (iVar7 = local_8; 0 < iVar7; iVar7 = iVar7 + -1) { + if (uVar3 == 0) { + uVar3 = 0x8000; + local_c = (uint)*local_18; + local_18 = local_18 + 1; + } + if ((local_c & uVar3) != 0) { + if (param_4 == 0) { + *local_1c = *local_1c & param_3 | param_2; + } + else if (param_4 == 1) { + *local_1c = *local_1c & param_2; + } + else if (param_4 == 2) { + *local_1c = *local_1c | param_2; + } + else if (param_4 == 3) { + *local_1c = *local_1c ^ param_2; + } + *puVar2 = *puVar2 | uVar4; + DAT_00522cbc = DAT_00522cbc + 1; + } + uVar3 = (int)uVar3 >> 1; + puVar2 = puVar2 + *(int *)(param_1 + 0x1c); + local_1c = local_1c + *(int *)(param_1 + 0x18); + } + puVar2 = local_24; + uVar4 = local_20; + local_1c = puVar1; + local_14 = local_14 + -iVar5; + } + } + else if (param_5 == 0xb4) { + FUN_0046af20(param_1,iVar5,iVar5 + iVar6); + local_28 = local_24; + for (; 0 < iVar6; iVar6 = iVar6 + -1) { + iVar5 = *(int *)(param_8 + 0x14); + puVar2 = local_28 + *(int *)(param_1 + 0x1c); + puVar1 = local_1c + *(int *)(param_1 + 0x18); + local_c = (uint)*local_14; + local_18 = local_14 + 1; + uVar4 = local_20; + uVar3 = local_10; + for (iVar7 = local_8; 0 < iVar7; iVar7 = iVar7 + -1) { + if (uVar3 == 0) { + uVar3 = 0x8000; + local_c = (uint)*local_18; + local_18 = local_18 + 1; + } + if ((local_c & uVar3) != 0) { + if (param_4 == 0) { + *local_1c = *local_1c & param_3 | param_2; + } + else if (param_4 == 1) { + *local_1c = *local_1c & param_2; + } + else if (param_4 == 2) { + *local_1c = *local_1c | param_2; + } + else if (param_4 == 3) { + *local_1c = *local_1c ^ param_2; + } + *local_28 = *local_28 | uVar4; + DAT_00522cbc = DAT_00522cbc + 1; + } + uVar4 = uVar4 * 2; + if (uVar4 == 0) { + local_28 = local_28 + -1; + uVar4 = 1; + } + local_1c = local_1c + -1; + uVar3 = (int)uVar3 >> 1; + } + local_28 = puVar2; + local_1c = puVar1; + local_14 = local_14 + -iVar5; + } + } + else if (param_5 == 0x10e) { + if (-1 < param_6 - iVar6) { + FUN_0046af20(param_1,iVar5 - (local_8 + -1),iVar5); + puVar2 = local_24; + uVar4 = local_20; + for (; 0 < iVar6; iVar6 = iVar6 + -1) { + iVar5 = *(int *)(param_8 + 0x14); + local_20 = uVar4 << 1; + local_24 = puVar2; + if (local_20 == 0) { + local_24 = puVar2 + -1; + local_20 = 1; + } + puVar1 = local_1c + -1; + local_c = (uint)*local_14; + local_18 = local_14 + 1; + uVar3 = local_10; + for (iVar7 = local_8; 0 < iVar7; iVar7 = iVar7 + -1) { + if (uVar3 == 0) { + uVar3 = 0x8000; + local_c = (uint)*local_18; + local_18 = local_18 + 1; + } + if ((local_c & uVar3) != 0) { + if (param_4 == 0) { + *local_1c = *local_1c & param_3 | param_2; + } + else if (param_4 == 1) { + *local_1c = *local_1c & param_2; + } + else if (param_4 == 2) { + *local_1c = *local_1c | param_2; + } + else if (param_4 == 3) { + *local_1c = *local_1c ^ param_2; + } + *puVar2 = *puVar2 | uVar4; + DAT_00522cbc = DAT_00522cbc + 1; + } + uVar3 = (int)uVar3 >> 1; + puVar2 = puVar2 + -*(int *)(param_1 + 0x1c); + local_1c = local_1c + -*(int *)(param_1 + 0x18); + } + puVar2 = local_24; + uVar4 = local_20; + local_1c = puVar1; + local_14 = local_14 + -iVar5; + } + } + } + else { + FUN_0046af20(param_1,(iVar5 - iVar6) + 1,iVar5); + local_28 = local_24; + for (; 0 < iVar6; iVar6 = iVar6 + -1) { + iVar5 = *(int *)(param_8 + 0x14); + puVar2 = local_28 + -*(int *)(param_1 + 0x1c); + puVar1 = local_1c + -*(int *)(param_1 + 0x18); + local_c = (uint)*local_14; + local_18 = local_14 + 1; + uVar4 = local_20; + uVar3 = local_10; + for (iVar7 = local_8; 0 < iVar7; iVar7 = iVar7 + -1) { + if (uVar3 == 0) { + uVar3 = 0x8000; + local_c = (uint)*local_18; + local_18 = local_18 + 1; + } + if ((local_c & uVar3) != 0) { + if (param_4 == 0) { + *local_1c = *local_1c & param_3 | param_2; + } + else if (param_4 == 1) { + *local_1c = *local_1c & param_2; + } + else if (param_4 == 2) { + *local_1c = *local_1c | param_2; + } + else if (param_4 == 3) { + *local_1c = *local_1c ^ param_2; + } + *local_28 = *local_28 | uVar4; + DAT_00522cbc = DAT_00522cbc + 1; + } + uVar4 = uVar4 >> 1; + if (uVar4 == 0) { + local_28 = local_28 + 1; + uVar4 = 0x80000000; + } + local_1c = local_1c + 1; + uVar3 = (int)uVar3 >> 1; + } + local_28 = puVar2; + local_1c = puVar1; + local_14 = local_14 + -iVar5; + } + } + } + return; +} + + + +/* @0046bdfc file=? name=FUN_0046bdfc */ + +void __cdecl +FUN_0046bdfc(int param_1,ushort param_2,ushort param_3,ushort param_4,int param_5,int param_6, + int param_7,int param_8,int param_9,int param_10,int param_11,int param_12,int param_13) + +{ + ushort *puVar1; + uint *puVar2; + uint uVar3; + ushort uVar4; + uint uVar5; + int iVar6; + int iVar7; + int iVar8; + uint *local_2c; + uint *local_28; + uint local_24 [2]; + ushort *local_1c; + ushort *local_18; + ushort *local_14; + uint local_10; + uint local_c; + int local_8; + + if (*(int *)(param_1 + 0x14) != 0) { + iVar6 = *(int *)(param_1 + 0x28) - param_8; + iVar7 = *(int *)(param_9 + 0x10) + -1; + iVar8 = iVar7 - param_11; + local_8 = (param_12 - param_10) + 1; + param_4 = ~param_4; + iVar7 = (iVar8 - (iVar7 - param_13)) + 1; + local_14 = (ushort *) + (*(int *)(param_9 + 0x18) + (param_10 >> 4) * 2 + + *(int *)(param_9 + 0x14) * iVar8 * 2); + local_10 = 1 << (0xf - ((byte)param_10 & 0xf) & 0x1f); + FUN_0046aec4(param_1,param_7,iVar6,(int *)&local_1c,(int *)&local_28,(int *)local_24); + if (param_6 == 0x5a) { + FUN_0046af20(param_1,iVar6,iVar6 + local_8); + puVar2 = local_28; + uVar5 = local_24[0]; + for (; 0 < iVar7; iVar7 = iVar7 + -1) { + iVar6 = *(int *)(param_9 + 0x14); + local_24[0] = uVar5 >> 1; + local_28 = puVar2; + if (local_24[0] == 0) { + local_28 = puVar2 + 1; + local_24[0] = 0x80000000; + } + puVar1 = local_1c + 1; + local_c = (uint)*local_14; + local_18 = local_14 + 1; + uVar3 = local_10; + for (iVar8 = local_8; 0 < iVar8; iVar8 = iVar8 + -1) { + if (uVar3 == 0) { + uVar3 = 0x8000; + local_c = (uint)*local_18; + local_18 = local_18 + 1; + } + uVar4 = param_3; + if ((local_c & uVar3) != 0) { + uVar4 = param_2; + } + if (param_5 == 0) { + *local_1c = uVar4 | *local_1c & param_4; + } + else if (param_5 == 1) { + *local_1c = *local_1c & uVar4; + } + else if (param_5 == 2) { + *local_1c = *local_1c | uVar4; + } + else if (param_5 == 3) { + *local_1c = *local_1c ^ uVar4; + } + uVar3 = (int)uVar3 >> 1; + *puVar2 = *puVar2 | uVar5; + DAT_00522cbc = DAT_00522cbc + 1; + puVar2 = puVar2 + *(int *)(param_1 + 0x1c); + local_1c = local_1c + *(int *)(param_1 + 0x18); + } + puVar2 = local_28; + uVar5 = local_24[0]; + local_1c = puVar1; + local_14 = local_14 + -iVar6; + } + } + else if (param_6 == 0xb4) { + FUN_0046af20(param_1,iVar6,iVar6 + iVar7); + local_2c = local_28; + for (; 0 < iVar7; iVar7 = iVar7 + -1) { + iVar6 = *(int *)(param_9 + 0x14); + puVar2 = local_2c + *(int *)(param_1 + 0x1c); + puVar1 = local_1c + *(int *)(param_1 + 0x18); + local_c = (uint)*local_14; + local_18 = local_14 + 1; + uVar5 = local_24[0]; + uVar3 = local_10; + for (iVar8 = local_8; 0 < iVar8; iVar8 = iVar8 + -1) { + if (uVar3 == 0) { + uVar3 = 0x8000; + local_c = (uint)*local_18; + local_18 = local_18 + 1; + } + uVar4 = param_3; + if ((local_c & uVar3) != 0) { + uVar4 = param_2; + } + if (param_5 == 0) { + *local_1c = uVar4 | *local_1c & param_4; + } + else if (param_5 == 1) { + *local_1c = *local_1c & uVar4; + } + else if (param_5 == 2) { + *local_1c = *local_1c | uVar4; + } + else if (param_5 == 3) { + *local_1c = *local_1c ^ uVar4; + } + *local_2c = *local_2c | uVar5; + DAT_00522cbc = DAT_00522cbc + 1; + uVar5 = uVar5 * 2; + if (uVar5 == 0) { + local_2c = local_2c + -1; + uVar5 = 1; + } + local_1c = local_1c + -1; + uVar3 = (int)uVar3 >> 1; + } + local_2c = puVar2; + local_1c = puVar1; + local_14 = local_14 + -iVar6; + } + } + else if (param_6 == 0x10e) { + FUN_0046af20(param_1,iVar6 - (local_8 + -1),iVar6); + puVar2 = local_28; + uVar5 = local_24[0]; + for (; 0 < iVar7; iVar7 = iVar7 + -1) { + iVar6 = *(int *)(param_9 + 0x14); + local_24[0] = uVar5 << 1; + local_28 = puVar2; + if (local_24[0] == 0) { + local_28 = puVar2 + -1; + local_24[0] = 1; + } + puVar1 = local_1c + -1; + local_c = (uint)*local_14; + local_18 = local_14 + 1; + uVar3 = local_10; + for (iVar8 = local_8; 0 < iVar8; iVar8 = iVar8 + -1) { + if (uVar3 == 0) { + uVar3 = 0x8000; + local_c = (uint)*local_18; + local_18 = local_18 + 1; + } + uVar4 = param_3; + if ((local_c & uVar3) != 0) { + uVar4 = param_2; + } + if (param_5 == 0) { + *local_1c = uVar4 | *local_1c & param_4; + } + else if (param_5 == 1) { + *local_1c = *local_1c & uVar4; + } + else if (param_5 == 2) { + *local_1c = *local_1c | uVar4; + } + else if (param_5 == 3) { + *local_1c = *local_1c ^ uVar4; + } + uVar3 = (int)uVar3 >> 1; + *puVar2 = *puVar2 | uVar5; + DAT_00522cbc = DAT_00522cbc + 1; + puVar2 = puVar2 + -*(int *)(param_1 + 0x1c); + local_1c = local_1c + -*(int *)(param_1 + 0x18); + } + puVar2 = local_28; + uVar5 = local_24[0]; + local_1c = puVar1; + local_14 = local_14 + -iVar6; + } + } + else { + FUN_0046af20(param_1,(iVar6 - iVar7) + 1,iVar6); + local_2c = local_28; + for (; 0 < iVar7; iVar7 = iVar7 + -1) { + iVar6 = *(int *)(param_9 + 0x14); + puVar2 = local_2c + -*(int *)(param_1 + 0x1c); + puVar1 = local_1c + -*(int *)(param_1 + 0x18); + local_c = (uint)*local_14; + local_18 = local_14 + 1; + uVar5 = local_24[0]; + uVar3 = local_10; + for (iVar8 = local_8; 0 < iVar8; iVar8 = iVar8 + -1) { + if (uVar3 == 0) { + uVar3 = 0x8000; + local_c = (uint)*local_18; + local_18 = local_18 + 1; + } + uVar4 = param_3; + if ((local_c & uVar3) != 0) { + uVar4 = param_2; + } + if (param_5 == 0) { + *local_1c = uVar4 | *local_1c & param_4; + } + else if (param_5 == 1) { + *local_1c = *local_1c & uVar4; + } + else if (param_5 == 2) { + *local_1c = *local_1c | uVar4; + } + else if (param_5 == 3) { + *local_1c = *local_1c ^ uVar4; + } + *local_2c = *local_2c | uVar5; + DAT_00522cbc = DAT_00522cbc + 1; + uVar5 = uVar5 >> 1; + if (uVar5 == 0) { + local_2c = local_2c + 1; + uVar5 = 0x80000000; + } + local_1c = local_1c + 1; + uVar3 = (int)uVar3 >> 1; + } + local_2c = puVar2; + local_1c = puVar1; + local_14 = local_14 + -iVar6; + } + } + } + return; +} + + + +/* @0046c324 file=? name=FUN_0046c324 */ + +void __cdecl +FUN_0046c324(int param_1,int param_2,ushort param_3,int param_4,int param_5,int param_6,int param_7, + int param_8,int *param_9,int param_10,int param_11,int param_12,int param_13) + +{ + byte *pbVar1; + ushort *puVar2; + byte bVar3; + ushort uVar4; + uint *puVar5; + uint uVar6; + int iVar7; + int iVar8; + int iVar9; + uint *local_20; + uint *local_1c; + uint local_18; + ushort *local_14 [2]; + byte *local_c; + int local_8; + + if (*(int *)(param_1 + 0x14) != 0) { + iVar7 = *(int *)(param_1 + 0x28) - param_8; + iVar8 = (param_9[1] + -1) - param_11; + local_8 = (param_12 - param_10) + 1; + param_3 = ~param_3; + iVar9 = (iVar8 - ((param_9[1] + -1) - param_13)) + 1; + local_c = (byte *)(param_10 + param_9[2] + *param_9 * iVar8); + FUN_0046aec4(param_1,param_7,iVar7,(int *)local_14,(int *)&local_1c,(int *)&local_18); + if (param_5 == 0) { + if (param_6 == 0x5a) { + FUN_0046af20(param_1,iVar7,iVar7 + local_8); + puVar5 = local_1c; + uVar6 = local_18; + for (; 0 < iVar9; iVar9 = iVar9 + -1) { + pbVar1 = local_c + -*param_9; + local_18 = uVar6 >> 1; + local_1c = puVar5; + if (local_18 == 0) { + local_1c = puVar5 + 1; + local_18 = 0x80000000; + } + puVar2 = local_14[0] + 1; + for (iVar7 = local_8; 0 < iVar7; iVar7 = iVar7 + -1) { + bVar3 = *local_c; + local_c = local_c + 1; + if (bVar3 != 0) { + uVar4 = *(ushort *)(param_2 + (uint)bVar3 * 4); + if (param_4 == 0) { + *local_14[0] = uVar4 | *local_14[0] & param_3; + } + else if (param_4 == 1) { + *local_14[0] = *local_14[0] & uVar4; + } + else if (param_4 == 2) { + *local_14[0] = *local_14[0] | uVar4; + } + else if (param_4 == 3) { + *local_14[0] = *local_14[0] ^ uVar4; + } + *puVar5 = *puVar5 | uVar6; + DAT_00522cbc = DAT_00522cbc + 1; + } + puVar5 = puVar5 + *(int *)(param_1 + 0x1c); + local_14[0] = local_14[0] + *(int *)(param_1 + 0x18); + } + puVar5 = local_1c; + uVar6 = local_18; + local_14[0] = puVar2; + local_c = pbVar1; + } + } + else if (param_6 == 0xb4) { + FUN_0046af20(param_1,iVar7,iVar7 + iVar9); + local_20 = local_1c; + for (; 0 < iVar9; iVar9 = iVar9 + -1) { + pbVar1 = local_c + -*param_9; + puVar5 = local_20 + *(int *)(param_1 + 0x1c); + puVar2 = local_14[0] + *(int *)(param_1 + 0x18); + uVar6 = local_18; + for (iVar7 = local_8; 0 < iVar7; iVar7 = iVar7 + -1) { + bVar3 = *local_c; + local_c = local_c + 1; + if (bVar3 != 0) { + uVar4 = *(ushort *)(param_2 + (uint)bVar3 * 4); + if (param_4 == 0) { + *local_14[0] = uVar4 | *local_14[0] & param_3; + } + else if (param_4 == 1) { + *local_14[0] = *local_14[0] & uVar4; + } + else if (param_4 == 2) { + *local_14[0] = *local_14[0] | uVar4; + } + else if (param_4 == 3) { + *local_14[0] = *local_14[0] ^ uVar4; + } + *local_20 = *local_20 | uVar6; + DAT_00522cbc = DAT_00522cbc + 1; + } + uVar6 = uVar6 * 2; + if (uVar6 == 0) { + local_20 = local_20 + -1; + uVar6 = 1; + } + local_14[0] = local_14[0] + -1; + } + local_20 = puVar5; + local_14[0] = puVar2; + local_c = pbVar1; + } + } + else if (param_6 == 0x10e) { + FUN_0046af20(param_1,iVar7 - (local_8 + -1),iVar7); + puVar5 = local_1c; + uVar6 = local_18; + for (; 0 < iVar9; iVar9 = iVar9 + -1) { + pbVar1 = local_c + -*param_9; + local_18 = uVar6 << 1; + local_1c = puVar5; + if (local_18 == 0) { + local_1c = puVar5 + -1; + local_18 = 1; + } + puVar2 = local_14[0] + -1; + for (iVar7 = local_8; 0 < iVar7; iVar7 = iVar7 + -1) { + bVar3 = *local_c; + local_c = local_c + 1; + if (bVar3 != 0) { + uVar4 = *(ushort *)(param_2 + (uint)bVar3 * 4); + if (param_4 == 0) { + *local_14[0] = uVar4 | *local_14[0] & param_3; + } + else if (param_4 == 1) { + *local_14[0] = *local_14[0] & uVar4; + } + else if (param_4 == 2) { + *local_14[0] = *local_14[0] | uVar4; + } + else if (param_4 == 3) { + *local_14[0] = *local_14[0] ^ uVar4; + } + *puVar5 = *puVar5 | uVar6; + DAT_00522cbc = DAT_00522cbc + 1; + } + puVar5 = puVar5 + -*(int *)(param_1 + 0x1c); + local_14[0] = local_14[0] + -*(int *)(param_1 + 0x18); + } + puVar5 = local_1c; + uVar6 = local_18; + local_14[0] = puVar2; + local_c = pbVar1; + } + } + else { + FUN_0046af20(param_1,(iVar7 - iVar9) + 1,iVar7); + local_20 = local_1c; + for (; 0 < iVar9; iVar9 = iVar9 + -1) { + pbVar1 = local_c + -*param_9; + puVar5 = local_20 + -*(int *)(param_1 + 0x1c); + puVar2 = local_14[0] + -*(int *)(param_1 + 0x18); + uVar6 = local_18; + for (iVar7 = local_8; 0 < iVar7; iVar7 = iVar7 + -1) { + bVar3 = *local_c; + local_c = local_c + 1; + if (bVar3 != 0) { + uVar4 = *(ushort *)(param_2 + (uint)bVar3 * 4); + if (param_4 == 0) { + *local_14[0] = uVar4 | *local_14[0] & param_3; + } + else if (param_4 == 1) { + *local_14[0] = *local_14[0] & uVar4; + } + else if (param_4 == 2) { + *local_14[0] = *local_14[0] | uVar4; + } + else if (param_4 == 3) { + *local_14[0] = *local_14[0] ^ uVar4; + } + *local_20 = *local_20 | uVar6; + DAT_00522cbc = DAT_00522cbc + 1; + } + uVar6 = uVar6 >> 1; + if (uVar6 == 0) { + local_20 = local_20 + 1; + uVar6 = 0x80000000; + } + local_14[0] = local_14[0] + 1; + } + local_20 = puVar5; + local_14[0] = puVar2; + local_c = pbVar1; + } + } + } + else if (param_6 == 0x5a) { + FUN_0046af20(param_1,iVar7,iVar7 + local_8); + puVar5 = local_1c; + uVar6 = local_18; + for (; 0 < iVar9; iVar9 = iVar9 + -1) { + pbVar1 = local_c + -*param_9; + local_18 = uVar6 >> 1; + local_1c = puVar5; + if (local_18 == 0) { + local_1c = puVar5 + 1; + local_18 = 0x80000000; + } + puVar2 = local_14[0] + 1; + for (iVar7 = local_8; 0 < iVar7; iVar7 = iVar7 + -1) { + bVar3 = *local_c; + local_c = local_c + 1; + uVar4 = *(ushort *)(param_2 + (uint)bVar3 * 4); + if (param_4 == 0) { + *local_14[0] = uVar4 | *local_14[0] & param_3; + } + else if (param_4 == 1) { + *local_14[0] = *local_14[0] & uVar4; + } + else if (param_4 == 2) { + *local_14[0] = *local_14[0] | uVar4; + } + else if (param_4 == 3) { + *local_14[0] = *local_14[0] ^ uVar4; + } + *puVar5 = *puVar5 | uVar6; + DAT_00522cbc = DAT_00522cbc + 1; + puVar5 = puVar5 + *(int *)(param_1 + 0x1c); + local_14[0] = local_14[0] + *(int *)(param_1 + 0x18); + } + puVar5 = local_1c; + uVar6 = local_18; + local_14[0] = puVar2; + local_c = pbVar1; + } + } + else if (param_6 == 0xb4) { + FUN_0046af20(param_1,iVar7,iVar7 + iVar9); + local_20 = local_1c; + for (; 0 < iVar9; iVar9 = iVar9 + -1) { + pbVar1 = local_c + -*param_9; + puVar5 = local_20 + *(int *)(param_1 + 0x1c); + puVar2 = local_14[0] + *(int *)(param_1 + 0x18); + uVar6 = local_18; + for (iVar7 = local_8; 0 < iVar7; iVar7 = iVar7 + -1) { + bVar3 = *local_c; + local_c = local_c + 1; + uVar4 = *(ushort *)(param_2 + (uint)bVar3 * 4); + if (param_4 == 0) { + *local_14[0] = uVar4 | *local_14[0] & param_3; + } + else if (param_4 == 1) { + *local_14[0] = *local_14[0] & uVar4; + } + else if (param_4 == 2) { + *local_14[0] = *local_14[0] | uVar4; + } + else if (param_4 == 3) { + *local_14[0] = *local_14[0] ^ uVar4; + } + *local_20 = *local_20 | uVar6; + DAT_00522cbc = DAT_00522cbc + 1; + uVar6 = uVar6 * 2; + if (uVar6 == 0) { + local_20 = local_20 + -1; + uVar6 = 1; + } + local_14[0] = local_14[0] + -1; + } + local_20 = puVar5; + local_14[0] = puVar2; + local_c = pbVar1; + } + } + else if (param_6 == 0x10e) { + FUN_0046af20(param_1,iVar7 - (local_8 + -1),iVar7); + puVar5 = local_1c; + uVar6 = local_18; + for (; 0 < iVar9; iVar9 = iVar9 + -1) { + pbVar1 = local_c + -*param_9; + local_18 = uVar6 << 1; + local_1c = puVar5; + if (local_18 == 0) { + local_1c = puVar5 + -1; + local_18 = 1; + } + puVar2 = local_14[0] + -1; + for (iVar7 = local_8; 0 < iVar7; iVar7 = iVar7 + -1) { + bVar3 = *local_c; + local_c = local_c + 1; + uVar4 = *(ushort *)(param_2 + (uint)bVar3 * 4); + if (param_4 == 0) { + *local_14[0] = uVar4 | *local_14[0] & param_3; + } + else if (param_4 == 1) { + *local_14[0] = *local_14[0] & uVar4; + } + else if (param_4 == 2) { + *local_14[0] = *local_14[0] | uVar4; + } + else if (param_4 == 3) { + *local_14[0] = *local_14[0] ^ uVar4; + } + *puVar5 = *puVar5 | uVar6; + DAT_00522cbc = DAT_00522cbc + 1; + puVar5 = puVar5 + -*(int *)(param_1 + 0x1c); + local_14[0] = local_14[0] + -*(int *)(param_1 + 0x18); + } + puVar5 = local_1c; + uVar6 = local_18; + local_14[0] = puVar2; + local_c = pbVar1; + } + } + else { + FUN_0046af20(param_1,(iVar7 - iVar9) + 1,iVar7); + local_20 = local_1c; + for (; 0 < iVar9; iVar9 = iVar9 + -1) { + pbVar1 = local_c + -*param_9; + puVar5 = local_20 + -*(int *)(param_1 + 0x1c); + puVar2 = local_14[0] + -*(int *)(param_1 + 0x18); + uVar6 = local_18; + for (iVar7 = local_8; 0 < iVar7; iVar7 = iVar7 + -1) { + bVar3 = *local_c; + local_c = local_c + 1; + uVar4 = *(ushort *)(param_2 + (uint)bVar3 * 4); + if (param_4 == 0) { + *local_14[0] = uVar4 | *local_14[0] & param_3; + } + else if (param_4 == 1) { + *local_14[0] = *local_14[0] & uVar4; + } + else if (param_4 == 2) { + *local_14[0] = *local_14[0] | uVar4; + } + else if (param_4 == 3) { + *local_14[0] = *local_14[0] ^ uVar4; + } + *local_20 = *local_20 | uVar6; + DAT_00522cbc = DAT_00522cbc + 1; + uVar6 = uVar6 >> 1; + if (uVar6 == 0) { + local_20 = local_20 + 1; + uVar6 = 0x80000000; + } + local_14[0] = local_14[0] + 1; + } + local_20 = puVar5; + local_14[0] = puVar2; + local_c = pbVar1; + } + } + } + return; +} + + + +/* @0046cac4 file=? name=FUN_0046cac4 */ + +void __cdecl +FUN_0046cac4(int param_1,ushort param_2,ushort param_3,int param_4,int param_5,int param_6, + int param_7,int *param_8,int param_9,int param_10,int param_11,int param_12) + +{ + char *pcVar1; + ushort *puVar2; + char cVar3; + uint *puVar4; + uint uVar5; + int iVar6; + int iVar7; + int iVar8; + uint *local_20; + uint *local_1c; + uint local_18; + ushort *local_14; + char *local_10; + int local_8; + + if (*(int *)(param_1 + 0x14) != 0) { + iVar6 = *(int *)(param_1 + 0x28) - param_7; + iVar7 = (param_8[1] + -1) - param_10; + local_8 = (param_11 - param_9) + 1; + param_3 = ~param_3; + iVar8 = (iVar7 - ((param_8[1] + -1) - param_12)) + 1; + local_10 = (char *)(param_9 + param_8[2] + *param_8 * iVar7); + FUN_0046aec4(param_1,param_6,iVar6,(int *)&local_14,(int *)&local_1c,(int *)&local_18); + if (param_5 == 0x5a) { + FUN_0046af20(param_1,iVar6,iVar6 + local_8); + puVar4 = local_1c; + uVar5 = local_18; + for (; 0 < iVar8; iVar8 = iVar8 + -1) { + pcVar1 = local_10 + -*param_8; + local_18 = uVar5 >> 1; + local_1c = puVar4; + if (local_18 == 0) { + local_1c = puVar4 + 1; + local_18 = 0x80000000; + } + puVar2 = local_14 + 1; + for (iVar6 = local_8; 0 < iVar6; iVar6 = iVar6 + -1) { + cVar3 = *local_10; + local_10 = local_10 + 1; + if (cVar3 != '\0') { + if (param_4 == 0) { + *local_14 = *local_14 & param_3 | param_2; + } + else if (param_4 == 1) { + *local_14 = *local_14 & param_2; + } + else if (param_4 == 2) { + *local_14 = *local_14 | param_2; + } + else if (param_4 == 3) { + *local_14 = *local_14 ^ param_2; + } + *puVar4 = *puVar4 | uVar5; + DAT_00522cbc = DAT_00522cbc + 1; + } + puVar4 = puVar4 + *(int *)(param_1 + 0x1c); + local_14 = local_14 + *(int *)(param_1 + 0x18); + } + puVar4 = local_1c; + uVar5 = local_18; + local_14 = puVar2; + local_10 = pcVar1; + } + } + else if (param_5 == 0xb4) { + FUN_0046af20(param_1,iVar6,iVar6 + iVar8); + local_20 = local_1c; + for (; 0 < iVar8; iVar8 = iVar8 + -1) { + pcVar1 = local_10 + -*param_8; + puVar4 = local_20 + *(int *)(param_1 + 0x1c); + puVar2 = local_14 + *(int *)(param_1 + 0x18); + uVar5 = local_18; + for (iVar6 = local_8; 0 < iVar6; iVar6 = iVar6 + -1) { + cVar3 = *local_10; + local_10 = local_10 + 1; + if (cVar3 != '\0') { + if (param_4 == 0) { + *local_14 = *local_14 & param_3 | param_2; + } + else if (param_4 == 1) { + *local_14 = *local_14 & param_2; + } + else if (param_4 == 2) { + *local_14 = *local_14 | param_2; + } + else if (param_4 == 3) { + *local_14 = *local_14 ^ param_2; + } + *local_20 = *local_20 | uVar5; + DAT_00522cbc = DAT_00522cbc + 1; + } + uVar5 = uVar5 * 2; + if (uVar5 == 0) { + local_20 = local_20 + -1; + uVar5 = 1; + } + local_14 = local_14 + -1; + } + local_20 = puVar4; + local_14 = puVar2; + local_10 = pcVar1; + } + } + else if (param_5 == 0x10e) { + FUN_0046af20(param_1,iVar6 - local_8,iVar6); + puVar4 = local_1c; + uVar5 = local_18; + for (; 0 < iVar8; iVar8 = iVar8 + -1) { + pcVar1 = local_10 + -*param_8; + local_18 = uVar5 << 1; + local_1c = puVar4; + if (local_18 == 0) { + local_1c = puVar4 + -1; + local_18 = 1; + } + puVar2 = local_14 + -1; + for (iVar6 = local_8; 0 < iVar6; iVar6 = iVar6 + -1) { + cVar3 = *local_10; + local_10 = local_10 + 1; + if (cVar3 != '\0') { + if (param_4 == 0) { + *local_14 = *local_14 & param_3 | param_2; + } + else if (param_4 == 1) { + *local_14 = *local_14 & param_2; + } + else if (param_4 == 2) { + *local_14 = *local_14 | param_2; + } + else if (param_4 == 3) { + *local_14 = *local_14 ^ param_2; + } + *puVar4 = *puVar4 | uVar5; + DAT_00522cbc = DAT_00522cbc + 1; + } + puVar4 = puVar4 + -*(int *)(param_1 + 0x1c); + local_14 = local_14 + -*(int *)(param_1 + 0x18); + } + puVar4 = local_1c; + uVar5 = local_18; + local_14 = puVar2; + local_10 = pcVar1; + } + } + else { + FUN_0046af20(param_1,(iVar6 - iVar8) + 1,iVar6); + local_20 = local_1c; + for (; 0 < iVar8; iVar8 = iVar8 + -1) { + pcVar1 = local_10 + -*param_8; + puVar4 = local_20 + -*(int *)(param_1 + 0x1c); + puVar2 = local_14 + -*(int *)(param_1 + 0x18); + uVar5 = local_18; + for (iVar6 = local_8; 0 < iVar6; iVar6 = iVar6 + -1) { + cVar3 = *local_10; + local_10 = local_10 + 1; + if (cVar3 != '\0') { + if (param_4 == 0) { + *local_14 = *local_14 & param_3 | param_2; + } + else if (param_4 == 1) { + *local_14 = *local_14 & param_2; + } + else if (param_4 == 2) { + *local_14 = *local_14 | param_2; + } + else if (param_4 == 3) { + *local_14 = *local_14 ^ param_2; + } + *local_20 = *local_20 | uVar5; + DAT_00522cbc = DAT_00522cbc + 1; + } + uVar5 = uVar5 >> 1; + if (uVar5 == 0) { + local_20 = local_20 + 1; + uVar5 = 0x80000000; + } + local_14 = local_14 + 1; + } + local_20 = puVar4; + local_14 = puVar2; + local_10 = pcVar1; + } + } + } + return; +} + + + +/* @0046ced4 file=? name=FUN_0046ced4 */ + +int * __cdecl +FUN_0046ced4(int *param_1,uint param_2,int param_3,int param_4,int param_5,int param_6,int param_7, + int param_8,int param_9) + +{ + int *piVar1; + undefined4 extraout_ECX; + undefined4 extraout_EDX; + int iVar2; + int *piVar3; + short *psVar4; + int local_8; + + FUN_0046ab50(param_1,param_3,param_4); + *param_1 = (int)&PTR_FUN_004f4d3c; + piVar3 = param_1 + 0x20; + FUN_004de998(piVar3,0x31c,4,1,FUN_0046e6ec); + param_1[0x10] = param_5 << 10; + param_1[0x11] = param_5 / param_6; + param_1[0x12] = param_7; + param_1[0x13] = param_8; + param_1[0x14] = param_9; + param_1[0x15] = -1; + FUN_0047d70c(param_2,param_1[0x13]); + FUN_0047d7da(extraout_ECX,extraout_EDX,1); + FUN_0046d4a0((int)param_1,0.0); + psVar4 = &DAT_004f4b34; + local_8 = 0; + do { + *(short *)piVar3 = *psVar4; + piVar3[1] = 0; + piVar3[0xc3] = 0; + piVar3[0xc4] = 0; + piVar3[0xc6] = -1; + piVar1 = piVar3 + 0xc5; + iVar2 = 0; + do { + *(undefined1 *)piVar1 = 0xff; + iVar2 = iVar2 + 1; + piVar1 = (int *)((int)piVar1 + 1); + } while (iVar2 < 4); + if (*psVar4 != 0x3c6) { + FUN_0047d8cb(0,iVar2,*psVar4); + } + psVar4 = psVar4 + 1; + local_8 = local_8 + 1; + piVar3 = piVar3 + 199; + } while (local_8 < 4); + param_1[0x15] = -1; + FUN_0046d404((int)param_1); + DAT_00522cbc = 0; + DAT_00522cc0 = 0; + DAT_00522cc4 = 0; + (**(code **)(*param_1 + 0x1c))(param_1,0,0xffff,0,0,0,param_1[9],param_1[10]); + (**(code **)(*param_1 + 8))(param_1,0); + return param_1; +} + + + +/* @0046d050 file=? name=FUN_0046d050 */ + +void __cdecl FUN_0046d050(int *param_1,byte param_2) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + int *piVar4; + undefined4 extraout_ECX; + undefined4 extraout_EDX; + double local_c; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f4d3c; + FUN_0047d70c(3,0); + uVar3 = DAT_00522cc4; + uVar2 = DAT_00522cc0; + uVar1 = DAT_00522cbc; + if (DAT_00522cc0 == 0) { + local_c = 0.0; + } + else { + local_c = (double)(int)DAT_00522cbc / (double)(int)DAT_00522cc0; + } + FUN_004dbb24(&DAT_00524e20,s_SVGA16___SVGA16__pixel_managemen_004f4baf,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_Number_of_dirty_pixels___004f4be9,(char *)0x0); + piVar4 = FUN_004db78c(&DAT_00524e20,uVar1); + FUN_004dbb24(piVar4,s_Number_of_transferred_pixels__004f4c08,(char *)0x0); + piVar4 = FUN_004db78c(piVar4,uVar2); + FUN_004dbb24(piVar4,s_Times_overflowed___004f4c27,(char *)0x0); + piVar4 = FUN_004db78c(piVar4,uVar3); + FUN_004dbb24(piVar4,s_Ratio___004f4c46,(char *)0x0); + piVar4 = FUN_004db634(piVar4,(float10)local_c); + FUN_004dbb24(piVar4,s__________________________________004f4c4f,(char *)0x0); + FUN_0047d7da(extraout_ECX,extraout_EDX,0); + FUN_004de8d4(param_1 + 0x20,0x31c,4,1,FUN_0046e702); + FUN_0046ac08(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0046d1a8 file=? name=FUN_0046d1a8 */ + +void FUN_0046d1a8(void) + +{ + FUN_0046ac68(); + return; +} + + + +/* @0046d1b8 file=? name=FUN_0046d1b8 */ + +void __cdecl FUN_0046d1b8(int param_1,char *param_2) + +{ + char cVar1; + uint uVar2; + uint uVar3; + char *pcVar4; + char *pcVar5; + char local_54 [80]; + + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_SVGA16__004f4c89,(char *)0x0); + uVar2 = 0xffffffff; + do { + pcVar4 = param_2; + if (uVar2 == 0) break; + uVar2 = uVar2 - 1; + pcVar4 = param_2 + 1; + cVar1 = *param_2; + param_2 = pcVar4; + } while (cVar1 != '\0'); + uVar2 = ~uVar2; + pcVar4 = pcVar4 + -uVar2; + pcVar5 = local_54; + for (uVar3 = uVar2 >> 2; uVar3 != 0; uVar3 = uVar3 - 1) { + *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4; + pcVar4 = pcVar4 + 4; + pcVar5 = pcVar5 + 4; + } + for (uVar2 = uVar2 & 3; uVar2 != 0; uVar2 = uVar2 - 1) { + *pcVar5 = *pcVar4; + pcVar4 = pcVar4 + 1; + pcVar5 = pcVar5 + 1; + } + FUN_004d49b8(local_54,&DAT_004f4c92); + FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_SVGA16__004f4c96,(char *)0x0); + FUN_0046ac74(param_1,local_54); + return; +} + + + +/* @0046d260 file=? name=FUN_0046d260 */ + +undefined4 __cdecl FUN_0046d260(int param_1,int param_2) + +{ + char cVar1; + int iVar2; + undefined1 *puVar3; + int iVar4; + undefined4 *puVar5; + undefined4 uVar6; + char *this; + int iVar7; + undefined8 uVar8; + int local_14; + int local_10; + char *local_c; + + if (*(int *)(param_1 + 0x14) == 0) { + uVar6 = 0; + } + else { + if (param_2 != 0) { + FUN_004d4988(*(undefined4 **)(param_1 + 0x38),1,*(uint *)(param_1 + 0x20)); + } + iVar2 = *(int *)(param_1 + 0x5c); + if (*(int *)(param_1 + 0x50) == 0) { + local_c = (char *)0x40; + local_10 = *(int *)(param_1 + 0x18) * 2; + } + else { + local_c = (char *)0x20; + local_10 = *(int *)(param_1 + 0x18); + } + local_14 = 0xf; + do { + this = *(char **)(param_1 + 100); + puVar3 = *(undefined1 **)(param_1 + 100); + cVar1 = *this; + *(int *)(param_1 + 100) = *(int *)(param_1 + 100) + 1; + *puVar3 = 0; + if (cVar1 == '\0') { + *(int *)(param_1 + 0x6c) = *(int *)(param_1 + 0x6c) + *(int *)(param_1 + 0x1c) * 4; + *(int *)(param_1 + 0x68) = *(int *)(param_1 + 0x68) + *(int *)(param_1 + 0x18) * 2; + *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) + local_10; + if (*(int *)(param_1 + 0x40) <= *(int *)(param_1 + 0x60)) { + *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) - *(int *)(param_1 + 0x40); + *(int *)(param_1 + 0x58) = *(int *)(param_1 + 0x58) + *(int *)(param_1 + 0x44); + } + } + else { + local_14 = local_14 + -1; + for (iVar7 = 0; iVar7 < *(int *)(param_1 + 0x1c); iVar7 = iVar7 + 1) { + iVar4 = **(int **)(param_1 + 0x6c); + puVar5 = *(undefined4 **)(param_1 + 0x6c); + *(int *)(param_1 + 0x6c) = *(int *)(param_1 + 0x6c) + 4; + *puVar5 = 0; + if (iVar4 != 0) { + if (*(uint *)(param_1 + 0x58) != *(uint *)(param_1 + 0x54)) { + FUN_0047d7f6(this,*(uint *)(param_1 + 0x58)); + this = *(char **)(param_1 + 0x58); + *(char **)(param_1 + 0x54) = this; + } + if (*(int *)(param_1 + 0x50) == 0) { + uVar8 = FUN_0047d848(this,*(undefined4 *)(param_1 + 0x60), + (undefined2 *)*(undefined4 *)(param_1 + 0x60), + *(undefined2 **)(param_1 + 0x68),iVar4); + DAT_00522cc0 = DAT_00522cc0 + (int)uVar8; + } + else { + uVar8 = FUN_0047d88b(*(undefined4 *)(param_1 + 0x60),*(undefined4 *)(param_1 + 0x68), + (undefined1 *)*(undefined4 *)(param_1 + 0x60), + (undefined2 *)*(undefined4 *)(param_1 + 0x68),iVar4); + DAT_00522cc0 = DAT_00522cc0 + (int)uVar8; + } + } + *(int *)(param_1 + 0x68) = *(int *)(param_1 + 0x68) + 0x40; + *(int *)(param_1 + 0x60) = (int)(local_c + *(int *)(param_1 + 0x60)); + this = local_c; + if (*(int *)(param_1 + 0x40) <= *(int *)(param_1 + 0x60)) { + *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) - *(int *)(param_1 + 0x40); + this = *(char **)(param_1 + 0x44); + *(int *)(param_1 + 0x58) = (int)(this + *(int *)(param_1 + 0x58)); + } + } + } + if ((0x10000000 < DAT_00522cc0) || (0x10000000 < DAT_00522cbc)) { + DAT_00522cc0 = DAT_00522cc0 >> 1; + DAT_00522cbc = DAT_00522cbc >> 1; + DAT_00522cc4 = DAT_00522cc4 + 1; + } + *(int *)(param_1 + 0x5c) = *(int *)(param_1 + 0x5c) + 1; + if (*(int *)(param_1 + 0x20) <= *(int *)(param_1 + 0x5c)) { + FUN_0046d404(param_1); + } + if (*(int *)(param_1 + 0x5c) == iVar2) { + return 0; + } + } while (0 < local_14); + uVar6 = 1; + } + return uVar6; +} + + + +/* @0046d404 file=? name=FUN_0046d404 */ + +void __cdecl FUN_0046d404(int param_1) + +{ + *(undefined4 *)(param_1 + 0x5c) = 0; + *(undefined4 *)(param_1 + 0x68) = *(undefined4 *)(param_1 + 0x34); + *(undefined4 *)(param_1 + 100) = *(undefined4 *)(param_1 + 0x38); + *(undefined4 *)(param_1 + 0x6c) = *(undefined4 *)(param_1 + 0x3c); + *(undefined4 *)(param_1 + 0x58) = 0; + *(undefined4 *)(param_1 + 0x60) = 0; + return; +} + + + +/* @0046d430 file=? name=FUN_0046d430 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_0046d430(int param_1,float param_2) + +{ + undefined4 *puVar1; + float10 fVar2; + + puVar1 = (undefined4 *)FUN_00414b60(); + *(undefined4 *)(param_1 + 0x7c) = *puVar1; + *(undefined4 *)(param_1 + 0x70) = 3; + fVar2 = FUN_004dcd00((double)param_2); + if ((float10)_DAT_0046d498 < fVar2) { + *(float *)(param_1 + 0x78) = _DAT_0046d49c / param_2; + } + else { + *(undefined4 *)(param_1 + 0x78) = 0; + *(undefined4 *)(param_1 + 0x74) = 0x3f800000; + } + return; +} + + + +/* @0046d4a0 file=? name=FUN_0046d4a0 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_0046d4a0(int param_1,float param_2) + +{ + undefined4 *puVar1; + float10 fVar2; + + puVar1 = (undefined4 *)FUN_00414b60(); + *(undefined4 *)(param_1 + 0x7c) = *puVar1; + *(undefined4 *)(param_1 + 0x70) = 1; + fVar2 = FUN_004dcd00((double)param_2); + if ((float10)_DAT_0046d504 < fVar2) { + *(float *)(param_1 + 0x78) = _DAT_0046d508 / param_2; + } + else { + *(undefined4 *)(param_1 + 0x78) = 0; + *(undefined4 *)(param_1 + 0x74) = 0; + } + return; +} + + + +/* @0046d50c file=? name=FUN_0046d50c */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_0046d50c(short *param_1) + +{ + undefined4 uVar1; + undefined2 extraout_var; + byte *pbVar2; + int iVar3; + int local_308; + byte local_304 [768]; + + FUN_004498a8(&local_308); + iVar3 = 0; + pbVar2 = local_304; + do { + uVar1 = FUN_004dcd94(); + *pbVar2 = (byte)uVar1; + uVar1 = FUN_004dcd94(); + pbVar2[1] = (byte)uVar1; + uVar1 = FUN_004dcd94(); + pbVar2[2] = (byte)uVar1; + iVar3 = iVar3 + 1; + pbVar2 = pbVar2 + 3; + } while (iVar3 < 0x100); + FUN_0047d8f2(CONCAT22(extraout_var,*param_1),param_1,local_304,*param_1); + FUN_00449994(&local_308,2); + return; +} + + + +/* @0046d694 file=? name=FUN_0046d694 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +uint __cdecl FUN_0046d694(int param_1) + +{ + int *piVar1; + float fVar2; + undefined1 uVar3; + uint uVar4; + int iVar5; + float fVar6; + int *piVar7; + uint uVar8; + undefined2 extraout_var; + undefined2 extraout_var_00; + undefined4 extraout_ECX; + undefined2 *puVar9; + short *psVar10; + int iVar11; + undefined8 uVar12; + + piVar7 = (int *)FUN_00414b60(); + piVar1 = (int *)(param_1 + 0x7c); + fVar6 = (float)(*piVar7 - *piVar1) / DAT_0052140c; + *piVar1 = *piVar7; + uVar8 = CONCAT22((short)((uint)piVar1 >> 0x10), + (ushort)(fVar6 < _DAT_0046d834) << 8 | + (ushort)(NAN(fVar6) || NAN(_DAT_0046d834)) << 10 | + (ushort)(fVar6 == _DAT_0046d834) << 0xe); + if (fVar6 >= _DAT_0046d834 && (fVar6 == _DAT_0046d834) == 0) { + puVar9 = (undefined2 *)(param_1 + 0x80); + iVar11 = 0; + do { + fVar2 = *(float *)(puVar9 + 0x188); + uVar8 = CONCAT22((short)(uVar8 >> 0x10), + (ushort)(fVar2 < _DAT_0046d834) << 8 | + (ushort)(NAN(fVar2) || NAN(_DAT_0046d834)) << 10 | + (ushort)(fVar2 == _DAT_0046d834) << 0xe); + if ((fVar2 == _DAT_0046d834) == 0) { + *(float *)(puVar9 + 0x186) = *(float *)(puVar9 + 0x188) * fVar6 + *(float *)(puVar9 + 0x186) + ; + while (_DAT_0046d838 <= *(float *)(puVar9 + 0x186)) { + *(float *)(puVar9 + 0x186) = *(float *)(puVar9 + 0x186) - _DAT_0046d838; + } + uVar8 = FUN_004dcd94(); + uVar4 = *(uint *)(puVar9 + 0x18c); + if (uVar8 != uVar4) { + *(uint *)(puVar9 + 0x18c) = uVar8; + uVar3 = *(undefined1 *)((int)puVar9 + uVar8 + 0x314); + uVar12 = FUN_0047d962(CONCAT31((int3)((uint)extraout_ECX >> 8),uVar3),uVar4,*puVar9,uVar3) + ; + uVar8 = (uint)uVar12; + } + } + iVar11 = iVar11 + 1; + puVar9 = puVar9 + 0x18e; + } while (iVar11 < 4); + psVar10 = (short *)(param_1 + 0x80); + iVar11 = 0; + do { + if ((iVar11 == 1) && (uVar8 = 0, *(int *)(param_1 + 0x70) != 0)) { + psVar10[2] = 0; + psVar10[3] = 0; + iVar5 = *(int *)(param_1 + 0x70); + if (iVar5 == 1) { + *(float *)(param_1 + 0x74) = + *(float *)(param_1 + 0x74) - fVar6 * *(float *)(param_1 + 0x78); + FUN_0046d50c(psVar10); + fVar2 = *(float *)(param_1 + 0x74); + uVar8 = CONCAT22(extraout_var, + (ushort)(fVar2 < _DAT_0046d834) << 8 | + (ushort)(NAN(fVar2) || NAN(_DAT_0046d834)) << 10 | + (ushort)(fVar2 == _DAT_0046d834) << 0xe); + if (fVar2 < _DAT_0046d834 || (fVar2 == _DAT_0046d834) != 0) { + *(undefined4 *)(param_1 + 0x74) = 0; + *(undefined4 *)(param_1 + 0x70) = 2; + } + } + else { + uVar8 = 0; + if ((iVar5 != 2) && (uVar8 = iVar5 - 3, uVar8 == 0)) { + *(float *)(param_1 + 0x74) = + fVar6 * *(float *)(param_1 + 0x78) + *(float *)(param_1 + 0x74); + FUN_0046d50c(psVar10); + fVar2 = *(float *)(param_1 + 0x74); + uVar8 = CONCAT22(extraout_var_00, + (ushort)(fVar2 < _DAT_0046d83c) << 8 | + (ushort)(NAN(fVar2) || NAN(_DAT_0046d83c)) << 10 | + (ushort)(fVar2 == _DAT_0046d83c) << 0xe); + if (fVar2 >= _DAT_0046d83c) { + *(undefined4 *)(param_1 + 0x74) = 0x3f800000; + *(undefined4 *)(param_1 + 0x70) = 0; + } + } + } + } + else if (*(int *)(psVar10 + 2) != 0) { + psVar10[2] = 0; + psVar10[3] = 0; + uVar12 = FUN_0047d8f2(0,psVar10 + 6,(byte *)(psVar10 + 6),*psVar10); + uVar8 = (uint)uVar12; + } + iVar11 = iVar11 + 1; + psVar10 = psVar10 + 0x18e; + } while (iVar11 < 4); + } + return uVar8; +} + + + +/* @0046d840 file=? name=FUN_0046d840 */ + +undefined6 __cdecl FUN_0046d840(undefined4 param_1,int param_2) + +{ + undefined6 uVar1; + + uVar1 = FUN_0047d76d(param_2); + return uVar1; +} + + + +/* @0046d850 file=? name=FUN_0046d850 */ + +undefined4 * __cdecl +FUN_0046d850(undefined4 *param_1,undefined4 *param_2,char *param_3,undefined4 param_4, + undefined4 param_5,undefined4 param_6,undefined4 param_7) + +{ + uint uVar1; + undefined4 *puVar2; + int iVar3; + + FUN_0044a2d0(param_1,param_2,param_3); + *param_1 = &PTR_FUN_004f4d0c; + param_1[0x14a] = param_4; + param_1[0x14f] = param_6; + param_1[0x150] = param_7; + uVar1 = 0x8000; + param_1[0x14b] = param_5; + param_1[0x14c] = 0; + do { + if ((param_1[0x14b] & uVar1) != 0) { + param_1[0x14c] = param_1[0x14c] + 1; + } + uVar1 = (int)uVar1 >> 1; + } while (uVar1 != 0); + param_1[0x14d] = param_1[3] - param_1[1]; + param_1[0x14e] = param_1[4] - param_1[2]; + if (((param_1[0x14a] == 0x5a) || (param_1[0x14a] == 0x10e)) && (param_2 != (undefined4 *)0x0)) { + param_1[1] = param_2[2]; + param_1[2] = param_2[1]; + param_1[3] = param_2[4]; + param_1[4] = param_2[3]; + } + iVar3 = 0; + puVar2 = param_1 + 0x10a; + do { + *(undefined1 *)puVar2 = 0; + iVar3 = iVar3 + 1; + puVar2 = (undefined4 *)((int)puVar2 + 1); + } while (iVar3 < 0x100); + return param_1; +} + + + +/* @0046d91c file=? name=FUN_0046d91c */ + +void __cdecl FUN_0046d91c(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f4d0c; + FUN_0044a348(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0046d948 file=? name=FUN_0046d948 */ + +undefined4 FUN_0046d948(void) + +{ + return 1; +} + + + +/* @0046d954 file=? name=FUN_0046d954 */ + +void __cdecl FUN_0046d954(int param_1,char *param_2) + +{ + char cVar1; + int *piVar2; + uint uVar3; + uint uVar4; + char *pcVar5; + char *pcVar6; + uint *puVar7; + char local_54 [80]; + + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_L4GraphicsPort__004f4c9f,(char *)0x0); + uVar3 = 0xffffffff; + do { + pcVar5 = param_2; + if (uVar3 == 0) break; + uVar3 = uVar3 - 1; + pcVar5 = param_2 + 1; + cVar1 = *param_2; + param_2 = pcVar5; + } while (cVar1 != '\0'); + uVar3 = ~uVar3; + pcVar5 = pcVar5 + -uVar3; + pcVar6 = local_54; + for (uVar4 = uVar3 >> 2; uVar4 != 0; uVar4 = uVar4 - 1) { + *(undefined4 *)pcVar6 = *(undefined4 *)pcVar5; + pcVar5 = pcVar5 + 4; + pcVar6 = pcVar6 + 4; + } + for (uVar3 = uVar3 & 3; uVar3 != 0; uVar3 = uVar3 - 1) { + *pcVar6 = *pcVar5; + pcVar5 = pcVar5 + 1; + pcVar6 = pcVar6 + 1; + } + FUN_004d49b8(local_54,&DAT_004f4cb0); + uVar3 = *(uint *)(param_1 + 0x52c); + FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_bitMask___004f4cb4,(char *)0x0); + piVar2 = FUN_004db78c(&DAT_00524e20,uVar3); + FUN_004dbb24(piVar2,&DAT_004f4cc3,(char *)0x0); + uVar3 = *(uint *)(param_1 + 0x528); + FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_baseRotation___004f4cc5,(char *)0x0); + piVar2 = FUN_004db78c(&DAT_00524e20,uVar3); + FUN_004dbb24(piVar2,&DAT_004f4cd4,(char *)0x0); + uVar3 = *(uint *)(param_1 + 0x534); + FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_maximumX___004f4cd6,(char *)0x0); + piVar2 = FUN_004db78c(&DAT_00524e20,uVar3); + FUN_004dbb24(piVar2,&DAT_004f4ce5,(char *)0x0); + uVar3 = *(uint *)(param_1 + 0x538); + FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_maximumY___004f4ce7,(char *)0x0); + piVar2 = FUN_004db78c(&DAT_00524e20,uVar3); + FUN_004dbb24(piVar2,&DAT_004f4cf6,(char *)0x0); + puVar7 = (uint *)(param_1 + 4); + FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_bounds___004f4cf8,(char *)0x0); + piVar2 = (int *)FUN_00407d78(&DAT_00524e20,puVar7); + FUN_004dbb24(piVar2,&DAT_004f4d07,(char *)0x0); + FUN_004d9c70(&DAT_00524e20); + FUN_0044a374(param_1,local_54); + return; +} + + + +/* @0046db5c file=? name=FUN_0046db5c */ + +void __cdecl FUN_0046db5c(int param_1,undefined1 *param_2,int param_3) + +{ + if (1 < *(int *)(param_1 + 0x540) - 4U) { + FUN_0046e31c(param_1,param_2,param_3); + } + return; +} + + + +/* @0046db84 file=? name=FUN_0046db84 */ + +void __cdecl FUN_0046db84(int param_1,int param_2) + +{ + if (*(int *)(param_1 + 0x14) != 0) { + if (*(int *)(param_1 + 0x540) == 4) { + FUN_0046e180(param_1,param_2); + return; + } + if (*(int *)(param_1 + 0x540) == 5) { + FUN_0046e578(param_1); + FUN_0046e650(param_1); + return; + } + FUN_0046e1e4(param_1,param_2); + FUN_0046e650(param_1); + } + return; +} + + + +/* @0046dbdc file=? name=FUN_0046dbdc */ + +void __cdecl FUN_0046dbdc(int param_1) + +{ + uint uVar1; + int *piVar2; + int local_310 [193]; + undefined2 local_a; + undefined1 local_8; + undefined2 local_7; + undefined1 local_5; + + if (*(int *)(param_1 + 0x14) != 0) { + if (*(int *)(param_1 + 0x540) == 4) { + piVar2 = local_310; + uVar1 = FUN_004498a8(piVar2); + local_7 = 0; + local_5 = 0; + local_a = 0xffff; + local_8 = 0xff; + FUN_004499e4((int)local_310,0,0xff,(uVar1 & 0xffffff00) << 0x10, + CONCAT22((short)CONCAT31((int3)((uint)piVar2 >> 8),0xff),0xffff)); + FUN_0046e180(param_1,(int)local_310); + FUN_00449994(local_310,2); + } + else if (*(int *)(param_1 + 0x540) == 5) { + FUN_0046e578(param_1); + FUN_0046e694(param_1); + } + else { + FUN_0046e444(param_1); + FUN_0046e694(param_1); + } + } + return; +} + + + +/* @0046dca0 file=? name=FUN_0046dca0 */ + +void __cdecl FUN_0046dca0(int param_1,int param_2,undefined4 param_3,int param_4,int param_5) + +{ + int local_c; + int local_8; + + if (*(int *)(param_1 + 0x14) != 0) { + FUN_0046e114(param_1,&local_8,&local_c,param_4,param_5); + (**(code **)(**(int **)(param_1 + 0x14) + 0x14)) + (*(int **)(param_1 + 0x14),*(undefined4 *)(param_1 + 0x28 + param_2 * 4), + *(undefined4 *)(param_1 + 0x52c),param_3,local_8 + *(int *)(param_1 + 4), + local_c + *(int *)(param_1 + 8)); + } + return; +} + + + +/* @0046dd00 file=? name=FUN_0046dd00 */ + +void __cdecl +FUN_0046dd00(int param_1,int param_2,undefined4 param_3,int param_4,int param_5,int param_6, + int param_7,undefined4 param_8) + +{ + int local_14; + int local_10; + int local_c; + int local_8; + + if (*(int *)(param_1 + 0x14) != 0) { + FUN_0046e114(param_1,&local_8,&local_c,param_4,param_5); + FUN_0046e114(param_1,&local_10,&local_14,param_6,param_7); + (**(code **)(**(int **)(param_1 + 0x14) + 0x18)) + (*(int **)(param_1 + 0x14),*(undefined4 *)(param_1 + 0x28 + param_2 * 4), + *(undefined4 *)(param_1 + 0x52c),param_3,local_8 + *(int *)(param_1 + 4), + local_c + *(int *)(param_1 + 8),local_10 + *(int *)(param_1 + 4), + local_14 + *(int *)(param_1 + 8),param_8); + } + return; +} + + + +/* @0046dd8c file=? name=FUN_0046dd8c */ + +void __cdecl +FUN_0046dd8c(int param_1,int param_2,undefined4 param_3,int param_4,int param_5,int param_6, + int param_7) + +{ + int local_14; + int local_10; + int local_c; + int local_8; + + if (*(int *)(param_1 + 0x14) != 0) { + FUN_0046e114(param_1,&local_8,&local_c,param_4,param_5); + FUN_0046e114(param_1,&local_10,&local_14,param_6,param_7); + (**(code **)(**(int **)(param_1 + 0x14) + 0x1c)) + (*(int **)(param_1 + 0x14),*(undefined4 *)(param_1 + 0x28 + param_2 * 4), + *(undefined4 *)(param_1 + 0x52c),param_3,local_8 + *(int *)(param_1 + 4), + local_c + *(int *)(param_1 + 8),local_10 + *(int *)(param_1 + 4), + local_14 + *(int *)(param_1 + 8)); + } + return; +} + + + +/* @0046de14 file=? name=FUN_0046de14 */ + +void FUN_0046de14(void) + +{ + return; +} + + + +/* @0046de1c file=? name=FUN_0046de1c */ + +void __cdecl +FUN_0046de1c(int param_1,int param_2,undefined4 param_3,int param_4,int param_5,int param_6, + int param_7,undefined4 param_8,undefined4 param_9,undefined4 param_10, + undefined4 param_11) + +{ + int iVar1; + int local_c; + int local_8; + + if (((*(int *)(param_1 + 0x14) != 0) && (param_7 != 0)) && (*(int *)(param_7 + 0x18) != 0)) { + FUN_0046e114(param_1,&local_8,&local_c,param_5,param_6); + for (iVar1 = param_4 + *(int *)(param_1 + 0x528); iVar1 < 0; iVar1 = iVar1 + 0x168) { + } + for (; 0x167 < iVar1; iVar1 = iVar1 + -0x168) { + } + (**(code **)(**(int **)(param_1 + 0x14) + 0x24)) + (*(int **)(param_1 + 0x14),*(undefined4 *)(param_1 + 0x28 + param_2 * 4), + *(undefined4 *)(param_1 + 0x52c),param_3,iVar1,local_8 + *(int *)(param_1 + 4), + local_c + *(int *)(param_1 + 8),param_7,param_8,param_9,param_10,param_11); + } + return; +} + + + +/* @0046ded8 file=? name=FUN_0046ded8 */ + +void __cdecl +FUN_0046ded8(int param_1,int param_2,int param_3,undefined4 param_4,int param_5,int param_6, + int param_7,int param_8,undefined4 param_9,undefined4 param_10,undefined4 param_11, + undefined4 param_12) + +{ + int iVar1; + int local_c; + int local_8; + + if (((*(int *)(param_1 + 0x14) != 0) && (param_8 != 0)) && (*(int *)(param_8 + 0x18) != 0)) { + FUN_0046e114(param_1,&local_8,&local_c,param_6,param_7); + for (iVar1 = param_5 + *(int *)(param_1 + 0x528); iVar1 < 0; iVar1 = iVar1 + 0x168) { + } + for (; 0x167 < iVar1; iVar1 = iVar1 + -0x168) { + } + (**(code **)(**(int **)(param_1 + 0x14) + 0x28)) + (*(int **)(param_1 + 0x14),*(undefined4 *)(param_1 + 0x28 + param_2 * 4), + *(undefined4 *)(param_1 + 0x28 + param_3 * 4),*(undefined4 *)(param_1 + 0x52c), + param_4,iVar1,local_8 + *(int *)(param_1 + 4),local_c + *(int *)(param_1 + 8),param_8 + ,param_9,param_10,param_11,param_12); + } + return; +} + + + +/* @0046df9c file=? name=FUN_0046df9c */ + +void __cdecl +FUN_0046df9c(int param_1,undefined4 param_2,undefined4 param_3,int param_4,int param_5,int param_6, + int param_7,undefined4 param_8,undefined4 param_9,undefined4 param_10, + undefined4 param_11) + +{ + int iVar1; + int local_c; + int local_8; + + if (((*(int *)(param_1 + 0x14) != 0) && (param_7 != 0)) && (*(int *)(param_7 + 8) != 0)) { + FUN_0046e114(param_1,&local_8,&local_c,param_5,param_6); + for (iVar1 = param_4 + *(int *)(param_1 + 0x528); iVar1 < 0; iVar1 = iVar1 + 0x168) { + } + for (; 0x167 < iVar1; iVar1 = iVar1 + -0x168) { + } + (**(code **)(**(int **)(param_1 + 0x14) + 0x2c)) + (*(int **)(param_1 + 0x14),param_1 + 0x28,*(undefined4 *)(param_1 + 0x52c),param_2, + param_3,iVar1,local_8 + *(int *)(param_1 + 4),local_c + *(int *)(param_1 + 8),param_7 + ,param_8,param_9,param_10,param_11); + } + return; +} + + + +/* @0046e058 file=? name=FUN_0046e058 */ + +void __cdecl +FUN_0046e058(int param_1,int param_2,undefined4 param_3,int param_4,int param_5,int param_6, + int param_7,undefined4 param_8,undefined4 param_9,undefined4 param_10, + undefined4 param_11) + +{ + int iVar1; + int local_c; + int local_8; + + if (((*(int *)(param_1 + 0x14) != 0) && (param_7 != 0)) && (*(int *)(param_7 + 8) != 0)) { + FUN_0046e114(param_1,&local_8,&local_c,param_5,param_6); + for (iVar1 = param_4 + *(int *)(param_1 + 0x528); iVar1 < 0; iVar1 = iVar1 + 0x168) { + } + for (; 0x167 < iVar1; iVar1 = iVar1 + -0x168) { + } + (**(code **)(**(int **)(param_1 + 0x14) + 0x30)) + (*(int **)(param_1 + 0x14),*(undefined4 *)(param_1 + 0x28 + param_2 * 4), + *(undefined4 *)(param_1 + 0x52c),param_3,iVar1,local_8 + *(int *)(param_1 + 4), + local_c + *(int *)(param_1 + 8),param_7,param_8,param_9,param_10,param_11); + } + return; +} + + + +/* @0046e114 file=? name=FUN_0046e114 */ + +void __cdecl FUN_0046e114(int param_1,int *param_2,int *param_3,int param_4,int param_5) + +{ + int iVar1; + + iVar1 = *(int *)(param_1 + 0x528); + if (iVar1 == 0x5a) { + *param_2 = param_5; + *param_3 = *(int *)(param_1 + 0x538) - param_4; + } + else if (iVar1 == 0xb4) { + *param_2 = *(int *)(param_1 + 0x534) - param_4; + *param_3 = *(int *)(param_1 + 0x538) - param_5; + } + else if (iVar1 == 0x10e) { + *param_2 = *(int *)(param_1 + 0x534) - param_5; + *param_3 = param_4; + } + else { + *param_2 = param_4; + *param_3 = param_5; + } + return; +} + + + +/* @0046e180 file=? name=FUN_0046e180 */ + +void __cdecl FUN_0046e180(int param_1,int param_2) + +{ + byte *pbVar1; + byte *pbVar2; + byte bVar3; + byte *pbVar4; + int iVar5; + uint *puVar6; + + pbVar4 = (byte *)(param_2 + 4); + *(undefined4 *)(param_1 + 0x52c) = 0xffff; + puVar6 = (uint *)(param_1 + 0x28); + iVar5 = 0x100; + do { + pbVar1 = pbVar4 + 1; + bVar3 = *pbVar4; + pbVar2 = pbVar4 + 2; + pbVar4 = pbVar4 + 3; + iVar5 = iVar5 + -1; + *puVar6 = ((int)(uint)bVar3 >> 3) << 0xb | ((int)(uint)*pbVar1 >> 2) << 5 | + (int)(uint)*pbVar2 >> 3; + puVar6 = puVar6 + 1; + } while (0 < iVar5); + return; +} + + + +/* @0046e1e4 file=? name=FUN_0046e1e4 */ + +void __cdecl FUN_0046e1e4(int param_1,int param_2) + +{ + int iVar1; + int iVar2; + int iVar3; + undefined1 *puVar4; + uint local_14 [3]; + undefined1 *local_8; + + if (*(int *)(param_1 + 0x14) != 0) { + FUN_0046aa78(local_14,*(uint *)(param_1 + 0x52c) & 0xff,8); + iVar3 = *(int *)(param_1 + 0x53c) * 0x31c + *(int *)(param_1 + 0x14); + puVar4 = (undefined1 *)(param_2 + 4); + iVar1 = 0; + do { + *(undefined1 *)(param_1 + 0x428 + local_14[0]) = 0; + iVar1 = iVar1 + 1; + } while (iVar1 < 0x100); + if ((*(byte *)(param_1 + 0x540) & 0x80) != 0) { + puVar4 = (undefined1 *)(param_2 + 7); + FUN_0046aab0(local_14); + } + do { + do { + *(undefined1 *)(param_1 + 0x428 + local_14[0]) = 1; + iVar2 = local_14[0] * 3 + iVar3 + 0x80; + iVar1 = *(int *)(param_1 + 0x540); + if (iVar1 < 0x81) { + if ((iVar1 == 0x80) || (iVar1 == 0)) { + *(undefined1 *)(iVar2 + 0xc) = *puVar4; + } + else { + if (iVar1 == 1) goto LAB_0046e2b2; + if (iVar1 == 2) goto LAB_0046e2ba; + if (iVar1 == 3) goto LAB_0046e2c2; + } + } + else if (iVar1 == 0x81) { +LAB_0046e2b2: + *(undefined1 *)(iVar2 + 0xd) = puVar4[1]; + } + else if (iVar1 == 0x82) { +LAB_0046e2ba: + *(undefined1 *)(iVar2 + 0xe) = puVar4[2]; + } + else if (iVar1 == 0x83) { +LAB_0046e2c2: + *(undefined1 *)(iVar2 + 0xc) = *puVar4; + *(undefined1 *)(iVar2 + 0xd) = puVar4[1]; + *(undefined1 *)(iVar2 + 0xe) = puVar4[2]; + local_8 = puVar4; + } + iVar1 = FUN_0046aae0(local_14); + } while (iVar1 != 0); + puVar4 = puVar4 + 3; + iVar1 = FUN_0046aab0(local_14); + } while (iVar1 != 0); + *(undefined4 *)(iVar3 + 0x88) = 1; + *(undefined4 *)(iVar3 + 0x84) = 1; + } + return; +} + + + +/* @0046e31c file=? name=FUN_0046e31c */ + +void __cdecl FUN_0046e31c(int param_1,undefined1 *param_2,int param_3) + +{ + int iVar1; + int iVar2; + int iVar3; + uint local_10 [3]; + + if (*(int *)(param_1 + 0x14) == 0) { + return; + } + FUN_0046aa78(local_10,*(uint *)(param_1 + 0x52c) & 0xff,8); + iVar3 = 0; + iVar2 = *(int *)(param_1 + 0x53c) * 0x31c + *(int *)(param_1 + 0x14); + if ((*(byte *)(param_1 + 0x540) & 0x80) != 0) { + iVar3 = 1; + FUN_0046aab0(local_10); + } + do { + if (iVar3 == param_3) goto LAB_0046e38f; + iVar3 = iVar3 + 1; + iVar1 = FUN_0046aab0(local_10); + } while (iVar1 != 0); + goto LAB_0046e42f; +LAB_0046e38f: + do { + if (*(char *)(param_1 + 0x428 + local_10[0]) != '\0') { + iVar3 = *(int *)(param_1 + 0x540); + iVar1 = local_10[0] * 3 + iVar2; + if (iVar3 < 0x81) { + if ((iVar3 == 0x80) || (iVar3 == 0)) { + *(undefined1 *)(iVar1 + 0x8c) = *param_2; + } + else { + if (iVar3 == 1) goto LAB_0046e3df; + if (iVar3 == 2) goto LAB_0046e3ea; + if (iVar3 == 3) goto LAB_0046e3f5; + } + } + else if (iVar3 == 0x81) { +LAB_0046e3df: + *(undefined1 *)(iVar1 + 0x8d) = param_2[1]; + } + else if (iVar3 == 0x82) { +LAB_0046e3ea: + *(undefined1 *)(iVar1 + 0x8e) = param_2[2]; + } + else if (iVar3 == 0x83) { +LAB_0046e3f5: + *(undefined1 *)(iVar1 + 0x8c) = *param_2; + *(undefined1 *)(iVar1 + 0x8d) = param_2[1]; + *(undefined1 *)(iVar1 + 0x8e) = param_2[2]; + } + } + iVar3 = FUN_0046aae0(local_10); + } while (iVar3 != 0); +LAB_0046e42f: + *(undefined4 *)(iVar2 + 0x88) = 1; + *(undefined4 *)(iVar2 + 0x84) = 1; + return; +} + + + +/* @0046e444 file=? name=FUN_0046e444 */ + +void __cdecl FUN_0046e444(int param_1) + +{ + int iVar1; + int iVar2; + int iVar3; + int iVar4; + uint local_18 [3]; + undefined1 local_9; + int local_8; + + if (*(int *)(param_1 + 0x14) != 0) { + FUN_0046aa78(local_18,*(int *)(param_1 + 0x52c) >> 8 & 0xff,8); + iVar4 = *(int *)(param_1 + 0x53c) * 0x31c + *(int *)(param_1 + 0x14); + iVar1 = FUN_0046ab18((int)local_18); + iVar2 = (int)(0x1fe0 / (longlong)((1 << ((byte)iVar1 & 0x1f)) + -1)); + iVar1 = 0; + local_8 = iVar2; + if ((*(byte *)(param_1 + 0x540) & 0x80) != 0) { + FUN_0046aab0(local_18); + iVar1 = iVar2; + } + do { + local_9 = (undefined1)(iVar1 >> 5); + iVar1 = iVar1 + local_8; + do { + iVar3 = local_18[0] * 3 + iVar4 + 0x80; + iVar2 = *(int *)(param_1 + 0x540); + if (iVar2 < 0x81) { + if ((iVar2 == 0x80) || (iVar2 == 0)) { + *(undefined1 *)(iVar3 + 0xc) = local_9; + } + else { + if (iVar2 == 1) goto LAB_0046e520; + if (iVar2 == 2) goto LAB_0046e528; + if (iVar2 == 3) goto LAB_0046e530; + } + } + else if (iVar2 == 0x81) { +LAB_0046e520: + *(undefined1 *)(iVar3 + 0xd) = local_9; + } + else if (iVar2 == 0x82) { +LAB_0046e528: + *(undefined1 *)(iVar3 + 0xe) = local_9; + } + else if (iVar2 == 0x83) { +LAB_0046e530: + *(undefined1 *)(iVar3 + 0xc) = local_9; + *(undefined1 *)(iVar3 + 0xd) = local_9; + *(undefined1 *)(iVar3 + 0xe) = local_9; + } + iVar2 = FUN_0046aae0(local_18); + } while (iVar2 != 0); + iVar2 = FUN_0046aab0(local_18); + } while (iVar2 != 0); + *(undefined4 *)(iVar4 + 0x88) = 1; + *(undefined4 *)(iVar4 + 0x84) = 1; + } + return; +} + + + +/* @0046e578 file=? name=FUN_0046e578 */ + +void __cdecl FUN_0046e578(int param_1) + +{ + int iVar1; + int iVar2; + int iVar3; + uint local_10 [3]; + + if (*(int *)(param_1 + 0x14) != 0) { + FUN_0046aa78(local_10,*(int *)(param_1 + 0x52c) >> 8 & 0xff,8); + iVar3 = *(int *)(param_1 + 0x53c) * 0x31c + *(int *)(param_1 + 0x14); + do { + iVar1 = local_10[0] * 3 + iVar3 + 0x80; + iVar2 = *(int *)(param_1 + 0x540); + if (iVar2 < 0x81) { + if ((iVar2 == 0x80) || (iVar2 == 0)) { + *(undefined1 *)(iVar1 + 0xc) = 0; + } + else { + if (iVar2 == 1) goto LAB_0046e60d; + if (iVar2 == 2) goto LAB_0046e612; + if (iVar2 == 3) goto LAB_0046e617; + } + } + else if (iVar2 == 0x81) { +LAB_0046e60d: + *(undefined1 *)(iVar1 + 0xd) = 0; + } + else if (iVar2 == 0x82) { +LAB_0046e612: + *(undefined1 *)(iVar1 + 0xe) = 0; + } + else if (iVar2 == 0x83) { +LAB_0046e617: + *(undefined1 *)(iVar1 + 0xc) = 0; + *(undefined1 *)(iVar1 + 0xd) = 0; + *(undefined1 *)(iVar1 + 0xe) = 0; + } + iVar2 = FUN_0046aae0(local_10); + } while ((iVar2 != 0) || (iVar2 = FUN_0046aab0(local_10), iVar2 != 0)); + *(undefined4 *)(iVar3 + 0x88) = 1; + *(undefined4 *)(iVar3 + 0x84) = 1; + } + return; +} + + + +/* @0046e650 file=? name=FUN_0046e650 */ + +void __cdecl FUN_0046e650(int param_1) + +{ + int iVar1; + uint *puVar2; + uint local_10 [3]; + + FUN_0046aa78(local_10,*(uint *)(param_1 + 0x52c) & 0xff,8); + puVar2 = (uint *)(param_1 + 0x28); + do { + *puVar2 = local_10[0]; + puVar2 = puVar2 + 1; + iVar1 = FUN_0046aab0(local_10); + } while (iVar1 != 0); + return; +} + + + +/* @0046e694 file=? name=FUN_0046e694 */ + +void __cdecl FUN_0046e694(int param_1) + +{ + int iVar1; + int *piVar2; + int iVar3; + uint local_10 [3]; + + FUN_0046aa78(local_10,*(int *)(param_1 + 0x52c) >> 8 & 0xff,8); + piVar2 = (int *)(param_1 + 0x28); + do { + iVar3 = local_10[0] << 8; + do { + *piVar2 = iVar3; + piVar2 = piVar2 + 1; + iVar1 = FUN_0046aae0(local_10); + } while (iVar1 != 0); + iVar3 = FUN_0046aab0(local_10); + } while (iVar3 != 0); + return; +} + + + +/* @0046e6ec file=? name=FUN_0046e6ec */ + +int __cdecl FUN_0046e6ec(int param_1) + +{ + FUN_004498a8((undefined4 *)(param_1 + 8)); + return param_1; +} + + + +/* @0046e702 file=? name=FUN_0046e702 */ + +void __cdecl FUN_0046e702(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + FUN_00449994(param_1 + 2,2); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0046e72c file=? name=FUN_0046e72c */ + +undefined4 * __cdecl +FUN_0046e72c(undefined4 *param_1,char *param_2,undefined4 param_3,undefined4 param_4) + +{ + char cVar1; + uint uVar2; + uint uVar3; + char *pcVar4; + char *pcVar5; + + *(undefined1 *)(param_1 + 2) = 0; + uVar2 = 0xffffffff; + do { + pcVar4 = param_2; + if (uVar2 == 0) break; + uVar2 = uVar2 - 1; + pcVar4 = param_2 + 1; + cVar1 = *param_2; + param_2 = pcVar4; + } while (cVar1 != '\0'); + uVar2 = ~uVar2; + pcVar4 = pcVar4 + -uVar2; + pcVar5 = (char *)(param_1 + 2); + for (uVar3 = uVar2 >> 2; uVar3 != 0; uVar3 = uVar3 - 1) { + *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4; + pcVar4 = pcVar4 + 4; + pcVar5 = pcVar5 + 4; + } + for (uVar2 = uVar2 & 3; uVar2 != 0; uVar2 = uVar2 - 1) { + *pcVar5 = *pcVar4; + pcVar4 = pcVar4 + 1; + pcVar5 = pcVar5 + 1; + } + *(undefined1 *)((int)param_1 + 0x47) = 0; + *param_1 = param_3; + param_1[1] = param_4; + param_1[0x12] = DAT_00522cc8; + DAT_00522cc8 = param_1; + return param_1; +} + + + +/* @0046e788 file=? name=FUN_0046e788 */ + +undefined4 __cdecl FUN_0046e788(char *param_1) + +{ + char *pcVar1; + bool bVar2; + int *piVar3; + char *pcVar4; + uint uVar5; + undefined4 *puVar6; + char *pcVar7; + char *pcVar8; + int iVar9; + undefined4 uVar10; + bool bVar11; + char local_120 [256]; + int local_20; + uint local_1c; + int *local_18; + int *local_14; + int *local_10; + int *local_c; + int *local_8; + + uVar10 = 0; + piVar3 = (int *)FUN_00402298(0x20); + if (piVar3 == (int *)0x0) { + local_8 = (int *)0x0; + } + else { + local_8 = FUN_00403e84(piVar3,param_1,1); + } + local_c = FUN_00404720((int)local_8,s_colors_004f4da5,(char *)0x0); + if (local_c == (int *)0x0) { + FUN_004dbb24(&DAT_00524e20,param_1,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_has_no__colors__page__004f4dac,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + } + local_10 = FUN_00404720((int)local_8,s_attributes_004f4dc3,(char *)0x0); + if (local_10 == (int *)0x0) { + FUN_004dbb24(&DAT_00524e20,param_1,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_has_no__attributes__page__004f4dce,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + } + local_14 = FUN_00404720((int)local_8,s_groups_004f4de9,(char *)0x0); + if (local_14 == (int *)0x0) { + FUN_004dbb24(&DAT_00524e20,param_1,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_has_no__groups__page__004f4df0,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + } + if (((local_10 != (int *)0x0) && (local_c != (int *)0x0)) && (local_14 != (int *)0x0)) { + DAT_00522cc8 = 0; + local_18 = (int *)local_14[1]; + while (local_18 != (int *)0x0) { + pcVar8 = (char *)local_18[1]; + local_1c = 0; + local_20 = 0; + if (pcVar8 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,(char *)0x0,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_is_an_empty__GAT_group__004f4e07,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + } + else { + while (*pcVar8 != '\0') { + while (((&DAT_005207dd)[*pcVar8] & 1) != 0) { + pcVar8 = pcVar8 + 1; + } + iVar9 = 0; + pcVar4 = local_120; + do { + if (((&DAT_005207dd)[*pcVar8] & 0xe) == 0) break; + *pcVar4 = *pcVar8; + iVar9 = iVar9 + 1; + pcVar4 = pcVar4 + 1; + pcVar8 = pcVar8 + 1; + } while (iVar9 < 0xff); + *pcVar4 = '\0'; + bVar2 = false; + for (puVar6 = (undefined4 *)local_c[1]; puVar6 != (undefined4 *)0x0; + puVar6 = (undefined4 *)*puVar6) { + pcVar4 = (char *)(puVar6 + 2); + pcVar7 = local_120; + do { + if (*pcVar4 != *pcVar7) goto LAB_0046e9ab; + bVar11 = true; + if (*pcVar4 == '\0') break; + pcVar1 = pcVar4 + 1; + if (*pcVar1 != pcVar7[1]) goto LAB_0046e9ab; + pcVar4 = pcVar4 + 2; + pcVar7 = pcVar7 + 2; + bVar11 = *pcVar1 == '\0'; + } while (!bVar11); + if (bVar11) { + local_20 = FUN_004dd1e0((char *)puVar6[1]); + bVar2 = true; + break; + } +LAB_0046e9ab: + } + if (!bVar2) { + bVar2 = false; + for (puVar6 = (undefined4 *)local_10[1]; puVar6 != (undefined4 *)0x0; + puVar6 = (undefined4 *)*puVar6) { + pcVar4 = (char *)(puVar6 + 2); + pcVar7 = local_120; + do { + if (*pcVar4 != *pcVar7) goto LAB_0046ea00; + bVar11 = true; + if (*pcVar4 == '\0') break; + pcVar1 = pcVar4 + 1; + if (*pcVar1 != pcVar7[1]) goto LAB_0046ea00; + pcVar4 = pcVar4 + 2; + pcVar7 = pcVar7 + 2; + bVar11 = *pcVar1 == '\0'; + } while (!bVar11); + if (bVar11) { + uVar5 = FUN_004dd1e0((char *)puVar6[1]); + local_1c = local_1c | uVar5; + bVar2 = true; + break; + } +LAB_0046ea00: + } + if (!bVar2) { + FUN_004dbb24(&DAT_00524e20,s_Attribute___004f4e20,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,local_120,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s___not_found__004f4e2c,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + } + } + } + } + puVar6 = (undefined4 *)FUN_00402298(0x4c); + if (puVar6 != (undefined4 *)0x0) { + FUN_0046e72c(puVar6,(char *)(local_18 + 2),local_20,local_1c); + } + local_18 = (int *)*local_18; + } + if (local_c != (int *)0x0) { + (**(code **)*local_c)(local_c,3); + } + if (local_10 != (int *)0x0) { + (**(code **)*local_10)(local_10,3); + } + if (local_14 != (int *)0x0) { + (**(code **)*local_14)(local_14,3); + } + uVar10 = 1; + } + FUN_00403ecc(local_8,3); + return uVar10; +} + + + +/* @0046eaf0 file=? name=FUN_0046eaf0 */ + +void FUN_0046eaf0(void) + +{ + int *piVar1; + int *piVar2; + + piVar1 = DAT_00522cc8; + while (piVar2 = piVar1, piVar2 != (int *)0x0) { + piVar1 = (int *)piVar2[0x12]; + if (piVar2 != (int *)0x0) { + FUN_004022d0(piVar2); + } + } + DAT_00522cc8 = (int *)0x0; + return; +} + + + +/* @0046eb18 file=? name=FUN_0046eb18 */ + +undefined4 __cdecl FUN_0046eb18(char *param_1,undefined4 *param_2,undefined4 *param_3) + +{ + undefined4 *puVar1; + int iVar2; + + puVar1 = DAT_00522cc8; + while( true ) { + if (puVar1 == (undefined4 *)0x0) { + return 0; + } + iVar2 = FUN_004d4ae0(param_1,(char *)(puVar1 + 2),0x40); + if (iVar2 == 0) break; + puVar1 = (undefined4 *)puVar1[0x12]; + } + *param_2 = *puVar1; + *param_3 = puVar1[1]; + return 1; +} + + + +/* @0046eb64 file=? name=FUN_0046eb64 */ + +undefined4 FUN_0046eb64(void) + +{ + return 0; +} + + + +/* @0046eb6c file=? name=FUN_0046eb6c */ + +int * __cdecl FUN_0046eb6c(int param_1) + +{ + int iVar1; + int iVar2; + int *piVar3; + int local_14 [4]; + + piVar3 = (int *)0x0; + iVar2 = FUN_00407064(*(int *)(DAT_004efc94 + 0x68),param_1,0x12); + if (iVar2 != 0) { + iVar1 = *(int *)(iVar2 + 4); + *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + 1; + if (iVar1 == 0) { + FUN_00406cd0(iVar2); + } + FUN_004030dc(local_14,*(undefined4 *)(iVar2 + 0x3c),*(undefined4 *)(iVar2 + 0x40),0); + if (*(int *)(iVar2 + 0x3c) != 0) { + piVar3 = (int *)FUN_00402298(0x14); + if (piVar3 == (int *)0x0) { + piVar3 = (int *)0x0; + } + else { + piVar3 = FUN_0046ebf0(piVar3,local_14); + } + } + *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + -1; + } + return piVar3; +} + + + +/* @0046ebf0 file=? name=FUN_0046ebf0 */ + +int * __cdecl FUN_0046ebf0(int *param_1,int *param_2) + +{ + int extraout_EAX; + int *piVar1; + int iVar2; + int *piVar3; + + (**(code **)(*param_2 + 0x1c))(param_2,param_1,4); + piVar3 = FUN_004de998((int *)0x0,0xc,*param_1,1,&LAB_0046f974); + param_1[2] = extraout_EAX; + for (iVar2 = 0; iVar2 < *param_1; iVar2 = iVar2 + 1) { + (**(code **)(*piVar3 + 0x1c))(piVar3,iVar2 * 0xc + param_1[2],0xc); + } + (**(code **)(*piVar3 + 0x1c))(piVar3,param_1 + 1,4); + iVar2 = FUN_004022b0(param_1[1] << 2); + param_1[3] = iVar2; + for (iVar2 = 0; iVar2 < param_1[1]; iVar2 = iVar2 + 1) { + (**(code **)(*piVar3 + 0x1c))(piVar3,iVar2 * 4 + param_1[3],4); + } + iVar2 = FUN_004022b0(param_1[1] << 2); + param_1[4] = iVar2; + for (iVar2 = 0; iVar2 < param_1[1]; iVar2 = iVar2 + 1) { + piVar1 = (int *)FUN_00402298(8); + if (piVar1 == (int *)0x0) { + piVar1 = (int *)0x0; + } + else { + piVar1 = FUN_0046f190(piVar1,piVar3); + } + *(int **)(param_1[4] + iVar2 * 4) = piVar1; + } + return param_1; +} + + + +/* @0046ecdc file=? name=FUN_0046ecdc */ + +void __cdecl FUN_0046ecdc(int *param_1,byte param_2) + +{ + int iVar1; + + if (param_1 != (int *)0x0) { + FUN_004022e8((int *)param_1[2]); + FUN_004022e8((int *)param_1[3]); + for (iVar1 = 0; iVar1 < param_1[1]; iVar1 = iVar1 + 1) { + FUN_0046f1f0(*(int **)(param_1[4] + iVar1 * 4),3); + } + FUN_004022e8((int *)param_1[4]); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0046ed34 file=? name=FUN_0046ed34 */ + +undefined4 __cdecl FUN_0046ed34(int param_1,char *param_2,int param_3,int param_4) + +{ + int iVar1; + int *piVar2; + int *piVar3; + int *piVar4; + undefined4 *puVar5; + int *piVar6; + char *local_10; + char *local_c; + undefined4 local_8; + + local_8 = 0xffffffff; + iVar1 = FUN_00404088(param_3,s_gauge_004f4e39,s_image_004f4e3f,&local_c); + if (iVar1 != 0) { + piVar2 = (int *)FUN_004064fc(*(char **)(param_4 + 0x14),local_c); + piVar3 = (int *)FUN_00402298(0x20); + if (piVar3 == (int *)0x0) { + piVar3 = (int *)0x0; + } + else { + piVar3 = FUN_00403e84(piVar3,(char *)piVar2,1); + } + iVar1 = FUN_00404088((int)piVar3,s_object_004f4e45,s_gatfile_004f4e4c,&local_10); + if (iVar1 == 0) { + FUN_004dbb24(&DAT_00524e20,s_Missing__gat_specification__004f4e54,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + } + else { + piVar4 = (int *)FUN_004064fc(*(char **)(param_4 + 0x14),local_10); + iVar1 = FUN_0046e788((char *)piVar4); + if (iVar1 != 0) { + puVar5 = (undefined4 *)FUN_00402298(0x18); + if (puVar5 == (undefined4 *)0x0) { + piVar6 = (int *)0x0; + } + else { + piVar6 = FUN_0040328c(puVar5,0); + } + iVar1 = FUN_0046ee84(piVar6,(int)piVar3); + if (iVar1 == 1) { + puVar5 = (undefined4 *)FUN_00406f3c(param_1,param_2,0x12,1,0,piVar6,-1); + local_8 = *puVar5; + } + FUN_0046eaf0(); + FUN_00403310(piVar6,3); + } + FUN_004022d0(piVar4); + } + FUN_00403ecc(piVar3,3); + FUN_004022d0(piVar2); + } + return local_8; +} + + + +/* @0046ee84 file=? name=FUN_0046ee84 */ + +int __cdecl FUN_0046ee84(int *param_1,int param_2) + +{ + undefined4 *puVar1; + int iVar2; + int iVar3; + float10 fVar4; + float local_28 [3]; + int local_1c; + float local_18; + int local_14; + int *local_10; + int local_c; + int *local_8; + + iVar3 = 1; + local_8 = FUN_00404720(param_2,s_vertices_004f4e70,(char *)0x0); + if (local_8 == (int *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_No__vertices__page_in_the__GIM_f_004f4e79,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + iVar3 = 0; + } + else { + local_c = FUN_00403b60((int)local_8); + if (local_c < 1) { + FUN_004dbb24(&DAT_00524e20,s_The__vertices__page_in_the__GIM_f_004f4e9e,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + iVar3 = 0; + } + else { + (**(code **)(*param_1 + 0x20))(param_1,&local_c,4); + puVar1 = (undefined4 *)local_8[1]; + iVar2 = 0; + if (0 < local_c) { + do { + FUN_00408944((char *)puVar1[1],local_28); + (**(code **)(*param_1 + 0x20))(param_1,local_28,0xc); + puVar1 = (undefined4 *)*puVar1; + iVar2 = iVar2 + 1; + } while (iVar2 < local_c); + } + } + if (local_8 != (int *)0x0) { + (**(code **)*local_8)(local_8,3); + } + } + if (iVar3 == 1) { + local_10 = FUN_00404720(param_2,&DAT_004f4ed3,(char *)0x0); + if (local_10 == (int *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_No__lods__page_in_the__GIM_file__004f4ed8,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + iVar3 = 0; + } + else { + local_14 = FUN_00403b60((int)local_10); + if (local_14 < 1) { + FUN_004dbb24(&DAT_00524e20,s_The__lod__page_in_the__GIM_file_h_004f4ef9,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + iVar3 = 0; + } + else { + (**(code **)(*param_1 + 0x20))(param_1,&local_14,4); + iVar2 = 0; + puVar1 = (undefined4 *)local_10[1]; + if (0 < local_14) { + do { + local_1c = puVar1[1]; + if (local_1c == 0) { + FUN_004dbb24(&DAT_00524e20,s_Missing_scale_value__004f4f29,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + iVar3 = 0; + break; + } + fVar4 = (float10)FUN_004dd1cc(local_1c); + local_18 = (float)fVar4; + (**(code **)(*param_1 + 0x20))(param_1,&local_18,4); + puVar1 = (undefined4 *)*puVar1; + iVar2 = iVar2 + 1; + } while (iVar2 < local_14); + } + iVar2 = 0; + puVar1 = (undefined4 *)local_10[1]; + if (0 < local_14) { + do { + iVar3 = FUN_0046f234(param_1,param_2,(char *)(puVar1 + 2)); + if (iVar3 == 0) break; + puVar1 = (undefined4 *)*puVar1; + iVar2 = iVar2 + 1; + } while (iVar2 < local_14); + } + } + } + if (local_10 != (int *)0x0) { + (**(code **)*local_10)(local_10,3); + } + } + return iVar3; +} + + + +/* @0046f0c0 file=? name=FUN_0046f0c0 */ + +void __cdecl +FUN_0046f0c0(int *param_1,float param_2,float param_3,int *param_4,int param_5,float *param_6, + int param_7) + +{ + int iVar1; + undefined4 *puVar2; + float *pfVar3; + int iVar4; + float local_34 [12]; + + if (DAT_004f4da4 == '\0') { + FUN_004de998((int *)&DAT_00522ccc,0xc,100,1,&LAB_0046f974); + DAT_004f4da4 = DAT_004f4da4 + '\x01'; + } + FUN_0040aadc(local_34); + iVar1 = FUN_0040af88(param_6,local_34); + if (iVar1 == 0) { + iVar1 = 0; + for (pfVar3 = (float *)param_1[3]; (iVar1 < param_1[1] && (*pfVar3 < param_2)); + pfVar3 = pfVar3 + 1) { + iVar1 = iVar1 + 1; + } + if (iVar1 < param_1[1]) { + puVar2 = &DAT_0052317c; + for (iVar4 = 0; iVar4 < *param_1; iVar4 = iVar4 + 1) { + *puVar2 = 0; + puVar2 = puVar2 + 1; + } + FUN_0046f374(*(int **)(param_1[4] + iVar1 * 4),param_4,param_5,param_6,param_1[2],0x522ccc, + 0x52317c,param_3,param_7); + } + } + return; +} + + + +/* @0046f184 file=? name=FUN_0046f184 */ + +undefined4 FUN_0046f184(void) + +{ + return 1; +} + + + +/* @0046f190 file=? name=FUN_0046f190 */ + +int * __cdecl FUN_0046f190(int *param_1,int *param_2) + +{ + int iVar1; + int iVar2; + + (**(code **)(*param_2 + 0x1c))(param_2,param_1,4); + iVar1 = FUN_004022b0(*param_1 << 2); + param_1[1] = iVar1; + for (iVar1 = 0; iVar1 < *param_1; iVar1 = iVar1 + 1) { + iVar2 = FUN_00402298(0x14); + if (iVar2 == 0) { + iVar2 = 0; + } + else { + iVar2 = FUN_0046f468(iVar2,param_2); + } + *(int *)(param_1[1] + iVar1 * 4) = iVar2; + } + return param_1; +} + + + +/* @0046f1f0 file=? name=FUN_0046f1f0 */ + +void __cdecl FUN_0046f1f0(int *param_1,byte param_2) + +{ + int iVar1; + + if (param_1 != (int *)0x0) { + for (iVar1 = 0; iVar1 < *param_1; iVar1 = iVar1 + 1) { + FUN_0046f500(*(int **)(param_1[1] + iVar1 * 4),3); + } + FUN_004022e8((int *)param_1[1]); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0046f234 file=? name=FUN_0046f234 */ + +int __cdecl FUN_0046f234(int *param_1,int param_2,char *param_3) + +{ + undefined4 *puVar1; + int iVar2; + int iVar3; + int local_c; + int *local_8; + + iVar2 = 1; + local_8 = FUN_00404720(param_2,param_3,(char *)0x0); + if (local_8 == (int *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_Can_t_find_the___004f4f3e,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s___page_in_the__GIM_file__004f4f4f,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + iVar2 = 0; + } + else { + local_c = FUN_00403b60((int)local_8); + if (local_c < 1) { + FUN_004dbb24(&DAT_00524e20,s_The___004f4f68,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s___page_in_the__GIM_file_has_no_e_004f4f6e,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + iVar2 = 0; + } + else { + (**(code **)(*param_1 + 0x20))(param_1,&local_c,4); + iVar3 = 0; + puVar1 = (undefined4 *)local_8[1]; + if (0 < local_c) { + do { + iVar2 = FUN_0046f530(param_1,(char *)(puVar1 + 2),(char *)puVar1[1]); + if (iVar2 == 0) break; + puVar1 = (undefined4 *)*puVar1; + iVar3 = iVar3 + 1; + } while (iVar3 < local_c); + } + } + if (local_8 != (int *)0x0) { + (**(code **)*local_8)(local_8,3); + } + } + return iVar2; +} + + + +/* @0046f368 file=? name=FUN_0046f368 */ + +undefined4 FUN_0046f368(void) + +{ + return 1; +} + + + +/* @0046f374 file=? name=FUN_0046f374 */ + +void __cdecl +FUN_0046f374(int *param_1,int *param_2,int param_3,float *param_4,int param_5,int param_6, + int param_7,float param_8,int param_9) + +{ + byte *pbVar1; + int iVar2; + int local_18; + int local_14; + int local_10; + int local_c; + undefined4 *local_8; + + local_8 = (undefined4 *)param_1[1]; + if (param_9 == 0) { + for (iVar2 = 0; iVar2 < *param_1; iVar2 = iVar2 + 1) { + pbVar1 = (byte *)*local_8; + local_8 = local_8 + 1; + FUN_0046f774(pbVar1,param_2,param_3,param_4,param_5,param_6,param_7,param_8,(int *)0x0); + } + } + else { + FUN_00407bd0(&local_18,9999,9999,0xffffd8f1,0xffffd8f1); + for (iVar2 = 0; iVar2 < *param_1; iVar2 = iVar2 + 1) { + pbVar1 = (byte *)*local_8; + local_8 = local_8 + 1; + FUN_0046f774(pbVar1,param_2,param_3,param_4,param_5,param_6,param_7,param_8,&local_18); + } + (**(code **)(*param_2 + 0x18))(param_2,param_9); + (**(code **)(*param_2 + 0x24))(param_2,local_18 + -4,local_14 + -4); + (**(code **)(*param_2 + 0x40))(param_2,local_10 + 4,local_c + 4); + } + return; +} + + + +/* @0046f468 file=? name=FUN_0046f468 */ + +int __cdecl FUN_0046f468(int param_1,int *param_2) + +{ + undefined4 uVar1; + int iVar2; + int local_8; + + (**(code **)(*param_2 + 0x1c))(param_2,&local_8,4); + *(int *)(param_1 + 8) = local_8; + if (local_8 == 0) { + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 4,4); + (**(code **)(*param_2 + 0x1c))(param_2,param_1,4); + (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0xc,4); + uVar1 = FUN_004022b0(*(int *)(param_1 + 0xc) << 2); + *(undefined4 *)(param_1 + 0x10) = uVar1; + for (iVar2 = 0; iVar2 < *(int *)(param_1 + 0xc); iVar2 = iVar2 + 1) { + (**(code **)(*param_2 + 0x1c))(param_2,iVar2 * 4 + *(int *)(param_1 + 0x10),4); + } + } + return param_1; +} + + + +/* @0046f500 file=? name=FUN_0046f500 */ + +void __cdecl FUN_0046f500(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + if (param_1[2] == 0) { + FUN_004022e8((int *)param_1[4]); + } + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0046f530 file=? name=FUN_0046f530 */ + +/* WARNING: Type propagation algorithm not settling */ + +undefined4 __cdecl FUN_0046f530(int *param_1,char *param_2,char *param_3) + +{ + char cVar1; + int iVar2; + char *pcVar3; + char local_158 [64]; + int local_118 [64]; + undefined4 local_18; + int local_14 [4]; + + local_14[2] = 0; + local_14[1] = 0; + local_14[0] = 0; + local_18 = 1; + iVar2 = FUN_004d4b58(param_2,s_linelist_004f4f96); + if (iVar2 == 0) { + local_14[3] = 0; + (**(code **)(*param_1 + 0x20))(param_1,local_14 + 3,4); + while (*param_3 != '\0') { + while (((&DAT_005207dd)[*param_3] & 1) != 0) { + param_3 = param_3 + 1; + } + if (*param_3 == 'v') { + iVar2 = 0; + while( true ) { + param_3 = param_3 + 1; + if (((&DAT_005207dd)[*param_3] & 2) == 0) break; + iVar2 = (int)*param_3 + iVar2 * 10 + -0x30; + } + if (local_14[0] < 0x40) { + local_118[local_14[0]] = iVar2; + local_14[0] = local_14[0] + 1; + } + } + else if (*param_3 == 'a') { + iVar2 = 0; + pcVar3 = local_158; + do { + cVar1 = *param_3; + if ((((&DAT_005207dd)[cVar1] & 1) != 0) || (cVar1 == '\0')) break; + *pcVar3 = cVar1; + iVar2 = iVar2 + 1; + param_3 = param_3 + 1; + pcVar3 = pcVar3 + 1; + } while (iVar2 < 0x3f); + *pcVar3 = '\0'; + iVar2 = FUN_0046eb18(local_158,local_14 + 1,local_14 + 2); + if (iVar2 == 0) { + FUN_004dbb24(&DAT_00524e20,s_Couldn_t_find_attribute_group___004f4f9f,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,local_158,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004f4fbf,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + } + } + } + (**(code **)(*param_1 + 0x20))(param_1,local_14 + 1,4); + (**(code **)(*param_1 + 0x20))(param_1,local_14 + 2,4); + if (local_14[0] == 0) { + FUN_004dbb24(&DAT_00524e20,s_No_vertex_indices_in_primitive__004f4fc2,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + local_18 = 0; + } + else { + (**(code **)(*param_1 + 0x20))(param_1,local_14,4); + iVar2 = 0; + if (0 < local_14[0]) { + do { + (**(code **)(*param_1 + 0x20))(param_1,local_118 + iVar2,4); + iVar2 = iVar2 + 1; + } while (iVar2 < local_14[0]); + } + } + } + else { + FUN_004dbb24(&DAT_00524e20,s_Unsupported_primitive___004f4fe2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s___in__GIM_file__004f4ffa,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + local_18 = 0; + } + return local_18; +} + + + +/* @0046f768 file=? name=FUN_0046f768 */ + +undefined4 FUN_0046f768(void) + +{ + return 1; +} + + + +/* @0046f774 file=? name=FUN_0046f774 */ + +int __cdecl +FUN_0046f774(byte *param_1,int *param_2,int param_3,float *param_4,int param_5,int param_6, + int param_7,float param_8,int *param_9) + +{ + int iVar1; + int iVar2; + undefined4 uVar3; + undefined4 uVar4; + int *piVar5; + + iVar2 = *(int *)(param_1 + 8) + -1; + if ((*(int *)(param_1 + 8) == 0) && (1 < *(int *)(param_1 + 0xc))) { + if (*(int *)(param_1 + 4) != 0) { + param_3 = *(int *)(param_1 + 4); + } + (**(code **)(*param_2 + 0x18))(param_2,param_3); + piVar5 = *(int **)(param_1 + 0x10); + iVar2 = *piVar5; + FUN_0046f888(param_1,param_4,(float *)(iVar2 * 0xc + param_5),(float *)(iVar2 * 0xc + param_6), + (int *)(iVar2 * 4 + param_7),param_8,param_9); + uVar3 = FUN_004dcd94(); + uVar4 = FUN_004dcd94(); + (**(code **)(*param_2 + 0x24))(param_2,uVar4,uVar3); + iVar2 = *(int *)(param_1 + 0xc); + while (iVar2 = iVar2 + -1, 0 < iVar2) { + piVar5 = piVar5 + 1; + iVar1 = *piVar5; + FUN_0046f888(param_1,param_4,(float *)(iVar1 * 0xc + param_5),(float *)(iVar1 * 0xc + param_6) + ,(int *)(iVar1 * 4 + param_7),param_8,param_9); + uVar3 = FUN_004dcd94(); + uVar4 = FUN_004dcd94(); + (**(code **)(*param_2 + 0x30))(param_2,uVar4,uVar3); + } + } + return iVar2; +} + + + +/* @0046f888 file=? name=FUN_0046f888 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl +FUN_0046f888(byte *param_1,float *param_2,float *param_3,float *param_4,int *param_5,float param_6, + int *param_7) + +{ + int iVar1; + float local_14 [3]; + float local_8; + + if (*param_5 == 0) { + if ((*param_1 & 1) == 0) { + FUN_00408b98(param_4,param_3,param_2); + } + else { + FUN_00408440(local_14,param_3); + local_8 = param_6; + FUN_004086ac(local_14,local_14,param_6); + FUN_00408b98(param_4,local_14,param_2); + } + *param_4 = *param_4 + _DAT_0046f970; + param_4[2] = -param_4[2] + _DAT_0046f970; + *param_5 = 1; + } + if (param_7 != (int *)0x0) { + if (*param_4 < (float)*param_7) { + iVar1 = FUN_004dcd94(); + *param_7 = iVar1; + } + if ((float)param_7[2] < *param_4) { + iVar1 = FUN_004dcd94(); + param_7[2] = iVar1; + } + if (param_4[2] < (float)param_7[1]) { + iVar1 = FUN_004dcd94(); + param_7[1] = iVar1; + } + if ((float)param_7[3] < param_4[2]) { + iVar1 = FUN_004dcd94(); + param_7[3] = iVar1; + } + } + return; +} + + + +/* @0046f97c file=? name=FUN_0046f97c */ + +undefined4 * __cdecl FUN_0046f97c(undefined4 *param_1) + +{ + bool bVar1; + bool bVar2; + bool bVar3; + bool bVar4; + bool bVar5; + bool bVar6; + bool bVar7; + bool bVar8; + char *pcVar9; + char *pcVar10; + int iVar11; + undefined4 *puVar12; + undefined3 extraout_var; + undefined3 extraout_var_00; + undefined3 extraout_var_01; + undefined3 extraout_var_02; + undefined3 extraout_var_03; + undefined3 extraout_var_04; + undefined3 extraout_var_05; + undefined3 extraout_var_06; + int *piVar13; + int local_44 [8]; + int local_24; + int local_20; + int local_1c; + int local_18; + int local_14; + int local_10; + int local_c; + uint local_8; + + FUN_00447890(param_1); + *param_1 = &PTR_FUN_004f56a4; + param_1[0x714b] = 0; + param_1[0x714c] = 0; + param_1[0x714a] = 1; + param_1[0x714d] = 0; + pcVar9 = (char *)FUN_004dee74(s_L4GAUGE_004f5631); + if (pcVar9 != (char *)0x0) { + pcVar10 = (char *)FUN_004dee74(s_L4PLASMA_004f5639); + if (pcVar10 != (char *)0x0) { + iVar11 = FUN_004d4bec(pcVar10,&DAT_004f5642,4); + if (iVar11 == 0) { + puVar12 = (undefined4 *)FUN_00402298(100); + if (puVar12 == (undefined4 *)0x0) { + puVar12 = (undefined4 *)0x0; + } + else { + puVar12 = FUN_004750b4(puVar12,0x2f8,0xb); + } + param_1[0x714c] = puVar12; + } + else { + puVar12 = (undefined4 *)FUN_00402298(100); + if (puVar12 == (undefined4 *)0x0) { + puVar12 = (undefined4 *)0x0; + } + else { + puVar12 = FUN_004750b4(puVar12,0x3f8,0xc); + } + param_1[0x714c] = puVar12; + } + } + FUN_00403e84(local_44,s_GAUGE_L4GAUGE_INI_004f5647,1); + iVar11 = FUN_00403f84((int)local_44,pcVar9); + if (iVar11 != 0) { + local_8 = 0; + local_c = 0x280; + local_10 = 0x1e0; + local_14 = 0x40; + local_18 = 0x40; + local_1c = 0x500; + local_20 = 0; + local_24 = 0; + bVar1 = FUN_004040d8((int)local_44,pcVar9,&DAT_004f5659,(int *)&local_8); + bVar2 = FUN_004040d8((int)local_44,pcVar9,s_width_004f565e,&local_c); + bVar3 = FUN_004040d8((int)local_44,pcVar9,s_height_004f5664,&local_10); + bVar4 = FUN_004040d8((int)local_44,pcVar9,s_sizeInKB_004f566b,&local_14); + bVar5 = FUN_004040d8((int)local_44,pcVar9,s_granularityInKB_004f5674,&local_18); + bVar6 = FUN_004040d8((int)local_44,pcVar9,s_bytesPerLine_004f5684,&local_1c); + bVar7 = FUN_004040d8((int)local_44,pcVar9,s_pageFcnPtr_004f5691,&local_20); + bVar8 = FUN_004040d8((int)local_44,pcVar9,s_special_004f569c,&local_24); + if (CONCAT31(extraout_var,bVar1) + CONCAT31(extraout_var_00,bVar2) + + CONCAT31(extraout_var_01,bVar3) + CONCAT31(extraout_var_02,bVar4) + + CONCAT31(extraout_var_03,bVar5) + CONCAT31(extraout_var_04,bVar6) + + CONCAT31(extraout_var_05,bVar7) + CONCAT31(extraout_var_06,bVar8) == 8) { + piVar13 = (int *)FUN_00402298(0xcf0); + if (piVar13 == (int *)0x0) { + piVar13 = (int *)0x0; + } + else { + piVar13 = FUN_0046ced4(piVar13,local_8,local_c,local_10,local_14,local_18,local_1c, + local_20,local_24); + } + param_1[0x714b] = piVar13; + } + } + FUN_00403ecc(local_44,2); + } + return param_1; +} + + + +/* @0046fbcc file=? name=FUN_0046fbcc */ + +void __cdecl FUN_0046fbcc(int *param_1,byte param_2) + +{ + undefined4 *puVar1; + int *piVar2; + int iVar3; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004f56a4; + FUN_00447fc0((int)param_1,0); + iVar3 = 0; + piVar2 = param_1 + 0x15; + do { + puVar1 = (undefined4 *)*piVar2; + if ((puVar1 != (undefined4 *)0x0) && (puVar1 != (undefined4 *)0x0)) { + (**(code **)*puVar1)(puVar1,3); + } + iVar3 = iVar3 + 1; + piVar2 = piVar2 + 1; + } while (iVar3 < 0x10); + puVar1 = (undefined4 *)param_1[0x714b]; + if ((puVar1 != (undefined4 *)0x0) && (puVar1 != (undefined4 *)0x0)) { + (**(code **)*puVar1)(puVar1,3); + } + puVar1 = (undefined4 *)param_1[0x714c]; + if ((puVar1 != (undefined4 *)0x0) && (puVar1 != (undefined4 *)0x0)) { + (**(code **)*puVar1)(puVar1,3); + } + FUN_00447a14(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0046fc5c file=? name=FUN_0046fc5c */ + +void __cdecl FUN_0046fc5c(int param_1) + +{ + undefined4 *puVar1; + + puVar1 = *(undefined4 **)(param_1 + 0x1c52c); + if ((puVar1 != (undefined4 *)0x0) && (puVar1 != (undefined4 *)0x0)) { + (**(code **)*puVar1)(puVar1,3); + } + FUN_00447b58(); + return; +} + + + +/* @0046fc88 file=? name=FUN_0046fc88 */ + +void __cdecl FUN_0046fc88(int param_1) + +{ + FUN_00447b60(param_1); + return; +} + + + +/* @0046fc98 file=? name=FUN_0046fc98 */ + +void FUN_0046fc98(void) + +{ + FUN_00447e64(); + return; +} + + + diff --git a/reference/decomp/archive_2025export/all/part_009.c b/reference/decomp/archive_2025export/all/part_009.c new file mode 100644 index 0000000..08f5986 --- /dev/null +++ b/reference/decomp/archive_2025export/all/part_009.c @@ -0,0 +1,10781 @@ +/* @0046fcb0 file=? name=FUN_0046fcb0 */ + +void __cdecl FUN_0046fcb0(int param_1) + +{ + FUN_00447e6c(param_1); + return; +} + + + +/* @0046fcc0 file=? name=FUN_0046fcc0 */ + +void __cdecl FUN_0046fcc0(int param_1) + +{ + FUN_00447ef8(param_1); + return; +} + + + +/* @0046fcd0 file=? name=FUN_0046fcd0 */ + +void __cdecl FUN_0046fcd0(int param_1) + +{ + FUN_00447f0c(param_1); + return; +} + + + +/* @0046fce0 file=? name=FUN_0046fce0 */ + +void __cdecl FUN_0046fce0(int param_1) + +{ + FUN_00448188(param_1); + if (*(int *)(param_1 + 0x1c52c) != 0) { + FUN_0047003c(param_1); + FUN_0046d694(*(int *)(param_1 + 0x1c52c)); + } + return; +} + + + +/* @0046fd10 file=? name=FUN_0046fd10 */ + +undefined4 __cdecl FUN_0046fd10(int param_1) + +{ + int *piVar1; + int iVar2; + undefined4 uVar3; + + uVar3 = 0; + piVar1 = *(int **)(param_1 + 0x1c530); + if (piVar1 != (int *)0x0) { + uVar3 = (**(code **)(*piVar1 + 8))(piVar1,0); + } + if ((*(int *)(param_1 + 0x1c0d0) == 2) && + (piVar1 = *(int **)(param_1 + 0x1c52c), piVar1 != (int *)0x0)) { + iVar2 = (**(code **)(*piVar1 + 8))(piVar1,0); + if (iVar2 == 0) { + *(undefined4 *)(param_1 + 0x1c0d0) = 0; + } + else { + uVar3 = 1; + } + } + return uVar3; +} + + + +/* @0046fd6c file=? name=FUN_0046fd6c */ + +void __cdecl FUN_0046fd6c(int param_1,int param_2) + +{ + FUN_004688ce(*(int *)(param_1 + 0x4c) + 0x58,*(int *)(param_2 + 0x1bc),0); + FUN_00447c58(param_1,param_2); + return; +} + + + +/* @0046fda0 file=? name=FUN_0046fda0 */ + +void __cdecl FUN_0046fda0(int param_1,int param_2) + +{ + FUN_004689bc(*(int *)(param_1 + 0x4c) + 0x58,*(int *)(param_2 + 0x1bc)); + FUN_00447d38(param_1,param_2); + return; +} + + + +/* @0046fdd0 file=? name=FUN_0046fdd0 */ + +void __cdecl +FUN_0046fdd0(int param_1,int param_2,char *param_3,undefined4 param_4,int param_5,undefined4 param_6 + ,undefined4 param_7,int param_8) + +{ + int iVar1; + undefined4 *puVar2; + + if (*(int *)(param_1 + 0x1c52c) != 0) { + puVar2 = *(undefined4 **)(param_1 + 0x54 + param_2 * 4); + if ((puVar2 != (undefined4 *)0x0) && (puVar2 != (undefined4 *)0x0)) { + (**(code **)*puVar2)(puVar2,3); + } + puVar2 = (undefined4 *)FUN_00402298(0x544); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_0046d850(puVar2,*(undefined4 **)(param_1 + 0x1c52c),param_3,param_4,param_5, + param_6,param_7); + } + *(undefined4 **)(param_1 + 0x54 + param_2 * 4) = puVar2; + iVar1 = *(int *)(param_1 + 0x54 + param_2 * 4); + if (iVar1 != 0) { + if ((param_5 < 1) || (0xff < param_5)) { + FUN_0046dbdc(iVar1); + } + else { + FUN_0046db84(iVar1,param_8); + } + } + } + return; +} + + + +/* @0046fe70 file=? name=FUN_0046fe70 */ + +void __cdecl FUN_0046fe70(int param_1,int param_2,undefined4 param_3,undefined4 param_4,int param_5) + +{ + int iVar1; + + if ((*(int *)(param_1 + 0x1c52c) != 0) && + (iVar1 = *(int *)(param_1 + 0x54 + param_2 * 4), iVar1 != 0)) { + *(undefined4 *)(iVar1 + 0x53c) = param_3; + *(undefined4 *)(iVar1 + 0x540) = param_4; + if ((char)*(undefined4 *)(iVar1 + 0x52c) != '\0') { + FUN_0046db84(iVar1,param_5); + return; + } + FUN_0046dbdc(iVar1); + } + return; +} + + + +/* @0046fec0 file=? name=FUN_0046fec0 */ + +undefined4 __cdecl FUN_0046fec0(int param_1,int param_2,char *param_3) + +{ + undefined4 *puVar1; + undefined4 uVar2; + + uVar2 = 0; + if (*(int *)(param_1 + 0x1c530) != 0) { + puVar1 = *(undefined4 **)(param_1 + 0x54 + param_2 * 4); + if ((puVar1 != (undefined4 *)0x0) && (puVar1 != (undefined4 *)0x0)) { + (**(code **)*puVar1)(puVar1,3); + } + puVar1 = (undefined4 *)FUN_00402298(0x34); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_0046a3a8(puVar1,*(undefined4 **)(param_1 + 0x1c530),param_3,0); + } + *(undefined4 **)(param_1 + 0x54 + param_2 * 4) = puVar1; + uVar2 = *(undefined4 *)(param_1 + 0x54 + param_2 * 4); + } + return uVar2; +} + + + +/* @0046ff24 file=? name=FUN_0046ff24 */ + +void __cdecl FUN_0046ff24(int param_1,float param_2) + +{ + if (*(int *)(param_1 + 0x1c52c) != 0) { + FUN_0046d4a0(*(int *)(param_1 + 0x1c52c),param_2); + } + return; +} + + + +/* @0046ff44 file=? name=FUN_0046ff44 */ + +void __cdecl FUN_0046ff44(int param_1,float param_2) + +{ + if (*(int *)(param_1 + 0x1c52c) != 0) { + FUN_0046d430(*(int *)(param_1 + 0x1c52c),param_2); + } + return; +} + + + +/* @0046ff64 file=? name=FUN_0046ff64 */ + +void __cdecl FUN_0046ff64(int *param_1,char *param_2,undefined4 param_3) + +{ + char cVar1; + uint uVar2; + uint uVar3; + char *pcVar4; + char *pcVar5; + char local_44 [64]; + + uVar2 = 0xffffffff; + pcVar4 = *(char **)(*(int *)(DAT_004efc94 + 200) + 0x2c); + do { + pcVar5 = pcVar4; + if (uVar2 == 0) break; + uVar2 = uVar2 - 1; + pcVar5 = pcVar4 + 1; + cVar1 = *pcVar4; + pcVar4 = pcVar5; + } while (cVar1 != '\0'); + uVar2 = ~uVar2; + pcVar4 = pcVar5 + -uVar2; + pcVar5 = local_44; + for (uVar3 = uVar2 >> 2; uVar3 != 0; uVar3 = uVar3 - 1) { + *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4; + pcVar4 = pcVar4 + 4; + pcVar5 = pcVar5 + 4; + } + for (uVar2 = uVar2 & 3; uVar2 != 0; uVar2 = uVar2 - 1) { + *pcVar5 = *pcVar4; + pcVar4 = pcVar4 + 1; + pcVar5 = pcVar5 + 1; + } + FUN_004d49b8(local_44,param_2); + (**(code **)(*param_1 + 0x50))(param_1,local_44,param_3); + return; +} + + + +/* @0046ffcc file=? name=FUN_0046ffcc */ + +undefined8 __fastcall FUN_0046ffcc(undefined4 param_1,undefined4 param_2,int param_3,int param_4) + +{ + int iVar1; + undefined4 uVar2; + undefined2 extraout_var; + undefined6 uVar3; + + iVar1 = param_4 + -1; + if ((param_4 == 0) && (param_2 = 0, *(int *)(param_3 + 0x1c52c) != 0)) { + *(undefined4 *)(param_3 + 0x1c534) = 1; + FUN_00414b60(); + uVar2 = FUN_004dcd94(); + *(undefined4 *)(param_3 + 0x1c538) = uVar2; + uVar3 = FUN_0046d840(*(undefined4 *)(param_3 + 0x1c52c),1); + param_2 = CONCAT22(extraout_var,(short)((uint6)uVar3 >> 0x20)); + iVar1 = (int)uVar3; + } + return CONCAT44(param_2,iVar1); +} + + + +/* @0047003c file=? name=FUN_0047003c */ + +undefined8 __cdecl FUN_0047003c(int param_1) + +{ + int *piVar1; + int iVar2; + int iVar3; + undefined6 uVar4; + undefined2 extraout_var; + + piVar1 = (int *)FUN_00414b60(); + iVar3 = *(int *)(param_1 + 0x1c534); + iVar2 = *piVar1; + if ((iVar3 != 0) && (iVar2 = *(int *)(param_1 + 0x1c538), iVar2 <= *piVar1)) { + *(undefined4 *)(param_1 + 0x1c534) = 0; + uVar4 = FUN_0046d840(*(undefined4 *)(param_1 + 0x1c52c),0); + iVar3 = CONCAT22(extraout_var,(short)((uint6)uVar4 >> 0x20)); + iVar2 = (int)uVar4; + } + return CONCAT44(iVar3,iVar2); +} + + + +/* @00470084 file=? name=FUN_00470084 */ + +void FUN_00470084(void) + +{ + FUN_00401b1c(); + return; +} + + + +/* @004700ac file=? name=FUN_004700ac */ + +void __cdecl FUN_004700ac(char *param_1) + +{ + FUN_00402300(param_1); + return; +} + + + +/* @004700bc file=? name=FUN_004700bc */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +int * __cdecl +FUN_004700bc(int *param_1,int param_2,int param_3,int param_4,char *param_5,uint param_6,int param_7 + ,int param_8,int param_9) + +{ + int iVar1; + undefined4 *puVar2; + float10 fVar3; + + iVar1 = FUN_004700ac(param_5); + param_1[1] = iVar1; + *param_1 = param_2; + puVar2 = FUN_00442aec(param_2 + 4,(char *)param_1[1],0); + if (puVar2 == (undefined4 *)0x0) { + param_1[2] = 0; + param_1[3] = 0; + } + else { + param_1[2] = (puVar2[3] + 1) / 0xe; + param_1[3] = puVar2[4]; + } + if ((int)param_6 < 1) { + param_6 = 1; + } + if (param_1[9] == 4) { + if (8 < (int)param_6) { + param_6 = 8; + } + param_1[10] = 0x48ae0600; + } + else { + if (0x10 < (int)param_6) { + param_6 = 0x10; + } + fVar3 = (float10)FUN_004dd4b0(param_6); + param_1[10] = (int)(float)(fVar3 - (float10)_DAT_00470188); + } + param_1[4] = param_6; + param_1[9] = param_7; + param_1[5] = param_8; + param_1[6] = param_9; + param_1[7] = param_3; + param_1[8] = param_4; + param_1[0xc] = 1; + FUN_004703f4((int)param_1); + return param_1; +} + + + +/* @0047018c file=? name=FUN_0047018c */ + +void __cdecl FUN_0047018c(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + FUN_00442c12(*param_1 + 4,(char *)param_1[1]); + FUN_004022e8((int *)param_1[1]); + param_1[1] = 0; + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004701c8 file=? name=FUN_004701c8 */ + +undefined4 FUN_004701c8(void) + +{ + return 1; +} + + + +/* @004701d4 file=? name=FUN_004701d4 */ + +void __cdecl FUN_004701d4(int param_1,char *param_2) + +{ + char cVar1; + int *piVar2; + uint uVar3; + uint uVar4; + char *pcVar5; + char *pcVar6; + char local_54 [80]; + + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_NumericDisplay__004fafc9,(char *)0x0); + uVar3 = 0xffffffff; + do { + pcVar5 = param_2; + if (uVar3 == 0) break; + uVar3 = uVar3 - 1; + pcVar5 = param_2 + 1; + cVar1 = *param_2; + param_2 = pcVar5; + } while (cVar1 != '\0'); + uVar3 = ~uVar3; + pcVar5 = pcVar5 + -uVar3; + pcVar6 = local_54; + for (uVar4 = uVar3 >> 2; uVar4 != 0; uVar4 = uVar4 - 1) { + *(undefined4 *)pcVar6 = *(undefined4 *)pcVar5; + pcVar5 = pcVar5 + 4; + pcVar6 = pcVar6 + 4; + } + for (uVar3 = uVar3 & 3; uVar3 != 0; uVar3 = uVar3 - 1) { + *pcVar6 = *pcVar5; + pcVar5 = pcVar5 + 1; + pcVar6 = pcVar6 + 1; + } + FUN_004d49b8(local_54,&DAT_004fafda); + uVar3 = *(uint *)(param_1 + 0x14); + FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_backgroundColor__004fafde,(char *)0x0); + piVar2 = FUN_004db78c(&DAT_00524e20,uVar3); + FUN_004dbb24(piVar2,&DAT_004fafef,(char *)0x0); + uVar3 = *(uint *)(param_1 + 0x18); + FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_foregroundColor__004faff1,(char *)0x0); + piVar2 = FUN_004db78c(&DAT_00524e20,uVar3); + FUN_004dbb24(piVar2,&DAT_004fb002,(char *)0x0); + uVar3 = *(uint *)(param_1 + 0x10); + FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_numberOfDigits___004fb004,(char *)0x0); + piVar2 = FUN_004db78c(&DAT_00524e20,uVar3); + FUN_004dbb24(piVar2,&DAT_004fb015,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_format___004fb017,(char *)0x0); + switch(*(undefined4 *)(param_1 + 0x24)) { + case 0: + FUN_004dbb24(&DAT_00524e20,s_unsignedFormat_004fb028,(char *)0x0); + break; + case 1: + FUN_004dbb24(&DAT_00524e20,s_signedFormat_004fb038,(char *)0x0); + break; + case 2: + FUN_004dbb24(&DAT_00524e20,s_signedBlankedZerosFormat_004fb046,(char *)0x0); + break; + case 3: + FUN_004dbb24(&DAT_00524e20,s_absoluteFormat_004fb060,(char *)0x0); + break; + case 4: + FUN_004dbb24(&DAT_00524e20,s_timeFormat_004fb070,(char *)0x0); + break; + default: + FUN_004dbb24(&DAT_00524e20,s___OUT_OF_RANGE___004fb07c,(char *)0x0); + } + return; +} + + + +/* @004703f4 file=? name=FUN_004703f4 */ + +void __cdecl FUN_004703f4(int param_1) + +{ + undefined1 *puVar1; + int iVar2; + + *(undefined4 *)(param_1 + 0x2c) = 0xbf9e0419; + iVar2 = 0; + puVar1 = (undefined1 *)(param_1 + 0x34); + do { + *puVar1 = 0xff; + iVar2 = iVar2 + 1; + puVar1 = puVar1 + 1; + } while (iVar2 < 0x10); + return; +} + + + +/* @00470414 file=? name=FUN_00470414 */ + +void __cdecl FUN_00470414(int param_1,undefined4 param_2,undefined4 param_3) + +{ + *(undefined4 *)(param_1 + 0x14) = param_2; + *(undefined4 *)(param_1 + 0x18) = param_3; + FUN_004703f4(param_1); + return; +} + + + +/* @00470430 file=? name=FUN_00470430 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_00470430(int *param_1,int *param_2,float param_3) + +{ + uint uVar1; + int iVar2; + int iVar3; + undefined1 uVar4; + char cVar5; + char acStack_38 [20]; + int *piStack_24; + int iStack_20; + uint uStack_1c; + int iStack_18; + char *pcStack_14; + int iStack_10; + undefined4 uStack_c; + undefined4 *puStack_8; + + if (param_1[0xc] != 0) { + param_1[0xc] = 0; + FUN_004703f4((int)param_1); + } + puStack_8 = FUN_00442aec(*param_1 + 4,(char *)param_1[1],0); + if (puStack_8 == (undefined4 *)0x0) goto LAB_00470737; + if ((param_1[9] == 3) && (param_3 < _DAT_00470750)) { + param_3 = -param_3; + } + if ((float)param_1[0xb] == param_3) goto LAB_00470737; + param_1[0xb] = (int)param_3; + iVar2 = FUN_004dcd94(); + uStack_c = puStack_8[4]; + if (iVar2 < 0) { + iVar2 = -iVar2; + } + iVar3 = FUN_004dcd94(); + if (iVar3 < iVar2) { + iVar2 = iVar3; + } + pcStack_14 = &stack0xffffffc7 + param_1[4]; + iVar3 = param_1[9]; + if (iVar3 == 0) { +LAB_004704f9: + iVar3 = param_1[4]; + while (iVar3 = iVar3 + -1, -1 < iVar3) { + *pcStack_14 = (char)(iVar2 % 10); + iVar2 = iVar2 / 10; + pcStack_14 = pcStack_14 + -1; + } + } + else if (iVar3 == 1) { + for (iVar3 = param_1[4] + -2; -1 < iVar3; iVar3 = iVar3 + -1) { + *pcStack_14 = (char)(iVar2 % 10); + iVar2 = iVar2 / 10; + pcStack_14 = pcStack_14 + -1; + } + uVar4 = 10; + if (param_3 < _DAT_00470750) { + uVar4 = 0xb; + } + *pcStack_14 = uVar4; + } + else { + if (iVar3 - 2U < 2) goto LAB_004704f9; + if (iVar3 - 2U == 2) { + uStack_1c = 0; + iVar3 = param_1[4]; + uVar1 = uStack_1c; + while (uStack_1c = uVar1, 0 < iVar3) { + uStack_1c = uVar1 + 1; + if (uVar1 < 2) { + iStack_18 = iVar2 % 0x3c; + iVar2 = iVar2 / 0x3c; + } + else if (uVar1 == 2) { + iStack_18 = iVar2 % 0x18; + iVar2 = iVar2 / 0x18; + } + else if (uVar1 == 3) { + iStack_18 = iVar2 % 100; + } + else { + iStack_18 = 0; + } + if (-1 < iVar3 + -1) { + *pcStack_14 = (char)(iStack_18 % 10); + pcStack_14 = pcStack_14 + -1; + } + if (-1 < iVar3 + -2) { + *pcStack_14 = (char)(iStack_18 / 10); + pcStack_14 = pcStack_14 + -1; + } + iVar3 = iVar3 + -3; + uVar1 = uStack_1c; + if (-1 < iVar3) { + *pcStack_14 = 0xd; + pcStack_14 = pcStack_14 + -1; + uVar1 = uStack_1c; + } + } + } + } + iStack_20 = 1; + iStack_10 = param_1[7]; + pcStack_14 = acStack_38; + piStack_24 = param_1 + 0xd; + for (iVar2 = 0; iVar2 < param_1[4]; iVar2 = iVar2 + 1) { + cVar5 = *pcStack_14; + if ((param_1[9] == 2) && (iStack_20 != 0)) { + if ((_DAT_00470750 <= param_3) || (pcStack_14[1] == '\0')) { + if (cVar5 == '\0') { + if (iVar2 == param_1[4] + -1) { + iStack_20 = 0; + } + else { + cVar5 = '\x7f'; + } + } + else { + iStack_20 = 0; + } + } + else { + cVar5 = '\v'; + iStack_20 = 0; + } + } + if (cVar5 != (char)*piStack_24) { + *(char *)piStack_24 = cVar5; + (**(code **)(*param_2 + 0x24))(param_2,iStack_10,param_1[8]); + if (cVar5 == 0x7f) { + (**(code **)(*param_2 + 0x18))(param_2,param_1[5]); + (**(code **)(*param_2 + 0x4c))(param_2,param_1[2],uStack_c); + } + else { + iVar3 = (int)cVar5 * param_1[2]; + (**(code **)(*param_2 + 0x18))(param_2,param_1[6]); + (**(code **)(*param_2 + 0x58)) + (param_2,param_1[5],0,puStack_8,iVar3,0,param_1[2] + iVar3 + -1,uStack_c); + } + } + piStack_24 = (int *)((int)piStack_24 + 1); + iStack_10 = iStack_10 + param_1[2]; + pcStack_14 = pcStack_14 + 1; + } +LAB_00470737: + FUN_00442c12(*param_1 + 4,(char *)param_1[1]); + return; +} + + + +/* @00470436 file=? name=FUN_00470436 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_00470436(void) + +{ + int *piVar1; + uint uVar2; + undefined4 *puVar3; + int iVar4; + int iVar5; + undefined1 uVar6; + char cVar7; + int unaff_EBP; + + piVar1 = *(int **)(unaff_EBP + 8); + if (piVar1[0xc] != 0) { + piVar1[0xc] = 0; + FUN_004703f4((int)piVar1); + } + puVar3 = FUN_00442aec(*piVar1 + 4,(char *)piVar1[1],0); + *(undefined4 **)(unaff_EBP + -4) = puVar3; + if (*(int *)(unaff_EBP + -4) == 0) goto LAB_00470737; + if ((piVar1[9] == 3) && (*(float *)(unaff_EBP + 0x10) < _DAT_00470750)) { + *(float *)(unaff_EBP + 0x10) = -*(float *)(unaff_EBP + 0x10); + } + if ((float)piVar1[0xb] == *(float *)(unaff_EBP + 0x10)) goto LAB_00470737; + piVar1[0xb] = *(int *)(unaff_EBP + 0x10); + iVar4 = FUN_004dcd94(); + *(undefined4 *)(unaff_EBP + -8) = *(undefined4 *)(*(int *)(unaff_EBP + -4) + 0x10); + if (iVar4 < 0) { + iVar4 = -iVar4; + } + iVar5 = FUN_004dcd94(); + if (iVar5 < iVar4) { + iVar4 = iVar5; + } + *(int *)(unaff_EBP + -0x10) = unaff_EBP + -0x35 + piVar1[4]; + iVar5 = piVar1[9]; + if (iVar5 == 0) { +LAB_004704f9: + iVar5 = piVar1[4]; + while (iVar5 = iVar5 + -1, -1 < iVar5) { + **(undefined1 **)(unaff_EBP + -0x10) = (char)(iVar4 % 10); + iVar4 = iVar4 / 10; + *(int *)(unaff_EBP + -0x10) = *(int *)(unaff_EBP + -0x10) + -1; + } + } + else if (iVar5 == 1) { + for (iVar5 = piVar1[4] + -2; -1 < iVar5; iVar5 = iVar5 + -1) { + **(undefined1 **)(unaff_EBP + -0x10) = (char)(iVar4 % 10); + iVar4 = iVar4 / 10; + *(int *)(unaff_EBP + -0x10) = *(int *)(unaff_EBP + -0x10) + -1; + } + uVar6 = 10; + if (*(float *)(unaff_EBP + 0x10) < _DAT_00470750) { + uVar6 = 0xb; + } + **(undefined1 **)(unaff_EBP + -0x10) = uVar6; + } + else { + if (iVar5 - 2U < 2) goto LAB_004704f9; + if (iVar5 - 2U == 2) { + *(undefined4 *)(unaff_EBP + -0x18) = 0; + iVar5 = piVar1[4]; + while (0 < iVar5) { + uVar2 = *(uint *)(unaff_EBP + -0x18); + *(int *)(unaff_EBP + -0x18) = *(int *)(unaff_EBP + -0x18) + 1; + if (uVar2 < 2) { + *(int *)(unaff_EBP + -0x14) = iVar4 % 0x3c; + iVar4 = iVar4 / 0x3c; + } + else if (uVar2 == 2) { + *(int *)(unaff_EBP + -0x14) = iVar4 % 0x18; + iVar4 = iVar4 / 0x18; + } + else if (uVar2 == 3) { + *(int *)(unaff_EBP + -0x14) = iVar4 % 100; + } + else { + *(undefined4 *)(unaff_EBP + -0x14) = 0; + } + if (-1 < iVar5 + -1) { + **(undefined1 **)(unaff_EBP + -0x10) = (char)(*(int *)(unaff_EBP + -0x14) % 10); + *(int *)(unaff_EBP + -0x10) = *(int *)(unaff_EBP + -0x10) + -1; + } + if (-1 < iVar5 + -2) { + **(undefined1 **)(unaff_EBP + -0x10) = (char)(*(int *)(unaff_EBP + -0x14) / 10); + *(int *)(unaff_EBP + -0x10) = *(int *)(unaff_EBP + -0x10) + -1; + } + iVar5 = iVar5 + -3; + if (-1 < iVar5) { + **(undefined1 **)(unaff_EBP + -0x10) = 0xd; + *(int *)(unaff_EBP + -0x10) = *(int *)(unaff_EBP + -0x10) + -1; + } + } + } + } + *(undefined4 *)(unaff_EBP + -0x1c) = 1; + *(int *)(unaff_EBP + -0xc) = piVar1[7]; + *(int *)(unaff_EBP + -0x10) = unaff_EBP + -0x34; + *(int **)(unaff_EBP + -0x20) = piVar1 + 0xd; + for (iVar4 = 0; iVar4 < piVar1[4]; iVar4 = iVar4 + 1) { + cVar7 = **(char **)(unaff_EBP + -0x10); + if ((piVar1[9] == 2) && (*(int *)(unaff_EBP + -0x1c) != 0)) { + if ((_DAT_00470750 <= *(float *)(unaff_EBP + 0x10)) || + (*(char *)(*(int *)(unaff_EBP + -0x10) + 1) == '\0')) { + if (cVar7 == '\0') { + if (iVar4 == piVar1[4] + -1) { + *(undefined4 *)(unaff_EBP + -0x1c) = 0; + } + else { + cVar7 = '\x7f'; + } + } + else { + *(undefined4 *)(unaff_EBP + -0x1c) = 0; + } + } + else { + cVar7 = '\v'; + *(undefined4 *)(unaff_EBP + -0x1c) = 0; + } + } + if (cVar7 != **(char **)(unaff_EBP + -0x20)) { + **(char **)(unaff_EBP + -0x20) = cVar7; + (**(code **)(**(int **)(unaff_EBP + 0xc) + 0x24)) + (*(int **)(unaff_EBP + 0xc),*(undefined4 *)(unaff_EBP + -0xc),piVar1[8]); + if (cVar7 == 0x7f) { + (**(code **)(**(int **)(unaff_EBP + 0xc) + 0x18))(*(int **)(unaff_EBP + 0xc),piVar1[5]); + (**(code **)(**(int **)(unaff_EBP + 0xc) + 0x4c)) + (*(int **)(unaff_EBP + 0xc),piVar1[2],*(undefined4 *)(unaff_EBP + -8)); + } + else { + iVar5 = (int)cVar7 * piVar1[2]; + (**(code **)(**(int **)(unaff_EBP + 0xc) + 0x18))(*(int **)(unaff_EBP + 0xc),piVar1[6]); + (**(code **)(**(int **)(unaff_EBP + 0xc) + 0x58)) + (*(int **)(unaff_EBP + 0xc),piVar1[5],0,*(undefined4 *)(unaff_EBP + -4),iVar5,0, + piVar1[2] + iVar5 + -1,*(undefined4 *)(unaff_EBP + -8)); + } + } + *(int *)(unaff_EBP + -0x20) = *(int *)(unaff_EBP + -0x20) + 1; + *(int *)(unaff_EBP + -0xc) = *(int *)(unaff_EBP + -0xc) + piVar1[2]; + *(int *)(unaff_EBP + -0x10) = *(int *)(unaff_EBP + -0x10) + 1; + } +LAB_00470737: + FUN_00442c12(*piVar1 + 4,(char *)piVar1[1]); + return; +} + + + +/* @00470758 file=? name=FUN_00470758 */ + +void __cdecl FUN_00470758(int param_1,int *param_2) + +{ + if (*(int *)(param_1 + 0x30) == 0) { + *(undefined4 *)(param_1 + 0x30) = 1; + (**(code **)(*param_2 + 0x18))(param_2,*(undefined4 *)(param_1 + 0x14)); + (**(code **)(*param_2 + 0x24)) + (param_2,*(undefined4 *)(param_1 + 0x1c),*(undefined4 *)(param_1 + 0x20)); + (**(code **)(*param_2 + 0x4c)) + (param_2,*(int *)(param_1 + 8) * *(int *)(param_1 + 0x10), + *(undefined4 *)(param_1 + 0xc)); + } + return; +} + + + +/* @004707a8 file=? name=FUN_004707a8 */ + +undefined4 __cdecl FUN_004707a8(int param_1,int param_2,int param_3,undefined4 param_4,int param_5) + +{ + int iVar1; + undefined4 uVar2; + int *piVar3; + undefined4 *puVar4; + + iVar1 = FUN_00445034(&PTR_s_unsigned_004f5784,&DAT_004f593c); + if (iVar1 < 0) { + uVar2 = 0; + } + else { + piVar3 = (int *)FUN_00402298(0x98); + if (piVar3 != (int *)0x0) { + FUN_00470888(piVar3,DAT_004f57e8,DAT_004f582c,param_5,0,param_1,param_2,param_3, + param_2 + DAT_004f5870,param_3 + DAT_004f5874,&DAT_004f58b4,DAT_004f58f8,iVar1, + DAT_004f5980,DAT_004f59c4,DAT_004f5a08,s_NumericDisplayScalar_004fadbd); + } + iVar1 = *(int *)(param_5 + 0x4c) + 4; + puVar4 = FUN_00442aec(iVar1,&DAT_004f58b4,0); + if (puVar4 == (undefined4 *)0x0) { + uVar2 = 0; + } + else { + FUN_00442c12(iVar1,&DAT_004f58b4); + uVar2 = 1; + } + } + return uVar2; +} + + + +/* @00470888 file=? name=FUN_00470888 */ + +int * __cdecl +FUN_00470888(int *param_1,undefined4 param_2,undefined4 param_3,int param_4,undefined4 param_5, + int param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9,undefined4 param_10 + ,char *param_11,uint param_12,int param_13,int param_14,int param_15,undefined4 param_16 + ,undefined4 param_17) + +{ + int *piVar1; + undefined4 *puVar2; + + FUN_00444818(param_1,param_2,param_3,param_4,param_5,param_6,param_17); + *param_1 = (int)&PTR_FUN_004fbb40; + piVar1 = (int *)FUN_00402298(0x44); + if (piVar1 == (int *)0x0) { + piVar1 = (int *)0x0; + } + else { + piVar1 = FUN_004700bc(piVar1,*(int *)(param_4 + 0x4c),0,0,param_11,param_12,param_13,param_14, + param_15); + } + param_1[0x24] = (int)piVar1; + (**(code **)(param_1[0x12] + 8))(param_1 + 0x12,param_7,param_8,param_9,param_10); + puVar2 = (undefined4 *)FUN_00402298(0x18); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_00474855(puVar2,0,param_1 + 0x25,param_16); + } + (**(code **)(*param_1 + 0x34))(param_1,puVar2); + return param_1; +} + + + +/* @0047094c file=? name=FUN_0047094c */ + +void __cdecl FUN_0047094c(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004fbb40; + if ((int *)param_1[0x24] != (int *)0x0) { + FUN_0047018c((int *)param_1[0x24],3); + param_1[0x24] = 0; + } + FUN_00444870(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00470998 file=? name=FUN_00470998 */ + +void FUN_00470998(void) + +{ + FUN_004448ac(); + return; +} + + + +/* @004709a8 file=? name=FUN_004709a8 */ + +void __cdecl FUN_004709a8(int param_1,char *param_2) + +{ + char cVar1; + uint uVar2; + uint uVar3; + char *pcVar4; + char *pcVar5; + char local_54 [80]; + + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_NumericDisplayScalar__004fb096,(char *)0x0); + uVar2 = 0xffffffff; + do { + pcVar4 = param_2; + if (uVar2 == 0) break; + uVar2 = uVar2 - 1; + pcVar4 = param_2 + 1; + cVar1 = *param_2; + param_2 = pcVar4; + } while (cVar1 != '\0'); + uVar2 = ~uVar2; + pcVar4 = pcVar4 + -uVar2; + pcVar5 = local_54; + for (uVar3 = uVar2 >> 2; uVar3 != 0; uVar3 = uVar3 - 1) { + *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4; + pcVar4 = pcVar4 + 4; + pcVar5 = pcVar5 + 4; + } + for (uVar2 = uVar2 & 3; uVar2 != 0; uVar2 = uVar2 - 1) { + *pcVar5 = *pcVar4; + pcVar4 = pcVar4 + 1; + pcVar5 = pcVar5 + 1; + } + FUN_004d49b8(local_54,&DAT_004fb0ad); + FUN_004448bc(param_1,local_54); + FUN_004701d4(*(int *)(param_1 + 0x90),local_54); + return; +} + + + +/* @00470a3c file=? name=FUN_00470a3c */ + +void __cdecl FUN_00470a3c(int param_1) + +{ + FUN_004703f4(*(int *)(param_1 + 0x90)); + return; +} + + + +/* @00470a54 file=? name=FUN_00470a54 */ + +void __cdecl FUN_00470a54(int param_1,undefined4 param_2,undefined4 param_3) + +{ + FUN_00470414(*(int *)(param_1 + 0x90),param_2,param_3); + return; +} + + + +/* @00470a74 file=? name=FUN_00470a74 */ + +void __cdecl FUN_00470a74(int param_1) + +{ + FUN_00470430(*(int **)(param_1 + 0x90),(int *)(param_1 + 0x48),*(float *)(param_1 + 0x94)); + return; +} + + + +/* @00470a98 file=? name=FUN_00470a98 */ + +undefined4 __cdecl FUN_00470a98(int param_1,int param_2,int param_3,undefined4 param_4,int param_5) + +{ + int iVar1; + undefined4 uVar2; + int *piVar3; + undefined4 *puVar4; + + iVar1 = FUN_00445034(&PTR_s_unsigned_004f5784,&DAT_004f5d84); + if (iVar1 < 0) { + uVar2 = 0; + } + else { + piVar3 = (int *)FUN_00402298(0x98); + if (piVar3 != (int *)0x0) { + FUN_00470b74(piVar3,DAT_004f5c30,DAT_004f5c74,param_5,0,param_1,param_2,param_3, + param_2 + DAT_004f5cb8,param_3 + DAT_004f5cbc,&DAT_004f5cfc,DAT_004f5d40,iVar1, + DAT_004f5dc8,DAT_004f5e0c,DAT_004f5e50); + } + iVar1 = *(int *)(param_5 + 0x4c) + 4; + puVar4 = FUN_00442aec(iVar1,&DAT_004f5cfc,0); + if (puVar4 == (undefined4 *)0x0) { + uVar2 = 0; + } + else { + FUN_00442c12(iVar1,&DAT_004f5cfc); + uVar2 = 1; + } + } + return uVar2; +} + + + +/* @00470b74 file=? name=FUN_00470b74 */ + +int * __cdecl +FUN_00470b74(int *param_1,undefined4 param_2,undefined4 param_3,int param_4,undefined4 param_5, + int param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9,undefined4 param_10 + ,char *param_11,uint param_12,int param_13,int param_14,int param_15,undefined4 param_16 + ) + +{ + FUN_00470888(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9,param_10, + param_11,param_12,param_13,param_14,param_15,param_16,s_NumericDisplayScalar_004fadbd + ); + *param_1 = (int)&PTR_FUN_004fbafc; + return param_1; +} + + + +/* @00470bd0 file=? name=FUN_00470bd0 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_00470bd0(int param_1) + +{ + float10 fVar1; + + fVar1 = FUN_004dcd00((double)(*(float *)(param_1 + 0x94) * _DAT_00470c18)); + FUN_00470430(*(int **)(param_1 + 0x90),(int *)(param_1 + 0x48),(float)fVar1); + return; +} + + + +/* @00470cfc file=? name=FUN_00470cfc */ + +int * __cdecl +FUN_00470cfc(int *param_1,undefined4 param_2,undefined4 param_3,int param_4,undefined4 param_5, + int param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9,undefined4 param_10 + ,char *param_11,uint param_12,int param_13,int param_14,int param_15,undefined4 param_16 + ,undefined4 param_17) + +{ + int *piVar1; + undefined4 *puVar2; + + FUN_00444818(param_1,param_2,param_3,param_4,param_5,param_6,param_17); + *param_1 = (int)&PTR_FUN_004fbab8; + piVar1 = (int *)FUN_00402298(0x44); + if (piVar1 == (int *)0x0) { + piVar1 = (int *)0x0; + } + else { + piVar1 = FUN_004700bc(piVar1,*(int *)(param_4 + 0x4c),0,0,param_11,param_12,param_13,param_14, + param_15); + } + param_1[0x24] = (int)piVar1; + (**(code **)(param_1[0x12] + 8))(param_1 + 0x12,param_7,param_8,param_9,param_10); + puVar2 = (undefined4 *)FUN_00402298(0x18); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_004749de(puVar2,0,param_1 + 0x25,param_16); + } + (**(code **)(*param_1 + 0x34))(param_1,puVar2); + return param_1; +} + + + +/* @00470dc0 file=? name=FUN_00470dc0 */ + +void __cdecl FUN_00470dc0(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004fbab8; + if ((int *)param_1[0x24] != (int *)0x0) { + FUN_0047018c((int *)param_1[0x24],3); + param_1[0x24] = 0; + } + FUN_00444870(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00470e0c file=? name=FUN_00470e0c */ + +void FUN_00470e0c(void) + +{ + FUN_004448ac(); + return; +} + + + +/* @00470e1c file=? name=FUN_00470e1c */ + +void __cdecl FUN_00470e1c(int param_1,char *param_2) + +{ + char cVar1; + uint uVar2; + uint uVar3; + char *pcVar4; + char *pcVar5; + char local_54 [80]; + + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_NumericDisplayInteger__004fb0cd,(char *)0x0); + uVar2 = 0xffffffff; + do { + pcVar4 = param_2; + if (uVar2 == 0) break; + uVar2 = uVar2 - 1; + pcVar4 = param_2 + 1; + cVar1 = *param_2; + param_2 = pcVar4; + } while (cVar1 != '\0'); + uVar2 = ~uVar2; + pcVar4 = pcVar4 + -uVar2; + pcVar5 = local_54; + for (uVar3 = uVar2 >> 2; uVar3 != 0; uVar3 = uVar3 - 1) { + *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4; + pcVar4 = pcVar4 + 4; + pcVar5 = pcVar5 + 4; + } + for (uVar2 = uVar2 & 3; uVar2 != 0; uVar2 = uVar2 - 1) { + *pcVar5 = *pcVar4; + pcVar4 = pcVar4 + 1; + pcVar5 = pcVar5 + 1; + } + FUN_004d49b8(local_54,&DAT_004fb0e5); + FUN_004448bc(param_1,local_54); + FUN_004701d4(*(int *)(param_1 + 0x90),local_54); + return; +} + + + +/* @00470eb0 file=? name=FUN_00470eb0 */ + +void __cdecl FUN_00470eb0(int param_1) + +{ + FUN_004703f4(*(int *)(param_1 + 0x90)); + return; +} + + + +/* @00470ec8 file=? name=FUN_00470ec8 */ + +void __cdecl FUN_00470ec8(int param_1,undefined4 param_2,undefined4 param_3) + +{ + FUN_00470414(*(int *)(param_1 + 0x90),param_2,param_3); + return; +} + + + +/* @00470ee8 file=? name=FUN_00470ee8 */ + +void __cdecl FUN_00470ee8(int param_1) + +{ + FUN_00470430(*(int **)(param_1 + 0x90),(int *)(param_1 + 0x48),(float)*(int *)(param_1 + 0x94)); + return; +} + + + +/* @00470f10 file=? name=FUN_00470f10 */ + +undefined4 __cdecl FUN_00470f10(int param_1,int param_2,int param_3,undefined4 param_4,int param_5) + +{ + int iVar1; + undefined4 uVar2; + undefined4 *puVar3; + + iVar1 = FUN_00445034(&PTR_s_unsigned_004f5784,&DAT_004f6614); + if (iVar1 < 0) { + uVar2 = 0; + } + else { + puVar3 = (undefined4 *)FUN_00402298(0x94); + if (puVar3 != (undefined4 *)0x0) { + FUN_00470fe8(puVar3,DAT_004f64c0,DAT_004f6504,param_5,0,param_1,param_2,param_3, + param_2 + DAT_004f6548,param_3 + DAT_004f654c,&DAT_004f658c,DAT_004f65d0,iVar1, + DAT_004f6658,DAT_004f669c,s_DigitalClock_004fade8); + } + iVar1 = *(int *)(param_5 + 0x4c) + 4; + puVar3 = FUN_00442aec(iVar1,&DAT_004f658c,0); + if (puVar3 == (undefined4 *)0x0) { + uVar2 = 0; + } + else { + FUN_00442c12(iVar1,&DAT_004f658c); + uVar2 = 1; + } + } + return uVar2; +} + + + +/* @00470fe8 file=? name=FUN_00470fe8 */ + +undefined4 * __cdecl +FUN_00470fe8(undefined4 *param_1,undefined4 param_2,undefined4 param_3,int param_4, + undefined4 param_5,int param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9, + undefined4 param_10,char *param_11,uint param_12,int param_13,int param_14,int param_15, + undefined4 param_16) + +{ + int *piVar1; + + FUN_00444818(param_1,param_2,param_3,param_4,param_5,param_6,param_16); + *param_1 = &PTR_FUN_004fba74; + piVar1 = (int *)FUN_00402298(0x44); + if (piVar1 == (int *)0x0) { + piVar1 = (int *)0x0; + } + else { + piVar1 = FUN_004700bc(piVar1,*(int *)(param_4 + 0x4c),0,0,param_11,param_12,param_13,param_14, + param_15); + } + param_1[0x24] = piVar1; + (**(code **)(param_1[0x12] + 8))(param_1 + 0x12,param_7,param_8,param_9,param_10); + return param_1; +} + + + +/* @0047107c file=? name=FUN_0047107c */ + +void __cdecl FUN_0047107c(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004fba74; + if ((int *)param_1[0x24] != (int *)0x0) { + FUN_0047018c((int *)param_1[0x24],3); + param_1[0x24] = 0; + } + FUN_00444870(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004710c8 file=? name=FUN_004710c8 */ + +void FUN_004710c8(void) + +{ + FUN_004448ac(); + return; +} + + + +/* @004710d8 file=? name=FUN_004710d8 */ + +void __cdecl FUN_004710d8(int param_1,char *param_2) + +{ + char cVar1; + uint uVar2; + uint uVar3; + char *pcVar4; + char *pcVar5; + undefined8 uVar6; + char local_54 [80]; + + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_DigitalClock__004fb0f6,(char *)0x0); + uVar2 = 0xffffffff; + do { + pcVar4 = param_2; + if (uVar2 == 0) break; + uVar2 = uVar2 - 1; + pcVar4 = param_2 + 1; + cVar1 = *param_2; + param_2 = pcVar4; + } while (cVar1 != '\0'); + uVar2 = ~uVar2; + pcVar4 = pcVar4 + -uVar2; + pcVar5 = local_54; + for (uVar3 = uVar2 >> 2; uVar3 != 0; uVar3 = uVar3 - 1) { + *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4; + pcVar4 = pcVar4 + 4; + pcVar5 = pcVar5 + 4; + } + for (uVar2 = uVar2 & 3; uVar2 != 0; uVar2 = uVar2 - 1) { + *pcVar5 = *pcVar4; + pcVar4 = pcVar4 + 1; + pcVar5 = pcVar5 + 1; + } + FUN_004d49b8(local_54,&DAT_004fb105); + uVar2 = *(uint *)(param_1 + 0x90); + FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_numericDisplay__004fb109,(char *)0x0); + uVar6 = FUN_004dbd4c(&DAT_00524e20,uVar2); + FUN_004dbb24((int *)uVar6,&DAT_004fb119,(char *)0x0); + FUN_004443b4(param_1,local_54); + FUN_004701d4(*(int *)(param_1 + 0x90),local_54); + return; +} + + + +/* @004711b8 file=? name=FUN_004711b8 */ + +void __cdecl FUN_004711b8(int param_1) + +{ + FUN_004703f4(*(int *)(param_1 + 0x90)); + return; +} + + + +/* @004711d0 file=? name=FUN_004711d0 */ + +void __cdecl FUN_004711d0(int param_1) + +{ + FUN_00470430(*(int **)(param_1 + 0x90),(int *)(param_1 + 0x48),*(float *)(DAT_004efc94 + 0x58)); + return; +} + + + +/* @004711fc file=? name=FUN_004711fc */ + +undefined4 FUN_004711fc(void) + +{ + int iVar1; + int iVar2; + int iVar3; + int iVar4; + undefined4 uVar5; + int iVar6; + int iVar7; + int *piVar8; + int in_stack_00000014; + + iVar4 = FUN_00445034(&PTR_s_native_004f575c,&DAT_004f6a18); + if (iVar4 < 0) { + FUN_004dbb24(&DAT_00524e20,s_configure_palette_ID___004fb11b,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004f6a18,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s___NOT_FOUND_004fb132,(char *)0x0); + uVar5 = 0; + } + else { + iVar6 = FUN_00445034(&PTR_DAT_004f5704,&DAT_004f6a5c); + iVar3 = DAT_004f69d4; + uVar5 = DAT_004f6990; + iVar2 = DAT_004f6908; + if (iVar6 < 0) { + FUN_004dbb24(&DAT_00524e20,s_configure_enable_ID___004fb13f,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004f6a5c,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s___NOT_FOUND_004fb155,(char *)0x0); + uVar5 = 0; + } + else { + iVar7 = FUN_004d4b58(&DAT_004f6aa0,&DAT_004fb162); + iVar1 = *(int *)(in_stack_00000014 + 0x4c); + if (iVar7 != 0) { + piVar8 = FUN_00442f6a(iVar1 + 0x3c,&DAT_004f6aa0,0); + if (piVar8 == (int *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_MakeConfig_missing_palette___004fb167,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004f6aa0,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004fb184,(char *)0x0); + return 0; + } + } + else { + piVar8 = (int *)0x0; + } + FUN_0046fdd0(in_stack_00000014,iVar2,&DAT_004f694c,uVar5,iVar3,iVar4,iVar6,(int)piVar8); + if (iVar7 != 0) { + FUN_00443090(iVar1 + 0x3c,&DAT_004f6aa0); + } + uVar5 = 1; + } + } + return uVar5; +} + + + +/* @004713e0 file=? name=FUN_004713e0 */ + +undefined4 FUN_004713e0(void) + +{ + int iVar1; + undefined4 uVar2; + int iVar3; + undefined4 *puVar4; + int in_stack_00000014; + + iVar1 = FUN_00445034(&PTR_s_native_004f575c,&DAT_004f7220); + if (iVar1 < 0) { + FUN_004dbb24(&DAT_00524e20,s_reconfigure_palette_ID___004fb1af,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004f7220,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s___NOT_FOUND_004fb1c8,(char *)0x0); + uVar2 = 0; + } + else { + iVar3 = FUN_00445034(&PTR_DAT_004f5704,&DAT_004f7264); + if (iVar3 < 0) { + FUN_004dbb24(&DAT_00524e20,s_reconfigure_enable_ID___004fb1d5,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004f7264,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s___NOT_FOUND_004fb1ed,(char *)0x0); + uVar2 = 0; + } + else { + puVar4 = (undefined4 *)FUN_00402298(0x38); + if (puVar4 == (undefined4 *)0x0) { + puVar4 = (undefined4 *)0x0; + } + else { + puVar4 = FUN_00471568(puVar4,DAT_004f7198,in_stack_00000014,DAT_004f71dc,iVar1,iVar3, + &DAT_004f72a8,s_BackgroundReconfig_004fae02); + } + if (puVar4[9] == 0) { + iVar1 = *(int *)(in_stack_00000014 + 0x4c) + 4; + puVar4 = FUN_00442aec(iVar1,&DAT_004f72a8,0); + if (puVar4 == (undefined4 *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_BackgroundReconfig_missing_palet_004fb1fa,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004f72a8,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004fb21f,(char *)0x0); + return 0; + } + FUN_00442c12(iVar1,&DAT_004f72a8); + } + uVar2 = 1; + } + } + return uVar2; +} + + + +/* @00471568 file=? name=FUN_00471568 */ + +undefined4 * __cdecl +FUN_00471568(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4, + undefined4 param_5,undefined4 param_6,char *param_7,undefined4 param_8) + +{ + char *pcVar1; + int iVar2; + + FUN_004440a8(param_1,param_2,param_3,0,param_8); + *param_1 = &PTR_FUN_004fba40; + param_1[10] = param_4; + param_1[0xb] = param_5; + param_1[0xc] = param_6; + pcVar1 = (char *)FUN_004700ac(param_7); + param_1[0xd] = pcVar1; + iVar2 = FUN_004d4b58(pcVar1,&DAT_004fb222); + param_1[9] = (uint)(iVar2 == 0); + if ((iVar2 == 0) == 0) { + FUN_00442f6a(*(int *)(param_3 + 0x4c) + 0x3c,(char *)param_1[0xd],0); + } + return param_1; +} + + + +/* @004715f0 file=? name=FUN_004715f0 */ + +void __cdecl FUN_004715f0(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004fba40; + if (param_1[9] == 0) { + FUN_00443090(*(int *)(param_1[7] + 0x4c) + 0x3c,(char *)param_1[0xd]); + } + FUN_004022e8((int *)param_1[0xd]); + param_1[0xd] = 0; + FUN_00443f7c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00471648 file=? name=FUN_00471648 */ + +void __cdecl FUN_00471648(int param_1) + +{ + int iVar1; + int *piVar2; + + iVar1 = *(int *)(*(int *)(param_1 + 0x1c) + 0x4c); + if (*(int *)(param_1 + 0x24) == 0) { + piVar2 = FUN_00442f6a(iVar1 + 0x3c,*(char **)(param_1 + 0x34),0); + } + else { + piVar2 = (int *)0x0; + } + FUN_0046fe70(*(int *)(param_1 + 0x1c),*(int *)(param_1 + 0x28),*(undefined4 *)(param_1 + 0x2c), + *(undefined4 *)(param_1 + 0x30),(int)piVar2); + if (*(int *)(param_1 + 0x24) == 0) { + FUN_00443090(iVar1 + 0x3c,*(char **)(param_1 + 0x34)); + } + return; +} + + + +/* @004716a8 file=? name=FUN_004716a8 */ + +undefined4 __cdecl FUN_004716a8(int param_1,int param_2,int param_3,undefined4 param_4,int param_5) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00402298(0x80); + if (puVar1 != (undefined4 *)0x0) { + FUN_00471710(puVar1,DAT_004f75e0,param_5,0,param_1,DAT_004f7624,param_2,param_3, + param_2 + DAT_004f7668,param_3 + DAT_004f766c,DAT_004f76ac, + s_BackgroundLine_004fae15); + } + return 1; +} + + + +/* @00471710 file=? name=FUN_00471710 */ + +undefined4 * __cdecl +FUN_00471710(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4,int param_5, + undefined4 param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9, + undefined4 param_10,undefined4 param_11,undefined4 param_12) + +{ + FUN_004440d4(param_1,param_2,param_3,param_4,param_5,param_12); + *param_1 = &PTR_FUN_004fba0c; + FUN_00407b9c(param_1 + 0x1c); + param_1[0x1c] = param_7; + param_1[0x1d] = param_8; + param_1[0x1e] = param_9; + param_1[0x1f] = param_10; + param_1[0x1b] = param_6; + (**(code **)(param_1[9] + 0x18))(param_1 + 9,param_11); + return param_1; +} + + + +/* @00471778 file=? name=FUN_00471778 */ + +void __cdecl FUN_00471778(int param_1) + +{ + int iVar1; + + iVar1 = param_1 + 0x24; + (**(code **)(*(int *)(param_1 + 0x24) + 0x24)) + (iVar1,*(undefined4 *)(param_1 + 0x70),*(undefined4 *)(param_1 + 0x74)); + if (*(int *)(param_1 + 0x6c) == 0) { + (**(code **)(*(int *)(param_1 + 0x24) + 0x30)) + (iVar1,*(undefined4 *)(param_1 + 0x78),*(undefined4 *)(param_1 + 0x7c)); + } + else { + (**(code **)(*(int *)(param_1 + 0x24) + 0x38)) + (iVar1,*(undefined4 *)(param_1 + 0x78),*(undefined4 *)(param_1 + 0x7c)); + } + return; +} + + + +/* @004717c8 file=? name=FUN_004717c8 */ + +undefined4 __cdecl FUN_004717c8(int param_1,int param_2,int param_3,undefined4 param_4,int param_5) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00402298(0x7c); + if (puVar1 != (undefined4 *)0x0) { + FUN_00471820(puVar1,DAT_004f7a28,param_5,0,param_1,param_2,param_3,param_2 + DAT_004f7a6c, + param_3 + DAT_004f7a70,DAT_004f7ab0,s_BackgroundRect_004fae24); + } + return 1; +} + + + +/* @00471820 file=? name=FUN_00471820 */ + +undefined4 * __cdecl +FUN_00471820(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4,int param_5, + undefined4 param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9, + undefined4 param_10,undefined4 param_11) + +{ + FUN_004440d4(param_1,param_2,param_3,param_4,param_5,param_11); + *param_1 = &PTR_FUN_004fb9d8; + FUN_00407b9c(param_1 + 0x1b); + param_1[0x1b] = param_6; + param_1[0x1c] = param_7; + param_1[0x1d] = param_9; + param_1[0x1e] = param_8; + (**(code **)(param_1[9] + 0x18))(param_1 + 9,param_10); + return param_1; +} + + + +/* @00471884 file=? name=FUN_00471884 */ + +void __cdecl FUN_00471884(int param_1) + +{ + (**(code **)(*(int *)(param_1 + 0x24) + 0x24)) + (param_1 + 0x24,*(undefined4 *)(param_1 + 0x6c),*(undefined4 *)(param_1 + 0x70)); + (**(code **)(*(int *)(param_1 + 0x24) + 0x40)) + (param_1 + 0x24,*(undefined4 *)(param_1 + 0x74),*(undefined4 *)(param_1 + 0x78)); + return; +} + + + +/* @004718b8 file=? name=FUN_004718b8 */ + +undefined4 __cdecl FUN_004718b8(int param_1,int param_2,int param_3,undefined4 param_4,int param_5) + +{ + undefined4 *puVar1; + int *piVar2; + + puVar1 = (undefined4 *)FUN_00402298(0x7c); + if (puVar1 == (undefined4 *)0x0) { + piVar2 = (int *)0x0; + } + else { + piVar2 = FUN_0047193c(puVar1,DAT_004f7e70,param_5,0,param_1,param_2,param_3, + param_2 + DAT_004f7eb4,param_3 + DAT_004f7eb8,DAT_004f7ef8, + s_BackgroundFilledRect_004fae33); + } + if (DAT_004f7e70 == -1) { + (**(code **)(*piVar2 + 0xc))(piVar2); + if (piVar2 != (int *)0x0) { + (**(code **)*piVar2)(piVar2,3); + } + } + return 1; +} + + + +/* @0047193c file=? name=FUN_0047193c */ + +undefined4 * __cdecl +FUN_0047193c(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4,int param_5, + undefined4 param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9, + undefined4 param_10,undefined4 param_11) + +{ + FUN_004440d4(param_1,param_2,param_3,param_4,param_5,param_11); + *param_1 = &PTR_FUN_004fb9a4; + FUN_00407b9c(param_1 + 0x1b); + param_1[0x1b] = param_6; + param_1[0x1c] = param_7; + param_1[0x1d] = param_9; + param_1[0x1e] = param_8; + (**(code **)(param_1[9] + 0x18))(param_1 + 9,param_10); + return param_1; +} + + + +/* @004719a0 file=? name=FUN_004719a0 */ + +void __cdecl FUN_004719a0(int param_1) + +{ + (**(code **)(*(int *)(param_1 + 0x24) + 0x24)) + (param_1 + 0x24,*(undefined4 *)(param_1 + 0x6c),*(undefined4 *)(param_1 + 0x70)); + (**(code **)(*(int *)(param_1 + 0x24) + 0x48)) + (param_1 + 0x24,*(undefined4 *)(param_1 + 0x74),*(undefined4 *)(param_1 + 0x78)); + return; +} + + + +/* @004719d4 file=? name=FUN_004719d4 */ + +undefined4 __cdecl +FUN_004719d4(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,int param_5) + +{ + int iVar1; + undefined4 *puVar2; + int *piVar3; + int *piVar4; + undefined4 uVar5; + + puVar2 = (undefined4 *)FUN_00402298(0x74); + if (puVar2 == (undefined4 *)0x0) { + piVar3 = (int *)0x0; + } + else { + piVar3 = FUN_00471abc(puVar2,DAT_004f82b8,param_5,0,param_1,param_2,param_3,&DAT_004f82fc, + DAT_004f8340,s_BackgroundPixelmap_004fae48); + } + iVar1 = *(int *)(param_5 + 0x4c); + piVar4 = FUN_00442d2b(iVar1 + 0x20,&DAT_004f82fc,0); + if (piVar4 == (int *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_BackgroundPixelmap__Missing_imag_004fb24d,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004f82fc,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004fb271,(char *)0x0); + uVar5 = 0; + } + else { + FUN_00442e51(iVar1 + 0x20,&DAT_004f82fc); + if (DAT_004f82b8 == -1) { + (**(code **)(*piVar3 + 0xc))(piVar3); + if (piVar3 != (int *)0x0) { + (**(code **)*piVar3)(piVar3,3); + } + } + uVar5 = 1; + } + return uVar5; +} + + + +/* @00471abc file=? name=FUN_00471abc */ + +undefined4 * __cdecl +FUN_00471abc(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4,int param_5, + undefined4 param_6,undefined4 param_7,char *param_8,undefined4 param_9, + undefined4 param_10) + +{ + undefined4 uVar1; + + FUN_004440d4(param_1,param_2,param_3,param_4,param_5,param_10); + *param_1 = &PTR_FUN_004fb970; + uVar1 = FUN_004700ac(param_8); + param_1[0x1b] = uVar1; + param_1[0x1c] = param_9; + (**(code **)(param_1[9] + 0x10))(param_1 + 9,param_6,param_7); + FUN_00442d2b(*(int *)(param_3 + 0x4c) + 0x20,(char *)param_1[0x1b],0); + return param_1; +} + + + +/* @00471b2c file=? name=FUN_00471b2c */ + +void __cdecl FUN_00471b2c(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004fb970; + FUN_00442e51(*(int *)(param_1[7] + 0x4c) + 0x20,(char *)param_1[0x1b]); + FUN_004022e8((int *)param_1[0x1b]); + param_1[0x1b] = 0; + FUN_0044ae0c(param_1 + 9,2); + FUN_00443f7c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00471b8c file=? name=FUN_00471b8c */ + +void FUN_00471b8c(void) + +{ + FUN_00443fa8(); + return; +} + + + +/* @00471b9c file=? name=FUN_00471b9c */ + +void __cdecl FUN_00471b9c(int param_1) + +{ + int iVar1; + int *piVar2; + + iVar1 = *(int *)(*(int *)(param_1 + 0x1c) + 0x4c); + piVar2 = FUN_00442d2b(iVar1 + 0x20,*(char **)(param_1 + 0x6c),0); + if (piVar2 != (int *)0x0) { + (**(code **)(*(int *)(param_1 + 0x24) + 0x24))(param_1 + 0x24,0,0); + (**(code **)(*(int *)(param_1 + 0x24) + 0x5c)) + (param_1 + 0x24,*(undefined4 *)(param_1 + 0x70),0,piVar2,0,0,*piVar2 + -1, + piVar2[1] + -1); + } + FUN_00442e51(iVar1 + 0x20,*(char **)(param_1 + 0x6c)); + return; +} + + + +/* @00471c0c file=? name=FUN_00471c0c */ + +undefined4 __cdecl +FUN_00471c0c(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,int param_5) + +{ + int iVar1; + undefined4 *puVar2; + int *piVar3; + undefined4 uVar4; + + puVar2 = (undefined4 *)FUN_00402298(0x7c); + if (puVar2 == (undefined4 *)0x0) { + piVar3 = (int *)0x0; + } + else { + piVar3 = FUN_00471d00(puVar2,DAT_004f8700,param_5,0,param_1,param_2,param_3,&DAT_004f8744, + DAT_004f8788,DAT_004f87cc,DAT_004f8810,s_BackgroundBitmap_004fae5b); + } + iVar1 = *(int *)(param_5 + 0x4c); + puVar2 = FUN_00442aec(iVar1 + 4,&DAT_004f8744,0); + if (puVar2 == (undefined4 *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_BackgroundBitmap__Missing_image___004fb27c,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004f8744,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004fb29e,(char *)0x0); + uVar4 = 0; + } + else { + FUN_00442c12(iVar1 + 4,&DAT_004f8744); + if (DAT_004f8700 == -1) { + (**(code **)(*piVar3 + 0xc))(piVar3); + if (piVar3 != (int *)0x0) { + (**(code **)*piVar3)(piVar3,3); + } + } + uVar4 = 1; + } + return uVar4; +} + + + +/* @00471d00 file=? name=FUN_00471d00 */ + +undefined4 * __cdecl +FUN_00471d00(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4,int param_5, + undefined4 param_6,undefined4 param_7,char *param_8,undefined4 param_9, + undefined4 param_10,undefined4 param_11,undefined4 param_12) + +{ + undefined4 uVar1; + + FUN_004440d4(param_1,param_2,param_3,param_4,param_5,param_12); + *param_1 = &PTR_FUN_004fb93c; + uVar1 = FUN_004700ac(param_8); + param_1[0x1b] = uVar1; + param_1[0x1e] = param_9; + param_1[0x1c] = param_10; + param_1[0x1d] = param_11; + (**(code **)(param_1[9] + 0x10))(param_1 + 9,param_6,param_7); + FUN_00442aec(*(int *)(param_3 + 0x4c) + 4,(char *)param_1[0x1b],0); + return param_1; +} + + + +/* @00471d7c file=? name=FUN_00471d7c */ + +void __cdecl FUN_00471d7c(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004fb93c; + FUN_00442c12(*(int *)(param_1[7] + 0x4c) + 4,(char *)param_1[0x1b]); + FUN_004022e8((int *)param_1[0x1b]); + param_1[0x1b] = 0; + FUN_0044ae0c(param_1 + 9,2); + FUN_00443f7c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00471ddc file=? name=FUN_00471ddc */ + +void FUN_00471ddc(void) + +{ + FUN_00443fa8(); + return; +} + + + +/* @00471dec file=? name=FUN_00471dec */ + +void __cdecl FUN_00471dec(int param_1) + +{ + int iVar1; + int iVar2; + undefined4 *puVar3; + + iVar2 = *(int *)(*(int *)(param_1 + 0x1c) + 0x4c); + puVar3 = FUN_00442aec(iVar2 + 4,*(char **)(param_1 + 0x6c),0); + if (puVar3 != (undefined4 *)0x0) { + iVar1 = param_1 + 0x24; + (**(code **)(*(int *)(param_1 + 0x24) + 0x24))(iVar1,0,0); + (**(code **)(*(int *)(param_1 + 0x24) + 0x18))(iVar1,*(undefined4 *)(param_1 + 0x70)); + if (*(int *)(param_1 + 0x78) == 0) { + (**(code **)(*(int *)(param_1 + 0x24) + 0x54)) + (iVar1,0,puVar3,0,0,puVar3[3] + -1,puVar3[4] + -1); + } + else { + (**(code **)(*(int *)(param_1 + 0x24) + 0x58)) + (iVar1,*(undefined4 *)(param_1 + 0x74),0,puVar3,0,0,puVar3[3] + -1,puVar3[4] + -1); + } + } + FUN_00442e51(iVar2 + 0x20,*(char **)(param_1 + 0x6c)); + return; +} + + + +/* @00471e9c file=? name=FUN_00471e9c */ + +bool __cdecl FUN_00471e9c(int param_1,int param_2,int param_3,undefined4 param_4,int param_5) + +{ + int iVar1; + undefined4 *puVar2; + + puVar2 = (undefined4 *)FUN_00402298(0xa8); + if (puVar2 != (undefined4 *)0x0) { + FUN_00471f30(puVar2,DAT_004f8b48,DAT_004f8b8c,param_5,0,param_1,param_2,param_3,&DAT_004f8bd0, + DAT_004f8c14,DAT_004f8c58,s_RankAndScore_004fadf5); + } + iVar1 = *(int *)(param_5 + 0x4c) + 4; + puVar2 = FUN_00442aec(iVar1,&DAT_004f8bd0,0); + if (puVar2 != (undefined4 *)0x0) { + FUN_00442c12(iVar1,&DAT_004f8bd0); + } + return puVar2 != (undefined4 *)0x0; +} + + + +/* @00471f30 file=? name=FUN_00471f30 */ + +undefined4 * __cdecl +FUN_00471f30(undefined4 *param_1,undefined4 param_2,undefined4 param_3,int param_4, + undefined4 param_5,int param_6,int param_7,int param_8,char *param_9,int param_10, + int param_11,undefined4 param_12) + +{ + int *piVar1; + + FUN_00444818(param_1,param_2,param_3,param_4,param_5,param_6,param_12); + *param_1 = &PTR_FUN_004fb8f8; + piVar1 = (int *)FUN_00402298(0x44); + if (piVar1 == (int *)0x0) { + piVar1 = (int *)0x0; + } + else { + piVar1 = FUN_004700bc(piVar1,*(int *)(param_4 + 0x4c),2,2,param_9,1,0,param_11,param_10); + } + param_1[0x24] = piVar1; + piVar1 = (int *)FUN_00402298(0x44); + if (piVar1 == (int *)0x0) { + piVar1 = (int *)0x0; + } + else { + piVar1 = FUN_004700bc(piVar1,*(int *)(param_4 + 0x4c),0xc,2,param_9,8,2,param_11,param_10); + } + param_1[0x25] = piVar1; + (**(code **)(param_1[0x12] + 8))(param_1 + 0x12,param_7,param_8,param_7 + 0x40,param_8 + 0xd); + param_1[0x26] = 0; + param_1[0x28] = param_10; + param_1[0x29] = param_11; + return param_1; +} + + + +/* @00472020 file=? name=FUN_00472020 */ + +void __cdecl FUN_00472020(int *param_1,byte param_2) + +{ + uint uVar1; + int *piVar2; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004fb8f8; + if (param_1[0x26] != 0) { + uVar1 = FUN_004dcd94(); + FUN_004dbb24(&DAT_00524e20,s__RankAndScore__I_think_my_score_i_004fb2ad,(char *)0x0); + piVar2 = FUN_004db78c(&DAT_00524e20,uVar1); + FUN_004dbb24(piVar2,&DAT_004fb2d1,(char *)0x0); + } + if ((int *)param_1[0x24] != (int *)0x0) { + FUN_0047018c((int *)param_1[0x24],3); + param_1[0x24] = 0; + } + if ((int *)param_1[0x25] != (int *)0x0) { + FUN_0047018c((int *)param_1[0x25],3); + param_1[0x25] = 0; + } + FUN_00444870(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004720e0 file=? name=FUN_004720e0 */ + +void FUN_004720e0(void) + +{ + FUN_004448ac(); + return; +} + + + +/* @004720f0 file=? name=FUN_004720f0 */ + +void FUN_004720f0(void) + +{ + return; +} + + + +/* @004720f8 file=? name=FUN_004720f8 */ + +void __cdecl FUN_004720f8(int param_1) + +{ + *(undefined4 *)(param_1 + 0x9c) = 0; + FUN_004703f4(*(int *)(param_1 + 0x90)); + FUN_004703f4(*(int *)(param_1 + 0x94)); + return; +} + + + +/* @00472124 file=? name=FUN_00472124 */ + +void __cdecl FUN_00472124(int param_1) + +{ + FUN_00470758(*(int *)(param_1 + 0x90),(int *)(param_1 + 0x48)); + FUN_00470758(*(int *)(param_1 + 0x94),(int *)(param_1 + 0x48)); + FUN_004dbb24(&DAT_00524e20,s_Erasing_rank_and_score_004fb2d3,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + FUN_00444004(); + return; +} + + + +/* @0047217c file=? name=FUN_0047217c */ + +void __cdecl FUN_0047217c(int param_1,undefined4 param_2) + +{ + *(undefined4 *)(param_1 + 0x98) = param_2; + return; +} + + + +/* @00472190 file=? name=FUN_00472190 */ + +void __cdecl FUN_00472190(int param_1) + +{ + int iVar1; + int iVar2; + uint uVar3; + + uVar3 = (uint)(*(int *)(DAT_004efc94 + 0x88) == 5); + if ((uVar3 != *(uint *)(param_1 + 0x9c)) && (*(uint *)(param_1 + 0x9c) = uVar3, uVar3 == 1)) { + iVar1 = param_1 + 0x48; + (**(code **)(*(int *)(param_1 + 0x48) + 0x18))(iVar1,*(undefined4 *)(param_1 + 0xa4)); + (**(code **)(*(int *)(param_1 + 0x48) + 0x24))(iVar1,1,1); + (**(code **)(*(int *)(param_1 + 0x48) + 0x48))(iVar1,0x3e,0xb); + (**(code **)(*(int *)(param_1 + 0x48) + 0x18))(iVar1,*(undefined4 *)(param_1 + 0xa0)); + (**(code **)(*(int *)(param_1 + 0x48) + 0x24))(iVar1,0,0); + (**(code **)(*(int *)(param_1 + 0x48) + 0x40))(iVar1,0x3f,0xc); + (**(code **)(*(int *)(param_1 + 0x48) + 0x24))(iVar1,10,0); + (**(code **)(*(int *)(param_1 + 0x48) + 0x30))(iVar1,10,0xc); + } + if ((uVar3 == 1) && (*(int *)(param_1 + 0x98) != 0)) { + iVar1 = *(int *)(*(int *)(param_1 + 0x98) + 400); + iVar2 = FUN_004dcd94(); + FUN_00470430(*(int **)(param_1 + 0x90),(int *)(param_1 + 0x48), + (float)(*(int *)(iVar1 + 0x1cc) + 1)); + FUN_00470430(*(int **)(param_1 + 0x94),(int *)(param_1 + 0x48),(float)iVar2); + } + return; +} + + + +/* @004722b0 file=? name=FUN_004722b0 */ + +undefined4 * __cdecl +FUN_004722b0(undefined4 *param_1,undefined4 param_2,undefined4 param_3,int param_4, + undefined4 param_5,int param_6,int param_7,int param_8,int param_9,int param_10, + undefined4 param_11,float param_12,float param_13,undefined4 param_14) + +{ + FUN_00444818(param_1,param_2,param_3,param_4,param_5,param_6,param_14); + *param_1 = &PTR_FUN_004fb8ac; + FUN_00407b9c(param_1 + 0x28); + param_1[0x25] = (param_9 - param_7) + -1; + param_1[0x26] = (param_10 - param_8) + -1; + param_1[0x27] = 0xfffffb2e; + param_1[0x28] = 1; + param_1[0x2a] = 0; + param_1[0x24] = param_11; + param_1[0x2c] = param_12; + param_1[0x2e] = param_13 - param_12; + (**(code **)(param_1[0x12] + 8))(param_1 + 0x12,param_7,param_8,param_9,param_10); + return param_1; +} + + + +/* @00472364 file=? name=FUN_00472364 */ + +void __cdecl FUN_00472364(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004fb8ac; + FUN_00444870(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00472390 file=? name=FUN_00472390 */ + +void FUN_00472390(void) + +{ + FUN_004448ac(); + return; +} + + + +/* @004723a0 file=? name=FUN_004723a0 */ + +void __cdecl FUN_004723a0(int param_1,char *param_2) + +{ + char cVar1; + int *piVar2; + uint uVar3; + uint uVar4; + char *pcVar5; + char *pcVar6; + uint *puVar7; + char local_54 [80]; + + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_WipeGaugeScalar__004fb2eb,(char *)0x0); + uVar3 = 0xffffffff; + do { + pcVar5 = param_2; + if (uVar3 == 0) break; + uVar3 = uVar3 - 1; + pcVar5 = param_2 + 1; + cVar1 = *param_2; + param_2 = pcVar5; + } while (cVar1 != '\0'); + uVar3 = ~uVar3; + pcVar5 = pcVar5 + -uVar3; + pcVar6 = local_54; + for (uVar4 = uVar3 >> 2; uVar4 != 0; uVar4 = uVar4 - 1) { + *(undefined4 *)pcVar6 = *(undefined4 *)pcVar5; + pcVar5 = pcVar5 + 4; + pcVar6 = pcVar6 + 4; + } + for (uVar3 = uVar3 & 3; uVar3 != 0; uVar3 = uVar3 - 1) { + *pcVar6 = *pcVar5; + pcVar5 = pcVar5 + 1; + pcVar6 = pcVar6 + 1; + } + FUN_004d49b8(local_54,&DAT_004fb2fd); + puVar7 = (uint *)(param_1 + 0xa0); + FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_previousSize___004fb301,(char *)0x0); + piVar2 = (int *)FUN_00407d78(&DAT_00524e20,puVar7); + FUN_004dbb24(piVar2,&DAT_004fb315,(char *)0x0); + FUN_004448bc(param_1,local_54); + return; +} + + + +/* @0047246c file=? name=FUN_0047246c */ + +void __cdecl FUN_0047246c(int param_1) + +{ + *(undefined4 *)(param_1 + 0xbc) = 1; + return; +} + + + +/* @00472480 file=? name=FUN_00472480 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_00472480(int *param_1) + +{ + bool bVar1; + int iVar2; + int iVar3; + int local_18; + int local_14; + int local_10; + int local_c; + float local_8; + + FUN_00407b9c(&local_18); + if ((float)param_1[0x2d] < (float)param_1[0x2c]) { + param_1[0x2d] = param_1[0x2c]; + } + param_1[0x2d] = (int)((float)param_1[0x2d] - (float)param_1[0x2c]); + if ((float)param_1[0x2e] < (float)param_1[0x2d]) { + param_1[0x2d] = param_1[0x2e]; + } + local_8 = (float)param_1[0x2d] / (float)param_1[0x2e]; + if (local_8 <= _DAT_00472a9c) { + if (local_8 < _DAT_00472aa0) { + local_8 = -1.0; + } + } + else { + local_8 = 1.0; + } + iVar3 = param_1[0x24]; + if (iVar3 == 0) { + iVar3 = param_1[0x25]; + iVar2 = FUN_004dcd94(); + iVar3 = iVar3 - iVar2; + if (param_1[0x2f] == 0) { + local_18 = param_1[0x27]; + if (local_18 < iVar3) { + local_10 = iVar3 + -1; + local_c = param_1[0x26]; + local_14 = 0; + bVar1 = true; + if ((local_18 <= local_10) && (-1 < local_c)) { + bVar1 = false; + } + if (!bVar1) { + (**(code **)(*param_1 + 0x48))(param_1,&local_18); + } + param_1[0x27] = iVar3; + } + else if (iVar3 < param_1[0x27]) { + local_10 = param_1[0x27] + -1; + bVar1 = true; + local_c = param_1[0x26]; + local_14 = 0; + if ((iVar3 <= local_10) && (-1 < local_c)) { + bVar1 = false; + } + if (!bVar1) { + local_18 = iVar3; + (**(code **)(*param_1 + 0x44))(param_1,&local_18); + } + param_1[0x27] = iVar3; + } + } + else { + param_1[0x2f] = 0; + local_10 = param_1[0x25]; + bVar1 = true; + local_c = param_1[0x26]; + local_14 = 0; + if ((iVar3 <= local_10) && (-1 < local_c)) { + bVar1 = false; + } + if (!bVar1) { + local_18 = iVar3; + (**(code **)(*param_1 + 0x44))(param_1,&local_18); + } + local_10 = iVar3 + -1; + local_18 = 0; + bVar1 = true; + if ((-1 < local_10) && (local_14 <= local_c)) { + bVar1 = false; + } + if (!bVar1) { + (**(code **)(*param_1 + 0x48))(param_1,&local_18); + } + param_1[0x27] = iVar3; + } + } + else if (iVar3 == 1) { + iVar3 = param_1[0x26]; + iVar2 = FUN_004dcd94(); + iVar3 = iVar3 - iVar2; + if (param_1[0x2f] == 0) { + local_14 = param_1[0x27]; + if (local_14 < iVar3) { + local_10 = param_1[0x25]; + local_c = iVar3 + 1; + local_18 = 0; + bVar1 = true; + if ((-1 < local_10) && (local_14 <= local_c)) { + bVar1 = false; + } + if (!bVar1) { + (**(code **)(*param_1 + 0x48))(param_1,&local_18); + } + param_1[0x27] = iVar3; + } + else if (iVar3 < param_1[0x27]) { + local_10 = param_1[0x25]; + local_c = param_1[0x27] + 1; + bVar1 = true; + local_18 = 0; + if ((-1 < local_10) && (iVar3 <= local_c)) { + bVar1 = false; + } + if (!bVar1) { + local_14 = iVar3; + (**(code **)(*param_1 + 0x44))(param_1,&local_18); + } + param_1[0x27] = iVar3; + } + } + else { + param_1[0x2f] = 0; + local_10 = param_1[0x25]; + bVar1 = true; + local_c = param_1[0x26]; + local_18 = 0; + if ((-1 < local_10) && (iVar3 <= local_c)) { + bVar1 = false; + } + if (!bVar1) { + local_14 = iVar3; + (**(code **)(*param_1 + 0x44))(param_1,&local_18); + } + local_c = iVar3 + -1; + local_14 = 0; + bVar1 = true; + if ((local_18 <= local_10) && (-1 < local_c)) { + bVar1 = false; + } + if (!bVar1) { + (**(code **)(*param_1 + 0x48))(param_1,&local_18); + } + param_1[0x27] = iVar3; + } + } + else if (iVar3 == 2) { + iVar3 = FUN_004dcd94(); + local_10 = iVar3; + if (param_1[0x2f] == 0) { + if (param_1[0x27] < iVar3) { + local_18 = param_1[0x27] + 1; + local_c = param_1[0x26]; + local_14 = 0; + bVar1 = true; + if ((local_18 <= iVar3) && (-1 < local_c)) { + bVar1 = false; + } + if (!bVar1) { + (**(code **)(*param_1 + 0x44))(param_1,&local_18); + } + param_1[0x27] = iVar3; + } + else { + local_10 = param_1[0x27]; + if (iVar3 < local_10) { + local_18 = iVar3 + 1; + local_c = param_1[0x26]; + local_14 = 0; + bVar1 = true; + if ((local_18 <= local_10) && (-1 < local_c)) { + bVar1 = false; + } + if (!bVar1) { + (**(code **)(*param_1 + 0x48))(param_1,&local_18); + } + param_1[0x27] = iVar3; + } + } + } + else { + param_1[0x2f] = 0; + local_c = param_1[0x26]; + local_18 = 0; + local_14 = 0; + bVar1 = true; + if ((-1 < iVar3) && (-1 < local_c)) { + bVar1 = false; + } + if (!bVar1) { + (**(code **)(*param_1 + 0x44))(param_1,&local_18); + } + local_10 = param_1[0x25]; + local_18 = iVar3 + 1; + bVar1 = true; + if ((local_18 <= local_10) && (local_14 <= local_c)) { + bVar1 = false; + } + if (!bVar1) { + (**(code **)(*param_1 + 0x48))(param_1,&local_18); + } + param_1[0x27] = iVar3; + } + } + else if (iVar3 == 3) { + iVar3 = FUN_004dcd94(); + local_c = iVar3; + if (param_1[0x2f] == 0) { + local_14 = param_1[0x27]; + if (local_14 < iVar3) { + local_10 = param_1[0x25]; + local_18 = 0; + bVar1 = true; + if ((-1 < local_10) && (local_14 <= iVar3)) { + bVar1 = false; + } + if (!bVar1) { + (**(code **)(*param_1 + 0x44))(param_1,&local_18); + } + param_1[0x27] = iVar3; + } + else { + local_c = param_1[0x27]; + if (iVar3 < local_c) { + local_10 = param_1[0x25]; + local_18 = 0; + bVar1 = true; + if ((-1 < local_10) && (iVar3 <= local_c)) { + bVar1 = false; + } + if (!bVar1) { + local_14 = iVar3; + (**(code **)(*param_1 + 0x48))(param_1,&local_18); + } + param_1[0x27] = iVar3; + } + } + } + else { + param_1[0x2f] = 0; + local_10 = param_1[0x25]; + local_18 = 0; + local_14 = 0; + bVar1 = true; + if ((-1 < local_10) && (-1 < iVar3)) { + bVar1 = false; + } + if (!bVar1) { + (**(code **)(*param_1 + 0x44))(param_1,&local_18); + } + local_c = param_1[0x26]; + local_14 = iVar3 + 1; + bVar1 = true; + if ((local_18 <= local_10) && (local_14 <= local_c)) { + bVar1 = false; + } + if (!bVar1) { + (**(code **)(*param_1 + 0x48))(param_1,&local_18); + } + param_1[0x27] = iVar3; + } + } + return; +} + + + +/* @00472ac4 file=munga_l4/l4gauge.cpp name=FUN_00472ac4 */ + +void FUN_00472ac4(void) + +{ + FUN_0040385c(s_WipeGaugeScalar__DrawInactive_is_004fb366, + s_d__tesla_bt_munga_l4_L4GAUGE_CPP_004fb396,0xcb6); + return; +} + + + +/* @00472ae0 file=? name=FUN_00472ae0 */ + +undefined4 __cdecl FUN_00472ae0(int param_1,int param_2,int param_3,undefined4 param_4,int param_5) + +{ + int iVar1; + undefined4 uVar2; + int *piVar3; + + iVar1 = FUN_00445034(&PTR_DAT_004f57b4,&DAT_004f90e4); + if (iVar1 < 0) { + uVar2 = 0; + } + else { + piVar3 = (int *)FUN_00402298(200); + if (piVar3 != (int *)0x0) { + FUN_00472b88(piVar3,DAT_004f8f90,DAT_004f8fd4,param_5,0,param_1,param_2,param_3, + param_2 + DAT_004f9018,param_3 + DAT_004f901c,DAT_004f905c,DAT_004f90a0,iVar1, + DAT_004f9128,DAT_004f916c,DAT_004f91b0,s_BarGraphSolidScalar_004fae7c); + } + uVar2 = 1; + } + return uVar2; +} + + + +/* @00472b88 file=? name=FUN_00472b88 */ + +int * __cdecl +FUN_00472b88(int *param_1,undefined4 param_2,undefined4 param_3,int param_4,undefined4 param_5, + int param_6,int param_7,int param_8,int param_9,int param_10,int param_11,int param_12, + undefined4 param_13,float param_14,float param_15,int param_16,undefined4 param_17) + +{ + undefined4 *puVar1; + + FUN_004722b0(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9,param_10, + param_13,param_14,param_15,param_17); + *param_1 = (int)&PTR_FUN_004fb860; + param_1[0x30] = param_12; + param_1[0x31] = param_11; + if (param_16 != 0) { + puVar1 = (undefined4 *)FUN_00402298(0x18); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_00474855(puVar1,0,param_1 + 0x2d,param_16); + } + (**(code **)(*param_1 + 0x34))(param_1,puVar1); + } + return param_1; +} + + + +/* @00472c24 file=? name=FUN_00472c24 */ + +void __cdecl FUN_00472c24(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004fb860; + FUN_00472364(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00472c50 file=? name=FUN_00472c50 */ + +void FUN_00472c50(void) + +{ + FUN_00472390(); + return; +} + + + +/* @00472c60 file=? name=FUN_00472c60 */ + +void __cdecl FUN_00472c60(int param_1,char *param_2) + +{ + char cVar1; + int *piVar2; + uint uVar3; + uint uVar4; + char *pcVar5; + char *pcVar6; + char local_54 [80]; + + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_BarGraphSolidScalar__004fb3c0,(char *)0x0); + uVar3 = 0xffffffff; + do { + pcVar5 = param_2; + if (uVar3 == 0) break; + uVar3 = uVar3 - 1; + pcVar5 = param_2 + 1; + cVar1 = *param_2; + param_2 = pcVar5; + } while (cVar1 != '\0'); + uVar3 = ~uVar3; + pcVar5 = pcVar5 + -uVar3; + pcVar6 = local_54; + for (uVar4 = uVar3 >> 2; uVar4 != 0; uVar4 = uVar4 - 1) { + *(undefined4 *)pcVar6 = *(undefined4 *)pcVar5; + pcVar5 = pcVar5 + 4; + pcVar6 = pcVar6 + 4; + } + for (uVar3 = uVar3 & 3; uVar3 != 0; uVar3 = uVar3 - 1) { + *pcVar6 = *pcVar5; + pcVar5 = pcVar5 + 1; + pcVar6 = pcVar6 + 1; + } + FUN_004d49b8(local_54,&DAT_004fb3d6); + uVar3 = *(uint *)(param_1 + 0xc4); + FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_foregroundColor__004fb3da,(char *)0x0); + piVar2 = FUN_004db78c(&DAT_00524e20,uVar3); + FUN_004dbb24(piVar2,&DAT_004fb3eb,(char *)0x0); + uVar3 = *(uint *)(param_1 + 0xc0); + FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_backgroundColor__004fb3ed,(char *)0x0); + piVar2 = FUN_004db78c(&DAT_00524e20,uVar3); + FUN_004dbb24(piVar2,&DAT_004fb3fe,(char *)0x0); + FUN_004723a0(param_1,local_54); + return; +} + + + +/* @00472d78 file=? name=FUN_00472d78 */ + +void __cdecl FUN_00472d78(int param_1,undefined4 *param_2) + +{ + int iVar1; + + iVar1 = param_1 + 0x48; + (**(code **)(*(int *)(param_1 + 0x48) + 0x18))(iVar1,*(undefined4 *)(param_1 + 0xc4)); + (**(code **)(*(int *)(param_1 + 0x48) + 0x24))(iVar1,*param_2,param_2[1]); + (**(code **)(*(int *)(param_1 + 0x48) + 0x48))(iVar1,param_2[2],param_2[3]); + return; +} + + + +/* @00472dc0 file=? name=FUN_00472dc0 */ + +void __cdecl FUN_00472dc0(int param_1,undefined4 *param_2) + +{ + int iVar1; + + iVar1 = param_1 + 0x48; + (**(code **)(*(int *)(param_1 + 0x48) + 0x18))(iVar1,*(undefined4 *)(param_1 + 0xc0)); + (**(code **)(*(int *)(param_1 + 0x48) + 0x24))(iVar1,*param_2,param_2[1]); + (**(code **)(*(int *)(param_1 + 0x48) + 0x48))(iVar1,param_2[2],param_2[3]); + return; +} + + + +/* @00472e08 file=? name=FUN_00472e08 */ + +undefined4 __cdecl FUN_00472e08(int param_1,int param_2,int param_3,undefined4 param_4,int param_5) + +{ + int iVar1; + undefined4 uVar2; + int *piVar3; + undefined4 *puVar4; + + iVar1 = FUN_00445034(&PTR_DAT_004f57b4,&DAT_004f9570); + if (iVar1 < 0) { + uVar2 = 0; + } + else { + piVar3 = (int *)FUN_00402298(0xcc); + if (piVar3 != (int *)0x0) { + FUN_00472ef0(piVar3,DAT_004f93d8,DAT_004f941c,param_5,0,param_1,param_2,param_3, + param_2 + DAT_004f9460,param_3 + DAT_004f9464,&DAT_004f94a4,DAT_004f94e8, + DAT_004f952c,iVar1,DAT_004f95b4,DAT_004f95f8,DAT_004f963c, + s_BarGraphBitMapScalar_004fae90); + } + iVar1 = *(int *)(param_5 + 0x4c) + 4; + puVar4 = FUN_00442aec(iVar1,&DAT_004f94a4,0); + if (puVar4 == (undefined4 *)0x0) { + uVar2 = 0; + } + else { + FUN_00442c12(iVar1,&DAT_004f94a4); + uVar2 = 1; + } + } + return uVar2; +} + + + +/* @00472ef0 file=? name=FUN_00472ef0 */ + +int * __cdecl +FUN_00472ef0(int *param_1,undefined4 param_2,undefined4 param_3,int param_4,undefined4 param_5, + int param_6,int param_7,int param_8,int param_9,int param_10,char *param_11,int param_12 + ,int param_13,undefined4 param_14,float param_15,float param_16,int param_17, + undefined4 param_18) + +{ + int iVar1; + undefined4 *puVar2; + + FUN_004722b0(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9,param_10, + param_14,param_15,param_16,param_18); + *param_1 = (int)&PTR_FUN_004fb814; + iVar1 = FUN_004700ac(param_11); + param_1[0x30] = iVar1; + param_1[0x32] = param_13; + param_1[0x31] = param_12; + FUN_00442aec(*(int *)(param_4 + 0x4c) + 4,(char *)param_1[0x30],0); + if (param_17 != 0) { + puVar2 = (undefined4 *)FUN_00402298(0x18); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_00474855(puVar2,0,param_1 + 0x2d,param_17); + } + (**(code **)(*param_1 + 0x34))(param_1,puVar2); + } + return param_1; +} + + + +/* @00472fb4 file=? name=FUN_00472fb4 */ + +void __cdecl FUN_00472fb4(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004fb814; + FUN_00442c12(*(int *)(param_1[7] + 0x4c) + 4,(char *)param_1[0x30]); + FUN_004022e8((int *)param_1[0x30]); + param_1[0x30] = 0; + FUN_00472364(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00473010 file=? name=FUN_00473010 */ + +void FUN_00473010(void) + +{ + FUN_00472390(); + return; +} + + + +/* @00473020 file=? name=FUN_00473020 */ + +void __cdecl FUN_00473020(int param_1,char *param_2) + +{ + char cVar1; + int *piVar2; + uint uVar3; + uint uVar4; + char *pcVar5; + char *pcVar6; + char local_54 [80]; + + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_BarGraphBitMapScalar__004fb40a,(char *)0x0); + uVar3 = 0xffffffff; + do { + pcVar5 = param_2; + if (uVar3 == 0) break; + uVar3 = uVar3 - 1; + pcVar5 = param_2 + 1; + cVar1 = *param_2; + param_2 = pcVar5; + } while (cVar1 != '\0'); + uVar3 = ~uVar3; + pcVar5 = pcVar5 + -uVar3; + pcVar6 = local_54; + for (uVar4 = uVar3 >> 2; uVar4 != 0; uVar4 = uVar4 - 1) { + *(undefined4 *)pcVar6 = *(undefined4 *)pcVar5; + pcVar5 = pcVar5 + 4; + pcVar6 = pcVar6 + 4; + } + for (uVar3 = uVar3 & 3; uVar3 != 0; uVar3 = uVar3 - 1) { + *pcVar6 = *pcVar5; + pcVar5 = pcVar5 + 1; + pcVar6 = pcVar6 + 1; + } + FUN_004d49b8(local_54,&DAT_004fb421); + pcVar5 = *(char **)(param_1 + 0xc0); + FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_bitMapName__004fb425,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,pcVar5,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004fb436,(char *)0x0); + uVar3 = *(uint *)(param_1 + 200); + FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_backgroundColor__004fb438,(char *)0x0); + piVar2 = FUN_004db78c(&DAT_00524e20,uVar3); + FUN_004dbb24(piVar2,&DAT_004fb449,(char *)0x0); + FUN_004723a0(param_1,local_54); + return; +} + + + +/* @0047313c file=? name=FUN_0047313c */ + +void __cdecl FUN_0047313c(int param_1,undefined4 *param_2) + +{ + int iVar1; + undefined4 *puVar2; + + iVar1 = *(int *)(*(int *)(param_1 + 0x1c) + 0x4c); + puVar2 = FUN_00442aec(iVar1 + 4,*(char **)(param_1 + 0xc0),0); + if (puVar2 != (undefined4 *)0x0) { + (**(code **)(*(int *)(param_1 + 0x48) + 0x18))(param_1 + 0x48,*(undefined4 *)(param_1 + 0xc4)); + (**(code **)(*(int *)(param_1 + 0x48) + 0x24))(param_1 + 0x48,*param_2,param_2[1]); + (**(code **)(*(int *)(param_1 + 0x48) + 0x58)) + (param_1 + 0x48,*(undefined4 *)(param_1 + 200),0,puVar2,*param_2,param_2[1],param_2[2] + ,param_2[3]); + } + FUN_00442c12(iVar1 + 4,*(char **)(param_1 + 0xc0)); + return; +} + + + +/* @004731d8 file=? name=FUN_004731d8 */ + +void __cdecl FUN_004731d8(int param_1,undefined4 *param_2) + +{ + int iVar1; + + iVar1 = param_1 + 0x48; + (**(code **)(*(int *)(param_1 + 0x48) + 0x18))(iVar1,*(undefined4 *)(param_1 + 200)); + (**(code **)(*(int *)(param_1 + 0x48) + 0x24))(iVar1,*param_2,param_2[1]); + (**(code **)(*(int *)(param_1 + 0x48) + 0x48))(iVar1,param_2[2],param_2[3]); + return; +} + + + +/* @00473220 file=? name=FUN_00473220 */ + +undefined4 __cdecl FUN_00473220(int param_1,int param_2,int param_3,undefined4 param_4,int param_5) + +{ + int iVar1; + undefined4 uVar2; + int *piVar3; + undefined4 *puVar4; + + iVar1 = FUN_00445034(&PTR_DAT_004f57b4,&DAT_004f9974); + if (iVar1 < 0) { + uVar2 = 0; + } + else { + piVar3 = (int *)FUN_00402298(200); + if (piVar3 != (int *)0x0) { + FUN_00473300(piVar3,DAT_004f9820,DAT_004f9864,param_5,0,param_1,param_2,param_3, + param_2 + DAT_004f98a8,param_3 + DAT_004f98ac,&DAT_004f98ec,DAT_004f9930,iVar1, + DAT_004f99b8,DAT_004f99fc,DAT_004f9a40,s_BarGraphPixelMapScalar_004faea5); + } + iVar1 = *(int *)(param_5 + 0x4c) + 4; + puVar4 = FUN_00442aec(iVar1,&DAT_004f98ec,0); + if (puVar4 == (undefined4 *)0x0) { + uVar2 = 0; + } + else { + FUN_00442c12(iVar1,&DAT_004f98ec); + uVar2 = 1; + } + } + return uVar2; +} + + + +/* @00473300 file=? name=FUN_00473300 */ + +int * __cdecl +FUN_00473300(int *param_1,undefined4 param_2,undefined4 param_3,int param_4,undefined4 param_5, + int param_6,int param_7,int param_8,int param_9,int param_10,char *param_11,int param_12 + ,undefined4 param_13,float param_14,float param_15,int param_16,undefined4 param_17) + +{ + int iVar1; + undefined4 *puVar2; + + FUN_004722b0(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9,param_10, + param_13,param_14,param_15,param_17); + *param_1 = (int)&PTR_FUN_004fb7c8; + iVar1 = FUN_004700ac(param_11); + param_1[0x30] = iVar1; + param_1[0x31] = param_12; + FUN_00442d2b(*(int *)(param_4 + 0x4c) + 0x20,(char *)param_1[0x30],0); + if (param_16 != 0) { + puVar2 = (undefined4 *)FUN_00402298(0x18); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_00474855(puVar2,0,param_1 + 0x2d,param_16); + } + (**(code **)(*param_1 + 0x34))(param_1,puVar2); + } + return param_1; +} + + + +/* @004733b8 file=? name=FUN_004733b8 */ + +void __cdecl FUN_004733b8(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004fb7c8; + FUN_00442d2b(*(int *)(param_1[7] + 0x4c) + 0x20,(char *)param_1[0x30],0); + FUN_004022e8((int *)param_1[0x30]); + param_1[0x30] = 0; + FUN_00472364(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00473414 file=? name=FUN_00473414 */ + +void FUN_00473414(void) + +{ + FUN_00472390(); + return; +} + + + +/* @00473424 file=? name=FUN_00473424 */ + +void __cdecl FUN_00473424(int param_1,char *param_2) + +{ + char cVar1; + int *piVar2; + uint uVar3; + uint uVar4; + char *pcVar5; + char *pcVar6; + char local_54 [80]; + + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_BarGraphPixelMapScalar__004fb454,(char *)0x0); + uVar3 = 0xffffffff; + do { + pcVar5 = param_2; + if (uVar3 == 0) break; + uVar3 = uVar3 - 1; + pcVar5 = param_2 + 1; + cVar1 = *param_2; + param_2 = pcVar5; + } while (cVar1 != '\0'); + uVar3 = ~uVar3; + pcVar5 = pcVar5 + -uVar3; + pcVar6 = local_54; + for (uVar4 = uVar3 >> 2; uVar4 != 0; uVar4 = uVar4 - 1) { + *(undefined4 *)pcVar6 = *(undefined4 *)pcVar5; + pcVar5 = pcVar5 + 4; + pcVar6 = pcVar6 + 4; + } + for (uVar3 = uVar3 & 3; uVar3 != 0; uVar3 = uVar3 - 1) { + *pcVar6 = *pcVar5; + pcVar5 = pcVar5 + 1; + pcVar6 = pcVar6 + 1; + } + FUN_004d49b8(local_54,&DAT_004fb46d); + pcVar5 = *(char **)(param_1 + 0xc0); + FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_pixelMapName__004fb471,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,pcVar5,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_004fb482,(char *)0x0); + uVar3 = *(uint *)(param_1 + 0xc4); + FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_backgroundColor__004fb484,(char *)0x0); + piVar2 = FUN_004db78c(&DAT_00524e20,uVar3); + FUN_004dbb24(piVar2,&DAT_004fb495,(char *)0x0); + FUN_004723a0(param_1,local_54); + return; +} + + + +/* @00473540 file=? name=FUN_00473540 */ + +void __cdecl FUN_00473540(int param_1,undefined4 *param_2) + +{ + int iVar1; + int *piVar2; + + iVar1 = *(int *)(*(int *)(param_1 + 0x1c) + 0x4c); + piVar2 = FUN_00442d2b(iVar1 + 0x20,*(char **)(param_1 + 0xc0),0); + if (piVar2 != (int *)0x0) { + (**(code **)(*(int *)(param_1 + 0x48) + 0x24))(param_1 + 0x48,*param_2,param_2[1]); + (**(code **)(*(int *)(param_1 + 0x48) + 0x5c)) + (param_1 + 0x48,0,0,piVar2,*param_2,param_2[1],param_2[2],param_2[3]); + } + FUN_00442e51(iVar1 + 0x20,*(char **)(param_1 + 0xc0)); + return; +} + + + +/* @004735c4 file=? name=FUN_004735c4 */ + +void __cdecl FUN_004735c4(int param_1,undefined4 *param_2) + +{ + int iVar1; + int *piVar2; + + iVar1 = *(int *)(*(int *)(param_1 + 0x1c) + 0x4c); + piVar2 = FUN_00442d2b(iVar1 + 0x20,*(char **)(param_1 + 0xc0),0); + if (piVar2 != (int *)0x0) { + (**(code **)(*(int *)(param_1 + 0x48) + 0x18))(param_1 + 0x48,*(undefined4 *)(param_1 + 0xc4)); + (**(code **)(*(int *)(param_1 + 0x48) + 0x24))(param_1 + 0x48,*param_2,param_2[1]); + (**(code **)(*(int *)(param_1 + 0x48) + 0x60)) + (param_1 + 0x48,0,piVar2,*param_2,param_2[1],param_2[2],param_2[3]); + } + FUN_00442e51(iVar1 + 0x20,*(char **)(param_1 + 0xc0)); + return; +} + + + +/* @00473658 file=? name=FUN_00473658 */ + +bool __cdecl +FUN_00473658(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,int param_5) + +{ + int iVar1; + undefined4 *puVar2; + + puVar2 = (undefined4 *)FUN_00402298(0xc0); + if (puVar2 != (undefined4 *)0x0) { + FUN_00473728(puVar2,DAT_004f9c68,DAT_004f9cac,param_5,0,param_1,param_2,param_3,&DAT_004f9cf0, + DAT_004f9d34,DAT_004f9d78,DAT_004f9dbc,DAT_004f9e00,DAT_004f9e44,DAT_004f9e88, + DAT_004f9ecc,DAT_004f9f10,DAT_004f9f54,DAT_004f9f98,DAT_004f9fdc, + s_ColorState_004faebc); + } + iVar1 = *(int *)(param_5 + 0x4c) + 4; + puVar2 = FUN_00442aec(iVar1,&DAT_004f9cf0,0); + if (puVar2 != (undefined4 *)0x0) { + FUN_00442c12(iVar1,&DAT_004f9cf0); + } + return puVar2 != (undefined4 *)0x0; +} + + + +/* @00473728 file=? name=FUN_00473728 */ + +undefined4 * __cdecl +FUN_00473728(undefined4 *param_1,undefined4 param_2,undefined4 param_3,int param_4, + undefined4 param_5,int param_6,undefined4 param_7,undefined4 param_8,char *param_9, + undefined4 param_10,undefined4 param_11,undefined4 param_12,undefined4 param_13, + undefined4 param_14,undefined4 param_15,undefined4 param_16,undefined4 param_17, + undefined4 param_18,int param_19,int *param_20,undefined4 param_21) + +{ + char *pcVar1; + + FUN_00444818(param_1,param_2,param_3,param_4,param_5,param_6,param_21); + *param_1 = &PTR_FUN_004fb784; + pcVar1 = (char *)FUN_004700ac(param_9); + param_1[0x2a] = pcVar1; + FUN_00442aec(*(int *)(param_4 + 0x4c) + 4,pcVar1,0); + (**(code **)(param_1[0x12] + 0x10))(param_1 + 0x12,param_7,param_8); + param_1[0x25] = param_10; + param_1[0x26] = param_12; + param_1[0x27] = param_14; + param_1[0x28] = param_16; + param_1[0x29] = param_18; + param_1[0x2c] = param_11; + param_1[0x2d] = param_13; + param_1[0x2e] = param_15; + param_1[0x2f] = param_17; + param_1[0x2b] = *(undefined4 *)(*param_20 + param_19 * 4); + return param_1; +} + + + +/* @004737fc file=? name=FUN_004737fc */ + +void __cdecl FUN_004737fc(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004fb784; + FUN_00442c12(*(int *)(param_1[7] + 0x4c) + 4,(char *)param_1[0x2a]); + FUN_004022e8((int *)param_1[0x2a]); + param_1[0x2a] = 0; + FUN_00444870(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00473858 file=? name=FUN_00473858 */ + +undefined4 FUN_00473858(void) + +{ + return 1; +} + + + +/* @00473864 file=? name=FUN_00473864 */ + +void FUN_00473864(void) + +{ + return; +} + + + +/* @0047386c file=? name=FUN_0047386c */ + +void __cdecl FUN_0047386c(int param_1) + +{ + *(undefined4 *)(param_1 + 0x90) = 0xffffffff; + return; +} + + + +/* @00473880 file=? name=FUN_00473880 */ + +void __cdecl FUN_00473880(int param_1) + +{ + int iVar1; + undefined4 *puVar2; + float *pfVar3; + int iVar4; + + iVar1 = *(int *)(*(int *)(param_1 + 0x1c) + 0x4c); + puVar2 = FUN_00442aec(iVar1 + 4,*(char **)(param_1 + 0xa8),0); + if (puVar2 != (undefined4 *)0x0) { + pfVar3 = (float *)(param_1 + 0xb0); + iVar4 = 0; + do { + if (*(float *)(*(int *)(param_1 + 0xac) + 0x158) < *pfVar3) break; + iVar4 = iVar4 + 1; + pfVar3 = pfVar3 + 1; + } while (iVar4 < 4); + if (iVar4 != *(int *)(param_1 + 0x90)) { + *(int *)(param_1 + 0x90) = iVar4; + (**(code **)(*(int *)(param_1 + 0x48) + 0x18)) + (param_1 + 0x48,*(undefined4 *)(param_1 + 0x94 + iVar4 * 4)); + (**(code **)(*(int *)(param_1 + 0x48) + 0x54)) + (param_1 + 0x48,0,puVar2,0,0,puVar2[3] + -1,puVar2[4] + -1); + } + } + FUN_00442c12(iVar1 + 4,*(char **)(param_1 + 0xa8)); + return; +} + + + +/* @0047393c file=? name=FUN_0047393c */ + +bool __cdecl +FUN_0047393c(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,int param_5) + +{ + int iVar1; + int *piVar2; + undefined4 *puVar3; + + piVar2 = (int *)FUN_00402298(0xa4); + if (piVar2 != (int *)0x0) { + FUN_004739d8(piVar2,DAT_004fa0b0,DAT_004fa0f4,param_5,0,param_1,param_2,param_3,&DAT_004fa138, + DAT_004fa17c,DAT_004fa1c0,DAT_004fa204,s_TwoState_004faec7); + } + iVar1 = *(int *)(param_5 + 0x4c) + 4; + puVar3 = FUN_00442aec(iVar1,&DAT_004fa138,0); + if (puVar3 != (undefined4 *)0x0) { + FUN_00442c12(iVar1,&DAT_004fa138); + } + return puVar3 != (undefined4 *)0x0; +} + + + +/* @004739d8 file=? name=FUN_004739d8 */ + +int * __cdecl +FUN_004739d8(int *param_1,undefined4 param_2,undefined4 param_3,int param_4,undefined4 param_5, + int param_6,undefined4 param_7,undefined4 param_8,char *param_9,int param_10, + int param_11,undefined4 param_12,undefined4 param_13) + +{ + char *pcVar1; + undefined4 *puVar2; + + FUN_00444818(param_1,param_2,param_3,param_4,param_5,param_6,param_13); + *param_1 = (int)&PTR_FUN_004fb740; + pcVar1 = (char *)FUN_004700ac(param_9); + param_1[0x28] = (int)pcVar1; + FUN_00442aec(*(int *)(param_4 + 0x4c) + 4,pcVar1,0); + (**(code **)(param_1[0x12] + 0x10))(param_1 + 0x12,param_7,param_8); + param_1[0x25] = param_10; + param_1[0x26] = param_11; + puVar2 = (undefined4 *)FUN_00402298(0x18); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_004749de(puVar2,0,param_1 + 0x27,param_12); + } + (**(code **)(*param_1 + 0x34))(param_1,puVar2); + return param_1; +} + + + +/* @00473a8c file=? name=FUN_00473a8c */ + +void __cdecl FUN_00473a8c(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004fb740; + FUN_00442c12(*(int *)(param_1[7] + 0x4c) + 4,(char *)param_1[0x28]); + FUN_004022e8((int *)param_1[0x28]); + param_1[0x28] = 0; + FUN_00444870(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00473ae8 file=? name=FUN_00473ae8 */ + +undefined4 FUN_00473ae8(void) + +{ + return 1; +} + + + +/* @00473af4 file=? name=FUN_00473af4 */ + +void FUN_00473af4(void) + +{ + return; +} + + + +/* @00473afc file=? name=FUN_00473afc */ + +void __cdecl FUN_00473afc(int param_1) + +{ + *(undefined4 *)(param_1 + 0x90) = 0xffffffff; + return; +} + + + +/* @00473b10 file=? name=FUN_00473b10 */ + +void __cdecl FUN_00473b10(int param_1) + +{ + int iVar1; + undefined4 *puVar2; + uint uVar3; + + iVar1 = *(int *)(*(int *)(param_1 + 0x1c) + 0x4c); + puVar2 = FUN_00442aec(iVar1 + 4,*(char **)(param_1 + 0xa0),0); + if ((puVar2 != (undefined4 *)0x0) && + (uVar3 = (uint)(0 < *(int *)(param_1 + 0x9c)), uVar3 != *(uint *)(param_1 + 0x90))) { + *(uint *)(param_1 + 0x90) = uVar3; + (**(code **)(*(int *)(param_1 + 0x48) + 0x18)) + (param_1 + 0x48,*(undefined4 *)(param_1 + 0x94 + uVar3 * 4)); + (**(code **)(*(int *)(param_1 + 0x48) + 0x54)) + (param_1 + 0x48,0,puVar2,0,0,puVar2[3] + -1,puVar2[4] + -1); + } + FUN_00442c12(iVar1 + 4,*(char **)(param_1 + 0xa0)); + return; +} + + + +/* @00473bac file=? name=FUN_00473bac */ + +undefined4 __cdecl FUN_00473bac(int param_1,int param_2,int param_3,undefined4 param_4,int param_5) + +{ + int iVar1; + undefined4 uVar2; + int *piVar3; + undefined4 *puVar4; + + iVar1 = FUN_00445034(&PTR_s_unsigned_004f5784,&DAT_004fa64c); + if (iVar1 < 0) { + uVar2 = 0; + } + else { + piVar3 = (int *)FUN_00402298(0xac); + if (piVar3 != (int *)0x0) { + FUN_00473c94(piVar3,DAT_004fa4f8,DAT_004fa53c,param_5,0,param_1,param_2,param_3, + param_2 + DAT_004fa580,param_3 + DAT_004fa584,&DAT_004fa5c4,DAT_004fa608,iVar1, + DAT_004fa690,DAT_004fa6d4,DAT_004fa718,DAT_004fa75c, + s_NumericDisplayScalarTwoState_004faed0); + } + iVar1 = *(int *)(param_5 + 0x4c) + 4; + puVar4 = FUN_00442aec(iVar1,&DAT_004fa5c4,0); + if (puVar4 == (undefined4 *)0x0) { + uVar2 = 0; + } + else { + FUN_00442c12(iVar1,&DAT_004fa5c4); + uVar2 = 1; + } + } + return uVar2; +} + + + +/* @00473c94 file=? name=FUN_00473c94 */ + +int * __cdecl +FUN_00473c94(int *param_1,undefined4 param_2,undefined4 param_3,int param_4,undefined4 param_5, + int param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9,undefined4 param_10 + ,char *param_11,uint param_12,int param_13,int param_14,int param_15,undefined4 param_16 + ,undefined4 param_17,undefined4 param_18) + +{ + int *piVar1; + undefined4 *puVar2; + int iVar3; + + FUN_00444818(param_1,param_2,param_3,param_4,param_5,param_6,param_18); + *param_1 = (int)&PTR_FUN_004fb6fc; + piVar1 = (int *)FUN_00402298(0x44); + if (piVar1 == (int *)0x0) { + piVar1 = (int *)0x0; + } + else { + piVar1 = FUN_004700bc(piVar1,*(int *)(param_4 + 0x4c),0,0,param_11,param_12,param_13,param_14, + param_15); + } + param_1[0x24] = (int)piVar1; + (**(code **)(param_1[0x12] + 8))(param_1 + 0x12,param_7,param_8,param_9,param_10); + param_1[0x27] = param_14; + param_1[0x28] = param_15; + puVar2 = (undefined4 *)FUN_00402298(0x18); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_00474855(puVar2,0,param_1 + 0x29,param_16); + } + (**(code **)(*param_1 + 0x34))(param_1,puVar2); + puVar2 = (undefined4 *)FUN_00402298(0x18); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_004749de(puVar2,0,param_1 + 0x2a,param_17); + } + (**(code **)(*param_1 + 0x34))(param_1,puVar2); + iVar3 = FUN_004dcd94(); + param_1[0x26] = iVar3; + return param_1; +} + + + +/* @00473dac file=? name=FUN_00473dac */ + +void __cdecl FUN_00473dac(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004fb6fc; + if ((int *)param_1[0x24] != (int *)0x0) { + FUN_0047018c((int *)param_1[0x24],3); + param_1[0x24] = 0; + } + FUN_00444870(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00473df8 file=? name=FUN_00473df8 */ + +void FUN_00473df8(void) + +{ + FUN_004448ac(); + return; +} + + + +/* @00473e08 file=? name=FUN_00473e08 */ + +void __cdecl FUN_00473e08(int param_1,char *param_2) + +{ + char cVar1; + uint uVar2; + uint uVar3; + char *pcVar4; + char *pcVar5; + char local_54 [80]; + + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_NumericDisplayScalarTwoState__004fb4c2,(char *)0x0); + uVar2 = 0xffffffff; + do { + pcVar4 = param_2; + if (uVar2 == 0) break; + uVar2 = uVar2 - 1; + pcVar4 = param_2 + 1; + cVar1 = *param_2; + param_2 = pcVar4; + } while (cVar1 != '\0'); + uVar2 = ~uVar2; + pcVar4 = pcVar4 + -uVar2; + pcVar5 = local_54; + for (uVar3 = uVar2 >> 2; uVar3 != 0; uVar3 = uVar3 - 1) { + *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4; + pcVar4 = pcVar4 + 4; + pcVar5 = pcVar5 + 4; + } + for (uVar2 = uVar2 & 3; uVar2 != 0; uVar2 = uVar2 - 1) { + *pcVar5 = *pcVar4; + pcVar4 = pcVar4 + 1; + pcVar5 = pcVar5 + 1; + } + FUN_004d49b8(local_54,&DAT_004fb4e1); + FUN_004448bc(param_1,local_54); + FUN_004701d4(*(int *)(param_1 + 0x90),local_54); + return; +} + + + +/* @00473e9c file=? name=FUN_00473e9c */ + +void __cdecl FUN_00473e9c(int param_1) + +{ + *(undefined4 *)(param_1 + 0x94) = 0xffffffff; + FUN_004703f4(*(int *)(param_1 + 0x90)); + return; +} + + + +/* @00473ebc file=? name=FUN_00473ebc */ + +void __cdecl FUN_00473ebc(int param_1) + +{ + undefined4 uVar1; + uint uVar2; + + uVar2 = (uint)(0 < *(int *)(param_1 + 0xa8)); + if ((uVar2 != *(uint *)(param_1 + 0x94)) || + ((float)*(int *)(param_1 + 0x98) != *(float *)(param_1 + 0xa4))) { + *(uint *)(param_1 + 0x94) = uVar2; + uVar1 = FUN_004dcd94(); + *(undefined4 *)(param_1 + 0x98) = uVar1; + if (0 < *(int *)(param_1 + 0xa8)) { + FUN_00470430(*(int **)(param_1 + 0x90),(int *)(param_1 + 0x48),*(float *)(param_1 + 0xa4)); + return; + } + FUN_00470758(*(int *)(param_1 + 0x90),(int *)(param_1 + 0x48)); + } + return; +} + + + +/* @00473f44 file=? name=FUN_00473f44 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 * __cdecl +FUN_00473f44(undefined4 *param_1,undefined4 param_2,undefined4 param_3,int param_4, + undefined4 param_5,int param_6,undefined4 param_7,undefined4 param_8,float param_9, + float param_10,float param_11,float param_12,float param_13,float param_14,int param_15, + undefined4 param_16,undefined4 param_17,undefined4 param_18,undefined4 param_19) + +{ + float local_8; + + FUN_00444818(param_1,param_2,param_3,param_4,param_5,param_6,param_19); + *param_1 = &PTR_FUN_004fb6b8; + param_1[0x24] = param_16; + param_1[0x25] = param_17; + param_1[0x26] = param_15; + param_1[0x2a] = (float)(_DAT_00474084 * (float10)param_13 * (float10)_DAT_0047407c); + param_1[0x2c] = param_9; + param_1[0x2d] = param_10; + param_1[0x28] = param_18; + if ((int)param_1[0x26] < 0) { + param_1[0x26] = -param_1[0x26]; + } + local_8 = (float)(_DAT_00474084 * (float10)param_14 * (float10)_DAT_0047407c - + (float10)(float)param_1[0x2a]); + if (param_15 < 1) { + if (_DAT_00474090 < local_8) { + local_8 = local_8 - (float)_DAT_0047407c; + } + } + else if (local_8 < _DAT_00474090) { + local_8 = local_8 + (float)_DAT_0047407c; + } + param_1[0x2b] = local_8 / (float)(int)param_1[0x26]; + param_1[0x2e] = (param_11 - param_9) / (float)(int)param_1[0x26]; + param_1[0x2f] = (param_12 - param_10) / (float)(int)param_1[0x26]; + (**(code **)(param_1[0x12] + 0x10))(param_1 + 0x12,param_7,param_8); + return param_1; +} + + + +/* @00474094 file=? name=FUN_00474094 */ + +void __cdecl FUN_00474094(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004fb6b8; + FUN_00444870(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004740c0 file=? name=FUN_004740c0 */ + +undefined4 FUN_004740c0(void) + +{ + return 1; +} + + + +/* @004740cc file=? name=FUN_004740cc */ + +void __cdecl FUN_004740cc(int param_1) + +{ + uint uVar1; + float fVar2; + int *piVar3; + + FUN_004dbb24(&DAT_00524e20,s_SegmentArc_004fb4e5,(char *)0x0); + uVar1 = *(uint *)(param_1 + 0x90); + FUN_004dbb24(&DAT_00524e20,s_backgroundColor___004fb4f1,(char *)0x0); + piVar3 = FUN_004db78c(&DAT_00524e20,uVar1); + FUN_004dbb24(piVar3,&DAT_004fb508,(char *)0x0); + uVar1 = *(uint *)(param_1 + 0x94); + FUN_004dbb24(&DAT_00524e20,s_foregroundColor___004fb50a,(char *)0x0); + piVar3 = FUN_004db78c(&DAT_00524e20,uVar1); + FUN_004dbb24(piVar3,&DAT_004fb521,(char *)0x0); + uVar1 = *(uint *)(param_1 + 0x98); + FUN_004dbb24(&DAT_00524e20,s_numberOfSegments___004fb523,(char *)0x0); + piVar3 = FUN_004db78c(&DAT_00524e20,uVar1); + FUN_004dbb24(piVar3,&DAT_004fb53a,(char *)0x0); + fVar2 = *(float *)(param_1 + 0xa8); + FUN_004dbb24(&DAT_00524e20,s_startAngle___004fb53c,(char *)0x0); + piVar3 = FUN_004db634(&DAT_00524e20,(float10)fVar2); + FUN_004dbb24(piVar3,&DAT_004fb553,(char *)0x0); + fVar2 = *(float *)(param_1 + 0xac); + FUN_004dbb24(&DAT_00524e20,s_deltaAngle___004fb555,(char *)0x0); + piVar3 = FUN_004db634(&DAT_00524e20,(float10)fVar2); + FUN_004dbb24(piVar3,&DAT_004fb56c,(char *)0x0); + fVar2 = *(float *)(param_1 + 0xb8); + FUN_004dbb24(&DAT_00524e20,s_deltaInnerRadius___004fb56e,(char *)0x0); + piVar3 = FUN_004db634(&DAT_00524e20,(float10)fVar2); + FUN_004dbb24(piVar3,&DAT_004fb585,(char *)0x0); + fVar2 = *(float *)(param_1 + 0xbc); + FUN_004dbb24(&DAT_00524e20,s_deltaOuterRadius___004fb587,(char *)0x0); + piVar3 = FUN_004db634(&DAT_00524e20,(float10)fVar2); + FUN_004dbb24(piVar3,&DAT_004fb59e,(char *)0x0); + uVar1 = *(uint *)(param_1 + 0x9c); + FUN_004dbb24(&DAT_00524e20,s_previousSegment___004fb5a0,(char *)0x0); + piVar3 = FUN_004db78c(&DAT_00524e20,uVar1); + FUN_004dbb24(piVar3,&DAT_004fb5b7,(char *)0x0); + return; +} + + + +/* @004742f0 file=? name=FUN_004742f0 */ + +void __cdecl FUN_004742f0(int param_1) + +{ + *(undefined4 *)(param_1 + 0x9c) = 0; + return; +} + + + +/* @00474300 file=? name=FUN_00474300 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_00474300(int param_1) + +{ + float fVar1; + int iVar2; + undefined4 uVar3; + int iVar4; + undefined4 local_18; + + if (_DAT_00474544 <= *(float *)(param_1 + 0xa4)) { + if (_DAT_00474548 < *(float *)(param_1 + 0xa4)) { + *(undefined4 *)(param_1 + 0xa4) = 0x3f800000; + } + } + else { + *(undefined4 *)(param_1 + 0xa4) = 0; + } + iVar2 = FUN_004dcd94(); + if (iVar2 != *(int *)(param_1 + 0x9c)) { + if (*(int *)(param_1 + 0x9c) < iVar2) { + (**(code **)(*(int *)(param_1 + 0x48) + 0x18))(param_1 + 0x48,*(undefined4 *)(param_1 + 0x94)) + ; + iVar4 = iVar2 - *(int *)(param_1 + 0x9c); + local_18 = (float)*(int *)(param_1 + 0x9c) * *(float *)(param_1 + 0xac) + + *(float *)(param_1 + 0xa8); + } + else { + (**(code **)(*(int *)(param_1 + 0x48) + 0x18))(param_1 + 0x48,*(undefined4 *)(param_1 + 0x90)) + ; + iVar4 = *(int *)(param_1 + 0x9c) - iVar2; + local_18 = (float)iVar2 * *(float *)(param_1 + 0xac) + *(float *)(param_1 + 0xa8); + } + fVar1 = *(float *)(param_1 + 0xac); + for (; -1 < iVar4; iVar4 = iVar4 + -1) { + FUN_004dd0f4(SUB84((double)local_18,0),(int)((ulonglong)(double)local_18 >> 0x20)); + FUN_004dc9b4(SUB84((double)local_18,0),(int)((ulonglong)(double)local_18 >> 0x20)); + FUN_004dcd94(); + uVar3 = FUN_004dcd94(); + (**(code **)(*(int *)(param_1 + 0x48) + 0x24))(param_1 + 0x48,uVar3); + if (*(int *)(param_1 + 0xa0) == 0) { + FUN_004dcd94(); + uVar3 = FUN_004dcd94(); + (**(code **)(*(int *)(param_1 + 0x48) + 0x30))(param_1 + 0x48,uVar3); + } + else { + FUN_004dcd94(); + uVar3 = FUN_004dcd94(); + (**(code **)(*(int *)(param_1 + 0x48) + 0x38))(param_1 + 0x48,uVar3); + } + local_18 = fVar1 + local_18; + } + *(int *)(param_1 + 0x9c) = iVar2; + } + return; +} + + + +/* @004745e0 file=? name=FUN_004745e0 */ + +int * __cdecl +FUN_004745e0(int *param_1,undefined4 param_2,undefined4 param_3,int param_4,undefined4 param_5, + int param_6,undefined4 param_7,undefined4 param_8,float param_9,float param_10, + float param_11,float param_12,float param_13,float param_14,int param_15, + undefined4 param_16,undefined4 param_17,undefined4 param_18,undefined4 param_19, + undefined4 param_20) + +{ + undefined4 *puVar1; + + FUN_00473f44(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9,param_10, + param_11,param_12,param_13,param_14,param_15,param_16,param_17,param_19,param_20); + *param_1 = (int)&PTR_FUN_004fb674; + puVar1 = (undefined4 *)FUN_00402298(0x18); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_00474855(puVar1,0,param_1 + 0x29,param_18); + } + (**(code **)(*param_1 + 0x34))(param_1,puVar1); + return param_1; +} + + + +/* @00474855 file=? name=FUN_00474855 */ + +undefined4 * __cdecl +FUN_00474855(undefined4 *param_1,undefined4 param_2,undefined4 *param_3,undefined4 param_4) + +{ + FUN_00444124(param_1,param_2); + *param_1 = &PTR_FUN_004fb668; + param_1[4] = param_4; + param_1[5] = param_3; + *param_3 = *(undefined4 *)param_1[4]; + return param_1; +} + + + +/* @00474887 file=? name=FUN_00474887 */ + +void __cdecl FUN_00474887(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004fb668; + FUN_00444148(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004748b3 file=? name=FUN_004748b3 */ + +void __cdecl FUN_004748b3(int param_1) + +{ + **(undefined4 **)(param_1 + 0x14) = **(undefined4 **)(param_1 + 0x10); + return; +} + + + +/* @004748c5 file=? name=FUN_004748c5 */ + +void __cdecl FUN_004748c5(int param_1,char *param_2) + +{ + float fVar1; + int *piVar2; + undefined8 uVar3; + undefined2 uVar4; + undefined2 uVar5; + + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_GaugeConnectionDirectOf__004fb5c4,(char *)0x0); + fVar1 = **(float **)(param_1 + 0x10); + uVar4 = (undefined2)*(undefined4 *)(param_1 + 0x10); + uVar5 = (undefined2)((uint)*(undefined4 *)(param_1 + 0x10) >> 0x10); + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s____dataSource_at_004fb5de,(char *)0x0); + uVar3 = FUN_004dbd4c(&DAT_00524e20,CONCAT22(uVar5,uVar4)); + FUN_004dbb24((int *)uVar3,&DAT_004fb5f4,(char *)0x0); + piVar2 = FUN_004db634((int *)uVar3,(float10)fVar1); + FUN_004dbb24(piVar2,&DAT_004fb5f6,(char *)0x0); + uVar4 = (undefined2)*(undefined4 *)(param_1 + 0x10); + uVar5 = (undefined2)((uint)*(undefined4 *)(param_1 + 0x10) >> 0x10); + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s____dataDestination_at_004fb5f8,(char *)0x0); + uVar3 = FUN_004dbd4c(&DAT_00524e20,CONCAT22(uVar5,uVar4)); + FUN_004dbb24((int *)uVar3,&DAT_004fb60e,(char *)0x0); + FUN_004d9c70((int *)uVar3); + FUN_0044419c(param_1,param_2); + return; +} + + + +/* @004749cf file=? name=FUN_004749cf */ + +void FUN_004749cf(void) + +{ + FUN_00415f1c(); + return; +} + + + +/* @004749de file=? name=FUN_004749de */ + +undefined4 * __cdecl +FUN_004749de(undefined4 *param_1,undefined4 param_2,undefined4 *param_3,undefined4 param_4) + +{ + FUN_00444124(param_1,param_2); + *param_1 = &PTR_FUN_004fb65c; + param_1[4] = param_4; + param_1[5] = param_3; + *param_3 = *(undefined4 *)param_1[4]; + return param_1; +} + + + +/* @00474a10 file=? name=FUN_00474a10 */ + +void __cdecl FUN_00474a10(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004fb65c; + FUN_00444148(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00474a3c file=? name=FUN_00474a3c */ + +void __cdecl FUN_00474a3c(int param_1) + +{ + **(undefined4 **)(param_1 + 0x14) = **(undefined4 **)(param_1 + 0x10); + return; +} + + + +/* @00474a4e file=? name=FUN_00474a4e */ + +void __cdecl FUN_00474a4e(int param_1,char *param_2) + +{ + int *piVar1; + undefined8 uVar2; + uint uVar3; + uint uVar4; + + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_GaugeConnectionDirectOf__004fb610,(char *)0x0); + uVar4 = **(uint **)(param_1 + 0x10); + uVar3 = *(uint *)(param_1 + 0x10); + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s____dataSource_at_004fb62a,(char *)0x0); + uVar2 = FUN_004dbd4c(&DAT_00524e20,uVar3); + FUN_004dbb24((int *)uVar2,&DAT_004fb640,(char *)0x0); + piVar1 = FUN_004db78c((int *)uVar2,uVar4); + FUN_004dbb24(piVar1,&DAT_004fb642,(char *)0x0); + uVar4 = *(uint *)(param_1 + 0x10); + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s____dataDestination_at_004fb644,(char *)0x0); + uVar2 = FUN_004dbd4c(&DAT_00524e20,uVar4); + FUN_004dbb24((int *)uVar2,&DAT_004fb65a,(char *)0x0); + FUN_004d9c70((int *)uVar2); + FUN_0044419c(param_1,param_2); + return; +} + + + +/* @00474b53 file=? name=FUN_00474b53 */ + +void FUN_00474b53(void) + +{ + FUN_00415f1c(); + return; +} + + + +/* @00474b62 file=? name=FUN_00474b62 */ + +void __cdecl FUN_00474b62(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + FUN_00474094(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00474b88 file=? name=FUN_00474b88 */ + +void __cdecl FUN_00474b88(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + FUN_0044ae0c(param_1 + 9,2); + FUN_00443f7c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00474bbc file=? name=FUN_00474bbc */ + +void __cdecl FUN_00474bbc(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + FUN_0044ae0c(param_1 + 9,2); + FUN_00443f7c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00474bf0 file=? name=FUN_00474bf0 */ + +void __cdecl FUN_00474bf0(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + FUN_0044ae0c(param_1 + 9,2); + FUN_00443f7c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00474c24 file=? name=FUN_00474c24 */ + +void __cdecl FUN_00474c24(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + FUN_0047094c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00474c4c file=? name=FUN_00474c4c */ + +undefined4 * __cdecl FUN_00474c4c(undefined4 *param_1,undefined4 param_2) + +{ + undefined4 uVar1; + int iVar2; + + FUN_00444a7c(param_1); + *param_1 = &PTR_FUN_004fbbf8; + param_1[0xe] = param_2; + uVar1 = FUN_004022b0(0x100); + param_1[0xf] = uVar1; + uVar1 = FUN_004022b0(0x100); + param_1[0x10] = uVar1; + iVar2 = 0; + do { + *(undefined4 *)(param_1[0xf] + iVar2 * 4) = 0; + iVar2 = iVar2 + 1; + } while (iVar2 < 0x40); + return param_1; +} + + + +/* @00474c98 file=? name=FUN_00474c98 */ + +void __cdecl FUN_00474c98(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004fbbf8; + FUN_004022e8((int *)param_1[0xf]); + param_1[0xf] = 0; + FUN_004022e8((int *)param_1[0x10]); + param_1[0x10] = 0; + FUN_00444ac0(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00474ce4 file=? name=FUN_00474ce4 */ + +void FUN_00474ce4(void) + +{ + FUN_00444b14(); + return; +} + + + +/* @00474cf4 file=? name=FUN_00474cf4 */ + +int __cdecl FUN_00474cf4(int param_1,uint param_2) + +{ + int iVar1; + int iVar2; + bool bVar3; + undefined8 uVar4; + + bVar3 = param_2 != *(uint *)(param_1 + 4); + if (bVar3) { + iVar1 = 0; + do { + *(undefined4 *)(*(int *)(param_1 + 0x40) + iVar1 * 4) = 0; + iVar1 = iVar1 + 1; + } while (iVar1 < 0x40); + } + iVar1 = FUN_00444b20(param_1,param_2); + if (bVar3) { + iVar2 = 0; + do { + iVar1 = *(int *)(param_1 + 0x40); + if (*(int *)(iVar1 + iVar2 * 4) == 0) { + uVar4 = FUN_00474d54(param_1,iVar2,0); + iVar1 = (int)uVar4; + } + iVar2 = iVar2 + 1; + } while (iVar2 < 0x40); + } + return iVar1; +} + + + +/* @00474d54 file=? name=FUN_00474d54 */ + +undefined8 __cdecl FUN_00474d54(int param_1,int param_2,int param_3) + +{ + undefined8 uVar1; + + uVar1 = CONCAT44(param_2,param_1); + if (param_3 != *(int *)(*(int *)(param_1 + 0x3c) + param_2 * 4)) { + *(int *)(*(int *)(param_1 + 0x3c) + param_2 * 4) = param_3; + uVar1 = FUN_00476568(*(int *)(param_1 + 0x38),param_2,(char)param_3); + } + return uVar1; +} + + + +/* @00474d80 file=? name=FUN_00474d80 */ + +int * __cdecl FUN_00474d80(int *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) + +{ + FUN_00444dbc(param_1,param_2,param_3,param_4); + *param_1 = (int)&PTR_FUN_004fbbe0; + param_1[10] = 1; + param_1[8] = 0; + param_1[9] = 0; + (**(code **)(*param_1 + 0xc))(param_1,2); + return param_1; +} + + + +/* @00474dc4 file=? name=FUN_00474dc4 */ + +void __cdecl FUN_00474dc4(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004fbbe0; + (**(code **)(*param_1 + 0xc))(param_1,0); + FUN_00444e04(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00474dfc file=? name=FUN_00474dfc */ + +void FUN_00474dfc(void) + +{ + FUN_00444e30(); + return; +} + + + +/* @00474e0c file=? name=FUN_00474e0c */ + +void __cdecl FUN_00474e0c(int param_1,undefined4 param_2) + +{ + *(undefined4 *)(param_1 + 0x28) = param_2; + return; +} + + + +/* @00474e1c file=? name=FUN_00474e1c */ + +void __cdecl FUN_00474e1c(int *param_1,int param_2) + +{ + int iVar1; + + iVar1 = param_1[3]; + if ((-1 < iVar1) && (iVar1 < 0x40)) { + *(undefined4 *)(*(int *)(param_1[6] + 0x40) + iVar1 * 4) = 1; + } + if (param_1[10] == 0) { + if (param_2 != 0) { + (**(code **)(*param_1 + 0x14))(param_1); + } + } + else { + iVar1 = param_1[8]; + if (iVar1 != param_1[9]) { + param_1[9] = iVar1; + if (0 < iVar1) { + (**(code **)(*param_1 + 0xc))(param_1,1); + return; + } + (**(code **)(*param_1 + 0xc))(param_1,2); + return; + } + if (param_2 != 0) { + (**(code **)(*param_1 + 0x14))(param_1); + return; + } + } + return; +} + + + +/* @00474e94 file=? name=FUN_00474e94 */ + +undefined8 __cdecl FUN_00474e94(int param_1) + +{ + int iVar1; + undefined8 uVar2; + + if (*(int *)(param_1 + 0x1c) == 0) { + if (*(int *)(param_1 + 0x14) == 1) { + iVar1 = 0x3c; + } + else if (*(int *)(param_1 + 0x14) == 2) { + iVar1 = 0x14; + } + else { + iVar1 = 0; + } + } + else if (*(int *)(param_1 + 0x14) - 1U < 2) { + iVar1 = 0x37; + } + else { + iVar1 = 0x13; + } + uVar2 = FUN_00474d54(*(int *)(param_1 + 0x18),*(int *)(param_1 + 0xc),iVar1); + return uVar2; +} + + + +/* @00474ee4 file=? name=FUN_00474ee4 */ + +undefined4 * __cdecl +FUN_00474ee4(undefined4 *param_1,undefined4 param_2,undefined4 param_3,int param_4,int param_5, + undefined4 param_6,undefined4 param_7,char *param_8,undefined4 param_9, + undefined4 param_10,undefined4 param_11) + +{ + char cVar1; + int iVar2; + char *pcVar3; + uint uVar4; + uint uVar5; + char *pcVar6; + + FUN_00444ec0(param_1,param_2,param_3,*(undefined4 *)(param_4 + 0x1c0c8),param_4,param_5); + *param_1 = &PTR_FUN_004fbbc8; + iVar2 = FUN_004d4a78(param_8); + pcVar3 = (char *)FUN_004022b0(iVar2 + 1); + param_1[0x1c] = pcVar3; + uVar4 = 0xffffffff; + do { + pcVar6 = param_8; + if (uVar4 == 0) break; + uVar4 = uVar4 - 1; + pcVar6 = param_8 + 1; + cVar1 = *param_8; + param_8 = pcVar6; + } while (cVar1 != '\0'); + uVar4 = ~uVar4; + pcVar6 = pcVar6 + -uVar4; + for (uVar5 = uVar4 >> 2; uVar5 != 0; uVar5 = uVar5 - 1) { + *(undefined4 *)pcVar3 = *(undefined4 *)pcVar6; + pcVar6 = pcVar6 + 4; + pcVar3 = pcVar3 + 4; + } + for (uVar4 = uVar4 & 3; uVar4 != 0; uVar4 = uVar4 - 1) { + *pcVar3 = *pcVar6; + pcVar6 = pcVar6 + 1; + pcVar3 = pcVar3 + 1; + } + FUN_00442aec(*(int *)(param_1[8] + 0x4c) + 4,(char *)param_1[0x1c],0); + param_1[0x1b] = param_11; + param_1[0x1d] = param_9; + param_1[0x1e] = param_10; + (**(code **)(param_1[9] + 0x10))(param_1 + 9,param_6,param_7); + return param_1; +} + + + +/* @00474f98 file=? name=FUN_00474f98 */ + +void __cdecl FUN_00474f98(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004fbbc8; + FUN_00442c12(*(int *)(param_1[8] + 0x4c) + 4,(char *)param_1[0x1c]); + FUN_004022e8((int *)param_1[0x1c]); + param_1[0x1c] = 0; + FUN_00444f14(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00474fec file=? name=FUN_00474fec */ + +void FUN_00474fec(void) + +{ + FUN_00444f50(); + return; +} + + + +/* @00474ffc file=? name=FUN_00474ffc */ + +void __cdecl FUN_00474ffc(int param_1) + +{ + int iVar1; + undefined4 *puVar2; + + iVar1 = *(int *)(*(int *)(param_1 + 0x20) + 0x4c); + puVar2 = FUN_00442aec(iVar1 + 4,*(char **)(param_1 + 0x70),0); + if (puVar2 != (undefined4 *)0x0) { + if (*(int *)(param_1 + 0x14) < 1) { + (**(code **)(*(int *)(param_1 + 0x24) + 0x18))(param_1 + 0x24,*(undefined4 *)(param_1 + 0x74)) + ; + } + else { + (**(code **)(*(int *)(param_1 + 0x24) + 0x18))(param_1 + 0x24,*(undefined4 *)(param_1 + 0x78)) + ; + } + if (*(int *)(param_1 + 0x6c) == 0) { + (**(code **)(*(int *)(param_1 + 0x24) + 0x54)) + (param_1 + 0x24,0,puVar2,0,0,puVar2[3] + -1,puVar2[4] + -1); + } + else { + (**(code **)(*(int *)(param_1 + 0x24) + 0x58)) + (param_1 + 0x24,*(undefined4 *)(param_1 + 0x74),0,puVar2,0,0,puVar2[3] + -1, + puVar2[4] + -1); + } + FUN_00442c12(iVar1 + 4,*(char **)(param_1 + 0x70)); + } + return; +} + + + +/* @004750b4 file=? name=FUN_004750b4 */ + +undefined4 * __cdecl FUN_004750b4(undefined4 *param_1,short param_2,short param_3) + +{ + short *psVar1; + undefined4 *puVar2; + undefined4 extraout_ECX; + undefined4 extraout_ECX_00; + undefined4 extraout_ECX_01; + int iVar3; + undefined8 uVar4; + undefined4 uVar5; + + FUN_00468ae4(param_1,0x80,0x20); + *param_1 = &PTR_FUN_004fbc3c; + uVar5 = 0x81c; + uVar4 = FUN_00402298(0x81c); + psVar1 = (short *)uVar4; + if (psVar1 != (short *)0x0) { + uVar4 = FUN_0047d184(psVar1,0xc,3,param_2,param_3); + uVar5 = extraout_ECX; + } + param_1[0xf] = psVar1; + if (psVar1 != (short *)0x0) { + uVar4 = FUN_0047d3fd(uVar5,(int)((ulonglong)uVar4 >> 0x20),(int)psVar1,0); + FUN_0047d428(extraout_ECX_00,(int)((ulonglong)uVar4 >> 0x20),(short *)param_1[0xf],&DAT_004fbc00 + ,2); + FUN_0047d428(extraout_ECX_01,param_1[0xf],(short *)param_1[0xf],&DAT_004fbc02,3); + } + param_1[0x10] = 0; + param_1[0xe] = 0; + iVar3 = 0; + puVar2 = param_1 + 0x11; + do { + *(undefined1 *)puVar2 = 0; + iVar3 = iVar3 + 1; + puVar2 = (undefined4 *)((int)puVar2 + 1); + } while (iVar3 < 0x20); + return param_1; +} + + + +/* @0047516c file=? name=FUN_0047516c */ + +void __cdecl FUN_0047516c(int *param_1,byte param_2) + +{ + int iVar1; + undefined2 uVar2; + int *piVar3; + int iVar4; + short extraout_var; + int extraout_ECX; + int iVar5; + undefined4 extraout_EDX; + int iVar6; + undefined8 uVar7; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004fbc3c; + if (param_1[0xf] != 0) { + (**(code **)(*param_1 + 0xc))(param_1); + piVar3 = (int *)FUN_00414b60(); + iVar1 = *piVar3; + iVar4 = FUN_004dcd94(); + do { + do { + piVar3 = (int *)FUN_00414b60(); + iVar5 = extraout_ECX; + iVar6 = iVar1 + iVar4; + if (iVar1 + iVar4 <= *piVar3) goto LAB_004751e7; + uVar2 = FUN_0047d517(param_1[0xf]); + } while (CONCAT22(extraout_var,uVar2) != 0 && -1 < extraout_var); + iVar5 = param_1[0xf]; + uVar7 = FUN_0047d4a3(iVar5,extraout_EDX,(short *)iVar5); + iVar6 = (int)((ulonglong)uVar7 >> 0x20); + } while ((int)uVar7 != 0); +LAB_004751e7: + piVar3 = (int *)param_1[0xf]; + if (piVar3 != (int *)0x0) { + if (piVar3 == (int *)0x0) { + FUN_004dbb24(&DAT_00524e20,s__PCSerial_has_been_passed_a_NULL_004fbc05,(char *)0x0); + } + else { + FUN_0047d324(iVar5,iVar6,(short *)piVar3); + } + FUN_004022d0(piVar3); + } + } + FUN_00468c04(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0047524c file=? name=FUN_0047524c */ + +void __cdecl FUN_0047524c(int param_1,char *param_2) + +{ + char cVar1; + uint uVar2; + uint uVar3; + char *pcVar4; + char *pcVar5; + char local_54 [80]; + + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_Plasma__004fbc2f,(char *)0x0); + uVar2 = 0xffffffff; + do { + pcVar4 = param_2; + if (uVar2 == 0) break; + uVar2 = uVar2 - 1; + pcVar4 = param_2 + 1; + cVar1 = *param_2; + param_2 = pcVar4; + } while (cVar1 != '\0'); + uVar2 = ~uVar2; + pcVar4 = pcVar4 + -uVar2; + pcVar5 = local_54; + for (uVar3 = uVar2 >> 2; uVar3 != 0; uVar3 = uVar3 - 1) { + *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4; + pcVar4 = pcVar4 + 4; + pcVar5 = pcVar5 + 4; + } + for (uVar2 = uVar2 & 3; uVar2 != 0; uVar2 = uVar2 - 1) { + *pcVar5 = *pcVar4; + pcVar4 = pcVar4 + 1; + pcVar5 = pcVar5 + 1; + } + FUN_004d49b8(local_54,&DAT_004fbc38); + FUN_00468c74(param_1,local_54); + return; +} + + + +/* @004752cc file=? name=FUN_004752cc */ + +undefined8 __cdecl FUN_004752cc(short *param_1,undefined1 param_2,char *param_3,int param_4) + +{ + byte bVar1; + byte bVar2; + byte bVar3; + int iVar4; + byte *pbVar5; + undefined8 uVar6; + byte local_28 [4]; + undefined1 local_24; + undefined1 local_23; + undefined1 local_22; + int local_8; + + local_28[0] = 0x1b; + local_28[1] = 0x50; + local_28[2] = 0; + local_28[3] = param_2; + local_24 = 0; + iVar4 = param_4 + 7 >> 3; + local_23 = (undefined1)iVar4; + local_22 = 1; + FUN_0047d428(local_28,iVar4,param_1,local_28,7); + bVar3 = 0; + bVar2 = 0x80; + local_8 = 0; + iVar4 = 0; + pbVar5 = local_28; + bVar1 = bVar2; + if (0 < param_4) { + do { + if (*param_3 != '\0') { + bVar3 = bVar3 | bVar1; + } + bVar2 = bVar1 >> 1; + if (bVar1 >> 1 == 0) { + *pbVar5 = bVar3; + pbVar5 = pbVar5 + 1; + local_8 = local_8 + 1; + bVar3 = 0; + bVar2 = 0x80; + } + iVar4 = iVar4 + 1; + bVar1 = bVar2; + param_3 = param_3 + 1; + } while (iVar4 < param_4); + } + if (bVar2 != 0x80) { + local_28[local_8] = bVar3; + local_8 = local_8 + 1; + } + uVar6 = FUN_0047d428(param_1,local_28,param_1,local_28,local_8); + return uVar6; +} + + + +/* @00475370 file=? name=FUN_00475370 */ + +void __cdecl FUN_00475370(int param_1,short param_2) + +{ + short *psVar1; + int iVar2; + undefined1 *puVar3; + + iVar2 = 0; + psVar1 = *(short **)(param_1 + 0x30); + puVar3 = (undefined1 *)(param_1 + 0x44); + do { + param_2 = param_2 + *psVar1; + *psVar1 = 0; + psVar1 = psVar1 + 1; + if (param_2 != 0) { + *puVar3 = 1; + *(undefined4 *)(param_1 + 0x38) = 1; + } + iVar2 = iVar2 + 1; + puVar3 = puVar3 + 1; + } while (iVar2 < 0x20); + return; +} + + + +/* @004753ac file=? name=FUN_004753ac */ + +undefined4 __cdecl FUN_004753ac(int param_1,uint param_2) + +{ + undefined2 uVar1; + undefined2 extraout_var; + int iVar2; + int iVar3; + + if (*(int *)(param_1 + 0x3c) != 0) { + *(uint *)(param_1 + 0x34) = *(uint *)(param_1 + 0x34) | param_2; + if (*(int *)(param_1 + 0x40) == 0) { + FUN_00475370(param_1,(short)*(undefined4 *)(param_1 + 0x34)); + *(undefined4 *)(param_1 + 0x34) = 0; + } + uVar1 = FUN_0047d517(*(int *)(param_1 + 0x3c)); + if (CONCAT22(extraout_var,uVar1) == 0) { + iVar3 = 0x20; + iVar2 = 4; + do { + if (*(char *)(param_1 + 0x44 + *(int *)(param_1 + 0x40)) != '\0') { + *(undefined1 *)(param_1 + 0x44 + *(int *)(param_1 + 0x40)) = 0; + iVar2 = iVar2 + -1; + FUN_004752cc(*(short **)(param_1 + 0x3c),(char)*(undefined4 *)(param_1 + 0x40), + (char *)((*(int **)(param_1 + 0x2c))[2] + + **(int **)(param_1 + 0x2c) * *(int *)(param_1 + 0x40)), + **(int **)(param_1 + 0x2c)); + } + *(int *)(param_1 + 0x40) = *(int *)(param_1 + 0x40) + 1; + if (0x1f < *(int *)(param_1 + 0x40)) { + *(undefined4 *)(param_1 + 0x40) = 0; + } + iVar3 = iVar3 + -1; + if (iVar3 < 0) { + *(undefined4 *)(param_1 + 0x40) = 0; + *(undefined4 *)(param_1 + 0x38) = 0; + return 0; + } + } while (0 < iVar2); + } + } + return 1; +} + + + +/* @00475468 file=? name=FUN_00475468 */ + +void __cdecl FUN_00475468(int *param_1) + +{ + int iVar1; + int *piVar2; + int iVar3; + + piVar2 = (int *)FUN_00414b60(); + iVar1 = *piVar2; + iVar3 = FUN_004dcd94(); + do { + if (param_1[0xe] == 0) { + return; + } + (**(code **)(*param_1 + 8))(param_1,0); + piVar2 = (int *)FUN_00414b60(); + } while (*piVar2 < iVar1 + iVar3); + return; +} + + + +/* @004754c8 file=? name=FUN_004754c8 */ + +undefined4 * __cdecl FUN_004754c8(undefined4 *param_1) + +{ + undefined4 *puVar1; + int local_24 [8]; + + *param_1 = &PTR_FUN_004fcf0c; + FUN_00403e84(local_24,PTR_s_JOYSTICK_INI_004fbc70,1); + puVar1 = (undefined4 *)FUN_00402298(0x44); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_00479228(puVar1,(int)local_24,PTR_s_JoystickX_004fcf58,10,0x14,0x1e); + } + param_1[7] = puVar1; + puVar1 = (undefined4 *)FUN_00402298(0x44); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_00479228(puVar1,(int)local_24,PTR_s_JoystickY_004fcf5c,10,0x14,0x1e); + } + param_1[8] = puVar1; + param_1[5] = 0; + param_1[6] = 0; + FUN_00403ecc(local_24,2); + return param_1; +} + + + +/* @0047556c file=? name=FUN_0047556c */ + +void __cdecl FUN_0047556c(int *param_1,byte param_2) + +{ + char *pcVar1; + int *piVar2; + int iVar3; + int local_28 [8]; + int local_8; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004fcf0c; + FUN_00403e84(local_28,PTR_s_JOYSTICK_INI_004fbc70,1); + FUN_004dfda8(&local_8); + pcVar1 = (char *)FUN_004df7b4(&local_8); + FUN_00404204((int)local_28,s_operator_004fc16a,&DAT_004fc173,pcVar1); + iVar3 = 0; + piVar2 = param_1 + 7; + do { + FUN_0047932c((int *)*piVar2,3); + *piVar2 = 0; + iVar3 = iVar3 + 1; + piVar2 = piVar2 + 1; + } while (iVar3 < 2); + FUN_00403ecc(local_28,2); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00475604 file=? name=FUN_00475604 */ + +void __cdecl FUN_00475604(int param_1) + +{ + undefined4 *puVar1; + int iVar2; + + iVar2 = 0; + puVar1 = (undefined4 *)(param_1 + 0x1c); + do { + (*(code *)**(undefined4 **)*puVar1)((undefined4 *)*puVar1); + iVar2 = iVar2 + 1; + puVar1 = puVar1 + 1; + } while (iVar2 < 2); + return; +} + + + +/* @00475628 file=? name=FUN_00475628 */ + +void __cdecl FUN_00475628(int *param_1) + +{ + int local_24 [8]; + + FUN_00403e84(local_24,PTR_s_JOYSTICK_INI_004fbc70,1); + (**(code **)(*param_1 + 0x10))(param_1,local_24); + FUN_00403ecc(local_24,2); + return; +} + + + +/* @00475668 file=? name=FUN_00475668 */ + +void __cdecl FUN_00475668(int param_1,undefined4 param_2) + +{ + undefined4 *puVar1; + int iVar2; + + iVar2 = 0; + puVar1 = (undefined4 *)(param_1 + 0x1c); + do { + (**(code **)(*(int *)*puVar1 + 4))((int *)*puVar1,param_2); + iVar2 = iVar2 + 1; + puVar1 = puVar1 + 1; + } while (iVar2 < 2); + return; +} + + + +/* @00475694 file=munga_l4/l4ctrl.cpp name=FUN_00475694 */ + +void FUN_00475694(void) + +{ + FUN_0040385c(s_Joystick__Update_should_not_be_c_004fc178, + s_d__tesla_bt_munga_l4_L4CTRL_CPP_004fc1a0,0xe1); + return; +} + + + +/* @004756b0 file=? name=FUN_004756b0 */ + +void __cdecl FUN_004756b0(int param_1,float param_2) + +{ + int *piVar1; + int iVar2; + + iVar2 = 0; + piVar1 = (int *)(param_1 + 0x1c); + do { + FUN_0047936c(*piVar1,param_2); + iVar2 = iVar2 + 1; + piVar1 = piVar1 + 1; + } while (iVar2 < 2); + return; +} + + + +/* @004756d8 file=? name=FUN_004756d8 */ + +undefined4 * __cdecl FUN_004756d8(undefined4 *param_1) + +{ + FUN_004754c8(param_1); + *param_1 = &PTR_FUN_004fcef8; + DAT_004fe108 = 3; + param_1[3] = 0; + param_1[4] = 0; + return param_1; +} + + + +/* @00475704 file=? name=FUN_00475704 */ + +void __cdecl FUN_00475704(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004fcef8; + FUN_0047556c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00475730 file=? name=FUN_00475730 */ + +void __thiscall FUN_00475730(void *this,int param_1) + +{ + byte bVar1; + uint uVar2; + uint uVar3; + float10 fVar4; + + FUN_0047d97c(this); + fVar4 = (float10)(**(code **)(**(int **)(param_1 + 0x1c) + 8)) + (*(int **)(param_1 + 0x1c),DAT_004fe100); + *(float *)(param_1 + 4) = (float)fVar4; + fVar4 = (float10)(**(code **)(**(int **)(param_1 + 0x20) + 8)) + (*(int **)(param_1 + 0x20),DAT_004fe102); + *(float *)(param_1 + 8) = (float)fVar4; + bVar1 = DAT_004fe109; + uVar2 = (uint)DAT_004fe109; + *(undefined4 *)(param_1 + 0x18) = 0; + uVar3 = *(uint *)(param_1 + 0x24) ^ uVar2; + *(undefined4 *)(param_1 + 0x14) = 0; + if (uVar3 != 0) { + if ((uVar3 & 0x10) != 0) { + if ((bVar1 & 0x10) == 0) { + *(uint *)(param_1 + 0x14) = *(uint *)(param_1 + 0x14) | 1; + } + else { + *(uint *)(param_1 + 0x18) = *(uint *)(param_1 + 0x18) | 1; + } + } + if ((uVar3 & 0x20) != 0) { + if ((bVar1 & 0x20) == 0) { + *(uint *)(param_1 + 0x14) = *(uint *)(param_1 + 0x14) | 8; + } + else { + *(uint *)(param_1 + 0x18) = *(uint *)(param_1 + 0x18) | 8; + } + } + } + *(uint *)(param_1 + 0x24) = uVar2; + return; +} + + + +/* @004757b0 file=? name=FUN_004757b0 */ + +undefined4 FUN_004757b0(void) + +{ + return 1; +} + + + +/* @004757bc file=? name=FUN_004757bc */ + +undefined4 * __cdecl FUN_004757bc(undefined4 *param_1) + +{ + undefined4 *puVar1; + int local_24 [8]; + + FUN_004754c8(param_1); + *param_1 = &PTR_FUN_004fcee4; + FUN_00403e84(local_24,PTR_s_JOYSTICK_INI_004fbc70,1); + puVar1 = (undefined4 *)FUN_00402298(0x44); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_00479158(puVar1,(int)local_24,PTR_s_Throttle_004fcf60,10,0x1e); + } + param_1[10] = puVar1; + DAT_004fe108 = 0xb; + param_1[3] = 0; + FUN_00403ecc(local_24,2); + return param_1; +} + + + +/* @00475838 file=? name=FUN_00475838 */ + +void __cdecl FUN_00475838(int *param_1,byte param_2) + +{ + char *pcVar1; + int local_28 [8]; + int local_8; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004fcee4; + FUN_00403e84(local_28,PTR_s_JOYSTICK_INI_004fbc70,1); + FUN_004dfda8(&local_8); + pcVar1 = (char *)FUN_004df7b4(&local_8); + FUN_00404204((int)local_28,s_operator_004fc1c0,&DAT_004fc1c9,pcVar1); + FUN_0047932c((int *)param_1[10],3); + param_1[10] = 0; + FUN_00403ecc(local_28,2); + FUN_0047556c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004758cc file=? name=FUN_004758cc */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __thiscall FUN_004758cc(void *this,int param_1) + +{ + uint uVar1; + byte bVar2; + uint uVar3; + float10 fVar4; + + FUN_0047d97c(this); + fVar4 = (float10)(**(code **)(**(int **)(param_1 + 0x1c) + 8)) + (*(int **)(param_1 + 0x1c),DAT_004fe100); + *(float *)(param_1 + 4) = (float)fVar4; + fVar4 = (float10)(**(code **)(**(int **)(param_1 + 0x20) + 8)) + (*(int **)(param_1 + 0x20),DAT_004fe102); + *(float *)(param_1 + 8) = (float)fVar4; + fVar4 = (float10)(**(code **)(**(int **)(param_1 + 0x28) + 8)) + (*(int **)(param_1 + 0x28),DAT_004fe106); + *(float *)(param_1 + 0x10) = (float)((float10)_DAT_00475a34 - fVar4); + bVar2 = DAT_004fe109; + uVar3 = (uint)DAT_004fe109; + *(undefined4 *)(param_1 + 0x18) = 0; + *(undefined4 *)(param_1 + 0x14) = 0; + uVar1 = *(uint *)(param_1 + 0x24); + if (uVar3 != uVar1) { + if ((int)uVar1 < 0x71) { + if (uVar1 == 0x70) { + *(undefined4 *)(param_1 + 0x14) = 0x20; + } + else if (uVar1 == 0x10) { + *(undefined4 *)(param_1 + 0x14) = 1; + } + else if (uVar1 == 0x20) { + *(undefined4 *)(param_1 + 0x14) = 8; + } + else if (uVar1 == 0x30) { + *(undefined4 *)(param_1 + 0x14) = 0x40; + } + else if (uVar1 == 0x40) { + *(undefined4 *)(param_1 + 0x14) = 2; + } + } + else if (uVar1 == 0x80) { + *(undefined4 *)(param_1 + 0x14) = 4; + } + else if (uVar1 == 0xb0) { + *(undefined4 *)(param_1 + 0x14) = 0x80; + } + else if (uVar1 == 0xf0) { + *(undefined4 *)(param_1 + 0x14) = 0x10; + } + if (uVar3 == 0x70 || bVar2 < 0x70) { + if (uVar3 == 0x70) { + *(undefined4 *)(param_1 + 0x18) = 0x20; + } + else if (uVar3 == 0x10) { + *(undefined4 *)(param_1 + 0x18) = 1; + } + else if (uVar3 == 0x20) { + *(undefined4 *)(param_1 + 0x18) = 8; + } + else if (uVar3 == 0x30) { + *(undefined4 *)(param_1 + 0x18) = 0x40; + } + else if (uVar3 == 0x40) { + *(undefined4 *)(param_1 + 0x18) = 2; + } + } + else if (uVar3 == 0x80) { + *(undefined4 *)(param_1 + 0x18) = 4; + } + else if (uVar3 == 0xb0) { + *(undefined4 *)(param_1 + 0x18) = 0x80; + } + else if (uVar3 == 0xf0) { + *(undefined4 *)(param_1 + 0x18) = 0x10; + } + *(uint *)(param_1 + 0x24) = uVar3; + } + return; +} + + + +/* @00475a54 file=? name=FUN_00475a54 */ + +void __cdecl FUN_00475a54(int param_1) + +{ + int local_24 [8]; + + FUN_00403e84(local_24,PTR_s_JOYSTICK_INI_004fbc70,1); + (**(code **)(**(int **)(param_1 + 0x28) + 4))(*(int **)(param_1 + 0x28),local_24); + FUN_00475668(param_1,local_24); + FUN_00403ecc(local_24,2); + return; +} + + + +/* @00475aa4 file=? name=FUN_00475aa4 */ + +undefined4 * __cdecl FUN_00475aa4(undefined4 *param_1) + +{ + FUN_004754c8(param_1); + *param_1 = &PTR_FUN_004fced0; + DAT_004fe108 = 0xb; + param_1[3] = 0; + param_1[4] = 0; + param_1[10] = 0; + param_1[0xb] = 0; + return param_1; +} + + + +/* @00475ad8 file=? name=FUN_00475ad8 */ + +void __cdecl FUN_00475ad8(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004fced0; + FUN_0047556c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00475b04 file=? name=FUN_00475b04 */ + +void __thiscall FUN_00475b04(void *this,int param_1) + +{ + int iVar1; + byte bVar2; + uint uVar3; + uint uVar4; + float10 fVar5; + + FUN_0047d97c(this); + fVar5 = (float10)(**(code **)(**(int **)(param_1 + 0x1c) + 8)) + (*(int **)(param_1 + 0x1c),DAT_004fe100); + *(float *)(param_1 + 4) = (float)fVar5; + fVar5 = (float10)(**(code **)(**(int **)(param_1 + 0x20) + 8)) + (*(int **)(param_1 + 0x20),DAT_004fe102); + *(float *)(param_1 + 8) = (float)fVar5; + *(undefined4 *)(param_1 + 0x18) = 0; + *(undefined4 *)(param_1 + 0x14) = 0; + bVar2 = DAT_004fe109; + uVar3 = (uint)DAT_004fe109; + uVar4 = *(uint *)(param_1 + 0x24) ^ uVar3; + if (uVar4 != 0) { + if ((uVar4 & 0x10) != 0) { + if ((DAT_004fe109 & 0x10) == 0) { + *(uint *)(param_1 + 0x14) = *(uint *)(param_1 + 0x14) | 1; + } + else { + *(uint *)(param_1 + 0x18) = *(uint *)(param_1 + 0x18) | 1; + } + } + if ((uVar4 & 0x20) != 0) { + if ((bVar2 & 0x20) == 0) { + *(uint *)(param_1 + 0x14) = *(uint *)(param_1 + 0x14) | 8; + } + else { + *(uint *)(param_1 + 0x18) = *(uint *)(param_1 + 0x18) | 8; + } + } + if ((uVar4 & 0x40) != 0) { + if ((bVar2 & 0x40) == 0) { + *(uint *)(param_1 + 0x14) = *(uint *)(param_1 + 0x14) | 4; + } + else { + *(uint *)(param_1 + 0x18) = *(uint *)(param_1 + 0x18) | 4; + } + } + if ((uVar4 & 0x80) != 0) { + if ((bVar2 & 0x80) == 0) { + *(uint *)(param_1 + 0x14) = *(uint *)(param_1 + 0x14) | 2; + } + else { + *(uint *)(param_1 + 0x18) = *(uint *)(param_1 + 0x18) | 2; + } + } + *(uint *)(param_1 + 0x24) = uVar3; + } + uVar3 = (uint)DAT_004fe106; + if (*(int *)(param_1 + 0x28) < (int)uVar3) { + *(uint *)(param_1 + 0x28) = uVar3; + } + iVar1 = *(int *)(param_1 + 0x28); + if (iVar1 * 7 >> 3 < (int)uVar3) { + uVar3 = 0; + } + else if (iVar1 * 5 >> 3 < (int)uVar3) { + uVar3 = 0x40; + } + else if (iVar1 * 3 >> 3 < (int)uVar3) { + uVar3 = 0x20; + } + else if (iVar1 >> 3 < (int)uVar3) { + uVar3 = 0x80; + } + else { + uVar3 = 0x10; + } + if (uVar3 != *(uint *)(param_1 + 0x2c)) { + *(uint *)(param_1 + 0x14) = *(uint *)(param_1 + 0x14) | *(uint *)(param_1 + 0x2c); + *(uint *)(param_1 + 0x18) = *(uint *)(param_1 + 0x18) | uVar3; + *(uint *)(param_1 + 0x2c) = uVar3; + } + return; +} + + + +/* @00475c18 file=? name=FUN_00475c18 */ + +undefined4 * __cdecl FUN_00475c18(undefined4 *param_1) + +{ + int *piVar1; + uint uVar2; + bool bVar3; + char cVar4; + char *pcVar5; + int iVar6; + short *psVar7; + uint *puVar8; + undefined4 *puVar9; + undefined4 extraout_EAX; + undefined4 uVar10; + undefined4 extraout_EDX; + undefined4 extraout_EDX_00; + undefined4 extraout_EDX_01; + undefined4 extraout_EDX_02; + undefined4 extraout_EDX_03; + undefined4 extraout_EDX_04; + undefined4 extraout_EDX_05; + undefined4 extraout_EDX_06; + undefined4 extraout_EDX_07; + undefined4 extraout_EDX_08; + undefined8 uVar11; + char local_c8 [128]; + undefined4 local_48; + int *local_44; + int *local_40; + undefined4 local_3c; + int local_38; + undefined4 local_34; + undefined4 local_30; + undefined4 local_2c; + undefined4 local_28; + undefined4 *local_24; + undefined4 *local_20; + undefined4 *local_1c; + int *local_18; + int local_14; + short *local_10; + short *local_c; + char *local_8; + + FUN_0044c594(param_1,0x3f0,&DAT_004fbcf0); + *param_1 = &PTR_FUN_004fcea4; + FUN_004de998(param_1 + 9,0x20,7,1,FUN_00477aa0); + FUN_004de998(param_1 + 0x41,0x24,2,1,FUN_00477e0c); + FUN_004de998(param_1 + 0x58,0x20,3,1,FUN_00478192); + FUN_004de998(param_1 + 0x70,0x20,0x4b,1,FUN_00478192); + FUN_004de998(param_1 + 0x313,0x24,1,1,FUN_004784fb); + FUN_0044c8a0(param_1 + 0x31d); + *(byte *)(param_1 + 0x327) = *(byte *)(param_1 + 0x327) & 0xfe; + *(byte *)(param_1 + 0x327) = *(byte *)(param_1 + 0x327) & 0xfd; + *(byte *)(param_1 + 0x327) = *(byte *)(param_1 + 0x327) & 0xfb; + *(byte *)(param_1 + 0x327) = *(byte *)(param_1 + 0x327) & 0xf7; + param_1[0x55] = 0; + param_1[0x56] = 0; + param_1[0x57] = 0; + param_1[0x53] = 0; + param_1[0x31c] = 0; + param_1[0x54] = 0; + param_1[0x324] = 0; + param_1[0x325] = 0; + param_1[0x326] = 0; + pcVar5 = (char *)FUN_004dee74(s_L4CONTROLS_004fc1e0); + uVar10 = extraout_EDX; + if (pcVar5 != (char *)0x0) { + bVar3 = false; + do { + local_8 = local_c8; + if (bVar3) { + local_c8[0] = '\0'; + } + else { + do { + cVar4 = *pcVar5; + pcVar5 = pcVar5 + 1; + if ((cVar4 == '\0') || (cVar4 == '\n')) { + bVar3 = true; +LAB_00475d7e: + cVar4 = '\0'; + } + else if ((cVar4 == ',') || (cVar4 == ';')) goto LAB_00475d7e; + *local_8 = cVar4; + local_8 = local_8 + 1; + } while (cVar4 != '\0'); + } + iVar6 = FUN_004d4b58(local_c8,&DAT_004fc1eb); + if ((iVar6 == 0) || (iVar6 = FUN_004d4b58(local_c8,s_RIO_COM1_004fc1ef), iVar6 == 0)) { + uVar11 = FUN_00402298(0x498); + local_c = (short *)uVar11; + if (local_c == (short *)0x0) { + psVar7 = (short *)0x0; + } + else { + psVar7 = FUN_00479b78(local_c,0x3f8,0xc,1); + uVar11 = CONCAT44(extraout_EDX_00,local_c); + } + param_1[0x324] = psVar7; + *(byte *)(param_1 + 0x327) = *(byte *)(param_1 + 0x327) | 8; + param_1[0x326] = 4; + } + else { + iVar6 = FUN_004d4b58(local_c8,s_RIO_COM2_004fc1f8); + if (iVar6 == 0) { + uVar11 = FUN_00402298(0x498); + local_10 = (short *)uVar11; + if (local_10 == (short *)0x0) { + psVar7 = (short *)0x0; + } + else { + psVar7 = FUN_00479b78(local_10,0x2f8,0xb,1); + uVar11 = CONCAT44(extraout_EDX_01,local_10); + } + local_10 = (short *)uVar11; + uVar11 = CONCAT44((int)((ulonglong)uVar11 >> 0x20),local_c); + param_1[0x324] = psVar7; + *(byte *)(param_1 + 0x327) = *(byte *)(param_1 + 0x327) | 8; + param_1[0x326] = 4; + } + else { + iVar6 = FUN_004d4b58(local_c8,s_KEYBOARD_004fc201); + uVar11 = CONCAT44(extraout_EDX_02,local_c); + if (iVar6 == 0) { + *(byte *)(param_1 + 0x327) = *(byte *)(param_1 + 0x327) | 2; + } + else { + iVar6 = FUN_004d4b58(local_c8,s_MOUSE_004fc20a); + uVar11 = CONCAT44(extraout_EDX_03,local_c); + if (iVar6 == 0) { + if ((*(byte *)(param_1 + 0x327) & 1) == 0) { + *(byte *)(param_1 + 0x327) = *(byte *)(param_1 + 0x327) | 1; + local_14 = FUN_00402298(8); + if (local_14 == 0) { + puVar8 = (uint *)0x0; + } + else { + puVar8 = FUN_00478fd8(); + } + param_1[0x31c] = puVar8; + uVar11 = CONCAT44(param_1[0x31c],local_c); + if (*(int *)(param_1[0x31c] + 4) != 0) { + local_18 = (int *)param_1[0x31c]; + uVar10 = 0; + if (local_18 != (int *)0x0) { + FUN_004022d0(local_18); + uVar10 = extraout_EDX_04; + } + uVar11 = CONCAT44(uVar10,local_c); + param_1[0x31c] = 0; + *(byte *)(param_1 + 0x327) = *(byte *)(param_1 + 0x327) & 0xfe; + } + } + } + else { + iVar6 = FUN_004d4b58(local_c8,s_JOYSTICK_004fc210); + if (iVar6 == 0) { + *(byte *)(param_1 + 0x327) = *(byte *)(param_1 + 0x327) | 4; + param_1[0x53] = 1; + uVar11 = FUN_00402298(0x28); + local_1c = (undefined4 *)uVar11; + if (local_1c == (undefined4 *)0x0) { + puVar9 = (undefined4 *)0x0; + } + else { + puVar9 = FUN_004756d8(local_1c); + uVar11 = CONCAT44(extraout_EDX_05,local_1c); + } + local_1c = (undefined4 *)uVar11; + uVar11 = CONCAT44((int)((ulonglong)uVar11 >> 0x20),local_c); + param_1[0x54] = puVar9; + param_1[0x326] = 1; + } + else { + iVar6 = FUN_004d4b58(local_c8,s_FLIGHTSTICKPRO_004fc219); + if (iVar6 == 0) { + *(byte *)(param_1 + 0x327) = *(byte *)(param_1 + 0x327) | 4; + param_1[0x53] = 2; + uVar11 = FUN_00402298(0x2c); + local_20 = (undefined4 *)uVar11; + if (local_20 == (undefined4 *)0x0) { + puVar9 = (undefined4 *)0x0; + } + else { + puVar9 = FUN_004757bc(local_20); + uVar11 = CONCAT44(extraout_EDX_06,local_20); + } + local_20 = (undefined4 *)uVar11; + uVar11 = CONCAT44((int)((ulonglong)uVar11 >> 0x20),local_c); + param_1[0x54] = puVar9; + param_1[0x326] = 3; + } + else { + iVar6 = FUN_004d4b58(local_c8,s_THRUSTMASTER_004fc228); + uVar11 = CONCAT44(extraout_EDX_07,local_c); + if (iVar6 == 0) { + *(byte *)(param_1 + 0x327) = *(byte *)(param_1 + 0x327) | 4; + param_1[0x53] = 3; + uVar11 = FUN_00402298(0x30); + local_24 = (undefined4 *)uVar11; + if (local_24 == (undefined4 *)0x0) { + puVar9 = (undefined4 *)0x0; + } + else { + puVar9 = FUN_00475aa4(local_24); + uVar11 = CONCAT44(extraout_EDX_08,local_24); + } + local_24 = (undefined4 *)uVar11; + uVar11 = CONCAT44((int)((ulonglong)uVar11 >> 0x20),local_c); + param_1[0x54] = puVar9; + param_1[0x326] = 2; + } + } + } + } + } + } + } + local_c = (short *)uVar11; + uVar10 = CONCAT31((int3)((ulonglong)uVar11 >> 0x28),local_c8[0]); + } while (local_c8[0] != '\0'); + } + if (param_1[0x324] != 0) { + FUN_0047a5e4(param_1[0x324],uVar10,(short *)param_1[0x324]); + } + uVar2 = *(uint *)(*(int *)(DAT_004efc94 + 0x50) + 4); + iVar6 = 0; + local_28 = 0; + do { + FUN_00477b08((int)(param_1 + iVar6 * 8 + 9),&local_28,uVar2); + iVar6 = iVar6 + 1; + } while (iVar6 < 7); + local_30 = 0; + local_2c = 0; + iVar6 = 0; + do { + FUN_00477e88((int)(param_1 + iVar6 * 9 + 0x41),&local_30,uVar2); + iVar6 = iVar6 + 1; + } while (iVar6 < 2); + iVar6 = 0; + local_34 = 0; + do { + FUN_004781f7((int)(param_1 + iVar6 * 8 + 0x58),&local_34,uVar2); + iVar6 = iVar6 + 1; + } while (iVar6 < 3); + local_3c = 0; + local_38 = 0; + puVar8 = param_1 + 0x2c8; + do { + FUN_004781f7((int)(param_1 + local_38 * 8 + 0x70),&local_3c,uVar2); + *puVar8 = uVar2; + local_38 = local_38 + 1; + puVar8 = puVar8 + 1; + } while (local_38 < 0x4b); + param_1[0x328] = 0; + iVar6 = 0; + puVar9 = param_1 + 0x32b; + do { + iVar6 = iVar6 + 1; + *puVar9 = 0; + puVar9 = puVar9 + 1; + } while (iVar6 < 0x10); + param_1[0x33b] = 0; + puVar9 = (undefined4 *)FUN_00414b60(); + param_1[0x33c] = *puVar9; + param_1[0x33d] = 0; + param_1[0x33e] = 0; + param_1[0x33f] = 0; + param_1[0x340] = 0; + param_1[0x341] = 0; + param_1[0x342] = 0; + param_1[0x343] = 0; + piVar1 = DAT_00523314; + local_40 = DAT_00523314; + DAT_00523314[3] = DAT_00523314[3] + 1; + if (((char *)piVar1[2] != (char *)0x0) && (iVar6 = FUN_004d4a78((char *)piVar1[2]), iVar6 != 0)) { + if ((*(byte *)(param_1 + 0x327) & 8) == 0) { + FUN_004dbb24(&DAT_00524e20,s_RIO_must_be_enabled_by_setenv__004fc235,(char *)0x0); + FUN_004036a0(1); + } + FUN_00477990(param_1,(LPCSTR)local_40[2]); + param_1[0x33d] = 1; + } + piVar1 = DAT_00523318; + local_44 = DAT_00523318; + DAT_00523318[3] = DAT_00523318[3] + 1; + if (((char *)piVar1[2] != (char *)0x0) && (iVar6 = FUN_004d4a78((char *)piVar1[2]), iVar6 != 0)) { + if ((*(byte *)(param_1 + 0x327) & 8) == 0) { + FUN_004dbb24(&DAT_00524e20,s_RIO_must_be_enabled_by_setenv__004fc255,(char *)0x0); + FUN_004036a0(1); + } + FUN_004de998((int *)0x0,0x1c,12000,1,FUN_00477a8e); + local_48 = extraout_EAX; + puVar9 = (undefined4 *)FUN_00402298(0x10); + if (puVar9 == (undefined4 *)0x0) { + uVar10 = 0; + } + else { + uVar10 = FUN_004030dc(puVar9,local_48,0x52080,0); + } + param_1[0x33b] = uVar10; + } + piVar1 = local_44 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_44,3); + } + piVar1 = local_40 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_40,3); + } + return param_1; +} + + + +/* @00476298 file=? name=FUN_00476298 */ + +void __cdecl FUN_00476298(int *param_1,byte param_2) + +{ + int *piVar1; + undefined4 *puVar2; + bool bVar3; + int *piVar4; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004fcea4; + piVar4 = DAT_00523318; + if ((param_1[0x33b] == 0) || (param_1[0x33d] != 0)) { + bVar3 = false; + } + else { + bVar3 = true; + } + if (bVar3) { + DAT_00523318[3] = DAT_00523318[3] + 1; + FUN_0047790c((int)param_1,(LPCSTR)piVar4[2]); + piVar1 = piVar4 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(piVar4,3); + } + } + piVar4 = (int *)param_1[0x33b]; + if (piVar4 != (int *)0x0) { + (**(code **)(*piVar4 + 0xc))(piVar4,0); + piVar4 = (int *)(*(code *)**(undefined4 **)param_1[0x33b])((undefined4 *)param_1[0x33b]); + FUN_004022d0((int *)param_1[0x33b]); + FUN_004022e8(piVar4); + param_1[0x33b] = 0; + param_1[0x33e] = 0; + } + piVar4 = (int *)param_1[0x31c]; + if (piVar4 != (int *)0x0) { + if (piVar4 != (int *)0x0) { + FUN_004022d0(piVar4); + } + param_1[0x31c] = 0; + } + puVar2 = (undefined4 *)param_1[0x54]; + if (puVar2 != (undefined4 *)0x0) { + if (puVar2 != (undefined4 *)0x0) { + (**(code **)*puVar2)(puVar2,3); + } + param_1[0x54] = 0; + } + FUN_004772e8((int)param_1); + if ((int *)param_1[0x324] != (int *)0x0) { + FUN_00479fd0((int *)param_1[0x324],3); + param_1[0x324] = 0; + } + FUN_0044c8cc(param_1 + 0x31d,2); + FUN_004de8d4(param_1 + 0x313,0x24,1,1,FUN_00478514); + FUN_004de8d4(param_1 + 0x70,0x20,0x4b,1,FUN_004781ab); + FUN_004de8d4(param_1 + 0x58,0x20,3,1,FUN_004781ab); + FUN_004de8d4(param_1 + 0x41,0x24,2,1,FUN_00477e25); + FUN_004de8d4(param_1 + 9,0x20,7,1,FUN_00477ab9); + FUN_0044c5e4(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00476454 file=? name=FUN_00476454 */ + +void __cdecl FUN_00476454(int param_1) + +{ + if (*(int **)(param_1 + 0xc90) != (int *)0x0) { + FUN_00479fd0(*(int **)(param_1 + 0xc90),3); + *(undefined4 *)(param_1 + 0xc90) = 0; + } + FUN_0044c73c(); + return; +} + + + +/* @00476484 file=? name=FUN_00476484 */ + +void __cdecl FUN_00476484(int param_1,undefined4 param_2) + +{ + int iVar1; + int *local_14; + int *local_10; + int *local_c; + int *local_8; + + iVar1 = 0; + local_8 = (int *)(param_1 + 0x24); + do { + (**(code **)(*local_8 + 0xc))(iVar1 * 0x20 + param_1 + 0x24,param_2); + iVar1 = iVar1 + 1; + local_8 = local_8 + 8; + } while (iVar1 < 7); + iVar1 = 0; + local_c = (int *)(param_1 + 0x104); + do { + (**(code **)(*local_c + 0xc))(iVar1 * 0x24 + param_1 + 0x104,param_2); + iVar1 = iVar1 + 1; + local_c = local_c + 9; + } while (iVar1 < 2); + iVar1 = 0; + local_10 = (int *)(param_1 + 0x160); + do { + (**(code **)(*local_10 + 0xc))(iVar1 * 0x20 + param_1 + 0x160,param_2); + iVar1 = iVar1 + 1; + local_10 = local_10 + 8; + } while (iVar1 < 3); + iVar1 = 0; + local_14 = (int *)(param_1 + 0x1c0); + do { + (**(code **)(*local_14 + 0xc))(iVar1 * 0x20 + param_1 + 0x1c0,param_2); + iVar1 = iVar1 + 1; + local_14 = local_14 + 8; + } while (iVar1 < 0x4b); + (**(code **)(*(int *)(param_1 + 0xc4c) + 0xc))(param_1 + 0xc4c,param_2); + return; +} + + + +/* @00476568 file=? name=FUN_00476568 */ + +undefined8 __cdecl FUN_00476568(int param_1,undefined4 param_2,undefined1 param_3) + +{ + int iVar1; + undefined8 uVar2; + + iVar1 = *(int *)(param_1 + 0xc90); + uVar2 = CONCAT44(iVar1,param_1); + if (iVar1 != 0) { + uVar2 = FUN_0047a6d4(param_2,iVar1,(short *)iVar1,(char)param_2,param_3); + } + return uVar2; +} + + + +/* @0047658c file=? name=FUN_0047658c */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_0047658c(int param_1) + +{ + uint uVar1; + uint uVar2; + undefined2 uVar3; + int iVar4; + int *piVar5; + undefined4 *puVar6; + undefined2 extraout_var; + undefined2 extraout_var_00; + void *this; + undefined4 extraout_ECX; + undefined4 extraout_ECX_00; + void *extraout_ECX_01; + void *extraout_ECX_02; + undefined4 extraout_EDX; + undefined4 uVar7; + undefined4 extraout_EDX_00; + ulonglong uVar8; + undefined1 uVar9; + uint local_60 [3]; + int *local_54; + int local_50; + int local_4c; + int local_48; + undefined4 local_44; + undefined4 local_40; + undefined4 local_3c; + float local_38; + float local_34; + uint local_30; + uint local_2c; + undefined4 local_28; + int *local_24; + float local_20; + int local_1c; + uint local_18; + uint local_14; + uint local_10; + float local_c; + float local_8; + + local_1c = 0; + this = *(void **)(DAT_004efc94 + 0x50); + uVar1 = *(uint *)((int)this + 4); + if ((*(byte *)(param_1 + 0xc9c) & 8) != 0) { + if (*(int *)(param_1 + 0xcf4) == 0) { + local_24 = (int *)FUN_00414b60(); + this = *(void **)(param_1 + 0xc94); + local_20 = (float)(*local_24 - (int)this) / DAT_0052140c; + local_28 = 0x41700000; + if (DAT_004fbcf8 == 0) { + if (local_20 < 15.0) { + if (local_20 < _DAT_00476e24) { + local_34 = local_20; + FUN_004dbb24(&DAT_00524e20,s_LBE4ControlsManager__Execute__de_004fc2e3,(char *)0x0); + piVar5 = FUN_004db634(&DAT_00524e20,(float10)local_34); + FUN_004dbb24(piVar5,&DAT_004fc319,(char *)0x0); + FUN_0047a5bc(extraout_ECX_00,extraout_EDX_00,*(short **)(param_1 + 0xc90)); + puVar6 = (undefined4 *)FUN_00414b60(); + *(undefined4 *)(param_1 + 0xc94) = *puVar6; + this = extraout_ECX_01; + } + } + else { + uVar7 = 0; + if (*(int *)(param_1 + 0xc94) != 0) { + FUN_004dbb24(&DAT_00524e20,s_LBE4ControlsManager__Execute__lo_004fc275,(char *)0x0); + local_2c = DAT_004fe168; + uVar8 = FUN_0047df47(extraout_ECX,DAT_004fe168); + uVar2 = DAT_004fe164; + local_30 = (uint)uVar8; + FUN_004dbb24(&DAT_00524e20,s_iThinkIRQIsOn___004fc2ac,(char *)0x0); + piVar5 = FUN_004db78c(&DAT_00524e20,uVar2); + FUN_004dbb24(piVar5,s___actual_state___004fc2bc,(char *)0x0); + piVar5 = FUN_004db78c(piVar5,local_30); + FUN_004dbb24(piVar5,s___characters_sent___004fc2cd,(char *)0x0); + piVar5 = FUN_004db78c(piVar5,local_2c); + FUN_004dbb24(piVar5,&DAT_004fc2e1,(char *)0x0); + uVar7 = extraout_EDX; + } + FUN_0047a5bc(*(undefined4 *)(param_1 + 0xc90),uVar7, + (short *)*(undefined4 *)(param_1 + 0xc90)); + puVar6 = (undefined4 *)FUN_00414b60(); + this = (void *)*puVar6; + *(void **)(param_1 + 0xc94) = this; + } + } + else { + this = (void *)0x0; + DAT_004fbcf8 = 0; + } + } + while (iVar4 = FUN_00477484(this,param_1,local_60), iVar4 != 0) { + FUN_00477800(param_1,(int *)local_60,&local_1c); + this = extraout_ECX_02; + } + } + if ((*(byte *)(param_1 + 0xc9c) & 4) != 0) { + piVar5 = (int *)FUN_00414b60(); + local_38 = (float)(*piVar5 - *(int *)(param_1 + 0x15c)); + if ((float)_DAT_00476e28 < local_38) { + (**(code **)(**(int **)(param_1 + 0x150) + 0xc))((char)*(int **)(param_1 + 0x150)); + *(float *)(*(int *)(param_1 + 0x150) + 4) = -*(float *)(*(int *)(param_1 + 0x150) + 4); + puVar6 = (undefined4 *)FUN_00414b60(); + *(undefined4 *)(param_1 + 0x15c) = *puVar6; + } + } + if ((*(byte *)(param_1 + 0xc9c) & 1) != 0) { + FUN_00479014(*(int *)(param_1 + 0xc70),&local_18,&local_14); + *(int *)(param_1 + 0x154) = *(int *)(param_1 + 0x154) + local_18; + *(int *)(param_1 + 0x158) = *(int *)(param_1 + 0x158) + local_14; + if (0x800 < *(int *)(param_1 + 0x154)) { + *(undefined4 *)(param_1 + 0x154) = 0x800; + } + if (*(int *)(param_1 + 0x154) < -0x800) { + *(undefined4 *)(param_1 + 0x154) = 0xfffff800; + } + local_c = (float)*(int *)(param_1 + 0x154) * _DAT_00476e30; + if (0x800 < *(int *)(param_1 + 0x158)) { + *(undefined4 *)(param_1 + 0x158) = 0x800; + } + if (*(int *)(param_1 + 0x158) < -0x800) { + *(undefined4 *)(param_1 + 0x158) = 0xfffff800; + } + local_8 = (float)*(int *)(param_1 + 0x158) * _DAT_00476e30; + } + uVar9 = (undefined1)uVar1; + if (((*(byte *)(param_1 + 0xc9c) & 8) == 0) || (local_1c == 0)) { + if ((*(byte *)(param_1 + 0xc9c) & 4) != 0) { + (**(code **)(*(int *)(param_1 + 0x24) + 0x10)) + (param_1 + 0x24,*(int *)(param_1 + 0x150) + 0x10,uVar9); + (**(code **)(*(int *)(param_1 + 0x84) + 0x10)) + (param_1 + 0x84,*(int *)(param_1 + 0x150) + 4,uVar9); + (**(code **)(*(int *)(param_1 + 0xa4) + 0x10)) + (param_1 + 0xa4,*(int *)(param_1 + 0x150) + 8,uVar9); + } + } + else { + (**(code **)(*(int *)(param_1 + 0x24) + 0x10)) + (param_1 + 0x24,*(int *)(param_1 + 0xc90) + 0x440,uVar9); + (**(code **)(*(int *)(param_1 + 0x44) + 0x10)) + (param_1 + 0x44,*(int *)(param_1 + 0xc90) + 0x444,uVar9); + (**(code **)(*(int *)(param_1 + 100) + 0x10)) + (param_1 + 100,*(int *)(param_1 + 0xc90) + 0x448,uVar9); + (**(code **)(*(int *)(param_1 + 0x84) + 0x10)) + (param_1 + 0x84,*(int *)(param_1 + 0xc90) + 0x44c,uVar9); + (**(code **)(*(int *)(param_1 + 0xa4) + 0x10)) + (param_1 + 0xa4,*(int *)(param_1 + 0xc90) + 0x450,uVar9); + } + if ((*(byte *)(param_1 + 0xc9c) & 1) != 0) { + (**(code **)(*(int *)(param_1 + 0xc4) + 0x10))(param_1 + 0xc4,&local_c,uVar9); + (**(code **)(*(int *)(param_1 + 0xe4) + 0x10))(param_1 + 0xe4,&local_8,uVar9); + } + if (((*(byte *)(param_1 + 0xc9c) & 8) == 0) || (local_1c == 0)) { + if ((*(byte *)(param_1 + 0xc9c) & 4) != 0) { + (**(code **)(*(int *)(param_1 + 0x104) + 0x10)) + (param_1 + 0x104,*(int *)(param_1 + 0x150) + 4,uVar9); + } + } + else { + local_40 = *(undefined4 *)(*(int *)(param_1 + 0xc90) + 0x44c); + local_3c = *(undefined4 *)(*(int *)(param_1 + 0xc90) + 0x450); + (**(code **)(*(int *)(param_1 + 0x104) + 0x10))(param_1 + 0x104,&local_40,uVar9); + } + if ((*(byte *)(param_1 + 0xc9c) & 1) != 0) { + (**(code **)(*(int *)(param_1 + 0x128) + 0x10))(param_1 + 0x128,&local_c,uVar9); + } + if (((*(byte *)(param_1 + 0xc9c) & 2) != 0) && (local_10 = FUN_00478fb8(), local_10 != 0)) { + FUN_004781f7(param_1 + 0x1a0,&local_10,uVar1); + FUN_0044c9d4(param_1 + 0xc74,2,(char)local_10); + } + if ((*(byte *)(param_1 + 0xc9c) & 4) != 0) { + uVar1 = *(uint *)(*(int *)(param_1 + 0x150) + 0x14); + if (uVar1 != 0) { + if ((uVar1 & 1) != 0) { + local_44 = 0xffffffbf; + (**(code **)(*(int *)(param_1 + 0x9c0) + 0x10))(param_1 + 0x9c0,&local_44,uVar9); + } + if ((uVar1 & 2) != 0) { + local_44 = 0xffffffba; + (**(code **)(*(int *)(param_1 + 0xa60) + 0x10))(param_1 + 0xa60,&local_44,uVar9); + } + if ((uVar1 & 4) != 0) { + local_44 = 0xffffffb9; + (**(code **)(*(int *)(param_1 + 0xa80) + 0x10))(param_1 + 0xa80,&local_44,uVar9); + } + if ((uVar1 & 8) != 0) { + local_44 = 0xffffffb8; + (**(code **)(*(int *)(param_1 + 0xaa0) + 0x10))(param_1 + 0xaa0,&local_44,uVar9); + } + if ((uVar1 & 0x10) != 0) { + local_44 = 0xffffffbd; + (**(code **)(*(int *)(param_1 + 0xa00) + 0x10))(param_1 + 0xa00,&local_44,uVar9); + } + if ((uVar1 & 0x20) != 0) { + local_44 = 0xffffffbe; + (**(code **)(*(int *)(param_1 + 0x9e0) + 0x10))(param_1 + 0x9e0,&local_44,uVar9); + } + if ((uVar1 & 0x40) != 0) { + local_44 = 0xffffffbb; + (**(code **)(*(int *)(param_1 + 0xa40) + 0x10))(param_1 + 0xa40,&local_44,uVar9); + } + if ((uVar1 & 0x80) != 0) { + local_44 = 0xffffffbc; + (**(code **)(*(int *)(param_1 + 0xa20) + 0x10))(param_1 + 0xa20,&local_44,uVar9); + } + } + uVar1 = *(uint *)(*(int *)(param_1 + 0x150) + 0x18); + if (uVar1 != 0) { + if ((uVar1 & 1) != 0) { + local_44 = 0x41; + (**(code **)(*(int *)(param_1 + 0x9c0) + 0x10))(param_1 + 0x9c0,&local_44,uVar9); + } + if ((uVar1 & 2) != 0) { + local_44 = 0x46; + (**(code **)(*(int *)(param_1 + 0xa60) + 0x10))(param_1 + 0xa60,&local_44,uVar9); + } + if ((uVar1 & 4) != 0) { + local_44 = 0x47; + (**(code **)(*(int *)(param_1 + 0xa80) + 0x10))(param_1 + 0xa80,&local_44,uVar9); + } + if ((uVar1 & 8) != 0) { + local_44 = 0x48; + (**(code **)(*(int *)(param_1 + 0xaa0) + 0x10))(param_1 + 0xaa0,&local_44,uVar9); + } + if ((uVar1 & 0x10) != 0) { + local_44 = 0x43; + (**(code **)(*(int *)(param_1 + 0xa00) + 0x10))(param_1 + 0xa00,&local_44,uVar9); + } + if ((uVar1 & 0x20) != 0) { + local_44 = 0x42; + (**(code **)(*(int *)(param_1 + 0x9e0) + 0x10))(param_1 + 0x9e0,&local_44,uVar9); + } + if ((uVar1 & 0x40) != 0) { + local_44 = 0x45; + (**(code **)(*(int *)(param_1 + 0xa40) + 0x10))(param_1 + 0xa40,&local_44,uVar9); + } + if ((uVar1 & 0x80) != 0) { + local_44 = 0x44; + (**(code **)(*(int *)(param_1 + 0xa20) + 0x10))(param_1 + 0xa20,&local_44,uVar9); + } + } + } + if ((*(byte *)(param_1 + 0xc9c) & 1) != 0) { + iVar4 = 0; + local_4c = **(int **)(param_1 + 0xc70); + local_54 = (int *)(param_1 + 0xac0); + local_48 = 0x48; + if (0 < local_4c) { + do { + uVar3 = FUN_0047905c(*(int *)(param_1 + 0xc70),(short)iVar4); + if (CONCAT22(extraout_var,uVar3) != 0) { + local_50 = local_48 + 1; + (**(code **)(*local_54 + 0x10))(local_48 * 0x20 + param_1 + 0x1c0,&local_50,uVar9); + } + uVar3 = FUN_00479080(*(int *)(param_1 + 0xc70),(short)iVar4); + if (CONCAT22(extraout_var_00,uVar3) != 0) { + local_50 = -1 - local_48; + (**(code **)(*local_54 + 0x10))(local_48 * 0x20 + param_1 + 0x1c0,&local_50,uVar9); + } + local_54 = local_54 + 8; + local_48 = local_48 + 1; + iVar4 = iVar4 + 1; + } while (iVar4 < local_4c); + } + (**(code **)(*(int *)(param_1 + 0xc4c) + 0x10))(param_1 + 0xc4c,&local_18,uVar9); + } + return; +} + + + +/* @00476e34 file=? name=FUN_00476e34 */ + +void __cdecl FUN_00476e34(int param_1) + +{ + if ((*(byte *)(param_1 + 0xc9c) & 4) != 0) { + (**(code **)(**(int **)(param_1 + 0x150) + 4))(*(int **)(param_1 + 0x150)); + } + return; +} + + + +/* @00476e54 file=? name=FUN_00476e54 */ + +void __cdecl FUN_00476e54(int param_1) + +{ + if ((*(byte *)(param_1 + 0xc9c) & 8) != 0) { + FUN_0047a4cc(*(int *)(param_1 + 0xc90)); + } + if ((*(byte *)(param_1 + 0xc9c) & 4) != 0) { + (**(code **)(**(int **)(param_1 + 0x150) + 8))(*(int **)(param_1 + 0x150)); + } + return; +} + + + +/* @00476e8c file=? name=FUN_00476e8c */ + +void __cdecl FUN_00476e8c(int param_1) + +{ + if ((*(byte *)(param_1 + 0xc9c) & 8) != 0) { + FUN_0047a4cc(*(int *)(param_1 + 0xc90)); + } + return; +} + + + +/* @00476eac file=? name=FUN_00476eac */ + +void __cdecl FUN_00476eac(int param_1,float param_2) + +{ + if ((*(byte *)(param_1 + 0xc9c) & 8) != 0) { + FUN_0047a4f0(*(int *)(param_1 + 0xc90),param_2); + } + if ((*(byte *)(param_1 + 0xc9c) & 4) != 0) { + FUN_004756b0(*(int *)(param_1 + 0x150),param_2); + } + return; +} + + + +/* @00476eec file=? name=FUN_00476eec */ + +void __cdecl FUN_00476eec(int param_1,float param_2) + +{ + if ((*(byte *)(param_1 + 0xc9c) & 8) != 0) { + FUN_0047a520(*(int *)(param_1 + 0xc90),param_2); + } + return; +} + + + +/* @00476f10 file=? name=FUN_00476f10 */ + +void __cdecl FUN_00476f10(int param_1,float param_2) + +{ + if ((*(byte *)(param_1 + 0xc9c) & 8) != 0) { + FUN_0047a53c(*(int *)(param_1 + 0xc90),param_2); + } + return; +} + + + +/* @00476f34 file=? name=FUN_00476f34 */ + +char * __cdecl FUN_00476f34(int param_1) + +{ + char *pcVar1; + int iVar2; + undefined **ppuVar3; + undefined4 *puVar4; + undefined4 local_100 [63]; + + ppuVar3 = &PTR_s_AuxLowerRight8_004fbcfc; + puVar4 = local_100; + for (iVar2 = 0x3f; iVar2 != 0; iVar2 = iVar2 + -1) { + *puVar4 = *ppuVar3; + ppuVar3 = ppuVar3 + 1; + puVar4 = puVar4 + 1; + } + if (param_1 < 0x40) { + if (param_1 < 0) { + pcVar1 = s_underrange_004fc690; + } + else { + pcVar1 = (char *)local_100[param_1]; + } + } + else { + pcVar1 = s_overrange_004fc686; + } + return pcVar1; +} + + + +/* @00476f78 file=? name=FUN_00476f78 */ + +bool __cdecl FUN_00476f78(char *param_1,undefined4 *param_2) + +{ + int iVar1; + undefined **ppuVar2; + int iVar3; + + iVar3 = 0; + ppuVar2 = &PTR_s_ScalarThrottle_004fbdf8; + do { + iVar1 = FUN_004d4b58(param_1,*ppuVar2); + if (iVar1 == 0) { + *param_2 = ppuVar2[1]; + param_2[1] = ppuVar2[2]; + break; + } + iVar3 = iVar3 + 1; + ppuVar2 = ppuVar2 + 3; + } while (iVar3 < 0x43); + return iVar3 < 0x43; +} + + + +/* @00476fc0 file=? name=FUN_00476fc0 */ + +int * __cdecl FUN_00476fc0(int param_1,int param_2,undefined4 param_3) + +{ + undefined4 uVar1; + int *piVar2; + + if (*(int *)(DAT_004efc94 + 0x4c) == 0) { + piVar2 = (int *)0x0; + } + else { + uVar1 = *(undefined4 *)(*(int *)(DAT_004efc94 + 0x4c) + 0x1c0c8); + piVar2 = (int *)FUN_00402298(0x30); + if (piVar2 == (int *)0x0) { + piVar2 = (int *)0x0; + } + else { + piVar2 = FUN_00474d80(piVar2,param_2,param_3,uVar1); + } + (**(code **)(*(int *)(param_1 + 0x1c0 + param_2 * 0x20) + 0x18)) + (param_2 * 0x20 + param_1 + 0x1c0,param_3,piVar2 + 8,piVar2); + } + return piVar2; +} + + + +/* @0047703c file=munga_l4/l4ctrl.cpp name=FUN_0047703c */ + +void __cdecl FUN_0047703c(int param_1,int param_2,int *param_3) + +{ + int iVar1; + int iVar2; + int iVar3; + int iVar4; + int iVar5; + int iVar6; + int *piVar7; + int local_c; + + iVar1 = *param_3; + piVar7 = param_3 + 1; + local_c = 0; + if (0 < iVar1) { + do { + iVar5 = FUN_0041f964(param_2,piVar7[3]); + iVar2 = piVar7[1]; + iVar3 = piVar7[4]; + if (piVar7[2] == 0) { + iVar6 = FUN_0041bf44(iVar5,piVar7[5]); + iVar4 = *piVar7; + if (iVar4 == 0) { + (**(code **)(*(int *)(param_1 + 0x24 + iVar2 * 0x20) + 0x18)) + (iVar2 * 0x20 + param_1 + 0x24,iVar3,iVar6,iVar5); + } + else if (iVar4 == 1) { + (**(code **)(*(int *)(param_1 + 0x104 + iVar2 * 0x24) + 0x18)) + (iVar2 * 0x24 + param_1 + 0x104,iVar3,iVar6,iVar5); + } + else if (iVar4 == 3) { + (**(code **)(*(int *)(param_1 + 0x1c0 + iVar2 * 0x20) + 0x18)) + (iVar2 * 0x20 + param_1 + 0x1c0,iVar3,iVar6,iVar5); + if ((&DAT_004fbc74)[iVar2] == '\x01') { + FUN_00476fc0(param_1,iVar2,iVar3); + } + } + else { + FUN_0040385c(s_Unknown_mapping_group__004fcbc2,s_d__tesla_bt_munga_l4_L4CTRL_CPP_004fcbda, + 0x7bf); + } + } + else if (piVar7[2] == 1) { + iVar4 = piVar7[5]; + iVar6 = *piVar7; + if (iVar6 == 0) { + (**(code **)(*(int *)(param_1 + 0x24 + iVar2 * 0x20) + 0x14)) + (iVar2 * 0x20 + param_1 + 0x24,iVar3,iVar5,iVar4,iVar5); + } + else if (iVar6 == 1) { + (**(code **)(*(int *)(param_1 + 0x104 + iVar2 * 0x24) + 0x14)) + (iVar2 * 0x24 + param_1 + 0x104,iVar3,iVar5,iVar4,iVar5); + } + else if (iVar6 == 3) { + (**(code **)(*(int *)(param_1 + 0x1c0 + iVar2 * 0x20) + 0x14)) + (iVar2 * 0x20 + param_1 + 0x1c0,iVar3,iVar5,iVar4,iVar5); + if ((&DAT_004fbc74)[iVar2] == '\x01') { + FUN_00476fc0(param_1,iVar2,iVar3); + } + } + else { + FUN_0040385c(s_Unknown_mapping_group__004fcbfa,s_d__tesla_bt_munga_l4_L4CTRL_CPP_004fcc12, + 0x7f4); + } + } + else { + FUN_0040385c(s_Unknown_mapping_type__004fcc32,s_d__tesla_bt_munga_l4_L4CTRL_CPP_004fcc49, + 0x7fa); + } + piVar7 = piVar7 + 6; + local_c = local_c + 1; + } while (local_c < iVar1); + } + return; +} + + + +/* @00477284 file=? name=FUN_00477284 */ + +undefined8 __cdecl +FUN_00477284(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) + +{ + undefined4 uVar1; + undefined8 uVar2; + + *(undefined4 *)(param_1 + 0xca0) = param_2; + FUN_00414b60(); + uVar1 = FUN_004dcd94(); + *(undefined4 *)(param_1 + 0xca4) = uVar1; + *(undefined4 *)(param_1 + 0xca8) = param_4; + uVar2 = FUN_00476568(param_1,0x3d,0x33); + return uVar2; +} + + + +/* @004772e8 file=? name=FUN_004772e8 */ + +undefined8 __cdecl FUN_004772e8(int param_1) + +{ + int *piVar1; + int iVar2; + undefined8 uVar3; + + iVar2 = 0; + *(undefined4 *)(param_1 + 0xca0) = 0; + piVar1 = (int *)(param_1 + 0xcac); + do { + if (*piVar1 != 0) { + FUN_0044c970(param_1 + 0xc74,*piVar1); + } + iVar2 = iVar2 + 1; + piVar1 = piVar1 + 1; + } while (iVar2 < 0x10); + uVar3 = FUN_00476568(param_1,0x3d,0); + return uVar3; +} + + + +/* @00477334 file=? name=FUN_00477334 */ + +void __cdecl FUN_00477334(int *param_1) + +{ + int *piVar1; + undefined4 local_10; + int local_c; + undefined4 local_8; + + if (param_1[0x328] != 0) { + piVar1 = (int *)FUN_00414b60(); + if (param_1[0x329] <= *piVar1) { + local_c = param_1[0x32a]; + local_10 = 0xc; + local_8 = 1; + (**(code **)(*param_1 + 0xc))(param_1,&local_10); + } + } + return; +} + + + +/* @00477388 file=? name=FUN_00477388 */ + +void __cdecl FUN_00477388(int param_1) + +{ + FUN_0044c704(param_1); + return; +} + + + +/* @00477398 file=? name=FUN_00477398 */ + +bool __cdecl FUN_00477398(int param_1) + +{ + int iVar1; + bool bVar2; + bool bVar3; + bool bVar4; + bool bVar5; + bool bVar6; + bool bVar7; + + bVar7 = false; + iVar1 = *(int *)(param_1 + 0xc90); + if ((iVar1 != 0) && + (bVar2 = *(float *)(iVar1 + 0x440) != *(float *)(param_1 + 0xd04), + bVar3 = *(float *)(iVar1 + 0x444) != *(float *)(param_1 + 0xd08), + bVar4 = *(float *)(iVar1 + 0x448) != *(float *)(param_1 + 0xd0c), + bVar5 = *(float *)(iVar1 + 0x44c) != *(float *)(param_1 + 0xcfc), + bVar6 = *(float *)(iVar1 + 0x450) != *(float *)(param_1 + 0xd00), + bVar7 = (((bVar2 || bVar3) || bVar4) || bVar5) || bVar6, + (((bVar2 || bVar3) || bVar4) || bVar5) || bVar6)) { + *(undefined4 *)(param_1 + 0xd04) = *(undefined4 *)(*(int *)(param_1 + 0xc90) + 0x440); + *(undefined4 *)(param_1 + 0xd08) = *(undefined4 *)(*(int *)(param_1 + 0xc90) + 0x444); + *(undefined4 *)(param_1 + 0xd0c) = *(undefined4 *)(*(int *)(param_1 + 0xc90) + 0x448); + *(undefined4 *)(param_1 + 0xcfc) = *(undefined4 *)(*(int *)(param_1 + 0xc90) + 0x44c); + *(undefined4 *)(param_1 + 0xd00) = *(undefined4 *)(*(int *)(param_1 + 0xc90) + 0x450); + } + return bVar7; +} + + + +/* @00477484 file=? name=FUN_00477484 */ + +int __thiscall FUN_00477484(void *this,int param_1,uint *param_2) + +{ + bool bVar1; + int iVar2; + uint uVar3; + uint *puVar4; + int *piVar5; + undefined3 extraout_var; + undefined8 uVar6; + undefined *puVar7; + uint *puVar8; + undefined *puVar9; + + if (*(int *)(param_1 + 0xcf4) == 0) { + iVar2 = FUN_0047a0e8(this,*(undefined4 *)(param_1 + 0xc90),*(undefined4 *)(param_1 + 0xc90), + param_2); + if (((iVar2 != 0) && (*(int *)(param_1 + 0xcf8) != 0)) && + (uVar3 = (**(code **)(**(int **)(param_1 + 0xcec) + 4))(*(int **)(param_1 + 0xcec)), + 0x1b < uVar3)) { + puVar4 = (uint *)(**(code **)**(undefined4 **)(param_1 + 0xcec)) + (*(undefined4 **)(param_1 + 0xcec)); + piVar5 = (int *)FUN_00414b60(); + *puVar4 = *piVar5 - *(int *)(param_1 + 0xcf0); + if (*param_2 == 3) { + bVar1 = FUN_00477398(param_1); + if (CONCAT31(extraout_var,bVar1) != 0) { + uVar3 = *puVar4; + FUN_004dbb24(&DAT_00524e20,s_AnalogEvent_at_004fcc69,(char *)0x0); + piVar5 = FUN_004db78c(&DAT_00524e20,uVar3); + FUN_004dbb24(piVar5,&DAT_004fcc78,(char *)0x0); + puVar9 = &LAB_004d9c84; + puVar7 = &LAB_004d9ca4; + puVar8 = puVar4; + FUN_004dbb24(&DAT_00524e20,s_Pointer__004fcc7a,(char *)0x0); + piVar5 = FUN_004dbaa8(&DAT_00524e20,puVar7); + uVar6 = FUN_004dbd4c(piVar5,(uint)puVar8); + piVar5 = FUN_004dbaa8((undefined4 *)uVar6,puVar9); + FUN_004dbb24(piVar5,&DAT_004fcc83,(char *)0x0); + puVar4[1] = 0; + puVar4[4] = *(uint *)(*(int *)(param_1 + 0xc90) + 0x440); + puVar4[5] = *(uint *)(*(int *)(param_1 + 0xc90) + 0x444); + puVar4[6] = *(uint *)(*(int *)(param_1 + 0xc90) + 0x448); + puVar4[2] = *(uint *)(*(int *)(param_1 + 0xc90) + 0x44c); + puVar4[3] = *(uint *)(*(int *)(param_1 + 0xc90) + 0x450); + (**(code **)(**(int **)(param_1 + 0xcec) + 0x14))(*(int **)(param_1 + 0xcec),0x1c); + } + } + else { + uVar3 = *puVar4; + FUN_004dbb24(&DAT_00524e20,s_DigitalEvent_at_004fcc85,(char *)0x0); + piVar5 = FUN_004db78c(&DAT_00524e20,uVar3); + FUN_004dbb24(piVar5,&DAT_004fcc95,(char *)0x0); + puVar9 = &LAB_004d9c84; + puVar7 = &LAB_004d9ca4; + puVar8 = puVar4; + FUN_004dbb24(&DAT_00524e20,s_Pointer__004fcc97,(char *)0x0); + piVar5 = FUN_004dbaa8(&DAT_00524e20,puVar7); + uVar6 = FUN_004dbd4c(piVar5,(uint)puVar8); + piVar5 = FUN_004dbaa8((undefined4 *)uVar6,puVar9); + FUN_004dbb24(piVar5,&DAT_004fcca0,(char *)0x0); + puVar4[1] = 1; + puVar4[2] = *param_2; + puVar4[3] = param_2[1]; + puVar4[4] = param_2[2]; + (**(code **)(**(int **)(param_1 + 0xcec) + 0x14))(*(int **)(param_1 + 0xcec),0x1c); + } + } + } + else { + if ((*(int *)(param_1 + 0xcf8) != 0) && + (uVar3 = (**(code **)(**(int **)(param_1 + 0xcec) + 4))(*(int **)(param_1 + 0xcec)), + 0x1b < uVar3)) { + puVar4 = (uint *)(**(code **)**(undefined4 **)(param_1 + 0xcec)) + (*(undefined4 **)(param_1 + 0xcec)); + piVar5 = (int *)FUN_00414b60(); + if ((int)*puVar4 <= *piVar5 - *(int *)(param_1 + 0xcf0)) { + uVar3 = *puVar4; + FUN_004dbb24(&DAT_00524e20,s_Event_timestamp__004fcca2,(char *)0x0); + piVar5 = FUN_004db78c(&DAT_00524e20,uVar3); + FUN_004dbb24(piVar5,&DAT_004fccb3,(char *)0x0); + if (puVar4[1] == 0) { + FUN_004dbb24(&DAT_00524e20,s_AnalogEvent_004fccb5,(char *)0x0); + *param_2 = 3; + iVar2 = *(int *)(param_1 + 0xc90); + *(uint *)(iVar2 + 0x440) = puVar4[4]; + *(uint *)(iVar2 + 0x444) = puVar4[5]; + *(uint *)(iVar2 + 0x448) = puVar4[6]; + *(uint *)(iVar2 + 0x44c) = puVar4[2]; + *(uint *)(iVar2 + 0x450) = puVar4[3]; + } + else if (puVar4[1] == 1) { + FUN_004dbb24(&DAT_00524e20,s_DigitalEvent_004fccc2,(char *)0x0); + *param_2 = puVar4[2]; + param_2[1] = puVar4[3]; + param_2[2] = puVar4[4]; + } + (**(code **)(**(int **)(param_1 + 0xcec) + 0x14))(*(int **)(param_1 + 0xcec),0x1c); + return 1; + } + } + iVar2 = 0; + } + return iVar2; +} + + + +/* @00477800 file=? name=FUN_00477800 */ + +void __cdecl FUN_00477800(int param_1,int *param_2,undefined4 *param_3) + +{ + int iVar1; + uint uVar2; + int local_c; + int local_8; + + iVar1 = *param_2; + uVar2 = *(uint *)(*(int *)(DAT_004efc94 + 0x50) + 4); + if (iVar1 == 0) { + local_8 = param_2[1] + 1; + (**(code **)(*(int *)(param_1 + 0x1c0 + param_2[1] * 0x20) + 0x10)) + (param_2[1] * 0x20 + param_1 + 0x1c0,&local_8,uVar2); + *(uint *)(param_1 + 0xb20 + param_2[1] * 4) = uVar2; + } + else if (iVar1 == 1) { + local_8 = -1 - param_2[1]; + (**(code **)(*(int *)(param_1 + 0x1c0 + param_2[1] * 0x20) + 0x10)) + (param_2[1] * 0x20 + param_1 + 0x1c0,&local_8, + *(undefined4 *)(param_1 + 0xb20 + param_2[1] * 4)); + } + else if (iVar1 == 2) { + local_c = param_2[2]; + if (local_c < 10) { + local_c = local_c + 0x30; + } + else { + local_c = local_c + 0x37; + } + FUN_004781f7(param_2[1] * 0x20 + param_1 + 0x160,&local_c,uVar2); + FUN_0044c9d4(param_1 + 0xc74,param_2[1],(char)local_c); + } + else if (iVar1 == 3) { + *(undefined4 *)(param_1 + 0xc94) = 0; + *param_3 = 1; + } + return; +} + + + +/* @0047790c file=? name=FUN_0047790c */ + +void __cdecl FUN_0047790c(int param_1,LPCSTR param_2) + +{ + undefined **local_20 [6]; + int local_8; + + FUN_004034b0(local_20,param_2,1); + local_8 = *(int *)(*(int *)(param_1 + 0xcec) + 8) - *(int *)(*(int *)(param_1 + 0xcec) + 4); + if (local_8 != 0) { + (**(code **)(**(int **)(param_1 + 0xcec) + 0xc))(*(int **)(param_1 + 0xcec),0); + (*(code *)local_20[0][8])(local_20,&local_8,4); + FUN_00403248((int *)local_20,*(int **)(param_1 + 0xcec)); + } + local_20[0] = &PTR_FUN_004e09e0; + FUN_00403564((int)local_20); + return; +} + + + +/* @00477990 file=? name=FUN_00477990 */ + +void __cdecl FUN_00477990(undefined4 param_1,LPCSTR param_2) + +{ + char *extraout_EAX; + undefined4 *puVar1; + int iVar2; + int *piVar3; + undefined **local_20 [6]; + char *local_8; + + FUN_004034b0(local_20,param_2,0); + local_8 = (char *)0x0; + (*(code *)local_20[0][7])(local_20,&local_8,4); + piVar3 = FUN_004de998((int *)0x0,0x1c,12000,1,FUN_00477a8e); + puVar1 = (undefined4 *)FUN_00402298(0x10); + if (puVar1 == (undefined4 *)0x0) { + iVar2 = 0; + } + else { + iVar2 = FUN_004030dc(puVar1,extraout_EAX,local_8,0); + } + piVar3[0x33b] = iVar2; + FUN_004035f0((int)local_20,extraout_EAX,local_8); + local_20[0] = &PTR_FUN_004e09e0; + FUN_00403564((int)local_20); + return; +} + + + +/* @00477a8e file=? name=FUN_00477a8e */ + +undefined4 __cdecl FUN_00477a8e(undefined4 param_1) + +{ + return param_1; +} + + + +/* @00477a96 file=? name=FUN_00477a96 */ + +undefined4 FUN_00477a96(void) + +{ + return 1; +} + + + +/* @00477aa0 file=? name=FUN_00477aa0 */ + +undefined4 * __cdecl FUN_00477aa0(undefined4 *param_1) + +{ + FUN_0044c3f8(param_1); + *param_1 = &PTR_FUN_004fce7c; + return param_1; +} + + + +/* @00477ab9 file=? name=FUN_00477ab9 */ + +void __cdecl FUN_00477ab9(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004fce7c; + FUN_0044c424(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00477ae5 file=? name=FUN_00477ae5 */ + +void __cdecl FUN_00477ae5(int param_1,float *param_2,uint param_3) + +{ + if (*(float *)(param_1 + 0x1c) != *param_2) { + FUN_00477b08(param_1,param_2,param_3); + } + return; +} + + + +/* @00477b08 file=? name=FUN_00477b08 */ + +void __cdecl FUN_00477b08(int param_1,undefined4 *param_2,uint param_3) + +{ + *(undefined4 *)(param_1 + 0x1c) = *param_2; + FUN_0044c4d0(param_1,param_2,param_3); + return; +} + + + +/* @00477b26 file=? name=FUN_00477b26 */ + +undefined4 * __cdecl +FUN_00477b26(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5 + ) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00402298(0x24); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_00478877(puVar1,param_2,param_3,param_4,param_5); + } + (**(code **)(*(int *)(param_1 + 0xc) + 4))(param_1 + 0xc,puVar1); + return puVar1; +} + + + +/* @00477b71 file=? name=FUN_00477b71 */ + +undefined4 * __cdecl +FUN_00477b71(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00402298(0x20); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_00478970(puVar1,param_2,param_3,param_4); + } + (**(code **)(*(int *)(param_1 + 0xc) + 4))(param_1 + 0xc,puVar1); + return puVar1; +} + + + +/* @00477bb8 file=? name=FUN_00477bb8 */ + +undefined4 * __cdecl +FUN_00477bb8(int param_1,uint param_2,int param_3,int param_4,undefined4 param_5) + +{ + undefined4 *puVar1; + int local_10 [3]; + + FUN_0044cb72(local_10,param_1 + 0xc); + do { + puVar1 = (undefined4 *)(**(code **)(local_10[0] + 0x28))(local_10); + if (puVar1 == (undefined4 *)0x0) goto LAB_00477c2b; + } while ((((puVar1[1] != 0x39) || (puVar1[7] != param_3)) || (puVar1[8] != param_4)) || + ((puVar1[3] & param_2) == 0)); + puVar1[3] = puVar1[3] & ~param_2; + if ((puVar1[3] == 0) && (puVar1 != (undefined4 *)0x0)) { + (**(code **)*puVar1)(puVar1,3); + } +LAB_00477c2b: + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)FUN_00402298(0x24); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_00478877(puVar1,param_2,param_3,param_4,param_5); + } + (**(code **)(*(int *)(param_1 + 0xc) + 4))(param_1 + 0xc,puVar1); + FUN_0044cbb0(local_10,2); + } + else { + puVar1 = (undefined4 *)0x0; + FUN_0044cbb0(local_10,2); + } + return puVar1; +} + + + +/* @00477c9c file=? name=FUN_00477c9c */ + +undefined4 * __cdecl FUN_00477c9c(int param_1,uint param_2,int param_3,undefined4 param_4) + +{ + undefined4 *puVar1; + int local_10 [3]; + + FUN_0044cb72(local_10,param_1 + 0xc); + do { + puVar1 = (undefined4 *)(**(code **)(local_10[0] + 0x28))(local_10); + if (puVar1 == (undefined4 *)0x0) goto LAB_00477d05; + } while (((puVar1[1] != 0x38) || (puVar1[7] != param_3)) || ((puVar1[3] & param_2) == 0)); + puVar1[3] = puVar1[3] & ~param_2; + if ((puVar1[3] == 0) && (puVar1 != (undefined4 *)0x0)) { + (**(code **)*puVar1)(puVar1,3); + } +LAB_00477d05: + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)FUN_00402298(0x20); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_00478970(puVar1,param_2,param_3,param_4); + } + (**(code **)(*(int *)(param_1 + 0xc) + 4))(param_1 + 0xc,puVar1); + FUN_0044cbb0(local_10,2); + } + else { + puVar1 = (undefined4 *)0x0; + FUN_0044cbb0(local_10,2); + } + return puVar1; +} + + + +/* @00477d72 file=? name=FUN_00477d72 */ + +uint __cdecl FUN_00477d72(int param_1,int param_2,int param_3,int param_4,uint param_5) + +{ + int iVar1; + uint uVar2; + int local_10 [3]; + + FUN_0044cb72(local_10,param_1 + 0xc); + uVar2 = 0; + while( true ) { + iVar1 = (**(code **)(local_10[0] + 0x28))(local_10); + if (iVar1 == 0) break; + if ((*(uint *)(iVar1 + 0xc) & param_5) != 0) { + if (*(int *)(iVar1 + 4) == 0x38) { + if (param_2 == *(int *)(iVar1 + 0x1c)) { + uVar2 = uVar2 | 2; + } + else { + uVar2 = uVar2 | 1; + } + } + else if ((*(int *)(iVar1 + 0x1c) == param_3) && (*(int *)(iVar1 + 0x20) == param_4)) { + uVar2 = uVar2 | 2; + } + else { + uVar2 = uVar2 | 1; + } + } + } + FUN_0044cbb0(local_10,2); + return uVar2; +} + + + +/* @00477e02 file=? name=FUN_00477e02 */ + +undefined4 FUN_00477e02(void) + +{ + return 1; +} + + + +/* @00477e0c file=? name=FUN_00477e0c */ + +undefined4 * __cdecl FUN_00477e0c(undefined4 *param_1) + +{ + FUN_0044c3f8(param_1); + *param_1 = &PTR_FUN_004fce54; + return param_1; +} + + + +/* @00477e25 file=? name=FUN_00477e25 */ + +void __cdecl FUN_00477e25(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004fce54; + FUN_0044c424(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00477e51 file=? name=FUN_00477e51 */ + +void __cdecl FUN_00477e51(int param_1,float *param_2,uint param_3) + +{ + int iVar1; + + iVar1 = FUN_0045961f((float *)(param_1 + 0x1c),param_2,0.0001); + if (iVar1 == 0) { + FUN_00477e88(param_1,param_2,param_3); + } + return; +} + + + +/* @00477e88 file=? name=FUN_00477e88 */ + +void __cdecl FUN_00477e88(int param_1,undefined4 *param_2,uint param_3) + +{ + *(undefined4 *)(param_1 + 0x1c) = *param_2; + *(undefined4 *)(param_1 + 0x20) = param_2[1]; + FUN_0044c4d0(param_1,param_2,param_3); + return; +} + + + +/* @00477eac file=? name=FUN_00477eac */ + +undefined4 * __cdecl +FUN_00477eac(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5 + ) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00402298(0x24); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_00478a1f(puVar1,param_2,param_3,param_4,param_5); + } + (**(code **)(*(int *)(param_1 + 0xc) + 4))(param_1 + 0xc,puVar1); + return puVar1; +} + + + +/* @00477ef7 file=? name=FUN_00477ef7 */ + +undefined4 * __cdecl +FUN_00477ef7(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00402298(0x20); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_00478b1e(puVar1,param_2,param_3,param_4); + } + (**(code **)(*(int *)(param_1 + 0xc) + 4))(param_1 + 0xc,puVar1); + return puVar1; +} + + + +/* @00477f3e file=? name=FUN_00477f3e */ + +undefined4 * __cdecl +FUN_00477f3e(int param_1,uint param_2,int param_3,int param_4,undefined4 param_5) + +{ + undefined4 *puVar1; + int local_10 [3]; + + FUN_0044cb72(local_10,param_1 + 0xc); + do { + puVar1 = (undefined4 *)(**(code **)(local_10[0] + 0x28))(local_10); + if (puVar1 == (undefined4 *)0x0) goto LAB_00477fb1; + } while ((((puVar1[1] != 0x39) || (puVar1[7] != param_3)) || (puVar1[8] != param_4)) || + ((puVar1[3] & param_2) == 0)); + puVar1[3] = puVar1[3] & ~param_2; + if ((puVar1[3] == 0) && (puVar1 != (undefined4 *)0x0)) { + (**(code **)*puVar1)(puVar1,3); + } +LAB_00477fb1: + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)FUN_00402298(0x24); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_00478a1f(puVar1,param_2,param_3,param_4,param_5); + } + (**(code **)(*(int *)(param_1 + 0xc) + 4))(param_1 + 0xc,puVar1); + FUN_0044cbb0(local_10,2); + } + else { + puVar1 = (undefined4 *)0x0; + FUN_0044cbb0(local_10,2); + } + return puVar1; +} + + + +/* @00478022 file=? name=FUN_00478022 */ + +undefined4 * __cdecl FUN_00478022(int param_1,uint param_2,int param_3,undefined4 param_4) + +{ + undefined4 *puVar1; + int local_10 [3]; + + FUN_0044cb72(local_10,param_1 + 0xc); + do { + puVar1 = (undefined4 *)(**(code **)(local_10[0] + 0x28))(local_10); + if (puVar1 == (undefined4 *)0x0) goto LAB_0047808b; + } while (((puVar1[1] != 0x38) || (puVar1[7] != param_3)) || ((puVar1[3] & param_2) == 0)); + puVar1[3] = puVar1[3] & ~param_2; + if ((puVar1[3] == 0) && (puVar1 != (undefined4 *)0x0)) { + (**(code **)*puVar1)(puVar1,3); + } +LAB_0047808b: + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)FUN_00402298(0x20); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_00478b1e(puVar1,param_2,param_3,param_4); + } + (**(code **)(*(int *)(param_1 + 0xc) + 4))(param_1 + 0xc,puVar1); + FUN_0044cbb0(local_10,2); + } + else { + puVar1 = (undefined4 *)0x0; + FUN_0044cbb0(local_10,2); + } + return puVar1; +} + + + +/* @004780f8 file=? name=FUN_004780f8 */ + +uint __cdecl FUN_004780f8(int param_1,int param_2,int param_3,int param_4,uint param_5) + +{ + int iVar1; + uint uVar2; + int local_10 [3]; + + FUN_0044cb72(local_10,param_1 + 0xc); + uVar2 = 0; + while( true ) { + iVar1 = (**(code **)(local_10[0] + 0x28))(local_10); + if (iVar1 == 0) break; + if ((*(uint *)(iVar1 + 0xc) & param_5) != 0) { + if (*(int *)(iVar1 + 4) == 0x38) { + if (param_2 == *(int *)(iVar1 + 0x1c)) { + uVar2 = uVar2 | 2; + } + else { + uVar2 = uVar2 | 1; + } + } + else if ((*(int *)(iVar1 + 0x1c) == param_3) && (*(int *)(iVar1 + 0x20) == param_4)) { + uVar2 = uVar2 | 2; + } + else { + uVar2 = uVar2 | 1; + } + } + } + FUN_0044cbb0(local_10,2); + return uVar2; +} + + + +/* @00478188 file=? name=FUN_00478188 */ + +undefined4 FUN_00478188(void) + +{ + return 1; +} + + + +/* @00478192 file=? name=FUN_00478192 */ + +undefined4 * __cdecl FUN_00478192(undefined4 *param_1) + +{ + FUN_0044c3f8(param_1); + *param_1 = &PTR_FUN_004fce2c; + return param_1; +} + + + +/* @004781ab file=? name=FUN_004781ab */ + +void __cdecl FUN_004781ab(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004fce2c; + FUN_0044c424(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004781d7 file=? name=FUN_004781d7 */ + +void __cdecl FUN_004781d7(int param_1,int *param_2,uint param_3) + +{ + if (*(int *)(param_1 + 0x1c) != *param_2) { + FUN_004781f7(param_1,param_2,param_3); + } + return; +} + + + +/* @004781f7 file=? name=FUN_004781f7 */ + +void __cdecl FUN_004781f7(int param_1,undefined4 *param_2,uint param_3) + +{ + *(undefined4 *)(param_1 + 0x1c) = *param_2; + FUN_0044c4d0(param_1,param_2,param_3); + return; +} + + + +/* @00478215 file=? name=FUN_00478215 */ + +undefined4 * __cdecl +FUN_00478215(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5 + ) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00402298(0x24); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_00478bd3(puVar1,param_2,param_3,param_4,param_5); + } + (**(code **)(*(int *)(param_1 + 0xc) + 4))(param_1 + 0xc,puVar1); + return puVar1; +} + + + +/* @00478260 file=? name=FUN_00478260 */ + +undefined4 * __cdecl +FUN_00478260(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00402298(0x20); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_00478ccc(puVar1,param_2,param_3,param_4); + } + (**(code **)(*(int *)(param_1 + 0xc) + 4))(param_1 + 0xc,puVar1); + return puVar1; +} + + + +/* @004782a7 file=? name=FUN_004782a7 */ + +undefined4 * __cdecl +FUN_004782a7(int param_1,uint param_2,int param_3,int param_4,undefined4 param_5) + +{ + undefined4 *puVar1; + int local_10 [3]; + + FUN_0044cb72(local_10,param_1 + 0xc); + do { + puVar1 = (undefined4 *)(**(code **)(local_10[0] + 0x28))(local_10); + if (puVar1 == (undefined4 *)0x0) goto LAB_0047831a; + } while ((((puVar1[1] != 0x39) || (puVar1[7] != param_3)) || (puVar1[8] != param_4)) || + ((puVar1[3] & param_2) == 0)); + puVar1[3] = puVar1[3] & ~param_2; + if ((puVar1[3] == 0) && (puVar1 != (undefined4 *)0x0)) { + (**(code **)*puVar1)(puVar1,3); + } +LAB_0047831a: + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)FUN_00402298(0x24); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_00478bd3(puVar1,param_2,param_3,param_4,param_5); + } + (**(code **)(*(int *)(param_1 + 0xc) + 4))(param_1 + 0xc,puVar1); + FUN_0044cbb0(local_10,2); + } + else { + puVar1 = (undefined4 *)0x0; + FUN_0044cbb0(local_10,2); + } + return puVar1; +} + + + +/* @0047838b file=? name=FUN_0047838b */ + +undefined4 * __cdecl FUN_0047838b(int param_1,uint param_2,int param_3,undefined4 param_4) + +{ + undefined4 *puVar1; + int local_10 [3]; + + FUN_0044cb72(local_10,param_1 + 0xc); + do { + puVar1 = (undefined4 *)(**(code **)(local_10[0] + 0x28))(local_10); + if (puVar1 == (undefined4 *)0x0) goto LAB_004783f4; + } while (((puVar1[1] != 0x38) || (puVar1[7] != param_3)) || ((puVar1[3] & param_2) == 0)); + puVar1[3] = puVar1[3] & ~param_2; + if ((puVar1[3] == 0) && (puVar1 != (undefined4 *)0x0)) { + (**(code **)*puVar1)(puVar1,3); + } +LAB_004783f4: + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)FUN_00402298(0x20); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_00478ccc(puVar1,param_2,param_3,param_4); + } + (**(code **)(*(int *)(param_1 + 0xc) + 4))(param_1 + 0xc,puVar1); + FUN_0044cbb0(local_10,2); + } + else { + puVar1 = (undefined4 *)0x0; + FUN_0044cbb0(local_10,2); + } + return puVar1; +} + + + +/* @00478461 file=? name=FUN_00478461 */ + +uint __cdecl FUN_00478461(int param_1,int param_2,int param_3,int param_4,uint param_5) + +{ + int iVar1; + uint uVar2; + int local_10 [3]; + + FUN_0044cb72(local_10,param_1 + 0xc); + uVar2 = 0; + while( true ) { + iVar1 = (**(code **)(local_10[0] + 0x28))(local_10); + if (iVar1 == 0) break; + if ((*(uint *)(iVar1 + 0xc) & param_5) != 0) { + if (*(int *)(iVar1 + 4) == 0x38) { + if (param_2 == *(int *)(iVar1 + 0x1c)) { + uVar2 = uVar2 | 2; + } + else { + uVar2 = uVar2 | 1; + } + } + else if ((*(int *)(iVar1 + 0x1c) == param_3) && (*(int *)(iVar1 + 0x20) == param_4)) { + uVar2 = uVar2 | 2; + } + else { + uVar2 = uVar2 | 1; + } + } + } + FUN_0044cbb0(local_10,2); + return uVar2; +} + + + +/* @004784f1 file=? name=FUN_004784f1 */ + +undefined4 FUN_004784f1(void) + +{ + return 1; +} + + + +/* @004784fb file=? name=FUN_004784fb */ + +undefined4 * __cdecl FUN_004784fb(undefined4 *param_1) + +{ + FUN_0044c3f8(param_1); + *param_1 = &PTR_FUN_004fce04; + return param_1; +} + + + +/* @00478514 file=? name=FUN_00478514 */ + +void __cdecl FUN_00478514(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004fce04; + FUN_0044c424(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00478540 file=? name=FUN_00478540 */ + +void __cdecl FUN_00478540(int param_1,int *param_2,uint param_3) + +{ + int iVar1; + + iVar1 = FUN_00478f2f((int *)(param_1 + 0x1c),param_2,0.0001); + if (iVar1 == 0) { + FUN_00478577(param_1,param_2,param_3); + } + return; +} + + + +/* @00478577 file=? name=FUN_00478577 */ + +void __cdecl FUN_00478577(int param_1,undefined4 *param_2,uint param_3) + +{ + *(undefined4 *)(param_1 + 0x1c) = *param_2; + *(undefined4 *)(param_1 + 0x20) = param_2[1]; + FUN_0044c4d0(param_1,param_2,param_3); + return; +} + + + +/* @0047859b file=? name=FUN_0047859b */ + +undefined4 * __cdecl +FUN_0047859b(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5 + ) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00402298(0x24); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_00478d7b(puVar1,param_2,param_3,param_4,param_5); + } + (**(code **)(*(int *)(param_1 + 0xc) + 4))(param_1 + 0xc,puVar1); + return puVar1; +} + + + +/* @004785e6 file=? name=FUN_004785e6 */ + +undefined4 * __cdecl +FUN_004785e6(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00402298(0x20); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_00478e7a(puVar1,param_2,param_3,param_4); + } + (**(code **)(*(int *)(param_1 + 0xc) + 4))(param_1 + 0xc,puVar1); + return puVar1; +} + + + +/* @0047862d file=? name=FUN_0047862d */ + +undefined4 * __cdecl +FUN_0047862d(int param_1,uint param_2,int param_3,int param_4,undefined4 param_5) + +{ + undefined4 *puVar1; + int local_10 [3]; + + FUN_0044cb72(local_10,param_1 + 0xc); + do { + puVar1 = (undefined4 *)(**(code **)(local_10[0] + 0x28))(local_10); + if (puVar1 == (undefined4 *)0x0) goto LAB_004786a0; + } while ((((puVar1[1] != 0x39) || (puVar1[7] != param_3)) || (puVar1[8] != param_4)) || + ((puVar1[3] & param_2) == 0)); + puVar1[3] = puVar1[3] & ~param_2; + if ((puVar1[3] == 0) && (puVar1 != (undefined4 *)0x0)) { + (**(code **)*puVar1)(puVar1,3); + } +LAB_004786a0: + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)FUN_00402298(0x24); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_00478d7b(puVar1,param_2,param_3,param_4,param_5); + } + (**(code **)(*(int *)(param_1 + 0xc) + 4))(param_1 + 0xc,puVar1); + FUN_0044cbb0(local_10,2); + } + else { + puVar1 = (undefined4 *)0x0; + FUN_0044cbb0(local_10,2); + } + return puVar1; +} + + + +/* @00478711 file=? name=FUN_00478711 */ + +undefined4 * __cdecl FUN_00478711(int param_1,uint param_2,int param_3,undefined4 param_4) + +{ + undefined4 *puVar1; + int local_10 [3]; + + FUN_0044cb72(local_10,param_1 + 0xc); + do { + puVar1 = (undefined4 *)(**(code **)(local_10[0] + 0x28))(local_10); + if (puVar1 == (undefined4 *)0x0) goto LAB_0047877a; + } while (((puVar1[1] != 0x38) || (puVar1[7] != param_3)) || ((puVar1[3] & param_2) == 0)); + puVar1[3] = puVar1[3] & ~param_2; + if ((puVar1[3] == 0) && (puVar1 != (undefined4 *)0x0)) { + (**(code **)*puVar1)(puVar1,3); + } +LAB_0047877a: + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)FUN_00402298(0x20); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_00478e7a(puVar1,param_2,param_3,param_4); + } + (**(code **)(*(int *)(param_1 + 0xc) + 4))(param_1 + 0xc,puVar1); + FUN_0044cbb0(local_10,2); + } + else { + puVar1 = (undefined4 *)0x0; + FUN_0044cbb0(local_10,2); + } + return puVar1; +} + + + +/* @004787e7 file=? name=FUN_004787e7 */ + +uint __cdecl FUN_004787e7(int param_1,int param_2,int param_3,int param_4,uint param_5) + +{ + int iVar1; + uint uVar2; + int local_10 [3]; + + FUN_0044cb72(local_10,param_1 + 0xc); + uVar2 = 0; + while( true ) { + iVar1 = (**(code **)(local_10[0] + 0x28))(local_10); + if (iVar1 == 0) break; + if ((*(uint *)(iVar1 + 0xc) & param_5) != 0) { + if (*(int *)(iVar1 + 4) == 0x38) { + if (param_2 == *(int *)(iVar1 + 0x1c)) { + uVar2 = uVar2 | 2; + } + else { + uVar2 = uVar2 | 1; + } + } + else if ((*(int *)(iVar1 + 0x1c) == param_3) && (*(int *)(iVar1 + 0x20) == param_4)) { + uVar2 = uVar2 | 2; + } + else { + uVar2 = uVar2 | 1; + } + } + } + FUN_0044cbb0(local_10,2); + return uVar2; +} + + + +/* @00478877 file=? name=FUN_00478877 */ + +undefined4 * __cdecl +FUN_00478877(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4, + undefined4 param_5) + +{ + FUN_0044c344(param_1,0x39,param_2,param_5); + *param_1 = &PTR_FUN_004fcdf4; + param_1[7] = param_3; + param_1[8] = param_4; + return param_1; +} + + + +/* @004788a8 file=? name=FUN_004788a8 */ + +undefined4 * __cdecl FUN_004788a8(undefined4 *param_1,int param_2) + +{ + undefined4 uVar1; + + uVar1 = FUN_00417ab4(param_2 + 0x10); + FUN_0044c344(param_1,0x39,*(undefined4 *)(param_2 + 0xc),uVar1); + *param_1 = &PTR_FUN_004fcdf4; + param_1[7] = *(undefined4 *)(param_2 + 0x1c); + param_1[8] = *(undefined4 *)(param_2 + 0x20); + return param_1; +} + + + +/* @004788e5 file=? name=FUN_004788e5 */ + +void __cdecl FUN_004788e5(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004fcdf4; + FUN_0044c388(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00478911 file=? name=FUN_00478911 */ + +void __cdecl FUN_00478911(int param_1,undefined4 *param_2) + +{ + uint local_14; + undefined4 local_10; + undefined4 local_c; + undefined4 local_8; + + local_10 = *(undefined4 *)(param_1 + 0x20); + local_14 = 0x10; + local_c = 1; + local_8 = *param_2; + FUN_0041acbc(*(int *)(DAT_004efc94 + 0x60),3,*(undefined4 *)(param_1 + 0x1c),&local_14, + DAT_004e17f4); + return; +} + + + +/* @00478961 file=? name=FUN_00478961 */ + +void FUN_00478961(void) + +{ + FUN_00415f1c(); + return; +} + + + +/* @00478970 file=? name=FUN_00478970 */ + +undefined4 * __cdecl +FUN_00478970(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) + +{ + FUN_0044c344(param_1,0x38,param_2,param_4); + *param_1 = &PTR_FUN_004fcde4; + param_1[7] = param_3; + return param_1; +} + + + +/* @0047899b file=? name=FUN_0047899b */ + +undefined4 * __cdecl FUN_0047899b(undefined4 *param_1,int param_2) + +{ + undefined4 uVar1; + + uVar1 = FUN_00417ab4(param_2 + 0x10); + FUN_0044c344(param_1,0x38,*(undefined4 *)(param_2 + 0xc),uVar1); + *param_1 = &PTR_FUN_004fcde4; + param_1[7] = *(undefined4 *)(param_2 + 0x1c); + return param_1; +} + + + +/* @004789d2 file=? name=FUN_004789d2 */ + +void __cdecl FUN_004789d2(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004fcde4; + FUN_0044c388(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004789fe file=? name=FUN_004789fe */ + +void __cdecl FUN_004789fe(int param_1,undefined4 *param_2) + +{ + **(undefined4 **)(param_1 + 0x1c) = *param_2; + return; +} + + + +/* @00478a10 file=? name=FUN_00478a10 */ + +void FUN_00478a10(void) + +{ + FUN_00415f1c(); + return; +} + + + +/* @00478a1f file=? name=FUN_00478a1f */ + +undefined4 * __cdecl +FUN_00478a1f(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4, + undefined4 param_5) + +{ + FUN_0044c344(param_1,0x39,param_2,param_5); + *param_1 = &PTR_FUN_004fcdd4; + param_1[7] = param_3; + param_1[8] = param_4; + return param_1; +} + + + +/* @00478a50 file=? name=FUN_00478a50 */ + +undefined4 * __cdecl FUN_00478a50(undefined4 *param_1,int param_2) + +{ + undefined4 uVar1; + + uVar1 = FUN_00417ab4(param_2 + 0x10); + FUN_0044c344(param_1,0x39,*(undefined4 *)(param_2 + 0xc),uVar1); + *param_1 = &PTR_FUN_004fcdd4; + param_1[7] = *(undefined4 *)(param_2 + 0x1c); + param_1[8] = *(undefined4 *)(param_2 + 0x20); + return param_1; +} + + + +/* @00478a8d file=? name=FUN_00478a8d */ + +void __cdecl FUN_00478a8d(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004fcdd4; + FUN_0044c388(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00478ab9 file=? name=FUN_00478ab9 */ + +void __cdecl FUN_00478ab9(int param_1,undefined4 *param_2) + +{ + uint local_18; + undefined4 local_14; + undefined4 local_10; + undefined4 local_c; + undefined4 local_8; + + local_14 = *(undefined4 *)(param_1 + 0x20); + local_18 = 0x14; + local_10 = 1; + local_c = *param_2; + local_8 = param_2[1]; + FUN_0041acbc(*(int *)(DAT_004efc94 + 0x60),3,*(undefined4 *)(param_1 + 0x1c),&local_18, + DAT_004e17f4); + return; +} + + + +/* @00478b0f file=? name=FUN_00478b0f */ + +void FUN_00478b0f(void) + +{ + FUN_00415f1c(); + return; +} + + + +/* @00478b1e file=? name=FUN_00478b1e */ + +undefined4 * __cdecl +FUN_00478b1e(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) + +{ + FUN_0044c344(param_1,0x38,param_2,param_4); + *param_1 = &PTR_FUN_004fcdc4; + param_1[7] = param_3; + return param_1; +} + + + +/* @00478b49 file=? name=FUN_00478b49 */ + +undefined4 * __cdecl FUN_00478b49(undefined4 *param_1,int param_2) + +{ + undefined4 uVar1; + + uVar1 = FUN_00417ab4(param_2 + 0x10); + FUN_0044c344(param_1,0x38,*(undefined4 *)(param_2 + 0xc),uVar1); + *param_1 = &PTR_FUN_004fcdc4; + param_1[7] = *(undefined4 *)(param_2 + 0x1c); + return param_1; +} + + + +/* @00478b80 file=? name=FUN_00478b80 */ + +void __cdecl FUN_00478b80(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004fcdc4; + FUN_0044c388(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00478bac file=? name=FUN_00478bac */ + +void __cdecl FUN_00478bac(int param_1,undefined4 *param_2) + +{ + undefined4 *puVar1; + + puVar1 = *(undefined4 **)(param_1 + 0x1c); + *puVar1 = *param_2; + puVar1[1] = param_2[1]; + return; +} + + + +/* @00478bc4 file=? name=FUN_00478bc4 */ + +void FUN_00478bc4(void) + +{ + FUN_00415f1c(); + return; +} + + + +/* @00478bd3 file=? name=FUN_00478bd3 */ + +undefined4 * __cdecl +FUN_00478bd3(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4, + undefined4 param_5) + +{ + FUN_0044c344(param_1,0x39,param_2,param_5); + *param_1 = &PTR_FUN_004fcdb4; + param_1[7] = param_3; + param_1[8] = param_4; + return param_1; +} + + + +/* @00478c04 file=? name=FUN_00478c04 */ + +undefined4 * __cdecl FUN_00478c04(undefined4 *param_1,int param_2) + +{ + undefined4 uVar1; + + uVar1 = FUN_00417ab4(param_2 + 0x10); + FUN_0044c344(param_1,0x39,*(undefined4 *)(param_2 + 0xc),uVar1); + *param_1 = &PTR_FUN_004fcdb4; + param_1[7] = *(undefined4 *)(param_2 + 0x1c); + param_1[8] = *(undefined4 *)(param_2 + 0x20); + return param_1; +} + + + +/* @00478c41 file=? name=FUN_00478c41 */ + +void __cdecl FUN_00478c41(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004fcdb4; + FUN_0044c388(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00478c6d file=? name=FUN_00478c6d */ + +void __cdecl FUN_00478c6d(int param_1,undefined4 *param_2) + +{ + uint local_14; + undefined4 local_10; + undefined4 local_c; + undefined4 local_8; + + local_10 = *(undefined4 *)(param_1 + 0x20); + local_14 = 0x10; + local_c = 1; + local_8 = *param_2; + FUN_0041acbc(*(int *)(DAT_004efc94 + 0x60),3,*(undefined4 *)(param_1 + 0x1c),&local_14, + DAT_004e17f4); + return; +} + + + +/* @00478cbd file=? name=FUN_00478cbd */ + +void FUN_00478cbd(void) + +{ + FUN_00415f1c(); + return; +} + + + +/* @00478ccc file=? name=FUN_00478ccc */ + +undefined4 * __cdecl +FUN_00478ccc(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) + +{ + FUN_0044c344(param_1,0x38,param_2,param_4); + *param_1 = &PTR_FUN_004fcda4; + param_1[7] = param_3; + return param_1; +} + + + +/* @00478cf7 file=? name=FUN_00478cf7 */ + +undefined4 * __cdecl FUN_00478cf7(undefined4 *param_1,int param_2) + +{ + undefined4 uVar1; + + uVar1 = FUN_00417ab4(param_2 + 0x10); + FUN_0044c344(param_1,0x38,*(undefined4 *)(param_2 + 0xc),uVar1); + *param_1 = &PTR_FUN_004fcda4; + param_1[7] = *(undefined4 *)(param_2 + 0x1c); + return param_1; +} + + + +/* @00478d2e file=? name=FUN_00478d2e */ + +void __cdecl FUN_00478d2e(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004fcda4; + FUN_0044c388(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00478d5a file=? name=FUN_00478d5a */ + +void __cdecl FUN_00478d5a(int param_1,undefined4 *param_2) + +{ + **(undefined4 **)(param_1 + 0x1c) = *param_2; + return; +} + + + +/* @00478d6c file=? name=FUN_00478d6c */ + +void FUN_00478d6c(void) + +{ + FUN_00415f1c(); + return; +} + + + +/* @00478d7b file=? name=FUN_00478d7b */ + +undefined4 * __cdecl +FUN_00478d7b(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4, + undefined4 param_5) + +{ + FUN_0044c344(param_1,0x39,param_2,param_5); + *param_1 = &PTR_FUN_004fcd94; + param_1[7] = param_3; + param_1[8] = param_4; + return param_1; +} + + + +/* @00478dac file=? name=FUN_00478dac */ + +undefined4 * __cdecl FUN_00478dac(undefined4 *param_1,int param_2) + +{ + undefined4 uVar1; + + uVar1 = FUN_00417ab4(param_2 + 0x10); + FUN_0044c344(param_1,0x39,*(undefined4 *)(param_2 + 0xc),uVar1); + *param_1 = &PTR_FUN_004fcd94; + param_1[7] = *(undefined4 *)(param_2 + 0x1c); + param_1[8] = *(undefined4 *)(param_2 + 0x20); + return param_1; +} + + + +/* @00478de9 file=? name=FUN_00478de9 */ + +void __cdecl FUN_00478de9(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004fcd94; + FUN_0044c388(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00478e15 file=? name=FUN_00478e15 */ + +void __cdecl FUN_00478e15(int param_1,undefined4 *param_2) + +{ + uint local_18; + undefined4 local_14; + undefined4 local_10; + undefined4 local_c; + undefined4 local_8; + + local_14 = *(undefined4 *)(param_1 + 0x20); + local_18 = 0x14; + local_10 = 1; + local_c = *param_2; + local_8 = param_2[1]; + FUN_0041acbc(*(int *)(DAT_004efc94 + 0x60),3,*(undefined4 *)(param_1 + 0x1c),&local_18, + DAT_004e17f4); + return; +} + + + +/* @00478e6b file=? name=FUN_00478e6b */ + +void FUN_00478e6b(void) + +{ + FUN_00415f1c(); + return; +} + + + +/* @00478e7a file=? name=FUN_00478e7a */ + +undefined4 * __cdecl +FUN_00478e7a(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) + +{ + FUN_0044c344(param_1,0x38,param_2,param_4); + *param_1 = &PTR_FUN_004fcd84; + param_1[7] = param_3; + return param_1; +} + + + +/* @00478ea5 file=? name=FUN_00478ea5 */ + +undefined4 * __cdecl FUN_00478ea5(undefined4 *param_1,int param_2) + +{ + undefined4 uVar1; + + uVar1 = FUN_00417ab4(param_2 + 0x10); + FUN_0044c344(param_1,0x38,*(undefined4 *)(param_2 + 0xc),uVar1); + *param_1 = &PTR_FUN_004fcd84; + param_1[7] = *(undefined4 *)(param_2 + 0x1c); + return param_1; +} + + + +/* @00478edc file=? name=FUN_00478edc */ + +void __cdecl FUN_00478edc(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004fcd84; + FUN_0044c388(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @00478f08 file=? name=FUN_00478f08 */ + +void __cdecl FUN_00478f08(int param_1,undefined4 *param_2) + +{ + undefined4 *puVar1; + + puVar1 = *(undefined4 **)(param_1 + 0x1c); + *puVar1 = *param_2; + puVar1[1] = param_2[1]; + return; +} + + + +/* @00478f20 file=? name=FUN_00478f20 */ + +void FUN_00478f20(void) + +{ + FUN_00415f1c(); + return; +} + + + +/* @00478f2f file=? name=FUN_00478f2f */ + +undefined4 __cdecl FUN_00478f2f(int *param_1,int *param_2,float param_3) + +{ + float10 fVar1; + + fVar1 = FUN_004dcd00((double)((float)*param_1 - (float)*param_2)); + if ((fVar1 <= (float10)param_3) && + (fVar1 = FUN_004dcd00((double)((float)param_1[1] - (float)param_2[1])), + fVar1 <= (float10)param_3)) { + return 1; + } + return 0; +} + + + +/* @00478fb8 file=? name=FUN_00478fb8 */ + +uint FUN_00478fb8(void) + +{ + int iVar1; + uint uVar2; + + iVar1 = FUN_004d4888(); + if (iVar1 == 0) { + return 0; + } + uVar2 = FUN_004d4718(); + if (uVar2 == 0) { + uVar2 = FUN_004d4718(); + uVar2 = uVar2 | 0x100; + } + return uVar2; +} + + + +/* @00478fd8 file=? name=FUN_00478fd8 */ + +uint * FUN_00478fd8(void) + +{ + code *pcVar1; + short sVar2; + uint *extraout_EDX; + uint unaff_EBX; + + pcVar1 = (code *)swi(0x33); + sVar2 = (*pcVar1)(); + if (sVar2 == -1) { + *extraout_EDX = unaff_EBX & 0xffff; + extraout_EDX[1] = 0; + } + else { + extraout_EDX[1] = 1; + *extraout_EDX = 0; + } + return extraout_EDX; +} + + + +/* @00479008 file=? name=FUN_00479008 */ + +undefined4 FUN_00479008(void) + +{ + return 1; +} + + + +/* @00479014 file=? name=FUN_00479014 */ + +void __cdecl FUN_00479014(int param_1,uint *param_2,uint *param_3) + +{ + code *pcVar1; + uint uVar2; + uint extraout_ECX; + uint extraout_EDX; + uint uVar3; + + if (*(int *)(param_1 + 4) == 0) { + pcVar1 = (code *)swi(0x33); + (*pcVar1)(); + uVar2 = extraout_ECX & 0xffff; + uVar3 = extraout_EDX & 0xffff; + if ((extraout_ECX & 0x8000) != 0) { + uVar2 = uVar2 | 0xffff0000; + } + if ((extraout_EDX & 0x8000) != 0) { + uVar3 = uVar3 | 0xffff0000; + } + *param_2 = uVar2; + *param_3 = uVar3; + } + else { + *param_2 = 0; + *param_3 = 0; + } + return; +} + + + +/* @0047905c file=? name=FUN_0047905c */ + +undefined2 __cdecl FUN_0047905c(int param_1,undefined2 param_2) + +{ + code *pcVar1; + + if (*(int *)(param_1 + 4) != 0) { + return 0; + } + pcVar1 = (code *)swi(0x33); + (*pcVar1)(); + return param_2; +} + + + +/* @00479080 file=? name=FUN_00479080 */ + +undefined2 __cdecl FUN_00479080(int param_1,undefined2 param_2) + +{ + code *pcVar1; + + if (*(int *)(param_1 + 4) != 0) { + return 0; + } + pcVar1 = (code *)swi(0x33); + (*pcVar1)(); + return param_2; +} + + + +/* @004790a4 file=? name=FUN_004790a4 */ + +uint __cdecl FUN_004790a4(byte param_1,byte param_2) + +{ + uint uVar1; + + uVar1 = param_1 & 0x7f | (uint)param_2 << 7; + if ((param_2 & 0x40) != 0) { + uVar1 = uVar1 | 0xffffc000; + } + return uVar1; +} + + + +/* @004790c8 file=? name=FUN_004790c8 */ + +void __cdecl FUN_004790c8(int param_1) + +{ + char local_2c [40]; + + FUN_004d7f10(local_2c,s__s_Slot__d_Address__d_004fcfbf); + FUN_00404490(param_1,s_RIOBoardErrors_004fcfd5,s_error_004fcfe4,local_2c); + return; +} + + + +/* @00479110 file=? name=FUN_00479110 */ + +undefined4 * __cdecl FUN_00479110(undefined4 *param_1) + +{ + *param_1 = &PTR_FUN_004fd2a4; + FUN_0047a78d(param_1 + 0xe,5,0); + param_1[0xd] = 0; + param_1[4] = 0; + param_1[2] = 0; + param_1[3] = 0; + param_1[0xc] = 0x3cf5c28f; + param_1[9] = 0; + param_1[0xb] = 0; + return param_1; +} + + + +/* @00479158 file=? name=FUN_00479158 */ + +undefined4 * __cdecl +FUN_00479158(undefined4 *param_1,int param_2,undefined4 param_3,uint param_4,uint param_5) + +{ + bool bVar1; + undefined3 extraout_var; + undefined3 extraout_var_00; + int iVar2; + + *param_1 = &PTR_FUN_004fd2a4; + FUN_0047a78d(param_1 + 0xe,5,0); + param_1[0xd] = 1; + param_1[4] = 0; + param_1[2] = 0; + param_1[3] = 1; + param_1[0xc] = 0x3cf5c28f; + param_1[1] = param_3; + param_1[5] = param_4; + param_1[6] = param_5; + bVar1 = FUN_004040d8(param_2,(char *)param_1[1],PTR_DAT_004fcf4c,param_1 + 6); + if (CONCAT31(extraout_var,bVar1) == 0) { + FUN_00404298(param_2,(char *)param_1[1],PTR_DAT_004fcf4c,param_5); + } + bVar1 = FUN_004040d8(param_2,(char *)param_1[1],PTR_DAT_004fcf54,param_1 + 5); + if (CONCAT31(extraout_var_00,bVar1) == 0) { + FUN_00404298(param_2,(char *)param_1[1],PTR_DAT_004fcf54,param_4); + } + iVar2 = (int)(param_1[6] - param_1[5]) >> 1; + if (iVar2 < 0) { + iVar2 = iVar2 + (uint)((param_1[6] - param_1[5] & 1) != 0); + } + param_1[7] = iVar2; + return param_1; +} + + + +/* @00479228 file=? name=FUN_00479228 */ + +undefined4 * __cdecl +FUN_00479228(undefined4 *param_1,int param_2,undefined4 param_3,uint param_4,uint param_5, + uint param_6) + +{ + bool bVar1; + undefined3 extraout_var; + undefined3 extraout_var_00; + undefined3 extraout_var_01; + + *param_1 = &PTR_FUN_004fd2a4; + FUN_0047a78d(param_1 + 0xe,5,0); + param_1[0xd] = 1; + param_1[4] = 0; + param_1[2] = 1; + param_1[3] = 1; + param_1[0xc] = 0x3cf5c28f; + param_1[1] = param_3; + param_1[5] = param_4; + param_1[7] = param_5; + param_1[6] = param_6; + bVar1 = FUN_004040d8(param_2,(char *)param_1[1],PTR_DAT_004fcf4c,param_1 + 6); + if (CONCAT31(extraout_var,bVar1) == 0) { + FUN_00404298(param_2,(char *)param_1[1],PTR_DAT_004fcf4c,param_6); + } + bVar1 = FUN_004040d8(param_2,(char *)param_1[1],PTR_s_center_004fcf50,param_1 + 7); + if (CONCAT31(extraout_var_00,bVar1) == 0) { + FUN_00404298(param_2,(char *)param_1[1],PTR_s_center_004fcf50,param_5); + } + bVar1 = FUN_004040d8(param_2,(char *)param_1[1],PTR_DAT_004fcf54,param_1 + 5); + if (CONCAT31(extraout_var_01,bVar1) == 0) { + FUN_00404298(param_2,(char *)param_1[1],PTR_DAT_004fcf54,param_4); + } + FUN_004795bc((int)param_1); + return param_1; +} + + + +/* @0047932c file=? name=FUN_0047932c */ + +void __cdecl FUN_0047932c(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004fd2a4; + FUN_0047a7f6(param_1 + 0xe,2); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0047935c file=? name=FUN_0047935c */ + +void __cdecl FUN_0047935c(int param_1,undefined4 param_2) + +{ + *(undefined4 *)(param_1 + 8) = param_2; + return; +} + + + +/* @0047936c file=? name=FUN_0047936c */ + +void __cdecl FUN_0047936c(int param_1,float param_2) + +{ + float10 fVar1; + + fVar1 = FUN_004dcd00((double)param_2); + *(float *)(param_1 + 0x30) = (float)fVar1; + if (*(int *)(param_1 + 0xc) == 1) { + FUN_004795bc(param_1); + } + return; +} + + + +/* @00479398 file=? name=FUN_00479398 */ + +void __cdecl FUN_00479398(int param_1) + +{ + *(undefined4 *)(param_1 + 0xc) = 0; + *(undefined4 *)(param_1 + 0x14) = 10000; + *(undefined4 *)(param_1 + 0x18) = 0xffffd8f0; + return; +} + + + +/* @004793b4 file=? name=FUN_004793b4 */ + +void __cdecl FUN_004793b4(int param_1,int param_2) + +{ + int iVar1; + + *(int *)(param_1 + 0x1c) = *(int *)(param_1 + 0x10); + iVar1 = *(int *)(param_1 + 0x18) - *(int *)(param_1 + 0x14); + if (iVar1 < 0) { + iVar1 = -iVar1; + } + if (iVar1 < 10) { + if (*(int *)(param_1 + 8) == 1) { + *(int *)(param_1 + 0x14) = *(int *)(param_1 + 0x10) + -100; + *(int *)(param_1 + 0x18) = *(int *)(param_1 + 0x1c) + 100; + } + else { + *(undefined4 *)(param_1 + 0x14) = 0; + *(undefined4 *)(param_1 + 0x18) = 100; + } + } + else { + *(int *)(param_1 + 0x18) = *(int *)(param_1 + 0x18) - iVar1 / 0x21; + *(int *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + iVar1 / 0x21; + } + if ((*(int *)(param_1 + 0x34) != 0) && (param_2 != 0)) { + FUN_00404298(param_2,*(char **)(param_1 + 4),PTR_DAT_004fcf4c,*(uint *)(param_1 + 0x18)); + FUN_00404298(param_2,*(char **)(param_1 + 4),PTR_DAT_004fcf54,*(uint *)(param_1 + 0x14)); + if (*(int *)(param_1 + 8) == 1) { + FUN_00404298(param_2,*(char **)(param_1 + 4),PTR_s_center_004fcf50,*(uint *)(param_1 + 0x1c)); + } + } + FUN_004795bc(param_1); + *(undefined4 *)(param_1 + 0xc) = 1; + return; +} + + + +/* @00479478 file=? name=FUN_00479478 */ + +float10 __cdecl FUN_00479478(int param_1,int param_2) + +{ + int iVar1; + int iVar2; + undefined4 uVar3; + float local_8; + + local_8 = 0.0; + *(int *)(param_1 + 0x10) = param_2; + FUN_0047a825((uint *)(param_1 + 0x38),param_2); + iVar1 = FUN_0047a86e((uint *)(param_1 + 0x38)); + if (iVar1 < *(int *)(param_1 + 0x14)) { + *(int *)(param_1 + 0x14) = iVar1; + } + if (*(int *)(param_1 + 0x18) < iVar1) { + *(int *)(param_1 + 0x18) = iVar1; + } + if (*(int *)(param_1 + 8) == 0) { + iVar1 = *(int *)(param_1 + 0x14); + iVar2 = FUN_004dcd94(); + iVar1 = (param_2 - iVar1) - iVar2; + if ((0 < iVar1) && (iVar2 = *(int *)(param_1 + 0x18) - iVar2, 0 < iVar2)) { + local_8 = (float)iVar1 / (float)iVar2; + } + } + else if (*(int *)(param_1 + 8) == 1) { + if (*(int *)(param_1 + 0xc) == 0) { + *(int *)(param_1 + 0x1c) = *(int *)(param_1 + 0x18) - *(int *)(param_1 + 0x14) >> 1; + uVar3 = FUN_004dcd94(); + *(undefined4 *)(param_1 + 0x2c) = uVar3; + *(undefined4 *)(param_1 + 0x24) = uVar3; + } + iVar1 = param_2 - *(int *)(param_1 + 0x1c); + if (iVar1 < 0) { + iVar1 = iVar1 + *(int *)(param_1 + 0x24); + if ((iVar1 < 0) && (iVar2 = *(int *)(param_1 + 0x20), 0 < iVar2)) { + if (-iVar2 < iVar1) { + local_8 = (float)iVar1 / (float)iVar2; + } + else { + local_8 = -1.0; + } + } + } + else { + iVar1 = iVar1 - *(int *)(param_1 + 0x2c); + if ((0 < iVar1) && (iVar2 = *(int *)(param_1 + 0x28), 0 < iVar2)) { + if (iVar1 < iVar2) { + local_8 = (float)iVar1 / (float)iVar2; + } + else { + local_8 = 1.0; + } + } + } + } + return (float10)local_8; +} + + + +/* @004795b0 file=? name=FUN_004795b0 */ + +undefined4 FUN_004795b0(void) + +{ + return 1; +} + + + +/* @004795bc file=? name=FUN_004795bc */ + +void __cdecl FUN_004795bc(int param_1) + +{ + int iVar1; + + iVar1 = FUN_004dcd94(); + *(int *)(param_1 + 0x24) = iVar1; + *(int *)(param_1 + 0x20) = *(int *)(param_1 + 0x1c) - (*(int *)(param_1 + 0x14) + iVar1); + iVar1 = FUN_004dcd94(); + *(int *)(param_1 + 0x2c) = iVar1; + *(int *)(param_1 + 0x28) = (*(int *)(param_1 + 0x18) - iVar1) - *(int *)(param_1 + 0x1c); + return; +} + + + +/* @0047962c file=? name=FUN_0047962c */ + +undefined4 * __cdecl +FUN_0047962c(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4, + float param_5) + +{ + *param_1 = param_2; + param_1[3] = param_3; + param_1[4] = param_4; + FUN_00479684((int)param_1,param_5); + FUN_004796b8((int)param_1); + return param_1; +} + + + +/* @0047965c file=? name=FUN_0047965c */ + +void __cdecl FUN_0047965c(int *param_1,byte param_2) + +{ + if ((param_1 != (int *)0x0) && ((param_2 & 1) != 0)) { + FUN_004022d0(param_1); + } + return; +} + + + +/* @00479678 file=? name=FUN_00479678 */ + +undefined4 FUN_00479678(void) + +{ + return 1; +} + + + +/* @00479684 file=? name=FUN_00479684 */ + +void __cdecl FUN_00479684(int param_1,float param_2) + +{ + undefined4 uVar1; + + FUN_004dcd00((double)param_2); + uVar1 = FUN_004dcd94(); + *(undefined4 *)(param_1 + 0x18) = uVar1; + return; +} + + + +/* @004796b8 file=? name=FUN_004796b8 */ + +void __cdecl FUN_004796b8(int param_1) + +{ + *(undefined4 *)(param_1 + 4) = 0; + return; +} + + + +/* @004796c8 file=? name=FUN_004796c8 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 __fastcall FUN_004796c8(undefined4 param_1,uint param_2,undefined4 *param_3,int param_4) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + char *pcVar4; + int iVar5; + int *piVar6; + uint uVar7; + uint uVar8; + float local_8; + + local_8 = 0.0; + if ((int)param_3[3] < 0) { + if (param_3[1] == 0) { + param_3[1] = 1; + param_3[2] = -param_4; + iVar5 = param_3[4] * 3; + if (iVar5 < 0) { + iVar5 = iVar5 + 3; + } + param_3[7] = (iVar5 >> 2) + param_3[2]; + iVar5 = param_3[3] * 3; + if (iVar5 < 0) { + iVar5 = iVar5 + 3; + } + param_3[8] = (iVar5 >> 2) + param_3[2]; + } + uVar8 = param_4 + param_3[2]; + if ((int)param_3[7] < (int)uVar8) { + param_3[7] = uVar8; + } + if ((int)uVar8 < (int)param_3[8]) { + param_3[8] = uVar8; + } + if ((int)uVar8 < (int)-param_3[6]) { + uVar7 = (int)param_3[8] >> 0x1f; + param_2 = ((param_3[8] ^ uVar7) - uVar7) - param_3[6]; + if (0 < (int)param_2) { + local_8 = (float)(int)(param_3[6] + uVar8) / (float)(int)param_2; + } + } + else if (((int)param_3[6] < (int)uVar8) && + (uVar7 = (int)param_3[7] >> 0x1f, param_2 = ((param_3[7] ^ uVar7) - uVar7) - param_3[6], + 0 < (int)param_2)) { + local_8 = (float)(int)(uVar8 - param_3[6]) / (float)(int)param_2; + } + } + else { + if (param_3[1] == 0) { + param_3[1] = 1; + param_3[2] = -param_4; + iVar5 = param_3[4] * 3; + if (iVar5 < 0) { + iVar5 = iVar5 + 3; + } + param_3[7] = iVar5 >> 2; + param_3[8] = param_3[3]; + } + iVar5 = param_4 + param_3[2]; + if ((int)param_3[4] < iVar5) { + param_3[2] = param_3[2] - (iVar5 - param_3[4]); + iVar5 = param_3[4]; + } + else if (iVar5 < (int)param_3[3]) { + param_3[2] = param_3[2] - (iVar5 - param_3[3]); + iVar5 = param_3[3]; + } + if ((int)param_3[7] < iVar5) { + param_3[7] = iVar5; + } + uVar8 = iVar5 - param_3[3]; + iVar5 = param_3[6]; + if ((iVar5 < (int)uVar8) && (param_2 = (param_3[7] - param_3[8]) - iVar5, 0 < (int)param_2)) { + local_8 = (float)(int)(uVar8 - iVar5) / (float)(int)param_2; + } + } + if (local_8 <= _DAT_00479af0) { + if (local_8 < _DAT_00479af4) { + uVar7 = param_3[6]; + uVar1 = param_3[7]; + uVar2 = param_3[8]; + pcVar4 = (char *)*param_3; + FUN_004dbb24(&DAT_00524e20,s_Too_low__004fd08b,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_input__004fd094,(char *)0x0); + piVar6 = FUN_004db78c(&DAT_00524e20,uVar8); + FUN_004dbb24(piVar6,s_result__004fd09c,(char *)0x0); + piVar6 = FUN_004db634(piVar6,(float10)local_8); + FUN_004dbb24(piVar6,&DAT_004fd0a5,(char *)0x0); + FUN_004dbb24(piVar6,pcVar4,(char *)0x0); + FUN_004dbb24(piVar6,s_lowestInput__004fd0a7,(char *)0x0); + piVar6 = FUN_004db78c(piVar6,uVar2); + FUN_004dbb24(piVar6,s_highestInput__004fd0b5,(char *)0x0); + piVar6 = FUN_004db78c(piVar6,uVar1); + FUN_004dbb24(piVar6,s_deadbandInteger__004fd0c4,(char *)0x0); + piVar6 = FUN_004db78c(piVar6,uVar7); + FUN_004dbb24(piVar6,s_range__004fd0d6,(char *)0x0); + piVar6 = FUN_004db78c(piVar6,param_2); + FUN_004dbb24(piVar6,&DAT_004fd0de,(char *)0x0); + local_8 = -1.0; + } + } + else { + uVar7 = param_3[6]; + uVar1 = param_3[7]; + uVar2 = param_3[8]; + uVar3 = param_3[2]; + pcVar4 = (char *)*param_3; + FUN_004dbb24(&DAT_00524e20,s_Too_high__004fd02c,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_input__004fd036,(char *)0x0); + piVar6 = FUN_004db78c(&DAT_00524e20,uVar8); + FUN_004dbb24(piVar6,s_result__004fd03e,(char *)0x0); + piVar6 = FUN_004db634(piVar6,(float10)local_8); + FUN_004dbb24(piVar6,&DAT_004fd047,(char *)0x0); + FUN_004dbb24(piVar6,pcVar4,(char *)0x0); + FUN_004dbb24(piVar6,s_offset__004fd049,(char *)0x0); + piVar6 = FUN_004db78c(piVar6,uVar3); + FUN_004dbb24(piVar6,s_lowestInput__004fd052,(char *)0x0); + piVar6 = FUN_004db78c(piVar6,uVar2); + FUN_004dbb24(piVar6,s_highestInput__004fd060,(char *)0x0); + piVar6 = FUN_004db78c(piVar6,uVar1); + FUN_004dbb24(piVar6,s_deadbandInteger__004fd06f,(char *)0x0); + piVar6 = FUN_004db78c(piVar6,uVar7); + FUN_004dbb24(piVar6,s_range__004fd081,(char *)0x0); + piVar6 = FUN_004db78c(piVar6,param_2); + FUN_004dbb24(piVar6,&DAT_004fd089,(char *)0x0); + local_8 = 1.0; + } + return (float10)local_8; +} + + + +/* @00479b78 file=? name=FUN_00479b78 */ + +short * __cdecl FUN_00479b78(short *param_1,short param_2,short param_3,int param_4) + +{ + bool bVar1; + undefined4 *puVar2; + uint uVar3; + int *piVar4; + int iVar5; + undefined4 extraout_ECX; + undefined4 extraout_ECX_00; + undefined4 extraout_ECX_01; + undefined4 extraout_ECX_02; + undefined4 extraout_ECX_03; + undefined4 extraout_ECX_04; + undefined4 extraout_ECX_05; + undefined4 extraout_ECX_06; + undefined4 extraout_ECX_07; + undefined4 extraout_ECX_08; + undefined4 uVar6; + short extraout_DX; + short extraout_DX_00; + short extraout_DX_01; + short sVar7; + int extraout_EDX; + int extraout_EDX_00; + undefined8 uVar8; + undefined4 local_14 [3]; + int local_8; + + param_1[0x21e] = 0; + param_1[0x21f] = 0; + param_1[0x220] = 0; + param_1[0x221] = 0; + param_1[0x222] = 0; + param_1[0x223] = 0; + param_1[0x224] = 0; + param_1[0x225] = 0; + param_1[0x226] = 0; + param_1[0x227] = 0; + param_1[0x228] = 0; + param_1[0x229] = 0; + param_1[0x22e] = 0; + param_1[0x22f] = 0; + param_1[0x230] = 0; + param_1[0x231] = 0; + param_1[0x232] = 0; + param_1[0x233] = 0; + param_1[0x234] = 0; + param_1[0x235] = 0; + param_1[0x238] = 0; + param_1[0x239] = 0; + param_1[0x236] = 0; + param_1[0x237] = 0; + param_1[0x23c] = 1; + param_1[0x23d] = 0; + param_1[0x248] = 0; + param_1[0x249] = 0; + param_1[0x24a] = 0; + param_1[0x24b] = 0; + FUN_0047a70c((int)param_1); + FUN_00404bc0(*(int *)(param_1 + 0x248),s_RIOBoardErrors_004fd0f5); + FUN_00404bc0(*(int *)(param_1 + 0x248),s_RIODeadLamps_004fd104); + FUN_00404bc0(*(int *)(param_1 + 0x248),s_RIOErrors_004fd111); + FUN_0047a750((int)param_1); + puVar2 = (undefined4 *)FUN_00402298(0x24); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_0047962c(puVar2,s_LeftPedal_004fd11b,0,0x1d6,0.0); + } + *(undefined4 **)(param_1 + 0x23e) = puVar2; + puVar2 = (undefined4 *)FUN_00402298(0x24); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_0047962c(puVar2,s_RightPedal_004fd125,0,0x1d6,0.0); + } + *(undefined4 **)(param_1 + 0x240) = puVar2; + puVar2 = (undefined4 *)FUN_00402298(0x24); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_0047962c(puVar2,s_Throttle_004fd130,0,800,0.05); + } + *(undefined4 **)(param_1 + 0x242) = puVar2; + puVar2 = (undefined4 *)FUN_00402298(0x24); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_0047962c(puVar2,s_JoystickX_004fd139,0xffffffa0,0x60,0.05); + } + *(undefined4 **)(param_1 + 0x244) = puVar2; + puVar2 = (undefined4 *)FUN_00402298(0x24); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_0047962c(puVar2,s_JoystickY_004fd143,0xffffff9f,0x6c,0.05); + } + *(undefined4 **)(param_1 + 0x246) = puVar2; + uVar8 = FUN_0047d9f4(param_1,0xc,param_2,param_3,&DAT_004fcf20,0xd,&DAT_004fcf20,0xd); + uVar3 = (uint)uVar8; + if (uVar3 == 0xfffffffe) { + FUN_004dbb24(&DAT_00524e20,s_RIO__RIO_DPMI_error__004fd14d,(char *)0x0); + uVar6 = extraout_ECX_00; + sVar7 = extraout_DX; + } + else if (uVar3 == 0xffffffff) { + FUN_004dbb24(&DAT_00524e20,s_RIO__RIO_buffer_allocation_error_004fd163,(char *)0x0); + uVar6 = extraout_ECX_01; + sVar7 = extraout_DX_00; + } + else if (uVar3 == 0) { + sVar7 = 0; + uVar6 = extraout_ECX; + } + else { + FUN_004dbb24(&DAT_00524e20,s_RIO__RIO_unexpected_init_result__004fd186,(char *)0x0); + piVar4 = FUN_004db78c(&DAT_00524e20,uVar3); + FUN_004dbb24(piVar4,&DAT_004fd1a7,(char *)0x0); + uVar6 = extraout_ECX_02; + sVar7 = extraout_DX_01; + } + param_1[0x22a] = 0xff; + param_1[0x22b] = 0; + param_1[0x22c] = 0xff; + param_1[0x22d] = 0; + if (param_4 != 0) { + bVar1 = false; + FUN_0047df93(uVar6,sVar7,param_1,1); + piVar4 = (int *)FUN_00414b60(); + local_8 = *piVar4; + iVar5 = FUN_004dcd94(); + local_8 = local_8 + iVar5; + do { + piVar4 = (int *)FUN_00414b60(); + } while (*piVar4 < local_8); + FUN_0047df93(local_8,(short)*piVar4,param_1,0); + piVar4 = (int *)FUN_00414b60(); + local_8 = *piVar4; + iVar5 = FUN_004dcd94(); + local_8 = local_8 + iVar5; + do { + piVar4 = (int *)FUN_00414b60(); + } while (*piVar4 < local_8); + FUN_0047a56c(local_8,*piVar4,param_1); + piVar4 = (int *)FUN_00414b60(); + local_8 = *piVar4; + iVar5 = FUN_004dcd94(); + local_8 = local_8 + iVar5; + uVar6 = extraout_ECX_03; + while (iVar5 = *(int *)(param_1 + 0x21e), iVar5 == 0) { + piVar4 = (int *)FUN_00414b60(); + if (local_8 < *piVar4) { + bVar1 = true; + FUN_004dbb24(&DAT_00524e20,s_RIO_never_came_back_from_check_r_004fd1aa,(char *)0x0); + uVar6 = extraout_ECX_04; + iVar5 = extraout_EDX; + break; + } + FUN_0047a0e8(local_8,*piVar4,(int)param_1,local_14); + uVar6 = extraout_ECX_05; + } + if (!bVar1) { + piVar4 = (int *)FUN_00414b60(); + local_8 = *piVar4; + iVar5 = FUN_004dcd94(); + local_8 = local_8 + iVar5; + uVar6 = extraout_ECX_06; + while (iVar5 = 0, *(int *)(param_1 + 0x21e) != 0) { + piVar4 = (int *)FUN_00414b60(); + if (local_8 < *piVar4) { + bVar1 = true; + FUN_004dbb24(&DAT_00524e20,s_RIO_never_came_back_from_test_mo_004fd1d3,(char *)0x0); + uVar6 = extraout_ECX_07; + iVar5 = extraout_EDX_00; + break; + } + FUN_0047a0e8(local_8,*piVar4,(int)param_1,local_14); + uVar6 = extraout_ECX_08; + } + } + if (!bVar1) { + FUN_0047a594(uVar6,iVar5,param_1); + piVar4 = (int *)FUN_00414b60(); + local_8 = *piVar4; + iVar5 = FUN_004dcd94(); + local_8 = local_8 + iVar5; + while (*(int *)(param_1 + 0x22a) == 0xff) { + piVar4 = (int *)FUN_00414b60(); + if (local_8 < *piVar4) { + FUN_004dbb24(&DAT_00524e20,s_RIO_never_came_back_from_version_004fd1f8,(char *)0x0); + return param_1; + } + FUN_0047a0e8(local_8,*piVar4,(int)param_1,local_14); + } + } + } + return param_1; +} + + + +/* @00479fd0 file=? name=FUN_00479fd0 */ + +void __cdecl FUN_00479fd0(int *param_1,byte param_2) + +{ + int *piVar1; + undefined2 uVar2; + int *piVar3; + int iVar4; + short extraout_var; + undefined4 extraout_ECX; + undefined4 extraout_EDX; + undefined8 uVar5; + undefined1 local_14 [12]; + int local_8; + + if (param_1 != (int *)0x0) { + piVar3 = (int *)FUN_00414b60(); + local_8 = *piVar3; + iVar4 = FUN_004dcd94(); + local_8 = local_8 + iVar4; + while( true ) { + piVar3 = (int *)FUN_00414b60(); + if (local_8 <= *piVar3) break; + piVar3 = param_1; + uVar2 = FUN_0047df82((int)param_1); + if (CONCAT22(extraout_var,uVar2) == 0 || extraout_var < 0) { + piVar1 = param_1; + uVar5 = FUN_0047def5(piVar3,extraout_EDX,(short *)param_1); + piVar3 = piVar1; + if ((int)uVar5 == 0) break; + } + FUN_0047a0e8(piVar3,local_14,(int)param_1,(undefined4 *)local_14); + } + FUN_0047965c((int *)param_1[0x11f],3); + param_1[0x11f] = 0; + FUN_0047965c((int *)param_1[0x120],3); + param_1[0x120] = 0; + FUN_0047965c((int *)param_1[0x121],3); + param_1[0x121] = 0; + FUN_0047965c((int *)param_1[0x122],3); + param_1[0x122] = 0; + FUN_0047965c((int *)param_1[0x123],3); + param_1[0x123] = 0; + FUN_0047dc71(extraout_ECX,0,(short *)param_1); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0047a0e8 file=? name=FUN_0047a0e8 */ + +int __fastcall FUN_0047a0e8(undefined4 param_1,undefined4 param_2,int param_3,undefined4 *param_4) + +{ + bool bVar1; + int iVar2; + char *pcVar3; + uint uVar4; + undefined4 extraout_ECX; + undefined4 extraout_ECX_00; + undefined4 extraout_ECX_01; + undefined4 extraout_ECX_02; + undefined4 extraout_ECX_03; + uint extraout_EDX; + uint extraout_EDX_00; + uint extraout_EDX_01; + uint extraout_EDX_02; + uint extraout_EDX_03; + float10 fVar5; + ulonglong uVar6; + undefined8 uVar7; + int local_124 [8]; + byte local_104; + byte local_103; + byte local_102; + byte local_101; + byte local_100; + byte local_ff; + byte local_fe; + byte local_fd; + byte local_fc; + byte local_fb; + byte local_fa; + + if (*(int *)(param_3 + 0x478) == 0) { + iVar2 = 0; + } + else { + uVar6 = FUN_0047df1a(param_1,param_2,param_3); + if ((short)uVar6 != 0) { + if ((uVar6 & 0x100) == 0) { + if ((uVar6 & 0x400) != 0) { + *(int *)(param_3 + 0x46c) = *(int *)(param_3 + 0x46c) + 1; + } + if ((uVar6 & 2) != 0) { + *(int *)(param_3 + 0x470) = *(int *)(param_3 + 0x470) + 1; + } + if ((uVar6 & 0xe) != 0) { + *(int *)(param_3 + 0x468) = *(int *)(param_3 + 0x468) + 1; + } + } + else { + FUN_00403e84(local_124,s_FAILURE_LOG_004fd223,1); + FUN_00404204((int)local_124,s_RIOErrors_004fd22f,s_error_004fd239,s_initialization_004fd23f) + ; + *(undefined4 *)(param_3 + 0x478) = 0; + FUN_00403ecc(local_124,2); + } + } + do { + bVar1 = false; + uVar7 = FUN_0047dce3(param_3,&local_104); + iVar2 = (int)uVar7; + if (iVar2 != 0) { + switch(local_104) { + case 0x85: + switch(local_103) { + case 1: + FUN_0047a70c(param_3); + FUN_004790c8(*(int *)(param_3 + 0x490)); + FUN_0047a750(param_3); + break; + case 2: + FUN_0047a70c(param_3); + FUN_004790c8(*(int *)(param_3 + 0x490)); + FUN_0047a750(param_3); + break; + case 3: + FUN_0047a70c(param_3); + pcVar3 = FUN_00476f34((uint)local_102); + FUN_00404490(*(int *)(param_3 + 0x490),s_RIODeadLamps_004fd267,&DAT_004fd274,pcVar3); + FUN_0047a750(param_3); + break; + case 4: + *(int *)(param_3 + 0x45c) = *(int *)(param_3 + 0x45c) + (uint)local_102; + break; + case 5: + *(int *)(param_3 + 0x460) = *(int *)(param_3 + 0x460) + (uint)local_102; + break; + case 6: + *(int *)(param_3 + 0x464) = *(int *)(param_3 + 0x464) + (uint)local_102; + } + bVar1 = true; + break; + case 0x86: + *param_4 = 4; + *(uint *)(param_3 + 0x454) = (uint)local_103; + *(uint *)(param_3 + 0x458) = (uint)local_102; + break; + case 0x87: + *param_4 = 3; + uVar4 = FUN_004790a4(local_103,local_102); + fVar5 = FUN_004796c8(extraout_ECX,extraout_EDX,*(undefined4 **)(param_3 + 0x484),-uVar4); + *(float *)(param_3 + 0x440) = (float)fVar5; + uVar4 = FUN_004790a4(local_101,local_100); + fVar5 = FUN_004796c8(extraout_ECX_00,extraout_EDX_00,*(undefined4 **)(param_3 + 0x47c), + uVar4); + *(float *)(param_3 + 0x444) = (float)fVar5; + uVar4 = FUN_004790a4(local_ff,local_fe); + fVar5 = FUN_004796c8(extraout_ECX_01,extraout_EDX_01,*(undefined4 **)(param_3 + 0x480), + uVar4); + *(float *)(param_3 + 0x448) = (float)fVar5; + uVar4 = FUN_004790a4(local_fd,local_fc); + fVar5 = FUN_004796c8(extraout_ECX_02,extraout_EDX_02,*(undefined4 **)(param_3 + 0x48c), + uVar4); + *(float *)(param_3 + 0x450) = (float)fVar5; + uVar4 = FUN_004790a4(local_fb,local_fa); + fVar5 = FUN_004796c8(extraout_ECX_03,extraout_EDX_03,*(undefined4 **)(param_3 + 0x488), + uVar4); + *(float *)(param_3 + 0x44c) = (float)fVar5; + break; + case 0x88: + *param_4 = 0; + param_4[1] = (uint)local_103; + break; + case 0x89: + *param_4 = 1; + param_4[1] = (uint)local_103; + break; + case 0x8a: + *param_4 = 2; + param_4[1] = (uint)local_103; + param_4[2] = (uint)local_102; + break; + default: + bVar1 = true; + break; + case 0x8c: + if (local_103 == 0) { + *(undefined4 *)(param_3 + 0x43c) = 0; + FUN_0047a750(param_3); + } + else { + *(undefined4 *)(param_3 + 0x43c) = 1; + FUN_0047a70c(param_3); + FUN_00404bc0(*(int *)(param_3 + 0x490),s_RIOBoardErrors_004fd279); + FUN_00404bc0(*(int *)(param_3 + 0x490),s_RIODeadLamps_004fd288); + } + bVar1 = true; + } + } + } while (bVar1); + } + return iVar2; +} + + + +/* @0047a4cc file=? name=FUN_0047a4cc */ + +void __cdecl FUN_0047a4cc(int param_1) + +{ + FUN_004796b8(*(int *)(param_1 + 0x488)); + FUN_004796b8(*(int *)(param_1 + 0x48c)); + return; +} + + + +/* @0047a4f0 file=? name=FUN_0047a4f0 */ + +void __cdecl FUN_0047a4f0(int param_1,float param_2) + +{ + FUN_00479684(*(int *)(param_1 + 0x488),param_2); + FUN_00479684(*(int *)(param_1 + 0x48c),param_2); + return; +} + + + +/* @0047a520 file=? name=FUN_0047a520 */ + +void __cdecl FUN_0047a520(int param_1,float param_2) + +{ + FUN_00479684(*(int *)(param_1 + 0x484),param_2); + return; +} + + + +/* @0047a53c file=? name=FUN_0047a53c */ + +void __cdecl FUN_0047a53c(int param_1,float param_2) + +{ + FUN_00479684(*(int *)(param_1 + 0x47c),param_2); + FUN_00479684(*(int *)(param_1 + 0x480),param_2); + return; +} + + + +/* @0047a56c file=? name=FUN_0047a56c */ + +undefined8 __fastcall FUN_0047a56c(undefined4 param_1,undefined4 param_2,short *param_3) + +{ + undefined8 uVar1; + + uVar1 = CONCAT44(param_2,param_3); + if ((*(int *)(param_3 + 0x23c) != 0) && + (uVar1 = CONCAT44(param_2,param_3), *(int *)(param_3 + 0x21e) == 0)) { + uVar1 = FUN_0047ddda(param_1,param_2,param_3,&DAT_004fcf6c); + } + return uVar1; +} + + + +/* @0047a594 file=? name=FUN_0047a594 */ + +undefined8 __fastcall FUN_0047a594(undefined4 param_1,undefined4 param_2,short *param_3) + +{ + undefined8 uVar1; + + uVar1 = CONCAT44(param_2,param_3); + if ((*(int *)(param_3 + 0x23c) != 0) && + (uVar1 = CONCAT44(param_2,param_3), *(int *)(param_3 + 0x21e) == 0)) { + uVar1 = FUN_0047ddda(param_1,param_2,param_3,&DAT_004fcf6d); + } + return uVar1; +} + + + +/* @0047a5bc file=? name=FUN_0047a5bc */ + +undefined8 __fastcall FUN_0047a5bc(undefined4 param_1,undefined4 param_2,short *param_3) + +{ + undefined8 uVar1; + + uVar1 = CONCAT44(param_2,param_3); + if ((*(int *)(param_3 + 0x23c) != 0) && + (uVar1 = CONCAT44(param_2,param_3), *(int *)(param_3 + 0x21e) == 0)) { + uVar1 = FUN_0047ddda(param_1,param_2,param_3,&DAT_004fcf6e); + } + return uVar1; +} + + + +/* @0047a5e4 file=? name=FUN_0047a5e4 */ + +undefined8 __fastcall FUN_0047a5e4(undefined4 param_1,undefined4 param_2,short *param_3) + +{ + undefined8 uVar1; + + uVar1 = CONCAT44(param_2,param_3); + if ((*(int *)(param_3 + 0x23c) != 0) && + (uVar1 = CONCAT44(param_2,param_3), *(int *)(param_3 + 0x21e) == 0)) { + uVar1 = FUN_0047ddda(param_1,param_2,param_3,&DAT_004fcf6f); + } + return uVar1; +} + + + +/* @0047a60c file=? name=FUN_0047a60c */ + +undefined8 __fastcall FUN_0047a60c(undefined4 param_1,undefined4 param_2,short *param_3) + +{ + undefined8 uVar1; + + uVar1 = CONCAT44(param_2,param_3); + if ((*(int *)(param_3 + 0x23c) != 0) && + (uVar1 = CONCAT44(param_2,param_3), *(int *)(param_3 + 0x21e) == 0)) { + uVar1 = FUN_0047ddda(param_1,param_2,param_3,&DAT_004fcf71); + } + return uVar1; +} + + + +/* @0047a634 file=? name=FUN_0047a634 */ + +undefined8 __fastcall FUN_0047a634(undefined4 param_1,undefined4 param_2,short *param_3) + +{ + undefined8 uVar1; + + uVar1 = CONCAT44(param_2,param_3); + if ((*(int *)(param_3 + 0x23c) != 0) && + (uVar1 = CONCAT44(param_2,param_3), *(int *)(param_3 + 0x21e) == 0)) { + uVar1 = FUN_0047ddda(param_1,param_2,param_3,&DAT_004fcf73); + } + return uVar1; +} + + + +/* @0047a65c file=? name=FUN_0047a65c */ + +undefined8 __fastcall FUN_0047a65c(undefined4 param_1,undefined4 param_2,short *param_3) + +{ + undefined8 uVar1; + + uVar1 = CONCAT44(param_2,param_3); + if ((*(int *)(param_3 + 0x23c) != 0) && + (uVar1 = CONCAT44(param_2,param_3), *(int *)(param_3 + 0x21e) == 0)) { + uVar1 = FUN_0047ddda(param_1,param_2,param_3,&DAT_004fcf75); + } + return uVar1; +} + + + +/* @0047a684 file=? name=FUN_0047a684 */ + +undefined8 __fastcall FUN_0047a684(undefined4 param_1,undefined4 param_2,short *param_3) + +{ + undefined8 uVar1; + + uVar1 = CONCAT44(param_2,param_3); + if ((*(int *)(param_3 + 0x23c) != 0) && + (uVar1 = CONCAT44(param_2,param_3), *(int *)(param_3 + 0x21e) == 0)) { + uVar1 = FUN_0047ddda(param_1,param_2,param_3,&DAT_004fcf77); + } + return uVar1; +} + + + +/* @0047a6ac file=? name=FUN_0047a6ac */ + +undefined8 __fastcall FUN_0047a6ac(undefined4 param_1,undefined4 param_2,short *param_3) + +{ + undefined8 uVar1; + + uVar1 = CONCAT44(param_2,param_3); + if ((*(int *)(param_3 + 0x23c) != 0) && + (uVar1 = CONCAT44(param_2,param_3), *(int *)(param_3 + 0x21e) == 0)) { + uVar1 = FUN_0047ddda(param_1,param_2,param_3,&DAT_004fcf79); + } + return uVar1; +} + + + +/* @0047a6d4 file=? name=FUN_0047a6d4 */ + +undefined8 __fastcall +FUN_0047a6d4(undefined4 param_1,undefined4 param_2,short *param_3,undefined1 param_4, + undefined1 param_5) + +{ + uint uVar1; + uint uVar2; + undefined8 uVar3; + + uVar3 = CONCAT44(param_2,param_3); + if (*(int *)(param_3 + 0x23c) != 0) { + uVar2 = CONCAT31((int3)((uint)param_2 >> 8),param_4) & 0xffffff7f; + uVar1 = CONCAT31((int3)((uint)param_1 >> 8),param_5) & 0xffffff7f; + DAT_004fcf7c = (undefined1)uVar2; + DAT_004fcf7d = (undefined1)uVar1; + uVar3 = FUN_0047ddda(uVar1,uVar2,param_3,&DAT_004fcf7b); + } + return uVar3; +} + + + +/* @0047a70c file=? name=FUN_0047a70c */ + +void __cdecl FUN_0047a70c(int param_1) + +{ + int *piVar1; + + if (*(int *)(param_1 + 0x494) == 0) { + piVar1 = (int *)FUN_00402298(0x20); + if (piVar1 == (int *)0x0) { + piVar1 = (int *)0x0; + } + else { + piVar1 = FUN_00403e84(piVar1,s_FAILURE_LOG_004fd295,1); + } + *(int **)(param_1 + 0x490) = piVar1; + } + *(int *)(param_1 + 0x494) = *(int *)(param_1 + 0x494) + 1; + return; +} + + + +/* @0047a750 file=? name=FUN_0047a750 */ + +void __cdecl FUN_0047a750(int param_1) + +{ + *(int *)(param_1 + 0x494) = *(int *)(param_1 + 0x494) + -1; + if (*(int *)(param_1 + 0x494) < 1) { + *(undefined4 *)(param_1 + 0x494) = 0; + FUN_00403ecc(*(int **)(param_1 + 0x490),3); + } + return; +} + + + +/* @0047a780 file=? name=FUN_0047a780 */ + +void __cdecl FUN_0047a780(int param_1) + +{ + *(undefined4 *)(param_1 + 8) = 0; + return; +} + + + +/* @0047a78d file=? name=FUN_0047a78d */ + +uint * __cdecl FUN_0047a78d(uint *param_1,uint param_2,undefined4 param_3) + +{ + param_1[2] = 0; + FUN_0047a7af(param_1,param_2,param_3); + return param_1; +} + + + +/* @0047a7af file=? name=FUN_0047a7af */ + +void __cdecl FUN_0047a7af(uint *param_1,uint param_2,undefined4 param_3) + +{ + uint uVar1; + + if ((int *)param_1[2] != (int *)0x0) { + FUN_004022e8((int *)param_1[2]); + } + *param_1 = param_2; + uVar1 = FUN_004022b0(param_2 << 2); + param_1[2] = uVar1; + param_1[1] = 0; + for (uVar1 = 0; uVar1 < *param_1; uVar1 = uVar1 + 1) { + *(undefined4 *)(param_1[2] + uVar1 * 4) = param_3; + } + return; +} + + + +/* @0047a7f6 file=? name=FUN_0047a7f6 */ + +void __cdecl FUN_0047a7f6(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + FUN_004022e8((int *)param_1[2]); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0047a81b file=? name=FUN_0047a81b */ + +undefined4 FUN_0047a81b(void) + +{ + return 1; +} + + + +/* @0047a825 file=? name=FUN_0047a825 */ + +void __cdecl FUN_0047a825(uint *param_1,undefined4 param_2) + +{ + *(undefined4 *)(param_1[2] + param_1[1] * 4) = param_2; + param_1[1] = param_1[1] + 1; + if (*param_1 <= param_1[1]) { + param_1[1] = 0; + } + return; +} + + + +/* @0047a84c file=? name=FUN_0047a84c */ + +int __cdecl FUN_0047a84c(uint *param_1) + +{ + int *piVar1; + uint uVar2; + int iVar3; + + iVar3 = 0; + piVar1 = (int *)param_1[2]; + for (uVar2 = 0; uVar2 < *param_1; uVar2 = uVar2 + 1) { + iVar3 = iVar3 + *piVar1; + piVar1 = piVar1 + 1; + } + return iVar3 / (int)*param_1; +} + + + +/* @0047a86e file=? name=FUN_0047a86e */ + +int __cdecl FUN_0047a86e(uint *param_1) + +{ + int *piVar1; + int iVar2; + int iVar3; + uint uVar4; + int local_8; + + iVar2 = *(int *)param_1[2]; + local_8 = 0; + piVar1 = (int *)param_1[2]; + iVar3 = iVar2; + for (uVar4 = 0; uVar4 < *param_1; uVar4 = uVar4 + 1) { + local_8 = local_8 + *piVar1; + if (*piVar1 < iVar3) { + iVar3 = *piVar1; + } + if (iVar2 < *piVar1) { + iVar2 = *piVar1; + } + piVar1 = piVar1 + 1; + } + return ((local_8 - iVar3) - iVar2) / (int)(*param_1 - 2); +} + + + +/* @0047a8d3 file=? name=FUN_0047a8d3 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 __cdecl FUN_0047a8d3(uint *param_1) + +{ + uint uVar1; + float fVar2; + float fVar3; + uint uVar4; + float local_1c; + float local_c; + float local_8; + + local_8 = 0.0; + local_c = 0.0; + uVar1 = *param_1; + fVar2 = (float)uVar1; + fVar3 = fVar2 * fVar2 * _DAT_0047a99b; + fVar2 = fVar2 * _DAT_0047a99b + fVar3; + uVar4 = param_1[1]; + local_1c = 1.0; + do { + local_8 = (float)*(int *)(param_1[2] + uVar4 * 4) + local_8; + local_c = (float)*(int *)(param_1[2] + uVar4 * 4) * local_1c + local_c; + local_1c = _DAT_0047a9b7 + local_1c; + uVar4 = uVar4 + 1; + if (uVar4 == *param_1) { + uVar4 = 0; + } + } while (uVar4 != param_1[1]); + return ((float10)uVar1 * (float10)local_c - (float10)fVar2 * (float10)local_8) / + ((float10)uVar1 * + (float10)(float)(_DAT_0047a9ab * (float10)uVar1 + + _DAT_0047a99f * (float10)uVar1 * (float10)uVar1 * (float10)uVar1 + + (float10)fVar3) - (float10)fVar2 * (float10)fVar2); +} + + + +/* @0047aa48 file=? name=FUN_0047aa48 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_0047aa48(int param_1) + +{ + *(float *)(param_1 + 0xf0) = *(float *)(param_1 + 0x104) - *(float *)(param_1 + 0x100); + *(float *)(param_1 + 0xf0) = _DAT_0047aa74 * *(float *)(param_1 + 0xf0); + return; +} + + + +/* @0047aa78 file=? name=FUN_0047aa78 */ + +undefined4 * __cdecl +FUN_0047aa78(undefined4 *param_1,undefined4 param_2,undefined4 param_3,char *param_4, + undefined4 param_5) + +{ + int iVar1; + + FUN_0042d494(param_1,param_2,param_3,param_4,param_5); + *param_1 = &PTR_FUN_004fd488; + param_1[7] = PTR_FUN_004fd30c; + param_1[8] = DAT_004fd310; + param_1[9] = DAT_004fd314; + param_1[0x40] = 0; + param_1[0x41] = 0; + iVar1 = *(int *)(DAT_004efc94 + 0x3c); + (**(code **)(*(int *)(iVar1 + 0x104) + 0x18))(iVar1 + 0x104,0xffffffff,param_1 + 0x39,param_1); + (**(code **)(*(int *)(iVar1 + 0x9c0) + 0x18))(iVar1 + 0x9c0,0xffffffff,param_1 + 0x3e,param_1); + (**(code **)(*(int *)(iVar1 + 0xaa0) + 0x18))(iVar1 + 0xaa0,0xffffffff,param_1 + 0x3f,param_1); + (**(code **)(*(int *)(iVar1 + 0xa40) + 0x14))(iVar1 + 0xa40,0xffffffff,param_1,6,param_1); + (**(code **)(*(int *)(iVar1 + 0xa20) + 0x14))(iVar1 + 0xa20,0xffffffff,param_1,5,param_1); + (**(code **)(*(int *)(iVar1 + 0xa60) + 0x14))(iVar1 + 0xa60,0xffffffff,param_1,8,param_1); + (**(code **)(*(int *)(iVar1 + 0xa80) + 0x14))(iVar1 + 0xa80,0xffffffff,param_1,7,param_1); + (**(code **)(*(int *)(iVar1 + 0x1a0) + 0x14))(iVar1 + 0x1a0,0xffffffff,param_1,3,param_1); + return param_1; +} + + + +/* @0047abb0 file=? name=FUN_0047abb0 */ + +void __cdecl FUN_0047abb0(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004fd488; + FUN_0042d4f8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0047abdc file=? name=FUN_0047abdc */ + +void __cdecl FUN_0047abdc(int param_1) + +{ + FUN_0041a1a4(**(int **)(param_1 + 0xc),0x4fd2c0); + return; +} + + + +/* @0047abf8 file=? name=FUN_0047abf8 */ + +void __cdecl FUN_0047abf8(int param_1) + +{ + if (*(int *)(param_1 + 0x108) < 1) { + if (*(int *)(param_1 + 0x10c) < 1) { + *(undefined4 *)(param_1 + 0xec) = 0; + *(undefined4 *)(param_1 + 0xf4) = 0; + } + else { + *(undefined4 *)(param_1 + 0xec) = 0x3f800000; + *(undefined4 *)(param_1 + 0xf4) = 1; + } + } + else { + *(undefined4 *)(param_1 + 0xec) = 0x3f800000; + *(undefined4 *)(param_1 + 0xf4) = 0; + } + FUN_0047aa48(param_1); + return; +} + + + +/* @0047ac5c file=? name=FUN_0047ac5c */ + +undefined4 * __cdecl +FUN_0047ac5c(undefined4 *param_1,undefined4 param_2,undefined4 param_3,char *param_4, + undefined4 param_5) + +{ + int iVar1; + + FUN_0047aa78(param_1,param_2,param_3,param_4,param_5); + *param_1 = &PTR_FUN_004fd458; + param_1[7] = PTR_FUN_004fd358; + param_1[8] = DAT_004fd35c; + param_1[9] = DAT_004fd360; + param_1[0x43] = 0; + param_1[0x42] = 0; + iVar1 = *(int *)(DAT_004efc94 + 0x3c); + (**(code **)(*(int *)(iVar1 + 0xa00) + 0x18))(iVar1 + 0xa00,0xffffffff,param_1 + 0x42,param_1); + (**(code **)(*(int *)(iVar1 + 0x9e0) + 0x18))(iVar1 + 0x9e0,0xffffffff,param_1 + 0x43,param_1); + return param_1; +} + + + +/* @0047acf4 file=? name=FUN_0047acf4 */ + +void __cdecl FUN_0047acf4(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004fd458; + FUN_0047abb0(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0047ad20 file=? name=FUN_0047ad20 */ + +void __cdecl FUN_0047ad20(int param_1) + +{ + FUN_0041a1a4(**(int **)(param_1 + 0xc),0x4fd328); + return; +} + + + +/* @0047ad3c file=? name=FUN_0047ad3c */ + +undefined4 * __cdecl +FUN_0047ad3c(undefined4 *param_1,undefined4 param_2,undefined4 param_3,char *param_4, + undefined4 param_5) + +{ + int iVar1; + + FUN_0047aa78(param_1,param_2,param_3,param_4,param_5); + *param_1 = &PTR_FUN_004fd428; + iVar1 = *(int *)(DAT_004efc94 + 0x3c); + (**(code **)(*(int *)(iVar1 + 0x24) + 0x18))(iVar1 + 0x24,0xffffffff,param_1 + 0x3b,param_1); + (**(code **)(*(int *)(iVar1 + 0x9a0) + 0x18))(iVar1 + 0x9a0,0xffffffff,param_1 + 0x3d,param_1); + (**(code **)(*(int *)(iVar1 + 0x44) + 0x18))(iVar1 + 0x44,0xffffffff,param_1 + 0x40,param_1); + (**(code **)(*(int *)(iVar1 + 100) + 0x18))(iVar1 + 100,0xffffffff,param_1 + 0x41,param_1); + return param_1; +} + + + +/* @0047add4 file=? name=FUN_0047add4 */ + +void __cdecl FUN_0047add4(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004fd428; + FUN_0047abb0(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0047ae00 file=? name=FUN_0047ae00 */ + +void __cdecl FUN_0047ae00(int param_1) + +{ + FUN_0041a1a4(**(int **)(param_1 + 0xc),0x4fd374); + return; +} + + + +/* @0047b2ec file=? name=FUN_0047b2ec */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl FUN_0047b2ec(int param_1,undefined4 param_2,undefined *param_3) + +{ + int *piVar1; + char *pcVar2; + char *pcVar3; + char *pcVar4; + int iVar5; + char *pcVar6; + bool bVar7; + int local_c; + int *local_8; + + _DAT_004fd54c = 0; + FUN_00402a98((int *)&local_8,&DAT_0052330c,&DAT_004fd700); + piVar1 = local_8 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_8,3); + } + DAT_00523310 = 0; + pcVar3 = (char *)FUN_004dee74(s_REVIEW_004fd701); + DAT_004fd550 = 0; + if (pcVar3 != (char *)0x0) { + pcVar6 = &DAT_004fd708; + pcVar4 = pcVar3; + do { + if (*pcVar4 != *pcVar6) goto LAB_0047b37c; + bVar7 = true; + if (*pcVar4 == '\0') break; + pcVar2 = pcVar4 + 1; + if (*pcVar2 != pcVar6[1]) goto LAB_0047b37c; + pcVar4 = pcVar4 + 2; + pcVar6 = pcVar6 + 2; + bVar7 = *pcVar2 == '\0'; + } while (!bVar7); + if (bVar7) { + DAT_004fd550 = 1; + } + else { +LAB_0047b37c: + pcVar4 = &DAT_004fd70a; + do { + if (*pcVar3 != *pcVar4) goto LAB_0047b3ab; + bVar7 = true; + if (*pcVar3 == '\0') break; + pcVar6 = pcVar3 + 1; + if (*pcVar6 != pcVar4[1]) goto LAB_0047b3ab; + pcVar3 = pcVar3 + 2; + pcVar4 = pcVar4 + 2; + bVar7 = *pcVar6 == '\0'; + } while (!bVar7); + if (bVar7) { + DAT_004fd550 = 2; + } + } + } +LAB_0047b3ab: + if ((1 < param_1) && (local_c = 1, 1 < param_1)) { + do { + iVar5 = (*(code *)param_3)(&local_c,param_1,param_2); + if (iVar5 == 0) { + return 0; + } + local_c = local_c + 1; + } while (local_c < param_1); + } + return 1; +} + + + +/* @0047b3e8 file=? name=FUN_0047b3e8 */ + +undefined4 __cdecl FUN_0047b3e8(int param_1) + +{ + int iVar1; + + iVar1 = FUN_0041a1a4(**(int **)(param_1 + 0xc),0x4fd514); + if (iVar1 == 0) { + return 0; + } + return 1; +} + + + +/* @0047b410 file=? name=FUN_0047b410 */ + +undefined4 * __cdecl +FUN_0047b410(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4, + undefined4 param_5) + +{ + int iVar1; + + FUN_0044dfe0(param_1,param_2,param_3,param_4,param_5); + *param_1 = &PTR_FUN_004fd8bc; + iVar1 = FUN_004dee74(s_DPLARG_004fd70c); + param_1[0x34] = iVar1; + return param_1; +} + + + +/* @0047b44c file=? name=FUN_0047b44c */ + +void __cdecl FUN_0047b44c(int *param_1) + +{ + FUN_0047b468(param_1); + FUN_0045046c(param_1[8]); + return; +} + + + +/* @0047b468 file=? name=FUN_0047b468 */ + +void __cdecl FUN_0047b468(int *param_1) + +{ + FUN_0044e1b0(param_1); + return; +} + + + +/* @0047b478 file=? name=FUN_0047b478 */ + +undefined4 FUN_0047b478(void) + +{ + undefined4 *puVar1; + undefined4 uVar2; + + puVar1 = (undefined4 *)FUN_00402298(0xc); + if (puVar1 == (undefined4 *)0x0) { + uVar2 = 0; + } + else { + uVar2 = FUN_0044c2d0(puVar1,0xffffffff); + } + return uVar2; +} + + + +/* @0047b49c file=? name=FUN_0047b49c */ + +int * FUN_0047b49c(void) + +{ + int *piVar1; + + piVar1 = (int *)FUN_00402298(0x80); + if (piVar1 == (int *)0x0) { + piVar1 = (int *)0x0; + } + else { + piVar1 = FUN_004501d4(piVar1); + } + return piVar1; +} + + + +/* @0047b4c0 file=? name=FUN_0047b4c0 */ + +undefined4 * __cdecl FUN_0047b4c0(undefined4 param_1) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00402298(0xd10); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_00475c18(puVar1); + } + (**(code **)(puVar1[0x68] + 0x14))(puVar1 + 0x68,0xffffffff,param_1,7,param_1); + return puVar1; +} + + + +/* @0047b508 file=? name=FUN_0047b508 */ + +undefined4 * FUN_0047b508(void) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00402298(0x38); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_0047ce3c(puVar1,&DAT_004fdc6c); + } + return puVar1; +} + + + +/* @0047b530 file=? name=FUN_0047b530 */ + +undefined4 * __cdecl FUN_0047b530(int param_1) + +{ + undefined4 *puVar1; + + if (*(int *)(param_1 + 0xd0) == 0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = (undefined4 *)FUN_00402298(0x3e0); + if (puVar1 == (undefined4 *)0x0) { + return (undefined4 *)0x0; + } + puVar1 = FUN_0045a180(puVar1,DAT_004e8238,DAT_004e823c,1,0,1); + } + return puVar1; +} + + + +/* @0047b57c file=? name=FUN_0047b57c */ + +undefined4 * FUN_0047b57c(void) + +{ + int iVar1; + int iVar2; + undefined4 *puVar3; + + iVar1 = FUN_004dee74(s_AWE_FRONT_004fd713); + iVar2 = FUN_004dee74(s_AWE_REAR_004fd71d); + if ((iVar1 == 0) || (iVar2 == 0)) { + puVar3 = (undefined4 *)0x0; + } + else { + puVar3 = (undefined4 *)FUN_00402298(0x1b0); + if (puVar3 == (undefined4 *)0x0) { + return (undefined4 *)0x0; + } + puVar3 = FUN_0046739c(puVar3,DAT_004e8238,0); + } + return puVar3; +} + + + +/* @0047b5d0 file=? name=FUN_0047b5d0 */ + +undefined4 * FUN_0047b5d0(void) + +{ + int iVar1; + undefined4 *puVar2; + + iVar1 = FUN_004dee74(s_L4GAUGE_004fd726); + if (iVar1 == 0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = (undefined4 *)FUN_00402298(0x1c53c); + if (puVar2 == (undefined4 *)0x0) { + return (undefined4 *)0x0; + } + puVar2 = FUN_0046f97c(puVar2); + } + return puVar2; +} + + + +/* @0047b608 file=? name=FUN_0047b608 */ + +void __cdecl FUN_0047b608(int param_1) + +{ + FUN_0047bba8(param_1,0); + FUN_0044e7ac(param_1); + return; +} + + + +/* @0047b624 file=? name=FUN_0047b624 */ + +void __cdecl FUN_0047b624(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004fd8bc; + FUN_0044e8a0(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0047b650 file=? name=FUN_0047b650 */ + +int __cdecl FUN_0047b650(int *param_1,undefined4 param_2) + +{ + FUN_0044ea8c(param_1,param_2); + FUN_0047bba8((int)param_1,1); + return param_1[0x1b]; +} + + + +/* @0047b678 file=munga_l4/l4app.cpp name=FUN_0047b678 */ + +int * __cdecl FUN_0047b678(int param_1,int param_2) + +{ + undefined4 *puVar1; + int iVar2; + int *piVar3; + char *pcVar4; + char *pcVar5; + char local_3c [2]; + char acStack_3a [30]; + undefined4 local_1c; + undefined4 local_18; + undefined4 *local_c; + undefined4 *local_8; + + piVar3 = (int *)0x0; + if (*(int *)(param_2 + 0x1c) == 0x45) { + piVar3 = FUN_0042d16c(param_2); + pcVar4 = s_ControlsMapper_004fd72e; + pcVar5 = local_3c; + for (iVar2 = 3; iVar2 != 0; iVar2 = iVar2 + -1) { + *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4; + pcVar4 = pcVar4 + 4; + pcVar5 = pcVar5 + 4; + } + *(undefined2 *)pcVar5 = *(undefined2 *)pcVar4; + pcVar5[2] = pcVar4[2]; + local_1c = 0xf; + local_18 = 0x30; + iVar2 = *(int *)(*(int *)(param_1 + 0x3c) + 0xc98); + if (iVar2 == 2) { + local_8 = (undefined4 *)FUN_00402298(0x110); + if (local_8 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_0047ac5c(local_8,piVar3,0,local_3c,&DAT_004fd318); + } + FUN_0042c630((int)piVar3,puVar1); + } + else if (iVar2 == 4) { + local_c = (undefined4 *)FUN_00402298(0x108); + if (local_c == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_0047ad3c(local_c,piVar3,0,local_3c,&DAT_004fd364); + } + FUN_0042c630((int)piVar3,puVar1); + } + else { + FUN_0040385c(s_L4Application__MakeViewpointEnti_004fd73d, + s_d__tesla_bt_munga_l4_L4APP_CPP_004fd775,0x231); + } + if (*(int **)(param_1 + 0x4c) != (int *)0x0) { + FUN_0046ff64(*(int **)(param_1 + 0x4c),&DAT_004fd794,piVar3); + } + } + return piVar3; +} + + + +/* @0047b788 file=munga_l4/l4app.cpp name=FUN_0047b788 */ + +void __cdecl FUN_0047b788(int param_1) + +{ + int iVar1; + bool bVar2; + undefined4 *puVar3; + + iVar1 = *(int *)(param_1 + 0x88); + if (iVar1 == 3) { + FUN_0047bba8(param_1,0); + } + else if (iVar1 == 4) { + iVar1 = *(int *)(param_1 + 0x3c); + if ((*(int *)(iVar1 + 0xcec) == 0) || (*(int *)(iVar1 + 0xcf4) != 0)) { + bVar2 = false; + } + else { + bVar2 = true; + } + if (bVar2) { + puVar3 = (undefined4 *)FUN_00414b60(); + *(undefined4 *)(iVar1 + 0xcf0) = *puVar3; + *(undefined4 *)(iVar1 + 0xcf8) = 1; + } + else { + if ((*(int *)(iVar1 + 0xcec) == 0) || (*(int *)(iVar1 + 0xcf4) == 0)) { + bVar2 = false; + } + else { + bVar2 = true; + } + if (bVar2) { + puVar3 = (undefined4 *)FUN_00414b60(); + *(undefined4 *)(iVar1 + 0xcf0) = *puVar3; + *(undefined4 *)(iVar1 + 0xcf8) = 1; + } + } + } + else if (iVar1 != 5) { + FUN_0040385c(s_Application__RunMissionMessageHa_004fd799, + s_d__tesla_bt_munga_l4_L4APP_CPP_004fd7d4,0x277); + } + FUN_0044ecdc(param_1); + return; +} + + + +/* @0047b864 file=? name=FUN_0047b864 */ + +void __cdecl FUN_0047b864(int param_1) + +{ + int *piVar1; + int iVar2; + uint local_14 [4]; + + FUN_0044eeb4(param_1); + FUN_0047bba8(param_1,1); + local_14[0] = 0xc; + local_14[1] = 0xc; + local_14[2] = 1; + piVar1 = (int *)FUN_00414b60(); + local_14[3] = *piVar1; + iVar2 = FUN_004dcd94(); + local_14[3] = local_14[3] + iVar2; + FUN_0041acbc(*(int *)(param_1 + 0x60),1,param_1,local_14,local_14[3]); + return; +} + + + +/* @0047bb20 file=? name=FUN_0047bb20 */ + +void __cdecl FUN_0047bb20(int param_1) + +{ + FUN_0047bba8(param_1,0); + return; +} + + + +/* @0047bb34 file=? name=FUN_0047bb34 */ + +undefined8 __cdecl FUN_0047bb34(int param_1,int param_2) + +{ + undefined8 uVar1; + + if (param_2 != 0) { + FUN_00476568(*(int *)(param_1 + 0x3c),0x16,0x3c); + FUN_00476568(*(int *)(param_1 + 0x3c),0x17,0x3c); + uVar1 = FUN_00476568(*(int *)(param_1 + 0x3c),0x1e,0x3c); + return uVar1; + } + FUN_00476568(*(int *)(param_1 + 0x3c),0x16,0); + FUN_00476568(*(int *)(param_1 + 0x3c),0x17,0); + uVar1 = FUN_00476568(*(int *)(param_1 + 0x3c),0x1e,0); + return uVar1; +} + + + +/* @0047bba8 file=? name=FUN_0047bba8 */ + +void __cdecl FUN_0047bba8(int param_1,int param_2) + +{ + FUN_0047bb34(param_1,param_2); + if (param_2 == 0) { + FUN_00476568(*(int *)(param_1 + 0x3c),0x3e,0); + if (*(int *)(param_1 + 0x4c) != 0) { + FUN_0046ff44(*(int *)(param_1 + 0x4c),1.5); + } + } + else { + FUN_00476568(*(int *)(param_1 + 0x3c),0x3e,0x3c); + if (*(int *)(param_1 + 0x4c) != 0) { + FUN_0046ff24(*(int *)(param_1 + 0x4c),1.5); + } + } + return; +} + + + +/* @0047bd48 file=? name=FUN_0047bd48 */ + +undefined4 * __cdecl FUN_0047bd48(undefined4 *param_1) + +{ + FUN_0043457c(param_1); + *param_1 = &PTR_FUN_004fdbfc; + return param_1; +} + + + +/* @0047bd64 file=? name=FUN_0047bd64 */ + +void __cdecl FUN_0047bd64(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004fdbfc; + FUN_004345c0(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0047bd90 file=? name=FUN_0047bd90 */ + +void FUN_0047bd90(void) + +{ + return; +} + + + +/* @0047bd98 file=? name=FUN_0047bd98 */ + +void FUN_0047bd98(void) + +{ + return; +} + + + +/* @0047bda0 file=? name=FUN_0047bda0 */ + +void __cdecl FUN_0047bda0(undefined4 param_1,undefined4 *param_2) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00414b60(); + param_2[3] = *puVar1; + FUN_0044f7f4(*(int **)(*(int *)PTR_DAT_004fd91c + 0x18),param_2); + return; +} + + + +/* @0047bdcc file=? name=FUN_0047bdcc */ + +void FUN_0047bdcc(void) + +{ + return; +} + + + +/* @0047bdd4 file=? name=FUN_0047bdd4 */ + +int * __cdecl FUN_0047bdd4(int *param_1) + +{ + FUN_004501d4(param_1); + *param_1 = (int)&PTR_FUN_004fdbc0; + return param_1; +} + + + +/* @0047bdf0 file=? name=FUN_0047bdf0 */ + +void __cdecl FUN_0047bdf0(int *param_1,int param_2) + +{ + int *piVar1; + byte bVar2; + int *piVar3; + int iVar4; + undefined4 *puVar5; + uint *puVar6; + int iVar7; + int local_20 [5]; + int *local_c; + int *local_8; + + FUN_00450554(param_1,param_2); + piVar3 = *(int **)(*(int *)PTR_DAT_004fd91c + 0x18); + puVar5 = (undefined4 *)(**(code **)*piVar3)(piVar3); + *puVar5 = *(undefined4 *)(DAT_004efc94 + 0x54); + (**(code **)(*piVar3 + 0x14))(piVar3,4); + bVar2 = *(byte *)(*(int *)(DAT_004efc94 + 0x68) + 5); + puVar6 = (uint *)(**(code **)*piVar3)(piVar3); + *puVar6 = (uint)bVar2; + (**(code **)(*piVar3 + 0x14))(piVar3,4); + iVar4 = *(int *)(DAT_004efc94 + 0x2c); + FUN_0044d834(local_20,param_2); + while( true ) { + iVar7 = (**(code **)(local_20[0] + 0x28))(local_20); + if (iVar7 == 0) break; + local_c = *(int **)(iVar7 + 0xc); + local_c[3] = local_c[3] + 1; + local_c[3] = local_c[3] + 1; + local_c[3] = local_c[3] + 1; + local_8 = local_c; + iVar7 = FUN_00452244(param_1,local_c); + iVar7 = FUN_004290d8(iVar4,iVar7); + puVar6 = (uint *)(**(code **)*piVar3)(piVar3); + *puVar6 = (uint)(iVar7 != *(int *)(iVar4 + 0x14)); + (**(code **)(*piVar3 + 0x14))(piVar3,4); + puVar5 = (undefined4 *)(**(code **)*piVar3)(piVar3); + *puVar5 = *(undefined4 *)(iVar7 + 0xc); + (**(code **)(*piVar3 + 0x14))(piVar3,4); + piVar1 = local_8 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_8,3); + } + piVar1 = local_c + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_c,3); + } + } + FUN_0044d858(local_20,2); + return; +} + + + +/* @0047bf28 file=? name=FUN_0047bf28 */ + +void __cdecl FUN_0047bf28(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004fdbc0; + FUN_00450960(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0047bf54 file=? name=FUN_0047bf54 */ + +void __cdecl FUN_0047bf54(int *param_1,undefined4 *param_2,int param_3) + +{ + int *piVar1; + undefined4 *puVar2; + + if (*(int *)(param_3 + 4) == 3) { + piVar1 = *(int **)(*(int *)PTR_DAT_004fd91c + 0x18); + if (*(int *)(param_3 + 0xc) == 0) { + (**(code **)(*piVar1 + 0xc))(piVar1,0); + } + puVar2 = (undefined4 *)FUN_00414b60(); + param_2[3] = *puVar2; + FUN_0044f7f4(piVar1,param_2); + } + FUN_0041d59c(param_1,param_2,param_3); + return; +} + + + +/* @0047bfc4 file=? name=FUN_0047bfc4 */ + +undefined4 * __cdecl FUN_0047bfc4(undefined4 *param_1) + +{ + FUN_0041d5b4(param_1,&DAT_004e3744); + *param_1 = &PTR_FUN_004fdb84; + return param_1; +} + + + +/* @0047bfe4 file=? name=FUN_0047bfe4 */ + +void FUN_0047bfe4(undefined4 param_1,int param_2) + +{ + int *piVar1; + uint uVar2; + int *piVar3; + uint *puVar4; + undefined4 *puVar5; + int iVar6; + uint uVar7; + uint auStack_38 [8]; + undefined4 uStack_18; + int iStack_14; + int *piStack_10; + int *piStack_c; + int iStack_8; + + FUN_0044d834(auStack_38 + 3,param_2); + piVar1 = *(int **)(DAT_004efc94 + 0x18); + piVar3 = (int *)(**(code **)*piVar1)(piVar1); + iVar6 = *piVar3; + (**(code **)(*piVar1 + 0x14))(piVar1,4); + puVar4 = (uint *)(**(code **)*piVar1)(piVar1); + uVar2 = *puVar4; + (**(code **)(*piVar1 + 0x14))(piVar1,4); + if (iVar6 != *(int *)(DAT_004efc94 + 0x54)) { + FUN_004dbb24(&DAT_00524e20,s_Error___Not_a_spool_file_for_thi_004fd9b0,(char *)0x0); + FUN_004036a0(1); + } + uVar7 = (uint)*(byte *)(*(int *)(DAT_004efc94 + 0x68) + 5); + if (uVar2 != uVar7) { + FUN_004dbb24(&DAT_00524e20,s_Error___Spool_file_major_data_ve_004fd9e2,(char *)0x0); + piVar3 = FUN_004db78c(&DAT_00524e20,uVar7); + FUN_004dbb24(piVar3,s___not_004fda15,(char *)0x0); + piVar3 = FUN_004db78c(piVar3,uVar2); + FUN_004dbb24(piVar3,&DAT_004fda1c,(char *)0x0); + FUN_004036a0(1); + } + iStack_8 = *(int *)(DAT_004efc94 + 0x2c); + while( true ) { + iVar6 = (**(code **)(auStack_38[3] + 0x28))(auStack_38 + 3); + if (iVar6 == 0) break; + piStack_10 = *(int **)(iVar6 + 0xc); + piStack_10[3] = piStack_10[3] + 1; + piStack_10[3] = piStack_10[3] + 1; + piStack_c = piStack_10; + piVar3 = (int *)(**(code **)*piVar1)(piVar1); + iStack_14 = *piVar3; + (**(code **)(*piVar1 + 0x14))(piVar1,4); + puVar5 = (undefined4 *)(**(code **)*piVar1)(piVar1); + uStack_18 = *puVar5; + (**(code **)(*piVar1 + 0x14))(piVar1,4); + puVar5 = (undefined4 *)FUN_00402298(0x1068); + if (puVar5 == (undefined4 *)0x0) { + puVar5 = (undefined4 *)0x0; + } + else { + puVar5 = FUN_00450134(puVar5,uStack_18,*(undefined4 *)(iVar6 + 0x10),0,0,(int *)&piStack_c); + } + if (iStack_14 == 0) { + FUN_00428ee0(iStack_8,(int)puVar5); + } + else { + FUN_00428f94(iStack_8,(int)puVar5); + } + piVar3 = piStack_c + 3; + *piVar3 = *piVar3 + -1; + if (*piVar3 == 0) { + FUN_004024d8(piStack_c,3); + } + piVar3 = piStack_10 + 3; + *piVar3 = *piVar3 + -1; + if (*piVar3 == 0) { + FUN_004024d8(piStack_10,3); + } + } + auStack_38[0] = 0xc; + auStack_38[1] = 10; + auStack_38[2] = 1; + FUN_0041acbc(*(int *)(DAT_004efc94 + 0x60),2,DAT_004efc94,auStack_38,DAT_004e17f4); + FUN_0044d858((int *)(auStack_38 + 3),2); + return; +} + + + +/* @0047bfea file=? name=FUN_0047bfea */ + +void FUN_0047bfea(void) + +{ + int *piVar1; + uint uVar2; + int iVar3; + int *piVar4; + undefined4 uVar5; + int *piVar6; + uint *puVar7; + undefined4 *puVar8; + int iVar9; + uint uVar10; + int unaff_EBP; + + FUN_0044d834((undefined4 *)(unaff_EBP + -0x28),*(int *)(unaff_EBP + 0xc)); + piVar1 = *(int **)(DAT_004efc94 + 0x18); + piVar6 = (int *)(**(code **)*piVar1)(piVar1); + iVar9 = *piVar6; + (**(code **)(*piVar1 + 0x14))(piVar1,4); + puVar7 = (uint *)(**(code **)*piVar1)(piVar1); + uVar2 = *puVar7; + (**(code **)(*piVar1 + 0x14))(piVar1,4); + if (iVar9 != *(int *)(DAT_004efc94 + 0x54)) { + FUN_004dbb24(&DAT_00524e20,s_Error___Not_a_spool_file_for_thi_004fd9b0,(char *)0x0); + FUN_004036a0(1); + } + uVar10 = (uint)*(byte *)(*(int *)(DAT_004efc94 + 0x68) + 5); + if (uVar2 != uVar10) { + FUN_004dbb24(&DAT_00524e20,s_Error___Spool_file_major_data_ve_004fd9e2,(char *)0x0); + piVar6 = FUN_004db78c(&DAT_00524e20,uVar10); + FUN_004dbb24(piVar6,s___not_004fda15,(char *)0x0); + piVar6 = FUN_004db78c(piVar6,uVar2); + FUN_004dbb24(piVar6,&DAT_004fda1c,(char *)0x0); + FUN_004036a0(1); + } + *(undefined4 *)(unaff_EBP + -4) = *(undefined4 *)(DAT_004efc94 + 0x2c); + while( true ) { + iVar9 = (**(code **)(*(int *)(unaff_EBP + -0x28) + 0x28))(unaff_EBP + -0x28); + if (iVar9 == 0) break; + iVar3 = *(int *)(iVar9 + 0xc); + *(int *)(unaff_EBP + -0xc) = iVar3; + piVar6 = (int *)(iVar3 + 0xc); + *piVar6 = *piVar6 + 1; + *(int *)(unaff_EBP + -8) = *(int *)(unaff_EBP + -0xc); + piVar6 = (int *)(*(int *)(unaff_EBP + -0xc) + 0xc); + *piVar6 = *piVar6 + 1; + puVar8 = (undefined4 *)(**(code **)*piVar1)(piVar1); + *(undefined4 *)(unaff_EBP + -0x10) = *puVar8; + (**(code **)(*piVar1 + 0x14))(piVar1,4); + puVar8 = (undefined4 *)(**(code **)*piVar1)(piVar1); + *(undefined4 *)(unaff_EBP + -0x14) = *puVar8; + (**(code **)(*piVar1 + 0x14))(piVar1,4); + puVar8 = (undefined4 *)FUN_00402298(0x1068); + if (puVar8 == (undefined4 *)0x0) { + puVar8 = (undefined4 *)0x0; + } + else { + puVar8 = FUN_00450134(puVar8,*(undefined4 *)(unaff_EBP + -0x14),*(undefined4 *)(iVar9 + 0x10), + 0,0,(int *)(unaff_EBP + -8)); + } + if (*(int *)(unaff_EBP + -0x10) == 0) { + FUN_00428ee0(*(int *)(unaff_EBP + -4),(int)puVar8); + } + else { + FUN_00428f94(*(int *)(unaff_EBP + -4),(int)puVar8); + } + piVar4 = *(int **)(unaff_EBP + -8); + piVar6 = piVar4 + 3; + *piVar6 = *piVar6 + -1; + if (*piVar6 == 0) { + FUN_004024d8(piVar4,3); + } + piVar4 = *(int **)(unaff_EBP + -0xc); + piVar6 = piVar4 + 3; + *piVar6 = *piVar6 + -1; + if (*piVar6 == 0) { + FUN_004024d8(piVar4,3); + } + } + *(undefined4 *)(unaff_EBP + -0x34) = 0xc; + *(undefined4 *)(unaff_EBP + -0x30) = 10; + uVar5 = DAT_004e17f4; + *(undefined4 *)(unaff_EBP + -0x2c) = 1; + FUN_0041acbc(*(int *)(DAT_004efc94 + 0x60),2,DAT_004efc94,(uint *)(unaff_EBP + -0x34),uVar5); + FUN_0044d858((int *)(unaff_EBP + -0x28),2); + return; +} + + + diff --git a/reference/decomp/archive_2025export/all/part_010.c b/reference/decomp/archive_2025export/all/part_010.c new file mode 100644 index 0000000..3dfa02f --- /dev/null +++ b/reference/decomp/archive_2025export/all/part_010.c @@ -0,0 +1,10169 @@ +/* @0047c1f0 file=? name=FUN_0047c1f0 */ + +undefined4 __cdecl FUN_0047c1f0(int param_1) + +{ + int iVar1; + undefined4 *puVar2; + undefined4 uVar3; + int local_20 [7]; + + FUN_0041d66c(param_1); + iVar1 = *(int *)(DAT_004efc94 + 0x2c); + FUN_0042939c(local_20,iVar1); + while( true ) { + puVar2 = (undefined4 *)(**(code **)(local_20[0] + 0x28))(local_20); + if (puVar2 == (undefined4 *)0x0) break; + FUN_00428fdc(iVar1,(int)puVar2); + if (puVar2 != (undefined4 *)0x0) { + (**(code **)*puVar2)(puVar2,3); + } + } + uVar3 = 1; + FUN_004293c0(local_20,2); + return uVar3; +} + + + +/* @0047c260 file=? name=FUN_0047c260 */ + +undefined4 FUN_0047c260(void) + +{ + return 0; +} + + + +/* @0047c268 file=? name=FUN_0047c268 */ + +void __cdecl FUN_0047c268(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004fdb84; + FUN_0041d6a8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0047c294 file=? name=FUN_0047c294 */ + +void __cdecl FUN_0047c294(int param_1) + +{ + FUN_0041bbd8(param_1 + 0x74,3); + return; +} + + + +/* @0047c2ac file=? name=FUN_0047c2ac */ + +void __cdecl FUN_0047c2ac(int param_1) + +{ + FUN_0041bbd8(param_1 + 0x74,5); + return; +} + + + +/* @0047c2c4 file=? name=FUN_0047c2c4 */ + +void __cdecl FUN_0047c2c4(int param_1,uint *param_2) + +{ + int *piVar1; + int iVar2; + int iVar3; + + if (*(int *)(param_1 + 0xd4) == 0) { + *(undefined4 *)(param_1 + 0xd4) = 1; + piVar1 = (int *)FUN_00414b60(); + iVar3 = *piVar1; + iVar2 = FUN_004dcd94(); + FUN_0041acbc(*(int *)(param_1 + 0x60),2,param_1,param_2,iVar3 + iVar2); + } + else { + iVar3 = FUN_0044e13c(param_1); + FUN_0044fa6c(iVar3,*(int **)(param_1 + 0x18)); + *(undefined4 *)(param_1 + 0x18) = 0; + FUN_0047b864(param_1); + } + return; +} + + + +/* @0047c380 file=? name=FUN_0047c380 */ + +void __cdecl FUN_0047c380(int *param_1,undefined4 *param_2,int param_3) + +{ + undefined4 *puVar1; + + if (*(int *)(param_3 + 4) != 5) { + if (*(int *)(param_3 + 4) != 6) goto LAB_0047c3e7; + if (param_1[0x35] != 0) { + puVar1 = (undefined4 *)FUN_00414b60(); + param_2[3] = *puVar1; + FUN_0044f7f4((int *)param_1[6],param_2); + goto LAB_0047c3e7; + } + } + puVar1 = (undefined4 *)FUN_00414b60(); + param_2[3] = *puVar1; + FUN_0044f7f4((int *)param_1[6],param_2); +LAB_0047c3e7: + FUN_0041d59c(param_1,param_2,param_3); + return; +} + + + +/* @0047c3fc file=? name=FUN_0047c3fc */ + +undefined4 * __cdecl FUN_0047c3fc(undefined4 *param_1,undefined4 param_2,undefined4 param_3) + +{ + FUN_0047b410(param_1,param_2,param_3,0x3eb,&DAT_004fd9a8); + *param_1 = &PTR_FUN_004fdb24; + param_1[0x35] = 0; + return param_1; +} + + + +/* @0047c434 file=? name=FUN_0047c434 */ + +undefined4 FUN_0047c434(void) + +{ + return 0; +} + + + +/* @0047c43c file=? name=FUN_0047c43c */ + +undefined4 * FUN_0047c43c(void) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00402298(0x44); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_0047bd48(puVar1); + } + return puVar1; +} + + + +/* @0047c45c file=? name=FUN_0047c45c */ + +int * FUN_0047c45c(void) + +{ + int *piVar1; + + piVar1 = (int *)FUN_00402298(0x80); + if (piVar1 == (int *)0x0) { + piVar1 = (int *)0x0; + } + else { + piVar1 = FUN_0047bdd4(piVar1); + } + return piVar1; +} + + + +/* @0047c480 file=? name=FUN_0047c480 */ + +void __cdecl FUN_0047c480(int *param_1) + +{ + int iVar1; + + FUN_0044e1b0(param_1); + FUN_0045046c(param_1[8]); + iVar1 = FUN_0044e13c((int)param_1); + iVar1 = FUN_0044f9c4(iVar1); + param_1[6] = iVar1; + return; +} + + + +/* @0047c4b0 file=? name=FUN_0047c4b0 */ + +void FUN_0047c4b0(void) + +{ + return; +} + + + +/* @0047c4b8 file=? name=FUN_0047c4b8 */ + +undefined4 FUN_0047c4b8(void) + +{ + return 0; +} + + + +/* @0047c4c0 file=? name=FUN_0047c4c0 */ + +undefined4 FUN_0047c4c0(void) + +{ + return 0; +} + + + +/* @0047c4c8 file=? name=FUN_0047c4c8 */ + +undefined4 FUN_0047c4c8(void) + +{ + return 0; +} + + + +/* @0047c4d0 file=? name=FUN_0047c4d0 */ + +undefined4 * __cdecl FUN_0047c4d0(undefined4 param_1,int param_2,int param_3) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00402298(0xe4); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_0044d1c0(puVar1,param_2,param_3); + } + return puVar1; +} + + + +/* @0047c500 file=? name=FUN_0047c500 */ + +undefined4 FUN_0047c500(void) + +{ + return 0; +} + + + +/* @0047c508 file=? name=FUN_0047c508 */ + +undefined4 __cdecl FUN_0047c508(int param_1) + +{ + undefined4 uVar1; + + (**(code **)(**(int **)(param_1 + 0x3c) + 0x18))(*(int **)(param_1 + 0x3c)); + if ((*(int *)(param_1 + 0x70) == 0) || (DAT_004efc98 != 0)) { + uVar1 = 0; + } + else { + uVar1 = 1; + } + return uVar1; +} + + + +/* @0047c538 file=? name=FUN_0047c538 */ + +void __cdecl FUN_0047c538(int param_1) + +{ + int iVar1; + + iVar1 = FUN_0041d8a8(*(int **)(param_1 + 0x20)); + if (iVar1 == 0) { + FUN_0041b07c(*(int *)(param_1 + 0x60),2); + } + return; +} + + + +/* @0047c560 file=? name=FUN_0047c560 */ + +undefined4 __cdecl FUN_0047c560(int param_1) + +{ + undefined4 uVar1; + + FUN_0044e6e8(param_1); + if ((DAT_004efc98 == 0) && (*(int *)(param_1 + 0xd4) == 0)) { + uVar1 = 1; + } + else { + uVar1 = 0; + } + return uVar1; +} + + + +/* @0047c590 file=? name=FUN_0047c590 */ + +void __cdecl FUN_0047c590(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004fdb24; + FUN_0047b624(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0047c5bc file=? name=FUN_0047c5bc */ + +void __cdecl FUN_0047c5bc(int param_1) + +{ + FUN_0041a1a4(**(int **)(param_1 + 0xc),0x4fd978); + return; +} + + + +/* @0047c5d8 file=? name=FUN_0047c5d8 */ + +undefined4 * __cdecl FUN_0047c5d8(undefined4 *param_1) + +{ + FUN_0044dd08(param_1,0x48); + *param_1 = &PTR_FUN_004fdb04; + return param_1; +} + + + +/* @0047c5f8 file=munga_l4/l4splr.cpp name=FUN_0047c5f8 */ + +void FUN_0047c5f8(void) + +{ + FUN_0040385c(s_SpoolerTask__DispatchPacket___sh_004fda65, + s_d__tesla_bt_munga_l4_L4SPLR_CPP_004fda96,0x29e); + return; +} + + + +/* @0047c614 file=munga_l4/l4splr.cpp name=FUN_0047c614 */ + +undefined4 FUN_0047c614(void) + +{ + FUN_0040385c(s_SpoolerTask__GetTimeBias___shoul_004fdab6, + s_d__tesla_bt_munga_l4_L4SPLR_CPP_004fdae4,0x2a6); + return 0; +} + + + +/* @0047c634 file=? name=FUN_0047c634 */ + +void __cdecl FUN_0047c634(int *param_1) + +{ + int *piVar1; + int iVar2; + int iVar3; + int iVar4; + int *piVar5; + + piVar5 = *(int **)(DAT_004efc94 + 0x18); + if (piVar5 != (int *)0x0) { + iVar2 = *(int *)(DAT_004efc94 + 0x88); + if (iVar2 == 1) { + piVar1 = (int *)(**(code **)*piVar5)(piVar5); + while (*piVar1 == 0) { + FUN_0044f850(piVar5); + (**(code **)(*param_1 + 0x18))(param_1,piVar1); + piVar1 = (int *)(**(code **)*piVar5)(piVar5); + } + } + else { + if (iVar2 != 2) { + if (iVar2 - 4U < 2) { + while( true ) { + iVar3 = (**(code **)*piVar5)(piVar5); + iVar2 = *(int *)(iVar3 + 0xc); + iVar4 = (**(code **)(*param_1 + 0x1c))(param_1); + piVar1 = (int *)FUN_00414b60(); + if (*piVar1 < iVar2 + iVar4) { + return; + } + FUN_0044f850(piVar5); + (**(code **)(*param_1 + 0x18))(param_1,iVar3); + piVar5 = *(int **)(DAT_004efc94 + 0x18); + if (piVar5 == (int *)0x0) break; + iVar2 = (**(code **)(*piVar5 + 4))(piVar5); + if (iVar2 == 0) { + return; + } + } + return; + } + if (iVar2 - 4U != 7) { + return; + } + } + piVar1 = (int *)(**(code **)*piVar5)(piVar5); + while ((*piVar1 != 4 && (iVar2 = (**(code **)(*piVar5 + 4))(piVar5), iVar2 != 0))) { + FUN_0044f850(piVar5); + (**(code **)(*param_1 + 0x18))(param_1,piVar1); + piVar1 = (int *)(**(code **)*piVar5)(piVar5); + } + } + } + return; +} + + + +/* @0047c734 file=? name=FUN_0047c734 */ + +void __cdecl FUN_0047c734(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004fdb04; + FUN_0044dd2c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0047c7e8 file=? name=FUN_0047c7e8 */ + +undefined8 __cdecl FUN_0047c7e8(int param_1,int param_2) + +{ + undefined1 uVar1; + undefined8 uVar2; + + uVar1 = 0x3c; + if (param_2 == 0) { + uVar1 = 0; + } + uVar2 = FUN_00476568(param_1,0x39,uVar1); + return uVar2; +} + + + +/* @0047c80c file=? name=FUN_0047c80c */ + +undefined4 * __cdecl FUN_0047c80c(undefined4 *param_1,undefined4 param_2,undefined4 param_3) + +{ + int iVar1; + + FUN_0044fafc(param_1,param_2,0); + *param_1 = &PTR_FUN_004fdd54; + param_1[0x10] = param_3; + param_1[10] = *(undefined4 *)(DAT_004efc94 + 0x3c); + param_1[0xe] = 0xffffffff; + param_1[0xf] = 0xffffffff; + param_1[0x12] = 0; + param_1[0xb] = 0; + param_1[0xc] = 0; + param_1[9] = 0; + iVar1 = FUN_004dee74(s_L4INTERCOM_004fdcb5); + if (iVar1 == 0) { + param_1[0x15] = 0xfffffffe; + } + else { + FUN_0047ca28((int)param_1); + } + return param_1; +} + + + +/* @0047c880 file=? name=FUN_0047c880 */ + +void __cdecl FUN_0047c880(int *param_1,byte param_2) + +{ + int *piVar1; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004fdd54; + (**(code **)(*param_1 + 8))(param_1,0); + FUN_0047c7e8(param_1[10],0); + if (param_1[0x15] == -1) { + piVar1 = (int *)FUN_00402298(0x20); + if (piVar1 == (int *)0x0) { + piVar1 = (int *)0x0; + } + else { + piVar1 = FUN_00403e84(piVar1,s_FAILURE_LOG_004fdcc0,1); + } + FUN_00404298((int)piVar1,s_Intercom_004fdccc,s_seekError_004fdcd5,1); + FUN_00403ecc(piVar1,3); + } + FUN_0044fb40(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0047c918 file=? name=FUN_0047c918 */ + +undefined4 FUN_0047c918(void) + +{ + FUN_0044fb84(); + return 1; +} + + + +/* @0047c92c file=? name=FUN_0047c92c */ + +void __cdecl FUN_0047c92c(int param_1,undefined4 param_2) + +{ + if ((*(int *)(param_1 + 0x54) != -2) && (*(int *)(param_1 + 0x54) != -1)) { + FUN_0044fc00(param_1,param_2); + } + return; +} + + + +/* @0047c94c file=? name=FUN_0047c94c */ + +undefined8 __fastcall FUN_0047c94c(undefined4 param_1,int param_2,int param_3,undefined4 param_4) + +{ + undefined1 uVar1; + int iVar2; + undefined8 uVar3; + + iVar2 = *(int *)(param_3 + 0x54); + if (iVar2 == 3) { + FUN_0044fc8c(param_3,param_4); + iVar2 = *(int *)(param_3 + 0x1c); + param_2 = *(int *)(param_3 + 0x48); + if (iVar2 != param_2) { + *(int *)(param_3 + 0x48) = iVar2; + uVar1 = 0x3c; + if (*(int *)(param_3 + 0x1c) == 0) { + uVar1 = 0; + } + FUN_00476568(*(int *)(param_3 + 0x28),0x3b,uVar1); + uVar1 = 0x3c; + if (*(int *)(param_3 + 0x1c) == 0) { + uVar1 = 0x14; + } + uVar3 = FUN_00476568(*(int *)(param_3 + 0x28),0x20,uVar1); + param_2 = (int)((ulonglong)uVar3 >> 0x20); + iVar2 = (int)uVar3; + } + } + return CONCAT44(param_2,iVar2); +} + + + +/* @0047c9b4 file=? name=FUN_0047c9b4 */ + +void __cdecl FUN_0047c9b4(int *param_1,int param_2) + +{ + if ((param_2 != 0) && (param_1[8] == 0)) { + FUN_0044fd14(param_1,param_2); + FUN_00476568(param_1[10],0x20,0); + FUN_0047cdc0((int)param_1,0); + } + if ((param_2 == 0) && (param_1[8] != 0)) { + FUN_0044fd14(param_1,0); + FUN_0047cdc0((int)param_1,1); + param_1[0x12] = 2; + (**(code **)(*param_1 + 8))(param_1,param_1[7]); + } + return; +} + + + +/* @0047ca28 file=? name=FUN_0047ca28 */ + +void __cdecl FUN_0047ca28(int param_1) + +{ + *(undefined4 *)(param_1 + 0x50) = 0; + *(undefined4 *)(param_1 + 0x34) = 0; + *(undefined4 *)(param_1 + 0x44) = 0x54; + FUN_0047cdc0(param_1,0); + FUN_0047c7e8(*(int *)(param_1 + 0x28),0); + *(undefined4 *)(param_1 + 0x54) = 0; + return; +} + + + +/* @0047ca64 file=? name=FUN_0047ca64 */ + +int __cdecl FUN_0047ca64(int param_1,float param_2) + +{ + int iVar1; + int iVar2; + int extraout_ECX; + int *piVar3; + int extraout_EDX; + int extraout_EDX_00; + int iVar4; + undefined8 uVar5; + + iVar2 = *(int *)(param_1 + 0x54); + if ((iVar2 != -2) && (iVar2 != -1)) { + if (iVar2 == 3) { + if (*(int *)(param_1 + 0x24) < 1) { + if (*(int *)(param_1 + 0x24) < 0) { + FUN_0044fc1c(param_1,0); + *(undefined4 *)(param_1 + 0x24) = 0; + } + } + else { + FUN_0044fc1c(param_1,1); + *(undefined4 *)(param_1 + 0x24) = 0; + } + } + else if (*(int *)(param_1 + 0x48) != 0) { + FUN_0044fc1c(param_1,0); + } + iVar2 = 0; + if ((*(int *)(param_1 + 0x4c) != 0) && (iVar2 = *(int *)(param_1 + 0x30), 0 < iVar2)) { + iVar4 = -1; + iVar1 = 0; + piVar3 = &DAT_004fdc20; + do { + if (iVar2 + -1 == *piVar3) { + iVar4 = *(int *)(param_1 + 0x40) + iVar1; + break; + } + iVar1 = iVar1 + 1; + piVar3 = piVar3 + 1; + } while (iVar1 < 7); + if (iVar4 != -1) { + FUN_0044fb98(param_1,iVar4); + } + iVar2 = 0; + *(undefined4 *)(param_1 + 0x30) = 0; + } + if (*(int *)(param_1 + 0x50) != 0) { + iVar2 = FUN_0047ca28(param_1); + } + *(float *)(param_1 + 0x34) = param_2 + *(float *)(param_1 + 0x34); + switch(*(undefined4 *)(param_1 + 0x54)) { + case 0: + iVar1 = FUN_0047cca0(param_1,0.28); + iVar2 = 0; + if (iVar1 != 0) { + *(int *)(param_1 + 0x44) = *(int *)(param_1 + 0x44) + -1; + iVar2 = *(int *)(param_1 + 0x44); + if (iVar2 < 1) { + *(undefined4 *)(param_1 + 0x54) = 0xffffffff; + *(undefined4 *)(param_1 + 0x14) = 0xffffffff; + } + else if (*(int *)(param_1 + 0x2c) < 1) { + uVar5 = FUN_0047cd10(param_1); + iVar2 = (int)uVar5; + } + else { + *(undefined4 *)(param_1 + 0x38) = 0x27; + *(undefined4 *)(param_1 + 0x54) = 2; + (**(code **)(**(int **)(DAT_004efc94 + 0x4c) + 0x50)) + (*(int **)(DAT_004efc94 + 0x4c),s_intercomEnable_004fdcdf,0); + iVar2 = *(int *)(param_1 + 0x20); + if (iVar2 == 0) { + FUN_0047cdc0(param_1,1); + FUN_0044fb98(param_1,*(undefined4 *)(param_1 + 0x40)); + iVar2 = extraout_ECX; + iVar1 = extraout_EDX_00; + } + else { + *(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(param_1 + 0x40); + iVar1 = extraout_EDX; + } + uVar5 = FUN_0047cd58(iVar2,iVar1,param_1); + iVar2 = (int)uVar5; + } + } + break; + case 1: + iVar1 = FUN_0047cca0(param_1,0.05); + iVar2 = 0; + if (iVar1 != 0) { + iVar2 = *(int *)(param_1 + 0x14) - *(int *)(param_1 + 0x38); + if (iVar2 == 0) { + *(undefined4 *)(param_1 + 0x54) = 2; + iVar2 = 0; + } + else { + if (iVar2 < 0x15) { + if (iVar2 < -0x14) { + iVar2 = iVar2 + 0x28; + } + } + else { + iVar2 = iVar2 + -0x28; + } + iVar1 = param_1; + if (iVar2 < 0) { + uVar5 = FUN_0047cd10(param_1); + iVar2 = (int)((ulonglong)uVar5 >> 0x20); + } + else { + uVar5 = FUN_0047ccc4(param_1); + iVar2 = (int)((ulonglong)uVar5 >> 0x20); + } + uVar5 = FUN_0047cd58(iVar1,iVar2,param_1); + iVar2 = (int)uVar5; + } + } + break; + case 2: + iVar1 = FUN_0047cca0(param_1,0.2); + iVar2 = 0; + if (iVar1 != 0) { + uVar5 = FUN_0047c7e8(*(int *)(param_1 + 0x28),1); + iVar2 = (int)uVar5; + *(undefined4 *)(param_1 + 0x54) = 3; + } + break; + case 3: + iVar2 = *(int *)(param_1 + 0x14); + if (iVar2 != *(int *)(param_1 + 0x38)) { + *(undefined4 *)(param_1 + 0x54) = 1; + *(undefined4 *)(param_1 + 0x34) = 0x3d4ccccd; + uVar5 = FUN_0047c7e8(*(int *)(param_1 + 0x28),0); + iVar2 = (int)uVar5; + } + } + } + return iVar2; +} + + + +/* @0047cca0 file=? name=FUN_0047cca0 */ + +undefined4 __cdecl FUN_0047cca0(int param_1,float param_2) + +{ + if (param_2 <= *(float *)(param_1 + 0x34)) { + *(undefined4 *)(param_1 + 0x34) = 0; + return 1; + } + return 0; +} + + + +/* @0047ccc4 file=? name=FUN_0047ccc4 */ + +undefined8 __cdecl FUN_0047ccc4(int param_1) + +{ + undefined8 uVar1; + + *(int *)(param_1 + 0x38) = *(int *)(param_1 + 0x38) + 1; + if (0x27 < *(int *)(param_1 + 0x38)) { + *(undefined4 *)(param_1 + 0x38) = 0; + } + FUN_00476568(*(int *)(param_1 + 0x28),0x3a,0x3c); + FUN_00476568(*(int *)(param_1 + 0x28),0x3a,0x3c); + uVar1 = FUN_00476568(*(int *)(param_1 + 0x28),0x3a,0); + return uVar1; +} + + + +/* @0047cd10 file=? name=FUN_0047cd10 */ + +undefined8 __cdecl FUN_0047cd10(int param_1) + +{ + int *piVar1; + undefined8 uVar2; + + piVar1 = (int *)(param_1 + 0x38); + *piVar1 = *piVar1 + -1; + if (*piVar1 < 0) { + *(undefined4 *)(param_1 + 0x38) = 0x27; + } + FUN_00476568(*(int *)(param_1 + 0x28),0x38,0x3c); + FUN_00476568(*(int *)(param_1 + 0x28),0x38,0x3c); + uVar2 = FUN_00476568(*(int *)(param_1 + 0x28),0x38,0); + return uVar2; +} + + + +/* @0047cd58 file=? name=FUN_0047cd58 */ + +undefined8 __fastcall FUN_0047cd58(undefined4 param_1,int param_2,int param_3) + +{ + int iVar1; + undefined8 uVar2; + + iVar1 = 0; + if ((*(int *)(param_3 + 0x4c) != 0) && + (iVar1 = *(int *)(param_3 + 0x3c), iVar1 != *(int *)(param_3 + 0x38))) { + if ((iVar1 != -1) && (iVar1 = iVar1 - *(int *)(param_3 + 0x40), iVar1 < 7)) { + uVar2 = FUN_00476568(*(int *)(param_3 + 0x28),(&DAT_004fdc20)[iVar1],0x14); + param_2 = (int)((ulonglong)uVar2 >> 0x20); + } + *(int *)(param_3 + 0x3c) = *(int *)(param_3 + 0x38); + iVar1 = 0; + if (*(int *)(param_3 + 0x38) != -1) { + param_2 = *(int *)(param_3 + 0x40); + iVar1 = *(int *)(param_3 + 0x38) - param_2; + if (iVar1 < 7) { + uVar2 = FUN_00476568(*(int *)(param_3 + 0x28),(&DAT_004fdc20)[iVar1],0x3c); + param_2 = (int)((ulonglong)uVar2 >> 0x20); + iVar1 = (int)uVar2; + } + } + } + return CONCAT44(param_2,iVar1); +} + + + +/* @0047cdc0 file=? name=FUN_0047cdc0 */ + +undefined8 __cdecl FUN_0047cdc0(int param_1,int param_2) + +{ + undefined1 uVar1; + int iVar2; + undefined4 *puVar3; + undefined8 uVar4; + + if ((param_2 == -2) || (param_2 == -1)) { + iVar2 = 0; + *(undefined4 *)(param_1 + 0x4c) = 0; + puVar3 = &DAT_004fdc20; + do { + uVar4 = FUN_00476568(*(int *)(param_1 + 0x28),*puVar3,0); + iVar2 = iVar2 + 1; + puVar3 = puVar3 + 1; + } while (iVar2 < 7); + } + else { + *(undefined4 *)(param_1 + 0x4c) = 1; + iVar2 = 0; + puVar3 = &DAT_004fdc20; + do { + uVar1 = 0x3c; + if (*(int *)(param_1 + 0x38) - *(int *)(param_1 + 0x40) != iVar2) { + uVar1 = 0x14; + } + uVar4 = FUN_00476568(*(int *)(param_1 + 0x28),*puVar3,uVar1); + iVar2 = iVar2 + 1; + puVar3 = puVar3 + 1; + } while (iVar2 < 7); + } + return uVar4; +} + + + +/* @0047ce3c file=? name=FUN_0047ce3c */ + +undefined4 * __cdecl FUN_0047ce3c(undefined4 *param_1,undefined4 param_2) + +{ + undefined4 *puVar1; + + FUN_0044fd64(param_1,param_2); + *param_1 = &PTR_FUN_004fdd28; + FUN_0047d062(param_1 + 0xb,0); + puVar1 = (undefined4 *)FUN_00414b60(); + param_1[10] = *puVar1; + return param_1; +} + + + +/* @0047ce7c file=? name=FUN_0047ce7c */ + +void __cdecl FUN_0047ce7c(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004fdd28; + FUN_0047d081(param_1 + 0xb,2); + FUN_0044fd9c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0047ceb8 file=? name=FUN_0047ceb8 */ + +void __cdecl FUN_0047ceb8(int param_1) + +{ + FUN_0041a1a4(**(int **)(param_1 + 0xc),0x4fdc3c); + return; +} + + + +/* @0047ced4 file=? name=FUN_0047ced4 */ + +undefined4 * __cdecl FUN_0047ced4(int param_1,int param_2) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00402298(0x58); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_0047c80c(puVar1,param_2,0); + } + (**(code **)(*(int *)(param_1 + 0x18) + 4))(param_1 + 0x18,puVar1); + if (*(int *)(*(int *)(*(int *)(DAT_004efc94 + 0x2c) + 0x14) + 0xc) == param_2) { + (**(code **)(*(int *)(param_1 + 0x2c) + 4))(param_1 + 0x2c,puVar1); + } + return puVar1; +} + + + +/* @0047cf3c file=? name=FUN_0047cf3c */ + +void FUN_0047cf3c(void) + +{ + FUN_0044fdfc(); + return; +} + + + +/* @0047cf54 file=? name=FUN_0047cf54 */ + +void __cdecl FUN_0047cf54(int param_1) + +{ + FUN_0044fe04(param_1); + return; +} + + + +/* @0047cf64 file=? name=FUN_0047cf64 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_0047cf64(int param_1) + +{ + float fVar1; + int iVar2; + int *piVar3; + + if (0 < DAT_0052331c) { + DAT_0052331c = 0; + iVar2 = FUN_00417ab4(param_1 + 0x2c); + if (iVar2 != 0) { + FUN_004dbb24(&DAT_00524e20,s_L4IcomManager__Execute__Reset____004fdcfc,(char *)0x0); + FUN_0047ca28(iVar2); + } + } + piVar3 = (int *)FUN_00414b60(); + fVar1 = (float)(*piVar3 - *(int *)(param_1 + 0x28)) / DAT_0052140c; + if (_DAT_0047d004 < fVar1) { + *(int *)(param_1 + 0x28) = *piVar3; + iVar2 = FUN_00417ab4(param_1 + 0x2c); + if (iVar2 != 0) { + FUN_0047ca64(iVar2,fVar1); + } + } + return; +} + + + +/* @0047d062 file=? name=FUN_0047d062 */ + +undefined4 * __cdecl FUN_0047d062(undefined4 *param_1,undefined4 param_2) + +{ + FUN_004179d4(param_1,param_2); + *param_1 = &PTR_FUN_004fdd20; + return param_1; +} + + + +/* @0047d081 file=? name=FUN_0047d081 */ + +void __cdecl FUN_0047d081(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_004fdd20; + FUN_004179f8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0047d0b0 file=? name=FUN_0047d0b0 */ + +undefined8 __fastcall FUN_0047d0b0(undefined4 param_1,undefined4 param_2) + +{ + code *pcVar1; + undefined4 unaff_retaddr; + + pcVar1 = (code *)swi(0x31); + DAT_004fdd64 = (*pcVar1)(param_2); + return CONCAT44(param_1,unaff_retaddr); +} + + + +/* @0047d0ce file=? name=FUN_0047d0ce */ + +undefined8 __fastcall FUN_0047d0ce(undefined4 param_1,undefined4 param_2) + +{ + short *psVar1; + undefined1 *puVar2; + undefined2 uVar3; + undefined4 in_EAX; + uint uVar4; + undefined1 *puVar5; + short sVar6; + + uVar3 = DAT_004fdd64; + psVar1 = (short *)segment(DAT_004fdd64,DAT_00522b94); + uVar4 = (uint)(ushort)(*psVar1 + 6); + puVar5 = DAT_00522b88; + sVar6 = DAT_00522b92; + do { + puVar2 = (undefined1 *)segment(uVar3,sVar6); + *puVar5 = *puVar2; + sVar6 = sVar6 + 1; + puVar5 = puVar5 + 1; + uVar4 = uVar4 - 1; + } while (uVar4 != 0 && puVar5 != (undefined1 *)0x0); + return CONCAT44(param_2,in_EAX); +} + + + +/* @0047d10f file=? name=FUN_0047d10f */ + +undefined8 __fastcall FUN_0047d10f(undefined4 param_1,undefined4 param_2) + +{ + uint *puVar1; + undefined2 uVar2; + undefined4 in_EAX; + uint uVar3; + byte *pbVar4; + short sVar5; + + uVar2 = DAT_004fdd64; + uVar3 = (uint)(ushort)(*DAT_00522b84 + 6); + pbVar4 = DAT_00522b88; + sVar5 = DAT_00522b92; + do { + puVar1 = (uint *)segment(uVar2,sVar5); + *puVar1 = (uint)*pbVar4; + sVar5 = sVar5 + 1; + pbVar4 = pbVar4 + 1; + uVar3 = uVar3 - 1; + } while (uVar3 != 0 && pbVar4 != (byte *)0x0); + return CONCAT44(param_2,in_EAX); +} + + + +/* @0047d14d file=? name=FUN_0047d14d */ + +undefined8 __fastcall FUN_0047d14d(undefined4 param_1,undefined4 param_2) + +{ + undefined1 *puVar1; + undefined2 uVar2; + undefined4 in_EAX; + int iVar3; + undefined1 *puVar4; + short sVar5; + + uVar2 = DAT_004fdd64; + iVar3 = 6; + puVar4 = DAT_004f0760; + sVar5 = DAT_00522b8c; + do { + puVar1 = (undefined1 *)segment(uVar2,sVar5); + *puVar4 = *puVar1; + sVar5 = sVar5 + 1; + puVar4 = puVar4 + 1; + iVar3 = iVar3 + -1; + } while (iVar3 != 0 && puVar4 != (undefined1 *)0x0); + return CONCAT44(param_2,in_EAX); +} + + + +/* @0047d184 file=? name=FUN_0047d184 */ + +undefined8 __cdecl +FUN_0047d184(short *param_1,undefined2 param_2,undefined1 param_3,short param_4,short param_5) + +{ + code *pcVar1; + byte bVar2; + undefined2 extraout_CX; + int iVar3; + short sVar4; + undefined *extraout_EDX; + undefined2 uVar5; + undefined4 unaff_EBX; + undefined **ppuVar6; + undefined2 in_DS; + undefined1 uVar7; + bool bVar8; + undefined4 unaff_retaddr; + + pcVar1 = (code *)swi(0x31); + DAT_004fdd68 = in_DS; + (*pcVar1)(); + *(undefined2 *)((int)param_1 + 0x411) = 0; + *(undefined2 *)((int)param_1 + 0x413) = 0; + *(undefined2 *)((int)param_1 + 0x415) = 0; + *(undefined2 *)((int)param_1 + 0xb) = 0; + *(undefined2 *)((int)param_1 + 0xd) = 0; + *(undefined2 *)((int)param_1 + 0xf) = 0; + uVar7 = false; + bVar8 = true; + *(undefined1 *)(param_1 + 2) = 0; + param_1[1] = 0; + *(undefined1 *)((int)param_1 + 5) = 0; + *(undefined1 *)(param_1 + 3) = 0; + *(undefined4 *)((int)param_1 + 7) = 0; + *param_1 = param_4; + iVar3 = 4; + ppuVar6 = &PTR_LAB_004fdd6a; + do { + if (bVar8) { + *(short *)((int)ppuVar6 + 0xe) = param_4; + *(char *)(ppuVar6 + 4) = (char)param_5; + ppuVar6[1] = (undefined *)param_1; + *(undefined ***)((int)param_1 + 7) = ppuVar6; + pcVar1 = (code *)swi(0x31); + (*pcVar1)(); + *(undefined2 *)(ppuVar6 + 3) = extraout_CX; + ppuVar6[2] = extraout_EDX; + pcVar1 = (code *)swi(0x31); + (*pcVar1)(); + if ((bool)uVar7) { + param_1[1] = 0x100; + } + else { + bVar2 = in(param_4 + 3); + out(param_4 + 3,bVar2 | 0x80); + out(param_4,(char)param_2); + out(param_4 + 1,(char)((ushort)param_2 >> 8)); + sVar4 = param_4 + 3; + bVar2 = in(sVar4); + out(sVar4,bVar2 & 0x7f); + out(sVar4,param_3); + if (param_5 == 0xc) { + uVar5 = 0x6410; + } + else { + uVar5 = 0x6308; + } + *(byte *)((int)ppuVar6 + 0x11) = (byte)uVar5; + bVar2 = in(0x21); + out(0x21,bVar2 & ~(byte)uVar5); + out(0x20,(char)((ushort)uVar5 >> 8)); + DAT_004fddbc = in(param_4 + 2); + bVar2 = in(param_4 + 4); + out(param_4 + 4,bVar2 & 0xf7); + sVar4 = param_4 + 1; + bVar2 = in(sVar4); + out(sVar4,bVar2 & 0xf0); + bVar2 = in(sVar4); + out(sVar4,bVar2 | 0xf); + bVar2 = in(param_4 + 4); + out(param_4 + 4,bVar2 | 0xb); + in(param_4); + in(param_4); + in(param_4 + 6); + DAT_004fddba = in(param_4 + 5); + DAT_004fddbb = in(sVar4); + *(undefined1 *)(param_1 + 2) = 1; + } + goto LAB_0047d317; + } + uVar7 = (undefined **)0xffffffeb < ppuVar6; + ppuVar6 = ppuVar6 + 5; + bVar8 = ppuVar6 == (undefined **)0x0; + iVar3 = iVar3 + -1; + } while (iVar3 != 0); + param_1[1] = 0x100; +LAB_0047d317: + pcVar1 = (code *)swi(0x31); + (*pcVar1)(); + return CONCAT44(unaff_EBX,unaff_retaddr); +} + + + +/* @0047d324 file=? name=FUN_0047d324 */ + +void __fastcall FUN_0047d324(undefined4 param_1,undefined4 param_2,short *param_3) + +{ + int iVar1; + code *pcVar2; + byte bVar3; + + pcVar2 = (code *)swi(0x31); + (*pcVar2)(); + if (param_3 != (short *)0x0) { + bVar3 = in(*param_3 + 4); + out(*param_3 + 4,bVar3 & 0xf4); + iVar1 = *(int *)((int)param_3 + 7); + if (iVar1 != 0) { + *(undefined2 *)(iVar1 + 0xe) = 0; + pcVar2 = (code *)swi(0x31); + (*pcVar2)(); + bVar3 = in(0x21); + out(0x21,bVar3 | *(byte *)(iVar1 + 0x11)); + } + } + pcVar2 = (code *)swi(0x31); + (*pcVar2)(param_2,param_1); + return; +} + + + +/* @0047d3fd file=? name=FUN_0047d3fd */ + +undefined8 __fastcall FUN_0047d3fd(undefined4 param_1,undefined4 param_2,int param_3,int param_4) + +{ + undefined4 in_EAX; + + if (param_3 != 0) { + if (param_4 == 0) { + *(undefined1 *)(param_3 + 6) = 1; + } + else { + *(undefined1 *)(param_3 + 6) = 0; + } + } + return CONCAT44(param_2,in_EAX); +} + + + +/* @0047d428 file=? name=FUN_0047d428 */ + +undefined8 __fastcall +FUN_0047d428(undefined4 param_1,undefined4 param_2,short *param_3,undefined1 *param_4,int param_5) + +{ + undefined1 uVar1; + ushort uVar2; + code *pcVar3; + undefined4 in_EAX; + int extraout_ECX; + int iVar4; + ushort *puVar5; + + if (((param_3 != (short *)0x0) && ((char)param_3[2] != '\0')) && (param_5 < 0x400)) { + do { + } while ((ushort)(0x400U - *(short *)((int)param_3 + 0xf)) < (ushort)param_5); + pcVar3 = (code *)swi(0x31); + (*pcVar3)(); + iVar4 = extraout_ECX; + do { + uVar1 = *param_4; + param_4 = param_4 + 1; + puVar5 = (ushort *)((int)param_3 + 0xb); + uVar2 = *puVar5; + *(undefined1 *)((int)puVar5 + uVar2 + 6) = uVar1; + *puVar5 = uVar2 + 1 & 0x3ff; + puVar5[2] = puVar5[2] + 1; + iVar4 = iVar4 + -1; + } while (iVar4 != 0); + FUN_0047d5a2(0,*param_3); + pcVar3 = (code *)swi(0x31); + (*pcVar3)(param_2,param_1); + } + return CONCAT44(param_2,in_EAX); +} + + + +/* @0047d4a3 file=? name=FUN_0047d4a3 */ + +undefined8 __fastcall FUN_0047d4a3(undefined4 param_1,undefined4 param_2,short *param_3) + +{ + byte bVar1; + uint uVar2; + + uVar2 = 0; + if (param_3 != (short *)0x0) { + bVar1 = in(*param_3 + 5); + uVar2 = bVar1 & 0xffffff60 ^ 0x60; + } + return CONCAT44(param_2,uVar2); +} + + + +/* @0047d517 file=? name=FUN_0047d517 */ + +undefined2 __cdecl FUN_0047d517(int param_1) + +{ + return *(undefined2 *)(param_1 + 0xf); +} + + + +/* @0047d5a2 file=? name=FUN_0047d5a2 */ + +byte __fastcall FUN_0047d5a2(undefined4 param_1,short param_2) + +{ + short *psVar1; + ushort uVar2; + byte bVar3; + int unaff_ESI; + int iVar4; + + bVar3 = in(param_2 + 5); + if (((bVar3 & 0x20) != 0) && + ((*(char *)(unaff_ESI + 6) != '\0' || (*(char *)(unaff_ESI + 5) != '\0')))) { + uVar2 = *(ushort *)(unaff_ESI + 0xd); + iVar4 = unaff_ESI + 0xb + (uint)uVar2; + bVar3 = *(byte *)(iVar4 + 6); + iVar4 = iVar4 - (uint)uVar2; + *(ushort *)(iVar4 + 2) = uVar2 + 1 & 0x3ff; + psVar1 = (short *)(iVar4 + 4); + *psVar1 = *psVar1 + -1; + out(param_2,bVar3); + } + return bVar3; +} + + + +/* @0047d61b file=? name=FUN_0047d61b */ + +undefined2 __fastcall FUN_0047d61b(undefined4 param_1) + +{ + ushort uVar1; + char cVar2; + undefined1 uVar3; + byte bVar4; + ushort in_AX; + undefined1 uVar5; + byte extraout_AH; + undefined4 extraout_ECX; + short sVar6; + short extraout_DX; + ushort *puVar7; + int iVar8; + int unaff_EDI; + + iVar8 = *(int *)(unaff_EDI + 4); + sVar6 = *(short *)(unaff_EDI + 0xe); + while( true ) { + uVar5 = (undefined1)(in_AX >> 8); + cVar2 = in(sVar6 + 2); + in_AX = CONCAT11(uVar5,cVar2); + if (cVar2 == '\x01') break; + if (cVar2 == '\x04') { + uVar3 = in(sVar6); + in_AX = CONCAT11(uVar5,uVar3); + puVar7 = (ushort *)(iVar8 + 0x411); + uVar1 = *puVar7; + *(undefined1 *)((int)puVar7 + uVar1 + 6) = uVar3; + *puVar7 = uVar1 + 1 & 0x3ff; + puVar7[2] = puVar7[2] + 1; + } + else if (cVar2 == '\x02') { + if ((*(short *)(iVar8 + 0xf) != 0) && + ((*(char *)(iVar8 + 6) != '\0' || (*(char *)(iVar8 + 5) != '\0')))) { + uVar1 = *(ushort *)(iVar8 + 0xd); + iVar8 = iVar8 + 0xb + (uint)uVar1; + uVar3 = *(undefined1 *)(iVar8 + 6); + in_AX = CONCAT11(uVar5,uVar3); + iVar8 = iVar8 - (uint)uVar1; + *(ushort *)(iVar8 + 2) = uVar1 + 1 & 0x3ff; + *(short *)(iVar8 + 4) = *(short *)(iVar8 + 4) + -1; + iVar8 = iVar8 + -0xb; + out(sVar6,uVar3); + } + } + else if (cVar2 == '\0') { + bVar4 = in(sVar6 + 6); + in_AX = CONCAT11(uVar5,bVar4); + if ((bVar4 & 1) != 0) { + if ((bVar4 & 0x10) == 0) { + *(undefined1 *)(iVar8 + 5) = 0; + } + else { + *(undefined1 *)(iVar8 + 5) = 1; + bVar4 = in(sVar6 + 5); + in_AX = CONCAT11(uVar5,bVar4); + if (((bVar4 & 0x20) != 0) && (*(short *)(iVar8 + 0xf) != 0)) { + FUN_0047d5a2(param_1,sVar6); + in_AX = (ushort)extraout_AH << 8; + param_1 = extraout_ECX; + sVar6 = extraout_DX; + } + } + } + } + else { + bVar4 = in(sVar6 + 5); + in_AX = bVar4 & 0x1e; + *(ushort *)(iVar8 + 2) = *(ushort *)(iVar8 + 2) | in_AX; + } + } + out(0x20,0x20); + return CONCAT11(uVar5,0x20); +} + + + +/* @0047d70c file=? name=FUN_0047d70c */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl FUN_0047d70c(uint param_1,undefined4 param_2) + +{ + code *pcVar1; + undefined4 unaff_retaddr; + + _DAT_004fddf4 = param_2; + if (param_1 < 0x100) { + _DAT_004fdddc = param_1; + } + else { + _DAT_004fdddc = CONCAT22((short)(param_1 >> 0x10),0x4f02); + _DAT_004fddd0 = param_1; + } + pcVar1 = (code *)swi(0x31); + (*pcVar1)(); + pcVar1 = (code *)swi(0x31); + DAT_004fddf2 = (*pcVar1)(); + return unaff_retaddr; +} + + + +/* @0047d76d file=? name=FUN_0047d76d */ + +undefined6 __cdecl FUN_0047d76d(int param_1) + +{ + byte bVar1; + undefined4 in_EAX; + + out(0x3d4,0x11); + bVar1 = in(0x3d5); + out(0x3d5,bVar1 & 0x7f); + out(0x3d4,0); + if (param_1 == 0) { + out(0x3d5,DAT_004fe0ff); + DAT_004fe0fe = '\0'; + } + else if (DAT_004fe0fe == '\0') { + DAT_004fe0fe = '\x01'; + DAT_004fe0ff = in(0x3d5); + out(0x3d5,DAT_004fe0ff + -9); + } + out(0x3d4,0x11); + out(0x3d5,bVar1); + return CONCAT24(0x3d5,in_EAX); +} + + + +/* @0047d7da file=? name=FUN_0047d7da */ + +undefined8 __fastcall FUN_0047d7da(undefined4 param_1,undefined4 param_2,int param_3) + +{ + undefined4 in_EAX; + undefined2 uVar1; + + if (param_3 == 0) { + uVar1 = 0x319; + } + else { + uVar1 = 0x31a; + } + out(uVar1,(char)param_3); + return CONCAT44(param_2,in_EAX); +} + + + +/* @0047d7f6 file=? name=FUN_0047d7f6 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined8 __thiscall FUN_0047d7f6(void *this,uint param_1) + +{ + code *pcVar1; + undefined4 in_EAX; + undefined4 unaff_EBP; + + _DAT_004fddd4 = param_1 & 0xff; + _DAT_004fdddc = CONCAT22((short)((uint)in_EAX >> 0x10),0x4f05); + _DAT_004fddd0 = 0; + pcVar1 = (code *)swi(0x31); + (*pcVar1)(); + return CONCAT44(this,unaff_EBP); +} + + + +/* @0047d848 file=? name=FUN_0047d848 */ + +undefined8 __fastcall +FUN_0047d848(undefined4 param_1,undefined4 param_2,undefined2 *param_3,undefined2 *param_4, + int param_5) + +{ + int iVar1; + int iVar2; + bool bVar3; + + iVar2 = 0; + iVar1 = 0x20; + do { + while( true ) { + bVar3 = param_5 < 0; + param_5 = param_5 << 1; + if (bVar3) break; + param_3 = param_3 + 1; + iVar1 = iVar1 + -1; + param_4 = param_4 + 1; + if (iVar1 == 0) goto LAB_0047d881; + } + *param_3 = *param_4; + iVar2 = iVar2 + 1; + iVar1 = iVar1 + -1; + param_4 = param_4 + 1; + param_3 = param_3 + 1; + } while (iVar1 != 0); +LAB_0047d881: + return CONCAT44(param_2,iVar2); +} + + + +/* @0047d88b file=? name=FUN_0047d88b */ + +undefined8 __fastcall +FUN_0047d88b(undefined4 param_1,undefined4 param_2,undefined1 *param_3,undefined2 *param_4, + int param_5) + +{ + int iVar1; + int iVar2; + bool bVar3; + + iVar2 = 0; + iVar1 = 0x20; + do { + while( true ) { + bVar3 = param_5 < 0; + param_5 = param_5 << 1; + if (bVar3) break; + param_3 = param_3 + 1; + iVar1 = iVar1 + -1; + param_4 = param_4 + 1; + if (iVar1 == 0) goto LAB_0047d8c1; + } + *param_3 = (char)*param_4; + iVar2 = iVar2 + 1; + iVar1 = iVar1 + -1; + param_4 = param_4 + 1; + param_3 = param_3 + 1; + } while (iVar1 != 0); +LAB_0047d8c1: + return CONCAT44(param_2,iVar2); +} + + + +/* @0047d8cb file=? name=FUN_0047d8cb */ + +undefined8 __fastcall FUN_0047d8cb(undefined4 param_1,undefined4 param_2,short param_3) + +{ + undefined4 in_EAX; + int iVar1; + + out(param_3 + 2,0); + iVar1 = 0x300; + do { + out(param_3 + 3,0); + iVar1 = iVar1 + -1; + } while (iVar1 != 0); + return CONCAT44(param_2,in_EAX); +} + + + +/* @0047d8f2 file=? name=FUN_0047d8f2 */ + +undefined8 __fastcall +FUN_0047d8f2(undefined4 param_1,undefined4 param_2,byte *param_3,short param_4) + +{ + undefined4 in_EAX; + int iVar1; + undefined1 *puVar2; + byte *pbVar3; + + iVar1 = 0x300; + pbVar3 = &DAT_004fddfe; + do { + *pbVar3 = *param_3 >> 2; + iVar1 = iVar1 + -1; + param_3 = param_3 + 1; + pbVar3 = pbVar3 + 1; + } while (iVar1 != 0); + out(param_4 + 2,0); + iVar1 = 0x300; + puVar2 = &DAT_004fddfe; + while (iVar1 != 0) { + iVar1 = iVar1 + -1; + out(*puVar2,param_4 + 3); + puVar2 = puVar2 + 1; + } + return CONCAT44(param_2,in_EAX); +} + + + +/* @0047d962 file=? name=FUN_0047d962 */ + +undefined8 __fastcall +FUN_0047d962(undefined4 param_1,undefined4 param_2,undefined2 param_3,undefined1 param_4) + +{ + undefined4 in_EAX; + + out(param_3,param_4); + return CONCAT44(param_2,in_EAX); +} + + + +/* @0047d97c file=? name=FUN_0047d97c */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined8 __fastcall FUN_0047d97c(undefined4 param_1) + +{ + code *pcVar1; + byte bVar2; + byte bVar3; + byte bVar4; + short sVar5; + undefined2 extraout_DX; + undefined4 unaff_EBX; + undefined4 unaff_retaddr; + + pcVar1 = (code *)swi(0x31); + (*pcVar1)(param_1); + sVar5 = 0; + out(0x201,0); + bVar4 = DAT_004fe108; + do { + bVar2 = in(0x201); + bVar2 = bVar2 & DAT_004fe108; + bVar3 = bVar2 ^ bVar4; + if (bVar3 != 0) { + if ((bVar3 & 1) != 0) { + DAT_004fe100 = sVar5; + } + if ((bVar3 & 2) != 0) { + DAT_004fe102 = sVar5; + } + if ((bVar3 & 4) != 0) { + _DAT_004fe104 = sVar5; + } + if ((bVar3 & 8) != 0) { + DAT_004fe106 = sVar5; + } + bVar4 = bVar2; + if (bVar2 == 0) break; + } + sVar5 = sVar5 + 1; + } while (sVar5 != 0x800); + pcVar1 = (code *)swi(0x31); + (*pcVar1)(); + bVar4 = in(extraout_DX); + DAT_004fe109 = ~bVar4 & 0xf0; + return CONCAT44(unaff_EBX,unaff_retaddr); +} + + + +/* @0047d9f4 file=? name=FUN_0047d9f4 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined8 __cdecl +FUN_0047d9f4(short *param_1,undefined2 param_2,short param_3,short param_4,undefined4 param_5, + undefined1 param_6,undefined4 param_7,undefined1 param_8) + +{ + code *pcVar1; + byte bVar2; + undefined2 extraout_CX; + int iVar3; + short sVar4; + undefined *extraout_EDX; + undefined2 uVar5; + undefined4 unaff_EBX; + undefined **ppuVar6; + undefined2 in_DS; + undefined1 uVar7; + bool bVar8; + undefined4 local_8; + + local_8 = 0; + pcVar1 = (code *)swi(0x31); + DAT_004fe10c = in_DS; + (*pcVar1)(); + DAT_004fe164 = 0; + *(undefined2 *)((int)param_1 + 0x22d) = 0; + *(undefined2 *)((int)param_1 + 0x231) = 0; + *(undefined2 *)((int)param_1 + 0x233) = 0; + *(undefined2 *)((int)param_1 + 0x22f) = 0; + *(undefined2 *)((int)param_1 + 0x235) = 0; + *(undefined2 *)((int)param_1 + 0x237) = 0; + *(undefined2 *)((int)param_1 + 0x239) = 0; + *(undefined2 *)((int)param_1 + 0x1f) = 0; + *(undefined2 *)((int)param_1 + 0x23) = 0; + *(undefined2 *)((int)param_1 + 0x25) = 0; + *(undefined2 *)((int)param_1 + 0x21) = 0; + *(undefined2 *)((int)param_1 + 0x27) = 0; + *(undefined2 *)((int)param_1 + 0x29) = 0; + *(undefined2 *)((int)param_1 + 0x2b) = 0; + uVar7 = false; + bVar8 = true; + *(undefined1 *)(param_1 + 2) = 0; + *(undefined1 *)((int)param_1 + 5) = 0; + *(undefined1 *)(param_1 + 3) = 0; + *(undefined1 *)(param_1 + 7) = 0; + param_1[1] = 0; + *(undefined4 *)((int)param_1 + 0x1b) = 0; + _DAT_004fe15e = 0; + *(undefined1 *)((int)param_1 + 7) = 0; + *(undefined1 *)((int)param_1 + 0xf) = 0; + *param_1 = param_3; + *(undefined4 *)((int)param_1 + 0x13) = param_7; + *(undefined1 *)((int)param_1 + 0xd) = param_8; + *(undefined4 *)((int)param_1 + 0x17) = param_5; + *(undefined1 *)(param_1 + 9) = param_6; + iVar3 = 4; + ppuVar6 = &PTR_LAB_004fe10e; + do { + if (bVar8) { + *(short *)((int)ppuVar6 + 0xe) = param_3; + DAT_004fe178 = param_3; + *(char *)(ppuVar6 + 4) = (char)param_4; + ppuVar6[1] = (undefined *)param_1; + *(undefined ***)((int)param_1 + 0x1b) = ppuVar6; + pcVar1 = (code *)swi(0x31); + (*pcVar1)(); + *(undefined2 *)(ppuVar6 + 3) = extraout_CX; + ppuVar6[2] = extraout_EDX; + pcVar1 = (code *)swi(0x31); + (*pcVar1)(); + if ((bool)uVar7) { + param_1[1] = 0x100; + local_8 = 0xfffffffe; + } + else { + DAT_004fe16c = in(0x21); + out(0x20,0xb); + DAT_004fe16d = in(0x20); + out(0x20,10); + DAT_004fe16e = in(0x20); + if (param_4 == 0xc) { + uVar5 = 0x6410; + } + else { + uVar5 = 0x6308; + } + *(byte *)((int)ppuVar6 + 0x11) = (byte)uVar5; + bVar2 = in(0x21); + out(0x21,bVar2 & ~(byte)uVar5); + out(0x20,(char)((ushort)uVar5 >> 8)); + DAT_004fe16f = in(0x21); + out(0x20,0xb); + DAT_004fe170 = in(0x20); + out(0x20,10); + DAT_004fe171 = in(0x20); + DAT_004fe177 = in(param_3 + 2); + bVar2 = in(param_3 + 4); + out(param_3 + 4,bVar2 & 0xf7); + bVar2 = in(param_3 + 1); + out(param_3 + 1,bVar2 & 0xf0); + bVar2 = in(param_3 + 3); + out(param_3 + 3,bVar2 | 0x80); + out(param_3,(char)param_2); + out(param_3 + 1,(char)((ushort)param_2 >> 8)); + sVar4 = param_3 + 3; + bVar2 = in(sVar4); + out(sVar4,bVar2 & 0x7f); + out(sVar4,3); + bVar2 = in(param_3 + 1); + out(param_3 + 1,bVar2 | 0xf); + bVar2 = in(param_3 + 4); + out(param_3 + 4,bVar2 | 10); + in(param_3); + in(param_3); + in(param_3 + 6); + DAT_004fe175 = in(param_3 + 5); + DAT_004fe176 = in(param_3 + 1); + DAT_004fe172 = in(0x21); + out(0x20,0xb); + DAT_004fe173 = in(0x20); + out(0x20,10); + DAT_004fe174 = in(0x20); + *(undefined1 *)(param_1 + 2) = 1; + } + goto LAB_0047dc58; + } + uVar7 = (undefined **)0xffffffeb < ppuVar6; + ppuVar6 = ppuVar6 + 5; + bVar8 = ppuVar6 == (undefined **)0x0; + iVar3 = iVar3 + -1; + } while (iVar3 != 0); + param_1[1] = 0x100; + local_8 = 0xffffffff; +LAB_0047dc58: + pcVar1 = (code *)swi(0x31); + (*pcVar1)(); + DAT_004fe164 = 1; + return CONCAT44(unaff_EBX,local_8); +} + + + +/* @0047dc71 file=? name=FUN_0047dc71 */ + +undefined8 __fastcall FUN_0047dc71(undefined4 param_1,undefined4 param_2,short *param_3) + +{ + int iVar1; + code *pcVar2; + byte bVar3; + undefined4 unaff_EBX; + undefined4 unaff_retaddr; + + pcVar2 = (code *)swi(0x31); + (*pcVar2)(); + DAT_004fe164 = 0; + if (param_3 != (short *)0x0) { + bVar3 = in(*param_3 + 4); + out(*param_3 + 4,bVar3 & 0xf5); + iVar1 = *(int *)((int)param_3 + 0x1b); + if (iVar1 != 0) { + *(undefined2 *)(iVar1 + 0xe) = 0; + pcVar2 = (code *)swi(0x31); + (*pcVar2)(); + bVar3 = in(0x21); + out(0x21,bVar3 | *(byte *)(iVar1 + 0x11)); + } + } + pcVar2 = (code *)swi(0x31); + (*pcVar2)(param_2,param_1); + DAT_004fe164 = 1; + return CONCAT44(unaff_EBX,unaff_retaddr); +} + + + +/* @0047dce3 file=? name=FUN_0047dce3 */ + +undefined8 __cdecl FUN_0047dce3(int param_1,byte *param_2) + +{ + short sVar1; + ushort uVar2; + byte bVar3; + uint uVar4; + uint uVar5; + int iVar6; + int iVar7; + undefined4 unaff_EDI; + + uVar4 = 0; + if (param_1 != 0) { + if (*(char *)(param_1 + 4) == '\0') { + uVar4 = 0; + } + else { + uVar4 = (uint)*(ushort *)(param_1 + 0x235); + if (*(ushort *)(param_1 + 0x235) != 0) { + *(short *)(param_1 + 0x239) = *(short *)(param_1 + 0x239) + 1; + uVar2 = *(ushort *)(param_1 + 0x233); + iVar6 = param_1 + 0x22d + (uint)uVar2; + bVar3 = *(byte *)(iVar6 + 0xe); + iVar6 = iVar6 - (uint)uVar2; + *(ushort *)(iVar6 + 6) = uVar2 + 1 & 0x1ff; + iVar7 = iVar6 + -0x22d; + if ((bVar3 & 0x80) == 0) { + bVar3 = in(DAT_004fe178 + 4); + out(DAT_004fe178 + 4,bVar3 & 0xf5); + out(0x20,0x20); + uVar4 = 0; + } + else { + *param_2 = bVar3; + bVar3 = *(byte *)(*(int *)(iVar6 + -0x216) + (bVar3 & 0x7f)); + uVar4 = bVar3 + 1; + uVar5 = (uint)(ushort)bVar3; + if (bVar3 != 0) { + do { + param_2 = param_2 + 1; + *(short *)(iVar7 + 0x239) = *(short *)(iVar7 + 0x239) + 1; + uVar2 = *(ushort *)(iVar7 + 0x233); + iVar7 = iVar7 + 0x22d + (uint)uVar2; + bVar3 = *(byte *)(iVar7 + 0xe); + iVar7 = iVar7 - (uint)uVar2; + *(ushort *)(iVar7 + 6) = uVar2 + 1 & 0x1ff; + iVar7 = iVar7 + -0x22d; + *param_2 = bVar3; + uVar5 = uVar5 - 1; + } while (uVar5 != 0); + } + LOCK(); + sVar1 = *(short *)(iVar7 + 0x239); + *(short *)(iVar7 + 0x239) = 0; + UNLOCK(); + *(short *)(iVar7 + 0x235) = *(short *)(iVar7 + 0x235) - sVar1; + *(undefined2 *)(iVar7 + 0x22f) = *(undefined2 *)(iVar7 + 0x233); + } + } + } + } + return CONCAT44(unaff_EDI,uVar4); +} + + + +/* @0047ddda file=? name=FUN_0047ddda */ + +undefined8 __fastcall +FUN_0047ddda(undefined4 param_1,undefined4 param_2,short *param_3,byte *param_4) + +{ + ushort uVar1; + code *pcVar2; + byte bVar3; + undefined4 in_EAX; + int extraout_ECX; + int iVar4; + short sVar5; + undefined2 *puVar6; + + if ((param_3 != (short *)0x0) && ((char)param_3[2] != '\0')) { + while( true ) { + if ((ushort)(*(byte *)(*(int *)((int)param_3 + 0x13) + (*param_4 & 0x7f)) + 1) <= + (ushort)((0x200 - *(short *)((int)param_3 + 0x27)) - *(short *)((int)param_3 + 0x29))) + break; + bVar3 = in(DAT_004fe178 + 4); + out(DAT_004fe178 + 4,bVar3 & 0xf5); + out(0x20,0x20); + } + pcVar2 = (code *)swi(0x31); + (*pcVar2)(); + DAT_004fe164 = 0; + iVar4 = extraout_ECX; + do { + bVar3 = *param_4; + param_4 = param_4 + 1; + puVar6 = (undefined2 *)((int)param_3 + 0x1f); + if (*(ushort *)((int)param_3 + 0x29) < 0x200) { +LAB_0047de9e: + *(short *)((int)param_3 + 0x29) = *(short *)((int)param_3 + 0x29) + 1; + uVar1 = *(ushort *)((int)param_3 + 0x23); + *(byte *)((int)puVar6 + uVar1 + 0xe) = bVar3; + puVar6[2] = uVar1 + 1 & 0x1ff; + } + else { + sVar5 = DAT_004fe178 + 4; + bVar3 = in(sVar5); + out(sVar5,bVar3 & 0xf5); + out(0x20,0x20); + bVar3 = 8; + if (sVar5 < 4) goto LAB_0047de9e; + } + iVar4 = iVar4 + -1; + } while (iVar4 != 0); + LOCK(); + sVar5 = puVar6[5]; + puVar6[5] = 0; + UNLOCK(); + puVar6[4] = puVar6[4] + sVar5; + *puVar6 = puVar6[2]; + FUN_0047dfcb(0,*param_3); + pcVar2 = (code *)swi(0x31); + (*pcVar2)(param_2,param_1); + DAT_004fe164 = 1; + } + return CONCAT44(param_2,in_EAX); +} + + + +/* @0047def5 file=? name=FUN_0047def5 */ + +undefined8 __fastcall FUN_0047def5(undefined4 param_1,undefined4 param_2,short *param_3) + +{ + byte bVar1; + uint uVar2; + + uVar2 = 0; + if (param_3 != (short *)0x0) { + bVar1 = in(*param_3 + 5); + uVar2 = bVar1 & 0xffffff60 ^ 0x60; + } + return CONCAT44(param_2,uVar2); +} + + + +/* @0047df1a file=? name=FUN_0047df1a */ + +undefined8 __fastcall FUN_0047df1a(undefined4 param_1,undefined4 param_2,int param_3) + +{ + ushort uVar1; + uint uVar2; + + uVar2 = 0; + if (param_3 != 0) { + uVar1 = *(ushort *)(param_3 + 2) & 0x100; + if (uVar1 == 0) { + LOCK(); + uVar1 = *(ushort *)(param_3 + 2); + *(ushort *)(param_3 + 2) = 0; + UNLOCK(); + } + uVar2 = (uint)uVar1; + } + return CONCAT44(param_2,uVar2); +} + + + +/* @0047df47 file=? name=FUN_0047df47 */ + +ulonglong __fastcall FUN_0047df47(undefined4 param_1,undefined4 param_2) + +{ + code *pcVar1; + undefined4 uVar2; + + pcVar1 = (code *)swi(0x31); + uVar2 = (*pcVar1)(param_2); + return CONCAT44(param_1,uVar2) & 0xffffffff000000ff; +} + + + +/* @0047df82 file=? name=FUN_0047df82 */ + +undefined2 __cdecl FUN_0047df82(int param_1) + +{ + return *(undefined2 *)(param_1 + 0x27); +} + + + +/* @0047df93 file=? name=FUN_0047df93 */ + +undefined6 __fastcall FUN_0047df93(undefined4 param_1,short param_2,short *param_3,int param_4) + +{ + undefined1 uVar1; + undefined3 uVar3; + uint uVar2; + + uVar2 = 0; + if (param_3 != (short *)0x0) { + param_2 = *param_3; + uVar3 = (undefined3)((uint)param_3 >> 8); + if (param_4 == 0) { + uVar1 = in(param_2 + 4); + uVar2 = CONCAT31(uVar3,uVar1) & 0xfffffffe; + out(param_2 + 4,(char)uVar2); + } + else { + uVar1 = in(param_2 + 4); + uVar2 = CONCAT31(uVar3,uVar1) | 1; + out(param_2 + 4,(char)uVar2); + } + } + return CONCAT24(param_2,uVar2); +} + + + +/* @0047dfcb file=? name=FUN_0047dfcb */ + +void __fastcall FUN_0047dfcb(undefined4 param_1,short param_2) + +{ + byte bVar1; + + bVar1 = in(param_2 + 5); + if ((bVar1 & 0x20) != 0) { + FUN_0047dfe2(param_1,param_2); + } + return; +} + + + +/* @0047dfe2 file=? name=FUN_0047dfe2 */ + +ushort __fastcall FUN_0047dfe2(undefined4 param_1,undefined2 param_2) + +{ + char *pcVar1; + undefined1 uVar2; + byte bVar3; + char cVar4; + ushort uVar5; + ushort uVar6; + short sVar7; + undefined4 in_EAX; + undefined3 uVar10; + uint uVar9; + int unaff_ESI; + int iVar11; + int iVar12; + undefined4 uVar8; + + uVar10 = (undefined3)((uint)in_EAX >> 8); + if (*(char *)(unaff_ESI + 6) != '\0') { + LOCK(); + uVar2 = *(undefined1 *)(unaff_ESI + 6); + *(undefined1 *)(unaff_ESI + 6) = 0; + UNLOCK(); + out(param_2,uVar2); + DAT_004fe168 = DAT_004fe168 + 1; + return (ushort)CONCAT31(uVar10,uVar2); + } + cVar4 = *(char *)(unaff_ESI + 7); + uVar8 = CONCAT31(uVar10,cVar4); + uVar5 = (ushort)uVar8; + if (cVar4 != '\0') { + if (cVar4 == '\x02') { + if (*(char *)(unaff_ESI + 0xe) == '\0') { + pcVar1 = (char *)(unaff_ESI + 8); + cVar4 = *pcVar1; + *pcVar1 = *pcVar1 + -1; + if (*pcVar1 != '\0' && SBORROW1(cVar4,'\x01') == *pcVar1 < '\0') { + *(short *)(unaff_ESI + 0x2b) = *(short *)(unaff_ESI + 0x2b) + 1; + uVar5 = *(ushort *)(unaff_ESI + 0x25); + iVar11 = unaff_ESI + 0x1f + (uint)uVar5; + bVar3 = *(byte *)(iVar11 + 0xe); + uVar6 = (ushort)CONCAT31(uVar10,bVar3); + iVar11 = iVar11 - (uint)uVar5; + *(ushort *)(iVar11 + 6) = uVar5 + 1 & 0x1ff; + if (0x7f < bVar3) { + bVar3 = in(DAT_004fe178 + 4); + out(DAT_004fe178 + 4,bVar3 & 0xf5); + out(0x20,0x20); + param_2 = 0xffff; + uVar6 = 3; + } + out(param_2,(char)uVar6); + pcVar1 = (char *)(iVar11 + -0x13); + *pcVar1 = *pcVar1 + (char)uVar6; + DAT_004fe168 = DAT_004fe168 + 1; + return uVar6; + } + uVar9 = CONCAT31(uVar10,*(undefined1 *)(unaff_ESI + 0xc)) & 0xffffff7f; + out(param_2,(char)uVar9); + DAT_004fe168 = DAT_004fe168 + 1; + *(undefined1 *)(unaff_ESI + 0xb) = 4; + *(undefined1 *)(unaff_ESI + 7) = 3; + return (ushort)uVar9; + } + *(undefined2 *)(unaff_ESI + 0x2b) = 0; + *(undefined2 *)(unaff_ESI + 0x25) = *(undefined2 *)(unaff_ESI + 0x21); + bVar3 = *(byte *)(unaff_ESI + 0xe); + *(undefined1 *)(unaff_ESI + 0xe) = 0; + if ((bVar3 & 1) == 0) { + *(ushort *)(unaff_ESI + 2) = *(ushort *)(unaff_ESI + 2) | 0x200; + } + pcVar1 = (char *)(unaff_ESI + 9); + cVar4 = *pcVar1; + *pcVar1 = *pcVar1 + -1; + if (SBORROW1(cVar4,'\x01') == *pcVar1 < '\0') { + out(param_2,0xfe); + DAT_004fe168 = DAT_004fe168 + 1; + *(undefined1 *)(unaff_ESI + 7) = 1; + return (ushort)CONCAT31(uVar10,0xfe); + } + *(ushort *)(unaff_ESI + 2) = *(ushort *)(unaff_ESI + 2) | 0x400; + iVar11 = unaff_ESI + 0x1f + (uint)*(ushort *)(unaff_ESI + 0x21); + iVar12 = iVar11 - (uint)*(ushort *)(unaff_ESI + 0x21); + sVar7 = *(byte *)(*(int *)(unaff_ESI + 0x13) + (*(byte *)(iVar11 + 0xe) & 0x7f)) + 1; + *(short *)(iVar12 + 8) = *(short *)(iVar12 + 8) - sVar7; + uVar5 = sVar7 + *(short *)(iVar12 + 2) & 0x1ff; + *(ushort *)(iVar12 + 2) = uVar5; + *(ushort *)(iVar12 + 6) = uVar5; + *(undefined2 *)(iVar12 + 0xc) = 0; + unaff_ESI = iVar12 + -0x1f; + } + else { + if (cVar4 != '\x03') { + if (cVar4 == '\x01') goto LAB_0047e05c; + bVar3 = in(DAT_004fe178 + 4); + out(DAT_004fe178 + 4,bVar3 & 0xf5); + out(0x20,0x20); + param_2 = 0xffff; + uVar8 = 0; + } + uVar10 = (undefined3)((uint)uVar8 >> 8); + LOCK(); + bVar3 = *(byte *)(unaff_ESI + 0xe); + *(byte *)(unaff_ESI + 0xe) = 0; + UNLOCK(); + if (bVar3 == 0) { + pcVar1 = (char *)(unaff_ESI + 0xb); + cVar4 = *pcVar1; + *pcVar1 = *pcVar1 + -1; + if (SBORROW1(cVar4,'\x01') == *pcVar1 < '\0') { + out(param_2,0xff); + DAT_004fe168 = DAT_004fe168 + 1; + return (ushort)CONCAT31(uVar10,0xff); + } + *(ushort *)(unaff_ESI + 2) = *(ushort *)(unaff_ESI + 2) | 0x800; + *(undefined2 *)(unaff_ESI + 0x2b) = 0; + *(undefined2 *)(unaff_ESI + 0x25) = *(undefined2 *)(unaff_ESI + 0x21); + pcVar1 = (char *)(unaff_ESI + 9); + cVar4 = *pcVar1; + *pcVar1 = *pcVar1 + -1; + if (SBORROW1(cVar4,'\x01') == *pcVar1 < '\0') { + out(param_2,0xfe); + DAT_004fe168 = DAT_004fe168 + 1; + *(undefined1 *)(unaff_ESI + 0xb) = 4; + *(undefined1 *)(unaff_ESI + 7) = 1; + return (ushort)CONCAT31(uVar10,0xfe); + } + } + else { + if ((bVar3 & 1) != 0) { + LOCK(); + sVar7 = *(short *)(unaff_ESI + 0x2b); + *(short *)(unaff_ESI + 0x2b) = 0; + UNLOCK(); + *(short *)(unaff_ESI + 0x27) = *(short *)(unaff_ESI + 0x27) - sVar7; + uVar5 = *(ushort *)(unaff_ESI + 0x25); + *(ushort *)(unaff_ESI + 0x21) = uVar5; + *(undefined1 *)(unaff_ESI + 7) = 0; + goto LAB_0047e042; + } + *(ushort *)(unaff_ESI + 2) = *(ushort *)(unaff_ESI + 2) | 0x1000; + *(undefined2 *)(unaff_ESI + 0x2b) = 0; + *(undefined2 *)(unaff_ESI + 0x25) = *(undefined2 *)(unaff_ESI + 0x21); + pcVar1 = (char *)(unaff_ESI + 10); + cVar4 = *pcVar1; + *pcVar1 = *pcVar1 + -1; + if (SBORROW1(cVar4,'\x01') == *pcVar1 < '\0') goto LAB_0047e05c; + } + *(ushort *)(unaff_ESI + 2) = *(ushort *)(unaff_ESI + 2) | 0x400; + iVar11 = unaff_ESI + 0x1f + (uint)*(ushort *)(unaff_ESI + 0x21); + iVar12 = iVar11 - (uint)*(ushort *)(unaff_ESI + 0x21); + sVar7 = *(byte *)(*(int *)(unaff_ESI + 0x13) + (*(byte *)(iVar11 + 0xe) & 0x7f)) + 1; + *(short *)(iVar12 + 8) = *(short *)(iVar12 + 8) - sVar7; + uVar5 = sVar7 + *(short *)(iVar12 + 2) & 0x1ff; + *(ushort *)(iVar12 + 2) = uVar5; + *(ushort *)(iVar12 + 6) = uVar5; + *(undefined2 *)(iVar12 + 0xc) = 0; + unaff_ESI = iVar12 + -0x1f; + *(undefined1 *)(iVar12 + -0x18) = 0; + } + } +LAB_0047e042: + if (*(char *)(unaff_ESI + 5) != '\0') { + return uVar5; + } + if (*(short *)(unaff_ESI + 0x27) == 0) { + return uVar5; + } + *(undefined1 *)(unaff_ESI + 9) = 3; + *(undefined1 *)(unaff_ESI + 10) = 3; +LAB_0047e05c: + *(short *)(unaff_ESI + 0x2b) = *(short *)(unaff_ESI + 0x2b) + 1; + uVar5 = *(ushort *)(unaff_ESI + 0x25); + iVar11 = unaff_ESI + 0x1f + (uint)uVar5; + bVar3 = *(byte *)(iVar11 + 0xe); + iVar11 = iVar11 - (uint)uVar5; + *(ushort *)(iVar11 + 6) = uVar5 + 1 & 0x1ff; + if (0x7f < bVar3) { + uVar9 = CONCAT11(bVar3,bVar3) & 0xffff7fff; + bVar3 = (byte)(uVar9 >> 8); + if (bVar3 < *(byte *)(iVar11 + -0x12)) { + out(param_2,(char)uVar9); + *(char *)(iVar11 + -0x13) = (char)uVar9; + DAT_004fe168 = DAT_004fe168 + 1; + cVar4 = *(char *)(*(int *)(iVar11 + -0xc) + (uint)bVar3) + '\x01'; + *(char *)(iVar11 + -0x17) = cVar4; + *(undefined1 *)(iVar11 + -0x18) = 2; + return (ushort)CONCAT31((int3)(uVar9 >> 8),cVar4); + } + } + bVar3 = in(DAT_004fe178 + 4); + out(DAT_004fe178 + 4,bVar3 & 0xf5); + out(0x20,0x20); + LOCK(); + sVar7 = *(short *)(iVar11 + 0xc); + *(short *)(iVar11 + 0xc) = 0; + UNLOCK(); + *(short *)(iVar11 + 8) = *(short *)(iVar11 + 8) - sVar7; + *(ushort *)(iVar11 + 2) = *(ushort *)(iVar11 + 6); + *(undefined1 *)(iVar11 + -0x18) = 0; + return *(ushort *)(iVar11 + 6); +} + + + +/* @0047e2e6 file=? name=FUN_0047e2e6 */ + +void __fastcall FUN_0047e2e6(undefined4 param_1,short param_2) + +{ + char *pcVar1; + char cVar2; + ushort uVar3; + byte in_AL; + byte bVar4; + undefined1 uVar5; + uint uVar6; + short sVar7; + int unaff_ESI; + int iVar8; + + if ((in_AL & 0x80) != 0) { + if (in_AL == 0xff) { + return; + } + if (in_AL == 0xfc) { + *(byte *)(unaff_ESI + 0xe) = *(byte *)(unaff_ESI + 0xe) | 1; + return; + } + if (in_AL == 0xfd) { + *(byte *)(unaff_ESI + 0xe) = *(byte *)(unaff_ESI + 0xe) | 2; + return; + } + } + if (*(char *)(unaff_ESI + 0xf) != '\0') { + if ((in_AL & 0x80) == 0) { + pcVar1 = (char *)(unaff_ESI + 0x10); + cVar2 = *pcVar1; + *pcVar1 = *pcVar1 + -1; + if (*pcVar1 != '\0' && SBORROW1(cVar2,'\x01') == *pcVar1 < '\0') { + if ((short)(0x200 - *(short *)(unaff_ESI + 0x235)) != *(short *)(unaff_ESI + 0x237)) { + *(char *)(unaff_ESI + 0x11) = *(char *)(unaff_ESI + 0x11) + in_AL; + if (0x1ff < *(ushort *)(unaff_ESI + 0x237)) { + sVar7 = DAT_004fe178 + 4; + bVar4 = in(sVar7); + out(sVar7,bVar4 & 0xf5); + out(0x20,0x20); + in_AL = 8; + if (3 < sVar7) { + return; + } + } + *(short *)(unaff_ESI + 0x237) = *(short *)(unaff_ESI + 0x237) + 1; + uVar3 = *(ushort *)(unaff_ESI + 0x231); + *(byte *)(unaff_ESI + 0x22d + uVar3 + 0xe) = in_AL; + *(ushort *)(unaff_ESI + 0x231) = uVar3 + 1 & 0x1ff; + return; + } + bVar4 = in(DAT_004fe178 + 4); + out(DAT_004fe178 + 4,bVar4 & 0xf5); + out(0x20,0x20); + *(ushort *)(unaff_ESI + 2) = *(ushort *)(unaff_ESI + 2) | 0x8000; + *(undefined2 *)(unaff_ESI + 0x237) = 0; + *(undefined2 *)(unaff_ESI + 0x231) = *(undefined2 *)(unaff_ESI + 0x22d); + goto LAB_0047e588; + } + if (in_AL == (*(byte *)(unaff_ESI + 0x11) & 0x7f)) { + LOCK(); + sVar7 = *(short *)(unaff_ESI + 0x237); + *(short *)(unaff_ESI + 0x237) = 0; + UNLOCK(); + *(short *)(unaff_ESI + 0x235) = *(short *)(unaff_ESI + 0x235) + sVar7; + *(undefined2 *)(unaff_ESI + 0x22d) = *(undefined2 *)(unaff_ESI + 0x231); + uVar5 = 0xfc; + } + else { + *(ushort *)(unaff_ESI + 2) = *(ushort *)(unaff_ESI + 2) | 0x4000; + *(undefined2 *)(unaff_ESI + 0x237) = 0; + *(undefined2 *)(unaff_ESI + 0x231) = *(undefined2 *)(unaff_ESI + 0x22d); + uVar5 = 0xfd; + } + } + else { + *(ushort *)(unaff_ESI + 2) = *(ushort *)(unaff_ESI + 2) | 0x2000; + *(undefined2 *)(unaff_ESI + 0x237) = 0; + *(undefined2 *)(unaff_ESI + 0x231) = *(undefined2 *)(unaff_ESI + 0x22d); + if (in_AL == 0xfe) goto LAB_0047e588; + uVar5 = 0xfd; + } + *(undefined1 *)(unaff_ESI + 6) = uVar5; + FUN_0047dfcb(param_1,param_2); +LAB_0047e588: + *(undefined1 *)(unaff_ESI + 0xf) = 0; + return; + } + if ((in_AL & 0x80) == 0) { + *(ushort *)(unaff_ESI + 2) = *(ushort *)(unaff_ESI + 2) | 0x2000; + return; + } + if (in_AL == 0xfe) { + return; + } + iVar8 = unaff_ESI + 0x22d; + if ((short)(0x200 - *(short *)(unaff_ESI + 0x235)) == *(short *)(unaff_ESI + 0x237)) { + bVar4 = in(DAT_004fe178 + 4); + out(DAT_004fe178 + 4,bVar4 & 0xf5); + out(0x20,0x20); + *(ushort *)(unaff_ESI + 2) = *(ushort *)(unaff_ESI + 2) | 0x8000; + return; + } + uVar6 = CONCAT11(in_AL,in_AL) & 0xffff7fff; + if (*(byte *)(unaff_ESI + 0x12) <= (byte)(uVar6 >> 8)) { + bVar4 = in(DAT_004fe178 + 4); + out(DAT_004fe178 + 4,bVar4 & 0xf5); + out(0x20,0x20); + *(ushort *)(unaff_ESI + 2) = *(ushort *)(unaff_ESI + 2) | 0x8000; + return; + } + if (0x1ff < *(ushort *)(unaff_ESI + 0x237)) { + sVar7 = DAT_004fe178 + 4; + bVar4 = in(sVar7); + out(sVar7,bVar4 & 0xf5); + out(0x20,0x20); + uVar6 = 8; + if (3 < sVar7) goto LAB_0047e40e; + } + *(short *)(unaff_ESI + 0x237) = *(short *)(unaff_ESI + 0x237) + 1; + uVar3 = *(ushort *)(unaff_ESI + 0x231); + iVar8 = iVar8 + (uint)uVar3; + *(char *)(iVar8 + 0xe) = (char)uVar6; + iVar8 = iVar8 - (uint)uVar3; + *(ushort *)(iVar8 + 4) = uVar3 + 1 & 0x1ff; +LAB_0047e40e: + *(char *)(iVar8 + -0x21c) = (char)uVar6; + *(char *)(iVar8 + -0x21d) = *(char *)(*(int *)(iVar8 + -0x216) + (uVar6 >> 8)) + '\x01'; + *(undefined1 *)(iVar8 + -0x21e) = 1; + return; +} + + + +/* @0047e5c1 file=? name=FUN_0047e5c1 */ + +undefined4 __fastcall FUN_0047e5c1(undefined4 param_1,undefined4 param_2) + +{ + ushort *puVar1; + int iVar2; + char cVar3; + undefined1 uVar4; + byte bVar5; + ushort uVar6; + uint in_EAX; + uint3 uVar7; + undefined2 extraout_var; + undefined4 extraout_ECX; + undefined4 extraout_ECX_00; + short sVar8; + short extraout_DX; + short extraout_DX_00; + undefined2 uVar9; + undefined2 extraout_var_00; + undefined2 extraout_var_01; + int unaff_EDI; + undefined4 uStack_14; + + DAT_004fe164 = 0; + iVar2 = *(int *)(unaff_EDI + 4); + sVar8 = *(short *)(unaff_EDI + 0xe); + uVar9 = (undefined2)((uint)param_2 >> 0x10); + while( true ) { + while( true ) { + while( true ) { + while( true ) { + uVar7 = (uint3)(in_EAX >> 8); + cVar3 = in(sVar8 + 2); + if (cVar3 != '\x04') break; + in(sVar8); + in_EAX = FUN_0047e2e6(param_1,sVar8); + param_1 = extraout_ECX; + sVar8 = extraout_DX; + uVar9 = extraout_var_00; + } + if (cVar3 != '\x02') break; + uVar6 = FUN_0047dfe2(param_1,sVar8); + in_EAX = CONCAT22(extraout_var,uVar6); + param_1 = extraout_ECX_00; + sVar8 = extraout_DX_00; + uVar9 = extraout_var_01; + } + if (cVar3 != '\0') break; + in(sVar8 + 6); + in_EAX = (uint)uVar7 << 8; + } + if (cVar3 != '\x06') break; + uVar4 = in(sVar8 + 5); + in_EAX = CONCAT22((short)(in_EAX >> 0x10),(short)CONCAT31(uVar7,uVar4)) & 0xffff001e; + puVar1 = (ushort *)(iVar2 + 2); + *puVar1 = *puVar1 | (ushort)in_EAX; + } + if (cVar3 != '\x01') { + bVar5 = in(DAT_004fe178 + 4); + out(DAT_004fe178 + 4,bVar5 & 0xf5); + uStack_14 = CONCAT22(uVar9,DAT_004fe178); + out(0x20,0x20); + uVar7 = 0; + } + out(0x20,0x20); + DAT_004fe164 = uStack_14; + return CONCAT31(uVar7,0x20); +} + + + +/* @0047e661 file=? name=FUN_0047e661 */ + +undefined4 FUN_0047e661(void) + +{ + code *pcVar1; + + pcVar1 = (code *)swi(0x31); + (*pcVar1)(); + return 0; +} + + + +/* @0047e693 file=? name=FUN_0047e693 */ + +void FUN_0047e693(void) + +{ + code *pcVar1; + + pcVar1 = (code *)swi(0x31); + (*pcVar1)(); + return; +} + + + +/* @0047e6c0 file=? name=FUN_0047e6c0 */ + +undefined4 __thiscall +FUN_0047e6c0(void *this,uint param_1,undefined2 *param_2,undefined2 *param_3,undefined4 *param_4) + +{ + code *pcVar1; + undefined4 uVar2; + undefined2 extraout_CX; + undefined2 unaff_SI; + uint unaff_EDI; + undefined2 in_FS; + undefined2 in_GS; + undefined1 in_CF; + bool bVar3; + + pcVar1 = (code *)swi(0x31); + (*pcVar1)(in_GS,in_FS,this); + pcVar1 = (code *)swi(0x31); + uVar2 = (*pcVar1)(); + if ((bool)in_CF) { + return 0xffffffff; + } + DAT_004fe26c = (undefined2)uVar2; + bVar3 = false; + pcVar1 = (code *)swi(0x31); + (*pcVar1)(uVar2); + if (bVar3) { + return 0xffffffff; + } + bVar3 = 0xffaf < (ushort)param_1; + pcVar1 = (code *)swi(0x31); + (*pcVar1)(); + if (bVar3) { + return 0xffffffff; + } + *param_2 = unaff_SI; + param_2[1] = 0xe280; + FUN_0047ef7d(CONCAT22(unaff_SI,0xe280),param_1); + *param_3 = extraout_CX; + param_3[1] = 0; + pcVar1 = (code *)swi(0x31); + (*pcVar1)(); + pcVar1 = (code *)swi(0x31); + (*pcVar1)(); + *param_4 = 0; + param_4[1] = unaff_EDI & 0xffff; + return 0; +} + + + +/* @0047e7c4 file=? name=FUN_0047e7c4 */ + +void FUN_0047e7c4(void) + +{ + code *pcVar1; + + pcVar1 = (code *)swi(0x31); + (*pcVar1)(); + pcVar1 = (code *)swi(0x31); + (*pcVar1)(); + return; +} + + + +/* @0047e7fa file=? name=FUN_0047e7fa */ + +void __cdecl FUN_0047e7fa(undefined4 param_1,ushort param_2,undefined4 *param_3) + +{ + code *pcVar1; + undefined4 uVar2; + undefined4 unaff_EBX; + + pcVar1 = (code *)swi(0x31); + uVar2 = (*pcVar1)(); + pcVar1 = (code *)swi(0x31); + (*pcVar1)(uVar2,uVar2,uVar2); + pcVar1 = (code *)swi(0x31); + (*pcVar1)(); + SegmentLimit((uint)param_2); + pcVar1 = (code *)swi(0x31); + (*pcVar1)(); + pcVar1 = (code *)swi(0x31); + (*pcVar1)(); + *param_3 = 0; + param_3[1] = unaff_EBX; + return; +} + + + +/* @0047e85f file=? name=FUN_0047e85f */ + +void __cdecl FUN_0047e85f(int *param_1,undefined6 param_2) + +{ + int iVar1; + int iVar2; + + iVar2 = (int)param_2; + iVar1 = 0x20; + do { + *param_1 = iVar2; + *(short *)(param_1 + 1) = (short)((uint6)param_2 >> 0x20); + iVar2 = iVar2 + 0x6c; + param_1 = param_1 + 2; + iVar1 = iVar1 + -1; + } while (iVar1 != 0); + return; +} + + + +/* @0047e88f file=? name=FUN_0047e88f */ + +void __cdecl FUN_0047e88f(undefined4 param_1,int *param_2,undefined2 *param_3) + +{ + code *pcVar1; + undefined6 uVar2; + + pcVar1 = (code *)swi(0x31); + uVar2 = (*pcVar1)(); + *param_2 = (int)uVar2 << 4; + *param_3 = (short)((uint6)uVar2 >> 0x20); + return; +} + + + +/* @0047e8c5 file=? name=FUN_0047e8c5 */ + +void FUN_0047e8c5(void) + +{ + code *pcVar1; + + pcVar1 = (code *)swi(0x31); + (*pcVar1)(); + return; +} + + + +/* @0047e8ee file=? name=FUN_0047e8ee */ + +void FUN_0047e8ee(void) + +{ + int iVar1; + undefined1 *extraout_EDX; + undefined1 *puVar2; + undefined1 *in_stack_00000014; + + (*(code *)&stack0x00000004)(); + puVar2 = extraout_EDX; + for (iVar1 = 0x6a; iVar1 != 0; iVar1 = iVar1 + -1) { + *in_stack_00000014 = *puVar2; + puVar2 = puVar2 + 1; + in_stack_00000014 = in_stack_00000014 + 1; + } + return; +} + + + +/* @0047e923 file=? name=FUN_0047e923 */ + +void __cdecl +FUN_0047e923(undefined4 param_1,undefined4 param_2,undefined6 param_3,undefined1 *param_4) + +{ + int iVar1; + undefined1 *extraout_EDX; + undefined1 *puVar2; + undefined1 *puVar3; + undefined2 uVar4; + + (*(code *)¶m_1)(); + uVar4 = (undefined2)((uint6)param_3 >> 0x20); + puVar2 = extraout_EDX; + puVar3 = param_4; + for (iVar1 = 0x6a; iVar1 != 0; iVar1 = iVar1 + -1) { + *puVar3 = *puVar2; + puVar2 = puVar2 + 1; + puVar3 = puVar3 + 1; + } + *(undefined2 *)(param_4 + 0x44) = uVar4; + *(undefined2 *)(param_4 + 0x4c) = uVar4; + *(undefined2 *)(param_4 + 0x54) = uVar4; + *(undefined2 *)(param_4 + 0x5c) = uVar4; + return; +} + + + +/* @0047e973 file=? name=FUN_0047e973 */ + +void FUN_0047e973(void) + +{ + (*(code *)&stack0x00000004)(); + return; +} + + + +/* @0047e996 file=? name=FUN_0047e996 */ + +void FUN_0047e996(void) + +{ + (*(code *)&stack0x00000004)(); + return; +} + + + +/* @0047e9b9 file=? name=FUN_0047e9b9 */ + +void FUN_0047e9b9(void) + +{ + undefined2 extraout_CX; + undefined2 extraout_DX; + + DAT_004fe270._0_2_ = (*(code *)&stack0x00000004)(); + DAT_004fe278._0_2_ = (short)(char)((ushort)extraout_CX >> 8); + DAT_004fe274._0_2_ = (short)(char)extraout_CX; + DAT_004fe27c._0_2_ = extraout_DX; + return; +} + + + +/* @0047e9fd file=? name=FUN_0047e9fd */ + +void __cdecl +FUN_0047e9fd(undefined4 param_1,undefined4 param_2,undefined6 param_3,undefined1 *param_4) + +{ + int iVar1; + undefined1 *extraout_EDX; + undefined1 *puVar2; + undefined1 *puVar3; + undefined2 uVar4; + + (*(code *)¶m_1)(); + uVar4 = (undefined2)((uint6)param_3 >> 0x20); + puVar2 = extraout_EDX; + puVar3 = param_4; + for (iVar1 = 0x6a; iVar1 != 0; iVar1 = iVar1 + -1) { + *puVar3 = *puVar2; + puVar2 = puVar2 + 1; + puVar3 = puVar3 + 1; + } + *(undefined2 *)(param_4 + 0x44) = uVar4; + *(undefined2 *)(param_4 + 0x4c) = uVar4; + *(undefined2 *)(param_4 + 0x54) = uVar4; + *(undefined2 *)(param_4 + 0x5c) = uVar4; + return; +} + + + +/* @0047ea4d file=? name=FUN_0047ea4d */ + +void FUN_0047ea4d(void) + +{ + (*(code *)&stack0x00000004)(); + return; +} + + + +/* @0047ea7d file=? name=FUN_0047ea7d */ + +void FUN_0047ea7d(void) + +{ + (*(code *)&stack0x00000004)(); + return; +} + + + +/* @0047eaa0 file=? name=FUN_0047eaa0 */ + +void __cdecl +FUN_0047eaa0(undefined4 param_1,undefined2 param_2,undefined4 param_3,undefined2 param_4, + undefined6 param_5) + +{ + undefined4 extraout_ECX; + undefined4 unaff_ESI; + undefined4 uVar1; + undefined4 *in_stack_00000028; + + uVar1 = (undefined4)param_5; + (*(code *)¶m_1)(); + *in_stack_00000028 = uVar1; + in_stack_00000028[2] = extraout_ECX; + in_stack_00000028[4] = unaff_ESI; + *(undefined2 *)(in_stack_00000028 + 1) = param_2; + *(undefined2 *)(in_stack_00000028 + 3) = param_4; + *(undefined2 *)(in_stack_00000028 + 5) = param_4; + return; +} + + + +/* @0047eaf3 file=? name=FUN_0047eaf3 */ + +void FUN_0047eaf3(void) + +{ + (*(code *)&stack0x00000004)(); + return; +} + + + +/* @0047eb28 file=? name=FUN_0047eb28 */ + +void FUN_0047eb28(void) + +{ + (*(code *)&stack0x00000004)(); + return; +} + + + +/* @0047eb51 file=? name=FUN_0047eb51 */ + +void FUN_0047eb51(void) + +{ + (*(code *)&stack0x00000004)(); + return; +} + + + +/* @0047eb77 file=? name=FUN_0047eb77 */ + +void FUN_0047eb77(void) + +{ + (*(code *)&stack0x00000004)(); + return; +} + + + +/* @0047eb9e file=? name=FUN_0047eb9e */ + +undefined4 FUN_0047eb9e(void) + +{ + code *pcVar1; + undefined4 in_stack_00000010; + + pcVar1 = (code *)swi(0x2f); + (*pcVar1)(); + return in_stack_00000010; +} + + + +/* @0047ebc8 file=? name=FUN_0047ebc8 */ + +undefined2 FUN_0047ebc8(void) + +{ + code *pcVar1; + undefined2 uVar2; + + pcVar1 = (code *)swi(0x2f); + uVar2 = (*pcVar1)(); + if ((char)uVar2 == '\x03') { + pcVar1 = (code *)swi(0x4b); + (*pcVar1)(); + uVar2 = 0; + } + return uVar2; +} + + + +/* @0047ebfd file=? name=FUN_0047ebfd */ + +undefined2 FUN_0047ebfd(void) + +{ + code *pcVar1; + undefined2 uVar2; + + pcVar1 = (code *)swi(0x2f); + uVar2 = (*pcVar1)(); + if ((char)uVar2 == '\x03') { + pcVar1 = (code *)swi(0x4b); + (*pcVar1)(); + uVar2 = 0; + } + return uVar2; +} + + + +/* @0047ec32 file=? name=FUN_0047ec32 */ + +void __cdecl +FUN_0047ec32(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined2 param_4) + +{ + undefined4 uVar1; + undefined4 unaff_ESI; + + uVar1 = param_3; + (*(code *)¶m_1)(); + DAT_004fe1d0._0_4_ = unaff_ESI; + DAT_004fe1d8._0_4_ = uVar1; + DAT_004fe1d0._4_2_ = param_4; + DAT_004fe1d8._4_2_ = param_4; + return; +} + + + +/* @0047ec71 file=? name=FUN_0047ec71 */ + +undefined1 * __cdecl FUN_0047ec71(int param_1) + +{ + undefined1 *puVar1; + int iVar2; + undefined1 *puVar3; + + puVar1 = *(undefined1 **)((int)DAT_004fe1d0 + param_1 * 4); + if (puVar1 == (undefined1 *)0xffffffff) { + puVar1 = (undefined1 *)0x0; + } + else { + puVar3 = &DAT_004fe180; + for (iVar2 = 0x50; iVar2 != 0; iVar2 = iVar2 + -1) { + *puVar3 = *puVar1; + puVar1 = puVar1 + 1; + puVar3 = puVar3 + 1; + } + puVar1 = &DAT_004fe180; + } + return puVar1; +} + + + +/* @0047ecbb file=? name=FUN_0047ecbb */ + +void __cdecl FUN_0047ecbb(int param_1,undefined4 param_2) + +{ + int iVar1; + undefined2 in_DS; + + iVar1 = (int)DAT_004fe1d8; + *(undefined4 *)(iVar1 + param_1 * 6) = param_2; + *(undefined2 *)(iVar1 + 4 + param_1 * 6) = in_DS; + return; +} + + + +/* @0047ecf1 file=? name=FUN_0047ecf1 */ + +void FUN_0047ecf1(void) + +{ + undefined2 in_CS; + undefined2 uVar1; + + uVar1 = 0x47; + (*(code *)&stack0x00000014)(); + (*(code *)&stack0x00000004)(CONCAT22(uVar1,in_CS)); + return; +} + + + +/* @0047ed26 file=? name=FUN_0047ed26 */ + +undefined4 FUN_0047ed26(void) + +{ + code *pcVar1; + + pcVar1 = (code *)swi(0x31); + (*pcVar1)(); + pcVar1 = (code *)swi(0x31); + (*pcVar1)(); + return DAT_004fe1e0; +} + + + +/* @0047ed51 file=? name=FUN_0047ed51 */ + +void FUN_0047ed51(void) + +{ + code *pcVar1; + + pcVar1 = (code *)swi(0x2f); + (*pcVar1)(); + return; +} + + + +/* @0047ed6e file=? name=FUN_0047ed6e */ + +bool __cdecl FUN_0047ed6e(undefined4 param_1,undefined2 *param_2,undefined2 *param_3) + +{ + code *pcVar1; + undefined2 uVar2; + undefined2 extraout_DX; + undefined1 in_CF; + + pcVar1 = (code *)swi(0x31); + uVar2 = (*pcVar1)(); + if (!(bool)in_CF) { + *param_2 = extraout_DX; + *param_3 = uVar2; + } + return (bool)in_CF; +} + + + +/* @0047eddd file=? name=FUN_0047eddd */ + +bool __cdecl FUN_0047eddd(undefined2 param_1) + +{ + code *pcVar1; + + DAT_004fe238 = 0x8107; + DAT_004fe230 = 0; + DAT_004fe23e = param_1; + DAT_004fe21c = 0; + pcVar1 = (code *)swi(0x31); + (*pcVar1)(); + DAT_004fe23c = DAT_004fe23c & 1; + return DAT_004fe23c != 0; +} + + + +/* @0047ee49 file=? name=FUN_0047ee49 */ + +void __cdecl FUN_0047ee49(undefined2 param_1) + +{ + code *pcVar1; + + DAT_004fe238 = 0x8108; + DAT_004fe230 = 0; + DAT_004fe23e = param_1; + DAT_004fe21c = 0; + pcVar1 = (code *)swi(0x31); + (*pcVar1)(); + return; +} + + + +/* @0047ee96 file=? name=FUN_0047ee96 */ + +undefined2 FUN_0047ee96(void) + +{ + code *pcVar1; + undefined2 uVar2; + + pcVar1 = (code *)swi(0x31); + (*pcVar1)(); + pcVar1 = (code *)swi(0x31); + uVar2 = (*pcVar1)(); + pcVar1 = (code *)swi(0x31); + (*pcVar1)(); + pcVar1 = (code *)swi(0x31); + (*pcVar1)(); + pcVar1 = (code *)swi(0x31); + (*pcVar1)(); + return uVar2; +} + + + +/* @0047ef16 file=? name=FUN_0047ef16 */ + +void FUN_0047ef16(void) + +{ + code *pcVar1; + + pcVar1 = (code *)swi(0x31); + (*pcVar1)(); + return; +} + + + +/* @0047ef40 file=? name=FUN_0047ef40 */ + +void FUN_0047ef40(void) + +{ + return; +} + + + +/* @0047ef44 file=? name=FUN_0047ef44 */ + +void FUN_0047ef44(void) + +{ + return; +} + + + +/* @0047ef48 file=? name=FUN_0047ef48 */ + +void FUN_0047ef48(void) + +{ + code *pcVar1; + undefined4 uVar2; + undefined4 *in_stack_00000014; + + pcVar1 = (code *)swi(0x21); + uVar2 = (*pcVar1)(); + *in_stack_00000014 = uVar2; + return; +} + + + +/* @0047ef7d file=? name=FUN_0047ef7d */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_0047ef7d(undefined4 param_1,uint param_2) + +{ + code *pcVar1; + int iVar2; + + iVar2 = (param_2 >> 0xd) + 1; + do { + pcVar1 = (code *)swi(0x31); + (*pcVar1)(); + _DAT_004fe2b0 = _DAT_004fe2b0 | 8; + pcVar1 = (code *)swi(0x31); + (*pcVar1)(); + iVar2 = iVar2 + -1; + } while (iVar2 != 0); + return; +} + + + +/* @0047efd1 file=? name=FUN_0047efd1 */ + +void __cdecl FUN_0047efd1(undefined1 *param_1,undefined4 param_2,undefined1 *param_3,int param_4) + +{ + for (; param_4 != 0; param_4 = param_4 + -1) { + *param_1 = *param_3; + param_3 = param_3 + 1; + param_1 = param_1 + 1; + } + return; +} + + + +/* @0047eff4 file=? name=FUN_0047eff4 */ + +void FUN_0047eff4(void) + +{ + (*(code *)&stack0x00000004)(); + return; +} + + + +/* @0047f013 file=? name=FUN_0047f013 */ + +void FUN_0047f013(void) + +{ + return; +} + + + +/* @0047f016 file=? name=FUN_0047f016 */ + +void __cdecl FUN_0047f016(undefined1 *param_1,undefined4 param_2,int param_3,undefined1 param_4) + +{ + for (; param_3 != 0; param_3 = param_3 + -1) { + *param_1 = param_4; + param_1 = param_1 + 1; + } + return; +} + + + +/* @0047f03a file=? name=FUN_0047f03a */ + +void FUN_0047f03a(void) + +{ + return; +} + + + +/* @0047f03f file=? name=FUN_0047f03f */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl +FUN_0047f03f(uint param_1,uint param_2,undefined4 *param_3,undefined4 *param_4,undefined2 *param_5, + undefined1 *param_6,undefined4 *param_7) + +{ + char *pcVar1; + undefined4 uVar2; + uint uVar3; + int iVar4; + void *this; + uint unaff_ESI; + undefined4 local_28; + undefined4 uStack_24; + undefined1 *local_20; + undefined4 local_1c; + undefined4 local_18; + uint local_14; + int local_10; + char *local_c; + char *local_8; + + local_8 = (char *)0x2c; + local_c = (char *)0x30; + local_10 = 0; + local_14 = 0; + if (param_2 < 6) { + if (*(int *)(&DAT_004fe3d4 + param_2 * 4) == 0) { + if ((param_1 < 0xe000) || (0xe200 < param_1)) { + uVar2 = 6; + } + else { + FUN_004d4a48(&DAT_004ff08c,&DAT_004fef8c); + FUN_004d49b8(&DAT_004ff08c,s_hmidrv_386_004ff580); + uVar3 = thunk_FUN_004d93ac(&DAT_004ff08c,0x8000,unaff_ESI); + if (uVar3 == 0xffffffff) { + uVar2 = 0xf; + } + else { + thunk_FUN_004d892c(uVar3,&DAT_004ff320,local_8); + while ((local_14 <= DAT_004ff340 && (local_10 == 0))) { + thunk_FUN_004d892c(uVar3,&DAT_004ff34c,local_c); + pcVar1 = DAT_004ff370; + if ((DAT_004ff374 == param_1) && ((_DAT_004ff378 & 0x8000) != 0)) { + local_10 = 1; + iVar4 = FUN_0047e6c0(this,(uint)DAT_004ff370,param_5,(undefined2 *)&local_18,&local_20 + ); + if (iVar4 == -1) { + return 5; + } + FUN_0047e7fa(local_20,(ushort)local_1c,&local_28); + FUN_0047e661(); + DAT_004ff214 = FUN_004de55c(0xa000); + if (DAT_004ff214 == (int *)0x0) { + return 5; + } + thunk_FUN_004d892c(uVar3,(char *)DAT_004ff214,pcVar1); + FUN_0047efd1(local_20,local_1c,(undefined1 *)DAT_004ff214,(int)pcVar1); + FUN_004de420(DAT_004ff214); + *param_3 = local_28; + param_3[1] = uStack_24; + *param_4 = local_20; + param_4[1] = local_1c; + *param_6 = (char)pcVar1; + *param_7 = local_18; + } + else { + thunk_FUN_004d9334(uVar3,(LONG)DAT_004ff370,1); + } + local_14 = local_14 + 1; + } + thunk_FUN_004d92c4(uVar3); + *(uint *)(&DAT_004fe488 + param_2 * 4) = DAT_004ff374; + *(undefined4 *)(&DAT_004fe3d4 + param_2 * 4) = 1; + uVar2 = 0; + } + } + } + else { + uVar2 = 9; + } + } + else { + uVar2 = 10; + } + return uVar2; +} + + + +/* @0047f27c file=? name=FUN_0047f27c */ + +undefined4 __cdecl FUN_0047f27c(uint param_1) + +{ + undefined4 uVar1; + + if (param_1 < 6) { + if (*(int *)(&DAT_004fe3d4 + param_1 * 4) == 0) { + uVar1 = 10; + } + else { + *(undefined4 *)(&DAT_004fe3d4 + param_1 * 4) = 0; + FUN_0047e693(); + FUN_0047e7c4(); + FUN_0047e7c4(); + uVar1 = 0; + } + } + else { + uVar1 = 10; + } + return uVar1; +} + + + +/* @0047f334 file=? name=FUN_0047f334 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl +FUN_0047f334(uint param_1,undefined4 *param_2,undefined4 *param_3,undefined2 *param_4, + undefined1 *param_5,undefined4 *param_6) + +{ + undefined4 uVar1; + uint uVar2; + int iVar3; + void *this; + uint unaff_ESI; + char *pcVar4; + undefined4 local_28; + undefined4 uStack_24; + undefined1 *local_20; + undefined4 local_1c; + undefined4 local_18; + uint local_14; + int local_10; + char *local_c; + char *local_8; + + local_8 = (char *)0x2c; + local_c = (char *)0x30; + local_10 = 0; + local_14 = 0; + if ((param_1 < 0x1000) || (0x1023 < param_1)) { + uVar1 = 6; + } + else { + FUN_004d4a48(&DAT_004ff08c,&DAT_004fef8c); + FUN_004d49b8(&DAT_004ff08c,s_hmidrv_386_004ff58b); + uVar2 = thunk_FUN_004d93ac(&DAT_004ff08c,0x8000,unaff_ESI); + if (uVar2 == 0xffffffff) { + uVar1 = 0xf; + } + else { + thunk_FUN_004d892c(uVar2,&DAT_004ff320,local_8); + while ((local_14 <= DAT_004ff340 && (local_10 == 0))) { + thunk_FUN_004d892c(uVar2,&DAT_004ff34c,local_c); + if ((DAT_004ff374 == param_1) && ((_DAT_004ff378 & 0x4000) != 0)) { + local_10 = 1; + pcVar4 = (char *)(DAT_004ff370 + 0x4000); + iVar3 = FUN_0047e6c0(this,(uint)pcVar4,param_4,(undefined2 *)&local_18,&local_20); + if (iVar3 == -1) { + return 5; + } + FUN_0047e7fa(local_20,(ushort)local_1c,&local_28); + FUN_0047e661(); + DAT_004ff214 = FUN_004de55c(0xa000); + if (DAT_004ff214 == (int *)0x0) { + return 5; + } + thunk_FUN_004d892c(uVar2,(char *)DAT_004ff214,pcVar4); + FUN_0047efd1(local_20,local_1c,(undefined1 *)DAT_004ff214,(int)pcVar4); + FUN_004de420(DAT_004ff214); + *param_2 = local_28; + param_2[1] = uStack_24; + *param_3 = local_20; + param_3[1] = local_1c; + *param_5 = (char)pcVar4; + *param_6 = local_18; + } + else { + thunk_FUN_004d9334(uVar2,DAT_004ff370,1); + } + local_14 = local_14 + 1; + } + thunk_FUN_004d92c4(uVar2); + uVar1 = 0; + } + } + return uVar1; +} + + + +/* @0047f525 file=? name=FUN_0047f525 */ + +undefined4 FUN_0047f525(void) + +{ + FUN_0047e693(); + FUN_0047e7c4(); + FUN_0047e7c4(); + return 0; +} + + + +/* @0047f5a2 file=? name=FUN_0047f5a2 */ + +void FUN_0047f5a2(void) + +{ + return; +} + + + +/* @0047f629 file=? name=FUN_0047f629 */ + +undefined8 __fastcall FUN_0047f629(undefined4 param_1,undefined4 param_2,int param_3,int *param_4) + +{ + int iVar1; + int iVar2; + int *piVar3; + undefined2 in_CS; + undefined2 in_DS; + + piVar3 = (int *)*(undefined6 *)(&DAT_004fe4c4 + param_3 * 0x80); + iVar2 = 0; + do { + if ((*(ushort *)(piVar3 + 0xc) & 0x8000) == 0) { + iVar1 = *param_4; + *piVar3 = iVar1; + piVar3[2] = iVar1; + *(undefined2 *)(piVar3 + 1) = in_DS; + *(undefined2 *)(piVar3 + 3) = in_DS; + piVar3[4] = iVar1 + param_4[0xc]; + *(undefined2 *)(piVar3 + 5) = in_DS; + if ((*(ushort *)(param_4 + 10) & 0x40) == 0) { + iVar1 = param_4[2]; + piVar3[6] = iVar1; + piVar3[7] = iVar1; + } + else { + iVar1 = param_4[0xc]; + piVar3[6] = iVar1; + piVar3[7] = iVar1; + piVar3[8] = param_4[0xd]; + } + *(short *)((int)piVar3 + 0x32) = (short)param_4[5]; + *(short *)(piVar3 + 0xd) = (short)param_4[6]; + *(ushort *)(piVar3 + 0xc) = (ushort)param_4[10] | 0xa000; + *(short *)((int)piVar3 + 0x36) = (short)param_4[4]; + iVar1 = param_4[7]; + piVar3[0xf] = iVar1; + *(undefined2 *)(piVar3 + 1) = 0; + if (iVar1 != 0) { + *(undefined2 *)(piVar3 + 0x10) = in_CS; + } + *(short *)(piVar3 + 0xe) = (short)param_4[3]; + *(short *)((int)piVar3 + 0x4a) = (short)param_4[9]; + *(undefined2 *)((int)piVar3 + 0x3a) = 0; + piVar3[0x11] = param_4[0xe]; + *(undefined2 *)(piVar3 + 0x12) = 0; + piVar3[0x13] = 0; + *(short *)(piVar3 + 0x15) = (short)param_4[0x10]; + *(short *)((int)piVar3 + 0x56) = (short)param_4[0x11]; + *(short *)(piVar3 + 0x16) = (short)param_4[0x12]; + *(short *)((int)piVar3 + 0x5a) = (short)param_4[0x13]; + *(short *)(piVar3 + 0x17) = (short)param_4[0x14]; + *(short *)((int)piVar3 + 0x5e) = (short)param_4[0x15]; + *(short *)(piVar3 + 0x18) = (short)param_4[0x16]; + *(undefined4 *)((int)piVar3 + 0x62) = 0; + *(undefined2 *)((int)piVar3 + 0x66) = 0; + goto LAB_0047f759; + } + piVar3 = piVar3 + 0x1b; + iVar2 = iVar2 + 1; + } while (iVar2 != 0x20); + iVar2 = -1; +LAB_0047f759: + return CONCAT44(param_2,iVar2); +} + + + +/* @0047f807 file=? name=FUN_0047f807 */ + +undefined8 __fastcall FUN_0047f807(undefined4 param_1,undefined4 param_2,int param_3,uint param_4) + +{ + undefined4 uVar1; + int iVar2; + + iVar2 = (int)*(undefined6 *)(&DAT_004fe4c4 + param_3 * 0x80 + param_4 * 8); + uVar1 = 10; + if (((param_4 < 0x21) && (uVar1 = 0, (*(ushort *)(iVar2 + 0x30) & 0x1000) == 0)) && + ((*(ushort *)(iVar2 + 0x30) & 0x8000) != 0)) { + *(ushort *)(iVar2 + 0x30) = *(ushort *)(iVar2 + 0x30) & 0x7fff; + *(undefined2 *)(iVar2 + 0x34) = 0; + } + return CONCAT44(param_2,uVar1); +} + + + +/* @0047f8a2 file=? name=FUN_0047f8a2 */ + +void FUN_0047f8a2(void) + +{ + return; +} + + + +/* @0047f8a7 file=? name=FUN_0047f8a7 */ + +void FUN_0047f8a7(void) + +{ + FUN_0047e661(); + FUN_0047e661(); + FUN_0047e661(); + FUN_0047e661(); + FUN_0047e661(); + FUN_0047e661(); + FUN_0047e661(); + FUN_0047e661(); + FUN_0047e661(); + FUN_0047e661(); + FUN_0047e661(); + FUN_0047e661(); + FUN_0047e661(); + FUN_0047e661(); + FUN_0047e661(); + return; +} + + + +/* @0047fa43 file=? name=FUN_0047fa43 */ + +void FUN_0047fa43(void) + +{ + FUN_0047e693(); + FUN_0047e693(); + FUN_0047e693(); + FUN_0047e693(); + FUN_0047e693(); + FUN_0047e693(); + FUN_0047e693(); + FUN_0047e693(); + FUN_0047e693(); + FUN_0047e693(); + FUN_0047e693(); + FUN_0047e693(); + FUN_0047e693(); + FUN_0047e693(); + FUN_0047e693(); + return; +} + + + +/* @0047fbdf file=? name=FUN_0047fbdf */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl FUN_0047fbdf(char *param_1) + +{ + FUN_0047f8a7(); + _DAT_004ff2ec = 1; + if (param_1 == (char *)0x0) { + DAT_004fef8c = 0; + } + else { + FUN_004d4a48(&DAT_004fef8c,param_1); + } + return 0; +} + + + +/* @0047fc16 file=? name=FUN_0047fc16 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 FUN_0047fc16(void) + +{ + FUN_0047fa43(); + _DAT_004ff2ec = 0; + return 0; +} + + + +/* @0047fc2c file=? name=FUN_0047fc2c */ + +int __cdecl FUN_0047fc2c(uint param_1,int param_2,uint *param_3,uint *param_4) + +{ + int iVar1; + uint uVar2; + uint local_30; + int local_2c; + int local_28; + undefined4 *local_24; + uint local_20; + uint local_1c; + uint local_18; + uint local_14; + uint local_10; + uint local_c; + uint local_8; + + local_8 = *param_3; + local_14 = param_3[3]; + local_18 = param_3[4]; + local_1c = param_3[5]; + local_10 = param_3[6]; + for (local_c = 0; + (uVar2 = 6, local_c < 5 && (uVar2 = local_c, *(int *)(&DAT_004fea18 + local_c * 4) != 0)); + local_c = local_c + 1) { + } + if (uVar2 == 6) { + local_2c = 0xb; + } + else { + *(uint *)(&DAT_004fea18 + uVar2 * 4) = param_1; + if (param_3[10] == 0) { + local_24 = (undefined4 *)(&DAT_004fe30c + uVar2 * 8); + local_28 = uVar2 * 4; + iVar1 = FUN_0047f03f(param_1,uVar2,local_24,(undefined4 *)(&DAT_004fe2e4 + uVar2 * 8), + (undefined2 *)(&DAT_004fe3ac + uVar2 * 4),&DAT_004fe334 + uVar2 * 4, + (undefined4 *)(&DAT_004fe2bc + local_28)); + if (iVar1 != 0) { + return iVar1; + } + param_3[9] = *(uint *)(&DAT_004fe2e4 + uVar2 * 8); + param_3[10] = *(uint *)(&DAT_004fe2e8 + uVar2 * 8); + param_3[0xb] = *(uint *)(&DAT_004fe30c + uVar2 * 8); + param_3[0xc] = *(uint *)(&DAT_004fe310 + uVar2 * 8); + local_2c = 0; + } + else { + *(uint *)(&DAT_004fe2e4 + uVar2 * 8) = param_3[9]; + *(uint *)(&DAT_004fe2e8 + uVar2 * 8) = param_3[10]; + *(uint *)(&DAT_004fe30c + uVar2 * 8) = param_3[0xb]; + *(uint *)(&DAT_004fe310 + uVar2 * 8) = param_3[0xc]; + } + local_20 = uVar2; + local_2c = FUN_0048082c(uVar2,(undefined1 *)(&DAT_004fea30 + uVar2 * 0x1b)); + if (local_2c == 0) { + if (*(uint *)(&DAT_004fea18 + uVar2 * 4) < 0xe106) { + *(uint *)(&DAT_004fe424 + uVar2 * 4) = local_8; + if (local_14 == 0) { + *(uint *)(&DAT_004fe438 + uVar2 * 8) = param_3[1]; + (&DAT_004fe43c)[uVar2 * 2] = param_3[2]; + local_30 = param_3[0x13]; + local_20 = uVar2; + } + else { + *(undefined4 *)(&DAT_004ff2d8 + uVar2 * 4) = 1; + iVar1 = FUN_00480686(local_8,&local_30,(undefined4 *)(&DAT_004fe474 + uVar2 * 4), + (undefined4 *)(&DAT_004fe438 + uVar2 * 8)); + if (iVar1 != 0) { + FUN_0047f27c(uVar2); + *(undefined4 *)(&DAT_004fea18 + uVar2 * 4) = 0; + return 5; + } + param_3[1] = *(uint *)(&DAT_004fe438 + uVar2 * 8); + param_3[2] = (&DAT_004fe43c)[uVar2 * 2]; + if (*(int *)(&DAT_004fea54 + uVar2 * 0x6c) == 8) { + if ((*(uint *)(&DAT_004fea6c + uVar2 * 0x6c) & 0x8000) == 0) { + local_20 = uVar2; + FUN_0047f016(*(undefined1 **)(&DAT_004fe438 + uVar2 * 8),(&DAT_004fe43c)[uVar2 * 2], + local_8,0x80); + } + else { + local_20 = uVar2; + FUN_0047f016(*(undefined1 **)(&DAT_004fe438 + uVar2 * 8),(&DAT_004fe43c)[uVar2 * 2], + local_8,0); + } + } + else { + local_20 = uVar2; + FUN_0047f016(*(undefined1 **)(&DAT_004fe438 + uVar2 * 8),(&DAT_004fe43c)[uVar2 * 2], + local_8,0); + } + } + if (param_3[0xe] == 0) { + if (param_3[0x12] == 0) { + local_2c = FUN_0047f334(*(uint *)(&DAT_004fea98 + uVar2 * 0x6c), + (undefined4 *)(&DAT_004fe384 + uVar2 * 8), + (undefined4 *)(&DAT_004fe35c + uVar2 * 8), + (undefined2 *)(&DAT_004fe3c0 + uVar2 * 4), + &DAT_004fe348 + uVar2 * 4, + (undefined4 *)(&DAT_004fe2d0 + uVar2 * 4)); + if (local_2c != 0) { + return local_2c; + } + } + else { + iVar1 = FUN_0047f334(param_3[0x12],(undefined4 *)(&DAT_004fe384 + uVar2 * 8), + (undefined4 *)(&DAT_004fe35c + uVar2 * 8), + (undefined2 *)(&DAT_004fe3c0 + uVar2 * 4),&DAT_004fe348 + uVar2 * 4 + ,(undefined4 *)(&DAT_004fe2d0 + uVar2 * 4)); + if (iVar1 != 0) { + return iVar1; + } + local_2c = 0; + } + param_3[0xd] = *(uint *)(&DAT_004fe35c + uVar2 * 8); + param_3[0xe] = *(uint *)(&DAT_004fe360 + uVar2 * 8); + param_3[0xf] = *(uint *)(&DAT_004fe384 + uVar2 * 8); + param_3[0x10] = *(uint *)(&DAT_004fe388 + uVar2 * 8); + } + else { + *(uint *)(&DAT_004fe35c + uVar2 * 8) = param_3[0xd]; + *(uint *)(&DAT_004fe360 + uVar2 * 8) = param_3[0xe]; + *(uint *)(&DAT_004fe384 + uVar2 * 8) = param_3[0xf]; + *(uint *)(&DAT_004fe388 + uVar2 * 8) = param_3[0x10]; + } + local_20 = uVar2; + if ((*(uint *)(&DAT_004fea6c + uVar2 * 0x6c) & 0x200) != 0) { + FUN_0047ecf1(); + } + *(undefined4 *)(&DAT_004fe3e8 + uVar2 * 4) = 1; + FUN_0047eaa0(*(undefined4 *)(&DAT_004fe384 + uVar2 * 8), + (short)*(undefined4 *)(&DAT_004fe388 + uVar2 * 8), + *(undefined4 *)(&DAT_004fe35c + uVar2 * 8), + (short)*(undefined4 *)(&DAT_004fe360 + uVar2 * 8), + *(undefined6 *)(&DAT_004fe438 + uVar2 * 8)); + *(undefined4 *)(&DAT_004fe49c + uVar2 * 8) = DAT_004ff300; + *(undefined4 *)(&DAT_004fe4a0 + uVar2 * 8) = DAT_004ff304; + *(undefined4 *)(&DAT_004fe9ec + uVar2 * 8) = DAT_004ff308; + *(undefined4 *)(uVar2 * 8 + 0x4fe9f0) = DAT_004ff30c; + local_20 = uVar2; + FUN_0047e85f((int *)(&DAT_004fe4c4 + uVar2 * 0x100), + CONCAT15((char)((uint)DAT_004ff314 >> 8), + CONCAT14((char)DAT_004ff314,DAT_004ff310))); + } + else { + *(undefined4 *)(&DAT_004fe4a0 + uVar2 * 8) = 0; + } + param_3[7] = *(uint *)(&DAT_004fe49c + uVar2 * 8); + param_3[8] = *(uint *)(&DAT_004fe4a0 + uVar2 * 8); + local_20 = uVar2; + FUN_0047ebc8(); + *(uint *)(&DAT_004fe460 + uVar2 * 4) = local_30; + (&DAT_004fecd8)[uVar2] = (char)*(undefined4 *)(param_2 + 8); + FUN_0047eaf3(); + FUN_0047eb77(); + FUN_0047eb51(); + local_30 = *(uint *)(&DAT_004fe460 + uVar2 * 4); + FUN_0047eb28(); + *(undefined4 *)(&DAT_004fe3d4 + uVar2 * 4) = 1; + *(undefined4 *)(&DAT_004fe3fc + uVar2 * 4) = 1; + param_3[0x11] = (uint)(&PTR_FUN_004ff380)[uVar2]; + *(uint *)(&DAT_004fece0 + uVar2 * 0x50) = *param_3; + *(uint *)(&DAT_004fece4 + uVar2 * 0x50) = param_3[1]; + *(uint *)(uVar2 * 0x50 + 0x4fece8) = param_3[2]; + *(uint *)(&DAT_004fecec + uVar2 * 0x50) = param_3[3]; + *(uint *)(&DAT_004fecf0 + uVar2 * 0x50) = param_3[4]; + (&DAT_004fecf4)[uVar2 * 0x14] = param_1; + *(uint *)(&DAT_004fecf8 + uVar2 * 0x50) = param_3[6]; + (&DAT_004fecfc)[uVar2 * 0x14] = param_3[7]; + (&DAT_004fed00)[uVar2 * 0x14] = param_3[8]; + *(uint *)(&DAT_004fed04 + uVar2 * 0x50) = param_3[9]; + *(uint *)(uVar2 * 0x50 + 0x4fed08) = param_3[10]; + *(uint *)(&DAT_004fed14 + uVar2 * 0x50) = param_3[0xd]; + *(uint *)(uVar2 * 0x50 + 0x4fed18) = param_3[0xe]; + *(uint *)(&DAT_004fed0c + uVar2 * 0x50) = param_3[0xb]; + *(uint *)(uVar2 * 0x50 + 0x4fed10) = param_3[0xc]; + *(uint *)(&DAT_004fed1c + uVar2 * 0x50) = param_3[0xf]; + (&DAT_004fed20)[uVar2 * 0x14] = param_3[0x10]; + *(uint *)(&DAT_004fed24 + uVar2 * 0x50) = param_3[0x11]; + *(uint *)(&DAT_004fed28 + uVar2 * 0x50) = param_3[0x12]; + *param_4 = uVar2; + local_2c = 0; + } + } + return local_2c; +} + + + +/* @004804bd file=? name=FUN_004804bd */ + +undefined4 __cdecl FUN_004804bd(uint param_1,int param_2,int param_3) + +{ + char cVar1; + undefined4 uVar2; + + if (*(int *)(&DAT_004fe3d4 + param_1 * 4) == 0) { + uVar2 = 1; + } + else { + *(undefined4 *)(&DAT_004fe3fc + param_1 * 4) = 0; + if (((*(uint *)(&DAT_004fe488 + param_1 * 4) < 0xe106) && + (*(int *)(&DAT_004ff2d8 + param_1 * 4) != 0)) && (param_2 != 0)) { + cVar1 = FUN_0047ed51(); + if (cVar1 == '\x03') { + FUN_0048078c(); + } + else { + FUN_0047e8c5(); + } + *(undefined4 *)(&DAT_004ff2d8 + param_1 * 4) = 0; + } + FUN_0047e973(); + FUN_0047ea7d(); + FUN_0047ebfd(); + if (param_3 != 0) { + FUN_0047f27c(param_1); + FUN_0047f525(); + } + *(undefined4 *)(&DAT_004fe2e8 + param_1 * 8) = 0; + *(undefined4 *)(&DAT_004fe310 + param_1 * 8) = 0; + *(undefined4 *)(&DAT_004fe4a0 + param_1 * 8) = 0; + *(undefined4 *)(&DAT_004fe360 + param_1 * 8) = 0; + *(undefined4 *)(&DAT_004fe388 + param_1 * 8) = 0; + *(undefined4 *)(&DAT_004fea18 + param_1 * 4) = 0; + *(undefined4 *)(&DAT_004fe3d4 + param_1 * 4) = 0; + uVar2 = 0; + } + return uVar2; +} + + + +/* @00480686 file=? name=FUN_00480686 */ + +undefined4 __cdecl FUN_00480686(uint param_1,uint *param_2,undefined4 *param_3,undefined4 *param_4) + +{ + char cVar1; + int iVar2; + undefined4 uVar3; + undefined4 local_14; + uint local_10; + uint local_c; + undefined4 local_8; + + cVar1 = FUN_0047ed51(); + if (cVar1 == '\x03') { + iVar2 = FUN_0048073c(param_4,&local_8,&local_c); + if (iVar2 == 0) { + *param_2 = local_c; + *param_3 = local_8; + uVar3 = 0; + } + else { + uVar3 = 1; + } + } + else { + FUN_0047e88f((param_1 >> 4) + 4,(int *)&local_10,(undefined2 *)&local_14); + *param_2 = local_10; + while (0xffff - param_1 < (local_10 & 0xffff)) { + FUN_0047e88f((param_1 >> 4) + 4,(int *)&local_10,(undefined2 *)&local_14); + *param_2 = local_10; + } + param_4[1] = local_14; + *param_4 = 0; + uVar3 = 0; + } + return uVar3; +} + + + +/* @0048073c file=? name=FUN_0048073c */ + +undefined4 __cdecl FUN_0048073c(undefined4 *param_1,undefined4 *param_2,undefined4 *param_3) + +{ + bool bVar1; + undefined3 extraout_var; + undefined4 uVar2; + undefined4 local_c; + undefined2 local_8 [2]; + + param_1[1] = 0; + *param_1 = 0; + *param_2 = 0; + *param_3 = 0; + local_c = 0; + bVar1 = FUN_0047ed6e(0x20,local_8,(undefined2 *)&local_c); + if (CONCAT31(extraout_var,bVar1) == 0) { + uVar2 = 5; + } + else { + uVar2 = 0; + } + return uVar2; +} + + + +/* @0048078c file=? name=FUN_0048078c */ + +void FUN_0048078c(void) + +{ + undefined2 local_c [2]; + undefined2 local_8 [2]; + + FUN_0047ef16(); + FUN_0047ed6e(0x20,local_8,local_c); + return; +} + + + +/* @004807af file=? name=FUN_004807af */ + +void FUN_004807af(void) + +{ + FUN_0047eff4(); + return; +} + + + +/* @004807c6 file=? name=FUN_004807c6 */ + +void FUN_004807c6(void) + +{ + FUN_0047eff4(); + return; +} + + + +/* @004807dd file=? name=FUN_004807dd */ + +void FUN_004807dd(void) + +{ + FUN_0047eff4(); + return; +} + + + +/* @004807f4 file=? name=FUN_004807f4 */ + +void FUN_004807f4(void) + +{ + FUN_0047eff4(); + return; +} + + + +/* @0048080b file=? name=FUN_0048080b */ + +void FUN_0048080b(void) + +{ + FUN_0047eff4(); + return; +} + + + +/* @00480822 file=? name=FUN_00480822 */ + +void FUN_00480822(void) + +{ + return; +} + + + +/* @00480827 file=? name=FUN_00480827 */ + +void FUN_00480827(void) + +{ + return; +} + + + +/* @0048082c file=? name=FUN_0048082c */ + +undefined4 __cdecl FUN_0048082c(int param_1,undefined1 *param_2) + +{ + undefined4 uVar1; + + if (*(int *)(&DAT_004fe2e8 + param_1 * 8) == 0) { + uVar1 = 1; + } + else if (param_2 == (undefined1 *)0x0) { + uVar1 = 2; + } + else { + FUN_0047e923(*(undefined4 *)(&DAT_004fe30c + param_1 * 8), + *(undefined4 *)(&DAT_004fe310 + param_1 * 8), + *(undefined6 *)(&DAT_004fe2e4 + param_1 * 8),param_2); + uVar1 = 0; + } + return uVar1; +} + + + +/* @0048088f file=? name=FUN_0048088f */ + +void FUN_0048088f(void) + +{ + return; +} + + + +/* @00480894 file=? name=FUN_00480894 */ + +void FUN_00480894(void) + +{ + return; +} + + + +/* @004809ba file=? name=FUN_004809ba */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 FUN_004809ba(void) + +{ + _DAT_004ff1ec = 0; + FUN_004de420(DAT_004ff214); + thunk_FUN_004d92c4(DAT_004ff200); + FUN_0047e693(); + FUN_0047e7c4(); + FUN_0047e7c4(); + return 0; +} + + + +/* @0048116d file=? name=FUN_0048116d */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl FUN_0048116d(undefined4 *param_1) + +{ + undefined4 uVar1; + + if (param_1 == (undefined4 *)0x0) { + uVar1 = 2; + } + else { + thunk_FUN_004d9334(DAT_004ff200,DAT_004ff204,0); + FUN_0047e9b9(); + *param_1 = DAT_004fe270; + param_1[2] = DAT_004fe274; + param_1[1] = DAT_004fe278; + param_1[3] = DAT_004fe27c; + if ((_DAT_004ff258 & 1) == 0) { + if ((DAT_004fe278 < 2) || (0xf < DAT_004fe278)) { + uVar1 = 0x11; + } + else { + uVar1 = 0; + } + } + else { + uVar1 = 0; + } + } + return uVar1; +} + + + +/* @00481286 file=? name=FUN_00481286 */ + +void FUN_00481286(void) + +{ + return; +} + + + +/* @0048130d file=? name=FUN_0048130d */ + +void __cdecl FUN_0048130d(undefined4 param_1) + +{ + byte bVar1; + + if (DAT_005005ec != 0) { + bVar1 = in(0x21); + out(0x21,bVar1 | 1); + out(0x43,0x36); + out(0x40,(char)param_1); + out(0x40,(char)((uint)param_1 >> 8)); + bVar1 = in(0x21); + out(0x21,bVar1 & 0xfe); + } + return; +} + + + +/* @00481353 file=? name=FUN_00481353 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_00481353(undefined4 param_1,undefined4 param_2) + +{ + code *pcVar1; + byte bVar2; + undefined2 extraout_CX; + undefined4 extraout_EDX; + undefined2 in_DS; + + DAT_004ff5c4 = param_2; + DAT_004ff5c8 = in_DS; + _DAT_004ff5ce = in_DS; + if (DAT_005005ec != 0) { + bVar2 = in(0x21); + out(0x21,bVar2 | 1); + pcVar1 = (code *)swi(0x31); + (*pcVar1)(); + pcVar1 = (code *)swi(0x31); + DAT_004ff5b8 = extraout_EDX; + DAT_004ff5bc._0_2_ = extraout_CX; + (*pcVar1)(); + out(0x43,0x36); + out(0x40,(char)param_1); + out(0x40,(char)((uint)param_1 >> 8)); + bVar2 = in(0x21); + out(0x21,bVar2 & 0xfe); + } + return; +} + + + +/* @004813d5 file=? name=FUN_004813d5 */ + +void FUN_004813d5(void) + +{ + byte bVar1; + + if (DAT_005005ec != 0) { + bVar1 = in(0x21); + out(0x21,bVar1 | 1); + } + return; +} + + + +/* @00481401 file=? name=FUN_00481401 */ + +void FUN_00481401(void) + +{ + byte bVar1; + + if (DAT_005005ec != 0) { + bVar1 = in(0x21); + out(0x21,bVar1 & 0xfe); + } + return; +} + + + +/* @0048142d file=? name=FUN_0048142d */ + +void FUN_0048142d(void) + +{ + code *pcVar1; + byte bVar2; + + if (DAT_005005ec != 0) { + bVar2 = in(0x21); + out(0x21,bVar2 | 1); + pcVar1 = (code *)swi(0x31); + (*pcVar1)(); + out(0x40,0); + out(0x40,0); + bVar2 = in(0x21); + out(0x21,bVar2 & 0xfe); + } + return; +} + + + +/* @00481480 file=? name=FUN_00481480 */ + +/* WARNING: Stack frame is not setup normally: Input value of stackpointer is not used */ +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined8 __fastcall FUN_00481480(undefined4 param_1,undefined4 param_2) + +{ + undefined4 uVar1; + undefined4 in_EAX; + undefined4 uVar2; + undefined4 *puVar3; + + if (DAT_005005ec != 0) { + DAT_005005e2 = 0; + uVar2 = *(undefined4 *)(_DAT_005005da + 0x20); + DAT_005005de = *(undefined4 *)(_DAT_005005da + 0x28); + puVar3 = (undefined4 *)DAT_004ff5d2; + uVar1 = *puVar3; + _DAT_005005da = CONCAT22(DAT_005005da_2,(short)uVar1); + *puVar3 = uVar1; + puVar3[-1] = uVar1; + puVar3[-1] = DAT_004ff5b8; + *puVar3 = DAT_004ff5bc; + puVar3[-2] = DAT_005005de; + return CONCAT44(uVar2,puVar3[-2]); + } + return CONCAT44(param_2,in_EAX); +} + + + +/* @004814d9 file=? name=FUN_004814d9 */ + +undefined2 FUN_004814d9(void) + +{ + return DAT_004ff5c8; +} + + + +/* @004814e4 file=? name=FUN_004814e4 */ + +void FUN_004814e4(void) + +{ + return; +} + + + +/* @004814e9 file=? name=FUN_004814e9 */ + +undefined * __cdecl FUN_004814e9(int param_1) + +{ + return (&PTR_s_Error_Code_Does_Not_Indicate_An_E_004ff288)[param_1]; +} + + + +/* @004814fc file=? name=FUN_004814fc */ + +void FUN_004814fc(void) + +{ + return; +} + + + +/* @00481528 file=? name=FUN_00481528 */ + +undefined8 __fastcall +FUN_00481528(undefined4 param_1,undefined4 param_2,int param_3,int param_4,undefined2 param_5) + +{ + undefined6 *puVar1; + int iVar2; + + puVar1 = (undefined6 *)(&DAT_004fe4c4 + param_3 * 0x80 + param_4 * 8); + iVar2 = (int)*puVar1; + if ((*(ushort *)(iVar2 + 0x30) & 0x8000) != 0) { + puVar1 = (undefined6 *)(uint)*(ushort *)(iVar2 + 0x32); + *(undefined2 *)(iVar2 + 0x32) = param_5; + } + return CONCAT44(param_2,puVar1); +} + + + +/* @00481675 file=? name=FUN_00481675 */ + +undefined8 __fastcall +FUN_00481675(undefined4 param_1,undefined4 param_2,int param_3,int param_4,undefined2 param_5) + +{ + undefined6 *puVar1; + int iVar2; + + puVar1 = (undefined6 *)(&DAT_004fe4c4 + param_3 * 0x80 + param_4 * 8); + iVar2 = (int)*puVar1; + if ((*(ushort *)(iVar2 + 0x30) & 0x8000) != 0) { + puVar1 = (undefined6 *)(uint)*(ushort *)(iVar2 + 0x54); + *(undefined2 *)(iVar2 + 0x54) = param_5; + } + return CONCAT44(param_2,puVar1); +} + + + +/* @0048186d file=? name=FUN_0048186d */ + +void FUN_0048186d(void) + +{ + return; +} + + + +/* @00481872 file=? name=FUN_00481872 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl FUN_00481872(uint param_1,uint param_2) + +{ + DAT_005005f0 = (param_2 & 2) != 0; + if ((param_2 & 1) == 0) { + DAT_005005ec._0_1_ = 1; + FUN_004813d5(); + FUN_00481353(0xffff,&LAB_00481e2b); + FUN_00481401(); + } + else { + DAT_005005ec._0_1_ = 0; + } + if ((param_1 == 0) || ((param_2 & 1) != 0)) { + DAT_004fee74 = 0xffff; + } + else { + if (param_1 == 0xff00) { + FUN_00481e10(0xffff); + DAT_004feef4 = 0xff00; + } + else { + FUN_00481e10((int)(0x1234dc / (ulonglong)param_1)); + DAT_004feef4 = param_1; + } + _DAT_004feeb4 = FUN_00481eff; + _DAT_004fef34 = 0x10000; + } + return 0; +} + + + +/* @00481934 file=? name=FUN_00481934 */ + +undefined4 FUN_00481934(void) + +{ + if ((char)DAT_005005ec != '\0') { + FUN_004813d5(); + FUN_0048142d(); + FUN_00481401(); + } + return 0; +} + + + +/* @00481953 file=? name=FUN_00481953 */ + +undefined4 __cdecl FUN_00481953(uint param_1,undefined4 param_2,uint *param_3) + +{ + undefined4 uVar1; + uint uVar2; + uint uVar3; + uint local_8; + + local_8 = 0; + for (uVar2 = 0; (uVar2 < 0x10 && ((&DAT_004fee78)[uVar2] != 0)); uVar2 = uVar2 + 1) { + } + if (uVar2 < 0x10) { + if ((char)DAT_005005ec != '\0') { + FUN_004813d5(); + } + (&DAT_004fee78)[uVar2] = param_2; + (&DAT_004feeb8)[uVar2] = param_1; + if ((uint)(0x1234dc / (ulonglong)param_1) < DAT_004fee74) { + FUN_00481e10((int)(0x1234dc / (ulonglong)param_1)); + local_8 = (DAT_004fee74 << 0x10) / (uint)(0x1234dc / (ulonglong)param_1); + } + for (uVar3 = 0; uVar3 < 0x10; uVar3 = uVar3 + 1) { + if ((&DAT_004fee78)[uVar3] != 0) { + if ((&DAT_004feeb8)[uVar3] == 0xff00) { + if (DAT_004fee74 == 0xffff) { + (&DAT_004feef8)[uVar3] = 0x10000; + } + else { + (&DAT_004feef8)[uVar3] = (int)(0x123333 / (0x1234dc / (ulonglong)DAT_004fee74)); + } + } + else { + (&DAT_004feef8)[uVar3] = + (uint)((&DAT_004feeb8)[uVar3] << 0x10) / (uint)(0x1234dc / (ulonglong)DAT_004fee74); + } + if (local_8 != 0) { + (&DAT_004fef38)[uVar3] = + ((local_8 & 0xffff) * (&DAT_004fef38)[uVar3] >> 0x10) + + ((local_8 >> 0x10) * (&DAT_004fef38)[uVar3] >> 0x10); + } + } + } + if ((char)DAT_005005ec != '\0') { + FUN_00481401(); + } + *param_3 = uVar2; + uVar1 = 0; + } + else { + uVar1 = 0xb; + } + return uVar1; +} + + + +/* @00481b29 file=? name=FUN_00481b29 */ + +undefined4 __cdecl FUN_00481b29(uint param_1,uint param_2) + +{ + undefined4 uVar1; + uint uVar2; + + if (param_1 < 0x10) { + if ((&DAT_004fee78)[param_1] == 0) { + uVar1 = 10; + } + else { + if ((char)DAT_005005ec != '\0') { + FUN_004813d5(); + } + (&DAT_004feeb8)[param_1] = param_2; + if ((uint)(0x1234dc / (ulonglong)param_2) < DAT_004fee74) { + FUN_00481e10((int)(0x1234dc / (ulonglong)param_2)); + } + for (uVar2 = 0; uVar2 < 0x10; uVar2 = uVar2 + 1) { + if ((&DAT_004fee78)[uVar2] != 0) { + if ((&DAT_004feeb8)[uVar2] == 0xff00) { + if (DAT_004fee74 == 0xffff) { + (&DAT_004feef8)[uVar2] = 0x10000; + } + else { + (&DAT_004feef8)[uVar2] = (int)(0x123333 / (0x1234dc / (ulonglong)DAT_004fee74)); + } + } + else { + (&DAT_004feef8)[uVar2] = + (uint)((&DAT_004feeb8)[uVar2] << 0x10) / (uint)(0x1234dc / (ulonglong)DAT_004fee74) + ; + } + (&DAT_004fef38)[uVar2] = 0; + } + } + if ((char)DAT_005005ec != '\0') { + FUN_00481401(); + } + uVar1 = 0; + } + } + else { + uVar1 = 10; + } + return uVar1; +} + + + +/* @00481c82 file=? name=FUN_00481c82 */ + +undefined4 __cdecl FUN_00481c82(int param_1) + +{ + uint uVar1; + uint uVar2; + + uVar1 = 0; + (&DAT_004fee78)[param_1] = 0; + for (uVar2 = 0; uVar2 < 0x10; uVar2 = uVar2 + 1) { + if ((((&DAT_004fee78)[uVar2] != 0) && (uVar1 < (uint)(&DAT_004feeb8)[uVar2])) && + ((&DAT_004feeb8)[uVar2] != 0xff00)) { + uVar1 = (&DAT_004feeb8)[uVar2]; + } + } + if (uVar1 == 0) { + FUN_00481e10(0xffff); + } + else { + FUN_00481e10((int)(0x1234dc / (ulonglong)uVar1)); + } + if ((char)DAT_005005ec != '\0') { + FUN_004813d5(); + } + for (uVar1 = 0; uVar1 < 0x10; uVar1 = uVar1 + 1) { + if ((&DAT_004fee78)[uVar1] != 0) { + if ((&DAT_004feeb8)[uVar1] == 0xff00) { + if (DAT_004fee74 == 0xffff) { + (&DAT_004feef8)[uVar1] = 0x10000; + } + else { + (&DAT_004feef8)[uVar1] = (int)(0x123333 / (0x1234dc / (ulonglong)DAT_004fee74)); + } + } + else { + (&DAT_004feef8)[uVar1] = + (uint)((&DAT_004feeb8)[uVar1] << 0x10) / (uint)(0x1234dc / (ulonglong)DAT_004fee74); + } + (&DAT_004fef38)[uVar1] = 0; + } + } + if ((char)DAT_005005ec != '\0') { + FUN_00481401(); + } + return 0; +} + + + +/* @00481dfd file=? name=FUN_00481dfd */ + +undefined4 __cdecl FUN_00481dfd(int param_1) + +{ + return (&DAT_004feeb8)[param_1]; +} + + + +/* @00481e10 file=? name=FUN_00481e10 */ + +undefined4 __cdecl FUN_00481e10(undefined4 param_1) + +{ + DAT_004fee74 = param_1; + FUN_0048130d(param_1); + return 0; +} + + + +/* @00481eff file=? name=FUN_00481eff */ + +undefined8 __fastcall FUN_00481eff(undefined4 param_1,undefined4 param_2) + +{ + undefined8 uVar1; + + uVar1 = FUN_00481480(param_1,param_2); + return uVar1; +} + + + +/* @00481f09 file=? name=FUN_00481f09 */ + +void FUN_00481f09(void) + +{ + return; +} + + + +/* @00481f0e file=? name=FUN_00481f0e */ + +void FUN_00481f0e(void) + +{ + return; +} + + + +/* @00481f13 file=? name=FUN_00481f13 */ + +bool __cdecl FUN_00481f13(int param_1) + +{ + return *(int *)(&DAT_00500674 + param_1 * 4) == 0; +} + + + +/* @00481f6d file=? name=FUN_00481f6d */ + +void FUN_00481f6d(void) + +{ + return; +} + + + +/* @00481f72 file=? name=FUN_00481f72 */ + +void FUN_00481f72(void) + +{ + return; +} + + + +/* @0048255c file=? name=FUN_0048255c */ + +undefined4 __cdecl FUN_0048255c(uint param_1) + +{ + undefined4 uVar1; + + if (param_1 < 8) { + *(undefined4 *)(&DAT_005015c8 + param_1 * 4) = 0; + uVar1 = 0; + } + else { + uVar1 = 10; + } + return uVar1; +} + + + +/* @00482587 file=? name=FUN_00482587 */ + +int __cdecl FUN_00482587(int param_1) + +{ + int iVar1; + + iVar1 = FUN_00481953(*(uint *)(*(int *)(&DAT_005015c8 + param_1 * 4) + 0x38),&LAB_00486467, + (uint *)(&DAT_005015e8 + param_1 * 4)); + if (iVar1 == 0) { + (&DAT_004fef78)[*(int *)(&DAT_005015e8 + param_1 * 4)] = (char)param_1; + (&DAT_00501588)[param_1] = 1; + iVar1 = 0; + } + return iVar1; +} + + + +/* @004826d1 file=? name=FUN_004826d1 */ + +undefined4 __cdecl FUN_004826d1(int param_1,undefined4 *param_2) + +{ + undefined4 uVar1; + int iVar2; + int iVar3; + uint uVar4; + int local_8; + + local_8 = 0; + uVar1 = FUN_00484177(*param_2); + *(undefined4 *)(&DAT_005015c8 + param_1 * 4) = uVar1; + iVar2 = *(int *)(&DAT_005015c8 + param_1 * 4) + 0x388; + *(undefined4 *)(&DAT_00501300 + param_1 * 4) = + *(undefined4 *)(*(int *)(&DAT_005015c8 + param_1 * 4) + 0x30); + *(undefined4 *)(&DAT_00501320 + param_1 * 4) = *(undefined4 *)(&DAT_00501300 + param_1 * 4); + *(undefined4 *)(*(int *)(&DAT_005015c8 + param_1 * 4) + 0x380) = param_2[1]; + for (uVar4 = 0; uVar4 < *(uint *)(&DAT_00501300 + param_1 * 4); uVar4 = uVar4 + 1) { + *(undefined4 *)(&DAT_00500ee0 + param_1 * 0x80 + uVar4 * 4) = 0; + uVar1 = FUN_00484177(local_8 + iVar2); + *(undefined4 *)(&DAT_00502bd8 + param_1 * 0x80 + uVar4 * 4) = uVar1; + uVar1 = FUN_00484177(local_8 + 0xc + iVar2); + *(undefined4 *)(&DAT_005006e0 + param_1 * 0x80 + uVar4 * 4) = uVar1; + iVar3 = FUN_004828ab(*(byte **)(&DAT_005006e0 + param_1 * 0x80 + uVar4 * 4), + (uint *)(&DAT_00500ae0 + param_1 * 0x80 + uVar4 * 4)); + *(int *)(&DAT_005006e0 + param_1 * 0x80 + uVar4 * 4) = + *(int *)(&DAT_005006e0 + param_1 * 0x80 + uVar4 * 4) + iVar3; + iVar3 = FUN_00484177(local_8 + iVar2); + local_8 = local_8 + *(int *)(iVar3 + 4); + } + for (uVar4 = 0; uVar4 < *(uint *)(&DAT_00501320 + param_1 * 4); uVar4 = uVar4 + 1) { + if (*(int *)(*(int *)(&DAT_005012e0 + param_1 * 4) + uVar4 * 4) == 0xff) { + *(undefined4 *)(&DAT_005006e0 + param_1 * 0x80 + uVar4 * 4) = 0; + *(int *)(&DAT_00501300 + param_1 * 4) = *(int *)(&DAT_00501300 + param_1 * 4) + -1; + } + } + return 0; +} + + + +/* @004828ab file=? name=FUN_004828ab */ + +int __cdecl FUN_004828ab(byte *param_1,uint *param_2) + +{ + byte bVar1; + bool bVar2; + byte bVar3; + int local_10; + uint local_c; + + bVar2 = false; + bVar3 = 0; + local_c = 0; + local_10 = 0; + do { + local_10 = local_10 + 1; + bVar1 = *param_1; + param_1 = param_1 + 1; + if ((bVar1 & 0x80) != 0) { + bVar2 = true; + } + local_c = local_c | (uint)(bVar1 & 0x7f) << (bVar3 & 0x1f); + bVar3 = bVar3 + 7; + } while (!bVar2); + *param_2 = local_c; + return local_10; +} + + + +/* @00482909 file=? name=FUN_00482909 */ + +undefined4 __cdecl FUN_00482909(undefined1 param_1) + +{ + uint uVar1; + + DAT_00503d24 = param_1; + for (uVar1 = 0; uVar1 < 8; uVar1 = uVar1 + 1) { + if ((&DAT_00501588)[uVar1] != 0) { + FUN_00483f75(uVar1,(&DAT_00503d28)[uVar1 * 4]); + } + } + return 0; +} + + + +/* @00482951 file=? name=FUN_00482951 */ + +undefined4 __cdecl FUN_00482951(int param_1,undefined4 param_2) + +{ + *(undefined4 *)(&DAT_005043dc + param_1 * 4) = param_2; + return 0; +} + + + +/* @0048296b file=? name=FUN_0048296b */ + +undefined4 __cdecl FUN_0048296b(int param_1,undefined4 param_2) + +{ + *(undefined4 *)(&DAT_005043bc + param_1 * 4) = param_2; + return 0; +} + + + +/* @00482985 file=? name=FUN_00482985 */ + +undefined4 __cdecl FUN_00482985(int param_1,byte param_2,undefined4 param_3) + +{ + *(undefined4 *)(&DAT_005043fc + param_1 * 0x1fc + (uint)param_2 * 4) = param_3; + return 0; +} + + + +/* @00482c9f file=? name=FUN_00482c9f */ + +void FUN_00482c9f(void) + +{ + return; +} + + + +/* @00482ca4 file=? name=FUN_00482ca4 */ + +void FUN_00482ca4(void) + +{ + return; +} + + + +/* @00482ca9 file=? name=FUN_00482ca9 */ + +bool __cdecl FUN_00482ca9(int param_1) + +{ + return (bool)('\x01' - ((&DAT_00501588)[param_1] != 0)); +} + + + +/* @00482cc1 file=? name=FUN_00482cc1 */ + +void FUN_00482cc1(void) + +{ + return; +} + + + +/* @00482cc6 file=? name=FUN_00482cc6 */ + +void FUN_00482cc6(void) + +{ + return; +} + + + +/* @00482ccb file=? name=FUN_00482ccb */ + +undefined4 FUN_00482ccb(void) + +{ + int iVar1; + undefined4 uVar2; + + iVar1 = FUN_0047e661(); + if (iVar1 == 0) { + iVar1 = FUN_0047e661(); + if (iVar1 == 0) { + iVar1 = FUN_0047e661(); + if (iVar1 == 0) { + iVar1 = FUN_0047e661(); + if (iVar1 == 0) { + iVar1 = FUN_0047e661(); + if (iVar1 == 0) { + iVar1 = FUN_0047e661(); + if (iVar1 == 0) { + iVar1 = FUN_0047e661(); + if (iVar1 == 0) { + iVar1 = FUN_0047e661(); + if (iVar1 == 0) { + iVar1 = FUN_0047e661(); + if (iVar1 == 0) { + iVar1 = FUN_0047e661(); + if (iVar1 == 0) { + iVar1 = FUN_0047e661(); + if (iVar1 == 0) { + iVar1 = FUN_0047e661(); + if (iVar1 == 0) { + iVar1 = FUN_0047e661(); + if (iVar1 == 0) { + iVar1 = FUN_0047e661(); + if (iVar1 == 0) { + iVar1 = FUN_0047e661(); + if (iVar1 == 0) { + uVar2 = 0; + } + else { + uVar2 = 5; + } + } + else { + uVar2 = 5; + } + } + else { + uVar2 = 5; + } + } + else { + uVar2 = 5; + } + } + else { + uVar2 = 5; + } + } + else { + uVar2 = 5; + } + } + else { + uVar2 = 5; + } + } + else { + uVar2 = 5; + } + } + else { + uVar2 = 5; + } + } + else { + uVar2 = 5; + } + } + else { + uVar2 = 5; + } + } + else { + uVar2 = 5; + } + } + else { + uVar2 = 5; + } + } + else { + uVar2 = 5; + } + } + else { + uVar2 = 5; + } + return uVar2; +} + + + +/* @00482f2f file=? name=FUN_00482f2f */ + +undefined4 FUN_00482f2f(void) + +{ + int iVar1; + undefined4 uVar2; + + iVar1 = FUN_0047e693(); + if (iVar1 == 0) { + iVar1 = FUN_0047e693(); + if (iVar1 == 0) { + iVar1 = FUN_0047e693(); + if (iVar1 == 0) { + iVar1 = FUN_0047e693(); + if (iVar1 == 0) { + iVar1 = FUN_0047e693(); + if (iVar1 == 0) { + iVar1 = FUN_0047e693(); + if (iVar1 == 0) { + iVar1 = FUN_0047e693(); + if (iVar1 == 0) { + iVar1 = FUN_0047e693(); + if (iVar1 == 0) { + iVar1 = FUN_0047e693(); + if (iVar1 == 0) { + iVar1 = FUN_0047e693(); + if (iVar1 == 0) { + iVar1 = FUN_0047e693(); + if (iVar1 == 0) { + iVar1 = FUN_0047e693(); + if (iVar1 == 0) { + iVar1 = FUN_0047e693(); + if (iVar1 == 0) { + iVar1 = FUN_0047e693(); + if (iVar1 == 0) { + iVar1 = FUN_0047e693(); + if (iVar1 == 0) { + uVar2 = 0; + } + else { + uVar2 = 5; + } + } + else { + uVar2 = 5; + } + } + else { + uVar2 = 5; + } + } + else { + uVar2 = 5; + } + } + else { + uVar2 = 5; + } + } + else { + uVar2 = 5; + } + } + else { + uVar2 = 5; + } + } + else { + uVar2 = 5; + } + } + else { + uVar2 = 5; + } + } + else { + uVar2 = 5; + } + } + else { + uVar2 = 5; + } + } + else { + uVar2 = 5; + } + } + else { + uVar2 = 5; + } + } + else { + uVar2 = 5; + } + } + else { + uVar2 = 5; + } + return uVar2; +} + + + +/* @00483193 file=? name=FUN_00483193 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +int __cdecl FUN_00483193(char *param_1) + +{ + int iVar1; + + iVar1 = FUN_00482ccb(); + if (iVar1 == 0) { + if (param_1 == (char *)0x0) { + DAT_00503dac = 0; + } + else { + FUN_004d4a48(&DAT_00503dac,param_1); + } + DAT_00501674 = FUN_00487a02; + _DAT_0050167c = &LAB_00487a27; + _DAT_00501684 = &LAB_00487a56; + _DAT_0050168c = &LAB_00487a85; + _DAT_00501694 = &LAB_00487ab4; + DAT_00501678 = FUN_0047ef44(); + _DAT_00501680 = FUN_0047ef44(); + _DAT_00501688 = FUN_0047ef44(); + _DAT_00501690 = FUN_0047ef44(); + _DAT_00501698 = FUN_0047ef44(); + DAT_0050212c = &LAB_00487ae3; + _DAT_00502134 = &LAB_00487b12; + _DAT_0050213c = &LAB_00487b41; + _DAT_00502144 = &LAB_00487b70; + _DAT_0050214c = &LAB_00487b9f; + DAT_00502130 = FUN_0047ef44(); + _DAT_00502138 = FUN_0047ef44(); + _DAT_00502140 = FUN_0047ef44(); + _DAT_00502148 = FUN_0047ef44(); + _DAT_00502150 = FUN_0047ef44(); + _DAT_00501670 = 1; + iVar1 = 0; + } + return iVar1; +} + + + +/* @004832a1 file=? name=FUN_004832a1 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 FUN_004832a1(void) + +{ + int iVar1; + undefined4 uVar2; + + iVar1 = FUN_00482f2f(); + if (iVar1 == 0) { + _DAT_00501670 = 0; + uVar2 = 0; + } + else { + uVar2 = 5; + } + return uVar2; +} + + + +/* @004832c2 file=? name=FUN_004832c2 */ + +int __cdecl FUN_004832c2(uint param_1,undefined4 *param_2,int param_3,uint *param_4) + +{ + int iVar1; + uint uVar2; + uint uVar3; + uint uVar4; + undefined4 local_34; + undefined4 local_28; + undefined4 local_24; + undefined4 local_20; + undefined4 local_1c; + int local_18; + uint local_14; + uint local_10; + undefined4 local_c [2]; + + for (uVar2 = 0; (uVar4 = 6, uVar2 < 5 && (uVar4 = uVar2, (&DAT_005006b0)[uVar2] != 0)); + uVar2 = uVar2 + 1) { + } + if (uVar4 == 6) { + iVar1 = 0xb; + } + else { + (&DAT_005006b0)[uVar4] = param_1; + for (uVar2 = 0; uVar2 < 0x10; uVar2 = uVar2 + 1) { + (&DAT_00503cd4)[uVar4 * 0x10 + uVar2] = (&DAT_00503c24)[(param_1 - 0xa000) * 0x10 + uVar2]; + } + if ((&DAT_005006b0)[uVar4] == 0xa003) { + FUN_00485138(local_c); + uVar2 = 0; + while (uVar3 = uVar2, uVar3 < 0xd) { + (&DAT_00501340)[uVar3 * 2 + uVar4 * 0x1a] = (&DAT_00501674)[uVar3 * 2]; + (&DAT_00501344)[uVar3 * 2 + uVar4 * 0x1a] = (&DAT_00501678)[uVar3 * 2]; + local_14 = uVar3; + local_10 = uVar4; + uVar2 = uVar3 + 1; + } + DAT_00503fac = *(undefined4 *)(param_3 + 0x14); + iVar1 = FUN_0048790c((&DAT_00501348)[uVar4 * 0x1a],(&DAT_0050134c)[uVar4 * 0x1a],DAT_00503fac, + DAT_00503fb0,uVar4,DAT_00503fb4); + if (iVar1 != 0) { + return iVar1; + } + local_18 = 0; + } + else if ((&DAT_005006b0)[uVar4] == 0xa005) { + FUN_00484221(local_c); + uVar2 = 0; + while (uVar3 = uVar2, uVar3 < 0xd) { + (&DAT_00501340)[uVar3 * 2 + uVar4 * 0x1a] = (&DAT_0050212c)[uVar3 * 2]; + (&DAT_00501344)[uVar3 * 2 + uVar4 * 0x1a] = (&DAT_00502130)[uVar3 * 2]; + local_14 = uVar3; + local_10 = uVar4; + uVar2 = uVar3 + 1; + } + DAT_00503fac = *(undefined4 *)(param_3 + 0x14); + iVar1 = FUN_0048790c((&DAT_00501348)[uVar4 * 0x1a],(&DAT_0050134c)[uVar4 * 0x1a],DAT_00503fac, + DAT_00503fb0,uVar4,DAT_00503fb4); + if (iVar1 != 0) { + return iVar1; + } + local_18 = 0; + } + else { + if (*(int *)(param_3 + 8) == 0) { + iVar1 = FUN_004838a9(param_1,uVar4,&local_28,&local_20, + (undefined2 *)(&DAT_0050069c + uVar4 * 4),&DAT_00500638 + uVar4 * 4, + (undefined4 *)(&DAT_00500624 + uVar4 * 4)); + if (iVar1 != 0) { + return iVar1; + } + *(undefined4 *)(param_3 + 4) = local_20; + *(undefined4 *)(param_3 + 8) = local_1c; + *(undefined4 *)(param_3 + 0xc) = local_28; + *(undefined4 *)(param_3 + 0x10) = local_24; + *(undefined4 *)(&DAT_005005fc + uVar4 * 8) = local_20; + *(undefined4 *)(&DAT_00500600 + uVar4 * 8) = local_1c; + *(undefined4 *)(&DAT_0050064c + uVar4 * 8) = local_28; + *(undefined4 *)(&DAT_00500650 + uVar4 * 8) = local_24; + local_18 = 0; + } + else { + local_20 = *(undefined4 *)(param_3 + 4); + local_1c = *(undefined4 *)(param_3 + 8); + local_28 = *(undefined4 *)(param_3 + 0xc); + local_24 = *(undefined4 *)(param_3 + 0x10); + *(undefined4 *)(&DAT_005005fc + uVar4 * 8) = local_20; + *(undefined4 *)(&DAT_00500600 + uVar4 * 8) = local_1c; + *(undefined4 *)(&DAT_0050064c + uVar4 * 8) = local_28; + *(undefined4 *)(&DAT_00500650 + uVar4 * 8) = local_24; + } + local_14 = uVar2; + local_10 = uVar4; + FUN_00481f13(uVar4); + FUN_0048796e(local_28,(short)local_24,CONCAT24((short)local_1c,local_20), + &DAT_00501340 + uVar4 * 0x1a); + *(undefined4 *)(&DAT_00500674 + uVar4 * 4) = 1; + *param_4 = uVar4; + local_18 = FUN_0048790c((&DAT_00501348)[uVar4 * 0x1a],(&DAT_0050134c)[uVar4 * 0x1a], + *(undefined4 *)(param_3 + 0x18),local_34,param_2[1],*param_2); + if (local_18 != 0) { + return local_18; + } + } + if ((&DAT_005006b0)[uVar4] == 0xa00a) { + FUN_004879b6(); + FUN_00481953(0x78,FUN_00483888,&DAT_00503fb8); + } + *(undefined4 *)(&DAT_00500674 + uVar4 * 4) = 1; + *param_4 = uVar4; + iVar1 = 0; + } + return iVar1; +} + + + +/* @004836b0 file=? name=FUN_004836b0 */ + +undefined4 __cdecl FUN_004836b0(uint param_1,int param_2) + +{ + int iVar1; + undefined4 uVar2; + + if (*(int *)(&DAT_00500674 + param_1 * 4) == 0) { + uVar2 = 1; + } + else { + FUN_0048790c(*(undefined4 *)(&DAT_00501350 + param_1 * 0x68), + *(undefined4 *)(&DAT_00501354 + param_1 * 0x68),DAT_00503fac,DAT_00503fb0,param_1, + DAT_00503fb4); + if ((((param_2 != 0) && (iVar1 = (&DAT_005006b0)[param_1], iVar1 != 0xa003)) && + (iVar1 != 0xa005)) && (iVar1 != 0xa007)) { + FUN_00483ae7(param_1); + } + if ((&DAT_005006b0)[param_1] == 0xa00a) { + FUN_00481c82(DAT_00503fb8); + } + *(undefined4 *)(&DAT_00500600 + param_1 * 8) = 0; + *(undefined4 *)(&DAT_00500650 + param_1 * 8) = 0; + (&DAT_005006b0)[param_1] = 0; + *(undefined4 *)(&DAT_00500674 + param_1 * 4) = 0; + uVar2 = 0; + } + return uVar2; +} + + + +/* @00483799 file=? name=FUN_00483799 */ + +undefined4 __cdecl FUN_00483799(int param_1) + +{ + uint uVar1; + undefined4 local_8; + + for (uVar1 = 0; uVar1 < 0x10; uVar1 = uVar1 + 1) { + DAT_00503c08 = (byte)uVar1 | 0xb0; + DAT_00503c09 = 0x79; + DAT_00503c0a = 0; + DAT_00503fb0 = FUN_0047ef40(); + DAT_00503fac = &DAT_00503c08; + FUN_0048790c((&DAT_00501340)[param_1 * 0x1a],(&DAT_00501344)[param_1 * 0x1a],&DAT_00503c08, + DAT_00503fb0,3,param_1); + DAT_00503c08 = (byte)uVar1 | 0xb0; + DAT_00503c09 = 0x7b; + DAT_00503c0a = 0; + local_8 = 3; + FUN_0048790c((&DAT_00501340)[param_1 * 0x1a],(&DAT_00501344)[param_1 * 0x1a],DAT_00503fac, + DAT_00503fb0,3,param_1); + } + FUN_0048790c(*(undefined4 *)(&DAT_00501358 + param_1 * 0x68), + *(undefined4 *)(&DAT_0050135c + param_1 * 0x68),DAT_00503fac,DAT_00503fb0,local_8, + param_1); + return 0; +} + + + +/* @00483888 file=? name=FUN_00483888 */ + +void FUN_00483888(void) + +{ + FUN_004879e0(); + return; +} + + + +/* @0048389f file=? name=FUN_0048389f */ + +void FUN_0048389f(void) + +{ + return; +} + + + +/* @004838a4 file=? name=FUN_004838a4 */ + +void FUN_004838a4(void) + +{ + return; +} + + + +/* @004838a9 file=? name=FUN_004838a9 */ + +undefined4 __cdecl +FUN_004838a9(uint param_1,uint param_2,undefined4 *param_3,undefined4 *param_4,undefined2 *param_5, + undefined1 *param_6,undefined4 *param_7) + +{ + char *pcVar1; + undefined4 uVar2; + uint uVar3; + int iVar4; + void *this; + uint unaff_ESI; + undefined4 local_28; + undefined4 uStack_24; + undefined1 *local_20; + undefined4 local_1c; + undefined4 local_18; + uint local_14; + int local_10; + char *local_c; + char *local_8; + + local_8 = (char *)0x2c; + local_c = (char *)0x30; + local_10 = 0; + local_14 = 0; + if (param_2 < 6) { + if (*(int *)(&DAT_00500674 + param_2 * 4) == 0) { + if ((param_1 < 0xa000) || (0xa200 < param_1)) { + uVar2 = 6; + } + else { + FUN_004d4a48(&DAT_00503eac,&DAT_00503dac); + FUN_004d49b8(&DAT_00503eac,s_hmimdrv_386_00501608); + uVar3 = thunk_FUN_004d93ac(&DAT_00503eac,0x8000,unaff_ESI); + if (uVar3 == 0xffffffff) { + uVar2 = 0xf; + } + else { + thunk_FUN_004d892c(uVar3,&DAT_00501614,local_8); + while ((local_14 <= DAT_00501634 && (local_10 == 0))) { + thunk_FUN_004d892c(uVar3,&DAT_00501640,local_c); + pcVar1 = DAT_00501664; + if (DAT_00501668 == param_1) { + local_10 = 1; + iVar4 = FUN_0047e6c0(this,(uint)DAT_00501664,param_5,(undefined2 *)&local_18,&local_20 + ); + if (iVar4 == -1) { + return 5; + } + FUN_0047e7fa(local_20,(ushort)local_1c,&local_28); + FUN_0047e661(); + DAT_004ff214 = FUN_004de55c((uint)(pcVar1 + 0x100)); + if (DAT_004ff214 == (int *)0x0) { + return 5; + } + thunk_FUN_004d892c(uVar3,(char *)DAT_004ff214,pcVar1); + FUN_0047efd1(local_20,local_1c,(undefined1 *)DAT_004ff214,(int)pcVar1); + FUN_004de420(DAT_004ff214); + *param_3 = local_28; + param_3[1] = uStack_24; + *param_4 = local_20; + param_4[1] = local_1c; + *param_6 = (char)pcVar1; + *param_7 = local_18; + } + else { + thunk_FUN_004d9334(uVar3,(LONG)DAT_00501664,1); + } + local_14 = local_14 + 1; + } + thunk_FUN_004d92c4(uVar3); + *(uint *)(&DAT_00500688 + param_2 * 4) = DAT_00501668; + *(undefined4 *)(&DAT_00500674 + param_2 * 4) = 1; + if (local_10 == 0) { + uVar2 = 7; + } + else { + uVar2 = 0; + } + } + } + } + else { + uVar2 = 9; + } + } + else { + uVar2 = 10; + } + return uVar2; +} + + + +/* @00483ae7 file=? name=FUN_00483ae7 */ + +undefined4 __cdecl FUN_00483ae7(uint param_1) + +{ + undefined4 uVar1; + + if (param_1 < 6) { + if (*(int *)(&DAT_00500674 + param_1 * 4) == 0) { + uVar1 = 10; + } + else { + *(undefined4 *)(&DAT_00500674 + param_1 * 4) = 0; + FUN_0047e693(); + FUN_0047e7c4(); + FUN_0047e7c4(); + uVar1 = 0; + } + } + else { + uVar1 = 10; + } + return uVar1; +} + + + +/* @00483b91 file=? name=FUN_00483b91 */ + +void FUN_00483b91(void) + +{ + return; +} + + + +/* @00483b96 file=? name=FUN_00483b96 */ + +void FUN_00483b96(void) + +{ + return; +} + + + +/* @00483df0 file=? name=FUN_00483df0 */ + +undefined4 __cdecl FUN_00483df0(int param_1) + +{ + uint uVar1; + + for (uVar1 = 0; uVar1 < 0x20; uVar1 = uVar1 + 1) { + if (*(int *)(&DAT_005006e0 + param_1 * 0x80 + uVar1 * 4) != 0) { + DAT_00503c14 = *(byte *)(*(int *)(&DAT_00502bd8 + param_1 * 0x80 + uVar1 * 4) + 8) | 0xb0; + DAT_00503c15 = 7; + DAT_00503c16 = 0; + FUN_004852c7(param_1,&DAT_00503c14,*(int *)(*(int *)(&DAT_005012e0 + param_1 * 4) + uVar1 * 4) + ,3); + } + } + *(undefined4 *)(&DAT_00501568 + param_1 * 4) = 1; + return 0; +} + + + +/* @00483f75 file=? name=FUN_00483f75 */ + +undefined4 __cdecl FUN_00483f75(int param_1,byte param_2) + +{ + byte bVar1; + int iVar2; + uint uVar3; + byte local_10; + + *(uint *)(&DAT_00503d28 + param_1 * 4) = (uint)param_2; + for (uVar3 = 0; uVar3 < 0x20; uVar3 = uVar3 + 1) { + if (*(int *)(&DAT_005006e0 + param_1 * 0x80 + uVar3 * 4) != 0) { + bVar1 = *(byte *)(*(int *)(&DAT_00502bd8 + param_1 * 0x80 + uVar3 * 4) + 8); + iVar2 = *(int *)(*(int *)(&DAT_005012e0 + param_1 * 4) + uVar3 * 4); + local_10 = bVar1; + if (DAT_00503c20 != 0) { + local_10 = (&DAT_00502fd8)[iVar2 * 0x80 + param_1 * 0x10 + (uint)bVar1]; + } + DAT_00503c14 = bVar1 | 0xb0; + DAT_00503c15 = 7; + DAT_00503c16 = (&DAT_00503d48)[iVar2 * 0x10 + (uint)local_10]; + FUN_004852c7(param_1,&DAT_00503c14,*(int *)(*(int *)(&DAT_005012e0 + param_1 * 4) + uVar3 * 4) + ,3); + } + } + return 0; +} + + + +/* @0048416d file=? name=FUN_0048416d */ + +void FUN_0048416d(void) + +{ + return; +} + + + +/* @00484172 file=? name=FUN_00484172 */ + +void FUN_00484172(void) + +{ + return; +} + + + +/* @00484177 file=? name=FUN_00484177 */ + +undefined4 __cdecl FUN_00484177(undefined4 param_1) + +{ + return param_1; +} + + + +/* @0048417f file=? name=FUN_0048417f */ + +void FUN_0048417f(void) + +{ + return; +} + + + +/* @00484184 file=? name=FUN_00484184 */ + +void FUN_00484184(void) + +{ + return; +} + + + +/* @00484189 file=? name=FUN_00484189 */ + +undefined4 __cdecl FUN_00484189(int param_1,int param_2) + +{ + bool bVar1; + undefined3 extraout_var; + undefined4 uVar2; + uint uVar3; + + bVar1 = FUN_00482ca9(param_1); + if (CONCAT31(extraout_var,bVar1) == 0) { + uVar3 = ((uint)(param_2 << 0x10) / 100) * *(int *)(*(int *)(&DAT_005015c8 + param_1 * 4) + 0x38) + >> 0x10; + if (uVar3 == 0) { + uVar3 = 1; + } + FUN_00481b29(*(uint *)(&DAT_005015e8 + param_1 * 4),uVar3); + uVar2 = FUN_00481dfd(*(int *)(&DAT_005015e8 + param_1 * 4)); + } + else { + uVar2 = 0; + } + return uVar2; +} + + + +/* @00484201 file=? name=FUN_00484201 */ + +undefined4 __cdecl FUN_00484201(int param_1) + +{ + return *(undefined4 *)(*(int *)(&DAT_005015c8 + param_1 * 4) + 0x3c); +} + + + +/* @00484217 file=? name=FUN_00484217 */ + +void FUN_00484217(void) + +{ + return; +} + + + +/* @0048421c file=? name=FUN_0048421c */ + +void FUN_0048421c(void) + +{ + return; +} + + + +/* @00484221 file=? name=FUN_00484221 */ + +void __cdecl FUN_00484221(undefined4 *param_1) + +{ + *param_1 = &DAT_0050212c; + return; +} + + + +/* @00484230 file=? name=FUN_00484230 */ + +undefined4 __thiscall +FUN_00484230(void *this,char *param_1,undefined4 param_2,undefined4 param_3,int param_4) + +{ + int *piVar1; + void *extraout_ECX; + void *extraout_ECX_00; + void *extraout_ECX_01; + void *extraout_ECX_02; + undefined4 extraout_ECX_03; + undefined4 extraout_ECX_04; + undefined4 extraout_ECX_05; + void *extraout_ECX_06; + uint uVar2; + int iVar3; + uint uVar4; + uint uVar5; + undefined8 uVar6; + uint local_20; + + iVar3 = (int)param_1[1]; + uVar4 = (uint)param_1[2]; + uVar5 = (int)*param_1 & 0xf; + uVar2 = (int)*param_1 & 0xf0; + if (uVar2 == 0x80) { + if (((*(int *)(&DAT_00502154 + param_4 * 0x200 + iVar3 * 4) != 0) && + (*(int *)(*(int *)(&DAT_00502154 + param_4 * 0x200 + iVar3 * 4) + 0x24) != -0x8000)) && + (uVar2 = FUN_00484bd7(param_4,iVar3,uVar5), uVar2 != 0xffffffff)) { + FUN_0047f807(extraout_ECX_04,&DAT_00502b68,*(int *)(&DAT_00502b68 + param_4 * 4),uVar2); + } + } + else if (uVar2 == 0x90) { + piVar1 = *(int **)(&DAT_00502154 + param_4 * 0x200 + iVar3 * 4); + if (piVar1 != (int *)0x0) { + if (uVar4 == 0) { + if ((piVar1[9] != -0x8000) && + (uVar2 = FUN_00484bd7(param_4,iVar3,uVar5), uVar2 != 0xffffffff)) { + FUN_0047f807(extraout_ECX_03,&DAT_00502b68,*(int *)(&DAT_00502b68 + param_4 * 4),uVar2); + } + } + else { + if ((piVar1[9] != -0x8000) && + (uVar2 = FUN_00484bd7(param_4,iVar3,uVar5), this = extraout_ECX, uVar2 != 0xffffffff)) { + FUN_0047f807(extraout_ECX,&DAT_00502b68,*(int *)(&DAT_00502b68 + param_4 * 4),uVar2); + this = extraout_ECX_00; + } + if ((*(uint *)(&DAT_00502104 + param_4 * 4) <= *(uint *)(&DAT_00502118 + param_4 * 4)) && + (uVar2 = FUN_00484a84(param_4,uVar5), this = extraout_ECX_01, uVar2 != 0xffffffff)) { + FUN_0047f807(extraout_ECX_01,&DAT_00502b68,*(int *)(&DAT_00502b68 + param_4 * 4),uVar2); + this = extraout_ECX_02; + } + if (*(int *)(&DAT_00502bb8 + param_4 * 4) != 0) { + piVar1[5] = *(int *)(&DAT_005016a0 + param_4 * 0xc) * uVar4 >> 7; + piVar1[5] = piVar1[5] << 8; + } + piVar1[6] = iVar3; + if (((&DAT_005016a4)[param_4 * 3] & 0x80) == 0) { + piVar1[0x10] = (&DAT_005016a4)[param_4 * 3] << 9; + } + uVar6 = FUN_0047f629(this,&DAT_00502b68,*(int *)(&DAT_00502b68 + param_4 * 4),piVar1); + if ((int)uVar6 != -1) { + FUN_004849f1(param_4,(int)uVar6,piVar1[6],uVar4,uVar5); + } + } + } + } + else if (uVar2 == 0xb0) { + if (iVar3 == 7) { + *(uint *)(&DAT_005016a0 + param_4 * 0xc) = uVar4; + for (local_20 = *(uint *)(&DAT_005020f0 + param_4 * 4); + local_20 != *(uint *)(&DAT_005020dc + param_4 * 4); local_20 = local_20 + 1 & 0x1f) { + if (*(int *)(&DAT_005016dc + param_4 * 0x200 + local_20 * 0x10) != -1) { + iVar3 = param_4 * 0x200 + local_20 * 0x10; + FUN_00481528(iVar3,(int)((ulonglong)uVar4 * (ulonglong)*(uint *)(&DAT_005016e4 + iVar3) >> + 0x20),*(int *)(&DAT_00502b68 + param_4 * 4), + *(int *)(&DAT_005016dc + param_4 * 0x200 + local_20 * 0x10), + (short)((ulonglong)uVar4 * (ulonglong)*(uint *)(&DAT_005016e4 + iVar3)) * 2); + } + } + } + else if (iVar3 == 10) { + (&DAT_005016a4)[param_4 * 3] = uVar4; + for (local_20 = *(uint *)(&DAT_005020f0 + param_4 * 4); + local_20 != *(uint *)(&DAT_005020dc + param_4 * 4); local_20 = local_20 + 1 & 0x1f) { + FUN_00481675(this,*(undefined4 *)(&DAT_005016dc + param_4 * 0x200 + local_20 * 0x10), + *(int *)(&DAT_00502b68 + param_4 * 4), + *(undefined4 *)(&DAT_005016dc + param_4 * 0x200 + local_20 * 0x10), + (short)(uVar4 << 9)); + this = extraout_ECX_06; + } + } + else if (iVar3 == 0x7b) { + while (uVar2 = FUN_00484a84(param_4,uVar5), uVar2 != 0xffffffff) { + FUN_0047f807(extraout_ECX_05,&DAT_00502b68,*(int *)(&DAT_00502b68 + param_4 * 4),uVar2); + } + } + } + return 0; +} + + + +/* @004845e4 file=? name=FUN_004845e4 */ + +int __cdecl FUN_004845e4(uint *param_1,undefined4 param_2,int param_3) + +{ + int iVar1; + uint uVar2; + uint local_c; + uint *local_8; + + uVar2 = 0; + local_8 = param_1; + do { + if (4 < uVar2) { +LAB_00484627: + if (uVar2 == 5) { + *(undefined4 *)(&DAT_00502ba4 + param_3 * 4) = 1; + iVar1 = FUN_0047fc2c(*param_1,param_1[6],(uint *)param_1[5],&local_c); + if (iVar1 != 0) { + return iVar1; + } + *(uint *)(&DAT_00502b68 + param_3 * 4) = local_c; + iVar1 = FUN_00481953(local_8[1],*(undefined4 *)(local_8[5] + 0x44), + (uint *)(&DAT_00502b90 + param_3 * 4)); + if (iVar1 != 0) { + return iVar1; + } + *(undefined4 *)(&DAT_00502b7c + param_3 * 4) = 1; + } + else { + *(undefined4 *)(&DAT_00502ba4 + param_3 * 4) = 0; + } + *(uint *)(&DAT_00502bb8 + param_3 * 4) = local_8[4]; + FUN_00484931(param_3,local_8[3]); + *(int *)(&DAT_00505468 + local_c * 4) = param_3; + for (uVar2 = 0; uVar2 < 5; uVar2 = uVar2 + 1) { + (&DAT_005016a4)[uVar2 * 3] = (&DAT_005016a4)[uVar2 * 3] | 0x80; + } + return 0; + } + if ((&DAT_004fecf4)[uVar2 * 0x14] == *param_1) { + *(uint *)(&DAT_00502b68 + param_3 * 4) = uVar2; + local_c = uVar2; + goto LAB_00484627; + } + uVar2 = uVar2 + 1; + } while( true ); +} + + + +/* @0048471f file=? name=FUN_0048471f */ + +undefined4 __cdecl FUN_0048471f(undefined4 param_1,undefined4 param_2,int param_3) + +{ + if ((*(int *)(&DAT_00502b7c + param_3 * 4) != 0) && + (*(undefined4 *)(&DAT_00502b7c + param_3 * 4) = 0, *(int *)(&DAT_00502ba4 + param_3 * 4) != 0)) + { + FUN_00481c82(*(int *)(&DAT_00502b90 + param_3 * 4)); + FUN_004804bd(*(uint *)(&DAT_00502b68 + param_3 * 4),1,1); + } + FUN_004849ec(); + return 0; +} + + + +/* @00484796 file=? name=FUN_00484796 */ + +undefined4 __cdecl FUN_00484796(undefined4 param_1,undefined4 param_2,int param_3) + +{ + FUN_00484931(param_3,*(undefined4 *)(&DAT_00502104 + param_3 * 4)); + return 0; +} + + + +/* @004847b8 file=? name=FUN_004847b8 */ + +undefined4 __cdecl FUN_004847b8(int param_1,undefined4 param_2,int param_3) + +{ + undefined4 uVar1; + int iVar2; + uint uVar3; + uint local_8; + + *(int *)(&DAT_00502b54 + param_3 * 4) = param_1; + for (local_8 = 0; local_8 < 0x80; local_8 = local_8 + 1) { + *(undefined4 *)(&DAT_00502154 + param_3 * 0x200 + local_8 * 4) = 0; + } + iVar2 = 0; + while( true ) { + if (s_HMIDIGIP_00502bcc[iVar2] == '\0') { + uVar3 = 0x28; + do { + iVar2 = FUN_00484177(uVar3 + param_1); + iVar2 = *(int *)(iVar2 + 0x18); + uVar1 = FUN_00484177(uVar3 + param_1); + *(undefined4 *)(&DAT_00502154 + param_3 * 0x200 + iVar2 * 4) = uVar1; + uVar1 = FUN_00484177(uVar3 + param_1 + 0x74); + **(undefined4 **)(&DAT_00502154 + param_3 * 0x200 + iVar2 * 4) = uVar1; + *(code **)(*(int *)(&DAT_00502154 + param_3 * 0x200 + iVar2 * 4) + 0x1c) = FUN_004848f8; + uVar3 = uVar3 + *(int *)(*(int *)(&DAT_00502154 + param_3 * 0x200 + iVar2 * 4) + 8) + 0x74; + } while (uVar3 < *(uint *)(*(int *)(&DAT_00502b54 + param_3 * 4) + 0x24)); + return 0; + } + if ((int)*(char *)(param_1 + iVar2) != (uint)(byte)s_HMIDIGIP_00502bcc[iVar2]) break; + iVar2 = iVar2 + 1; + } + return 0xe; +} + + + +/* @004848f8 file=? name=FUN_004848f8 */ + +void __cdecl FUN_004848f8(int param_1,int param_2,int param_3) + +{ + FUN_004814d9(); + if (param_2 == 2) { + FUN_00484d35(*(int *)(&DAT_00505468 + param_1 * 4),param_3); + } + FUN_0047f013(); + return; +} + + + +/* @00484927 file=? name=FUN_00484927 */ + +void FUN_00484927(void) + +{ + return; +} + + + +/* @0048492c file=? name=FUN_0048492c */ + +void FUN_0048492c(void) + +{ + return; +} + + + +/* @00484931 file=? name=FUN_00484931 */ + +void __cdecl FUN_00484931(int param_1,undefined4 param_2) + +{ + uint uVar1; + + for (uVar1 = 0; uVar1 < 0x20; uVar1 = uVar1 + 1) { + *(undefined4 *)(&DAT_005016dc + param_1 * 0x200 + uVar1 * 0x10) = 0xffffffff; + *(undefined4 *)(&DAT_005016e0 + param_1 * 0x200 + uVar1 * 0x10) = 0xffffffff; + *(undefined4 *)(&DAT_005016e8 + param_1 * 0x200 + uVar1 * 0x10) = 0xffffffff; + *(undefined4 *)(&DAT_005016e4 + param_1 * 0x200 + uVar1 * 0x10) = 0xffffffff; + } + *(undefined4 *)(&DAT_005020dc + param_1 * 4) = 0; + *(undefined4 *)(&DAT_005020f0 + param_1 * 4) = 0; + *(undefined4 *)(&DAT_00502118 + param_1 * 4) = 0; + *(undefined4 *)(&DAT_00502104 + param_1 * 4) = param_2; + return; +} + + + +/* @004849ec file=? name=FUN_004849ec */ + +void FUN_004849ec(void) + +{ + return; +} + + + +/* @004849f1 file=? name=FUN_004849f1 */ + +int __cdecl +FUN_004849f1(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5 + ) + +{ + int iVar1; + int iVar2; + + if (*(uint *)(&DAT_00502118 + param_1 * 4) < *(uint *)(&DAT_00502104 + param_1 * 4)) { + iVar1 = *(int *)(&DAT_005020dc + param_1 * 4); + iVar2 = param_1 * 0x200 + iVar1 * 0x10; + *(undefined4 *)(&DAT_005016dc + iVar2) = param_2; + *(undefined4 *)(&DAT_005016e0 + iVar2) = param_3; + *(undefined4 *)(&DAT_005016e4 + iVar2) = param_4; + *(undefined4 *)(&DAT_005016e8 + iVar2) = param_5; + *(int *)(&DAT_00502118 + param_1 * 4) = *(int *)(&DAT_00502118 + param_1 * 4) + 1; + *(int *)(&DAT_005020dc + param_1 * 4) = *(int *)(&DAT_005020dc + param_1 * 4) + 1; + *(uint *)(&DAT_005020dc + param_1 * 4) = *(uint *)(&DAT_005020dc + param_1 * 4) & 0x1f; + } + else { + iVar1 = -1; + } + return iVar1; +} + + + +/* @00484a84 file=? name=FUN_00484a84 */ + +int __cdecl FUN_00484a84(int param_1,int param_2) + +{ + int iVar1; + uint uVar2; + int iVar3; + undefined4 *puVar4; + uint uVar5; + undefined4 *puVar6; + int *local_8; + + if (*(int *)(&DAT_00502118 + param_1 * 4) == 0) { + iVar1 = -1; + } + else { + uVar5 = 0; + while ((uVar5 < 0x20 && + ((iVar1 = param_1 * 0x200 + uVar5 * 0x10, local_8 = (int *)(&DAT_005016dc + iVar1), + *(int *)(&DAT_005016e8 + iVar1) != param_2 || (*local_8 == -1))))) { + uVar5 = uVar5 + 1; + } + if (uVar5 == 0x20) { + iVar1 = -1; + } + else { + iVar1 = *local_8; + while (uVar5 != *(uint *)(&DAT_005020f0 + param_1 * 4)) { + uVar2 = uVar5 - 1 & 0x1f; + puVar4 = (undefined4 *)(&DAT_005016dc + param_1 * 0x200 + uVar2 * 0x10); + puVar6 = (undefined4 *)(&DAT_005016dc + param_1 * 0x200 + uVar5 * 0x10); + for (iVar3 = 4; uVar5 = uVar2, iVar3 != 0; iVar3 = iVar3 + -1) { + *puVar6 = *puVar4; + puVar4 = puVar4 + 1; + puVar6 = puVar6 + 1; + } + } + *(undefined4 *)(&DAT_005016dc + param_1 * 0x200 + uVar5 * 0x10) = 0xffffffff; + *(undefined4 *)(&DAT_005016e0 + param_1 * 0x200 + uVar5 * 0x10) = 0xffffffff; + *(undefined4 *)(&DAT_005016e8 + param_1 * 0x200 + uVar5 * 0x10) = 0xffffffff; + *(undefined4 *)(&DAT_005016e4 + param_1 * 0x200 + uVar5 * 0x10) = 0xffffffff; + *(int *)(&DAT_005020f0 + param_1 * 4) = *(int *)(&DAT_005020f0 + param_1 * 4) + 1; + *(uint *)(&DAT_005020f0 + param_1 * 4) = *(uint *)(&DAT_005020f0 + param_1 * 4) & 0x1f; + *(int *)(&DAT_00502118 + param_1 * 4) = *(int *)(&DAT_00502118 + param_1 * 4) + -1; + } + } + return iVar1; +} + + + +/* @00484bd7 file=? name=FUN_00484bd7 */ + +int __cdecl FUN_00484bd7(int param_1,int param_2,int param_3) + +{ + int iVar1; + uint uVar2; + int iVar3; + undefined4 *puVar4; + uint uVar5; + undefined4 *puVar6; + int *local_8; + + if (*(int *)(&DAT_00502118 + param_1 * 4) == 0) { + iVar1 = -1; + } + else { + for (uVar5 = 0; uVar5 < 0x20; uVar5 = uVar5 + 1) { + iVar1 = param_1 * 0x200 + uVar5 * 0x10; + local_8 = (int *)(&DAT_005016dc + iVar1); + if (((*(int *)(&DAT_005016e0 + iVar1) == param_2) && + (*(int *)(&DAT_005016e8 + iVar1) == param_3)) && (*local_8 != -1)) break; + } + if (uVar5 == 0x20) { + iVar1 = -1; + } + else { + iVar1 = *local_8; + while (uVar5 != *(uint *)(&DAT_005020f0 + param_1 * 4)) { + uVar2 = uVar5 - 1 & 0x1f; + puVar4 = (undefined4 *)(&DAT_005016dc + param_1 * 0x200 + uVar2 * 0x10); + puVar6 = (undefined4 *)(&DAT_005016dc + param_1 * 0x200 + uVar5 * 0x10); + for (iVar3 = 4; uVar5 = uVar2, iVar3 != 0; iVar3 = iVar3 + -1) { + *puVar6 = *puVar4; + puVar4 = puVar4 + 1; + puVar6 = puVar6 + 1; + } + } + *(undefined4 *)(&DAT_005016dc + param_1 * 0x200 + uVar5 * 0x10) = 0xffffffff; + *(undefined4 *)(&DAT_005016e0 + param_1 * 0x200 + uVar5 * 0x10) = 0xffffffff; + *(undefined4 *)(&DAT_005016e8 + param_1 * 0x200 + uVar5 * 0x10) = 0xffffffff; + *(undefined4 *)(&DAT_005016e4 + param_1 * 0x200 + uVar5 * 0x10) = 0xffffffff; + *(int *)(&DAT_005020f0 + param_1 * 4) = *(int *)(&DAT_005020f0 + param_1 * 4) + 1; + *(uint *)(&DAT_005020f0 + param_1 * 4) = *(uint *)(&DAT_005020f0 + param_1 * 4) & 0x1f; + *(int *)(&DAT_00502118 + param_1 * 4) = *(int *)(&DAT_00502118 + param_1 * 4) + -1; + } + } + return iVar1; +} + + + +/* @00484d35 file=? name=FUN_00484d35 */ + +int __cdecl FUN_00484d35(int param_1,int param_2) + +{ + uint uVar1; + int iVar2; + undefined4 *puVar3; + uint uVar4; + undefined4 *puVar5; + + if (*(int *)(&DAT_00502118 + param_1 * 4) == 0) { + param_2 = -1; + } + else { + uVar4 = 0; + while ((uVar4 < 0x20 && (*(int *)(&DAT_005016dc + param_1 * 0x200 + uVar4 * 0x10) != param_2))) + { + uVar4 = uVar4 + 1; + } + if (uVar4 == 0x20) { + param_2 = -1; + } + else { + while (uVar4 != *(uint *)(&DAT_005020f0 + param_1 * 4)) { + uVar1 = uVar4 - 1 & 0x1f; + puVar3 = (undefined4 *)(&DAT_005016dc + param_1 * 0x200 + uVar1 * 0x10); + puVar5 = (undefined4 *)(&DAT_005016dc + param_1 * 0x200 + uVar4 * 0x10); + for (iVar2 = 4; uVar4 = uVar1, iVar2 != 0; iVar2 = iVar2 + -1) { + *puVar5 = *puVar3; + puVar3 = puVar3 + 1; + puVar5 = puVar5 + 1; + } + } + *(undefined4 *)(&DAT_005016dc + param_1 * 0x200 + uVar4 * 0x10) = 0xffffffff; + *(undefined4 *)(&DAT_005016e0 + param_1 * 0x200 + uVar4 * 0x10) = 0xffffffff; + *(undefined4 *)(&DAT_005016e8 + param_1 * 0x200 + uVar4 * 0x10) = 0xffffffff; + *(undefined4 *)(&DAT_005016e4 + param_1 * 0x200 + uVar4 * 0x10) = 0xffffffff; + *(int *)(&DAT_005020f0 + param_1 * 4) = *(int *)(&DAT_005020f0 + param_1 * 4) + 1; + *(uint *)(&DAT_005020f0 + param_1 * 4) = *(uint *)(&DAT_005020f0 + param_1 * 4) & 0x1f; + *(int *)(&DAT_00502118 + param_1 * 4) = *(int *)(&DAT_00502118 + param_1 * 4) + -1; + } + } + return param_2; +} + + + +/* @00484e72 file=? name=FUN_00484e72 */ + +int __cdecl FUN_00484e72(int param_1,int param_2,int param_3) + +{ + int iVar1; + int *unaff_ESI; + uint uVar2; + + if (*(int *)(&DAT_00502118 + param_1 * 4) == 0) { + iVar1 = -1; + } + else { + for (uVar2 = 0; uVar2 < 0x20; uVar2 = uVar2 + 1) { + iVar1 = param_1 * 0x200 + uVar2 * 0x10; + unaff_ESI = (int *)(&DAT_005016dc + iVar1); + if (((*(int *)(&DAT_005016e0 + iVar1) == param_2) && + (*(int *)(&DAT_005016e8 + iVar1) == param_3)) && (*unaff_ESI != -1)) break; + } + if (uVar2 == 0x20) { + iVar1 = -1; + } + else { + iVar1 = *unaff_ESI; + } + } + return iVar1; +} + + + +/* @00485020 file=? name=FUN_00485020 */ + +undefined4 __cdecl FUN_00485020(int param_1,uint param_2) + +{ + uint uVar1; + int iVar2; + undefined4 *puVar3; + undefined4 *puVar4; + + if (*(int *)(&DAT_00502118 + param_1 * 4) != 0) { + while (param_2 != *(uint *)(&DAT_005020f0 + param_1 * 4)) { + uVar1 = param_2 - 1 & 0x1f; + puVar3 = (undefined4 *)(&DAT_005016dc + param_1 * 0x200 + uVar1 * 0x10); + puVar4 = (undefined4 *)(&DAT_005016dc + param_1 * 0x200 + param_2 * 0x10); + for (iVar2 = 4; param_2 = uVar1, iVar2 != 0; iVar2 = iVar2 + -1) { + *puVar4 = *puVar3; + puVar3 = puVar3 + 1; + puVar4 = puVar4 + 1; + } + } + *(undefined4 *)(&DAT_005016dc + param_1 * 0x200 + param_2 * 0x10) = 0xffffffff; + *(undefined4 *)(&DAT_005016e0 + param_1 * 0x200 + param_2 * 0x10) = 0xffffffff; + *(undefined4 *)(&DAT_005016e8 + param_1 * 0x200 + param_2 * 0x10) = 0xffffffff; + *(undefined4 *)(&DAT_005016e4 + param_1 * 0x200 + param_2 * 0x10) = 0xffffffff; + *(int *)(&DAT_005020f0 + param_1 * 4) = *(int *)(&DAT_005020f0 + param_1 * 4) + 1; + *(uint *)(&DAT_005020f0 + param_1 * 4) = *(uint *)(&DAT_005020f0 + param_1 * 4) & 0x1f; + *(int *)(&DAT_00502118 + param_1 * 4) = *(int *)(&DAT_00502118 + param_1 * 4) + -1; + } + return 0xffffffff; +} + + + +/* @0048512e file=? name=FUN_0048512e */ + +void FUN_0048512e(void) + +{ + return; +} + + + +/* @00485133 file=? name=FUN_00485133 */ + +void FUN_00485133(void) + +{ + return; +} + + + +/* @00485138 file=? name=FUN_00485138 */ + +void __cdecl FUN_00485138(undefined4 *param_1) + +{ + *param_1 = &DAT_00501674; + return; +} + + + +/* @00485147 file=? name=FUN_00485147 */ + +undefined4 __cdecl +FUN_00485147(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) + +{ + (*DAT_0050169c)(param_1,param_2,param_3,param_4); + return 0; +} + + + +/* @00485166 file=? name=FUN_00485166 */ + +undefined4 FUN_00485166(void) + +{ + return 0; +} + + + +/* @0048516d file=? name=FUN_0048516d */ + +undefined4 FUN_0048516d(void) + +{ + return 0; +} + + + +/* @00485174 file=? name=FUN_00485174 */ + +undefined4 FUN_00485174(void) + +{ + return 0; +} + + + +/* @0048517b file=? name=FUN_0048517b */ + +undefined4 __cdecl FUN_0048517b(undefined4 param_1) + +{ + DAT_0050169c = param_1; + return 0; +} + + + +/* @0048518a file=? name=FUN_0048518a */ + +void FUN_0048518a(void) + +{ + return; +} + + + +/* @0048518f file=? name=FUN_0048518f */ + +void FUN_0048518f(void) + +{ + return; +} + + + +/* @00485194 file=? name=FUN_00485194 */ + +void __cdecl FUN_00485194(int param_1,undefined4 param_2,undefined4 param_3) + +{ + DAT_00503fac = param_2; + DAT_00503fb0 = FUN_0047ef40(); + FUN_0048790c(*(undefined4 *)(&DAT_00501360 + param_1 * 0x68), + *(undefined4 *)(&DAT_00501364 + param_1 * 0x68),DAT_00503fac,DAT_00503fb0,param_1, + param_3); + return; +} + + + +/* @004852b1 file=? name=FUN_004852b1 */ + +void FUN_004852b1(void) + +{ + DAT_00503d98 = 1; + return; +} + + + +/* @004852bd file=? name=FUN_004852bd */ + +void FUN_004852bd(void) + +{ + return; +} + + + +/* @004852c2 file=? name=FUN_004852c2 */ + +void FUN_004852c2(void) + +{ + return; +} + + + +/* @004852c7 file=? name=FUN_004852c7 */ + +undefined4 __cdecl FUN_004852c7(int param_1,byte *param_2,int param_3,undefined4 param_4) + +{ + byte bVar1; + byte bVar2; + undefined4 uVar3; + byte bVar4; + uint uVar5; + uint local_28; + byte local_24; + uint local_10; + byte local_c; + byte local_8; + + local_8 = 0; + local_c = 0xff; + local_10 = 0xffffffff; + bVar1 = *param_2; + bVar4 = bVar1 & 0xf; + if (DAT_00503c20 == 0) { + if (((int)(char)*param_2 & 0xf0U) == 0xb0) { + if (param_2[1] == 7) { + DAT_00503c08 = *param_2; + DAT_00503c09 = 7; + DAT_00503c0a = (byte)(((uint)((int)(char)param_2[2] * *(int *)(&DAT_00503d28 + param_1 * 4)) + >> 7) * (uint)DAT_00503d24 >> 7); + (&DAT_00503d48)[param_3 * 0x10 + (uint)bVar4] = param_2[2]; + if (*(int *)(&DAT_00501568 + param_1 * 4) != 0) { + DAT_00503c0a = 0; + } + } + else { + DAT_00503c08 = *param_2; + DAT_00503c09 = param_2[1]; + DAT_00503c0a = param_2[2]; + DAT_00503c0b = param_2[3]; + } + DAT_00503fb0 = FUN_0047ef40(); + DAT_00503fac = &DAT_00503c08; + FUN_0048790c((&DAT_00501340)[param_3 * 0x1a],(&DAT_00501344)[param_3 * 0x1a],&DAT_00503c08, + DAT_00503fb0,param_4,param_3); + } + else { + DAT_00503fb0 = FUN_0047ef40(); + DAT_00503fac = param_2; + FUN_0048790c((&DAT_00501340)[param_3 * 0x1a],(&DAT_00501344)[param_3 * 0x1a],param_2, + DAT_00503fb0,param_4,param_3); + } + uVar3 = 1; + } + else { + local_24 = (&DAT_00502fd8)[param_3 * 0x80 + param_1 * 0x10 + (uint)bVar4]; +LAB_00485460: + if (local_24 == 0xff) { + if (bVar4 == 9) { + *(undefined1 *)(param_3 * 0x80 + param_1 * 0x10 + 0x502fe1) = 9; + local_24 = 9; + } + else { + for (local_28 = 0; local_28 < 0x10; local_28 = local_28 + 1) { + for (; ((&DAT_00503cd4)[param_3 * 0x10 + local_28] == '\0' && (local_28 < 0x10)); + local_28 = local_28 + 1) { + } + if ((local_28 < 0x10) && ((&DAT_005032a8)[param_3 * 0x10 + local_28] == -1)) { + local_24 = (byte)local_28; + (&DAT_00502fd8)[param_3 * 0x80 + param_1 * 0x10 + (uint)bVar4] = local_24; + (&DAT_005032a8)[param_3 * 0x10 + local_28] = bVar4; + (&DAT_005032f8)[param_3 * 0x10 + local_28] = (char)param_1; + (&DAT_00503258)[param_3 * 0x10 + local_28] = + *(undefined1 *)(*(int *)(&DAT_005015c8 + param_1 * 4) + 0x40 + (uint)bVar4 * 4); + uVar5 = (uint)(byte)(&DAT_00503988)[param_3 * 0x80 + param_1 * 0x10 + (uint)bVar4]; + if (uVar5 == 0xff) { + uVar5 = 0; + goto LAB_00485938; + } + (&DAT_00503d48)[param_3 * 0x10 + (local_28 & 0xff)] = 0x7f; + DAT_00503c08 = local_24 | 0xb0; + DAT_00503c09 = 0x79; + DAT_00503c0a = 0; + DAT_00503fb0 = FUN_0047ef40(); + DAT_00503fac = &DAT_00503c08; + FUN_0048790c((&DAT_00501340)[param_3 * 0x1a],(&DAT_00501344)[param_3 * 0x1a], + &DAT_00503c08,DAT_00503fb0,3,param_3); + if ((&DAT_0050334b)[param_3 * 0x140 + (uint)bVar4 * 0x14 + uVar5 * 5] != -1) { + DAT_00503c08 = local_24 | 0xc0; + DAT_00503c09 = (&DAT_0050334b)[param_3 * 0x140 + (uint)bVar4 * 0x14 + uVar5 * 5]; + DAT_00503fb0 = FUN_0047ef40(); + DAT_00503fac = &DAT_00503c08; + FUN_0048790c((&DAT_00501340)[param_3 * 0x1a],(&DAT_00501344)[param_3 * 0x1a], + &DAT_00503c08,DAT_00503fb0,2,param_3); + } + if ((&DAT_00503349)[param_3 * 0x140 + (uint)bVar4 * 0x14 + uVar5 * 5] != -1) { + DAT_00503c08 = local_24 | 0xe0; + DAT_00503c09 = 0; + DAT_00503c0a = (&DAT_00503349)[param_3 * 0x140 + (uint)bVar4 * 0x14 + uVar5 * 5]; + DAT_00503fb0 = FUN_0047ef40(); + DAT_00503fac = &DAT_00503c08; + FUN_0048790c((&DAT_00501340)[param_3 * 0x1a],(&DAT_00501344)[param_3 * 0x1a], + &DAT_00503c08,DAT_00503fb0,2,param_3); + } + if ((&DAT_0050334a)[param_3 * 0x140 + (uint)bVar4 * 0x14 + uVar5 * 5] != -1) { + DAT_00503c08 = local_24 | 0xb0; + DAT_00503c09 = 7; + DAT_00503c0a = (&DAT_0050334a)[param_3 * 0x140 + (uint)bVar4 * 0x14 + uVar5 * 5]; + DAT_00503fb0 = FUN_0047ef40(); + DAT_00503fac = &DAT_00503c08; + FUN_0048790c((&DAT_00501340)[param_3 * 0x1a],(&DAT_00501344)[param_3 * 0x1a], + &DAT_00503c08,DAT_00503fb0,3,param_3); + } + if ((&DAT_0050334c)[param_3 * 0x140 + (uint)bVar4 * 0x14 + uVar5 * 5] != -1) { + DAT_00503c08 = local_24 | 0xb0; + DAT_00503c09 = 0x40; + DAT_00503c0a = (&DAT_0050334c)[param_3 * 0x140 + (uint)bVar4 * 0x14 + uVar5 * 5]; + DAT_00503fb0 = FUN_0047ef40(); + DAT_00503fac = &DAT_00503c08; + FUN_0048790c((&DAT_00501340)[param_3 * 0x1a],(&DAT_00501344)[param_3 * 0x1a], + &DAT_00503c08,DAT_00503fb0,3,param_3); + } + goto LAB_00485460; + } + } + for (local_28 = 0; local_28 < 0x10; local_28 = local_28 + 1) { + for (; ((&DAT_00503cd4)[param_3 * 0x10 + local_28] == '\0' && (local_28 < 0x10)); + local_28 = local_28 + 1) { + } + if (((local_28 < 0x10) && (local_8 < (byte)(&DAT_00503258)[param_3 * 0x10 + local_28])) && + ((&DAT_00503258)[param_3 * 0x10 + local_28] != -1)) { + local_8 = (&DAT_00503258)[param_3 * 0x10 + local_28]; + local_c = (byte)local_28; + } + } + if (local_c == 0xff) goto LAB_00485cbf; + if ((uint)local_8 <= + *(uint *)(*(int *)(&DAT_005015c8 + param_1 * 4) + 0x40 + (uint)bVar4 * 4)) { + if ((&DAT_00503988)[param_3 * 0x80 + param_1 * 0x10 + (uint)bVar4] != -1) + goto LAB_00485cbf; + uVar5 = 0; + goto LAB_00485cba; + } + (&DAT_00502fd8)[param_3 * 0x80 + param_1 * 0x10 + (uint)bVar4] = local_c; + (&DAT_00502fd8) + [param_3 * 0x80 + (uint)(byte)(&DAT_005032f8)[param_3 * 0x10 + (uint)local_c] * 0x10 + + (uint)(byte)(&DAT_005032a8)[param_3 * 0x10 + (uint)local_c]] = 0xff; + (&DAT_005032a8)[param_3 * 0x10 + (uint)local_c] = bVar4; + (&DAT_005032f8)[param_3 * 0x10 + (uint)local_c] = (char)param_1; + (&DAT_00503258)[param_3 * 0x10 + (uint)local_c] = + *(undefined1 *)(*(int *)(&DAT_005015c8 + param_1 * 4) + 0x40 + (uint)bVar4 * 4); + (&DAT_00503d48)[param_3 * 0x10 + (uint)local_c] = 0x7f; + DAT_00503c08 = local_c | 0xb0; + DAT_00503c09 = 0x7b; + DAT_00503c0a = 0; + local_24 = local_c; + DAT_00503fb0 = FUN_0047ef40(); + DAT_00503fac = &DAT_00503c08; + FUN_0048790c((&DAT_00501340)[param_3 * 0x1a],(&DAT_00501344)[param_3 * 0x1a],&DAT_00503c08, + DAT_00503fb0,3,param_3); + DAT_00503c08 = local_c | 0xb0; + DAT_00503c09 = 0x79; + DAT_00503c0a = 0; + DAT_00503fb0 = FUN_0047ef40(); + DAT_00503fac = &DAT_00503c08; + FUN_0048790c((&DAT_00501340)[param_3 * 0x1a],(&DAT_00501344)[param_3 * 0x1a],&DAT_00503c08, + DAT_00503fb0,3,param_3); + if ((&DAT_00503988)[param_3 * 0x80 + param_1 * 0x10 + (uint)bVar4] == -1) { + for (uVar5 = 0; uVar5 < 4; uVar5 = uVar5 + 1) { + if ((&DAT_00503348)[param_3 * 0x140 + (uint)bVar4 * 0x14 + uVar5 * 5] == -1) { + (&DAT_00503348)[param_3 * 0x140 + (uint)bVar4 * 0x14 + uVar5 * 5] = 1; + (&DAT_00503988)[param_3 * 0x80 + param_1 * 0x10 + (uint)bVar4] = (char)uVar5; + break; + } + } + } + } + goto LAB_00485460; + } + *param_2 = bVar1 & 0xf0 | local_24; +LAB_00485cbf: + if (bVar4 == 9) { + if ((bVar1 == 0xb9) && (param_2[1] == 7)) { + local_10 = (uint)param_2[2]; + (&DAT_00503d51)[param_3 * 0x10] = param_2[2]; + } + } + else { + bVar2 = bVar1 & 0xf0; + if (bVar2 == 0xb0) { + if (param_2[1] == 7) { + (&DAT_0050334a) + [param_3 * 0x140 + (uint)bVar4 * 0x14 + + (uint)(byte)(&DAT_00503988)[param_3 * 0x80 + param_1 * 0x10 + (uint)bVar4] * 5] = + param_2[2]; + local_10 = (uint)param_2[2]; + (&DAT_00503d48)[param_3 * 0x10 + (uint)local_24] = param_2[2]; + } + else if (param_2[1] == 0x40) { + (&DAT_0050334c) + [param_3 * 0x140 + (uint)bVar4 * 0x14 + + (uint)(byte)(&DAT_00503988)[param_3 * 0x80 + param_1 * 0x10 + (uint)bVar4] * 5] = + param_2[2]; + } + } + else if (bVar2 == 0xc0) { + (&DAT_0050334b) + [param_3 * 0x140 + (uint)bVar4 * 0x14 + + (uint)(byte)(&DAT_00503988)[param_3 * 0x80 + param_1 * 0x10 + (uint)bVar4] * 5] = + param_2[1]; + } + else if (bVar2 == 0xe0) { + (&DAT_00503349) + [param_3 * 0x140 + (uint)bVar4 * 0x14 + + (uint)(byte)(&DAT_00503988)[param_3 * 0x80 + param_1 * 0x10 + (uint)bVar4] * 5] = + param_2[2]; + } + } + if (local_24 == 0xff) { + uVar3 = 0xffffffff; + } + else { + if (local_10 != 0xffffffff) { + if (*(int *)(&DAT_00501568 + param_1 * 4) == 0) { + param_2[2] = (byte)((local_10 * *(int *)(&DAT_00503d28 + param_1 * 4) >> 7) * + (uint)DAT_00503d24 >> 7); + } + else { + param_2[2] = 0; + } + } + DAT_00503fb0 = FUN_0047ef40(); + DAT_00503fac = param_2; + FUN_0048790c((&DAT_00501340)[param_3 * 0x1a],(&DAT_00501344)[param_3 * 0x1a],param_2, + DAT_00503fb0,param_4,param_3); + *param_2 = bVar1; + if (local_10 != 0xffffffff) { + param_2[2] = (byte)local_10; + } + uVar3 = 0; + } + } + return uVar3; +LAB_00485938: + if (3 < uVar5) goto LAB_00485460; + if ((&DAT_00503348)[param_3 * 0x140 + (uint)bVar4 * 0x14 + uVar5 * 5] == -1) { + (&DAT_00503348)[param_3 * 0x140 + (uint)bVar4 * 0x14 + uVar5 * 5] = 1; + (&DAT_00503988)[param_3 * 0x80 + param_1 * 0x10 + (uint)bVar4] = (char)uVar5; + goto LAB_00485460; + } + uVar5 = uVar5 + 1; + goto LAB_00485938; +LAB_00485cba: + if (3 < uVar5) goto LAB_00485cbf; + if ((&DAT_00503348)[param_3 * 0x140 + (uint)bVar4 * 0x14 + uVar5 * 5] == -1) { + (&DAT_00503348)[param_3 * 0x140 + (uint)bVar4 * 0x14 + uVar5 * 5] = 1; + (&DAT_00503988)[param_3 * 0x80 + param_1 * 0x10 + (uint)bVar4] = (char)uVar5; + goto LAB_00485cbf; + } + uVar5 = uVar5 + 1; + goto LAB_00485cba; +} + + + +/* @00485f3e file=? name=FUN_00485f3e */ + +undefined4 __cdecl FUN_00485f3e(int param_1) + +{ + byte bVar1; + byte bVar2; + byte bVar3; + int iVar4; + uint local_8; + + for (local_8 = 1; local_8 < *(uint *)(&DAT_00501320 + param_1 * 4); local_8 = local_8 + 1) { + iVar4 = *(int *)(*(int *)(&DAT_005012e0 + param_1 * 4) + local_8 * 4); + if ((iVar4 != -1) && (iVar4 != 0xff)) { + bVar1 = *(byte *)(*(int *)(&DAT_00502bd8 + param_1 * 0x80 + local_8 * 4) + 8); + if (DAT_00503c20 == 0) { + DAT_00503c08 = bVar1 | 0xb0; + DAT_00503c09 = 0x7b; + DAT_00503c0a = 0; + DAT_00503fb0 = FUN_0047ef40(); + DAT_00503fac = &DAT_00503c08; + FUN_0048790c((&DAT_00501340)[iVar4 * 0x1a],(&DAT_00501344)[iVar4 * 0x1a],&DAT_00503c08, + DAT_00503fb0,3,iVar4); + DAT_00503c08 = bVar1 | 0xb0; + DAT_00503c09 = 0x79; + DAT_00503c0a = 0; + DAT_00503fb0 = FUN_0047ef40(); + DAT_00503fac = &DAT_00503c08; + FUN_0048790c((&DAT_00501340)[iVar4 * 0x1a],(&DAT_00501344)[iVar4 * 0x1a],&DAT_00503c08, + DAT_00503fb0,3,iVar4); + DAT_00503c08 = bVar1 | 0xe0; + DAT_00503c09 = 0x40; + DAT_00503c0a = 0x40; + DAT_00503fb0 = FUN_0047ef40(); + DAT_00503fac = &DAT_00503c08; + FUN_0048790c((&DAT_00501340)[iVar4 * 0x1a],(&DAT_00501344)[iVar4 * 0x1a],&DAT_00503c08, + DAT_00503fb0,3,iVar4); + DAT_00503c08 = bVar1 | 0xb0; + DAT_00503c09 = 7; + DAT_00503c0a = 0; + DAT_00503fb0 = FUN_0047ef40(); + DAT_00503fac = &DAT_00503c08; + FUN_0048790c((&DAT_00501340)[iVar4 * 0x1a],(&DAT_00501344)[iVar4 * 0x1a],&DAT_00503c08, + DAT_00503fb0,3,iVar4); + } + else { + bVar2 = (&DAT_00502fd8)[iVar4 * 0x80 + param_1 * 0x10 + (uint)bVar1]; + (&DAT_00502fd8)[iVar4 * 0x80 + param_1 * 0x10 + (uint)bVar1] = 0xff; + bVar3 = (&DAT_00503988)[iVar4 * 0x80 + param_1 * 0x10 + (uint)bVar1]; + (&DAT_005032a8)[iVar4 * 0x10 + (uint)bVar2] = 0xff; + (&DAT_005032f8)[iVar4 * 0x10 + (uint)bVar2] = 0xff; + DAT_00503c08 = bVar2 | 0xb0; + DAT_00503c09 = 0x7b; + DAT_00503c0a = 0; + DAT_00503fb0 = FUN_0047ef40(); + DAT_00503fac = &DAT_00503c08; + FUN_0048790c((&DAT_00501340)[iVar4 * 0x1a],(&DAT_00501344)[iVar4 * 0x1a],&DAT_00503c08, + DAT_00503fb0,3,iVar4); + DAT_00503c08 = bVar2 | 0xb0; + DAT_00503c09 = 0x79; + DAT_00503c0a = 0; + DAT_00503fb0 = FUN_0047ef40(); + DAT_00503fac = &DAT_00503c08; + FUN_0048790c((&DAT_00501340)[iVar4 * 0x1a],(&DAT_00501344)[iVar4 * 0x1a],&DAT_00503c08, + DAT_00503fb0,3,iVar4); + DAT_00503c08 = bVar2 | 0xe0; + DAT_00503c09 = 0x40; + DAT_00503c0a = 0x40; + DAT_00503fb0 = FUN_0047ef40(); + DAT_00503fac = &DAT_00503c08; + FUN_0048790c((&DAT_00501340)[iVar4 * 0x1a],(&DAT_00501344)[iVar4 * 0x1a],&DAT_00503c08, + DAT_00503fb0,3,iVar4); + DAT_00503c08 = bVar2 | 0xb0; + DAT_00503c09 = 7; + DAT_00503c0a = 0; + DAT_00503fb0 = FUN_0047ef40(); + DAT_00503fac = &DAT_00503c08; + FUN_0048790c((&DAT_00501340)[iVar4 * 0x1a],(&DAT_00501344)[iVar4 * 0x1a],&DAT_00503c08, + DAT_00503fb0,3,iVar4); + if (bVar3 != 0xff) { + (&DAT_0050334b)[iVar4 * 0x140 + (uint)bVar1 * 0x14 + (uint)bVar3 * 5] = 0xff; + (&DAT_00503349)[iVar4 * 0x140 + (uint)bVar1 * 0x14 + (uint)bVar3 * 5] = 0xff; + (&DAT_0050334a)[iVar4 * 0x140 + (uint)bVar1 * 0x14 + (uint)bVar3 * 5] = 0xff; + (&DAT_0050334c)[iVar4 * 0x140 + (uint)bVar1 * 0x14 + (uint)bVar3 * 5] = 0xff; + (&DAT_00503348)[iVar4 * 0x140 + (uint)bVar1 * 0x14 + (uint)bVar3 * 5] = 0xff; + (&DAT_00503988)[iVar4 * 0x80 + param_1 * 0x10 + (uint)bVar1] = 0xff; + } + } + } + } + return 1; +} + + + +/* @00486402 file=? name=FUN_00486402 */ + +undefined4 __cdecl FUN_00486402(int param_1,undefined4 param_2,undefined4 param_3) + +{ + DAT_00503fb0 = FUN_0047ef40(); + DAT_00503fac = param_2; + FUN_0048790c((&DAT_00501340)[param_1 * 0x1a],(&DAT_00501344)[param_1 * 0x1a],param_2,DAT_00503fb0, + param_3,param_1); + return 0; +} + + + +/* @0048644a file=? name=FUN_0048644a */ + +undefined4 __cdecl FUN_0048644a(undefined4 param_1) + +{ + undefined4 uVar1; + + uVar1 = DAT_00503c20; + DAT_00503c20 = param_1; + return uVar1; +} + + + +/* @0048645d file=? name=FUN_0048645d */ + +void FUN_0048645d(void) + +{ + return; +} + + + +/* @00486462 file=? name=FUN_00486462 */ + +void FUN_00486462(void) + +{ + return; +} + + + +/* @00487788 file=? name=FUN_00487788 */ + +void __cdecl FUN_00487788(int param_1,int param_2,int param_3) + +{ + uint local_14; + byte local_10; + byte local_f; + undefined1 local_e; + + if (*(char *)(*(int *)(&DAT_005015c8 + param_1 * 4) + 0x36c) != '\0') { + local_10 = **(byte **)(&DAT_005006e0 + param_1 * 0x80 + param_2 * 4) & 0xf | 0xc0; + local_f = *(undefined1 *) + (*(int *)(&DAT_00503fbc + param_1 * 0x80 + param_2 * 4) + 5 + param_3 * 0x18); + FUN_004852c7(param_1,&local_10,*(int *)(*(int *)(&DAT_005012e0 + param_1 * 4) + param_2 * 4),2); + } + local_10 = **(byte **)(&DAT_005006e0 + param_1 * 0x80 + param_2 * 4) & 0xf | 0xb0; + for (local_14 = 0; + local_14 < + *(byte *)(*(int *)(&DAT_00503fbc + param_1 * 0x80 + param_2 * 4) + 7 + param_3 * 0x18); + local_14 = local_14 + 2) { + local_f = *(byte *)(*(int *)(*(int *)(&DAT_00503fbc + param_1 * 0x80 + param_2 * 4) + 8 + + param_3 * 0x18) + local_14); + local_e = *(undefined1 *) + (*(int *)(*(int *)(&DAT_00503fbc + param_1 * 0x80 + param_2 * 4) + 8 + param_3 * 0x18 + ) + 1 + local_14); + if (*(char *)(*(int *)(&DAT_005015c8 + param_1 * 4) + 0x300 + (uint)local_f) != '\0') { + FUN_004852c7(param_1,&local_10,*(int *)(*(int *)(&DAT_005012e0 + param_1 * 4) + param_2 * 4),3 + ); + } + } + return; +} + + + +/* @00487905 file=? name=FUN_00487905 */ + +void FUN_00487905(void) + +{ + return; +} + + + +/* @0048790c file=? name=FUN_0048790c */ + +void __cdecl +FUN_0048790c(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4, + undefined4 param_5,undefined4 param_6) + +{ + (*(code *)¶m_1)(); + return; +} + + + +/* @00487939 file=? name=FUN_00487939 */ + +void FUN_00487939(void) + +{ + int iVar1; + undefined1 *extraout_EDX; + undefined1 *puVar2; + undefined1 *in_stack_00000014; + + (*(code *)&stack0x00000004)(); + puVar2 = extraout_EDX; + for (iVar1 = 0x40; iVar1 != 0; iVar1 = iVar1 + -1) { + *in_stack_00000014 = *puVar2; + puVar2 = puVar2 + 1; + in_stack_00000014 = in_stack_00000014 + 1; + } + return; +} + + + +/* @0048796e file=? name=FUN_0048796e */ + +void __cdecl +FUN_0048796e(undefined4 param_1,undefined2 param_2,undefined6 param_3,undefined4 *param_4) + +{ + int iVar1; + int iVar2; + int unaff_FS_OFFSET; + + iVar2 = (int)param_3; + (*(code *)¶m_1)(); + iVar1 = 0xd; + do { + *param_4 = *(undefined4 *)(unaff_FS_OFFSET + iVar2); + *(undefined2 *)(param_4 + 1) = param_2; + param_4 = param_4 + 2; + iVar2 = iVar2 + 8; + iVar1 = iVar1 + -1; + } while (iVar1 != 0); + return; +} + + + +/* @004879b6 file=? name=FUN_004879b6 */ + +void FUN_004879b6(void) + +{ + undefined6 uVar1; + undefined6 *in_stack_00000018; + + uVar1 = (*(code *)&stack0x00000004)(); + *in_stack_00000018 = uVar1; + return; +} + + + +/* @004879e0 file=? name=FUN_004879e0 */ + +void FUN_004879e0(void) + +{ + (*(code *)&stack0x00000004)(); + return; +} + + + +/* @00487a02 file=? name=FUN_00487a02 */ + +void __cdecl +FUN_00487a02(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4, + undefined4 param_5) + +{ + FUN_00485147(param_2,param_3,param_4,param_5); + return; +} + + + +/* @00487ca0 file=? name=FUN_00487ca0 */ + +void __cdecl FUN_00487ca0(int param_1) + +{ + if (param_1 == 0) { + FUN_004d771c(s_NULL_pointer_in__s_005055fc); + FUN_004d6b9c((int *)&DAT_0051f818); + FUN_004dee24(0x29a); + } + return; +} + + + +/* @00487cd4 file=? name=FUN_00487cd4 */ + +undefined4 FUN_00487cd4(void) + +{ + undefined4 *puVar1; + int iVar2; + + if (DAT_005055f0 == 0) { + iVar2 = 0; + puVar1 = &DAT_00523330; + do { + *puVar1 = 0; + iVar2 = iVar2 + 1; + puVar1 = puVar1 + 1; + } while (iVar2 < 0x200); + DAT_005055f0 = 1; + } + return 0; +} + + + +/* @00487d04 file=? name=FUN_00487d04 */ + +void __cdecl FUN_00487d04(uint param_1,undefined4 param_2,undefined4 param_3) + +{ + undefined4 *puVar1; + undefined4 *puVar2; + + puVar1 = (undefined4 *)(&DAT_00523330)[param_1 & 0x1ff]; + if ((undefined4 *)(&DAT_00523330)[param_1 & 0x1ff] == (undefined4 *)0x0) { + puVar1 = (undefined4 *)FUN_00452c38(0x10); + FUN_00487ca0((int)puVar1); + puVar1[3] = param_2; + puVar1[1] = param_1; + puVar1[2] = param_3; + *puVar1 = 0; + (&DAT_00523330)[param_1 & 0x1ff] = puVar1; + } + else { + do { + puVar2 = puVar1; + puVar1 = (undefined4 *)*puVar2; + } while (puVar1 != (undefined4 *)0x0); + puVar1 = (undefined4 *)FUN_00452c38(0x10); + *puVar2 = puVar1; + FUN_00487ca0((int)puVar1); + puVar1[3] = param_2; + puVar1[1] = param_1; + puVar1[2] = param_3; + *puVar1 = 0; + } + return; +} + + + +/* @00487d98 file=? name=FUN_00487d98 */ + +uint __cdecl FUN_00487d98(int param_1,undefined4 param_2) + +{ + uint uVar1; + + if (param_1 == 0) { + return 0; + } + uVar1 = *(uint *)(param_1 + 8); + FUN_00487d04(uVar1,param_1,param_2); + return uVar1; +} + + + +/* @00487dc0 file=? name=FUN_00487dc0 */ + +undefined4 __cdecl FUN_00487dc0(uint param_1,int param_2) + +{ + int *piVar1; + int *piVar2; + int *piVar3; + + piVar1 = (int *)(&DAT_00523330)[param_1 & 0x1ff]; + piVar3 = (int *)0x0; + while (piVar2 = piVar1, param_1 != piVar2[1]) { + piVar1 = (int *)*piVar2; + piVar3 = piVar2; + if (piVar1 == (int *)0x0) { + FUN_0048900c(param_2); + FUN_004d771c(s_Name_0x_x___s__not_found_00505626); + FUN_004dee24(0x29a); + } + } + if ((param_2 != -1) && (piVar2[2] != param_2)) { + FUN_0048900c(piVar2[2]); + FUN_0048900c(param_2); + FUN_004d771c(s_deleteName__name_0x_x_wrong_type_00505640); + FUN_004dee24(0x29a); + } + if (piVar3 == (int *)0x0) { + (&DAT_00523330)[param_1 & 0x1ff] = *piVar2; + FUN_00452c88(piVar2); + } + else { + *piVar3 = *piVar2; + FUN_00452c88(piVar2); + } + return 1; +} + + + +/* @00487e7c file=? name=FUN_00487e7c */ + +undefined4 __cdecl FUN_00487e7c(undefined4 param_1,uint param_2,int param_3) + +{ + undefined4 *puVar1; + + if (param_2 != 0) { + for (puVar1 = (undefined4 *)(&DAT_00523330)[param_2 & 0x1ff]; puVar1 != (undefined4 *)0x0; + puVar1 = (undefined4 *)*puVar1) { + if (param_2 == puVar1[1]) { + if (param_3 == puVar1[2]) { + return puVar1[3]; + } + if (param_3 != -1) { + FUN_0048900c(puVar1[2]); + FUN_0048900c(param_3); + FUN_004d771c(s_nameToAddress__name_0x_x_wrong_t_00505678); + FUN_004d771c(s_last_name_op_was__s_005056c0); + FUN_004d771c(s_allocatedNames____d_005056d5); + return 0; + } + return puVar1[3]; + } + } + } + return 0; +} + + + +/* @00487f18 file=? name=FUN_00487f18 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_00487f18(void) + +{ + DAT_005055f0 = 0; + DAT_005055f8 = 1; + _DAT_005055f4 = 0; + return; +} + + + +/* @00487f34 file=? name=FUN_00487f34 */ + +int * FUN_00487f34(void) + +{ + int *piVar1; + + piVar1 = (int *)FUN_00452c38(0x8c); + FUN_0049a300(1,s_dpl2d_NewDisplayList_005056f0); + if (piVar1 != (int *)0x0) { + piVar1[1] = 0; + piVar1[2] = (int)piVar1; + piVar1[3] = 0; + piVar1[4] = 0; + FUN_0048e910(piVar1); + } + return piVar1; +} + + + +/* @00487f78 file=? name=FUN_00487f78 */ + +undefined4 __cdecl FUN_00487f78(int *param_1) + +{ + int *piVar1; + undefined4 uVar2; + + FUN_0049a300(1,s_dpl2d_DeleteDisplayList_00505706); + if (param_1 == (int *)0x0) { + uVar2 = 0; + } + else { + FUN_0048e96c(param_1); + while (param_1 != (int *)0x0) { + piVar1 = (int *)param_1[1]; + FUN_00452c88(param_1); + param_1 = piVar1; + } + uVar2 = 1; + } + return uVar2; +} + + + +/* @00487fbc file=? name=FUN_00487fbc */ + +undefined4 __cdecl FUN_00487fbc(int param_1,int param_2) + +{ + int *piVar1; + int *piVar2; + undefined4 uVar3; + + FUN_0049a300(1,s_dpl2d_OpenDisplayList_0050571f); + if (param_1 == 0) { + uVar3 = 0; + } + else { + if (*(int *)(param_1 + 0x10) != 0) { + FUN_004d771c(s_2_D_warning___attempt_to_open_al_00505736); + } + if (param_2 == 2) { + *(undefined4 *)(param_1 + 0x10) = 1; + } + else { + piVar2 = *(int **)(param_1 + 4); + while (piVar2 != (int *)0x0) { + piVar1 = (int *)piVar2[1]; + FUN_00452c88(piVar2); + piVar2 = piVar1; + } + *(undefined4 *)(param_1 + 0x10) = 1; + *(undefined4 *)(param_1 + 0xc) = 0; + *(undefined4 *)(param_1 + 4) = 0; + *(int *)(param_1 + 8) = param_1; + } + uVar3 = 1; + } + return uVar3; +} + + + +/* @00488030 file=? name=FUN_00488030 */ + +undefined4 __cdecl FUN_00488030(int param_1) + +{ + FUN_0049a300(1,s_dpl2d_CloseDisplayList_00505770); + *(undefined4 *)(param_1 + 0x10) = 0; + return 1; +} + + + +/* @00488054 file=? name=FUN_00488054 */ + +undefined4 __cdecl FUN_00488054(byte *param_1) + +{ + FUN_0049a300(1,s_dpl2d_FlushDisplayList_00505788); + FUN_0048e9ac(param_1,1); + while (param_1 = *(byte **)(param_1 + 4), param_1 != (byte *)0x0) { + FUN_0048e9ac(param_1,0); + } + return 1; +} + + + +/* @00488094 file=? name=FUN_00488094 */ + +void FUN_00488094(void) + +{ + FUN_004d771c(s_Attempt_to__s_to_closed_displayl_005057a0); + return; +} + + + +/* @004880a4 file=? name=FUN_004880a4 */ + +int __cdecl FUN_004880a4(int param_1,int param_2) + +{ + int iVar1; + + iVar1 = FUN_00452c38(0x8c); + if (iVar1 == 0) { + FUN_004d771c(s_Out_of_memory_in_grow_2d_display_005057c5); + FUN_004dee24(0x29a); + return 0; + } + *(int *)(param_1 + 8) = iVar1; + *(int *)(param_2 + 4) = iVar1; + *(undefined4 *)(iVar1 + 4) = 0; + *(undefined4 *)(iVar1 + 0xc) = 0; + return iVar1; +} + + + +/* @004880e8 file=? name=FUN_004880e8 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl FUN_004880e8(int param_1) + +{ + undefined4 uVar1; + int iVar2; + + iVar2 = *(int *)(param_1 + 8); + FUN_0049a300(1,s_dpl2d_AddOpenPolyline_005057eb); + if (*(int *)(param_1 + 0x10) == 0) { + FUN_00488094(); + uVar1 = 0; + } + else { + if (0x1d < *(int *)(iVar2 + 0xc)) { + iVar2 = FUN_004880a4(param_1,iVar2); + } + _DAT_005056ec = (undefined4 *)(*(int *)(iVar2 + 0xc) * 4 + iVar2 + 0x14); + *(int *)(iVar2 + 0xc) = *(int *)(iVar2 + 0xc) + 1; + *_DAT_005056ec = 0; + uVar1 = 1; + } + return uVar1; +} + + + +/* @0048814c file=? name=FUN_0048814c */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl FUN_0048814c(int param_1) + +{ + undefined4 uVar1; + int iVar2; + undefined4 *puVar3; + + iVar2 = *(int *)(param_1 + 8); + FUN_0049a300(1,s_dpl2d_AddClosePolyline_00505812); + if (*(int *)(param_1 + 0x10) == 0) { + FUN_00488094(); + uVar1 = 0; + } + else { + if (0x1d < *(int *)(iVar2 + 0xc)) { + iVar2 = FUN_004880a4(param_1,iVar2); + } + puVar3 = (undefined4 *)(*(int *)(iVar2 + 0xc) * 4 + iVar2 + 0x14); + _DAT_005056ec = puVar3; + *(int *)(iVar2 + 0xc) = *(int *)(iVar2 + 0xc) + 1; + *puVar3 = 1; + uVar1 = 1; + } + return uVar1; +} + + + +/* @004881b0 file=? name=FUN_004881b0 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl FUN_004881b0(int param_1) + +{ + undefined4 uVar1; + int iVar2; + undefined4 *puVar3; + + iVar2 = *(int *)(param_1 + 8); + FUN_0049a300(1,s_dpl2d_AddOpenPolygon_0050583b); + if (*(int *)(param_1 + 0x10) == 0) { + FUN_00488094(); + uVar1 = 0; + } + else { + if (0x1d < *(int *)(iVar2 + 0xc)) { + iVar2 = FUN_004880a4(param_1,iVar2); + } + puVar3 = (undefined4 *)(*(int *)(iVar2 + 0xc) * 4 + iVar2 + 0x14); + _DAT_005056ec = puVar3; + *(int *)(iVar2 + 0xc) = *(int *)(iVar2 + 0xc) + 1; + *puVar3 = 4; + uVar1 = 1; + } + return uVar1; +} + + + +/* @00488214 file=? name=FUN_00488214 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl FUN_00488214(int param_1) + +{ + undefined4 uVar1; + int iVar2; + undefined4 *puVar3; + + iVar2 = *(int *)(param_1 + 8); + FUN_0049a300(1,s_dpl2d_AddClosePolygon_00505860); + if (*(int *)(param_1 + 0x10) == 0) { + FUN_00488094(); + uVar1 = 0; + } + else { + if (0x1d < *(int *)(iVar2 + 0xc)) { + iVar2 = FUN_004880a4(param_1,iVar2); + } + puVar3 = (undefined4 *)(*(int *)(iVar2 + 0xc) * 4 + iVar2 + 0x14); + _DAT_005056ec = puVar3; + *(int *)(iVar2 + 0xc) = *(int *)(iVar2 + 0xc) + 1; + *puVar3 = 5; + uVar1 = 1; + } + return uVar1; +} + + + +/* @00488278 file=? name=FUN_00488278 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl FUN_00488278(int param_1) + +{ + undefined4 uVar1; + int iVar2; + undefined4 *puVar3; + + iVar2 = *(int *)(param_1 + 8); + FUN_0049a300(1,s_dpl2d_AddOpenLines_00505887); + if (*(int *)(param_1 + 0x10) == 0) { + FUN_00488094(); + uVar1 = 0; + } + else { + if (0x1d < *(int *)(iVar2 + 0xc)) { + iVar2 = FUN_004880a4(param_1,iVar2); + } + puVar3 = (undefined4 *)(*(int *)(iVar2 + 0xc) * 4 + iVar2 + 0x14); + _DAT_005056ec = puVar3; + *(int *)(iVar2 + 0xc) = *(int *)(iVar2 + 0xc) + 1; + *puVar3 = 6; + uVar1 = 1; + } + return uVar1; +} + + + +/* @004882dc file=? name=FUN_004882dc */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl FUN_004882dc(int param_1) + +{ + undefined4 uVar1; + int iVar2; + undefined4 *puVar3; + + iVar2 = *(int *)(param_1 + 8); + FUN_0049a300(1,s_dpl2d_AddClosePolyline_005058a8); + if (*(int *)(param_1 + 0x10) == 0) { + FUN_00488094(); + uVar1 = 0; + } + else { + if (0x1d < *(int *)(iVar2 + 0xc)) { + iVar2 = FUN_004880a4(param_1,iVar2); + } + puVar3 = (undefined4 *)(*(int *)(iVar2 + 0xc) * 4 + iVar2 + 0x14); + _DAT_005056ec = puVar3; + *(int *)(iVar2 + 0xc) = *(int *)(iVar2 + 0xc) + 1; + *puVar3 = 7; + uVar1 = 1; + } + return uVar1; +} + + + +/* @00488340 file=? name=FUN_00488340 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl FUN_00488340(int param_1) + +{ + undefined4 uVar1; + int iVar2; + undefined4 *puVar3; + + iVar2 = *(int *)(param_1 + 8); + FUN_0049a300(1,s_dpl2d_AddOpenPolypoint_005058ce); + if (*(int *)(param_1 + 0x10) == 0) { + FUN_00488094(); + uVar1 = 0; + } + else { + if (0x1d < *(int *)(iVar2 + 0xc)) { + iVar2 = FUN_004880a4(param_1,iVar2); + } + puVar3 = (undefined4 *)(*(int *)(iVar2 + 0xc) * 4 + iVar2 + 0x14); + _DAT_005056ec = puVar3; + *(int *)(iVar2 + 0xc) = *(int *)(iVar2 + 0xc) + 1; + *puVar3 = 2; + uVar1 = 1; + } + return uVar1; +} + + + +/* @004883a4 file=? name=FUN_004883a4 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl FUN_004883a4(int param_1) + +{ + undefined4 uVar1; + int iVar2; + undefined4 *puVar3; + + iVar2 = *(int *)(param_1 + 8); + FUN_0049a300(1,s_dpl2d_AddClosePolypoint_005058f7); + if (*(int *)(param_1 + 0x10) == 0) { + FUN_00488094(); + uVar1 = 0; + } + else { + if (0x1d < *(int *)(iVar2 + 0xc)) { + iVar2 = FUN_004880a4(param_1,iVar2); + } + puVar3 = (undefined4 *)(*(int *)(iVar2 + 0xc) * 4 + iVar2 + 0x14); + _DAT_005056ec = puVar3; + *(int *)(iVar2 + 0xc) = *(int *)(iVar2 + 0xc) + 1; + *puVar3 = 3; + uVar1 = 1; + } + return uVar1; +} + + + +/* @00488408 file=? name=FUN_00488408 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl FUN_00488408(int param_1,undefined4 param_2,undefined4 param_3) + +{ + undefined4 uVar1; + int iVar2; + int iVar3; + + iVar2 = *(int *)(param_1 + 8); + FUN_0049a300(1,s_dpl2d_AddPoint_00505922); + if (*(int *)(param_1 + 0x10) == 0) { + FUN_00488094(); + uVar1 = 0; + } + else { + if (0x1b < *(int *)(iVar2 + 0xc)) { + iVar2 = FUN_004880a4(param_1,iVar2); + } + iVar3 = *(int *)(iVar2 + 0xc) * 4 + iVar2; + _DAT_005056ec = (undefined4 *)(iVar3 + 0x14); + *(int *)(iVar2 + 0xc) = *(int *)(iVar2 + 0xc) + 3; + *(undefined4 *)(iVar3 + 0x14) = 8; + *(undefined4 *)(iVar3 + 0x18) = param_2; + *(undefined4 *)(iVar3 + 0x1c) = param_3; + uVar1 = 1; + } + return uVar1; +} + + + +/* @0048847c file=? name=FUN_0048847c */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl +FUN_0048847c(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5 + ) + +{ + undefined4 uVar1; + int iVar2; + int iVar3; + + iVar2 = *(int *)(param_1 + 8); + FUN_0049a300(1,s_dpl2d_AddCircle_0050593b); + if (*(int *)(param_1 + 0x10) == 0) { + FUN_00488094(); + uVar1 = 0; + } + else { + if (0x18 < *(int *)(iVar2 + 0xc)) { + iVar2 = FUN_004880a4(param_1,iVar2); + } + iVar3 = *(int *)(iVar2 + 0xc) * 4 + iVar2; + _DAT_005056ec = (undefined4 *)(iVar3 + 0x14); + *(int *)(iVar2 + 0xc) = *(int *)(iVar2 + 0xc) + 5; + *(undefined4 *)(iVar3 + 0x14) = 9; + *(undefined4 *)(iVar3 + 0x18) = param_2; + *(undefined4 *)(iVar3 + 0x1c) = param_3; + *(undefined4 *)(iVar3 + 0x20) = param_4; + *(undefined4 *)(iVar3 + 0x24) = param_5; + uVar1 = 1; + } + return uVar1; +} + + + +/* @00488500 file=? name=FUN_00488500 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl FUN_00488500(int param_1,undefined4 param_2) + +{ + undefined4 uVar1; + int iVar2; + int iVar3; + undefined4 *puVar4; + + iVar2 = *(int *)(param_1 + 8); + FUN_0049a300(1,s_dpl2d_AddSetLineWidthCircle_00505956); + if (*(int *)(param_1 + 0x10) == 0) { + FUN_00488094(); + uVar1 = 0; + } + else { + if (0x1b < *(int *)(iVar2 + 0xc)) { + iVar2 = FUN_004880a4(param_1,iVar2); + } + iVar3 = *(int *)(iVar2 + 0xc) * 4 + iVar2; + puVar4 = (undefined4 *)(iVar3 + 0x14); + _DAT_005056ec = puVar4; + *(int *)(iVar2 + 0xc) = *(int *)(iVar2 + 0xc) + 2; + *puVar4 = 0x15; + *(undefined4 *)(iVar3 + 0x18) = param_2; + uVar1 = 1; + } + return uVar1; +} + + + +/* @0048856c file=? name=FUN_0048856c */ + +undefined4 __cdecl FUN_0048856c(int param_1) + +{ + int iVar1; + undefined4 uVar2; + int iVar3; + + iVar3 = *(int *)(param_1 + 8); + FUN_0049a300(1,s_dpl2d_AddPushState_00505983); + if (*(int *)(param_1 + 0x10) == 0) { + FUN_00488094(); + uVar2 = 0; + } + else { + if (0x1d < *(int *)(iVar3 + 0xc)) { + iVar3 = FUN_004880a4(param_1,iVar3); + } + iVar1 = *(int *)(iVar3 + 0xc); + *(int *)(iVar3 + 0xc) = *(int *)(iVar3 + 0xc) + 1; + *(undefined4 *)(iVar1 * 4 + iVar3 + 0x14) = 0x12; + uVar2 = 1; + } + return uVar2; +} + + + +/* @004885cc file=? name=FUN_004885cc */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl FUN_004885cc(int param_1) + +{ + undefined4 uVar1; + int iVar2; + undefined4 *puVar3; + + iVar2 = *(int *)(param_1 + 8); + FUN_0049a300(1,s_dpl2d_AddPopState_005059a4); + if (*(int *)(param_1 + 0x10) == 0) { + FUN_00488094(); + uVar1 = 0; + } + else { + if (0x1d < *(int *)(iVar2 + 0xc)) { + iVar2 = FUN_004880a4(param_1,iVar2); + } + puVar3 = (undefined4 *)(*(int *)(iVar2 + 0xc) * 4 + iVar2 + 0x14); + _DAT_005056ec = puVar3; + *(int *)(iVar2 + 0xc) = *(int *)(iVar2 + 0xc) + 1; + *puVar3 = 0x13; + uVar1 = 1; + } + return uVar1; +} + + + +/* @00488630 file=? name=FUN_00488630 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl +FUN_00488630(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) + +{ + undefined4 uVar1; + int iVar2; + int iVar3; + + iVar2 = *(int *)(param_1 + 8); + FUN_0049a300(1,s_dpl2d_AddSetColor_005059c3); + if (*(int *)(param_1 + 0x10) == 0) { + FUN_00488094(); + uVar1 = 0; + } + else { + if (0x1a < *(int *)(iVar2 + 0xc)) { + iVar2 = FUN_004880a4(param_1,iVar2); + } + iVar3 = *(int *)(iVar2 + 0xc) * 4 + iVar2; + _DAT_005056ec = (undefined4 *)(iVar3 + 0x14); + *(int *)(iVar2 + 0xc) = *(int *)(iVar2 + 0xc) + 4; + *(undefined4 *)(iVar3 + 0x14) = 0xf; + *(undefined4 *)(iVar3 + 0x18) = param_2; + *(undefined4 *)(iVar3 + 0x1c) = param_3; + *(undefined4 *)(iVar3 + 0x20) = param_4; + uVar1 = 1; + } + return uVar1; +} + + + +/* @004886ac file=? name=FUN_004886ac */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl FUN_004886ac(int param_1,undefined4 param_2) + +{ + undefined4 uVar1; + int iVar2; + int iVar3; + undefined4 *puVar4; + + iVar2 = *(int *)(param_1 + 8); + FUN_0049a300(1,s_dpl2d_AddSetColor_005059e2); + if (*(int *)(param_1 + 0x10) == 0) { + FUN_00488094(); + uVar1 = 0; + } + else { + if (0x1c < *(int *)(iVar2 + 0xc)) { + iVar2 = FUN_004880a4(param_1,iVar2); + } + iVar3 = *(int *)(iVar2 + 0xc) * 4 + iVar2; + puVar4 = (undefined4 *)(iVar3 + 0x14); + _DAT_005056ec = puVar4; + *(int *)(iVar2 + 0xc) = *(int *)(iVar2 + 0xc) + 2; + *puVar4 = 0x16; + *(undefined4 *)(iVar3 + 0x18) = param_2; + uVar1 = 1; + } + return uVar1; +} + + + +/* @00488718 file=? name=FUN_00488718 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl FUN_00488718(int param_1,undefined4 *param_2) + +{ + undefined4 uVar1; + int iVar2; + int iVar3; + + iVar2 = *(int *)(param_1 + 8); + FUN_0049a300(1,s_dpl2d_AddSetMatrix_00505a01); + if (*(int *)(param_1 + 0x10) == 0) { + FUN_00488094(); + uVar1 = 0; + } + else { + if (0x16 < *(int *)(iVar2 + 0xc)) { + iVar2 = FUN_004880a4(param_1,iVar2); + } + iVar3 = *(int *)(iVar2 + 0xc) * 4 + iVar2; + _DAT_005056ec = (undefined4 *)(iVar3 + 0x14); + *(int *)(iVar2 + 0xc) = *(int *)(iVar2 + 0xc) + 7; + *(undefined4 *)(iVar3 + 0x14) = 0x10; + *(undefined4 *)(iVar3 + 0x18) = *param_2; + *(undefined4 *)(iVar3 + 0x1c) = param_2[1]; + *(undefined4 *)(iVar3 + 0x20) = param_2[2]; + *(undefined4 *)(iVar3 + 0x24) = param_2[3]; + *(undefined4 *)(iVar3 + 0x28) = param_2[4]; + *(undefined4 *)(iVar3 + 0x2c) = param_2[5]; + uVar1 = 1; + } + return uVar1; +} + + + +/* @004887b0 file=? name=FUN_004887b0 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl FUN_004887b0(int param_1,undefined4 *param_2,undefined4 param_3) + +{ + undefined4 uVar1; + int iVar2; + int iVar3; + + iVar2 = *(int *)(param_1 + 8); + FUN_0049a300(1,s_dpl2d_AddConcatMatrix_00505a22); + if (*(int *)(param_1 + 0x10) == 0) { + FUN_00488094(); + uVar1 = 0; + } + else { + if (0x15 < *(int *)(iVar2 + 0xc)) { + iVar2 = FUN_004880a4(param_1,iVar2); + } + iVar3 = *(int *)(iVar2 + 0xc) * 4 + iVar2; + _DAT_005056ec = (undefined4 *)(iVar3 + 0x14); + *(int *)(iVar2 + 0xc) = *(int *)(iVar2 + 0xc) + 8; + *(undefined4 *)(iVar3 + 0x14) = 0x11; + *(undefined4 *)(iVar3 + 0x18) = *param_2; + *(undefined4 *)(iVar3 + 0x1c) = param_2[1]; + *(undefined4 *)(iVar3 + 0x20) = param_2[2]; + *(undefined4 *)(iVar3 + 0x24) = param_2[3]; + *(undefined4 *)(iVar3 + 0x28) = param_2[4]; + *(undefined4 *)(iVar3 + 0x2c) = param_2[5]; + *(undefined4 *)(iVar3 + 0x30) = param_3; + uVar1 = 1; + } + return uVar1; +} + + + +/* @00488850 file=? name=FUN_00488850 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl FUN_00488850(int param_1,undefined4 *param_2) + +{ + undefined4 uVar1; + int iVar2; + int iVar3; + undefined4 *puVar4; + + iVar2 = *(int *)(param_1 + 8); + FUN_0049a300(1,s_dpl2d_AddCallDisplayList_00505a49); + if (*(int *)(param_1 + 0x10) == 0) { + FUN_00488094(); + uVar1 = 0; + } + else { + if (0x1c < *(int *)(iVar2 + 0xc)) { + iVar2 = FUN_004880a4(param_1,iVar2); + } + iVar3 = *(int *)(iVar2 + 0xc) * 4 + iVar2; + puVar4 = (undefined4 *)(iVar3 + 0x14); + _DAT_005056ec = puVar4; + *(int *)(iVar2 + 0xc) = *(int *)(iVar2 + 0xc) + 2; + *puVar4 = 0x14; + *(undefined4 *)(iVar3 + 0x18) = *param_2; + uVar1 = 1; + } + return uVar1; +} + + + +/* @004888c0 file=? name=FUN_004888c0 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl FUN_004888c0(int param_1) + +{ + undefined4 uVar1; + int iVar2; + undefined4 *puVar3; + + iVar2 = *(int *)(param_1 + 8); + FUN_0049a300(1,s_dpl2d_AddFullScreenClipRegion_00505a76); + if (*(int *)(param_1 + 0x10) == 0) { + FUN_00488094(); + uVar1 = 0; + } + else { + if (0x1c < *(int *)(iVar2 + 0xc)) { + iVar2 = FUN_004880a4(param_1,iVar2); + } + puVar3 = (undefined4 *)(*(int *)(iVar2 + 0xc) * 4 + iVar2 + 0x14); + _DAT_005056ec = puVar3; + *(int *)(iVar2 + 0xc) = *(int *)(iVar2 + 0xc) + 1; + *puVar3 = 0xd; + uVar1 = 1; + } + return uVar1; +} + + + +/* @00488924 file=? name=FUN_00488924 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl FUN_00488924(int param_1) + +{ + undefined4 uVar1; + int iVar2; + undefined4 *puVar3; + + iVar2 = *(int *)(param_1 + 8); + FUN_0049a300(1,s_dpl2d_AddFullScreenClipRegion_00505aa7); + if (*(int *)(param_1 + 0x10) == 0) { + FUN_00488094(); + uVar1 = 0; + } + else { + if (0x1c < *(int *)(iVar2 + 0xc)) { + iVar2 = FUN_004880a4(param_1,iVar2); + } + puVar3 = (undefined4 *)(*(int *)(iVar2 + 0xc) * 4 + iVar2 + 0x14); + _DAT_005056ec = puVar3; + *(int *)(iVar2 + 0xc) = *(int *)(iVar2 + 0xc) + 1; + *puVar3 = 0xe; + uVar1 = 1; + } + return uVar1; +} + + + +/* @00488988 file=? name=FUN_00488988 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl FUN_00488988(int param_1) + +{ + int iVar1; + undefined4 *puVar2; + + iVar1 = *(int *)(param_1 + 8); + if (*(int *)(param_1 + 0x10) == 0) { + FUN_00488094(); + return 0; + } + if (0x1c < *(int *)(iVar1 + 0xc)) { + iVar1 = FUN_004880a4(param_1,iVar1); + } + puVar2 = (undefined4 *)(*(int *)(iVar1 + 0xc) * 4 + iVar1 + 0x14); + _DAT_005056ec = puVar2; + *(int *)(iVar1 + 0xc) = *(int *)(iVar1 + 0xc) + 1; + *puVar2 = 10; + return 1; +} + + + +/* @004889d8 file=? name=FUN_004889d8 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl FUN_004889d8(int param_1,undefined4 param_2) + +{ + int iVar1; + int iVar2; + undefined4 *puVar3; + + iVar1 = *(int *)(param_1 + 8); + if (*(int *)(param_1 + 0x10) == 0) { + FUN_00488094(); + return 0; + } + if (0x1c < *(int *)(iVar1 + 0xc)) { + iVar1 = FUN_004880a4(param_1,iVar1); + } + iVar2 = *(int *)(iVar1 + 0xc) * 4 + iVar1; + puVar3 = (undefined4 *)(iVar2 + 0x14); + _DAT_005056ec = puVar3; + *(int *)(iVar1 + 0xc) = *(int *)(iVar1 + 0xc) + 2; + *puVar3 = 0xb; + *(undefined4 *)(iVar2 + 0x18) = param_2; + return 1; +} + + + +/* @00488a30 file=? name=FUN_00488a30 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl +FUN_00488a30(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5 + ) + +{ + undefined4 uVar1; + int iVar2; + int iVar3; + + iVar2 = *(int *)(param_1 + 8); + FUN_0049a300(1,s_dpl2d_AddClipCircle_00505afa); + if (*(int *)(param_1 + 0x10) == 0) { + FUN_00488094(); + uVar1 = 0; + } + else { + if (0x1a < *(int *)(iVar2 + 0xc)) { + iVar2 = FUN_004880a4(param_1,iVar2); + } + iVar3 = *(int *)(iVar2 + 0xc) * 4 + iVar2; + _DAT_005056ec = (undefined4 *)(iVar3 + 0x14); + *(int *)(iVar2 + 0xc) = *(int *)(iVar2 + 0xc) + 5; + *(undefined4 *)(iVar3 + 0x14) = 0xc; + *(undefined4 *)(iVar3 + 0x18) = param_2; + *(undefined4 *)(iVar3 + 0x1c) = param_3; + *(undefined4 *)(iVar3 + 0x20) = param_4; + *(undefined4 *)(iVar3 + 0x24) = param_5; + uVar1 = 1; + } + return uVar1; +} + + + +/* @00488ab4 file=? name=FUN_00488ab4 */ + +undefined4 __cdecl FUN_00488ab4(int param_1,undefined4 param_2) + +{ + FUN_0049a300(1,s_dpl2d_SetViewDisplayList_00505b1d); + *(undefined4 *)(param_1 + 0x6c) = param_2; + return 1; +} + + + +/* @00488ad8 file=? name=FUN_00488ad8 */ + +undefined4 __cdecl FUN_00488ad8(int param_1) + +{ + FUN_0049a300(1,s_dpl2d_GetViewDisplayList_00505b37); + return *(undefined4 *)(param_1 + 0x6c); +} + + + +/* @00488af4 file=? name=FUN_00488af4 */ + +void __cdecl FUN_00488af4(undefined4 *param_1,float *param_2,float *param_3) + +{ + float local_1c; + float local_18; + float local_14; + float local_10; + float local_c; + float local_8; + + local_1c = param_2[1] * param_3[2] + *param_2 * *param_3; + local_18 = param_2[1] * param_3[3] + *param_2 * param_3[1]; + local_14 = param_2[3] * param_3[2] + param_2[2] * *param_3; + local_10 = param_2[3] * param_3[3] + param_2[2] * param_3[1]; + local_c = param_2[5] * param_3[2] + param_2[4] * *param_3 + param_3[4]; + local_8 = param_2[5] * param_3[3] + param_2[4] * param_3[1] + param_3[5]; + FUN_004d4918(param_1,&local_1c,0x18); + return; +} + + + +/* @00488b80 file=? name=FUN_00488b80 */ + +void __cdecl FUN_00488b80(undefined4 *param_1) + +{ + *param_1 = 0x3f800000; + param_1[1] = 0; + param_1[2] = 0; + param_1[3] = 0x3f800000; + param_1[4] = 0; + param_1[5] = 0; + return; +} + + + +/* @00488bac file=? name=FUN_00488bac */ + +void __cdecl FUN_00488bac(int param_1,float param_2,float param_3) + +{ + *(float *)(param_1 + 0x10) = param_2 + *(float *)(param_1 + 0x10); + *(float *)(param_1 + 0x14) = param_3 + *(float *)(param_1 + 0x14); + return; +} + + + +/* @00488bc8 file=? name=FUN_00488bc8 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_00488bc8(undefined4 *param_1,float param_2) + +{ + double dVar1; + float fVar2; + float10 fVar3; + float local_24; + float local_20; + float local_1c; + float local_18; + undefined4 local_14; + undefined4 local_10; + float local_c; + float local_8; + + fVar2 = _DAT_00488c40 * param_2; + dVar1 = (double)fVar2; + fVar3 = (float10)FUN_004dd0f4(SUB84(dVar1,0),(int)((ulonglong)dVar1 >> 0x20)); + local_8 = (float)fVar3; + dVar1 = (double)fVar2; + fVar3 = (float10)FUN_004dc9b4(SUB84(dVar1,0),(int)((ulonglong)dVar1 >> 0x20)); + local_24 = (float)fVar3; + local_20 = local_8; + local_1c = -local_8; + local_14 = 0; + local_10 = 0; + local_18 = local_24; + local_c = local_24; + FUN_00488af4(param_1,(float *)param_1,&local_24); + return; +} + + + +/* @00488c80 file=? name=FUN_00488c80 */ + +void __cdecl FUN_00488c80(int *param_1,int param_2) + +{ + if (param_1 != (int *)0x0) { + param_1[2] = 0; + param_1[3] = 0; + *param_1 = param_2; + param_1[1] = *(int *)(param_2 + 0xc); + return; + } + FUN_0049a300(1,s_Attempt_to_init_NULL_list_00505b84); + return; +} + + + +/* @00488cb4 file=? name=FUN_00488cb4 */ + +void __cdecl FUN_00488cb4(undefined4 param_1,undefined4 *param_2) + +{ + if (param_2 != (undefined4 *)0x0) { + *param_2 = param_1; + param_2[1] = 0; + param_2[3] = 0; + param_2[2] = 0; + return; + } + FUN_0049a300(1,s_Attempt_to_init_NULL_superlist_00505b9f); + return; +} + + + +/* @00488cec file=? name=FUN_00488cec */ + +int * __cdecl FUN_00488cec(int param_1) + +{ + int *piVar1; + + piVar1 = (int *)FUN_00452c38(0x10); + if (piVar1 != (int *)0x0) { + FUN_00488c80(piVar1,param_1); + return piVar1; + } + return (int *)0x0; +} + + + +/* @00488d18 file=? name=FUN_00488d18 */ + +undefined4 __cdecl FUN_00488d18(int param_1) + +{ + if (param_1 == 0) { + FUN_0049a300(1,s_Attempt_to_get_first_on_NULL_sup_00505bbf); + return 0; + } + *(undefined4 *)(param_1 + 4) = *(undefined4 *)(param_1 + 8); + if (*(undefined4 **)(param_1 + 8) != (undefined4 *)0x0) { + return **(undefined4 **)(param_1 + 8); + } + return 0; +} + + + +/* @00488d50 file=? name=FUN_00488d50 */ + +undefined4 __cdecl FUN_00488d50(int param_1) + +{ + undefined4 *puVar1; + + if (*(int *)(param_1 + 4) == 0) { + FUN_0049a300(1,s_Attempt_to_get_next_on_NULL_supe_00505be7); + return 0; + } + puVar1 = *(undefined4 **)(*(int *)(param_1 + 4) + 8); + *(undefined4 **)(param_1 + 4) = puVar1; + if (puVar1 != (undefined4 *)0x0) { + return *puVar1; + } + return 0; +} + + + +/* @00488d88 file=? name=FUN_00488d88 */ + +void __cdecl FUN_00488d88(int *param_1,int param_2) + +{ + int iVar1; + int *piVar2; + + if (param_1 == (int *)0x0) { + FUN_0049a300(1,s_Attempt_to_add_to_NULL_superlist_00505c0e); + } + else { + piVar2 = FUN_00488cec(param_2); + FUN_0048d7e0(param_1,param_2); + if (param_1[2] == param_1[3]) { + if (param_1[2] == 0) { + param_1[2] = (int)piVar2; + param_1[3] = (int)piVar2; + } + else { + *(int **)(param_1[3] + 8) = piVar2; + param_1[3] = (int)piVar2; + piVar2[3] = param_1[2]; + } + } + else { + iVar1 = param_1[3]; + *(int **)(iVar1 + 8) = piVar2; + piVar2[3] = iVar1; + param_1[3] = (int)piVar2; + } + } + return; +} + + + +/* @00488df8 file=? name=FUN_00488df8 */ + +int * __cdecl FUN_00488df8(int param_1,int param_2,int *param_3) + +{ + int *piVar1; + int iVar2; + + iVar2 = 0; + if (param_1 == 0) { + FUN_0049a300(1,s_Attempt_to_find_item_in_NULL_sup_00505c30); + return (int *)0x0; + } + piVar1 = *(int **)(param_1 + 8); + if (piVar1 == (int *)0x0) { + return (int *)0x0; + } + do { + if (param_2 == *piVar1) { + *param_3 = iVar2; + return piVar1; + } + piVar1 = (int *)piVar1[2]; + iVar2 = iVar2 + 1; + } while (piVar1 != (int *)0x0); + return (int *)0x0; +} + + + +/* @00488e44 file=? name=FUN_00488e44 */ + +void __cdecl FUN_00488e44(int param_1,int param_2) + +{ + if (param_2 == *(int *)(param_1 + 8)) { + if (*(int *)(param_1 + 8) == *(int *)(param_1 + 0xc)) { + *(undefined4 *)(param_1 + 8) = 0; + *(undefined4 *)(param_1 + 0xc) = 0; + } + else { + if (*(int *)(param_2 + 0xc) != 0) { + FUN_004d771c(s_Bad_error__head_of_list_has_a_pr_00505c58); + } + *(undefined4 *)(param_1 + 8) = *(undefined4 *)(param_2 + 8); + *(undefined4 *)(*(int *)(param_2 + 8) + 0xc) = 0; + } + } + else { + *(undefined4 *)(*(int *)(param_2 + 0xc) + 8) = *(undefined4 *)(param_2 + 8); + if (param_2 == *(int *)(param_1 + 0xc)) { + if (*(int *)(param_2 + 8) != 0) { + FUN_004d771c(s_Bad_error__tail_of_list_has_a_ne_00505c7c); + } + *(undefined4 *)(param_1 + 0xc) = *(undefined4 *)(param_2 + 0xc); + } + else { + *(undefined4 *)(*(int *)(param_2 + 8) + 0xc) = *(undefined4 *)(param_2 + 0xc); + } + } + return; +} + + + +/* @00488ebc file=? name=FUN_00488ebc */ + +undefined4 __cdecl FUN_00488ebc(int *param_1,int param_2) + +{ + int *piVar1; + undefined4 uVar2; + int local_8; + + if (param_1 == (int *)0x0) { + FUN_0049a300(1,s_Attempt_to_remove_from_NULL_supe_00505cbd); + uVar2 = 0; + } + else { + piVar1 = FUN_00488df8((int)param_1,param_2,&local_8); + if (piVar1 == (int *)0x0) { + FUN_0049a300(1,s_item_0x_x_not_found_in_list_00505ca0); + uVar2 = 0; + } + else { + FUN_0048d838(param_1,param_2); + FUN_00488e44((int)param_1,(int)piVar1); + FUN_00452c88(piVar1); + uVar2 = 1; + } + } + return uVar2; +} + + + +/* @00488f34 file=? name=FUN_00488f34 */ + +undefined4 * __cdecl FUN_00488f34(uint param_1,int param_2,undefined *param_3) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00452c38(param_1); + if (puVar1 == (undefined4 *)0x0) { + FUN_004d771c(s_Failed_to_allocate_space_in_new__00505ce4); + puVar1 = (undefined4 *)0x0; + } + else { + puVar1[3] = param_2; + if (param_2 - 1U < 0xe) { + (*(code *)param_3)(puVar1); + } + else { + FUN_004d771c(s_Deeply_erroneous___cant_create_t_00505d0a); + } + puVar1[1] = 0; + FUN_0048d294((int)puVar1); + FUN_0048d350(puVar1,param_1); + } + return puVar1; +} + + + +/* @00488f9c file=? name=FUN_00488f9c */ + +void __cdecl FUN_00488f9c(undefined4 param_1) + +{ + DAT_00505b70 = param_1; + return; +} + + + +/* @00488fac file=? name=FUN_00488fac */ + +void FUN_00488fac(void) + +{ + int *piVar1; + + while (DAT_00505b74 != (int *)0x0) { + piVar1 = (int *)DAT_00505b74[1]; + FUN_0048d30c((int)DAT_00505b74); + FUN_00452c88(DAT_00505b74); + DAT_00505b74 = piVar1; + } + return; +} + + + +/* @00488fd8 file=? name=FUN_00488fd8 */ + +undefined4 __cdecl FUN_00488fd8(int *param_1) + +{ + if (DAT_00505b70 == 0) { + FUN_0048d30c((int)param_1); + FUN_00452c88(param_1); + } + else { + param_1[1] = (int)DAT_00505b74; + DAT_00505b74 = param_1; + } + return 0; +} + + + +/* @0048900c file=? name=FUN_0048900c */ + +char * __cdecl FUN_0048900c(undefined4 param_1) + +{ + char cVar1; + uint uVar2; + uint uVar3; + int iVar4; + char *pcVar5; + char *pcVar6; + + iVar4 = DAT_00505b68 * 0x40; + DAT_00505b68 = DAT_00505b68 + 1; + DAT_00505b68 = DAT_00505b68 & 3; + switch(param_1) { + default: + pcVar5 = s_not_implemented__00505d86; + break; + case 2: + pcVar5 = &DAT_00505d34; + break; + case 3: + pcVar5 = &DAT_00505d39; + break; + case 4: + pcVar5 = s_instance_00505d3e; + break; + case 5: + pcVar5 = &DAT_00505d4d; + break; + case 6: + pcVar5 = s_light_00505d47; + break; + case 7: + pcVar5 = s_object_00505d51; + break; + case 8: + pcVar5 = &DAT_00505d58; + break; + case 9: + pcVar5 = s_geogroup_00505d5c; + break; + case 10: + pcVar5 = s_geometry_00505d65; + break; + case 0xb: + pcVar5 = s_material_00505d6e; + break; + case 0xc: + pcVar5 = s_texture_00505d7e; + break; + case 0xd: + pcVar5 = &DAT_00505d77; + } + uVar2 = 0xffffffff; + do { + pcVar6 = pcVar5; + if (uVar2 == 0) break; + uVar2 = uVar2 - 1; + pcVar6 = pcVar5 + 1; + cVar1 = *pcVar5; + pcVar5 = pcVar6; + } while (cVar1 != '\0'); + uVar2 = ~uVar2; + pcVar5 = pcVar6 + -uVar2; + pcVar6 = &DAT_00523c08 + iVar4; + for (uVar3 = uVar2 >> 2; uVar3 != 0; uVar3 = uVar3 - 1) { + *(undefined4 *)pcVar6 = *(undefined4 *)pcVar5; + pcVar5 = pcVar5 + 4; + pcVar6 = pcVar6 + 4; + } + for (uVar2 = uVar2 & 3; uVar2 != 0; uVar2 = uVar2 - 1) { + *pcVar6 = *pcVar5; + pcVar5 = pcVar5 + 1; + pcVar6 = pcVar6 + 1; + } + return &DAT_00523c08 + iVar4; +} + + + +/* @004890fc file=? name=FUN_004890fc */ + +void __cdecl FUN_004890fc(undefined4 *param_1) + +{ + undefined4 *puVar1; + int iVar2; + int iVar3; + + iVar2 = 0; + do { + iVar3 = 0; + puVar1 = param_1; + do { + *puVar1 = 0; + if (iVar3 == iVar2) { + *puVar1 = 0x3f800000; + } + iVar3 = iVar3 + 1; + puVar1 = puVar1 + 1; + } while (iVar3 < 4); + iVar2 = iVar2 + 1; + param_1 = param_1 + 4; + } while (iVar2 < 4); + return; +} + + + +/* @00489130 file=? name=FUN_00489130 */ + +void __cdecl FUN_00489130(int param_1) + +{ + FUN_00488cb4(param_1,(undefined4 *)(param_1 + 0x10)); + FUN_00488cb4(param_1,(undefined4 *)(param_1 + 0x20)); + FUN_00488cb4(param_1,(undefined4 *)(param_1 + 0x30)); + FUN_00488cb4(param_1,(undefined4 *)(param_1 + 0x40)); + return; +} + + + +/* @00489174 file=? name=FUN_00489174 */ + +void __cdecl FUN_00489174(int param_1) + +{ + *(undefined4 *)(param_1 + 0x10) = 0xffffffff; + return; +} + + + +/* @00489184 file=? name=FUN_00489184 */ + +void __cdecl FUN_00489184(int param_1) + +{ + *(undefined4 *)(param_1 + 0x14) = 0; + *(undefined4 *)(param_1 + 0x10) = 0; + *(int *)(param_1 + 0x18) = 1 << ((byte)DAT_00505b60 & 0x1f); + DAT_00505b60 = DAT_00505b60 + 1; + *(undefined4 *)(param_1 + 0x1c) = 0; + *(undefined4 *)(param_1 + 0x68) = 0; + *(undefined4 *)(param_1 + 0x28) = 0x3f800000; + *(undefined4 *)(param_1 + 0x20) = 0xbf800000; + *(undefined4 *)(param_1 + 0x2c) = 0x3f800000; + *(undefined4 *)(param_1 + 0x24) = 0xbf800000; + *(undefined4 *)(param_1 + 0x30) = 0x3f800000; + *(undefined4 *)(param_1 + 0x34) = 0x44200000; + *(undefined4 *)(param_1 + 0x38) = 0x43f80000; + *(undefined4 *)(param_1 + 0x3c) = 0x41000000; + *(undefined4 *)(param_1 + 0x40) = 0x463b8000; + *(undefined4 *)(param_1 + 0x44) = 0; + *(undefined4 *)(param_1 + 0x48) = 0x3e4ccccd; + *(undefined4 *)(param_1 + 0x50) = 0x3ecccccd; + *(undefined4 *)(param_1 + 0x50) = 1; + *(undefined4 *)(param_1 + 0x6c) = 0; + return; +} + + + +/* @00489214 file=? name=FUN_00489214 */ + +void __cdecl FUN_00489214(int param_1) + +{ + *(undefined4 *)(param_1 + 0x14) = 0; + *(undefined4 *)(param_1 + 0x10) = 0; + *(undefined4 *)(param_1 + 0x18) = 1; + *(undefined4 *)(param_1 + 0x38) = 0xffffffff; + *(undefined4 *)(param_1 + 0x28) = 0x64078678; + *(undefined4 *)(param_1 + 0x2c) = 0x64078678; + *(undefined4 *)(param_1 + 0x1c) = 0x3f800000; + *(undefined4 *)(param_1 + 0x20) = 0x3f800000; + *(undefined4 *)(param_1 + 0x24) = 0x3f800000; + return; +} + + + +/* @00489258 file=? name=FUN_00489258 */ + +void __cdecl FUN_00489258(int param_1) + +{ + *(undefined4 *)(param_1 + 0x1c) = 0; + *(undefined4 *)(param_1 + 0x10) = 0; + *(undefined4 *)(param_1 + 0x14) = 0; + *(undefined4 *)(param_1 + 0x2c) = 0x3f800000; + *(undefined4 *)(param_1 + 0x30) = 0x3f800000; + *(undefined4 *)(param_1 + 0x34) = 0x3f800000; + *(undefined4 *)(param_1 + 0x38) = 0x3f800000; + *(undefined4 *)(param_1 + 0x3c) = 0x3f800000; + *(undefined4 *)(param_1 + 0x40) = 0x3f800000; + *(undefined4 *)(param_1 + 0x20) = 0; + *(undefined4 *)(param_1 + 0x24) = 0; + *(undefined4 *)(param_1 + 0x28) = 0; + *(undefined4 *)(param_1 + 0x44) = 0x3f800000; + *(undefined4 *)(param_1 + 0x48) = 0x3f800000; + *(undefined4 *)(param_1 + 0x4c) = 0x3f800000; + *(undefined4 *)(param_1 + 0x60) = 0; + *(undefined4 *)(param_1 + 0x50) = 0; + *(undefined4 *)(param_1 + 0x54) = 0; + *(undefined4 *)(param_1 + 0x58) = 0; + *(undefined4 *)(param_1 + 0x5c) = 0; + *(undefined4 *)(param_1 + 0x18) = 3; + return; +} + + + +/* @004892e0 file=? name=FUN_004892e0 */ + +void __cdecl FUN_004892e0(int param_1) + +{ + *(undefined4 *)(param_1 + 0x10) = 0; + *(undefined4 *)(param_1 + 0x14) = 0; + *(undefined4 *)(param_1 + 0x18) = 0; + *(undefined4 *)(param_1 + 0x1c) = 0; + *(undefined4 *)(param_1 + 0x20) = 0; + return; +} + + + +/* @00489304 file=? name=FUN_00489304 */ + +void __cdecl FUN_00489304(int param_1) + +{ + *(undefined4 *)(param_1 + 0x10) = 0; + *(undefined4 *)(param_1 + 0x18) = 9; + *(undefined4 *)(param_1 + 0x14) = 9; + *(undefined4 *)(param_1 + 0x1c) = 0; + *(undefined4 *)(param_1 + 0x20) = 0; + *(undefined4 *)(param_1 + 0x24) = 0; + *(undefined4 *)(param_1 + 0x28) = 0; + *(undefined4 *)(param_1 + 0x2c) = 0; + *(undefined4 *)(param_1 + 0x30) = 0; + *(undefined4 *)(param_1 + 0x34) = 0; + *(undefined4 *)(param_1 + 0x38) = 0; + *(undefined4 *)(param_1 + 0x3c) = 0; + *(undefined4 *)(param_1 + 0x48) = 0; + *(undefined4 *)(param_1 + 0x44) = 0; + *(undefined4 *)(param_1 + 0x40) = 0; + return; +} + + + +/* @0048935c file=? name=FUN_0048935c */ + +void __cdecl FUN_0048935c(int param_1) + +{ + *(undefined4 *)(param_1 + 0x10) = 0; + *(undefined4 *)(param_1 + 0x14) = 0; + *(undefined4 *)(param_1 + 0x18) = 0; + *(undefined4 *)(param_1 + 0x1c) = 0x3f800000; + *(undefined4 *)(param_1 + 0x20) = 0x3f800000; + *(undefined4 *)(param_1 + 0x24) = 0x3f800000; + return; +} + + + +/* @00489388 file=? name=FUN_00489388 */ + +void __cdecl FUN_00489388(int param_1) + +{ + *(undefined4 *)(param_1 + 0x14) = 0; + *(undefined4 *)(param_1 + 0x10) = 0; + *(undefined4 *)(param_1 + 0x18) = 3; + *(undefined4 *)(param_1 + 0x1c) = 1; + *(undefined4 *)(param_1 + 0x34) = 0; + *(undefined4 *)(param_1 + 0x20) = 0; + *(undefined4 *)(param_1 + 0x24) = 0; + *(undefined4 *)(param_1 + 0x28) = 0; + *(undefined4 *)(param_1 + 0x2c) = 0; + return; +} + + + +/* @004893c4 file=? name=FUN_004893c4 */ + +void __cdecl FUN_004893c4(int param_1) + +{ + undefined4 *puVar1; + int iVar2; + + FUN_00488cb4(param_1,(undefined4 *)(param_1 + 0x10)); + *(undefined4 *)(param_1 + 0x20) = 0; + *(undefined4 *)(param_1 + 0x24) = 0; + *(undefined4 *)(param_1 + 0x28) = 0; + iVar2 = 0; + puVar1 = (undefined4 *)(param_1 + 0x30); + do { + *puVar1 = 0; + iVar2 = iVar2 + 1; + puVar1 = puVar1 + 1; + } while (iVar2 < 0x10); + *(undefined4 *)(param_1 + 0x70) = 0; + *(undefined4 *)(param_1 + 0x74) = 0; + *(undefined4 *)(param_1 + 0x78) = 0; + return; +} + + + +/* @00489410 file=? name=FUN_00489410 */ + +void __cdecl FUN_00489410(int param_1) + +{ + *(undefined4 *)(param_1 + 0x10) = 0; + *(undefined4 *)(param_1 + 0x14) = 0; + *(undefined4 *)(param_1 + 0x18) = 0; + *(undefined4 *)(param_1 + 0x1c) = 0x3f800000; + *(undefined4 *)(param_1 + 0x20) = 0; + *(undefined4 *)(param_1 + 0x24) = 0; + *(undefined4 *)(param_1 + 0x28) = 0; + *(undefined4 *)(param_1 + 0x2c) = 0x3f800000; + *(undefined4 *)(param_1 + 0x30) = 0; + FUN_00488cb4(param_1,(undefined4 *)(param_1 + 0x34)); + *(undefined4 *)(param_1 + 0x44) = 0; + *(undefined4 *)(param_1 + 0x48) = 0; + *(undefined4 *)(param_1 + 0x4c) = 0; + return; +} + + + +/* @0048946c file=? name=FUN_0048946c */ + +void __cdecl FUN_0048946c(int param_1) + +{ + *(undefined4 *)(param_1 + 0x10) = 0; + *(undefined4 *)(param_1 + 0x14) = 0; + *(undefined4 *)(param_1 + 0x18) = 0; + *(undefined4 *)(param_1 + 0x1c) = 0x3f800000; + *(undefined4 *)(param_1 + 0x20) = 0; + *(undefined4 *)(param_1 + 0x24) = 0; + *(undefined4 *)(param_1 + 0x28) = 0; + *(undefined4 *)(param_1 + 0x2c) = 0x3f800000; + *(undefined4 *)(param_1 + 0x30) = 0; + *(undefined4 *)(param_1 + 0x34) = 0; + FUN_00488cb4(param_1,(undefined4 *)(param_1 + 0x38)); + *(undefined4 *)(param_1 + 0x48) = 0; + *(undefined4 *)(param_1 + 0x4c) = 0; + *(undefined4 *)(param_1 + 0x50) = 0; + *(undefined4 *)(param_1 + 0x54) = 0; + return; +} + + + +/* @004894d0 file=? name=FUN_004894d0 */ + +void __cdecl FUN_004894d0(int param_1) + +{ + *(undefined4 *)(param_1 + 0x10) = 1; + *(undefined4 *)(param_1 + 0x14) = 1; + *(undefined4 *)(param_1 + 0x18) = 0; + *(undefined4 *)(param_1 + 0x1c) = 0; + *(undefined4 *)(param_1 + 0x20) = 0; + *(undefined4 *)(param_1 + 0x24) = 0; + *(undefined4 *)(param_1 + 0x28) = 0x3fb4fdf4; + *(undefined4 *)(param_1 + 0x2c) = 0x3fb4fdf4; + return; +} + + + +/* @00489508 file=? name=FUN_00489508 */ + +void __cdecl FUN_00489508(int param_1) + +{ + FUN_004890fc((undefined4 *)(param_1 + 0x18)); + *(undefined4 *)(param_1 + 0x10) = 0; + *(undefined4 *)(param_1 + 0x14) = 0; + *(undefined4 *)(param_1 + 0x58) = 3; + *(undefined4 *)(param_1 + 0x5c) = 0; + *(undefined4 *)(param_1 + 0x60) = 0; + *(undefined4 *)(param_1 + 100) = 0; + *(undefined4 *)(param_1 + 0x68) = 0xffffffff; + *(undefined4 *)(param_1 + 0x6c) = 0; + *(undefined4 *)(param_1 + 0x70) = 0; + *(undefined4 *)(param_1 + 0x74) = 0; + *(undefined4 *)(param_1 + 0x78) = 0x3f800000; + *(undefined4 *)(param_1 + 0x7c) = 0; + *(undefined4 *)(param_1 + 0x80) = 0; + *(undefined4 *)(param_1 + 0x84) = 0; + *(undefined4 *)(param_1 + 0x88) = 0x3f800000; + return; +} + + + +/* @00489578 file=? name=FUN_00489578 */ + +undefined4 __cdecl FUN_00489578(char *param_1) + +{ + FUN_004d771c(param_1); + FUN_004dee24(9); + return 0; +} + + + +/* @00489594 file=? name=FUN_00489594 */ + +void __cdecl FUN_00489594(int param_1,int param_2) + +{ + if ((param_1 != 0) && (*(int *)(param_1 + 0xc) != param_2)) { + FUN_0048900c(*(int *)(param_1 + 0xc)); + FUN_0048900c(param_2); + FUN_0049a300(0,s_inconsistent_type_check_in_point_00505d97); + FUN_0049a300(0,s_last_API_operation__s_00505dd7); + FUN_004dee24(9); + } + return; +} + + + +/* @004895f0 file=? name=FUN_004895f0 */ + +void __cdecl FUN_004895f0(int param_1) + +{ + FUN_00488d88((int *)&DAT_00523bc8,param_1); + return; +} + + + +/* @00489608 file=? name=FUN_00489608 */ + +void __cdecl FUN_00489608(int param_1) + +{ + int iVar1; + + iVar1 = FUN_00488ebc((int *)&DAT_00523bc8,param_1); + if (iVar1 == 0) { + FUN_0049a300(1,s_Failed_to_remove_zone_0x_x__0x_x_00505dee); + } + return; +} + + + +/* @00489638 file=? name=FUN_00489638 */ + +undefined4 __cdecl FUN_00489638(int param_1,int param_2) + +{ + int iVar1; + int iVar2; + + if (param_1 == 0) { + FUN_0049a300(1,s_attempt_to_remove_node_to_NULL_D_00505e6d); + } + else if (param_2 == 0) { + FUN_0049a300(1,s_attempt_to_remove_NULL_from_DCS_00505e4c); + } + else { + iVar1 = 0; + for (iVar2 = *(int *)(param_1 + 0x10); iVar2 != 0; iVar2 = *(int *)(iVar2 + 0x10)) { + if (param_2 == iVar2) { + FUN_0048d7a0(param_1,param_2); + if (iVar1 == 0) { + *(undefined4 *)(param_1 + 0x10) = *(undefined4 *)(iVar2 + 0x10); + } + else { + *(undefined4 *)(iVar1 + 0x10) = *(undefined4 *)(iVar2 + 0x10); + } + *(undefined4 *)(iVar2 + 0x10) = 0; + return 1; + } + iVar1 = iVar2; + } + FUN_0049a300(1,s_dpl_RemoveNodeFromDCS_failed_to_f_00505e1c); + } + return 0; +} + + + +/* @004896cc file=? name=FUN_004896cc */ + +undefined4 * FUN_004896cc(void) + +{ + undefined4 *puVar1; + + puVar1 = FUN_00488f34(0x14,2,FUN_00489174); + FUN_004895f0((int)puVar1); + return puVar1; +} + + + +/* @004896f0 file=? name=FUN_004896f0 */ + +void FUN_004896f0(void) + +{ + FUN_00488f34(0x70,3,FUN_00489184); + return; +} + + + +/* @00489708 file=? name=FUN_00489708 */ + +void FUN_00489708(void) + +{ + FUN_00488f34(0x8c,5,FUN_00489508); + return; +} + + + +/* @00489724 file=? name=FUN_00489724 */ + +void FUN_00489724(void) + +{ + FUN_00488f34(0x38,4,FUN_00489388); + return; +} + + + +/* @0048973c file=? name=FUN_0048973c */ + +undefined4 * FUN_0048973c(void) + +{ + undefined4 *puVar1; + + puVar1 = FUN_00488f34(0x3c,6,FUN_00489214); + FUN_00488d88((int *)&DAT_00523bf8,(int)puVar1); + return puVar1; +} + + + +/* @00489768 file=? name=FUN_00489768 */ + +void FUN_00489768(void) + +{ + DAT_005081d8 = 0; + FUN_00488f34(0x4c,0xc,FUN_00489304); + return; +} + + + +/* @00489788 file=? name=FUN_00489788 */ + +void FUN_00489788(void) + +{ + FUN_00488f34(0x24,0xd,FUN_004892e0); + return; +} + + + +/* @004897a0 file=? name=FUN_004897a0 */ + +void FUN_004897a0(void) + +{ + FUN_00488f34(100,0xb,FUN_00489258); + return; +} + + + +/* @004897b8 file=? name=FUN_004897b8 */ + +void FUN_004897b8(void) + +{ + FUN_00488f34(0x2c,0xe,FUN_0048935c); + return; +} + + + +/* @004897d0 file=? name=FUN_004897d0 */ + +void FUN_004897d0(void) + +{ + FUN_00488f34(0x7c,7,FUN_004893c4); + return; +} + + + +/* @004897e8 file=? name=FUN_004897e8 */ + +void FUN_004897e8(void) + +{ + FUN_00488f34(0x50,8,FUN_00489410); + return; +} + + + +/* @00489800 file=? name=FUN_00489800 */ + +void FUN_00489800(void) + +{ + FUN_00488f34(0x58,9,FUN_0048946c); + return; +} + + + +/* @00489818 file=? name=FUN_00489818 */ + +void FUN_00489818(void) + +{ + FUN_00488f34(0x30,10,FUN_004894d0); + return; +} + + + +/* @00489830 file=? name=FUN_00489830 */ + +void __cdecl FUN_00489830(int *param_1) + +{ + if (DAT_00505b64 != 0) { + FUN_00489594((int)param_1,2); + } + if (param_1 != (int *)0x0) { + FUN_00489608((int)param_1); + FUN_00488fd8(param_1); + return; + } + FUN_0049a300(1,s_Attempt_to_Delete_NULL_ZONE_00505e91); + return; +} + + + +/* @00489878 file=? name=FUN_00489878 */ + +void __cdecl FUN_00489878(int *param_1) + +{ + if (DAT_00505b64 != 0) { + FUN_00489594((int)param_1,3); + } + if (param_1 != (int *)0x0) { + FUN_00488fd8(param_1); + return; + } + FUN_0049a300(1,s_Attempt_to_delete_NULL_view_00505eae); + return; +} + + + +/* @004898b8 file=? name=FUN_004898b8 */ + +void __cdecl FUN_004898b8(int *param_1) + +{ + if (DAT_00505b64 != 0) { + FUN_00489594((int)param_1,5); + } + if (param_1 != (int *)0x0) { + FUN_00488fd8(param_1); + return; + } + FUN_0049a300(1,s_Attempt_to_Delete_NULL_DCS_00505ecb); + return; +} + + + +/* @004898f8 file=? name=FUN_004898f8 */ + +void __cdecl FUN_004898f8(int *param_1) + +{ + if (DAT_00505b64 != 0) { + FUN_00489594((int)param_1,4); + } + if (param_1 != (int *)0x0) { + FUN_00488fd8(param_1); + return; + } + FUN_0049a300(1,s_Attempt_to_Delete_NULL_instance_00505ee7); + return; +} + + + +/* @00489938 file=? name=FUN_00489938 */ + +void __cdecl FUN_00489938(int *param_1) + +{ + if (DAT_00505b64 != 0) { + FUN_00489594((int)param_1,6); + } + if (param_1 != (int *)0x0) { + FUN_00488ebc((int *)&DAT_00523bf8,(int)param_1); + if (param_1[5] != 0) { + FUN_00489638(param_1[5],(int)param_1); + } + FUN_00488fd8(param_1); + return; + } + FUN_0049a300(1,s_Attempt_to_delete_NULL_light_00505f08); + return; +} + + + +/* @00489998 file=? name=FUN_00489998 */ + +void __cdecl FUN_00489998(int *param_1) + +{ + if (DAT_00505b64 != 0) { + FUN_00489594((int)param_1,0xc); + } + if (param_1 != (int *)0x0) { + FUN_00488fd8(param_1); + return; + } + FUN_0049a300(1,s_Attempt_to_delete_NULL_texture_00505f26); + return; +} + + + +/* @004899d8 file=? name=FUN_004899d8 */ + +void __cdecl FUN_004899d8(int *param_1) + +{ + if (DAT_00505b64 != 0) { + FUN_00489594((int)param_1,0xd); + } + if (param_1 != (int *)0x0) { + if ((int *)param_1[4] != (int *)0x0) { + FUN_00452c88((int *)param_1[4]); + } + FUN_00488fd8(param_1); + return; + } + FUN_0049a300(1,s_Attempt_to_delete_NULL_texmap_00505f46); + return; +} + + + +/* @00489a28 file=? name=FUN_00489a28 */ + +void __cdecl FUN_00489a28(int *param_1) + +{ + if (DAT_00505b64 != 0) { + FUN_00489594((int)param_1,0xb); + } + if (param_1 != (int *)0x0) { + FUN_00488fd8(param_1); + return; + } + FUN_0049a300(1,s_Attempt_to_delete_NULL_material_00505f65); + return; +} + + + +/* @00489a68 file=? name=FUN_00489a68 */ + +void __cdecl FUN_00489a68(int *param_1) + +{ + if (DAT_00505b64 != 0) { + FUN_00489594((int)param_1,0xe); + } + if (param_1 != (int *)0x0) { + FUN_00488fd8(param_1); + return; + } + FUN_0049a300(1,s_Attempt_to_delete_NULL_ramp_00505f86); + return; +} + + + +/* @00489aa8 file=? name=FUN_00489aa8 */ + +void __cdecl FUN_00489aa8(int *param_1) + +{ + if (DAT_00505b64 != 0) { + FUN_00489594((int)param_1,7); + } + if (param_1 != (int *)0x0) { + FUN_00488fd8(param_1); + return; + } + FUN_0049a300(1,s_Attempt_to_delete_NULL_object_00505fa3); + return; +} + + + +/* @00489ae8 file=? name=FUN_00489ae8 */ + +void __cdecl FUN_00489ae8(int *param_1) + +{ + if (DAT_00505b64 != 0) { + FUN_00489594((int)param_1,8); + } + if (param_1 != (int *)0x0) { + FUN_00488fd8(param_1); + return; + } + FUN_0049a300(1,s_Attempt_to_delete_NULL_lod_00505fc2); + return; +} + + + +/* @00489b28 file=? name=FUN_00489b28 */ + +void __cdecl FUN_00489b28(int *param_1) + +{ + if (DAT_00505b64 != 0) { + FUN_00489594((int)param_1,9); + } + if (param_1 != (int *)0x0) { + FUN_00488fd8(param_1); + return; + } + FUN_0049a300(1,s_Attempt_to_delete_NULL_geogroup_00505fde); + return; +} + + + +/* @00489b68 file=? name=FUN_00489b68 */ + +void __cdecl FUN_00489b68(int *param_1) + +{ + if (DAT_00505b64 != 0) { + FUN_00489594((int)param_1,10); + } + if (param_1 != (int *)0x0) { + FUN_00488fd8(param_1); + return; + } + FUN_0049a300(1,s_Attempt_to_delete_NULL_geometry_00505fff); + return; +} + + + +/* @00489ba8 file=? name=FUN_00489ba8 */ + +void __cdecl FUN_00489ba8(int param_1) + +{ + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,5); + } + FUN_00488d88((int *)&DAT_00523be8,param_1); + return; +} + + + +/* @00489bd4 file=? name=FUN_00489bd4 */ + +void __cdecl FUN_00489bd4(int param_1) + +{ + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,3); + } + FUN_00488d88((int *)&DAT_00523bd8,param_1); + return; +} + + + +/* @00489c00 file=? name=FUN_00489c00 */ + +void __cdecl FUN_00489c00(int param_1,int param_2) + +{ + int local_8; + + if (DAT_00505b64 != 0) { + FUN_00489594(param_2,8); + } + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,7); + } + *(int *)(param_2 + 0x30) = param_1; + FUN_00488d88((int *)(param_1 + 0x10),param_2); + FUN_00488df8(param_1 + 0x10,param_2,&local_8); + return; +} + + + +/* @00489c5c file=? name=FUN_00489c5c */ + +void __cdecl FUN_00489c5c(int param_1,int param_2) + +{ + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,8); + } + if (DAT_00505b64 != 0) { + FUN_00489594(param_2,9); + } + *(int *)(param_2 + 0x30) = param_1; + FUN_00488d88((int *)(param_1 + 0x34),param_2); + return; +} + + + +/* @00489ca4 file=? name=FUN_00489ca4 */ + +void __cdecl FUN_00489ca4(int param_1,int param_2) + +{ + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,9); + } + if (DAT_00505b64 != 0) { + FUN_00489594(param_2,10); + } + *(int *)(param_2 + 0x1c) = param_1; + FUN_00488d88((int *)(param_1 + 0x38),param_2); + return; +} + + + +/* @00489cec file=? name=FUN_00489cec */ + +void __cdecl FUN_00489cec(int param_1,int param_2) + +{ + int iVar1; + int iVar2; + + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,5); + } + if (DAT_00505b64 != 0) { + FUN_00489594(param_2,5); + } + if (param_1 == 0) { + FUN_0049a300(1,s_attempt_to_add_dcs_0x_x_to_a_NUL_00506047); + } + else if (param_2 == 0) { + FUN_0049a300(1,s_attempt_to_add_a_NULL_dcs_to_dcs_00506020); + } + else { + if (*(int *)(param_1 + 100) == 0) { + *(int *)(param_2 + 0x5c) = param_1; + *(int *)(param_1 + 100) = param_2; + } + else { + if (*(int *)(param_2 + 0x5c) != 0) { + FUN_0048a068(*(int *)(param_2 + 0x5c),param_2); + } + *(int *)(param_2 + 0x5c) = param_1; + iVar1 = *(int *)(param_1 + 100); + do { + iVar2 = iVar1; + iVar1 = *(int *)(iVar2 + 0x60); + } while (iVar1 != 0); + *(int *)(iVar2 + 0x60) = param_2; + } + FUN_0048d8d8(param_1,param_2); + } + return; +} + + + +/* @00489d90 file=? name=FUN_00489d90 */ + +undefined4 __cdecl FUN_00489d90(int param_1,int param_2) + +{ + undefined4 uVar1; + + if (param_1 == 0) { + FUN_0049a300(1,s_attempt_to_add_node_to_NULL_DCS_005060c2); + uVar1 = 0; + } + else if (param_2 == 0) { + FUN_0049a300(1,s_attempt_to_add_NULL_node_to_DCS_005060a1); + uVar1 = 0; + } + else if (*(int *)(param_2 + 0x10) == 0) { + FUN_0048d760(param_1,param_2); + *(undefined4 *)(param_2 + 0x10) = *(undefined4 *)(param_1 + 0x10); + *(int *)(param_1 + 0x10) = param_2; + uVar1 = 1; + } + else { + FUN_0049a300(1,s_error_in_AddNodeToDCS___node_alr_00506071); + uVar1 = 0; + } + return uVar1; +} + + + +/* @00489e04 file=? name=FUN_00489e04 */ + +void __cdecl FUN_00489e04(int param_1,int param_2) + +{ + FUN_0049a300(4,s_dpl_AddInstanceToDCS_0x_x_0x_x_005060e3); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,5); + } + if (DAT_00505b64 != 0) { + FUN_00489594(param_2,4); + } + FUN_00489d90(param_1,param_2); + return; +} + + + +/* @00489e58 file=? name=FUN_00489e58 */ + +void __cdecl FUN_00489e58(int param_1) + +{ + int iVar1; + + FUN_0049a300(4,s_dpl_RemoveDCSFromScene_0x_x_00506103); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,5); + } + iVar1 = FUN_00488ebc((int *)&DAT_00523be8,param_1); + if (iVar1 == 0) { + FUN_0049a300(1,s_Failed_to_remove_dcs_0x_x__0x_x__00506120); + } + return; +} + + + +/* @00489eac file=? name=FUN_00489eac */ + +void __cdecl FUN_00489eac(int param_1) + +{ + int iVar1; + + FUN_0049a300(4,s_dpl_RemoveViewFromScene_0x_x_0050614d); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,3); + } + iVar1 = FUN_00488ebc((int *)&DAT_00523bd8,param_1); + if (iVar1 == 0) { + FUN_0049a300(1,s_Failed_to_remove_view_0x_x__0x_x_0050616b); + } + return; +} + + + +/* @00489f00 file=? name=FUN_00489f00 */ + +void __cdecl FUN_00489f00(int param_1,int param_2) + +{ + int iVar1; + + FUN_0049a300(4,s_dpl_RemoveLodFromObject_0x_x_0x__00506199); + if (DAT_00505b64 != 0) { + FUN_00489594(param_2,8); + } + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,7); + } + *(undefined4 *)(param_2 + 0x30) = 0; + iVar1 = FUN_00488ebc((int *)(param_1 + 0x10),param_2); + if (iVar1 == 0) { + FUN_004d771c(s_Failed_to_remove_lod_0x_x__0x_x__005061bc); + } + return; +} + + + +/* @00489f78 file=? name=FUN_00489f78 */ + +void __cdecl FUN_00489f78(int param_1,int param_2) + +{ + int iVar1; + + FUN_0049a300(4,s_dpl_RemoveGeogroupFromLod_0x_x_0_005061f6); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,8); + } + if (DAT_00505b64 != 0) { + FUN_00489594(param_2,9); + } + *(undefined4 *)(param_2 + 0x30) = 0; + iVar1 = FUN_00488ebc((int *)(param_1 + 0x34),param_2); + if (iVar1 == 0) { + FUN_004d771c(s_Failed_to_remove_ggroup_0x_x__0x_0050621b); + } + return; +} + + + +/* @00489ff0 file=? name=FUN_00489ff0 */ + +void __cdecl FUN_00489ff0(int param_1,int param_2) + +{ + int iVar1; + + FUN_0049a300(4,s_dpl_RemoveGeometryFromGeogroup_0_00506255); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,9); + } + if (DAT_00505b64 != 0) { + FUN_00489594(param_2,10); + } + *(undefined4 *)(param_2 + 0x1c) = 0; + iVar1 = FUN_00488ebc((int *)(param_1 + 0x38),param_2); + if (iVar1 == 0) { + FUN_004d771c(s_Failed_to_remove_geometry_0x_x___0050627f); + } + return; +} + + + +/* @0048a068 file=? name=FUN_0048a068 */ + +void __cdecl FUN_0048a068(int param_1,int param_2) + +{ + int iVar1; + + FUN_0049a300(4,s_dpl_RemoveDCSFromDCS_0x_x_0x_x_005062be); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,5); + } + if (DAT_00505b64 != 0) { + FUN_00489594(param_2,5); + } + if ((param_1 == 0) || (param_2 == 0)) { + FUN_0049a300(1,s_NULL_node_in_RemoveDCSFromDCS_0x_00506344); + } + else if (param_1 == *(int *)(param_2 + 0x5c)) { + if (param_2 == *(int *)(param_1 + 100)) { + *(undefined4 *)(param_1 + 100) = *(undefined4 *)(param_2 + 0x60); + } + else { + for (iVar1 = *(int *)(param_1 + 100); param_2 != *(int *)(iVar1 + 0x60); + iVar1 = *(int *)(iVar1 + 0x60)) { + if (*(int *)(iVar1 + 0x60) == 0) { + FUN_0049a300(1,s_badly_formed_DCS_tree_in_RemoveD_00506311); + return; + } + } + *(undefined4 *)(iVar1 + 0x60) = *(undefined4 *)(param_2 + 0x60); + } + *(undefined4 *)(param_2 + 0x5c) = 0; + *(undefined4 *)(param_2 + 0x60) = 0; + FUN_0048d920(param_1,param_2); + } + else { + FUN_0049a300(1,s_badly_formed_DCS_tree_in_RemoveD_005062de); + } + return; +} + + + +/* @0048a130 file=? name=FUN_0048a130 */ + +void __cdecl FUN_0048a130(int param_1,int param_2) + +{ + FUN_0049a300(4,s_dpl_RemoveInstanceFromDCS_0x_x_0_00506372); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,5); + } + if (DAT_00505b64 != 0) { + FUN_00489594(param_2,4); + } + FUN_00489638(param_1,param_2); + return; +} + + + +/* @0048a184 file=? name=FUN_0048a184 */ + +void FUN_0048a184(void) + +{ + FUN_0049a300(4,s_dpl_DrawSceneComplete_00506397); + FUN_0048e330(); + return; +} + + + +/* @0048a1a0 file=? name=FUN_0048a1a0 */ + +void FUN_0048a1a0(void) + +{ + FUN_0049a300(4,s_dpl_WaitSceneComplete_005063ae); + FUN_0048e340(); + return; +} + + + +/* @0048a1bc file=? name=FUN_0048a1bc */ + +void FUN_0048a1bc(void) + +{ + FUN_0049a300(4,s_dpl_DrawScene_005063c5); + FUN_0048a1a0(); + FUN_00488fac(); + FUN_0048e2dc(1); + return; +} + + + +/* @0048a1e4 file=? name=FUN_0048a1e4 */ + +int __cdecl FUN_0048a1e4(int param_1) + +{ + int *piVar1; + int iVar2; + + piVar1 = DAT_00523bd0; + FUN_0049a300(4,s_dpl_GetSceneZone_005063d4); + while( true ) { + if (param_1 == 0) { + if (piVar1 == (int *)0x0) { + iVar2 = 0; + } + else { + if (DAT_00505b64 != 0) { + FUN_00489594(*piVar1,2); + } + iVar2 = *piVar1; + } + return iVar2; + } + if (piVar1 == (int *)0x0) break; + piVar1 = (int *)piVar1[2]; + param_1 = param_1 + -1; + } + return 0; +} + + + +/* @0048a23c file=? name=FUN_0048a23c */ + +int __cdecl FUN_0048a23c(int param_1) + +{ + int *piVar1; + int iVar2; + + piVar1 = DAT_00523be0; + FUN_0049a300(4,s_dpl_GetSceneView_005063e6); + while( true ) { + if (param_1 == 0) { + if (piVar1 == (int *)0x0) { + iVar2 = 0; + } + else { + if (DAT_00505b64 != 0) { + FUN_00489594(*piVar1,3); + } + iVar2 = *piVar1; + } + return iVar2; + } + if (piVar1 == (int *)0x0) break; + piVar1 = (int *)piVar1[2]; + param_1 = param_1 + -1; + } + return 0; +} + + + +/* @0048a294 file=? name=FUN_0048a294 */ + +int __cdecl FUN_0048a294(int param_1) + +{ + int *piVar1; + int iVar2; + + piVar1 = DAT_00523bf0; + FUN_0049a300(4,s_dpl_GetSceneDCS_005063f8); + while( true ) { + if (param_1 == 0) { + if (piVar1 == (int *)0x0) { + iVar2 = 0; + } + else { + if (DAT_00505b64 != 0) { + FUN_00489594(*piVar1,5); + } + iVar2 = *piVar1; + } + return iVar2; + } + if (piVar1 == (int *)0x0) break; + piVar1 = (int *)piVar1[2]; + param_1 = param_1 + -1; + } + return 0; +} + + + +/* @0048a2ec file=? name=FUN_0048a2ec */ + +int FUN_0048a2ec(int param_1,int param_2) + +{ + int iVar1; + + iVar1 = *(int *)(param_1 + 100); + FUN_0049a300(4,s_dpl_GetDCSChildDCS_00506409); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,5); + } + while( true ) { + if (param_2 == 0) { + if (DAT_00505b64 != 0) { + FUN_00489594(iVar1,5); + } + return iVar1; + } + if (iVar1 == 0) break; + iVar1 = *(int *)(iVar1 + 0x60); + param_2 = param_2 + -1; + } + return 0; +} + + + +/* @0048a350 file=? name=FUN_0048a350 */ + +undefined4 __cdecl FUN_0048a350(int param_1) + +{ + FUN_0049a300(4,s_dpl_GetDCSParentDCS_0050641d); + if (param_1 == 0) { + return 0; + } + if (DAT_00505b64 != 0) { + FUN_00489594(*(int *)(param_1 + 0x5c),5); + } + return *(undefined4 *)(param_1 + 0x5c); +} + + + +/* @0048a38c file=? name=FUN_0048a38c */ + +int __cdecl FUN_0048a38c(int param_1,int param_2) + +{ + int iVar1; + + FUN_0049a300(4,s_dpl_GetDCSInstance_00506432); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,5); + } + if (param_1 == 0) { + FUN_0049a300(1,s_NULL_dcs_in_GetDCSInstance_00506446); + } + else { + for (iVar1 = *(int *)(param_1 + 0x10); iVar1 != 0; iVar1 = *(int *)(iVar1 + 0x10)) { + if ((*(int *)(iVar1 + 0xc) == 4) && (param_2 = param_2 + -1, param_2 == 0)) { + return iVar1; + } + } + } + return 0; +} + + + +/* @0048a3f4 file=? name=FUN_0048a3f4 */ + +int __cdecl FUN_0048a3f4(int param_1,int param_2) + +{ + int *piVar1; + int iVar2; + + piVar1 = *(int **)(param_1 + 0x18); + FUN_0049a300(4,s_dpl_GetObjectLod_00506462); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,7); + } + while( true ) { + if (param_2 == 0) { + if (piVar1 == (int *)0x0) { + iVar2 = 0; + } + else { + if (DAT_00505b64 != 0) { + FUN_00489594(*piVar1,8); + } + iVar2 = *piVar1; + } + return iVar2; + } + if (piVar1 == (int *)0x0) break; + piVar1 = (int *)piVar1[2]; + param_2 = param_2 + -1; + } + return 0; +} + + + +/* @0048a464 file=? name=FUN_0048a464 */ + +int __cdecl FUN_0048a464(int param_1,int param_2) + +{ + int *piVar1; + int iVar2; + + piVar1 = *(int **)(param_1 + 0x3c); + FUN_0049a300(4,s_dpl_GetLodGeogroup_00506474); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,8); + } + while( true ) { + if (param_2 == 0) { + if (piVar1 == (int *)0x0) { + iVar2 = 0; + } + else { + if (DAT_00505b64 != 0) { + FUN_00489594(*piVar1,9); + } + iVar2 = *piVar1; + } + return iVar2; + } + if (piVar1 == (int *)0x0) break; + piVar1 = (int *)piVar1[2]; + param_2 = param_2 + -1; + } + return 0; +} + + + +/* @0048a4d4 file=? name=FUN_0048a4d4 */ + +int __cdecl FUN_0048a4d4(int param_1,int param_2) + +{ + int *piVar1; + int iVar2; + + piVar1 = *(int **)(param_1 + 0x40); + FUN_0049a300(4,s_dpl_GetGeogroupGeometry_00506488); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,9); + } + while( true ) { + if (param_2 == 0) { + if (piVar1 == (int *)0x0) { + iVar2 = 0; + } + else { + if (DAT_00505b64 != 0) { + FUN_00489594(*piVar1,10); + } + iVar2 = *piVar1; + } + return iVar2; + } + if (piVar1 == (int *)0x0) break; + piVar1 = (int *)piVar1[2]; + param_2 = param_2 + -1; + } + return 0; +} + + + +/* @0048a544 file=? name=FUN_0048a544 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_0048a544(int param_1,undefined4 param_2,undefined4 *param_3) + +{ + if (param_1 < 0x10) { + FUN_0049a300(4,s_dpl_SetRenderProperty_005064a1); + (&DAT_00523d08)[param_1 * 2] = param_2; + (&DAT_00523d0c)[param_1 * 2] = param_3; + if (param_1 == 8) { + _DAT_00507930 = *param_3; + } + FUN_0048e688(param_1,param_2); + } + return; +} + + + diff --git a/reference/decomp/archive_2025export/all/part_011.c b/reference/decomp/archive_2025export/all/part_011.c new file mode 100644 index 0000000..25f06f4 --- /dev/null +++ b/reference/decomp/archive_2025export/all/part_011.c @@ -0,0 +1,11568 @@ +/* @0048a598 file=? name=FUN_0048a598 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl FUN_0048a598(int param_1,undefined4 *param_2) + +{ + undefined4 uVar1; + + FUN_0049a300(4,s_dpl_GetRenderProperty_005064b8); + if (param_1 < 0x10) { + if (param_1 == 8) { + *param_2 = _DAT_00507930; + } + uVar1 = (&DAT_00523d08)[param_1 * 2]; + } + else { + uVar1 = 0; + } + return uVar1; +} + + + +/* @0048a5d8 file=? name=FUN_0048a5d8 */ + +void __cdecl FUN_0048a5d8(int param_1,undefined4 *param_2) + +{ + FUN_0049a300(4,s_dpl_SetDCSMatrix_005064cf); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,5); + } + if ((param_1 == 0) || (param_2 == (undefined4 *)0x0)) { + FUN_00489578(s_NULL_dcs_in_setDCSmatrix_005064e1); + } + else { + FUN_004d4918((undefined4 *)(param_1 + 0x18),param_2,0x40); + } + return; +} + + + +/* @0048a630 file=? name=FUN_0048a630 */ + +int __cdecl FUN_0048a630(int param_1) + +{ + int iVar1; + + FUN_0049a300(4,s_dpl_GetDCSMatrix_005064fb); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,5); + } + if (param_1 != 0) { + return param_1 + 0x18; + } + iVar1 = FUN_00489578(s_NULL_dcs_in_getDCSmatrix_0050650d); + return iVar1; +} + + + +/* @0048a674 file=? name=FUN_0048a674 */ + +void __cdecl FUN_0048a674(int param_1,int param_2) + +{ + FUN_0049a300(4,s_dpl_SetDCSReorientAxes_00506527); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,5); + } + if (param_1 == 0) { + FUN_00489578(s_NULL_dcs_in_setDCSreorientaxes_0050653f); + } + else { + *(uint *)(param_1 + 0x58) = *(uint *)(param_1 + 0x58) & 0xffffffc7 | param_2 << 3; + } + return; +} + + + +/* @0048a6cc file=? name=FUN_0048a6cc */ + +uint __cdecl FUN_0048a6cc(int param_1) + +{ + uint uVar1; + + FUN_0049a300(4,s_dpl_GetDCSReorientAxes_0050655f); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,5); + } + if (param_1 != 0) { + return *(int *)(param_1 + 0x58) >> 3 & 7; + } + uVar1 = FUN_00489578(s_NULL_dcs_in_getDCSreorientaxes_00506577); + return uVar1; +} + + + +/* @0048a714 file=? name=FUN_0048a714 */ + +void __cdecl FUN_0048a714(int param_1,int param_2) + +{ + FUN_0049a300(4,s_dpl_SetDCSZone_00506597); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,5); + } + if (DAT_00505b64 != 0) { + FUN_00489594(param_2,2); + } + if (param_1 == 0) { + FUN_00489578(s_NULL_dcs_in_setDCSzone_005065a7); + } + else { + *(int *)(param_1 + 0x14) = param_2; + } + return; +} + + + +/* @0048a770 file=? name=FUN_0048a770 */ + +undefined4 __cdecl FUN_0048a770(int param_1) + +{ + undefined4 uVar1; + + FUN_0049a300(4,s_dpl_GetDCSZone_005065bf); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,5); + } + if (param_1 != 0) { + if (DAT_00505b64 != 0) { + FUN_00489594(*(int *)(param_1 + 0x14),2); + } + return *(undefined4 *)(param_1 + 0x14); + } + uVar1 = FUN_00489578(s_NULL_dcs_in_getDCSzone_005065cf); + return uVar1; +} + + + +/* @0048a7cc file=? name=FUN_0048a7cc */ + +void __cdecl FUN_0048a7cc(int param_1,undefined4 *param_2) + +{ + FUN_0049a300(4,s_dpl_SetDCSBound_005065e7); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,5); + } + if (param_1 != 0) { + if (param_2 != (undefined4 *)0x0) { + FUN_004d4918((undefined4 *)(param_1 + 0x6c),param_2,0x20); + *(uint *)(param_1 + 0x58) = *(uint *)(param_1 + 0x58) | 0x800; + return; + } + *(uint *)(param_1 + 0x58) = *(uint *)(param_1 + 0x58) & 0xfffff7ff; + return; + } + FUN_00489578(s_NULL_dcs_in_setDCSBounds_005065f8); + return; +} + + + +/* @0048a834 file=? name=FUN_0048a834 */ + +int __cdecl FUN_0048a834(int param_1) + +{ + int iVar1; + + FUN_0049a300(4,s_dpl_GetDCSBound_00506612); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,5); + } + if (param_1 != 0) { + return param_1 + 0x6c; + } + iVar1 = FUN_00489578(s_NULL_dcs_in_getDCSbound_00506623); + return iVar1; +} + + + +/* @0048a878 file=? name=FUN_0048a878 */ + +void FUN_0048a878(void) + +{ + return; +} + + + +/* @0048a880 file=? name=FUN_0048a880 */ + +void FUN_0048a880(void) + +{ + return; +} + + + +/* @0048a888 file=? name=FUN_0048a888 */ + +void FUN_0048a888(void) + +{ + return; +} + + + +/* @0048a890 file=? name=FUN_0048a890 */ + +void __cdecl FUN_0048a890(int param_1) + +{ + FUN_0049a300(4,s_dpl_SetZoneAllViewsOn_0050663c); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,2); + } + if (param_1 != 0) { + *(undefined4 *)(param_1 + 0x10) = 0xfffffff; + return; + } + FUN_00489578(s_NULL_zone_00506653); + return; +} + + + +/* @0048a8d8 file=? name=FUN_0048a8d8 */ + +void __cdecl FUN_0048a8d8(int param_1) + +{ + FUN_0049a300(4,s_dpl_SetZoneAllViewsOff_0050665e); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,2); + } + if (param_1 != 0) { + *(undefined4 *)(param_1 + 0x10) = 0; + return; + } + FUN_00489578(s_NULL_zone_00506676); + return; +} + + + +/* @0048a91c file=? name=FUN_0048a91c */ + +void __cdecl FUN_0048a91c(int param_1,int param_2) + +{ + uint unaff_EDI; + + FUN_0049a300(4,s_dpl_SetZoneViewOn_00506681); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,2); + } + if (param_2 == 0) { + FUN_00489578(s_NULL_view_00506694); + } + else { + unaff_EDI = 1 << ((byte)*(undefined4 *)(param_2 + 0x18) & 0x1f); + } + if (param_1 == 0) { + FUN_00489578(s_NULL_zone_0050669f); + } + else { + *(uint *)(param_1 + 0x10) = *(uint *)(param_1 + 0x10) | unaff_EDI; + } + return; +} + + + +/* @0048a980 file=? name=FUN_0048a980 */ + +void __cdecl FUN_0048a980(int param_1,int param_2) + +{ + uint unaff_EDI; + + FUN_0049a300(4,s_dpl_SetZoneViewOff_005066aa); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,2); + } + if (DAT_00505b64 != 0) { + FUN_00489594(param_2,3); + } + if (param_2 == 0) { + FUN_00489578(s_NULL_view_005066be); + } + else { + unaff_EDI = 1 << ((byte)*(undefined4 *)(param_2 + 0x18) & 0x1f); + } + if (param_1 == 0) { + FUN_00489578(s_NULL_zone_005066c9); + } + else { + *(uint *)(param_1 + 0x10) = *(uint *)(param_1 + 0x10) & ~unaff_EDI; + } + return; +} + + + +/* @0048a9fc file=? name=FUN_0048a9fc */ + +bool __cdecl FUN_0048a9fc(int param_1,int param_2) + +{ + uint unaff_EDI; + + FUN_0049a300(4,s_dpl_GetZoneView_005066d4); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,2); + } + if (DAT_00505b64 != 0) { + FUN_00489594(param_2,3); + } + if (param_2 == 0) { + FUN_00489578(s_NULL_view_005066e5); + } + else { + unaff_EDI = 1 << ((byte)*(undefined4 *)(param_2 + 0x18) & 0x1f); + } + if (param_1 == 0) { + FUN_00489578(s_NULL_zone_005066f0); + } + else { + unaff_EDI = unaff_EDI & *(uint *)(param_1 + 0x10); + } + return unaff_EDI != 0; +} + + + +/* @0048aa80 file=? name=FUN_0048aa80 */ + +void __cdecl FUN_0048aa80(int param_1,undefined4 param_2) + +{ + FUN_0049a300(4,s_dpl_SetZoneBitmask_005066fb); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,2); + } + if (param_1 != 0) { + *(undefined4 *)(param_1 + 0x10) = param_2; + return; + } + FUN_00489578(s_NULL_zone_0050670f); + return; +} + + + +/* @0048aac8 file=? name=FUN_0048aac8 */ + +undefined4 __cdecl FUN_0048aac8(int param_1) + +{ + undefined4 uVar1; + + FUN_0049a300(4,s_dpl_GetZoneBitmask_0050671a); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,2); + } + if (param_1 != 0) { + return *(undefined4 *)(param_1 + 0x10); + } + uVar1 = FUN_00489578(s_NULL_zone_0050672e); + return uVar1; +} + + + +/* @0048ab0c file=? name=FUN_0048ab0c */ + +void __cdecl FUN_0048ab0c(int param_1,int param_2) + +{ + FUN_0049a300(4,s_dpl_SetInstanceObject_00506739); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,4); + } + if (DAT_00505b64 != 0) { + FUN_00489594(param_2,7); + } + if (param_1 == 0) { + FUN_00489578(s_NULL_instance_00506750); + } + else { + *(int *)(param_1 + 0x20) = param_2; + } + return; +} + + + +/* @0048ab68 file=? name=FUN_0048ab68 */ + +undefined4 __cdecl FUN_0048ab68(int param_1) + +{ + FUN_0049a300(4,s_dpl_GetInstanceObject_0050675f); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,4); + } + if (param_1 != 0) { + return *(undefined4 *)(param_1 + 0x20); + } + return 0; +} + + + +/* @0048aba4 file=? name=FUN_0048aba4 */ + +void __cdecl FUN_0048aba4(int param_1,undefined4 param_2) + +{ + FUN_0049a300(4,s_dpl_SetInstanceForceLod_00506776); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,4); + } + if (param_1 != 0) { + *(undefined4 *)(param_1 + 0x24) = param_2; + return; + } + FUN_00489578(s_NULL_instance_0050678f); + return; +} + + + +/* @0048abec file=? name=FUN_0048abec */ + +undefined4 __cdecl FUN_0048abec(int param_1) + +{ + undefined4 uVar1; + + FUN_0049a300(4,s_dpl_GetInstanceForceLod_0050679e); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,4); + } + if (param_1 != 0) { + return *(undefined4 *)(param_1 + 0x24); + } + uVar1 = FUN_00489578(s_NULL_instance_005067b7); + return uVar1; +} + + + +/* @0048ac30 file=? name=FUN_0048ac30 */ + +void __cdecl FUN_0048ac30(int param_1,undefined4 param_2) + +{ + FUN_0049a300(4,s_dpl_SetInstanceVisibility_005067c6); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,4); + } + if (param_1 != 0) { + *(undefined4 *)(param_1 + 0x1c) = param_2; + return; + } + FUN_00489578(s_NULL_instance_005067e1); + return; +} + + + +/* @0048ac78 file=? name=FUN_0048ac78 */ + +undefined4 __cdecl FUN_0048ac78(int param_1) + +{ + undefined4 uVar1; + + FUN_0049a300(4,s_dpl_GetInstanceVisibility_005067f0); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,4); + } + if (param_1 != 0) { + return *(undefined4 *)(param_1 + 0x1c); + } + uVar1 = FUN_00489578(s_NULL_instance_0050680b); + return uVar1; +} + + + +/* @0048acbc file=? name=FUN_0048acbc */ + +void __cdecl FUN_0048acbc(int param_1,undefined4 param_2) + +{ + FUN_0049a300(4,s_dpl_SetInstanceWireframe_0050681a); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,4); + } + if (param_1 != 0) { + *(undefined4 *)(param_1 + 0x34) = param_2; + return; + } + FUN_00489578(s_NULL_instance_00506834); + return; +} + + + +/* @0048ad04 file=? name=FUN_0048ad04 */ + +undefined4 __cdecl FUN_0048ad04(int param_1) + +{ + undefined4 uVar1; + + FUN_0049a300(4,s_dpl_GetInstanceWireframe_00506843); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,4); + } + if (param_1 != 0) { + return *(undefined4 *)(param_1 + 0x34); + } + uVar1 = FUN_00489578(s_NULL_instance_0050685d); + return uVar1; +} + + + +/* @0048ad48 file=? name=FUN_0048ad48 */ + +void __cdecl FUN_0048ad48(int param_1,undefined4 param_2) + +{ + FUN_0049a300(4,s_dpl_SetInstanceIntersect_0050686c); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,4); + } + if (param_1 != 0) { + *(undefined4 *)(param_1 + 0x18) = param_2; + return; + } + FUN_00489578(s_NULL_instance_00506886); + return; +} + + + +/* @0048ad90 file=? name=FUN_0048ad90 */ + +undefined4 __cdecl FUN_0048ad90(int param_1) + +{ + undefined4 uVar1; + + FUN_0049a300(4,s_dpl_GetInstanceIntersect_00506895); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,4); + } + if (param_1 != 0) { + return *(undefined4 *)(param_1 + 0x18); + } + uVar1 = FUN_00489578(s_NULL_instance_005068af); + return uVar1; +} + + + +/* @0048add4 file=? name=FUN_0048add4 */ + +void __cdecl FUN_0048add4(int param_1,undefined4 param_2) + +{ + FUN_0049a300(4,s_dpl_SetInstanceSectMask_005068be); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,4); + } + if (param_1 != 0) { + *(undefined4 *)(param_1 + 0x30) = param_2; + } + return; +} + + + +/* @0048ae0c file=? name=FUN_0048ae0c */ + +undefined4 __cdecl FUN_0048ae0c(int param_1) + +{ + FUN_0049a300(4,s_dpl_GetInstanceSectMask_005068d7); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,4); + } + if (param_1 != 0) { + return *(undefined4 *)(param_1 + 0x30); + } + return 0; +} + + + +/* @0048ae48 file=? name=FUN_0048ae48 */ + +void __cdecl FUN_0048ae48(int param_1,undefined4 param_2) + +{ + FUN_0049a300(4,s_dpl_SetInstanceFrontMaterial_005068f0); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,4); + } + if (param_1 != 0) { + *(undefined4 *)(param_1 + 0x28) = param_2; + return; + } + FUN_00489578(s_NULL_instance_0050690e); + return; +} + + + +/* @0048ae90 file=? name=FUN_0048ae90 */ + +void __cdecl FUN_0048ae90(int param_1,undefined4 param_2) + +{ + FUN_0049a300(4,s_dpl_SetInstanceBackMaterial_0050691d); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,4); + } + if (param_1 != 0) { + *(undefined4 *)(param_1 + 0x2c) = param_2; + return; + } + FUN_00489578(s_NULL_instance_0050693a); + return; +} + + + +/* @0048aed8 file=? name=FUN_0048aed8 */ + +undefined4 __cdecl FUN_0048aed8(int param_1) + +{ + undefined4 uVar1; + + FUN_0049a300(4,s_dpl_GetInstanceFrontMaterial_00506949); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,4); + } + if (param_1 != 0) { + return *(undefined4 *)(param_1 + 0x28); + } + uVar1 = FUN_00489578(s_NULL_instance_00506967); + return uVar1; +} + + + +/* @0048af1c file=? name=FUN_0048af1c */ + +undefined4 __cdecl FUN_0048af1c(int param_1) + +{ + undefined4 uVar1; + + FUN_0049a300(4,s_dpl_GetInstanceBackMaterial_00506976); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,4); + } + if (param_1 != 0) { + return *(undefined4 *)(param_1 + 0x2c); + } + uVar1 = FUN_00489578(s_NULL_instance_00506993); + return uVar1; +} + + + +/* @0048af60 file=? name=FUN_0048af60 */ + +void __cdecl FUN_0048af60(int param_1,int param_2,undefined4 param_3) + +{ + FUN_0049a300(4,s_dpl_SetObjectLodRange_005069a2); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,7); + } + if (param_2 < 0x10) { + *(undefined4 *)(param_1 + 0x30 + param_2 * 4) = param_3; + } + return; +} + + + +/* @0048afa0 file=? name=FUN_0048afa0 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 __cdecl FUN_0048afa0(int param_1,int param_2) + +{ + float fVar1; + + FUN_0049a300(4,s_dpl_GetObjectLodRange_005069b9); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,7); + } + fVar1 = _DAT_0048afe4; + if (param_2 < 0x10) { + fVar1 = *(float *)(param_1 + 0x30 + param_2 * 4); + } + return (float10)fVar1; +} + + + +/* @0048afe8 file=? name=FUN_0048afe8 */ + +void __cdecl FUN_0048afe8(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) + +{ + FUN_0049a300(4,s_dpl_SetObjectLodHotSpot_005069d0); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,7); + } + if (param_1 != 0) { + *(undefined4 *)(param_1 + 0x20) = param_2; + *(undefined4 *)(param_1 + 0x24) = param_3; + *(undefined4 *)(param_1 + 0x28) = param_4; + } + return; +} + + + +/* @0048b02c file=? name=FUN_0048b02c */ + +void __cdecl FUN_0048b02c(int param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4) + +{ + FUN_0049a300(4,s_dpl_GetObjectLodHotSpot_005069e9); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,7); + } + if (param_1 != 0) { + *param_2 = *(undefined4 *)(param_1 + 0x20); + *param_3 = *(undefined4 *)(param_1 + 0x24); + *param_4 = *(undefined4 *)(param_1 + 0x28); + } + return; +} + + + +/* @0048b078 file=? name=FUN_0048b078 */ + +void __cdecl FUN_0048b078(int param_1,undefined4 param_2) + +{ + FUN_0049a300(4,s_dpl_SetObjectLodFadeRange_00506a02); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,7); + } + if (param_1 != 0) { + *(undefined4 *)(param_1 + 0x70) = param_2; + } + return; +} + + + +/* @0048b0b0 file=? name=FUN_0048b0b0 */ + +float10 __cdecl FUN_0048b0b0(int param_1) + +{ + int iVar1; + float10 fVar2; + + FUN_0049a300(4,s_dpl_GetObjectLodFadeRange_00506a1d); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,7); + } + if (param_1 == 0) { + iVar1 = FUN_00489578(s_NULL_Object_00506a38); + fVar2 = (float10)iVar1; + } + else { + fVar2 = (float10)*(float *)(param_1 + 0x70); + } + return fVar2; +} + + + +/* @0048b0fc file=? name=FUN_0048b0fc */ + +void __cdecl FUN_0048b0fc(int param_1) + +{ + FUN_0049a300(4,s_dpl_InvalidateLodRanges_00506a45); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,7); + } + if (param_1 != 0) { + *(uint *)(param_1 + 0x74) = *(uint *)(param_1 + 0x74) | 1; + } + return; +} + + + +/* @0048b134 file=? name=FUN_0048b134 */ + +void __cdecl FUN_0048b134(int param_1,int param_2) + +{ + FUN_0049a300(4,s_dpl_SetLightDCS_00506a5e); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,6); + } + if (param_1 == 0) { + FUN_00489578(s_NULL_light_00506a6f); + } + else { + if (*(int *)(param_1 + 0x14) != 0) { + FUN_00489638(*(int *)(param_1 + 0x14),param_1); + } + if (param_2 != 0) { + FUN_00489d90(param_2,param_1); + } + *(int *)(param_1 + 0x14) = param_2; + } + return; +} + + + +/* @0048b19c file=? name=FUN_0048b19c */ + +undefined4 __cdecl FUN_0048b19c(int param_1) + +{ + undefined4 uVar1; + + FUN_0049a300(4,s_dpl_GetLightDCS_00506a7b); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,6); + } + if (param_1 != 0) { + return *(undefined4 *)(param_1 + 0x14); + } + uVar1 = FUN_00489578(s_NULL_light_00506a8c); + return uVar1; +} + + + +/* @0048b1e0 file=? name=FUN_0048b1e0 */ + +void __cdecl FUN_0048b1e0(int param_1,undefined4 param_2) + +{ + FUN_0049a300(4,s_dpl_SetLightType_00506a98); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,6); + } + if (param_1 != 0) { + *(undefined4 *)(param_1 + 0x18) = param_2; + return; + } + FUN_00489578(s_NULL_light_00506aaa); + return; +} + + + +/* @0048b228 file=? name=FUN_0048b228 */ + +undefined4 __cdecl FUN_0048b228(int param_1) + +{ + undefined4 uVar1; + + FUN_0049a300(4,s_dpl_GetLightType_00506ab6); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,6); + } + if (param_1 != 0) { + return *(undefined4 *)(param_1 + 0x18); + } + uVar1 = FUN_00489578(s_NULL_light_00506ac8); + return uVar1; +} + + + +/* @0048b26c file=? name=FUN_0048b26c */ + +void __cdecl FUN_0048b26c(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) + +{ + FUN_0049a300(4,s_dpl_SetLightColor_00506ad4); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,6); + } + if (param_1 != 0) { + *(undefined4 *)(param_1 + 0x1c) = param_2; + *(undefined4 *)(param_1 + 0x20) = param_3; + *(undefined4 *)(param_1 + 0x24) = param_4; + return; + } + FUN_00489578(s_NULL_light_00506ae7); + return; +} + + + +/* @0048b2c0 file=? name=FUN_0048b2c0 */ + +void __cdecl FUN_0048b2c0(int param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4) + +{ + FUN_0049a300(4,s_dpl_GetLightColor_00506af3); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,6); + } + if (param_1 != 0) { + *param_2 = *(undefined4 *)(param_1 + 0x1c); + *param_3 = *(undefined4 *)(param_1 + 0x20); + *param_4 = *(undefined4 *)(param_1 + 0x24); + return; + } + FUN_00489578(s_NULL_light_00506b06); + return; +} + + + +/* @0048b318 file=? name=FUN_0048b318 */ + +void __cdecl FUN_0048b318(int param_1,undefined4 param_2,undefined4 param_3) + +{ + FUN_0049a300(4,s_dpl_SetLightRadii_00506b12); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,6); + } + if (param_1 != 0) { + *(undefined4 *)(param_1 + 0x28) = param_2; + *(undefined4 *)(param_1 + 0x2c) = param_3; + return; + } + FUN_00489578(s_NULL_light_00506b25); + return; +} + + + +/* @0048b364 file=? name=FUN_0048b364 */ + +void __cdecl FUN_0048b364(int param_1,undefined4 *param_2,undefined4 *param_3) + +{ + FUN_0049a300(4,s_dpl_GetLightRadii_00506b31); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,6); + } + if (param_1 != 0) { + *param_2 = *(undefined4 *)(param_1 + 0x28); + *param_3 = *(undefined4 *)(param_1 + 0x2c); + return; + } + FUN_00489578(s_NULL_light_00506b44); + return; +} + + + +/* @0048b3b4 file=? name=FUN_0048b3b4 */ + +void __cdecl FUN_0048b3b4(int param_1,undefined4 param_2,undefined4 param_3) + +{ + FUN_0049a300(4,s_dpl_SetLightUmbra_00506b50); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,6); + } + if (param_1 != 0) { + *(undefined4 *)(param_1 + 0x30) = param_2; + *(undefined4 *)(param_1 + 0x34) = param_3; + return; + } + FUN_00489578(s_NULL_light_00506b63); + return; +} + + + +/* @0048b400 file=? name=FUN_0048b400 */ + +void __cdecl FUN_0048b400(int param_1,undefined4 *param_2,undefined4 *param_3) + +{ + FUN_0049a300(4,s_dpl_GetLightUmbra_00506b6f); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,6); + } + if (param_1 != 0) { + *param_2 = *(undefined4 *)(param_1 + 0x30); + *param_3 = *(undefined4 *)(param_1 + 0x34); + return; + } + FUN_00489578(s_NULL_light_00506b82); + return; +} + + + +/* @0048b450 file=? name=FUN_0048b450 */ + +void __cdecl FUN_0048b450(int param_1,int param_2) + +{ + FUN_0049a300(4,s_dpl_ViewShare_00506b8e); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,3); + } + if (DAT_00505b64 != 0) { + FUN_00489594(param_2,3); + } + if (param_2 == 0) { + FUN_00489578(s_NULL_view_00506b9d); + } + else { + *(int *)(param_2 + 0x68) = param_1; + } + return; +} + + + +/* @0048b4ac file=? name=FUN_0048b4ac */ + +void __cdecl FUN_0048b4ac(int param_1,int param_2) + +{ + FUN_0049a300(4,s_dpl_SetViewDCS_00506ba8); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,3); + } + if (DAT_00505b64 != 0) { + FUN_00489594(param_2,5); + } + if ((param_1 == 0) || (param_2 == 0)) { + FUN_00489578(s_NULL_view_00506bb8); + } + else { + if (*(int *)(param_1 + 0x14) != 0) { + FUN_00489638(*(int *)(param_1 + 0x14),param_1); + } + FUN_00489d90(param_2,param_1); + *(int *)(param_1 + 0x14) = param_2; + } + return; +} + + + +/* @0048b528 file=? name=FUN_0048b528 */ + +undefined4 __cdecl FUN_0048b528(int param_1) + +{ + undefined4 uVar1; + + FUN_0049a300(4,s_dpl_GetViewDCS_00506bc3); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,3); + } + if (param_1 != 0) { + return *(undefined4 *)(param_1 + 0x14); + } + uVar1 = FUN_00489578(s_NULL_view_00506bd3); + return uVar1; +} + + + +/* @0048b56c file=? name=FUN_0048b56c */ + +void __cdecl FUN_0048b56c(int param_1,undefined4 param_2,undefined4 param_3) + +{ + FUN_0049a300(4,s_dpl_SetViewClipplanes_00506bde); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,3); + } + if (param_1 != 0) { + *(undefined4 *)(param_1 + 0x3c) = param_2; + *(undefined4 *)(param_1 + 0x40) = param_3; + return; + } + FUN_00489578(s_NULL_view_00506bf5); + return; +} + + + +/* @0048b5b8 file=? name=FUN_0048b5b8 */ + +void __cdecl FUN_0048b5b8(int param_1,undefined4 *param_2,undefined4 *param_3) + +{ + FUN_0049a300(4,s_dpl_GetViewClipplanes_00506c00); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,3); + } + if (param_1 != 0) { + *param_2 = *(undefined4 *)(param_1 + 0x3c); + *param_3 = *(undefined4 *)(param_1 + 0x40); + return; + } + FUN_00489578(s_NULL_view_00506c17); + return; +} + + + +/* @0048b608 file=? name=FUN_0048b608 */ + +void __cdecl FUN_0048b608(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) + +{ + FUN_0049a300(4,s_dpl_SetViewBackground_00506c22); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,3); + } + if (param_1 != 0) { + *(undefined4 *)(param_1 + 0x44) = param_2; + *(undefined4 *)(param_1 + 0x48) = param_3; + *(undefined4 *)(param_1 + 0x4c) = param_4; + return; + } + FUN_00489578(s_NULL_view_00506c39); + return; +} + + + +/* @0048b65c file=? name=FUN_0048b65c */ + +void __cdecl FUN_0048b65c(int param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4) + +{ + FUN_0049a300(4,s_dpl_GetViewBackground_00506c44); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,3); + } + if (param_1 != 0) { + *param_2 = *(undefined4 *)(param_1 + 0x44); + *param_3 = *(undefined4 *)(param_1 + 0x48); + *param_4 = *(undefined4 *)(param_1 + 0x4c); + return; + } + FUN_00489578(s_NULL_view_00506c5b); + return; +} + + + +/* @0048b6b4 file=? name=FUN_0048b6b4 */ + +void __cdecl +FUN_0048b6b4(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5 + ,undefined4 param_6,undefined4 param_7) + +{ + FUN_0049a300(4,s_dpl_SetViewFog_00506c66); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,3); + } + if (param_1 != 0) { + *(undefined4 *)(param_1 + 0x50) = param_2; + *(undefined4 *)(param_1 + 0x5c) = param_3; + *(undefined4 *)(param_1 + 0x60) = param_4; + *(undefined4 *)(param_1 + 100) = param_5; + *(undefined4 *)(param_1 + 0x54) = param_6; + *(undefined4 *)(param_1 + 0x58) = param_7; + return; + } + FUN_00489578(s_NULL_view_00506c76); + return; +} + + + +/* @0048b718 file=? name=FUN_0048b718 */ + +void __cdecl +FUN_0048b718(int param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4, + undefined4 *param_5,undefined4 *param_6,undefined4 *param_7) + +{ + FUN_0049a300(4,s_dpl_GetViewFog_00506c81); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,3); + } + if (param_1 != 0) { + *param_2 = *(undefined4 *)(param_1 + 0x50); + *param_3 = *(undefined4 *)(param_1 + 0x5c); + *param_4 = *(undefined4 *)(param_1 + 0x60); + *param_5 = *(undefined4 *)(param_1 + 100); + *param_6 = *(undefined4 *)(param_1 + 0x54); + *param_7 = *(undefined4 *)(param_1 + 0x58); + return; + } + FUN_00489578(s_NULL_view_00506c91); + return; +} + + + +/* @0048b788 file=? name=FUN_0048b788 */ + +void __cdecl FUN_0048b788(int param_1,int param_2) + +{ + int iVar1; + + FUN_0049a300(4,s_dpl_SetViewPipe_00506c9c); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,3); + } + if (param_1 == 0) { + FUN_00489578(s_NULL_view_00506cad); + } + else { + *(int *)(param_1 + 0x1c) = param_2; + iVar1 = param_2 * 0x10; + *(float *)(param_1 + 0x34) = + (float)*(int *)(&DAT_00523b40 + iVar1) - (float)*(int *)(&DAT_00523b38 + iVar1); + *(float *)(param_1 + 0x38) = + (float)*(int *)(&DAT_00523b44 + iVar1) - (float)*(int *)(&DAT_00523b3c + iVar1); + } + return; +} + + + +/* @0048b7f8 file=? name=FUN_0048b7f8 */ + +undefined4 __cdecl FUN_0048b7f8(int param_1) + +{ + undefined4 uVar1; + + FUN_0049a300(4,s_dpl_GetViewPipe_00506cb8); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,3); + } + if (param_1 != 0) { + return *(undefined4 *)(param_1 + 0x1c); + } + uVar1 = FUN_00489578(s_NULL_view_00506cc9); + return uVar1; +} + + + +/* @0048b83c file=? name=FUN_0048b83c */ + +void __cdecl +FUN_0048b83c(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5 + ) + +{ + int iVar1; + + FUN_0049a300(4,s_dpl_SetPipeWindow_00506cd4); + if ((param_1 < 9) && (-1 < param_1)) { + iVar1 = param_1 * 0x10; + *(undefined4 *)(&DAT_00523b38 + iVar1) = param_2; + *(undefined4 *)(&DAT_00523b40 + iVar1) = param_4; + *(undefined4 *)(&DAT_00523b3c + iVar1) = param_3; + *(undefined4 *)(&DAT_00523b44 + iVar1) = param_5; + return; + } + FUN_00489578(s_invalid_pipe_identifier_00506ce7); + return; +} + + + +/* @0048b898 file=? name=FUN_0048b898 */ + +void __cdecl +FUN_0048b898(int param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4, + undefined4 *param_5) + +{ + int iVar1; + + FUN_0049a300(4,s_dpl_GetPipeWindow_00506d00); + if ((param_1 < 9) && (-1 < param_1)) { + iVar1 = param_1 * 0x10; + *param_2 = *(undefined4 *)(&DAT_00523b38 + iVar1); + *param_4 = *(undefined4 *)(&DAT_00523b40 + iVar1); + *param_3 = *(undefined4 *)(&DAT_00523b3c + iVar1); + *param_5 = *(undefined4 *)(&DAT_00523b44 + iVar1); + return; + } + FUN_00489578(s_invalid_pipe_identifier_00506d13); + return; +} + + + +/* @0048b8fc file=? name=FUN_0048b8fc */ + +void __cdecl FUN_0048b8fc(int param_1) + +{ + FUN_0049a300(4,s_dpl_SetViewPort_00506d2c); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,3); + } + if (param_1 != 0) { + FUN_0049a300(4,s_dpl_SetViewPort__f__f__f__f_00506d3d); + return; + } + FUN_00489578(s_NULL_view_00506d5a); + return; +} + + + +/* @0048b970 file=? name=FUN_0048b970 */ + +void __cdecl +FUN_0048b970(int param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4, + undefined4 *param_5) + +{ + FUN_0049a300(4,s_dpl_GetViewPort_00506d65); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,3); + } + if (param_1 != 0) { + *param_2 = 0; + *param_3 = 0; + *param_4 = 0x3f800000; + *param_5 = 0x3f800000; + return; + } + FUN_00489578(s_NULL_view_00506d76); + return; +} + + + +/* @0048b9d0 file=? name=FUN_0048b9d0 */ + +void __cdecl +FUN_0048b9d0(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5 + ,undefined4 param_6) + +{ + FUN_0049a300(4,s_dpl_SetViewProjection_00506d81); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,3); + } + if (param_1 != 0) { + *(undefined4 *)(param_1 + 0x20) = param_2; + *(undefined4 *)(param_1 + 0x24) = param_3; + *(undefined4 *)(param_1 + 0x28) = param_4; + *(undefined4 *)(param_1 + 0x2c) = param_5; + *(undefined4 *)(param_1 + 0x30) = param_6; + return; + } + FUN_00489578(s_NULL_view_00506d98); + return; +} + + + +/* @0048ba30 file=? name=FUN_0048ba30 */ + +void __cdecl +FUN_0048ba30(int param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4, + undefined4 *param_5,undefined4 *param_6) + +{ + FUN_0049a300(4,s_dpl_GetViewProjection_00506da3); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,3); + } + if (param_1 != 0) { + *param_2 = *(undefined4 *)(param_1 + 0x20); + *param_3 = *(undefined4 *)(param_1 + 0x24); + *param_4 = *(undefined4 *)(param_1 + 0x28); + *param_5 = *(undefined4 *)(param_1 + 0x2c); + *param_6 = *(undefined4 *)(param_1 + 0x30); + return; + } + FUN_00489578(s_NULL_view_00506dba); + return; +} + + + +/* @0048ba98 file=? name=FUN_0048ba98 */ + +void __cdecl FUN_0048ba98(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) + +{ + FUN_0049a300(4,s_dpl_SetMaterialAmbient_00506dc5); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,0xb); + } + if (param_1 != 0) { + *(undefined4 *)(param_1 + 0x2c) = param_2; + *(undefined4 *)(param_1 + 0x30) = param_3; + *(undefined4 *)(param_1 + 0x34) = param_4; + return; + } + FUN_0049a300(1,s_attempt_to_manipulate_NULL_mater_00506ddd); + return; +} + + + +/* @0048baf4 file=? name=FUN_0048baf4 */ + +void __cdecl FUN_0048baf4(int param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4) + +{ + FUN_0049a300(4,s_dpl_GetMaterialAmbient_00506e02); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,0xb); + } + if (param_1 != 0) { + *param_2 = *(undefined4 *)(param_1 + 0x2c); + *param_3 = *(undefined4 *)(param_1 + 0x30); + *param_4 = *(undefined4 *)(param_1 + 0x34); + return; + } + FUN_0049a300(1,s_attempt_to_manipulate_NULL_mater_00506e1a); + return; +} + + + +/* @0048bb54 file=? name=FUN_0048bb54 */ + +void __cdecl FUN_0048bb54(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) + +{ + FUN_0049a300(4,s_dpl_SetMaterialEmissive_00506e3f); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,0xb); + } + if (param_1 != 0) { + *(undefined4 *)(param_1 + 0x20) = param_2; + *(undefined4 *)(param_1 + 0x24) = param_3; + *(undefined4 *)(param_1 + 0x28) = param_4; + return; + } + FUN_0049a300(1,s_attempt_to_manipulate_NULL_mater_00506e58); + return; +} + + + +/* @0048bbb0 file=? name=FUN_0048bbb0 */ + +void __cdecl FUN_0048bbb0(int param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4) + +{ + FUN_0049a300(4,s_dpl_GetMaterialEmissive_00506e7d); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,0xb); + } + if (param_1 != 0) { + *param_2 = *(undefined4 *)(param_1 + 0x20); + *param_3 = *(undefined4 *)(param_1 + 0x24); + *param_4 = *(undefined4 *)(param_1 + 0x28); + return; + } + FUN_0049a300(1,s_attempt_to_manipulate_NULL_mater_00506e96); + return; +} + + + +/* @0048bc10 file=? name=FUN_0048bc10 */ + +void __cdecl FUN_0048bc10(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) + +{ + FUN_0049a300(4,s_dpl_SetMaterialDiffuse_00506ebb); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,0xb); + } + if (param_1 != 0) { + *(undefined4 *)(param_1 + 0x38) = param_2; + *(undefined4 *)(param_1 + 0x3c) = param_3; + *(undefined4 *)(param_1 + 0x40) = param_4; + return; + } + FUN_0049a300(1,s_attempt_to_manipulate_NULL_mater_00506ed3); + return; +} + + + +/* @0048bc6c file=? name=FUN_0048bc6c */ + +void __cdecl FUN_0048bc6c(int param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4) + +{ + FUN_0049a300(4,s_dpl_GetMaterialDiffuse_00506ef8); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,0xb); + } + if (param_1 != 0) { + *param_2 = *(undefined4 *)(param_1 + 0x38); + *param_3 = *(undefined4 *)(param_1 + 0x3c); + *param_4 = *(undefined4 *)(param_1 + 0x40); + return; + } + FUN_0049a300(1,s_attempt_to_manipulate_NULL_mater_00506f10); + return; +} + + + +/* @0048bccc file=? name=FUN_0048bccc */ + +void __cdecl +FUN_0048bccc(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5 + ) + +{ + FUN_0049a300(4,s_dpl_SetMaterialSpecular_00506f35); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,0xb); + } + if (param_1 != 0) { + *(undefined4 *)(param_1 + 0x50) = param_2; + *(undefined4 *)(param_1 + 0x54) = param_3; + *(undefined4 *)(param_1 + 0x58) = param_4; + *(undefined4 *)(param_1 + 0x5c) = param_5; + return; + } + FUN_0049a300(1,s_attempt_to_manipulate_NULL_mater_00506f4e); + return; +} + + + +/* @0048bd2c file=? name=FUN_0048bd2c */ + +void __cdecl +FUN_0048bd2c(int param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4, + undefined4 *param_5) + +{ + FUN_0049a300(4,s_dpl_GetMaterialSpecular_00506f73); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,0xb); + } + if (param_1 != 0) { + *param_2 = *(undefined4 *)(param_1 + 0x50); + *param_3 = *(undefined4 *)(param_1 + 0x54); + *param_4 = *(undefined4 *)(param_1 + 0x58); + *param_5 = *(undefined4 *)(param_1 + 0x5c); + return; + } + FUN_0049a300(1,s_attempt_to_manipulate_NULL_mater_00506f8c); + return; +} + + + +/* @0048bd94 file=? name=FUN_0048bd94 */ + +void __cdecl FUN_0048bd94(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) + +{ + FUN_0049a300(4,s_dpl_SetMaterialOpacity_00506fb1); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,0xb); + } + if (param_1 != 0) { + *(undefined4 *)(param_1 + 0x44) = param_2; + *(undefined4 *)(param_1 + 0x48) = param_3; + *(undefined4 *)(param_1 + 0x4c) = param_4; + return; + } + FUN_0049a300(1,s_attempt_to_manipulate_NULL_mater_00506fc9); + return; +} + + + +/* @0048bdf0 file=? name=FUN_0048bdf0 */ + +void __cdecl FUN_0048bdf0(int param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4) + +{ + FUN_0049a300(4,s_dpl_GetMaterialOpacity_00506fee); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,0xb); + } + if (param_1 != 0) { + *param_2 = *(undefined4 *)(param_1 + 0x44); + *param_3 = *(undefined4 *)(param_1 + 0x48); + *param_4 = *(undefined4 *)(param_1 + 0x4c); + return; + } + FUN_0049a300(1,s_attempt_to_manipulate_NULL_mater_00507006); + return; +} + + + +/* @0048be50 file=? name=FUN_0048be50 */ + +void __cdecl FUN_0048be50(int param_1,int param_2) + +{ + FUN_0049a300(4,s_dpl_SetMaterialTexture_0050702b); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,0xb); + } + if (DAT_00505b64 != 0) { + FUN_00489594(param_2,0xc); + } + if (param_1 == 0) { + FUN_0049a300(1,s_attempt_to_manipulate_NULL_mater_00507043); + } + else { + *(int *)(param_1 + 0x10) = param_2; + } + return; +} + + + +/* @0048beb4 file=? name=FUN_0048beb4 */ + +undefined4 __cdecl FUN_0048beb4(int param_1) + +{ + FUN_0049a300(4,s_dpl_GetMaterialTexture_00507068); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,0xb); + } + if (param_1 != 0) { + return *(undefined4 *)(param_1 + 0x10); + } + FUN_0049a300(1,s_attempt_to_manipulate_NULL_mater_00507080); + return 0; +} + + + +/* @0048bf00 file=? name=FUN_0048bf00 */ + +void __cdecl FUN_0048bf00(int param_1,int param_2) + +{ + FUN_0049a300(4,s_dpl_SetMaterialEnvironment_005070a5); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,0xb); + } + if (DAT_00505b64 != 0) { + FUN_00489594(param_2,0xc); + } + if (param_1 == 0) { + FUN_0049a300(1,s_attempt_to_manipulate_NULL_mater_005070c1); + } + else { + *(int *)(param_1 + 0x14) = param_2; + } + return; +} + + + +/* @0048bf64 file=? name=FUN_0048bf64 */ + +undefined4 __cdecl FUN_0048bf64(int param_1) + +{ + FUN_0049a300(4,s_dpl_GetMaterialEnvironment_005070e6); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,0xb); + } + if (param_1 != 0) { + return *(undefined4 *)(param_1 + 0x14); + } + FUN_0049a300(1,s_attempt_to_manipulate_NULL_mater_00507102); + return 0; +} + + + +/* @0048bfb0 file=? name=FUN_0048bfb0 */ + +void __cdecl FUN_0048bfb0(int param_1,int param_2) + +{ + FUN_0049a300(4,s_dpl_SetMaterialRamp_00507127); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,0xb); + } + if (DAT_00505b64 != 0) { + FUN_00489594(param_2,0xe); + } + if (param_1 == 0) { + FUN_0049a300(1,s_attempt_to_manipulate_NULL_mater_0050713c); + } + else { + *(int *)(param_1 + 0x1c) = param_2; + } + return; +} + + + +/* @0048c014 file=? name=FUN_0048c014 */ + +undefined4 __cdecl FUN_0048c014(int param_1) + +{ + FUN_0049a300(4,s_dpl_GetMaterialRamp_00507161); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,0xb); + } + if (param_1 != 0) { + return *(undefined4 *)(param_1 + 0x1c); + } + FUN_0049a300(1,s_attempt_to_manipulate_NULL_mater_00507176); + return 0; +} + + + +/* @0048c060 file=? name=FUN_0048c060 */ + +void __cdecl +FUN_0048c060(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5 + ,undefined4 param_6,undefined4 param_7) + +{ + FUN_0049a300(4,s_dpl_SetRampComponents_0050719b); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,0xe); + } + if (param_1 != 0) { + *(undefined4 *)(param_1 + 0x10) = param_2; + *(undefined4 *)(param_1 + 0x14) = param_3; + *(undefined4 *)(param_1 + 0x18) = param_4; + *(undefined4 *)(param_1 + 0x1c) = param_5; + *(undefined4 *)(param_1 + 0x20) = param_6; + *(undefined4 *)(param_1 + 0x24) = param_7; + return; + } + FUN_0049a300(1,s_attempt_to_manipulate_NULL_ramp_005071b2); + return; +} + + + +/* @0048c0cc file=? name=FUN_0048c0cc */ + +void __cdecl +FUN_0048c0cc(int param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4, + undefined4 *param_5,undefined4 *param_6,undefined4 *param_7) + +{ + FUN_0049a300(4,s_dpl_GetRampComponents_005071d3); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,0xe); + } + if (param_1 != 0) { + *param_2 = *(undefined4 *)(param_1 + 0x10); + *param_3 = *(undefined4 *)(param_1 + 0x14); + *param_4 = *(undefined4 *)(param_1 + 0x18); + *param_5 = *(undefined4 *)(param_1 + 0x1c); + *param_6 = *(undefined4 *)(param_1 + 0x20); + *param_7 = *(undefined4 *)(param_1 + 0x24); + return; + } + FUN_0049a300(1,s_attempt_to_manipulate_NULL_ramp_005071ea); + return; +} + + + +/* @0048c144 file=? name=FUN_0048c144 */ + +void __cdecl FUN_0048c144(int param_1,undefined4 param_2,undefined4 param_3) + +{ + FUN_0049a300(4,s_dpl_SetTextureProperty_0x_x_0050720b); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,0xc); + } + switch(param_2) { + default: + FUN_0049a300(1,s_Illegal_property_0x_x_in_dpl_Set_00507228); + break; + case 1: + case 2: + case 3: + case 4: + case 7: + case 8: + break; + case 5: + *(undefined4 *)(param_1 + 0x14) = param_3; + break; + case 6: + *(undefined4 *)(param_1 + 0x18) = param_3; + break; + case 10: + *(undefined4 *)(param_1 + 0x40) = param_3; + } + if (*(int *)(param_1 + 0x18) == 10) { + DAT_005081d8 = 1; + } + return; +} + + + +/* @0048c1f0 file=? name=FUN_0048c1f0 */ + +undefined4 __cdecl FUN_0048c1f0(int param_1,undefined4 param_2) + +{ + FUN_0049a300(4,s_dpl_GetTextureProperty_0x_x_00507259); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,0xc); + } + switch(param_2) { + default: + FUN_0049a300(1,s_Illegal_property_0x_x_in_dpl_Get_00507276); + return 0; + case 1: + return 0; + case 2: + return 0; + case 3: + return 0; + case 4: + return 0; + case 5: + return 0; + case 6: + return 0; + case 7: + return 0; + case 8: + return 0; + case 10: + return 0; + } +} + + + +/* @0048c2a0 file=? name=FUN_0048c2a0 */ + +void __cdecl FUN_0048c2a0(int param_1,int param_2) + +{ + FUN_0049a300(4,s_dpl_SetTextureTexmap_005072a7); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,0xc); + } + if (DAT_00505b64 != 0) { + FUN_00489594(param_2,0xd); + } + if (param_1 != 0) { + *(int *)(param_1 + 0x10) = param_2; + } + return; +} + + + +/* @0048c2f0 file=? name=FUN_0048c2f0 */ + +undefined4 __cdecl FUN_0048c2f0(int param_1) + +{ + FUN_0049a300(4,s_dpl_GetTextureTexmap_005072bd); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,0xc); + } + if (param_1 != 0) { + return *(undefined4 *)(param_1 + 0x10); + } + return 0; +} + + + +/* @0048c32c file=? name=FUN_0048c32c */ + +void __cdecl FUN_0048c32c(int param_1,undefined4 param_2,undefined4 param_3) + +{ + FUN_0049a300(4,s_dpl_SetTexmapEdgeSize_005072d3); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,0xd); + } + if (param_1 != 0) { + *(undefined4 *)(param_1 + 0x14) = param_2; + *(undefined4 *)(param_1 + 0x18) = param_3; + return; + } + FUN_00489578(s_NULL_texmap_in_settexmapsedgsize_005072ea); + return; +} + + + +/* @0048c378 file=? name=FUN_0048c378 */ + +void __cdecl FUN_0048c378(int param_1,undefined4 *param_2,undefined4 *param_3) + +{ + FUN_0049a300(4,s_dpl_GetTexmapEdgeSize_0050730b); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,0xd); + } + if (param_1 != 0) { + *param_2 = *(undefined4 *)(param_1 + 0x14); + *param_3 = *(undefined4 *)(param_1 + 0x18); + return; + } + FUN_00489578(s_NULL_texmap_in_gettexmapedgesize_00507322); + return; +} + + + +/* @0048c3c8 file=? name=FUN_0048c3c8 */ + +void __cdecl FUN_0048c3c8(int param_1,int param_2) + +{ + FUN_0049a300(4,s_dpl_SetTexmapTexelSize_00507343); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,0xd); + } + if (param_1 == 0) { + FUN_00489578(s_NULL_texmap_in_settexmaptexelsiz_0050735b); + } + else { + *(int *)(param_1 + 0x1c) = param_2; + if (param_2 == 1) { + DAT_005081d8 = 1; + } + } + return; +} + + + +/* @0048c41c file=? name=FUN_0048c41c */ + +undefined4 __cdecl FUN_0048c41c(int param_1) + +{ + undefined4 uVar1; + + FUN_0049a300(4,s_dpl_GetTexmapTexelSize_0050737d); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,0xd); + } + if (param_1 != 0) { + return *(undefined4 *)(param_1 + 0x1c); + } + uVar1 = FUN_00489578(s_NULL_texmap_in_gettexmaptexelsiz_00507395); + return uVar1; +} + + + +/* @0048c460 file=? name=FUN_0048c460 */ + +void __cdecl FUN_0048c460(int param_1,byte *param_2,int param_3,int param_4) + +{ + FUN_0049a300(4,s_dpl_TexmapTexels2D_bpt__d_005073b7); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,0xd); + } + FUN_0048da1c(param_1,param_2,param_3,param_4,DAT_005081d8,1); + return; +} + + + +/* @0048c4b0 file=? name=FUN_0048c4b0 */ + +void __cdecl FUN_0048c4b0(int param_1) + +{ + FUN_0049a300(4,s_dpl_InvalidateTexels_005073d2); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,0xd); + } + FUN_004d771c(s_INVALIDATE_texels_tm_0x_x_005073e8); + return; +} + + + +/* @0048c4e8 file=? name=FUN_0048c4e8 */ + +undefined4 __cdecl FUN_0048c4e8(int param_1,int param_2) + +{ + if ((param_1 == 0x40) && (param_2 == 0x40)) { + return 1; + } + if ((param_1 == 0x80) && (param_2 == 0x40)) { + return 1; + } + if ((param_1 == 0x80) && (param_2 == 0x80)) { + return 1; + } + if ((param_1 == 0x100) && (param_2 == 0x100)) { + return 1; + } + return 0; +} + + + +/* @0048c548 file=? name=FUN_0048c548 */ + +void __cdecl FUN_0048c548(int param_1,byte *param_2,int param_3,int param_4) + +{ + int iVar1; + + FUN_0049a300(4,s_dpl_UpdateTexmapTexels2D_00507403); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,0xd); + } + if (DAT_005081dc == (byte *)0x0) { + DAT_005081dc = (byte *)FUN_00452c38(0x40000); + } + if (param_4 + param_3 <= *(int *)(param_1 + 0x14) * *(int *)(param_1 + 0x18)) { + FUN_0048ee5c(param_1,(uint *)(DAT_005081dc + param_3 * 4),param_2,param_4,(uint)(param_3 == 0), + DAT_005081d8); + iVar1 = FUN_0048c4e8(*(int *)(param_1 + 0x14),*(int *)(param_1 + 0x18)); + if (iVar1 == 0) { + FUN_0049a300(4,s_Invalid_texture_size_for_VPX___d_0050741d); + } + else { + FUN_0048da1c(param_1,DAT_005081dc,*(int *)(param_1 + 0x14),*(int *)(param_1 + 0x18), + DAT_005081d8,0); + } + } + return; +} + + + +/* @0048c61c file=? name=FUN_0048c61c */ + +void __cdecl FUN_0048c61c(int param_1) + +{ + FUN_0049a300(4,s_dpl_GetTexmapTexels2D_texels_0x__00507445); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,0xd); + } + return; +} + + + +/* @0048c654 file=? name=FUN_0048c654 */ + +void __cdecl FUN_0048c654(int param_1,undefined4 param_2) + +{ + FUN_0049a300(4,s_dpl_SetGeogroupFrontMaterial_00507472); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,9); + } + *(undefined4 *)(param_1 + 0x48) = param_2; + return; +} + + + +/* @0048c688 file=? name=FUN_0048c688 */ + +void __cdecl FUN_0048c688(int param_1,undefined4 param_2) + +{ + FUN_0049a300(4,s_dpl_SetGeogroupBackMaterial_00507490); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,9); + } + *(undefined4 *)(param_1 + 0x4c) = param_2; + return; +} + + + +/* @0048c6bc file=? name=FUN_0048c6bc */ + +undefined4 __cdecl FUN_0048c6bc(int param_1) + +{ + FUN_0049a300(4,s_dpl_GetGeogroupFrontMaterial_005074ad); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,9); + } + return *(undefined4 *)(param_1 + 0x48); +} + + + +/* @0048c6ec file=? name=FUN_0048c6ec */ + +undefined4 __cdecl FUN_0048c6ec(int param_1) + +{ + FUN_0049a300(4,s_dpl_GetGeogroupBackMaterial_005074cb); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,9); + } + return *(undefined4 *)(param_1 + 0x4c); +} + + + +/* @0048c71c file=? name=FUN_0048c71c */ + +void __cdecl FUN_0048c71c(int param_1) + +{ + FUN_0049a300(4,s_dpl_SetGeogroupMaterialLockOn_005074e8); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,9); + } + *(undefined4 *)(param_1 + 0x54) = 1; + return; +} + + + +/* @0048c750 file=? name=FUN_0048c750 */ + +void __cdecl FUN_0048c750(int param_1) + +{ + FUN_0049a300(4,s_dpl_SetGeogroupMaterialLockOff_00507507); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,9); + } + *(undefined4 *)(param_1 + 0x54) = 0; + return; +} + + + +/* @0048c784 file=? name=FUN_0048c784 */ + +undefined4 __cdecl FUN_0048c784(int param_1) + +{ + FUN_0049a300(4,s_dpl_GetGeogroupMaterialLock_00507527); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,9); + } + return *(undefined4 *)(param_1 + 0x54); +} + + + +/* @0048c7b4 file=? name=FUN_0048c7b4 */ + +void __cdecl FUN_0048c7b4(int param_1,int param_2) + +{ + FUN_0049a300(4,s_dpl_SetGeogroupDecalDisplace_00507544); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,9); + } + *(float *)(param_1 + 0x50) = (float)param_2; + return; +} + + + +/* @0048c7e8 file=? name=FUN_0048c7e8 */ + +void __cdecl FUN_0048c7e8(int param_1) + +{ + FUN_0049a300(4,s_dpl_GetGeogroupDecalDisplace_00507562); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,9); + } + FUN_004dcd94(); + return; +} + + + +/* @0048c820 file=? name=FUN_0048c820 */ + +void __cdecl FUN_0048c820(int param_1,int param_2) + +{ + uint uVar1; + + uVar1 = *(uint *)(param_1 + 0x34) & 0xffffefff; + FUN_0049a300(4,s_dpl_SetGeogroupWireFrame_00507580); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,9); + } + if (param_2 == 0) { + *(uint *)(param_1 + 0x34) = uVar1; + } + else { + *(uint *)(param_1 + 0x34) = uVar1 | 0x1000; + } + return; +} + + + +/* @0048c86c file=? name=FUN_0048c86c */ + +undefined4 __cdecl FUN_0048c86c(int param_1) + +{ + FUN_0049a300(4,s_dpl_GetGeogroupWireFrame_0050759a); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,9); + } + if ((*(byte *)(param_1 + 0x35) & 0x10) != 0) { + return 1; + } + return 0; +} + + + +/* @0048c8ac file=? name=FUN_0048c8ac */ + +void __cdecl FUN_0048c8ac(int param_1,undefined4 param_2) + +{ + FUN_0049a300(4,s_dpl_SetGeometryGeoType_005075b4); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,10); + } + *(undefined4 *)(param_1 + 0x10) = param_2; + return; +} + + + +/* @0048c8e0 file=? name=FUN_0048c8e0 */ + +undefined4 __cdecl FUN_0048c8e0(int param_1) + +{ + FUN_0049a300(4,s_dpl_GetGeometryGeoType_005075cc); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,10); + } + return *(undefined4 *)(param_1 + 0x10); +} + + + +/* @0048c910 file=? name=FUN_0048c910 */ + +void __cdecl FUN_0048c910(int param_1,undefined4 param_2) + +{ + FUN_0049a300(4,s_dpl_SetGeometryVertexType_005075e4); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,10); + } + *(undefined4 *)(param_1 + 0x14) = param_2; + return; +} + + + +/* @0048c944 file=? name=FUN_0048c944 */ + +undefined4 __cdecl FUN_0048c944(int param_1) + +{ + FUN_0049a300(4,s_dpl_GetGeometryVertexType_005075ff); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,10); + } + return *(undefined4 *)(param_1 + 0x14); +} + + + +/* @0048c974 file=? name=FUN_0048c974 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl +FUN_0048c974(undefined4 *param_1,float *param_2,undefined4 *param_3,undefined4 *param_4) + +{ + *param_1 = *param_4; + param_1[1] = param_4[1]; + param_1[2] = param_4[2]; + *param_2 = _DAT_0048c9c4 * (float)param_4[3]; + param_2[1] = 0.0; + param_2[2] = 0.0; + *param_3 = 0; + param_3[1] = _DAT_0048c9c4 * (float)param_4[4]; + param_3[2] = 0; + return; +} + + + +/* @0048c9c8 file=? name=FUN_0048c9c8 */ + +void __cdecl FUN_0048c9c8(int param_1,char *param_2) + +{ + undefined4 *puVar1; + undefined4 local_28; + undefined4 local_24; + undefined4 local_20; + float local_1c [6]; + + FUN_0049a300(4,s_dpl_SetGeometryText_0050761a); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,10); + } + *(undefined4 *)(param_1 + 0x10) = 6; + if (*(int *)(param_1 + 0x24) == 0) { + puVar1 = (undefined4 *)FUN_00452c38(0x24); + *puVar1 = 0; + puVar1[1] = 0; + puVar1[2] = 0; + puVar1[3] = 0x3f800000; + puVar1[4] = 0x3f800000; + puVar1[5] = 0x3f800000; + puVar1[6] = 0; + puVar1[7] = 0; + puVar1[8] = 0; + *(undefined4 **)(param_1 + 0x24) = puVar1; + } + *(char **)(param_1 + 0x20) = param_2; + if (param_2 != (char *)0x0) { + local_1c[3] = 0.0; + local_1c[4] = 0.0; + local_1c[5] = 0.0; + local_1c[0] = 1.0; + local_1c[1] = 0.0; + local_1c[2] = 0.0; + local_28 = 0; + local_24 = 0xbf800000; + local_20 = 0; + FUN_0048c974(local_1c + 3,local_1c,&local_28,*(undefined4 **)(param_1 + 0x24)); + FUN_0048daa0(param_1,param_2,local_1c + 3,local_1c,&local_28); + } + return; +} + + + +/* @0048cab0 file=? name=FUN_0048cab0 */ + +undefined4 __cdecl FUN_0048cab0(int param_1) + +{ + FUN_0049a300(4,s_dpl_GetGeometryText_0050762f); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,10); + } + return *(undefined4 *)(param_1 + 0x20); +} + + + +/* @0048cae0 file=? name=FUN_0048cae0 */ + +void __cdecl FUN_0048cae0(int param_1,undefined4 param_2) + +{ + FUN_0049a300(4,s_dpl_SetGeometryNumVertices_00507644); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,10); + } + *(undefined4 *)(param_1 + 0x18) = param_2; + return; +} + + + +/* @0048cb14 file=? name=FUN_0048cb14 */ + +undefined4 __cdecl FUN_0048cb14(int param_1) + +{ + FUN_0049a300(4,s_dpl_GetGeometryNumVertices_00507660); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,10); + } + return *(undefined4 *)(param_1 + 0x18); +} + + + +/* @0048cb44 file=? name=FUN_0048cb44 */ + +void __cdecl FUN_0048cb44(int param_1) + +{ + FUN_0049a300(4,s_dpl_SetGeometryDice__d__d_0050767c); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,10); + } + return; +} + + + +/* @0048cb7c file=? name=FUN_0048cb7c */ + +void __cdecl FUN_0048cb7c(int param_1,undefined2 *param_2,undefined2 *param_3) + +{ + FUN_0049a300(4,s_dpl_GetGeometryDice_00507697); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,10); + } + *param_2 = 8; + *param_3 = 8; + return; +} + + + +/* @0048cbb8 file=? name=FUN_0048cbb8 */ + +void __cdecl FUN_0048cbb8(int param_1,undefined4 param_2) + +{ + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,10); + } + *(undefined4 *)(param_1 + 0x28) = param_2; + return; +} + + + +/* @0048cbdc file=? name=FUN_0048cbdc */ + +void __cdecl FUN_0048cbdc(int param_1,undefined4 param_2) + +{ + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,10); + } + *(undefined4 *)(param_1 + 0x2c) = param_2; + return; +} + + + +/* @0048cc00 file=? name=FUN_0048cc00 */ + +float10 __cdecl FUN_0048cc00(int param_1) + +{ + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,10); + } + return (float10)*(float *)(param_1 + 0x28); +} + + + +/* @0048cc24 file=? name=FUN_0048cc24 */ + +float10 __cdecl FUN_0048cc24(int param_1) + +{ + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,10); + } + return (float10)*(float *)(param_1 + 0x2c); +} + + + +/* @0048cc48 file=? name=FUN_0048cc48 */ + +void __cdecl FUN_0048cc48(int param_1,byte *param_2,undefined4 param_3,int param_4) + +{ + uint uVar1; + undefined4 uVar2; + int iVar3; + + iVar3 = 0; + FUN_0049a300(4,s_dpl_UpdateGeometryVertices_005076ac); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,10); + } + if (*(int *)(param_1 + 0x10) == 6) { + if (*(int *)(param_1 + 0x24) == 0) { + uVar2 = FUN_00452c38(0x24); + *(undefined4 *)(param_1 + 0x24) = uVar2; + } + FUN_004d4918(*(undefined4 **)(param_1 + 0x24),(undefined4 *)param_2,0x24); + } + else { + uVar1 = *(uint *)(param_1 + 0x14); + if ((uVar1 & 1) != 0) { + iVar3 = 3; + } + if ((uVar1 & 2) != 0) { + iVar3 = iVar3 + 3; + } + if ((uVar1 & 4) != 0) { + iVar3 = iVar3 + 4; + } + if ((uVar1 & 8) != 0) { + iVar3 = iVar3 + 2; + } + if ((uVar1 & 0x10) != 0) { + iVar3 = iVar3 + 2; + } + if ((uVar1 & 0x20) != 0) { + iVar3 = iVar3 + 3; + } + if ((uVar1 & 0x40) != 0) { + iVar3 = iVar3 + 1; + } + FUN_0048dba8(param_1,param_2,param_3,param_4,iVar3); + } + return; +} + + + +/* @0048ccec file=? name=FUN_0048ccec */ + +void __cdecl FUN_0048ccec(int param_1,int param_2,undefined4 param_3,int param_4) + +{ + uint uVar1; + int iVar2; + + iVar2 = 0; + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,10); + } + FUN_0049a300(4,s_dpl_GetGeometryVertices_005076c8); + uVar1 = *(uint *)(param_1 + 0x14); + if ((uVar1 & 1) != 0) { + iVar2 = 3; + } + if ((uVar1 & 2) != 0) { + iVar2 = iVar2 + 3; + } + if ((uVar1 & 4) != 0) { + iVar2 = iVar2 + 4; + } + if ((uVar1 & 8) != 0) { + iVar2 = iVar2 + 2; + } + if ((uVar1 & 0x10) != 0) { + iVar2 = iVar2 + 2; + } + if ((uVar1 & 0x20) != 0) { + iVar2 = iVar2 + 3; + } + if ((uVar1 & 0x40) != 0) { + iVar2 = iVar2 + 1; + } + FUN_0048dcb0(param_1,param_2,param_3,param_4,iVar2); + return; +} + + + +/* @0048cd68 file=? name=FUN_0048cd68 */ + +void __cdecl FUN_0048cd68(int param_1,byte *param_2,int param_3,int param_4) + +{ + FUN_0049a300(4,s_dpl_AddGeometryConnections_005076e1); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,10); + } + FUN_0048de14(param_1,param_2,param_3,param_4,0); + return; +} + + + +/* @0048cdac file=? name=FUN_0048cdac */ + +void __cdecl FUN_0048cdac(int param_1,byte *param_2,int param_3,int param_4) + +{ + FUN_0049a300(4,s_dpl_AddGeometryStrip_005076fd); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,10); + } + FUN_0048de14(param_1,param_2,param_3,param_4,1); + return; +} + + + +/* @0048cdf0 file=? name=FUN_0048cdf0 */ + +void __cdecl FUN_0048cdf0(int param_1) + +{ + FUN_0049a300(4,s_dpl_OptimizeGeometry_00507713); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,10); + } + return; +} + + + +/* @0048ce1c file=? name=FUN_0048ce1c */ + +void FUN_0048ce1c(void) + +{ + FUN_0049a300(4,s_dpl_SetWindowName_pipe__d_name___00507729); + return; +} + + + +/* @0048ce38 file=? name=FUN_0048ce38 */ + +char * FUN_0048ce38(void) + +{ + FUN_0049a300(4,s_dpl_GetWindowName_pipe__d_0050774c); + return s_no_windows_on_VPX_00507767; +} + + + +/* @0048ce58 file=? name=FUN_0048ce58 */ + +void FUN_0048ce58(void) + +{ + FUN_0049a300(4,s_dpl_SetDesktopStereo_pipe__d_mod_00507779); + return; +} + + + +/* @0048ce74 file=? name=FUN_0048ce74 */ + +undefined4 FUN_0048ce74(void) + +{ + FUN_0049a300(4,s_dpl_GetDesktopStereo_pipe__d_0050779f); + return 0; +} + + + +/* @0048ce90 file=? name=FUN_0048ce90 */ + +void __cdecl FUN_0048ce90(undefined4 param_1) + +{ + FUN_0049a300(4,s_dpl_SetWarningLevel_005077bd); + DAT_00505b54 = param_1; + return; +} + + + +/* @0048ceb4 file=? name=FUN_0048ceb4 */ + +char * FUN_0048ceb4(void) + +{ + FUN_0049a300(4,s_dpl_Version_005077d2); + return s_dpl_v_0_3a_005077df; +} + + + +/* @0048ced0 file=? name=FUN_0048ced0 */ + +undefined * FUN_0048ced0(void) + +{ + FUN_0049a300(4,s_dpl_Statistics_005077ea); + FUN_0048e380(&DAT_00523b34); + return &DAT_00523b34; +} + + + +/* @0048cef4 file=? name=FUN_0048cef4 */ + +undefined * FUN_0048cef4(void) + +{ + FUN_0049a300(4,s_dpl_Status_005077fa); + return &DAT_00523d88; +} + + + +/* @0048cf10 file=? name=FUN_0048cf10 */ + +undefined * FUN_0048cf10(void) + +{ + FUN_0049a300(4,s_dpl_GetFrameStore_view_0x_x_xptr_00507806); + return &DAT_00523d8c; +} + + + +/* @0048cf38 file=? name=FUN_0048cf38 */ + +void __cdecl +FUN_0048cf38(undefined4 param_1,undefined4 *param_2,int param_3,int param_4,int param_5,int param_6) + +{ + int iVar1; + + FUN_0049a300(4,s_dpl_ReadFrameStore_view_0x_x_00507837); + iVar1 = 0; + if (0 < param_6) { + do { + FUN_0048e388(param_2,param_3,param_4 + iVar1,param_5); + iVar1 = iVar1 + 1; + } while (iVar1 < param_6); + } + return; +} + + + +/* @0048cf80 file=? name=FUN_0048cf80 */ + +void __cdecl +FUN_0048cf80(uint param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,uint param_5, + uint param_6,uint param_7,undefined4 *param_8,undefined4 *param_9,undefined4 *param_10, + undefined4 *param_11,undefined4 *param_12,undefined4 *param_13) + +{ + FUN_0049a300(4,s_dpl_SectVector_00507856); + FUN_0048e700(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9,param_10, + param_11,param_12,param_13); + return; +} + + + +/* @0048cfcc file=? name=FUN_0048cfcc */ + +void __cdecl +FUN_0048cfcc(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4, + undefined4 *param_5,undefined4 *param_6,undefined4 *param_7,undefined4 *param_8, + undefined4 *param_9,undefined4 *param_10) + +{ + FUN_0049a300(4,s_dpl_SectPixel_00507866); + if (DAT_00505b64 != 0) { + FUN_00489594(param_1,3); + } + FUN_0048e7f4(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9,param_10); + return; +} + + + +/* @0048d024 file=? name=FUN_0048d024 */ + +void FUN_0048d024(void) + +{ + DAT_0050792c = FUN_004dcd94(); + return; +} + + + +/* @0048d050 file=? name=FUN_0048d050 */ + +undefined4 FUN_0048d050(void) + +{ + return DAT_00505b78; +} + + + +/* @0048d060 file=? name=FUN_0048d060 */ + +undefined4 __cdecl FUN_0048d060(int param_1,int param_2,undefined4 *param_3) + +{ + undefined4 local_44 [16]; + + FUN_0049a300(4,s_dpl_Effect_00507875); + if (DAT_00505b64 != 0) { + FUN_00489594(param_2,5); + } + if (param_1 == 0) { + FUN_00491830(local_44); + FUN_00491890(local_44,*param_3,param_3[1],param_3[2]); + FUN_0048e168(param_3[3],param_2,local_44); + } + else if (param_1 == 1) { + FUN_0048e1e8(param_3,param_2); + } + else if (param_1 == 2) { + FUN_0048e25c(*param_3); + } + else { + FUN_004d771c(s_Cannot_do_an_effect_of_this_type_00507881); + } + return 0; +} + + + +/* @0048d108 file=? name=FUN_0048d108 */ + +undefined4 __cdecl FUN_0048d108(int param_1,undefined4 *param_2) + +{ + undefined4 *puVar1; + int iVar2; + + FUN_0049a300(4,s_dpl_Init_005078a6); + if (DAT_00505b58 != 0) { + return 0; + } + DAT_00505b58 = 1; + FUN_0048df70(param_1,param_2); + FUN_00487cd4(); + FUN_00489130(0x523bb8); + FUN_00498d38(&DAT_005078b0,FUN_0048f0bc); + iVar2 = 0; + puVar1 = &DAT_00523d08; + do { + *puVar1 = 0; + puVar1[1] = 0; + iVar2 = iVar2 + 1; + puVar1 = puVar1 + 2; + } while (iVar2 < 0x10); + return 1; +} + + + +/* @0048d184 file=? name=FUN_0048d184 */ + +void FUN_0048d184(void) + +{ + FUN_00491cfc(); + FUN_00491454(); + FUN_00492a90(); + FUN_0048ed20(); + FUN_00487f18(); + FUN_0048fdd8(); + FUN_00490660(); + FUN_00492adc(); + FUN_00452ca0(); + DAT_00505b58 = 0; + PTR_s_nothing_00505b5c = s_nothing_005078b5; + DAT_00505b54 = 0; + DAT_00505b64 = 0; + DAT_00505b68 = 0; + DAT_00505b60 = 0; + DAT_00505b78 = 0; + return; +} + + + +/* @0048d1ec file=? name=FUN_0048d1ec */ + +void FUN_0048d1ec(void) + +{ + FUN_0049a300(4,s_dpl_Exit_code__d_005078bd); + return; +} + + + +/* @0048d20c file=? name=FUN_0048d20c */ + +void FUN_0048d20c(void) + +{ + FUN_0049a300(4,s_dpl_Config_005078cf); + return; +} + + + +/* @0048d220 file=? name=FUN_0048d220 */ + +void __cdecl FUN_0048d220(int param_1) + +{ + int iVar1; + void *this; + int local_2c [8]; + int local_c; + uint local_8; + + local_2c[0] = param_1; + local_2c[1] = 0; + FUN_00492580(0x2d,(byte *)local_2c,8,0); + iVar1 = FUN_004922e0(this,&local_c,local_2c,&local_8,0x20); + if (iVar1 == 0) { + FUN_004d771c(s_____ERROR___velocirender_receive_00507933 + 1); + FUN_004dee24(9); + } + if (param_1 != local_2c[0]) { + FUN_004d771c(s____ERROR___unexpected_action__d_r_00507967); + FUN_004dee24(9); + } + return; +} + + + +/* @0048d294 file=? name=FUN_0048d294 */ + +void __cdecl FUN_0048d294(int param_1) + +{ + undefined4 local_c; + int local_8; + + local_8 = DAT_005078dc; + DAT_005078dc = DAT_005078dc + 1; + *(int *)(param_1 + 8) = local_8; + local_c = *(undefined4 *)(param_1 + 0xc); + FUN_0048900c(local_c); + FUN_0049a300(4,s_remote_VelociRender_create_node_0_005079a6); + FUN_00492580(1,(byte *)&local_c,8,0); + FUN_00487d98(param_1,*(undefined4 *)(param_1 + 0xc)); + if (DAT_005078e8 != 0) { + FUN_0048d220(1); + } + return; +} + + + +/* @0048d30c file=? name=FUN_0048d30c */ + +void __cdecl FUN_0048d30c(int param_1) + +{ + undefined4 local_c; + undefined4 local_8; + + FUN_0049a300(4,s_remote_VelociRender_delete_node_0_005079e5); + local_c = *(undefined4 *)(param_1 + 8); + local_8 = *(undefined4 *)(param_1 + 0xc); + FUN_00492580(2,(byte *)&local_c,8,0); + return; +} + + + +/* @0048d350 file=? name=FUN_0048d350 */ + +void __cdecl FUN_0048d350(undefined4 *param_1,int param_2) + +{ + FUN_0048900c(param_1[3]); + FUN_0049a300(4,s_VelociRender_flush_on_node_0x_x_r_00507a17); + *param_1 = 1; + FUN_00492580(3,(byte *)(param_1 + 2),param_2 - 8,0); + return; +} + + + +/* @0048d3a0 file=? name=FUN_0048d3a0 */ + +void __cdecl FUN_0048d3a0(int param_1) + +{ + DAT_005078ec = DAT_005078ec + 1; + *(int *)(param_1 + 8) = DAT_005078ec; + FUN_0049a300(4,s_warning___issuing_create_on_loca_00507a52); + return; +} + + + +/* @0048d3cc file=? name=FUN_0048d3cc */ + +void FUN_0048d3cc(void) + +{ + FUN_0049a300(4,s_warning___issuing_delete_on_loca_00507a84); + return; +} + + + +/* @0048d3e8 file=? name=FUN_0048d3e8 */ + +void __cdecl FUN_0048d3e8(undefined4 *param_1) + +{ + int iVar1; + + FUN_0049a300(4,s_flush_dcs_nodes_0x_x_zone_0x_x_00507ab6); + iVar1 = param_1[5]; + if (iVar1 != 0) { + param_1[5] = *(undefined4 *)(iVar1 + 8); + } + FUN_0048d350(param_1,0x8c); + param_1[5] = iVar1; + return; +} + + + +/* @0048d42c file=? name=FUN_0048d42c */ + +void __cdecl FUN_0048d42c(undefined4 *param_1) + +{ + int iVar1; + undefined4 *puVar2; + + FUN_0049a300(4,s_flush_view_00507ad6); + iVar1 = param_1[5]; + if (iVar1 != 0) { + param_1[5] = *(undefined4 *)(iVar1 + 8); + } + puVar2 = (undefined4 *)param_1[0x1b]; + if (puVar2 != (undefined4 *)0x0) { + param_1[0x1b] = *puVar2; + } + FUN_0048d350(param_1,0x70); + param_1[5] = iVar1; + param_1[0x1b] = puVar2; + return; +} + + + +/* @0048d478 file=? name=FUN_0048d478 */ + +void __cdecl FUN_0048d478(undefined4 *param_1) + +{ + int iVar1; + + FUN_0049a300(4,s_flush_light_00507ae2); + iVar1 = param_1[5]; + if (iVar1 != 0) { + param_1[5] = *(undefined4 *)(iVar1 + 8); + } + FUN_0048d350(param_1,0x3c); + param_1[5] = iVar1; + return; +} + + + +/* @0048d4b0 file=? name=FUN_0048d4b0 */ + +void __cdecl FUN_0048d4b0(undefined4 *param_1) + +{ + FUN_0049a300(4,s_flush_zone_00507aef); + FUN_0048d350(param_1,0x14); + return; +} + + + +/* @0048d4d4 file=? name=FUN_0048d4d4 */ + +void __cdecl FUN_0048d4d4(undefined4 *param_1) + +{ + int iVar1; + int iVar2; + int iVar3; + + FUN_0049a300(4,s_flush_material_00507afb); + iVar1 = param_1[4]; + if (iVar1 != 0) { + param_1[4] = *(undefined4 *)(iVar1 + 8); + } + iVar2 = param_1[5]; + if (iVar2 != 0) { + param_1[5] = *(undefined4 *)(iVar2 + 8); + } + iVar3 = param_1[7]; + if (iVar3 != 0) { + param_1[7] = *(undefined4 *)(iVar3 + 8); + } + FUN_0048d350(param_1,100); + param_1[5] = iVar2; + param_1[4] = iVar1; + param_1[7] = iVar3; + return; +} + + + +/* @0048d538 file=? name=FUN_0048d538 */ + +void __cdecl FUN_0048d538(undefined4 *param_1) + +{ + FUN_0049a300(4,s_flush_ramp_00507b0b); + FUN_0048d350(param_1,0x2c); + return; +} + + + +/* @0048d55c file=? name=FUN_0048d55c */ + +void __cdecl FUN_0048d55c(undefined4 *param_1) + +{ + int iVar1; + + FUN_0049a300(4,s_flush_texture_00507b17); + iVar1 = param_1[4]; + if (iVar1 != 0) { + param_1[4] = *(undefined4 *)(iVar1 + 8); + } + FUN_0048d350(param_1,0x4c); + param_1[4] = iVar1; + DAT_005081d8 = (uint)(param_1[6] == 10); + return; +} + + + +/* @0048d5b0 file=? name=FUN_0048d5b0 */ + +void __cdecl FUN_0048d5b0(undefined4 *param_1) + +{ + FUN_0049a300(4,s_flush_texmap_00507b26); + FUN_0048d350(param_1,0x24); + return; +} + + + +/* @0048d5d4 file=? name=FUN_0048d5d4 */ + +void __cdecl FUN_0048d5d4(undefined4 *param_1) + +{ + int iVar1; + int iVar2; + int iVar3; + int iVar4; + int iVar5; + + FUN_0049a300(4,s_flush_instance_00507b34); + iVar1 = param_1[5]; + if (iVar1 != 0) { + param_1[5] = *(undefined4 *)(iVar1 + 8); + } + iVar2 = param_1[8]; + if (iVar2 != 0) { + param_1[8] = *(undefined4 *)(iVar2 + 8); + } + iVar3 = param_1[9]; + if (iVar3 != 0) { + param_1[9] = *(undefined4 *)(iVar3 + 8); + } + iVar4 = param_1[10]; + if (iVar4 != 0) { + param_1[10] = *(undefined4 *)(iVar4 + 8); + } + iVar5 = param_1[0xb]; + if (iVar5 != 0) { + param_1[0xb] = *(undefined4 *)(iVar5 + 8); + } + FUN_0048d350(param_1,0x38); + param_1[5] = iVar1; + param_1[8] = iVar2; + param_1[9] = iVar3; + param_1[10] = iVar4; + param_1[0xb] = iVar5; + return; +} + + + +/* @0048d668 file=? name=FUN_0048d668 */ + +void __cdecl FUN_0048d668(undefined4 *param_1) + +{ + FUN_0049a300(4,s_flush_object_00507b44); + FUN_0048d350(param_1,0x7c); + return; +} + + + +/* @0048d68c file=? name=FUN_0048d68c */ + +void __cdecl FUN_0048d68c(undefined4 *param_1) + +{ + int iVar1; + + FUN_0049a300(4,s_flush_lod_00507b52); + iVar1 = param_1[0xc]; + if (iVar1 != 0) { + param_1[0xc] = *(undefined4 *)(iVar1 + 8); + } + FUN_0048d350(param_1,0x50); + param_1[0xc] = iVar1; + return; +} + + + +/* @0048d6c4 file=? name=FUN_0048d6c4 */ + +void __cdecl FUN_0048d6c4(undefined4 *param_1) + +{ + int iVar1; + int iVar2; + int iVar3; + + FUN_0049a300(4,s_flush_geogroup_00507b5d); + iVar1 = param_1[0x12]; + if (iVar1 != 0) { + param_1[0x12] = *(undefined4 *)(iVar1 + 8); + } + iVar2 = param_1[0x13]; + if (iVar2 != 0) { + param_1[0x13] = *(undefined4 *)(iVar2 + 8); + } + iVar3 = param_1[0xc]; + if (iVar3 != 0) { + param_1[0xc] = *(undefined4 *)(iVar3 + 8); + } + FUN_0048d350(param_1,0x58); + param_1[0x12] = iVar1; + param_1[0x13] = iVar2; + param_1[0xc] = iVar3; + return; +} + + + +/* @0048d728 file=? name=FUN_0048d728 */ + +void __cdecl FUN_0048d728(undefined4 *param_1) + +{ + int iVar1; + + FUN_0049a300(4,s_flush_geometry_00507b6d); + iVar1 = param_1[7]; + if (iVar1 != 0) { + param_1[7] = *(undefined4 *)(iVar1 + 8); + } + FUN_0048d350(param_1,0x30); + param_1[7] = iVar1; + return; +} + + + +/* @0048d760 file=? name=FUN_0048d760 */ + +void __cdecl FUN_0048d760(int param_1,int param_2) + +{ + undefined4 local_c; + undefined4 local_8; + + local_c = *(undefined4 *)(param_1 + 8); + local_8 = *(undefined4 *)(param_2 + 8); + FUN_00492580(0xb,(byte *)&local_c,8,0); + return; +} + + + +/* @0048d7a0 file=? name=FUN_0048d7a0 */ + +void __cdecl FUN_0048d7a0(int param_1,int param_2) + +{ + undefined4 local_c; + undefined4 local_8; + + local_c = *(undefined4 *)(param_1 + 8); + local_8 = *(undefined4 *)(param_2 + 8); + FUN_00492580(0xc,(byte *)&local_c,8,0); + return; +} + + + +/* @0048d7e0 file=? name=FUN_0048d7e0 */ + +void __cdecl FUN_0048d7e0(int *param_1,int param_2) + +{ + undefined4 local_c; + undefined4 local_8; + + local_c = DAT_00507900; + local_8 = DAT_00507904; + if (*param_1 == 0) { + FUN_0049a300(1,s_internal_error__badly_formed_sup_00507b7d); + } + else { + local_c = *(undefined4 *)(*param_1 + 8); + local_8 = *(undefined4 *)(param_2 + 8); + FUN_00492580(0xb,(byte *)&local_c,8,0); + } + return; +} + + + +/* @0048d838 file=? name=FUN_0048d838 */ + +void __cdecl FUN_0048d838(int *param_1,int param_2) + +{ + undefined4 local_c; + undefined4 local_8; + + local_c = DAT_00507908; + local_8 = DAT_0050790c; + if (*param_1 == 0) { + FUN_0049a300(1,s_attempt_to_remove_item_from_list_00507ba5); + } + else { + local_c = *(undefined4 *)(*param_1 + 8); + local_8 = *(undefined4 *)(param_2 + 8); + FUN_00492580(0xc,(byte *)&local_c,8,0); + } + return; +} + + + +/* @0048d890 file=? name=FUN_0048d890 */ + +void __cdecl FUN_0048d890(int param_1,int param_2) + +{ + undefined4 local_c; + undefined4 local_8; + + local_c = DAT_00507910; + local_8 = DAT_00507914; + if (param_1 != 0) { + local_c = *(undefined4 *)(param_1 + 8); + } + if (param_2 != 0) { + local_8 = *(undefined4 *)(param_2 + 8); + } + FUN_00492580(6,(byte *)&local_c,8,0); + return; +} + + + +/* @0048d8d8 file=? name=FUN_0048d8d8 */ + +void __cdecl FUN_0048d8d8(int param_1,int param_2) + +{ + undefined4 local_c; + undefined4 local_8; + + local_c = DAT_00507918; + local_8 = DAT_0050791c; + if (param_1 != 0) { + local_c = *(undefined4 *)(param_1 + 8); + } + if (param_2 != 0) { + local_8 = *(undefined4 *)(param_2 + 8); + } + FUN_00492580(7,(byte *)&local_c,8,0); + return; +} + + + +/* @0048d920 file=? name=FUN_0048d920 */ + +void __cdecl FUN_0048d920(int param_1,int param_2) + +{ + undefined4 local_c; + undefined4 local_8; + + local_c = DAT_00507920; + local_8 = DAT_00507924; + if (param_1 != 0) { + local_c = *(undefined4 *)(param_1 + 8); + } + if (param_2 != 0) { + local_8 = *(undefined4 *)(param_2 + 8); + } + FUN_00492580(8,(byte *)&local_c,8,0); + return; +} + + + +/* @0048d968 file=? name=FUN_0048d968 */ + +void __cdecl FUN_0048d968(int param_1,int param_2,int param_3,undefined4 param_4,undefined4 param_5) + +{ + undefined4 local_24; + undefined4 local_20; + undefined4 local_1c; + undefined4 local_18; + undefined4 local_14; + undefined4 local_10; + + local_24 = *(undefined4 *)(param_1 + 8); + local_20 = *(undefined4 *)(param_2 + 8); + local_1c = *(undefined4 *)(param_3 + 8); + local_18 = 0; + local_14 = param_4; + local_10 = param_5; + FUN_00492580(0xd,(byte *)&local_24,0x18,0); + return; +} + + + +/* @0048d9b4 file=? name=FUN_0048d9b4 */ + +void __cdecl +FUN_0048d9b4(int param_1,int param_2,int param_3,undefined4 param_4,undefined4 param_5, + undefined4 param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9) + +{ + undefined4 local_2c; + undefined4 local_28; + undefined4 local_24; + undefined4 local_20; + undefined4 local_1c; + undefined4 local_18; + undefined4 local_14; + undefined4 local_10; + undefined4 local_c; + undefined4 local_8; + + local_2c = *(undefined4 *)(param_1 + 8); + local_28 = *(undefined4 *)(param_2 + 8); + local_24 = *(undefined4 *)(param_3 + 8); + local_20 = 1; + local_1c = param_4; + local_18 = param_5; + local_14 = param_6; + local_10 = param_7; + local_c = param_8; + local_8 = param_9; + FUN_00492580(0xd,(byte *)&local_2c,0x28,0); + return; +} + + + +/* @0048da1c file=? name=FUN_0048da1c */ + +undefined4 __cdecl +FUN_0048da1c(int param_1,byte *param_2,int param_3,int param_4,undefined4 param_5,int param_6) + +{ + int iVar1; + undefined4 local_24; + int local_20; + int local_1c; + int local_18; + undefined4 local_14; + + iVar1 = param_3 * param_4; + local_24 = *(undefined4 *)(param_1 + 8); + local_1c = param_3; + local_18 = param_4; + local_14 = param_5; + local_20 = iVar1; + FUN_00492580(0x1a,(byte *)&local_24,0x20,0); + for (; iVar1 != 0; iVar1 = iVar1 + -0x40) { + FUN_00492580(0x1a,param_2,0x100,param_6); + param_2 = param_2 + 0x100; + } + if (DAT_005078e8 != 0) { + FUN_0048d220(0x1a); + } + return 1; +} + + + +/* @0048daa0 file=? name=FUN_0048daa0 */ + +undefined4 __cdecl +FUN_0048daa0(int param_1,char *param_2,undefined4 *param_3,undefined4 *param_4,undefined4 *param_5) + +{ + char cVar1; + bool bVar2; + int iVar3; + int iVar4; + int *piVar5; + int *local_c; + char *local_8; + + local_c = &DAT_0052420c; + DAT_00524210 = FUN_004d4a78(param_2); + iVar3 = DAT_00524210 + 0x1f >> 5; + DAT_0052420c = *(undefined4 *)(param_1 + 8); + DAT_00524218 = *param_3; + DAT_0052421c = param_3[1]; + DAT_00524220 = param_3[2]; + DAT_00524224 = *param_4; + DAT_00524228 = param_4[1]; + DAT_0052422c = param_4[2]; + DAT_00524230 = *param_5; + DAT_00524234 = param_5[1]; + DAT_00524238 = param_5[2]; + DAT_00524214 = iVar3; + FUN_00492580(0x16,(byte *)&DAT_0052420c,0x30,0); + local_8 = param_2; + for (; iVar3 != 0; iVar3 = iVar3 + -1) { + bVar2 = true; + iVar4 = 0; + piVar5 = local_c; + do { + if (iVar4 == 0x20) { + bVar2 = false; + } + else { + cVar1 = *local_8; + iVar4 = iVar4 + 1; + local_8 = local_8 + 1; + *piVar5 = (int)cVar1; + piVar5 = piVar5 + 1; + if (cVar1 == 0) { + bVar2 = false; + } + } + } while (bVar2); + FUN_00492580(0x16,(byte *)&DAT_0052420c,iVar4 << 2,0); + } + if (DAT_005078e8 != 0) { + FUN_0048d220(0x16); + } + return 1; +} + + + +/* @0048dba8 file=? name=FUN_0048dba8 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl +FUN_0048dba8(int param_1,byte *param_2,undefined4 param_3,int param_4,int param_5) + +{ + int iVar1; + int iVar2; + undefined4 local_2c; + undefined4 local_28; + int local_24; + int local_20; + int local_1c; + undefined4 local_18; + undefined4 local_14; + undefined4 local_10; + undefined4 local_c; + + iVar2 = param_4 * param_5; + iVar1 = param_5 * (int)(0xfe / (ulonglong)(uint)(param_5 << 2)); + local_1c = (iVar1 + -1 + iVar2) / iVar1; + local_2c = *(undefined4 *)(param_1 + 8); + local_28 = param_3; + local_24 = param_4; + local_20 = param_5; + local_18 = *(undefined4 *)(param_1 + 0x14); + local_14 = *(undefined4 *)(param_1 + 0x10); + local_10 = *(undefined4 *)(param_1 + 0x18); + local_c = DAT_005078e0; + FUN_0049a300(4,s_ghost_update_geom_verts_vertex0__00507bda); + if (param_4 == 0x144) { + _DAT_00507928 = _DAT_00507928 + 1; + } + FUN_00492580(0x17,(byte *)&local_2c,0x24,0); + if (iVar1 - iVar2 == 0 || iVar1 < iVar2) { + do { + FUN_00492580(0x17,param_2,iVar1 * 4,0); + iVar2 = iVar2 - iVar1; + param_2 = param_2 + iVar1 * 4; + } while (iVar1 - iVar2 == 0 || iVar1 < iVar2); + } + if (iVar2 != 0) { + FUN_00492580(0x17,param_2,iVar2 << 2,0); + } + if (DAT_005078e8 != 0) { + FUN_0048d220(0x17); + } + return 1; +} + + + +/* @0048dcb0 file=? name=FUN_0048dcb0 */ + +undefined4 FUN_0048dcb0(int param_1,int param_2,undefined4 param_3,int param_4,int param_5) + +{ + int iVar1; + void *extraout_ECX; + void *extraout_ECX_00; + int iVar2; + int iVar3; + void *this; + undefined4 uStack_38; + undefined4 uStack_34; + int iStack_30; + int iStack_2c; + int iStack_28; + undefined4 uStack_24; + int iStack_20; + undefined4 uStack_1c; + undefined4 uStack_18; + uint uStack_10; + int iStack_c; + int iStack_8; + + iVar3 = param_4 * param_5; + iStack_20 = (int)(0xfa / (ulonglong)(uint)(param_5 << 2)); + iVar2 = iStack_20 * param_5; + uStack_38 = *(undefined4 *)(param_1 + 8); + uStack_34 = param_3; + iStack_30 = param_4; + iStack_2c = param_5; + iStack_28 = (iVar2 + -1 + iVar3) / iVar2; + uStack_24 = *(undefined4 *)(param_1 + 0x14); + uStack_1c = *(undefined4 *)(param_1 + 0x18); + uStack_18 = DAT_005078e0; + iStack_c = iStack_20; + FUN_0049a300(4,s_ghost_get_geom_verts_vertex0__d_v_00507c1a); + FUN_00492580(0x18,(byte *)&uStack_38,0x28,0); + this = extraout_ECX; + if (iVar2 - iVar3 == 0 || iVar2 < iVar3) { + do { + iVar1 = FUN_004922e0(this,&iStack_8,(undefined4 *)param_2,&uStack_10,0x100); + this = extraout_ECX_00; + if (iVar1 == 0) { + FUN_004d771c(s____ERROR___velocirender_receive_f_00507c57); + this = (void *)0x9; + FUN_004dee24(9); + } + if (iStack_8 != 0x18) { + FUN_004d771c(s_Protocol_error__action__d_in_get_00507c94); + FUN_004dee24(9); + return 0; + } + iVar3 = iVar3 - iVar2; + param_2 = param_2 + iVar2 * 4; + } while (iVar2 - iVar3 == 0 || iVar2 < iVar3); + } + if (iVar3 != 0) { + iVar2 = FUN_004922e0(this,&iStack_8,(undefined4 *)param_2,&uStack_10,0x100); + if (iVar2 == 0) { + FUN_004d771c(s____ERROR___velocirender_receive_f_00507cc4); + FUN_004dee24(9); + } + if (iStack_8 != 0x18) { + FUN_004d771c(s_Protocol_error__action__d_in_get_00507d01); + FUN_004dee24(9); + return 0; + } + } + return 1; +} + + + +/* @0048dcb6 file=? name=FUN_0048dcb6 */ + +undefined4 FUN_0048dcb6(void) + +{ + int iVar1; + void *extraout_ECX; + void *extraout_ECX_00; + int iVar2; + int unaff_EBP; + int iVar3; + undefined4 *puVar4; + void *this; + + iVar1 = *(int *)(unaff_EBP + 0x18); + puVar4 = *(undefined4 **)(unaff_EBP + 0xc); + iVar3 = *(int *)(unaff_EBP + 0x14) * iVar1; + *(int *)(unaff_EBP + -8) = (int)(0xfa / (ulonglong)(uint)(iVar1 << 2)); + iVar2 = *(int *)(unaff_EBP + -8) * iVar1; + *(undefined4 *)(unaff_EBP + -0x34) = *(undefined4 *)(*(int *)(unaff_EBP + 8) + 8); + *(undefined4 *)(unaff_EBP + -0x30) = *(undefined4 *)(unaff_EBP + 0x10); + *(undefined4 *)(unaff_EBP + -0x2c) = *(undefined4 *)(unaff_EBP + 0x14); + *(int *)(unaff_EBP + -0x28) = iVar1; + *(int *)(unaff_EBP + -0x24) = (iVar2 + -1 + iVar3) / iVar2; + *(undefined4 *)(unaff_EBP + -0x20) = *(undefined4 *)(*(int *)(unaff_EBP + 8) + 0x14); + *(undefined4 *)(unaff_EBP + -0x1c) = *(undefined4 *)(unaff_EBP + -8); + *(undefined4 *)(unaff_EBP + -0x18) = *(undefined4 *)(*(int *)(unaff_EBP + 8) + 0x18); + *(undefined4 *)(unaff_EBP + -0x14) = DAT_005078e0; + FUN_0049a300(4,s_ghost_get_geom_verts_vertex0__d_v_00507c1a); + FUN_00492580(0x18,(byte *)(unaff_EBP + -0x34),0x28,0); + this = extraout_ECX; + if (iVar2 - iVar3 == 0 || iVar2 < iVar3) { + do { + iVar1 = FUN_004922e0(this,(int *)(unaff_EBP + -4),puVar4,(uint *)(unaff_EBP + -0xc),0x100); + this = extraout_ECX_00; + if (iVar1 == 0) { + FUN_004d771c(s____ERROR___velocirender_receive_f_00507c57); + this = (void *)0x9; + FUN_004dee24(9); + } + if (*(int *)(unaff_EBP + -4) != 0x18) { + FUN_004d771c(s_Protocol_error__action__d_in_get_00507c94); + FUN_004dee24(9); + return 0; + } + iVar3 = iVar3 - iVar2; + puVar4 = puVar4 + iVar2; + } while (iVar2 - iVar3 == 0 || iVar2 < iVar3); + } + if (iVar3 != 0) { + iVar1 = FUN_004922e0(this,(int *)(unaff_EBP + -4),puVar4,(uint *)(unaff_EBP + -0xc),0x100); + if (iVar1 == 0) { + FUN_004d771c(s____ERROR___velocirender_receive_f_00507cc4); + FUN_004dee24(9); + } + if (*(int *)(unaff_EBP + -4) != 0x18) { + FUN_004d771c(s_Protocol_error__action__d_in_get_00507d01); + FUN_004dee24(9); + return 0; + } + } + return 1; +} + + + +/* @0048de14 file=? name=FUN_0048de14 */ + +undefined4 __cdecl FUN_0048de14(int param_1,byte *param_2,int param_3,int param_4,int param_5) + +{ + int iVar1; + undefined4 local_28; + int local_24; + int local_20; + int local_1c; + uint local_8; + + if (param_5 != 0) { + if (param_4 == 3) { + param_3 = param_3 + 2; + } + else if (param_4 == 4) { + param_3 = param_3 * 2 + 2; + } + else { + FUN_0049a300(0,s_polysize____3_____4_in_Strip_00507d31); + FUN_004dee24(9); + } + param_4 = 1; + } + local_28 = *(undefined4 *)(param_1 + 8); + local_20 = param_4; + local_1c = param_5; + local_24 = param_3; + FUN_00492580(0x19,(byte *)&local_28,0x10,0); + iVar1 = (int)(0x1fc / (longlong)(param_4 * 4)); + local_8 = param_4 * 4 * iVar1; + for (; iVar1 < param_3; param_3 = param_3 - iVar1) { + FUN_00492580(0x19,param_2,local_8,0); + param_2 = param_2 + local_8; + } + if (param_3 != 0) { + FUN_00492580(0x19,param_2,param_3 * 4 * param_4,0); + } + if (DAT_005078e8 != 0) { + FUN_0048d220(0x19); + } + return 1; +} + + + +/* @0048def4 file=? name=FUN_0048def4 */ + +undefined4 __cdecl +FUN_0048def4(int param_1,undefined4 *param_2,char *param_3,undefined4 *param_4,undefined4 param_5) + +{ + char *pcVar1; + char *pcVar2; + char *pcVar3; + int iVar4; + bool bVar5; + undefined4 *local_8; + + iVar4 = 0; + local_8 = param_4; + if (0 < param_1) { + do { + pcVar2 = (char *)*param_2; + if ((pcVar2 != (char *)0x0) && (*pcVar2 == '/')) { + pcVar2 = pcVar2 + 1; + pcVar3 = param_3; + do { + if (*pcVar2 != *pcVar3) goto LAB_0048df5a; + bVar5 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_0048df5a; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar5 = *pcVar1 == '\0'; + } while (!bVar5); + if ((bVar5) && (iVar4 != param_1 + -1)) { + *local_8 = param_5; + local_8[1] = param_5; + return param_2[1]; + } + } +LAB_0048df5a: + iVar4 = iVar4 + 1; + local_8 = local_8 + 1; + param_2 = param_2 + 1; + } while (iVar4 < param_1); + } + return 0; +} + + + +/* @0048df70 file=? name=FUN_0048df70 */ + +void __cdecl FUN_0048df70(int param_1,undefined4 *param_2) + +{ + char cVar1; + byte *pbVar2; + int *piVar3; + LPCSTR pCVar4; + uint uVar5; + uint uVar6; + void *this; + int iVar7; + char *pcVar8; + LPCSTR pCVar9; + char *pcVar10; + int iVar11; + undefined4 *local_20; + uint local_1c; + int *local_18; + int local_14; + undefined4 local_10; + int local_c; + LPCSTR local_8; + + pbVar2 = (byte *)FUN_00452c38(0x100); + local_18 = (int *)FUN_00452c38(0x100); + DAT_005078e0 = 0x3f800000; + iVar7 = 0; + piVar3 = local_18; + do { + *piVar3 = 0; + iVar7 = iVar7 + 1; + piVar3 = piVar3 + 1; + } while (iVar7 < 0x40); + local_10 = FUN_0048def4(param_1,param_2,s_device_00507d4f,local_18,0); + pCVar4 = (LPCSTR)FUN_0048def4(param_1,param_2,s_tranny_00507d56,local_18,1); + local_8 = (LPCSTR)FUN_0048def4(param_1,param_2,&DAT_00507d5d,local_18,1); + local_c = FUN_0048def4(param_1,param_2,&DAT_00507d62,local_18,1); + if (pCVar4 == (LPCSTR)0x0) { + DAT_0052438c = DAT_00507d66; + DAT_00524390 = DAT_00507d6a; + } + else { + uVar5 = 0xffffffff; + pCVar9 = pCVar4; + do { + pcVar8 = pCVar9; + if (uVar5 == 0) break; + uVar5 = uVar5 - 1; + pcVar8 = pCVar9 + 1; + cVar1 = *pCVar9; + pCVar9 = pcVar8; + } while (cVar1 != '\0'); + uVar5 = ~uVar5; + pcVar8 = pcVar8 + -uVar5; + pcVar10 = (char *)&DAT_0052438c; + for (uVar6 = uVar5 >> 2; uVar6 != 0; uVar6 = uVar6 - 1) { + *(undefined4 *)pcVar10 = *(undefined4 *)pcVar8; + pcVar8 = pcVar8 + 4; + pcVar10 = pcVar10 + 4; + } + for (uVar5 = uVar5 & 3; uVar5 != 0; uVar5 = uVar5 - 1) { + *pcVar10 = *pcVar8; + pcVar8 = pcVar8 + 1; + pcVar10 = pcVar10 + 1; + } + } + if (local_8 == (LPCSTR)0x0) { + DAT_0052440c = DAT_00507d6b; + DAT_00524410 = DAT_00507d6f; + } + else { + uVar5 = 0xffffffff; + pCVar9 = local_8; + do { + pcVar8 = pCVar9; + if (uVar5 == 0) break; + uVar5 = uVar5 - 1; + pcVar8 = pCVar9 + 1; + cVar1 = *pCVar9; + pCVar9 = pcVar8; + } while (cVar1 != '\0'); + uVar5 = ~uVar5; + pcVar8 = pcVar8 + -uVar5; + pcVar10 = (char *)&DAT_0052440c; + for (uVar6 = uVar5 >> 2; uVar6 != 0; uVar6 = uVar6 - 1) { + *(undefined4 *)pcVar10 = *(undefined4 *)pcVar8; + pcVar8 = pcVar8 + 4; + pcVar10 = pcVar10 + 4; + } + for (uVar5 = uVar5 & 3; uVar5 != 0; uVar5 = uVar5 - 1) { + *pcVar10 = *pcVar8; + pcVar8 = pcVar8 + 1; + pcVar10 = pcVar10 + 1; + } + } + FUN_004929a8(pCVar4,local_c,local_8,local_10); + *pbVar2 = 0; + iVar7 = 0; + local_20 = param_2; + piVar3 = local_18; + if (0 < param_1) { + do { + if (*piVar3 == 0) { + FUN_004d49b8((char *)pbVar2,(char *)*local_20); + FUN_004d49b8((char *)pbVar2,&DAT_00507d70); + } + iVar7 = iVar7 + 1; + local_20 = local_20 + 1; + piVar3 = piVar3 + 1; + } while (iVar7 < param_1); + } + FUN_004d49b8((char *)pbVar2,&DAT_00507d72); + iVar11 = 1; + iVar7 = FUN_004d4a78((char *)pbVar2); + FUN_00492580(0,pbVar2,iVar7 + 1,iVar11); + iVar7 = FUN_004922e0(this,&local_14,local_18,&local_1c,0x100); + if (iVar7 == 0) { + FUN_004d771c(s____ERROR___velocirender_receive_f_00507d74); + FUN_004dee24(9); + } + FUN_00452c88(local_18); + FUN_00452c88((int *)pbVar2); + return; +} + + + +/* @0048e168 file=? name=FUN_0048e168 */ + +void __cdecl FUN_0048e168(undefined4 param_1,int param_2,undefined4 *param_3) + +{ + undefined4 local_4c; + undefined4 local_48; + undefined4 local_44 [16]; + + local_4c = param_1; + if (param_2 == 0) { + local_48 = 0; + } + else { + local_48 = *(undefined4 *)(param_2 + 8); + } + FUN_004d4918(local_44,param_3,0x40); + FUN_00492580(0x1b,(byte *)&local_4c,0x48,0); + return; +} + + + +/* @0048e1b0 file=? name=FUN_0048e1b0 */ + +void __cdecl FUN_0048e1b0(int param_1) + +{ + byte local_14 [4]; + undefined4 local_10; + + local_14[0] = 0; + local_14[1] = 0; + local_14[2] = 0; + local_14[3] = 0; + if (param_1 == 0) { + local_10 = 0; + } + else { + local_10 = *(undefined4 *)(param_1 + 8); + } + FUN_00492580(0x23,local_14,8,0); + return; +} + + + +/* @0048e1e8 file=? name=FUN_0048e1e8 */ + +void __cdecl FUN_0048e1e8(undefined4 *param_1,int param_2) + +{ + int iVar1; + + iVar1 = param_1[0x40]; + if (param_2 == 0) { + DAT_0052420c = 0; + } + else { + DAT_0052420c = *(undefined4 *)(param_2 + 8); + } + if (iVar1 != 0) { + param_1[0x40] = *(undefined4 *)(param_1[0x40] + 8); + } + FUN_004d4918(&DAT_00524210,param_1,0x104); + param_1[0x40] = iVar1; + FUN_00492580(0x1d,(byte *)&DAT_0052420c,0x108,0); + return; +} + + + +/* @0048e25c file=? name=FUN_0048e25c */ + +void __cdecl FUN_0048e25c(undefined4 param_1) + +{ + DAT_0052420c = 1; + DAT_00524210 = param_1; + DAT_00524214 = 0; + FUN_00492580(0x23,(byte *)&DAT_0052420c,0xc,0); + return; +} + + + +/* @0048e288 file=? name=FUN_0048e288 */ + +void __cdecl FUN_0048e288(undefined4 param_1,undefined4 param_2) + +{ + DAT_0052420c = 1; + DAT_00524210 = 0; + DAT_00524214 = 1; + DAT_00524218 = param_1; + DAT_0052421c = param_2; + FUN_00492580(0x23,(byte *)&DAT_0052420c,0x14,0); + return; +} + + + +/* @0048e2c0 file=? name=FUN_0048e2c0 */ + +void __cdecl FUN_0048e2c0(byte *param_1,uint param_2) + +{ + FUN_00492580(0x1c,param_1,param_2,0); + return; +} + + + +/* @0048e2dc file=? name=FUN_0048e2dc */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_0048e2dc(undefined4 param_1) + +{ + undefined4 local_1c; + undefined4 local_18; + undefined4 local_14; + undefined4 local_10; + undefined4 local_c; + + local_1c = param_1; + local_18 = DAT_0050847c; + local_14 = DAT_00524ae0; + local_10 = DAT_0050792c; + local_c = _DAT_00507930; + _DAT_0052448c = DAT_00524ae0; + FUN_00492580(9,(byte *)&local_1c,0x14,0); + return; +} + + + +/* @0048e330 file=? name=FUN_0048e330 */ + +void FUN_0048e330(void) + +{ + FUN_004923cc(0); + return; +} + + + +/* @0048e340 file=? name=FUN_0048e340 */ + +void FUN_0048e340(void) + +{ + FUN_004923cc(1); + return; +} + + + +/* @0048e350 file=? name=FUN_0048e350 */ + +void __cdecl FUN_0048e350(int param_1) + +{ + *(undefined4 *)(param_1 + 0xc) = 3; + *(undefined4 *)(param_1 + 0x10) = 0; + FUN_004d7f10((undefined1 *)(param_1 + 0x14),s__transp__s__i860__s_00507da7); + return; +} + + + +/* @0048e380 file=? name=FUN_0048e380 */ + +undefined4 __cdecl FUN_0048e380(undefined4 param_1) + +{ + return param_1; +} + + + +/* @0048e388 file=? name=FUN_0048e388 */ + +void __cdecl FUN_0048e388(undefined4 *param_1,int param_2,undefined4 param_3,int param_4) + +{ + int iVar1; + void *this; + int local_8c; + undefined4 local_88; + undefined4 local_84; + uint local_c; + int local_8; + + for (; 0 < param_4; param_4 = param_4 + -0x20) { + local_88 = param_3; + local_84 = 0x20; + local_8c = param_2; + FUN_00492580(0x10,(byte *)&local_8c,0xc,0); + iVar1 = FUN_004922e0(this,&local_8,&local_8c,&local_c,0x80); + if (iVar1 == 0) { + FUN_004d771c(s____ERROR___velocirender_receive_f_00507dbb); + FUN_004dee24(9); + } + iVar1 = param_4; + if (0x20 < param_4) { + iVar1 = 0x20; + } + FUN_004d4918(param_1,&local_8c,iVar1 << 2); + param_1 = param_1 + 0x20; + param_2 = param_2 + 0x20; + } + return; +} + + + +/* @0048e440 file=? name=FUN_0048e440 */ + +void __cdecl FUN_0048e440(int *param_1,int param_2) + +{ + uint uVar1; + uint uVar2; + undefined4 *puVar3; + int iVar4; + int iVar5; + + DAT_00524490 = param_2; + puVar3 = &DAT_00524494; + iVar5 = 0; + if (0 < param_2) { + do { + iVar4 = *param_1; + if (iVar4 == 0) { + FUN_004d771c(s_Error___NULL_dcs_in_articulation_00507df5); + iVar4 = 0; + if (iVar5 < 0) { + return; + } + do { + FUN_004d771c(s__>_dcs___d__is_0x_x_00507e22); + iVar4 = iVar4 + 1; + } while (iVar4 <= iVar5); + return; + } + uVar1 = *(int *)(iVar4 + 0x58) >> 0x18 & 0xf; + uVar2 = uVar1 - 1; + if (uVar1 == 0) { + *puVar3 = *(undefined4 *)(iVar4 + 8); + puVar3[1] = *(undefined4 *)(iVar4 + 0x18); + puVar3[2] = *(undefined4 *)(iVar4 + 0x1c); + puVar3[3] = *(undefined4 *)(iVar4 + 0x20); + puVar3[4] = *(undefined4 *)(iVar4 + 0x28); + puVar3[5] = *(undefined4 *)(iVar4 + 0x2c); + puVar3[6] = *(undefined4 *)(iVar4 + 0x30); + puVar3[7] = *(undefined4 *)(iVar4 + 0x38); + puVar3[8] = *(undefined4 *)(iVar4 + 0x3c); + puVar3[9] = *(undefined4 *)(iVar4 + 0x40); + puVar3[10] = *(undefined4 *)(iVar4 + 0x48); + puVar3[0xb] = *(undefined4 *)(iVar4 + 0x4c); + puVar3[0xc] = *(undefined4 *)(iVar4 + 0x50); + puVar3 = puVar3 + 0xd; + } + else if (uVar2 < 3) { + *puVar3 = *(undefined4 *)(iVar4 + 8); + puVar3[1] = *(undefined4 *)(iVar4 + 0x18); + puVar3[2] = *(undefined4 *)(iVar4 + 0x1c); + puVar3 = puVar3 + 3; + } + else if (uVar2 != 3) { + FUN_004d771c(s_Unknown_dcs_type_0x_x_in_ghost_f_00507e39); + FUN_004dee24(9); + } + iVar5 = iVar5 + 1; + param_1 = param_1 + 1; + } while (iVar5 < param_2); + } + FUN_00492580(0x1f,(byte *)&DAT_00524490,(uint)(puVar3 + -0x149124),0); + return; +} + + + +/* @0048e5b0 file=? name=FUN_0048e5b0 */ + +void __cdecl +FUN_0048e5b0(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4, + undefined4 param_5) + +{ + undefined4 local_24; + undefined4 local_20; + undefined4 local_1c; + undefined4 local_18; + undefined4 local_14; + + local_24 = param_1; + local_20 = param_2; + local_1c = param_3; + local_18 = param_4; + local_14 = param_5; + FUN_00492580(0x20,(byte *)&local_24,0x18,0); + return; +} + + + +/* @0048e5ec file=? name=FUN_0048e5ec */ + +void __cdecl FUN_0048e5ec(undefined4 param_1,undefined4 param_2) + +{ + undefined4 local_24; + undefined4 local_20; + + local_24 = param_1; + local_20 = param_2; + FUN_00492580(0x24,(byte *)&local_24,8,0); + return; +} + + + +/* @0048e614 file=? name=FUN_0048e614 */ + +void __cdecl FUN_0048e614(undefined4 *param_1) + +{ + int iVar1; + int local_84 [32]; + + if (param_1 == (undefined4 *)0x0) { + local_84[0] = -1; + local_84[1] = 0xffffffff; + FUN_00492580(0x21,(byte *)local_84,8,0); + } + else { + iVar1 = 0; + do { + local_84[0] = iVar1 << 6; + local_84[1] = 0x40; + FUN_004d4918(local_84 + 2,param_1,0x40); + param_1 = param_1 + 0x10; + FUN_00492580(0x21,(byte *)local_84,0x50,0); + iVar1 = iVar1 + 1; + } while (iVar1 < 0x40); + } + return; +} + + + +/* @0048e688 file=? name=FUN_0048e688 */ + +void __cdecl FUN_0048e688(undefined4 param_1,undefined4 param_2) + +{ + undefined4 local_24; + undefined4 local_20; + + local_24 = param_1; + local_20 = param_2; + FUN_00492580(0x28,(byte *)&local_24,8,0); + return; +} + + + +/* @0048e6b0 file=? name=FUN_0048e6b0 */ + +void __cdecl FUN_0048e6b0(undefined4 *param_1) + +{ + int iVar1; + int local_44 [16]; + + iVar1 = 0; + do { + local_44[0] = iVar1 << 5; + local_44[1] = 0x20; + FUN_004d4918(local_44 + 2,param_1,0x20); + param_1 = param_1 + 8; + FUN_00492580(0x22,(byte *)local_44,0x28,0); + iVar1 = iVar1 + 1; + } while (iVar1 < 8); + return; +} + + + +/* @0048e700 file=? name=FUN_0048e700 */ + +void __cdecl +FUN_0048e700(uint param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,uint param_5, + uint param_6,uint param_7,undefined4 *param_8,undefined4 *param_9,undefined4 *param_10, + undefined4 *param_11,undefined4 *param_12,undefined4 *param_13) + +{ + int iVar1; + undefined4 uVar2; + void *this; + uint local_4c; + undefined4 local_48; + undefined4 local_44; + undefined4 local_40; + uint local_3c; + uint local_38; + uint local_34; + undefined4 local_30; + uint local_c; + int local_8; + + local_4c = param_1; + local_48 = param_2; + local_44 = param_3; + local_40 = param_4; + local_3c = param_5; + local_38 = param_6; + local_34 = param_7; + FUN_00492580(5,(byte *)&local_4c,0x20,0); + iVar1 = FUN_004922e0(this,&local_8,&local_4c,&local_c,0x40); + if (iVar1 == 0) { + FUN_004d771c(s____ERROR___velocirender_receive_f_00507e76); + FUN_004dee24(9); + } + *param_8 = local_48; + *param_9 = local_44; + *param_10 = local_40; + uVar2 = FUN_00487e7c(&DAT_00507eb0,local_3c,5); + *param_11 = uVar2; + uVar2 = FUN_00487e7c(&DAT_00507eb5,local_38,9); + *param_12 = uVar2; + uVar2 = FUN_00487e7c(&DAT_00507eba,local_34,10); + *param_13 = uVar2; + DAT_00524690 = local_30; + FUN_00487e7c(&DAT_00507ebf,local_4c,4); + return; +} + + + +/* @0048e7f4 file=? name=FUN_0048e7f4 */ + +void __cdecl +FUN_0048e7f4(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4, + undefined4 *param_5,undefined4 *param_6,undefined4 *param_7,undefined4 *param_8, + undefined4 *param_9,undefined4 *param_10) + +{ + int iVar1; + undefined4 uVar2; + void *this; + uint local_4c; + undefined4 local_48; + undefined4 local_44; + undefined4 local_40; + uint local_3c; + uint local_38; + uint local_34; + undefined4 local_30; + uint local_c; + int local_8; + + local_4c = *(uint *)(param_1 + 8); + local_48 = param_2; + local_44 = param_3; + local_40 = param_4; + FUN_00492580(4,(byte *)&local_4c,0x10,0); + iVar1 = FUN_004922e0(this,&local_8,&local_4c,&local_c,0x40); + if (iVar1 == 0) { + FUN_004d771c(s____ERROR___velocirender_receive_f_00507ec4); + FUN_004dee24(9); + } + *param_5 = local_48; + *param_6 = local_44; + *param_7 = local_40; + uVar2 = FUN_00487e7c(&DAT_00507efd,local_3c,5); + *param_8 = uVar2; + uVar2 = FUN_00487e7c(&DAT_00507f02,local_38,9); + *param_9 = uVar2; + uVar2 = FUN_00487e7c(&DAT_00507f07,local_34,10); + *param_10 = uVar2; + DAT_00524690 = local_30; + FUN_00487e7c(&DAT_00507f0c,local_4c,4); + return; +} + + + +/* @0048e8d8 file=? name=FUN_0048e8d8 */ + +void __cdecl +FUN_0048e8d8(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) + +{ + undefined4 local_14; + undefined4 local_10; + undefined4 local_c; + undefined4 local_8; + + local_14 = param_1; + local_10 = param_2; + local_c = param_3; + local_8 = param_4; + FUN_00492580(0x26,(byte *)&local_14,0x10,0); + return; +} + + + +/* @0048e910 file=? name=FUN_0048e910 */ + +void __cdecl FUN_0048e910(int *param_1) + +{ + int iVar1; + int local_c [2]; + + iVar1 = DAT_005078dc; + DAT_005078dc = DAT_005078dc + 1; + FUN_0049a300(4,s_remote_VelociRender_create_2d_0x_00507f11); + *param_1 = iVar1; + local_c[0] = iVar1; + local_c[1] = 0; + FUN_00492580(0x29,(byte *)local_c,8,0); + if (DAT_005078e8 != 0) { + FUN_0048d220(0x29); + } + return; +} + + + +/* @0048e96c file=? name=FUN_0048e96c */ + +void __cdecl FUN_0048e96c(undefined4 *param_1) + +{ + undefined4 local_c; + undefined4 local_8; + + FUN_0049a300(4,s_remote_VelociRender_delete_2d_no_00507f35); + local_c = *param_1; + local_8 = 0; + FUN_00492580(0x2a,(byte *)&local_c,8,0); + return; +} + + + +/* @0048e9ac file=? name=FUN_0048e9ac */ + +void __cdecl FUN_0048e9ac(byte *param_1,int param_2) + +{ + undefined4 uVar1; + undefined4 uVar2; + byte *pbVar3; + int iVar4; + + uVar1 = *(undefined4 *)(param_1 + 4); + uVar2 = *(undefined4 *)(param_1 + 8); + FUN_0049a300(4,s_VelociRender_flush_on_2d_display_00507f6a); + if (param_2 == 0) { + param_1[4] = 0; + param_1[5] = 0; + param_1[6] = 0; + param_1[7] = 0; + param_1[8] = 0; + param_1[9] = 0; + param_1[10] = 0; + param_1[0xb] = 0; + } + else { + iVar4 = 1; + pbVar3 = param_1; + while (pbVar3 = *(byte **)(pbVar3 + 4), pbVar3 != (byte *)0x0) { + iVar4 = iVar4 + 1; + } + param_1[4] = 1; + param_1[5] = 0; + param_1[6] = 0; + param_1[7] = 0; + *(int *)(param_1 + 8) = iVar4; + } + FUN_00492580(0x2b,param_1,0x8c,0); + *(undefined4 *)(param_1 + 4) = uVar1; + *(undefined4 *)(param_1 + 8) = uVar2; + return; +} + + + +/* @0048ea24 file=? name=FUN_0048ea24 */ + +undefined4 FUN_0048ea24(void) + +{ + int iVar1; + void *this; + undefined4 local_2c; + undefined4 local_28; + uint local_c; + int local_8; + + FUN_0049a300(4,s_remote_VelociRender_FreeMem_00507fa3); + local_2c = 0x29a; + local_28 = 0x309; + FUN_00492580(0x2c,(byte *)&local_2c,8,0); + iVar1 = FUN_004922e0(this,&local_8,&local_2c,&local_c,0x20); + if (iVar1 == 0) { + FUN_004d771c(s____ERROR___velocirender_receive_f_00507fc0); + FUN_004dee24(9); + } + if (local_8 != 0x2c) { + FUN_004d771c(s____ERROR___unexpected_action__d_r_00507ff6); + FUN_004dee24(9); + } + return local_2c; +} + + + +/* @0048eaac file=? name=FUN_0048eaac */ + +void __cdecl FUN_0048eaac(int param_1,undefined4 *param_2) + +{ + int iVar1; + void *this; + undefined4 local_1c [4]; + uint local_c; + int local_8; + + local_1c[0] = *(undefined4 *)(param_1 + 8); + FUN_0049a300(4,s_ghost_get_geom_verts_obj_0x_x_0050802e); + FUN_00492580(0x2e,(byte *)local_1c,8,0); + iVar1 = FUN_004922e0(this,&local_8,param_2,&local_c,0x100); + if (iVar1 == 0) { + FUN_004d771c(s____ERROR___velocirender_receive_f_0050804d); + FUN_004dee24(9); + } + return; +} + + + +/* @0048eb14 file=? name=FUN_0048eb14 */ + +void __cdecl FUN_0048eb14(int param_1,undefined4 *param_2,undefined4 param_3,int param_4) + +{ + int iVar1; + void *extraout_ECX; + void *extraout_ECX_00; + int iVar2; + void *this; + undefined4 local_34; + undefined4 local_30; + int local_2c; + undefined4 local_28; + int local_24; + uint local_c; + int local_8; + + iVar2 = param_4 * 6; + local_34 = *(undefined4 *)(param_1 + 8); + local_30 = param_3; + local_2c = param_4; + local_28 = 10; + local_24 = (iVar2 + 0x3b) / 0x3c; + FUN_0049a300(4,s_ghost_get_geom_conns_vertex0__d_v_00508086); + FUN_00492580(0x2f,(byte *)&local_34,0x20,0); + this = extraout_ECX; + for (; 0x3b < iVar2; iVar2 = iVar2 + -0x3c) { + iVar1 = FUN_004922e0(this,&local_8,param_2,&local_c,0x100); + this = extraout_ECX_00; + if (iVar1 == 0) { + FUN_004d771c(s____ERROR___velocirender_receive_f_005080bc); + this = (void *)0x9; + FUN_004dee24(9); + } + if (local_8 != 0x2f) { + FUN_004d771c(s_Protocol_error__action__d_in_get_005080f9); + this = (void *)0x9; + FUN_004dee24(9); + } + param_2 = param_2 + 0x3c; + } + if (iVar2 != 0) { + iVar2 = FUN_004922e0(this,&local_8,param_2,&local_c,0x100); + if (iVar2 == 0) { + FUN_004d771c(s____ERROR___velocirender_receive_f_00508126); + FUN_004dee24(9); + } + if (local_8 != 0x2f) { + FUN_004d771c(s_Protocol_error__action__d_in_get_00508163); + FUN_004dee24(9); + } + } + return; +} + + + +/* @0048ec34 file=? name=FUN_0048ec34 */ + +undefined4 __cdecl FUN_0048ec34(int param_1) + +{ + int iVar1; + void *this; + undefined4 local_1c [4]; + int local_c; + uint local_8; + + local_1c[0] = *(undefined4 *)(param_1 + 8); + FUN_00492580(0x30,(byte *)local_1c,0x10,0); + iVar1 = FUN_004922e0(this,&local_c,local_1c,&local_8,0x10); + if (iVar1 == 0) { + FUN_004d771c(s____ERROR___velocirender_receive_f_00508196); + FUN_004dee24(9); + } + return local_1c[0]; +} + + + +/* @0048ec8c file=? name=FUN_0048ec8c */ + +void __cdecl FUN_0048ec8c(int param_1,undefined4 param_2) + +{ + undefined4 local_14; + undefined4 local_10; + + local_14 = *(undefined4 *)(param_1 + 8); + local_10 = param_2; + FUN_00492580(0x31,(byte *)&local_14,8,0); + return; +} + + + +/* @0048ecb8 file=? name=FUN_0048ecb8 */ + +void FUN_0048ecb8(void) + +{ + byte local_14 [16]; + + local_14[0] = 0; + local_14[1] = 0; + local_14[2] = 0; + local_14[3] = 0; + FUN_00492580(0x32,local_14,4,0); + return; +} + + + +/* @0048ecdc file=? name=FUN_0048ecdc */ + +void __cdecl FUN_0048ecdc(int *param_1,int param_2) + +{ + int iVar1; + undefined4 *puVar2; + int iVar3; + + puVar2 = &DAT_00524490; + iVar3 = 0; + while( true ) { + iVar1 = *param_1; + param_1 = param_1 + 1; + if (iVar1 == 0) break; + *puVar2 = *(undefined4 *)(iVar1 + 8); + puVar2 = puVar2 + 1; + iVar3 = iVar3 + 1; + } + *puVar2 = 0; + FUN_00492580(param_2,(byte *)&DAT_00524490,(iVar3 + 1) * 4,0); + return; +} + + + +/* @0048ed20 file=? name=FUN_0048ed20 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_0048ed20(void) + +{ + PTR_DAT_005078e4 = &DAT_00523e0c; + DAT_005078e8 = 1; + DAT_005078dc = 1; + _DAT_00507928 = 0; + DAT_0050792c = 1; + _DAT_00507930 = 0x3f800000; + return; +} + + + +/* @0048ed5c file=? name=FUN_0048ed5c */ + +undefined4 __cdecl FUN_0048ed5c(undefined4 *param_1) + +{ + return *param_1; +} + + + +/* @0048eda0 file=? name=FUN_0048eda0 */ + +uint __cdecl FUN_0048eda0(int param_1,int param_2,int param_3,int param_4) + +{ + uint uVar1; + + uVar1 = param_1 >> 4 & 0xfU | (param_2 >> 4 & 0xfU) << 4; + return ((int)(uVar1 | (param_3 >> 4 & 0xfU) << 8 | (param_4 >> 4 & 0xfU) << 0xc) >> 8) << 0x10 | + uVar1 << 0x18; +} + + + +/* @0048ee14 file=? name=FUN_0048ee14 */ + +uint __cdecl FUN_0048ee14(int param_1,int param_2,int param_3) + +{ + int iVar1; + + iVar1 = param_1 * 0x33 + param_2 * 0xb3 + param_3 * 0x19 >> 8; + return iVar1 << 8 | iVar1 << 0x10 | iVar1 << 0x18; +} + + + +/* @0048ee5c file=? name=FUN_0048ee5c */ + +void __cdecl +FUN_0048ee5c(int param_1,uint *param_2,byte *param_3,int param_4,int param_5,int param_6) + +{ + byte bVar1; + byte *pbVar2; + byte *pbVar3; + byte *pbVar4; + uint uVar5; + uint local_18; + int local_8; + + DAT_0050847c = 1; + if (param_5 == 0) { + local_18 = *(uint *)(param_1 + 0x20); + } + else { + local_18 = 0; + } + if (*(int *)(param_1 + 0x1c) == 1) { + local_8 = 0; + if (0 < param_4) { + do { + uVar5 = (uint)*param_3; + param_3 = param_3 + 1; + if (param_6 == 0) { + uVar5 = FUN_0048eda0(uVar5,uVar5,uVar5,0xff); + *param_2 = uVar5; + } + else { + uVar5 = FUN_0048ee14(uVar5,uVar5,uVar5); + *param_2 = uVar5; + } + param_2 = param_2 + 1; + local_8 = local_8 + 1; + } while (local_8 < param_4); + } + } + else if (*(int *)(param_1 + 0x1c) == 2) { + local_8 = 0; + if (0 < param_4) { + do { + uVar5 = (uint)*param_3; + pbVar2 = param_3 + 1; + param_3 = param_3 + 2; + local_18 = local_18 | *pbVar2 != 0xff; + if (param_6 == 0) { + uVar5 = FUN_0048eda0(uVar5,uVar5,uVar5,(uint)*pbVar2); + *param_2 = uVar5; + } + else { + uVar5 = FUN_0048ee14(uVar5,uVar5,uVar5); + *param_2 = uVar5; + } + param_2 = param_2 + 1; + local_8 = local_8 + 1; + } while (local_8 < param_4); + } + } + else if (*(int *)(param_1 + 0x1c) == 3) { + local_8 = 0; + if (0 < param_4) { + do { + bVar1 = *param_3; + pbVar2 = param_3 + 1; + pbVar3 = param_3 + 2; + param_3 = param_3 + 3; + if (param_6 == 0) { + uVar5 = FUN_0048eda0((uint)*pbVar3,(uint)*pbVar2,(uint)bVar1,0xff); + *param_2 = uVar5; + } + else { + uVar5 = FUN_0048ee14((uint)*pbVar3,(uint)*pbVar2,(uint)bVar1); + *param_2 = uVar5; + } + param_2 = param_2 + 1; + local_8 = local_8 + 1; + } while (local_8 < param_4); + } + } + else if ((*(int *)(param_1 + 0x1c) == 4) && (local_8 = 0, 0 < param_4)) { + do { + bVar1 = *param_3; + pbVar2 = param_3 + 1; + pbVar3 = param_3 + 2; + pbVar4 = param_3 + 3; + param_3 = param_3 + 4; + local_18 = local_18 | bVar1 != 0xff; + if (param_6 == 0) { + uVar5 = FUN_0048eda0((uint)*pbVar4,(uint)*pbVar3,(uint)*pbVar2,(uint)bVar1); + *param_2 = uVar5; + } + else { + uVar5 = FUN_0048ee14((uint)*pbVar4,(uint)*pbVar3,(uint)*pbVar2); + *param_2 = uVar5; + } + param_2 = param_2 + 1; + local_8 = local_8 + 1; + } while (local_8 < param_4); + } + if (param_6 == 0) { + *(uint *)(param_1 + 0x20) = local_18 | 2; + } + else { + *(undefined4 *)(param_1 + 0x20) = 0; + } + return; +} + + + +/* @0048f0bc file=? name=FUN_0048f0bc */ + +undefined4 * __cdecl FUN_0048f0bc(LPCSTR param_1) + +{ + undefined *puVar1; + int *piVar2; + int iVar3; + int iVar4; + int iVar5; + char local_30 [4]; + undefined4 local_2c; + undefined4 local_28; + undefined4 local_24 [5]; + int local_10; + int local_c; + undefined4 *local_8; + + piVar2 = FUN_004d6f54(param_1,&DAT_005081ed); + if (DAT_005081dc == (byte *)0x0) { + DAT_005081dc = (byte *)FUN_00452c38(0x40000); + } + if (DAT_005081dc == (byte *)0x0) { + FUN_004d771c(s_Failed_to_malloc_temporary_textu_005081f0); + local_8 = (undefined4 *)0x0; + } + else { + DAT_0050847c = 1; + if (piVar2 == (int *)0x0) { + FUN_004d771c(s_failed_to_open_file__s_00508229); + local_8 = (undefined4 *)0x0; + } + else { + FUN_004d71e0(local_30,1,8,piVar2); + puVar1 = PTR_s_DIV_BSL2_005081d4; + iVar3 = FUN_004d4a78(PTR_s_DIV_BSL2_005081d4); + iVar3 = FUN_004d4ae0(local_30,puVar1,iVar3); + if (iVar3 == 0) { + local_c = 0; + DAT_005081d8 = 0; + FUN_004d71e0(local_30,1,0x10,piVar2); + iVar3 = FUN_0048ed5c((undefined4 *)local_30); + iVar4 = FUN_0048ed5c(&local_2c); + local_10 = FUN_0048ed5c(&local_28); + iVar5 = FUN_0048ed5c(local_24); + if (local_10 == 4) { + if ((iVar3 == 0x100) && (iVar4 == 0x100)) { + local_c = 1; + } + if ((iVar3 == 0x80) && (iVar4 == 0x80)) { + local_c = 1; + } + if ((iVar3 == 0x80) && (iVar4 == 0x40)) { + local_c = 1; + } + if ((iVar3 == 0x40) && (iVar4 == 0x40)) { + local_c = 1; + } + if (local_c == 0) { + FUN_004d771c(s_Cannot_load_bsl_file_with_x_size_0050826d); + FUN_004d6b08(piVar2); + local_8 = (undefined4 *)0x0; + } + else { + FUN_004d71e0((char *)DAT_005081dc,1,iVar5,piVar2); + local_8 = (undefined4 *)FUN_00489788(); + FUN_0048c32c((int)local_8,iVar3,iVar4); + FUN_0048c3c8((int)local_8,4); + FUN_004d71e0((char *)DAT_005081dc,4,iVar3 * iVar4,piVar2); + FUN_004d6b08(piVar2); + FUN_0048d5b0(local_8); + FUN_0048c460((int)local_8,DAT_005081dc,iVar3,iVar4); + } + } + else { + FUN_004d771c(s_Cannot_load_bsl_file_with_z_size_00508241); + FUN_004d6b08(piVar2); + local_8 = (undefined4 *)0x0; + } + } + else { + local_8 = (undefined4 *)0x0; + } + } + } + return local_8; +} + + + +/* @0048f2c8 file=? name=FUN_0048f2c8 */ + +undefined4 FUN_0048f2c8(LPCSTR param_1,int param_2) + +{ + undefined *puVar1; + int *piVar2; + undefined4 uVar3; + int iVar4; + int iVar5; + int iVar6; + char acStack_38 [4]; + undefined4 uStack_34; + undefined4 uStack_30; + undefined4 auStack_2c [5]; + int iStack_18; + int iStack_14; + int iStack_10; + int iStack_c; + undefined4 *puStack_8; + + piVar2 = FUN_004d6f54(param_1,&DAT_005082a0); + puStack_8 = (undefined4 *)FUN_0048c2f0(param_2); + if (puStack_8 == (undefined4 *)0x0) { + uVar3 = 0; + } + else { + if (DAT_005081dc == (byte *)0x0) { + DAT_005081dc = (byte *)FUN_00452c38(0x40000); + } + if (DAT_005081dc == (byte *)0x0) { + FUN_004d771c(s_Failed_to_malloc_temporary_textu_005082a3); + uVar3 = 0; + } + else { + DAT_0050847c = 1; + if (piVar2 == (int *)0x0) { + FUN_004d771c(s_failed_to_open_file__s_005082dc); + uVar3 = 0; + } + else { + FUN_004d71e0(acStack_38,1,8,piVar2); + puVar1 = PTR_s_DIV_BSL2_005081d4; + iVar4 = FUN_004d4a78(PTR_s_DIV_BSL2_005081d4); + iVar4 = FUN_004d4ae0(acStack_38,puVar1,iVar4); + if (iVar4 == 0) { + iStack_c = 0; + DAT_005081d8 = 0; + FUN_004d71e0(acStack_38,1,0x10,piVar2); + iVar4 = FUN_0048ed5c((undefined4 *)acStack_38); + iVar5 = FUN_0048ed5c(&uStack_34); + iStack_18 = FUN_0048ed5c(&uStack_30); + iVar6 = FUN_0048ed5c(auStack_2c); + if (iStack_18 == 4) { + if ((iVar4 == 0x100) && (iVar5 == 0x100)) { + iStack_c = 1; + } + if ((iVar4 == 0x80) && (iVar5 == 0x80)) { + iStack_c = 1; + } + if ((iVar4 == 0x80) && (iVar5 == 0x40)) { + iStack_c = 1; + } + if ((iVar4 == 0x40) && (iVar5 == 0x40)) { + iStack_c = 1; + } + if (iStack_c == 0) { + FUN_004d771c(s_Cannot_load_bsl_file_with_x_size_00508320); + FUN_004d6b08(piVar2); + uVar3 = 0; + } + else { + FUN_004d71e0((char *)DAT_005081dc,1,iVar6,piVar2); + FUN_0048c378((int)puStack_8,&iStack_10,&iStack_14); + if ((iVar4 == iStack_10) && (iVar5 == iStack_14)) { + FUN_0048c32c((int)puStack_8,iVar4,iVar5); + FUN_0048c3c8((int)puStack_8,4); + FUN_004d71e0((char *)DAT_005081dc,4,iVar4 * iVar5,piVar2); + FUN_004d6b08(piVar2); + FUN_0048d5b0(puStack_8); + FUN_0048c460((int)puStack_8,DAT_005081dc,iVar4,iVar5); + uVar3 = 1; + } + else { + FUN_004d771c(s_Cannot_replace_bsl_file__>_size_m_00508353); + FUN_004d6b08(piVar2); + uVar3 = 0; + } + } + } + else { + FUN_004d771c(s_Cannot_load_bsl_file_with_z_size_005082f4); + FUN_004d6b08(piVar2); + uVar3 = 0; + } + } + else { + uVar3 = 0; + } + } + } + } + return uVar3; +} + + + +/* @0048f2ce file=? name=FUN_0048f2ce */ + +undefined4 FUN_0048f2ce(void) + +{ + undefined *puVar1; + int *piVar2; + undefined4 uVar3; + int iVar4; + int iVar5; + int iVar6; + int unaff_EBP; + + piVar2 = FUN_004d6f54(*(LPCSTR *)(unaff_EBP + 8),&DAT_005082a0); + uVar3 = FUN_0048c2f0(*(int *)(unaff_EBP + 0xc)); + *(undefined4 *)(unaff_EBP + -4) = uVar3; + if (*(int *)(unaff_EBP + -4) == 0) { + uVar3 = 0; + } + else { + if (DAT_005081dc == (byte *)0x0) { + DAT_005081dc = (byte *)FUN_00452c38(0x40000); + } + if (DAT_005081dc == (byte *)0x0) { + FUN_004d771c(s_Failed_to_malloc_temporary_textu_005082a3); + uVar3 = 0; + } + else { + DAT_0050847c = 1; + if (piVar2 == (int *)0x0) { + FUN_004d771c(s_failed_to_open_file__s_005082dc); + uVar3 = 0; + } + else { + FUN_004d71e0((char *)(unaff_EBP + -0x34),1,8,piVar2); + puVar1 = PTR_s_DIV_BSL2_005081d4; + iVar4 = FUN_004d4a78(PTR_s_DIV_BSL2_005081d4); + iVar4 = FUN_004d4ae0((char *)(unaff_EBP + -0x34),puVar1,iVar4); + if (iVar4 == 0) { + *(undefined4 *)(unaff_EBP + -8) = 0; + DAT_005081d8 = 0; + FUN_004d71e0((char *)(unaff_EBP + -0x34),1,0x10,piVar2); + iVar4 = FUN_0048ed5c((undefined4 *)(unaff_EBP + -0x34)); + iVar5 = FUN_0048ed5c((undefined4 *)(unaff_EBP + -0x30)); + uVar3 = FUN_0048ed5c((undefined4 *)(unaff_EBP + -0x2c)); + *(undefined4 *)(unaff_EBP + -0x14) = uVar3; + iVar6 = FUN_0048ed5c((undefined4 *)(unaff_EBP + -0x28)); + if (*(int *)(unaff_EBP + -0x14) == 4) { + if ((iVar4 == 0x100) && (iVar5 == 0x100)) { + *(undefined4 *)(unaff_EBP + -8) = 1; + } + if ((iVar4 == 0x80) && (iVar5 == 0x80)) { + *(undefined4 *)(unaff_EBP + -8) = 1; + } + if ((iVar4 == 0x80) && (iVar5 == 0x40)) { + *(undefined4 *)(unaff_EBP + -8) = 1; + } + if ((iVar4 == 0x40) && (iVar5 == 0x40)) { + *(undefined4 *)(unaff_EBP + -8) = 1; + } + if (*(int *)(unaff_EBP + -8) == 0) { + FUN_004d771c(s_Cannot_load_bsl_file_with_x_size_00508320); + FUN_004d6b08(piVar2); + uVar3 = 0; + } + else { + FUN_004d71e0((char *)DAT_005081dc,1,iVar6,piVar2); + FUN_0048c378(*(int *)(unaff_EBP + -4),(undefined4 *)(unaff_EBP + -0xc), + (undefined4 *)(unaff_EBP + -0x10)); + if ((iVar4 == *(int *)(unaff_EBP + -0xc)) && (iVar5 == *(int *)(unaff_EBP + -0x10))) { + FUN_0048c32c(*(int *)(unaff_EBP + -4),iVar4,iVar5); + FUN_0048c3c8(*(int *)(unaff_EBP + -4),4); + FUN_004d71e0((char *)DAT_005081dc,4,iVar4 * iVar5,piVar2); + FUN_004d6b08(piVar2); + FUN_0048d5b0(*(undefined4 **)(unaff_EBP + -4)); + FUN_0048c460(*(int *)(unaff_EBP + -4),DAT_005081dc,iVar4,iVar5); + uVar3 = 1; + } + else { + FUN_004d771c(s_Cannot_replace_bsl_file__>_size_m_00508353); + FUN_004d6b08(piVar2); + uVar3 = 0; + } + } + } + else { + FUN_004d771c(s_Cannot_load_bsl_file_with_z_size_005082f4); + FUN_004d6b08(piVar2); + uVar3 = 0; + } + } + else { + uVar3 = 0; + } + } + } + } + return uVar3; +} + + + +/* @0048f52c file=? name=FUN_0048f52c */ + +void __cdecl FUN_0048f52c(undefined4 *param_1,int param_2,undefined4 *param_3) + +{ + byte bVar1; + uint uVar2; + undefined4 uVar3; + byte *pbVar4; + int unaff_ESI; + int iVar5; + int local_24; + char local_20; + char local_1f [3]; + byte local_1c; + byte local_1b; + undefined1 local_1a; + byte local_19; + byte *local_18; + int local_14; + int local_10; + int local_c; + int local_8; + + if (*(char *)(param_2 + 0x12) == '\x01') { + local_8 = 1; + } + else if ((*(char *)(param_2 + 0x12) == '\b') && (*(char *)(param_2 + 1) == '\0')) { + local_8 = 1; + } + else if (*(char *)(param_2 + 0x12) == ' ') { + local_8 = 4; + } + else { + local_8 = 3; + } + local_18 = (byte *)FUN_00452c38((uint)*(ushort *)(param_2 + 0xe) * + (uint)*(ushort *)(param_2 + 0x10) * local_8); + if (local_18 == (byte *)0x0) { + FUN_0049a300(0,s_dpl_tgaRead_failed_to_allocate_m_0050838b); + } + else { + bVar1 = *(byte *)(param_2 + 0x13); + if ((bVar1 & 0x20) == 0) { + if ((bVar1 & 0x10) == 0) { + local_c = local_8; + local_10 = 0; + pbVar4 = local_18; + } + else { + local_c = -local_8; + local_10 = (uint)*(ushort *)(param_2 + 0xe) * 2 * local_8; + pbVar4 = local_18 + (*(ushort *)(param_2 + 0xe) - 1) * local_8; + } + } + else if ((bVar1 & 0x10) == 0) { + local_c = local_8; + local_10 = -((uint)*(ushort *)(param_2 + 0xe) * 2 * local_8); + pbVar4 = local_18 + + (uint)*(ushort *)(param_2 + 0xe) * (*(ushort *)(param_2 + 0x10) - 1) * local_8; + } + else { + local_c = -local_8; + local_10 = 0; + pbVar4 = local_18 + + ((uint)*(ushort *)(param_2 + 0xe) * (uint)*(ushort *)(param_2 + 0x10) + -1) * local_8 + ; + } + if (*(byte *)(param_2 + 2) < 4) { + for (local_14 = 0; local_14 < (int)(uint)*(ushort *)(param_2 + 0x10); local_14 = local_14 + 1) + { + bVar1 = *(byte *)(param_2 + 0x12); + if (bVar1 < 0x11) { + if (bVar1 == 0x10) { + for (iVar5 = 0; iVar5 < (int)(uint)*(ushort *)(param_2 + 0xe); iVar5 = iVar5 + 1) { + uVar2 = FUN_00492cb4(param_1); + *pbVar4 = (byte)((int)(uVar2 & 0xffff) >> 7) & 0xf8; + pbVar4[1] = (byte)((int)(uVar2 & 0xffff) >> 2) & 0xf8; + pbVar4[2] = (byte)(uVar2 << 3); + pbVar4 = pbVar4 + local_c; + } + } + else if (bVar1 == 1) { + iVar5 = 0; + while (iVar5 < (int)(uint)*(ushort *)(param_2 + 0xe)) { + uVar3 = FUN_00492c84(param_1); + bVar1 = 0x80; + for (; (bVar1 != 0 && (iVar5 < (int)(uint)*(ushort *)(param_2 + 0xe))); + iVar5 = iVar5 + 1) { + if ((bVar1 & (byte)uVar3) == 0) { + *pbVar4 = 0xff; + } + else { + *pbVar4 = 0; + } + pbVar4 = pbVar4 + local_c; + bVar1 = bVar1 >> 1; + } + } + } + else if (bVar1 == 8) { + if (local_8 == 1) { + for (iVar5 = 0; iVar5 < (int)(uint)*(ushort *)(param_2 + 0xe); iVar5 = iVar5 + 1) { + uVar3 = FUN_00492c84(param_1); + *pbVar4 = (byte)uVar3; + pbVar4 = pbVar4 + local_c; + } + } + else { + for (iVar5 = 0; iVar5 < (int)(uint)*(ushort *)(param_2 + 0xe); iVar5 = iVar5 + 1) { + uVar2 = FUN_00492c84(param_1); + FUN_004d4918((undefined4 *)pbVar4, + (undefined4 *)((uVar2 & 0xff) * 3 + param_2 + 0x14),3); + pbVar4 = pbVar4 + local_c; + } + } + } + } + else if (bVar1 == 0x18) { + for (iVar5 = 0; iVar5 < (int)(uint)*(ushort *)(param_2 + 0xe); iVar5 = iVar5 + 1) { + FUN_00492f10(param_1,(char *)pbVar4,3); + pbVar4 = pbVar4 + local_c; + } + } + else if (bVar1 == 0x20) { + for (iVar5 = 0; iVar5 < (int)(uint)*(ushort *)(param_2 + 0xe); iVar5 = iVar5 + 1) { + FUN_00492f10(param_1,(char *)(pbVar4 + 1),3); + uVar2 = FUN_00492c84(param_1); + if ((uVar2 & 0x80) == 0) { + *pbVar4 = 0xff; + } + else { + *pbVar4 = (char)uVar2 * '\x02'; + } + pbVar4 = pbVar4 + local_c; + } + } + pbVar4 = pbVar4 + local_10; + } + } + else { + for (local_14 = 0; local_14 < (int)(uint)*(ushort *)(param_2 + 0x10); local_14 = local_14 + 1) + { + while (unaff_ESI < (int)(uint)*(ushort *)(param_2 + 0xe)) { + uVar2 = FUN_00492c84(param_1); + local_24 = (uVar2 & 0x7f) + 1; + if ((uVar2 & 0x80) == 0) { + bVar1 = *(byte *)(param_2 + 0x12); + if (bVar1 < 0x11) { + if (bVar1 == 0x10) { + while (local_24 != 0) { + uVar2 = FUN_00492cb4(param_1); + *pbVar4 = (byte)((int)(uVar2 & 0xffff) >> 7) & 0xf8; + pbVar4[1] = (byte)((int)(uVar2 & 0xffff) >> 2) & 0xf8; + pbVar4[2] = (byte)(uVar2 << 3); + pbVar4 = pbVar4 + local_c; + unaff_ESI = unaff_ESI + 1; + local_24 = local_24 + -1; + } + } + else if (bVar1 == 1) { + while (iVar5 = local_24 + -1, local_24 != 0) { + uVar3 = FUN_00492c84(param_1); + local_19 = (byte)uVar3; + bVar1 = 0x80; + for (; (local_24 = iVar5, bVar1 != 0 && + (unaff_ESI < (int)(uint)*(ushort *)(param_2 + 0xe))); + unaff_ESI = unaff_ESI + 1) { + if ((local_19 & bVar1) == 0) { + *pbVar4 = 0xff; + } + else { + *pbVar4 = 0; + } + pbVar4 = pbVar4 + local_c; + bVar1 = bVar1 >> 1; + } + } + } + else if (bVar1 == 8) { + if (local_8 == 1) { + while (local_24 != 0) { + uVar3 = FUN_00492c84(param_1); + *pbVar4 = (byte)uVar3; + pbVar4 = pbVar4 + local_c; + unaff_ESI = unaff_ESI + 1; + local_24 = local_24 + -1; + } + } + else { + while (local_24 != 0) { + uVar2 = FUN_00492c84(param_1); + local_19 = (byte)uVar2; + FUN_004d4918((undefined4 *)pbVar4, + (undefined4 *)((uVar2 & 0xff) * 3 + param_2 + 0x14),3); + pbVar4 = pbVar4 + local_c; + unaff_ESI = unaff_ESI + 1; + local_24 = local_24 + -1; + } + } + } + } + else if (bVar1 == 0x18) { + while (local_24 != 0) { + FUN_00492f10(param_1,(char *)pbVar4,3); + pbVar4 = pbVar4 + local_c; + unaff_ESI = unaff_ESI + 1; + local_24 = local_24 + -1; + } + } + else if (bVar1 == 0x20) { + while (local_24 != 0) { + FUN_00492f10(param_1,(char *)(pbVar4 + 1),3); + uVar2 = FUN_00492c84(param_1); + if ((uVar2 & 0x80) == 0) { + *pbVar4 = 0xff; + } + else { + *pbVar4 = (char)uVar2 * '\x02'; + } + pbVar4 = pbVar4 + local_c; + unaff_ESI = unaff_ESI + 1; + local_24 = local_24 + -1; + } + } + } + else { + bVar1 = *(byte *)(param_2 + 0x12); + if (bVar1 < 0x11) { + if (bVar1 == 0x10) { + uVar2 = FUN_00492cb4(param_1); + local_1c = (byte)((int)(uVar2 & 0xffff) >> 7) & 0xf8; + local_1b = (byte)((int)(uVar2 & 0xffff) >> 2) & 0xf8; + local_1a = (undefined1)(uVar2 << 3); + while (local_24 != 0) { + FUN_004d4918((undefined4 *)pbVar4,(undefined4 *)&local_1c,3); + pbVar4 = pbVar4 + local_c; + unaff_ESI = unaff_ESI + 1; + local_24 = local_24 + -1; + } + } + else if (bVar1 == 1) { + uVar3 = FUN_00492c84(param_1); + local_19 = (byte)uVar3; + while (iVar5 = local_24 + -1, local_24 != 0) { + bVar1 = 0x80; + for (; (local_24 = iVar5, bVar1 != 0 && + (unaff_ESI < (int)(uint)*(ushort *)(param_2 + 0xe))); + unaff_ESI = unaff_ESI + 1) { + if ((local_19 & bVar1) == 0) { + *pbVar4 = 0xff; + } + else { + *pbVar4 = 0; + } + pbVar4 = pbVar4 + local_c; + bVar1 = bVar1 >> 1; + } + } + } + else if (bVar1 == 8) { + uVar3 = FUN_00492c84(param_1); + local_19 = (byte)uVar3; + if (local_8 == 1) { + while (local_24 != 0) { + *pbVar4 = local_19; + pbVar4 = pbVar4 + local_c; + unaff_ESI = unaff_ESI + 1; + local_24 = local_24 + -1; + } + } + else { + while (local_24 != 0) { + FUN_004d4918((undefined4 *)pbVar4, + (undefined4 *)((uint)local_19 * 3 + param_2 + 0x14),3); + pbVar4 = pbVar4 + local_c; + unaff_ESI = unaff_ESI + 1; + local_24 = local_24 + -1; + } + } + } + } + else if (bVar1 == 0x18) { + FUN_00492f10(param_1,(char *)&local_1c,3); + while (local_24 != 0) { + FUN_004d4918((undefined4 *)pbVar4,(undefined4 *)&local_1c,3); + pbVar4 = pbVar4 + local_c; + unaff_ESI = unaff_ESI + 1; + local_24 = local_24 + -1; + } + } + else if (bVar1 == 0x20) { + FUN_00492f10(param_1,local_1f,3); + uVar2 = FUN_00492c84(param_1); + if ((uVar2 & 0x80) == 0) { + local_20 = -1; + } + else { + local_20 = (char)uVar2 * '\x02'; + } + while (local_24 != 0) { + FUN_004d4918((undefined4 *)pbVar4,(undefined4 *)&local_20,4); + pbVar4 = pbVar4 + local_c; + unaff_ESI = unaff_ESI + 1; + local_24 = local_24 + -1; + } + } + } + } + pbVar4 = pbVar4 + local_10; + } + } + FUN_0048c32c((int)param_3,(uint)*(ushort *)(param_2 + 0xe),(uint)*(ushort *)(param_2 + 0x10)); + FUN_0048c3c8((int)param_3,local_8); + FUN_0048c548((int)param_3,local_18,0, + (uint)*(ushort *)(param_2 + 0xe) * (uint)*(ushort *)(param_2 + 0x10)); + FUN_00452c88((int *)local_18); + FUN_0048d5b0(param_3); + } + return; +} + + + +/* @0048fb6c file=? name=FUN_0048fb6c */ + +void __cdecl FUN_0048fb6c(undefined4 *param_1,undefined4 *param_2) + +{ + undefined4 uVar1; + int iVar2; + byte *pbVar3; + uint uVar4; + byte local_318; + char local_317; + char local_316; + ushort local_314; + ushort local_312; + char local_310; + undefined2 local_30e; + undefined2 local_30c; + undefined2 local_30a; + undefined2 local_308; + undefined1 local_306; + undefined1 local_305; + byte local_304 [768]; + + uVar1 = FUN_00492c84(param_1); + local_318 = (byte)uVar1; + uVar1 = FUN_00492c84(param_1); + local_317 = (char)uVar1; + uVar1 = FUN_00492c84(param_1); + local_316 = (char)uVar1; + uVar1 = FUN_00492cb4(param_1); + local_314 = (ushort)uVar1; + uVar1 = FUN_00492cb4(param_1); + local_312 = (ushort)uVar1; + uVar1 = FUN_00492c84(param_1); + local_310 = (char)uVar1; + uVar1 = FUN_00492cb4(param_1); + local_30e = (undefined2)uVar1; + uVar1 = FUN_00492cb4(param_1); + local_30c = (undefined2)uVar1; + uVar1 = FUN_00492cb4(param_1); + local_30a = (undefined2)uVar1; + uVar1 = FUN_00492cb4(param_1); + local_308 = (undefined2)uVar1; + uVar1 = FUN_00492c84(param_1); + local_306 = (undefined1)uVar1; + uVar1 = FUN_00492c84(param_1); + local_305 = (undefined1)uVar1; + if ((((local_316 == '\x01') || (local_316 == '\x02')) || (local_316 == '\x03')) || + (((local_316 == '\t' || (local_316 == '\n')) || (local_316 == '\v')))) { + FUN_00492ba0(param_1,(uint)local_318); + if (local_317 != '\0') { + if (local_310 == '\x10') { + uVar4 = (uint)local_314; + pbVar3 = local_304 + uVar4 * 3; + for (; (int)uVar4 < (int)(uint)local_312; uVar4 = uVar4 + 1) { + iVar2 = FUN_00492cb4(param_1); + *pbVar3 = (byte)((short)iVar2 >> 7) & 0xf8; + pbVar3[1] = (byte)((short)iVar2 >> 2) & 0xf8; + pbVar3[2] = (byte)(iVar2 << 3); + pbVar3 = pbVar3 + 3; + } + } + else if (local_310 == '\x18') { + FUN_00492f10(param_1,(char *)(local_304 + (uint)local_314 * 3),(uint)local_312 * 3); + } + } + FUN_0048f52c(param_1,(int)&local_318,param_2); + } + else { + FUN_0049a300(0,s_dpl_tgaRead___not_a_recognised_i_005083b2); + } + return; +} + + + +/* @0048fd04 file=? name=FUN_0048fd04 */ + +void __cdecl FUN_0048fd04(LPCSTR param_1,undefined4 *param_2) + +{ + undefined4 *puVar1; + int *piVar2; + + puVar1 = (undefined4 *)FUN_0048c2f0((int)param_2); + DAT_005081d8 = (uint)(param_2[6] == 10); + if (param_1 == (LPCSTR)0x0) { + FUN_0049a300(0,s_dpl_tgaReplace_got_no_file_to_op_005083dd); + } + else if (puVar1 == (undefined4 *)0x0) { + FUN_0049a300(0,s_dpl_tgaReplace_got_NULL_texmap_00508400); + } + else { + if ((DAT_005081e0 == (int *)0x0) && + (DAT_005081e0 = (int *)FUN_00452c38(0x4000), DAT_005081e0 == (int *)0x0)) { + FUN_0049a300(0,s_dpl_tgaRead_failed_to_allocate_r_0050841f); + return; + } + piVar2 = FUN_004930c0(param_1,0x4000,DAT_005081e0,1); + if (piVar2 == (int *)0x0) { + FUN_0049a300(0,s_dpl_tgaRead_failed_to_open_file___0050844a); + } + else { + FUN_0048fb6c(piVar2,puVar1); + FUN_0048d55c(param_2); + FUN_00493188(piVar2); + } + } + return; +} + + + +/* @0048fdd8 file=? name=FUN_0048fdd8 */ + +void FUN_0048fdd8(void) + +{ + PTR_s_DIV_BSL2_005081d4 = s_DIV_BSL2_00508470; + DAT_005081d8 = 0; + DAT_005081dc = 0; + DAT_005081e0 = 0; + return; +} + + + +/* @0048fdf8 file=? name=FUN_0048fdf8 */ + +void __cdecl +FUN_0048fdf8(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5 + ) + +{ + if (param_1 != 0) { + *(undefined4 *)(param_1 + 0x2c) = param_2; + *(undefined4 *)(param_1 + 0x30) = param_3; + *(undefined4 *)(param_1 + 0x34) = param_4; + *(undefined4 *)(param_1 + 0x38) = param_5; + return; + } + FUN_004d771c(s_NULL_texture_in_dpl_SetTextureSc_00508488); + FUN_004dee24(9); + return; +} + + + +/* @0048fe34 file=? name=FUN_0048fe34 */ + +void __cdecl FUN_0048fe34(undefined4 param_1) + +{ + DAT_005078e0 = param_1; + return; +} + + + +/* @0048fe44 file=? name=FUN_0048fe44 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_0048fe44(undefined4 param_1) + +{ + _DAT_00507930 = param_1; + return; +} + + + +/* @0048fe54 file=? name=FUN_0048fe54 */ + +void __cdecl FUN_0048fe54(int param_1,undefined4 param_2) + +{ + if (param_1 != 0) { + *(undefined4 *)(param_1 + 0x58) = param_2; + } + return; +} + + + +/* @0048fe68 file=? name=FUN_0048fe68 */ + +void __cdecl FUN_0048fe68(int param_1,int param_2) + +{ + if (param_1 != 0) { + if (param_2 != 0) { + *(uint *)(param_1 + 0x58) = *(uint *)(param_1 + 0x58) | 0x400; + return; + } + *(uint *)(param_1 + 0x58) = *(uint *)(param_1 + 0x58) & 0xfffffbff; + } + return; +} + + + +/* @0048fe94 file=? name=FUN_0048fe94 */ + +void __cdecl FUN_0048fe94(int param_1,undefined4 param_2) + +{ + if (param_1 != 0) { + *(undefined4 *)(param_1 + 0x60) = param_2; + } + return; +} + + + +/* @0048fea8 file=? name=FUN_0048fea8 */ + +void __cdecl FUN_0048fea8(int param_1,uint param_2) + +{ + *(uint *)(param_1 + 0x58) = *(uint *)(param_1 + 0x58) & 0xf0ffffff | (param_2 & 0xf) << 0x18; + return; +} + + + +/* @0048fec8 file=? name=FUN_0048fec8 */ + +uint __cdecl FUN_0048fec8(int param_1) + +{ + return *(int *)(param_1 + 0x58) >> 0x18 & 0xf; +} + + + +/* @0048fedc file=? name=FUN_0048fedc */ + +void __cdecl FUN_0048fedc(int param_1,undefined4 param_2,undefined4 param_3) + +{ + *(uint *)(param_1 + 0x58) = *(uint *)(param_1 + 0x58) & 0xf0ffffff | 0x1000000; + *(undefined4 *)(param_1 + 0x18) = param_2; + *(undefined4 *)(param_1 + 0x1c) = param_3; + return; +} + + + +/* @0048ff04 file=? name=FUN_0048ff04 */ + +void __cdecl FUN_0048ff04(int param_1,undefined4 param_2,undefined4 param_3) + +{ + *(uint *)(param_1 + 0x58) = *(uint *)(param_1 + 0x58) & 0xf0ffffff | 0x2000000; + *(undefined4 *)(param_1 + 0x18) = param_2; + *(undefined4 *)(param_1 + 0x1c) = param_3; + return; +} + + + +/* @0048ff2c file=? name=FUN_0048ff2c */ + +void __cdecl FUN_0048ff2c(int param_1,undefined4 param_2,undefined4 param_3) + +{ + *(uint *)(param_1 + 0x58) = *(uint *)(param_1 + 0x58) & 0xf0ffffff | 0x3000000; + *(undefined4 *)(param_1 + 0x18) = param_2; + *(undefined4 *)(param_1 + 0x1c) = param_3; + return; +} + + + +/* @0048ff54 file=? name=FUN_0048ff54 */ + +void __cdecl FUN_0048ff54(int param_1,undefined4 *param_2,undefined4 *param_3) + +{ + *(uint *)(param_1 + 0x58) = *(uint *)(param_1 + 0x58) & 0xf0ffffff | 0x4000000; + *(undefined4 *)(param_1 + 0x18) = *param_2; + *(undefined4 *)(param_1 + 0x1c) = param_2[1]; + *(undefined4 *)(param_1 + 0x20) = param_2[2]; + *(undefined4 *)(param_1 + 0x24) = param_2[3]; + *(undefined4 *)(param_1 + 0x28) = *param_3; + *(undefined4 *)(param_1 + 0x2c) = param_3[1]; + *(undefined4 *)(param_1 + 0x30) = param_3[2]; + return; +} + + + +/* @0048ffa4 file=? name=FUN_0048ffa4 */ + +void __cdecl FUN_0048ffa4(int *param_1) + +{ + uint uVar1; + uint uVar2; + int *piVar3; + int unaff_ESI; + int iVar4; + int local_c; + + local_c = 0; + iVar4 = 0x78; + piVar3 = param_1; + while (*piVar3 != 0) { + uVar1 = *(int *)(*piVar3 + 0x58) >> 0x18 & 0xf; + uVar2 = uVar1 - 1; + if (uVar1 == 0) { + unaff_ESI = 0xd; + } + else if (uVar2 < 3) { + unaff_ESI = 3; + } + else if (uVar2 == 3) { + unaff_ESI = 9; + } + else { + FUN_004d771c(s_Unknown_dcs_type_0x_x_in_flush_a_005084ae); + FUN_004dee24(9); + } + if (iVar4 - unaff_ESI < 0) { + FUN_0048e440(param_1,local_c); + local_c = 0; + iVar4 = 0x78; + param_1 = piVar3; + } + else { + iVar4 = iVar4 - unaff_ESI; + local_c = local_c + 1; + piVar3 = piVar3 + 1; + } + } + if (local_c != 0) { + FUN_0048e440(param_1,local_c); + } + return; +} + + + +/* @0049005c file=? name=FUN_0049005c */ + +undefined4 * __cdecl FUN_0049005c(undefined4 *param_1,undefined4 *param_2) + +{ + *param_2 = 0; + *param_1 = param_2; + return param_1 + 1; +} + + + +/* @00490070 file=? name=FUN_00490070 */ + +int __cdecl FUN_00490070(undefined4 *param_1) + +{ + int *piVar1; + int iVar2; + int iVar3; + + iVar3 = 0; + piVar1 = (int *)*param_1; + while (piVar1 != (int *)0x0) { + param_1 = param_1 + 1; + if (*piVar1 == 0) { + switch(piVar1[3]) { + case 3: + iVar2 = 0x70; + break; + case 4: + iVar2 = 0x38; + break; + case 5: + iVar2 = 0x8c; + break; + case 6: + iVar2 = 0x3c; + break; + case 7: + iVar2 = 0x7c; + break; + case 8: + iVar2 = 0x50; + break; + case 9: + iVar2 = 0x58; + break; + case 10: + iVar2 = 0x30; + break; + case 0xb: + iVar2 = 100; + break; + case 0xc: + iVar2 = 0x4c; + break; + case 0xd: + iVar2 = 0x24; + break; + case 0xe: + iVar2 = 0x2c; + break; + default: + FUN_004d771c(s_Unknown_type_0x_x_in_flush_nodes_005084ec); + return iVar3; + } + FUN_0048d350(piVar1,iVar2); + *piVar1 = 1; + iVar3 = iVar3 + 1; + } + piVar1 = (int *)*param_1; + } + return iVar3; +} + + + +/* @0049016c file=? name=FUN_0049016c */ + +void __cdecl FUN_0049016c(int param_1,int param_2,uint param_3) + +{ + if (param_2 != 0) { + *(uint *)(param_1 + 0x58) = *(uint *)(param_1 + 0x58) | param_3; + return; + } + *(uint *)(param_1 + 0x58) = *(uint *)(param_1 + 0x58) & ~param_3; + return; +} + + + +/* @00490188 file=? name=FUN_00490188 */ + +void __cdecl FUN_00490188(int param_1,int param_2) + +{ + FUN_0049016c(param_1,param_2,0x40); + return; +} + + + +/* @004901a0 file=? name=FUN_004901a0 */ + +void __cdecl FUN_004901a0(int param_1,int param_2) + +{ + FUN_0049016c(param_1,param_2,0x80); + return; +} + + + +/* @004901bc file=? name=FUN_004901bc */ + +void __cdecl FUN_004901bc(int param_1,int param_2) + +{ + FUN_0049016c(param_1,param_2,0x100); + return; +} + + + +/* @004901d8 file=? name=FUN_004901d8 */ + +void __cdecl FUN_004901d8(int param_1,int param_2) + +{ + FUN_0049016c(param_1,param_2,0x200); + return; +} + + + +/* @004901f4 file=? name=FUN_004901f4 */ + +void __cdecl FUN_004901f4(int param_1,int param_2) + +{ + FUN_0049016c(param_1,param_2,0x1000); + return; +} + + + +/* @00490210 file=? name=FUN_00490210 */ + +void __cdecl +FUN_00490210(undefined4 param_1,int param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5 + ,undefined4 param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9, + undefined4 param_10,undefined4 param_11,undefined4 param_12,undefined4 param_13, + undefined4 param_14,undefined4 param_15,undefined4 param_16,undefined4 param_17) + +{ + undefined4 local_84; + undefined4 local_80; + undefined4 local_7c; + undefined4 local_78; + undefined4 local_74; + undefined4 local_70; + undefined4 local_6c; + undefined4 local_68; + undefined4 local_64; + undefined4 local_60; + undefined4 local_5c; + undefined4 local_58; + undefined4 local_54; + undefined4 local_50; + undefined4 local_4c; + undefined4 local_48; + undefined4 local_44; + + local_84 = param_1; + if (param_2 == 0) { + local_80 = 0; + } + else { + local_80 = *(undefined4 *)(param_2 + 8); + } + local_7c = param_3; + local_78 = param_4; + local_74 = param_5; + local_70 = param_6; + local_6c = param_7; + local_68 = param_8; + local_64 = param_9; + local_60 = param_10; + local_5c = param_11; + local_58 = param_12; + local_54 = param_13; + local_50 = param_14; + local_4c = param_15; + local_48 = param_16; + local_44 = param_17; + FUN_0048e2c0((byte *)&local_84,0x44); + return; +} + + + +/* @004902a0 file=? name=FUN_004902a0 */ + +void __cdecl FUN_004902a0(int param_1,undefined4 param_2) + +{ + *(undefined4 *)(param_1 + 0x18) = param_2; + return; +} + + + +/* @004902b0 file=? name=FUN_004902b0 */ + +void __cdecl FUN_004902b0(int param_1,int param_2) + +{ + FUN_0048e5b0(*(undefined4 *)(param_1 + 8),0x80000092,0x80000005,0x80000004, + *(undefined4 *)(param_2 + 8)); + return; +} + + + +/* @004902e0 file=? name=FUN_004902e0 */ + +void __cdecl FUN_004902e0(undefined4 param_1) + +{ + FUN_0048e5b0(param_1,5,0x40000000,0x40000000,0); + return; +} + + + +/* @00490308 file=? name=FUN_00490308 */ + +void __cdecl FUN_00490308(int param_1) + +{ + FUN_0048e5b0(*(undefined4 *)(param_1 + 8),0x80000003,0x80000017,0x80000004,0); + return; +} + + + +/* @00490330 file=? name=FUN_00490330 */ + +void __cdecl FUN_00490330(int param_1,undefined4 param_2) + +{ + FUN_0048e5ec(*(undefined4 *)(param_1 + 8),param_2); + return; +} + + + +/* @00490348 file=? name=FUN_00490348 */ + +void __cdecl FUN_00490348(undefined4 *param_1) + +{ + FUN_0048e614(param_1); + return; +} + + + +/* @00490358 file=? name=FUN_00490358 */ + +void __cdecl FUN_00490358(int param_1) + +{ + FUN_0048e1b0(param_1); + return; +} + + + +/* @00490368 file=? name=FUN_00490368 */ + +void __cdecl FUN_00490368(undefined4 param_1,undefined4 param_2) + +{ + FUN_0048e288(param_1,param_2); + return; +} + + + +/* @00490380 file=? name=FUN_00490380 */ + +void FUN_00490380(void) + +{ + FUN_0048ea24(); + return; +} + + + +/* @0049038c file=? name=FUN_0049038c */ + +void __cdecl FUN_0049038c(undefined4 param_1) + +{ + DAT_0050792c = param_1; + return; +} + + + +/* @0049039c file=? name=FUN_0049039c */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl +FUN_0049039c(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) + +{ + _DAT_00508480 = param_1; + _DAT_00508484 = param_2; + FUN_0048e8d8(param_1,param_2,param_3,param_4); + return; +} + + + +/* @004903c8 file=? name=FUN_004903c8 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl +FUN_004903c8(float param_1,float param_2,undefined4 param_3,undefined4 param_4,undefined4 *param_5, + undefined4 *param_6,undefined4 *param_7,undefined4 *param_8,undefined4 *param_9, + undefined4 *param_10) + +{ + *param_5 = DAT_00524afc; + *param_6 = DAT_00524b00; + *param_7 = DAT_00524b04; + *param_8 = DAT_00524af0; + *param_9 = DAT_00524af8; + *param_10 = DAT_00524af4; + if ((_DAT_00508480 != param_1) || (_DAT_00508484 != param_2)) { + FUN_0049039c(param_1,param_2,param_3,param_4); + } + return DAT_00524aec; +} + + + +/* @00490444 file=? name=FUN_00490444 */ + +void FUN_00490444(void) + +{ + FUN_004d771c(s_cull__d_draw__d_frame__d_pxpl__d_0050850e); + return; +} + + + +/* @00490474 file=? name=FUN_00490474 */ + +void FUN_00490474(void) + +{ + FUN_0048a1a0(); + DAT_00524ae0 = 0; + FUN_0048e2dc(1); + return; +} + + + +/* @00490490 file=? name=FUN_00490490 */ + +void __cdecl FUN_00490490(int param_1,undefined4 param_2) + +{ + *(undefined4 *)(param_1 + 4) = param_2; + return; +} + + + +/* @004904a0 file=? name=FUN_004904a0 */ + +undefined4 __cdecl FUN_004904a0(int param_1) + +{ + return *(undefined4 *)(param_1 + 4); +} + + + +/* @004904ac file=? name=FUN_004904ac */ + +void __cdecl FUN_004904ac(int param_1) + +{ + if (param_1 != 0) { + *(uint *)(param_1 + 0x74) = *(uint *)(param_1 + 0x74) | 2; + } + return; +} + + + +/* @004904bc file=? name=FUN_004904bc */ + +void __cdecl FUN_004904bc(int param_1,int param_2,int param_3,undefined4 param_4,undefined4 param_5) + +{ + FUN_0048d968(param_1,param_2,param_3,param_4,param_5); + return; +} + + + +/* @004904dc file=? name=FUN_004904dc */ + +void __cdecl FUN_004904dc(int param_1,int param_2,int param_3,undefined4 param_4,undefined4 param_5) + +{ + FUN_0048d968(param_1,param_2,param_3,param_4,param_5); + return; +} + + + +/* @004904fc file=? name=FUN_004904fc */ + +void __cdecl FUN_004904fc(int param_1,int param_2,int param_3,undefined4 param_4,undefined4 param_5) + +{ + FUN_0048d968(param_1,param_2,param_3,param_4,param_5); + return; +} + + + +/* @0049051c file=? name=FUN_0049051c */ + +void __cdecl +FUN_0049051c(int param_1,int param_2,int param_3,undefined4 param_4,undefined4 param_5, + undefined4 param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9) + +{ + FUN_0048d9b4(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9); + return; +} + + + +/* @00490548 file=? name=FUN_00490548 */ + +void __cdecl +FUN_00490548(int param_1,int param_2,int param_3,undefined4 param_4,undefined4 param_5, + undefined4 param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9) + +{ + FUN_0048d9b4(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9); + return; +} + + + +/* @00490574 file=? name=FUN_00490574 */ + +void __cdecl FUN_00490574(int param_1,byte *param_2) + +{ + FUN_004d771c(s_sfx_texels_2D_00508539); + FUN_0048da1c(param_1,param_2,0x100,0x100,2,1); + FUN_004d771c(s_returning_from_sfx_texels_2D_00508548); + return; +} + + + +/* @004905b0 file=? name=FUN_004905b0 */ + +void __cdecl FUN_004905b0(undefined4 *param_1) + +{ + FUN_0048e6b0(param_1); + return; +} + + + +/* @004905c0 file=? name=FUN_004905c0 */ + +void __cdecl FUN_004905c0(int param_1,undefined4 param_2,undefined4 param_3) + +{ + *(undefined4 *)(param_1 + 0x44) = param_2; + *(undefined4 *)(param_1 + 0x48) = param_3; + return; +} + + + +/* @004905d4 file=? name=FUN_004905d4 */ + +void __cdecl FUN_004905d4(int param_1,undefined4 param_2) + +{ + *(undefined4 *)(param_1 + 0x68) = param_2; + return; +} + + + +/* @004905e4 file=? name=FUN_004905e4 */ + +undefined4 __cdecl FUN_004905e4(int param_1) + +{ + return *(undefined4 *)(param_1 + 0x68); +} + + + +/* @004905f0 file=? name=FUN_004905f0 */ + +void __cdecl FUN_004905f0(int param_1,undefined4 param_2) + +{ + *(undefined4 *)(param_1 + 0x38) = param_2; + return; +} + + + +/* @00490600 file=? name=FUN_00490600 */ + +undefined4 __cdecl FUN_00490600(int param_1) + +{ + return *(undefined4 *)(param_1 + 0x38); +} + + + +/* @0049060c file=? name=FUN_0049060c */ + +void FUN_0049060c(void) + +{ + DAT_005078e8 = 1; + return; +} + + + +/* @00490618 file=? name=FUN_00490618 */ + +void FUN_00490618(void) + +{ + DAT_005078e8 = 0; + return; +} + + + +/* @00490620 file=? name=FUN_00490620 */ + +void __cdecl FUN_00490620(int param_1,int param_2) + +{ + uint uVar1; + + uVar1 = *(uint *)(param_1 + 0x34) & 0xffffdfff; + if (param_2 != 0) { + *(uint *)(param_1 + 0x34) = uVar1 | 0x2000; + return; + } + *(uint *)(param_1 + 0x34) = uVar1; + return; +} + + + +/* @00490648 file=? name=FUN_00490648 */ + +undefined4 __cdecl FUN_00490648(int param_1) + +{ + if ((*(byte *)(param_1 + 0x35) & 0x20) != 0) { + return 1; + } + return 0; +} + + + +/* @00490660 file=? name=FUN_00490660 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_00490660(void) + +{ + DAT_0050847c = 0; + _DAT_00508480 = 0xbf800000; + _DAT_00508484 = 0xbf800000; + return; +} + + + +/* @0049067c file=? name=FUN_0049067c */ + +void __cdecl FUN_0049067c(int param_1,undefined4 *param_2) + +{ + FUN_0048eaac(param_1,param_2); + return; +} + + + +/* @00490694 file=? name=FUN_00490694 */ + +void __cdecl FUN_00490694(int param_1) + +{ + FUN_0048ec34(param_1); + return; +} + + + +/* @004906a4 file=? name=FUN_004906a4 */ + +void __cdecl FUN_004906a4(int param_1,undefined4 *param_2,undefined4 param_3,int param_4) + +{ + FUN_0048eb14(param_1,param_2,param_3,param_4); + return; +} + + + +/* @004906c4 file=? name=FUN_004906c4 */ + +void __cdecl FUN_004906c4(int param_1) + +{ + FUN_0048c8ac(param_1,0x666); + return; +} + + + +/* @004906dc file=? name=FUN_004906dc */ + +void __cdecl FUN_004906dc(int param_1,int param_2) + +{ + if (param_2 != 0) { + FUN_0048c8ac(param_1,0x668); + return; + } + FUN_0048c8ac(param_1,0x667); + return; +} + + + +/* @00490708 file=? name=FUN_00490708 */ + +void __cdecl FUN_00490708(int param_1,undefined4 param_2) + +{ + FUN_0048ec8c(param_1,param_2); + return; +} + + + +/* @00490720 file=? name=FUN_00490720 */ + +void FUN_00490720(void) + +{ + FUN_0048ecb8(); + return; +} + + + +/* @0049072c file=? name=FUN_0049072c */ + +void __cdecl FUN_0049072c(int *param_1) + +{ + FUN_0048ecdc(param_1,0x34); + return; +} + + + +/* @00490740 file=? name=FUN_00490740 */ + +void __cdecl FUN_00490740(int *param_1) + +{ + FUN_0048ecdc(param_1,0x33); + return; +} + + + +/* @00490754 file=? name=FUN_00490754 */ + +undefined1 * __cdecl FUN_00490754(undefined1 *param_1,undefined1 param_2) + +{ + *param_1 = param_2; + return param_1 + 1; +} + + + +/* @00490764 file=? name=FUN_00490764 */ + +undefined1 * __cdecl FUN_00490764(undefined1 *param_1,undefined1 param_2) + +{ + *param_1 = param_2; + return param_1 + 1; +} + + + +/* @00490774 file=? name=FUN_00490774 */ + +undefined1 * __cdecl FUN_00490774(undefined1 *param_1,undefined4 param_2) + +{ + if (DAT_00508568 != 0) { + *param_1 = (undefined1)param_2; + param_1[1] = param_2._1_1_; + return param_1 + 2; + } + *param_1 = param_2._1_1_; + param_1[1] = (undefined1)param_2; + return param_1 + 2; +} + + + +/* @004907a4 file=? name=FUN_004907a4 */ + +undefined1 * __cdecl FUN_004907a4(undefined1 *param_1,undefined4 param_2) + +{ + if (DAT_00508568 != 0) { + *param_1 = (undefined1)param_2; + param_1[1] = param_2._1_1_; + param_1[2] = param_2._2_1_; + param_1[3] = param_2._3_1_; + return param_1 + 4; + } + *param_1 = param_2._3_1_; + param_1[1] = param_2._2_1_; + param_1[2] = param_2._1_1_; + param_1[3] = (undefined1)param_2; + return param_1 + 4; +} + + + +/* @004907ec file=? name=FUN_004907ec */ + +undefined4 * __cdecl FUN_004907ec(undefined4 *param_1,undefined4 param_2) + +{ + if (DAT_00508568 != 0) { + *param_1 = param_2; + return param_1 + 1; + } + *(undefined1 *)param_1 = param_2._3_1_; + *(undefined1 *)((int)param_1 + 1) = param_2._2_1_; + *(undefined1 *)((int)param_1 + 2) = param_2._1_1_; + *(undefined1 *)((int)param_1 + 3) = (undefined1)param_2; + return param_1 + 1; +} + + + +/* @00490824 file=? name=FUN_00490824 */ + +undefined1 * __cdecl FUN_00490824(undefined1 *param_1,undefined4 param_2) + +{ + if (DAT_00508568 != 0) { + *param_1 = (undefined1)param_2; + param_1[1] = param_2._1_1_; + param_1[2] = param_2._2_1_; + param_1[3] = param_2._3_1_; + return param_1 + 4; + } + *param_1 = param_2._3_1_; + param_1[1] = param_2._2_1_; + param_1[2] = param_2._1_1_; + param_1[3] = (undefined1)param_2; + return param_1 + 4; +} + + + +/* @0049086c file=? name=FUN_0049086c */ + +int __cdecl FUN_0049086c(undefined4 *param_1,undefined4 *param_2,uint param_3) + +{ + FUN_004d4918(param_1,param_2,param_3); + return param_3 + (int)param_1; +} + + + +/* @0049088c file=? name=FUN_0049088c */ + +undefined4 * __cdecl FUN_0049088c(undefined4 *param_1,undefined4 *param_2,uint param_3) + +{ + undefined1 uVar1; + undefined2 uVar2; + int iVar3; + undefined1 local_6; + undefined1 local_5; + + if (DAT_00508568 == 0) { + for (iVar3 = 0; iVar3 < (int)param_3 >> 2; iVar3 = iVar3 + 1) { + uVar1 = *(undefined1 *)((int)param_2 + 2); + uVar2 = *(undefined2 *)param_2; + *(undefined1 *)param_1 = *(undefined1 *)((int)param_2 + 3); + *(undefined1 *)((int)param_1 + 1) = uVar1; + local_5 = (undefined1)((ushort)uVar2 >> 8); + *(undefined1 *)((int)param_1 + 2) = local_5; + local_6 = (undefined1)uVar2; + *(undefined1 *)((int)param_1 + 3) = local_6; + param_1 = param_1 + 1; + param_2 = param_2 + 1; + } + } + else { + FUN_004d4918(param_1,param_2,param_3); + param_1 = (undefined4 *)(param_3 + (int)param_1); + } + return param_1; +} + + + +/* @004908f8 file=? name=FUN_004908f8 */ + +int __cdecl FUN_004908f8(undefined4 *param_1,char *param_2) + +{ + int iVar1; + + iVar1 = FUN_004d4a78(param_2); + FUN_004d4918(param_1,(undefined4 *)param_2,iVar1 + 1U); + return iVar1 + 1U + (int)param_1; +} + + + +/* @00490924 file=? name=FUN_00490924 */ + +undefined1 * __cdecl FUN_00490924(undefined1 *param_1,undefined1 *param_2) + +{ + *param_2 = *param_1; + return param_1 + 1; +} + + + +/* @00490934 file=? name=FUN_00490934 */ + +int __cdecl FUN_00490934(int param_1) + +{ + return param_1 + 1; +} + + + +/* @00490944 file=? name=FUN_00490944 */ + +undefined1 * __cdecl FUN_00490944(undefined1 *param_1,undefined1 *param_2) + +{ + if (DAT_00508568 != 0) { + *param_2 = *param_1; + param_2[1] = param_1[1]; + return param_1 + 2; + } + *param_2 = param_1[1]; + param_2[1] = *param_1; + return param_1 + 2; +} + + + +/* @00490974 file=? name=FUN_00490974 */ + +undefined1 * __cdecl FUN_00490974(undefined1 *param_1,undefined1 *param_2) + +{ + if (DAT_00508568 != 0) { + *param_2 = *param_1; + param_2[1] = param_1[1]; + param_2[2] = param_1[2]; + param_2[3] = param_1[3]; + return param_1 + 4; + } + param_2[3] = *param_1; + param_2[2] = param_1[1]; + param_2[1] = param_1[2]; + *param_2 = param_1[3]; + return param_1 + 4; +} + + + +/* @004909bc file=? name=FUN_004909bc */ + +undefined1 * __cdecl FUN_004909bc(undefined1 *param_1,undefined1 *param_2) + +{ + if (DAT_00508568 != 0) { + *param_2 = *param_1; + param_2[1] = param_1[1]; + param_2[2] = param_1[2]; + param_2[3] = param_1[3]; + return param_1 + 4; + } + param_2[3] = *param_1; + param_2[2] = param_1[1]; + param_2[1] = param_1[2]; + *param_2 = param_1[3]; + return param_1 + 4; +} + + + +/* @00490a04 file=? name=FUN_00490a04 */ + +int __cdecl FUN_00490a04(undefined4 *param_1,undefined4 *param_2,uint param_3) + +{ + FUN_004d4918(param_2,param_1,param_3); + return param_3 + (int)param_1; +} + + + +/* @00490a24 file=? name=FUN_00490a24 */ + +undefined4 * __cdecl FUN_00490a24(undefined4 *param_1,undefined4 *param_2,uint param_3) + +{ + undefined1 uVar1; + undefined2 uVar2; + int iVar3; + undefined1 local_6; + undefined1 local_5; + + if (DAT_00508568 == 0) { + for (iVar3 = 0; iVar3 < (int)param_3 >> 2; iVar3 = iVar3 + 1) { + uVar1 = *(undefined1 *)((int)param_1 + 2); + uVar2 = *(undefined2 *)param_1; + *(undefined1 *)param_2 = *(undefined1 *)((int)param_1 + 3); + *(undefined1 *)((int)param_2 + 1) = uVar1; + local_5 = (undefined1)((ushort)uVar2 >> 8); + *(undefined1 *)((int)param_2 + 2) = local_5; + local_6 = (undefined1)uVar2; + *(undefined1 *)((int)param_2 + 3) = local_6; + param_1 = param_1 + 1; + param_2 = param_2 + 1; + } + } + else { + FUN_004d4918(param_2,param_1,param_3); + param_1 = (undefined4 *)(param_3 + (int)param_1); + } + return param_1; +} + + + +/* @00490a90 file=? name=FUN_00490a90 */ + +char * __cdecl FUN_00490a90(char *param_1,undefined4 *param_2) + +{ + int iVar1; + + iVar1 = FUN_004d4a78(param_1); + FUN_004d4918(param_2,(undefined4 *)param_1,iVar1 + 1U); + return param_1 + iVar1 + 1U; +} + + + +/* @00490ab8 file=? name=FUN_00490ab8 */ + +void FUN_00490ab8(void) + +{ + DAT_00508568 = 1; + return; +} + + + +/* @00490adc file=? name=FUN_00490adc */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_00490adc(char *param_1) + +{ + FUN_004d771c(param_1); + _DAT_0050856c = 1; + return; +} + + + +/* @00490af8 file=? name=FUN_00490af8 */ + +int * __thiscall FUN_00490af8(void *this,undefined4 param_1) + +{ + int *piVar1; + + piVar1 = (int *)FUN_00452c38(0x1c); + if (piVar1 == (int *)0x0) { + FUN_004d771c(s_Failed_to_init_dbi_interface_dev_00508580); + piVar1 = (int *)0x0; + } + else { + FUN_004d7f84(param_1,&DAT_005085a8); + *piVar1 = (int)this; + piVar1[1] = (int)this; + piVar1[2] = (int)this + 1; + piVar1[3] = (int)this + 2; + piVar1[4] = (int)this + 3; + piVar1[5] = (int)this + 0x10; + piVar1[6] = (int)this + 0x11; + } + return piVar1; +} + + + +/* @00490b64 file=? name=FUN_00490b64 */ + +void FUN_00490b64(void) + +{ + int iVar1; + int iVar2; + + iVar1 = FUN_004dfd90(); + do { + iVar2 = FUN_004dfd90(); + } while (iVar1 == iVar2); + do { + iVar2 = FUN_004dfd90(); + } while (iVar1 == iVar2); + return; +} + + + +/* @00490b84 file=? name=FUN_00490b84 */ + +undefined6 __cdecl FUN_00490b84(int param_1) + +{ + undefined6 uVar1; + + FUN_004d46ed((short)*(undefined4 *)(param_1 + 0x18),0); + FUN_004d46ed((short)*(undefined4 *)(param_1 + 0x14),0); + FUN_00490b64(); + FUN_004d46ed((short)*(undefined4 *)(param_1 + 0x14),1); + FUN_00490b64(); + FUN_004d46ed((short)*(undefined4 *)(param_1 + 0x10),0); + FUN_004d46ed((short)*(undefined4 *)(param_1 + 0xc),0); + uVar1 = FUN_004d46ed((short)*(undefined4 *)(param_1 + 0x14),0); + return uVar1; +} + + + +/* @00490bec file=? name=FUN_00490bec */ + +byte __cdecl FUN_00490bec(int param_1) + +{ + byte bVar1; + + bVar1 = FUN_004d45ec((short)*(undefined4 *)(param_1 + 0x10)); + return bVar1 & 1; +} + + + +/* @00490c04 file=? name=FUN_00490c04 */ + +undefined4 __cdecl FUN_00490c04(int param_1,byte *param_2,int param_3) + +{ + bool bVar1; + byte bVar2; + int iVar3; + int iVar4; + int local_c; + int local_8; + + bVar1 = true; + local_8 = 0; + if (0 < param_3) { + do { + iVar4 = 0; + while (bVar2 = FUN_004d45ec((short)*(undefined4 *)(param_1 + 0x10)), (bVar2 & 1) == 0) { + if (39999 < iVar4) { + iVar4 = 0; + if (bVar1) { + bVar1 = false; + local_c = FUN_004dfd90(); + } + iVar3 = FUN_004dfd90(); + if (5000 < iVar3 - local_c) { + FUN_00490adc(s_timeout_in_outRecord_005085ac); + return 0; + } + } + iVar4 = iVar4 + 1; + } + FUN_004d46ed((short)*(undefined4 *)(param_1 + 8),*param_2); + local_8 = local_8 + 1; + param_2 = param_2 + 1; + } while (local_8 < param_3); + } + return 1; +} + + + +/* @00490c9c file=? name=FUN_00490c9c */ + +/* WARNING: Removing unreachable block (ram,0x00490e78) */ +/* WARNING: Removing unreachable block (ram,0x00490e85) */ +/* WARNING: Removing unreachable block (ram,0x00490e93) */ +/* WARNING: Removing unreachable block (ram,0x00490eaa) */ +/* WARNING: Removing unreachable block (ram,0x00490eb2) */ +/* WARNING: Removing unreachable block (ram,0x00490eb8) */ +/* WARNING: Removing unreachable block (ram,0x00490ec2) */ +/* WARNING: Removing unreachable block (ram,0x00490ed1) */ +/* WARNING: Removing unreachable block (ram,0x00490ee0) */ + +undefined4 __cdecl FUN_00490c9c(int param_1,undefined4 param_2) + +{ + bool bVar1; + byte bVar2; + int iVar3; + int iVar4; + int local_10; + + bVar1 = true; + iVar4 = 0; + while (bVar2 = FUN_004d45ec((short)*(undefined4 *)(param_1 + 0x10)), (bVar2 & 1) == 0) { + if (39999 < iVar4) { + iVar4 = 0; + if (bVar1) { + bVar1 = false; + local_10 = FUN_004dfd90(); + } + iVar3 = FUN_004dfd90(); + if (5000 < iVar3 - local_10) { + FUN_00490adc(s_timeout_in_outRecord_005085c2); + return 0; + } + } + iVar4 = iVar4 + 1; + } + FUN_004d46ed((short)*(undefined4 *)(param_1 + 8),(byte)param_2); + bVar1 = true; + iVar4 = 0; + while (bVar2 = FUN_004d45ec((short)*(undefined4 *)(param_1 + 0x10)), (bVar2 & 1) == 0) { + if (39999 < iVar4) { + iVar4 = 0; + if (bVar1) { + bVar1 = false; + local_10 = FUN_004dfd90(); + } + iVar3 = FUN_004dfd90(); + if (5000 < iVar3 - local_10) { + FUN_00490adc(s_timeout_in_outRecord_005085d8); + return 0; + } + } + iVar4 = iVar4 + 1; + } + FUN_004d46ed((short)*(undefined4 *)(param_1 + 8),(byte)((uint)param_2 >> 8)); + bVar1 = true; + iVar4 = 0; + do { + bVar2 = FUN_004d45ec((short)*(undefined4 *)(param_1 + 0x10)); + if ((bVar2 & 1) != 0) { + FUN_004d46ed((short)*(undefined4 *)(param_1 + 8),(byte)((uint)param_2 >> 0x10)); + bVar1 = true; + iVar4 = 0; + do { + bVar2 = FUN_004d45ec((short)*(undefined4 *)(param_1 + 0x10)); + if ((bVar2 & 1) != 0) { + FUN_004d46ed((short)*(undefined4 *)(param_1 + 8),(byte)((uint)param_2 >> 0x18)); + return 1; + } + if (39999 < iVar4) { + iVar4 = 0; + if (bVar1) { + bVar1 = false; + local_10 = FUN_004dfd90(); + } + iVar3 = FUN_004dfd90(); + if (5000 < iVar3 - local_10) { + FUN_00490adc(s_timeout_in_outRecord_00508604); + return 0; + } + } + iVar4 = iVar4 + 1; + } while( true ); + } + if (39999 < iVar4) { + iVar4 = 0; + if (bVar1) { + bVar1 = false; + local_10 = FUN_004dfd90(); + } + iVar3 = FUN_004dfd90(); + if (5000 < iVar3 - local_10) { + FUN_00490adc(s_timeout_in_outRecord_005085ee); + return 0; + } + } + iVar4 = iVar4 + 1; + } while( true ); +} + + + +/* @00490ef0 file=? name=FUN_00490ef0 */ + +byte __cdecl FUN_00490ef0(int param_1) + +{ + byte bVar1; + + bVar1 = FUN_004d45ec((short)*(undefined4 *)(param_1 + 0xc)); + return bVar1 & 1; +} + + + +/* @00490f08 file=? name=FUN_00490f08 */ + +undefined4 __cdecl FUN_00490f08(int param_1,undefined1 *param_2,int param_3) + +{ + byte bVar1; + undefined1 uVar2; + int iVar3; + undefined3 extraout_var; + int iVar4; + int iVar5; + int local_8; + + iVar3 = FUN_004dfd90(); + local_8 = 0; + if (0 < param_3) { + do { + iVar5 = 0; + while (bVar1 = FUN_00490ef0(param_1), CONCAT31(extraout_var,bVar1) == 0) { + if (39999 < iVar5) { + iVar5 = 0; + iVar4 = FUN_004dfd90(); + if (5000 < iVar4 - iVar3) { + FUN_00490adc(s_timeout_in_inRecord_00508630); + return 0; + } + } + iVar5 = iVar5 + 1; + } + uVar2 = FUN_004d45ec((short)*(undefined4 *)(param_1 + 4)); + *param_2 = uVar2; + param_2 = param_2 + 1; + local_8 = local_8 + 1; + } while (local_8 < param_3); + } + return 1; +} + + + +/* @00490f8c file=? name=FUN_00490f8c */ + +undefined4 __cdecl FUN_00490f8c(int param_1,undefined1 *param_2,int param_3) + +{ + byte bVar1; + undefined1 uVar2; + undefined3 extraout_var; + int iVar3; + + iVar3 = 0; + if (0 < param_3) { + do { + do { + bVar1 = FUN_00490ef0(param_1); + } while (CONCAT31(extraout_var,bVar1) == 0); + uVar2 = FUN_004d45ec((short)*(undefined4 *)(param_1 + 4)); + *param_2 = uVar2; + param_2 = param_2 + 1; + iVar3 = iVar3 + 1; + } while (iVar3 < param_3); + } + return 1; +} + + + +/* @00490fc8 file=? name=FUN_00490fc8 */ + +void __cdecl FUN_00490fc8(undefined4 *param_1,undefined2 *param_2,uint param_3) + +{ + uint uVar1; + + uVar1 = param_3 >> 1; + while (uVar1 != 0) { + uVar1 = uVar1 - 1; + out(*param_2,(ushort)*param_1 ^ 4); + param_2 = param_2 + 1; + } + return; +} + + + +/* @00490fec file=? name=FUN_00490fec */ + +void __cdecl +FUN_00490fec(undefined4 *param_1,int param_2,undefined4 *param_3,undefined4 param_4,uint param_5, + int param_6,int param_7) + +{ + undefined4 *puVar1; + uint local_14; + undefined4 local_c; + undefined4 local_8; + + local_8 = 0; + if (0x400 < (int)param_5) { + FUN_004d771c(s_Attempt_to_send__d_bytes_in_pack_00508645); + FUN_004dee24(9); + } + if (param_6 == 0) { + FUN_004907a4((undefined1 *)&local_c,param_5 + 4 | 0x40ff0000); + } + else { + if ((param_5 & 1) != 0) { + param_5 = param_5 + 1; + } + FUN_004907a4((undefined1 *)&local_c,param_2 << 0x10 | param_5 | 0xc0000000); + } + DAT_00508570 = local_c; + if (param_7 == 0) { + puVar1 = (undefined4 *)&DAT_00524694; + local_14 = param_5; + if (param_6 == 0) { + puVar1 = (undefined4 *)FUN_004907a4(&DAT_00524694,param_4); + local_14 = param_5 + 4; + } + FUN_0049088c(puVar1,param_3,param_5); + FUN_00490fc8(param_1,(undefined2 *)&DAT_00524694,local_14 + 3 & 0xfffffffc); + FUN_00490c9c((int)param_1,local_c); + } + else { + if (param_6 == 0) { + FUN_004907a4((undefined1 *)&local_8,param_4); + FUN_00490fc8(param_1,(undefined2 *)&local_8,4); + } + FUN_00490fc8(param_1,(undefined2 *)param_3,param_5 + 3 & 0xfffffffc); + FUN_00490c9c((int)param_1,local_c); + } + return; +} + + + +/* @00491118 file=? name=FUN_00491118 */ + +undefined4 __cdecl +FUN_00491118(int *param_1,int param_2,byte *param_3,undefined4 param_4,uint param_5,int param_6, + int param_7) + +{ + undefined4 uVar1; + int iVar2; + byte local_8 [4]; + + if (param_1[1] == 0) { + uVar1 = FUN_00490c04(param_1[2],param_3,param_5); + } + else if (*param_1 == 0) { + if (0x400 < (int)param_5) { + FUN_004d771c(s_Attempt_to_send__d_bytes_in_pack_00508672); + FUN_004dee24(9); + } + if (param_6 == 0) { + FUN_004907a4(local_8,param_5 + 4 | 0xff0000); + } + else { + if ((param_5 & 1) != 0) { + param_5 = param_5 + 1; + } + FUN_004907a4(local_8,param_2 << 0x10 | param_5 | 0x80000000); + } + iVar2 = FUN_00490c04(param_1[2],local_8,4); + if (iVar2 == 0) { + FUN_004d771c(s_send_protocol_failed_to_squirt_l_0050869f); + uVar1 = 0; + } + else { + if (param_6 == 0) { + FUN_004907a4(local_8,param_4); + iVar2 = FUN_00490c04(param_1[2],local_8,4); + if (iVar2 == 0) { + FUN_004d771c(s_send_protocol_failed_to_squirt_a_005086da); + return 0; + } + } + if (param_7 == 0) { + FUN_0049088c((undefined4 *)&DAT_00524694,(undefined4 *)param_3,param_5); + param_3 = &DAT_00524694; + } + iVar2 = FUN_00490c04(param_1[2],param_3,param_5); + if (iVar2 == 0) { + FUN_004d771c(s_send_protocol_failed_to_squirt_d_00508714); + uVar1 = 0; + } + else { + if (param_6 == 0) { + DAT_00508574 = DAT_00508574 + 1; + } + uVar1 = 1; + } + } + } + else { + uVar1 = FUN_00490fec((undefined4 *)param_1[2],param_2,(undefined4 *)param_3,param_4,param_5, + param_6,param_7); + } + return uVar1; +} + + + +/* @00491294 file=? name=FUN_00491294 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl +FUN_00491294(int param_1,uint *param_2,undefined4 *param_3,uint *param_4,int *param_5) + +{ + int iVar1; + undefined4 uVar2; + uint uVar3; + uint local_c; + undefined1 local_8 [4]; + + _DAT_00508578 = _DAT_00508578 + 1; + iVar1 = FUN_00490f08(*(int *)(param_1 + 8),local_8,4); + if (iVar1 == 0) { + FUN_004d771c(s_Protocol_error___length_word_not_005087af); + uVar2 = 0; + } + else { + FUN_00490974(local_8,(undefined1 *)&local_c); + _DAT_0050857c = local_c; + *param_2 = (int)local_c >> 0x10 & 0xff; + if ((local_c & 0x80000000) == 0) { + *param_5 = 0; + } + else { + *param_5 = 1; + } + uVar3 = local_c & 0xffff; + if (uVar3 < 0x411) { + iVar1 = FUN_00490f8c(*(int *)(param_1 + 8),(undefined1 *)param_3,uVar3); + if (iVar1 == 0) { + FUN_004d771c(s_Protocol_error____d_bytes_not_co_0050877e); + uVar2 = 0; + } + else { + if (*param_5 == 0) { + FUN_0049088c(param_3,param_3,uVar3); + } + *param_4 = uVar3; + uVar2 = 1; + } + } + else { + FUN_004d771c(s_Protocol_error___length__d_too_b_00508748); + uVar2 = 0; + } + } + return uVar2; +} + + + +/* @00491380 file=? name=FUN_00491380 */ + +undefined8 __cdecl FUN_00491380(undefined4 *param_1,undefined4 param_2) + +{ + byte bVar1; + undefined3 extraout_var; + undefined4 extraout_EDX; + undefined2 extraout_var_00; + undefined6 uVar2; + + switch(param_2) { + case 0: + uVar2 = FUN_00490b84(param_1[2]); + param_2 = CONCAT22(extraout_var_00,(short)((uint6)uVar2 >> 0x20)); + break; + case 1: + param_2 = 0; + *param_1 = 0; + param_1[1] = 1; + break; + case 2: + *param_1 = 1; + param_1[1] = 1; + break; + case 3: + *param_1 = 0; + param_2 = 0; + param_1[1] = 0; + break; + case 4: + bVar1 = FUN_00490ef0(param_1[2]); + return CONCAT44(extraout_EDX,CONCAT31(extraout_var,bVar1)); + } + return CONCAT44(param_2,1); +} + + + +/* @004913f0 file=? name=FUN_004913f0 */ + +undefined4 * __thiscall FUN_004913f0(void *this,undefined4 param_1) + +{ + int *piVar1; + undefined4 *puVar2; + + piVar1 = FUN_00490af8(this,param_1); + if (piVar1 == (int *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = (undefined4 *)FUN_00452c38(0xc); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2[2] = piVar1; + *puVar2 = 0; + puVar2[1] = 0; + DAT_00508568 = 1; + } + } + return puVar2; +} + + + +/* @00491454 file=? name=FUN_00491454 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_00491454(void) + +{ + _DAT_0050856c = 1; + DAT_00508570 = 1; + return; +} + + + +/* @0049146c file=? name=FUN_0049146c */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_0049146c(float *param_1,float *param_2,float param_3) + +{ + float10 fVar1; + undefined4 local_8; + + if (DAT_005087dc == 0) { + local_8 = param_3; + } + else { + local_8 = param_3 * _DAT_004914bc; + } + fVar1 = (float10)FUN_004dd0f4(SUB84((double)local_8,0),(int)((ulonglong)(double)local_8 >> 0x20)); + *param_1 = (float)fVar1; + fVar1 = (float10)FUN_004dc9b4(SUB84((double)local_8,0),(int)((ulonglong)(double)local_8 >> 0x20)); + *param_2 = (float)fVar1; + return; +} + + + +/* @004914c0 file=? name=FUN_004914c0 */ + +void __cdecl FUN_004914c0(undefined4 *param_1,float *param_2,float *param_3) + +{ + float *pfVar1; + int iVar2; + float local_54 [16]; + float local_14; + float local_10; + float local_c; + float local_8; + + pfVar1 = local_54; + iVar2 = 0; + do { + local_8 = *param_2; + local_c = param_2[1]; + local_10 = param_2[2]; + local_14 = param_2[3]; + *pfVar1 = local_14 * param_3[0xc] + + local_10 * param_3[8] + local_c * param_3[4] + local_8 * *param_3; + pfVar1[1] = local_14 * param_3[0xd] + + local_10 * param_3[9] + local_c * param_3[5] + local_8 * param_3[1]; + pfVar1[2] = local_14 * param_3[0xe] + + local_10 * param_3[10] + local_c * param_3[6] + local_8 * param_3[2]; + pfVar1[3] = local_14 * param_3[0xf] + + local_10 * param_3[0xb] + local_c * param_3[7] + local_8 * param_3[3]; + param_2 = param_2 + 4; + pfVar1 = pfVar1 + 4; + iVar2 = iVar2 + 1; + } while (iVar2 < 4); + FUN_004d4918(param_1,local_54,0x40); + return; +} + + + +/* @00491594 file=? name=FUN_00491594 */ + +void __cdecl FUN_00491594(int param_1,float param_2) + +{ + float fVar1; + float local_c; + float local_8; + + FUN_0049146c(&local_c,&local_8,param_2); + fVar1 = *(float *)(param_1 + 4); + *(float *)(param_1 + 4) = fVar1 * local_8 - *(float *)(param_1 + 8) * local_c; + *(float *)(param_1 + 8) = *(float *)(param_1 + 8) * local_8 + fVar1 * local_c; + fVar1 = *(float *)(param_1 + 0x14); + *(float *)(param_1 + 0x14) = fVar1 * local_8 - *(float *)(param_1 + 0x18) * local_c; + *(float *)(param_1 + 0x18) = *(float *)(param_1 + 0x18) * local_8 + fVar1 * local_c; + fVar1 = *(float *)(param_1 + 0x24); + *(float *)(param_1 + 0x24) = fVar1 * local_8 - *(float *)(param_1 + 0x28) * local_c; + *(float *)(param_1 + 0x28) = *(float *)(param_1 + 0x28) * local_8 + fVar1 * local_c; + fVar1 = *(float *)(param_1 + 0x34); + *(float *)(param_1 + 0x34) = fVar1 * local_8 - *(float *)(param_1 + 0x38) * local_c; + *(float *)(param_1 + 0x38) = *(float *)(param_1 + 0x38) * local_8 + fVar1 * local_c; + return; +} + + + +/* @00491670 file=? name=FUN_00491670 */ + +void __cdecl FUN_00491670(float *param_1,float param_2) + +{ + float fVar1; + float local_c; + float local_8; + + FUN_0049146c(&local_c,&local_8,param_2); + fVar1 = *param_1; + *param_1 = param_1[2] * local_c + fVar1 * local_8; + param_1[2] = param_1[2] * local_8 - fVar1 * local_c; + fVar1 = param_1[4]; + param_1[4] = param_1[6] * local_c + fVar1 * local_8; + param_1[6] = param_1[6] * local_8 - fVar1 * local_c; + fVar1 = param_1[8]; + param_1[8] = param_1[10] * local_c + fVar1 * local_8; + param_1[10] = param_1[10] * local_8 - fVar1 * local_c; + fVar1 = param_1[0xc]; + param_1[0xc] = param_1[0xe] * local_c + fVar1 * local_8; + param_1[0xe] = param_1[0xe] * local_8 - fVar1 * local_c; + return; +} + + + +/* @00491748 file=? name=FUN_00491748 */ + +void __cdecl FUN_00491748(float *param_1,float param_2) + +{ + float fVar1; + float local_c; + float local_8; + + FUN_0049146c(&local_c,&local_8,param_2); + fVar1 = *param_1; + *param_1 = fVar1 * local_8 - param_1[1] * local_c; + param_1[1] = param_1[1] * local_8 + fVar1 * local_c; + fVar1 = param_1[4]; + param_1[4] = fVar1 * local_8 - param_1[5] * local_c; + param_1[5] = param_1[5] * local_8 + fVar1 * local_c; + fVar1 = param_1[8]; + param_1[8] = fVar1 * local_8 - param_1[9] * local_c; + param_1[9] = param_1[9] * local_8 + fVar1 * local_c; + fVar1 = param_1[0xc]; + param_1[0xc] = fVar1 * local_8 - param_1[0xd] * local_c; + param_1[0xd] = param_1[0xd] * local_8 + fVar1 * local_c; + return; +} + + + +/* @00491820 file=? name=FUN_00491820 */ + +void __cdecl FUN_00491820(undefined4 param_1) + +{ + DAT_005087dc = param_1; + return; +} + + + +/* @00491830 file=? name=FUN_00491830 */ + +void __cdecl FUN_00491830(undefined4 *param_1) + +{ + *param_1 = 0x3f800000; + param_1[1] = 0; + param_1[2] = 0; + param_1[3] = 0; + param_1[4] = 0; + param_1[5] = 0x3f800000; + param_1[6] = 0; + param_1[7] = 0; + param_1[8] = 0; + param_1[9] = 0; + param_1[10] = 0x3f800000; + param_1[0xb] = 0; + param_1[0xc] = 0; + param_1[0xd] = 0; + param_1[0xe] = 0; + param_1[0xf] = 0x3f800000; + return; +} + + + +/* @00491890 file=? name=FUN_00491890 */ + +void __cdecl +FUN_00491890(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) + +{ + float local_44 [13]; + undefined4 local_10; + undefined4 local_c; + undefined4 local_8; + + local_44[0] = 1.0; + local_44[1] = 0.0; + local_44[2] = 0.0; + local_44[3] = 0.0; + local_44[4] = 0.0; + local_44[5] = 1.0; + local_44[6] = 0.0; + local_44[7] = 0.0; + local_44[8] = 0.0; + local_44[9] = 0.0; + local_44[10] = 1.0; + local_44[0xb] = 0.0; + local_8 = 0x3f800000; + local_44[0xc] = (float)param_2; + local_10 = param_3; + local_c = param_4; + FUN_004914c0(param_1,(float *)param_1,local_44); + return; +} + + + +/* @00491914 file=? name=FUN_00491914 */ + +void __cdecl FUN_00491914(float *param_1,float param_2,int param_3) + +{ + if (param_3 == 0) { + FUN_00491594((int)param_1,param_2); + return; + } + if (param_3 == 1) { + FUN_00491670(param_1,param_2); + return; + } + FUN_00491748(param_1,param_2); + return; +} + + + +/* @00491950 file=? name=FUN_00491950 */ + +void __cdecl FUN_00491950(undefined4 *param_1,float param_2,undefined4 param_3,undefined4 param_4) + +{ + float local_44 [6]; + undefined4 local_2c; + undefined4 local_28; + undefined4 local_24; + undefined4 local_20; + undefined4 local_1c; + undefined4 local_18; + undefined4 local_14; + undefined4 local_10; + undefined4 local_c; + undefined4 local_8; + + local_44[1] = 0.0; + local_44[2] = 0.0; + local_44[3] = 0.0; + local_44[4] = 0.0; + local_2c = 0; + local_28 = 0; + local_24 = 0; + local_20 = 0; + local_18 = 0; + local_14 = 0; + local_10 = 0; + local_c = 0; + local_8 = 0x3f800000; + local_44[0] = param_2; + local_44[5] = (float)param_3; + local_1c = param_4; + FUN_004914c0(param_1,(float *)param_1,local_44); + return; +} + + + +/* @004919d4 file=? name=FUN_004919d4 */ + +void __cdecl FUN_004919d4(undefined4 *param_1,float *param_2,float *param_3) + +{ + FUN_004914c0(param_1,param_2,param_3); + return; +} + + + +/* @004919f0 file=? name=FUN_004919f0 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004919f0(float *param_1,float *param_2) + +{ + float fVar1; + float fVar2; + float fVar3; + float fVar4; + float fVar5; + float fVar6; + float fVar7; + float fVar8; + float fVar9; + float fVar10; + float fVar11; + float fVar12; + float fVar13; + float fVar14; + float fVar15; + float fVar16; + + param_1[3] = 0.0; + param_1[7] = 0.0; + param_1[0xb] = 0.0; + param_1[0xf] = 1.0; + fVar1 = *param_2; + fVar2 = param_2[1]; + fVar3 = param_2[2]; + fVar4 = param_2[4]; + fVar5 = param_2[5]; + fVar6 = param_2[6]; + fVar7 = param_2[8]; + fVar8 = param_2[9]; + fVar9 = param_2[10]; + fVar10 = param_2[0xc]; + fVar11 = param_2[0xd]; + fVar12 = param_2[0xe]; + fVar13 = fVar5 * fVar9 - fVar8 * fVar6; + fVar14 = -(fVar4 * fVar9 - fVar7 * fVar6); + fVar15 = fVar4 * fVar8 - fVar7 * fVar5; + fVar16 = _DAT_00491bd8 / (fVar3 * fVar15 + fVar2 * fVar14 + fVar1 * fVar13); + fVar13 = fVar16 * fVar13; + fVar14 = fVar16 * fVar14; + fVar15 = fVar16 * fVar15; + *param_1 = fVar13; + param_1[4] = fVar14; + param_1[8] = fVar15; + param_1[0xc] = -(fVar12 * fVar15 + fVar11 * fVar14 + fVar10 * fVar13); + fVar13 = -fVar16 * (fVar2 * fVar9 - fVar8 * fVar3); + fVar9 = (fVar1 * fVar9 - fVar7 * fVar3) * fVar16; + fVar7 = -fVar16 * (fVar1 * fVar8 - fVar7 * fVar2); + param_1[1] = fVar13; + param_1[5] = fVar9; + param_1[9] = fVar7; + param_1[0xd] = -(fVar12 * fVar7 + fVar11 * fVar9 + fVar10 * fVar13); + fVar7 = (fVar2 * fVar6 - fVar5 * fVar3) * fVar16; + fVar3 = -fVar16 * (fVar1 * fVar6 - fVar4 * fVar3); + fVar16 = (fVar1 * fVar5 - fVar4 * fVar2) * fVar16; + param_1[2] = fVar7; + param_1[6] = fVar3; + param_1[10] = fVar16; + param_1[0xe] = -(fVar12 * fVar16 + fVar11 * fVar3 + fVar10 * fVar7); + return; +} + + + +/* @00491c2c file=? name=FUN_00491c2c */ + +void __cdecl FUN_00491c2c(int param_1) + +{ + if (param_1 != 0) { + FUN_00491830((undefined4 *)(param_1 + 0x18)); + return; + } + FUN_004d771c(s_dpl_error___NULL_dcs_in_dpl_IdMa_005087e0); + FUN_004dee24(9); + return; +} + + + +/* @00491c58 file=? name=FUN_00491c58 */ + +void __cdecl FUN_00491c58(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) + +{ + if (param_1 != 0) { + FUN_00491890((undefined4 *)(param_1 + 0x18),param_2,param_3,param_4); + return; + } + FUN_004d771c(s_dpl_error___NULL_dcs_in_dpl_Tran_00508809); + FUN_004dee24(9); + return; +} + + + +/* @00491c90 file=? name=FUN_00491c90 */ + +void __cdecl FUN_00491c90(int param_1,float param_2,int param_3) + +{ + if (param_1 != 0) { + FUN_00491914((float *)(param_1 + 0x18),param_2,param_3); + return; + } + FUN_004d771c(s_dpl_error___NULL_dcs_in_dpl_Rota_00508833); + FUN_004dee24(9); + return; +} + + + +/* @00491cc4 file=? name=FUN_00491cc4 */ + +void __cdecl FUN_00491cc4(int param_1,float param_2,undefined4 param_3,undefined4 param_4) + +{ + if (param_1 != 0) { + FUN_00491950((undefined4 *)(param_1 + 0x18),param_2,param_3,param_4); + return; + } + FUN_004d771c(s_dpl_error___NULL_dcs_in_dpl_Scal_0050885a); + FUN_004dee24(9); + return; +} + + + +/* @00491cfc file=? name=FUN_00491cfc */ + +void FUN_00491cfc(void) + +{ + DAT_005087dc = 1; + return; +} + + + +/* @00491d08 file=? name=FUN_00491d08 */ + +void __cdecl FUN_00491d08(uint *param_1) + +{ + DAT_00524ad8 = (*param_1 & 0xffff) << 4; + DAT_00524adc = ((int)*param_1 >> 0x10 & 0xffffU) << 4; + DAT_00524ae0 = (param_1[1] & 0xffff) << 4; + DAT_00524ae4 = ((int)param_1[1] >> 0x10 & 0xffffU) << 4; + DAT_00524ae8 = param_1[2]; + DAT_00524aec = FUN_00487e7c(&DAT_005088a8,param_1[3],4); + if (DAT_00524aec == 0) { + DAT_00524af0 = 0; + DAT_00524af4 = 0; + DAT_00524af8 = 0; + } + else { + DAT_00524af0 = FUN_00487e7c(&DAT_005088ad,param_1[7],5); + DAT_00524af8 = FUN_00487e7c(&DAT_005088b2,param_1[8],9); + DAT_00524af4 = FUN_00487e7c(&DAT_005088b7,param_1[9],10); + FUN_004d4918(&DAT_00524afc,param_1 + 4,0xc); + } + return; +} + + + +/* @00491df4 file=? name=FUN_00491df4 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl FUN_00491df4(int param_1,byte *param_2) + +{ + int iVar1; + undefined4 *puVar2; + undefined1 *puVar3; + char *pcVar4; + undefined4 uVar5; + int local_10; + int local_c; + short local_6; + + local_6 = 0; + _DAT_0050889c = _DAT_0050889c + 1; + DAT_00508898 = (int)(char)*param_2; + switch(DAT_00508898) { + case 0xd: + puVar3 = FUN_00490974(param_2 + 1,(undefined1 *)&local_10); + puVar3 = FUN_00490944(puVar3,(undefined1 *)&local_6); + puVar3[local_6] = 0; + if ((local_10 == 1) || (local_10 == 2)) { + FUN_004d771c(s__d___s_00508901); + puVar3 = FUN_00490764(param_2,0); + FUN_00490774(puVar3,CONCAT22((short)((uint)puVar3 >> 0x10),local_6)); + uVar5 = FUN_00491118(DAT_00508894,param_1,param_2,0,3,1,1); + } + else { + FUN_004d771c(s____ERROR___i860_attempting_to_fw_00508908); + uVar5 = 0; + } + break; + default: + FUN_004d771c(s_iserver_transaction__unexpected_t_0050894c); + uVar5 = 0; + break; + case 0x10: + puVar3 = FUN_00490764(param_2,0); + puVar3 = FUN_00490764(puVar3,1); + FUN_00490764(puVar3,0); + uVar5 = FUN_00491118(DAT_00508894,param_1,param_2,0,3,1,1); + break; + case 0x18: + puVar3 = FUN_00490974(param_2 + 1,(undefined1 *)&local_c); + puVar3 = FUN_00490944(puVar3,(undefined1 *)&local_6); + puVar3[local_6] = 0; + if ((local_c == 1) || (local_c == 2)) { + FUN_004d771c(s__d___s_005088c9); + puVar3 = FUN_00490764(param_2,0); + FUN_00490774(puVar3,CONCAT22((short)((uint)puVar3 >> 0x10),local_6)); + uVar5 = FUN_00491118(DAT_00508894,param_1,param_2,0,3,1,1); + } + else { + FUN_004d771c(s_i860_error___attempt_to_fputbloc_005088d0); + uVar5 = 0; + } + break; + case 0x20: + pcVar4 = FUN_00490944(param_2 + 1,(undefined1 *)&local_6); + pcVar4[local_6] = '\0'; + pcVar4 = (char *)FUN_004dee74(pcVar4); + iVar1 = FUN_004d4a78(pcVar4); + local_6 = (short)iVar1; + puVar3 = FUN_00490764(param_2,0); + puVar2 = (undefined4 *)FUN_00490774(puVar3,CONCAT22((short)((uint)puVar3 >> 0x10),local_6)); + FUN_0049086c(puVar2,(undefined4 *)pcVar4,(int)local_6); + uVar5 = FUN_00491118(DAT_00508894,param_1,param_2,0,(int)local_6 + 3,1,1); + break; + case 0x23: + FUN_004d771c(s_i860_has_unexpectedly_exited_0050892e); + FUN_004dee24(9); + uVar5 = 0; + break; + case 0x28: + iVar1 = FUN_004d4a78(s_VelociRender_005088bc); + local_6 = (short)iVar1; + puVar3 = FUN_00490754(param_2,0); + puVar2 = (undefined4 *)FUN_00490774(puVar3,CONCAT22((short)((uint)puVar3 >> 0x10),local_6)); + FUN_0049086c(puVar2,(undefined4 *)s_VelociRender_005088bc,(int)local_6); + uVar5 = FUN_00491118(DAT_00508894,param_1,param_2,0,(int)local_6 + 3,1,1); + break; + case 0x2a: + puVar3 = FUN_00490754(param_2,0); + puVar3 = FUN_00490754(puVar3,0xf); + puVar3 = FUN_00490754(puVar3,1); + puVar3 = FUN_00490754(puVar3,1); + FUN_00490754(puVar3,1); + uVar5 = FUN_00491118(DAT_00508894,param_1,param_2,0,5,1,1); + } + return uVar5; +} + + + +/* @00492150 file=? name=FUN_00492150 */ + +void FUN_00492150(void) + +{ + byte *pbVar1; + int iVar2; + undefined8 uVar3; + uint local_c; + int local_8; + + while( true ) { + pbVar1 = DAT_00524ad4; + if (DAT_00508884 != 0) { + return; + } + uVar3 = FUN_00491380(DAT_00508894,4); + if ((int)uVar3 == 0) break; + iVar2 = FUN_00491294((int)DAT_00508894,&local_c,(undefined4 *)pbVar1,(uint *)&DAT_00508884, + &local_8); + if (iVar2 == 0) { + FUN_004d771c(s____ERROR___rcv_protocol_fail_dur_0050897c); + FUN_004dee24(9); + } + if (local_8 != 0) { + DAT_00508884 = 0; + iVar2 = FUN_00491df4(local_c,pbVar1); + if (iVar2 == 0) { + FUN_004d771c(s____ERROR___iserver_transaction_f_005089bc); + FUN_004dee24(9); + } + } + } + return; +} + + + +/* @004921ec file=? name=FUN_004921ec */ + +undefined4 __cdecl FUN_004921ec(undefined4 *param_1,uint *param_2) + +{ + byte *pbVar1; + int iVar2; + uint uVar3; + int local_c; + uint local_8; + + pbVar1 = DAT_00524ad4; + local_c = 1; + FUN_00492150(); + if (DAT_00508884 == 0) { + do { + iVar2 = FUN_00491294(DAT_00508894,&local_8,(undefined4 *)pbVar1,&DAT_00508884,&local_c); + if (iVar2 == 0) { + FUN_004d771c(s____ERROR___velocirender_receive_t_005089f8); + return 0; + } + if ((local_c != 0) && (iVar2 = FUN_00491df4(local_8,pbVar1), iVar2 == 0)) { + FUN_004d771c(s____ERROR___velocirender_receive_f_00508a35); + return 0; + } + } while (local_c != 0); + uVar3 = DAT_00508884 & 0xff; + *param_2 = uVar3; + DAT_00508884 = 0; + if (uVar3 < 8) { + FUN_004d771c(s____ERROR___velocirender_received_00508a77); + FUN_004dee24(9); + } + *param_1 = *(undefined4 *)pbVar1; + } + else { + *param_1 = *(undefined4 *)pbVar1; + *param_2 = DAT_00508884 & 0xff; + DAT_00508884 = 0; + } + return 1; +} + + + +/* @004922e0 file=? name=FUN_004922e0 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __thiscall +FUN_004922e0(void *this,int *param_1,undefined4 *param_2,uint *param_3,uint param_4) + +{ + int iVar1; + int iVar2; + void *local_8; + + iVar1 = DAT_00524ad4; + _DAT_00508890 = _DAT_00508890 + 1; + local_8 = this; + do { + iVar2 = FUN_004921ec(param_1,(uint *)&local_8); + if (iVar2 == 0) { + return 0; + } + if (*param_1 == 9) { + if (DAT_00508880 == 0) { + FUN_004d4918((undefined4 *)&DAT_00524a94,(undefined4 *)(iVar1 + 4),(uint)local_8); + FUN_00491d08((uint *)&DAT_00524a94); + DAT_00508880 = 1; + } + else { + FUN_004d771c(s_dpl_internal_error___2_frame_ack_00508aa7); + FUN_004dee24(9); + } + } + } while (*param_1 == 9); + DAT_005088a4 = 0; + local_8 = (void *)((int)local_8 - 4); + if ((int)param_4 < (int)local_8) { + FUN_004d771c(s____ERROR___Message_too_long___d__00508ad4); + FUN_004d4918(param_2,(undefined4 *)(iVar1 + 4),param_4); + *param_3 = param_4; + } + else { + FUN_004d4918(param_2,(undefined4 *)(iVar1 + 4),(uint)local_8); + *param_3 = (uint)local_8; + } + return 1; +} + + + +/* @004923cc file=? name=FUN_004923cc */ + +undefined4 __cdecl FUN_004923cc(int param_1) + +{ + int *piVar1; + int iVar2; + uint local_c; + int local_8; + + piVar1 = DAT_00524ad4; + if (DAT_00508880 != 0) { + return 1; + } + FUN_00492150(); + if (DAT_00508884 == 0) { + if (param_1 == 0) { + return 0; + } + iVar2 = FUN_004921ec(&local_8,&local_c); + if (iVar2 == 0) { + FUN_004d771c(s_velocirender_input_failed_in_vr__00508b6c); + FUN_004dee24(9); + } + if (local_8 == 9) { + FUN_004d4918((undefined4 *)&DAT_00524a94,piVar1 + 1,local_c); + FUN_00491d08((uint *)&DAT_00524a94); + DAT_00508880 = 1; + DAT_00508884 = 0; + return 1; + } + if (local_8 == 0x1f) { + FUN_004d771c(s_flush_artic___00508b96); + } + FUN_004d771c(s_dpl_error___unsolicited_input_du_00508ba5); + iVar2 = 0; + if (0 < (int)local_c) { + do { + FUN_004d771c(s_0x_x_00508be0); + iVar2 = iVar2 + 1; + } while (iVar2 < (int)local_c); + } + FUN_004dee24(9); + } + else { + local_8 = *piVar1; + if (local_8 == 9) { + FUN_004d4918((undefined4 *)&DAT_00524a94,piVar1 + 1,DAT_00508884); + FUN_00491d08((uint *)&DAT_00524a94); + DAT_00508880 = 1; + DAT_00508884 = 0; + return 1; + } + FUN_004d771c(s_dpl_error___unsolicited_input_du_00508b1c); + if (local_8 == 0x1f) { + FUN_004d771c(s_flush_artic___00508b56); + } + for (iVar2 = 0; iVar2 < (int)DAT_00508884; iVar2 = iVar2 + 1) { + FUN_004d771c(s_0x_x_00508b65); + } + FUN_004dee24(9); + } + return 0; +} + + + +/* @00492580 file=? name=FUN_00492580 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl FUN_00492580(int param_1,byte *param_2,uint param_3,int param_4) + +{ + int iVar1; + + FUN_00492150(); + DAT_005088a4 = DAT_005088a4 + 1; + if (param_1 == 9) { + if (DAT_00508880 == 0) { + FUN_004923cc(1); + } + DAT_00508880 = 0; + DAT_005088a0 = -1; + } + DAT_005088a0 = DAT_005088a0 + 1; + _DAT_0050888c = _DAT_0050888c + 1; + if ((param_4 == 0) && (DAT_00508568 == 0)) { + iVar1 = 0; + } + else { + iVar1 = 1; + } + iVar1 = FUN_00491118(DAT_00508894,0xff,param_2,param_1,param_3,0,iVar1); + if (iVar1 == 0) { + FUN_004d771c(s____ERROR___send_protocol_failed_d_00508be7); + FUN_004dee24(9); + } + return 1; +} + + + +/* @00492624 file=? name=FUN_00492624 */ + +undefined4 __cdecl FUN_00492624(int param_1,byte *param_2,uint param_3) + +{ + int iVar1; + undefined4 uVar2; + + while( true ) { + if ((int)param_3 < 0x1fd) { + if ((param_3 == 0) || (iVar1 = FUN_00492580(param_1,param_2,param_3,1), iVar1 != 0)) { + uVar2 = 1; + } + else { + uVar2 = 0; + } + return uVar2; + } + iVar1 = FUN_00492580(param_1,param_2,0x1fc,1); + if (iVar1 == 0) break; + param_3 = param_3 - 0x1fc; + param_2 = param_2 + 0x1fc; + } + return 0; +} + + + +/* @00492680 file=? name=FUN_00492680 */ + +undefined4 __cdecl FUN_00492680(LPCSTR param_1) + +{ + int *piVar1; + undefined4 uVar2; + uint uVar3; + int iVar4; + + FUN_00491380(DAT_00508894,0); + piVar1 = FUN_004d6f54(param_1,&DAT_00508c2d); + if (piVar1 == (int *)0x0) { + FUN_004d771c(s_Couldnt_open__s_00508c30); + uVar2 = 0; + } + else { + uVar3 = FUN_004d71e0((char *)DAT_00524b0c,1,0x800,piVar1); + while (uVar3 == 0x800) { + iVar4 = FUN_00491118(DAT_00508894,0xff,DAT_00524b0c,0,0x800,0,1); + if (iVar4 == 0) { + FUN_004d6b08(piVar1); + return 0; + } + uVar3 = FUN_004d71e0((char *)DAT_00524b0c,1,0x800,piVar1); + } + FUN_004d6b08(piVar1); + if ((uVar3 == 0) || + (iVar4 = FUN_00491118(DAT_00508894,0xff,DAT_00524b0c,0,uVar3,0,1), iVar4 != 0)) { + uVar2 = 1; + } + else { + uVar2 = 0; + } + } + return uVar2; +} + + + +/* @0049276c file=? name=FUN_0049276c */ + +void __cdecl FUN_0049276c(int param_1) + +{ + int iVar1; + int iVar2; + int iVar3; + + iVar1 = FUN_004dfd90(); + iVar3 = 0; + if (0 < param_1) { + do { + do { + iVar2 = FUN_004dfd90(); + } while (iVar1 == iVar2); + iVar1 = FUN_004dfd90(); + iVar3 = iVar3 + 1; + } while (iVar3 < param_1); + } + return; +} + + + +/* @0049279c file=? name=FUN_0049279c */ + +void __cdecl FUN_0049279c(byte *param_1) + +{ + int iVar1; + + iVar1 = FUN_004d4a78((char *)param_1); + FUN_00492580(0x15,param_1,iVar1 + 1,1); + return; +} + + + +/* @004927bc file=? name=FUN_004927bc */ + +void __cdecl FUN_004927bc(int *param_1,uint param_2,int param_3) + +{ + byte *pbVar1; + uint uVar2; + + pbVar1 = DAT_00524b0c; + while( true ) { + if ((int)param_2 < 0x801) { + if (param_2 != 0) { + uVar2 = FUN_004d71e0((char *)pbVar1,1,param_2,param_1); + if (param_2 == uVar2) { + FUN_00492624(param_3,pbVar1,uVar2); + } + else { + FUN_004d771c(s_i860_MNG_file_error__file_corrup_00508c72); + } + } + return; + } + uVar2 = FUN_004d71e0((char *)pbVar1,1,0x800,param_1); + if (uVar2 != 0x800) break; + FUN_00492624(param_3,pbVar1,0x800); + param_2 = param_2 - 0x800; + } + FUN_004d771c(s_i860_MNG_file_error__file_corrup_00508c41); + return; +} + + + +/* @00492844 file=? name=FUN_00492844 */ + +undefined4 __cdecl FUN_00492844(LPCSTR param_1,byte *param_2) + +{ + byte *pbVar1; + int *piVar2; + undefined1 *puVar3; + undefined4 uVar4; + undefined8 uVar5; + undefined1 local_20 [4]; + undefined1 local_1c [4]; + undefined1 local_18 [4]; + undefined1 local_14 [4]; + uint local_10; + uint local_c; + uint local_8; + + pbVar1 = DAT_00524b0c; + FUN_0049279c(param_2); + piVar2 = FUN_004d6f54(param_1,&DAT_00508ca3); + if (piVar2 == (int *)0x0) { + uVar4 = FUN_004d771c(s_Couldnt_open_i860_file__s_00508ca6); + } + else { + FUN_004d71e0((char *)pbVar1,7,4,piVar2); + FUN_00492580(0x12,pbVar1,0x28,1); + puVar3 = FUN_00490974(pbVar1,(undefined1 *)&local_8); + puVar3 = FUN_00490974(puVar3,(undefined1 *)&local_c); + puVar3 = FUN_00490974(puVar3,(undefined1 *)&local_10); + puVar3 = FUN_00490974(puVar3,local_14); + puVar3 = FUN_00490974(puVar3,local_18); + puVar3 = FUN_00490974(puVar3,local_1c); + FUN_00490974(puVar3,local_20); + FUN_004927bc(piVar2,local_8,0x12); + FUN_004927bc(piVar2,local_c,0x13); + FUN_004927bc(piVar2,local_10,0x14); + FUN_004d6b08(piVar2); + uVar5 = FUN_00491380(DAT_00508894,2); + uVar4 = (undefined4)uVar5; + } + return uVar4; +} + + + +/* @0049295c file=? name=FUN_0049295c */ + +undefined4 __fastcall FUN_0049295c(undefined4 param_1) + +{ + int iVar1; + byte *pbVar2; + + iVar1 = FUN_004dee74(s_TRANSPUTER_00508cc1); + if (iVar1 == 0) { + return 0x150; + } + pbVar2 = &DAT_00508cd7; + iVar1 = FUN_004dee74(s_TRANSPUTER_00508ccc); + iVar1 = FUN_004d7f84(iVar1,pbVar2); + if (iVar1 == 1) { + return param_1; + } + return 0x150; +} + + + +/* @004929a8 file=? name=FUN_004929a8 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined8 __cdecl FUN_004929a8(LPCSTR param_1,int param_2,LPCSTR param_3,undefined4 param_4) + +{ + int iVar1; + undefined8 uVar2; + void *this; + undefined4 local_c; + uint local_8; + + FUN_00490ab8(); + DAT_00524ad4 = FUN_00452c38(0x800); + _DAT_00524b10 = FUN_00452c38(0x800); + this = (void *)0x800; + DAT_00524b0c = FUN_00452c38(0x800); + DAT_00508894 = FUN_004913f0(this,param_4); + FUN_00491380(DAT_00508894,3); + FUN_00492680(param_1); + FUN_00491380(DAT_00508894,1); + iVar1 = FUN_004921ec(&local_c,&local_8); + if (iVar1 == 0) { + FUN_004d771c(s_velocirender_input_failed_in_sta_00508cda); + FUN_004dee24(9); + } + if (param_2 != 0) { + FUN_004d771c(s_HSP_____get_outta_here__s_00508d0b); + FUN_004d6b9c((int *)&DAT_0051f818); + } + if (param_3 != (LPCSTR)0x0) { + FUN_00492844(param_3,(byte *)s_i860_50MHz_and_kicking_00508d27); + } + uVar2 = FUN_00491380(DAT_00508894,2); + return uVar2; +} + + + +/* @00492a90 file=? name=FUN_00492a90 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_00492a90(void) + +{ + DAT_00508880 = 1; + DAT_00508884 = 0; + _DAT_00508888 = 0; + _DAT_0050888c = 0; + _DAT_00508890 = 0; + DAT_00508894 = 0; + DAT_005088a4 = 0; + DAT_00508898 = 0; + _DAT_0050889c = 0; + DAT_005088a0 = 0; + return; +} + + + +/* @00492adc file=? name=FUN_00492adc */ + +void FUN_00492adc(void) + +{ + FUN_0049517c(); + FUN_00496558(); + FUN_00496600(); + FUN_00498c68(); + FUN_00499b48(); + FUN_0049a2d4(); + FUN_004987a4(); + FUN_004991f8(); + FUN_00497924(); + FUN_00496d10(); + FUN_00496664(); + FUN_0049a3a8(); + return; +} + + + +/* @00492b20 file=? name=FUN_00492b20 */ + +void __cdecl FUN_00492b20(undefined4 *param_1) + +{ + uint uVar1; + uint uVar2; + + uVar1 = param_1[9]; + if (uVar1 != param_1[3]) { + if (((undefined4 *)param_1[7] != (undefined4 *)param_1[6]) && (uVar1 != 0)) { + FUN_004d493c((undefined4 *)param_1[6],(undefined4 *)param_1[7],uVar1); + } + param_1[5] = param_1[5] + (param_1[8] - uVar1); + uVar2 = FUN_004d71e0((char *)(param_1[6] + uVar1),1,param_1[3] - uVar1,(int *)*param_1); + if (uVar2 == 0) { + param_1[2] = 1; + FUN_0049a300(1,s_failed_to_read_from_file_descrip_00508d85); + } + param_1[9] = param_1[9] + uVar2; + param_1[8] = uVar1 + uVar2; + param_1[7] = param_1[6]; + } + return; +} + + + +/* @00492ba0 file=? name=FUN_00492ba0 */ + +uint __cdecl FUN_00492ba0(undefined4 *param_1,uint param_2) + +{ + int iVar1; + int iVar2; + + if ((uint)param_1[9] < param_2) { + iVar1 = param_1[9]; + iVar2 = FUN_004d7270((int *)*param_1,param_2 - iVar1,1); + if (iVar2 == 0) { + param_1[5] = param_1[5] + (param_2 - iVar1) + param_1[8]; + param_1[8] = 0; + param_1[9] = 0; + } + else { + param_1[2] = 1; + FUN_0049a300(1,s_failed_to_move_file_position_for_00508daf); + param_2 = 0; + } + } + else { + param_1[9] = param_1[9] - param_2; + param_1[7] = param_1[7] + param_2; + } + return param_2; +} + + + +/* @00492c0c file=? name=FUN_00492c0c */ + +uint __cdecl FUN_00492c0c(undefined4 *param_1,uint param_2) + +{ + uint uVar1; + int iVar2; + + uVar1 = param_1[5]; + if ((param_2 < uVar1) || ((uint)param_1[8] < param_2 - uVar1)) { + iVar2 = FUN_004d7270((int *)*param_1,param_2,0); + if (iVar2 == 0) { + param_1[5] = param_2; + param_1[9] = 0; + } + else { + param_1[2] = 1; + FUN_0049a300(1,s_failed_to_move_file_position_for_00508de6); + param_2 = 0; + } + } + else { + param_1[7] = param_1[6] + (param_2 - uVar1); + param_1[9] = param_1[8] - (param_2 - uVar1); + } + return param_2; +} + + + +/* @00492c84 file=? name=FUN_00492c84 */ + +undefined4 __cdecl FUN_00492c84(undefined4 *param_1) + +{ + undefined1 *puVar1; + + if ((int)param_1[9] < 1) { + FUN_00492b20(param_1); + if (param_1[2] != 0) { + return 0; + } + } + param_1[9] = param_1[9] + -1; + puVar1 = (undefined1 *)param_1[7]; + param_1[7] = param_1[7] + 1; + return CONCAT31((int3)((uint)puVar1 >> 8),*puVar1); +} + + + +/* @00492cb4 file=? name=FUN_00492cb4 */ + +undefined4 __cdecl FUN_00492cb4(undefined4 *param_1) + +{ + undefined1 uVar1; + undefined1 *puVar2; + undefined2 uVar3; + undefined2 local_6; + + if (((int)param_1[9] < 2) && (FUN_00492b20(param_1), param_1[2] != 0)) { + return 0; + } + if (param_1[1] == 0) { + local_6 = *(undefined2 *)param_1[7]; + uVar3 = (undefined2)((uint)param_1[7] >> 0x10); + param_1[7] = param_1[7] + 2; + } + else { + uVar3 = (undefined2)((uint)&local_6 >> 0x10); + puVar2 = (undefined1 *)param_1[7]; + param_1[7] = param_1[7] + 1; + uVar1 = *puVar2; + puVar2 = (undefined1 *)param_1[7]; + param_1[7] = param_1[7] + 1; + local_6 = CONCAT11(uVar1,*puVar2); + } + param_1[9] = param_1[9] + -2; + return CONCAT22(uVar3,local_6); +} + + + +/* @00492d10 file=? name=FUN_00492d10 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 __cdecl FUN_00492d10(undefined4 *param_1) + +{ + undefined1 uVar1; + undefined1 uVar2; + undefined1 uVar3; + undefined1 *puVar4; + float local_8; + + if ((3 < (int)param_1[9]) || (FUN_00492b20(param_1), local_8 = _DAT_00492d80, param_1[2] == 0)) { + if (param_1[1] == 0) { + local_8 = *(float *)param_1[7]; + param_1[7] = param_1[7] + 4; + } + else { + puVar4 = (undefined1 *)param_1[7]; + param_1[7] = param_1[7] + 1; + uVar1 = *puVar4; + puVar4 = (undefined1 *)param_1[7]; + param_1[7] = param_1[7] + 1; + uVar2 = *puVar4; + puVar4 = (undefined1 *)param_1[7]; + param_1[7] = param_1[7] + 1; + uVar3 = *puVar4; + puVar4 = (undefined1 *)param_1[7]; + param_1[7] = param_1[7] + 1; + local_8 = (float)CONCAT31(CONCAT21(CONCAT11(uVar1,uVar2),uVar3),*puVar4); + } + param_1[9] = param_1[9] + -4; + } + return (float10)local_8; +} + + + +/* @00492d84 file=? name=FUN_00492d84 */ + +undefined4 __cdecl FUN_00492d84(undefined4 *param_1) + +{ + undefined1 uVar1; + undefined1 uVar2; + undefined1 uVar3; + undefined1 *puVar4; + undefined4 local_8; + + if (((int)param_1[9] < 4) && (FUN_00492b20(param_1), param_1[2] != 0)) { + return 0; + } + if (param_1[1] == 0) { + local_8 = *(undefined4 *)param_1[7]; + param_1[7] = param_1[7] + 4; + } + else { + puVar4 = (undefined1 *)param_1[7]; + param_1[7] = param_1[7] + 1; + uVar1 = *puVar4; + puVar4 = (undefined1 *)param_1[7]; + param_1[7] = param_1[7] + 1; + uVar2 = *puVar4; + puVar4 = (undefined1 *)param_1[7]; + param_1[7] = param_1[7] + 1; + uVar3 = *puVar4; + puVar4 = (undefined1 *)param_1[7]; + param_1[7] = param_1[7] + 1; + local_8 = CONCAT31(CONCAT21(CONCAT11(uVar1,uVar2),uVar3),*puVar4); + } + param_1[9] = param_1[9] + -4; + return local_8; +} + + + +/* @00492df0 file=? name=FUN_00492df0 */ + +undefined4 __cdecl FUN_00492df0(undefined4 *param_1,char *param_2,int param_3) + +{ + char *pcVar1; + uint uVar2; + uint uVar3; + + uVar3 = param_3 * 4; + if (param_1[1] == 0) { + uVar2 = param_1[9]; + if (uVar2 < uVar3) { + if (uVar2 != 0) { + FUN_004d4918((undefined4 *)param_2,(undefined4 *)param_1[7],uVar2); + param_2 = param_2 + uVar2; + uVar3 = uVar3 - uVar2; + param_1[9] = 0; + } + if ((uint)param_1[3] < uVar3) { + uVar2 = FUN_004d71e0(param_2,1,uVar3,(int *)*param_1); + if (uVar3 != uVar2) { + return 0; + } + param_1[5] = param_1[5] + uVar3 + param_1[8]; + param_1[8] = 0; + } + else { + FUN_00492b20(param_1); + if (param_1[2] != 0) { + return 0; + } + FUN_004d4918((undefined4 *)param_2,(undefined4 *)param_1[7],uVar3); + param_1[7] = param_1[7] + uVar3; + param_1[9] = param_1[9] - uVar3; + } + } + else { + FUN_004d4918((undefined4 *)param_2,(undefined4 *)param_1[7],uVar3); + param_1[7] = param_1[7] + uVar3; + param_1[9] = param_1[9] + param_3 * -4; + } + } + else { + while (param_3 != 0) { + if (((int)param_1[9] < 4) && (FUN_00492b20(param_1), param_1[2] != 0)) { + return 0; + } + pcVar1 = (char *)param_1[7]; + param_1[7] = param_1[7] + 1; + param_2[3] = *pcVar1; + pcVar1 = (char *)param_1[7]; + param_1[7] = param_1[7] + 1; + param_2[2] = *pcVar1; + pcVar1 = (char *)param_1[7]; + param_1[7] = param_1[7] + 1; + param_2[1] = *pcVar1; + pcVar1 = (char *)param_1[7]; + param_1[7] = param_1[7] + 1; + *param_2 = *pcVar1; + param_1[9] = param_1[9] + -4; + param_2 = param_2 + 4; + param_3 = param_3 + -1; + } + } + return 1; +} + + + +/* @00492f10 file=? name=FUN_00492f10 */ + +undefined4 __cdecl FUN_00492f10(undefined4 *param_1,char *param_2,uint param_3) + +{ + uint uVar1; + + uVar1 = param_1[9]; + if (uVar1 < param_3) { + if (uVar1 != 0) { + FUN_004d4918((undefined4 *)param_2,(undefined4 *)param_1[7],uVar1); + param_2 = param_2 + uVar1; + param_3 = param_3 - uVar1; + param_1[9] = 0; + } + if ((uint)param_1[3] < param_3) { + uVar1 = FUN_004d71e0(param_2,1,param_3,(int *)*param_1); + if (param_3 != uVar1) { + return 0; + } + param_1[5] = param_1[5] + param_3 + param_1[8]; + param_1[8] = 0; + } + else { + FUN_00492b20(param_1); + if (param_1[2] != 0) { + return 0; + } + FUN_004d4918((undefined4 *)param_2,(undefined4 *)param_1[7],param_3); + param_1[7] = param_1[7] + param_3; + param_1[9] = param_1[9] - param_3; + } + } + else { + FUN_004d4918((undefined4 *)param_2,(undefined4 *)param_1[7],param_3); + param_1[7] = param_1[7] + param_3; + param_1[9] = param_1[9] - param_3; + } + return 1; +} + + + +/* @00492fc4 file=? name=FUN_00492fc4 */ + +undefined4 __cdecl FUN_00492fc4(undefined4 *param_1,int *param_2,uint *param_3,uint param_4) + +{ + uint local_c; + int *local_8; + + if ((int)param_4 < (int)*param_3) { + FUN_00492f10(param_1,(char *)*param_2,param_4); + *(undefined1 *)(*param_2 + param_4) = 0; + } + else { + if ((int)param_4 < 0x100) { + local_c = 0x100; + } + else { + local_c = param_4 + 1; + } + if (*param_3 == 0) { + local_8 = FUN_004de55c(local_c); + } + else { + local_8 = FUN_004de760((int *)*param_2,local_c); + } + if (local_8 == (int *)0x0) { + if ((char *)*param_2 == (char *)0x0) { + return 0; + } + FUN_00492f10(param_1,(char *)*param_2,*param_3); + FUN_00492ba0(param_1,param_4 - *param_3); + *(undefined1 *)(*param_2 + -1 + *param_3) = 0; + } + else { + *param_2 = (int)local_8; + *param_3 = local_c; + FUN_00492f10(param_1,(char *)local_8,param_4); + *(undefined1 *)((int)local_8 + param_4) = 0; + } + } + return 1; +} + + + +/* @0049309c file=? name=FUN_0049309c */ + +void __cdecl FUN_0049309c(undefined4 *param_1,undefined4 *param_2) + +{ + *param_2 = 0; + if ((int *)*param_1 != (int *)0x0) { + FUN_004de420((int *)*param_1); + *param_1 = 0; + } + return; +} + + + +/* @004930c0 file=? name=FUN_004930c0 */ + +int * __cdecl FUN_004930c0(LPCSTR param_1,uint param_2,int *param_3,int param_4) + +{ + int *piVar1; + int *piVar2; + + while (piVar1 = FUN_004d6f54(param_1,&DAT_00508e1d), piVar1 == (int *)0x0) { + if (DAT_00520bcc != 0x27) { + return (int *)0x0; + } + } + piVar2 = FUN_004de2bc(1,0x34); + if (piVar2 == (int *)0x0) { + FUN_004d6b08(piVar1); + return (int *)0x0; + } + if ((param_3 == (int *)0x0) || (param_2 < 0x400)) { + if (param_2 < 0x400) { + param_2 = 0x400; + } + param_3 = FUN_004de55c(param_2); + if (param_3 == (int *)0x0) { + FUN_004d6b08(piVar1); + FUN_004de420(piVar2); + return (int *)0x0; + } + piVar2[4] = 1; + } + *piVar2 = (int)piVar1; + piVar2[6] = (int)param_3; + piVar2[3] = param_2; + *(undefined1 *)(piVar2 + 1) = 1; + piVar2[1] = piVar2[1] & 1; + piVar2[1] = piVar2[1] ^ (uint)(param_4 != 0); + return piVar2; +} + + + +/* @00493188 file=? name=FUN_00493188 */ + +void __cdecl FUN_00493188(int *param_1) + +{ + int iVar1; + + iVar1 = FUN_004d6b08((int *)*param_1); + if (iVar1 != 0) { + FUN_0049a300(1,s_failed_to_close_file_descriptor_0_00508e20); + } + if (param_1[4] != 0) { + FUN_004de420((int *)param_1[6]); + } + FUN_004de420(param_1); + return; +} + + + +/* @004931c8 file=? name=FUN_004931c8 */ + +void __cdecl FUN_004931c8(undefined1 *param_1,uint param_2) + +{ + undefined1 uVar1; + uint uVar2; + + uVar2 = 0; + if (param_2 != 0) { + do { + uVar1 = *param_1; + *param_1 = param_1[3]; + param_1[3] = uVar1; + uVar1 = param_1[1]; + param_1[1] = param_1[2]; + param_1[2] = uVar1; + param_1 = param_1 + 4; + uVar2 = uVar2 + 1; + } while (uVar2 < param_2); + } + return; +} + + + +/* @004931fc file=? name=FUN_004931fc */ + +void * __thiscall FUN_004931fc(void *this,undefined4 *param_1,uint *param_2,uint *param_3) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + void *local_8; + + uVar3 = 0; + uVar1 = FUN_00492cb4(param_1); + uVar2 = (int)(uVar1 & 0xffff) >> 0xc & 0xc; + if (uVar2 == 0) { + uVar3 = FUN_00492c84(param_1); + uVar3 = uVar3 & 0xff; + local_8 = (void *)0x3; + } + else if (uVar2 == 4) { + uVar3 = FUN_00492cb4(param_1); + uVar3 = uVar3 & 0xffff; + local_8 = (void *)0x4; + } + else if (uVar2 == 8) { + uVar3 = FUN_00492d84(param_1); + local_8 = (void *)0x6; + } + else { + FUN_0049a300(1,s_dpl_bgfRead_got_unrecognised_blo_00508ee8); + param_1[2] = 1; + local_8 = this; + } + *param_2 = uVar1 & 0x3fff; + *param_3 = uVar3; + return local_8; +} + + + +/* @004932a4 file=? name=FUN_004932a4 */ + +undefined4 __thiscall FUN_004932a4(void *this,undefined4 *param_1,int param_2) + +{ + int iVar1; + undefined4 uVar2; + undefined4 *extraout_ECX; + undefined4 *extraout_ECX_00; + undefined4 *extraout_ECX_01; + undefined4 *extraout_ECX_02; + undefined4 *extraout_ECX_03; + undefined4 *extraout_ECX_04; + int iVar3; + float10 fVar4; + float local_10; + uint local_c; + uint local_8; + + iVar3 = 0; + local_10 = 0.0254; + do { + if ((param_1[2] != 0) || (param_2 <= iVar3)) { + param_1[10] = local_10 * (float)param_1[10]; + return 1; + } + iVar1 = FUN_004931fc(this,param_1,&local_8,&local_c); + if (param_1[2] != 0) { + return 0; + } + this = param_1; + if ((int)local_8 < 0x2006) { + if (local_8 == 0x2005) { + fVar4 = FUN_00492d10(param_1); + param_1[10] = (float)fVar4; + } + else if ((int)local_8 < 0x2003) { + if (local_8 == 0x2002) { + FUN_00492ba0(param_1,local_c); + this = extraout_ECX; + } + else if ((local_8 == 0) || (local_8 == 0x2000)) { + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_03; + } + else { +LAB_00493446: + FUN_0049a300(1,s_dpl_bgfRead_got_unrecognized_blo_00508fa5); + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_04; + } + } + else if (local_8 == 0x2003) { + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_00; + } + else { + if (local_8 != 0x2004) goto LAB_00493446; + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_01; + } + } + else if (local_8 == 0x2006) { + uVar2 = FUN_00492c84(param_1); + *(char *)(param_1 + 0xb) = (char)uVar2; + if (*(char *)(param_1 + 0xb) != '\0') { + FUN_0049a300(1,s_dpl_bgfRead_cannot_process_doubl_00508f18); + param_1[2] = 1; + return 0; + } + } + else if (local_8 == 0x2007) { + uVar2 = FUN_00492c84(param_1); + if ((char)uVar2 != '\0') { + FUN_0049a300(1,s_dpl_bgfRead___file_is_not_a_geom_00508f4b); + param_1[2] = 1; + return 0; + } + } + else if (local_8 == 0x2009) { + uVar2 = FUN_00492c84(param_1); + if ((char)uVar2 == '\0') { + local_10 = 0.0254; + } + else { + if ((char)uVar2 != '\x01') { + FUN_0049a300(1,s_dpl_bgfRead_got_unrecognized_uni_00508f76); + param_1[2] = 1; + return 0; + } + local_10 = 1.0; + } + } + else { + if (local_8 != 0x2037) goto LAB_00493446; + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_02; + } + iVar3 = iVar3 + iVar1 + local_c; + } while( true ); +} + + + +/* @0049348c file=? name=FUN_0049348c */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl +FUN_0049348c(undefined4 *param_1,int param_2,int param_3,uint param_4,uint param_5) + +{ + float fVar1; + bool bVar2; + int iVar3; + int iVar4; + float *pfVar5; + float *pfVar6; + uint uVar7; + int iVar8; + int iVar9; + int local_14; + int local_8; + + local_8 = 3; + bVar2 = false; + uVar7 = 1; + if (param_4 == 0x49) { + uVar7 = 0x41; + local_8 = 4; + bVar2 = true; + } + else { + if ((param_4 & 0x1f) != (int)*(char *)(param_3 + 0xc)) { + FUN_0049a300(1,s_dpl_bgfRead_got_vertices_of_inco_00508fdb); + FUN_00492ba0(param_1,param_5); + return 0; + } + if ((param_4 & 1) != 0) { + uVar7 = 3; + local_8 = 6; + } + if ((param_4 & 2) != 0) { + uVar7 = uVar7 | 4; + local_8 = local_8 + 4; + } + if ((param_4 & 4) != 0) { + uVar7 = uVar7 | 8; + local_8 = local_8 + 2; + } + if ((param_4 & 8) != 0) { + uVar7 = uVar7 | 0x10; + local_8 = local_8 + 2; + } + if ((param_4 & 0x10) != 0) { + uVar7 = uVar7 | 0x20; + local_8 = local_8 + 3; + } + } + iVar3 = local_8 * 4; + iVar4 = (int)param_5 / iVar3; + FUN_0048c910(param_2,uVar7); + FUN_0048cae0(param_2,iVar4); + if ((int)param_1[9] < (int)param_5) { + if ((*(byte *)(param_1 + 7) & 3) != 0) { + FUN_004d493c((undefined4 *)param_1[6],(undefined4 *)param_1[7],param_1[9]); + param_1[7] = param_1[6]; + } + local_14 = 0; + for (; (param_1[2] == 0 && (0 < iVar4)); iVar4 = iVar4 - iVar9) { + if ((int)param_1[9] < iVar3) { + FUN_00492b20(param_1); + } + iVar9 = (int)param_1[9] / iVar3; + if (iVar4 < (int)param_1[9] / iVar3) { + iVar9 = iVar4; + } + if (param_1[1] != 0) { + FUN_004931c8((undefined1 *)param_1[7],iVar9 * local_8); + } + if ((float)param_1[10] != _DAT_0049371c) { + pfVar6 = (float *)param_1[7]; + fVar1 = (float)param_1[10]; + iVar8 = 0; + if (0 < iVar9) { + do { + *pfVar6 = fVar1 * *pfVar6; + pfVar6[1] = fVar1 * pfVar6[1]; + pfVar6[2] = fVar1 * pfVar6[2]; + if (bVar2) { + pfVar6[3] = fVar1 * pfVar6[3]; + } + pfVar6 = pfVar6 + local_8; + iVar8 = iVar8 + 1; + } while (iVar8 < iVar9); + } + } + FUN_0048cc48(param_2,(byte *)param_1[7],local_14,iVar9); + FUN_00492ba0(param_1,iVar9 * iVar3); + local_14 = local_14 + iVar9; + } + if (0 < iVar4) { + FUN_0049a300(1,s_dpl_bgfRead_failed_to_read_in_al_00509022); + } + } + else { + if ((*(byte *)(param_1 + 7) & 3) == 0) { + pfVar6 = (float *)param_1[7]; + } + else { + FUN_004d493c((undefined4 *)param_1[6],(undefined4 *)param_1[7],param_5); + pfVar6 = (float *)param_1[6]; + } + if (param_1[1] != 0) { + FUN_004931c8((undefined1 *)pfVar6,iVar4 * local_8); + } + if ((float)param_1[10] != _DAT_0049371c) { + fVar1 = (float)param_1[10]; + iVar3 = 0; + pfVar5 = pfVar6; + if (0 < iVar4) { + do { + *pfVar5 = fVar1 * *pfVar5; + pfVar5[1] = fVar1 * pfVar5[1]; + pfVar5[2] = fVar1 * pfVar5[2]; + if (bVar2) { + pfVar5[3] = fVar1 * pfVar5[3]; + } + pfVar5 = pfVar5 + local_8; + iVar3 = iVar3 + 1; + } while (iVar3 < iVar4); + } + } + FUN_0048cc48(param_2,(byte *)pfVar6,0,iVar4); + FUN_00492ba0(param_1,param_5); + } + return 1; +} + + + +/* @00493720 file=? name=FUN_00493720 */ + +undefined4 __cdecl FUN_00493720(undefined4 *param_1,int param_2,int param_3,uint param_4) + +{ + int iVar1; + int iVar2; + int iVar3; + byte *local_10; + + iVar1 = param_3 * 4; + iVar2 = (int)param_4 / iVar1; + if ((int)param_1[9] < (int)param_4) { + if ((*(byte *)(param_1 + 7) & 3) != 0) { + FUN_004d493c((undefined4 *)param_1[6],(undefined4 *)param_1[7],param_1[9]); + param_1[7] = param_1[6]; + } + for (; (param_1[2] == 0 && (0 < iVar2)); iVar2 = iVar2 - iVar3) { + if ((int)param_1[9] < iVar1) { + FUN_00492b20(param_1); + } + iVar3 = (int)param_1[9] / iVar1; + if (iVar2 < (int)param_1[9] / iVar1) { + iVar3 = iVar2; + } + if (param_1[1] != 0) { + FUN_004931c8((undefined1 *)param_1[7],iVar3 * param_3); + } + FUN_0048cd68(param_2,(byte *)param_1[7],iVar3,param_3); + FUN_00492ba0(param_1,iVar3 * iVar1); + } + if (0 < iVar2) { + FUN_0049a300(1,s_dpl_bgfRead_failed_to_read_in_al_00509052); + } + } + else { + if ((*(byte *)(param_1 + 7) & 3) == 0) { + local_10 = (byte *)param_1[7]; + } + else { + FUN_004d493c((undefined4 *)param_1[6],(undefined4 *)param_1[7],param_4); + local_10 = (byte *)param_1[6]; + } + if (param_1[1] != 0) { + FUN_004931c8(local_10,iVar2 * param_3); + } + FUN_0048cd68(param_2,local_10,iVar2,param_3); + FUN_00492ba0(param_1,param_4); + } + return 1; +} + + + +/* @00493854 file=? name=FUN_00493854 */ + +undefined4 __cdecl FUN_00493854(undefined4 *param_1,int param_2,int param_3,uint param_4) + +{ + uint uVar1; + uint uVar2; + undefined4 uVar3; + byte *pbVar4; + int local_c; + + uVar1 = param_4; + if ((int)param_4 < 0) { + uVar1 = param_4 + 3; + } + uVar2 = (int)uVar1 >> 2; + if (param_3 == 3) { + local_c = uVar2 - 2; + } + else { + if (param_3 != 4) { + FUN_0049a300(1,s_dpl_bgfRead_got_unrecognised_typ_00509085); + FUN_00492ba0(param_1,param_4); + return 0; + } + local_c = (int)uVar1 >> 3; + if (local_c < 0) { + local_c = local_c + (uint)((uVar2 & 1) != 0); + } + local_c = local_c + -1; + } + if (local_c < 1) { + FUN_0049a300(1,s_dpl_bgfRead_got_an_invalid_numbe_005090bb); + FUN_00492ba0(param_1,param_4); + uVar3 = 0; + } + else { + if ((uint)param_1[3] < param_4) { + pbVar4 = (byte *)FUN_004de55c(param_4); + if (pbVar4 == (byte *)0x0) { + FUN_0049a300(1,s_dpl_bgfRead_failed_to_allocate_m_005090f8); + FUN_00492ba0(param_1,param_4); + return 0; + } + FUN_00492df0(param_1,(char *)pbVar4,uVar2); + FUN_0048cdac(param_2,pbVar4,local_c,param_3); + FUN_004de420((int *)pbVar4); + } + else { + pbVar4 = (byte *)param_1[6]; + if ((int)param_1[9] < (int)param_4) { + FUN_00492b20(param_1); + } + else if ((*(byte *)(param_1 + 7) & 3) == 0) { + pbVar4 = (byte *)param_1[7]; + } + else { + FUN_004d493c((undefined4 *)param_1[6],(undefined4 *)param_1[7],param_4); + } + if (param_1[1] != 0) { + FUN_004931c8(pbVar4,uVar2); + } + FUN_0048cdac(param_2,pbVar4,local_c,param_3); + FUN_00492ba0(param_1,param_4); + } + if (param_1[2] == 0) { + uVar3 = 1; + } + else { + uVar3 = 0; + } + } + return uVar3; +} + + + +/* @004939b8 file=? name=FUN_004939b8 */ + +undefined4 __thiscall +FUN_004939b8(void *this,undefined4 *param_1,int param_2,int param_3,int param_4) + +{ + bool bVar1; + int iVar2; + void *extraout_ECX; + void *extraout_ECX_00; + void *extraout_ECX_01; + void *extraout_ECX_02; + int iVar3; + uint local_c; + uint local_8; + + bVar1 = false; + for (iVar3 = 0; (param_1[2] == 0 && (iVar3 < param_4)); iVar3 = iVar3 + iVar2 + local_c) { + iVar2 = FUN_004931fc(this,param_1,&local_8,&local_c); + if (param_1[2] != 0) { + return 0; + } + if ((local_8 & 0x80) == 0) { + if ((local_8 == 0) || (local_8 == 0x2000)) { + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_01; + } + else { + FUN_0049a300(1,s_dpl_bgfRead_got_unrecognized_blo_00509167); + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_02; + } + } + else if (bVar1) { + FUN_0049a300(1,s_dpl_bgfRead_vertices_already_def_0050912e); + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_00; + } + else { + FUN_0049348c(param_1,param_2,param_3,local_8,local_c); + bVar1 = true; + this = extraout_ECX; + } + } + return 1; +} + + + +/* @00493a90 file=? name=FUN_00493a90 */ + +undefined4 __thiscall +FUN_00493a90(void *this,undefined4 *param_1,int param_2,int param_3,int param_4) + +{ + bool bVar1; + int iVar2; + undefined4 uVar3; + void *extraout_ECX; + void *extraout_ECX_00; + void *extraout_ECX_01; + void *extraout_ECX_02; + void *extraout_ECX_03; + void *extraout_ECX_04; + void *extraout_ECX_05; + int iVar4; + uint local_c; + uint local_8; + + bVar1 = false; + for (iVar4 = 0; (param_1[2] == 0 && (iVar4 < param_4)); iVar4 = iVar4 + iVar2 + local_c) { + iVar2 = FUN_004931fc(this,param_1,&local_8,&local_c); + if (param_1[2] != 0) { + return 0; + } + if ((local_8 & 0x80) == 0) { + if (local_8 == 0x47) { + FUN_00493720(param_1,param_2,3,local_c); + this = extraout_ECX_01; + } + else if (local_8 == 0x4d) { + uVar3 = FUN_00492c84(param_1); + FUN_00493720(param_1,param_2,(int)(char)uVar3,local_c - 1); + this = extraout_ECX_02; + } + else if (local_8 == 0x4e) { + uVar3 = FUN_00492c84(param_1); + FUN_00493854(param_1,param_2,(int)(char)uVar3,local_c - 1); + this = extraout_ECX_03; + } + else if ((local_8 == 0) || (local_8 == 0x2000)) { + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_04; + } + else { + FUN_0049a300(1,s_dpl_bgfRead_got_unrecognized_blo_005091dd); + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_05; + } + } + else if (bVar1) { + FUN_0049a300(1,s_dpl_bgfRead_vertices_already_def_005091a4); + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_00; + } + else { + FUN_0049348c(param_1,param_2,param_3,local_8,local_c); + bVar1 = true; + this = extraout_ECX; + } + } + return 1; +} + + + +/* @00493bd4 file=? name=FUN_00493bd4 */ + +undefined4 __thiscall +FUN_00493bd4(void *this,undefined4 *param_1,int param_2,int param_3,int param_4) + +{ + bool bVar1; + int iVar2; + undefined4 *extraout_ECX; + undefined4 *extraout_ECX_00; + undefined4 *extraout_ECX_01; + undefined4 *extraout_ECX_02; + int iVar3; + uint local_c; + uint local_8; + + bVar1 = false; + for (iVar3 = 0; (param_1[2] == 0 && (iVar3 < param_4)); iVar3 = iVar3 + iVar2 + local_c) { + iVar2 = FUN_004931fc(this,param_1,&local_8,&local_c); + if (param_1[2] != 0) { + return 0; + } + if ((local_8 & 0x80) == 0) { + if (local_8 == 0x2042) { + this = param_1; + FUN_00492c84(param_1); + } + else if ((local_8 == 0) || (local_8 == 0x2000)) { + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_01; + } + else { + FUN_0049a300(1,s_dpl_bgfRead_got_unrecognized_blo_00509254); + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_02; + } + } + else if (bVar1) { + FUN_0049a300(1,s_dpl_bgfRead_vertices_already_def_0050921b); + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_00; + } + else { + FUN_0049348c(param_1,param_2,param_3,local_8,local_c); + bVar1 = true; + this = extraout_ECX; + } + } + return 1; +} + + + +/* @00493cbc file=? name=FUN_00493cbc */ + +undefined4 __thiscall +FUN_00493cbc(void *this,undefined4 *param_1,int param_2,int param_3,int param_4) + +{ + bool bVar1; + int iVar2; + undefined4 *extraout_ECX; + undefined4 *extraout_ECX_00; + undefined4 *extraout_ECX_01; + undefined4 *extraout_ECX_02; + int iVar3; + uint local_c; + uint local_8; + + bVar1 = false; + for (iVar3 = 0; (param_1[2] == 0 && (iVar3 < param_4)); iVar3 = iVar3 + iVar2 + local_c) { + iVar2 = FUN_004931fc(this,param_1,&local_8,&local_c); + if (param_1[2] != 0) { + return 0; + } + if ((local_8 & 0x80) == 0) { + if (local_8 == 0x2049) { + this = param_1; + FUN_00492d10(param_1); + } + else if ((local_8 == 0) || (local_8 == 0x2000)) { + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_01; + } + else { + FUN_0049a300(1,s_dpl_bgfRead_got_unrecognized_blo_005092cf); + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_02; + } + } + else if (bVar1) { + FUN_0049a300(1,s_dpl_bgfRead_vertices_already_def_00509296); + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_00; + } + else { + FUN_0049348c(param_1,param_2,param_3,local_8,local_c); + bVar1 = true; + this = extraout_ECX; + } + } + return 1; +} + + + +/* @00493da8 file=? name=FUN_00493da8 */ + +undefined4 __thiscall +FUN_00493da8(void *this,undefined4 *param_1,int param_2,int param_3,int param_4) + +{ + bool bVar1; + int iVar2; + undefined4 *extraout_ECX; + undefined4 *extraout_ECX_00; + undefined4 *extraout_ECX_01; + undefined4 *extraout_ECX_02; + int iVar3; + uint local_c; + uint local_8; + + bVar1 = false; + for (iVar3 = 0; (param_1[2] == 0 && (iVar3 < param_4)); iVar3 = iVar3 + iVar2 + local_c) { + iVar2 = FUN_004931fc(this,param_1,&local_8,&local_c); + if (param_1[2] != 0) { + return 0; + } + if (local_8 == 0x49) { + if (bVar1) { + FUN_0049a300(1,s_dpl_bgfRead_vertices_already_def_00509312); + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_00; + } + else { + FUN_0049348c(param_1,param_2,param_3,0x49,local_c); + bVar1 = true; + this = extraout_ECX; + } + } + else { + this = param_1; + if (local_8 == 0x2041) { + FUN_00492cb4(param_1); + } + else if (local_8 == 0x2040) { + FUN_00492cb4(param_1); + } + else if ((local_8 == 0) || (local_8 == 0x2000)) { + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_01; + } + else { + FUN_0049a300(1,s_dpl_bgfRead_got_unrecognized_blo_0050934b); + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_02; + } + } + } + FUN_0048cb44(param_2); + return 1; +} + + + +/* @00493ed0 file=? name=FUN_00493ed0 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl FUN_00493ed0(undefined4 *param_1,int param_2,int param_3) + +{ + int iVar1; + float *pfVar2; + int iVar3; + undefined4 *extraout_ECX; + undefined4 *extraout_ECX_00; + undefined4 *extraout_ECX_01; + undefined4 *extraout_ECX_02; + undefined4 *extraout_ECX_03; + undefined4 *extraout_ECX_04; + undefined4 *extraout_ECX_05; + undefined4 *this; + float *pfVar4; + int *piVar5; + float local_34 [3]; + char local_28 [12]; + char local_1c [12]; + float local_10; + uint local_c; + uint local_8; + + pfVar2 = (float *)&DAT_00508eb0; + pfVar4 = local_34; + for (iVar3 = 9; iVar3 != 0; iVar3 = iVar3 + -1) { + *pfVar4 = *pfVar2; + pfVar2 = pfVar2 + 1; + pfVar4 = pfVar4 + 1; + } + iVar3 = 0; + piVar5 = (int *)0x0; + this = (undefined4 *)0x0; + do { + if ((param_1[2] != 0) || (param_3 <= iVar3)) { + if (piVar5 != (int *)0x0) { + if ((float)param_1[10] != _DAT_004940c4) { + local_10 = (float)param_1[10]; + iVar3 = 0; + pfVar2 = local_34; + do { + *pfVar2 = local_10 * *pfVar2; + iVar3 = iVar3 + 1; + pfVar2 = pfVar2 + 1; + } while (iVar3 < 6); + } + FUN_0048c910(param_2,1); + FUN_0048cae0(param_2,3); + FUN_0048cc48(param_2,(byte *)local_34,0,3); + FUN_0048c9c8(param_2,(char *)piVar5); + FUN_004de420(piVar5); + } + return 1; + } + iVar1 = FUN_004931fc(this,param_1,&local_8,&local_c); + if (param_1[2] != 0) { + if (piVar5 != (int *)0x0) { + FUN_004de420(piVar5); + } + return 0; + } + if ((int)local_8 < 0x2044) { + if (local_8 == 0x2043) { + this = param_1; + FUN_00492c84(param_1); + } + else { + if (local_8 != 0) { + if (local_8 == 0x4c) { + if (piVar5 == (int *)0x0) { + FUN_00492df0(param_1,(char *)local_34,3); + piVar5 = FUN_004de55c(local_c - 0xb); + if (piVar5 == (int *)0x0) { + FUN_0049a300(1,s_dpl_bgfRead_failed_to_allocate_m_0050938f); + FUN_00492ba0(param_1,local_c - 0xc); + this = extraout_ECX_01; + } + else { + FUN_00492f10(param_1,(char *)piVar5,local_c - 0xc); + this = extraout_ECX_02; + } + } + else { + FUN_0049a300(1,s_dpl_bgfRead_already_defined_stri_005093cb); + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_03; + } + goto LAB_00494035; + } + if (local_8 != 0x2000) goto LAB_00494015; + } + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_04; + } + } + else if (local_8 == 0x2044) { + FUN_00492df0(param_1,local_28,3); + this = extraout_ECX; + } + else if (local_8 == 0x2045) { + FUN_00492df0(param_1,local_1c,3); + this = extraout_ECX_00; + } + else { +LAB_00494015: + FUN_0049a300(1,s_dpl_bgfRead_got_unrecognized_blo_005093f9); + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_05; + } +LAB_00494035: + iVar3 = iVar3 + iVar1 + local_c; + } while( true ); +} + + + +/* @004940c8 file=? name=FUN_004940c8 */ + +undefined4 __cdecl +FUN_004940c8(undefined4 *param_1,int param_2,int param_3,uint param_4,undefined4 param_5) + +{ + undefined4 *puVar1; + undefined4 uVar2; + void *this; + + puVar1 = (undefined4 *)FUN_00489818(); + if (puVar1 == (undefined4 *)0x0) { + FUN_0049a300(1,s_dpl_bgfRead_failed_to_create_dpl_00509436); + FUN_00492ba0(param_1,param_4); + uVar2 = 0; + } + else { + FUN_0048c8ac((int)puVar1,param_5); + switch(param_5) { + case 2: + case 3: + case 4: + FUN_004939b8(this,param_1,(int)puVar1,param_3,param_4); + break; + case 5: + FUN_00493a90(this,param_1,(int)puVar1,param_3,param_4); + break; + case 6: + FUN_00493ed0(param_1,(int)puVar1,param_4); + break; + case 8: + FUN_00493bd4(this,param_1,(int)puVar1,param_3,param_4); + break; + case 9: + FUN_00493cbc(this,param_1,(int)puVar1,param_3,param_4); + break; + case 10: + FUN_00493da8(this,param_1,(int)puVar1,param_3,param_4); + } + FUN_0048d728(puVar1); + FUN_00489ca4(param_2,(int)puVar1); + if (param_1[2] == 0) { + uVar2 = 1; + } + else { + uVar2 = 0; + } + } + return uVar2; +} + + + +/* @004941e4 file=? name=FUN_004941e4 */ + +undefined4 __cdecl FUN_004941e4(undefined4 *param_1,int param_2,undefined4 *param_3,uint param_4) + +{ + char cVar1; + undefined4 *puVar2; + undefined4 uVar3; + code *pcVar4; + int iVar5; + int iVar6; + undefined4 *extraout_ECX; + undefined4 *extraout_ECX_00; + undefined4 *extraout_ECX_01; + undefined4 *extraout_ECX_02; + undefined4 *extraout_ECX_03; + undefined4 *extraout_ECX_04; + undefined4 *extraout_ECX_05; + undefined4 *extraout_ECX_06; + undefined4 *extraout_ECX_07; + undefined4 *extraout_ECX_08; + undefined4 *extraout_ECX_09; + undefined4 *puVar7; + undefined4 *extraout_ECX_10; + undefined4 local_2c [2]; + undefined1 local_24; + byte local_23; + undefined1 local_22; + undefined1 local_21; + undefined1 local_20; + char local_1f; + int local_1c; + int *local_18; + int local_14; + uint local_10; + uint local_c; + uint local_8; + + puVar2 = local_2c; + for (iVar6 = 5; iVar6 != 0; iVar6 = iVar6 + -1) { + *puVar2 = *param_3; + param_3 = param_3 + 1; + puVar2 = puVar2 + 1; + } + iVar6 = 0; + local_18 = (int *)0x0; + if (DAT_00508ea0 != (char *)0x0) { + *DAT_00508ea0 = '\0'; + } + puVar2 = (undefined4 *)FUN_00489800(); + if (puVar2 == (undefined4 *)0x0) { + FUN_0049a300(1,s_dpl_bgfRead_failed_to_create_dpl_00509461); + FUN_00492ba0(param_1,param_4); + uVar3 = 0; + } + else { + pcVar4 = (code *)FUN_00496614(); + puVar7 = extraout_ECX; + if (pcVar4 != (code *)0x0) { + (*pcVar4)(9,puVar2); + puVar7 = extraout_ECX_00; + } + for (; (param_1[2] == 0 && (iVar6 < (int)param_4)); iVar6 = iVar6 + iVar5 + local_c) { + iVar5 = FUN_004931fc(puVar7,param_1,&local_8,&local_c); + if (param_1[2] != 0) break; + local_14 = 0; + if ((int)local_8 < 0x2009) { + if (local_8 == 0x2008) { + FUN_00492fc4(param_1,(int *)&DAT_00508ea0,(uint *)&DAT_00508ea4,local_c); + puVar7 = extraout_ECX_02; + } + else { + puVar7 = extraout_ECX_01; + if ((int)local_8 < 0x49) { + if (local_8 == 0x48) { + local_14 = 10; + } + else if ((int)local_8 < 0x45) { + if (local_8 == 0x44) { + local_14 = 2; + } + else if (local_8 == 0) { +LAB_0049453e: + FUN_00492ba0(param_1,local_c); + puVar7 = extraout_ECX_08; + } + else { + if (local_8 != 0x43) goto switchD_00494307_caseD_2038; + local_14 = 4; + } + } + else if (local_8 == 0x45) { + local_14 = 3; + } + else if (local_8 == 0x46) { + local_14 = 5; + } + else { +switchD_00494307_caseD_2038: + FUN_0049a300(1,s_dpl_bgfRead_got_unrecognized_blo_005094cf); + FUN_00492ba0(param_1,local_c); + puVar7 = extraout_ECX_09; + } + } + else if (local_8 == 0x4a) { + local_14 = 8; + } + else if (local_8 == 0x4b) { + local_14 = 6; + } + else { + if (local_8 != 0x50) { + if (local_8 == 0x2000) goto LAB_0049453e; + goto switchD_00494307_caseD_2038; + } + local_14 = 9; + } + } + } + else { + puVar7 = param_1; + switch(local_8) { + case 0x2030: + uVar3 = FUN_00492c84(param_1); + cVar1 = (char)uVar3; + if ((cVar1 < '\x01') || ('\x02' < cVar1)) { + local_2c[0] = 0; + } + else if (cVar1 == '\x01') { + FUN_00492fc4(param_1,(int *)&DAT_00508e8c,(uint *)&DAT_00508e98,local_c - 1); + local_2c[0] = FUN_00497678(DAT_00508e8c,0,(int *)0x0); + puVar7 = extraout_ECX_03; + } + else { + local_2c[0] = FUN_00497678(s_DEFAULT_0050948c,0,(int *)0x0); + puVar7 = extraout_ECX_04; + } + break; + case 0x2031: + uVar3 = FUN_00492c84(param_1); + cVar1 = (char)uVar3; + if ((cVar1 < '\x01') || ('\x03' < cVar1)) { + local_2c[1] = 0; + } + else if (cVar1 == '\x01') { + FUN_00492fc4(param_1,(int *)&DAT_00508e90,(uint *)&DAT_00508e9c,local_c - 1); + local_2c[1] = FUN_00497678(DAT_00508e90,0,(int *)0x0); + puVar7 = extraout_ECX_05; + } + else if (cVar1 == '\x02') { + local_2c[1] = FUN_00497678(s_DEFAULT_00509494,0,(int *)0x0); + puVar7 = extraout_ECX_06; + } + else { + local_2c[1] = local_2c[0]; + } + break; + case 0x2032: + uVar3 = FUN_00492c84(param_1); + local_24 = (undefined1)uVar3; + break; + case 0x2033: + uVar3 = FUN_00492c84(param_1); + local_23 = (byte)uVar3; + if (local_23 == 0) { + FUN_00492c84(param_1); + } + else { + uVar3 = FUN_00492c84(param_1); + local_22 = (undefined1)uVar3; + } + break; + case 0x2034: + local_1c = FUN_00492d84(param_1); + break; + case 0x2035: + uVar3 = FUN_00492c84(param_1); + local_21 = (undefined1)uVar3; + break; + case 0x2036: + uVar3 = FUN_00492c84(param_1); + local_20 = (undefined1)uVar3; + break; + case 0x2037: + local_18 = FUN_004de55c(local_c); + if (local_18 == (int *)0x0) { + FUN_0049a300(1,s_dpl_bgfRead_failed_to_allocate_m_0050949c); + FUN_00492ba0(param_1,local_c); + return 0; + } + FUN_00492f10(param_1,(char *)local_18,local_c); + local_10 = local_c; + puVar7 = extraout_ECX_07; + break; + default: + goto switchD_00494307_caseD_2038; + case 0x2039: + uVar3 = FUN_00492c84(param_1); + local_1f = (char)uVar3; + } + } + if (local_14 != 0) { + FUN_004940c8(param_1,(int)puVar2,(int)local_2c,local_c,local_14); + puVar7 = extraout_ECX_10; + } + } + FUN_0048c654((int)puVar2,local_2c[0]); + FUN_0048c688((int)puVar2,local_2c[1]); + if (local_1f == '\x01') { + FUN_0048c71c((int)puVar2); + } + else { + FUN_0048c750((int)puVar2); + } + if (local_1c != 0) { + FUN_0048c7b4((int)puVar2,local_1c); + } + if ((local_23 & 1) != 0) { + FUN_0048c820((int)puVar2,1); + } + FUN_0048d6c4(puVar2); + FUN_00489c5c(param_2,(int)puVar2); + if ((DAT_00508ea0 != (char *)0x0) && (*DAT_00508ea0 != '\0')) { + FUN_00497c7c(1,DAT_00508ea0,local_18,local_10,param_2,(int)puVar2); + } + if (local_18 != (int *)0x0) { + pcVar4 = (code *)FUN_00496644(); + if (pcVar4 != (code *)0x0) { + (*pcVar4)(9,puVar2,local_18,local_10); + } + FUN_004de420(local_18); + } + if (param_1[2] == 0) { + uVar3 = 1; + } + else { + uVar3 = 0; + } + } + return uVar3; +} + + + +/* @00494668 file=? name=FUN_00494668 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl +FUN_00494668(undefined4 *param_1,int param_2,undefined4 *param_3,int *param_4,uint param_5) + +{ + undefined4 *puVar1; + undefined4 uVar2; + code *pcVar3; + int iVar4; + undefined4 *extraout_ECX; + undefined4 *extraout_ECX_00; + undefined4 *extraout_ECX_01; + undefined4 *extraout_ECX_02; + undefined4 *extraout_ECX_03; + undefined4 *extraout_ECX_04; + undefined4 *extraout_ECX_05; + undefined4 *extraout_ECX_06; + undefined4 *extraout_ECX_07; + undefined4 *this; + int iVar5; + float local_30; + float local_2c; + float local_28; + int *local_24; + undefined4 *local_20; + float local_1c; + float local_18; + char local_11; + uint local_10; + uint local_c; + uint local_8; + + iVar5 = 0; + local_11 = '\0'; + local_20 = (undefined4 *)param_1[0xc]; + local_24 = (int *)0x0; + if (DAT_00508ea8 != (char *)0x0) { + *DAT_00508ea8 = '\0'; + } + puVar1 = (undefined4 *)FUN_004897e8(); + if (puVar1 == (undefined4 *)0x0) { + FUN_0049a300(1,s_dpl_bgfRead_failed_to_create_dpl_00509504); + FUN_00492ba0(param_1,param_5); + uVar2 = 0; + } + else { + pcVar3 = (code *)FUN_00496614(); + if (pcVar3 != (code *)0x0) { + (*pcVar3)(8,puVar1); + } + FUN_004d4918(&local_30,local_20,0xc); + this = extraout_ECX; + for (; (param_1[2] == 0 && (iVar5 < (int)param_5)); iVar5 = iVar5 + iVar4 + local_c) { + iVar4 = FUN_004931fc(this,param_1,&local_8,&local_c); + if (param_1[2] != 0) break; + if ((int)local_8 < 0x2038) { + if (local_8 == 0x2037) { + local_24 = FUN_004de55c(local_c); + if (local_24 == (int *)0x0) { + FUN_0049a300(1,s_dpl_bgfRead_failed_to_allocate_m_0050952a); + FUN_00492ba0(param_1,local_c); + return 0; + } + FUN_00492f10(param_1,(char *)local_24,local_c); + local_10 = local_c; + pcVar3 = (code *)FUN_00496644(); + this = extraout_ECX_03; + if (pcVar3 != (code *)0x0) { + (*pcVar3)(8,puVar1,local_24,local_c); + this = extraout_ECX_04; + } + } + else if (local_8 == 0) { +LAB_0049481d: + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_06; + } + else if (local_8 == 0x42) { + FUN_004941e4(param_1,(int)puVar1,param_3,local_c); + this = extraout_ECX_05; + } + else { + if (local_8 == 0x2000) goto LAB_0049481d; + if (local_8 != 0x2008) goto LAB_0049482c; + FUN_00492fc4(param_1,(int *)&DAT_00508ea8,(uint *)&DAT_00508eac,local_c); + this = extraout_ECX_00; + } + } + else if (local_8 == 0x2046) { + FUN_00492df0(param_1,(char *)&local_1c,2); + local_11 = '\x01'; + this = extraout_ECX_01; + } + else if (local_8 == 0x2047) { + FUN_00492df0(param_1,(char *)&local_30,3); + this = extraout_ECX_02; + } + else if (local_8 == 0x2048) { + this = param_1; + FUN_00492c84(param_1); + } + else { +LAB_0049482c: + FUN_0049a300(1,s_dpl_bgfRead_got_unrecognized_blo_0050955d); + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_07; + } + } + if (local_11 != '\0') { + if ((float)param_1[10] != _DAT_00494980) { + local_1c = (float)param_1[10] * local_1c; + local_18 = (float)param_1[10] * local_18; + } + if (local_1c < _DAT_00494984) { + local_1c = DAT_005209d0; + } + if (local_18 < _DAT_00494984) { + local_18 = DAT_005209d0; + } + FUN_0048af60(param_2,*param_4,local_1c); + FUN_0048af60(param_2,*param_4 + 1,local_18); + } + if ((float)param_1[10] != _DAT_00494980) { + local_30 = (float)param_1[10] * local_30; + local_2c = (float)param_1[10] * local_2c; + local_28 = (float)param_1[10] * local_28; + } + FUN_0048afe8(param_2,local_30,local_2c,local_28); + FUN_00489c00(param_2,(int)puVar1); + FUN_0048d68c(puVar1); + *param_4 = *param_4 + 1; + if ((DAT_00508ea8 != (char *)0x0) && (*DAT_00508ea8 != '\0')) { + FUN_00497c7c(0,DAT_00508ea8,local_24,local_10,param_2,(int)puVar1); + } + if (local_24 != (int *)0x0) { + FUN_004de420(local_24); + } + if (param_1[2] == 0) { + uVar2 = 1; + } + else { + uVar2 = 0; + } + } + return uVar2; +} + + + +/* @00494988 file=? name=FUN_00494988 */ + +undefined4 * __cdecl FUN_00494988(undefined4 *param_1,uint param_2) + +{ + char cVar1; + undefined4 *puVar2; + code *pcVar3; + int iVar4; + undefined4 uVar5; + int iVar6; + undefined4 *extraout_ECX; + undefined4 *extraout_ECX_00; + undefined4 *extraout_ECX_01; + undefined4 *extraout_ECX_02; + undefined4 *extraout_ECX_03; + undefined4 *extraout_ECX_04; + undefined4 *extraout_ECX_05; + undefined4 *extraout_ECX_06; + undefined4 *extraout_ECX_07; + undefined4 *extraout_ECX_08; + undefined4 *extraout_ECX_09; + undefined4 *extraout_ECX_10; + undefined4 *extraout_ECX_11; + undefined4 *extraout_ECX_12; + undefined4 *extraout_ECX_13; + undefined4 *extraout_ECX_14; + undefined4 *puVar7; + undefined4 local_34 [2]; + undefined1 local_2c; + char local_2b; + undefined1 local_2a; + undefined1 local_29; + undefined1 local_28; + undefined1 local_27; + undefined4 local_24; + float *local_20; + int *local_1c; + int local_18; + undefined4 *local_14; + uint local_10; + uint local_c; + uint local_8; + + local_14 = (undefined4 *)0x0; + local_18 = 0; + puVar2 = &DAT_00508ed4; + puVar7 = local_34; + for (iVar6 = 5; iVar6 != 0; iVar6 = iVar6 + -1) { + *puVar7 = *puVar2; + puVar2 = puVar2 + 1; + puVar7 = puVar7 + 1; + } + iVar6 = 0; + local_1c = (int *)0x0; + if (DAT_00508e88 != (char *)0x0) { + *DAT_00508e88 = '\0'; + } + puVar2 = (undefined4 *)FUN_004897d0(); + if (puVar2 == (undefined4 *)0x0) { + FUN_0049a300(1,s_dpl_bgfRead_failed_to_create_dpl_00509590); + FUN_00492ba0(param_1,param_2); + puVar2 = (undefined4 *)0x0; + } + else { + pcVar3 = (code *)FUN_00496614(); + puVar7 = extraout_ECX; + if (pcVar3 != (code *)0x0) { + (*pcVar3)(7,puVar2); + puVar7 = extraout_ECX_00; + } + for (; (param_1[2] == 0 && (iVar6 < (int)param_2)); iVar6 = iVar6 + iVar4 + local_c) { + iVar4 = FUN_004931fc(puVar7,param_1,&local_8,&local_c); + if (param_1[2] != 0) break; + puVar7 = param_1; + if ((int)local_8 < 0x2033) { + if (local_8 == 0x2032) { + uVar5 = FUN_00492c84(param_1); + local_2c = (undefined1)uVar5; + } + else if ((int)local_8 < 0x2001) { + if ((local_8 == 0x2000) || (local_8 == 0)) { + FUN_00492ba0(param_1,local_c); + puVar7 = extraout_ECX_13; + } + else if (local_8 == 0x41) { + FUN_00494668(param_1,(int)puVar2,local_34,&local_18,local_c); + puVar7 = extraout_ECX_12; + } + else { + if (local_8 != 0x42) goto switchD_00494a88_caseD_2038; + puVar7 = extraout_ECX_01; + if (local_14 == (undefined4 *)0x0) { + local_14 = (undefined4 *)FUN_004897e8(); + if (local_14 == (undefined4 *)0x0) { + FUN_0049a300(1,s_dpl_bgfRead_failed_to_create_dpl_005095fc); + FUN_00492ba0(param_1,local_c); + puVar7 = extraout_ECX_09; + } + else { + local_20 = (float *)param_1[0xc]; + pcVar3 = (code *)FUN_00496614(); + if (pcVar3 != (code *)0x0) { + (*pcVar3)(8,local_14); + } + FUN_00489c00((int)puVar2,(int)local_14); + FUN_0048b0fc((int)puVar2); + FUN_0048afe8((int)puVar2,*local_20 * (float)param_1[10], + local_20[1] * (float)param_1[10],local_20[2] * (float)param_1[10]); + local_18 = local_18 + 1; + puVar7 = extraout_ECX_10; + } + } + if (local_14 != (undefined4 *)0x0) { + FUN_004941e4(param_1,(int)local_14,local_34,local_c); + puVar7 = extraout_ECX_11; + } + } + } + else if (local_8 == 0x2008) { + FUN_00492fc4(param_1,(int *)&DAT_00508e88,(uint *)&DAT_00508e94,local_c); + puVar7 = extraout_ECX_02; + } + else if (local_8 == 0x2030) { + uVar5 = FUN_00492c84(param_1); + cVar1 = (char)uVar5; + if ((cVar1 < '\x01') || ('\x02' < cVar1)) { + local_34[0] = 0; + } + else if (cVar1 == '\x01') { + FUN_00492fc4(param_1,(int *)&DAT_00508e8c,(uint *)&DAT_00508e98,local_c - 1); + local_34[0] = FUN_00497678(DAT_00508e8c,0,(int *)0x0); + puVar7 = extraout_ECX_03; + } + else { + local_34[0] = FUN_00497678(s_DEFAULT_005095b9,0,(int *)0x0); + puVar7 = extraout_ECX_04; + } + } + else { + if (local_8 != 0x2031) goto switchD_00494a88_caseD_2038; + uVar5 = FUN_00492c84(param_1); + cVar1 = (char)uVar5; + if ((cVar1 < '\x01') || ('\x03' < cVar1)) { + local_34[1] = 0; + } + else if (cVar1 == '\x01') { + FUN_00492fc4(param_1,(int *)&DAT_00508e90,(uint *)&DAT_00508e9c,local_c - 1); + local_34[1] = FUN_00497678(DAT_00508e90,0,(int *)0x0); + puVar7 = extraout_ECX_05; + } + else if (cVar1 == '\x02') { + local_34[1] = FUN_00497678(s_DEFAULT_005095c1,0,(int *)0x0); + puVar7 = extraout_ECX_06; + } + else { + local_34[1] = local_34[0]; + } + } + } + else { + switch(local_8) { + case 0x2033: + uVar5 = FUN_00492c84(param_1); + local_2b = (char)uVar5; + if (local_2b == '\0') { + FUN_00492c84(param_1); + } + else { + uVar5 = FUN_00492c84(param_1); + local_2a = (undefined1)uVar5; + } + break; + case 0x2034: + local_24 = FUN_00492d84(param_1); + break; + case 0x2035: + uVar5 = FUN_00492c84(param_1); + local_29 = (undefined1)uVar5; + break; + case 0x2036: + uVar5 = FUN_00492c84(param_1); + local_28 = (undefined1)uVar5; + break; + case 0x2037: + local_1c = FUN_004de55c(local_c); + if (local_1c == (int *)0x0) { + FUN_0049a300(1,s_dpl_bgfRead_failed_to_allocate_m_005095c9); + FUN_00492ba0(param_1,local_c); + return (undefined4 *)0x0; + } + FUN_00492f10(param_1,(char *)local_1c,local_c); + local_10 = local_c; + pcVar3 = (code *)FUN_00496644(); + puVar7 = extraout_ECX_07; + if (pcVar3 != (code *)0x0) { + (*pcVar3)(7,puVar2,local_1c,local_c); + puVar7 = extraout_ECX_08; + } + break; + default: +switchD_00494a88_caseD_2038: + FUN_0049a300(1,s_dpl_bgfRead_got_unrecognized_blo_00509622); + FUN_00492ba0(param_1,local_c); + puVar7 = extraout_ECX_14; + break; + case 0x2039: + uVar5 = FUN_00492c84(param_1); + local_27 = (undefined1)uVar5; + } + } + } + if ((DAT_00508e88 != (char *)0x0) && (*DAT_00508e88 != '\0')) { + FUN_00497bf8(DAT_00508e88); + } + if (local_1c != (int *)0x0) { + FUN_00497c30(local_1c,local_10); + FUN_004de420(local_1c); + } + if (local_14 != (undefined4 *)0x0) { + FUN_0048d68c(local_14); + } + FUN_0048b078((int)puVar2,0); + FUN_0048d668(puVar2); + } + return puVar2; +} + + + +/* @00494e00 file=? name=FUN_00494e00 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +bool __thiscall FUN_00494e00(void *this,undefined4 *param_1,int param_2) + +{ + int iVar1; + void *extraout_ECX; + void *extraout_ECX_00; + void *extraout_ECX_01; + void *extraout_ECX_02; + void *extraout_ECX_03; + void *extraout_ECX_04; + int iVar2; + float local_34; + float local_30; + float local_2c; + float local_28; + float local_24; + float local_20; + float *local_10; + uint local_c; + uint local_8; + + iVar2 = 0; + local_10 = (float *)param_1[0xc]; + do { + if ((param_1[2] != 0) || (param_2 <= iVar2)) { + return param_1[2] == 0; + } + iVar1 = FUN_004931fc(this,param_1,&local_8,&local_c); + if (param_1[2] != 0) { + return false; + } + if ((int)local_8 < 0x2071) { + if (local_8 == 0x2070) { + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_01; + } + else if (local_8 == 0x71) { + FUN_00492df0(param_1,(char *)&local_34,9); + *local_10 = (local_34 + local_28) * _DAT_00494f30; + local_10[1] = (local_30 + local_24) * _DAT_00494f30; + local_10[2] = (local_2c + local_20) * _DAT_00494f30; + this = extraout_ECX; + } + else { + if (local_8 != 0x72) goto LAB_00494ee6; + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_00; + } + } + else if (local_8 == 0x2071) { + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_02; + } + else if (local_8 == 0x2072) { + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_03; + } + else { +LAB_00494ee6: + FUN_0049a300(1,s_dpl_bgfRead_got_unrecognized_blo_00509658); + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_04; + } + iVar2 = iVar2 + iVar1 + local_c; + } while( true ); +} + + + +/* @00494f34 file=? name=FUN_00494f34 */ + +undefined4 * __thiscall FUN_00494f34(void *this,undefined4 *param_1) + +{ + bool bVar1; + void *this_00; + void *this_01; + void *extraout_ECX; + void *extraout_ECX_00; + void *extraout_ECX_01; + void *extraout_ECX_02; + void *extraout_ECX_03; + void *extraout_ECX_04; + void *this_02; + undefined4 *puVar2; + uint local_c; + uint local_8; + + bVar1 = true; + puVar2 = (undefined4 *)0x0; + param_1[2] = 0; + param_1[10] = 0x3f800000; + *(undefined1 *)(param_1 + 0xb) = 0; + FUN_004931fc(this,param_1,&local_8,&local_c); + if (param_1[2] == 0) { + this_02 = this_00; + if (local_8 == 3) { + FUN_004932a4(this_00,param_1,local_c); + FUN_004931fc(this_01,param_1,&local_8,&local_c); + this_02 = extraout_ECX; + } + while ((param_1[2] == 0 && (bVar1))) { + if ((int)local_8 < 0x41) { + if (local_8 == 0x40) { + puVar2 = FUN_00494988(param_1,local_c); + this_02 = extraout_ECX_00; + } + else if (local_8 == 0) { +LAB_00494fe6: + FUN_00492ba0(param_1,local_c); + this_02 = extraout_ECX_02; + } + else { + if (local_8 != 5) goto LAB_00494ff9; + bVar1 = false; + } + } + else if (local_8 == 0x70) { + FUN_00494e00(this_02,param_1,local_c); + this_02 = extraout_ECX_01; + } + else { + if (local_8 == 0x2000) goto LAB_00494fe6; +LAB_00494ff9: + FUN_0049a300(1,s_dpl_bgfRead_got_unrecognized_blo_00509690); + FUN_00492ba0(param_1,local_c); + this_02 = extraout_ECX_03; + } + if (bVar1) { + FUN_004931fc(this_02,param_1,&local_8,&local_c); + this_02 = extraout_ECX_04; + } + } + } + else { + puVar2 = (undefined4 *)0x0; + } + return puVar2; +} + + + +/* @00495048 file=? name=FUN_00495048 */ + +undefined4 * __cdecl FUN_00495048(LPCSTR param_1) + +{ + char *pcVar1; + undefined4 *puVar2; + int *piVar3; + char *pcVar4; + int *piVar5; + void *this; + char *pcVar6; + bool bVar7; + char local_10 [8]; + undefined1 local_8; + + if (param_1 == (LPCSTR)0x0) { + FUN_0049a300(1,s_dpl_bgfRead_got_no_file_to_open__005096cc); + puVar2 = (undefined4 *)0x0; + } + else { + if ((DAT_00508e84 == (int *)0x0) && + (DAT_00508e84 = FUN_004de55c(0x4000), DAT_00508e84 == (int *)0x0)) { + FUN_0049a300(1,s_dpl_bgfRead_failed_to_allocate_r_005096ed); + return (undefined4 *)0x0; + } + piVar3 = FUN_004930c0(param_1,0x4000,DAT_00508e84,1); + if (piVar3 == (int *)0x0) { + FUN_0049a300(1,s_dpl_bgfRead_failed_to_open_file___00509718); + puVar2 = (undefined4 *)0x0; + } + else { + FUN_00492f10(piVar3,local_10,8); + local_8 = 0; + pcVar4 = local_10; + pcVar6 = &DAT_0050973e; + do { + bVar7 = *pcVar4 == *pcVar6; + if (!bVar7) break; + if (*pcVar4 == '\0') goto LAB_0049512a; + pcVar1 = pcVar4 + 1; + bVar7 = *pcVar1 == pcVar6[1]; + if (!bVar7) break; + pcVar4 = pcVar4 + 2; + pcVar6 = pcVar6 + 2; + bVar7 = *pcVar1 == '\0'; + } while (!bVar7); + if (bVar7) { +LAB_0049512a: + piVar5 = FUN_004de2bc(1,0xc); + piVar3[0xc] = (int)piVar5; + if (piVar5 == (int *)0x0) { + FUN_0049a300(1,s_dpl_bgfRead_failed_to_allocate_m_00509771); + FUN_00493188(piVar3); + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_00494f34(this,piVar3); + FUN_004de420((int *)piVar3[0xc]); + FUN_00493188(piVar3); + } + } + else { + FUN_0049a300(1,s_dpl_bgfRead___s__is_not_a_valid_b_00509747); + FUN_00493188(piVar3); + puVar2 = (undefined4 *)0x0; + } + } + } + return puVar2; +} + + + +/* @0049517c file=? name=FUN_0049517c */ + +void FUN_0049517c(void) + +{ + if (DAT_00508e84 != (int *)0x0) { + FUN_004de420(DAT_00508e84); + DAT_00508e84 = (int *)0x0; + } + FUN_0049309c(&DAT_00508e88,(undefined4 *)&DAT_00508e94); + FUN_0049309c(&DAT_00508e8c,(undefined4 *)&DAT_00508e98); + FUN_0049309c(&DAT_00508e90,(undefined4 *)&DAT_00508e9c); + FUN_0049309c(&DAT_00508ea0,(undefined4 *)&DAT_00508ea4); + FUN_0049309c(&DAT_00508ea8,(undefined4 *)&DAT_00508eac); + return; +} + + + +/* @004951f4 file=? name=FUN_004951f4 */ + +void * __thiscall FUN_004951f4(void *this,undefined4 *param_1,uint *param_2,uint *param_3) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + void *local_8; + + uVar3 = 0; + uVar1 = FUN_00492cb4(param_1); + uVar2 = (int)(uVar1 & 0xffff) >> 0xc & 0xc; + if (uVar2 == 0) { + uVar3 = FUN_00492c84(param_1); + uVar3 = uVar3 & 0xff; + local_8 = (void *)0x3; + } + else if (uVar2 == 4) { + uVar3 = FUN_00492cb4(param_1); + uVar3 = uVar3 & 0xffff; + local_8 = (void *)0x4; + } + else if (uVar2 == 8) { + uVar3 = FUN_00492d84(param_1); + local_8 = (void *)0x6; + } + else { + FUN_0049a300(1,s__dpl_bmfRead_got_unrecognised_bl_00509867 + 1); + param_1[2] = 1; + local_8 = this; + } + *param_2 = uVar1 & 0x3fff; + *param_3 = uVar3; + return local_8; +} + + + +/* @0049529c file=? name=FUN_0049529c */ + +undefined4 __thiscall FUN_0049529c(void *this,undefined4 *param_1,int param_2) + +{ + int iVar1; + undefined4 uVar2; + undefined4 *extraout_ECX; + undefined4 *extraout_ECX_00; + undefined4 *extraout_ECX_01; + undefined4 *extraout_ECX_02; + undefined4 *extraout_ECX_03; + undefined4 *extraout_ECX_04; + undefined4 *extraout_ECX_05; + undefined4 *extraout_ECX_06; + int iVar3; + uint local_c; + uint local_8; + + iVar3 = 0; + do { + if ((param_1[2] != 0) || (param_2 <= iVar3)) { + return 1; + } + iVar1 = FUN_004951f4(this,param_1,&local_8,&local_c); + if (param_1[2] != 0) { + return 0; + } + if ((int)local_8 < 0x2006) { + if (local_8 == 0x2005) { + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_02; + } + else if ((int)local_8 < 0x2003) { + if (local_8 == 0x2002) { + FUN_00492ba0(param_1,local_c); + this = extraout_ECX; + } + else if ((local_8 == 0) || (local_8 == 0x2000)) { + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_05; + } + else { +LAB_00495403: + FUN_0049a300(1,s_dpl_bmfRead_got_unrecognized_blo_005098f6); + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_06; + } + } + else if (local_8 == 0x2003) { + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_00; + } + else { + if (local_8 != 0x2004) goto LAB_00495403; + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_01; + } + } + else { + this = param_1; + if (local_8 == 0x2006) { + uVar2 = FUN_00492c84(param_1); + *(char *)(param_1 + 0xb) = (char)uVar2; + if (*(char *)(param_1 + 0xb) != '\0') { + FUN_0049a300(1,s_dpl_bmfRead_cannot_process_doubl_00509898); + param_1[2] = 1; + return 0; + } + } + else if (local_8 == 0x2007) { + uVar2 = FUN_00492c84(param_1); + if ((char)uVar2 != '\x01') { + FUN_0049a300(1,s_dpl_bmfRead___file_is_not_a_mate_005098cb); + param_1[2] = 1; + return 0; + } + } + else if (local_8 == 0x2009) { + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_03; + } + else { + if (local_8 != 0x2037) goto LAB_00495403; + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_04; + } + } + iVar3 = iVar3 + iVar1 + local_c; + } while( true ); +} + + + +/* @00495440 file=? name=FUN_00495440 */ + +undefined4 __cdecl FUN_00495440(undefined4 *param_1,int param_2) + +{ + int iVar1; + undefined4 uVar2; + int extraout_EAX; + int extraout_EAX_00; + int extraout_EAX_01; + int extraout_EAX_02; + int extraout_EAX_03; + code *pcVar3; + int iVar4; + undefined4 *extraout_ECX; + undefined4 *extraout_ECX_00; + undefined4 *extraout_ECX_01; + undefined4 *extraout_ECX_02; + undefined4 *extraout_ECX_03; + undefined4 *extraout_ECX_04; + undefined4 *extraout_ECX_05; + undefined4 *extraout_ECX_06; + undefined4 *extraout_ECX_07; + undefined4 *extraout_ECX_08; + undefined4 *extraout_ECX_09; + undefined4 *extraout_ECX_10; + undefined4 *puVar5; + int *piVar6; + undefined4 *puVar7; + undefined4 local_6c; + undefined4 local_68; + undefined4 local_64; + undefined4 local_60 [4]; + undefined4 local_50; + undefined4 local_4c; + undefined4 local_48; + undefined4 local_44; + undefined4 local_40; + undefined4 local_3c; + undefined4 local_38; + undefined4 local_34; + undefined4 local_30; + int local_2c; + int local_28; + int local_24; + int local_20; + int local_1c; + uint local_18; + int *local_14; + char local_e; + char local_d; + uint local_c; + uint local_8; + + local_d = '\0'; + local_e = '\0'; + local_38 = DAT_00509810; + local_34 = DAT_00509814; + local_30 = DAT_00509818; + local_44 = DAT_0050981c; + local_40 = DAT_00509820; + local_3c = DAT_00509824; + local_50 = DAT_00509828; + local_4c = DAT_0050982c; + local_48 = DAT_00509830; + puVar5 = &DAT_00509834; + puVar7 = local_60; + for (iVar4 = 4; iVar4 != 0; iVar4 = iVar4 + -1) { + *puVar7 = *puVar5; + puVar5 = puVar5 + 1; + puVar7 = puVar7 + 1; + } + iVar4 = 0; + local_6c = DAT_00509844; + local_68 = DAT_00509848; + local_64 = DAT_0050984c; + local_14 = (int *)0x0; + if (DAT_005097e0 != (char *)0x0) { + *DAT_005097e0 = '\0'; + } + puVar5 = (undefined4 *)0x0; + if (DAT_005097e8 != (char *)0x0) { + *DAT_005097e8 = '\0'; + } + for (; (param_1[2] == 0 && (iVar4 < param_2)); iVar4 = iVar4 + iVar1 + local_c) { + iVar1 = FUN_004951f4(puVar5,param_1,&local_8,&local_c); + if (param_1[2] != 0) break; + puVar5 = param_1; + if ((int)local_8 < 0x27) { + if (local_8 == 0x26) { + FUN_00492df0(param_1,(char *)&local_50,3); + puVar5 = extraout_ECX_05; + } + else if ((int)local_8 < 0x24) { + if (local_8 == 0x23) { + FUN_00492df0(param_1,(char *)&local_38,3); + puVar5 = extraout_ECX_02; + } + else if (local_8 == 0) { +LAB_004956f8: + FUN_00492ba0(param_1,local_c); + puVar5 = extraout_ECX_09; + } + else if (local_8 == 0x21) { + uVar2 = FUN_00492c84(param_1); + local_d = (char)uVar2; + if (local_d == '\x02') { + FUN_00492fc4(param_1,(int *)&DAT_005097e4,(uint *)&DAT_005097f4,local_c - 1); + puVar5 = extraout_ECX_00; + } + } + else { + if (local_8 != 0x22) goto LAB_00495707; + uVar2 = FUN_00492c84(param_1); + local_e = (char)uVar2; + if (local_e == '\x01') { + FUN_00492fc4(param_1,(int *)&DAT_005097ec,(uint *)&DAT_005097fc,local_c - 1); + puVar5 = extraout_ECX_01; + } + } + } + else if (local_8 == 0x24) { + FUN_00492df0(param_1,(char *)&local_44,3); + puVar5 = extraout_ECX_03; + } + else { + if (local_8 != 0x25) goto LAB_00495707; + FUN_00492df0(param_1,(char *)local_60,4); + puVar5 = extraout_ECX_04; + } + } + else if ((int)local_8 < 0x2009) { + if (local_8 == 0x2008) { + FUN_00492fc4(param_1,(int *)&DAT_005097e0,(uint *)&DAT_005097f0,local_c); + puVar5 = extraout_ECX; + } + else if (local_8 == 0x27) { + FUN_00492df0(param_1,(char *)&local_6c,3); + puVar5 = extraout_ECX_06; + } + else { + if (local_8 != 0x28) { + if (local_8 == 0x2000) goto LAB_004956f8; + goto LAB_00495707; + } + FUN_00492fc4(param_1,(int *)&DAT_005097e8,(uint *)&DAT_005097f8,local_c); + puVar5 = extraout_ECX_07; + } + } + else if (local_8 == 0x200a) { + FUN_00492c84(param_1); + } + else if (local_8 == 0x2037) { + local_14 = FUN_004de55c(local_c); + if (local_14 == (int *)0x0) { + FUN_0049a300(1,s_dpl_bmfRead_failed_to_allocate_m_0050992c); + FUN_00492ba0(param_1,local_c); + return 0; + } + FUN_00492f10(param_1,(char *)local_14,local_c); + local_18 = local_c; + puVar5 = extraout_ECX_08; + } + else { +LAB_00495707: + FUN_0049a300(1,s_dpl_bmfRead_got_unrecognized_blo_0050995f); + FUN_00492ba0(param_1,local_c); + puVar5 = extraout_ECX_10; + } + } + if ((DAT_005097e0 != (char *)0x0) && (*DAT_005097e0 != '\0')) { + FUN_00497194(0,DAT_005097e0,2,(int *)param_1[0xc],&local_1c,FUN_004897a0,FUN_00489a28); + if ((local_1c == 0) && (extraout_EAX != 0)) { + local_20 = 0; + puVar5 = *(undefined4 **)(extraout_EAX + 0x18); + FUN_0048ba98((int)puVar5,local_38,local_34,local_30); + FUN_0048bc10((int)puVar5,local_44,local_40,local_3c); + FUN_0048bb54((int)puVar5,local_50,local_4c,local_48); + FUN_0048bccc((int)puVar5,local_60[0],local_60[1],local_60[2],local_60[3]); + FUN_0048bd94((int)puVar5,local_6c,local_68,local_64); + if ((local_d != '\0') && (DAT_005097d4 != 0)) { + iVar4 = 0; + if (local_d == '\x01') { + FUN_00497194(1,s_DEFAULT_00509997,0,(int *)param_1[0xc],(int *)0x0,FUN_00489768, + FUN_00489998); + iVar4 = extraout_EAX_00; + if (extraout_EAX_00 == 0) { + FUN_0049a300(1,s_dpl_bmfRead_failed_to_lookup_tex_0050999f); + } + } + else if (((local_d == '\x02') && (DAT_005097e4 != (char *)0x0)) && (*DAT_005097e4 != '\0')) + { + FUN_00497194(1,DAT_005097e4,0,(int *)param_1[0xc],&local_24,FUN_00489768,FUN_00489998); + iVar4 = extraout_EAX_01; + if (extraout_EAX_01 == 0) { + FUN_0049a300(1,s_dpl_bmfRead_failed_to_lookup_tex_005099cf); + } + else if (local_24 == 0) { + FUN_0049a300(1,s_texture___s__is_undefined__005099fa); + } + } + if (iVar4 != 0) { + local_20 = *(int *)(iVar4 + 0x18); + } + } + if (local_20 != 0) { + FUN_0048be50((int)puVar5,local_20); + } + if ((DAT_005097e8 != (char *)0x0) && (*DAT_005097e8 != '\0')) { + piVar6 = FUN_00497194(2,DAT_005097e8,0,(int *)param_1[0xc],&local_28,FUN_0049763c, + FUN_00489a68); + if (extraout_EAX_02 == 0) { + FUN_0049a300(1,s_dpl_bmfRead_failed_to_lookup_ram_00509a2d); + } + else { + piVar6 = *(int **)(extraout_EAX_02 + 0x18); + if (local_28 == 0) { + FUN_0049a300(1,s_ramp___s__is_undefined__00509a15); + } + } + FUN_0048bfb0((int)puVar5,(int)piVar6); + } + if (((local_e == '\x01') && (DAT_005097d4 != 0)) && (*DAT_005097ec != '\0')) { + FUN_00497194(1,DAT_005097ec,0,(int *)param_1[0xc],&local_2c,FUN_00489768,FUN_00489998); + if (extraout_EAX_03 == 0) { + FUN_0049a300(1,s_dpl_bmfRead_failed_to_lookup_env_00509a55); + } + else if (local_2c == 0) { + FUN_0049a300(1,s_environment_texture___s__is_unde_00509a8c); + } + if (extraout_EAX_03 != 0) { + FUN_0048bf00((int)puVar5,*(int *)(extraout_EAX_03 + 0x18)); + } + } + FUN_0048d4d4(puVar5); + if ((local_14 != (int *)0x0) && (pcVar3 = (code *)FUN_00496644(), pcVar3 != (code *)0x0)) { + (*pcVar3)(0xb,puVar5,local_14,local_18); + } + } + else if (extraout_EAX == 0) { + FUN_0049a300(1,s_dpl_bmfRead_failed_to_lookup_mat_00509ab3); + } + else { + FUN_0049a300(1,s_dpl_bmfRead___material___s__alre_00509adf); + } + } + if (local_14 != (int *)0x0) { + FUN_004de420(local_14); + } + return 1; +} + + + +/* @00495a44 file=? name=FUN_00495a44 */ + +undefined4 __thiscall FUN_00495a44(void *this,undefined4 *param_1,int param_2) + +{ + undefined4 *puVar1; + int iVar2; + undefined4 uVar3; + int extraout_EAX; + int extraout_EAX_00; + code *pcVar4; + undefined4 *extraout_ECX; + undefined4 *extraout_ECX_00; + undefined4 *extraout_ECX_01; + undefined4 *extraout_ECX_02; + undefined4 *extraout_ECX_03; + undefined4 *extraout_ECX_04; + int *piVar5; + int iVar6; + undefined4 unaff_EDI; + int local_24; + int local_20; + uint local_1c; + int *local_18; + char local_13; + char local_12; + char local_11; + char local_10; + char local_f; + char local_e; + char local_d; + uint local_c; + uint local_8; + + iVar6 = 0; + local_d = '\0'; + local_e = '\0'; + local_f = -1; + local_10 = -1; + local_11 = -1; + local_12 = '\0'; + local_13 = -1; + local_18 = (int *)0x0; + if (DAT_005097e4 != (char *)0x0) { + *DAT_005097e4 = '\0'; + } + if (DAT_00509804 != (char *)0x0) { + *DAT_00509804 = '\0'; + } + for (; (param_1[2] == 0 && (iVar6 < param_2)); iVar6 = iVar6 + iVar2 + local_c) { + iVar2 = FUN_004951f4(this,param_1,&local_8,&local_c); + if (param_1[2] != 0) break; + this = param_1; + if ((int)local_8 < 0x17) { + if (local_8 == 0x16) { + uVar3 = FUN_00492c84(param_1); + local_10 = (char)uVar3; + } + else { + switch(local_8) { + case 0: +switchD_00495ac8_caseD_0: + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_03; + break; + default: +switchD_00495ac8_caseD_1: + FUN_0049a300(1,s_dpl_bmfRead_got_unrecognized_blo_00509b3f); + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_04; + break; + case 0x11: + FUN_00492fc4(param_1,(int *)&DAT_00509804,(uint *)&DAT_0050980c,local_c); + this = extraout_ECX_00; + break; + case 0x12: + uVar3 = FUN_00492c84(param_1); + local_d = (char)uVar3; + break; + case 0x13: + uVar3 = FUN_00492c84(param_1); + local_e = (char)uVar3; + break; + case 0x14: + uVar3 = FUN_00492c84(param_1); + local_11 = (char)uVar3; + break; + case 0x15: + uVar3 = FUN_00492c84(param_1); + local_f = (char)uVar3; + } + } + } + else if ((int)local_8 < 0x2009) { + if (local_8 == 0x2008) { + FUN_00492fc4(param_1,(int *)&DAT_005097e4,(uint *)&DAT_005097f4,local_c); + this = extraout_ECX; + } + else if (local_8 == 0x17) { + uVar3 = FUN_00492c84(param_1); + local_12 = (char)uVar3; + if (0 < (int)(local_c - 1)) { + FUN_00492fc4(param_1,(int *)&DAT_00509800,(uint *)&DAT_00509808,local_c - 1); + this = extraout_ECX_01; + } + } + else { + if (local_8 != 0x18) { + if (local_8 == 0x2000) goto switchD_00495ac8_caseD_0; + goto switchD_00495ac8_caseD_1; + } + uVar3 = FUN_00492c84(param_1); + local_13 = (char)uVar3; + } + } + else if (local_8 == 0x200a) { + FUN_00492c84(param_1); + } + else { + if (local_8 != 0x2037) goto switchD_00495ac8_caseD_1; + local_18 = FUN_004de55c(local_c); + if (local_18 == (int *)0x0) { + FUN_0049a300(1,s_dpl_bmfRead_failed_to_allocate_m_00509b0c); + FUN_00492ba0(param_1,local_c); + return 0; + } + FUN_00492f10(param_1,(char *)local_18,local_c); + local_1c = local_c; + this = extraout_ECX_02; + } + } + if ((DAT_005097e4 != (char *)0x0) && (*DAT_005097e4 != '\0')) { + piVar5 = FUN_00497194(1,DAT_005097e4,2,(int *)param_1[0xc],&local_20,FUN_00489768,FUN_00489998); + if ((local_20 == 0) && (extraout_EAX != 0)) { + puVar1 = *(undefined4 **)(extraout_EAX + 0x18); + if (('\0' < local_d) && (local_d < '\t')) { + switch(local_d) { + case '\x01': + unaff_EDI = 9; + break; + case '\x02': + unaff_EDI = 10; + break; + case '\x03': + unaff_EDI = 0xb; + break; + case '\x04': + unaff_EDI = 0xf; + break; + case '\x05': + unaff_EDI = 0x10; + break; + case '\x06': + unaff_EDI = 0x11; + break; + case '\a': + unaff_EDI = 0x12; + break; + case '\b': + unaff_EDI = 0xe; + } + FUN_0048c144((int)puVar1,5,unaff_EDI); + } + if (('\0' < local_e) && (local_e < '\x06')) { + switch(local_e) { + case '\x01': + unaff_EDI = 9; + break; + case '\x02': + unaff_EDI = 10; + break; + case '\x03': + unaff_EDI = 0xb; + break; + case '\x04': + unaff_EDI = 0xc; + break; + case '\x05': + unaff_EDI = 0xd; + } + FUN_0048c144((int)puVar1,6,unaff_EDI); + } + if ((-1 < local_f) && (local_f < '\x03')) { + if (local_f == '\0') { + unaff_EDI = 3; + } + else if (local_f == '\x01') { + unaff_EDI = 4; + } + else if (local_f == '\x02') { + unaff_EDI = 5; + } + FUN_0048c144((int)puVar1,3,unaff_EDI); + } + if ((-1 < local_10) && (local_10 < '\x03')) { + if (local_10 == '\0') { + unaff_EDI = 3; + } + else if (local_10 == '\x01') { + unaff_EDI = 4; + } + else if (local_10 == '\x02') { + unaff_EDI = 5; + } + FUN_0048c144((int)puVar1,4,unaff_EDI); + } + if ((-1 < local_11) && (local_11 < '\x03')) { + if (local_11 == '\0') { + unaff_EDI = 6; + } + else if (local_11 == '\x01') { + unaff_EDI = 7; + } + else if (local_11 == '\x02') { + unaff_EDI = 8; + } + FUN_0048c144((int)puVar1,7,unaff_EDI); + } + if ((-1 < local_13) && (local_13 < '\t')) { + switch(local_13) { + case '\0': + unaff_EDI = 0x13; + break; + case '\x01': + unaff_EDI = 0x14; + break; + case '\x02': + unaff_EDI = 0x15; + break; + case '\x03': + unaff_EDI = 0x16; + break; + case '\x04': + unaff_EDI = 0x17; + break; + case '\x05': + unaff_EDI = 0x18; + break; + case '\x06': + unaff_EDI = 0x19; + break; + case '\a': + unaff_EDI = 0x1a; + break; + case '\b': + unaff_EDI = 0x1b; + } + FUN_0048c144((int)puVar1,10,unaff_EDI); + } + if ((((DAT_005097d8 != 0) && (local_12 != '\0')) && (DAT_00509800 != (char *)0x0)) && + (*DAT_00509800 != '\0')) { + FUN_00497194(1,DAT_00509800,0,(int *)piVar5[0xc],&local_24,FUN_00489768,FUN_00489998); + if (extraout_EAX_00 == 0) { + FUN_0049a300(1,s_dpl_bmfRead_failed_to_lookup_det_00509b91); + } + else { + FUN_0048c144((int)puVar1,8,1); + if (local_24 == 0) { + FUN_0049a300(1,s_texture___s__is_undefined__00509b76); + } + } + } + if ((DAT_00509804 != (char *)0x0) && (*DAT_00509804 != '\0')) { + iVar6 = FUN_00498eb4(DAT_00509804,0); + if (iVar6 == 0) { + FUN_0049a300(1,s_dpl_bmfRead_failed_to_load_texma_00509bc3); + } + else { + FUN_0048c2a0((int)puVar1,iVar6); + } + } + FUN_0048d55c(puVar1); + if ((local_18 != (int *)0x0) && (pcVar4 = (code *)FUN_00496644(), pcVar4 != (code *)0x0)) { + (*pcVar4)(0xc,puVar1,local_18,local_1c); + } + } + else if (extraout_EAX == 0) { + FUN_0049a300(1,s_dpl_bmfRead_failed_to_lookup_tex_00509bf0); + } + else { + FUN_0049a300(1,s_dpl_bmfRead___texture___s__alrea_00509c1b); + } + } + if (local_18 != (int *)0x0) { + FUN_004de420(local_18); + } + return 1; +} + + + diff --git a/reference/decomp/archive_2025export/all/part_012.c b/reference/decomp/archive_2025export/all/part_012.c new file mode 100644 index 0000000..c91acc4 --- /dev/null +++ b/reference/decomp/archive_2025export/all/part_012.c @@ -0,0 +1,18018 @@ +/* @00496078 file=? name=FUN_00496078 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __thiscall FUN_00496078(void *this,undefined4 *param_1,int param_2) + +{ + undefined4 *puVar1; + int iVar2; + int extraout_EAX; + code *pcVar3; + undefined4 *extraout_ECX; + undefined4 *extraout_ECX_00; + undefined4 *extraout_ECX_01; + undefined4 *extraout_ECX_02; + undefined4 *extraout_ECX_03; + int iVar4; + int *piVar5; + undefined4 local_2c; + undefined4 local_28; + undefined4 local_24; + undefined4 local_20; + undefined4 local_1c; + undefined4 local_18; + int local_14; + uint local_10; + uint local_c; + uint local_8; + + iVar4 = 0; + local_20 = DAT_00509850; + local_1c = DAT_00509854; + local_18 = DAT_00509858; + local_2c = DAT_0050985c; + local_28 = DAT_00509860; + local_24 = _DAT_00509864; + piVar5 = (int *)0x0; + if (DAT_005097e8 != (char *)0x0) { + *DAT_005097e8 = '\0'; + } + for (; (param_1[2] == 0 && (iVar4 < param_2)); iVar4 = iVar4 + iVar2 + local_c) { + iVar2 = FUN_004951f4(this,param_1,&local_8,&local_c); + if (param_1[2] != 0) break; + if ((int)local_8 < 0x2009) { + if (local_8 == 0x2008) { + FUN_00492fc4(param_1,(int *)&DAT_005097e8,(uint *)&DAT_005097f8,local_c); + this = extraout_ECX; + } + else { + if (local_8 != 0) { + if (local_8 == 0x31) { + FUN_00492df0(param_1,(char *)&local_20,3); + FUN_00492df0(param_1,(char *)&local_2c,3); + this = extraout_ECX_00; + goto LAB_004961eb; + } + if (local_8 != 0x2000) goto LAB_004961cb; + } + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_02; + } + } + else if (local_8 == 0x200a) { + this = param_1; + FUN_00492c84(param_1); + } + else if (local_8 == 0x2037) { + piVar5 = FUN_004de55c(local_c); + if (piVar5 == (int *)0x0) { + FUN_0049a300(1,s_dpl_bmfRead_failed_to_allocate_m_00509c47); + FUN_00492ba0(param_1,local_c); + return 0; + } + FUN_00492f10(param_1,(char *)piVar5,local_c); + local_10 = local_c; + this = extraout_ECX_01; + } + else { +LAB_004961cb: + FUN_0049a300(1,s_dpl_bmfRead_got_unrecognized_blo_00509c7a); + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_03; + } +LAB_004961eb: + } + if ((DAT_005097e8 != (char *)0x0) && (*DAT_005097e8 != '\0')) { + FUN_00497194(2,DAT_005097e8,2,(int *)param_1[0xc],&local_14,FUN_004897b8,FUN_00489a68); + if ((local_14 == 0) && (extraout_EAX != 0)) { + puVar1 = *(undefined4 **)(extraout_EAX + 0x18); + FUN_0048c060((int)puVar1,local_20,local_1c,local_18,local_2c,local_28,local_24); + FUN_0048d538(puVar1); + if ((piVar5 != (int *)0x0) && (pcVar3 = (code *)FUN_00496644(), pcVar3 != (code *)0x0)) { + (*pcVar3)(0xe,puVar1,piVar5,local_10); + } + } + else if (extraout_EAX == 0) { + FUN_0049a300(1,s_dpl_bmfRead_failed_to_lookup_ram_00509cae); + } + else { + FUN_0049a300(1,s_dpl_bmfRead___ramp___s__already_d_00509cd6); + } + } + if (piVar5 != (int *)0x0) { + FUN_004de420(piVar5); + } + return 1; +} + + + +/* @004962c4 file=? name=FUN_004962c4 */ + +undefined4 __thiscall FUN_004962c4(void *this,undefined4 *param_1) + +{ + bool bVar1; + undefined4 uVar2; + void *this_00; + void *this_01; + void *extraout_ECX; + void *extraout_ECX_00; + void *extraout_ECX_01; + void *extraout_ECX_02; + void *extraout_ECX_03; + void *extraout_ECX_04; + void *extraout_ECX_05; + void *this_02; + void *extraout_ECX_06; + uint local_c; + uint local_8; + + bVar1 = true; + param_1[2] = 0; + param_1[10] = 0x3f800000; + *(undefined1 *)(param_1 + 0xb) = 0; + FUN_004951f4(this,param_1,&local_8,&local_c); + if (param_1[2] == 0) { + this_02 = this_00; + if (local_8 == 3) { + FUN_0049529c(this_00,param_1,local_c); + FUN_004951f4(this_01,param_1,&local_8,&local_c); + this_02 = extraout_ECX; + } + while ((param_1[2] == 0 && (bVar1))) { + if ((int)local_8 < 0x21) { + if (local_8 == 0x20) { + FUN_00495440(param_1,local_c); + this_02 = extraout_ECX_02; + } + else if (local_8 == 0) { +LAB_0049639d: + FUN_00492ba0(param_1,local_c); + this_02 = extraout_ECX_04; + } + else if (local_8 == 5) { + bVar1 = false; + } + else { + if (local_8 != 0x10) goto LAB_004963b0; + if (DAT_005097d4 == 0) { + FUN_00492ba0(param_1,local_c); + this_02 = extraout_ECX_01; + } + else { + FUN_00495a44(this_02,param_1,local_c); + this_02 = extraout_ECX_00; + } + } + } + else if (local_8 == 0x30) { + FUN_00496078(this_02,param_1,local_c); + this_02 = extraout_ECX_03; + } + else { + if (local_8 == 0x2000) goto LAB_0049639d; +LAB_004963b0: + FUN_0049a300(1,s_dpl_bmfRead_got_unrecognized_blo_00509cff); + FUN_00492ba0(param_1,local_c); + this_02 = extraout_ECX_05; + } + if (bVar1) { + FUN_004951f4(this_02,param_1,&local_8,&local_c); + this_02 = extraout_ECX_06; + } + } + if (param_1[2] == 0) { + uVar2 = 1; + } + else { + uVar2 = 0; + } + } + else { + uVar2 = 0; + } + return uVar2; +} + + + +/* @00496408 file=? name=FUN_00496408 */ + +undefined4 __cdecl FUN_00496408(LPCSTR param_1,int param_2) + +{ + char cVar1; + undefined4 uVar2; + int *piVar3; + char *pcVar4; + void *extraout_ECX; + void *this; + char *pcVar6; + bool bVar7; + char local_10 [8]; + undefined1 local_8; + undefined3 uVar5; + + if (param_1 == (LPCSTR)0x0) { + FUN_0049a300(1,s_dpl_bmfRead_got_no_file_to_open__00509d3b); + uVar2 = 0; + } + else { + if ((DAT_005097dc == (int *)0x0) && + (DAT_005097dc = FUN_004de55c(0x4000), DAT_005097dc == (int *)0x0)) { + FUN_0049a300(1,s_dpl_bmfRead_failed_to_allocate_r_00509d5c); + return 0; + } + piVar3 = FUN_004930c0(param_1,0x4000,DAT_005097dc,1); + if (piVar3 == (int *)0x0) { + FUN_0049a300(1,s_dpl_bmfRead_failed_to_open_file___00509d87); + uVar2 = 0; + } + else { + piVar3[0xc] = param_2; + FUN_00492f10(piVar3,local_10,8); + local_8 = 0; + pcVar4 = local_10; + pcVar6 = &DAT_00509dad; + this = extraout_ECX; + do { + cVar1 = *pcVar4; + uVar5 = (undefined3)((uint)this >> 8); + this = (void *)CONCAT31(uVar5,cVar1); + bVar7 = cVar1 == *pcVar6; + if (!bVar7) break; + if (cVar1 == '\0') goto LAB_004964ed; + cVar1 = pcVar4[1]; + this = (void *)CONCAT31(uVar5,cVar1); + bVar7 = cVar1 == pcVar6[1]; + if (!bVar7) break; + pcVar4 = pcVar4 + 2; + pcVar6 = pcVar6 + 2; + bVar7 = cVar1 == '\0'; + } while (!bVar7); + if (bVar7) { +LAB_004964ed: + uVar2 = FUN_004962c4(this,piVar3); + FUN_00493188(piVar3); + } + else { + FUN_0049a300(1,s_dpl_bmfRead___s__is_not_a_valid_b_00509db6); + FUN_00493188(piVar3); + uVar2 = 0; + } + } + } + return uVar2; +} + + + +/* @00496508 file=? name=FUN_00496508 */ + +void __cdecl FUN_00496508(int param_1) + +{ + if (param_1 != 0) { + DAT_005097d4 = 1; + return; + } + DAT_005097d4 = 0; + return; +} + + + +/* @00496530 file=? name=FUN_00496530 */ + +void __cdecl FUN_00496530(int param_1) + +{ + if (param_1 != 0) { + DAT_005097d8 = 1; + return; + } + DAT_005097d8 = 0; + return; +} + + + +/* @00496558 file=? name=FUN_00496558 */ + +void FUN_00496558(void) + +{ + if (DAT_005097dc != (int *)0x0) { + FUN_004de420(DAT_005097dc); + DAT_005097dc = (int *)0x0; + } + DAT_005097d4 = 1; + DAT_005097d8 = 1; + FUN_0049309c(&DAT_005097e0,(undefined4 *)&DAT_005097f0); + FUN_0049309c(&DAT_005097e4,(undefined4 *)&DAT_005097f4); + FUN_0049309c(&DAT_005097e8,(undefined4 *)&DAT_005097f8); + FUN_0049309c(&DAT_00509800,(undefined4 *)&DAT_00509808); + FUN_0049309c(&DAT_00509804,(undefined4 *)&DAT_0050980c); + return; +} + + + +/* @00496600 file=? name=FUN_00496600 */ + +void FUN_00496600(void) + +{ + return; +} + + + +/* @00496604 file=? name=FUN_00496604 */ + +void __cdecl FUN_00496604(undefined4 param_1) + +{ + DAT_00509e90 = param_1; + return; +} + + + +/* @00496614 file=? name=FUN_00496614 */ + +undefined4 FUN_00496614(void) + +{ + return DAT_00509e90; +} + + + +/* @0049661c file=? name=FUN_0049661c */ + +void __cdecl FUN_0049661c(undefined4 param_1) + +{ + DAT_00509e94 = param_1; + return; +} + + + +/* @0049662c file=? name=FUN_0049662c */ + +undefined4 FUN_0049662c(void) + +{ + return DAT_00509e94; +} + + + +/* @00496634 file=? name=FUN_00496634 */ + +void __cdecl FUN_00496634(undefined4 param_1) + +{ + DAT_00509e98 = param_1; + return; +} + + + +/* @00496644 file=? name=FUN_00496644 */ + +undefined4 FUN_00496644(void) + +{ + return DAT_00509e98; +} + + + +/* @0049664c file=? name=FUN_0049664c */ + +void __cdecl FUN_0049664c(undefined4 param_1) + +{ + DAT_00509e9c = param_1; + return; +} + + + +/* @0049665c file=? name=FUN_0049665c */ + +undefined4 FUN_0049665c(void) + +{ + return DAT_00509e9c; +} + + + +/* @00496664 file=? name=FUN_00496664 */ + +void FUN_00496664(void) + +{ + DAT_00509e90 = 0; + DAT_00509e94 = 0; + DAT_00509e98 = 0; + DAT_00509e9c = 0; + return; +} + + + +/* @00496684 file=? name=FUN_00496684 */ + +uint __cdecl +FUN_00496684(char *param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4,uint param_5, + int *param_6) + +{ + char *pcVar1; + int iVar2; + char *pcVar3; + uint uVar4; + char *pcVar5; + undefined4 *puVar6; + bool bVar7; + undefined *local_18; + undefined4 local_14; + int local_10; + int local_c; + int local_8; + + local_8 = 0; + local_18 = PTR_DAT_00509ed8; + local_14 = DAT_00509edc; + local_c = FUN_004d4a78(param_1); + puVar6 = param_3 + local_8; + do { + pcVar5 = (char *)*puVar6; + if (pcVar5 == (char *)0x0) { + uVar4 = FUN_0049b3e4(param_1,(undefined4 *)*param_2,param_3,1,param_4,param_5,param_6,1); + return uVar4; + } + iVar2 = FUN_004d4a78(pcVar5); + if (iVar2 <= local_c) { + pcVar3 = param_1 + (local_c - iVar2); + do { + if (*pcVar3 != *pcVar5) goto LAB_0049672b; + bVar7 = true; + if (*pcVar3 == '\0') break; + pcVar1 = pcVar3 + 1; + if (*pcVar1 != pcVar5[1]) goto LAB_0049672b; + pcVar3 = pcVar3 + 2; + pcVar5 = pcVar5 + 2; + bVar7 = *pcVar1 == '\0'; + } while (!bVar7); + if ((bVar7) && + (uVar4 = FUN_0049b3e4(param_1,(undefined4 *)*param_2,&local_18,1,param_4,param_5,&local_10, + 1), uVar4 != 0)) { + *param_6 = local_8; + return 1; + } + } +LAB_0049672b: + local_8 = local_8 + 1; + puVar6 = puVar6 + 1; + } while( true ); +} + + + +/* @00496764 file=? name=FUN_00496764 */ + +int * FUN_00496764(void) + +{ + int *piVar1; + + piVar1 = FUN_004de2bc(1,4); + if (piVar1 == (int *)0x0) { + FUN_0049a300(1,s_dpl_NewFilepath_failed_to_alloca_00509ee1); + return (int *)0x0; + } + return piVar1; +} + + + +/* @00496794 file=? name=FUN_00496794 */ + +void __cdecl FUN_00496794(int *param_1) + +{ + if (param_1 != (int *)0x0) { + if ((int *)*param_1 != (int *)0x0) { + FUN_0049b500((int *)*param_1); + } + FUN_004de420(param_1); + } + return; +} + + + +/* @004967b8 file=? name=FUN_004967b8 */ + +undefined4 __cdecl FUN_004967b8(int *param_1,char *param_2,char *param_3,char *param_4) + +{ + undefined4 uVar1; + int *piVar2; + int *piVar3; + + if (param_1 == (int *)0x0) { + uVar1 = 0; + } + else { + piVar2 = (int *)*param_1; + if (piVar2 == (int *)0x0) { + piVar2 = FUN_00496764(); + if (piVar2 == (int *)0x0) { + return 0; + } + *param_1 = (int)piVar2; + } + if ((int *)*piVar2 != (int *)0x0) { + FUN_0049b500((int *)*piVar2); + } + piVar3 = FUN_0049b2ac(param_2,param_3,param_4); + *piVar2 = (int)piVar3; + uVar1 = 1; + } + return uVar1; +} + + + +/* @0049680c file=? name=FUN_0049680c */ + +int * __cdecl FUN_0049680c(undefined4 *param_1) + +{ + int *piVar1; + char *pcVar2; + int iVar3; + int iVar4; + int local_8; + + iVar4 = 0; + if (param_1 == (undefined4 *)0x0) { + piVar1 = (int *)0x0; + } + else { + pcVar2 = (char *)FUN_0049b454(&local_8,(undefined4 *)*param_1); + while (pcVar2 != (char *)0x0) { + iVar3 = FUN_004d4a78(pcVar2); + iVar4 = iVar3 + iVar4 + 1; + pcVar2 = (char *)FUN_0049b464(&local_8); + } + if (iVar4 == 0) { + piVar1 = (int *)0x0; + } + else { + piVar1 = FUN_004de55c(iVar4 + 1); + if (piVar1 == (int *)0x0) { + FUN_0049a300(1,s_dpl_GetFilePath_failed_to_alloca_00509f1e); + piVar1 = (int *)0x0; + } + else { + *(undefined1 *)piVar1 = 0; + pcVar2 = (char *)FUN_0049b454(&local_8,(undefined4 *)*param_1); + while (pcVar2 != (char *)0x0) { + FUN_004d49b8((char *)piVar1,pcVar2); + FUN_004d49b8((char *)piVar1,&DAT_00509f49); + pcVar2 = (char *)FUN_0049b464(&local_8); + } + iVar4 = FUN_004d4a78((char *)piVar1); + *(undefined1 *)((int)piVar1 + iVar4 + -1) = 0; + } + } + } + return piVar1; +} + + + +/* @004968d8 file=? name=FUN_004968d8 */ + +undefined4 __cdecl FUN_004968d8(int *param_1,char *param_2,int param_3) + +{ + undefined4 uVar1; + int *piVar2; + int iVar3; + uint uVar4; + + if (param_1 == (int *)0x0) { + uVar1 = 0; + } + else { + piVar2 = (int *)*param_1; + if (piVar2 == (int *)0x0) { + piVar2 = FUN_00496764(); + if (piVar2 == (int *)0x0) { + return 0; + } + *param_1 = (int)piVar2; + } + if (param_3 == 0) { + uVar4 = 0; + } + else if (param_3 == 1) { + uVar4 = 1; + } + else if (param_3 == 2) { + uVar4 = 2; + } + else { + uVar4 = 1; + } + iVar3 = FUN_0049b344(*piVar2,param_2,uVar4); + *piVar2 = iVar3; + uVar1 = 1; + } + return uVar1; +} + + + +/* @00496940 file=? name=FUN_00496940 */ + +int * FUN_00496940(void) + +{ + int *piVar1; + + piVar1 = FUN_004de2bc(1,0xc); + if (piVar1 == (int *)0x0) { + FUN_0049a300(1,s_dpl_NewFileExtnFunc_failed_to_al_00509f4b); + return (int *)0x0; + } + return piVar1; +} + + + +/* @00496970 file=? name=FUN_00496970 */ + +void __cdecl FUN_00496970(int *param_1) + +{ + int iVar1; + + if (param_1 != (int *)0x0) { + for (iVar1 = 0; iVar1 < param_1[2]; iVar1 = iVar1 + 1) { + FUN_004de420(*(int **)(*param_1 + iVar1 * 4)); + } + FUN_004de420((int *)*param_1); + FUN_004de420((int *)param_1[1]); + FUN_004de420(param_1); + } + return; +} + + + +/* @004969b0 file=? name=FUN_004969b0 */ + +undefined4 __cdecl FUN_004969b0(int *param_1,char *param_2,undefined4 param_3) + +{ + char *pcVar1; + undefined4 uVar2; + int *piVar3; + char *pcVar4; + int *piVar5; + int *piVar6; + char *pcVar7; + int iVar8; + bool bVar9; + + if (param_1 == (int *)0x0) { + uVar2 = 0; + } + else { + piVar3 = (int *)*param_1; + if (piVar3 == (int *)0x0) { + piVar3 = FUN_00496940(); + if (piVar3 == (int *)0x0) { + return 0; + } + *param_1 = (int)piVar3; + } + for (iVar8 = 0; iVar8 < piVar3[2]; iVar8 = iVar8 + 1) { + pcVar7 = *(char **)(*piVar3 + iVar8 * 4); + pcVar4 = param_2; + do { + if (*pcVar4 != *pcVar7) goto LAB_00496a1d; + bVar9 = true; + if (*pcVar4 == '\0') break; + pcVar1 = pcVar4 + 1; + if (*pcVar1 != pcVar7[1]) goto LAB_00496a1d; + pcVar4 = pcVar4 + 2; + pcVar7 = pcVar7 + 2; + bVar9 = *pcVar1 == '\0'; + } while (!bVar9); + if (bVar9) { + *(undefined4 *)(piVar3[1] + iVar8 * 4) = param_3; + return 1; + } +LAB_00496a1d: + } + piVar5 = (int *)FUN_00402300(param_2); + if (piVar5 == (int *)0x0) { + FUN_0049a300(1,s_dpl_AddFileExtnFunc_failed_to_al_00509f9b); + uVar2 = 0; + } + else { + if ((int *)*piVar3 == (int *)0x0) { + piVar6 = FUN_004de55c((piVar3[2] + 2) * 4); + } + else { + piVar6 = FUN_004de760((int *)*piVar3,(piVar3[2] + 2) * 4); + } + if (piVar6 == (int *)0x0) { + FUN_0049a300(1,s_dpl_AddFileExtnFunc_failed_to_al_00509fdf); + FUN_004de420(piVar5); + uVar2 = 0; + } + else { + *piVar3 = (int)piVar6; + *(undefined4 *)(*piVar3 + 4 + piVar3[2] * 4) = 0; + if ((int *)piVar3[1] == (int *)0x0) { + piVar6 = FUN_004de55c((piVar3[2] + 1) * 4); + } + else { + piVar6 = FUN_004de760((int *)piVar3[1],(piVar3[2] + 1) * 4); + } + if (piVar6 == (int *)0x0) { + FUN_0049a300(1,s_dpl_AddFileExtnFunc_failed_to_al_0050a01c); + FUN_004de420(piVar5); + uVar2 = 0; + } + else { + piVar3[1] = (int)piVar6; + *(int **)(*piVar3 + piVar3[2] * 4) = piVar5; + *(undefined4 *)(piVar3[1] + piVar3[2] * 4) = param_3; + piVar3[2] = piVar3[2] + 1; + uVar2 = 1; + } + } + } + } + return uVar2; +} + + + +/* @00496b08 file=? name=FUN_00496b08 */ + +undefined4 __cdecl FUN_00496b08(int *param_1,char *param_2) + +{ + char *pcVar1; + char *pcVar2; + char *pcVar3; + int iVar4; + bool bVar5; + + if (param_1 != (int *)0x0) { + for (iVar4 = 0; iVar4 < param_1[2]; iVar4 = iVar4 + 1) { + pcVar3 = *(char **)(*param_1 + iVar4 * 4); + pcVar2 = param_2; + do { + if (*pcVar2 != *pcVar3) goto LAB_00496b4d; + bVar5 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_00496b4d; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar5 = *pcVar1 == '\0'; + } while (!bVar5); + if (bVar5) { + return *(undefined4 *)(param_1[1] + iVar4 * 4); + } +LAB_00496b4d: + } + } + return 0; +} + + + +/* @00496b5c file=? name=FUN_00496b5c */ + +int * __cdecl FUN_00496b5c(int *param_1) + +{ + int *piVar1; + int iVar2; + int iVar3; + int local_8; + + local_8 = 0; + if (param_1 == (int *)0x0) { + piVar1 = (int *)0x0; + } + else { + for (iVar3 = 0; iVar3 < param_1[2]; iVar3 = iVar3 + 1) { + iVar2 = FUN_004d4a78(*(char **)(*param_1 + iVar3 * 4)); + local_8 = iVar2 + local_8 + 1; + } + if (local_8 == 0) { + piVar1 = (int *)0x0; + } + else { + piVar1 = FUN_004de55c(local_8 + 1); + if (piVar1 == (int *)0x0) { + FUN_0049a300(1,s_dpl_GetFileExtnFuncExtensions_fa_0050a058); + piVar1 = (int *)0x0; + } + else { + *(undefined1 *)piVar1 = 0; + for (iVar3 = 0; iVar3 < param_1[2]; iVar3 = iVar3 + 1) { + FUN_004d49b8((char *)piVar1,*(char **)(*param_1 + iVar3 * 4)); + FUN_004d49b8((char *)piVar1,&DAT_0050a091); + } + iVar3 = FUN_004d4a78((char *)piVar1); + *(undefined1 *)((int)piVar1 + iVar3 + -1) = 0; + } + } + } + return piVar1; +} + + + +/* @00496c18 file=? name=FUN_00496c18 */ + +undefined4 __cdecl FUN_00496c18(uint param_1,uint param_2) + +{ + if (param_2 == param_1) { + return 0; + } + if (param_1 < param_2) { + return 0xffffffff; + } + return 1; +} + + + +/* @00496c3c file=? name=FUN_00496c3c */ + +void __cdecl FUN_00496c3c(undefined4 param_1) + +{ + if (DAT_0050a0d0 != 0) { + FUN_0049a300(1,s_dpl_SetHandleCacheSize___handle_c_0050a0d8); + return; + } + DAT_0050a0d4 = param_1; + return; +} + + + +/* @00496c6c file=? name=FUN_00496c6c */ + +void __cdecl FUN_00496c6c(int param_1,undefined4 param_2) + +{ + if (param_1 != 0) { + if ((DAT_0050a0d0 == (int *)0x0) && + (DAT_0050a0d0 = FUN_0049a71c(DAT_0050a0d4,0x496c00,0x496c18), DAT_0050a0d0 == (int *)0x0)) { + FUN_0049a300(1,s_dpl_CacheHandle_failed_to_create_0050a10f); + return; + } + FUN_0049a5cc(DAT_0050a0d0,param_1,param_2); + } + return; +} + + + +/* @00496cd0 file=? name=FUN_00496cd0 */ + +undefined4 __cdecl FUN_00496cd0(undefined4 param_1) + +{ + undefined4 uVar1; + + if (DAT_0050a0d0 != (undefined4 *)0x0) { + uVar1 = FUN_0049a584(DAT_0050a0d0,param_1); + return uVar1; + } + return 0; +} + + + +/* @00496cf0 file=? name=FUN_00496cf0 */ + +void __cdecl FUN_00496cf0(undefined4 param_1) + +{ + if (DAT_0050a0d0 != (undefined4 *)0x0) { + FUN_0049a610(DAT_0050a0d0,param_1,0,(undefined4 *)0x0); + } + return; +} + + + +/* @00496d10 file=? name=FUN_00496d10 */ + +void FUN_00496d10(void) + +{ + if (DAT_0050a0d0 != (int *)0x0) { + FUN_0049a794(DAT_0050a0d0); + DAT_0050a0d0 = (int *)0x0; + } + DAT_0050a0d4 = 0x209; + return; +} + + + +/* @00496d68 file=? name=FUN_00496d68 */ + +void __cdecl FUN_00496d68(undefined4 param_1) + +{ + if (DAT_0050a17c != 0) { + FUN_0049a300(1,s_dpl_SetMaterialItemCacheSize___m_0050a1fd); + return; + } + DAT_0050a180 = param_1; + return; +} + + + +/* @00496d98 file=? name=FUN_00496d98 */ + +int * __cdecl FUN_00496d98(char *param_1) + +{ + char *pcVar1; + int *piVar2; + uint uVar3; + int *piVar4; + char *pcVar5; + char *pcVar6; + int *piVar7; + bool bVar8; + char local_410 [1024]; + int *local_10; + int local_c; + int local_8; + + piVar7 = (int *)0x0; + if (DAT_0050a190 == (undefined4 *)0x0) { + FUN_0049a300(1,s_dpl_LookupMaterialFile___no_mate_0050a241); + piVar7 = (int *)0x0; + } + else { + if (DAT_0050a174 == (int *)0x0) { + DAT_0050a174 = FUN_0049a71c(DAT_0050a178,0,0); + if (DAT_0050a174 == (int *)0x0) { + FUN_0049a300(1,s_dpl_LookupMaterialFile_failed_to_0050a275); + return (int *)0x0; + } + } + else { + piVar7 = (int *)FUN_0049a584(DAT_0050a174,param_1); + } + if (piVar7 == (int *)0x0) { + uVar3 = FUN_00496684(param_1,DAT_0050a190,&PTR_DAT_0050a194,(undefined4 *)local_410,0x400, + &local_8); + if (uVar3 == 0) { + piVar7 = (int *)0x0; + } + else { + piVar7 = (int *)FUN_0049a584(DAT_0050a174,local_410); + if (piVar7 == (int *)0x0) { + local_c = 0; + piVar7 = FUN_004de55c(0x14); + if (piVar7 == (int *)0x0) { + FUN_0049a300(1,s_dpl_LookupMaterialFile_failed_to_0050a2a9); + return (int *)0x0; + } + piVar4 = (int *)FUN_00402300(local_410); + if (piVar4 == (int *)0x0) { + FUN_0049a300(1,s_dpl_LookupMaterialFile_failed_to_0050a2db); + FUN_004de420(piVar7); + return (int *)0x0; + } + local_10 = (int *)FUN_00402300(param_1); + if (local_10 == (int *)0x0) { + FUN_0049a300(1,s_dpl_LookupMaterialFile_failed_to_0050a30c); + FUN_004de420(piVar4); + FUN_004de420(piVar7); + return (int *)0x0; + } + piVar7[1] = (int)local_10; + piVar7[2] = DAT_0050a184; + if (local_8 == 0) { + *piVar7 = 0; + local_c = FUN_00496408(local_410,(int)piVar7); + } + if (local_c == 0) { + FUN_0049a300(1,s_dpl_LookupMaterialFile_failed_to_0050a33e); + FUN_004de420(local_10); + FUN_004de420(piVar4); + FUN_004de420(piVar7); + return (int *)0x0; + } + piVar7[3] = local_c; + piVar7[4] = 0; + piVar2 = piVar7; + if (DAT_0050a18c != (int *)0x0) { + DAT_0050a18c[4] = (int)piVar7; + piVar2 = DAT_0050a188; + } + DAT_0050a188 = piVar2; + DAT_0050a184 = DAT_0050a184 + 1; + DAT_0050a18c = piVar7; + FUN_0049a5cc(DAT_0050a174,piVar4,piVar7); + } + pcVar6 = local_410; + pcVar5 = param_1; + do { + if (*pcVar5 != *pcVar6) goto LAB_00496fcb; + bVar8 = true; + if (*pcVar5 == '\0') break; + pcVar1 = pcVar5 + 1; + if (*pcVar1 != pcVar6[1]) goto LAB_00496fcb; + pcVar5 = pcVar5 + 2; + pcVar6 = pcVar6 + 2; + bVar8 = *pcVar1 == '\0'; + } while (!bVar8); + if (!bVar8) { +LAB_00496fcb: + pcVar6 = FUN_00402300(param_1); + if (pcVar6 == (char *)0x0) { + FUN_0049a300(1,s_dpl_LookupMaterialFile_failed_to_0050a378); + } + else { + FUN_0049a5cc(DAT_0050a174,pcVar6,piVar7); + } + } + } + } + } + return piVar7; +} + + + +/* @00497000 file=? name=FUN_00497000 */ + +uint __cdecl FUN_00497000(uint *param_1,uint param_2) + +{ + char *pcVar1; + uint uVar2; + uint uVar3; + + uVar2 = param_1[1] << 2 | *param_1; + for (pcVar1 = (char *)param_1[2]; *pcVar1 != '\0'; pcVar1 = pcVar1 + 1) { + uVar2 = uVar2 * 0x10 + (int)*pcVar1; + uVar3 = uVar2 & 0xf0000000; + if (uVar3 != 0) { + uVar2 = uVar2 ^ uVar3 >> 0x18 ^ uVar3; + } + } + return uVar2 % param_2; +} + + + +/* @00497044 file=? name=FUN_00497044 */ + +undefined4 __cdecl FUN_00497044(int *param_1,int *param_2) + +{ + byte bVar1; + undefined4 uVar2; + byte *pbVar3; + byte *pbVar4; + bool bVar5; + bool bVar6; + + if (*param_1 < *param_2) { + uVar2 = 0xffffffff; + } + else if (*param_2 < *param_1) { + uVar2 = 1; + } + else if (param_1[1] < param_2[1]) { + uVar2 = 0xffffffff; + } + else if (param_2[1] < param_1[1]) { + uVar2 = 1; + } + else { + pbVar3 = (byte *)param_1[2]; + pbVar4 = (byte *)param_2[2]; + do { + bVar1 = *pbVar3; + bVar5 = bVar1 < *pbVar4; + bVar6 = bVar1 == *pbVar4; + if (!bVar6) break; + bVar5 = false; + bVar6 = true; + if (bVar1 == 0) break; + bVar1 = pbVar3[1]; + bVar5 = bVar1 < pbVar4[1]; + bVar6 = bVar1 == pbVar4[1]; + if (!bVar6) break; + pbVar3 = pbVar3 + 2; + pbVar4 = pbVar4 + 2; + bVar5 = false; + bVar6 = bVar1 == 0; + } while (!bVar6); + uVar2 = CONCAT31((int3)(-(uint)bVar5 >> 8),(byte)-(uint)bVar5 | !bVar6); + } + return uVar2; +} + + + +/* @004970b0 file=? name=FUN_004970b0 */ + +int * FUN_004970b0(void) + +{ + int *piVar1; + + piVar1 = FUN_0049a71c(DAT_0050a180,0x497000,0x497044); + if (piVar1 == (int *)0x0) { + FUN_0049a300(1,s_dpl_NewMaterialItemCache_failed_t_0050a3aa); + } + return piVar1; +} + + + +/* @004970e8 file=? name=FUN_004970e8 */ + +int * __cdecl FUN_004970e8(int param_1,char *param_2,int param_3) + +{ + int *piVar1; + char *pcVar2; + + if ((DAT_0050a17c == (int *)0x0) && (DAT_0050a17c = FUN_004970b0(), DAT_0050a17c == (int *)0x0)) { + return (int *)0x0; + } + piVar1 = FUN_004de2bc(1,0x1c); + if (piVar1 == (int *)0x0) { + FUN_0049a300(1,s_dpl_CacheMaterialItem_failed_to_a_0050a3db); + piVar1 = (int *)0x0; + } + else { + pcVar2 = FUN_00402300(param_2); + piVar1[2] = (int)pcVar2; + if (piVar1[2] == 0) { + FUN_0049a300(1,s_dpl_CacheMaterialItem_failed_to_a_0050a415); + FUN_004de420(piVar1); + piVar1 = (int *)0x0; + } + else { + *piVar1 = param_1; + if (param_3 == 0) { + piVar1[1] = 0; + } + else { + piVar1[1] = *(int *)(param_3 + 8); + } + piVar1[3] = param_3; + FUN_0049a5cc(DAT_0050a17c,piVar1,piVar1); + } + } + return piVar1; +} + + + +/* @00497194 file=? name=FUN_00497194 */ + +int * __cdecl +FUN_00497194(int param_1,char *param_2,byte param_3,int *param_4,int *param_5,undefined *param_6, + undefined *param_7) + +{ + code *pcVar1; + int iVar2; + int *unaff_EBX; + int *piVar3; + int local_18; + int local_14; + char *local_10; + int local_c; + char *local_8; + + piVar3 = (int *)0x0; + if (param_2 == (char *)0x0) { + return unaff_EBX; + } + if (param_4 == (int *)0x0) { + if ((param_1 == 0) && (pcVar1 = (code *)FUN_0049665c(), pcVar1 != (code *)0x0)) { + param_2 = (char *)(*pcVar1)(param_2); + } + local_8 = FUN_004d4c4c(param_2,':'); + if (local_8 == (char *)0x0) { + local_14 = 0; + local_10 = param_2; + } + else { + *local_8 = '\0'; + param_4 = FUN_00496d98(param_2); + if (param_4 == (int *)0x0) { + FUN_0049a300(1,s_failed_to_find_material_file___s_0050a44f); + *local_8 = ':'; + return unaff_EBX; + } + *local_8 = ':'; + local_14 = param_4[2]; + local_10 = local_8 + 1; + } + } + else { + local_14 = param_4[2]; + local_10 = param_2; + } + local_18 = param_1; + if (DAT_0050a17c == (int *)0x0) { + DAT_0050a17c = FUN_004970b0(); + if (DAT_0050a17c == (int *)0x0) { + return unaff_EBX; + } + } + else { + piVar3 = (int *)FUN_0049a584(DAT_0050a17c,&local_18); + } + if (piVar3 == (int *)0x0) { + if (param_4 == (int *)0x0) { + if ((param_3 & 1) == 0) { + iVar2 = 0; + if ((param_6 != (undefined *)0x0) && (iVar2 = (*(code *)param_6)(), iVar2 == 0)) { + return unaff_EBX; + } + piVar3 = FUN_004970e8(param_1,param_2,0); + if (piVar3 == (int *)0x0) { + if (iVar2 == 0) { + return unaff_EBX; + } + if (param_7 == (undefined *)0x0) { + return unaff_EBX; + } + (*(code *)param_7)(iVar2); + return unaff_EBX; + } + piVar3[6] = iVar2; + FUN_00496c6c(iVar2,piVar3); + } + } + else { + if (*param_4 != 0) { + if (*param_4 == 1) { + FUN_0049a300(1,s_dpl_LookupMaterialItem_does_not_y_0050a472); + return unaff_EBX; + } + FUN_0049a300(1,s_dpl_LookupMaterialItem_unknown_m_0050a4b2); + return unaff_EBX; + } + if ((param_3 & 1) != 0) { + return unaff_EBX; + } + local_c = 0; + if ((param_6 != (undefined *)0x0) && (local_c = (*(code *)param_6)(), local_c == 0)) { + return unaff_EBX; + } + piVar3 = FUN_004970e8(param_1,param_2,(int)param_4); + if (piVar3 == (int *)0x0) { + if (local_c == 0) { + return unaff_EBX; + } + if (param_7 == (undefined *)0x0) { + return unaff_EBX; + } + (*(code *)param_7)(local_c); + return unaff_EBX; + } + pcVar1 = (code *)FUN_00496614(); + if (pcVar1 != (code *)0x0) { + iVar2 = 0; + if (param_1 == 0) { + iVar2 = 0xb; + } + else if (param_1 == 1) { + iVar2 = 0xc; + } + else if (param_1 == 2) { + iVar2 = 0xe; + } + if (iVar2 != 0) { + (*pcVar1)(iVar2,local_c); + } + } + piVar3[6] = local_c; + FUN_00496c6c(local_c,piVar3); + } + } + if (piVar3 != (int *)0x0) { + if ((param_3 & 4) == 0) { + piVar3[4] = piVar3[4] + 1; + } + if (param_5 != (int *)0x0) { + *param_5 = piVar3[5]; + } + if ((param_3 & 2) != 0) { + piVar3[5] = 1; + } + } + return unaff_EBX; +} + + + +/* @004973f0 file=? name=FUN_004973f0 */ + +undefined4 __cdecl FUN_004973f0(int param_1,undefined4 *param_2,uint *param_3) + +{ + char cVar1; + int iVar2; + int iVar3; + int *piVar4; + uint uVar5; + uint uVar6; + char *pcVar7; + char *pcVar8; + + pcVar7 = *(char **)(param_1 + 8); + if (*(int *)(param_1 + 0xc) == 0) { + iVar2 = FUN_004d4a78(pcVar7); + uVar6 = iVar2 + 1; + } + else { + iVar2 = FUN_004d4a78(*(char **)(*(int *)(param_1 + 0xc) + 4)); + iVar3 = FUN_004d4a78(pcVar7); + uVar6 = iVar2 + iVar3 + 2; + } + if ((int)*param_3 < (int)uVar6) { + if ((int)uVar6 < 0x50) { + uVar6 = 0x50; + } + piVar4 = FUN_004de760((int *)*param_2,uVar6); + if (piVar4 == (int *)0x0) { + FUN_0049a300(1,s_dpl_GetMaterialItemName_failed_t_0050a4e5); + return 0; + } + *param_2 = piVar4; + *param_3 = uVar6; + } + if (*(int *)(param_1 + 0xc) == 0) { + uVar6 = 0xffffffff; + do { + pcVar8 = pcVar7; + if (uVar6 == 0) break; + uVar6 = uVar6 - 1; + pcVar8 = pcVar7 + 1; + cVar1 = *pcVar7; + pcVar7 = pcVar8; + } while (cVar1 != '\0'); + uVar6 = ~uVar6; + pcVar7 = pcVar8 + -uVar6; + pcVar8 = (char *)*param_2; + for (uVar5 = uVar6 >> 2; uVar5 != 0; uVar5 = uVar5 - 1) { + *(undefined4 *)pcVar8 = *(undefined4 *)pcVar7; + pcVar7 = pcVar7 + 4; + pcVar8 = pcVar8 + 4; + } + for (uVar6 = uVar6 & 3; uVar6 != 0; uVar6 = uVar6 - 1) { + *pcVar8 = *pcVar7; + pcVar7 = pcVar7 + 1; + pcVar8 = pcVar8 + 1; + } + } + else { + FUN_004d7f10((undefined1 *)*param_2,s__s__s_0050a523); + } + return 1; +} + + + +/* @004974c4 file=? name=FUN_004974c4 */ + +int __cdecl +FUN_004974c4(int param_1,int *param_2,undefined4 *param_3,uint *param_4,int param_5, + undefined4 *param_6) + +{ + int *piVar1; + int iVar2; + + if (DAT_0050a17c != 0) { + if (param_5 == 0) { + piVar1 = (int *)FUN_0049a814(param_2,(undefined4 *)0x0); + } + else { + piVar1 = (int *)FUN_0049a7b8(param_2,DAT_0050a17c,(undefined4 *)0x0); + } + while (piVar1 != (int *)0x0) { + if (param_1 == *piVar1) { + if (param_6 != (undefined4 *)0x0) { + iVar2 = FUN_004973f0((int)piVar1,param_3,param_4); + if (iVar2 == 0) { + *param_6 = 0; + return piVar1[6]; + } + *param_6 = *param_3; + } + return piVar1[6]; + } + piVar1 = (int *)FUN_0049a814(param_2,(undefined4 *)0x0); + } + } + return 0; +} + + + +/* @00497558 file=? name=FUN_00497558 */ + +undefined4 __cdecl FUN_00497558(undefined4 param_1,undefined4 *param_2,uint *param_3) + +{ + int iVar1; + undefined4 uVar2; + + iVar1 = FUN_00496cd0(param_1); + if (iVar1 == 0) { + uVar2 = 0; + } + else { + iVar1 = FUN_004973f0(iVar1,param_2,param_3); + if (iVar1 == 0) { + uVar2 = 0; + } + else { + uVar2 = *param_2; + } + } + return uVar2; +} + + + +/* @00497590 file=? name=FUN_00497590 */ + +void __cdecl FUN_00497590(undefined4 param_1) + +{ + int iVar1; + + iVar1 = FUN_00496cd0(param_1); + if (iVar1 != 0) { + *(int *)(iVar1 + 0x10) = *(int *)(iVar1 + 0x10) + 1; + } + return; +} + + + +/* @004975a8 file=? name=FUN_004975a8 */ + +void __cdecl FUN_004975a8(undefined4 param_1) + +{ + int iVar1; + + iVar1 = FUN_00496cd0(param_1); + if (iVar1 != 0) { + *(int *)(iVar1 + 0x10) = *(int *)(iVar1 + 0x10) + -1; + } + return; +} + + + +/* @004975c0 file=? name=FUN_004975c0 */ + +undefined4 * FUN_004975c0(void) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_004897a0(); + if (puVar1 != (undefined4 *)0x0) { + FUN_0048ba98((int)puVar1,0x3f800000,0,0); + FUN_0048bc10((int)puVar1,0x3f800000,0,0); + FUN_0048bb54((int)puVar1,0,0,0); + FUN_0048bd94((int)puVar1,0x3f800000,0x3f800000,0x3f800000); + FUN_0048bccc((int)puVar1,0,0,0,0x3f800000); + FUN_0048d4d4(puVar1); + } + return puVar1; +} + + + +/* @0049763c file=? name=FUN_0049763c */ + +undefined4 * FUN_0049763c(void) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_004897b8(); + if (puVar1 != (undefined4 *)0x0) { + FUN_0048c060((int)puVar1,0,0,0,0x3f800000,0x3f800000,0x3f800000); + FUN_0048d538(puVar1); + } + return puVar1; +} + + + +/* @00497678 file=? name=FUN_00497678 */ + +undefined4 __cdecl FUN_00497678(char *param_1,byte param_2,int *param_3) + +{ + int extraout_EAX; + + FUN_00497194(0,param_1,param_2,(int *)0x0,param_3,FUN_004975c0,FUN_00489a28); + if (extraout_EAX != 0) { + return *(undefined4 *)(extraout_EAX + 0x18); + } + return 0; +} + + + +/* @004976ac file=? name=FUN_004976ac */ + +void __cdecl FUN_004976ac(undefined4 param_1) + +{ + FUN_00497590(param_1); + return; +} + + + +/* @004976bc file=? name=FUN_004976bc */ + +void __cdecl FUN_004976bc(undefined4 param_1) + +{ + FUN_004975a8(param_1); + return; +} + + + +/* @004976cc file=? name=FUN_004976cc */ + +void __cdecl FUN_004976cc(undefined4 *param_1) + +{ + FUN_004974c4(0,(int *)&DAT_00524b14,&DAT_0050a19c,(uint *)&DAT_0050a1a0,1,param_1); + return; +} + + + +/* @004976f0 file=? name=FUN_004976f0 */ + +void __cdecl FUN_004976f0(undefined4 *param_1) + +{ + FUN_004974c4(0,(int *)&DAT_00524b14,&DAT_0050a19c,(uint *)&DAT_0050a1a0,0,param_1); + return; +} + + + +/* @00497714 file=? name=FUN_00497714 */ + +void __cdecl FUN_00497714(undefined4 param_1) + +{ + FUN_00497558(param_1,&DAT_0050a19c,(uint *)&DAT_0050a1a0); + return; +} + + + +/* @00497730 file=? name=FUN_00497730 */ + +undefined4 __cdecl FUN_00497730(char *param_1,byte param_2,int *param_3) + +{ + int extraout_EAX; + + FUN_00497194(1,param_1,param_2,(int *)0x0,param_3,FUN_00489768,FUN_00489998); + if (extraout_EAX != 0) { + return *(undefined4 *)(extraout_EAX + 0x18); + } + return 0; +} + + + +/* @00497764 file=? name=FUN_00497764 */ + +void __cdecl FUN_00497764(undefined4 param_1) + +{ + FUN_00497590(param_1); + return; +} + + + +/* @00497774 file=? name=FUN_00497774 */ + +void __cdecl FUN_00497774(undefined4 param_1) + +{ + FUN_004975a8(param_1); + return; +} + + + +/* @00497784 file=? name=FUN_00497784 */ + +void __cdecl FUN_00497784(undefined4 *param_1) + +{ + FUN_004974c4(1,(int *)&DAT_00524b20,&DAT_0050a1a4,(uint *)&DAT_0050a1a8,1,param_1); + return; +} + + + +/* @004977a8 file=? name=FUN_004977a8 */ + +void __cdecl FUN_004977a8(undefined4 *param_1) + +{ + FUN_004974c4(1,(int *)&DAT_00524b20,&DAT_0050a1a4,(uint *)&DAT_0050a1a8,0,param_1); + return; +} + + + +/* @004977cc file=? name=FUN_004977cc */ + +void __cdecl FUN_004977cc(undefined4 param_1) + +{ + FUN_00497558(param_1,&DAT_0050a1a4,(uint *)&DAT_0050a1a8); + return; +} + + + +/* @004977e8 file=? name=FUN_004977e8 */ + +undefined4 __cdecl FUN_004977e8(char *param_1,byte param_2,int *param_3) + +{ + int extraout_EAX; + + FUN_00497194(2,param_1,param_2,(int *)0x0,param_3,FUN_0049763c,FUN_00489a68); + if (extraout_EAX != 0) { + return *(undefined4 *)(extraout_EAX + 0x18); + } + return 0; +} + + + +/* @0049781c file=? name=FUN_0049781c */ + +void __cdecl FUN_0049781c(undefined4 param_1) + +{ + FUN_00497590(param_1); + return; +} + + + +/* @0049782c file=? name=FUN_0049782c */ + +void __cdecl FUN_0049782c(undefined4 param_1) + +{ + FUN_004975a8(param_1); + return; +} + + + +/* @0049783c file=? name=FUN_0049783c */ + +void __cdecl FUN_0049783c(undefined4 *param_1) + +{ + FUN_004974c4(2,(int *)&DAT_00524b2c,&DAT_0050a1ac,(uint *)&DAT_0050a1b0,1,param_1); + return; +} + + + +/* @00497860 file=? name=FUN_00497860 */ + +void __cdecl FUN_00497860(undefined4 *param_1) + +{ + FUN_004974c4(2,(int *)&DAT_00524b2c,&DAT_0050a1ac,(uint *)&DAT_0050a1b0,0,param_1); + return; +} + + + +/* @00497884 file=? name=FUN_00497884 */ + +void __cdecl FUN_00497884(undefined4 param_1) + +{ + FUN_00497558(param_1,&DAT_0050a1ac,(uint *)&DAT_0050a1b0); + return; +} + + + +/* @004978a0 file=? name=FUN_004978a0 */ + +void __cdecl FUN_004978a0(char *param_1,int param_2) + +{ + int iVar1; + + iVar1 = FUN_004968d8(&DAT_0050a190,param_1,param_2); + if (iVar1 == 0) { + FUN_0049a300(1,s_dpl_AddToMaterialFilePath_failed_0050a529); + } + return; +} + + + +/* @004978d4 file=? name=FUN_004978d4 */ + +void __cdecl FUN_004978d4(char *param_1,char *param_2,char *param_3) + +{ + int iVar1; + + iVar1 = FUN_004967b8(&DAT_0050a190,param_1,param_2,param_3); + if (iVar1 == 0) { + FUN_0049a300(1,s_dpl_SetMaterialFilePath_failed_t_0050a565); + } + return; +} + + + +/* @00497910 file=? name=FUN_00497910 */ + +void FUN_00497910(void) + +{ + FUN_0049680c(DAT_0050a190); + return; +} + + + +/* @00497924 file=? name=FUN_00497924 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_00497924(void) + +{ + undefined4 uVar1; + int iVar2; + int *piVar3; + int local_14 [3]; + int *local_8; + + uVar1 = 0; + piVar3 = DAT_0050a188; + if (DAT_0050a174 != (int *)0x0) { + iVar2 = FUN_0049a7b8(local_14,(int)DAT_0050a174,&local_8); + while (iVar2 != 0) { + FUN_004de420(local_8); + iVar2 = FUN_0049a814(local_14,&local_8); + } + FUN_0049a794(DAT_0050a174); + DAT_0050a174 = (int *)0x0; + uVar1 = DAT_0050a174; + piVar3 = DAT_0050a188; + } + for (; DAT_0050a174 = (int *)uVar1, piVar3 != (int *)0x0; piVar3 = (int *)piVar3[4]) { + FUN_004de420((int *)piVar3[1]); + FUN_004de420(piVar3); + uVar1 = DAT_0050a174; + } + DAT_0050a188 = (int *)0x0; + DAT_0050a18c = 0; + DAT_0050a178 = 0x3f; + if (DAT_0050a17c != (int *)0x0) { + piVar3 = (int *)FUN_0049a7b8(local_14,(int)DAT_0050a17c,(undefined4 *)0x0); + while (piVar3 != (int *)0x0) { + FUN_004de420(piVar3); + piVar3 = (int *)FUN_0049a814(local_14,(undefined4 *)0x0); + } + FUN_0049a794(DAT_0050a17c); + DAT_0050a17c = (int *)0x0; + } + DAT_0050a180 = 0x101; + DAT_0050a184 = 1; + if (DAT_0050a190 != (int *)0x0) { + FUN_00496794(DAT_0050a190); + DAT_0050a190 = (int *)0x0; + } + if (DAT_0050a19c != (int *)0x0) { + FUN_004de420(DAT_0050a19c); + DAT_0050a19c = (int *)0x0; + _DAT_0050a1a0 = 0; + } + if (DAT_0050a1a4 != (int *)0x0) { + FUN_004de420(DAT_0050a1a4); + DAT_0050a1a4 = (int *)0x0; + _DAT_0050a1a8 = 0; + } + if (DAT_0050a1ac != (int *)0x0) { + FUN_004de420(DAT_0050a1ac); + DAT_0050a1ac = (int *)0x0; + _DAT_0050a1b0 = 0; + } + return; +} + + + +/* @00497a88 file=? name=FUN_00497a88 */ + +void __cdecl FUN_00497a88(int *param_1) + +{ + int *piVar1; + + while (param_1 != (int *)0x0) { + piVar1 = (int *)param_1[1]; + FUN_004de420(param_1); + param_1 = piVar1; + } + return; +} + + + +/* @00497aa8 file=? name=FUN_00497aa8 */ + +int * __cdecl FUN_00497aa8(int *param_1,int param_2) + +{ + int *piVar1; + + piVar1 = FUN_004de2bc(1,8); + if (piVar1 == (int *)0x0) { + FUN_0049a300(1,s_dpl_AddNameList_failed_to_alloca_0050a5df); + piVar1 = (int *)0x0; + } + else { + *piVar1 = param_2; + piVar1[1] = *param_1; + *param_1 = (int)piVar1; + } + return piVar1; +} + + + +/* @00497b18 file=? name=FUN_00497b18 */ + +void __cdecl FUN_00497b18(char *param_1,int param_2) + +{ + int iVar1; + + iVar1 = FUN_004968d8(&DAT_0050a65c,param_1,param_2); + if (iVar1 == 0) { + FUN_0049a300(1,s_dpl_AddToObjectFilePath_failed_t_0050a6bc); + } + return; +} + + + +/* @00497b4c file=? name=FUN_00497b4c */ + +void __cdecl FUN_00497b4c(char *param_1,char *param_2,char *param_3) + +{ + int iVar1; + + iVar1 = FUN_004967b8(&DAT_0050a65c,param_1,param_2,param_3); + if (iVar1 == 0) { + FUN_0049a300(1,s_dpl_SetObjectFilePath_failed_to_s_0050a6f6); + } + return; +} + + + +/* @00497b88 file=? name=FUN_00497b88 */ + +void FUN_00497b88(void) + +{ + FUN_0049680c(DAT_0050a65c); + return; +} + + + +/* @00497b9c file=? name=FUN_00497b9c */ + +void __cdecl FUN_00497b9c(char *param_1,undefined4 param_2) + +{ + int iVar1; + + iVar1 = FUN_004969b0(&DAT_0050a660,param_1,param_2); + if (iVar1 == 0) { + FUN_0049a300(1,s_dpl_SetExtnObjectLoadFunc_failed_0050a731); + } + return; +} + + + +/* @00497bcc file=? name=FUN_00497bcc */ + +void __cdecl FUN_00497bcc(char *param_1) + +{ + FUN_00496b08(DAT_0050a660,param_1); + return; +} + + + +/* @00497be4 file=? name=FUN_00497be4 */ + +void FUN_00497be4(void) + +{ + FUN_00496b5c(DAT_0050a660); + return; +} + + + +/* @00497bf8 file=? name=FUN_00497bf8 */ + +void __cdecl FUN_00497bf8(char *param_1) + +{ + char *pcVar1; + + if (DAT_0050a668 != (undefined4 *)0x0) { + pcVar1 = FUN_00402300(param_1); + if (pcVar1 == (char *)0x0) { + FUN_0049a300(1,s_dpl_SetObjectName_failed_to_allo_0050a769); + return; + } + *DAT_0050a668 = pcVar1; + } + return; +} + + + +/* @00497c30 file=? name=FUN_00497c30 */ + +void __cdecl FUN_00497c30(undefined4 *param_1,uint param_2) + +{ + int iVar1; + int *piVar2; + + if (DAT_0050a668 != 0) { + piVar2 = FUN_004de55c(param_2); + if (piVar2 == (int *)0x0) { + FUN_0049a300(1,s_dpl_SetObjectSpecial_failed_to_a_0050a79f); + } + else { + FUN_004d4918(piVar2,param_1,param_2); + iVar1 = DAT_0050a668; + *(int **)(DAT_0050a668 + 4) = piVar2; + *(uint *)(iVar1 + 8) = param_2; + } + } + return; +} + + + +/* @00497c7c file=? name=FUN_00497c7c */ + +int * __cdecl +FUN_00497c7c(int param_1,char *param_2,undefined4 *param_3,uint param_4,int param_5,int param_6) + +{ + int *piVar1; + int *piVar2; + int *piVar3; + int *local_8; + + if (DAT_0050a668 == 0) { + piVar1 = (int *)0x0; + } + else { + if (param_1 == 0) { + local_8 = (int *)(DAT_0050a668 + 0x1c); + } + else { + if (param_1 != 1) { + FUN_0049a300(1,s_dpl_AddObjectItem_unknown_object_0050a7db); + return (int *)0x0; + } + local_8 = (int *)(DAT_0050a668 + 0x20); + } + piVar2 = (int *)FUN_00402300(param_2); + if (piVar2 == (int *)0x0) { + FUN_0049a300(1,s_dpl_AddObjectItem_failed_to_allo_0050a807); + piVar1 = (int *)0x0; + } + else { + if ((param_3 == (undefined4 *)0x0) || (param_4 == 0)) { + piVar3 = (int *)0x0; + param_4 = 0; + } + else { + piVar3 = FUN_004de55c(param_4); + if (piVar3 == (int *)0x0) { + FUN_0049a300(1,s_dpl_AddObjectItem_failed_to_allo_0050a83d); + FUN_004de420(piVar2); + return (int *)0x0; + } + FUN_004d4918(piVar3,param_3,param_4); + } + piVar1 = FUN_004de2bc(1,0x1c); + if (piVar1 == (int *)0x0) { + FUN_0049a300(1,s_dpl_AddObjectItem_failed_to_allo_0050a876); + if (piVar3 != (int *)0x0) { + FUN_004de420(piVar3); + } + FUN_004de420(piVar2); + piVar1 = (int *)0x0; + } + else { + *piVar1 = (int)piVar2; + piVar1[1] = (int)piVar3; + piVar1[2] = param_4; + piVar1[4] = param_5; + piVar1[5] = param_6; + piVar1[6] = *local_8; + *local_8 = (int)piVar1; + if (param_6 != 0) { + FUN_00496c6c(param_6,piVar1); + } + } + } + } + return piVar1; +} + + + +/* @00497db4 file=? name=FUN_00497db4 */ + +void __cdecl FUN_00497db4(int *param_1) + +{ + int iVar1; + int *piVar2; + code *pcVar3; + + iVar1 = FUN_0048c6bc((int)param_1); + if (iVar1 != 0) { + FUN_0048c654((int)param_1,0); + FUN_004976bc(iVar1); + } + iVar1 = FUN_0048c6ec((int)param_1); + if (iVar1 != 0) { + FUN_0048c688((int)param_1,0); + FUN_004976bc(iVar1); + } + while( true ) { + piVar2 = (int *)FUN_0048a4d4((int)param_1,0); + if (piVar2 == (int *)0x0) break; + FUN_00489ff0((int)param_1,(int)piVar2); + FUN_0049a300(4,s_deleting_geometry_0x_x__0050a8b3); + FUN_00489b68(piVar2); + } + pcVar3 = (code *)FUN_0049662c(); + if (pcVar3 != (code *)0x0) { + (*pcVar3)(9,param_1); + } + FUN_0049a300(4,s_deleting_geogroup_0x_x__0050a8cb); + FUN_00489b28(param_1); + return; +} + + + +/* @00497e5c file=? name=FUN_00497e5c */ + +void __cdecl FUN_00497e5c(int *param_1) + +{ + int *piVar1; + int *piVar2; + code *pcVar3; + + while( true ) { + piVar2 = (int *)FUN_0048a464((int)param_1,0); + if (piVar2 == (int *)0x0) break; + FUN_00489f78((int)param_1,(int)piVar2); + piVar1 = (int *)FUN_00496cd0(piVar2); + if (piVar1 == (int *)0x0) { + FUN_00497db4(piVar2); + } + else { + piVar1[4] = 0; + if (piVar1[3] < 1) { + FUN_00497ed8(1,piVar1); + } + } + } + pcVar3 = (code *)FUN_0049662c(); + if (pcVar3 != (code *)0x0) { + (*pcVar3)(8,param_1); + } + FUN_0049a300(4,s_deleting_lod_0x_x__0050a8e3); + FUN_00489ae8(param_1); + return; +} + + + +/* @00497ed8 file=? name=FUN_00497ed8 */ + +void __cdecl FUN_00497ed8(int param_1,int *param_2) + +{ + FUN_00496cf0(param_2[5]); + if (param_1 == 0) { + FUN_00497e5c((int *)param_2[5]); + } + else { + if (param_1 != 1) { + FUN_0049a300(1,s_dpl_DeleteObjectItem_unknown_obj_0050a8f6); + return; + } + FUN_00497db4((int *)param_2[5]); + } + if ((int *)*param_2 != (int *)0x0) { + FUN_004de420((int *)*param_2); + } + if ((int *)param_2[1] != (int *)0x0) { + FUN_004de420((int *)param_2[1]); + } + FUN_004de420(param_2); + return; +} + + + +/* @00497f44 file=? name=FUN_00497f44 */ + +undefined4 __cdecl FUN_00497f44(undefined4 param_1) + +{ + int iVar1; + + iVar1 = FUN_00496cd0(param_1); + if (iVar1 == 0) { + return 0; + } + return *(undefined4 *)(iVar1 + 0x10); +} + + + +/* @00497f60 file=? name=FUN_00497f60 */ + +undefined4 __cdecl FUN_00497f60(undefined4 param_1) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00496cd0(param_1); + if (puVar1 == (undefined4 *)0x0) { + return 0; + } + return *puVar1; +} + + + +/* @00497f7c file=? name=FUN_00497f7c */ + +undefined4 __cdecl FUN_00497f7c(undefined4 param_1,undefined4 *param_2) + +{ + int iVar1; + + iVar1 = FUN_00496cd0(param_1); + if (iVar1 == 0) { + return 0; + } + if (param_2 != (undefined4 *)0x0) { + *param_2 = *(undefined4 *)(iVar1 + 8); + } + return *(undefined4 *)(iVar1 + 4); +} + + + +/* @00497fa8 file=? name=FUN_00497fa8 */ + +undefined4 __cdecl FUN_00497fa8(undefined4 param_1) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00496cd0(param_1); + if (puVar1 == (undefined4 *)0x0) { + return 0; + } + return *puVar1; +} + + + +/* @00497fc4 file=? name=FUN_00497fc4 */ + +undefined4 __cdecl FUN_00497fc4(undefined4 param_1) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00496cd0(param_1); + if (puVar1 == (undefined4 *)0x0) { + return 0; + } + return *puVar1; +} + + + +/* @00497fe0 file=? name=FUN_00497fe0 */ + +undefined4 __cdecl FUN_00497fe0(undefined4 param_1,undefined4 *param_2) + +{ + int iVar1; + + iVar1 = FUN_00496cd0(param_1); + if (iVar1 == 0) { + return 0; + } + if (param_2 != (undefined4 *)0x0) { + *param_2 = *(undefined4 *)(iVar1 + 8); + } + return *(undefined4 *)(iVar1 + 4); +} + + + +/* @0049800c file=? name=FUN_0049800c */ + +undefined4 * __cdecl FUN_0049800c(int param_1,undefined4 param_2,char *param_3) + +{ + char *pcVar1; + undefined4 *puVar2; + int iVar3; + char *pcVar4; + char *pcVar5; + bool bVar6; + + iVar3 = FUN_00496cd0(param_2); + if ((iVar3 != 0) && (param_3 != (char *)0x0)) { + if (param_1 == 0) { + puVar2 = *(undefined4 **)(iVar3 + 0x1c); + } + else { + if (param_1 != 1) { + FUN_0049a300(1,s_dpl_LookupObjectItem_unknown_obj_0050a925); + return (undefined4 *)0x0; + } + puVar2 = *(undefined4 **)(iVar3 + 0x20); + } + for (; puVar2 != (undefined4 *)0x0; puVar2 = (undefined4 *)puVar2[6]) { + pcVar4 = (char *)*puVar2; + pcVar5 = param_3; + do { + if (*pcVar4 != *pcVar5) goto LAB_0049807f; + bVar6 = true; + if (*pcVar4 == '\0') break; + pcVar1 = pcVar4 + 1; + if (*pcVar1 != pcVar5[1]) goto LAB_0049807f; + pcVar4 = pcVar4 + 2; + pcVar5 = pcVar5 + 2; + bVar6 = *pcVar1 == '\0'; + } while (!bVar6); + if (bVar6) { + return puVar2; + } +LAB_0049807f: + } + } + return (undefined4 *)0x0; +} + + + +/* @0049808c file=? name=FUN_0049808c */ + +undefined4 __cdecl +FUN_0049808c(int param_1,int *param_2,int *param_3,int param_4,undefined4 *param_5) + +{ + int in_EAX; + undefined4 uVar1; + int iVar2; + undefined4 *puVar3; + + puVar3 = (undefined4 *)0x0; + if (DAT_0050a654 == 0) { + uVar1 = 0; + } + else { + iVar2 = DAT_0050a664; + if (param_4 == 0) { + if (*param_3 == 0) { + if (*param_2 == 0) { + iVar2 = 0; + } + else { + iVar2 = *(int *)(*param_2 + 0x2c); + } + } + else { + puVar3 = (undefined4 *)*param_3; + iVar2 = in_EAX; + } + } + if (puVar3 == (undefined4 *)0x0) { + for (; iVar2 != 0; iVar2 = *(int *)(iVar2 + 0x2c)) { + if (param_1 == 0) { + puVar3 = *(undefined4 **)(iVar2 + 0x1c); + } + else { + if (param_1 != 1) { + FUN_0049a300(1,s_dpl_IterateObjectItem_unknown_ob_0050a954); + return 0; + } + puVar3 = *(undefined4 **)(iVar2 + 0x20); + } + if (puVar3 != (undefined4 *)0x0) break; + } + if (puVar3 == (undefined4 *)0x0) { + *param_2 = 0; + return 0; + } + } + *param_2 = iVar2; + *param_3 = puVar3[6]; + if (param_5 != (undefined4 *)0x0) { + *param_5 = *puVar3; + } + uVar1 = puVar3[5]; + } + return uVar1; +} + + + +/* @0049812c file=? name=FUN_0049812c */ + +undefined4 __cdecl FUN_0049812c(undefined4 param_1,char *param_2,byte param_3,undefined4 *param_4) + +{ + undefined4 *puVar1; + + puVar1 = FUN_0049800c(0,param_1,param_2); + if (puVar1 != (undefined4 *)0x0) { + if ((param_3 & 4) == 0) { + puVar1[3] = puVar1[3] + 1; + } + if (param_4 != (undefined4 *)0x0) { + *param_4 = 1; + } + return puVar1[5]; + } + return 0; +} + + + +/* @00498168 file=? name=FUN_00498168 */ + +void __cdecl FUN_00498168(undefined4 param_1) + +{ + int iVar1; + + iVar1 = FUN_00496cd0(param_1); + if (iVar1 != 0) { + *(int *)(iVar1 + 0xc) = *(int *)(iVar1 + 0xc) + 1; + } + return; +} + + + +/* @00498180 file=? name=FUN_00498180 */ + +void __cdecl FUN_00498180(undefined4 param_1) + +{ + int *piVar1; + + piVar1 = (int *)FUN_00496cd0(param_1); + if (((piVar1 != (int *)0x0) && (piVar1[3] = piVar1[3] + -1, piVar1[3] < 1)) && (piVar1[4] == 0)) { + FUN_00497ed8(0,piVar1); + } + return; +} + + + +/* @004981b0 file=? name=FUN_004981b0 */ + +void __cdecl FUN_004981b0(undefined4 *param_1) + +{ + FUN_0049808c(0,(int *)&DAT_0050a66c,(int *)&DAT_0050a670,1,param_1); + return; +} + + + +/* @004981d0 file=? name=FUN_004981d0 */ + +void __cdecl FUN_004981d0(undefined4 *param_1) + +{ + FUN_0049808c(0,(int *)&DAT_0050a66c,(int *)&DAT_0050a670,0,param_1); + return; +} + + + +/* @004981f0 file=? name=FUN_004981f0 */ + +undefined4 __cdecl FUN_004981f0(undefined4 param_1,char *param_2,byte param_3,undefined4 *param_4) + +{ + undefined4 *puVar1; + + puVar1 = FUN_0049800c(1,param_1,param_2); + if (puVar1 != (undefined4 *)0x0) { + if ((param_3 & 4) == 0) { + puVar1[3] = puVar1[3] + 1; + } + if (param_4 != (undefined4 *)0x0) { + *param_4 = 1; + } + return puVar1[5]; + } + return 0; +} + + + +/* @0049822c file=? name=FUN_0049822c */ + +void __cdecl FUN_0049822c(undefined4 param_1) + +{ + int iVar1; + + iVar1 = FUN_00496cd0(param_1); + if (iVar1 != 0) { + *(int *)(iVar1 + 0xc) = *(int *)(iVar1 + 0xc) + 1; + } + return; +} + + + +/* @00498244 file=? name=FUN_00498244 */ + +void __cdecl FUN_00498244(undefined4 param_1) + +{ + int *piVar1; + + piVar1 = (int *)FUN_00496cd0(param_1); + if (((piVar1 != (int *)0x0) && (piVar1[3] = piVar1[3] + -1, piVar1[3] < 1)) && (piVar1[4] == 0)) { + FUN_00497ed8(1,piVar1); + } + return; +} + + + +/* @00498274 file=? name=FUN_00498274 */ + +void __cdecl FUN_00498274(undefined4 *param_1) + +{ + FUN_0049808c(1,(int *)&DAT_0050a674,(int *)&DAT_0050a678,1,param_1); + return; +} + + + +/* @00498294 file=? name=FUN_00498294 */ + +void __cdecl FUN_00498294(undefined4 *param_1) + +{ + FUN_0049808c(1,(int *)&DAT_0050a674,(int *)&DAT_0050a678,0,param_1); + return; +} + + + +/* @004982b4 file=? name=FUN_004982b4 */ + +void __cdecl FUN_004982b4(undefined4 param_1) + +{ + int iVar1; + int iVar2; + undefined4 *puVar3; + int iVar4; + int *piVar5; + int *piVar6; + int *piVar7; + code *pcVar8; + + piVar5 = (int *)FUN_00496cd0(param_1); + if ((piVar5 != (int *)0x0) && (piVar5[6] = piVar5[6] + -1, piVar5[6] < 1)) { + iVar1 = piVar5[9]; + FUN_0049a300(4,s_unloading_object___s___0050a984); + iVar4 = piVar5[7]; + while (iVar4 != 0) { + iVar2 = *(int *)(iVar4 + 0x18); + *(undefined4 *)(iVar4 + 0x18) = 0; + iVar4 = iVar2; + } + iVar4 = piVar5[8]; + while (iVar4 != 0) { + iVar2 = *(int *)(iVar4 + 0x18); + *(undefined4 *)(iVar4 + 0x18) = 0; + iVar4 = iVar2; + } + while (piVar7 = (int *)FUN_0048a3f4(iVar1,0), piVar7 != (int *)0x0) { + FUN_00489f00(iVar1,(int)piVar7); + piVar6 = (int *)FUN_00496cd0(piVar7); + if (piVar6 == (int *)0x0) { + FUN_00497e5c(piVar7); + } + else { + piVar6[4] = 0; + if ((piVar6 != (int *)0x0) && (piVar6[3] < 1)) { + FUN_00497ed8(0,piVar6); + } + } + } + FUN_00496cf0(piVar5[9]); + if (piVar5[3] != 0) { + FUN_0049a610(DAT_0050a654,piVar5[3],0,(undefined4 *)0x0); + FUN_004de420((int *)piVar5[3]); + } + if ((int *)piVar5[4] != (int *)0x0) { + FUN_004de420((int *)piVar5[4]); + } + puVar3 = (undefined4 *)piVar5[5]; + if (puVar3 != (undefined4 *)0x0) { + for (; puVar3 != (undefined4 *)0x0; puVar3 = (undefined4 *)puVar3[1]) { + FUN_0049a610(DAT_0050a654,*puVar3,0,(undefined4 *)0x0); + FUN_004de420((int *)*puVar3); + } + FUN_00497a88((int *)piVar5[5]); + } + pcVar8 = (code *)FUN_0049662c(); + if (pcVar8 != (code *)0x0) { + (*pcVar8)(7,piVar5[9]); + } + FUN_0049a300(4,s_deleting_object_0x_x__0050a99b); + FUN_00489aa8((int *)piVar5[9]); + iVar1 = piVar5[10]; + if ((iVar1 != 0) || (piVar5[0xb] != 0)) { + if (iVar1 == 0) { + DAT_0050a664 = piVar5[0xb]; + } + else { + *(int *)(iVar1 + 0x2c) = piVar5[0xb]; + } + if (piVar5[0xb] != 0) { + *(int *)(piVar5[0xb] + 0x28) = piVar5[10]; + } + } + FUN_004de420(piVar5); + } + return; +} + + + +/* @00498448 file=? name=FUN_00498448 */ + +int __cdecl FUN_00498448(char *param_1,uint param_2) + +{ + char *pcVar1; + int iVar2; + uint uVar3; + char *pcVar4; + char *pcVar5; + int *piVar6; + bool bVar7; + char local_418 [1024]; + undefined4 local_18; + int *local_14; + int *local_10; + int local_c; + int local_8; + + piVar6 = (int *)0x0; + FUN_0049a300(4,s_load_object___s___0050a9b1); + if (DAT_0050a65c == (undefined4 *)0x0) { + FUN_0049a300(1,s_dpl_LoadObject___no_object_file_p_0050a9c3); + iVar2 = 0; + } + else if (DAT_0050a660 == (undefined4 *)0x0) { + FUN_0049a300(1,s_dpl_LoadObject___no_object_file_e_0050a9ed); + iVar2 = 0; + } + else { + if ((param_2 & 1) == 0) { + if (DAT_0050a654 == (int *)0x0) { + DAT_0050a654 = FUN_0049a71c(DAT_0050a658,0,0); + if (DAT_0050a654 == (int *)0x0) { + FUN_0049a300(1,s_dpl_LoadObject_failed_to_create_f_0050aa1d); + return 0; + } + } + else { + piVar6 = (int *)FUN_0049a584(DAT_0050a654,param_1); + } + } + if (piVar6 == (int *)0x0) { + uVar3 = FUN_00496684(param_1,DAT_0050a65c,(undefined4 *)*DAT_0050a660,(undefined4 *)local_418, + 0x400,&local_8); + if (uVar3 == 0) { + return 0; + } + if ((param_2 & 1) == 0) { + piVar6 = (int *)FUN_0049a584(DAT_0050a654,local_418); + } + if ((piVar6 == (int *)0x0) && ((param_2 & 2) == 0)) { + local_c = 0; + local_10 = (int *)0x0; + local_18 = DAT_0050a668; + piVar6 = FUN_004de2bc(1,0x30); + if (piVar6 == (int *)0x0) { + FUN_0049a300(1,s_dpl_LoadObject_failed_to_allocat_0050aa49); + return 0; + } + if (((param_2 & 1) == 0) && + (local_10 = (int *)FUN_00402300(local_418), local_10 == (int *)0x0)) { + FUN_0049a300(1,s_dpl_LoadObject_failed_to_copy_lo_0050aa73); + FUN_004de420(piVar6); + return 0; + } + local_14 = (int *)FUN_00402300(param_1); + if (local_14 == (int *)0x0) { + FUN_0049a300(1,s_dpl_LoadObject_failed_to_copy_sh_0050aa9c); + if (local_10 != (int *)0x0) { + FUN_004de420(local_10); + } + FUN_004de420(piVar6); + return 0; + } + piVar6[4] = (int)local_14; + DAT_0050a668 = piVar6; + FUN_0049a300(4,s_loading_object___s___0050aac6); + if (*(int *)(DAT_0050a660[1] + local_8 * 4) != 0) { + local_c = (**(code **)(DAT_0050a660[1] + local_8 * 4))(local_418); + } + DAT_0050a668 = (int *)local_18; + if (local_c == 0) { + FUN_0049a300(1,s_dpl_LoadObject_failed_to_load_ob_0050aadb); + FUN_004de420(local_14); + if (local_10 != (int *)0x0) { + FUN_004de420(local_10); + } + FUN_004de420(piVar6); + return 0; + } + piVar6[9] = local_c; + if ((param_2 & 1) == 0) { + if (DAT_0050a664 != (int *)0x0) { + DAT_0050a664[10] = (int)piVar6; + } + piVar6[0xb] = (int)DAT_0050a664; + DAT_0050a664 = piVar6; + piVar6[3] = (int)local_10; + FUN_0049a5cc(DAT_0050a654,local_10,piVar6); + } + FUN_00496c6c(local_c,piVar6); + } + if ((piVar6 != (int *)0x0) && ((param_2 & 1) == 0)) { + pcVar5 = local_418; + pcVar4 = param_1; + do { + if (*pcVar4 != *pcVar5) goto LAB_0049874b; + bVar7 = true; + if (*pcVar4 == '\0') break; + pcVar1 = pcVar4 + 1; + if (*pcVar1 != pcVar5[1]) goto LAB_0049874b; + pcVar4 = pcVar4 + 2; + pcVar5 = pcVar5 + 2; + bVar7 = *pcVar1 == '\0'; + } while (!bVar7); + if (!bVar7) { +LAB_0049874b: + pcVar5 = FUN_00402300(param_1); + if (pcVar5 == (char *)0x0) { + FUN_0049a300(1,s_dpl_LoadObject_failed_to_copy_sh_0050ab0b); + } + else { + FUN_00497aa8(piVar6 + 5,(int)pcVar5); + FUN_0049a5cc(DAT_0050a654,pcVar5,piVar6); + } + } + } + } + if (piVar6 == (int *)0x0) { + iVar2 = 0; + } + else { + if ((param_2 & 4) == 0) { + piVar6[6] = piVar6[6] + 1; + } + iVar2 = piVar6[9]; + } + } + return iVar2; +} + + + +/* @004987a4 file=? name=FUN_004987a4 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_004987a4(void) + +{ + int *piVar1; + int *piVar2; + int *piVar3; + int *piVar4; + + if (DAT_0050a654 != (int *)0x0) { + FUN_0049a794(DAT_0050a654); + DAT_0050a654 = (int *)0x0; + } + DAT_0050a658 = 0x209; + piVar4 = DAT_0050a664; + while (piVar4 != (int *)0x0) { + piVar1 = (int *)piVar4[0xb]; + piVar3 = (int *)piVar4[7]; + while (piVar3 != (int *)0x0) { + piVar2 = (int *)piVar3[6]; + if ((int *)*piVar3 != (int *)0x0) { + FUN_004de420((int *)*piVar3); + } + if ((int *)piVar3[1] != (int *)0x0) { + FUN_004de420((int *)piVar3[1]); + } + FUN_004de420(piVar3); + piVar3 = piVar2; + } + piVar3 = (int *)piVar4[8]; + while (piVar3 != (int *)0x0) { + piVar2 = (int *)piVar3[6]; + if ((int *)*piVar3 != (int *)0x0) { + FUN_004de420((int *)*piVar3); + } + if ((int *)piVar3[1] != (int *)0x0) { + FUN_004de420((int *)piVar3[1]); + } + FUN_004de420(piVar3); + piVar3 = piVar2; + } + if ((int *)piVar4[3] != (int *)0x0) { + FUN_004de420((int *)piVar4[3]); + } + if ((int *)piVar4[4] != (int *)0x0) { + FUN_004de420((int *)piVar4[4]); + } + piVar3 = (int *)piVar4[5]; + if (piVar3 != (int *)0x0) { + while (piVar3 != (int *)0x0) { + piVar2 = (int *)piVar3[1]; + FUN_004de420((int *)*piVar3); + FUN_004de420(piVar3); + piVar3 = piVar2; + } + } + FUN_004de420(piVar4); + piVar4 = piVar1; + } + DAT_0050a664 = (int *)0x0; + DAT_0050a668 = 0; + if (DAT_0050a65c != (int *)0x0) { + FUN_00496794(DAT_0050a65c); + DAT_0050a65c = (int *)0x0; + } + if (DAT_0050a660 != (int *)0x0) { + FUN_00496970(DAT_0050a660); + DAT_0050a660 = (int *)0x0; + } + _DAT_0050a66c = 0; + _DAT_0050a670 = 0; + _DAT_0050a674 = 0; + _DAT_0050a678 = 0; + return; +} + + + +/* @004988f8 file=? name=FUN_004988f8 */ + +undefined4 * __cdecl FUN_004988f8(undefined4 *param_1) + +{ + short sVar1; + short sVar2; + short sVar3; + undefined4 uVar4; + byte *pbVar5; + undefined4 *puVar6; + uint uVar7; + uint uVar8; + byte *pbVar9; + short sVar10; + int local_14; + int local_10; + int local_c; + int *local_8; + + uVar4 = FUN_00492cb4(param_1); + sVar1 = (short)uVar4; + FUN_00492ba0(param_1,2); + uVar4 = FUN_00492cb4(param_1); + sVar2 = (short)uVar4; + uVar4 = FUN_00492cb4(param_1); + sVar3 = (short)uVar4; + uVar4 = FUN_00492cb4(param_1); + sVar10 = (short)uVar4; + if (sVar1 == 1) { + FUN_00492ba0(param_1,500); + } + else { + if (sVar1 != 0x101) { + FUN_0049a300(1,s_dpl_sgiRead___not_a_known_SGI_fi_0050aba8); + return (undefined4 *)0x0; + } + FUN_00492ba0(param_1,500); + local_8 = FUN_004de55c((int)sVar3 * (int)sVar10 * 4); + if (local_8 == (int *)0x0) { + FUN_0049a300(1,s_dpl_sgiRead_failed_to_allocate_R_0050ab78); + return (undefined4 *)0x0; + } + FUN_00492df0(param_1,(char *)local_8,(int)sVar3 * (int)sVar10); + } + pbVar5 = (byte *)FUN_004de55c(((int)sVar2 * (int)sVar3 + 0x80) * (int)sVar10); + if (pbVar5 == (byte *)0x0) { + FUN_0049a300(1,s_dpl_sgiRead_could_not_allocate_m_0050abd1); + puVar6 = (undefined4 *)0x0; + } + else { + for (local_c = 0; local_c < sVar10; local_c = local_c + 1) { + for (local_14 = 0; local_14 < sVar3; local_14 = local_14 + 1) { + pbVar9 = pbVar5 + local_14 * (int)sVar2 * (int)sVar10 + (sVar10 - local_c) + -1; + if (sVar1 == 1) { + for (local_10 = 0; local_10 < sVar2; local_10 = local_10 + 1) { + uVar4 = FUN_00492c84(param_1); + *pbVar9 = (byte)uVar4; + pbVar9 = pbVar9 + sVar10; + } + } + else { + FUN_00492c0c(param_1,local_8[sVar3 * local_c + local_14]); + local_10 = 0; + while (local_10 < sVar2) { + uVar7 = FUN_00492c84(param_1); + if ((char)uVar7 != '\0') { + uVar8 = uVar7 & 0x7f; + if ((uVar7 & 0x80) == 0) { + uVar4 = FUN_00492c84(param_1); + while (uVar8 != 0) { + *pbVar9 = (byte)uVar4; + pbVar9 = pbVar9 + sVar10; + uVar8 = uVar8 - 1; + } + } + else { + while (uVar8 != 0) { + uVar4 = FUN_00492c84(param_1); + *pbVar9 = (byte)uVar4; + pbVar9 = pbVar9 + sVar10; + uVar8 = uVar8 - 1; + } + } + local_10 = local_10 + (uVar7 & 0x7f); + } + } + } + } + } + puVar6 = (undefined4 *)FUN_00489788(); + if (puVar6 == (undefined4 *)0x0) { + FUN_0049a300(1,s_dpl_sgiRead_failed_to_create_dpl_0050ac05); + puVar6 = (undefined4 *)0x0; + } + else { + FUN_0048c32c((int)puVar6,(int)sVar2,(int)sVar3); + FUN_0048c3c8((int)puVar6,(int)sVar10); + FUN_0048c548((int)puVar6,pbVar5,0,(int)sVar2 * (int)sVar3); + if (sVar1 == 0x101) { + FUN_004de420(local_8); + } + FUN_004de420((int *)pbVar5); + FUN_0048d5b0(puVar6); + } + } + return puVar6; +} + + + +/* @00498ba4 file=? name=FUN_00498ba4 */ + +undefined4 * __cdecl FUN_00498ba4(LPCSTR param_1) + +{ + undefined4 *puVar1; + int *piVar2; + undefined4 uVar3; + + if (param_1 == (LPCSTR)0x0) { + FUN_0049a300(1,s_dpl_sgiRead_got_no_file_to_open__0050ac2e); + puVar1 = (undefined4 *)0x0; + } + else { + if ((DAT_0050ab74 == (int *)0x0) && + (DAT_0050ab74 = FUN_004de55c(0x4000), DAT_0050ab74 == (int *)0x0)) { + FUN_0049a300(1,s_dpl_sgiRead_failed_to_allocate_r_0050ac4f); + return (undefined4 *)0x0; + } + piVar2 = FUN_004930c0(param_1,0x4000,DAT_0050ab74,0); + if (piVar2 == (int *)0x0) { + FUN_0049a300(1,s_dpl_sgiRead_failed_to_open_file___0050ac7a); + puVar1 = (undefined4 *)0x0; + } + else { + uVar3 = FUN_00492cb4(piVar2); + if ((short)uVar3 == 0x1da) { + puVar1 = FUN_004988f8(piVar2); + FUN_00493188(piVar2); + } + else { + FUN_0049a300(1,s_dpl_sgiRead___s__is_not_a_valid_S_0050aca0); + FUN_00493188(piVar2); + puVar1 = (undefined4 *)0x0; + } + } + } + return puVar1; +} + + + +/* @00498c68 file=? name=FUN_00498c68 */ + +void FUN_00498c68(void) + +{ + if (DAT_0050ab74 != (int *)0x0) { + FUN_004de420(DAT_0050ab74); + DAT_0050ab74 = (int *)0x0; + } + return; +} + + + +/* @00498c84 file=? name=FUN_00498c84 */ + +void __cdecl FUN_00498c84(undefined4 param_1) + +{ + if (DAT_0050ad08 != 0) { + FUN_0049a300(1,s_dpl_SetTexmapFileCacheSize___tex_0050ad1c); + return; + } + DAT_0050ad0c = param_1; + return; +} + + + +/* @00498cb4 file=? name=FUN_00498cb4 */ + +void __cdecl FUN_00498cb4(char *param_1,int param_2) + +{ + int iVar1; + + iVar1 = FUN_004968d8(&DAT_0050ad10,param_1,param_2); + if (iVar1 == 0) { + FUN_0049a300(1,s_dpl_AddToTexmapFilePath_failed_t_0050ad5c); + } + return; +} + + + +/* @00498ce8 file=? name=FUN_00498ce8 */ + +void __cdecl FUN_00498ce8(char *param_1,char *param_2,char *param_3) + +{ + int iVar1; + + iVar1 = FUN_004967b8(&DAT_0050ad10,param_1,param_2,param_3); + if (iVar1 == 0) { + FUN_0049a300(1,s_dpl_SetTexmapFilePath_failed_to_s_0050ad96); + } + return; +} + + + +/* @00498d24 file=? name=FUN_00498d24 */ + +void FUN_00498d24(void) + +{ + FUN_0049680c(DAT_0050ad10); + return; +} + + + +/* @00498d38 file=? name=FUN_00498d38 */ + +void __cdecl FUN_00498d38(char *param_1,undefined4 param_2) + +{ + int iVar1; + + iVar1 = FUN_004969b0(&DAT_0050ad14,param_1,param_2); + if (iVar1 == 0) { + FUN_0049a300(1,s_dpl_SetExtnTexmapLoadFunc_failed_0050add1); + } + return; +} + + + +/* @00498d68 file=? name=FUN_00498d68 */ + +void __cdecl FUN_00498d68(char *param_1) + +{ + FUN_00496b08(DAT_0050ad14,param_1); + return; +} + + + +/* @00498d80 file=? name=FUN_00498d80 */ + +void FUN_00498d80(void) + +{ + FUN_00496b5c(DAT_0050ad14); + return; +} + + + +/* @00498d94 file=? name=FUN_00498d94 */ + +undefined4 __cdecl FUN_00498d94(undefined4 param_1) + +{ + int iVar1; + + iVar1 = FUN_00496cd0(param_1); + if (iVar1 == 0) { + return 0; + } + return *(undefined4 *)(iVar1 + 4); +} + + + +/* @00498db0 file=? name=FUN_00498db0 */ + +void __cdecl FUN_00498db0(undefined4 param_1) + +{ + undefined4 *puVar1; + int iVar2; + int *piVar3; + + piVar3 = (int *)FUN_00496cd0(param_1); + if ((piVar3 != (int *)0x0) && (piVar3[3] = piVar3[3] + -1, piVar3[3] < 1)) { + FUN_0049a300(4,s_unloading_texmap___s___0050ae09); + FUN_00496cf0(piVar3[4]); + if (*piVar3 != 0) { + FUN_0049a610(DAT_0050ad08,*piVar3,0,(undefined4 *)0x0); + FUN_004de420((int *)*piVar3); + } + if ((int *)piVar3[1] != (int *)0x0) { + FUN_004de420((int *)piVar3[1]); + } + puVar1 = (undefined4 *)piVar3[2]; + if (puVar1 != (undefined4 *)0x0) { + for (; puVar1 != (undefined4 *)0x0; puVar1 = (undefined4 *)puVar1[1]) { + FUN_0049a610(DAT_0050ad08,*puVar1,0,(undefined4 *)0x0); + FUN_004de420((int *)*puVar1); + } + FUN_00497a88((int *)piVar3[2]); + } + FUN_0049a300(4,s_deleting_texmap_0x_x__0050ae20); + FUN_004899d8((int *)piVar3[4]); + iVar2 = piVar3[5]; + if ((iVar2 != 0) || (piVar3[6] != 0)) { + if (iVar2 == 0) { + DAT_0050ad18 = piVar3[6]; + } + else { + *(int *)(iVar2 + 0x18) = piVar3[6]; + } + if (piVar3[6] != 0) { + *(int *)(piVar3[6] + 0x14) = piVar3[5]; + } + } + FUN_004de420(piVar3); + } + return; +} + + + +/* @00498eb4 file=? name=FUN_00498eb4 */ + +int __cdecl FUN_00498eb4(char *param_1,uint param_2) + +{ + char *pcVar1; + int iVar2; + uint uVar3; + char *pcVar4; + char *pcVar5; + int *piVar6; + bool bVar7; + char local_414 [1024]; + int *local_14; + int *local_10; + int local_c; + int local_8; + + piVar6 = (int *)0x0; + FUN_0049a300(4,s_load_texmap___s___0050ae36); + if (DAT_0050ad10 == (undefined4 *)0x0) { + FUN_0049a300(1,s_dpl_LoadTexmap___no_texmap_file_p_0050ae48); + iVar2 = 0; + } + else if (DAT_0050ad14 == (undefined4 *)0x0) { + FUN_0049a300(1,s_dpl_LoadTexmap___no_texmap_file_e_0050ae72); + iVar2 = 0; + } + else { + if ((param_2 & 1) == 0) { + if (DAT_0050ad08 == (int *)0x0) { + DAT_0050ad08 = FUN_0049a71c(DAT_0050ad0c,0,0); + if (DAT_0050ad08 == (int *)0x0) { + FUN_0049a300(1,s_dpl_LoadTexmap_failed_to_create_f_0050aea2); + return 0; + } + } + else { + piVar6 = (int *)FUN_0049a584(DAT_0050ad08,param_1); + } + } + if (piVar6 == (int *)0x0) { + uVar3 = FUN_00496684(param_1,DAT_0050ad10,(undefined4 *)*DAT_0050ad14,(undefined4 *)local_414, + 0x400,&local_8); + if (uVar3 == 0) { + return 0; + } + if ((param_2 & 1) == 0) { + piVar6 = (int *)FUN_0049a584(DAT_0050ad08,local_414); + } + if ((piVar6 == (int *)0x0) && ((param_2 & 2) == 0)) { + local_c = 0; + local_10 = (int *)0x0; + piVar6 = FUN_004de2bc(1,0x1c); + if (piVar6 == (int *)0x0) { + FUN_0049a300(1,s_dpl_LoadTexmap_failed_to_allocat_0050aece); + return 0; + } + if (((param_2 & 1) == 0) && + (local_10 = (int *)FUN_00402300(local_414), local_10 == (int *)0x0)) { + FUN_0049a300(1,s_dpl_LoadTexmap_failed_to_copy_lo_0050aef8); + FUN_004de420(piVar6); + return 0; + } + local_14 = (int *)FUN_00402300(param_1); + if (local_14 == (int *)0x0) { + FUN_0049a300(1,s_dpl_LoadTexmap_failed_to_copy_sh_0050af21); + if (local_10 != (int *)0x0) { + FUN_004de420(local_10); + } + FUN_004de420(piVar6); + return 0; + } + piVar6[1] = (int)local_14; + FUN_0049a300(4,s_loading_texmap___s___0050af4b); + if (*(int *)(DAT_0050ad14[1] + local_8 * 4) != 0) { + local_c = (**(code **)(DAT_0050ad14[1] + local_8 * 4))(local_414); + } + if (local_c == 0) { + FUN_0049a300(1,s_dpl_LoadTexmap_failed_to_load_te_0050af60); + FUN_004de420(local_14); + if (local_10 != (int *)0x0) { + FUN_004de420(local_10); + } + FUN_004de420(piVar6); + return 0; + } + piVar6[4] = local_c; + if ((param_2 & 1) == 0) { + if (DAT_0050ad18 != (int *)0x0) { + DAT_0050ad18[5] = (int)piVar6; + } + piVar6[6] = (int)DAT_0050ad18; + DAT_0050ad18 = piVar6; + *piVar6 = (int)local_10; + FUN_0049a5cc(DAT_0050ad08,local_10,piVar6); + } + FUN_00496c6c(local_c,piVar6); + } + if ((piVar6 != (int *)0x0) && ((param_2 & 1) == 0)) { + pcVar5 = local_414; + pcVar4 = param_1; + do { + if (*pcVar4 != *pcVar5) goto LAB_004991a0; + bVar7 = true; + if (*pcVar4 == '\0') break; + pcVar1 = pcVar4 + 1; + if (*pcVar1 != pcVar5[1]) goto LAB_004991a0; + pcVar4 = pcVar4 + 2; + pcVar5 = pcVar5 + 2; + bVar7 = *pcVar1 == '\0'; + } while (!bVar7); + if (!bVar7) { +LAB_004991a0: + pcVar5 = FUN_00402300(param_1); + if (pcVar5 == (char *)0x0) { + FUN_0049a300(1,s_dpl_LoadTexmap_failed_to_copy_sh_0050af90); + } + else { + FUN_00497aa8(piVar6 + 2,(int)pcVar5); + FUN_0049a5cc(DAT_0050ad08,pcVar5,piVar6); + } + } + } + } + if (piVar6 == (int *)0x0) { + iVar2 = 0; + } + else { + if ((param_2 & 4) == 0) { + piVar6[3] = piVar6[3] + 1; + } + iVar2 = piVar6[4]; + } + } + return iVar2; +} + + + +/* @004991f8 file=? name=FUN_004991f8 */ + +void FUN_004991f8(void) + +{ + int *piVar1; + int *piVar2; + int *piVar3; + int *piVar4; + + if (DAT_0050ad08 != (int *)0x0) { + FUN_0049a794(DAT_0050ad08); + DAT_0050ad08 = (int *)0x0; + } + DAT_0050ad0c = 0x3f; + piVar4 = DAT_0050ad18; + while (piVar4 != (int *)0x0) { + piVar1 = (int *)piVar4[6]; + if ((int *)*piVar4 != (int *)0x0) { + FUN_004de420((int *)*piVar4); + } + if ((int *)piVar4[1] != (int *)0x0) { + FUN_004de420((int *)piVar4[1]); + } + piVar2 = (int *)piVar4[2]; + if (piVar2 != (int *)0x0) { + while (piVar2 != (int *)0x0) { + piVar3 = (int *)piVar2[1]; + FUN_004de420((int *)*piVar2); + FUN_004de420(piVar2); + piVar2 = piVar3; + } + } + FUN_004de420(piVar4); + piVar4 = piVar1; + } + DAT_0050ad18 = (int *)0x0; + if (DAT_0050ad10 != (int *)0x0) { + FUN_00496794(DAT_0050ad10); + DAT_0050ad10 = (int *)0x0; + } + if (DAT_0050ad14 != (int *)0x0) { + FUN_00496970(DAT_0050ad14); + DAT_0050ad14 = (int *)0x0; + } + return; +} + + + +/* @004992bc file=? name=FUN_004992bc */ + +undefined4 * __cdecl FUN_004992bc(undefined4 *param_1,int param_2) + +{ + byte bVar1; + undefined4 *puVar2; + uint uVar3; + undefined4 uVar4; + byte *pbVar5; + int unaff_ESI; + int iVar6; + int local_24; + char local_20; + char local_1f [3]; + byte local_1c; + byte local_1b; + undefined1 local_1a; + byte local_19; + byte *local_18; + int local_14; + int local_10; + int local_c; + int local_8; + + if (*(char *)(param_2 + 0x12) == '\x01') { + local_8 = 1; + } + else if ((*(char *)(param_2 + 0x12) == '\b') && (*(char *)(param_2 + 1) == '\0')) { + local_8 = 1; + } + else if (*(char *)(param_2 + 0x12) == ' ') { + local_8 = 4; + } + else { + local_8 = 3; + } + local_18 = (byte *)FUN_004de55c((uint)*(ushort *)(param_2 + 0xe) * + (uint)*(ushort *)(param_2 + 0x10) * local_8); + if (local_18 == (byte *)0x0) { + FUN_0049a300(1,s_dpl_tgaRead_failed_to_allocate_m_0050affc); + puVar2 = (undefined4 *)0x0; + } + else { + bVar1 = *(byte *)(param_2 + 0x13); + if ((bVar1 & 0x20) == 0) { + if ((bVar1 & 0x10) == 0) { + local_c = local_8; + local_10 = 0; + pbVar5 = local_18; + } + else { + local_c = -local_8; + local_10 = (uint)*(ushort *)(param_2 + 0xe) * 2 * local_8; + pbVar5 = local_18 + (*(ushort *)(param_2 + 0xe) - 1) * local_8; + } + } + else if ((bVar1 & 0x10) == 0) { + local_c = local_8; + local_10 = -((uint)*(ushort *)(param_2 + 0xe) * 2 * local_8); + pbVar5 = local_18 + + (uint)*(ushort *)(param_2 + 0xe) * (*(ushort *)(param_2 + 0x10) - 1) * local_8; + } + else { + local_c = -local_8; + local_10 = 0; + pbVar5 = local_18 + + ((uint)*(ushort *)(param_2 + 0xe) * (uint)*(ushort *)(param_2 + 0x10) + -1) * local_8 + ; + } + if (*(byte *)(param_2 + 2) < 4) { + for (local_14 = 0; local_14 < (int)(uint)*(ushort *)(param_2 + 0x10); local_14 = local_14 + 1) + { + bVar1 = *(byte *)(param_2 + 0x12); + if (bVar1 < 0x11) { + if (bVar1 == 0x10) { + for (iVar6 = 0; iVar6 < (int)(uint)*(ushort *)(param_2 + 0xe); iVar6 = iVar6 + 1) { + uVar3 = FUN_00492cb4(param_1); + *pbVar5 = (byte)((int)(uVar3 & 0xffff) >> 7) & 0xf8; + pbVar5[1] = (byte)((int)(uVar3 & 0xffff) >> 2) & 0xf8; + pbVar5[2] = (byte)(uVar3 << 3); + pbVar5 = pbVar5 + local_c; + } + } + else if (bVar1 == 1) { + iVar6 = 0; + while (iVar6 < (int)(uint)*(ushort *)(param_2 + 0xe)) { + uVar4 = FUN_00492c84(param_1); + bVar1 = 0x80; + for (; (bVar1 != 0 && (iVar6 < (int)(uint)*(ushort *)(param_2 + 0xe))); + iVar6 = iVar6 + 1) { + if ((bVar1 & (byte)uVar4) == 0) { + *pbVar5 = 0xff; + } + else { + *pbVar5 = 0; + } + pbVar5 = pbVar5 + local_c; + bVar1 = bVar1 >> 1; + } + } + } + else if (bVar1 == 8) { + if (local_8 == 1) { + for (iVar6 = 0; iVar6 < (int)(uint)*(ushort *)(param_2 + 0xe); iVar6 = iVar6 + 1) { + uVar4 = FUN_00492c84(param_1); + *pbVar5 = (byte)uVar4; + pbVar5 = pbVar5 + local_c; + } + } + else { + for (iVar6 = 0; iVar6 < (int)(uint)*(ushort *)(param_2 + 0xe); iVar6 = iVar6 + 1) { + uVar3 = FUN_00492c84(param_1); + FUN_004d4918((undefined4 *)pbVar5, + (undefined4 *)((uVar3 & 0xff) * 3 + param_2 + 0x14),3); + pbVar5 = pbVar5 + local_c; + } + } + } + } + else if (bVar1 == 0x18) { + for (iVar6 = 0; iVar6 < (int)(uint)*(ushort *)(param_2 + 0xe); iVar6 = iVar6 + 1) { + FUN_00492f10(param_1,(char *)pbVar5,3); + pbVar5 = pbVar5 + local_c; + } + } + else if (bVar1 == 0x20) { + for (iVar6 = 0; iVar6 < (int)(uint)*(ushort *)(param_2 + 0xe); iVar6 = iVar6 + 1) { + FUN_00492f10(param_1,(char *)(pbVar5 + 1),3); + uVar3 = FUN_00492c84(param_1); + if ((uVar3 & 0x80) == 0) { + *pbVar5 = 0xff; + } + else { + *pbVar5 = (char)uVar3 * '\x02'; + } + pbVar5 = pbVar5 + local_c; + } + } + pbVar5 = pbVar5 + local_10; + } + } + else { + for (local_14 = 0; local_14 < (int)(uint)*(ushort *)(param_2 + 0x10); local_14 = local_14 + 1) + { + while (unaff_ESI < (int)(uint)*(ushort *)(param_2 + 0xe)) { + uVar3 = FUN_00492c84(param_1); + local_24 = (uVar3 & 0x7f) + 1; + if ((uVar3 & 0x80) == 0) { + bVar1 = *(byte *)(param_2 + 0x12); + if (bVar1 < 0x11) { + if (bVar1 == 0x10) { + while (local_24 != 0) { + uVar3 = FUN_00492cb4(param_1); + *pbVar5 = (byte)((int)(uVar3 & 0xffff) >> 7) & 0xf8; + pbVar5[1] = (byte)((int)(uVar3 & 0xffff) >> 2) & 0xf8; + pbVar5[2] = (byte)(uVar3 << 3); + pbVar5 = pbVar5 + local_c; + unaff_ESI = unaff_ESI + 1; + local_24 = local_24 + -1; + } + } + else if (bVar1 == 1) { + while (iVar6 = local_24 + -1, local_24 != 0) { + uVar4 = FUN_00492c84(param_1); + local_19 = (byte)uVar4; + bVar1 = 0x80; + for (; (local_24 = iVar6, bVar1 != 0 && + (unaff_ESI < (int)(uint)*(ushort *)(param_2 + 0xe))); + unaff_ESI = unaff_ESI + 1) { + if ((local_19 & bVar1) == 0) { + *pbVar5 = 0xff; + } + else { + *pbVar5 = 0; + } + pbVar5 = pbVar5 + local_c; + bVar1 = bVar1 >> 1; + } + } + } + else if (bVar1 == 8) { + if (local_8 == 1) { + while (local_24 != 0) { + uVar4 = FUN_00492c84(param_1); + *pbVar5 = (byte)uVar4; + pbVar5 = pbVar5 + local_c; + unaff_ESI = unaff_ESI + 1; + local_24 = local_24 + -1; + } + } + else { + while (local_24 != 0) { + uVar3 = FUN_00492c84(param_1); + local_19 = (byte)uVar3; + FUN_004d4918((undefined4 *)pbVar5, + (undefined4 *)((uVar3 & 0xff) * 3 + param_2 + 0x14),3); + pbVar5 = pbVar5 + local_c; + unaff_ESI = unaff_ESI + 1; + local_24 = local_24 + -1; + } + } + } + } + else if (bVar1 == 0x18) { + while (local_24 != 0) { + FUN_00492f10(param_1,(char *)pbVar5,3); + pbVar5 = pbVar5 + local_c; + unaff_ESI = unaff_ESI + 1; + local_24 = local_24 + -1; + } + } + else if (bVar1 == 0x20) { + while (local_24 != 0) { + FUN_00492f10(param_1,(char *)(pbVar5 + 1),3); + uVar3 = FUN_00492c84(param_1); + if ((uVar3 & 0x80) == 0) { + *pbVar5 = 0xff; + } + else { + *pbVar5 = (char)uVar3 * '\x02'; + } + pbVar5 = pbVar5 + local_c; + unaff_ESI = unaff_ESI + 1; + local_24 = local_24 + -1; + } + } + } + else { + bVar1 = *(byte *)(param_2 + 0x12); + if (bVar1 < 0x11) { + if (bVar1 == 0x10) { + uVar3 = FUN_00492cb4(param_1); + local_1c = (byte)((int)(uVar3 & 0xffff) >> 7) & 0xf8; + local_1b = (byte)((int)(uVar3 & 0xffff) >> 2) & 0xf8; + local_1a = (undefined1)(uVar3 << 3); + while (local_24 != 0) { + FUN_004d4918((undefined4 *)pbVar5,(undefined4 *)&local_1c,3); + pbVar5 = pbVar5 + local_c; + unaff_ESI = unaff_ESI + 1; + local_24 = local_24 + -1; + } + } + else if (bVar1 == 1) { + uVar4 = FUN_00492c84(param_1); + local_19 = (byte)uVar4; + while (iVar6 = local_24 + -1, local_24 != 0) { + bVar1 = 0x80; + for (; (local_24 = iVar6, bVar1 != 0 && + (unaff_ESI < (int)(uint)*(ushort *)(param_2 + 0xe))); + unaff_ESI = unaff_ESI + 1) { + if ((local_19 & bVar1) == 0) { + *pbVar5 = 0xff; + } + else { + *pbVar5 = 0; + } + pbVar5 = pbVar5 + local_c; + bVar1 = bVar1 >> 1; + } + } + } + else if (bVar1 == 8) { + uVar4 = FUN_00492c84(param_1); + local_19 = (byte)uVar4; + if (local_8 == 1) { + while (local_24 != 0) { + *pbVar5 = local_19; + pbVar5 = pbVar5 + local_c; + unaff_ESI = unaff_ESI + 1; + local_24 = local_24 + -1; + } + } + else { + while (local_24 != 0) { + FUN_004d4918((undefined4 *)pbVar5, + (undefined4 *)((uint)local_19 * 3 + param_2 + 0x14),3); + pbVar5 = pbVar5 + local_c; + unaff_ESI = unaff_ESI + 1; + local_24 = local_24 + -1; + } + } + } + } + else if (bVar1 == 0x18) { + FUN_00492f10(param_1,(char *)&local_1c,3); + while (local_24 != 0) { + FUN_004d4918((undefined4 *)pbVar5,(undefined4 *)&local_1c,3); + pbVar5 = pbVar5 + local_c; + unaff_ESI = unaff_ESI + 1; + local_24 = local_24 + -1; + } + } + else if (bVar1 == 0x20) { + FUN_00492f10(param_1,local_1f,3); + uVar3 = FUN_00492c84(param_1); + if ((uVar3 & 0x80) == 0) { + local_20 = -1; + } + else { + local_20 = (char)uVar3 * '\x02'; + } + while (local_24 != 0) { + FUN_004d4918((undefined4 *)pbVar5,(undefined4 *)&local_20,4); + pbVar5 = pbVar5 + local_c; + unaff_ESI = unaff_ESI + 1; + local_24 = local_24 + -1; + } + } + } + } + pbVar5 = pbVar5 + local_10; + } + } + puVar2 = (undefined4 *)FUN_00489788(); + if (puVar2 == (undefined4 *)0x0) { + FUN_0049a300(1,s_dpl_tgaRead_failed_to_create_dpl_0050b023); + puVar2 = (undefined4 *)0x0; + } + else { + FUN_0048c32c((int)puVar2,(uint)*(ushort *)(param_2 + 0xe),(uint)*(ushort *)(param_2 + 0x10)); + FUN_0048c3c8((int)puVar2,local_8); + FUN_0048c548((int)puVar2,local_18,0, + (uint)*(ushort *)(param_2 + 0xe) * (uint)*(ushort *)(param_2 + 0x10)); + FUN_004de420((int *)local_18); + FUN_0048d5b0(puVar2); + } + } + return puVar2; +} + + + +/* @00499918 file=? name=FUN_00499918 */ + +undefined4 * __cdecl FUN_00499918(undefined4 *param_1) + +{ + undefined4 uVar1; + undefined4 *puVar2; + int iVar3; + byte *pbVar4; + uint uVar5; + byte local_318; + char local_317; + char local_316; + ushort local_314; + ushort local_312; + char local_310; + undefined2 local_30e; + undefined2 local_30c; + undefined2 local_30a; + undefined2 local_308; + undefined1 local_306; + undefined1 local_305; + byte local_304 [768]; + + uVar1 = FUN_00492c84(param_1); + local_318 = (byte)uVar1; + uVar1 = FUN_00492c84(param_1); + local_317 = (char)uVar1; + uVar1 = FUN_00492c84(param_1); + local_316 = (char)uVar1; + uVar1 = FUN_00492cb4(param_1); + local_314 = (ushort)uVar1; + uVar1 = FUN_00492cb4(param_1); + local_312 = (ushort)uVar1; + uVar1 = FUN_00492c84(param_1); + local_310 = (char)uVar1; + uVar1 = FUN_00492cb4(param_1); + local_30e = (undefined2)uVar1; + uVar1 = FUN_00492cb4(param_1); + local_30c = (undefined2)uVar1; + uVar1 = FUN_00492cb4(param_1); + local_30a = (undefined2)uVar1; + uVar1 = FUN_00492cb4(param_1); + local_308 = (undefined2)uVar1; + uVar1 = FUN_00492c84(param_1); + local_306 = (undefined1)uVar1; + uVar1 = FUN_00492c84(param_1); + local_305 = (undefined1)uVar1; + if ((((local_316 == '\x01') || (local_316 == '\x02')) || (local_316 == '\x03')) || + (((local_316 == '\t' || (local_316 == '\n')) || (local_316 == '\v')))) { + FUN_00492ba0(param_1,(uint)local_318); + if (local_317 != '\0') { + if (local_310 == '\x10') { + uVar5 = (uint)local_314; + pbVar4 = local_304 + uVar5 * 3; + for (; (int)uVar5 < (int)(uint)local_312; uVar5 = uVar5 + 1) { + iVar3 = FUN_00492cb4(param_1); + *pbVar4 = (byte)((short)iVar3 >> 7) & 0xf8; + pbVar4[1] = (byte)((short)iVar3 >> 2) & 0xf8; + pbVar4[2] = (byte)(iVar3 << 3); + pbVar4 = pbVar4 + 3; + } + } + else if (local_310 == '\x18') { + FUN_00492f10(param_1,(char *)(local_304 + (uint)local_314 * 3),(uint)local_312 * 3); + } + } + puVar2 = FUN_004992bc(param_1,(int)&local_318); + } + else { + FUN_0049a300(1,s_dpl_tgaRead___not_a_recognised_i_0050b04c); + puVar2 = (undefined4 *)0x0; + } + return puVar2; +} + + + +/* @00499ab0 file=? name=FUN_00499ab0 */ + +undefined4 * __cdecl FUN_00499ab0(LPCSTR param_1) + +{ + undefined4 *puVar1; + int *piVar2; + + if (param_1 == (LPCSTR)0x0) { + FUN_0049a300(1,s_dpl_tgaRead_got_no_file_to_open__0050b077); + puVar1 = (undefined4 *)0x0; + } + else { + if ((DAT_0050aff8 == (int *)0x0) && + (DAT_0050aff8 = FUN_004de55c(0x4000), DAT_0050aff8 == (int *)0x0)) { + FUN_0049a300(1,s_dpl_tgaRead_failed_to_allocate_r_0050b098); + return (undefined4 *)0x0; + } + piVar2 = FUN_004930c0(param_1,0x4000,DAT_0050aff8,1); + if (piVar2 == (int *)0x0) { + FUN_0049a300(1,s_dpl_tgaRead_failed_to_open_file___0050b0c3); + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_00499918(piVar2); + FUN_00493188(piVar2); + } + } + return puVar1; +} + + + +/* @00499b48 file=? name=FUN_00499b48 */ + +void FUN_00499b48(void) + +{ + if (DAT_0050aff8 != (int *)0x0) { + FUN_004de420(DAT_0050aff8); + DAT_0050aff8 = (int *)0x0; + } + return; +} + + + +/* @00499b64 file=? name=FUN_00499b64 */ + +void * __thiscall FUN_00499b64(void *this,undefined4 *param_1,uint *param_2,uint *param_3) + +{ + uint uVar1; + uint uVar2; + uint uVar3; + void *local_8; + + uVar3 = 0; + uVar1 = FUN_00492cb4(param_1); + uVar2 = (int)(uVar1 & 0xffff) >> 0xc & 0xc; + if (uVar2 == 0) { + uVar3 = FUN_00492c84(param_1); + uVar3 = uVar3 & 0xff; + local_8 = (void *)0x3; + } + else if (uVar2 == 4) { + uVar3 = FUN_00492cb4(param_1); + uVar3 = uVar3 & 0xffff; + local_8 = (void *)0x4; + } + else if (uVar2 == 8) { + uVar3 = FUN_00492d84(param_1); + local_8 = (void *)0x6; + } + else { + FUN_0049a300(1,s_dpl_vtxRead_got_unrecognised_blo_0050b12c); + param_1[2] = 1; + local_8 = this; + } + *param_2 = uVar1 & 0x3fff; + *param_3 = uVar3; + return local_8; +} + + + +/* @00499c0c file=? name=FUN_00499c0c */ + +undefined4 __thiscall FUN_00499c0c(void *this,undefined4 *param_1,int param_2) + +{ + int iVar1; + undefined4 uVar2; + undefined4 *extraout_ECX; + undefined4 *extraout_ECX_00; + undefined4 *extraout_ECX_01; + undefined4 *extraout_ECX_02; + undefined4 *extraout_ECX_03; + undefined4 *extraout_ECX_04; + undefined4 *extraout_ECX_05; + undefined4 *extraout_ECX_06; + int iVar3; + uint local_c; + uint local_8; + + iVar3 = 0; + do { + if ((param_1[2] != 0) || (param_2 <= iVar3)) { + return 1; + } + iVar1 = FUN_00499b64(this,param_1,&local_8,&local_c); + if (param_1[2] != 0) { + return 0; + } + if ((int)local_8 < 0x2005) { + if (local_8 == 0x2004) { + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_01; + } + else if ((local_8 == 0) || (local_8 == 0x2000)) { + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_05; + } + else if (local_8 == 0x2002) { + FUN_00492ba0(param_1,local_c); + this = extraout_ECX; + } + else if (local_8 == 0x2003) { + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_00; + } + else { +LAB_00499d1d: + FUN_0049a300(1,s_dpl_vtxRead_got_unrecognized_blo_0050b18a); + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_06; + } + } + else if (local_8 == 0x2005) { + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_02; + } + else if (local_8 == 0x2006) { + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_03; + } + else if (local_8 == 0x2007) { + this = param_1; + uVar2 = FUN_00492c84(param_1); + if ((char)uVar2 != '\x02') { + FUN_0049a300(1,s_dpl_vtxRead___file_is_not_a_text_0050b15c); + param_1[2] = 1; + return 0; + } + } + else { + if (local_8 != 0x2009) goto LAB_00499d1d; + FUN_00492ba0(param_1,local_c); + this = extraout_ECX_04; + } + iVar3 = iVar3 + iVar1 + local_c; + } while( true ); +} + + + +/* @00499d5c file=? name=FUN_00499d5c */ + +bool __cdecl +FUN_00499d5c(undefined4 *param_1,int param_2,undefined4 param_3,undefined4 param_4,int param_5, + int param_6,int param_7) + +{ + undefined1 uVar1; + int iVar2; + undefined1 *puVar3; + undefined1 *puVar4; + int iVar5; + int iVar6; + undefined1 *local_20; + int local_1c; + int local_18; + int local_10; + int local_c; + int local_8; + + if (param_6 == 0x68) { + local_c = param_5; + } + else if (param_6 == 0x69) { + local_c = param_5 * 2; + } + else if (param_6 == 0x6a) { + local_c = param_5 * 3; + } + else if (param_6 == 0x6b) { + local_c = param_5 << 2; + } + iVar2 = local_c + 7; + if (iVar2 < 0) { + iVar2 = local_c + 0xe; + } + iVar2 = iVar2 >> 3; + FUN_0048c32c(param_2,param_3,param_4); + FUN_0048c3c8(param_2,iVar2); + local_8 = param_7 / iVar2; + if ((*(byte *)(param_1 + 7) & 3) != 0) { + FUN_004d493c((undefined4 *)param_1[6],(undefined4 *)param_1[7],param_1[9]); + param_1[7] = param_1[6]; + } + local_18 = 0; + for (; (param_1[2] == 0 && (0 < local_8)); local_8 = local_8 - local_10) { + if ((int)param_1[9] < iVar2) { + FUN_00492b20(param_1); + } + local_10 = (int)param_1[9] / iVar2; + if (local_8 < local_10) { + local_10 = local_8; + } + local_20 = (undefined1 *)param_1[7]; + local_1c = 0; + if (0 < local_10) { + do { + iVar6 = 0; + iVar5 = iVar2 + -1; + puVar4 = local_20 + iVar5; + puVar3 = local_20; + if (0 < iVar5) { + do { + uVar1 = *puVar3; + *puVar3 = *puVar4; + iVar6 = iVar6 + 1; + puVar3 = puVar3 + 1; + *puVar4 = uVar1; + iVar5 = iVar5 + -1; + puVar4 = puVar4 + -1; + } while (iVar6 < iVar5); + } + local_20 = local_20 + iVar2; + local_1c = local_1c + 1; + } while (local_1c < local_10); + } + FUN_0048c548(param_2,(byte *)param_1[7],local_18,local_10); + FUN_00492ba0(param_1,local_10 * iVar2); + local_18 = local_18 + local_10; + } + if (local_8 >= 1) { + FUN_0049a300(1,s_dpl_vtxRead_failed_to_read_in_al_0050b1c0); + } + return local_8 < 1; +} + + + +/* @00499f10 file=? name=FUN_00499f10 */ + +undefined4 * __cdecl FUN_00499f10(undefined4 *param_1,uint param_2) + +{ + bool bVar1; + undefined4 *puVar2; + int iVar3; + undefined4 *extraout_ECX; + undefined4 *extraout_ECX_00; + undefined4 *extraout_ECX_01; + undefined4 *extraout_ECX_02; + undefined4 *extraout_ECX_03; + undefined4 *extraout_ECX_04; + undefined4 *puVar4; + int iVar5; + int local_14; + int local_10; + uint local_c; + uint local_8; + + iVar5 = 0; + local_10 = 0; + local_14 = 0; + bVar1 = false; + puVar2 = (undefined4 *)FUN_00489788(); + puVar4 = extraout_ECX; + if (puVar2 == (undefined4 *)0x0) { + FUN_0049a300(1,s_dpl_vtxRead_failed_to_create_dpl_0050b1ee); + FUN_00492ba0(param_1,param_2); + puVar2 = (undefined4 *)0x0; + } + else { + for (; (param_1[2] == 0 && (iVar5 < (int)param_2)); iVar5 = iVar5 + iVar3 + local_c) { + iVar3 = FUN_00499b64(puVar4,param_1,&local_8,&local_c); + if (param_1[2] != 0) { + return (undefined4 *)0x0; + } + puVar4 = param_1; + if ((int)local_8 < 0x2061) { + if (local_8 == 0x2060) { + FUN_00492c84(param_1); + } + else { + if (local_8 != 0) { + if (local_8 - 0x68 < 4) { + if ((local_10 < 1) || (local_14 < 1)) { + FUN_0049a300(1,s_dpl_vtxRead_no_texture_size_spec_0050b24a); + FUN_00492ba0(param_1,local_c); + puVar4 = extraout_ECX_02; + } + else if (bVar1) { + FUN_0049a300(1,s_dpl_vtxRead_texels_already_defin_0050b217); + FUN_00492ba0(param_1,local_c); + puVar4 = extraout_ECX_01; + } + else { + FUN_00499d5c(param_1,(int)puVar2,local_10,local_14,8,local_8,local_c); + bVar1 = true; + puVar4 = extraout_ECX_00; + } + goto LAB_0049a099; + } + if (local_8 - 0x68 != 0x1f98) goto LAB_0049a079; + } + FUN_00492ba0(param_1,local_c); + puVar4 = extraout_ECX_03; + } + } + else if (local_8 == 0x2061) { + FUN_00492c84(param_1); + } + else if (local_8 == 0x2062) { + local_10 = FUN_00492d84(param_1); + local_14 = FUN_00492d84(param_1); + } + else { +LAB_0049a079: + FUN_0049a300(1,s_dpl_vtxRead_got_unrecognized_blo_0050b282); + FUN_00492ba0(param_1,local_c); + puVar4 = extraout_ECX_04; + } +LAB_0049a099: + } + FUN_0048d5b0(puVar2); + } + return puVar2; +} + + + +/* @0049a0c0 file=? name=FUN_0049a0c0 */ + +undefined4 * __thiscall FUN_0049a0c0(void *this,undefined4 *param_1) + +{ + bool bVar1; + bool bVar2; + void *this_00; + void *this_01; + void *extraout_ECX; + void *extraout_ECX_00; + void *extraout_ECX_01; + void *extraout_ECX_02; + void *extraout_ECX_03; + void *this_02; + void *extraout_ECX_04; + undefined4 *local_10; + uint local_c; + uint local_8; + + bVar1 = true; + bVar2 = false; + local_10 = (undefined4 *)0x0; + param_1[2] = 0; + FUN_00499b64(this,param_1,&local_8,&local_c); + if (param_1[2] == 0) { + this_02 = this_00; + if (local_8 == 3) { + FUN_00499c0c(this_00,param_1,local_c); + FUN_00499b64(this_01,param_1,&local_8,&local_c); + this_02 = extraout_ECX; + } + while ((param_1[2] == 0 && (bVar1))) { + if (local_8 == 0) { +LAB_0049a17c: + FUN_00492ba0(param_1,local_c); + this_02 = extraout_ECX_02; + } + else if (local_8 == 5) { + bVar1 = false; + } + else if (local_8 == 0x60) { + if (bVar2) { + FUN_0049a300(1,s_dpl_vtxRead_texmap_already_defin_0050b2b8); + FUN_00492ba0(param_1,local_c); + this_02 = extraout_ECX_01; + } + else { + local_10 = FUN_00499f10(param_1,local_c); + bVar2 = true; + this_02 = extraout_ECX_00; + } + } + else { + if (local_8 == 0x2000) goto LAB_0049a17c; + FUN_0049a300(1,s_dpl_vtxRead_got_unrecognized_blo_0050b2dc); + FUN_00492ba0(param_1,local_c); + this_02 = extraout_ECX_03; + } + if (bVar1) { + FUN_00499b64(this_02,param_1,&local_8,&local_c); + this_02 = extraout_ECX_04; + } + } + } + else { + local_10 = (undefined4 *)0x0; + } + return local_10; +} + + + +/* @0049a1dc file=? name=FUN_0049a1dc */ + +undefined4 * __cdecl FUN_0049a1dc(LPCSTR param_1) + +{ + char cVar1; + undefined4 *puVar2; + int *piVar3; + char *pcVar4; + void *extraout_ECX; + void *this; + char *pcVar6; + bool bVar7; + char local_10 [8]; + undefined1 local_8; + undefined3 uVar5; + + if (param_1 == (LPCSTR)0x0) { + FUN_0049a300(1,s_dpl_vtxRead_got_no_file_to_open__0050b318); + puVar2 = (undefined4 *)0x0; + } + else { + if ((DAT_0050b128 == (int *)0x0) && + (DAT_0050b128 = FUN_004de55c(0x4000), DAT_0050b128 == (int *)0x0)) { + FUN_0049a300(1,s_dpl_vtxRead_failed_to_allocate_r_0050b339); + return (undefined4 *)0x0; + } + piVar3 = FUN_004930c0(param_1,0x4000,DAT_0050b128,1); + if (piVar3 == (int *)0x0) { + FUN_0049a300(1,s_dpl_vtxRead_failed_to_open_file___0050b364); + puVar2 = (undefined4 *)0x0; + } + else { + FUN_00492f10(piVar3,local_10,8); + local_8 = 0; + pcVar4 = local_10; + pcVar6 = &DAT_0050b38a; + this = extraout_ECX; + do { + cVar1 = *pcVar4; + uVar5 = (undefined3)((uint)this >> 8); + this = (void *)CONCAT31(uVar5,cVar1); + bVar7 = cVar1 == *pcVar6; + if (!bVar7) break; + if (cVar1 == '\0') goto LAB_0049a2bb; + cVar1 = pcVar4[1]; + this = (void *)CONCAT31(uVar5,cVar1); + bVar7 = cVar1 == pcVar6[1]; + if (!bVar7) break; + pcVar4 = pcVar4 + 2; + pcVar6 = pcVar6 + 2; + bVar7 = cVar1 == '\0'; + } while (!bVar7); + if (bVar7) { +LAB_0049a2bb: + puVar2 = FUN_0049a0c0(this,piVar3); + FUN_00493188(piVar3); + } + else { + FUN_0049a300(1,s_dpl_vtxRead___s__is_not_a_valid_v_0050b393); + FUN_00493188(piVar3); + puVar2 = (undefined4 *)0x0; + } + } + } + return puVar2; +} + + + +/* @0049a2d4 file=? name=FUN_0049a2d4 */ + +void FUN_0049a2d4(void) + +{ + if (DAT_0050b128 != (int *)0x0) { + FUN_004de420(DAT_0050b128); + DAT_0050b128 = (int *)0x0; + } + return; +} + + + +/* @0049a2f0 file=? name=FUN_0049a2f0 */ + +void __cdecl FUN_0049a2f0(undefined4 param_1) + +{ + DAT_0050b3f8 = param_1; + return; +} + + + +/* @0049a300 file=? name=FUN_0049a300 */ + +void __cdecl FUN_0049a300(int param_1,char *param_2) + +{ + if (param_1 <= DAT_00505b54) { + FUN_004d6f80(&DAT_0051f830,s_dPL_Warning___s____0050b446); + FUN_004d8080(&DAT_0051f830,param_2,(uint *)&stack0x0000000c); + FUN_004d6f80(&DAT_0051f830,&DAT_0050b45a); + if (DAT_0050b3f8 != 0) { + FUN_004d6f80(DAT_0050b3f8,s_dPL_Warning___s____0050b45c); + FUN_004d8080(DAT_0050b3f8,param_2,(uint *)&stack0x0000000c); + FUN_004d6f80(DAT_0050b3f8,&DAT_0050b470); + } + } + return; +} + + + +/* @0049a3a8 file=? name=FUN_0049a3a8 */ + +void FUN_0049a3a8(void) + +{ + DAT_0050b3f8 = 0; + return; +} + + + +/* @0049a3b0 file=? name=FUN_0049a3b0 */ + +void __cdecl FUN_0049a3b0(undefined4 *param_1,int param_2,int param_3,int param_4) + +{ + uint uVar1; + + if (param_3 == 0) { + param_3 = 100; + } + if (param_4 == 0) { + param_4 = 4; + } + uVar1 = param_4 + 3U & 0xfffffffc; + *param_1 = 0; + param_1[1] = 0; + param_1[2] = 0; + param_1[3] = 0; + param_1[4] = param_3; + param_1[5] = uVar1; + param_1[6] = (((uVar1 + param_2) - 1) / uVar1) * uVar1; + return; +} + + + +/* @0049a40c file=? name=FUN_0049a40c */ + +void __cdecl FUN_0049a40c(undefined4 *param_1,undefined *param_2) + +{ + undefined4 *puVar1; + + if (param_1 == (undefined4 *)0x0) { + FUN_004debc8(s_cb____NULL_0050b474,s_LIBDU_BALLOC_C_0050b47f,0x70); + } + while (puVar1 = (undefined4 *)*param_1, puVar1 != (undefined4 *)0x0) { + *param_1 = *puVar1; + (*(code *)param_2)(puVar1); + } + return; +} + + + +/* @0049a444 file=? name=FUN_0049a444 */ + +undefined4 * __cdecl FUN_0049a444(undefined4 *param_1,undefined *param_2) + +{ + undefined4 *puVar1; + uint uVar2; + int iVar3; + int iVar4; + + if (param_1 == (undefined4 *)0x0) { + FUN_004debc8(s_cb____NULL_0050b48e,s_LIBDU_BALLOC_C_0050b499,0x87); + } + if ((uint)param_1[2] < (uint)param_1[3]) { + FUN_004debc8(s_cb_>totalItems_>__cb_>freeItems_0050b4a8,s_LIBDU_BALLOC_C_0050b4c8,0x88); + } + if (param_1[1] == 0) { + iVar4 = param_1[4]; + uVar2 = param_1[6]; + puVar1 = (undefined4 *)(*(code *)param_2)(iVar4 * uVar2 + 8); + if (puVar1 == (undefined4 *)0x0) { + return (undefined4 *)0x0; + } + puVar1[1] = iVar4; + *puVar1 = *param_1; + *param_1 = puVar1; + param_1[1] = puVar1 + 2; + param_1[2] = param_1[2] + iVar4; + param_1[3] = param_1[3] + iVar4; + uVar2 = uVar2 >> 2; + iVar3 = 0; + while (iVar4 = iVar4 + -1, iVar4 != 0) { + puVar1[iVar3 + 2] = puVar1 + uVar2 + iVar3 + 2; + iVar3 = iVar3 + uVar2; + } + puVar1[iVar3 + 2] = 0; + } + puVar1 = (undefined4 *)param_1[1]; + param_1[1] = *puVar1; + param_1[3] = param_1[3] + -1; + return puVar1; +} + + + +/* @0049a4f4 file=? name=FUN_0049a4f4 */ + +void __cdecl FUN_0049a4f4(int param_1,undefined4 *param_2) + +{ + if (param_1 == 0) { + FUN_004debc8(s_cb____NULL_0050b4d7,s_LIBDU_BALLOC_C_0050b4e2,0xbd); + } + if (*(uint *)(param_1 + 8) < *(uint *)(param_1 + 0xc)) { + FUN_004debc8(s_cb_>totalItems_>__cb_>freeItems_0050b4f1,s_LIBDU_BALLOC_C_0050b511,0xbe); + } + *param_2 = *(undefined4 *)(param_1 + 4); + *(undefined4 **)(param_1 + 4) = param_2; + *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + 1; + return; +} + + + +/* @0049a548 file=? name=FUN_0049a548 */ + +uint __cdecl FUN_0049a548(char *param_1,uint param_2) + +{ + uint uVar1; + uint uVar2; + + uVar1 = 0; + for (; *param_1 != '\0'; param_1 = param_1 + 1) { + uVar1 = uVar1 * 0x10 + (int)*param_1; + uVar2 = uVar1 & 0xf0000000; + if (uVar2 != 0) { + uVar1 = uVar1 ^ uVar2 >> 0x18 ^ uVar2; + } + } + return uVar1 % param_2; +} + + + +/* @0049a584 file=? name=FUN_0049a584 */ + +undefined4 __cdecl FUN_0049a584(undefined4 *param_1,undefined4 param_2) + +{ + code *pcVar1; + int iVar2; + undefined4 uVar3; + undefined4 *puVar4; + + pcVar1 = (code *)param_1[1]; + iVar2 = (*(code *)*param_1)(param_2,param_1[9]); + for (puVar4 = (undefined4 *)param_1[iVar2 + 10]; puVar4 != (undefined4 *)0x0; + puVar4 = (undefined4 *)*puVar4) { + iVar2 = (*pcVar1)(puVar4[1],param_2); + if (iVar2 == 0) break; + } + if (puVar4 == (undefined4 *)0x0) { + uVar3 = 0; + } + else { + uVar3 = puVar4[2]; + } + return uVar3; +} + + + +/* @0049a5cc file=? name=FUN_0049a5cc */ + +void __cdecl FUN_0049a5cc(undefined4 *param_1,undefined4 param_2,undefined4 param_3) + +{ + int iVar1; + undefined4 *puVar2; + + iVar1 = (*(code *)*param_1)(param_2,param_1[9]); + puVar2 = FUN_0049a444(param_1 + 2,FUN_004de55c); + *puVar2 = param_1[iVar1 + 10]; + puVar2[1] = param_2; + puVar2[2] = param_3; + param_1[iVar1 + 10] = puVar2; + return; +} + + + +/* @0049a610 file=? name=FUN_0049a610 */ + +undefined4 __cdecl +FUN_0049a610(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 *param_4) + +{ + code *pcVar1; + undefined4 uVar2; + undefined4 *puVar3; + undefined4 *puVar4; + undefined4 *puVar5; + int iVar6; + int iVar7; + + pcVar1 = (code *)param_1[1]; + iVar6 = (*(code *)*param_1)(param_2,param_1[9]); + if (param_3 == 0) { + puVar5 = (undefined4 *)param_1[iVar6 + 10]; + puVar4 = (undefined4 *)0x0; + while (puVar3 = puVar5, puVar3 != (undefined4 *)0x0) { + iVar7 = (*pcVar1)(puVar3[1],param_2); + if (iVar7 == 0) { + uVar2 = puVar3[2]; + if (param_4 != (undefined4 *)0x0) { + *param_4 = puVar3[1]; + } + if (puVar4 == (undefined4 *)0x0) { + param_1[iVar6 + 10] = *puVar3; + } + else { + *puVar4 = *puVar3; + } + FUN_0049a4f4((int)(param_1 + 2),puVar3); + return uVar2; + } + puVar4 = puVar3; + puVar5 = (undefined4 *)*puVar3; + } + } + else { + puVar5 = (undefined4 *)param_1[iVar6 + 10]; + puVar4 = (undefined4 *)0x0; + while (puVar3 = puVar5, puVar3 != (undefined4 *)0x0) { + iVar7 = (*pcVar1)(puVar3[1],param_2); + if ((iVar7 == 0) && (param_3 == puVar3[2])) { + uVar2 = puVar3[2]; + if (param_4 != (undefined4 *)0x0) { + *param_4 = puVar3[1]; + } + if (puVar4 == (undefined4 *)0x0) { + param_1[iVar6 + 10] = *puVar3; + } + else { + *puVar4 = *puVar3; + } + FUN_0049a4f4((int)(param_1 + 2),puVar3); + return uVar2; + } + puVar4 = puVar3; + puVar5 = (undefined4 *)*puVar3; + } + } + return 0; +} + + + +/* @0049a71c file=? name=FUN_0049a71c */ + +int * __cdecl FUN_0049a71c(int param_1,int param_2,int param_3) + +{ + int *piVar1; + + piVar1 = FUN_004de55c((param_1 + -1) * 4 + 0x2c); + if (piVar1 == (int *)0x0) { + piVar1 = (int *)0x0; + } + else { + FUN_0049a3b0(piVar1 + 2,0xc,100,0); + piVar1[9] = param_1; + FUN_004d4988(piVar1 + 10,0,param_1 << 2); + if (param_2 == 0) { + *piVar1 = (int)FUN_0049a548; + } + else { + *piVar1 = param_2; + } + if (param_3 == 0) { + piVar1[1] = (int)FUN_004d4a1c; + } + else { + piVar1[1] = param_3; + } + } + return piVar1; +} + + + +/* @0049a794 file=? name=FUN_0049a794 */ + +void __cdecl FUN_0049a794(int *param_1) + +{ + FUN_0049a40c(param_1 + 2,FUN_004de420); + FUN_004de420(param_1); + return; +} + + + +/* @0049a7b8 file=? name=FUN_0049a7b8 */ + +undefined4 __cdecl FUN_0049a7b8(int *param_1,int param_2,undefined4 *param_3) + +{ + int iVar1; + int *piVar2; + + *param_1 = param_2; + iVar1 = 0; + for (piVar2 = (int *)(param_2 + 0x28); (iVar1 < *(int *)(param_2 + 0x24) && (*piVar2 == 0)); + piVar2 = piVar2 + 1) { + iVar1 = iVar1 + 1; + } + if (iVar1 == *(int *)(param_2 + 0x24)) { + param_1[2] = 0; + } + else { + param_1[2] = *(int *)(param_2 + 0x28 + iVar1 * 4); + } + param_1[1] = iVar1; + if (param_1[2] == 0) { + return 0; + } + if (param_3 != (undefined4 *)0x0) { + *param_3 = *(undefined4 *)(param_1[2] + 4); + } + return *(undefined4 *)(param_1[2] + 8); +} + + + +/* @0049a814 file=? name=FUN_0049a814 */ + +undefined4 __cdecl FUN_0049a814(int *param_1,undefined4 *param_2) + +{ + int iVar1; + int iVar2; + undefined4 uVar3; + int *piVar4; + + iVar1 = *param_1; + iVar2 = *(int *)param_1[2]; + if (iVar2 == 0) { + iVar2 = param_1[1] + 1; + for (piVar4 = (int *)(iVar1 + 0x28 + iVar2 * 4); + (iVar2 < *(int *)(iVar1 + 0x24) && (*piVar4 == 0)); piVar4 = piVar4 + 1) { + iVar2 = iVar2 + 1; + } + if (iVar2 == *(int *)(iVar1 + 0x24)) { + param_1[2] = 0; + } + else { + param_1[2] = *(int *)(iVar1 + 0x28 + iVar2 * 4); + } + param_1[1] = iVar2; + if (param_1[2] == 0) { + uVar3 = 0; + } + else { + if (param_2 != (undefined4 *)0x0) { + *param_2 = *(undefined4 *)(param_1[2] + 4); + } + uVar3 = *(undefined4 *)(param_1[2] + 8); + } + } + else { + param_1[2] = iVar2; + if (param_2 != (undefined4 *)0x0) { + *param_2 = *(undefined4 *)(iVar2 + 4); + } + uVar3 = *(undefined4 *)(param_1[2] + 8); + } + return uVar3; +} + + + +/* @0049a88c file=? name=FUN_0049a88c */ + +void __cdecl FUN_0049a88c(int *param_1,undefined4 param_2) + +{ + int iVar1; + int iVar2; + + iVar1 = *param_1; + do { + iVar2 = iVar1; + iVar1 = *(int *)(iVar2 + 0xc); + } while (iVar1 != 0); + *(undefined4 *)(iVar2 + 0xc) = param_2; + return; +} + + + +/* @0049a8a8 file=? name=FUN_0049a8a8 */ + +int __cdecl FUN_0049a8a8(int param_1,int param_2,int param_3) + +{ + int iVar1; + int iVar2; + int iVar3; + int iVar4; + + iVar4 = param_2; + do { + iVar2 = iVar4; + iVar4 = *(int *)(iVar2 + 0xc); + } while (iVar4 != 0); + iVar4 = 0; + iVar1 = param_1; + if (param_3 == 0) { + while (((iVar3 = iVar1, iVar3 != 0 && (*(int *)(iVar3 + 4) != 1)) && (*(int *)(iVar3 + 4) != 2)) + ) { + iVar4 = iVar3; + iVar1 = *(int *)(iVar3 + 0xc); + } + } + else if (param_3 == 1) { + while ((iVar3 = iVar1, iVar3 != 0 && (*(int *)(iVar3 + 4) != 2))) { + iVar4 = iVar3; + iVar1 = *(int *)(iVar3 + 0xc); + } + } + else { + iVar3 = param_1; + if (param_3 == 2) { + for (; iVar3 = 0, iVar1 != 0; iVar1 = *(int *)(iVar1 + 0xc)) { + iVar4 = iVar1; + } + } + } + if (iVar4 != 0) { + *(int *)(iVar4 + 0xc) = param_2; + param_2 = param_1; + } + *(int *)(iVar2 + 0xc) = iVar3; + return param_2; +} + + + +/* @0049a920 file=? name=FUN_0049a920 */ + +int * __cdecl FUN_0049a920(char *param_1) + +{ + char cVar1; + int iVar2; + int *piVar3; + uint uVar4; + uint uVar5; + int *piVar6; + char *pcVar7; + int *piVar8; + + iVar2 = FUN_004d4a78(param_1); + piVar3 = FUN_004de55c(iVar2 + 1); + if (piVar3 != (int *)0x0) { + uVar4 = 0xffffffff; + do { + pcVar7 = param_1; + if (uVar4 == 0) break; + uVar4 = uVar4 - 1; + pcVar7 = param_1 + 1; + cVar1 = *param_1; + param_1 = pcVar7; + } while (cVar1 != '\0'); + uVar4 = ~uVar4; + piVar6 = (int *)(pcVar7 + -uVar4); + piVar8 = piVar3; + for (uVar5 = uVar4 >> 2; uVar5 != 0; uVar5 = uVar5 - 1) { + *piVar8 = *piVar6; + piVar6 = piVar6 + 1; + piVar8 = piVar8 + 1; + } + for (uVar4 = uVar4 & 3; uVar4 != 0; uVar4 = uVar4 - 1) { + *(char *)piVar8 = (char)*piVar6; + piVar6 = (int *)((int)piVar6 + 1); + piVar8 = (int *)((int)piVar8 + 1); + } + } + return piVar3; +} + + + +/* @0049a968 file=? name=FUN_0049a968 */ + +void __cdecl FUN_0049a968(char *param_1) + +{ + uint uVar1; + + if (param_1 != (char *)0x0) { + for (; *param_1 != '\0'; param_1 = param_1 + 1) { + uVar1 = FUN_004dc89c((int)*param_1); + *param_1 = (char)uVar1; + } + } + return; +} + + + +/* @0049a990 file=? name=FUN_0049a990 */ + +void FUN_0049a990(void) + +{ + FUN_004d8e80(); + return; +} + + + +/* @0049a99c file=? name=FUN_0049a99c */ + +void __cdecl FUN_0049a99c(char param_1,int *param_2) + +{ + uint uVar1; + char *pcVar2; + int iVar3; + + if (((&DAT_005207dd)[param_1] & 0xc) == 0) { + FUN_004d7388(param_2,0x7fe); + *(undefined1 *)((int)param_2 + 2) = 0x2f; + } + else { + uVar1 = FUN_004dc89c((int)param_1); + *(char *)param_2 = (char)uVar1; + *(undefined1 *)((int)param_2 + 1) = 0x3a; + *(undefined1 *)((int)param_2 + 2) = 0x2f; + FUN_004d8ce0((char)uVar1 + -0x60,(int *)((int)param_2 + 3)); + } + pcVar2 = (char *)((int)param_2 + 2); + while( true ) { + pcVar2 = FUN_004d49f4(pcVar2,'\\'); + if (pcVar2 == (char *)0x0) break; + *pcVar2 = '/'; + pcVar2 = pcVar2 + 1; + } + iVar3 = FUN_004d4a78((char *)param_2); + if ((0 < iVar3) && (*(char *)((int)param_2 + iVar3 + -1) != '/')) { + *(undefined1 *)((int)param_2 + iVar3) = 0x2f; + *(undefined1 *)((int)param_2 + iVar3 + 1) = 0; + } + return; +} + + + +/* @0049aa2c file=? name=FUN_0049aa2c */ + +char * __cdecl FUN_0049aa2c(char *param_1) + +{ + char cVar1; + char *pcVar2; + char *pcVar3; + char *pcVar4; + uint uVar5; + uint uVar6; + char *pcVar7; + undefined1 local_804 [2048]; + + pcVar2 = param_1; + while (pcVar2 = FUN_004d49f4(pcVar2,'\\'), pcVar2 != (char *)0x0) { + *pcVar2 = '/'; + pcVar2 = pcVar2 + 1; + } + pcVar2 = param_1 + 1; + pcVar3 = (char *)0x0; + while (pcVar2 = FUN_004d49f4(pcVar2 + 1,':'), pcVar2 != (char *)0x0) { + if (((&DAT_005207dd)[pcVar2[-1]] & 0xc) != 0) { + pcVar3 = pcVar2; + } + } + pcVar2 = param_1; + pcVar4 = param_1; + if (pcVar3 != (char *)0x0) { + pcVar2 = pcVar3 + -1; + pcVar4 = pcVar2; + } + while (pcVar3 = FUN_004d49f4(pcVar2,'/'), pcVar3 != (char *)0x0) { + if (pcVar3[1] == '/') { + if (pcVar4[1] == ':') { + pcVar3[-1] = *pcVar4; + *pcVar3 = ':'; + pcVar2 = pcVar3 + -1; + pcVar4 = pcVar3 + -1; + } + else { + pcVar2 = pcVar3 + 1; + pcVar4 = pcVar3 + 1; + } + } + else { + pcVar2 = pcVar3 + 1; + } + } + if ((*pcVar4 == '/') || (pcVar4[1] == ':')) { + if ((pcVar4[1] == ':') && (pcVar4[2] != '/')) { + FUN_0049a99c(*pcVar4,(int *)local_804); + FUN_004d49b8(local_804,pcVar4 + 2); + } + else if (*pcVar4 == '/') { + local_804[0] = FUN_0049a990(); + local_804[0] = local_804[0] + 'a'; + local_804[1] = 0x3a; + uVar5 = 0xffffffff; + do { + pcVar2 = pcVar4; + if (uVar5 == 0) break; + uVar5 = uVar5 - 1; + pcVar2 = pcVar4 + 1; + cVar1 = *pcVar4; + pcVar4 = pcVar2; + } while (cVar1 != '\0'); + uVar5 = ~uVar5; + pcVar2 = pcVar2 + -uVar5; + pcVar3 = local_804 + 2; + for (uVar6 = uVar5 >> 2; uVar6 != 0; uVar6 = uVar6 - 1) { + *(undefined4 *)pcVar3 = *(undefined4 *)pcVar2; + pcVar2 = pcVar2 + 4; + pcVar3 = pcVar3 + 4; + } + for (uVar5 = uVar5 & 3; uVar5 != 0; uVar5 = uVar5 - 1) { + *pcVar3 = *pcVar2; + pcVar2 = pcVar2 + 1; + pcVar3 = pcVar3 + 1; + } + } + else { + uVar5 = 0xffffffff; + do { + pcVar2 = pcVar4; + if (uVar5 == 0) break; + uVar5 = uVar5 - 1; + pcVar2 = pcVar4 + 1; + cVar1 = *pcVar4; + pcVar4 = pcVar2; + } while (cVar1 != '\0'); + uVar5 = ~uVar5; + pcVar2 = pcVar2 + -uVar5; + pcVar3 = local_804; + for (uVar6 = uVar5 >> 2; uVar6 != 0; uVar6 = uVar6 - 1) { + *(undefined4 *)pcVar3 = *(undefined4 *)pcVar2; + pcVar2 = pcVar2 + 4; + pcVar3 = pcVar3 + 4; + } + for (uVar5 = uVar5 & 3; uVar5 != 0; uVar5 = uVar5 - 1) { + *pcVar3 = *pcVar2; + pcVar2 = pcVar2 + 1; + pcVar3 = pcVar3 + 1; + } + } + } + else { + FUN_0049a99c('\0',(int *)local_804); + FUN_004d49b8(local_804,pcVar4); + } + pcVar2 = local_804; + pcVar3 = (char *)0x0; + while (pcVar4 = FUN_004d49f4(pcVar2,'/'), pcVar4 != (char *)0x0) { + if ((((pcVar4[1] == '.') && (pcVar4[2] == '.')) && (pcVar4[3] == '/')) && + (pcVar3 != (char *)0x0)) { + uVar5 = 0xffffffff; + pcVar2 = pcVar4 + 3; + do { + pcVar4 = pcVar2; + if (uVar5 == 0) break; + uVar5 = uVar5 - 1; + pcVar4 = pcVar2 + 1; + cVar1 = *pcVar2; + pcVar2 = pcVar4; + } while (cVar1 != '\0'); + uVar5 = ~uVar5; + pcVar2 = pcVar4 + -uVar5; + pcVar4 = param_1; + for (uVar6 = uVar5 >> 2; uVar6 != 0; uVar6 = uVar6 - 1) { + *(undefined4 *)pcVar4 = *(undefined4 *)pcVar2; + pcVar2 = pcVar2 + 4; + pcVar4 = pcVar4 + 4; + } + for (uVar5 = uVar5 & 3; uVar5 != 0; uVar5 = uVar5 - 1) { + *pcVar4 = *pcVar2; + pcVar2 = pcVar2 + 1; + pcVar4 = pcVar4 + 1; + } + uVar5 = 0xffffffff; + pcVar2 = param_1; + do { + pcVar4 = pcVar2; + if (uVar5 == 0) break; + uVar5 = uVar5 - 1; + pcVar4 = pcVar2 + 1; + cVar1 = *pcVar2; + pcVar2 = pcVar4; + } while (cVar1 != '\0'); + uVar5 = ~uVar5; + pcVar2 = pcVar4 + -uVar5; + for (uVar6 = uVar5 >> 2; uVar6 != 0; uVar6 = uVar6 - 1) { + *(undefined4 *)pcVar3 = *(undefined4 *)pcVar2; + pcVar2 = pcVar2 + 4; + pcVar3 = pcVar3 + 4; + } + for (uVar5 = uVar5 & 3; uVar5 != 0; uVar5 = uVar5 - 1) { + *pcVar3 = *pcVar2; + pcVar2 = pcVar2 + 1; + pcVar3 = pcVar3 + 1; + } + pcVar2 = local_804; + pcVar3 = (char *)0x0; + } + else if ((pcVar4[1] == '.') && (pcVar4[2] == '/')) { + uVar5 = 0xffffffff; + pcVar2 = pcVar4 + 2; + do { + pcVar7 = pcVar2; + if (uVar5 == 0) break; + uVar5 = uVar5 - 1; + pcVar7 = pcVar2 + 1; + cVar1 = *pcVar2; + pcVar2 = pcVar7; + } while (cVar1 != '\0'); + uVar5 = ~uVar5; + pcVar2 = pcVar7 + -uVar5; + pcVar7 = param_1; + for (uVar6 = uVar5 >> 2; uVar6 != 0; uVar6 = uVar6 - 1) { + *(undefined4 *)pcVar7 = *(undefined4 *)pcVar2; + pcVar2 = pcVar2 + 4; + pcVar7 = pcVar7 + 4; + } + for (uVar5 = uVar5 & 3; uVar5 != 0; uVar5 = uVar5 - 1) { + *pcVar7 = *pcVar2; + pcVar2 = pcVar2 + 1; + pcVar7 = pcVar7 + 1; + } + uVar5 = 0xffffffff; + pcVar2 = param_1; + do { + pcVar7 = pcVar2; + if (uVar5 == 0) break; + uVar5 = uVar5 - 1; + pcVar7 = pcVar2 + 1; + cVar1 = *pcVar2; + pcVar2 = pcVar7; + } while (cVar1 != '\0'); + uVar5 = ~uVar5; + pcVar7 = pcVar7 + -uVar5; + for (uVar6 = uVar5 >> 2; uVar6 != 0; uVar6 = uVar6 - 1) { + *(undefined4 *)pcVar4 = *(undefined4 *)pcVar7; + pcVar7 = pcVar7 + 4; + pcVar4 = pcVar4 + 4; + } + for (uVar5 = uVar5 & 3; pcVar2 = pcVar3, uVar5 != 0; uVar5 = uVar5 - 1) { + *pcVar4 = *pcVar7; + pcVar7 = pcVar7 + 1; + pcVar4 = pcVar4 + 1; + } + } + else { + pcVar2 = pcVar4 + 1; + pcVar3 = pcVar4; + } + } + FUN_0049a968(local_804); + uVar5 = 0xffffffff; + pcVar2 = local_804; + do { + pcVar3 = pcVar2; + if (uVar5 == 0) break; + uVar5 = uVar5 - 1; + pcVar3 = pcVar2 + 1; + cVar1 = *pcVar2; + pcVar2 = pcVar3; + } while (cVar1 != '\0'); + uVar5 = ~uVar5; + pcVar2 = pcVar3 + -uVar5; + pcVar3 = param_1; + for (uVar6 = uVar5 >> 2; uVar6 != 0; uVar6 = uVar6 - 1) { + *(undefined4 *)pcVar3 = *(undefined4 *)pcVar2; + pcVar2 = pcVar2 + 4; + pcVar3 = pcVar3 + 4; + } + for (uVar5 = uVar5 & 3; uVar5 != 0; uVar5 = uVar5 - 1) { + *pcVar3 = *pcVar2; + pcVar2 = pcVar2 + 1; + pcVar3 = pcVar3 + 1; + } + return param_1; +} + + + +/* @0049acb0 file=? name=FUN_0049acb0 */ + +int * __cdecl FUN_0049acb0(char *param_1) + +{ + char cVar1; + int iVar2; + int *piVar3; + uint uVar4; + uint uVar5; + int *piVar6; + char *pcVar7; + int *piVar8; + + iVar2 = FUN_004d4a78(param_1); + piVar3 = FUN_004de55c(iVar2 + 1); + if (piVar3 == (int *)0x0) { + piVar3 = (int *)&DAT_0050b52a; + } + else { + uVar4 = 0xffffffff; + do { + pcVar7 = param_1; + if (uVar4 == 0) break; + uVar4 = uVar4 - 1; + pcVar7 = param_1 + 1; + cVar1 = *param_1; + param_1 = pcVar7; + } while (cVar1 != '\0'); + uVar4 = ~uVar4; + piVar6 = (int *)(pcVar7 + -uVar4); + piVar8 = piVar3; + for (uVar5 = uVar4 >> 2; uVar5 != 0; uVar5 = uVar5 - 1) { + *piVar8 = *piVar6; + piVar6 = piVar6 + 1; + piVar8 = piVar8 + 1; + } + for (uVar4 = uVar4 & 3; uVar4 != 0; uVar4 = uVar4 - 1) { + *(char *)piVar8 = (char)*piVar6; + piVar6 = (int *)((int)piVar6 + 1); + piVar8 = (int *)((int)piVar8 + 1); + } + } + return piVar3; +} + + + +/* @0049ad00 file=? name=FUN_0049ad00 */ + +int * __cdecl FUN_0049ad00(char *param_1,char *param_2,int param_3) + +{ + char cVar1; + int *piVar2; + int *piVar3; + int *piVar4; + int *piVar5; + int *piVar6; + int iVar7; + int iVar8; + int *piVar9; + uint uVar10; + uint uVar11; + char *pcVar12; + undefined4 *puVar13; + char *pcVar14; + int *piVar15; + undefined4 *puVar16; + bool bVar17; + int *local_10; + int *local_c; + + local_c = (int *)0x0; + local_10 = (int *)0x0; + piVar2 = FUN_0049a920(param_1); + if (piVar2 == (int *)0x0) { + FUN_004d6f80(&DAT_0051f830,s_du___path_searching___out_of_mem_0050b52b); + piVar3 = (int *)0x0; + } + else { + piVar4 = (int *)FUN_004d4d1c((char *)piVar2,&DAT_0050b550); + piVar3 = local_c; + while (piVar4 != (int *)0x0) { + bVar17 = (char)*piVar4 == '~'; + piVar5 = piVar4; + if (bVar17) { + piVar5 = FUN_0049acb0((char *)piVar4); + } + piVar6 = FUN_004de55c(0x10); + if (piVar6 == (int *)0x0) { + FUN_004d6f80(&DAT_0051f830,s_du___path_searching___out_of_mem_0050b552); + return (int *)0x0; + } + if (param_2 == (char *)0x0) { + iVar7 = FUN_004d4a78((char *)piVar5); + piVar9 = FUN_004de55c(iVar7 + 1); + *piVar6 = (int)piVar9; + } + else { + iVar7 = FUN_004d4a78(param_2); + iVar8 = FUN_004d4a78((char *)piVar5); + piVar9 = FUN_004de55c(iVar7 + iVar8 + 2); + *piVar6 = (int)piVar9; + } + if (*piVar6 == 0) { + FUN_004d6f80(&DAT_0051f830,s_du___path_searching___out_of_mem_0050b577); + FUN_004de420(piVar2); + return (int *)0x0; + } + if (param_2 == (char *)0x0) { + uVar10 = 0xffffffff; + piVar9 = piVar5; + do { + piVar15 = piVar9; + if (uVar10 == 0) break; + uVar10 = uVar10 - 1; + piVar15 = (int *)((int)piVar9 + 1); + iVar7 = *piVar9; + piVar9 = piVar15; + } while ((char)iVar7 != '\0'); + uVar10 = ~uVar10; + puVar13 = (undefined4 *)((int)piVar15 - uVar10); + puVar16 = (undefined4 *)*piVar6; + for (uVar11 = uVar10 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) { + *puVar16 = *puVar13; + puVar13 = puVar13 + 1; + puVar16 = puVar16 + 1; + } + for (uVar10 = uVar10 & 3; uVar10 != 0; uVar10 = uVar10 - 1) { + *(undefined1 *)puVar16 = *(undefined1 *)puVar13; + puVar13 = (undefined4 *)((int)puVar13 + 1); + puVar16 = (undefined4 *)((int)puVar16 + 1); + } + } + else { + uVar10 = 0xffffffff; + pcVar12 = param_2; + do { + pcVar14 = pcVar12; + if (uVar10 == 0) break; + uVar10 = uVar10 - 1; + pcVar14 = pcVar12 + 1; + cVar1 = *pcVar12; + pcVar12 = pcVar14; + } while (cVar1 != '\0'); + uVar10 = ~uVar10; + pcVar12 = pcVar14 + -uVar10; + pcVar14 = (char *)*piVar6; + for (uVar11 = uVar10 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) { + *(undefined4 *)pcVar14 = *(undefined4 *)pcVar12; + pcVar12 = pcVar12 + 4; + pcVar14 = pcVar14 + 4; + } + for (uVar10 = uVar10 & 3; uVar10 != 0; uVar10 = uVar10 - 1) { + *pcVar14 = *pcVar12; + pcVar12 = pcVar12 + 1; + pcVar14 = pcVar14 + 1; + } + FUN_004d49b8((char *)*piVar6,&DAT_0050b59c); + FUN_004d49b8((char *)*piVar6,(char *)piVar5); + } + piVar6[1] = param_3; + piVar4 = FUN_0049a920((char *)piVar4); + piVar6[2] = (int)piVar4; + piVar6[3] = 0; + if (bVar17) { + FUN_004de420(piVar5); + } + local_c = piVar6; + if (piVar3 != (int *)0x0) { + local_10[3] = (int)piVar6; + local_c = piVar3; + } + piVar4 = (int *)FUN_004d4d1c((char *)0x0,&DAT_0050b59e); + piVar3 = local_c; + local_10 = piVar6; + } + FUN_004de420(piVar2); + } + return piVar3; +} + + + +/* @0049aed8 file=? name=FUN_0049aed8 */ + +int * __cdecl FUN_0049aed8(char *param_1,char *param_2) + +{ + int *piVar1; + char *pcVar2; + int *piVar3; + int iVar4; + int *piVar5; + int *piVar6; + int local_c; + int *local_8; + + piVar1 = FUN_0049a920(param_2); + if (piVar1 == (int *)0x0) { + FUN_004d6f80(&DAT_0051f830,s_du___path_searching___out_of_mem_0050b5a0); + local_8 = (int *)0x0; + } + else { + piVar5 = (int *)0x0; + iVar4 = 0; + pcVar2 = FUN_004d4d1c((char *)piVar1,&DAT_0050b5c5); + while (pcVar2 != (char *)0x0) { + if (iVar4 == 0) { + piVar5 = FUN_004de55c(4); + } + else { + piVar5 = FUN_004de760(piVar5,(iVar4 + 1) * 4); + } + if (piVar5 == (int *)0x0) { + FUN_004d6f80(&DAT_0051f830,s_du___path_searching___out_of_mem_0050b5c7); + return (int *)0x0; + } + piVar5[iVar4] = (int)pcVar2; + iVar4 = iVar4 + 1; + pcVar2 = FUN_004d4d1c((char *)0x0,&DAT_0050b5ec); + } + if (iVar4 == 0) { + local_8 = (int *)0x0; + } + else { + local_8 = (int *)0x0; + local_c = 0; + piVar6 = piVar5; + if (0 < iVar4) { + do { + piVar3 = FUN_0049ad00(param_1,(char *)*piVar6,2); + if (local_8 != (int *)0x0) { + FUN_0049a88c((int *)&local_8,piVar3); + piVar3 = local_8; + } + local_8 = piVar3; + local_c = local_c + 1; + piVar6 = piVar6 + 1; + } while (local_c < iVar4); + } + FUN_004de420(piVar5); + FUN_004de420(piVar1); + } + } + return local_8; +} + + + +/* @0049afe8 file=? name=FUN_0049afe8 */ + +bool __cdecl +FUN_0049afe8(LPCSTR param_1,int param_2,char *param_3,undefined4 param_4,undefined4 *param_5) + +{ + int *piVar1; + + piVar1 = FUN_004d6f54(param_1,param_3); + *param_5 = piVar1; + if ((piVar1 != (int *)0x0) && (param_2 == 0)) { + FUN_004d6b08((int *)*param_5); + } + return piVar1 != (int *)0x0; +} + + + +/* @0049b028 file=? name=FUN_0049b028 */ + +uint __cdecl +FUN_0049b028(char *param_1,undefined4 *param_2,int *param_3,int param_4,char *param_5, + undefined4 param_6,undefined4 *param_7) + +{ + char cVar1; + bool bVar2; + int iVar3; + undefined3 extraout_var; + undefined3 extraout_var_00; + uint uVar4; + uint uVar5; + char *pcVar6; + char *pcVar7; + int local_c; + + uVar5 = 0; + if (param_2 == (undefined4 *)0x0) { + bVar2 = FUN_0049afe8(param_1,param_4,param_5,param_6,param_7); + uVar5 = CONCAT31(extraout_var_00,bVar2); + } + else { + iVar3 = FUN_004d4a78(param_1); + local_c = 0; + while (((char *)*param_2 != (char *)0x0 && (uVar5 == 0))) { + uVar5 = 0xffffffff; + pcVar6 = (char *)*param_2; + do { + pcVar7 = pcVar6; + if (uVar5 == 0) break; + uVar5 = uVar5 - 1; + pcVar7 = pcVar6 + 1; + cVar1 = *pcVar6; + pcVar6 = pcVar7; + } while (cVar1 != '\0'); + uVar5 = ~uVar5; + pcVar6 = pcVar7 + -uVar5; + pcVar7 = param_1 + iVar3; + for (uVar4 = uVar5 >> 2; uVar4 != 0; uVar4 = uVar4 - 1) { + *(undefined4 *)pcVar7 = *(undefined4 *)pcVar6; + pcVar6 = pcVar6 + 4; + pcVar7 = pcVar7 + 4; + } + for (uVar5 = uVar5 & 3; uVar5 != 0; uVar5 = uVar5 - 1) { + *pcVar7 = *pcVar6; + pcVar6 = pcVar6 + 1; + pcVar7 = pcVar7 + 1; + } + bVar2 = FUN_0049afe8(param_1,param_4,param_5,param_6,param_7); + uVar5 = CONCAT31(extraout_var,bVar2); + if (uVar5 != 0) { + *param_3 = local_c; + } + local_c = local_c + 1; + param_2 = param_2 + 1; + } + } + return uVar5; +} + + + +/* @0049b0dc file=? name=FUN_0049b0dc */ + +uint __cdecl +FUN_0049b0dc(char *param_1,undefined4 *param_2,undefined4 *param_3,int param_4,char *param_5, + undefined4 param_6,undefined4 *param_7,undefined4 *param_8,uint param_9,int *param_10, + int param_11) + +{ + char cVar1; + bool bVar2; + int iVar3; + uint uVar4; + int *piVar5; + uint uVar6; + char *pcVar7; + int *piVar8; + int *piVar9; + char *pcVar10; + char local_808 [2048]; + int local_8; + + bVar2 = true; + if ((param_1 == (char *)0x0) || (param_2 == (undefined4 *)0x0)) { + uVar4 = 0; + } + else { + if (*param_1 == '~') { + piVar5 = FUN_0049acb0(param_1); + uVar4 = 0xffffffff; + piVar8 = piVar5; + do { + piVar9 = piVar8; + if (uVar4 == 0) break; + uVar4 = uVar4 - 1; + piVar9 = (int *)((int)piVar8 + 1); + iVar3 = *piVar8; + piVar8 = piVar9; + } while ((char)iVar3 != '\0'); + uVar4 = ~uVar4; + pcVar7 = (char *)((int)piVar9 - uVar4); + pcVar10 = local_808; + for (uVar6 = uVar4 >> 2; uVar6 != 0; uVar6 = uVar6 - 1) { + *(undefined4 *)pcVar10 = *(undefined4 *)pcVar7; + pcVar7 = pcVar7 + 4; + pcVar10 = pcVar10 + 4; + } + for (uVar4 = uVar4 & 3; uVar4 != 0; uVar4 = uVar4 - 1) { + *pcVar10 = *pcVar7; + pcVar7 = pcVar7 + 1; + pcVar10 = pcVar10 + 1; + } + FUN_004de420(piVar5); + bVar2 = false; + } + else if ((param_1[1] == ':') && (((&DAT_005207dd)[*param_1] & 0xc) != 0)) { + uVar4 = 0xffffffff; + pcVar7 = param_1; + do { + pcVar10 = pcVar7; + if (uVar4 == 0) break; + uVar4 = uVar4 - 1; + pcVar10 = pcVar7 + 1; + cVar1 = *pcVar7; + pcVar7 = pcVar10; + } while (cVar1 != '\0'); + uVar4 = ~uVar4; + pcVar7 = pcVar10 + -uVar4; + pcVar10 = local_808; + for (uVar6 = uVar4 >> 2; uVar6 != 0; uVar6 = uVar6 - 1) { + *(undefined4 *)pcVar10 = *(undefined4 *)pcVar7; + pcVar7 = pcVar7 + 4; + pcVar10 = pcVar10 + 4; + } + for (uVar4 = uVar4 & 3; uVar4 != 0; uVar4 = uVar4 - 1) { + *pcVar10 = *pcVar7; + pcVar7 = pcVar7 + 1; + pcVar10 = pcVar10 + 1; + } + bVar2 = false; + } + uVar4 = 0; + if (bVar2) { + while ((param_2 != (undefined4 *)0x0 && (uVar4 == 0))) { + uVar4 = 0xffffffff; + pcVar7 = (char *)*param_2; + do { + pcVar10 = pcVar7; + if (uVar4 == 0) break; + uVar4 = uVar4 - 1; + pcVar10 = pcVar7 + 1; + cVar1 = *pcVar7; + pcVar7 = pcVar10; + } while (cVar1 != '\0'); + uVar4 = ~uVar4; + pcVar7 = pcVar10 + -uVar4; + pcVar10 = local_808; + for (uVar6 = uVar4 >> 2; uVar6 != 0; uVar6 = uVar6 - 1) { + *(undefined4 *)pcVar10 = *(undefined4 *)pcVar7; + pcVar7 = pcVar7 + 4; + pcVar10 = pcVar10 + 4; + } + for (uVar4 = uVar4 & 3; uVar4 != 0; uVar4 = uVar4 - 1) { + *pcVar10 = *pcVar7; + pcVar7 = pcVar7 + 1; + pcVar10 = pcVar10 + 1; + } + FUN_004d49b8(local_808,&DAT_0050b5ee); + FUN_004d49b8(local_808,param_1); + uVar4 = FUN_0049b028(local_808,param_3,&local_8,param_4,param_5,param_6,param_7); + param_2 = (undefined4 *)param_2[3]; + } + } + else { + uVar4 = FUN_0049b028(local_808,param_3,&local_8,param_4,param_5,param_6,param_7); + } + if ((uVar4 != 0) && (param_8 != (undefined4 *)0x0)) { + if (param_11 == 1) { + FUN_0049aa2c(local_808); + } + FUN_004d4b9c(param_8,local_808,param_9); + } + if (param_10 != (int *)0x0) { + *param_10 = local_8; + } + } + return uVar4; +} + + + +/* @0049b28c file=? name=FUN_0049b28c */ + +void __cdecl FUN_0049b28c(undefined *param_1) + +{ + PTR_DAT_0050b524 = param_1; + return; +} + + + +/* @0049b29c file=? name=FUN_0049b29c */ + +void __cdecl FUN_0049b29c(undefined *param_1) + +{ + PTR_DAT_0050b520 = param_1; + return; +} + + + +/* @0049b2ac file=? name=FUN_0049b2ac */ + +int * __cdecl FUN_0049b2ac(char *param_1,char *param_2,char *param_3) + +{ + int *piVar1; + char *pcVar2; + int *local_8; + + local_8 = (int *)0x0; + if (param_1 != (char *)0x0) { + local_8 = FUN_0049ad00(param_1,(char *)0x0,0); + } + piVar1 = local_8; + if ((param_2 != (char *)0x0) && + (piVar1 = FUN_0049ad00(param_2,(char *)0x0,1), local_8 != (int *)0x0)) { + FUN_0049a88c((int *)&local_8,piVar1); + piVar1 = local_8; + } + local_8 = piVar1; + piVar1 = local_8; + if (param_3 != (char *)0x0) { + pcVar2 = (char *)FUN_004dee74(PTR_DAT_0050b520); + if (pcVar2 == (char *)0x0) { + pcVar2 = PTR_DAT_0050b524; + } + piVar1 = FUN_0049aed8(param_3,pcVar2); + if (local_8 != (int *)0x0) { + FUN_0049a88c((int *)&local_8,piVar1); + piVar1 = local_8; + } + } + local_8 = piVar1; + return local_8; +} + + + +/* @0049b344 file=? name=FUN_0049b344 */ + +void __cdecl FUN_0049b344(int param_1,char *param_2,uint param_3) + +{ + int *in_EAX; + char *pcVar1; + + if (param_3 < 2) { + in_EAX = FUN_0049ad00(param_2,(char *)0x0,param_3); + } + else if (param_3 == 2) { + pcVar1 = (char *)FUN_004dee74(PTR_DAT_0050b520); + if (pcVar1 == (char *)0x0) { + pcVar1 = PTR_DAT_0050b524; + } + in_EAX = FUN_0049aed8(param_2,pcVar1); + } + if (param_1 != 0) { + FUN_0049a8a8(param_1,(int)in_EAX,param_3); + } + return; +} + + + +/* @0049b3a0 file=? name=FUN_0049b3a0 */ + +undefined4 __cdecl +FUN_0049b3a0(char *param_1,undefined4 *param_2,undefined4 *param_3,char *param_4,undefined4 *param_5 + ,uint param_6,int *param_7,int param_8) + +{ + uint uVar1; + undefined4 local_8; + + uVar1 = FUN_0049b0dc(param_1,param_2,param_3,1,param_4,0,&local_8,param_5,param_6,param_7,param_8) + ; + if (uVar1 == 0) { + local_8 = 0; + } + return local_8; +} + + + +/* @0049b3e4 file=? name=FUN_0049b3e4 */ + +uint __cdecl +FUN_0049b3e4(char *param_1,undefined4 *param_2,undefined4 *param_3,uint param_4,undefined4 *param_5, + uint param_6,int *param_7,int param_8) + +{ + uint uVar1; + undefined4 local_10; + char local_c [8]; + + if ((((param_4 & 1) == 0) && ((param_4 & 4) == 0)) && ((param_4 & 8) == 0)) { + if ((param_4 & 2) == 0) { + return 0; + } + local_c[0] = 'w'; + local_c[1] = 0; + } + else { + local_c[0] = 'r'; + if ((param_4 & 2) != 0) { + local_c[1] = 0x77; + local_c[2] = 0; + } + } + uVar1 = FUN_0049b0dc(param_1,param_2,param_3,0,local_c,0,&local_10,param_5,param_6,param_7,param_8 + ); + return uVar1; +} + + + +/* @0049b454 file=? name=FUN_0049b454 */ + +undefined4 __cdecl FUN_0049b454(undefined4 *param_1,undefined4 *param_2) + +{ + *param_1 = param_2; + return *param_2; +} + + + +/* @0049b464 file=? name=FUN_0049b464 */ + +undefined4 __cdecl FUN_0049b464(int *param_1) + +{ + undefined4 *puVar1; + + if (*param_1 == 0) { + return 0; + } + puVar1 = *(undefined4 **)(*param_1 + 0xc); + *param_1 = (int)puVar1; + if (puVar1 != (undefined4 *)0x0) { + return *puVar1; + } + return 0; +} + + + +/* @0049b488 file=? name=FUN_0049b488 */ + +int * __cdecl FUN_0049b488(int *param_1,char *param_2) + +{ + char *pcVar1; + int *piVar2; + int *piVar3; + int *piVar4; + char *pcVar5; + char *pcVar6; + bool bVar7; + + piVar3 = (int *)0x0; + piVar4 = param_1; + do { + if (piVar4 == (int *)0x0) { + return param_1; + } + pcVar5 = (char *)piVar4[2]; + pcVar6 = param_2; + do { + bVar7 = *pcVar5 == *pcVar6; + if (!bVar7) break; + if (*pcVar5 == '\0') goto LAB_0049b4bd; + pcVar1 = pcVar5 + 1; + bVar7 = *pcVar1 == pcVar6[1]; + if (!bVar7) break; + pcVar5 = pcVar5 + 2; + pcVar6 = pcVar6 + 2; + bVar7 = *pcVar1 == '\0'; + } while (!bVar7); + if (bVar7) { +LAB_0049b4bd: + FUN_004de420((int *)*piVar4); + FUN_004de420((int *)piVar4[2]); + if (piVar3 == (int *)0x0) { + param_1 = (int *)piVar4[3]; + } + else { + piVar3[3] = piVar4[3]; + } + piVar2 = (int *)piVar4[3]; + FUN_004de420(piVar4); + piVar4 = piVar2; + } + else { + piVar3 = piVar4; + piVar4 = (int *)piVar4[3]; + } + } while( true ); +} + + + +/* @0049b500 file=? name=FUN_0049b500 */ + +void __cdecl FUN_0049b500(int *param_1) + +{ + int *piVar1; + + while (param_1 != (int *)0x0) { + FUN_004de420((int *)*param_1); + FUN_004de420((int *)param_1[2]); + piVar1 = (int *)param_1[3]; + FUN_004de420(param_1); + param_1 = piVar1; + } + return; +} + + + +/* @0049b54c file=? name=FUN_0049b54c */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 * __cdecl FUN_0049b54c(undefined4 *param_1,int param_2,int param_3) + +{ + int *piVar1; + undefined4 *puVar2; + int iVar3; + + FUN_0044d1c0(param_1,param_2,param_3); + *param_1 = &PTR_FUN_0050b6b4; + puVar2 = (undefined4 *)FUN_00402298(0x10); + if (puVar2 == (undefined4 *)0x0) { + iVar3 = 0; + } + else { + iVar3 = FUN_004023f4(puVar2); + } + param_1[0x3a] = iVar3; + piVar1 = (int *)(param_1[0x3a] + 0xc); + *piVar1 = *piVar1 + 1; + puVar2 = (undefined4 *)FUN_00402298(0x10); + if (puVar2 == (undefined4 *)0x0) { + iVar3 = 0; + } + else { + iVar3 = FUN_004023f4(puVar2); + } + param_1[0x3b] = iVar3; + piVar1 = (int *)(param_1[0x3b] + 0xc); + *piVar1 = *piVar1 + 1; + puVar2 = (undefined4 *)FUN_00402298(0x10); + if (puVar2 == (undefined4 *)0x0) { + iVar3 = 0; + } + else { + iVar3 = FUN_004023f4(puVar2); + } + param_1[0x3e] = iVar3; + piVar1 = (int *)(param_1[0x3e] + 0xc); + *piVar1 = *piVar1 + 1; + param_1[0x39] = 0; + param_1[0x3c] = 0; + iVar3 = FUN_00404118(param_2,s_mission_0050b635,s_temperature_0050b63d,(float *)(param_1 + 0x3d)); + if (iVar3 == 0) { + FUN_004dbb24(&DAT_00524e20,s_ERROR__no_temperature_in_egg__0050b649,(char *)0x0); + FUN_004036a0(1); + } + param_1[0x3d] = _DAT_0049b644 + (float)param_1[0x3d]; + return param_1; +} + + + +/* @0049b648 file=? name=FUN_0049b648 */ + +void __cdecl FUN_0049b648(int *param_1,byte param_2) + +{ + int *piVar1; + int *piVar2; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0050b6b4; + piVar2 = (int *)param_1[0x3e]; + piVar1 = piVar2 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(piVar2,3); + } + piVar2 = (int *)param_1[0x3b]; + piVar1 = piVar2 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(piVar2,3); + } + piVar2 = (int *)param_1[0x3a]; + piVar1 = piVar2 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(piVar2,3); + } + FUN_0044d5d4(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0049b6bc file=bt/btmssn.cpp name=FUN_0049b6bc */ + +void FUN_0049b6bc(void) + +{ + FUN_0040385c(s_Should_never_reach_BTMission__Se_0050b668,s_d__tesla_bt_bt_BTMSSN_CPP_0050b698,0x45 + ); + return; +} + + + +/* @0049b6d8 file=? name=FUN_0049b6d8 */ + +void __cdecl FUN_0049b6d8(int param_1,undefined4 param_2,int param_3) + +{ + int iVar1; + undefined4 *puVar2; + + if (*(int *)(param_1 + 0xe4) == 0) { + *(undefined4 *)(param_1 + 0xe4) = param_2; + } + iVar1 = FUN_004084fc((float *)(param_1 + 0xec),(float *)&DAT_004e0f80,0.0001); + if (iVar1 != 0) { + FUN_00408440((float *)(param_1 + 0xec),(undefined4 *)(param_3 + 0x4c)); + } + if (*(int *)(param_1 + 0xe8) == -1) { + *(undefined4 *)(param_1 + 0xe8) = *(undefined4 *)(param_3 + 0x24); + } + puVar2 = (undefined4 *)FUN_00402298(0x14); + if (puVar2 != (undefined4 *)0x0) { + FUN_00415e90(puVar2,1); + *puVar2 = &PTR_FUN_0050b9a8; + } + puVar2[3] = *(undefined4 *)(param_3 + 0x2c); + puVar2[4] = *(undefined4 *)(param_3 + 0x5c); + (**(code **)(*(int *)(param_1 + 0x114) + 8))(param_1 + 0x114,puVar2,param_3 + 0x30); + return; +} + + + +/* @0049b784 file=? name=FUN_0049b784 */ + +void __cdecl FUN_0049b784(int param_1) + +{ + int iVar1; + int iVar2; + int iVar3; + int *extraout_ECX; + int *this; + undefined4 uStack_b0; + undefined4 uStack_ac; + undefined **local_90; + int local_8c; + undefined4 local_78; + undefined4 local_74; + undefined4 local_70; + undefined4 local_6c [2]; + undefined4 local_64; + undefined4 local_60; + undefined4 local_5c; + undefined4 local_58; + undefined4 local_54; + undefined4 local_50; + undefined4 local_4c [2]; + int local_44 [4]; + int local_34; + undefined4 local_30; + undefined4 local_2c; + undefined4 local_28; + undefined4 *local_24; + undefined4 local_20; + undefined4 local_1c; + undefined4 local_18 [2]; + undefined4 *local_10; + undefined4 local_c; + int local_8; + + iVar3 = *(int *)(param_1 + 0xd0); + FUN_0049c28b(local_44,param_1 + 0x114); + this = local_44; + local_8 = (**(code **)(local_44[0] + 0x14))(); + if (local_8 != 0) { + local_c = *(undefined4 *)(param_1 + 0xe8); + local_10 = (undefined4 *)(iVar3 + 0x184); + local_78 = 0x34; + local_74 = 0x13; + local_70 = 1; + FUN_00420ea4(local_6c,(undefined4 *)&DAT_00522524); + local_64 = 0; + local_60 = 0; + local_5c = *(undefined4 *)(param_1 + 0xec); + local_58 = *(undefined4 *)(param_1 + 0xf0); + local_54 = *(undefined4 *)(param_1 + 0xf4); + local_50 = local_c; + FUN_00420ea4(local_4c,local_10); + uStack_ac = 0x49b844; + FUN_00419e18((int *)&local_90,0x13,0x34); + local_90 = &PTR_FUN_0050b984; + FUN_00420ef4((undefined4 *)(local_8c + 0x2c),local_4c); + *(undefined4 *)(local_8c + 0x28) = local_50; + FUN_00408440((undefined4 *)(local_8c + 0x1c),&local_5c); + uStack_ac = 0x49b89d; + (*(code *)local_90[8])(); + FUN_00420e8c(local_18); + FUN_00420ef4(local_18,(undefined4 *)(iVar3 + 0x184)); + (**(code **)(local_44[0] + 8))(); + while (iVar2 = (**(code **)(local_44[0] + 0x30))(), iVar2 != 0) { + uStack_ac = 0x49b8e3; + (*(code *)local_90[8])(); + local_1c = *(undefined4 *)(local_34 + 0x1c); + uStack_ac = 0x49b905; + (*(code *)local_90[8])(); + uStack_ac = 0x49b91e; + (*(code *)local_90[8])(); + iVar2 = *(int *)(*(int *)(iVar3 + 0x128) + *(int *)(iVar2 + 0x10) * 4); + local_20 = *(undefined4 *)(iVar2 + 0x3e4); + iVar1 = (**(code **)(*(int *)(param_1 + 0xfc) + 0xc))(); + if (iVar1 == 0) { + local_24 = (undefined4 *)FUN_00402298(0x10); + if (local_24 != (undefined4 *)0x0) { + local_28 = *(undefined4 *)(iVar2 + 0x3e4); + FUN_00424716(local_24,&local_28); + } + local_2c = *(undefined4 *)(iVar2 + 0x3e4); + uStack_ac = 0x49b99e; + (**(code **)(*(int *)(param_1 + 0xfc) + 8))(); + } + (**(code **)(local_44[0] + 0x10))(); + } + local_30 = 0; + iVar3 = FUN_0041a1a4(**(int **)(*(int *)(param_1 + 0xe4) + 0xc),0x4e6f54); + if (iVar3 != 0) { + local_30 = 1; + } + FUN_00420ea4(&uStack_b0,(undefined4 *)(*(int *)(param_1 + 0xe4) + 0x184)); + FUN_0049baa0(param_1); + (**(code **)(**(int **)(param_1 + 0xe4) + 0xc))(); + FUN_00403310((int *)&local_90,0); + this = extraout_ECX; + } + FUN_00417858(this,local_44,1); + *(undefined4 *)(param_1 + 0xe4) = 0; + *(undefined4 *)(param_1 + 0xe8) = 0xffffffff; + FUN_00408440((undefined4 *)(param_1 + 0xec),&DAT_004e0f80); + FUN_0049c2c9(local_44,2); + return; +} + + + +/* @0049baa0 file=? name=FUN_0049baa0 */ + +void __cdecl FUN_0049baa0(int param_1) + +{ + undefined4 uVar1; + int *piVar2; + uint *puVar3; + int iVar4; + uint local_a8 [5]; + undefined4 local_94; + undefined4 local_90; + undefined4 local_8c; + undefined4 local_88 [2]; + undefined4 local_80; + undefined4 local_7c; + undefined4 local_78; + undefined4 local_74; + undefined4 local_70; + undefined4 local_6c; + undefined4 local_68; + undefined4 local_64; + undefined4 local_60; + undefined4 local_5c [2]; + undefined4 local_54 [2]; + undefined4 local_4c; + undefined4 local_48; + undefined4 local_44; + undefined4 local_40; + undefined4 local_3c; + undefined4 local_38; + undefined4 local_34; + int local_30 [4]; + int local_20; + float local_1c; + int local_18; + undefined4 local_14; + float local_10; + float local_c; + int local_8; + + FUN_0049c314(local_30,param_1 + 0xfc); + local_4c = DAT_004e0fec; + local_48 = DAT_004e0ff0; + local_44 = DAT_004e0ff4; + local_40 = DAT_004e0ff8; + local_3c = DAT_004e0ffc; + local_38 = DAT_004e1000; + local_34 = DAT_004e1004; + piVar2 = (int *)FUN_00414b60(); + local_8 = *piVar2; + local_c = 0.1; + local_10 = 0.0; + local_14 = *(undefined4 *)(DAT_004efc94 + 0x28); + FUN_00408440(&local_4c,(undefined4 *)&stack0x00000014); + while( true ) { + piVar2 = local_30; + iVar4 = (**(code **)(local_30[0] + 0x30))(); + if (iVar4 == 0) break; + iVar4 = *(int *)(param_1 + 0xd0); + uVar1 = *(undefined4 *)(local_20 + 0x1c); + local_a8[0] = 0x5c; + local_a8[1] = 3; + local_a8[2] = 1; + FUN_00420ea4(local_a8 + 3,(undefined4 *)&DAT_00522524); + local_94 = 0; + local_90 = 0; + local_8c = 0x31; + FUN_00420ea4(local_88,(undefined4 *)&DAT_00522524); + local_7c = 0x100; + local_78 = local_4c; + local_74 = local_48; + local_70 = local_44; + local_6c = local_40; + local_68 = local_3c; + local_64 = local_38; + local_60 = local_34; + local_80 = uVar1; + FUN_00420ea4(local_5c,(undefined4 *)&stack0x0000000c); + FUN_00420ea4(local_54,(undefined4 *)(iVar4 + 0x184)); + local_10 = local_c + local_10; + puVar3 = (uint *)FUN_004336f0(local_a8); + local_18 = local_8; + local_1c = local_10; + iVar4 = FUN_004dcd94(); + local_18 = local_18 + iVar4; + FUN_0041acbc(*(int *)(DAT_004efc94 + 0x60),3,local_14,puVar3,local_18); + FUN_004022d0((int *)puVar3); + (**(code **)(local_30[0] + 0xc))(local_30); + } + FUN_00417858(piVar2,local_30,1); + FUN_0049c352(local_30,2); + return; +} + + + +/* @0049bca4 file=? name=FUN_0049bca4 */ + +undefined4 * __cdecl +FUN_0049bca4(undefined4 *param_1,undefined4 param_2,undefined4 param_3,char *param_4, + undefined4 param_5) + +{ + undefined4 *puVar1; + + FUN_0041c52c(param_1,param_2,param_3,param_4,param_5); + *param_1 = &PTR_FUN_0050b954; + FUN_0049bfde(param_1 + 0x3f,0,1); + FUN_0049c123(param_1 + 0x45,0,0); + puVar1 = (undefined4 *)FUN_00402298(0x160); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_0041de1c(puVar1,param_1,0); + } + param_1[0x38] = puVar1; + param_1[7] = PTR_FUN_0050b6fc; + param_1[8] = DAT_0050b700; + param_1[9] = DAT_0050b704; + param_1[0x4b] = *(undefined4 *)(param_4 + 0x30); + param_1[0x3e] = *(undefined4 *)(param_4 + 0x34); + param_1[0x39] = 0; + param_1[0x3a] = 0xffffffff; + FUN_00408440(param_1 + 0x3b,&DAT_004e0f80); + return param_1; +} + + + +/* @0049bd7c file=? name=FUN_0049bd7c */ + +void __cdecl FUN_0049bd7c(int *param_1,byte param_2) + +{ + undefined4 *puVar1; + void *this; + int local_18 [5]; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0050b954; + puVar1 = (undefined4 *)param_1[0x38]; + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + FUN_0049c28b(local_18,(int)(param_1 + 0x45)); + FUN_00417858(this,local_18,1); + FUN_0049c2c9(local_18,2); + FUN_0049c146(param_1 + 0x45,2); + FUN_0049c001(param_1 + 0x3f,2); + FUN_0041c648(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0049be10 file=? name=FUN_0049be10 */ + +undefined4 __cdecl +FUN_0049be10(int param_1,int param_2,char *param_3,char *param_4,char *param_5,int param_6, + int param_7) + +{ + int iVar1; + undefined4 uVar2; + undefined4 *puVar3; + char *local_8; + + iVar1 = FUN_0041c684(param_2,param_3,param_4,param_5,param_6,param_7); + if (iVar1 == 0) { + uVar2 = 0; + } + else { + param_5[0x20] = -0x2d; + param_5[0x21] = '\v'; + param_5[0x22] = '\0'; + param_5[0x23] = '\0'; + param_5[0x24] = '8'; + param_5[0x25] = '\0'; + param_5[0x26] = '\0'; + param_5[0x27] = '\0'; + iVar1 = FUN_00404088(param_6,param_4,s_TerrainHitExplosion_0050b761,&local_8); + if (iVar1 == 0) { + FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_missing_TerrainHitExplosion__0050b775,(char *)0x0); + uVar2 = 0; + } + else { + puVar3 = (undefined4 *)FUN_00406ff8(param_1,local_8,1,-1); + if (puVar3 == (undefined4 *)0x0) { + FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_cannot_find_0050b794,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,local_8,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_in_resource_file__0050b7a2,(char *)0x0); + uVar2 = 0; + } + else { + *(undefined4 *)(param_5 + 0x30) = *puVar3; + iVar1 = FUN_00404118(param_6,param_4,s_RendererCompensateTime_0050b7b6, + (float *)(param_5 + 0x34)); + if (iVar1 == 0) { + FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_missing_RendererCompensateTime___0050b7cd,(char *)0x0); + uVar2 = 0; + } + else { + uVar2 = 1; + } + } + } + } + return uVar2; +} + + + +/* @0049bf54 file=? name=FUN_0049bf54 */ + +void __cdecl FUN_0049bf54(int param_1) + +{ + FUN_0041a1a4(**(int **)(param_1 + 0xc),0x50b6cc); + return; +} + + + +/* @0049bfde file=? name=FUN_0049bfde */ + +undefined4 * __cdecl FUN_0049bfde(undefined4 *param_1,undefined4 param_2,undefined4 param_3) + +{ + FUN_004186ac(param_1,param_2,param_3); + *param_1 = &PTR_FUN_0050b938; + return param_1; +} + + + +/* @0049c001 file=? name=FUN_0049c001 */ + +void __cdecl FUN_0049c001(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0050b938; + FUN_004186dc(param_1,0); + if ((param_2 & 1) != 0) { + FUN_0049c0d8(param_1); + } + } + return; +} + + + +/* @0049c02d file=? name=FUN_0049c02d */ + +undefined4 __cdecl FUN_0049c02d(undefined4 param_1,int param_2,int param_3) + +{ + undefined4 uVar1; + + if (*(int *)(param_3 + 0x1c) == *(int *)(param_2 + 0x1c)) { + uVar1 = 0; + } + else { + uVar1 = 1; + if (*(int *)(param_2 + 0x1c) <= *(int *)(param_3 + 0x1c)) { + uVar1 = 0xffffffff; + } + } + return uVar1; +} + + + +/* @0049c05c file=? name=FUN_0049c05c */ + +undefined4 __cdecl FUN_0049c05c(undefined4 param_1,int *param_2,int param_3) + +{ + undefined4 uVar1; + + if (*(int *)(param_3 + 0x1c) == *param_2) { + uVar1 = 0; + } + else { + uVar1 = 1; + if (*param_2 <= *(int *)(param_3 + 0x1c)) { + uVar1 = 0xffffffff; + } + } + return uVar1; +} + + + +/* @0049c088 file=? name=FUN_0049c088 */ + +void FUN_0049c088(void) + +{ + int iVar1; + undefined4 *puVar2; + + iVar1 = DAT_0050b858; + DAT_0050b858 = DAT_0050b858 + 1; + puVar2 = DAT_0050b854; + if ((iVar1 == 0) && (puVar2 = (undefined4 *)FUN_00402298(0x28), puVar2 != (undefined4 *)0x0)) { + FUN_00402b98(puVar2,0x18,100,100,s_VChainOf_0050b7f1); + } + DAT_0050b854 = puVar2; + FUN_00402f74((int)DAT_0050b854); + return; +} + + + +/* @0049c0d8 file=? name=FUN_0049c0d8 */ + +void __cdecl FUN_0049c0d8(undefined4 *param_1) + +{ + FUN_00402f98((int)DAT_0050b854,param_1); + DAT_0050b858 = DAT_0050b858 + -1; + if (DAT_0050b858 == 0) { + if (DAT_0050b854 != (int *)0x0) { + FUN_00402c28(DAT_0050b854,0); + FUN_004022d0(DAT_0050b854); + } + DAT_0050b854 = (int *)0x0; + } + return; +} + + + +/* @0049c123 file=? name=FUN_0049c123 */ + +undefined4 * __cdecl FUN_0049c123(undefined4 *param_1,undefined4 param_2,undefined4 param_3) + +{ + FUN_004186ac(param_1,param_2,param_3); + *param_1 = &PTR_FUN_0050b91c; + return param_1; +} + + + +/* @0049c146 file=? name=FUN_0049c146 */ + +void __cdecl FUN_0049c146(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0050b91c; + FUN_004186dc(param_1,0); + if ((param_2 & 1) != 0) { + FUN_0049c221(param_1); + } + } + return; +} + + + +/* @0049c172 file=? name=FUN_0049c172 */ + +undefined4 __cdecl FUN_0049c172(undefined4 param_1,int param_2,int param_3) + +{ + undefined4 uVar1; + + if (*(float *)(param_2 + 0x1c) == *(float *)(param_3 + 0x1c)) { + return 0; + } + if (*(float *)(param_2 + 0x1c) <= *(float *)(param_3 + 0x1c)) { + uVar1 = 0xffffffff; + } + else { + uVar1 = 1; + } + return uVar1; +} + + + +/* @0049c1a3 file=? name=FUN_0049c1a3 */ + +undefined4 __cdecl FUN_0049c1a3(undefined4 param_1,float *param_2,int param_3) + +{ + undefined4 uVar1; + + if (*param_2 == *(float *)(param_3 + 0x1c)) { + return 0; + } + if (*param_2 <= *(float *)(param_3 + 0x1c)) { + uVar1 = 0xffffffff; + } + else { + uVar1 = 1; + } + return uVar1; +} + + + +/* @0049c1d1 file=? name=FUN_0049c1d1 */ + +void FUN_0049c1d1(void) + +{ + int iVar1; + undefined4 *puVar2; + + iVar1 = DAT_0050b860; + DAT_0050b860 = DAT_0050b860 + 1; + puVar2 = DAT_0050b85c; + if ((iVar1 == 0) && (puVar2 = (undefined4 *)FUN_00402298(0x28), puVar2 != (undefined4 *)0x0)) { + FUN_00402b98(puVar2,0x18,100,100,s_VChainOf_0050b7fa); + } + DAT_0050b85c = puVar2; + FUN_00402f74((int)DAT_0050b85c); + return; +} + + + +/* @0049c221 file=? name=FUN_0049c221 */ + +void __cdecl FUN_0049c221(undefined4 *param_1) + +{ + FUN_00402f98((int)DAT_0050b85c,param_1); + DAT_0050b860 = DAT_0050b860 + -1; + if (DAT_0050b860 == 0) { + if (DAT_0050b85c != (int *)0x0) { + FUN_00402c28(DAT_0050b85c,0); + FUN_004022d0(DAT_0050b85c); + } + DAT_0050b85c = (int *)0x0; + } + return; +} + + + +/* @0049c26c file=? name=FUN_0049c26c */ + +undefined4 * __cdecl FUN_0049c26c(undefined4 *param_1,int param_2) + +{ + FUN_004188dc(param_1,param_2); + *param_1 = &PTR_FUN_0050b8c0; + return param_1; +} + + + +/* @0049c28b file=? name=FUN_0049c28b */ + +undefined4 * __cdecl FUN_0049c28b(undefined4 *param_1,int param_2) + +{ + FUN_004188dc(param_1,param_2); + *param_1 = &PTR_FUN_0050b8c0; + return param_1; +} + + + +/* @0049c2aa file=? name=FUN_0049c2aa */ + +undefined4 * __cdecl FUN_0049c2aa(undefined4 *param_1,int param_2) + +{ + FUN_00418904(param_1,param_2); + *param_1 = &PTR_FUN_0050b8c0; + return param_1; +} + + + +/* @0049c2c9 file=? name=FUN_0049c2c9 */ + +void __cdecl FUN_0049c2c9(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0050b8c0; + FUN_00418930(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0049c2f5 file=? name=FUN_0049c2f5 */ + +undefined4 * __cdecl FUN_0049c2f5(undefined4 *param_1,int param_2) + +{ + FUN_004188dc(param_1,param_2); + *param_1 = &PTR_FUN_0050b864; + return param_1; +} + + + +/* @0049c314 file=? name=FUN_0049c314 */ + +undefined4 * __cdecl FUN_0049c314(undefined4 *param_1,int param_2) + +{ + FUN_004188dc(param_1,param_2); + *param_1 = &PTR_FUN_0050b864; + return param_1; +} + + + +/* @0049c333 file=? name=FUN_0049c333 */ + +undefined4 * __cdecl FUN_0049c333(undefined4 *param_1,int param_2) + +{ + FUN_00418904(param_1,param_2); + *param_1 = &PTR_FUN_0050b864; + return param_1; +} + + + +/* @0049c352 file=? name=FUN_0049c352 */ + +void __cdecl FUN_0049c352(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0050b864; + FUN_00418930(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0049c37e file=? name=FUN_0049c37e */ + +undefined4 * __cdecl FUN_0049c37e(undefined4 param_1,int param_2,undefined4 *param_3) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_0042ea6b(); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_0042ea14(puVar1,param_1,param_2,param_3); + } + return puVar1; +} + + + +/* @0049c3ae file=? name=FUN_0049c3ae */ + +undefined4 * __cdecl FUN_0049c3ae(undefined4 param_1,int param_2,undefined4 *param_3) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00424ac5(); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_00424a6e(puVar1,param_1,param_2,param_3); + } + return puVar1; +} + + + +/* @0049c3de file=? name=FUN_0049c3de */ + +void FUN_0049c3de(void) + +{ + return; +} + + + +/* @0049c3e3 file=? name=FUN_0049c3e3 */ + +void __cdecl FUN_0049c3e3(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + FUN_00415ed8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0049c40c file=? name=FUN_0049c40c */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_0049c40c(int param_1) + +{ + float fVar1; + int iVar2; + int *piVar3; + float10 fVar4; + + iVar2 = FUN_0042104c((int *)&stack0x00000008,(int *)(param_1 + 0x180)); + if (iVar2 == 0) { + iVar2 = FUN_0049c600(param_1); + } + else { + piVar3 = (int *)FUN_00414b60(); + fVar1 = (float)*piVar3 / DAT_0052140c - *(float *)(param_1 + 0x17c); + if (_DAT_0049c50c <= fVar1) { + if (fVar1 <= _DAT_0049c510) { + fVar4 = FUN_00408050(); + if ((float)fVar4 <= (float)_DAT_0049c514) { + iVar2 = *(int *)(param_1 + 0x178); + } + else { + iVar2 = FUN_0049c600(param_1); + } + } + else { + iVar2 = FUN_0049c600(param_1); + } + } + else { + iVar2 = *(int *)(param_1 + 0x178); + } + } + *(int *)(param_1 + 0x178) = iVar2; + piVar3 = (int *)FUN_00414b60(); + *(float *)(param_1 + 0x17c) = (float)*piVar3 / DAT_0052140c; + FUN_00420ef4((undefined4 *)(param_1 + 0x180),(undefined4 *)&stack0x00000008); + piVar3 = *(int **)(*(int *)(*(int *)(param_1 + 0xc) + 0x120) + iVar2 * 4); + (**(code **)(*piVar3 + 0x18))(piVar3,&stack0x00000010); + FUN_0049c51c(param_1); + return; +} + + + +/* @0049c51c file=? name=FUN_0049c51c */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_0049c51c(int param_1) + +{ + int iVar1; + float fVar2; + int iVar3; + int local_2c [7]; + float local_10; + uint local_c; + float local_8; + + iVar1 = *(int *)(param_1 + 0xc); + local_c = 0; + local_8 = 0.0; + FUN_00424830(local_2c,param_1 + 0x160); + while (iVar3 = (**(code **)(local_2c[0] + 0x28))(local_2c), iVar3 != 0) { + local_10 = *(float *)(*(int *)(*(int *)(iVar1 + 0x120) + *(int *)(iVar3 + 0xc) * 4) + 0x158); + local_c = local_c + 1; + local_8 = local_10 + local_8; + } + fVar2 = _DAT_0049c5f8; + if (local_c != 0) { + fVar2 = local_8 / (float)local_c; + } + *(float *)(param_1 + 0x158) = fVar2; + fVar2 = _DAT_0049c5f8; + if ((_DAT_0049c5f8 <= *(float *)(param_1 + 0x158)) && + (fVar2 = _DAT_0049c5fc, *(float *)(param_1 + 0x158) <= _DAT_0049c5fc)) { + fVar2 = *(float *)(param_1 + 0x158); + } + *(float *)(param_1 + 0x158) = fVar2; + FUN_0042484f(local_2c,2); + return; +} + + + +/* @0049c600 file=? name=FUN_0049c600 */ + +undefined4 __cdecl FUN_0049c600(int param_1) + +{ + uint uVar1; + int iVar2; + undefined4 uVar3; + int local_20 [7]; + + FUN_00424830(local_20,param_1 + 0x160); + uVar1 = (**(code **)(local_20[0] + 0x14))(local_20); + iVar2 = FUN_0040807c(&DAT_00521f5c,uVar1); + iVar2 = (**(code **)(local_20[0] + 0x34))(local_20,iVar2); + uVar3 = *(undefined4 *)(iVar2 + 0xc); + FUN_0042484f(local_20,2); + return uVar3; +} + + + +/* @0049c66c file=? name=FUN_0049c66c */ + +void __cdecl FUN_0049c66c(int param_1,int param_2) + +{ + FUN_0041bbd8(param_1 + 100,param_2); + *(uint *)(param_1 + 0xb8) = *(uint *)(param_1 + 0xb8) | 8; + return; +} + + + +/* @0049c690 file=? name=FUN_0049c690 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_0049c690(int *param_1,int *param_2) + +{ + int iVar1; + float fVar2; + int iVar3; + int iVar4; + undefined4 auStack_78 [2]; + int iStack_70; + int iStack_6c; + int iStack_68; + int iStack_64; + int iStack_60; + int iStack_5c; + int iStack_58; + int iStack_54; + int iStack_50; + int iStack_4c; + int local_34 [7]; + int *local_18; + int *local_14; + int *local_10; + undefined4 local_c [2]; + + iVar1 = param_1[3]; + iStack_4c = 0x49c6b2; + FUN_00424830(local_34,(int)(param_1 + 0x58)); + iVar3 = (**(code **)(local_34[0] + 0x14))(); + if (iVar3 == 0) { + iStack_4c = 0x49c793; + FUN_0041e4e0(param_1,param_2); + iVar3 = FUN_00417ab4((int)(param_1 + 0x62)); + if (iVar3 != 0) { + FUN_0049c51c(iVar3); + } + if ((*param_2 == 4) && (0 < param_1[0x6b])) { + iStack_4c = 0x49c7d0; + iVar3 = FUN_0040807c(&DAT_00521f5c,param_1[0x6b]); + iVar3 = FUN_00417ab4(*(int *)(param_1[0x6d] + iVar3 * 4) + 4); + iStack_4c = 0x49c7f8; + iVar4 = FUN_0041a1a4(**(int **)(iVar3 + 0xc),0x50f4bc); + if (iVar4 != 0) { + FUN_004b11bc(iVar3); + } + } + if ((param_1[0x66] == 0) || ((float)param_1[0x56] < _DAT_0049c99c)) { + if ((param_1[0x6a] == 0) && (param_1[0x69] == 0)) { + if (_DAT_0049c99c <= (float)param_1[0x56]) { + iStack_4c = 0x49c943; + FUN_0049cad4(param_1,iVar1); + } + } + else if (*(int *)(iVar1 + 0x40) - 3U < 2) { + if ((param_1[0x6a] == 0) || ((float)param_1[0x56] < _DAT_0049c99c)) { + if ((param_1[0x69] != 0) && (_DAT_0049c99c <= (float)param_1[0x56])) { + iStack_4c = 0x49c8c5; + FUN_0041bbd8(iVar1 + 0x2c,9); + } + } + else { + iStack_4c = 0x49c88f; + FUN_0041bbd8(iVar1 + 0x2c,9); + } + } + else { + iVar3 = FUN_0049fb54(iVar1); + if (iVar3 == 0) { + if ((param_1[0x6a] == 0) || ((float)param_1[0x56] < _DAT_0049c9a0)) { + if ((param_1[0x69] != 0) && (_DAT_0049c9a0 <= (float)param_1[0x56])) { + iStack_4c = 0x49c926; + FUN_0041bbd8(iVar1 + 0x2c,3); + } + } + else { + iStack_4c = 0x49c8fb; + FUN_0041bbd8(iVar1 + 0x2c,4); + } + } + } + } + else { + iStack_4c = 0x49c82e; + FUN_0041bbd8((int)(param_1 + 4),1); + iStack_4c = 0x49c83c; + FUN_0041bbd8(iVar1 + 0x2c,9); + } + fVar2 = _DAT_0049c9a4; + if ((_DAT_0049c9a4 <= (float)param_1[0x56]) && + (fVar2 = _DAT_0049c99c, (float)param_1[0x56] <= _DAT_0049c99c)) { + fVar2 = (float)param_1[0x56]; + } + param_1[0x56] = (int)fVar2; + iStack_4c = 0x49c98f; + FUN_0042484f(local_34,2); + } + else { + iStack_4c = 0x49c6d8; + FUN_00420ea4(local_c,(undefined4 *)(iVar1 + 0x43c)); + iStack_70 = *param_2; + local_10 = param_2 + 2; + iStack_6c = param_2[1]; + iStack_68 = *local_10; + iStack_64 = param_2[3]; + local_14 = param_2 + 5; + iStack_60 = param_2[4]; + iStack_5c = *local_14; + iStack_58 = param_2[6]; + local_18 = param_2 + 8; + iStack_54 = param_2[7]; + iStack_50 = *local_18; + iStack_4c = param_2[9]; + FUN_00420ea4(auStack_78,local_c); + FUN_0049c40c((int)param_1); + iStack_4c = 0x49c784; + FUN_0042484f(local_34,2); + } + return; +} + + + +/* @0049c9a8 file=? name=FUN_0049c9a8 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_0049c9a8(int param_1) + +{ + int iVar1; + int iVar2; + float fVar3; + int *piVar4; + int iVar5; + + FUN_0041bbd8(param_1 + 0x10,1); + *(undefined4 *)(param_1 + 0x158) = 0x3f800000; + for (iVar5 = 0; iVar5 < *(int *)(param_1 + 0x1ac); iVar5 = iVar5 + 1) { + piVar4 = (int *)FUN_00417ab4(*(int *)(*(int *)(param_1 + 0x1b4) + iVar5 * 4) + 4); + iVar1 = *(int *)(*(int *)(param_1 + 0x1b4) + iVar5 * 4); + iVar2 = piVar4[0x38]; + *(float *)(iVar2 + 0x158) = + (*(float *)(iVar1 + 0x10) - *(float *)(iVar1 + 0x14)) + *(float *)(iVar2 + 0x158); + fVar3 = _DAT_0049cacc; + if ((_DAT_0049cacc <= *(float *)(iVar2 + 0x158)) && + (fVar3 = _DAT_0049cad0, *(float *)(iVar2 + 0x158) <= _DAT_0049cad0)) { + fVar3 = *(float *)(iVar2 + 0x158); + } + *(float *)(iVar2 + 0x158) = fVar3; + if (_DAT_0049cad0 <= *(float *)(iVar2 + 0x158)) { + if (piVar4[0x39] != 0) { + FUN_0041bbd8(*(int *)(param_1 + 0xc) + 0x2c,9); + } + FUN_0041bbd8((int)(piVar4 + 0xb),1); + if (piVar4[0x41] != 0) { + (**(code **)(*piVar4 + 0x34))(piVar4); + } + FUN_0041bbd8(iVar2 + 0x10,1); + } + } + return; +} + + + +/* @0049cad4 file=? name=FUN_0049cad4 */ + +void __cdecl FUN_0049cad4(int *param_1,int param_2) + +{ + undefined4 uVar1; + int *piVar2; + int iVar3; + undefined4 *puVar4; + int *piVar5; + int local_50 [7]; + int local_34 [7]; + int *local_18; + int *local_14; + int *local_10; + int *local_c; + int local_8; + + FUN_0049c9a8((int)param_1); + (**(code **)(*param_1 + 0xc))(param_1,1); + iVar3 = param_1[0x65]; + FUN_0041f216(local_34,param_2 + 0x300); + iVar3 = (**(code **)(local_34[0] + 0x34))(local_34,iVar3); + FUN_0041f235(local_34,2); + local_8 = iVar3; + if (param_1[0x68] != 0) { + puVar4 = (undefined4 *)FUN_00402298(0x1c); + if (puVar4 == (undefined4 *)0x0) { + local_10 = (int *)0x0; + local_c = local_10; + } + else { + local_10 = FUN_00424811(puVar4,local_8 + 0xd0); + local_c = local_10; + } + while (iVar3 = (**(code **)(*local_c + 0x28))(local_c), iVar3 != 0) { + piVar5 = *(int **)(*(int *)(param_2 + 0x120) + *(int *)(iVar3 + 0xc) * 4); + if ((param_1 != piVar5) && (piVar5[0x1e] != 1)) { + FUN_0049cad4(piVar5,param_2); + (**(code **)(*piVar5 + 0xc))(piVar5,2); + } + } + if (local_c != (int *)0x0) { + (**(code **)*local_c)(local_c,3); + } + } + if (param_1[0x67] != 0) { + puVar4 = (undefined4 *)FUN_00402298(0x1c); + if (puVar4 == (undefined4 *)0x0) { + local_14 = (int *)0x0; + } + else { + local_14 = FUN_00424811(puVar4,local_8 + 0xe8); + } + while (iVar3 = (**(code **)(*local_14 + 0x28))(local_14), iVar3 != 0) { + uVar1 = *(undefined4 *)(iVar3 + 0xc); + FUN_0041f216(local_50,param_2 + 0x300); + iVar3 = (**(code **)(local_50[0] + 0x34))(local_50,uVar1); + FUN_0041f235(local_50,2); + puVar4 = (undefined4 *)FUN_00402298(0x1c); + if (puVar4 == (undefined4 *)0x0) { + local_18 = (int *)0x0; + piVar5 = local_18; + } + else { + local_18 = FUN_00424811(puVar4,iVar3 + 0xd0); + piVar5 = local_18; + } + while (iVar3 = (**(code **)(*piVar5 + 0x28))(piVar5), iVar3 != 0) { + piVar2 = *(int **)(*(int *)(param_2 + 0x120) + *(int *)(iVar3 + 0xc) * 4); + FUN_0049cad4(piVar2,param_2); + (**(code **)(*piVar2 + 0xc))(piVar2,2); + } + if (piVar5 != (int *)0x0) { + (**(code **)*piVar5)(piVar5,3); + } + } + if (local_14 != (int *)0x0) { + (**(code **)*local_14)(local_14,3); + } + } + return; +} + + + +/* @0049ccc4 file=? name=FUN_0049ccc4 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl FUN_0049ccc4(int *param_1,int param_2) + +{ + float fVar1; + int *piVar2; + undefined4 uVar3; + int iVar4; + int iVar5; + float10 fVar6; + float local_8; + + fVar1 = *(float *)(param_2 + 4) * _DAT_0049ce48; + if (_DAT_0049ce4c < fVar1) { + fVar1 = _DAT_0049ce4c; + } + *(float *)(param_2 + 4) = *(float *)(param_2 + 4) - fVar1; + (**(code **)(*param_1 + 0x18))(param_1,param_2); + fVar6 = FUN_00408050(); + if (param_1[0x6d] != 0) { + for (iVar5 = 0; iVar5 < param_1[0x6b]; iVar5 = iVar5 + 1) { + local_8 = *(float *)(*(int *)(param_1[0x6d] + iVar5 * 4) + 0x18); + iVar4 = 0; + piVar2 = (int *)param_1[0x6d]; + if (0 < iVar5) { + do { + local_8 = *(float *)(*piVar2 + 0x18) + local_8; + iVar4 = iVar4 + 1; + piVar2 = piVar2 + 1; + } while (iVar4 < iVar5); + } + if ((float)fVar6 <= local_8 / (float)param_1[0x6c]) { + piVar2 = (int *)FUN_00417ab4(*(int *)(param_1[0x6d] + iVar5 * 4) + 4); + iVar4 = *(int *)(param_1[0x6d] + iVar5 * 4); + if (*(float *)(iVar4 + 0x14) < *(float *)(iVar4 + 0x10)) { + fVar6 = FUN_004ac07c(piVar2,param_2); + iVar4 = *(int *)(param_1[0x6d] + iVar5 * 4); + *(float *)(iVar4 + 0x14) = (float)(fVar6 + (float10)*(float *)(iVar4 + 0x14)); + } + uVar3 = FUN_00417ab4(*(int *)(param_1[0x6d] + iVar5 * 4) + 4); + return uVar3; + } + } + } + return 0; +} + + + +/* @0049ce50 file=? name=FUN_0049ce50 */ + +/* WARNING: Type propagation algorithm not settling */ +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 * __cdecl FUN_0049ce50(undefined4 *param_1,int param_2,undefined4 param_3,int *param_4) + +{ + int *piVar1; + undefined4 *puVar2; + undefined4 uVar3; + float *pfVar4; + int iVar5; + float10 fVar6; + undefined4 local_40; + int local_3c; + int *local_38; + int local_34 [2]; + undefined4 *local_2c; + float local_28; + float local_24; + int local_20; + int *local_1c; + undefined4 *local_18; + int *local_14; + undefined4 *local_10; + int *local_c; + undefined4 *local_8; + + FUN_0041df5c(param_1,param_2,param_3,param_4); + *param_1 = &PTR_FUN_0050bb90; + FUN_00424767(param_1 + 0x58,0,1); + piVar1 = (int *)FUN_00414b60(); + param_1[0x5f] = (float)*piVar1 / DAT_0052140c; + FUN_00420ea4(param_1 + 0x60,(undefined4 *)(param_2 + 0x184)); + FUN_0049ddc9(param_1 + 0x62,0); + param_1[0x6c] = 0; + (**(code **)(*param_4 + 0x1c))(param_4,param_1 + 0x67,4); + (**(code **)(*param_4 + 0x1c))(param_4,param_1 + 0x68,4); + (**(code **)(*param_4 + 0x1c))(param_4,param_1 + 0x65,4); + (**(code **)(*param_4 + 0x1c))(param_4,param_1 + 0x69,4); + local_8 = param_1 + 0x6a; + local_c = param_4; + (**(code **)(*param_4 + 0x1c))(param_4,local_8,4); + local_10 = param_1 + 0x66; + local_14 = param_4; + (**(code **)(*param_4 + 0x1c))(param_4,local_10,4); + local_18 = param_1 + 0x6b; + local_1c = param_4; + (**(code **)(*param_4 + 0x1c))(param_4,local_18,4); + pfVar4 = (float *)(param_1 + 0x51); + local_20 = 0; + do { + local_24 = _DAT_0049d1c4 / (float)param_1[0x50]; + local_28 = *pfVar4; + fVar6 = FUN_004dcd00((double)(local_28 - local_24)); + if ((float10)_DAT_0049d1c8 < fVar6) { + *pfVar4 = _DAT_0049d1c4 / (*pfVar4 * (float)param_1[0x50]); + } + if ((param_1[0x69] != 0) || (param_1[0x6a] != 0)) { + *pfVar4 = *pfVar4 * _DAT_0049d1cc; + } + local_20 = local_20 + 1; + pfVar4 = pfVar4 + 1; + } while (local_20 < 5); + if (param_1[0x6b] == 0) { + param_1[0x6d] = 0; + } + else { + uVar3 = FUN_004022b0(param_1[0x6b] << 2); + param_1[0x6d] = uVar3; + for (iVar5 = 0; iVar5 < (int)param_1[0x6b]; iVar5 = iVar5 + 1) { + local_2c = (undefined4 *)FUN_00402298(0x1c); + if (local_2c == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_0049dd18(local_2c,param_1); + } + *(undefined4 **)(param_1[0x6d] + iVar5 * 4) = puVar2; + } + local_34[1] = 0xffffffff; + for (iVar5 = 0; iVar5 < (int)param_1[0x6b]; iVar5 = iVar5 + 1) { + (**(code **)(*param_4 + 0x1c))(param_4,*(int *)(param_1[0x6d] + iVar5 * 4) + 0x18); + (**(code **)(*param_4 + 0x1c))(param_4,*(int *)(param_1[0x6d] + iVar5 * 4) + 0x10); + param_1[0x6c] = *(float *)(*(int *)(param_1[0x6d] + iVar5 * 4) + 0x18) + (float)param_1[0x6c]; + (**(code **)(*param_4 + 0x1c))(param_4,local_34 + 1); + if (((*(uint *)(param_2 + 0x28) & 0xc) == 0) && ((*(uint *)(param_2 + 0x28) & 0x100) != 0)) { + (**(code **)(*(int *)(*(int *)(param_1[0x6d] + iVar5 * 4) + 4) + 4)) + (*(int *)(param_1[0x6d] + iVar5 * 4) + 4); + } + } + } + local_34[0] = 0; + local_38 = param_4; + (**(code **)(*param_4 + 0x1c))(param_4,local_34); + local_3c = 0; + if (0 < local_34[0]) { + do { + (**(code **)(*param_4 + 0x1c))(param_4,&local_40); + puVar2 = (undefined4 *)FUN_00402298(0x10); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_00424716(puVar2,&local_40); + } + (**(code **)(param_1[0x58] + 8))(param_1 + 0x58,puVar2); + local_3c = local_3c + 1; + } while (local_3c < local_34[0]); + } + if (local_34[0] == 0) { + param_1[0x5e] = 0; + } + else { + uVar3 = FUN_0049c600((int)param_1); + param_1[0x5e] = uVar3; + } + return param_1; +} + + + +/* @0049d1d0 file=? name=FUN_0049d1d0 */ + +void __cdecl FUN_0049d1d0(int param_1) + +{ + int iVar1; + int iVar2; + int local_20 [7]; + + iVar1 = *(int *)(param_1 + 0xc); + FUN_00424830(local_20,param_1 + 0x160); + while( true ) { + iVar2 = (**(code **)(local_20[0] + 0x28))(local_20); + if (iVar2 == 0) break; + iVar2 = *(int *)(*(int *)(iVar1 + 0x120) + *(int *)(iVar2 + 0xc) * 4); + (**(code **)(*(int *)(iVar2 + 0x188) + 4))(iVar2 + 0x188,param_1); + } + FUN_0042484f(local_20,2); + return; +} + + + +/* @0049d23c file=? name=FUN_0049d23c */ + +void __cdecl FUN_0049d23c(int *param_1,byte param_2) + +{ + undefined4 *puVar1; + void *this; + int iVar2; + int local_20 [7]; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0050bb90; + if (param_1[0x6d] != 0) { + for (iVar2 = 0; iVar2 < param_1[0x6b]; iVar2 = iVar2 + 1) { + puVar1 = *(undefined4 **)(param_1[0x6d] + iVar2 * 4); + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + } + FUN_004022d0((int *)param_1[0x6d]); + } + FUN_00424830(local_20,(int)(param_1 + 0x58)); + FUN_00417858(this,local_20,1); + FUN_0042484f(local_20,2); + FUN_0049dde8(param_1 + 0x62,2); + FUN_0042478a(param_1 + 0x58,2); + FUN_0041e394(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0049d304 file=? name=FUN_0049d304 */ + +undefined4 __cdecl +FUN_0049d304(undefined4 param_1,uint param_2,char *param_3,int param_4,char *param_5,uint param_6, + undefined4 *param_7,int *param_8) + +{ + char *pcVar1; + uint *puVar2; + int iVar3; + undefined4 uVar4; + char *pcVar5; + int *piVar6; + undefined4 *puVar7; + char *pcVar8; + bool bVar9; + undefined8 uVar10; + uint uVar11; + byte bVar12; + undefined4 *puVar13; + char local_ec [64]; + char *local_ac; + int *local_a8; + int local_a4; + int *local_a0; + int *local_9c; + int *local_98; + int local_94; + int *local_90; + char *local_8c; + int *local_88; + int *local_84; + int *local_80; + char *local_7c; + int local_78; + undefined1 local_74 [4]; + undefined1 local_70 [4]; + int *local_6c; + int local_68; + undefined4 *local_64; + int *local_60; + int *local_5c; + char *local_58; + char *local_54; + undefined4 local_50; + int *local_4c; + char *local_48; + char *local_44; + int *local_40; + int *local_3c; + undefined4 local_38; + undefined4 local_34; + char *local_30; + int *local_2c; + uint *local_28; + char *local_24; + int local_20; + int *local_1c; + undefined4 local_18; + int *local_14; + undefined4 local_10; + uint *local_c; + char *local_8; + + local_8 = param_5; + piVar6 = param_8; + uVar11 = param_6; + puVar13 = param_7; + local_c = (uint *)FUN_00402298(0x10); + if (local_c == (uint *)0x0) { + puVar2 = (uint *)0x0; + } + else { + puVar2 = FUN_00402460(local_c,local_8); + } + puVar2[3] = puVar2[3] + 1; + iVar3 = FUN_0041e590(param_2,param_3,param_4,(int *)puVar2,piVar6,uVar11,(int)puVar13); + if (iVar3 == 0) { + uVar4 = 0xffffffff; + } + else { + local_10 = 0; + FUN_00404190(param_6,param_5,s_DescendOnDestruction_0050b9f1,&local_10); + local_14 = param_8; + (**(code **)(*param_8 + 0x20))(param_8,&local_10,4); + local_18 = 0; + FUN_00404190(param_6,param_5,s_DestroySiblingsOnDestruction_0050ba06,&local_18); + local_1c = param_8; + (**(code **)(*param_8 + 0x20))(param_8,&local_18,4); + local_24 = param_5; + iVar3 = param_4; + local_28 = (uint *)FUN_00402298(0x10); + if (local_28 == (uint *)0x0) { + puVar2 = (uint *)0x0; + } + else { + puVar2 = FUN_00402460(local_28,local_24); + } + puVar2[3] = puVar2[3] + 1; + local_20 = FUN_0049db20((int *)puVar2,iVar3); + local_2c = param_8; + (**(code **)(*param_8 + 0x20))(param_8,&local_20,4); + local_34 = 0; + local_38 = 0; + iVar3 = FUN_00404088(param_6,param_5,s_LegDamageZone_0050ba23,&local_30); + if (iVar3 != 0) { + pcVar8 = s_RightLeg_0050ba31; + pcVar5 = local_30; + do { + if (*pcVar5 != *pcVar8) goto LAB_0049d486; + bVar9 = true; + if (*pcVar5 == '\0') break; + pcVar1 = pcVar5 + 1; + if (*pcVar1 != pcVar8[1]) goto LAB_0049d486; + pcVar5 = pcVar5 + 2; + pcVar8 = pcVar8 + 2; + bVar9 = *pcVar1 == '\0'; + } while (!bVar9); + if (bVar9) { + local_38 = 1; + } +LAB_0049d486: + pcVar5 = s_LeftLeg_0050ba3a; + do { + if (*local_30 != *pcVar5) goto LAB_0049d4b3; + bVar9 = true; + if (*local_30 == '\0') break; + pcVar8 = local_30 + 1; + if (*pcVar8 != pcVar5[1]) goto LAB_0049d4b3; + local_30 = local_30 + 2; + pcVar5 = pcVar5 + 2; + bVar9 = *pcVar8 == '\0'; + } while (!bVar9); + if (bVar9) { + local_34 = 1; + } + } +LAB_0049d4b3: + local_3c = param_8; + (**(code **)(*param_8 + 0x20))(param_8,&local_34,4); + local_40 = param_8; + (**(code **)(*param_8 + 0x20))(param_8,&local_38,4); + iVar3 = FUN_00404088(param_6,param_5,s_VitalDamageZone_0050ba42,&local_44); + if (iVar3 == 0) { + local_48 = param_5; + uVar10 = FUN_004dbd4c(&DAT_00524e20,param_6); + local_4c = (int *)uVar10; + FUN_004dbb24(local_4c,&DAT_0050ba52,(char *)0x0); + FUN_004dbb24(local_4c,local_48,(char *)0x0); + FUN_004dbb24(local_4c,s_missing_VitalDamageZone__0050ba56,(char *)0x0); + FUN_004d9c38(local_4c); + uVar4 = 0; + } + else { + local_50 = 0; + pcVar8 = &DAT_0050ba70; + pcVar5 = local_44; + do { + if (*pcVar5 != *pcVar8) goto LAB_0049d594; + bVar9 = true; + if (*pcVar5 == '\0') break; + pcVar1 = pcVar5 + 1; + if (*pcVar1 != pcVar8[1]) goto LAB_0049d594; + pcVar5 = pcVar5 + 2; + pcVar8 = pcVar8 + 2; + bVar9 = *pcVar1 == '\0'; + } while (!bVar9); + if (bVar9) { + local_50 = 1; + } + else { +LAB_0049d594: + pcVar5 = s_False_0050ba75; + do { + if (*local_44 != *pcVar5) goto LAB_0049d5c1; + bVar9 = true; + if (*local_44 == '\0') break; + pcVar8 = local_44 + 1; + if (*pcVar8 != pcVar5[1]) goto LAB_0049d5c1; + local_44 = local_44 + 2; + pcVar5 = pcVar5 + 2; + bVar9 = *pcVar8 == '\0'; + } while (!bVar9); + if (!bVar9) { +LAB_0049d5c1: + local_54 = param_5; + local_58 = param_3; + FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_0050ba7b,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_Improper_format_for_LegDamageZon_0050ba7d,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + return 0; + } + local_50 = 0; + } + local_5c = param_8; + (**(code **)(*param_8 + 0x20))(param_8,&local_50,4); + local_60 = FUN_00404720(param_6,param_5,s_CriticalSubsystem_0050ba9f); + local_64 = (undefined4 *)local_60[1]; + local_68 = FUN_00403b60((int)local_60); + local_6c = param_8; + (**(code **)(*param_8 + 0x20))(param_8,&local_68,4); + for (; local_64 != (undefined4 *)0x0; local_64 = (undefined4 *)*local_64) { + iVar3 = FUN_004d7f84(local_64[1],(byte *)s__s__f__f_0050bab1); + if (iVar3 == 0) { + FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_error_in_CriticalSubsystem_Forma_0050baba,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); +LAB_0049d6e9: + if (local_60 != (int *)0x0) { + (**(code **)*local_60)(local_60,3); + } + return 0xffffffff; + } + (**(code **)(*param_8 + 0x20))(param_8,local_70,4); + (**(code **)(*param_8 + 0x20))(param_8,local_74,4); + pcVar5 = local_ec; + pcVar8 = s_ControlsMapper_0050bade; + do { + if (*pcVar5 != *pcVar8) goto LAB_0049d75a; + bVar9 = true; + if (*pcVar5 == '\0') break; + pcVar1 = pcVar5 + 1; + if (*pcVar1 != pcVar8[1]) goto LAB_0049d75a; + pcVar5 = pcVar5 + 2; + pcVar8 = pcVar8 + 2; + bVar9 = *pcVar1 == '\0'; + } while (!bVar9); + if (bVar9) { + local_78 = 0; + iVar3 = local_78; + } + else { +LAB_0049d75a: + pcVar5 = local_ec; + pcVar8 = s_Power_0050baed; + do { + if (*pcVar5 != *pcVar8) goto LAB_0049d78f; + bVar9 = true; + if (*pcVar5 == '\0') break; + pcVar1 = pcVar5 + 1; + if (*pcVar1 != pcVar8[1]) goto LAB_0049d78f; + pcVar5 = pcVar5 + 2; + pcVar8 = pcVar8 + 2; + bVar9 = *pcVar1 == '\0'; + } while (!bVar9); + if (bVar9) { + local_78 = 1; + iVar3 = local_78; + } + else { +LAB_0049d78f: + FUN_00404088(param_2,s_gamedata_0050baf3,s_Subsystems_0050bafc,&local_7c); + local_80 = (int *)FUN_004064fc((char *)*param_7,local_7c); + piVar6 = (int *)FUN_00402298(0x20); + if (piVar6 == (int *)0x0) { + local_84 = (int *)0x0; + } + else { + local_84 = FUN_00403e84(piVar6,(char *)local_80,1); + } + local_88 = FUN_0040485c((int)local_84,(char *)0x0); + iVar3 = 2; + for (puVar13 = (undefined4 *)local_88[1]; puVar13 != (undefined4 *)0x0; + puVar13 = (undefined4 *)*puVar13) { + pcVar5 = (char *)(puVar13 + 2); + pcVar8 = local_ec; + do { + if (*pcVar5 != *pcVar8) goto LAB_0049d82f; + bVar9 = true; + if (*pcVar5 == '\0') break; + pcVar1 = pcVar5 + 1; + if (*pcVar1 != pcVar8[1]) goto LAB_0049d82f; + pcVar5 = pcVar5 + 2; + pcVar8 = pcVar8 + 2; + bVar9 = *pcVar1 == '\0'; + } while (!bVar9); + if (bVar9) break; +LAB_0049d82f: + iVar3 = iVar3 + 1; + } + FUN_00403ecc(local_84,3); + FUN_004022d0(local_80); + if (local_88 != (int *)0x0) { + (**(code **)*local_88)(local_88,3); + } + if (puVar13 == (undefined4 *)0x0) { + bVar12 = 0x3a; + local_8c = param_3; + FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); + piVar6 = FUN_004db92c(&DAT_00524e20,bVar12); + FUN_004dbb24(piVar6,local_ec,(char *)0x0); + FUN_004dbb24(piVar6,s_does_not_exist__0050bb07,(char *)0x0); + goto LAB_0049d6e9; + } + } + } + local_78 = iVar3; + (**(code **)(*param_8 + 0x20))(param_8,&local_78,4); + } + if (local_60 != (int *)0x0) { + (**(code **)*local_60)(local_60,3); + } + local_90 = FUN_00404720(param_6,param_5,s_LODRedirect_0050bb19); + puVar13 = (undefined4 *)local_90[1]; + local_94 = FUN_00403b60((int)local_90); + local_98 = param_8; + (**(code **)(*param_8 + 0x20))(param_8,&local_94,4); + while (puVar13 != (undefined4 *)0x0) { + puVar7 = (undefined4 *)FUN_00402298(0x10); + if (puVar7 == (undefined4 *)0x0) { + local_9c = (int *)0x0; + } + else { + local_9c = (int *)FUN_004023f4(puVar7); + } + local_9c[3] = local_9c[3] + 1; + FUN_00402a98((int *)&local_a0,(int *)&local_9c,(char *)puVar13[1]); + piVar6 = local_a0 + 3; + *piVar6 = *piVar6 + -1; + if (*piVar6 == 0) { + FUN_004024d8(local_a0,3); + } + if (local_9c[2] == 0) { + FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_error_in_LODRedirect_Format__0050bb25,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); +LAB_0049d9f3: + if (local_90 != (int *)0x0) { + (**(code **)*local_90)(local_90,3); + } + uVar4 = 0xffffffff; + piVar6 = local_9c + 3; + *piVar6 = *piVar6 + -1; + if (*piVar6 != 0) { + return 0xffffffff; + } + FUN_004024d8(local_9c,3); + return uVar4; + } + local_9c[3] = local_9c[3] + 1; + local_a4 = FUN_004274f8(local_9c,param_4); + if (local_a4 == -1) { + uVar10 = FUN_004dbd4c(&DAT_00524e20,param_2); + piVar6 = (int *)uVar10; + FUN_004dbb24(piVar6,&DAT_0050bb43,(char *)0x0); + local_a8 = local_9c; + local_ac = (char *)local_9c[2]; + FUN_004dbb24(piVar6,local_ac,(char *)0x0); + FUN_004dbb24(piVar6,s_Not_Found__0050bb45,(char *)0x0); + FUN_004d9c38(piVar6); + goto LAB_0049d9f3; + } + (**(code **)(*param_8 + 0x20))(param_8,&local_a4,4); + puVar13 = (undefined4 *)*puVar13; + piVar6 = local_9c + 3; + *piVar6 = *piVar6 + -1; + if (*piVar6 == 0) { + FUN_004024d8(local_9c,3); + } + } + if (local_90 != (int *)0x0) { + (**(code **)*local_90)(local_90,3); + } + uVar4 = 1; + } + } + return uVar4; +} + + + +/* @0049db20 file=? name=FUN_0049db20 */ + +int __cdecl FUN_0049db20(int *param_1,int param_2) + +{ + int *piVar1; + char cVar2; + undefined4 *puVar3; + char *pcVar4; + char *pcVar5; + uint *puVar6; + int iVar7; + uint uVar8; + uint uVar9; + char *pcVar10; + char *pcVar11; + bool bVar12; + char local_98 [128]; + uint *local_18; + int *local_14; + undefined4 *local_10; + int *local_c; + int local_8; + + local_8 = -1; + local_c = FUN_0040485c(param_2,(char *)0x0); + local_10 = (undefined4 *)local_c[1]; +joined_r0x0049db52: + do { + if (local_10 == (undefined4 *)0x0) { + if (local_c != (int *)0x0) { + (**(code **)*local_c)(local_c,3); + } + iVar7 = -1; + piVar1 = param_1 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(param_1,3); + } + return iVar7; + } + uVar8 = 0xffffffff; + pcVar5 = (char *)(local_10 + 2); + do { + pcVar11 = pcVar5; + if (uVar8 == 0) break; + uVar8 = uVar8 - 1; + pcVar11 = pcVar5 + 1; + cVar2 = *pcVar5; + pcVar5 = pcVar11; + } while (cVar2 != '\0'); + uVar8 = ~uVar8; + pcVar5 = pcVar11 + -uVar8; + pcVar11 = local_98; + for (uVar9 = uVar8 >> 2; uVar9 != 0; uVar9 = uVar9 - 1) { + *(undefined4 *)pcVar11 = *(undefined4 *)pcVar5; + pcVar5 = pcVar5 + 4; + pcVar11 = pcVar11 + 4; + } + pcVar4 = local_98; + pcVar10 = s_LAB_ONLY_0050bb51; + for (uVar8 = uVar8 & 3; uVar8 != 0; uVar8 = uVar8 - 1) { + *pcVar11 = *pcVar5; + pcVar5 = pcVar5 + 1; + pcVar11 = pcVar11 + 1; + } + do { + bVar12 = *pcVar4 == *pcVar10; + if (!bVar12) break; + if (*pcVar4 == '\0') goto LAB_0049dbd5; + pcVar5 = pcVar4 + 1; + bVar12 = *pcVar5 == pcVar10[1]; + if (!bVar12) break; + pcVar4 = pcVar4 + 2; + pcVar10 = pcVar10 + 2; + bVar12 = *pcVar5 == '\0'; + } while (!bVar12); + if (bVar12) { +LAB_0049dbd5: + local_10 = (undefined4 *)*local_10; + goto joined_r0x0049db52; + } + pcVar5 = local_98; + pcVar11 = s_DamageZones_0050bb5a; + do { + if (*pcVar5 != *pcVar11) goto LAB_0049dbe2; + bVar12 = true; + if (*pcVar5 == '\0') break; + pcVar4 = pcVar5 + 1; + if (*pcVar4 != pcVar11[1]) goto LAB_0049dbe2; + pcVar5 = pcVar5 + 2; + pcVar11 = pcVar11 + 2; + bVar12 = *pcVar4 == '\0'; + } while (!bVar12); + if (bVar12) goto LAB_0049dbd5; +LAB_0049dbe2: + local_8 = local_8 + 1; + local_14 = FUN_00404720(param_2,local_98,s_dzone_0050bb66); + puVar3 = (undefined4 *)local_14[1]; + while (puVar3 != (undefined4 *)0x0) { + pcVar5 = (char *)puVar3[1]; + puVar6 = (uint *)FUN_00402298(0x10); + if (puVar6 == (uint *)0x0) { + local_18 = (uint *)0x0; + } + else { + local_18 = FUN_00402460(puVar6,pcVar5); + } + local_18[3] = local_18[3] + 1; + iVar7 = FUN_004027d8((int)local_18,(int)param_1); + if (iVar7 == 0) { + if (local_14 != (int *)0x0) { + (**(code **)*local_14)(local_14,3); + } + if (local_c != (int *)0x0) { + (**(code **)*local_c)(local_c,3); + } + puVar6 = local_18 + 3; + *puVar6 = *puVar6 - 1; + iVar7 = local_8; + if (*puVar6 == 0) { + FUN_004024d8((int *)local_18,3); + } + piVar1 = param_1 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 != 0) { + return iVar7; + } + FUN_004024d8(param_1,3); + return iVar7; + } + puVar3 = (undefined4 *)*puVar3; + puVar6 = local_18 + 3; + *puVar6 = *puVar6 - 1; + if (*puVar6 == 0) { + FUN_004024d8((int *)local_18,3); + } + } + if (local_14 != (int *)0x0) { + (**(code **)*local_14)(local_14,3); + } + local_10 = (undefined4 *)*local_10; + } while( true ); +} + + + +/* @0049dd18 file=? name=FUN_0049dd18 */ + +undefined4 * __cdecl FUN_0049dd18(undefined4 *param_1,undefined4 param_2) + +{ + *param_1 = &PTR_FUN_0050bb8c; + FUN_0049dd7e(param_1 + 1,param_2); + param_1[6] = 0; + param_1[5] = 0; + return param_1; +} + + + +/* @0049dd44 file=? name=FUN_0049dd44 */ + +void __cdecl FUN_0049dd44(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0050bb8c; + FUN_0049dd9d(param_1 + 1,2); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0049dd74 file=? name=FUN_0049dd74 */ + +undefined4 FUN_0049dd74(void) + +{ + return 1; +} + + + +/* @0049dd7e file=? name=FUN_0049dd7e */ + +undefined4 * __cdecl FUN_0049dd7e(undefined4 *param_1,undefined4 param_2) + +{ + FUN_004179d4(param_1,param_2); + *param_1 = &PTR_FUN_0050bb84; + return param_1; +} + + + +/* @0049dd9d file=? name=FUN_0049dd9d */ + +void __cdecl FUN_0049dd9d(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0050bb84; + FUN_004179f8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0049ddc9 file=? name=FUN_0049ddc9 */ + +undefined4 * __cdecl FUN_0049ddc9(undefined4 *param_1,undefined4 param_2) + +{ + FUN_004179d4(param_1,param_2); + *param_1 = &PTR_FUN_0050bb7c; + return param_1; +} + + + +/* @0049dde8 file=? name=FUN_0049dde8 */ + +void __cdecl FUN_0049dde8(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0050bb7c; + FUN_004179f8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0049de14 file=? name=FUN_0049de14 */ + +int __cdecl FUN_0049de14(int param_1) + +{ + int iVar1; + int iVar2; + float10 fVar3; + int local_28 [4]; + int local_18; + int local_10; + float local_c; + float local_8; + + iVar2 = -1; + FUN_0040139b(local_28,param_1 + 0x14); + fVar3 = FUN_00408050(); + local_8 = (float)fVar3; + (**(code **)(local_28[0] + 4))(local_28); + iVar1 = (**(code **)(local_28[0] + 0x30))(local_28); + while ((iVar1 != 0 && (iVar2 == -1))) { + local_c = *(float *)(*(int *)(local_18 + local_10 * 4) + 0x14); + if (local_8 < local_c) { + iVar2 = *(int *)(iVar1 + 0xc); + } + (**(code **)(local_28[0] + 0xc))(local_28); + iVar1 = (**(code **)(local_28[0] + 0x30))(local_28); + } + FUN_004013ba(local_28,2); + return iVar2; +} + + + +/* @0049deb0 file=? name=FUN_0049deb0 */ + +undefined4 * __cdecl FUN_0049deb0(undefined4 *param_1,undefined4 param_2,int *param_3) + +{ + int *piVar1; + undefined4 *puVar2; + int iVar3; + int *local_14 [2]; + undefined4 *local_c; + int *local_8; + + FUN_004178cc(param_1,2); + *param_1 = &PTR_FUN_0050bd9c; + param_1[3] = param_2; + puVar2 = (undefined4 *)FUN_00402298(0x10); + if (puVar2 == (undefined4 *)0x0) { + iVar3 = 0; + } + else { + iVar3 = FUN_004023f4(puVar2); + } + param_1[4] = iVar3; + piVar1 = (int *)(param_1[4] + 0xc); + *piVar1 = *piVar1 + 1; + FUN_0049f204(param_1 + 5,0,0); + puVar2 = (undefined4 *)FUN_00402298(0x10); + if (puVar2 == (undefined4 *)0x0) { + local_14[0] = (int *)0x0; + } + else { + local_14[0] = (int *)FUN_004023f4(puVar2); + } + local_14[0][3] = local_14[0][3] + 1; + local_c = param_1 + 5; + FUN_0049e5e4(param_3,(int *)local_14); + FUN_00402a4c((int *)&local_8,param_1 + 4,(int *)local_14); + piVar1 = local_8 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_8,3); + } + piVar1 = local_14[0] + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_14[0],3); + } + return param_1; +} + + + +/* @0049df80 file=? name=FUN_0049df80 */ + +void __cdecl FUN_0049df80(int *param_1,byte param_2) + +{ + int *piVar1; + int *piVar2; + void *this; + int local_20 [7]; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0050bd9c; + FUN_0040139b(local_20,(int)(param_1 + 5)); + FUN_00417858(this,local_20,1); + FUN_004013ba(local_20,2); + FUN_0049f227(param_1 + 5,2); + piVar2 = (int *)param_1[4]; + piVar1 = piVar2 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(piVar2,3); + } + FUN_0041790c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0049e000 file=? name=FUN_0049e000 */ + +undefined4 FUN_0049e000(void) + +{ + return 1; +} + + + +/* @0049e00c file=? name=FUN_0049e00c */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl +FUN_0049e00c(int param_1,char *param_2,char *param_3,undefined4 *param_4,int param_5,int *param_6) + +{ + char *pcVar1; + int iVar2; + undefined4 uVar3; + undefined4 *puVar4; + int *piVar5; + uint *puVar6; + undefined4 *puVar7; + int local_b0 [7]; + char local_94 [64]; + int local_54 [6]; + int *local_3c; + int local_38; + int *local_34; + char *local_30; + char *local_2c; + int local_28; + uint *local_24; + int *local_20; + char *local_1c; + float local_18; + float local_14; + int *local_10; + int *local_c; + char *local_8; + + iVar2 = FUN_00403f84((int)param_4,param_3); + if (iVar2 == 0) { + pcVar1 = (char *)*param_4; + local_8 = param_3; + FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_does_not_exist_in_0050bbed,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,pcVar1,(char *)0x0); + FUN_004d9c38((int *)&DAT_00524e68); + uVar3 = 0; + } + else { + puVar4 = (undefined4 *)FUN_00402298(0x10); + if (puVar4 == (undefined4 *)0x0) { + local_3c = (int *)0x0; + } + else { + local_3c = (int *)FUN_004023f4(puVar4); + } + local_3c[3] = local_3c[3] + 1; + FUN_0049f204(local_54,0,0); + local_34 = local_54; + FUN_00402a98((int *)&local_c,(int *)&local_3c,param_3); + piVar5 = local_c + 3; + *piVar5 = *piVar5 + -1; + if (*piVar5 == 0) { + FUN_004024d8(local_c,3); + } + local_10 = FUN_00404720((int)param_4,param_3,s_DamageZone_0050bc00); + puVar4 = (undefined4 *)local_10[1]; + local_38 = FUN_00403b60((int)local_10); + local_18 = 0.0; + FUN_00404088(param_1,s_video_0050bc0b,s_skeleton_0050bc11,&local_1c); + local_20 = (int *)FUN_004064fc(*(char **)(param_5 + 0x10),local_1c); + piVar5 = (int *)FUN_00402298(0x20); + if (piVar5 == (int *)0x0) { + piVar5 = (int *)0x0; + } + else { + piVar5 = FUN_00403e84(piVar5,(char *)local_20,1); + } + if ((*(byte *)(piVar5 + 7) & 2) == 0) { + iVar2 = piVar5[3]; + } + else { + iVar2 = piVar5[4]; + } + if (iVar2 == 0) { + FUN_004dbb24(&DAT_00524e20,(char *)local_20,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_is_empty_or_missing__0050bc1a,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + } + else { + while (puVar4 != (undefined4 *)0x0) { + iVar2 = FUN_004d7f84(puVar4[1],(byte *)s__s__f_0050bc30); + if (iVar2 == 0) { + pcVar1 = (char *)*param_4; + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_0050bc36,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,pcVar1,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_0050bc38,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_error_in_DamageZone_Table_Format_0050bc3b,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + goto LAB_0049e1a9; + } + puVar6 = (uint *)FUN_00402298(0x10); + if (puVar6 == (uint *)0x0) { + local_24 = (uint *)0x0; + } + else { + local_24 = FUN_00402460(puVar6,local_94); + } + local_24[3] = local_24[3] + 1; + local_24[3] = local_24[3] + 1; + local_28 = FUN_004274f8((int *)local_24,(int)piVar5); + if (local_28 == -1) { + FUN_004dbb24(&DAT_00524e20,(char *)*param_4,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_0050bc5e,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_0050bc61,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,local_94,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_Not_Found__0050bc63,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + puVar6 = local_24 + 3; + *puVar6 = *puVar6 - 1; + if (*puVar6 == 0) { + FUN_004024d8((int *)local_24,3); + } + goto LAB_0049e1a9; + } + puVar7 = (undefined4 *)FUN_00402298(0x10); + if (puVar7 == (undefined4 *)0x0) { + puVar7 = (undefined4 *)0x0; + } + else { + puVar7 = FUN_00424716(puVar7,&local_28); + } + local_18 = local_14 + local_18; + (**(code **)(*local_34 + 8))(local_34,puVar7,&local_18); + puVar4 = (undefined4 *)*puVar4; + puVar6 = local_24 + 3; + *puVar6 = *puVar6 - 1; + if (*puVar6 == 0) { + FUN_004024d8((int *)local_24,3); + } + } + if (_DAT_0049e520 == local_18) { + FUN_0049e524(param_6,(int *)&local_3c); + if (local_10 != (int *)0x0) { + (**(code **)*local_10)(local_10,3); + } + FUN_004022d0(local_20); + FUN_00403ecc(piVar5,3); + FUN_0040137c(local_b0,(int)local_34); + FUN_00417858(local_b0,local_b0,1); + uVar3 = 1; + FUN_004013ba(local_b0,2); + FUN_0049f227(local_54,2); + piVar5 = local_3c + 3; + *piVar5 = *piVar5 + -1; + if (*piVar5 != 0) { + return uVar3; + } + FUN_004024d8(local_3c,3); + return uVar3; + } + local_2c = param_3; + local_30 = (char *)*param_4; + FUN_004dbb24(&DAT_00524e20,local_30,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_0050bc6f,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,local_2c,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s___percentages_do_not_sum_to_100__0050bc72,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + } +LAB_0049e1a9: + if (local_10 != (int *)0x0) { + (**(code **)*local_10)(local_10,3); + } + FUN_004022d0(local_20); + FUN_00403ecc(piVar5,3); + if (local_34 != (int *)0x0) { + (**(code **)*local_34)(local_34,3); + } + uVar3 = 0; + FUN_0049f227(local_54,2); + piVar5 = local_3c + 3; + *piVar5 = *piVar5 + -1; + if (*piVar5 == 0) { + FUN_004024d8(local_3c,3); + } + } + return uVar3; +} + + + +/* @0049e524 file=? name=FUN_0049e524 */ + +int * __cdecl FUN_0049e524(int *param_1,int *param_2) + +{ + int *piVar1; + int iVar2; + int local_28 [4]; + int local_18; + int local_10; + undefined4 local_c; + undefined4 local_8; + + piVar1 = (int *)FUN_004029b0(param_1,*param_2); + (**(code **)(*piVar1 + 0x20))(piVar1,param_2 + 1,4); + FUN_0040137c(local_28,param_2[2]); + (**(code **)(local_28[0] + 4))(local_28); + iVar2 = (**(code **)(local_28[0] + 0x30))(local_28); + while (iVar2 != 0) { + local_8 = *(undefined4 *)(*(int *)(local_18 + local_10 * 4) + 0x14); + local_c = *(undefined4 *)(iVar2 + 0xc); + piVar1 = (int *)(**(code **)(*param_1 + 0x20))(param_1,&local_8,4); + (**(code **)(*piVar1 + 0x20))(piVar1,&local_c,4); + (**(code **)(local_28[0] + 0xc))(local_28); + iVar2 = (**(code **)(local_28[0] + 0x30))(local_28); + } + FUN_004013ba(local_28,2); + return param_1; +} + + + +/* @0049e5e4 file=? name=FUN_0049e5e4 */ + +int * __cdecl FUN_0049e5e4(int *param_1,int *param_2) + +{ + int *piVar1; + undefined4 *puVar2; + int iVar3; + undefined4 local_c; + undefined1 local_8 [4]; + + piVar1 = (int *)FUN_00402aec(param_1,param_2); + (**(code **)(*piVar1 + 0x1c))(piVar1,param_2 + 1,4); + for (iVar3 = 0; iVar3 < param_2[1]; iVar3 = iVar3 + 1) { + piVar1 = (int *)(**(code **)(*param_1 + 0x1c))(param_1,local_8,4); + (**(code **)(*piVar1 + 0x1c))(piVar1,&local_c,4); + puVar2 = (undefined4 *)FUN_00402298(0x10); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_00424716(puVar2,&local_c); + } + (**(code **)(*(int *)param_2[2] + 8))((int *)param_2[2],puVar2,local_8); + } + return param_1; +} + + + +/* @0049e678 file=? name=FUN_0049e678 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_0049e678(int param_1,float param_2) + +{ + int iVar1; + float local_10; + float local_c; + float local_8; + + if (*(int *)(param_1 + 0xc) != 0) { + local_8 = *(float *)(*(int *)(param_1 + 0x10) + 0x1d8); + param_2 = local_8 + param_2; + if (_DAT_0049e72c <= param_2) { + param_2 = param_2 - _DAT_0049e72c; + } + if (param_2 < _DAT_0049e730) { + param_2 = _DAT_0049e72c + param_2; + local_c = param_2; + } + } + FUN_004dcd10((double)((float10)*(int *)(param_1 + 0x2c) * _DAT_0049e734 * (float10)param_2)); + iVar1 = FUN_004dcd94(); + local_10 = ((float)(iVar1 + 1) * _DAT_0049e72c) / (float)*(int *)(param_1 + 0x2c); + (**(code **)(*(int *)(param_1 + 0x14) + 0xc))(param_1 + 0x14,&local_10); + return; +} + + + +/* @0049e740 file=? name=FUN_0049e740 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 * __cdecl FUN_0049e740(undefined4 *param_1,int param_2,int *param_3) + +{ + undefined4 *puVar1; + int iVar2; + float local_14; + float local_10; + float local_c; + float local_8; + + FUN_004178cc(param_1,2); + *param_1 = &PTR_LAB_0050bd90; + FUN_0049f2b2(param_1 + 5,0,1); + (**(code **)(*param_3 + 0x1c))(param_3,param_1 + 3,4); + (**(code **)(*param_3 + 0x1c))(param_3,param_1 + 0xb,4); + local_c = _DAT_0049e810 / (float)(int)param_1[0xb]; + local_8 = local_c; + for (iVar2 = 1; iVar2 <= (int)param_1[0xb]; iVar2 = iVar2 + 1) { + puVar1 = (undefined4 *)FUN_00402298(0x2c); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_0049deb0(puVar1,param_2,param_3); + } + local_14 = (float)iVar2 * local_8; + local_10 = local_14; + (**(code **)(param_1[5] + 8))(param_1 + 5,puVar1,&local_14); + } + param_1[4] = *(undefined4 *)(param_2 + 0x438); + return param_1; +} + + + +/* @0049e880 file=? name=FUN_0049e880 */ + +undefined4 FUN_0049e880(void) + +{ + return 1; +} + + + +/* @0049e88c file=? name=FUN_0049e88c */ + +undefined4 __cdecl +FUN_0049e88c(int param_1,char *param_2,char *param_3,undefined4 *param_4,int param_5,int *param_6) + +{ + uint *puVar1; + undefined4 *puVar2; + char *pcVar3; + int iVar4; + undefined4 uVar5; + uint *puVar6; + int local_10; + int *local_c; + undefined4 local_8; + + iVar4 = FUN_00404190((int)param_4,param_3,s_RotateWithTorso_0050bc9f,&local_8); + if (iVar4 == 0) { + FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_RotateWithTorso__0050bcaf,(char *)0x0); + FUN_004d9c38((int *)&DAT_00524e68); + uVar5 = 0; + } + else { + (**(code **)(*param_6 + 0x20))(param_6,&local_8,4); + local_c = FUN_00404720((int)param_4,param_3,s_PieSlice_0050bcca); + puVar2 = (undefined4 *)local_c[1]; + local_10 = FUN_00403b60((int)local_c); + (**(code **)(*param_6 + 0x20))(param_6,&local_10,4); + while (puVar2 != (undefined4 *)0x0) { + pcVar3 = (char *)puVar2[1]; + puVar6 = (uint *)FUN_00402298(0x10); + if (puVar6 == (uint *)0x0) { + puVar6 = (uint *)0x0; + } + else { + puVar6 = FUN_00402460(puVar6,pcVar3); + } + puVar6[3] = puVar6[3] + 1; + if (puVar6[2] == 0) { + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_error_in_damage_table_format_0050bcd3,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + if (local_c != (int *)0x0) { + (**(code **)*local_c)(local_c,3); + } + uVar5 = 0xffffffff; + puVar1 = puVar6 + 3; + *puVar1 = *puVar1 - 1; + if (*puVar1 != 0) { + return 0xffffffff; + } + FUN_004024d8((int *)puVar6,3); + return uVar5; + } + FUN_0049e00c(param_1,param_2,(char *)puVar6[2],param_4,param_5,param_6); + puVar2 = (undefined4 *)*puVar2; + puVar1 = puVar6 + 3; + *puVar1 = *puVar1 - 1; + if (*puVar1 == 0) { + FUN_004024d8((int *)puVar6,3); + } + } + if (local_c != (int *)0x0) { + (**(code **)*local_c)(local_c,3); + } + uVar5 = 1; + } + return uVar5; +} + + + +/* @0049ea48 file=? name=FUN_0049ea48 */ + +undefined4 * __cdecl FUN_0049ea48(undefined4 *param_1,int param_2,int *param_3) + +{ + undefined4 *puVar1; + int local_8; + + FUN_004178cc(param_1,2); + *param_1 = &PTR_FUN_0050bd84; + param_1[3] = param_2; + FUN_0049f3d5(param_1 + 4,0,1); + (**(code **)(*param_3 + 0x1c))(param_3,param_1 + 10,4); + for (local_8 = 0; local_8 < (int)param_1[10]; local_8 = local_8 + 1) { + puVar1 = (undefined4 *)FUN_00402298(0x30); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_0049e740(puVar1,param_2,param_3); + } + (**(code **)(param_1[4] + 8))(param_1 + 4,puVar1,&local_8); + } + return param_1; +} + + + +/* @0049eadc file=? name=FUN_0049eadc */ + +void __cdecl FUN_0049eadc(int *param_1,byte param_2) + +{ + void *this; + int local_20 [7]; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0050bd84; + FUN_0040146f(local_20,(int)(param_1 + 4)); + FUN_00417858(this,local_20,1); + FUN_0040148e(local_20,2); + FUN_0049f3f8(param_1 + 4,2); + FUN_0041790c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0049eb48 file=? name=FUN_0049eb48 */ + +undefined4 FUN_0049eb48(void) + +{ + return 1; +} + + + +/* @0049eb54 file=? name=FUN_0049eb54 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_0049eb54(int param_1,float *param_2) + +{ + float fVar1; + float *pfVar2; + int iVar3; + float10 fVar4; + float local_30; + float local_2c; + float local_28; + float local_24; + float local_20; + float local_1c; + float local_18; + float local_14; + float local_10; + int local_c; + float local_8; + + local_30 = DAT_004e0f80; + local_2c = DAT_004e0f84; + local_28 = DAT_004e0f88; + pfVar2 = FUN_00408bf8(&local_30,param_2,(float *)(*(int *)(param_1 + 0xc) + 0xd0)); + FUN_00408440(&local_30,pfVar2); + local_8 = *(float *)(*(int *)(*(int *)(param_1 + 0xc) + 0x2ec) + 0xc); + fVar1 = _DAT_0049ed00; + if ((_DAT_0049ed00 <= local_2c) && (fVar1 = local_2c, local_8 < local_2c)) { + fVar1 = local_8; + } + local_2c = fVar1; + FUN_004dcd10((double)((float)*(int *)(param_1 + 0x28) * (local_2c / local_8))); + local_c = FUN_004dcd94(); + if (local_c < 0) { + local_c = 0; + } + if (*(int *)(param_1 + 0x28) + -1 < local_c) { + local_c = *(int *)(param_1 + 0x28) + -1; + } + iVar3 = (**(code **)(*(int *)(param_1 + 0x10) + 0xc))(param_1 + 0x10,&local_c); + local_14 = local_28; + fVar4 = FUN_004dcd00((double)local_28); + if ((float10)_DAT_0049ed04 < fVar4) { + local_18 = local_30; + fVar4 = FUN_004dcd00((double)local_30); + if ((float10)_DAT_0049ed04 < fVar4) { + fVar4 = FUN_004dc8ec((double)local_28,SUB84((double)local_30,0), + (uint)((ulonglong)(double)local_30 >> 0x20)); + local_20 = (float)fVar4; + local_10 = local_20; + if (local_20 < _DAT_0049ed00) { + local_24 = _DAT_0049ed08 + local_20; + local_10 = local_24; + } + goto LAB_0049ece8; + } + } + fVar4 = FUN_00408050(); + local_1c = (float)(fVar4 * (float10)_DAT_0049ed08); + local_10 = local_1c; +LAB_0049ece8: + FUN_0049e678(iVar3,local_10); + return; +} + + + +/* @0049ed28 file=? name=FUN_0049ed28 */ + +undefined4 __cdecl +FUN_0049ed28(int param_1,char *param_2,undefined4 *param_3,int param_4,int *param_5) + +{ + int *piVar1; + uint *puVar2; + int iVar3; + uint uVar4; + undefined4 uVar5; + uint local_dc [2]; + char *local_d4; + uint local_cc [2]; + char *local_c4; + uint local_bc [2]; + char *local_b4; + uint local_ac [2]; + char *local_a4; + char local_9c [20]; + uint *local_88; + uint *local_84; + uint *local_80; + char *local_7c; + uint *local_78; + char *local_74; + int *local_70; + uint *local_6c; + uint *local_68; + int *local_64; + uint *local_60; + uint *local_5c; + char *local_58; + uint *local_54; + uint *local_50; + char *local_4c; + int *local_48; + uint local_44; + int *local_40; + int local_3c; + char *local_38; + uint *local_34; + uint *local_30; + char *local_2c; + uint *local_28; + char *local_24; + int *local_20; + uint *local_1c; + char *local_18; + uint *local_14; + char *local_10; + uint *local_c; + uint *local_8; + + puVar2 = (uint *)FUN_00402298(0x10); + if (puVar2 == (uint *)0x0) { + local_8 = (uint *)0x0; + } + else { + local_8 = FUN_00402460(puVar2,s_Layer_0050bcf2); + } + uVar4 = 1; + local_8[3] = local_8[3] + 1; + local_10 = (char *)FUN_004dd3ec(1,local_9c,10); + puVar2 = (uint *)FUN_00402298(0x10); + if (puVar2 == (uint *)0x0) { + local_14 = (uint *)0x0; + } + else { + local_14 = FUN_00402460(puVar2,local_10); + } + local_14[3] = local_14[3] + 1; + FUN_00402624(local_ac,(int)local_8,(int)local_14); + local_18 = local_a4; + puVar2 = (uint *)FUN_00402298(0x10); + if (puVar2 == (uint *)0x0) { + local_c = (uint *)0x0; + } + else { + local_c = FUN_00402460(puVar2,local_18); + } + local_c[3] = local_c[3] + 1; + FUN_004024d8((int *)local_ac,2); + local_1c = local_14; + puVar2 = local_14 + 3; + *puVar2 = *puVar2 - 1; + if (*puVar2 == 0) { + FUN_004024d8((int *)local_14,3); + } + while( true ) { + iVar3 = FUN_00403f84((int)param_3,(char *)local_c[2]); + if (iVar3 == 0) break; + uVar4 = uVar4 + 1; + local_24 = (char *)FUN_004dd3ec(uVar4,local_9c,10); + puVar2 = (uint *)FUN_00402298(0x10); + if (puVar2 == (uint *)0x0) { + local_28 = (uint *)0x0; + } + else { + local_28 = FUN_00402460(puVar2,local_24); + } + local_28[3] = local_28[3] + 1; + FUN_00402624(local_bc,(int)local_8,(int)local_28); + local_2c = local_b4; + local_34 = (uint *)FUN_00402298(0x10); + if (local_34 == (uint *)0x0) { + local_30 = (uint *)0x0; + } + else { + local_30 = FUN_00402460(local_34,local_2c); + } + local_30[3] = local_30[3] + 1; + FUN_004024d8((int *)local_bc,2); + FUN_00402a4c((int *)&local_20,(int *)&local_c,(int *)&local_30); + piVar1 = local_20 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_20,3); + } + puVar2 = local_30 + 3; + *puVar2 = *puVar2 - 1; + if (*puVar2 == 0) { + FUN_004024d8((int *)local_30,3); + } + puVar2 = local_28 + 3; + *puVar2 = *puVar2 - 1; + if (*puVar2 == 0) { + FUN_004024d8((int *)local_28,3); + } + } + if (uVar4 == 1) { + local_38 = (char *)*param_3; + FUN_004dbb24(&DAT_00524e20,local_38,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_has_bad_format__0050bcf8,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + } + local_3c = uVar4 - 1; + local_40 = param_5; + (**(code **)(*param_5 + 0x20))(param_5,&local_3c,4); + local_44 = 1; + local_4c = (char *)FUN_004dd3ec(1,local_9c,10); + local_54 = (uint *)FUN_00402298(0x10); + if (local_54 == (uint *)0x0) { + local_50 = (uint *)0x0; + } + else { + local_50 = FUN_00402460(local_54,local_4c); + } + local_50[3] = local_50[3] + 1; + FUN_00402624(local_cc,(int)local_8,(int)local_50); + local_58 = local_c4; + local_60 = (uint *)FUN_00402298(0x10); + if (local_60 == (uint *)0x0) { + local_5c = (uint *)0x0; + } + else { + local_5c = FUN_00402460(local_60,local_58); + } + local_5c[3] = local_5c[3] + 1; + FUN_004024d8((int *)local_cc,2); + FUN_00402a4c((int *)&local_48,(int *)&local_c,(int *)&local_5c); + local_64 = local_48; + piVar1 = local_48 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_48,3); + } + local_68 = local_5c; + puVar2 = local_5c + 3; + *puVar2 = *puVar2 - 1; + if (*puVar2 == 0) { + FUN_004024d8((int *)local_5c,3); + } + local_6c = local_50; + puVar2 = local_50 + 3; + *puVar2 = *puVar2 - 1; + if (*puVar2 == 0) { + FUN_004024d8((int *)local_50,3); + } + while( true ) { + iVar3 = FUN_00403f84((int)param_3,(char *)local_c[2]); + if (iVar3 == 0) break; + FUN_0049e88c(param_1,param_2,(char *)local_c[2],param_3,param_4,param_5); + local_44 = local_44 + 1; + local_74 = (char *)FUN_004dd3ec(local_44,local_9c,10); + puVar2 = (uint *)FUN_00402298(0x10); + if (puVar2 == (uint *)0x0) { + local_78 = (uint *)0x0; + } + else { + local_78 = FUN_00402460(puVar2,local_74); + } + local_78[3] = local_78[3] + 1; + FUN_00402624(local_dc,(int)local_8,(int)local_78); + local_7c = local_d4; + puVar2 = (uint *)FUN_00402298(0x10); + if (puVar2 == (uint *)0x0) { + local_80 = (uint *)0x0; + } + else { + local_80 = FUN_00402460(puVar2,local_7c); + } + local_80[3] = local_80[3] + 1; + FUN_004024d8((int *)local_dc,2); + FUN_00402a4c((int *)&local_70,(int *)&local_c,(int *)&local_80); + piVar1 = local_70 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_70,3); + } + puVar2 = local_80 + 3; + *puVar2 = *puVar2 - 1; + if (*puVar2 == 0) { + FUN_004024d8((int *)local_80,3); + } + puVar2 = local_78 + 3; + *puVar2 = *puVar2 - 1; + if (*puVar2 == 0) { + FUN_004024d8((int *)local_78,3); + } + } + uVar5 = 1; + local_84 = local_c; + puVar2 = local_c + 3; + *puVar2 = *puVar2 - 1; + if (*puVar2 == 0) { + FUN_004024d8((int *)local_c,3); + } + local_88 = local_8; + puVar2 = local_8 + 3; + *puVar2 = *puVar2 - 1; + if (*puVar2 == 0) { + FUN_004024d8((int *)local_8,3); + } + return uVar5; +} + + + +/* @0049f204 file=? name=FUN_0049f204 */ + +undefined4 * __cdecl FUN_0049f204(undefined4 *param_1,undefined4 param_2,undefined4 param_3) + +{ + FUN_00419184(param_1,param_2,param_3); + *param_1 = &PTR_FUN_0050bd68; + return param_1; +} + + + +/* @0049f227 file=? name=FUN_0049f227 */ + +void __cdecl FUN_0049f227(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0050bd68; + FUN_004191b4(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0049f253 file=? name=FUN_0049f253 */ + +undefined4 __cdecl FUN_0049f253(undefined4 param_1,int param_2,int param_3) + +{ + undefined4 uVar1; + + if (*(float *)(param_2 + 0x14) == *(float *)(param_3 + 0x14)) { + return 0; + } + if (*(float *)(param_2 + 0x14) <= *(float *)(param_3 + 0x14)) { + uVar1 = 0xffffffff; + } + else { + uVar1 = 1; + } + return uVar1; +} + + + +/* @0049f284 file=? name=FUN_0049f284 */ + +undefined4 __cdecl FUN_0049f284(undefined4 param_1,float *param_2,int param_3) + +{ + undefined4 uVar1; + + if (*param_2 == *(float *)(param_3 + 0x14)) { + return 0; + } + if (*param_2 <= *(float *)(param_3 + 0x14)) { + uVar1 = 0xffffffff; + } + else { + uVar1 = 1; + } + return uVar1; +} + + + +/* @0049f2b2 file=? name=FUN_0049f2b2 */ + +undefined4 * __cdecl FUN_0049f2b2(undefined4 *param_1,undefined4 param_2,undefined4 param_3) + +{ + FUN_00419184(param_1,param_2,param_3); + *param_1 = &PTR_FUN_0050bd4c; + return param_1; +} + + + +/* @0049f2d5 file=? name=FUN_0049f2d5 */ + +void __cdecl FUN_0049f2d5(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0050bd4c; + FUN_004191b4(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0049f301 file=? name=FUN_0049f301 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl FUN_0049f301(undefined4 param_1,int param_2,int param_3) + +{ + undefined4 uVar1; + float10 fVar2; + + fVar2 = FUN_004dcd00((double)(*(float *)(param_2 + 0x14) - *(float *)(param_3 + 0x14))); + if ((float10)_DAT_0049f369 < fVar2) { + if (*(float *)(param_2 + 0x14) <= *(float *)(param_3 + 0x14)) { + uVar1 = 0xffffffff; + } + else { + uVar1 = 1; + } + } + else { + uVar1 = 0; + } + return uVar1; +} + + + +/* @0049f3d5 file=? name=FUN_0049f3d5 */ + +undefined4 * __cdecl FUN_0049f3d5(undefined4 *param_1,undefined4 param_2,undefined4 param_3) + +{ + FUN_00419184(param_1,param_2,param_3); + *param_1 = &PTR_FUN_0050bd30; + return param_1; +} + + + +/* @0049f3f8 file=? name=FUN_0049f3f8 */ + +void __cdecl FUN_0049f3f8(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0050bd30; + FUN_004191b4(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @0049f424 file=? name=FUN_0049f424 */ + +undefined4 __cdecl FUN_0049f424(undefined4 param_1,int param_2,int param_3) + +{ + undefined4 uVar1; + + if (*(int *)(param_3 + 0x14) == *(int *)(param_2 + 0x14)) { + uVar1 = 0; + } + else { + uVar1 = 1; + if (*(int *)(param_2 + 0x14) <= *(int *)(param_3 + 0x14)) { + uVar1 = 0xffffffff; + } + } + return uVar1; +} + + + +/* @0049f453 file=? name=FUN_0049f453 */ + +undefined4 __cdecl FUN_0049f453(undefined4 param_1,int *param_2,int param_3) + +{ + undefined4 uVar1; + + if (*(int *)(param_3 + 0x14) == *param_2) { + uVar1 = 0; + } + else { + uVar1 = 1; + if (*param_2 <= *(int *)(param_3 + 0x14)) { + uVar1 = 0xffffffff; + } + } + return uVar1; +} + + + +/* @0049f47f file=? name=FUN_0049f47f */ + +undefined4 * __cdecl FUN_0049f47f(undefined4 param_1,int param_2,undefined4 *param_3) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_0041d485(); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_0041d42e(puVar1,param_1,param_2,param_3); + } + return puVar1; +} + + + +/* @0049f4af file=? name=FUN_0049f4af */ + +undefined4 * __cdecl FUN_0049f4af(undefined4 param_1,int param_2,undefined4 *param_3) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_0049f568(); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_0049f50f(puVar1,param_1,param_2,param_3); + } + return puVar1; +} + + + +/* @0049f4df file=? name=FUN_0049f4df */ + +undefined4 * __cdecl FUN_0049f4df(undefined4 param_1,int param_2,undefined4 *param_3) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00437fc5(); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_00437f6e(puVar1,param_1,param_2,param_3); + } + return puVar1; +} + + + +/* @0049f50f file=? name=FUN_0049f50f */ + +undefined4 * __cdecl +FUN_0049f50f(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 *param_4) + +{ + FUN_004190e8(param_1,param_2,param_3); + *param_1 = &PTR_FUN_0050bdb0; + param_1[5] = *param_4; + return param_1; +} + + + +/* @0049f53c file=? name=FUN_0049f53c */ + +void __cdecl FUN_0049f53c(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0050bdb0; + FUN_0041910c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_0049f5b8(param_1); + } + } + return; +} + + + +/* @0049f568 file=? name=FUN_0049f568 */ + +void FUN_0049f568(void) + +{ + int iVar1; + undefined4 *puVar2; + + iVar1 = DAT_0050bdac; + DAT_0050bdac = DAT_0050bdac + 1; + puVar2 = DAT_0050bda8; + if ((iVar1 == 0) && (puVar2 = (undefined4 *)FUN_00402298(0x28), puVar2 != (undefined4 *)0x0)) { + FUN_00402b98(puVar2,0x18,100,100,s_TableEntryOf_0050bd23); + } + DAT_0050bda8 = puVar2; + FUN_00402f74((int)DAT_0050bda8); + return; +} + + + +/* @0049f5b8 file=? name=FUN_0049f5b8 */ + +void __cdecl FUN_0049f5b8(undefined4 *param_1) + +{ + FUN_00402f98((int)DAT_0050bda8,param_1); + DAT_0050bdac = DAT_0050bdac + -1; + if (DAT_0050bdac == 0) { + if (DAT_0050bda8 != (int *)0x0) { + FUN_00402c28(DAT_0050bda8,0); + FUN_004022d0(DAT_0050bda8); + } + DAT_0050bda8 = (int *)0x0; + } + return; +} + + + +/* @0049f624 file=? name=FUN_0049f624 */ + +void __cdecl FUN_0049f624(int param_1,int param_2) + +{ + int iVar1; + + FUN_0041fd18(param_1,param_2); + iVar1 = *(int *)(param_1 + 400); + *(int *)(iVar1 + 0x1fc) = param_1; + *(uint *)(iVar1 + 0x28) = *(uint *)(iVar1 + 0x28) & 0xffffbfff; + if ((*(uint *)(param_1 + 0x28) & 0xc) != 4) { + *(undefined4 *)(*(int *)(param_1 + 0x7dc) + 0x1d4) = + *(undefined4 *)(*(int *)(iVar1 + 0x1f8) + 0xf4); + } + return; +} + + + +/* @0049f674 file=? name=FUN_0049f674 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_0049f674(int *param_1) + +{ + int iVar1; + int iVar2; + + iVar2 = *(int *)(DAT_004efc94 + 0x2c); + iVar1 = FUN_0042904c(iVar2); + param_1[0x41] = (int)((float)iVar1 * _DAT_0049f6f8); + iVar2 = FUN_0042904c(iVar2); + param_1[0x40] = (int)((float)iVar2 * _DAT_0049f6fc); + FUN_0040ab44((float *)(param_1 + 0x34),param_1 + 0x40); + (**(code **)(*param_1 + 0x34))(param_1); + FUN_0041bbd8((int)(param_1 + 0xb),2); + FUN_004a4c54((int)param_1,1); + param_1[10] = param_1[10] & 0xfffffffd; + return; +} + + + +/* @0049f728 file=? name=FUN_0049f728 */ + +void __cdecl FUN_0049f728(int param_1,int param_2) + +{ + int iVar1; + int local_10 [3]; + + if (0 < *(int *)(param_2 + 0xc)) { + FUN_004a4f15(local_10,param_1 + 0x7cc); + while( true ) { + iVar1 = (**(code **)(local_10[0] + 0x28))(local_10); + if (iVar1 == 0) break; + *(undefined4 *)(iVar1 + 0x1d0) = 1; + } + FUN_0049f788(param_1); + FUN_004a4f72(local_10,2); + } + return; +} + + + +/* @0049f788 file=? name=FUN_0049f788 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_0049f788(int param_1) + +{ + int iVar1; + int iVar2; + int iVar3; + int local_14 [3]; + float local_8; + + FUN_004a4f15(local_14,param_1 + 0x7cc); + iVar3 = 0; + while (iVar1 = (**(code **)(local_14[0] + 0x28))(local_14), iVar1 != 0) { + iVar3 = iVar3 + *(int *)(iVar1 + 0x1d0); + } + (**(code **)(local_14[0] + 4))(local_14); + while (iVar1 = (**(code **)(local_14[0] + 0x28))(local_14), iVar1 != 0) { + local_8 = _DAT_0049f850; + if (0 < iVar3) { + local_8 = (float)*(int *)(iVar1 + 0x1d0) / (float)iVar3; + } + if (local_8 <= *(float *)(iVar1 + 0x15c)) { + iVar2 = 2; + } + else { + iVar2 = 1; + } + FUN_0041bbd8(iVar1 + 0x1dc,iVar2); + *(float *)(iVar1 + 0x15c) = local_8; + FUN_0041bbd8(iVar1 + 0x1dc,0); + } + FUN_004a4f72(local_14,2); + return; +} + + + +/* @0049fa00 file=? name=FUN_0049fa00 */ + +void __cdecl FUN_0049fa00(int param_1,int param_2) + +{ + if (0 < *(int *)(param_2 + 0xc)) { + *(undefined4 *)(param_1 + 0x398) = 1; + } + return; +} + + + +/* @0049fa1c file=? name=FUN_0049fa1c */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_0049fa1c(int param_1) + +{ + int iVar1; + bool bVar2; + int iVar3; + undefined4 uVar4; + int iVar5; + undefined4 local_10; + undefined4 local_c; + undefined4 local_8; + + local_8 = 0; + local_c = 0; + local_10 = 0.0; + for (iVar5 = 2; iVar5 < *(int *)(param_1 + 0x124); iVar5 = iVar5 + 1) { + iVar1 = *(int *)(*(int *)(param_1 + 0x128) + iVar5 * 4); + if (iVar1 != 0) { + if (*(int *)(iVar1 + 4) == 0xbbe) { + local_10 = *(float *)(iVar1 + 300) / *(float *)(iVar1 + 0x128); + } + else if (*(int *)(iVar1 + 4) == 0xbc1) { + if ((*(int *)(iVar1 + 0x40) != 1) && (*(int *)(iVar1 + 0x210) != 4)) { + local_c = local_c + 1; + } + } + else { + iVar3 = FUN_0041a1a4(**(int **)(iVar1 + 0xc),0x511830); + if ((iVar3 != 0) && (*(int *)(iVar1 + 0x40) != 1)) { + iVar3 = FUN_0041a1a4(**(int **)(iVar1 + 0xc),0x5121a8); + if (iVar3 == 0) { + local_8 = local_8 + 1; + } + else if (*(int *)(iVar1 + 0x364) != 7) { + local_8 = local_8 + 1; + } + } + } + } + } + if ((*(int *)(param_1 + 0x40) == 3) || (*(int *)(param_1 + 0x40) == 4)) { + bVar2 = true; + } + else { + bVar2 = false; + } + if ((((local_8 < *(int *)(param_1 + 0x448)) || (local_c == 0)) || (local_10 < _DAT_0049fb50)) || + ((bVar2 && (*(int *)(*(int *)(param_1 + 400) + 0x25c) == 0)))) { + uVar4 = 1; + } + else { + uVar4 = 0; + } + *(undefined4 *)(param_1 + 0x414) = uVar4; + return; +} + + + +/* @0049fb54 file=? name=FUN_0049fb54 */ + +undefined4 __cdecl FUN_0049fb54(int param_1) + +{ + undefined4 uVar1; + + if ((*(int *)(param_1 + 0x40) == 2) || (*(int *)(param_1 + 0x40) == 9)) { + uVar1 = 1; + } + else { + uVar1 = 0; + } + return uVar1; +} + + + +/* @0049fb74 file=? name=FUN_0049fb74 */ + +void __cdecl FUN_0049fb74(int param_1,undefined4 *param_2,undefined4 param_3) + +{ + int *piVar1; + undefined4 *puVar2; + int iVar3; + + FUN_0040a938((undefined4 *)(param_1 + 0x100),param_2); + FUN_00408440((undefined4 *)(param_1 + 0x58c),param_2); + FUN_0040a938((undefined4 *)(param_1 + 0x260),param_2); + FUN_0040a938((undefined4 *)(param_1 + 300),param_2); + FUN_0040a7f4((undefined4 *)(param_1 + 0x1c4),(undefined4 *)&DAT_004e0fd4); + FUN_0040a7f4((undefined4 *)(param_1 + 0x298),(undefined4 *)&DAT_004e0fd4); + FUN_0040a7f4((undefined4 *)(param_1 + 0x2c8),(undefined4 *)&DAT_004e0fd4); + FUN_0040a7f4((undefined4 *)(param_1 + 0x1dc),(undefined4 *)&DAT_004e0fd4); + FUN_00408440((undefined4 *)(param_1 + 500),&DAT_004e0f74); + FUN_00408440((undefined4 *)(param_1 + 0x200),&DAT_004e0f74); + FUN_00408440((undefined4 *)(param_1 + 0x598),&DAT_004e0f74); + *(undefined4 *)(param_1 + 0x5a4) = 0; + FUN_0040ab44((float *)(param_1 + 0xd0),(undefined4 *)(param_1 + 0x100)); + *(undefined4 *)(param_1 + 0x77c) = 0; + *(undefined4 *)(param_1 + 0x348) = 0; + *(undefined4 *)(param_1 + 0x6b8) = 0; + *(undefined4 *)(param_1 + 0x6b4) = 0; + *(undefined4 *)(param_1 + 0x3f0) = 0; + FUN_0041bbd8(param_1 + 0x2c,0); + *(undefined4 *)(param_1 + 0x328) = 0; + *(undefined4 *)(param_1 + 0x32c) = 0; + *(undefined4 *)(param_1 + 0x330) = 0; + *(undefined4 *)(param_1 + 0x334) = 0; + *(undefined4 *)(param_1 + 0x338) = 0; + *(undefined4 *)(param_1 + 0x33c) = 0; + *(undefined4 *)(param_1 + 0x54c) = 0; + *(undefined4 *)(param_1 + 0x550) = 0; + *(undefined4 *)(param_1 + 0x554) = 0; + *(undefined4 *)(param_1 + 0x558) = 0; + *(undefined4 *)(param_1 + 0x55c) = 0; + *(undefined4 *)(param_1 + 0x560) = 0; + puVar2 = (undefined4 *)FUN_00414b60(); + *(undefined4 *)(param_1 + 0x778) = *puVar2; + *(undefined4 *)(param_1 + 0x654) = 0; + *(undefined4 *)(param_1 + 0x658) = 0; + *(undefined4 *)(param_1 + 0x650) = 0; + *(undefined4 *)(param_1 + 0x398) = 0; + *(undefined4 *)(param_1 + 0x3f4) = 0; + *(undefined4 *)(param_1 + 0x344) = *(undefined4 *)(param_1 + 0x5b8); + *(undefined4 *)(param_1 + 0x5ac) = 0x3f800000; + FUN_0041bbd8(param_1 + 0x39c,0); + FUN_004283b8(param_1 + 0x65c,1); + FUN_0041bbd8(param_1 + 0x714,0); + *(undefined4 *)(param_1 + 0x3fc) = 0; + *(undefined4 *)(param_1 + 0x400) = DAT_005209d0; + for (iVar3 = 0; iVar3 < *(int *)(param_1 + 0x11c); iVar3 = iVar3 + 1) { + FUN_0041dd68(*(int *)(*(int *)(param_1 + 0x120) + iVar3 * 4)); + } + for (iVar3 = 2; iVar3 < *(int *)(param_1 + 0x124); iVar3 = iVar3 + 1) { + piVar1 = *(int **)(*(int *)(param_1 + 0x128) + iVar3 * 4); + if (piVar1 != (int *)0x0) { + (**(code **)(*piVar1 + 0x28))(piVar1,param_3); + } + } + FUN_0049f788(param_1); + if ((*(uint *)(param_1 + 0x28) & 0xc) != 4) { + FUN_004a4c54(param_1,0x1f); + } + return; +} + + + +/* @0049fe0c file=? name=FUN_0049fe0c */ + +void __cdecl FUN_0049fe0c(int param_1,undefined4 param_2) + +{ + int *piVar1; + int iVar2; + + for (iVar2 = 0; iVar2 < *(int *)(param_1 + 0x124); iVar2 = iVar2 + 1) { + piVar1 = *(int **)(*(int *)(param_1 + 0x128) + iVar2 * 4); + (**(code **)(*piVar1 + 0x2c))(piVar1,param_2); + } + return; +} + + + +/* @0049fe40 file=? name=FUN_0049fe40 */ + +void __cdecl FUN_0049fe40(int param_1,undefined4 param_2) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)**(int **)(param_1 + 0x128); + if ((puVar1 != (undefined4 *)0x0) && (puVar1 != (undefined4 *)0x0)) { + (**(code **)*puVar1)(puVar1,3); + } + **(undefined4 **)(param_1 + 0x128) = param_2; + return; +} + + + +/* @0049fe70 file=? name=FUN_0049fe70 */ + +undefined4 __cdecl FUN_0049fe70(int param_1) + +{ + return *(undefined4 *)(param_1 + 0x5b4); +} + + + +/* @0049fe80 file=? name=FUN_0049fe80 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_0049fe80(int param_1) + +{ + int iVar1; + float fVar2; + int *piVar3; + int iVar4; + int iVar5; + uint local_20; + float local_1c; + uint local_18; + float local_14; + uint local_c; + float local_8; + + local_c = 0; + local_8 = 0.0; + piVar3 = *(int **)(param_1 + 0x120); + for (iVar5 = 0; iVar5 < *(int *)(param_1 + 0x11c); iVar5 = iVar5 + 1) { + iVar4 = *piVar3; + local_c = local_c + 1; + piVar3 = piVar3 + 1; + local_8 = *(float *)(iVar4 + 0x158) + local_8; + } + fVar2 = _DAT_0049ffc8; + if (local_c != 0) { + fVar2 = local_8 / (float)local_c; + } + *(float *)(param_1 + 0x354) = fVar2; + local_18 = 0; + local_14 = 0.0; + local_20 = 0; + local_1c = 0.0; + for (iVar5 = 0; iVar5 < *(int *)(param_1 + 0x124); iVar5 = iVar5 + 1) { + iVar4 = *(int *)(*(int *)(param_1 + 0x128) + iVar5 * 4); + iVar1 = *(int *)(iVar4 + 0xe0); + if (iVar1 != 0) { + local_18 = local_18 + 1; + local_14 = *(float *)(iVar1 + 0x158) + local_14; + iVar4 = FUN_0041a1a4(**(int **)(iVar4 + 0xc),0x51155c); + if (iVar4 != 0) { + local_20 = local_20 + 1; + local_1c = *(float *)(*(int *)(*(int *)(*(int *)(param_1 + 0x128) + iVar5 * 4) + 0xe0) + + 0x158) + local_1c; + } + } + } + fVar2 = _DAT_0049ffc8; + if (local_18 != 0) { + fVar2 = local_14 / (float)local_18; + } + *(float *)(param_1 + 0x358) = fVar2; + fVar2 = _DAT_0049ffc8; + if (local_20 != 0) { + fVar2 = local_1c / (float)local_20; + } + *(float *)(param_1 + 0x35c) = fVar2; + return; +} + + + +/* @004a1232 file=? name=FUN_004a1232 */ + +/* WARNING (jumptable): Unable to track spacebase fully for stack */ +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_004a1232(void) + +{ + undefined4 *puVar1; + int *piVar2; + int *piVar3; + int unaff_EBP; + + puVar1 = *(undefined4 **)(unaff_EBP + 0xc); + piVar2 = *(int **)(unaff_EBP + 8); + switch(*(undefined2 *)((int)puVar1 + 6)) { + case 0: + FUN_00408f44((float *)(unaff_EBP + -0x10),(float *)(piVar2 + 0x4e)); + FUN_00408440((undefined4 *)(unaff_EBP + -0x1c),piVar2 + 0xb5); + FUN_0042249c(piVar2,puVar1); + FUN_00409a00((float *)(piVar2 + 0x4e),(float *)(unaff_EBP + -0x10)); + FUN_00408440(piVar2 + 0xb5,(undefined4 *)(unaff_EBP + -0x1c)); + piVar2[0x1df] = 1; + if ((piVar2[0x1ca] == 2) || (piVar2[0x1ca] == 3)) { + FUN_0040a7f4(piVar2 + 0xa6,(undefined4 *)&DAT_004e0fd4); + } + if ((piVar2[0x10] != piVar2[0xf]) && ((piVar2[0xf] == 2 || (piVar2[0x10] == 2)))) { + FUN_0040a938(piVar2 + 0x40,piVar2 + 0x4b); + FUN_0040a938(piVar2 + 0x98,piVar2 + 0x4b); + FUN_0040a7f4(piVar2 + 0xa6,piVar2 + 0xb2); + piVar2[0x1df] = 0; + if ((*(byte *)((int)piVar2 + 0x29) & 0x40) == 0) { + (**(code **)(*piVar2 + 0x34))(piVar2); + } + } + piVar2[0x1ad] = puVar1[0x1d]; + break; + default: + FUN_0042249c(piVar2,puVar1); + break; + case 2: + FUN_0041bd34((int)piVar2,(int)puVar1); + piVar2[0x1ad] = puVar1[4]; + break; + case 3: + FUN_0041bd34((int)piVar2,(int)puVar1); + piVar2[0x196] = puVar1[4]; + FUN_0041bbd8((int)(piVar2 + 0x131),puVar1[6]); + if (puVar1[5] == 0) { + FUN_004283b8((int)(piVar2 + 0x197),1); + FUN_0041bbd8((int)(piVar2 + 0x1c5),puVar1[5]); + } + else if (puVar1[5] == 1) { + FUN_0041bbd8((int)(piVar2 + 0x1c5),puVar1[5]); + } + else { + FUN_004a800c((int)piVar2,puVar1[5]); + } + piVar2[0x1ad] = puVar1[7]; + break; + case 4: + FUN_0041bd34((int)piVar2,(int)puVar1); + piVar3 = (int *)FUN_00414b60(); + piVar2[0x1de] = *piVar3; + FUN_00409a00((float *)(piVar2 + 0x4e),(float *)(puVar1 + 4)); + FUN_00408440(piVar2 + 0xb5,puVar1 + 7); + piVar3 = (int *)FUN_00414b60(); + piVar2[0xb8] = *piVar3; + *(int *)(unaff_EBP + -0x34) = piVar2[0xb8] - piVar2[5]; + *(float *)(unaff_EBP + -4) = (float)*(int *)(unaff_EBP + -0x34) / DAT_0052140c; + if (*(float *)(unaff_EBP + -4) < _DAT_004a1670) { + piVar2[0xb8] = piVar2[0xb8] + (piVar2[0xb8] - piVar2[5]); + } + piVar2[0x1ad] = puVar1[10]; + break; + case 5: + FUN_0041bd34((int)piVar2,(int)puVar1); + FUN_0041bbd8((int)(piVar2 + 0x114),puVar1[4]); + piVar2[0x129] = puVar1[5]; + FUN_00408440(piVar2 + 0x12a,puVar1 + 6); + piVar2[0x12d] = puVar1[9]; + FUN_004a800c((int)piVar2,0x20); + FUN_0040a7f4(piVar2 + 0xa6,(undefined4 *)&DAT_004e0fd4); + piVar2[0x1ad] = puVar1[10]; + break; + case 6: + FUN_0041bd34((int)piVar2,(int)puVar1); + FUN_0041bbd8((int)(piVar2 + 0x114),puVar1[4]); + piVar2[0x129] = puVar1[5]; + FUN_00408440(piVar2 + 0x12a,puVar1 + 6); + piVar2[0x12d] = puVar1[9]; + FUN_0041bbd8((int)(piVar2 + 0x1c5),0); + piVar2[0x195] = 1; + piVar2[0x196] = 1; + FUN_0040a7f4(piVar2 + 0xa6,(undefined4 *)&DAT_004e0fd4); + piVar2[0x1ad] = puVar1[10]; + break; + case 7: + FUN_0041bd34((int)piVar2,(int)puVar1); + FUN_0041bbd8((int)(piVar2 + 0x114),puVar1[4]); + piVar2[0x129] = puVar1[5]; + FUN_00408440(piVar2 + 0x12a,puVar1 + 6); + piVar2[0x12d] = puVar1[9]; + piVar2[0x1ad] = puVar1[10]; + break; + case 8: + FUN_0041bd34((int)piVar2,(int)puVar1); + piVar2[0xfd] = puVar1[4]; + piVar2[0x1ad] = puVar1[5]; + } + if ((piVar2[0xf] != piVar2[0x10]) && (piVar2[0xf] == 2)) { + FUN_00436668((undefined4 *)(unaff_EBP + -0x30),(int)piVar2); + FUN_004364e4(*(int *)(DAT_004efc94 + 0x38),piVar2,(uint *)(unaff_EBP + -0x30)); + FUN_0041bbd8((int)(piVar2 + 0xb),piVar2[0x10]); + } + return; +} + + + +/* @004a1674 file=bt/mech.cpp name=FUN_004a1674 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +int * __cdecl FUN_004a1674(int *param_1,int param_2,undefined4 param_3) + +{ + int *piVar1; + char cVar2; + int iVar3; + undefined4 uVar4; + int *piVar5; + int iVar6; + uint *puVar7; + int iVar8; + undefined4 *puVar9; + uint uVar10; + uint uVar11; + char *pcVar12; + char *pcVar13; + int local_1f8 [6]; + int local_1e0 [6]; + int local_1c8 [6]; + char local_1b0 [32]; + int local_190 [3]; + int local_184 [7]; + undefined4 local_168 [2]; + int *local_160; + int *local_158; + int local_154; + int *local_150; + int *local_14c; + int *local_148; + int *local_144; + int *local_140; + int *local_13c; + undefined4 *local_138; + undefined4 *local_134; + int local_130; + uint *local_12c; + int local_128; + int local_124; + undefined4 local_120; + uint *local_11c; + char *local_118; + int local_114; + undefined4 local_110; + int local_10c; + float *local_108; + float local_104; + float local_100; + float *local_fc; + float local_f8; + float local_f4; + float local_f0; + float local_ec; + float local_e8; + float local_e4; + float local_e0; + float local_dc; + float local_d8; + float local_d4; + float local_d0; + float local_cc; + float local_c8; + float local_c4; + float local_c0; + float local_bc; + float local_b8; + int *local_b4; + undefined4 *local_b0; + int local_ac; + undefined4 *local_a8; + undefined4 *local_a4; + int *local_a0; + int *local_9c; + int *local_98; + int *local_94; + int *local_90; + int *local_8c; + int *local_88; + int *local_84; + int *local_80; + int *local_7c; + int *local_78; + int *local_74; + int *local_70; + int *local_6c; + int *local_68; + int *local_64; + int *local_60; + int *local_5c; + int local_58; + int local_54; + int local_50; + int local_4c; + int local_48; + int *local_44; + float *local_40; + int *local_3c; + int *local_38; + int *local_34; + int *local_30; + int *local_2c; + int *local_28; + int *local_24; + undefined4 *local_20; + undefined4 *local_1c; + undefined4 *local_18; + int *local_14; + int *local_10; + int *local_c; + int *local_8; + + FUN_00424e38(param_1,param_2,param_3); + *param_1 = (int)&PTR_FUN_0050cfa8; + local_8 = param_1 + 0xd8; + FUN_00435a7c(param_1 + 0xdb); + FUN_0041b9ec(param_1 + 0xe7,0x21); + param_1[0xff] = 0; + param_1[0x100] = DAT_005209d0; + param_1[0x104] = 0; + FUN_004a4d60(param_1 + 0x106,0); + FUN_00420ea4(param_1 + 0x10f,param_1 + 0x61); + FUN_0041b9ec(param_1 + 0x114,3); + param_1[0x12a] = 0; + param_1[299] = 0; + param_1[300] = 0x3f800000; + FUN_0041b9ec(param_1 + 0x131,2); + local_c = param_1 + 0x163; + local_10 = param_1 + 0x166; + FUN_00427768(param_1 + 0x197,(int)param_1); + FUN_00427768(param_1 + 0x1af,(int)param_1); + FUN_0041b9ec(param_1 + 0x1c5,0x21); + param_1[0x1e8] = 0; + param_1[0x1e9] = 0; + param_1[0x1ea] = 0; + FUN_004a4dab(param_1 + 0x1eb,0); + FUN_004a4df6(param_1 + 0x1ef,0); + FUN_004a4e41(param_1 + 499,0); + FUN_0043ad4f((uint *)(param_1 + 0x1f8),0xf,0); + FUN_0043ad4f((uint *)(param_1 + 0x1fb),0xf,0); + FUN_0043ad4f((uint *)(param_1 + 0x1fe),0xf,0); + FUN_0043ad4f((uint *)(param_1 + 0x201),0xf,0); + FUN_0043ad4f((uint *)(param_1 + 0x204),0xf,0); + local_14 = param_1 + 0x20e; + local_18 = (undefined4 *)FUN_00402298(0x10); + if (local_18 == (undefined4 *)0x0) { + iVar3 = 0; + } + else { + iVar3 = FUN_004023f4(local_18); + } + param_1[0x211] = iVar3; + piVar1 = (int *)(param_1[0x211] + 0xc); + *piVar1 = *piVar1 + 1; + local_1c = (undefined4 *)FUN_00402298(0x10); + if (local_1c == (undefined4 *)0x0) { + iVar3 = 0; + } + else { + iVar3 = FUN_004023f4(local_1c); + } + param_1[0x212] = iVar3; + piVar1 = (int *)(param_1[0x212] + 0xc); + *piVar1 = *piVar1 + 1; + local_20 = (undefined4 *)FUN_00402298(0x10); + if (local_20 == (undefined4 *)0x0) { + iVar3 = 0; + } + else { + iVar3 = FUN_004023f4(local_20); + } + param_1[0x213] = iVar3; + piVar1 = (int *)(param_1[0x213] + 0xc); + *piVar1 = *piVar1 + 1; + param_1[10] = param_1[10] | 0x10; + param_1[0x14a] = 0; + param_1[0x10e] = 0; + param_1[0x16d] = 0; + param_1[0xca] = 0; + param_1[0xcb] = 0; + param_1[0xcc] = 0; + param_1[0xcd] = 0; + param_1[0xce] = 0; + param_1[0xcf] = 0; + param_1[0x153] = 0; + param_1[0x154] = 0; + param_1[0x155] = 0; + param_1[0x156] = 0; + param_1[0x157] = 0; + param_1[0x158] = 0; + param_1[0xd0] = 0; + local_24 = (int *)FUN_00414b60(); + local_28 = param_1 + 0x1de; + *local_28 = *local_24; + param_1[0xd2] = 0; + param_1[0x1ae] = 0; + param_1[0x1ad] = 0; + FUN_0040a938(param_1 + 0x98,param_1 + 0x40); + FUN_0040a938(param_1 + 0x4b,param_1 + 0x40); + local_2c = param_1 + 0x40; + local_30 = param_1 + 0x163; + FUN_00408440(local_30,local_2c); + FUN_0040a7f4(param_1 + 0x71,(undefined4 *)&DAT_004e0fd4); + FUN_0040a7f4(param_1 + 0xa6,(undefined4 *)&DAT_004e0fd4); + FUN_0040a7f4(param_1 + 0xb2,(undefined4 *)&DAT_004e0fd4); + FUN_0040a7f4(param_1 + 0x77,(undefined4 *)&DAT_004e0fd4); + local_34 = param_1 + 0x7d; + FUN_00408440(local_34,&DAT_004e0f74); + local_38 = param_1 + 0x80; + FUN_00408440(local_38,&DAT_004e0f74); + local_3c = param_1 + 0x40; + local_40 = (float *)(param_1 + 0x34); + FUN_0040ab44(local_40,local_3c); + local_44 = param_1 + 0x166; + FUN_00408440(local_44,&DAT_004e0f74); + param_1[0x169] = 0; + param_1[0xe6] = 0; + param_1[0x1df] = 0; + param_1[0xfe] = 0; + param_1[0xfc] = 0; + param_1[0x105] = 0; + FUN_00408e90(param_1 + 0xd8,&DAT_004e0f8c); + param_1[0x160] = 0; + param_1[0x15f] = 0; + param_1[0x194] = 0; + param_1[0x207] = 0; + param_1[0x208] = 0; + param_1[0x20a] = 0; + FUN_0040a7f4(param_1 + 0x20b,(undefined4 *)&DAT_004e0fd4); + param_1[0x1e7] = 0; + param_1[0x1dd] = 0; + param_1[0x209] = 0; + param_1[0xd5] = 0; + param_1[0xd6] = 0; + param_1[0xd7] = 0; + param_1[0x12d] = 0; + param_1[0x129] = 2; + param_1[0x1e0] = param_1[0x119]; + FUN_0041bbd8((int)(param_1 + 0x131),1); + FUN_0041bbd8((int)(param_1 + 0x131),param_1[0x136]); + local_50 = param_1[0xbb]; + param_1[0x146] = *(int *)(local_50 + 0xc); + param_1[0x147] = (int)((float)_DAT_004a2d38 * (float)param_1[0x146]); + param_1[0x16a] = 0x3f800000; + param_1[0x16b] = 0x3f800000; + local_54 = param_1[0x65]; + local_4c = local_50; + local_48 = FUN_00433ed4(*(int *)(DAT_004efc94 + 0x30) + 0x14); + param_1[0x94] = *(int *)(local_48 + 0x34) + 0x2c; + if ((param_1[10] & 0xcU) == 4) { + param_1[7] = (int)PTR_LAB_0050c0e8; + param_1[8] = DAT_0050c0ec; + param_1[9] = DAT_0050c0f0; + } + else { + param_1[7] = (int)PTR_LAB_0050c0f4; + param_1[8] = DAT_0050c0f8; + param_1[9] = DAT_0050c0fc; + } + param_1[0x101] = 0x447a0000; + param_1[0x102] = 0; + param_1[0x103] = (int)(param_1 + 0x43); + local_58 = FUN_00407064(*(int *)(DAT_004efc94 + 0x68),param_1[0x6f],0x11); + iVar3 = *(int *)(local_58 + 4); + *(int *)(local_58 + 4) = *(int *)(local_58 + 4) + 1; + if (iVar3 == 0) { + FUN_00406cd0(local_58); + } + FUN_004030dc(local_168,*(undefined4 *)(local_58 + 0x3c),*(undefined4 *)(local_58 + 0x40),0); + param_1[0x49] = *local_160 + 2; + local_160 = local_160 + 1; + iVar3 = FUN_004022b0(param_1[0x49] << 2); + param_1[0x4a] = iVar3; + *(undefined4 *)param_1[0x4a] = 0; + uVar4 = FUN_00417ab4((int)(param_1 + 199)); + *(undefined4 *)(param_1[0x4a] + 4) = uVar4; + param_1[0x12e] = (int)((*(float *)(param_1[0xba] + 4) - *(float *)param_1[0xba]) * _DAT_004a2d40); + *(float *)(param_1[0xbb] + 8) = (float)param_1[0x12e] + *(float *)(param_1[0xbb] + 8); + param_1[0x112] = 0; + param_1[0x10d] = 0; + for (iVar3 = 2; piVar1 = local_160, iVar3 < param_1[0x49]; iVar3 = iVar3 + 1) { + *(undefined4 *)(param_1[0x4a] + iVar3 * 4) = 0; + if (((*(byte *)(local_160 + 0xb) & 4) == 0) || ((param_1[10] & 0xcU) != 4)) { + switch(local_160[8]) { + case 0xbbd: + local_64 = (int *)FUN_00402298(0x230); + if (local_64 == (int *)0x0) { + piVar5 = (int *)0x0; + } + else { + piVar5 = FUN_004ae568(local_64,(int)param_1,iVar3,(char *)piVar1); + } + *(int **)(param_1[0x4a] + iVar3 * 4) = piVar5; + break; + case 0xbbe: + local_5c = (int *)FUN_00402298(0x1e4); + if (local_5c == (int *)0x0) { + piVar5 = (int *)0x0; + } + else { + piVar5 = FUN_004ae8d0(local_5c,(int)param_1,iVar3,(char *)piVar1); + } + *(int **)(param_1[0x4a] + iVar3 * 4) = piVar5; + param_1[0x1f7] = *(int *)(param_1[0x4a] + iVar3 * 4); + break; + default: + FUN_0040385c(s_Unknown_subsystem_resource_>clas_0050c411,s_d__tesla_bt_bt_MECH_CPP_0050c436, + 0x936); + break; + case 0xbc0: + local_60 = (int *)FUN_00402298(0x230); + if (local_60 == (int *)0x0) { + piVar5 = (int *)0x0; + } + else { + piVar5 = FUN_004af408(local_60,(int)param_1,iVar3,(char *)piVar1,&DAT_0050e640); + } + *(int **)(param_1[0x4a] + iVar3 * 4) = piVar5; + break; + case 0xbc1: + local_70 = (int *)FUN_00402298(0x250); + if (local_70 == (int *)0x0) { + piVar5 = (int *)0x0; + } + else { + piVar5 = FUN_004b225c(local_70,(int)param_1,iVar3,(char *)piVar1); + } + *(int **)(param_1[0x4a] + iVar3 * 4) = piVar5; + break; + case 0xbc2: + local_68 = (int *)FUN_00402298(0x31c); + if (local_68 == (int *)0x0) { + piVar5 = (int *)0x0; + } + else { + piVar5 = FUN_004b0f74(local_68,(int)param_1,iVar3,(char *)piVar1,&DAT_0050f4ac,0,0); + } + *(int **)(param_1[0x4a] + iVar3 * 4) = piVar5; + break; + case 0xbc3: + local_80 = (int *)FUN_00402298(0x328); + if (local_80 == (int *)0x0) { + piVar5 = (int *)0x0; + } + else { + piVar5 = FUN_004b1d18(local_80,(int)param_1,iVar3,(char *)piVar1); + } + *(int **)(param_1[0x4a] + iVar3 * 4) = piVar5; + break; + case 0xbc4: + local_84 = (int *)FUN_00402298(0x3d0); + if (local_84 == (int *)0x0) { + piVar5 = (int *)0x0; + } + else { + piVar5 = FUN_004b3778(local_84,(int)param_1,iVar3,(char *)piVar1); + } + *(int **)(param_1[0x4a] + iVar3 * 4) = piVar5; + param_1[0x14a] = *(int *)(param_1[0x4a] + iVar3 * 4); + break; + case 0xbc5: + local_88 = (int *)FUN_00402298(0x280); + if (local_88 == (int *)0x0) { + piVar5 = (int *)0x0; + } + else { + piVar5 = FUN_004b6b0c(local_88,(int)param_1,iVar3,(char *)piVar1); + } + *(int **)(param_1[0x4a] + iVar3 * 4) = piVar5; + param_1[0x10e] = *(int *)(param_1[0x4a] + iVar3 * 4); + break; + case 0xbc6: + local_6c = (int *)FUN_00402298(0x358); + if (local_6c == (int *)0x0) { + piVar5 = (int *)0x0; + } + else { + piVar5 = FUN_004b8fec(local_6c,(int)param_1,iVar3,(char *)piVar1); + } + *(int **)(param_1[0x4a] + iVar3 * 4) = piVar5; + break; + case 0xbc8: + local_8c = (int *)FUN_00402298(0x478); + if (local_8c == (int *)0x0) { + piVar5 = (int *)0x0; + } + else { + piVar5 = FUN_004bb120(local_8c,(int)param_1,iVar3,(char *)piVar1,&DAT_00511d78); + } + *(int **)(param_1[0x4a] + iVar3 * 4) = piVar5; + param_1[0x112] = param_1[0x112] + 1; + break; + case 0xbcb: + local_a0 = (int *)FUN_00402298(0x22c); + if (local_a0 == (int *)0x0) { + piVar5 = (int *)0x0; + } + else { + piVar5 = FUN_004bd5c4(local_a0,(int)param_1,iVar3,(char *)piVar1); + } + *(int **)(param_1[0x4a] + iVar3 * 4) = piVar5; + break; + case 0xbcd: + local_94 = (int *)FUN_00402298(0x448); + if (local_94 == (int *)0x0) { + piVar5 = (int *)0x0; + } + else { + piVar5 = FUN_004bc3fc(local_94,(int)param_1,iVar3,(char *)piVar1,&DAT_00512198); + } + *(int **)(param_1[0x4a] + iVar3 * 4) = piVar5; + param_1[0x112] = param_1[0x112] + 1; + break; + case 0xbce: + local_9c = (int *)FUN_00402298(0x484); + if (local_9c == (int *)0x0) { + piVar5 = (int *)0x0; + } + else { + piVar5 = FUN_004bdcb4(local_9c,(int)param_1,iVar3,(char *)piVar1,&DAT_005128a8); + } + *(int **)(param_1[0x4a] + iVar3 * 4) = piVar5; + param_1[0x112] = param_1[0x112] + 1; + break; + case 0xbd0: + local_98 = (int *)FUN_00402298(0x44c); + if (local_98 == (int *)0x0) { + piVar5 = (int *)0x0; + } + else { + piVar5 = FUN_004bcff0(local_98,(int)param_1,iVar3,(char *)piVar1,&DAT_00512478); + } + *(int **)(param_1[0x4a] + iVar3 * 4) = piVar5; + param_1[0x112] = param_1[0x112] + 1; + break; + case 0xbd3: + local_a4 = (undefined4 *)FUN_00402298(0x130); + if (local_a4 == (undefined4 *)0x0) { + puVar9 = (undefined4 *)0x0; + } + else { + puVar9 = FUN_0049bca4(local_a4,param_1,iVar3,(char *)piVar1,&DAT_0050b6bc); + } + *(undefined4 **)(param_1[0x4a] + iVar3 * 4) = puVar9; + param_1[0x10d] = *(int *)(param_1[0x4a] + iVar3 * 4); + break; + case 0xbd4: + local_90 = (int *)FUN_00402298(0x478); + if (local_90 == (int *)0x0) { + piVar5 = (int *)0x0; + } + else { + piVar5 = FUN_004bb888(local_90,(int)param_1,iVar3,(char *)piVar1,&DAT_005120c4); + } + *(int **)(param_1[0x4a] + iVar3 * 4) = piVar5; + param_1[0x112] = param_1[0x112] + 1; + break; + case 0xbd6: + local_74 = (int *)FUN_00402298(0x2a4); + if (local_74 == (int *)0x0) { + piVar5 = (int *)0x0; + } + else { + piVar5 = FUN_004b7f94(local_74,(int)param_1,iVar3,(char *)piVar1); + } + *(int **)(param_1[0x4a] + iVar3 * 4) = piVar5; + param_1[0x16d] = *(int *)(param_1[0x4a] + iVar3 * 4); + break; + case 0xbd8: + local_78 = (int *)FUN_00402298(0x238); + if (local_78 == (int *)0x0) { + piVar5 = (int *)0x0; + } + else { + piVar5 = FUN_004b84dc(local_78,(int)param_1,iVar3,(char *)piVar1); + } + *(int **)(param_1[0x4a] + iVar3 * 4) = piVar5; + break; + case 0xbdc: + local_a8 = (undefined4 *)FUN_00402298(0x104); + if (local_a8 == (undefined4 *)0x0) { + puVar9 = (undefined4 *)0x0; + } + else { + puVar9 = FUN_004ad228(local_a8,(int)param_1,iVar3,(char *)piVar1,&DAT_0050e270); + } + *(undefined4 **)(param_1[0x4a] + iVar3 * 4) = puVar9; + break; + case 0xbde: + local_7c = (int *)FUN_00402298(0x234); + if (local_7c == (int *)0x0) { + piVar5 = (int *)0x0; + } + else { + piVar5 = FUN_004b8718(local_7c,(int)param_1,iVar3,(char *)piVar1); + } + *(int **)(param_1[0x4a] + iVar3 * 4) = piVar5; + } + } + local_160 = (int *)((int)local_160 + piVar1[9]); + } + param_1[0x112] = 2; + if ((param_1[0x10e] != 0) && (param_1[0x14a] != 0)) { + local_ac = param_1[0x10e] + 0x1d8; + *(int *)(param_1[0x14a] + 600) = local_ac; + } + for (iVar3 = 2; iVar3 < param_1[0x49]; iVar3 = iVar3 + 1) { + piVar1 = *(int **)(param_1[0x4a] + iVar3 * 4); + if ((piVar1 != (int *)0x0) && (iVar8 = FUN_0041a1a4(*(int *)piVar1[3],0x50e604), iVar8 != 0)) { + (**(code **)(*piVar1 + 0x38))(piVar1); + } + } + for (iVar3 = 2; iVar3 < param_1[0x49]; iVar3 = iVar3 + 1) { + iVar8 = *(int *)(param_1[0x4a] + iVar3 * 4); + if ((iVar8 != 0) && (iVar6 = FUN_0041a1a4(**(int **)(iVar8 + 0xc),0x51155c), iVar6 != 0)) { + (**(code **)(param_1[0x1eb] + 4))(param_1 + 0x1eb,iVar8); + } + } + for (iVar3 = 2; iVar3 < param_1[0x49]; iVar3 = iVar3 + 1) { + iVar8 = *(int *)(param_1[0x4a] + iVar3 * 4); + if ((iVar8 != 0) && (iVar6 = FUN_0041a1a4(**(int **)(iVar8 + 0xc),0x511830), iVar6 != 0)) { + (**(code **)(param_1[0x1ef] + 4))(param_1 + 0x1ef,iVar8); + param_1[0x104] = param_1[0x104] | *(uint *)(iVar8 + 0x334); + } + } + for (iVar3 = 2; iVar3 < param_1[0x49]; iVar3 = iVar3 + 1) { + iVar8 = *(int *)(param_1[0x4a] + iVar3 * 4); + if ((iVar8 != 0) && (iVar6 = FUN_0041a1a4(**(int **)(iVar8 + 0xc),0x50e4fc), iVar6 != 0)) { + (**(code **)(param_1[499] + 4))(param_1 + 499,iVar8); + } + } + *(int *)(local_58 + 4) = *(int *)(local_58 + 4) + -1; + local_58 = FUN_00407064(*(int *)(DAT_004efc94 + 0x68),param_1[0x6f],0xf); + iVar3 = *(int *)(local_58 + 4); + *(int *)(local_58 + 4) = *(int *)(local_58 + 4) + 1; + if (iVar3 == 0) { + FUN_00406cd0(local_58); + } + iVar3 = *(int *)(local_58 + 0x3c); + local_b4 = param_1 + 0x68; + local_b0 = (undefined4 *)(iVar3 + 0xa8); + param_1[0x130] = *(int *)(iVar3 + 0x74); + FUN_00408440(local_b4,local_b0); + param_1[0x148] = *(int *)(iVar3 + 0x78); + param_1[0x149] = *(int *)(iVar3 + 0x7c); + param_1[0x195] = 0; + param_1[0x196] = 0; + param_1[0xfd] = 0; + FUN_0041bbd8((int)(param_1 + 0xe7),0); + FUN_0041bbd8((int)(param_1 + 0x1c5),0); + param_1[0xd1] = *(int *)(iVar3 + 0x44); + param_1[0x16c] = param_1[0xd1]; + param_1[0x16e] = param_1[0xd1]; + param_1[0x16f] = *(int *)(iVar3 + 0x48); + param_1[0x170] = *(int *)(iVar3 + 0x4c); + param_1[0x12f] = *(int *)(iVar3 + 0x70); + param_1[0x1e1] = *(int *)(iVar3 + 0x80); + param_1[0x1e2] = *(int *)(iVar3 + 0x84); + param_1[0x1e3] = *(int *)(iVar3 + 0x88); + param_1[0x1e4] = *(int *)(iVar3 + 0x8c); + param_1[0x1e5] = *(int *)(iVar3 + 0x90); + param_1[0x1e6] = *(int *)(iVar3 + 0x94); + local_d0 = *(float *)(iVar3 + 0x50); + local_bc = local_d0 * _DAT_004a2d44; + param_1[0x159] = (int)local_bc; + local_d8 = *(float *)(iVar3 + 0x54); + local_b8 = local_d8 * _DAT_004a2d44; + param_1[0x15a] = (int)local_b8; + local_e0 = *(float *)(iVar3 + 0x58); + local_c0 = local_e0 * _DAT_004a2d44; + param_1[0x15b] = (int)local_c0; + local_e8 = *(float *)(iVar3 + 0x5c); + local_c4 = local_e8 * _DAT_004a2d44; + param_1[0x15c] = (int)local_c4; + local_f0 = *(float *)(iVar3 + 0xa0); + local_c8 = local_f0 * _DAT_004a2d44; + param_1[0x1dc] = (int)local_c8; + param_1[0x1db] = *(int *)(iVar3 + 0x9c); + param_1[0x1da] = *(int *)(iVar3 + 0x98); + param_1[0x10c] = *(int *)(iVar3 + 0xa4); + local_fc = (float *)(param_1 + 0x15d); + local_f8 = *(float *)(iVar3 + 0x60); + *local_fc = local_f8 * _DAT_004a2d44; + local_104 = *(float *)(iVar3 + 100); + local_108 = (float *)(param_1 + 0x15e); + *local_108 = local_104 * _DAT_004a2d44; + local_100 = local_104; + local_f4 = local_f8; + local_ec = local_f0; + local_e4 = local_e8; + local_dc = local_e0; + local_d4 = local_d8; + local_cc = local_d0; + local_10c = FUN_00417ab4((int)(param_1 + 199)); + local_118 = (char *)(iVar3 + 0xb4); + local_11c = (uint *)FUN_00402298(0x10); + if (local_11c == (uint *)0x0) { + puVar7 = (uint *)0x0; + } + else { + puVar7 = FUN_00402460(local_11c,local_118); + } + puVar7[3] = puVar7[3] + 1; + local_114 = FUN_00424b60((int)param_1,(int *)puVar7); + local_120 = *(undefined4 *)(local_114 + 0xc0); + local_110 = local_120; + FUN_0041d3b3(local_184,local_10c + 0xe4); + iVar8 = (**(code **)(local_184[0] + 0x34))(local_184,local_120); + FUN_0041d3d2(local_184,2); + param_1[0x10b] = iVar8; + local_124 = FUN_004dee74(s_L4VIEWEXT_0050c44e); + if (local_124 == 0) { + if ((param_1[10] & 0xcU) == 4) { + FUN_004a80d4((int)param_1,iVar3); + } + else { + FUN_004a86c8((int)param_1,iVar3); + } + } + else { + param_1[0x15f] = 1; + FUN_004a80d4((int)param_1,iVar3); + } + FUN_004a4f9e(local_190,(int)(param_1 + 0x1eb)); + while (iVar8 = (**(code **)(local_190[0] + 0x28))(local_190), iVar8 != 0) { + FUN_004b8ef0(iVar8); + param_1[0x1e9] = 1; + } + FUN_004283b8((int)(param_1 + 0x197),1); + local_12c = (uint *)FUN_00402298(0x10); + if (local_12c == (uint *)0x0) { + puVar7 = (uint *)0x0; + } + else { + puVar7 = FUN_00402460(local_12c,s_jointlocal_0050c458); + } + puVar7[3] = puVar7[3] + 1; + local_128 = FUN_00424b60((int)param_1,(int *)puVar7); + param_1[0x172] = *(int *)(local_128 + 0xc0); + param_1[0xe5] = 0; + param_1[0xdd] = 1; + param_1[0xde] = 1; + param_1[0xdb] = *(int *)(iVar3 + 0x68); + param_1[0xdc] = *(int *)(iVar3 + 0x6c); + *(int *)(local_58 + 4) = *(int *)(local_58 + 4) + -1; + local_130 = FUN_00407064(*(int *)(DAT_004efc94 + 0x68),param_1[0x6f],0x14); + iVar3 = *(int *)(local_130 + 4); + *(int *)(local_130 + 4) = *(int *)(local_130 + 4) + 1; + if (iVar3 == 0) { + FUN_00406cd0(local_130); + } + uVar10 = 0xffffffff; + pcVar12 = (char *)(local_130 + 0xc); + do { + pcVar13 = pcVar12; + if (uVar10 == 0) break; + uVar10 = uVar10 - 1; + pcVar13 = pcVar12 + 1; + cVar2 = *pcVar12; + pcVar12 = pcVar13; + } while (cVar2 != '\0'); + uVar10 = ~uVar10; + pcVar12 = pcVar13 + -uVar10; + pcVar13 = local_1b0; + for (uVar11 = uVar10 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) { + *(undefined4 *)pcVar13 = *(undefined4 *)pcVar12; + pcVar12 = pcVar12 + 4; + pcVar13 = pcVar13 + 4; + } + for (uVar10 = uVar10 & 3; uVar10 != 0; uVar10 = uVar10 - 1) { + *pcVar13 = *pcVar12; + pcVar12 = pcVar12 + 1; + pcVar13 = pcVar13 + 1; + } + FUN_004032dc(local_1c8,*(undefined4 *)(local_130 + 0x3c),*(undefined4 *)(local_130 + 0x40),0); + (**(code **)(local_1c8[0] + 0x14))(local_1c8,4); + for (iVar3 = 0; iVar3 < param_1[0x47]; iVar3 = iVar3 + 1) { + puVar9 = (undefined4 *)FUN_00402298(0x1b8); + if (puVar9 == (undefined4 *)0x0) { + puVar9 = (undefined4 *)0x0; + } + else { + puVar9 = FUN_0049ce50(puVar9,(int)param_1,iVar3,local_1c8); + } + *(undefined4 **)(param_1[0x48] + iVar3 * 4) = puVar9; + } + for (iVar3 = 0; iVar3 < param_1[0x47]; iVar3 = iVar3 + 1) { + FUN_0049d1d0(*(int *)(param_1[0x48] + iVar3 * 4)); + } + *(int *)(local_130 + 4) = *(int *)(local_130 + 4) + -1; + iVar3 = FUN_00407064(*(int *)(DAT_004efc94 + 0x68),param_1[0x6f],0x1e); + param_1[0x214] = 0; + if (iVar3 != 0) { + iVar8 = *(int *)(iVar3 + 4); + *(int *)(iVar3 + 4) = *(int *)(iVar3 + 4) + 1; + if (iVar8 == 0) { + FUN_00406cd0(iVar3); + } + FUN_004032dc(local_1e0,*(undefined4 *)(iVar3 + 0x3c),*(undefined4 *)(iVar3 + 0x40),0); + for (iVar8 = 0; iVar8 < param_1[0x47]; iVar8 = iVar8 + 1) { + FUN_0041e4a8(*(int *)(param_1[0x48] + iVar8 * 4),local_1e0); + } + local_134 = (undefined4 *)FUN_00402298(0x18); + if (local_134 == (undefined4 *)0x0) { + puVar9 = (undefined4 *)0x0; + } + else { + puVar9 = FUN_0042a984(local_134,(int)param_1); + } + param_1[0x214] = (int)puVar9; + *(int *)(iVar3 + 4) = *(int *)(iVar3 + 4) + -1; + FUN_00403310(local_1e0,2); + } + iVar8 = FUN_00406ff8(*(int *)(DAT_004efc94 + 0x68),local_1b0,0x1d,-1); + iVar3 = *(int *)(iVar8 + 4); + *(int *)(iVar8 + 4) = *(int *)(iVar8 + 4) + 1; + if (iVar3 == 0) { + FUN_00406cd0(iVar8); + } + FUN_004032dc(local_1f8,*(undefined4 *)(iVar8 + 0x3c),*(undefined4 *)(iVar8 + 0x40),0); + local_138 = (undefined4 *)FUN_00402298(0x2c); + if (local_138 == (undefined4 *)0x0) { + puVar9 = (undefined4 *)0x0; + } + else { + puVar9 = FUN_0049ea48(local_138,(int)param_1,local_1f8); + } + param_1[0x111] = (int)puVar9; + *(int *)(iVar8 + 4) = *(int *)(iVar8 + 4) + -1; + FUN_00402a98((int *)&local_13c,param_1 + 0x211,(char *)(param_2 + 0x7c)); + local_140 = local_13c; + piVar1 = local_13c + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_13c,3); + } + FUN_00402a98((int *)&local_144,param_1 + 0x212,(char *)(param_2 + 0x90)); + local_148 = local_144; + piVar1 = local_144 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_144,3); + } + FUN_00402a98((int *)&local_14c,param_1 + 0x213,(char *)(param_2 + 0xa4)); + local_150 = local_14c; + piVar1 = local_14c + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_14c,3); + } + local_154 = *(int *)(DAT_004efc94 + 0x24); + puVar9 = (undefined4 *)FUN_00403ad0(local_154 + 0x18,s_Mechs_0050c463); + if (puVar9 == (undefined4 *)0x0) { + puVar9 = FUN_004212b0(local_154,s_Mechs_0050c469); + } + local_158 = param_1; + (**(code **)(puVar9[4] + 4))(puVar9 + 4,param_1); + FUN_0049f788((int)param_1); + FUN_00403310(local_1f8,2); + FUN_00403310(local_1c8,2); + FUN_004a4ffb(local_190,2); + return param_1; +} + + + +/* @004a2d48 file=? name=FUN_004a2d48 */ + +int * __cdecl FUN_004a2d48(int param_1) + +{ + int *piVar1; + + piVar1 = (int *)FUN_00402298(0x854); + if (piVar1 == (int *)0x0) { + piVar1 = (int *)0x0; + } + else { + piVar1 = FUN_004a1674(piVar1,param_1,&DAT_0050bde4); + } + return piVar1; +} + + + +/* @004a2d78 file=? name=FUN_004a2d78 */ + +undefined4 __cdecl FUN_004a2d78(undefined4 *param_1) + +{ + int iVar1; + + iVar1 = FUN_00423864(param_1); + if (iVar1 == 0) { + return 0; + } + param_1[7] = 0xbb9; + return 1; +} + + + +/* @004a2da8 file=? name=FUN_004a2da8 */ + +undefined4 __cdecl +FUN_004a2da8(int param_1,char *param_2,int param_3,undefined4 param_4,float *param_5) + +{ + char *pcVar1; + char cVar2; + float *pfVar3; + int iVar4; + float *pfVar5; + char *pcVar6; + int *piVar7; + undefined4 *puVar8; + uint uVar9; + uint uVar10; + char *pcVar11; + float *pfVar12; + bool bVar13; + char *local_50; + char *local_4c; + char *local_48; + char *local_44; + char *local_40; + char *local_3c; + char *local_38; + char *local_34; + char *local_30; + char *local_2c; + char *local_28; + char *local_24; + char *local_20; + float *local_1c; + float *local_18; + float *local_14; + float *local_10; + float *local_c; + float *local_8; + + pfVar3 = param_5; + if ((param_5 == (float *)0x0) && (pfVar3 = (float *)FUN_00402298(200), pfVar3 != (float *)0x0)) { + local_8 = pfVar3 + 1; + local_c = pfVar3 + 4; + local_10 = pfVar3 + 7; + local_14 = pfVar3 + 10; + local_18 = pfVar3 + 0x1a; + local_1c = pfVar3 + 0x2a; + } + iVar4 = FUN_004238bc(param_1,param_2,param_3,param_4,pfVar3); + if ((iVar4 != -1) && + (iVar4 = FUN_00435ac8(param_1,param_2,param_3,param_4,pfVar3 + 0x1a), iVar4 != -1)) { + iVar4 = FUN_00404088(param_3,s_gamedata_0050c46f,s_AnimationPrefix_0050c478,&local_20); + if (iVar4 == 0) { + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_missing_AnimationPrefix__0050c488,(char *)0x0); + } + else { + iVar4 = FUN_004d4a78(local_20); + if (iVar4 == 3) { + uVar9 = 0xffffffff; + do { + pcVar6 = local_20; + if (uVar9 == 0) break; + uVar9 = uVar9 - 1; + pcVar6 = local_20 + 1; + cVar2 = *local_20; + local_20 = pcVar6; + } while (cVar2 != '\0'); + uVar9 = ~uVar9; + pfVar5 = (float *)(pcVar6 + -uVar9); + pfVar12 = pfVar3 + 0x10; + for (uVar10 = uVar9 >> 2; uVar10 != 0; uVar10 = uVar10 - 1) { + *pfVar12 = *pfVar5; + pfVar5 = pfVar5 + 1; + pfVar12 = pfVar12 + 1; + } + for (uVar9 = uVar9 & 3; uVar9 != 0; uVar9 = uVar9 - 1) { + *(char *)pfVar12 = *(char *)pfVar5; + pfVar5 = (float *)((int)pfVar5 + 1); + pfVar12 = (float *)((int)pfVar12 + 1); + } + iVar4 = FUN_00404118(param_3,s_gamedata_0050c4c9,s_MaxAcceleration_0050c4d2,pfVar3 + 0x11); + if (iVar4 == 0) { + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_missing_MaxAcceleration__0050c4e2,(char *)0x0); + return 0; + } + iVar4 = FUN_00404118(param_3,s_gamedata_0050c4fd,s_RelativeMechValue_0050c506,pfVar3 + 0x1c) + ; + if (iVar4 == 0) { + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_missing_RelativeMechValue__0050c518,(char *)0x0); + return 0; + } + iVar4 = FUN_00404118(param_3,s_gamedata_0050c536,s_LookLeftAngle_0050c53f,pfVar3 + 0x14); + if (iVar4 == 0) { + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_missing_LookLeftAngle__0050c54d,(char *)0x0); + return 0; + } + iVar4 = FUN_00404118(param_3,s_gamedata_0050c566,s_LookRightAngle_0050c56f,pfVar3 + 0x15); + if (iVar4 == 0) { + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_missing_LookRightAngle__0050c57e,(char *)0x0); + return 0; + } + iVar4 = FUN_00404118(param_3,s_gamedata_0050c598,s_LookFrontAngle_0050c5a1,pfVar3 + 0x16); + if (iVar4 == 0) { + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_missing_LookFrontAngle__0050c5b0,(char *)0x0); + return 0; + } + iVar4 = FUN_00404118(param_3,s_gamedata_0050c5ca,s_LookBackAngle_0050c5d3,pfVar3 + 0x17); + if (iVar4 == 0) { + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_missing_LookBackAngle__0050c5e1,(char *)0x0); + return 0; + } + iVar4 = FUN_00404118(param_3,s_gamedata_0050c5fa,s_WalkingTurnRate_0050c603,pfVar3 + 0x18); + if (iVar4 == 0) { + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_missing_WalkingTurnRate__0050c613,(char *)0x0); + return 0; + } + iVar4 = FUN_00404118(param_3,s_gamedata_0050c62e,s_RunningTurnRate_0050c637,pfVar3 + 0x19); + if (iVar4 == 0) { + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_missing_runningTurnRate__0050c647,(char *)0x0); + return 0; + } + iVar4 = FUN_00404088(param_3,s_gamedata_0050c662,s_CameraOffset_0050c66b,&local_24); + if (iVar4 == 0) { + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_missing_CameraOffset__0050c678,(char *)0x0); + } + FUN_00408944(local_24,pfVar3 + 0x2a); + iVar4 = FUN_00404118(param_3,s_gamedata_0050c690,s_DeathSplashDamage_0050c699,pfVar3 + 0x1e) + ; + if (iVar4 == 0) { + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_missing_DeathSplashDamage__0050c6ab,(char *)0x0); + return 0; + } + iVar4 = FUN_00404118(param_3,s_gamedata_0050c6c8,s_DeathSplashRadius_0050c6d1,pfVar3 + 0x1f) + ; + if (iVar4 == 0) { + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_missing_DeathSplashRadius__0050c6e3,(char *)0x0); + return 0; + } + iVar4 = FUN_00404088(param_3,s_gamedata_0050c700,s_DeathEffect_0050c709,&local_28); + if (iVar4 == 0) { + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_missing_DeathEffect__0050c715,(char *)0x0); + return 0; + } + pfVar5 = (float *)FUN_00406ff8(param_1,local_28,1,-1); + if (pfVar5 == (float *)0x0) { + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_cannot_find_0050c72c,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,local_28,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_in_resource_file__0050c73a,(char *)0x0); + return 0; + } + pfVar3[0x1d] = *pfVar5; + iVar4 = FUN_00404118(param_3,s_gamedata_0050c74e,s_MaxUnstableAcceleration_0050c757, + pfVar3 + 0x20); + if (iVar4 == 0) { + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_missing_MaxUnstableAcceleration__0050c76f,(char *)0x0); + return 0; + } + iVar4 = FUN_00404118(param_3,s_gamedata_0050c792,s_UnstableAccelerationEffect_0050c79b, + pfVar3 + 0x21); + if (iVar4 == 0) { + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_missing_UnstableAccelerationEffe_0050c7b6,(char *)0x0); + return 0; + } + iVar4 = FUN_00404118(param_3,s_gamedata_0050c7dc,s_UnstableGunTheEngineEffect_0050c7e5, + pfVar3 + 0x22); + if (iVar4 == 0) { + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_missing_UnstableGunTheEngineEffe_0050c800,(char *)0x0); + return 0; + } + iVar4 = FUN_00404118(param_3,s_gamedata_0050c826,s_UnstableSuperStopEffect_0050c82f, + pfVar3 + 0x23); + if (iVar4 == 0) { + local_2c = param_2; + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_missing_UnstableSuperStopEffect__0050c847,(char *)0x0); + return 0; + } + iVar4 = FUN_00404118(param_3,s_gamedata_0050c86a,s_UnstableHighVelocityEffect_0050c873, + pfVar3 + 0x24); + if (iVar4 == 0) { + local_30 = param_2; + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_missing_UnstableHighVelocityEffe_0050c88e,(char *)0x0); + return 0; + } + iVar4 = FUN_00404118(param_3,s_gamedata_0050c8b4,s_UnstableStopedTurnEffect_0050c8bd, + pfVar3 + 0x25); + if (iVar4 == 0) { + local_34 = param_2; + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_missing_UnstableStopedTurnEffect_0050c8d6,(char *)0x0); + return 0; + } + iVar4 = FUN_00404118(param_3,s_gamedata_0050c8fa,s_SuperStopAcceleration_0050c903, + pfVar3 + 0x12); + if (iVar4 == 0) { + local_38 = param_2; + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_missing_SuperStopAcceleration__0050c919,(char *)0x0); + return 0; + } + iVar4 = FUN_00404118(param_3,s_gamedata_0050c93a,s_ThrottleAdjustment_0050c943,pfVar3 + 0x13 + ); + if (iVar4 == 0) { + local_3c = param_2; + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_missing_ThrottleAdjustment__0050c956,(char *)0x0); + return 0; + } + iVar4 = FUN_00404118(param_3,s_gamedata_0050c974,s_UpdateTurnVelocityDiffrence_0050c97d, + pfVar3 + 0x27); + if (iVar4 == 0) { + local_40 = param_2; + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_missing_UpdateTurnVelocityDiffre_0050c999,(char *)0x0); + return 0; + } + iVar4 = FUN_00404118(param_3,s_gamedata_0050c9c0,s_UpdateTurnDegreeDiffrence_0050c9c9, + pfVar3 + 0x28); + if (iVar4 == 0) { + local_44 = param_2; + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_missing_UpdateTurnDegreeDiffrenc_0050c9e3,(char *)0x0); + return 0; + } + iVar4 = FUN_00404118(param_3,s_gamedata_0050ca08,s_UpdatePositionDiffrence_0050ca11, + pfVar3 + 0x26); + if (iVar4 == 0) { + local_48 = param_2; + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_missing_UpdatePositionDiffrence__0050ca29,(char *)0x0); + return 0; + } + iVar4 = FUN_00404118(param_3,s_gamedata_0050ca4c,s_TimeDelay_0050ca55,pfVar3 + 0x29); + if (iVar4 == 0) { + local_4c = param_2; + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_missing_TimeDelay__0050ca5f,(char *)0x0); + return 0; + } + local_50 = s_Unspecified_0050ca74; + iVar4 = FUN_00404088(param_3,s_gamedata_0050ca80,s_ShadowJointName_0050ca89,&local_50); + if (iVar4 != 0) { + pcVar11 = s_Unspecified_0050ca99; + pcVar6 = local_50; + do { + if (*pcVar6 != *pcVar11) goto LAB_004a36e3; + bVar13 = true; + if (*pcVar6 == '\0') break; + pcVar1 = pcVar6 + 1; + if (*pcVar1 != pcVar11[1]) goto LAB_004a36e3; + pcVar6 = pcVar6 + 2; + pcVar11 = pcVar11 + 2; + bVar13 = *pcVar1 == '\0'; + } while (!bVar13); + if (!bVar13) { +LAB_004a36e3: + uVar9 = FUN_004d4a78(local_50); + if (0x13 < uVar9) { + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_ShadowJointName_must_be_less_tha_0050cac0,(char *)0x0); + piVar7 = FUN_004db880(&DAT_00524e20,0x14); + FUN_004dbb24(piVar7,s_characters_long__0050cae4,(char *)0x0); + return 0; + } + FUN_004d4918(pfVar3 + 0x2d,(undefined4 *)local_50,uVar9 + 1); + if (param_5 == (float *)0x0) { + puVar8 = (undefined4 *)FUN_00406db4(param_1,param_2,0xf,1,0,pfVar3,200,-1); + FUN_004022d0((int *)pfVar3); + return *puVar8; + } + return 0; + } + } + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_missing_ShadowJointName__0050caa5,(char *)0x0); + return 0; + } + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_must_have_3_letter_AnimationPref_0050c4a3,(char *)0x0); + } + } + if (param_5 == (float *)0x0) { + FUN_004022d0((int *)pfVar3); + } + return 0xffffffff; +} + + + +/* @004a3794 file=? name=FUN_004a3794 */ + +undefined4 __cdecl +FUN_004a3794(char *param_1,int param_2,undefined *param_3,int param_4,char *param_5,int param_6, + undefined4 *param_7,int *param_8) + +{ + char cVar1; + undefined4 *puVar2; + undefined4 uVar3; + int iVar4; + int *piVar5; + int *piVar6; + uint *puVar7; + undefined *puVar8; + uint uVar9; + uint uVar10; + char *pcVar11; + char *pcVar12; + char *pcVar13; + byte bVar14; + byte bVar15; + uint local_19c [2]; + char *local_194; + char local_18c [80]; + undefined4 *local_13c; + char *local_138; + char *local_134; + uint *local_130; + uint *local_12c; + char *local_128; + int *local_124; + char *local_120; + int *local_11c; + char *local_118; + int *local_114; + uint *local_110; + uint *local_10c; + char *local_108; + int *local_104; + char *local_100; + char *local_fc; + uint *local_f8; + uint *local_f4; + char *local_f0; + int *local_ec; + char *local_e8; + int *local_e4; + char *local_e0; + int *local_dc; + uint *local_d8; + uint *local_d4; + char *local_d0; + int *local_cc; + char *local_c8; + char *local_c4; + uint *local_c0; + uint *local_bc; + char *local_b8; + char *local_b4; + uint *local_b0; + uint *local_ac; + char *local_a8; + char *local_a4; + char *local_a0; + uint *local_9c; + uint *local_98; + char *local_94; + uint *local_90; + char *local_8c; + char *local_88; + int local_84; + char *local_80; + uint *local_7c; + char *local_78; + uint *local_74; + char *local_70; + char *local_6c; + char *local_68; + char *local_64; + char *local_60; + char *local_5c; + int *local_58; + char *local_54; + int *local_50; + int *local_4c; + int *local_48; + int *local_44; + char *local_40; + char *local_3c; + char *local_38; + char *local_34; + char *local_30; + char *local_2c; + char *local_28; + int local_24; + int local_20; + int *local_1c; + int *local_18; + char *local_14; + int local_10; + undefined4 *local_c; + int *local_8; + + local_8 = FUN_0040485c(param_2,(char *)0x0); + local_c = (undefined4 *)local_8[1]; + if ((*(byte *)(param_2 + 0x1c) & 2) == 0) { + local_10 = *(int *)(param_2 + 0xc); + } + else { + local_10 = *(int *)(param_2 + 0x10); + } + if (local_10 == 0) { + local_14 = param_5; + FUN_004dbb24(&DAT_00524e20,param_5,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_is_missing_control_mappings__0050caf7,(char *)0x0); +LAB_004a3808: + if (local_8 != (int *)0x0) { + (**(code **)*local_8)(local_8,3); + } + uVar3 = 0xffffffff; + } + else { + local_18 = (int *)FUN_004022b0((local_10 * 6 + 6) * 0x18); + *local_18 = local_10; + local_1c = local_18 + 1; + local_20 = 0; + local_24 = 0; + if (0 < local_10) { +LAB_004a386b: + piVar5 = local_1c; + pcVar12 = (char *)(local_c + 2); + iVar4 = FUN_00404088(param_2,pcVar12,s_IOMapping_0050cb16,&local_28); + if (iVar4 != 0) { + iVar4 = (*(code *)param_3)(local_28,piVar5); + if (iVar4 == 0) { + local_34 = local_28; + local_38 = param_5; + FUN_004dbb24(&DAT_00524e20,param_5,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s___control_type___0050cb35,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,local_34,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s___does_not_exist__0050cb46,(char *)0x0); + goto LAB_004a38db; + } + piVar5[3] = -1; + local_18c[0] = '\0'; + iVar4 = FUN_00404088(param_2,pcVar12,s_Subsystem_0050cb59,&local_3c); + if (iVar4 != 0) { + iVar4 = FUN_004d4b58(local_3c,s_ControlsMapper_0050cb63); + if (iVar4 == 0) { + piVar5[3] = 0; + uVar9 = 0xffffffff; + pcVar11 = local_3c; + do { + pcVar13 = pcVar11; + if (uVar9 == 0) break; + uVar9 = uVar9 - 1; + pcVar13 = pcVar11 + 1; + cVar1 = *pcVar11; + pcVar11 = pcVar13; + } while (cVar1 != '\0'); + uVar9 = ~uVar9; + pcVar11 = pcVar13 + -uVar9; + pcVar13 = local_18c; + for (uVar10 = uVar9 >> 2; uVar10 != 0; uVar10 = uVar10 - 1) { + *(undefined4 *)pcVar13 = *(undefined4 *)pcVar11; + pcVar11 = pcVar11 + 4; + pcVar13 = pcVar13 + 4; + } + for (uVar9 = uVar9 & 3; uVar9 != 0; uVar9 = uVar9 - 1) { + *pcVar13 = *pcVar11; + pcVar11 = pcVar11 + 1; + pcVar13 = pcVar13 + 1; + } + goto LAB_004a3c00; + } + FUN_00404088(param_6,s_gamedata_0050cb72,s_Subsystems_0050cb7b,&local_40); + local_44 = (int *)FUN_004064fc((char *)*param_7,local_40); + piVar6 = (int *)FUN_00402298(0x20); + if (piVar6 == (int *)0x0) { + local_48 = (int *)0x0; + } + else { + local_48 = FUN_00403e84(piVar6,(char *)local_44,0x1e); + } + local_4c = FUN_0040485c((int)local_48,(char *)0x0); + puVar2 = (undefined4 *)local_4c[1]; + piVar5[3] = 2; + while (puVar2 != (undefined4 *)0x0) { + iVar4 = FUN_004d4b58((char *)(puVar2 + 2),local_3c); + if (iVar4 == 0) { + iVar4 = FUN_00404088((int)local_48,local_3c,&DAT_0050cb86,&local_40); + if (iVar4 == 0) { + local_50 = local_44; + local_54 = local_3c; + bVar14 = 0x3a; + local_5c = param_5; + FUN_004dbb24(&DAT_00524e20,param_5,(char *)0x0); + local_58 = FUN_004db92c(&DAT_00524e20,bVar14); + FUN_004dbb24(local_58,local_54,(char *)0x0); + FUN_004dbb24(local_58,s_does_not_have_a__Type__in_file___0050cb8b,(char *)0x0); + FUN_004dbb24(local_58,(char *)local_50,(char *)0x0); + FUN_004dbb24(local_58,&DAT_0050cbad,(char *)0x0); + } + uVar9 = 0xffffffff; + pcVar11 = local_40; + goto code_r0x004a3b0c; + } + puVar2 = (undefined4 *)*puVar2; + piVar5[3] = piVar5[3] + 1; + } + goto LAB_004a3b41; + } + goto LAB_004a3c00; + } + bVar14 = 0x3a; + local_30 = param_5; + local_2c = pcVar12; + FUN_004dbb24(&DAT_00524e20,param_5,(char *)0x0); + piVar5 = FUN_004db92c(&DAT_00524e20,bVar14); + FUN_004dbb24(piVar5,local_2c,(char *)0x0); + FUN_004dbb24(piVar5,s_has_no_IOMapping___0050cb20,(char *)0x0); +LAB_004a38db: + FUN_004022d0(local_18); + goto LAB_004a3808; + } +LAB_004a44c9: + *local_18 = local_20; + local_13c = (undefined4 *) + FUN_00406db4(param_4,param_1,0x13,1,0,local_18,(int)local_1c - (int)local_18,-1); + FUN_004022e8(local_18); + if (local_8 != (int *)0x0) { + (**(code **)*local_8)(local_8,3); + } + uVar3 = *local_13c; + } + return uVar3; + while( true ) { + uVar9 = uVar9 - 1; + pcVar13 = pcVar11 + 1; + cVar1 = *pcVar11; + pcVar11 = pcVar13; + if (cVar1 == '\0') break; +code_r0x004a3b0c: + pcVar13 = pcVar11; + if (uVar9 == 0) break; + } + uVar9 = ~uVar9; + pcVar11 = pcVar13 + -uVar9; + pcVar13 = local_18c; + for (uVar10 = uVar9 >> 2; uVar10 != 0; uVar10 = uVar10 - 1) { + *(undefined4 *)pcVar13 = *(undefined4 *)pcVar11; + pcVar11 = pcVar11 + 4; + pcVar13 = pcVar13 + 4; + } + for (uVar9 = uVar9 & 3; uVar9 != 0; uVar9 = uVar9 - 1) { + *pcVar13 = *pcVar11; + pcVar11 = pcVar11 + 1; + pcVar13 = pcVar13 + 1; + } + local_3c = local_40; +LAB_004a3b41: + FUN_004022d0(local_44); + if (puVar2 == (undefined4 *)0x0) { + local_60 = local_3c; + local_64 = param_5; + FUN_004dbb24(&DAT_00524e20,param_5,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s__subsystem___0050cbb1,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,local_60,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s___does_not_exist__0050cbbe,(char *)0x0); + FUN_00403ecc(local_48,3); + if (local_4c != (int *)0x0) { + (**(code **)*local_4c)(local_4c,3); + } + FUN_004022e8(local_18); + goto LAB_004a3808; + } + FUN_00403ecc(local_48,3); + if (local_4c != (int *)0x0) { + (**(code **)*local_4c)(local_4c,3); + } +LAB_004a3c00: + iVar4 = FUN_00404088(param_2,pcVar12,&DAT_0050cbd1,&local_68); + if (iVar4 == 0) { + bVar14 = 0x3a; + local_70 = param_5; + local_6c = pcVar12; + FUN_004dbb24(&DAT_00524e20,param_5,(char *)0x0); + piVar5 = FUN_004db92c(&DAT_00524e20,bVar14); + FUN_004dbb24(piVar5,local_6c,(char *)0x0); + FUN_004dbb24(piVar5,s_is_missing_Mode__0050cbd6,(char *)0x0); + } + else { + local_78 = local_68; + puVar7 = (uint *)FUN_00402298(0x10); + if (puVar7 == (uint *)0x0) { + local_74 = (uint *)0x0; + } + else { + local_74 = FUN_00402460(puVar7,local_78); + } + local_74[3] = local_74[3] + 1; + FUN_00402838(local_19c,local_74,0,(char *)0x0); + local_80 = local_194; + puVar7 = (uint *)FUN_00402298(0x10); + if (puVar7 == (uint *)0x0) { + local_7c = (uint *)0x0; + } + else { + local_7c = FUN_00402460(puVar7,local_80); + } + local_7c[3] = local_7c[3] + 1; + FUN_004024d8((int *)local_19c,2); + local_84 = (**(code **)(*param_8 + 0x18))(param_8,local_7c[2],piVar5 + 4); + if (local_84 == 0) { + bVar14 = 0x3a; + local_8c = param_5; + local_88 = pcVar12; + FUN_004dbb24(&DAT_00524e20,param_5,(char *)0x0); + piVar5 = FUN_004db92c(&DAT_00524e20,bVar14); + FUN_004dbb24(piVar5,local_88,(char *)0x0); + FUN_004dbb24(piVar5,s_has_an_unsupported_Mode_type___0050cbe9,(char *)0x0); + local_90 = local_7c; + local_94 = (char *)local_7c[2]; + FUN_004dbb24(piVar5,local_94,(char *)0x0); + FUN_004dbb24(piVar5,&DAT_0050cc09,(char *)0x0); + local_98 = local_7c; + puVar7 = local_7c + 3; + *puVar7 = *puVar7 - 1; + if (*puVar7 == 0) { + FUN_004024d8((int *)local_7c,3); + } + local_9c = local_74; + puVar7 = local_74 + 3; + *puVar7 = *puVar7 - 1; + if (*puVar7 == 0) { + FUN_004024d8((int *)local_74,3); + } + } + else { + iVar4 = FUN_00404088(param_2,pcVar12,&DAT_0050cc0c,&local_a0); + if (iVar4 == 0) { + bVar14 = 0x3a; + local_a8 = param_5; + local_a4 = pcVar12; + FUN_004dbb24(&DAT_00524e20,param_5,(char *)0x0); + piVar5 = FUN_004db92c(&DAT_00524e20,bVar14); + FUN_004dbb24(piVar5,local_a4,(char *)0x0); + FUN_004dbb24(piVar5,s_is_missing_type__0050cc11,(char *)0x0); + local_ac = local_7c; + puVar7 = local_7c + 3; + *puVar7 = *puVar7 - 1; + if (*puVar7 == 0) { + FUN_004024d8((int *)local_7c,3); + } + local_b0 = local_74; + puVar7 = local_74 + 3; + *puVar7 = *puVar7 - 1; + if (*puVar7 == 0) { + FUN_004024d8((int *)local_74,3); + } + } + else { + puVar8 = FUN_004a9770(local_18c); + if (puVar8 == (undefined *)0x0) { + local_b4 = local_3c; + bVar14 = 0x3a; + local_b8 = param_5; + FUN_004dbb24(&DAT_00524e20,param_5,(char *)0x0); + piVar5 = FUN_004db92c(&DAT_00524e20,bVar14); + FUN_004dbb24(piVar5,local_b4,(char *)0x0); + FUN_004dbb24(piVar5,s_is_an_unsupported_subsystem__0050cc24,(char *)0x0); + local_bc = local_7c; + puVar7 = local_7c + 3; + *puVar7 = *puVar7 - 1; + if (*puVar7 == 0) { + FUN_004024d8((int *)local_7c,3); + } + local_c0 = local_74; + puVar7 = local_74 + 3; + *puVar7 = *puVar7 - 1; + if (*puVar7 == 0) { + FUN_004024d8((int *)local_74,3); + } + } + else { + iVar4 = FUN_004d4b58(local_a0,s_EventMapping_0050cc43); + if (iVar4 == 0) { + piVar5[2] = 1; + iVar4 = FUN_00404088(param_2,pcVar12,s_MessageID_0050cc50,&local_c4); + if (iVar4 == 0) { + bVar14 = 0x3a; + local_d0 = param_5; + local_c8 = pcVar12; + FUN_004dbb24(&DAT_00524e20,param_5,(char *)0x0); + local_cc = FUN_004db92c(&DAT_00524e20,bVar14); + FUN_004dbb24(local_cc,local_c8,(char *)0x0); + FUN_004dbb24(local_cc,s_is_missing_MessageID__0050cc5a,(char *)0x0); + local_d4 = local_7c; + puVar7 = local_7c + 3; + *puVar7 = *puVar7 - 1; + if (*puVar7 == 0) { + FUN_004024d8((int *)local_7c,3); + } + local_d8 = local_74; + puVar7 = local_74 + 3; + *puVar7 = *puVar7 - 1; + if (*puVar7 == 0) { + FUN_004024d8((int *)local_74,3); + } + } + else { + local_dc = (int *)FUN_0041a058(*(int **)(puVar8 + 4),local_c4); + if (local_dc != (int *)0x0) { + piVar5[5] = *local_dc; +LAB_004a4483: + local_1c = local_1c + 6; + local_20 = local_20 + 1; + local_c = (undefined4 *)*local_c; + puVar7 = local_7c + 3; + *puVar7 = *puVar7 - 1; + if (*puVar7 == 0) { + FUN_004024d8((int *)local_7c,3); + } + puVar7 = local_74 + 3; + *puVar7 = *puVar7 - 1; + if (*puVar7 == 0) { + FUN_004024d8((int *)local_74,3); + } + local_24 = local_24 + 1; + if (local_10 <= local_24) goto LAB_004a44c9; + goto LAB_004a386b; + } + local_e0 = local_c4; + bVar15 = 0x3a; + local_e8 = local_3c; + bVar14 = 0x3a; + local_f0 = param_5; + FUN_004dbb24(&DAT_00524e20,param_5,(char *)0x0); + local_ec = FUN_004db92c(&DAT_00524e20,bVar14); + FUN_004dbb24(local_ec,local_e8,(char *)0x0); + local_e4 = FUN_004db92c(local_ec,bVar15); + FUN_004dbb24(local_e4,local_e0,(char *)0x0); + FUN_004dbb24(local_e4,s_is_an_unsupported_messageID__0050cc72,(char *)0x0); + local_f4 = local_7c; + puVar7 = local_7c + 3; + *puVar7 = *puVar7 - 1; + if (*puVar7 == 0) { + FUN_004024d8((int *)local_7c,3); + } + local_f8 = local_74; + puVar7 = local_74 + 3; + *puVar7 = *puVar7 - 1; + if (*puVar7 == 0) { + FUN_004024d8((int *)local_74,3); + } + } + } + else { + iVar4 = FUN_004d4b58(local_a0,s_DirectMapping_0050cc91); + if (iVar4 == 0) { + piVar5[2] = 0; + iVar4 = FUN_00404088(param_2,pcVar12,s_AttributeID_0050cc9f,&local_fc); + if (iVar4 == 0) { + bVar14 = 0x3a; + local_108 = param_5; + local_100 = pcVar12; + FUN_004dbb24(&DAT_00524e20,param_5,(char *)0x0); + local_104 = FUN_004db92c(&DAT_00524e20,bVar14); + FUN_004dbb24(local_104,local_100,(char *)0x0); + FUN_004dbb24(local_104,s_is_missing_AttributeID__0050ccab,(char *)0x0); + local_10c = local_7c; + puVar7 = local_7c + 3; + *puVar7 = *puVar7 - 1; + if (*puVar7 == 0) { + FUN_004024d8((int *)local_7c,3); + } + local_110 = local_74; + puVar7 = local_74 + 3; + *puVar7 = *puVar7 - 1; + if (*puVar7 == 0) { + FUN_004024d8((int *)local_74,3); + } + } + else { + local_114 = (int *)FUN_0041c2fc(*(int **)(puVar8 + 8),local_fc); + if (local_114 != (int *)0x0) { + piVar5[5] = *local_114; + goto LAB_004a4483; + } + local_118 = local_fc; + bVar15 = 0x3a; + local_120 = local_3c; + bVar14 = 0x3a; + local_128 = param_5; + FUN_004dbb24(&DAT_00524e20,param_5,(char *)0x0); + local_124 = FUN_004db92c(&DAT_00524e20,bVar14); + FUN_004dbb24(local_124,local_120,(char *)0x0); + local_11c = FUN_004db92c(local_124,bVar15); + FUN_004dbb24(local_11c,local_118,(char *)0x0); + FUN_004dbb24(local_11c,s_is_an_unsupported_AttributeID__0050ccc5,(char *)0x0); + local_12c = local_7c; + puVar7 = local_7c + 3; + *puVar7 = *puVar7 - 1; + if (*puVar7 == 0) { + FUN_004024d8((int *)local_7c,3); + } + local_130 = local_74; + puVar7 = local_74 + 3; + *puVar7 = *puVar7 - 1; + if (*puVar7 == 0) { + FUN_004024d8((int *)local_74,3); + } + } + } + else { + bVar14 = 0x3a; + local_138 = param_5; + local_134 = pcVar12; + FUN_004dbb24(&DAT_00524e20,param_5,(char *)0x0); + piVar5 = FUN_004db92c(&DAT_00524e20,bVar14); + FUN_004dbb24(piVar5,local_134,(char *)0x0); + FUN_004dbb24(piVar5,s_has_unknown_mapping_type__0050cce6,(char *)0x0); + puVar7 = local_7c + 3; + *puVar7 = *puVar7 - 1; + if (*puVar7 == 0) { + FUN_004024d8((int *)local_7c,3); + } + puVar7 = local_74 + 3; + *puVar7 = *puVar7 - 1; + if (*puVar7 == 0) { + FUN_004024d8((int *)local_74,3); + } + } + } + } + } + } + } + FUN_004022e8(local_18); + goto LAB_004a3808; +} + + + +/* @004a452c file=? name=FUN_004a452c */ + +void __cdecl FUN_004a452c(int *param_1,byte param_2) + +{ + int iVar1; + int *piVar2; + undefined4 *puVar3; + int *piVar4; + int iVar5; + int local_10 [3]; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0050cfa8; + puVar3 = (undefined4 *)param_1[0x111]; + if (puVar3 != (undefined4 *)0x0) { + (**(code **)*puVar3)(puVar3,3); + } + iVar1 = *(int *)(DAT_004efc94 + 0x24); + puVar3 = (undefined4 *)FUN_00403ad0(iVar1 + 0x18,s_Mechs_0050cd02); + if (puVar3 != (undefined4 *)0x0) { + FUN_00421414(local_10,(int)(puVar3 + 4)); + piVar4 = (int *)(**(code **)(local_10[0] + 0x30))(local_10); + if (param_1 == piVar4) { + (**(code **)(local_10[0] + 0x48))(local_10); + iVar5 = (**(code **)(local_10[0] + 0x30))(local_10); + if (iVar5 == 0) { + FUN_00421308(iVar1,puVar3); + } + } + FUN_00421452(local_10,2); + } + puVar3 = (undefined4 *)param_1[0x214]; + if ((puVar3 != (undefined4 *)0x0) && (puVar3 != (undefined4 *)0x0)) { + (**(code **)*puVar3)(puVar3,3); + } + piVar2 = (int *)param_1[0x213]; + piVar4 = piVar2 + 3; + *piVar4 = *piVar4 + -1; + if (*piVar4 == 0) { + FUN_004024d8(piVar2,3); + } + piVar2 = (int *)param_1[0x212]; + piVar4 = piVar2 + 3; + *piVar4 = *piVar4 + -1; + if (*piVar4 == 0) { + FUN_004024d8(piVar2,3); + } + piVar2 = (int *)param_1[0x211]; + piVar4 = piVar2 + 3; + *piVar4 = *piVar4 + -1; + if (*piVar4 == 0) { + FUN_004024d8(piVar2,3); + } + FUN_0043adb5(param_1 + 0x204,2); + FUN_0043adb5(param_1 + 0x201,2); + FUN_0043adb5(param_1 + 0x1fe,2); + FUN_0043adb5(param_1 + 0x1fb,2); + FUN_0043adb5(param_1 + 0x1f8,2); + FUN_004a4e60(param_1 + 499,2); + FUN_004a4e15(param_1 + 0x1ef,2); + FUN_004a4dca(param_1 + 0x1eb,2); + FUN_0041baa4(param_1 + 0x1c5,2); + FUN_004278d4(param_1 + 0x1af,2); + FUN_004278d4(param_1 + 0x197,2); + FUN_0041baa4(param_1 + 0x131,2); + FUN_0041baa4(param_1 + 0x114,2); + FUN_004a4d7f(param_1 + 0x106,2); + FUN_0041baa4(param_1 + 0xe7,2); + FUN_00425550(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004a474c file=? name=FUN_004a474c */ + +undefined4 __cdecl FUN_004a474c(int param_1,char *param_2,uint param_3,undefined4 *param_4) + +{ + char cVar1; + undefined4 *puVar2; + bool bVar3; + int iVar4; + int *piVar5; + int *piVar6; + undefined3 extraout_var; + int *piVar7; + uint uVar8; + uint uVar9; + char *pcVar10; + char *pcVar11; + undefined4 uVar12; + int local_7c [6]; + char local_64 [32]; + int local_44 [6]; + undefined4 *local_2c; + int *local_28; + char *local_24; + int local_20; + int *local_1c; + int local_18; + int *local_14; + char *local_10; + int *local_c; + char *local_8; + + iVar4 = FUN_00404088(param_3,s_video_0050cd08,s_skeleton_0050cd0e,&local_8); + if (iVar4 == 0) { + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_is_missing__skl_file_specificati_0050cd17,(char *)0x0); + return 0xffffffff; + } + local_c = (int *)FUN_004064fc((char *)param_4[4],local_8); + piVar5 = (int *)FUN_00402298(0x20); + if (piVar5 == (int *)0x0) { + piVar5 = (int *)0x0; + } + else { + piVar5 = FUN_00403e84(piVar5,(char *)local_c,1); + } + if ((*(byte *)(piVar5 + 7) & 2) == 0) { + iVar4 = piVar5[3]; + } + else { + iVar4 = piVar5[4]; + } + if (iVar4 == 0) { + FUN_004dbb24(&DAT_00524e20,(char *)local_c,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_is_empty_or_missing__0050cd3d,(char *)0x0); + } + else { + iVar4 = FUN_00404088(param_3,s_gamedata_0050cd54,s_DamageZones_0050cd5d,&local_10); + if (iVar4 == 0) { + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_is_missing__dmg_file_specificati_0050cd69,(char *)0x0); + } + else { + local_14 = (int *)FUN_004064fc((char *)*param_4,local_10); + piVar6 = (int *)FUN_00402298(0x20); + if (piVar6 == (int *)0x0) { + piVar6 = (int *)0x0; + } + else { + piVar6 = FUN_00403e84(piVar6,(char *)local_14,1); + } + if ((*(byte *)(piVar6 + 7) & 2) == 0) { + iVar4 = piVar6[3]; + } + else { + iVar4 = piVar6[4]; + } + if (iVar4 == 0) { + FUN_004dbb24(&DAT_00524e20,(char *)local_14,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_is_empty_or_missing__0050cd8f,(char *)0x0); + } + else { + bVar3 = FUN_004040d8((int)piVar5,&DAT_0050cda6,s_DZoneCount_0050cdab,&local_18); + if (CONCAT31(extraout_var,bVar3) != 0) { + FUN_0040328c(local_44,0); + (**(code **)(local_44[0] + 0x20))(local_44,&local_18,4); + local_1c = FUN_00404720((int)piVar5,s_DamageZones_0050cdcf,&DAT_0050cddb); + iVar4 = FUN_00403b60((int)local_1c); + if (iVar4 == 0) { + FUN_004dbb24(&DAT_00524e20,s_No_dZones_listed_in_DamageZones_P_0050cddf,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + } + else { + local_20 = 0; + for (puVar2 = (undefined4 *)local_1c[1]; puVar2 != (undefined4 *)0x0; + puVar2 = (undefined4 *)*puVar2) { + local_20 = local_20 + 1; + uVar8 = 0xffffffff; + pcVar10 = (char *)(puVar2 + 2); + do { + pcVar11 = pcVar10; + if (uVar8 == 0) break; + uVar8 = uVar8 - 1; + pcVar11 = pcVar10 + 1; + cVar1 = *pcVar10; + pcVar10 = pcVar11; + } while (cVar1 != '\0'); + uVar8 = ~uVar8; + pcVar10 = pcVar11 + -uVar8; + pcVar11 = local_64; + for (uVar9 = uVar8 >> 2; uVar9 != 0; uVar9 = uVar9 - 1) { + *(undefined4 *)pcVar11 = *(undefined4 *)pcVar10; + pcVar10 = pcVar10 + 4; + pcVar11 = pcVar11 + 4; + } + for (uVar8 = uVar8 & 3; uVar8 != 0; uVar8 = uVar8 - 1) { + *pcVar11 = *pcVar10; + pcVar10 = pcVar10 + 1; + pcVar11 = pcVar11 + 1; + } + FUN_0049d304(param_1,param_3,param_2,(int)piVar5,local_64,(uint)piVar6,param_4, + local_44); + } + if (local_18 == local_20) { + iVar4 = FUN_00404088(param_3,s_gamedata_0050ce39,s_DamageLookupTable_0050ce42, + &local_24); + if (iVar4 == 0) { + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_is_missing__tbl_file_specificati_0050ce54,(char *)0x0); + uVar12 = 0xffffffff; + FUN_00403310(local_44,2); + return uVar12; + } + local_28 = (int *)FUN_004064fc((char *)*param_4,local_24); + piVar7 = (int *)FUN_00402298(0x20); + if (piVar7 == (int *)0x0) { + piVar7 = (int *)0x0; + } + else { + piVar7 = FUN_00403e84(piVar7,(char *)local_28,1); + } + if ((*(byte *)(piVar7 + 7) & 2) == 0) { + iVar4 = piVar7[3]; + } + else { + iVar4 = piVar7[4]; + } + if (iVar4 != 0) { + FUN_0040328c(local_7c,0); + FUN_0049ed28(param_3,param_2,piVar7,(int)param_4,local_7c); + local_2c = (undefined4 *)FUN_00406f3c(param_1,param_2,0x14,1,0,local_44,-1); + FUN_00406f3c(param_1,param_2,0x1d,1,0,local_7c,-1); + FUN_004022d0(local_c); + FUN_00403ecc(piVar5,3); + FUN_004022d0(local_14); + FUN_00403ecc(piVar6,3); + if (local_1c != (int *)0x0) { + (**(code **)*local_1c)(local_1c,3); + } + FUN_004022d0(local_28); + FUN_00403ecc(piVar7,3); + uVar12 = *local_2c; + FUN_00403310(local_7c,2); + FUN_00403310(local_44,2); + return uVar12; + } + FUN_004dbb24(&DAT_00524e20,(char *)local_28,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_is_empty_or_missing__0050ce7a,(char *)0x0); + FUN_004022e8(local_28); + FUN_00403ecc(piVar7,3); + FUN_00403310(local_44,2); + goto LAB_004a4814; + } + FUN_004dbb24(&DAT_00524e20,s_DZoneCount____damage_zones_found_0050ce04,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + } + FUN_004022d0(local_c); + FUN_00403ecc(piVar5,3); + FUN_004022d0(local_14); + FUN_00403ecc(piVar6,3); + uVar12 = 0xffffffff; + FUN_00403310(local_44,2); + return uVar12; + } + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_is_missing_DZoneCount_0050cdb6,(char *)0x0); + } + FUN_004022e8(local_14); + FUN_00403ecc(piVar6,3); + } + } +LAB_004a4814: + FUN_004022e8(local_c); + FUN_00403ecc(piVar5,3); + return 0xffffffff; +} + + + +/* @004a4c54 file=? name=FUN_004a4c54 */ + +void __cdecl FUN_004a4c54(int param_1,ushort param_2) + +{ + int iVar1; + + iVar1 = FUN_0049fb54(param_1); + if (iVar1 != 0) { + param_2 = param_2 & 0xfe03; + } + *(ushort *)(param_1 + 0x18) = *(ushort *)(param_1 + 0x18) | param_2; + return; +} + + + +/* @004a4c7c file=? name=FUN_004a4c7c */ + +void __cdecl FUN_004a4c7c(int param_1) + +{ + FUN_0041a1a4(**(int **)(param_1 + 0xc),0x50bdb4); + return; +} + + + +/* @004a4d60 file=? name=FUN_004a4d60 */ + +undefined4 * __cdecl FUN_004a4d60(undefined4 *param_1,undefined4 param_2) + +{ + FUN_0041827c(param_1,param_2); + *param_1 = &PTR_FUN_0050cfa0; + return param_1; +} + + + +/* @004a4d7f file=? name=FUN_004a4d7f */ + +void __cdecl FUN_004a4d7f(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0050cfa0; + FUN_004182a8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004a4dab file=? name=FUN_004a4dab */ + +undefined4 * __cdecl FUN_004a4dab(undefined4 *param_1,undefined4 param_2) + +{ + FUN_00417be0(param_1,param_2); + *param_1 = &PTR_FUN_0050cf98; + return param_1; +} + + + +/* @004a4dca file=? name=FUN_004a4dca */ + +void __cdecl FUN_004a4dca(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0050cf98; + FUN_00417c0c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004a4df6 file=? name=FUN_004a4df6 */ + +undefined4 * __cdecl FUN_004a4df6(undefined4 *param_1,undefined4 param_2) + +{ + FUN_00417be0(param_1,param_2); + *param_1 = &PTR_FUN_0050cf90; + return param_1; +} + + + +/* @004a4e15 file=? name=FUN_004a4e15 */ + +void __cdecl FUN_004a4e15(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0050cf90; + FUN_00417c0c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004a4e41 file=? name=FUN_004a4e41 */ + +undefined4 * __cdecl FUN_004a4e41(undefined4 *param_1,undefined4 param_2) + +{ + FUN_00417be0(param_1,param_2); + *param_1 = &PTR_FUN_0050cf88; + return param_1; +} + + + +/* @004a4e60 file=? name=FUN_004a4e60 */ + +void __cdecl FUN_004a4e60(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0050cf88; + FUN_00417c0c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004a4e8c file=? name=FUN_004a4e8c */ + +undefined4 * __cdecl FUN_004a4e8c(undefined4 *param_1,int param_2) + +{ + FUN_00418398(param_1,param_2); + *param_1 = &PTR_FUN_0050cf34; + return param_1; +} + + + +/* @004a4eab file=? name=FUN_004a4eab */ + +undefined4 * __cdecl FUN_004a4eab(undefined4 *param_1,int param_2) + +{ + FUN_00418398(param_1,param_2); + *param_1 = &PTR_FUN_0050cf34; + return param_1; +} + + + +/* @004a4eca file=? name=FUN_004a4eca */ + +undefined4 * __cdecl FUN_004a4eca(undefined4 *param_1,int param_2) + +{ + FUN_004183c0(param_1,param_2); + *param_1 = &PTR_FUN_0050cf34; + return param_1; +} + + + +/* @004a4ee9 file=? name=FUN_004a4ee9 */ + +void __cdecl FUN_004a4ee9(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0050cf34; + FUN_004183ec(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004a4f15 file=? name=FUN_004a4f15 */ + +undefined4 * __cdecl FUN_004a4f15(undefined4 *param_1,int param_2) + +{ + FUN_00417d00(param_1,param_2); + *param_1 = &PTR_FUN_0050cee4; + return param_1; +} + + + +/* @004a4f34 file=? name=FUN_004a4f34 */ + +undefined4 * __cdecl FUN_004a4f34(undefined4 *param_1,int param_2) + +{ + FUN_00417d00(param_1,param_2); + *param_1 = &PTR_FUN_0050cee4; + return param_1; +} + + + +/* @004a4f53 file=? name=FUN_004a4f53 */ + +undefined4 * __cdecl FUN_004a4f53(undefined4 *param_1,int param_2) + +{ + FUN_00417d28(param_1,param_2); + *param_1 = &PTR_FUN_0050cee4; + return param_1; +} + + + +/* @004a4f72 file=? name=FUN_004a4f72 */ + +void __cdecl FUN_004a4f72(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0050cee4; + FUN_00417d54(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004a4f9e file=? name=FUN_004a4f9e */ + +undefined4 * __cdecl FUN_004a4f9e(undefined4 *param_1,int param_2) + +{ + FUN_00417d00(param_1,param_2); + *param_1 = &PTR_FUN_0050ce94; + return param_1; +} + + + +/* @004a4fbd file=? name=FUN_004a4fbd */ + +undefined4 * __cdecl FUN_004a4fbd(undefined4 *param_1,int param_2) + +{ + FUN_00417d00(param_1,param_2); + *param_1 = &PTR_FUN_0050ce94; + return param_1; +} + + + +/* @004a4fdc file=? name=FUN_004a4fdc */ + +undefined4 * __cdecl FUN_004a4fdc(undefined4 *param_1,int param_2) + +{ + FUN_00417d28(param_1,param_2); + *param_1 = &PTR_FUN_0050ce94; + return param_1; +} + + + +/* @004a4ffb file=? name=FUN_004a4ffb */ + +void __cdecl FUN_004a4ffb(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0050ce94; + FUN_00417d54(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004a5028 file=bt/mech2.cpp name=FUN_004a5028 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 __cdecl FUN_004a5028(int param_1,float param_2) + +{ + undefined4 uVar1; + int iVar2; + int iVar3; + float fVar4; + float10 fVar5; + float local_8; + + iVar2 = **(int **)(param_1 + 0x128); + iVar3 = *(int *)(param_1 + 0x40); + if (*(int *)(param_1 + 0x650) == 0) { + if (iVar3 == 5) { + FUN_004a7fc4(param_1,0x1c); + *(undefined4 *)(param_1 + 0x650) = 1; + } + else if (iVar3 == 6) { + FUN_004a7fc4(param_1,0x1d); + *(undefined4 *)(param_1 + 0x650) = 1; + } + else if (iVar3 == 7) { + FUN_004a7fc4(param_1,0x1e); + *(undefined4 *)(param_1 + 0x650) = 1; + } + else if (iVar3 == 8) { + FUN_004a7fc4(param_1,0x1f); + *(undefined4 *)(param_1 + 0x650) = 1; + } + } + iVar3 = *(int *)(param_1 + 0x3b0); + if ((*(float *)(param_1 + 0x348) <= _DAT_004a5674) && + ((((iVar3 == 6 || (iVar3 == 7)) || (iVar3 == 8)) || (iVar3 == 9)))) { + FUN_0041bbd8(param_1 + 0x39c,0); + *(undefined4 *)(param_1 + 0x654) = 1; + } + switch(*(undefined4 *)(param_1 + 0x3b0)) { + case 0: + if (*(float *)(param_1 + 0x530) < *(float *)(iVar2 + 0x128)) { + FUN_004a7fc4(param_1,5); + } + else { + local_8 = 0.0; + if (_DAT_004a5674 <= *(float *)(iVar2 + 0x128)) break; + FUN_004a7fc4(param_1,0x10); + } + case 2: + case 3: + case 5: + case 8: + case 9: + case 10: + case 0xb: + case 0xe: + case 0xf: + case 0x10: + case 0x11: + case 0x14: + case 0x15: + case 0x1c: + case 0x1d: + case 0x1e: + case 0x1f: + case 0x20: +switchD_004a510d_caseD_2: + if (*(int *)(param_1 + 0x3b0) == 0) { + FUN_0040385c(s_Standing_Not_Supported_0050d7cd,s_d__tesla_bt_bt_MECH2_CPP_0050d7e4,0xd3); + } + fVar5 = FUN_0042790c(param_1 + 0x65c, + param_2 * *(float *)(param_1 + 0x5a8) * *(float *)(param_1 + 0x5ac),1); + local_8 = (float)fVar5; + *(float *)(param_1 + 0x348) = local_8 / param_2; + break; + case 1: + local_8 = 0.0; + break; + case 4: + if (*(float *)(param_1 + 0x530) < *(float *)(iVar2 + 0x128)) { + FUN_0041bbd8(param_1 + 0x39c,0); + FUN_004a4c54(param_1,8); + break; + } + local_8 = 0.0; + if (*(float *)(iVar2 + 0x128) < _DAT_004a5674) { + FUN_0041bbd8(param_1 + 0x39c,0); + FUN_004a4c54(param_1,8); + break; + } + goto switchD_004a510d_caseD_2; + case 6: + case 7: + if (*(float *)(iVar2 + 0x128) <= *(float *)(param_1 + 0x348)) { + if (*(float *)(iVar2 + 0x128) < *(float *)(param_1 + 0x348)) { + *(float *)(param_1 + 0x348) = + *(float *)(param_1 + 0x348) - *(float *)(param_1 + 0x344) * param_2; + if (*(float *)(iVar2 + 0x128) <= *(float *)(param_1 + 0x348)) { + uVar1 = *(undefined4 *)(param_1 + 0x348); + } + else { + uVar1 = *(undefined4 *)(iVar2 + 0x128); + } + *(undefined4 *)(param_1 + 0x348) = uVar1; + if (*(float *)(param_1 + 0x530) <= *(float *)(param_1 + 0x348)) { + uVar1 = *(undefined4 *)(param_1 + 0x348); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x530); + } + *(undefined4 *)(param_1 + 0x348) = uVar1; + } + } + else { + *(float *)(param_1 + 0x348) = + *(float *)(param_1 + 0x344) * param_2 + *(float *)(param_1 + 0x348); + if (*(float *)(param_1 + 0x348) <= *(float *)(iVar2 + 0x128)) { + uVar1 = *(undefined4 *)(param_1 + 0x348); + } + else { + uVar1 = *(undefined4 *)(iVar2 + 0x128); + } + *(undefined4 *)(param_1 + 0x348) = uVar1; + if (*(float *)(param_1 + 0x348) <= *(float *)(param_1 + 0x534)) { + uVar1 = *(undefined4 *)(param_1 + 0x348); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x534); + } + *(undefined4 *)(param_1 + 0x348) = uVar1; + } + fVar5 = FUN_0042790c(param_1 + 0x65c, + param_2 * (*(float *)(param_1 + 0x348) / *(float *)(param_1 + 0x534)) * + *(float *)(param_1 + 0x5a8),1); + local_8 = (float)fVar5; + break; + case 0xc: + case 0xd: + if (*(float *)(iVar2 + 0x128) <= *(float *)(param_1 + 0x348)) { + if (*(float *)(iVar2 + 0x128) < *(float *)(param_1 + 0x348)) { + *(float *)(param_1 + 0x348) = + *(float *)(param_1 + 0x348) - *(float *)(param_1 + 0x344) * param_2; + if (*(float *)(iVar2 + 0x128) <= *(float *)(param_1 + 0x348)) { + uVar1 = *(undefined4 *)(param_1 + 0x348); + } + else { + uVar1 = *(undefined4 *)(iVar2 + 0x128); + } + *(undefined4 *)(param_1 + 0x348) = uVar1; + if (*(float *)(param_1 + 0x538) <= *(float *)(param_1 + 0x348)) { + uVar1 = *(undefined4 *)(param_1 + 0x348); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x538); + } + *(undefined4 *)(param_1 + 0x348) = uVar1; + } + } + else { + *(float *)(param_1 + 0x348) = + *(float *)(param_1 + 0x344) * param_2 + *(float *)(param_1 + 0x348); + if (*(float *)(param_1 + 0x348) <= *(float *)(iVar2 + 0x128)) { + uVar1 = *(undefined4 *)(param_1 + 0x348); + } + else { + uVar1 = *(undefined4 *)(iVar2 + 0x128); + } + *(undefined4 *)(param_1 + 0x348) = uVar1; + if (*(float *)(param_1 + 0x348) <= *(float *)(param_1 + 0x7a0)) { + uVar1 = *(undefined4 *)(param_1 + 0x348); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x7a0); + } + *(undefined4 *)(param_1 + 0x348) = uVar1; + } + fVar5 = FUN_0042790c(param_1 + 0x65c, + param_2 * (*(float *)(param_1 + 0x348) / *(float *)(param_1 + 0x34c)) * + *(float *)(param_1 + 0x5a8),1); + local_8 = (float)fVar5; + break; + case 0x12: + case 0x13: + if (*(float *)(iVar2 + 0x128) <= *(float *)(param_1 + 0x348)) { + if (*(float *)(iVar2 + 0x128) < *(float *)(param_1 + 0x348)) { + *(float *)(param_1 + 0x348) = + *(float *)(param_1 + 0x348) - *(float *)(param_1 + 0x5b0) * param_2; + if (*(float *)(iVar2 + 0x128) <= *(float *)(param_1 + 0x348)) { + uVar1 = *(undefined4 *)(param_1 + 0x348); + } + else { + uVar1 = *(undefined4 *)(iVar2 + 0x128); + } + *(undefined4 *)(param_1 + 0x348) = uVar1; + if (*(float *)(param_1 + 0x350) <= *(float *)(param_1 + 0x348)) { + uVar1 = *(undefined4 *)(param_1 + 0x348); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x350); + } + *(undefined4 *)(param_1 + 0x348) = uVar1; + } + } + else { + *(float *)(param_1 + 0x348) = + *(float *)(param_1 + 0x5b0) * param_2 + *(float *)(param_1 + 0x348); + if (*(float *)(param_1 + 0x348) <= *(float *)(iVar2 + 0x128)) { + uVar1 = *(undefined4 *)(param_1 + 0x348); + } + else { + uVar1 = *(undefined4 *)(iVar2 + 0x128); + } + *(undefined4 *)(param_1 + 0x348) = uVar1; + if (*(float *)(param_1 + 0x348) <= *(float *)(param_1 + 0x52c)) { + uVar1 = *(undefined4 *)(param_1 + 0x348); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x52c); + } + *(undefined4 *)(param_1 + 0x348) = uVar1; + } + fVar4 = *(float *)(param_1 + 0x348) / *(float *)(param_1 + 0x350); + if (fVar4 <= _DAT_004a5674) { + fVar4 = -fVar4; + } + fVar5 = FUN_0042790c(param_1 + 0x65c,fVar4 * param_2 * *(float *)(param_1 + 0x5a8),1); + local_8 = (float)fVar5; + break; + case 0x16: + case 0x17: + case 0x18: + case 0x19: + case 0x1a: + case 0x1b: + FUN_00408440((undefined4 *)(param_1 + 0x598),&DAT_004e0f74); + *(undefined4 *)(param_1 + 0x5a4) = 0; + *(undefined4 *)(param_1 + 0x654) = 0; + *(undefined4 *)(param_1 + 0x650) = 0; + FUN_0041bbd8(param_1 + 0x39c,0); + FUN_004283b8(param_1 + 0x65c,1); + break; + default: + FUN_004dbb24(&DAT_00524e20,s_StandingAnimation_0050cfe8 + *(int *)(param_1 + 0x3b0) * 0x3c, + (char *)0x0); + FUN_004d9c38(&DAT_00524e20); + FUN_0040385c(s_Unsupported_mech_animation__0050d7fd,s_d__tesla_bt_bt_MECH2_CPP_0050d81a,0x13b); + } + return (float10)local_8; +} + + + +/* @004a5678 file=bt/mech2.cpp name=FUN_004a5678 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 __cdecl FUN_004a5678(int param_1,float param_2,int param_3) + +{ + undefined4 uVar1; + int iVar2; + float fVar3; + float10 fVar4; + float local_8; + + iVar2 = *(int *)(param_1 + 0x40); + if (*(int *)(param_1 + 0x650) == 0) { + if (iVar2 == 5) { + FUN_004a800c(param_1,0x1c); + *(undefined4 *)(param_1 + 0x650) = 1; + } + else if (iVar2 == 6) { + FUN_004a800c(param_1,0x1d); + *(undefined4 *)(param_1 + 0x650) = 1; + } + else if (iVar2 == 7) { + FUN_004a800c(param_1,0x1e); + *(undefined4 *)(param_1 + 0x650) = 1; + } + else if (iVar2 == 8) { + FUN_004a800c(param_1,0x1f); + *(undefined4 *)(param_1 + 0x650) = 1; + } + } + switch(*(undefined4 *)(param_1 + 0x728)) { + case 0: + local_8 = 0.0; + if (*(float *)(param_1 + 0x530) < *(float *)(param_1 + 0x6b4)) { + FUN_004a800c(param_1,5); + } + else { + if (_DAT_004a5bf4 <= *(float *)(param_1 + 0x6b4)) break; + FUN_004a800c(param_1,0x10); + } + case 2: + case 3: + case 4: + case 5: + case 8: + case 9: + case 10: + case 0xb: + case 0xe: + case 0xf: + case 0x10: + case 0x11: + case 0x14: + case 0x15: + case 0x1c: + case 0x1d: + case 0x1e: + case 0x1f: + case 0x20: + fVar4 = FUN_0042790c(param_1 + 0x6bc, + param_2 * *(float *)(param_1 + 0x5a8) * *(float *)(param_1 + 0x5ac),param_3 + ); + local_8 = (float)fVar4; + *(float *)(param_1 + 0x6b8) = local_8 / param_2; + break; + case 1: + local_8 = 0.0; + break; + case 6: + case 7: + if (*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x6b8)) { + if (*(float *)(param_1 + 0x6b4) < *(float *)(param_1 + 0x6b8)) { + *(float *)(param_1 + 0x6b8) = + *(float *)(param_1 + 0x6b8) - *(float *)(param_1 + 0x344) * param_2; + if (*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x6b8)) { + uVar1 = *(undefined4 *)(param_1 + 0x6b8); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x6b4); + } + *(undefined4 *)(param_1 + 0x6b8) = uVar1; + if (*(float *)(param_1 + 0x530) <= *(float *)(param_1 + 0x6b8)) { + uVar1 = *(undefined4 *)(param_1 + 0x6b8); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x530); + } + *(undefined4 *)(param_1 + 0x6b8) = uVar1; + } + } + else { + *(float *)(param_1 + 0x6b8) = + *(float *)(param_1 + 0x344) * param_2 + *(float *)(param_1 + 0x6b8); + if (*(float *)(param_1 + 0x6b8) <= *(float *)(param_1 + 0x6b4)) { + uVar1 = *(undefined4 *)(param_1 + 0x6b8); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x6b4); + } + *(undefined4 *)(param_1 + 0x6b8) = uVar1; + if (*(float *)(param_1 + 0x6b8) <= *(float *)(param_1 + 0x534)) { + uVar1 = *(undefined4 *)(param_1 + 0x6b8); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x534); + } + *(undefined4 *)(param_1 + 0x6b8) = uVar1; + } + fVar4 = FUN_0042790c(param_1 + 0x6bc, + param_2 * (*(float *)(param_1 + 0x6b8) / *(float *)(param_1 + 0x534)) * + *(float *)(param_1 + 0x5a8),param_3); + local_8 = (float)fVar4; + break; + case 0xc: + case 0xd: + if (*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x6b8)) { + if (*(float *)(param_1 + 0x6b4) < *(float *)(param_1 + 0x6b8)) { + *(float *)(param_1 + 0x6b8) = + *(float *)(param_1 + 0x6b8) - *(float *)(param_1 + 0x344) * param_2; + if (*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x6b8)) { + uVar1 = *(undefined4 *)(param_1 + 0x6b8); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x6b4); + } + *(undefined4 *)(param_1 + 0x6b8) = uVar1; + if (*(float *)(param_1 + 0x538) <= *(float *)(param_1 + 0x6b8)) { + uVar1 = *(undefined4 *)(param_1 + 0x6b8); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x538); + } + *(undefined4 *)(param_1 + 0x6b8) = uVar1; + } + } + else { + *(float *)(param_1 + 0x6b8) = + *(float *)(param_1 + 0x344) * param_2 + *(float *)(param_1 + 0x6b8); + if (*(float *)(param_1 + 0x6b8) <= *(float *)(param_1 + 0x6b4)) { + uVar1 = *(undefined4 *)(param_1 + 0x6b8); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x6b4); + } + *(undefined4 *)(param_1 + 0x6b8) = uVar1; + if (*(float *)(param_1 + 0x6b8) <= *(float *)(param_1 + 0x7a0)) { + uVar1 = *(undefined4 *)(param_1 + 0x6b8); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x7a0); + } + *(undefined4 *)(param_1 + 0x6b8) = uVar1; + } + fVar4 = FUN_0042790c(param_1 + 0x6bc, + param_2 * (*(float *)(param_1 + 0x6b8) / *(float *)(param_1 + 0x34c)) * + *(float *)(param_1 + 0x5a8),param_3); + local_8 = (float)fVar4; + break; + case 0x12: + case 0x13: + if (*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x6b8)) { + if (*(float *)(param_1 + 0x6b4) < *(float *)(param_1 + 0x6b8)) { + *(float *)(param_1 + 0x6b8) = + *(float *)(param_1 + 0x6b8) - *(float *)(param_1 + 0x5b0) * param_2; + if (*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x6b8)) { + uVar1 = *(undefined4 *)(param_1 + 0x6b8); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x6b4); + } + *(undefined4 *)(param_1 + 0x6b8) = uVar1; + if (*(float *)(param_1 + 0x350) <= *(float *)(param_1 + 0x6b8)) { + uVar1 = *(undefined4 *)(param_1 + 0x6b8); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x350); + } + *(undefined4 *)(param_1 + 0x6b8) = uVar1; + } + } + else { + *(float *)(param_1 + 0x6b8) = + *(float *)(param_1 + 0x5b0) * param_2 + *(float *)(param_1 + 0x6b8); + if (*(float *)(param_1 + 0x6b8) <= *(float *)(param_1 + 0x6b4)) { + uVar1 = *(undefined4 *)(param_1 + 0x6b8); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x6b4); + } + *(undefined4 *)(param_1 + 0x6b8) = uVar1; + if (*(float *)(param_1 + 0x6b8) <= *(float *)(param_1 + 0x52c)) { + uVar1 = *(undefined4 *)(param_1 + 0x6b8); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x52c); + } + *(undefined4 *)(param_1 + 0x6b8) = uVar1; + } + fVar3 = *(float *)(param_1 + 0x6b8) / *(float *)(param_1 + 0x350); + if (fVar3 <= _DAT_004a5bf4) { + fVar3 = -fVar3; + } + fVar4 = FUN_0042790c(param_1 + 0x6bc,fVar3 * param_2 * *(float *)(param_1 + 0x5a8),param_3); + local_8 = (float)fVar4; + break; + case 0x16: + case 0x17: + case 0x18: + case 0x19: + case 0x1a: + case 0x1b: + FUN_00408440((undefined4 *)(param_1 + 0x598),&DAT_004e0f74); + *(undefined4 *)(param_1 + 0x5a4) = 0; + *(undefined4 *)(param_1 + 0x658) = 0; + *(undefined4 *)(param_1 + 0x650) = 0; + FUN_0041bbd8(param_1 + 0x714,0); + FUN_004283b8(param_1 + 0x6bc,param_3); + break; + default: + FUN_004dbb24(&DAT_00524e20,s_StandingAnimation_0050cfe8 + *(int *)(param_1 + 0x728) * 0x3c, + (char *)0x0); + FUN_004d9c38(&DAT_00524e20); + FUN_0040385c(s_Unsupported_mech_animation__0050d833,s_d__tesla_bt_bt_MECH2_CPP_0050d850,0x206); + } + return (float10)local_8; +} + + + +/* @004a5bf8 file=bt/mech2.cpp name=FUN_004a5bf8 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 __cdecl FUN_004a5bf8(int param_1,float param_2,int param_3) + +{ + undefined4 uVar1; + int iVar2; + float fVar3; + float10 fVar4; + float local_c; + float local_8; + + iVar2 = *(int *)(param_1 + 0x728); + if (((iVar2 - 6U < 2) || (iVar2 - 0xcU < 2)) || (iVar2 - 0x12U < 2)) { + if (*(int *)(param_1 + 0x40) == 3) { + if (*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x53c)) { + uVar1 = *(undefined4 *)(param_1 + 0x6b4); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x53c); + } + *(undefined4 *)(param_1 + 0x6b4) = uVar1; + } + else { + if (*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x540)) { + uVar1 = *(undefined4 *)(param_1 + 0x6b4); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x540); + } + *(undefined4 *)(param_1 + 0x6b4) = uVar1; + } + fVar3 = _DAT_004a6340; + if (_DAT_004a6340 <= *(float *)(param_1 + 0x6b4)) { + fVar3 = *(float *)(param_1 + 0x6b4); + } + *(float *)(param_1 + 0x6b4) = fVar3; + } + switch(*(undefined4 *)(param_1 + 0x728)) { + case 0: + if (*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x530)) { + local_8 = 0.0; + break; + } + FUN_004a800c(param_1,5); + case 2: + case 3: + case 4: + case 5: + case 8: + case 9: + case 10: + case 0xb: + case 0xe: + case 0xf: + case 0x10: + case 0x11: + case 0x14: + case 0x15: + case 0x16: + case 0x17: + case 0x1a: + case 0x1b: + case 0x20: + fVar4 = FUN_0042790c(param_1 + 0x6bc, + param_2 * *(float *)(param_1 + 0x5a8) * *(float *)(param_1 + 0x5ac),param_3 + ); + local_8 = (float)fVar4; + *(float *)(param_1 + 0x6b8) = local_8 / param_2; + break; + case 1: + local_8 = 0.0; + break; + case 6: + case 7: + if (*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x6b8)) { + if (*(float *)(param_1 + 0x6b4) < *(float *)(param_1 + 0x6b8)) { + *(float *)(param_1 + 0x6b8) = + *(float *)(param_1 + 0x6b8) - *(float *)(param_1 + 0x344) * param_2; + if (*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x6b8)) { + uVar1 = *(undefined4 *)(param_1 + 0x6b8); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x6b4); + } + *(undefined4 *)(param_1 + 0x6b8) = uVar1; + if (*(float *)(param_1 + 0x530) <= *(float *)(param_1 + 0x6b8)) { + uVar1 = *(undefined4 *)(param_1 + 0x6b8); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x530); + } + *(undefined4 *)(param_1 + 0x6b8) = uVar1; + } + } + else { + *(float *)(param_1 + 0x6b8) = + *(float *)(param_1 + 0x344) * param_2 + *(float *)(param_1 + 0x6b8); + if (*(float *)(param_1 + 0x6b8) <= *(float *)(param_1 + 0x6b4)) { + uVar1 = *(undefined4 *)(param_1 + 0x6b8); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x6b4); + } + *(undefined4 *)(param_1 + 0x6b8) = uVar1; + if (*(float *)(param_1 + 0x6b8) <= *(float *)(param_1 + 0x534)) { + uVar1 = *(undefined4 *)(param_1 + 0x6b8); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x534); + } + *(undefined4 *)(param_1 + 0x6b8) = uVar1; + } + fVar4 = FUN_0042790c(param_1 + 0x6bc, + param_2 * (*(float *)(param_1 + 0x6b8) / *(float *)(param_1 + 0x534)) * + *(float *)(param_1 + 0x5a8),param_3); + local_8 = (float)fVar4; + break; + case 0xc: + case 0xd: + if (*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x6b8)) { + if (*(float *)(param_1 + 0x6b4) < *(float *)(param_1 + 0x6b8)) { + *(float *)(param_1 + 0x6b8) = + *(float *)(param_1 + 0x6b8) - *(float *)(param_1 + 0x344) * param_2; + if (*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x6b8)) { + uVar1 = *(undefined4 *)(param_1 + 0x6b8); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x6b4); + } + *(undefined4 *)(param_1 + 0x6b8) = uVar1; + if (*(float *)(param_1 + 0x538) <= *(float *)(param_1 + 0x6b8)) { + uVar1 = *(undefined4 *)(param_1 + 0x6b8); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x538); + } + *(undefined4 *)(param_1 + 0x6b8) = uVar1; + } + } + else { + *(float *)(param_1 + 0x6b8) = + *(float *)(param_1 + 0x344) * param_2 + *(float *)(param_1 + 0x6b8); + if (*(float *)(param_1 + 0x6b8) <= *(float *)(param_1 + 0x6b4)) { + uVar1 = *(undefined4 *)(param_1 + 0x6b8); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x6b4); + } + *(undefined4 *)(param_1 + 0x6b8) = uVar1; + if (*(float *)(param_1 + 0x6b8) <= *(float *)(param_1 + 0x7a0)) { + uVar1 = *(undefined4 *)(param_1 + 0x6b8); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x7a0); + } + *(undefined4 *)(param_1 + 0x6b8) = uVar1; + } + fVar4 = FUN_0042790c(param_1 + 0x6bc, + param_2 * (*(float *)(param_1 + 0x6b8) / *(float *)(param_1 + 0x34c)) * + *(float *)(param_1 + 0x5a8),param_3); + local_8 = (float)fVar4; + break; + case 0x12: + case 0x13: + if (*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x6b8)) { + if (*(float *)(param_1 + 0x6b4) < *(float *)(param_1 + 0x6b8)) { + *(float *)(param_1 + 0x6b8) = + *(float *)(param_1 + 0x6b8) - *(float *)(param_1 + 0x5b0) * param_2; + if (*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x6b8)) { + uVar1 = *(undefined4 *)(param_1 + 0x6b8); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x6b4); + } + *(undefined4 *)(param_1 + 0x6b8) = uVar1; + if (*(float *)(param_1 + 0x350) <= *(float *)(param_1 + 0x6b8)) { + uVar1 = *(undefined4 *)(param_1 + 0x6b8); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x350); + } + *(undefined4 *)(param_1 + 0x6b8) = uVar1; + } + } + else { + *(float *)(param_1 + 0x6b8) = + *(float *)(param_1 + 0x5b0) * param_2 + *(float *)(param_1 + 0x6b8); + if (*(float *)(param_1 + 0x6b8) <= *(float *)(param_1 + 0x6b4)) { + uVar1 = *(undefined4 *)(param_1 + 0x6b8); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x6b4); + } + *(undefined4 *)(param_1 + 0x6b8) = uVar1; + if (*(float *)(param_1 + 0x6b8) <= *(float *)(param_1 + 0x52c)) { + uVar1 = *(undefined4 *)(param_1 + 0x6b8); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x52c); + } + *(undefined4 *)(param_1 + 0x6b8) = uVar1; + } + fVar3 = *(float *)(param_1 + 0x6b8) / *(float *)(param_1 + 0x350); + if (fVar3 <= _DAT_004a6340) { + fVar3 = -fVar3; + } + fVar4 = FUN_0042790c(param_1 + 0x6bc,fVar3 * param_2 * *(float *)(param_1 + 0x5a8),param_3); + local_8 = (float)fVar4; + break; + case 0x18: + case 0x19: + if (*(int *)(param_1 + 0x40) == 3) { + if (*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x6b8)) { + if (*(float *)(param_1 + 0x6b4) < *(float *)(param_1 + 0x6b8)) { + *(float *)(param_1 + 0x6b8) = + *(float *)(param_1 + 0x6b8) - *(float *)(param_1 + 0x344) * param_2; + if (*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x6b8)) { + uVar1 = *(undefined4 *)(param_1 + 0x6b8); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x6b4); + } + *(undefined4 *)(param_1 + 0x6b8) = uVar1; + if (*(float *)(param_1 + 0x53c) <= *(float *)(param_1 + 0x6b8)) { + uVar1 = *(undefined4 *)(param_1 + 0x6b8); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x53c); + } + *(undefined4 *)(param_1 + 0x6b8) = uVar1; + } + } + else { + *(float *)(param_1 + 0x6b8) = + *(float *)(param_1 + 0x344) * param_2 + *(float *)(param_1 + 0x6b8); + if (*(float *)(param_1 + 0x6b8) <= *(float *)(param_1 + 0x6b4)) { + uVar1 = *(undefined4 *)(param_1 + 0x6b8); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x6b4); + } + *(undefined4 *)(param_1 + 0x6b8) = uVar1; + if (*(float *)(param_1 + 0x6b8) <= *(float *)(param_1 + 0x544)) { + uVar1 = *(undefined4 *)(param_1 + 0x6b8); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x544); + } + *(undefined4 *)(param_1 + 0x6b8) = uVar1; + } + local_c = *(float *)(param_1 + 0x6b8) / *(float *)(param_1 + 0x544); + } + else { + if (*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x6b8)) { + if (*(float *)(param_1 + 0x6b4) < *(float *)(param_1 + 0x6b8)) { + *(float *)(param_1 + 0x6b8) = + *(float *)(param_1 + 0x6b8) - *(float *)(param_1 + 0x344) * param_2; + if (*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x6b8)) { + uVar1 = *(undefined4 *)(param_1 + 0x6b8); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x6b4); + } + *(undefined4 *)(param_1 + 0x6b8) = uVar1; + if (*(float *)(param_1 + 0x540) <= *(float *)(param_1 + 0x6b8)) { + uVar1 = *(undefined4 *)(param_1 + 0x6b8); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x540); + } + *(undefined4 *)(param_1 + 0x6b8) = uVar1; + } + } + else { + *(float *)(param_1 + 0x6b8) = + *(float *)(param_1 + 0x344) * param_2 + *(float *)(param_1 + 0x6b8); + if (*(float *)(param_1 + 0x6b8) <= *(float *)(param_1 + 0x6b4)) { + uVar1 = *(undefined4 *)(param_1 + 0x6b8); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x6b4); + } + *(undefined4 *)(param_1 + 0x6b8) = uVar1; + if (*(float *)(param_1 + 0x6b8) <= *(float *)(param_1 + 0x548)) { + uVar1 = *(undefined4 *)(param_1 + 0x6b8); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x548); + } + *(undefined4 *)(param_1 + 0x6b8) = uVar1; + } + local_c = *(float *)(param_1 + 0x6b8) / *(float *)(param_1 + 0x548); + } + fVar4 = FUN_0042790c(param_1 + 0x6bc,param_2 * local_c * *(float *)(param_1 + 0x5a8),param_3); + local_8 = (float)fVar4; + break; + default: + FUN_004dbb24(&DAT_00524e20,s_StandingAnimation_0050cfe8 + *(int *)(param_1 + 0x728) * 0x3c, + (char *)0x0); + FUN_004d9c38(&DAT_00524e20); + FUN_0040385c(s_Unsupported_mech_animation__0050d869,s_d__tesla_bt_bt_MECH2_CPP_0050d886,0x2e8); + } + return (float10)local_8; +} + + + +/* @004a6344 file=? name=FUN_004a6344 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 __thiscall +FUN_004a6344(int param_1,int param_2,undefined4 param_3,float param_4,int param_5) + +{ + undefined4 uVar1; + int iVar2; + float fVar3; + int iVar4; + float10 fVar5; + float local_8; + + local_8 = 0.0; + iVar4 = *(int *)(param_2 + 0x40); + iVar2 = *(int *)(param_2 + 0x728); + if (((iVar2 - 6U < 2) || (iVar2 - 0xcU < 2)) || (iVar2 - 0x12U < 2)) { + if (iVar4 == 3) { + if (*(float *)(param_2 + 0x6b4) <= *(float *)(param_2 + 0x53c)) { + uVar1 = *(undefined4 *)(param_2 + 0x6b4); + } + else { + uVar1 = *(undefined4 *)(param_2 + 0x53c); + } + *(undefined4 *)(param_2 + 0x6b4) = uVar1; + } + else { + if (*(float *)(param_2 + 0x6b4) <= *(float *)(param_2 + 0x540)) { + uVar1 = *(undefined4 *)(param_2 + 0x6b4); + } + else { + uVar1 = *(undefined4 *)(param_2 + 0x540); + } + *(undefined4 *)(param_2 + 0x6b4) = uVar1; + } + fVar3 = _DAT_004a6924; + if (_DAT_004a6924 <= *(float *)(param_2 + 0x6b4)) { + fVar3 = *(float *)(param_2 + 0x6b4); + } + *(float *)(param_2 + 0x6b4) = fVar3; + } + switch(*(undefined4 *)(param_2 + 0x728)) { + default: + goto switchD_004a63ff_caseD_0; + case 2: + FUN_0041bbd8(param_2 + 0x714,1); + goto switchD_004a63ff_caseD_0; + case 3: + case 8: + case 9: + case 0x14: + case 0x15: + case 0x1a: + case 0x1b: + FUN_0041bbd8(param_2 + 0x714,0); + goto switchD_004a63ff_caseD_0; + case 4: + FUN_0041bbd8(param_2 + 0x714,0); + goto switchD_004a63ff_caseD_0; + case 5: + case 6: + case 0xe: + if ((*(float *)(param_2 + 0x530) <= *(float *)(param_2 + 0x6b4)) || + (*(float *)(param_2 + 0x530) <= + *(float *)(param_2 + 0x6b8) - *(float *)(param_2 + 0x344) * param_4)) { + if ((*(float *)(param_2 + 0x6b4) <= *(float *)(param_2 + 0x534)) || + (*(float *)(param_2 + 0x344) * param_4 + *(float *)(param_2 + 0x6b8) <= + *(float *)(param_2 + 0x534))) { + if (iVar4 == 4) { + param_1 = 7; + } + if (iVar4 == 3) { + param_1 = 0x16; + } +LAB_004a6505: + FUN_004a800c(param_2,param_1); + fVar5 = FUN_0042790c(param_2 + 0x6bc, + (param_4 * *(float *)(param_2 + 0x6b8) * *(float *)(param_2 + 0x5a8)) / + *(float *)(param_2 + 0x534),param_5); + local_8 = (float)fVar5; + goto switchD_004a63ff_caseD_0; + } + iVar4 = 0xb; + } + else { + iVar4 = 9; + } + break; + case 7: + case 0xf: + if ((*(float *)(param_2 + 0x530) <= *(float *)(param_2 + 0x6b4)) || + (*(float *)(param_2 + 0x530) <= + *(float *)(param_2 + 0x6b8) - *(float *)(param_2 + 0x344) * param_4)) { + if ((*(float *)(param_2 + 0x6b4) <= *(float *)(param_2 + 0x534)) || + (*(float *)(param_2 + 0x344) * param_4 + *(float *)(param_2 + 0x6b8) <= + *(float *)(param_2 + 0x534))) { + if (iVar4 == 3) { + param_1 = 6; + } + if (iVar4 == 4) { + param_1 = 0x17; + } + goto LAB_004a6505; + } + iVar4 = 10; + } + else { + iVar4 = 8; + } + break; + case 10: + case 0xc: + if ((*(float *)(param_2 + 0x538) <= *(float *)(param_2 + 0x6b4)) || + (*(float *)(param_2 + 0x538) <= + *(float *)(param_2 + 0x6b8) - *(float *)(param_2 + 0x344) * param_4)) { + iVar4 = 0xd; +LAB_004a6648: + FUN_004a800c(param_2,iVar4); + fVar5 = FUN_0042790c(param_2 + 0x6bc, + (param_4 * *(float *)(param_2 + 0x6b8) * *(float *)(param_2 + 0x5a8)) / + *(float *)(param_2 + 0x34c),param_5); + local_8 = (float)fVar5; + goto switchD_004a63ff_caseD_0; + } + iVar4 = 0xf; + break; + case 0xb: + case 0xd: + if ((*(float *)(param_2 + 0x538) <= *(float *)(param_2 + 0x6b4)) || + (*(float *)(param_2 + 0x538) <= + *(float *)(param_2 + 0x6b8) - *(float *)(param_2 + 0x344) * param_4)) { + iVar4 = 0xc; + goto LAB_004a6648; + } + iVar4 = 0xe; + break; + case 0x10: + case 0x12: + if ((*(float *)(param_2 + 0x6b4) <= *(float *)(param_2 + 0x52c)) || + (*(float *)(param_2 + 0x5b0) * param_4 + *(float *)(param_2 + 0x6b8) <= + *(float *)(param_2 + 0x52c))) { + FUN_004a800c(param_2,0x13); + if ((param_4 * *(float *)(param_2 + 0x6b8) * *(float *)(param_2 + 0x5a8)) / + *(float *)(param_2 + 0x350) <= _DAT_004a6924) { + fVar3 = (-param_4 * *(float *)(param_2 + 0x6b8) * *(float *)(param_2 + 0x5a8)) / + *(float *)(param_2 + 0x350); + } + else { + fVar3 = (param_4 * *(float *)(param_2 + 0x6b8) * *(float *)(param_2 + 0x5a8)) / + *(float *)(param_2 + 0x350); + } + fVar5 = FUN_0042790c(param_2 + 0x6bc,fVar3,param_5); + local_8 = (float)fVar5; + goto switchD_004a63ff_caseD_0; + } + iVar4 = 0x15; + break; + case 0x11: + case 0x13: + if ((*(float *)(param_2 + 0x6b4) <= *(float *)(param_2 + 0x52c)) || + (*(float *)(param_2 + 0x5b0) * param_4 + *(float *)(param_2 + 0x6b8) <= + *(float *)(param_2 + 0x52c))) { + FUN_004a800c(param_2,0x12); + if ((param_4 * *(float *)(param_2 + 0x6b8) * *(float *)(param_2 + 0x5a8)) / + *(float *)(param_2 + 0x350) <= _DAT_004a6924) { + fVar3 = (-param_4 * *(float *)(param_2 + 0x6b8) * *(float *)(param_2 + 0x5a8)) / + *(float *)(param_2 + 0x350); + } + else { + fVar3 = (param_4 * *(float *)(param_2 + 0x6b8) * *(float *)(param_2 + 0x5a8)) / + *(float *)(param_2 + 0x350); + } + fVar5 = FUN_0042790c(param_2 + 0x6bc,fVar3,param_5); + local_8 = (float)fVar5; + goto switchD_004a63ff_caseD_0; + } + iVar4 = 0x14; + break; + case 0x16: + case 0x18: + if ((*(float *)(param_2 + 0x53c) <= *(float *)(param_2 + 0x6b4)) || + (*(float *)(param_2 + 0x53c) <= + *(float *)(param_2 + 0x6b8) - *(float *)(param_2 + 0x344) * param_4)) { + FUN_004a800c(param_2,0x18); + fVar5 = FUN_0042790c(param_2 + 0x6bc, + (param_4 * *(float *)(param_2 + 0x6b8) * *(float *)(param_2 + 0x5a8)) / + *(float *)(param_2 + 0x544),param_5); + local_8 = (float)fVar5; + goto switchD_004a63ff_caseD_0; + } + iVar4 = 0x1a; + break; + case 0x17: + case 0x19: + if ((*(float *)(param_2 + 0x540) <= *(float *)(param_2 + 0x6b4)) || + (*(float *)(param_2 + 0x540) <= + *(float *)(param_2 + 0x6b8) - *(float *)(param_2 + 0x344) * param_4)) { + FUN_004a800c(param_2,0x19); + fVar5 = FUN_0042790c(param_2 + 0x6bc, + (param_4 * *(float *)(param_2 + 0x6b8) * *(float *)(param_2 + 0x5a8)) / + *(float *)(param_2 + 0x548),param_5); + local_8 = (float)fVar5; + goto switchD_004a63ff_caseD_0; + } + iVar4 = 0x1b; + break; + case 0x20: + FUN_0041bbd8(param_2 + 0x714,0); + goto switchD_004a63ff_caseD_0; + } + FUN_004a800c(param_2,iVar4); + fVar5 = FUN_0042790c(param_2 + 0x6bc,param_4 * *(float *)(param_2 + 0x5a8),param_5); + local_8 = (float)fVar5; +switchD_004a63ff_caseD_0: + return (float10)local_8; +} + + + +/* @004a71f4 file=bt/mech2.cpp name=FUN_004a71f4 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 __cdecl FUN_004a71f4(int param_1,float param_2) + +{ + undefined4 uVar1; + int iVar2; + int iVar3; + int iVar4; + float fVar5; + float10 fVar6; + float local_c; + float local_8; + + iVar2 = *(int *)(param_1 + 0x40); + iVar3 = **(int **)(param_1 + 0x128); + iVar4 = *(int *)(param_1 + 0x3b0); + if (((iVar4 - 6U < 2) || (iVar4 - 0xcU < 2)) || (iVar4 - 0x12U < 2)) { + if (iVar2 == 3) { + if (*(float *)(iVar3 + 0x128) <= *(float *)(param_1 + 0x53c)) { + uVar1 = *(undefined4 *)(iVar3 + 0x128); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x53c); + } + *(undefined4 *)(iVar3 + 0x128) = uVar1; + } + else { + if (*(float *)(iVar3 + 0x128) <= *(float *)(param_1 + 0x540)) { + uVar1 = *(undefined4 *)(iVar3 + 0x128); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x540); + } + *(undefined4 *)(iVar3 + 0x128) = uVar1; + } + fVar5 = _DAT_004a796c; + if (_DAT_004a796c <= *(float *)(iVar3 + 0x128)) { + fVar5 = *(float *)(iVar3 + 0x128); + } + *(float *)(iVar3 + 0x128) = fVar5; + } + switch(*(undefined4 *)(param_1 + 0x3b0)) { + case 0: + if (*(float *)(iVar3 + 0x128) <= *(float *)(param_1 + 0x530)) { + local_8 = 0.0; + break; + } + FUN_004a7fc4(param_1,5); + case 2: + case 3: + case 5: + case 8: + case 9: + case 10: + case 0xb: + case 0xe: + case 0xf: + case 0x10: + case 0x11: + case 0x14: + case 0x15: + case 0x16: + case 0x17: + case 0x1a: + case 0x1b: + case 0x20: +switchD_004a72b4_caseD_2: + fVar6 = FUN_0042790c(param_1 + 0x65c, + param_2 * *(float *)(param_1 + 0x5a8) * *(float *)(param_1 + 0x5ac),1); + local_8 = (float)fVar6; + *(float *)(param_1 + 0x348) = local_8 / param_2; + break; + case 1: + local_8 = 0.0; + break; + case 4: + if (*(float *)(param_1 + 0x530) < *(float *)(iVar3 + 0x128)) { + FUN_0041bbd8(param_1 + 0x39c,0); + FUN_004a4c54(param_1,8); + break; + } + goto switchD_004a72b4_caseD_2; + case 6: + case 7: + if (*(float *)(iVar3 + 0x128) <= *(float *)(param_1 + 0x348)) { + if (*(float *)(iVar3 + 0x128) < *(float *)(param_1 + 0x348)) { + *(float *)(param_1 + 0x348) = + *(float *)(param_1 + 0x348) - *(float *)(param_1 + 0x344) * param_2; + if (*(float *)(iVar3 + 0x128) <= *(float *)(param_1 + 0x348)) { + uVar1 = *(undefined4 *)(param_1 + 0x348); + } + else { + uVar1 = *(undefined4 *)(iVar3 + 0x128); + } + *(undefined4 *)(param_1 + 0x348) = uVar1; + if (*(float *)(param_1 + 0x530) <= *(float *)(param_1 + 0x348)) { + uVar1 = *(undefined4 *)(param_1 + 0x348); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x530); + } + *(undefined4 *)(param_1 + 0x348) = uVar1; + } + } + else { + *(float *)(param_1 + 0x348) = + *(float *)(param_1 + 0x344) * param_2 + *(float *)(param_1 + 0x348); + if (*(float *)(param_1 + 0x348) <= *(float *)(iVar3 + 0x128)) { + uVar1 = *(undefined4 *)(param_1 + 0x348); + } + else { + uVar1 = *(undefined4 *)(iVar3 + 0x128); + } + *(undefined4 *)(param_1 + 0x348) = uVar1; + if (*(float *)(param_1 + 0x348) <= *(float *)(param_1 + 0x534)) { + uVar1 = *(undefined4 *)(param_1 + 0x348); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x534); + } + *(undefined4 *)(param_1 + 0x348) = uVar1; + } + fVar6 = FUN_0042790c(param_1 + 0x65c, + param_2 * (*(float *)(param_1 + 0x348) / *(float *)(param_1 + 0x534)) * + *(float *)(param_1 + 0x5a8),1); + local_8 = (float)fVar6; + break; + case 0xc: + case 0xd: + if (*(float *)(iVar3 + 0x128) <= *(float *)(param_1 + 0x348)) { + if (*(float *)(iVar3 + 0x128) < *(float *)(param_1 + 0x348)) { + *(float *)(param_1 + 0x348) = + *(float *)(param_1 + 0x348) - *(float *)(param_1 + 0x344) * param_2; + if (*(float *)(iVar3 + 0x128) <= *(float *)(param_1 + 0x348)) { + uVar1 = *(undefined4 *)(param_1 + 0x348); + } + else { + uVar1 = *(undefined4 *)(iVar3 + 0x128); + } + *(undefined4 *)(param_1 + 0x348) = uVar1; + if (*(float *)(param_1 + 0x538) <= *(float *)(param_1 + 0x348)) { + uVar1 = *(undefined4 *)(param_1 + 0x348); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x538); + } + *(undefined4 *)(param_1 + 0x348) = uVar1; + } + } + else { + *(float *)(param_1 + 0x348) = + *(float *)(param_1 + 0x344) * param_2 + *(float *)(param_1 + 0x348); + if (*(float *)(param_1 + 0x348) <= *(float *)(iVar3 + 0x128)) { + uVar1 = *(undefined4 *)(param_1 + 0x348); + } + else { + uVar1 = *(undefined4 *)(iVar3 + 0x128); + } + *(undefined4 *)(param_1 + 0x348) = uVar1; + if (*(float *)(param_1 + 0x348) <= *(float *)(param_1 + 0x7a0)) { + uVar1 = *(undefined4 *)(param_1 + 0x348); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x7a0); + } + *(undefined4 *)(param_1 + 0x348) = uVar1; + } + fVar6 = FUN_0042790c(param_1 + 0x65c, + param_2 * (*(float *)(param_1 + 0x348) / *(float *)(param_1 + 0x34c)) * + *(float *)(param_1 + 0x5a8),1); + local_8 = (float)fVar6; + break; + case 0x12: + case 0x13: + if (*(float *)(iVar3 + 0x128) <= *(float *)(param_1 + 0x348)) { + if (*(float *)(iVar3 + 0x128) < *(float *)(param_1 + 0x348)) { + *(float *)(param_1 + 0x348) = + *(float *)(param_1 + 0x348) - *(float *)(param_1 + 0x5b0) * param_2; + if (*(float *)(iVar3 + 0x128) <= *(float *)(param_1 + 0x348)) { + uVar1 = *(undefined4 *)(param_1 + 0x348); + } + else { + uVar1 = *(undefined4 *)(iVar3 + 0x128); + } + *(undefined4 *)(param_1 + 0x348) = uVar1; + if (*(float *)(param_1 + 0x350) <= *(float *)(param_1 + 0x348)) { + uVar1 = *(undefined4 *)(param_1 + 0x348); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x350); + } + *(undefined4 *)(param_1 + 0x348) = uVar1; + } + } + else { + *(float *)(param_1 + 0x348) = + *(float *)(param_1 + 0x5b0) * param_2 + *(float *)(param_1 + 0x348); + if (*(float *)(param_1 + 0x348) <= *(float *)(iVar3 + 0x128)) { + uVar1 = *(undefined4 *)(param_1 + 0x348); + } + else { + uVar1 = *(undefined4 *)(iVar3 + 0x128); + } + *(undefined4 *)(param_1 + 0x348) = uVar1; + if (*(float *)(param_1 + 0x348) <= *(float *)(param_1 + 0x52c)) { + uVar1 = *(undefined4 *)(param_1 + 0x348); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x52c); + } + *(undefined4 *)(param_1 + 0x348) = uVar1; + } + fVar5 = *(float *)(param_1 + 0x348) / *(float *)(param_1 + 0x350); + if (fVar5 <= _DAT_004a796c) { + fVar5 = -fVar5; + } + fVar6 = FUN_0042790c(param_1 + 0x65c,fVar5 * param_2 * *(float *)(param_1 + 0x5a8),1); + local_8 = (float)fVar6; + break; + case 0x18: + case 0x19: + if (iVar2 == 3) { + if (*(float *)(iVar3 + 0x128) <= *(float *)(param_1 + 0x348)) { + if (*(float *)(iVar3 + 0x128) < *(float *)(param_1 + 0x348)) { + *(float *)(param_1 + 0x348) = + *(float *)(param_1 + 0x348) - *(float *)(param_1 + 0x344) * param_2; + if (*(float *)(iVar3 + 0x128) <= *(float *)(param_1 + 0x348)) { + uVar1 = *(undefined4 *)(param_1 + 0x348); + } + else { + uVar1 = *(undefined4 *)(iVar3 + 0x128); + } + *(undefined4 *)(param_1 + 0x348) = uVar1; + if (*(float *)(param_1 + 0x53c) <= *(float *)(param_1 + 0x348)) { + uVar1 = *(undefined4 *)(param_1 + 0x348); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x53c); + } + *(undefined4 *)(param_1 + 0x348) = uVar1; + } + } + else { + *(float *)(param_1 + 0x348) = + *(float *)(param_1 + 0x344) * param_2 + *(float *)(param_1 + 0x348); + if (*(float *)(param_1 + 0x348) <= *(float *)(iVar3 + 0x128)) { + uVar1 = *(undefined4 *)(param_1 + 0x348); + } + else { + uVar1 = *(undefined4 *)(iVar3 + 0x128); + } + *(undefined4 *)(param_1 + 0x348) = uVar1; + if (*(float *)(param_1 + 0x348) <= *(float *)(param_1 + 0x544)) { + uVar1 = *(undefined4 *)(param_1 + 0x348); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x544); + } + *(undefined4 *)(param_1 + 0x348) = uVar1; + } + local_c = *(float *)(param_1 + 0x348) / *(float *)(param_1 + 0x544); + } + else { + if (*(float *)(iVar3 + 0x128) <= *(float *)(param_1 + 0x348)) { + if (*(float *)(iVar3 + 0x128) < *(float *)(param_1 + 0x348)) { + *(float *)(param_1 + 0x348) = + *(float *)(param_1 + 0x348) - *(float *)(param_1 + 0x344) * param_2; + if (*(float *)(iVar3 + 0x128) <= *(float *)(param_1 + 0x348)) { + uVar1 = *(undefined4 *)(param_1 + 0x348); + } + else { + uVar1 = *(undefined4 *)(iVar3 + 0x128); + } + *(undefined4 *)(param_1 + 0x348) = uVar1; + if (*(float *)(param_1 + 0x540) <= *(float *)(param_1 + 0x348)) { + uVar1 = *(undefined4 *)(param_1 + 0x348); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x540); + } + *(undefined4 *)(param_1 + 0x348) = uVar1; + } + } + else { + *(float *)(param_1 + 0x348) = + *(float *)(param_1 + 0x344) * param_2 + *(float *)(param_1 + 0x348); + if (*(float *)(param_1 + 0x348) <= *(float *)(iVar3 + 0x128)) { + uVar1 = *(undefined4 *)(param_1 + 0x348); + } + else { + uVar1 = *(undefined4 *)(iVar3 + 0x128); + } + *(undefined4 *)(param_1 + 0x348) = uVar1; + if (*(float *)(param_1 + 0x348) <= *(float *)(param_1 + 0x548)) { + uVar1 = *(undefined4 *)(param_1 + 0x348); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x548); + } + *(undefined4 *)(param_1 + 0x348) = uVar1; + } + local_c = *(float *)(param_1 + 0x348) / *(float *)(param_1 + 0x548); + } + fVar6 = FUN_0042790c(param_1 + 0x65c,param_2 * local_c * *(float *)(param_1 + 0x5a8),1); + local_8 = (float)fVar6; + break; + default: + FUN_004dbb24(&DAT_00524e20,s_StandingAnimation_0050cfe8 + *(int *)(param_1 + 0x3b0) * 0x3c, + (char *)0x0); + FUN_004d9c38(&DAT_00524e20); + FUN_0040385c(s_Unsupported_mech_animation__0050d89f,s_d__tesla_bt_bt_MECH2_CPP_0050d8bc,0x672); + } + return (float10)local_8; +} + + + +/* @004a7970 file=? name=FUN_004a7970 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 __cdecl FUN_004a7970(int param_1,undefined4 param_2,float param_3) + +{ + undefined4 uVar1; + int iVar2; + int iVar3; + float fVar4; + int unaff_ESI; + int iVar5; + float10 fVar6; + float local_8; + + local_8 = 0.0; + iVar5 = *(int *)(param_1 + 0x3b0); + iVar2 = *(int *)(param_1 + 0x40); + iVar3 = **(int **)(param_1 + 0x128); + if (((iVar5 - 6U < 2) || (iVar5 - 0xcU < 2)) || (iVar5 - 0x12U < 2)) { + if (iVar2 == 3) { + if (*(float *)(iVar3 + 0x128) <= *(float *)(param_1 + 0x53c)) { + uVar1 = *(undefined4 *)(iVar3 + 0x128); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x53c); + } + *(undefined4 *)(iVar3 + 0x128) = uVar1; + } + else { + if (*(float *)(iVar3 + 0x128) <= *(float *)(param_1 + 0x540)) { + uVar1 = *(undefined4 *)(iVar3 + 0x128); + } + else { + uVar1 = *(undefined4 *)(param_1 + 0x540); + } + *(undefined4 *)(iVar3 + 0x128) = uVar1; + } + fVar4 = _DAT_004a7f4c; + if (_DAT_004a7f4c <= *(float *)(iVar3 + 0x128)) { + fVar4 = *(float *)(iVar3 + 0x128); + } + *(float *)(iVar3 + 0x128) = fVar4; + } + switch(*(undefined4 *)(param_1 + 0x3b0)) { + default: + goto switchD_004a7a34_caseD_0; + case 2: + FUN_0041bbd8(param_1 + 0x39c,1); + goto switchD_004a7a34_caseD_0; + case 3: + case 8: + case 9: + case 0x14: + case 0x15: + case 0x1a: + case 0x1b: + FUN_0041bbd8(param_1 + 0x39c,0); + goto switchD_004a7a34_caseD_0; + case 4: + FUN_0041bbd8(param_1 + 0x39c,0); + goto switchD_004a7a34_caseD_0; + case 5: + case 6: + case 0xe: + if ((*(float *)(param_1 + 0x530) <= *(float *)(iVar3 + 0x128)) || + (*(float *)(param_1 + 0x530) <= + *(float *)(param_1 + 0x348) - *(float *)(param_1 + 0x344) * param_3)) { + if ((*(float *)(iVar3 + 0x128) <= *(float *)(param_1 + 0x534)) || + (*(float *)(param_1 + 0x344) * param_3 + *(float *)(param_1 + 0x348) <= + *(float *)(param_1 + 0x534))) { + if (iVar2 == 4) { + unaff_ESI = 7; + } + if (iVar2 == 3) { + unaff_ESI = 0x16; + } +LAB_004a7b38: + FUN_004a7fc4(param_1,unaff_ESI); + fVar6 = FUN_0042790c(param_1 + 0x65c, + (param_3 * *(float *)(param_1 + 0x348) * *(float *)(param_1 + 0x5a8)) / + *(float *)(param_1 + 0x534),1); + local_8 = (float)fVar6; + goto switchD_004a7a34_caseD_0; + } + iVar5 = 0xb; + } + else { + iVar5 = 9; + } + break; + case 7: + case 0xf: + if ((*(float *)(param_1 + 0x530) <= *(float *)(iVar3 + 0x128)) || + (*(float *)(param_1 + 0x530) <= + *(float *)(param_1 + 0x348) - *(float *)(param_1 + 0x344) * param_3)) { + if ((*(float *)(iVar3 + 0x128) <= *(float *)(param_1 + 0x534)) || + (*(float *)(param_1 + 0x344) * param_3 + *(float *)(param_1 + 0x348) <= + *(float *)(param_1 + 0x534))) { + if (iVar2 == 3) { + unaff_ESI = 6; + } + if (iVar2 == 4) { + unaff_ESI = 0x17; + } + goto LAB_004a7b38; + } + iVar5 = 10; + } + else { + iVar5 = 8; + } + break; + case 10: + case 0xc: + if ((*(float *)(param_1 + 0x538) <= *(float *)(iVar3 + 0x128)) || + (*(float *)(param_1 + 0x538) <= + *(float *)(param_1 + 0x348) - *(float *)(param_1 + 0x344) * param_3)) { + iVar5 = 0xd; +LAB_004a7c79: + FUN_004a7fc4(param_1,iVar5); + fVar6 = FUN_0042790c(param_1 + 0x65c, + (param_3 * *(float *)(param_1 + 0x348) * *(float *)(param_1 + 0x5a8)) / + *(float *)(param_1 + 0x34c),1); + local_8 = (float)fVar6; + goto switchD_004a7a34_caseD_0; + } + iVar5 = 0xf; + break; + case 0xb: + case 0xd: + if ((*(float *)(param_1 + 0x538) <= *(float *)(iVar3 + 0x128)) || + (*(float *)(param_1 + 0x538) <= + *(float *)(param_1 + 0x348) - *(float *)(param_1 + 0x344) * param_3)) { + iVar5 = 0xc; + goto LAB_004a7c79; + } + iVar5 = 0xe; + break; + case 0x10: + case 0x12: + if ((*(float *)(iVar3 + 0x128) <= *(float *)(param_1 + 0x52c)) || + (*(float *)(param_1 + 0x5b0) * param_3 + *(float *)(param_1 + 0x348) <= + *(float *)(param_1 + 0x52c))) { + FUN_004a7fc4(param_1,0x13); + if ((param_3 * *(float *)(param_1 + 0x348) * *(float *)(param_1 + 0x5a8)) / + *(float *)(param_1 + 0x350) <= _DAT_004a7f4c) { + fVar4 = (-param_3 * *(float *)(param_1 + 0x348) * *(float *)(param_1 + 0x5a8)) / + *(float *)(param_1 + 0x350); + } + else { + fVar4 = (param_3 * *(float *)(param_1 + 0x348) * *(float *)(param_1 + 0x5a8)) / + *(float *)(param_1 + 0x350); + } + fVar6 = FUN_0042790c(param_1 + 0x65c,fVar4,1); + local_8 = (float)fVar6; + goto switchD_004a7a34_caseD_0; + } + iVar5 = 0x15; + break; + case 0x11: + case 0x13: + if ((*(float *)(iVar3 + 0x128) <= *(float *)(param_1 + 0x52c)) || + (*(float *)(param_1 + 0x5b0) * param_3 + *(float *)(param_1 + 0x348) <= + *(float *)(param_1 + 0x52c))) { + FUN_004a7fc4(param_1,0x12); + if ((param_3 * *(float *)(param_1 + 0x348) * *(float *)(param_1 + 0x5a8)) / + *(float *)(param_1 + 0x350) <= _DAT_004a7f4c) { + fVar4 = (-param_3 * *(float *)(param_1 + 0x348) * *(float *)(param_1 + 0x5a8)) / + *(float *)(param_1 + 0x350); + } + else { + fVar4 = (param_3 * *(float *)(param_1 + 0x348) * *(float *)(param_1 + 0x5a8)) / + *(float *)(param_1 + 0x350); + } + fVar6 = FUN_0042790c(param_1 + 0x65c,fVar4,1); + local_8 = (float)fVar6; + goto switchD_004a7a34_caseD_0; + } + iVar5 = 0x14; + break; + case 0x16: + case 0x18: + if ((*(float *)(param_1 + 0x53c) <= *(float *)(iVar3 + 0x128)) || + (*(float *)(param_1 + 0x53c) <= + *(float *)(param_1 + 0x348) - *(float *)(param_1 + 0x344) * param_3)) { + FUN_004a7fc4(param_1,0x18); + fVar6 = FUN_0042790c(param_1 + 0x65c, + (param_3 * *(float *)(param_1 + 0x348) * *(float *)(param_1 + 0x5a8)) / + *(float *)(param_1 + 0x544),1); + local_8 = (float)fVar6; + goto switchD_004a7a34_caseD_0; + } + iVar5 = 0x1a; + break; + case 0x17: + case 0x19: + if ((*(float *)(param_1 + 0x540) <= *(float *)(iVar3 + 0x128)) || + (*(float *)(param_1 + 0x540) <= + *(float *)(param_1 + 0x348) - *(float *)(param_1 + 0x344) * param_3)) { + FUN_004a7fc4(param_1,0x19); + fVar6 = FUN_0042790c(param_1 + 0x65c, + (param_3 * *(float *)(param_1 + 0x348) * *(float *)(param_1 + 0x5a8)) / + *(float *)(param_1 + 0x548),1); + local_8 = (float)fVar6; + goto switchD_004a7a34_caseD_0; + } + iVar5 = 0x1b; + break; + case 0x20: + FUN_0041bbd8(param_1 + 0x39c,0); + goto switchD_004a7a34_caseD_0; + } + FUN_004a7fc4(param_1,iVar5); + fVar6 = FUN_0042790c(param_1 + 0x65c,param_3 * *(float *)(param_1 + 0x5a8),1); + local_8 = (float)fVar6; +switchD_004a7a34_caseD_0: + return (float10)local_8; +} + + + +/* @004a7f50 file=? name=FUN_004a7f50 */ + +void __cdecl FUN_004a7f50(undefined4 param_1,char *param_2,char *param_3) + +{ + char cVar1; + uint uVar2; + uint uVar3; + char *pcVar4; + char *pcVar5; + char local_10 [3]; + char local_d [9]; + + uVar2 = 0xffffffff; + do { + pcVar4 = param_2; + if (uVar2 == 0) break; + uVar2 = uVar2 - 1; + pcVar4 = param_2 + 1; + cVar1 = *param_2; + param_2 = pcVar4; + } while (cVar1 != '\0'); + uVar2 = ~uVar2; + pcVar4 = pcVar4 + -uVar2; + pcVar5 = local_10; + for (uVar3 = uVar2 >> 2; uVar3 != 0; uVar3 = uVar3 - 1) { + *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4; + pcVar4 = pcVar4 + 4; + pcVar5 = pcVar5 + 4; + } + for (uVar2 = uVar2 & 3; uVar2 != 0; uVar2 = uVar2 - 1) { + *pcVar5 = *pcVar4; + pcVar4 = pcVar4 + 1; + pcVar5 = pcVar5 + 1; + } + uVar2 = 0xffffffff; + do { + pcVar4 = param_3; + if (uVar2 == 0) break; + uVar2 = uVar2 - 1; + pcVar4 = param_3 + 1; + cVar1 = *param_3; + param_3 = pcVar4; + } while (cVar1 != '\0'); + uVar2 = ~uVar2; + pcVar4 = pcVar4 + -uVar2; + pcVar5 = local_10 + 3; + for (uVar3 = uVar2 >> 2; uVar3 != 0; uVar3 = uVar3 - 1) { + *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4; + pcVar4 = pcVar4 + 4; + pcVar5 = pcVar5 + 4; + } + for (uVar2 = uVar2 & 3; uVar2 != 0; uVar2 = uVar2 - 1) { + *pcVar5 = *pcVar4; + pcVar4 = pcVar4 + 1; + pcVar5 = pcVar5 + 1; + } + FUN_00406ff8(*(int *)(DAT_004efc94 + 0x68),local_10,0x10,-1); + return; +} + + + +/* @004a7fc4 file=? name=FUN_004a7fc4 */ + +void __cdecl FUN_004a7fc4(int param_1,int param_2) + +{ + FUN_004277a8(param_1 + 0x65c,*(int *)(param_1 + 0x5cc + param_2 * 4),PTR_LAB_0050d6f0,DAT_0050d6f4 + ,DAT_0050d6f8); + FUN_0041bbd8(param_1 + 0x39c,param_2); + return; +} + + + +/* @004a800c file=? name=FUN_004a800c */ + +void __cdecl FUN_004a800c(int param_1,int param_2) + +{ + FUN_004277a8(param_1 + 0x6bc,*(int *)(param_1 + 0x5cc + param_2 * 4),PTR_LAB_0050d6fc,DAT_0050d700 + ,DAT_0050d704); + FUN_0041bbd8(param_1 + 0x714,param_2); + return; +} + + + +/* @004a8054 file=? name=FUN_004a8054 */ + +void __cdecl FUN_004a8054(int param_1,int param_2,float *param_3,float *param_4) + +{ + int iVar1; + + FUN_004277a8(param_1 + 0x65c,*(int *)(param_1 + 0x5cc + param_2 * 4),PTR_LAB_0050d708,DAT_0050d70c + ,DAT_0050d710); + *param_3 = 0.0; + *param_4 = 0.0; + for (iVar1 = 0; iVar1 < *(int *)(param_1 + 0x670); iVar1 = iVar1 + 1) { + *param_3 = (*(float *)(*(int *)(param_1 + 0x680) + iVar1 * 4) - *param_4) * + *(float *)(*(int *)(param_1 + 0x690) + 8 + iVar1 * 0xc) + *param_3; + *param_4 = *(float *)(*(int *)(param_1 + 0x680) + iVar1 * 4); + } + return; +} + + + +/* @004a80d4 file=? name=FUN_004a80d4 */ + +void __cdecl FUN_004a80d4(int param_1,int param_2) + +{ + char *pcVar1; + char cVar2; + undefined4 *puVar3; + int iVar4; + uint uVar5; + uint uVar6; + char *pcVar7; + char *pcVar8; + char local_20 [3]; + undefined4 local_1d; + float local_14; + float local_10; + float local_c; + float local_8; + + *(undefined4 *)(param_1 + 0x5c4) = 0; + pcVar1 = (char *)(param_2 + 0x40); + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d8d5); + *(undefined4 *)(param_1 + 0x5e0) = *puVar3; + FUN_004277a8(param_1 + 0x65c,*(int *)(param_1 + 0x5e0),PTR_LAB_0050d714,DAT_0050d718,DAT_0050d71c) + ; + *(undefined4 *)(param_1 + 0x530) = + *(undefined4 *)(*(int *)(param_1 + 0x690) + 8 + *(int *)(param_1 + 0x670) * 0xc); + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d8d9); + *(undefined4 *)(param_1 + 0x5e4) = *puVar3; + FUN_004a8054(param_1,6,&local_8,&local_c); + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d8dd); + *(undefined4 *)(param_1 + 0x5e8) = *puVar3; + FUN_004a8054(param_1,7,&local_10,&local_14); + *(float *)(param_1 + 0x534) = (local_8 + local_10) / (local_c + local_14); + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d8e1); + *(undefined4 *)(param_1 + 0x5ec) = *puVar3; + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d8e5); + *(undefined4 *)(param_1 + 0x5f0) = *puVar3; + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d8e9); + *(undefined4 *)(param_1 + 0x5f4) = *puVar3; + FUN_004277a8(param_1 + 0x65c,*(int *)(param_1 + 0x5f4),PTR_LAB_0050d720,DAT_0050d724,DAT_0050d728) + ; + *(undefined4 *)(param_1 + 0x538) = + *(undefined4 *)(*(int *)(param_1 + 0x690) + 8 + *(int *)(param_1 + 0x670) * 0xc); + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d8ed); + *(undefined4 *)(param_1 + 0x5f8) = *puVar3; + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d8f1); + *(undefined4 *)(param_1 + 0x5fc) = *puVar3; + FUN_004a8054(param_1,0xc,&local_8,&local_c); + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d8f5); + *(undefined4 *)(param_1 + 0x600) = *puVar3; + FUN_004a8054(param_1,0xd,&local_10,&local_14); + *(float *)(param_1 + 0x34c) = (local_8 + local_10) / (local_c + local_14); + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d8f9); + *(undefined4 *)(param_1 + 0x604) = *puVar3; + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d8fd); + *(undefined4 *)(param_1 + 0x608) = *puVar3; + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d901); + *(undefined4 *)(param_1 + 0x64c) = *puVar3; + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d905); + *(undefined4 *)(param_1 + 0x60c) = *puVar3; + FUN_004277a8(param_1 + 0x65c,*(int *)(param_1 + 0x60c),PTR_LAB_0050d72c,DAT_0050d730,DAT_0050d734) + ; + *(undefined4 *)(param_1 + 0x52c) = + *(undefined4 *)(*(int *)(param_1 + 0x690) + 8 + *(int *)(param_1 + 0x670) * 0xc); + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d909); + *(undefined4 *)(param_1 + 0x610) = *puVar3; + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d90d); + *(undefined4 *)(param_1 + 0x61c) = *puVar3; + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d911); + *(undefined4 *)(param_1 + 0x620) = *puVar3; + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d915); + *(undefined4 *)(param_1 + 0x614) = *puVar3; + FUN_004a8054(param_1,0x12,&local_8,&local_c); + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d919); + *(undefined4 *)(param_1 + 0x618) = *puVar3; + FUN_004a8054(param_1,0x13,&local_8,&local_c); + uVar5 = 0xffffffff; + *(float *)(param_1 + 0x350) = (local_8 + local_10) / (local_c + local_14); + *(float *)(param_1 + 0x350) = -*(float *)(param_1 + 0x350); + pcVar7 = pcVar1; + do { + pcVar8 = pcVar7; + if (uVar5 == 0) break; + uVar5 = uVar5 - 1; + pcVar8 = pcVar7 + 1; + cVar2 = *pcVar7; + pcVar7 = pcVar8; + } while (cVar2 != '\0'); + uVar5 = ~uVar5; + pcVar7 = pcVar8 + -uVar5; + pcVar8 = local_20; + for (uVar6 = uVar5 >> 2; uVar6 != 0; uVar6 = uVar6 - 1) { + *(undefined4 *)pcVar8 = *(undefined4 *)pcVar7; + pcVar7 = pcVar7 + 4; + pcVar8 = pcVar8 + 4; + } + for (uVar5 = uVar5 & 3; uVar5 != 0; uVar5 = uVar5 - 1) { + *pcVar8 = *pcVar7; + pcVar7 = pcVar7 + 1; + pcVar8 = pcVar8 + 1; + } + local_1d = DAT_0050d91d; + iVar4 = FUN_00406ff8(*(int *)(DAT_004efc94 + 0x68),local_20,0x10,-1); + if (iVar4 != 0) { + *(undefined4 *)(param_1 + 0x580) = 1; + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d921); + *(undefined4 *)(param_1 + 0x624) = *puVar3; + FUN_004277a8(param_1 + 0x65c,*(int *)(param_1 + 0x624),PTR_LAB_0050d738,DAT_0050d73c, + DAT_0050d740); + *(undefined4 *)(param_1 + 0x53c) = + *(undefined4 *)(*(int *)(param_1 + 0x690) + 8 + *(int *)(param_1 + 0x670) * 0xc); + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d925); + *(undefined4 *)(param_1 + 0x628) = *puVar3; + FUN_004277a8(param_1 + 0x65c,*(int *)(param_1 + 0x628),PTR_LAB_0050d744,DAT_0050d748, + DAT_0050d74c); + *(undefined4 *)(param_1 + 0x540) = + *(undefined4 *)(*(int *)(param_1 + 0x690) + 8 + *(int *)(param_1 + 0x670) * 0xc); + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d929); + *(undefined4 *)(param_1 + 0x62c) = *puVar3; + FUN_004a8054(param_1,0x18,&local_8,&local_c); + *(float *)(param_1 + 0x544) = local_8 / local_c; + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d92d); + *(undefined4 *)(param_1 + 0x630) = *puVar3; + FUN_004a8054(param_1,0x19,&local_8,&local_c); + *(float *)(param_1 + 0x548) = local_8 / local_c; + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d931); + *(undefined4 *)(param_1 + 0x634) = *puVar3; + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d935); + *(undefined4 *)(param_1 + 0x638) = *puVar3; + } + *(undefined4 *)(param_1 + 0x584) = 0; + uVar5 = 0xffffffff; + pcVar7 = pcVar1; + do { + pcVar8 = pcVar7; + if (uVar5 == 0) break; + uVar5 = uVar5 - 1; + pcVar8 = pcVar7 + 1; + cVar2 = *pcVar7; + pcVar7 = pcVar8; + } while (cVar2 != '\0'); + uVar5 = ~uVar5; + pcVar7 = pcVar8 + -uVar5; + pcVar8 = local_20; + for (uVar6 = uVar5 >> 2; uVar6 != 0; uVar6 = uVar6 - 1) { + *(undefined4 *)pcVar8 = *(undefined4 *)pcVar7; + pcVar7 = pcVar7 + 4; + pcVar8 = pcVar8 + 4; + } + for (uVar5 = uVar5 & 3; uVar5 != 0; uVar5 = uVar5 - 1) { + *pcVar8 = *pcVar7; + pcVar7 = pcVar7 + 1; + pcVar8 = pcVar8 + 1; + } + local_1d = DAT_0050d939; + iVar4 = FUN_00406ff8(*(int *)(DAT_004efc94 + 0x68),local_20,0x10,-1); + if (iVar4 != 0) { + *(undefined4 *)(param_1 + 0x584) = 1; + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d93d); + *(undefined4 *)(param_1 + 0x5d8) = *puVar3; + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d941); + *(undefined4 *)(param_1 + 0x5d4) = *puVar3; + } + *(undefined4 *)(param_1 + 0x588) = 0; + uVar5 = 0xffffffff; + pcVar7 = pcVar1; + do { + pcVar8 = pcVar7; + if (uVar5 == 0) break; + uVar5 = uVar5 - 1; + pcVar8 = pcVar7 + 1; + cVar2 = *pcVar7; + pcVar7 = pcVar8; + } while (cVar2 != '\0'); + uVar5 = ~uVar5; + pcVar7 = pcVar8 + -uVar5; + pcVar8 = local_20; + for (uVar6 = uVar5 >> 2; uVar6 != 0; uVar6 = uVar6 - 1) { + *(undefined4 *)pcVar8 = *(undefined4 *)pcVar7; + pcVar7 = pcVar7 + 4; + pcVar8 = pcVar8 + 4; + } + for (uVar5 = uVar5 & 3; uVar5 != 0; uVar5 = uVar5 - 1) { + *pcVar8 = *pcVar7; + pcVar7 = pcVar7 + 1; + pcVar8 = pcVar8 + 1; + } + local_1d = DAT_0050d945; + iVar4 = FUN_00406ff8(*(int *)(DAT_004efc94 + 0x68),local_20,0x10,-1); + if (iVar4 != 0) { + *(undefined4 *)(param_1 + 0x588) = 1; + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d949); + *(undefined4 *)(param_1 + 0x5dc) = *puVar3; + } + return; +} + + + +/* @004a86c8 file=? name=FUN_004a86c8 */ + +void __cdecl FUN_004a86c8(int param_1,int param_2) + +{ + char *pcVar1; + char cVar2; + undefined4 *puVar3; + int iVar4; + uint uVar5; + uint uVar6; + char *pcVar7; + char *pcVar8; + char local_20 [3]; + undefined4 local_1d; + undefined1 uStack_19; + float local_14; + float local_10; + float local_c; + float local_8; + + *(undefined4 *)(param_1 + 0x5c4) = 0; + pcVar1 = (char *)(param_2 + 0x40); + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d94d); + *(undefined4 *)(param_1 + 0x5e0) = *puVar3; + FUN_004277a8(param_1 + 0x65c,*(int *)(param_1 + 0x5e0),PTR_LAB_0050d750,DAT_0050d754,DAT_0050d758) + ; + *(undefined4 *)(param_1 + 0x530) = + *(undefined4 *)(*(int *)(param_1 + 0x690) + 8 + *(int *)(param_1 + 0x670) * 0xc); + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d952); + *(undefined4 *)(param_1 + 0x5e4) = *puVar3; + FUN_004a8054(param_1,6,&local_8,&local_c); + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d957); + *(undefined4 *)(param_1 + 0x5e8) = *puVar3; + FUN_004a8054(param_1,7,&local_10,&local_14); + *(float *)(param_1 + 0x534) = (local_8 + local_10) / (local_c + local_14); + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d95c); + *(undefined4 *)(param_1 + 0x5ec) = *puVar3; + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d961); + *(undefined4 *)(param_1 + 0x5f0) = *puVar3; + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d966); + *(undefined4 *)(param_1 + 0x5f4) = *puVar3; + FUN_004277a8(param_1 + 0x65c,*(int *)(param_1 + 0x5f4),PTR_LAB_0050d75c,DAT_0050d760,DAT_0050d764) + ; + *(undefined4 *)(param_1 + 0x538) = + *(undefined4 *)(*(int *)(param_1 + 0x690) + 8 + *(int *)(param_1 + 0x670) * 0xc); + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d96b); + *(undefined4 *)(param_1 + 0x5f8) = *puVar3; + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d970); + *(undefined4 *)(param_1 + 0x5fc) = *puVar3; + FUN_004a8054(param_1,0xc,&local_8,&local_c); + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d975); + *(undefined4 *)(param_1 + 0x600) = *puVar3; + FUN_004a8054(param_1,0xd,&local_10,&local_14); + *(float *)(param_1 + 0x34c) = (local_8 + local_10) / (local_c + local_14); + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d97a); + *(undefined4 *)(param_1 + 0x604) = *puVar3; + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d97f); + *(undefined4 *)(param_1 + 0x608) = *puVar3; + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d984); + *(undefined4 *)(param_1 + 0x64c) = *puVar3; + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d989); + *(undefined4 *)(param_1 + 0x60c) = *puVar3; + FUN_004277a8(param_1 + 0x65c,*(int *)(param_1 + 0x60c),PTR_LAB_0050d768,DAT_0050d76c,DAT_0050d770) + ; + *(undefined4 *)(param_1 + 0x52c) = + *(undefined4 *)(*(int *)(param_1 + 0x690) + 8 + *(int *)(param_1 + 0x670) * 0xc); + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d98e); + *(undefined4 *)(param_1 + 0x610) = *puVar3; + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d993); + *(undefined4 *)(param_1 + 0x61c) = *puVar3; + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d998); + *(undefined4 *)(param_1 + 0x620) = *puVar3; + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d99d); + *(undefined4 *)(param_1 + 0x614) = *puVar3; + FUN_004a8054(param_1,0x12,&local_8,&local_c); + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d9a2); + *(undefined4 *)(param_1 + 0x618) = *puVar3; + FUN_004a8054(param_1,0x13,&local_8,&local_c); + uVar5 = 0xffffffff; + *(float *)(param_1 + 0x350) = (local_8 + local_10) / (local_c + local_14); + *(float *)(param_1 + 0x350) = -*(float *)(param_1 + 0x350); + pcVar7 = pcVar1; + do { + pcVar8 = pcVar7; + if (uVar5 == 0) break; + uVar5 = uVar5 - 1; + pcVar8 = pcVar7 + 1; + cVar2 = *pcVar7; + pcVar7 = pcVar8; + } while (cVar2 != '\0'); + uVar5 = ~uVar5; + pcVar7 = pcVar8 + -uVar5; + pcVar8 = local_20; + for (uVar6 = uVar5 >> 2; uVar6 != 0; uVar6 = uVar6 - 1) { + *(undefined4 *)pcVar8 = *(undefined4 *)pcVar7; + pcVar7 = pcVar7 + 4; + pcVar8 = pcVar8 + 4; + } + for (uVar5 = uVar5 & 3; uVar5 != 0; uVar5 = uVar5 - 1) { + *pcVar8 = *pcVar7; + pcVar7 = pcVar7 + 1; + pcVar8 = pcVar8 + 1; + } + local_1d = DAT_0050d9a7; + uStack_19 = DAT_0050d9ab; + iVar4 = FUN_00406ff8(*(int *)(DAT_004efc94 + 0x68),local_20,0x10,-1); + if (iVar4 != 0) { + *(undefined4 *)(param_1 + 0x580) = 1; + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d9ac); + *(undefined4 *)(param_1 + 0x624) = *puVar3; + FUN_004277a8(param_1 + 0x65c,*(int *)(param_1 + 0x624),PTR_LAB_0050d774,DAT_0050d778, + DAT_0050d77c); + *(undefined4 *)(param_1 + 0x53c) = + *(undefined4 *)(*(int *)(param_1 + 0x690) + 8 + *(int *)(param_1 + 0x670) * 0xc); + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d9b1); + *(undefined4 *)(param_1 + 0x628) = *puVar3; + FUN_004277a8(param_1 + 0x65c,*(int *)(param_1 + 0x628),PTR_LAB_0050d780,DAT_0050d784, + DAT_0050d788); + *(undefined4 *)(param_1 + 0x540) = + *(undefined4 *)(*(int *)(param_1 + 0x690) + 8 + *(int *)(param_1 + 0x670) * 0xc); + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d9b6); + *(undefined4 *)(param_1 + 0x62c) = *puVar3; + FUN_004a8054(param_1,0x18,&local_8,&local_c); + *(float *)(param_1 + 0x544) = local_8 / local_c; + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d9bb); + *(undefined4 *)(param_1 + 0x630) = *puVar3; + FUN_004a8054(param_1,0x19,&local_8,&local_c); + *(float *)(param_1 + 0x548) = local_8 / local_c; + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d9c0); + *(undefined4 *)(param_1 + 0x634) = *puVar3; + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d9c5); + *(undefined4 *)(param_1 + 0x638) = *puVar3; + } + *(undefined4 *)(param_1 + 0x584) = 0; + uVar5 = 0xffffffff; + pcVar7 = pcVar1; + do { + pcVar8 = pcVar7; + if (uVar5 == 0) break; + uVar5 = uVar5 - 1; + pcVar8 = pcVar7 + 1; + cVar2 = *pcVar7; + pcVar7 = pcVar8; + } while (cVar2 != '\0'); + uVar5 = ~uVar5; + pcVar7 = pcVar8 + -uVar5; + pcVar8 = local_20; + for (uVar6 = uVar5 >> 2; uVar6 != 0; uVar6 = uVar6 - 1) { + *(undefined4 *)pcVar8 = *(undefined4 *)pcVar7; + pcVar7 = pcVar7 + 4; + pcVar8 = pcVar8 + 4; + } + for (uVar5 = uVar5 & 3; uVar5 != 0; uVar5 = uVar5 - 1) { + *pcVar8 = *pcVar7; + pcVar7 = pcVar7 + 1; + pcVar8 = pcVar8 + 1; + } + local_1d = DAT_0050d9ca; + uStack_19 = DAT_0050d9ce; + iVar4 = FUN_00406ff8(*(int *)(DAT_004efc94 + 0x68),local_20,0x10,-1); + if (iVar4 != 0) { + *(undefined4 *)(param_1 + 0x584) = 1; + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d9cf); + *(undefined4 *)(param_1 + 0x5d8) = *puVar3; + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d9d4); + *(undefined4 *)(param_1 + 0x5d4) = *puVar3; + } + *(undefined4 *)(param_1 + 0x588) = 0; + uVar5 = 0xffffffff; + pcVar7 = pcVar1; + do { + pcVar8 = pcVar7; + if (uVar5 == 0) break; + uVar5 = uVar5 - 1; + pcVar8 = pcVar7 + 1; + cVar2 = *pcVar7; + pcVar7 = pcVar8; + } while (cVar2 != '\0'); + uVar5 = ~uVar5; + pcVar7 = pcVar8 + -uVar5; + pcVar8 = local_20; + for (uVar6 = uVar5 >> 2; uVar6 != 0; uVar6 = uVar6 - 1) { + *(undefined4 *)pcVar8 = *(undefined4 *)pcVar7; + pcVar7 = pcVar7 + 4; + pcVar8 = pcVar8 + 4; + } + for (uVar5 = uVar5 & 3; uVar5 != 0; uVar5 = uVar5 - 1) { + *pcVar8 = *pcVar7; + pcVar7 = pcVar7 + 1; + pcVar8 = pcVar8 + 1; + } + local_1d = DAT_0050d9d9; + uStack_19 = DAT_0050d9dd; + iVar4 = FUN_00406ff8(*(int *)(DAT_004efc94 + 0x68),local_20,0x10,-1); + if (iVar4 != 0) { + *(undefined4 *)(param_1 + 0x588) = 1; + puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d9de); + *(undefined4 *)(param_1 + 0x5dc) = *puVar3; + } + return; +} + + + +/* @004a8cc0 file=? name=FUN_004a8cc0 */ + +/* WARNING: Type propagation algorithm not settling */ + +undefined4 __cdecl +FUN_004a8cc0(int param_1,char *param_2,int param_3,int param_4,char *param_5,char *param_6, + char *param_7,int param_8,int param_9) + +{ + char *pcVar1; + char *pcVar2; + int iVar3; + undefined3 extraout_var; + int *piVar4; + char *pcVar5; + bool bVar6; + byte bVar7; + + pcVar5 = s_HeatSinkClassID_0050da25; + pcVar2 = param_2; + do { + bVar6 = *pcVar2 == *pcVar5; + if (!bVar6) break; + if (*pcVar2 == '\0') goto LAB_004a8cf5; + pcVar1 = pcVar2 + 1; + bVar6 = *pcVar1 == pcVar5[1]; + if (!bVar6) break; + pcVar2 = pcVar2 + 2; + pcVar5 = pcVar5 + 2; + bVar6 = *pcVar1 == '\0'; + } while (!bVar6); + if (bVar6) { +LAB_004a8cf5: + iVar3 = FUN_004ae9dc(param_4,param_5,param_6,param_7,param_8,param_9,param_1); + } + else { + pcVar5 = s_ReservoirClassID_0050da35; + pcVar2 = param_2; + do { + if (*pcVar2 != *pcVar5) goto LAB_004a8d6f; + bVar6 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar5[1]) goto LAB_004a8d6f; + pcVar2 = pcVar2 + 2; + pcVar5 = pcVar5 + 2; + bVar6 = *pcVar1 == '\0'; + } while (!bVar6); + if (bVar6) { + iVar3 = FUN_004af580(param_4,param_5,param_6,param_7,param_8,param_9,param_1); + } + else { +LAB_004a8d6f: + pcVar5 = s_CondenserClassID_0050da46; + pcVar2 = param_2; + do { + if (*pcVar2 != *pcVar5) goto LAB_004a8dbf; + bVar6 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar5[1]) goto LAB_004a8dbf; + pcVar2 = pcVar2 + 2; + pcVar5 = pcVar5 + 2; + bVar6 = *pcVar1 == '\0'; + } while (!bVar6); + if (bVar6) { + iVar3 = FUN_004ae658(param_4,param_5,param_6,param_7,param_8,param_9,param_1); + } + else { +LAB_004a8dbf: + pcVar5 = s_PoweredSubsystemClassID_0050da57; + pcVar2 = param_2; + do { + if (*pcVar2 != *pcVar5) goto LAB_004a8e0f; + bVar6 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar5[1]) goto LAB_004a8e0f; + pcVar2 = pcVar2 + 2; + pcVar5 = pcVar5 + 2; + bVar6 = *pcVar1 == '\0'; + } while (!bVar6); + if (bVar6) { + iVar3 = FUN_004b13ac(param_4,param_5,param_6,param_7,param_8,param_9,param_1); + } + else { +LAB_004a8e0f: + pcVar5 = s_MyomersClassID_0050da6f; + pcVar2 = param_2; + do { + if (*pcVar2 != *pcVar5) goto LAB_004a8e5f; + bVar6 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar5[1]) goto LAB_004a8e5f; + pcVar2 = pcVar2 + 2; + pcVar5 = pcVar5 + 2; + bVar6 = *pcVar1 == '\0'; + } while (!bVar6); + if (bVar6) { + iVar3 = FUN_004b9140(param_4,param_5,param_6,param_7,param_8,param_9,param_1); + } + else { +LAB_004a8e5f: + pcVar5 = s_GeneratorClassID_0050da7e; + pcVar2 = param_2; + do { + if (*pcVar2 != *pcVar5) goto LAB_004a8eaf; + bVar6 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar5[1]) goto LAB_004a8eaf; + pcVar2 = pcVar2 + 2; + pcVar5 = pcVar5 + 2; + bVar6 = *pcVar1 == '\0'; + } while (!bVar6); + if (bVar6) { + iVar3 = FUN_004b23bc(param_4,param_5,param_6,param_7,param_8,param_9,param_1); + } + else { +LAB_004a8eaf: + pcVar5 = s_HUDClassID_0050da8f; + pcVar2 = param_2; + do { + if (*pcVar2 != *pcVar5) goto LAB_004a8eff; + bVar6 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar5[1]) goto LAB_004a8eff; + pcVar2 = pcVar2 + 2; + pcVar5 = pcVar5 + 2; + bVar6 = *pcVar1 == '\0'; + } while (!bVar6); + if (bVar6) { + iVar3 = FUN_004b81d4(param_4,param_5,param_6,param_7,param_8,param_9,param_1); + } + else { +LAB_004a8eff: + pcVar5 = s_SearchlightClassID_0050da9a; + pcVar2 = param_2; + do { + if (*pcVar2 != *pcVar5) goto LAB_004a8f4f; + bVar6 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar5[1]) goto LAB_004a8f4f; + pcVar2 = pcVar2 + 2; + pcVar5 = pcVar5 + 2; + bVar6 = *pcVar1 == '\0'; + } while (!bVar6); + if (bVar6) { + iVar3 = FUN_004b85a8(param_4,param_5,param_6,param_7,param_8,param_9,param_1); + } + else { +LAB_004a8f4f: + pcVar5 = s_ThermalSightClassID_0050daad; + pcVar2 = param_2; + do { + if (*pcVar2 != *pcVar5) goto LAB_004a8f9f; + bVar6 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar5[1]) goto LAB_004a8f9f; + pcVar2 = pcVar2 + 2; + pcVar5 = pcVar5 + 2; + bVar6 = *pcVar1 == '\0'; + } while (!bVar6); + if (bVar6) { + iVar3 = FUN_004b87d4(param_4,param_5,param_6,param_7,param_8,param_9,param_1); + } + else { +LAB_004a8f9f: + pcVar5 = s_SensorClassID_0050dac1; + pcVar2 = param_2; + do { + if (*pcVar2 != *pcVar5) goto LAB_004a8fef; + bVar6 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar5[1]) goto LAB_004a8fef; + pcVar2 = pcVar2 + 2; + pcVar5 = pcVar5 + 2; + bVar6 = *pcVar1 == '\0'; + } while (!bVar6); + if (bVar6) { + bVar6 = FUN_004b1dcc(param_4,param_5,param_6,param_7,param_8,param_9,param_1); + iVar3 = CONCAT31(extraout_var,bVar6); + } + else { +LAB_004a8fef: + pcVar5 = s_GyroscopeClassID_0050dacf; + pcVar2 = param_2; + do { + if (*pcVar2 != *pcVar5) goto LAB_004a903f; + bVar6 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar5[1]) goto LAB_004a903f; + pcVar2 = pcVar2 + 2; + pcVar5 = pcVar5 + 2; + bVar6 = *pcVar1 == '\0'; + } while (!bVar6); + if (bVar6) { + iVar3 = FUN_004b3eb4(param_4,param_5,param_6,param_7,param_8,param_9,param_1 + ); + } + else { +LAB_004a903f: + pcVar5 = s_TorsoClassID_0050dae0; + pcVar2 = param_2; + do { + if (*pcVar2 != *pcVar5) goto LAB_004a908f; + bVar6 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar5[1]) goto LAB_004a908f; + pcVar2 = pcVar2 + 2; + pcVar5 = pcVar5 + 2; + bVar6 = *pcVar1 == '\0'; + } while (!bVar6); + if (bVar6) { + iVar3 = FUN_004b6fec(param_4,param_5,param_6,param_7,param_8,param_9, + param_1); + } + else { +LAB_004a908f: + pcVar5 = s_EmitterClassID_0050daed; + pcVar2 = param_2; + do { + if (*pcVar2 != *pcVar5) goto LAB_004a90e3; + bVar6 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar5[1]) goto LAB_004a90e3; + pcVar2 = pcVar2 + 2; + pcVar5 = pcVar5 + 2; + bVar6 = *pcVar1 == '\0'; + } while (!bVar6); + if (bVar6) { + iVar3 = FUN_004bb478(param_3,param_4,param_5,param_6,param_7,param_8, + param_9,param_1); + } + else { +LAB_004a90e3: + pcVar5 = s_PPCClassID_0050dafc; + pcVar2 = param_2; + do { + if (*pcVar2 != *pcVar5) goto LAB_004a9137; + bVar6 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar5[1]) goto LAB_004a9137; + pcVar2 = pcVar2 + 2; + pcVar5 = pcVar5 + 2; + bVar6 = *pcVar1 == '\0'; + } while (!bVar6); + if (bVar6) { + iVar3 = FUN_004bb8e0(param_3,param_4,param_5,param_6,param_7,param_8, + param_9,param_1); + } + else { +LAB_004a9137: + pcVar5 = s_ProjectileWeaponClassID_0050db07; + pcVar2 = param_2; + do { + if (*pcVar2 != *pcVar5) goto LAB_004a918b; + bVar6 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar5[1]) goto LAB_004a918b; + pcVar2 = pcVar2 + 2; + pcVar5 = pcVar5 + 2; + bVar6 = *pcVar1 == '\0'; + } while (!bVar6); + if (bVar6) { + iVar3 = FUN_004bc7cc(param_3,param_4,param_5,param_6,param_7,param_8 + ,param_9,param_1); + } + else { +LAB_004a918b: + pcVar5 = s_MissileLauncherClassID_0050db1f; + pcVar2 = param_2; + do { + if (*pcVar2 != *pcVar5) goto LAB_004a91df; + bVar6 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar5[1]) goto LAB_004a91df; + pcVar2 = pcVar2 + 2; + pcVar5 = pcVar5 + 2; + bVar6 = *pcVar1 == '\0'; + } while (!bVar6); + if (bVar6) { + iVar3 = FUN_004bd08c(param_3,param_4,param_5,param_6,param_7, + param_8,param_9,param_1); + } + else { +LAB_004a91df: + pcVar5 = s_GaussRifleClassID_0050db36; + pcVar2 = param_2; + do { + if (*pcVar2 != *pcVar5) goto LAB_004a9233; + bVar6 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar5[1]) goto LAB_004a9233; + pcVar2 = pcVar2 + 2; + pcVar5 = pcVar5 + 2; + bVar6 = *pcVar1 == '\0'; + } while (!bVar6); + if (bVar6) { + iVar3 = FUN_004bdd14(param_3,param_4,param_5,param_6,param_7, + param_8,param_9,param_1); + } + else { +LAB_004a9233: + pcVar5 = s_AmmoBinClassID_0050db48; + pcVar2 = param_2; + do { + if (*pcVar2 != *pcVar5) goto LAB_004a9287; + bVar6 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar5[1]) goto LAB_004a9287; + pcVar2 = pcVar2 + 2; + pcVar5 = pcVar5 + 2; + bVar6 = *pcVar1 == '\0'; + } while (!bVar6); + if (bVar6) { + iVar3 = FUN_004bd6f0(param_3,param_4,param_5,param_6,param_7, + param_8,param_9,param_1); + } + else { +LAB_004a9287: + pcVar5 = s_SubsystemMessageManagerClassID_0050db57; + pcVar2 = param_2; + do { + if (*pcVar2 != *pcVar5) goto LAB_004a92d7; + bVar6 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar5[1]) goto LAB_004a92d7; + pcVar2 = pcVar2 + 2; + pcVar5 = pcVar5 + 2; + bVar6 = *pcVar1 == '\0'; + } while (!bVar6); + if (bVar6) { + iVar3 = FUN_0049be10(param_3,param_4,param_5,param_6,param_7 + ,param_8,param_9); + } + else { +LAB_004a92d7: + pcVar5 = s_MechTechClassID_0050db76; + pcVar2 = param_2; + do { + if (*pcVar2 != *pcVar5) goto LAB_004a9324; + bVar6 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar5[1]) goto LAB_004a9324; + pcVar2 = pcVar2 + 2; + pcVar5 = pcVar5 + 2; + bVar6 = *pcVar1 == '\0'; + } while (!bVar6); + if (!bVar6) { +LAB_004a9324: + bVar7 = 0x3a; + FUN_004dbb24(&DAT_00524e20,param_5,(char *)0x0); + piVar4 = FUN_004db92c(&DAT_00524e20,bVar7); + FUN_004dbb24(piVar4,param_6,(char *)0x0); + FUN_004dbb24(piVar4, + s_has_an_unknown_component_type_of_0050db86, + (char *)0x0); + FUN_004dbb24(piVar4,param_2,(char *)0x0); + FUN_004d9c38(piVar4); + return 0xffffffff; + } + iVar3 = FUN_004ad48c(param_4,param_5,param_6,param_7,param_8 + ,param_9,param_3); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + if (iVar3 == 0) { + return 0xffffffff; + } + return 1; +} + + + +/* @004a9390 file=? name=FUN_004a9390 */ + +undefined4 __cdecl FUN_004a9390(int param_1,char *param_2,int param_3,undefined4 *param_4) + +{ + char *pcVar1; + int iVar2; + undefined4 uVar3; + int *piVar4; + undefined4 *puVar5; + byte bVar6; + undefined4 local_58 [2]; + int *local_50; + int local_48; + char *local_44; + uint local_40; + int *local_3c; + char *local_38; + int local_34; + int *local_30; + char *local_2c; + int *local_28; + char *local_24; + int *local_20; + int *local_1c; + char *local_18; + int *local_14; + int *local_10; + char *local_c; + char *local_8; + + iVar2 = FUN_00404088(param_3,s_gamedata_0050dba9,s_Subsystems_0050dbb2,&local_8); + if (iVar2 == 0) { + local_c = param_2; + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_is_missing__sub_file_specificati_0050dbbd,(char *)0x0); + uVar3 = 0xffffffff; + } + else { + local_10 = (int *)FUN_004064fc((char *)*param_4,local_8); + piVar4 = (int *)FUN_00402298(0x20); + if (piVar4 == (int *)0x0) { + local_14 = (int *)0x0; + } + else { + local_14 = FUN_00403e84(piVar4,(char *)local_10,1); + } + local_20 = FUN_0040485c((int)local_14,(char *)0x0); + iVar2 = 0; + for (puVar5 = (undefined4 *)local_20[1]; puVar5 != (undefined4 *)0x0; + puVar5 = (undefined4 *)*puVar5) { + iVar2 = iVar2 + 1; + } + if (iVar2 == 0) { + local_24 = param_2; + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_has_no_subsystems__0050dbe3,(char *)0x0); + if (local_20 != (int *)0x0) { + (**(code **)*local_20)(local_20,3); + } + FUN_004022d0(local_10); + FUN_00403ecc(local_14,3); + uVar3 = 0xffffffff; + } + else { + local_28 = (int *)FUN_004022b0(iVar2 * 0x770); + FUN_004030dc(local_58,local_28,iVar2 * 0x770,0); + *local_50 = iVar2; + local_50 = local_50 + 1; + for (puVar5 = (undefined4 *)local_20[1]; puVar5 != (undefined4 *)0x0; + puVar5 = (undefined4 *)*puVar5) { + pcVar1 = (char *)(puVar5 + 2); + iVar2 = FUN_00404088((int)local_14,pcVar1,&DAT_0050dbf8,&local_2c); + if (iVar2 == 0) { + bVar6 = 0x3a; + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + piVar4 = FUN_004db92c(&DAT_00524e20,bVar6); + FUN_004dbb24(piVar4,pcVar1,(char *)0x0); + FUN_004dbb24(piVar4,s_missing_Type__0050dbfd,(char *)0x0); +LAB_004a9555: + FUN_004022e8(local_28); + if (local_20 != (int *)0x0) { + (**(code **)*local_20)(local_20,3); + } + FUN_004022d0(local_10); + FUN_00403ecc(local_14,3); + return 0xffffffff; + } + iVar2 = FUN_00404088((int)local_14,pcVar1,s_Include_0050dc0d,&local_18); + if (iVar2 == 0) { + piVar4 = (int *)0x0; + local_1c = (int *)0x0; + } + else { + piVar4 = (int *)FUN_004064fc((char *)*param_4,local_18); + local_30 = (int *)FUN_00402298(0x20); + if (local_30 == (int *)0x0) { + local_1c = (int *)0x0; + } + else { + local_1c = FUN_00403e84(local_30,(char *)piVar4,1); + } + } + local_34 = 1; + if (piVar4 != (int *)0x0) { + local_38 = FUN_004d4c78(local_2c,s_ClassID_0050dc15); + iVar2 = FUN_004d4a78(local_2c); + local_3c = (int *)FUN_004022b0(iVar2 + 1); + local_40 = (int)local_38 - (int)local_2c; + local_3c = FUN_004d4b9c(local_3c,local_2c,local_40); + local_44 = (char *)((int)local_3c + local_40); + *local_44 = DAT_0050dc1d; + local_48 = FUN_004a8cc0(local_34,local_2c,param_1,param_3,param_2,(char *)local_3c, + (char *)local_50,(int)local_1c,(int)param_4); + local_34 = local_34 + 1; + FUN_004022e8(local_3c); + if (local_48 == -1) goto LAB_004a9555; + } + iVar2 = FUN_004a8cc0(local_34,local_2c,param_1,param_3,param_2,pcVar1,(char *)local_50, + (int)local_14,(int)param_4); + if (iVar2 == -1) goto LAB_004a9555; + if (piVar4 != (int *)0x0) { + FUN_004022d0(piVar4); + FUN_00403ecc(local_1c,3); + } + local_50 = (int *)((int)local_50 + local_50[9]); + } + puVar5 = (undefined4 *) + FUN_00406db4(param_1,param_2,0x11,1,0,local_28,(int)local_50 - (int)local_28,-1); + FUN_004022e8(local_28); + if (local_20 != (int *)0x0) { + (**(code **)*local_20)(local_20,3); + } + FUN_004022d0(local_10); + FUN_00403ecc(local_14,3); + uVar3 = *puVar5; + } + } + return uVar3; +} + + + +/* @004a9770 file=? name=FUN_004a9770 */ + +undefined * __cdecl FUN_004a9770(char *param_1) + +{ + char *pcVar1; + char *pcVar2; + char *pcVar3; + bool bVar4; + + pcVar3 = &DAT_0050dc1f; + pcVar2 = param_1; + do { + if (*pcVar2 != *pcVar3) goto LAB_004a97a4; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_004a97a4; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return &DAT_0050bde4; + } +LAB_004a97a4: + pcVar3 = s_ControlsMapper_0050dc20; + pcVar2 = param_1; + do { + if (*pcVar2 != *pcVar3) goto LAB_004a97d1; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_004a97d1; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return &DAT_0050ee00; + } +LAB_004a97d1: + pcVar3 = s_AmmoBinClassID_0050dc2f; + pcVar2 = param_1; + do { + if (*pcVar2 != *pcVar3) goto LAB_004a97fe; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_004a97fe; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return &DAT_005125bc; + } +LAB_004a97fe: + pcVar3 = s_HeatSinkClassID_0050dc3e; + pcVar2 = param_1; + do { + if (*pcVar2 != *pcVar3) goto LAB_004a982b; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_004a982b; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return &DAT_0050e580; + } +LAB_004a982b: + pcVar3 = s_ReservoirClassID_0050dc4e; + pcVar2 = param_1; + do { + if (*pcVar2 != *pcVar3) goto LAB_004a9858; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_004a9858; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return &DAT_0050e640; + } +LAB_004a9858: + pcVar3 = s_CondenserClassID_0050dc5f; + pcVar2 = param_1; + do { + if (*pcVar2 != *pcVar3) goto LAB_004a9885; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_004a9885; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return &DAT_0050e4ec; + } +LAB_004a9885: + pcVar3 = s_PoweredSubsystemClassID_0050dc70; + pcVar2 = param_1; + do { + if (*pcVar2 != *pcVar3) goto LAB_004a98b2; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_004a98b2; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return &DAT_0050f4ac; + } +LAB_004a98b2: + pcVar3 = s_MyomersClassID_0050dc88; + pcVar2 = param_1; + do { + if (*pcVar2 != *pcVar3) goto LAB_004a98df; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_004a98df; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return &DAT_0051154c; + } +LAB_004a98df: + pcVar3 = s_GeneratorClassID_0050dc97; + pcVar2 = param_1; + do { + if (*pcVar2 != *pcVar3) goto LAB_004a990c; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_004a990c; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return &DAT_0050fb50; + } +LAB_004a990c: + pcVar3 = s_HUDClassID_0050dca8; + pcVar2 = param_1; + do { + if (*pcVar2 != *pcVar3) goto LAB_004a9939; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_004a9939; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return &DAT_00511078; + } +LAB_004a9939: + pcVar3 = s_SensorClassID_0050dcb3; + pcVar2 = param_1; + do { + if (*pcVar2 != *pcVar3) goto LAB_004a9966; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_004a9966; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return &DAT_0050fa1c; + } +LAB_004a9966: + pcVar3 = s_SearchlightClassID_0050dcc1; + pcVar2 = param_1; + do { + if (*pcVar2 != *pcVar3) goto LAB_004a9993; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_004a9993; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return &DAT_00511198; + } +LAB_004a9993: + pcVar3 = s_ThermalSightClassID_0050dcd4; + pcVar2 = param_1; + do { + if (*pcVar2 != *pcVar3) goto LAB_004a99c0; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_004a99c0; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return &DAT_00511228; + } +LAB_004a99c0: + pcVar3 = s_GyroscopeClassID_0050dce8; + pcVar2 = param_1; + do { + if (*pcVar2 != *pcVar3) goto LAB_004a99ed; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_004a99ed; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return &DAT_0050fdb0; + } +LAB_004a99ed: + pcVar3 = s_TorsoClassID_0050dcf9; + pcVar2 = param_1; + do { + if (*pcVar2 != *pcVar3) goto LAB_004a9a1a; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_004a9a1a; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return &DAT_00510af8; + } +LAB_004a9a1a: + pcVar3 = s_EmitterClassID_0050dd06; + pcVar2 = param_1; + do { + if (*pcVar2 != *pcVar3) goto LAB_004a9a47; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_004a9a47; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return &DAT_00511d78; + } +LAB_004a9a47: + pcVar3 = s_PPCClassID_0050dd15; + pcVar2 = param_1; + do { + if (*pcVar2 != *pcVar3) goto LAB_004a9a74; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_004a9a74; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return &DAT_005120c4; + } +LAB_004a9a74: + pcVar3 = s_ProjectileWeaponClassID_0050dd20; + pcVar2 = param_1; + do { + if (*pcVar2 != *pcVar3) goto LAB_004a9aa1; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_004a9aa1; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return &DAT_00512198; + } +LAB_004a9aa1: + pcVar3 = s_MissileLauncherClassID_0050dd38; + pcVar2 = param_1; + do { + if (*pcVar2 != *pcVar3) goto LAB_004a9ace; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_004a9ace; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return &DAT_00512478; + } +LAB_004a9ace: + pcVar3 = s_GaussRifleClassID_0050dd4f; + pcVar2 = param_1; + do { + if (*pcVar2 != *pcVar3) goto LAB_004a9afb; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_004a9afb; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return &DAT_00512478; + } +LAB_004a9afb: + pcVar3 = s_ControlsMapper_0050dd61; + pcVar2 = param_1; + do { + if (*pcVar2 != *pcVar3) goto LAB_004a9b28; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_004a9b28; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + return &DAT_0050ee00; + } +LAB_004a9b28: + pcVar2 = s_MechTech_0050dd70; + do { + if (*param_1 != *pcVar2) { + return (undefined *)0x0; + } + bVar4 = true; + if (*param_1 == '\0') break; + pcVar3 = param_1 + 1; + if (*pcVar3 != pcVar2[1]) { + return (undefined *)0x0; + } + param_1 = param_1 + 2; + pcVar2 = pcVar2 + 2; + bVar4 = *pcVar3 == '\0'; + } while (!bVar4); + if (!bVar4) { + return (undefined *)0x0; + } + return &DAT_0050e270; +} + + + +/* @004ab188 file=? name=FUN_004ab188 */ + +void __cdecl FUN_004ab188(int param_1,float param_2) + +{ + float local_10 [3]; + + FUN_004086ac(local_10,(float *)(param_1 + 0x2d4),param_2); + FUN_00409f58((float *)(param_1 + 0x26c),(float *)(param_1 + 0x138),local_10); + return; +} + + + +/* @004ab1c8 file=? name=FUN_004ab1c8 */ + +undefined4 __cdecl FUN_004ab1c8(int param_1,float param_2,int param_3) + +{ + float *pfVar1; + int iVar2; + undefined4 uVar3; + float10 fVar4; + float local_64; + undefined4 local_60; + undefined4 local_5c; + undefined4 local_58; + float local_54 [3]; + float local_48 [3]; + float local_3c [12]; + float local_c; + float local_8; + + if (*(int *)(param_1 + 0x3f4) == 0) { + *(undefined4 *)(param_1 + 0x344) = *(undefined4 *)(param_1 + 0x5b8); + } + else { + *(undefined4 *)(param_1 + 0x344) = *(undefined4 *)(param_1 + 0x5bc); + } + iVar2 = FUN_0049fb54(param_1); + if (iVar2 == 0) { + if (((*(uint *)(param_1 + 0x28) & 0xc) == 4) && + (*(int *)(param_1 + 0x10) < *(int *)(param_1 + 0x2e0))) { + iVar2 = *(int *)(param_1 + 0x2e0) - *(int *)(param_1 + 0x778); + uVar3 = 1; + } + else { + iVar2 = *(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x778); + uVar3 = 0; + } + local_8 = (float)iVar2 / DAT_0052140c; + if (*(int *)(param_1 + 0x77c) != 0) { + if ((*(uint *)(param_1 + 0x28) & 0xc) == 4) { + FUN_00408644((float *)(param_1 + 0x598),(float *)(param_1 + 300),(float *)(param_1 + 0x100)) + ; + *(undefined4 *)(param_1 + 0x5a4) = 1; + *(undefined4 *)(param_1 + 0x77c) = 0; + } + else { + FUN_00408440((undefined4 *)(param_1 + 0x260),(undefined4 *)(param_1 + 300)); + *(undefined4 *)(param_1 + 0x77c) = 0; + } + } + if (((*(int *)(param_1 + 0x40) == 3) || (*(int *)(param_1 + 0x40) == 4)) && + (*(int *)(param_1 + 0x580) != 0)) { + fVar4 = FUN_004a5bf8(param_1,param_2,param_3); + } + else { + fVar4 = FUN_004a5678(param_1,param_2,param_3); + } + local_c = (float)fVar4; + *(float *)(param_1 + 0x2a0) = -local_c / param_2; + *(undefined4 *)(param_1 + 0x29c) = 0; + *(undefined4 *)(param_1 + 0x298) = 0; + FUN_004ab188(param_1,local_8); + FUN_00408440((undefined4 *)(param_1 + 0x2a4),(undefined4 *)(param_1 + 0x2d4)); + FUN_0040aadc(local_3c); + pfVar1 = (float *)(param_1 + 0x260); + FUN_0040ab44(local_3c,pfVar1); + FUN_00408744(local_48,(float *)(param_1 + 0x298),local_3c); + FUN_00408440(local_54,&DAT_004e0f74); + FUN_00408614(local_54,local_54,local_48,param_2); + FUN_004085ec(pfVar1,pfVar1,local_54); + FUN_00408440(local_54,&DAT_004e0f74); + FUN_00408614(local_54,local_54,(float *)(param_1 + 0x2a4),param_2); + local_64 = *(float *)(param_1 + 0x26c); + local_60 = *(undefined4 *)(param_1 + 0x270); + local_5c = *(undefined4 *)(param_1 + 0x274); + local_58 = *(undefined4 *)(param_1 + 0x278); + FUN_00409f58((float *)(param_1 + 0x26c),&local_64,local_54); + } + else { + FUN_0040a7f4((undefined4 *)(param_1 + 0x298),(undefined4 *)&DAT_004e0fd4); + uVar3 = 0; + } + return uVar3; +} + + + +/* @004ab430 file=? name=FUN_004ab430 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004ab430(int *param_1,float param_2) + +{ + float *pfVar1; + uint *puVar2; + int iVar3; + float10 fVar4; + int local_98; + float local_94; + int local_90; + float local_8c; + int local_88; + int local_84; + float local_80; + int local_7c; + int local_78; + float local_74; + float local_70; + float local_6c; + float local_68; + float local_64; + float local_60; + int *local_5c; + int local_58; + int *local_54; + int local_50; + int local_4c; + int local_48; + int *local_44; + int *local_40; + float *local_3c; + float local_38; + int *local_34; + float local_30; + float *local_2c; + float *local_28; + float local_24; + int *local_20; + float *local_1c; + float *local_18; + float local_14; + float local_10; + float local_c; + float local_8; + + FUN_0040a7f4(param_1 + 0x77,(undefined4 *)&DAT_004e0fd4); + iVar3 = FUN_004ab1c8((int)param_1,param_2,1); + if (iVar3 == 0) { + if (param_1[0x169] == 1) { + local_8c = (float)param_1[0x166]; + local_34 = param_1 + 5; + local_88 = param_1[0x167]; + local_84 = param_1[0x168]; + local_30 = (_DAT_004ab9cc - (float)(param_1[4] - *local_34) / DAT_0052140c) + param_2; + if (local_30 <= param_2) { + param_1[0x169] = 0; + } + else { + local_38 = param_2 / local_30; + FUN_004086ac(&local_8c,&local_8c,local_38); + } + pfVar1 = (float *)(param_1 + 0x98); + local_3c = pfVar1; + FUN_004085ec(pfVar1,pfVar1,&local_8c); + param_1[0x99] = param_1[0x41]; + FUN_0040a938(param_1 + 0x40,pfVar1); + FUN_00408644((float *)(param_1 + 0x166),(float *)(param_1 + 0x166),&local_8c); + } + else { + param_1[0x99] = param_1[0x41]; + FUN_0040a938(param_1 + 0x40,param_1 + 0x98); + } + local_40 = param_1 + 0xa6; + FUN_00408440(param_1 + 0x7d,local_40); + local_44 = param_1 + 0xa9; + FUN_00408440(param_1 + 0x74,local_44); + } + else { + local_8 = param_2 / ((float)(param_1[0xb8] - param_1[4]) / DAT_0052140c + param_2); + FUN_0040a4d8((float *)(param_1 + 0x43),(float *)(param_1 + 0x43),(float *)(param_1 + 0x9b), + local_8); + local_c = local_8; + FUN_00408848((float *)(param_1 + 0x74),(float *)(param_1 + 0x74),_DAT_004ab9c8 - local_8, + (float *)(param_1 + 0xa9),local_8); + if (param_1[0x169] == 1) { + local_80 = (float)param_1[0x166]; + local_7c = param_1[0x167]; + local_78 = param_1[0x168]; + local_10 = (_DAT_004ab9cc - (float)(param_1[4] - param_1[5]) / DAT_0052140c) + param_2; + if (local_10 <= param_2) { + param_1[0x169] = 0; + } + else { + local_14 = param_2 / local_10; + FUN_004086ac(&local_80,&local_80,local_14); + } + pfVar1 = (float *)(param_1 + 0x98); + local_18 = pfVar1; + FUN_004085ec(pfVar1,pfVar1,&local_80); + param_1[0x99] = param_1[0x41]; + local_1c = pfVar1; + FUN_00408440(param_1 + 0x40,pfVar1); + FUN_00408644((float *)(param_1 + 0x166),(float *)(param_1 + 0x166),&local_80); + } + else { + local_20 = param_1 + 0x98; + param_1[0x99] = param_1[0x41]; + FUN_00408440(param_1 + 0x40,local_20); + } + local_24 = local_8; + local_28 = (float *)(param_1 + 0xa6); + local_2c = (float *)(param_1 + 0x7d); + FUN_00408848((float *)(param_1 + 0x7d),local_2c,_DAT_004ab9c8 - local_8,local_28,local_8); + } + if ((*(byte *)((int)param_1 + 0x29) & 0x40) == 0) { + (**(code **)(*param_1 + 0x34))(param_1); + local_48 = *(int *)(DAT_004efc94 + 0x30); + local_50 = param_1[0x65]; + local_4c = FUN_00433ed4(local_48 + 0x14); + local_54 = *(int **)(local_4c + 0x30); + local_58 = param_1[0xba]; + iVar3 = FUN_0040e36c(*local_54,local_58); + param_1[0xbc] = iVar3; + } + else { + local_5c = param_1 + 0x40; + FUN_0040ab44((float *)(param_1 + 0x34),local_5c); + } + local_98 = param_1[0x40]; + local_90 = param_1[0x42]; + local_94 = *(float *)(param_1[0xbb] + 8) + (float)param_1[0x41]; + FUN_0040e5f0(param_1[0xbc],(int)&local_98,&local_60); + if (local_60 != _DAT_004ab9d0) { + local_60 = local_60 - *(float *)(param_1[0xbb] + 8); + param_1[0x41] = (int)((float)param_1[0x41] - local_60); + *(float *)(param_1[0xba] + 8) = *(float *)(param_1[0xba] + 8) - local_60; + *(float *)(param_1[0xba] + 0xc) = *(float *)(param_1[0xba] + 0xc) - local_60; + } + FUN_00421b6c((int)param_1); + puVar2 = (uint *)(param_1 + 0x1f8); + FUN_0043ade4(puVar2,param_1[0x73]); + FUN_0043ade4((uint *)(param_1 + 0x1fb),param_1[0x72]); + FUN_0043ade4((uint *)(param_1 + 0x1fe),param_1[0x71]); + FUN_0043ade4((uint *)(param_1 + 0x201),param_1[0x75]); + FUN_0043ade4((uint *)(param_1 + 0x204),param_2); + fVar4 = FUN_0043ae47(puVar2); + local_64 = (float)fVar4; + fVar4 = FUN_0043ae0b((uint *)(param_1 + 0x1fe)); + local_68 = (float)fVar4; + fVar4 = FUN_0043ae0b(puVar2); + local_6c = (float)fVar4; + fVar4 = FUN_0043ae0b((uint *)(param_1 + 0x201)); + local_70 = (float)fVar4; + fVar4 = FUN_0043ae0b((uint *)(param_1 + 0x204)); + local_74 = (float)fVar4; + FUN_0040a7f4(param_1 + 0x77,(undefined4 *)&DAT_004e0fd4); + if (_DAT_004ab9d4 < local_74) { + param_1[0x79] = (int)((local_64 - (float)param_1[0x207]) / local_74); + param_1[0x78] = (int)((local_6c - (float)param_1[0x20a]) / local_74); + param_1[0x77] = (int)((local_68 - (float)param_1[0x208]) / local_74); + param_1[0x7b] = (int)((local_70 - (float)param_1[0x209]) / local_74); + } + param_1[0x207] = (int)local_64; + param_1[0x20a] = (int)local_6c; + param_1[0x208] = (int)local_68; + param_1[0x209] = (int)local_70; + FUN_00421b2c((int)param_1); + return; +} + + + +/* @004abb40 file=? name=FUN_004abb40 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl +FUN_004abb40(int param_1,float param_2,int *param_3,undefined4 param_4,undefined4 *param_5) + +{ + int *piVar1; + int iVar2; + float10 fVar3; + undefined4 local_17c; + undefined4 local_178; + undefined4 local_174; + undefined4 local_170 [2]; + undefined4 local_168; + undefined4 local_164; + undefined4 local_160 [2]; + int local_158; + uint local_154; + undefined4 local_150; + undefined4 local_14c; + undefined4 local_148; + undefined4 local_144; + undefined4 local_140; + undefined4 local_13c; + undefined4 local_138; + undefined4 local_134; + undefined4 local_130; + undefined4 local_12c; + undefined4 local_128; + undefined4 local_124; + undefined4 local_120; + undefined4 local_11c; + undefined4 local_118; + undefined4 local_114; + undefined4 local_110; + undefined4 local_10c; + undefined4 local_108; + undefined4 local_104; + undefined4 local_100; + undefined4 local_fc; + undefined4 local_f8; + undefined4 local_f4; + undefined4 local_f0; + undefined4 local_ec; + float local_e8; + float local_e4; + float local_e0; + undefined4 local_dc; + undefined4 local_d8; + undefined4 local_d4; + undefined4 local_d0 [2]; + undefined4 local_c8; + undefined4 local_c4; + undefined4 local_c0 [2]; + int local_b8; + uint local_b4; + undefined4 local_b0; + undefined4 local_ac; + undefined4 local_a8; + undefined4 local_a4; + undefined4 local_a0; + undefined4 local_9c; + undefined4 local_98; + undefined4 local_94; + undefined4 local_90; + undefined4 local_8c; + undefined4 local_88; + undefined4 local_84; + undefined4 local_80; + undefined4 local_7c; + undefined4 local_78; + undefined4 local_74; + undefined4 local_70; + undefined4 local_6c; + undefined4 local_68; + undefined4 local_64; + undefined4 local_60; + undefined4 local_5c; + undefined4 local_58; + undefined4 local_54; + undefined4 local_50; + undefined4 local_4c; + float local_48 [3]; + float local_3c; + float local_38; + float local_34; + undefined4 *local_30; + uint local_2c; + int *local_28; + undefined4 *local_24; + int local_20; + undefined4 *local_1c; + int *local_18; + float local_14; + float local_10; + float local_c; + float local_8; + + iVar2 = (**(code **)(*(int *)(*(int *)(param_1 + 0x2e8) + 0x18) + 0x1c)) + (*(int *)(param_1 + 0x2e8),param_3,param_1 + 500, + *(undefined4 *)(param_1 + 0x2f8),param_5 + 5,&local_10); + if (iVar2 != 0) { + if (param_2 < local_10) { + local_10 = param_2; + } + local_14 = local_10 / param_2; + local_c = *(float *)(param_1 + 0x244); + local_8 = *(float *)(param_1 + 0x240); + piVar1 = *(int **)(*param_3 + 0x1c); + fVar3 = FUN_00422ff8(param_1,param_4,param_2,local_14,(float *)(param_5 + 5),&local_c, + *(float *)(param_1 + 0x248),&local_8); + param_5[1] = (float)fVar3; + if ((piVar1 != (int *)0x0) && (iVar2 = FUN_0041a1a4(*(int *)piVar1[3],0x4e4518), iVar2 != 0)) { + local_18 = piVar1; + (**(code **)(*piVar1 + 0x20))(local_48,piVar1); + FUN_00408644(&local_3c,(float *)(param_1 + 500),local_48); + if (local_34 * (float)param_5[7] + local_38 * (float)param_5[6] + local_3c * (float)param_5[5] + < _DAT_004ac044) { + return; + } + if (local_18[1] == 0xbb9) { + FUN_0041db7c((int)&local_78); + local_1c = param_5; + local_78 = *param_5; + local_74 = param_5[1]; + local_4c = param_5[0xb]; + FUN_00408440(&local_70,param_5 + 2); + FUN_00408440(&local_64,local_1c + 5); + FUN_00408440(&local_58,local_1c + 8); + local_20 = DAT_0050b9ac; + local_24 = (undefined4 *)(param_1 + 0x184); + local_dc = 100; + local_d8 = 0x12; + local_d4 = 1; + FUN_00420ea4(local_d0,(undefined4 *)&DAT_00522524); + local_c8 = 0; + local_c4 = 0; + FUN_00420ea4(local_c0,local_24); + local_b8 = local_20; + local_b4 = (uint)(local_20 < 0); + local_b0 = local_78; + local_ac = local_74; + local_a8 = local_70; + local_a4 = local_6c; + local_a0 = local_68; + local_9c = local_64; + local_98 = local_60; + local_94 = local_5c; + local_90 = local_58; + local_8c = local_54; + local_88 = local_50; + local_84 = local_4c; + local_80 = 0xffffffff; + local_7c = 1; + (**(code **)(*local_18 + 0xc))(local_18,&local_dc); + } + } + if ((piVar1 != (int *)0x0) && (iVar2 = FUN_0041a1a4(*(int *)piVar1[3],0x4e7038), iVar2 != 0)) { + local_2c = piVar1[10] & 0x8000; + local_28 = piVar1; + FUN_00408644(&local_e8,(float *)(param_1 + 500),(float *)&DAT_004e0f74); + if (local_e0 * (float)param_5[7] + local_e4 * (float)param_5[6] + local_e8 * (float)param_5[5] + < _DAT_004ac044) { + return; + } + FUN_0041db7c((int)&local_118); + local_118 = *param_5; + local_114 = param_5[1]; + local_ec = param_5[0xb]; + FUN_00408440(&local_110,param_5 + 2); + FUN_00408440(&local_104,param_5 + 5); + FUN_00408440(&local_f8,param_5 + 8); + iVar2 = DAT_0050b9ac; + local_30 = (undefined4 *)(param_1 + 0x184); + local_17c = 100; + local_178 = 0x12; + local_174 = 1; + FUN_00420ea4(local_170,(undefined4 *)&DAT_00522524); + local_168 = 0; + local_164 = 0; + FUN_00420ea4(local_160,local_30); + local_158 = iVar2; + local_154 = (uint)(iVar2 < 0); + local_150 = local_118; + local_14c = local_114; + local_148 = local_110; + local_144 = local_10c; + local_140 = local_108; + local_13c = local_104; + local_138 = local_100; + local_134 = local_fc; + local_130 = local_f8; + local_12c = local_f4; + local_128 = local_f0; + local_124 = local_ec; + local_120 = 0xffffffff; + local_11c = 1; + (**(code **)(*local_28 + 0xc))(local_28,&local_17c); + if (local_2c == 0) { + param_5[1] = 0x3aa137f4; + } + } + if (local_c == _DAT_004ac048) { + if ((local_8 == _DAT_004ac048) && (*(int *)(param_1 + 0x44c) == 0)) { + *(undefined4 *)(param_1 + 0x44c) = 2; + } + } + else { + *(undefined4 *)(param_1 + 0x44c) = 1; + } + } + return; +} + + + +/* @004ac04c file=? name=FUN_004ac04c */ + +void __cdecl FUN_004ac04c(int param_1) + +{ + *(undefined4 *)(*(int *)(param_1 + 0x2ec) + 0xc) = *(undefined4 *)(param_1 + 0x51c); + return; +} + + + +/* @004ac064 file=? name=FUN_004ac064 */ + +void __cdecl FUN_004ac064(int param_1) + +{ + *(undefined4 *)(*(int *)(param_1 + 0x2ec) + 0xc) = *(undefined4 *)(param_1 + 0x518); + return; +} + + + +/* @004ac07c file=? name=FUN_004ac07c */ + +float10 __cdecl FUN_004ac07c(int *param_1,undefined4 param_2) + +{ + float fVar1; + + fVar1 = *(float *)(param_1[0x38] + 0x158); + (**(code **)(*param_1 + 0x24))(param_1,param_2); + return (float10)(*(float *)(param_1[0x38] + 0x158) - fVar1); +} + + + +/* @004ac0bc file=? name=FUN_004ac0bc */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004ac0bc(int *param_1,undefined4 param_2) + +{ + (**(code **)(*(int *)param_1[0x38] + 0x18))((int *)param_1[0x38],param_2); + if (_DAT_004ac140 <= *(float *)(param_1[0x38] + 0x158)) { + FUN_0041bbd8((int)(param_1 + 0xb),1); + if (param_1[0x41] != 0) { + (**(code **)(*param_1 + 0x34))(param_1); + } + *(undefined4 *)(param_1[0x38] + 0x158) = 0x3f800000; + if (param_1[0x39] != 0) { + FUN_0041bbd8(param_1[0x34] + 0x2c,9); + } + } + return; +} + + + +/* @004ac144 file=? name=FUN_004ac144 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl FUN_004ac144(int param_1) + +{ + if (_DAT_004ac18c <= *(float *)(*(int *)(param_1 + 0xe0) + 0x158)) { + return 1; + } + if (_DAT_004ac190 < *(float *)(*(int *)(param_1 + 0xe0) + 0x158)) { + return 2; + } + return 0; +} + + + +/* @004ac194 file=? name=FUN_004ac194 */ + +undefined4 __cdecl FUN_004ac194(char *param_1,undefined4 *param_2) + +{ + int iVar1; + undefined **ppuVar2; + + ppuVar2 = &PTR_s_Destroyed_0050de74; + while( true ) { + if (*ppuVar2 == (char *)0x0) { + return 0; + } + iVar1 = FUN_004d4b58(param_1,*ppuVar2); + if (iVar1 == 0) break; + ppuVar2 = ppuVar2 + 2; + } + *param_2 = ppuVar2[1]; + return 1; +} + + + +/* @004ac1d4 file=? name=FUN_004ac1d4 */ + +undefined4 __cdecl FUN_004ac1d4(int *param_1,int param_2) + +{ + undefined4 uVar1; + + if (param_2 == 0) { + if (param_1[0x38] != 0) { + *(undefined4 *)(param_1[0x38] + 0x158) = 0x3f800000; + } + FUN_0041bbd8((int)(param_1 + 0xb),1); + if (param_1[0x41] != 0) { + (**(code **)(*param_1 + 0x34))(param_1); + } + return 1; + } + uVar1 = FUN_0041c800(); + return uVar1; +} + + + +/* @004ac22c file=? name=FUN_004ac22c */ + +void __cdecl FUN_004ac22c(int *param_1) + +{ + int iVar1; + + iVar1 = param_1[0x38]; + *(undefined4 *)(iVar1 + 0x158) = 0; + FUN_0041bbd8(iVar1 + 0x10,0); + FUN_0041bbd8((int)(param_1 + 0xb),0); + if (param_1[0x41] != 0) { + (**(code **)(*param_1 + 0x34))(param_1); + } + return; +} + + + +/* @004ac274 file=? name=FUN_004ac274 */ + +void __cdecl FUN_004ac274(int *param_1,undefined4 *param_2) + +{ + int iVar1; + undefined4 local_dc; + undefined4 local_d8; + undefined4 local_d4; + undefined4 local_d0 [2]; + undefined4 local_c8; + undefined4 local_c4; + undefined4 local_c0 [2]; + int local_b8; + uint local_b4; + undefined4 local_b0; + undefined4 local_ac; + undefined4 local_a8; + undefined4 local_a4; + undefined4 local_a0; + undefined4 local_9c; + undefined4 local_98; + undefined4 local_94; + undefined4 local_90; + undefined4 local_8c; + undefined4 local_88; + undefined4 local_84; + int local_80; + uint local_7c; + undefined4 local_78 [15]; + int local_3c [3]; + int local_30 [4]; + int local_20 [4]; + int *local_10; + int local_c; + int *local_8; + + FUN_0041bbd8((int)(param_1 + 0xb),2); + if (param_1[0x41] != 0) { + (**(code **)(*param_1 + 0x34))(param_1); + } + FUN_0041bbd8((int)(param_1 + 0xb),1); + if (param_1[0x41] != 0) { + (**(code **)(*param_1 + 0x34))(param_1); + } + *(undefined4 *)(param_1[0x38] + 0x158) = 0x3f800000; + FUN_004acfa9(local_20,(int)param_1,0xffffffff); + FUN_004ad03a(local_30,0); + while( true ) { + iVar1 = (**(code **)(local_20[0] + 0x28))(local_20); + if (iVar1 == 0) break; + if (*(int *)(iVar1 + 4) == 0x4e) { + (**(code **)(local_30[0] + 4))(local_30,iVar1); + } + } + FUN_004ad0a4(local_3c,(int)local_30); + iVar1 = (**(code **)(local_3c[0] + 0x14))(local_3c); + param_2[1] = (float)param_2[1] / (float)iVar1; + FUN_0040aadc(local_78); + local_8 = (int *)param_1[0x34]; + while( true ) { + iVar1 = (**(code **)(local_3c[0] + 0x28))(local_3c); + if (iVar1 == 0) break; + FUN_004dbb24(&DAT_00524e20,s_ammo_explosion_damaging_0050df61,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,*(char **)(*(int *)(iVar1 + 0x15c) + 8),(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + local_c = param_1[0x36]; + local_10 = local_8 + 0x61; + iVar1 = *(int *)(iVar1 + 0x13c); + local_dc = 100; + local_d8 = 0x12; + local_d4 = 1; + FUN_00420ea4(local_d0,(undefined4 *)&DAT_00522524); + local_c8 = 0; + local_c4 = 0; + FUN_00420ea4(local_c0,local_10); + local_b4 = (uint)(iVar1 < 0); + local_b0 = *param_2; + local_ac = param_2[1]; + local_a8 = param_2[2]; + local_a4 = param_2[3]; + local_a0 = param_2[4]; + local_9c = param_2[5]; + local_98 = param_2[6]; + local_94 = param_2[7]; + local_90 = param_2[8]; + local_8c = param_2[9]; + local_88 = param_2[10]; + local_84 = param_2[0xb]; + local_80 = local_c; + local_7c = (uint)(local_c < 0); + local_b8 = iVar1; + (**(code **)(*local_8 + 0xc))(local_8,&local_dc); + } + FUN_004ad0e2(local_3c,2); + FUN_004ad059(local_30,2); + FUN_004ad00e(local_20,2); + return; +} + + + +/* @004ac4fc file=? name=FUN_004ac4fc */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 __cdecl +FUN_004ac4fc(undefined4 param_1,float param_2,float param_3,float param_4,float param_5) + +{ + float fVar1; + + fVar1 = (_DAT_004ac52c - param_4) / (param_2 - param_3); + return (float10)fVar1 * (float10)param_5 + (float10)(param_2 - fVar1); +} + + + +/* @004ac530 file=? name=FUN_004ac530 */ + +undefined4 * __cdecl +FUN_004ac530(undefined4 *param_1,undefined4 param_2,undefined4 param_3,int *param_4, + undefined4 param_5,undefined4 param_6,undefined4 param_7,undefined4 param_8) + +{ + int *piVar1; + undefined4 *puVar2; + int iVar3; + int *local_8; + + FUN_0041c5c0(param_1,param_2,param_3,(char *)param_4[2],param_5,param_6); + *param_1 = &PTR_FUN_0050e210; + puVar2 = (undefined4 *)FUN_00402298(0x10); + if (puVar2 == (undefined4 *)0x0) { + iVar3 = 0; + } + else { + iVar3 = FUN_004023f4(puVar2); + } + param_1[0x3d] = iVar3; + piVar1 = (int *)(param_1[0x3d] + 0xc); + *piVar1 = *piVar1 + 1; + param_1[0x3a] = param_7; + param_1[0x3b] = param_8; + param_1[0x39] = 0; + FUN_00402a98((int *)&local_8,param_1 + 0x3d,&DAT_0050df7a); + piVar1 = local_8 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_8,3); + } + FUN_00408440(param_1 + 0x3e,&DAT_004e0f80); + param_1[0x42] = 0; + param_1[0x43] = 0; + param_1[0x41] = 0; + param_1[0x44] = 0xffffffff; + puVar2 = (undefined4 *)FUN_00402298(0x160); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_0041de1c(puVar2,param_1,0); + } + param_1[0x38] = puVar2; + piVar1 = param_4 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(param_4,3); + } + return param_1; +} + + + +/* @004ac644 file=? name=FUN_004ac644 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +int * __cdecl +FUN_004ac644(int *param_1,undefined4 param_2,undefined4 param_3,char *param_4,undefined4 param_5, + int param_6,int param_7) + +{ + int *piVar1; + int iVar2; + int iVar3; + undefined4 *puVar4; + char *pcVar5; + float10 fVar6; + int *local_10; + int *local_c; + undefined4 *local_8; + + FUN_0041c52c(param_1,param_2,param_3,param_4,param_5); + *param_1 = (int)&PTR_FUN_0050e210; + local_8 = (undefined4 *)FUN_00402298(0x10); + if (local_8 == (undefined4 *)0x0) { + iVar3 = 0; + } + else { + iVar3 = FUN_004023f4(local_8); + } + param_1[0x3d] = iVar3; + piVar1 = (int *)(param_1[0x3d] + 0xc); + *piVar1 = *piVar1 + 1; + param_1[0x41] = 0; + FUN_0041bbd8((int)(param_1 + 0xb),0); + if (param_1[0x41] != 0) { + (**(code **)(*param_1 + 0x34))(); + } + param_1[0x3a] = param_6; + param_1[0x3b] = param_7; + param_1[0x3c] = (int)param_4; + param_1[0x44] = -1; + if (*(int *)(param_4 + 0x48) == 1) { + param_1[0x39] = 1; + } + else { + param_1[0x39] = 0; + } + FUN_00402a98((int *)&local_c,param_1 + 0x3d,param_4 + 0x4c); + piVar1 = local_c + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_c,3); + } + FUN_00408440(param_1 + 0x3e,(undefined4 *)(param_4 + 0xcc)); + param_1[0x41] = *(int *)(param_4 + 0xd8); + param_1[0x42] = *(int *)(param_4 + 0xe0); + param_1[0x43] = *(int *)(param_4 + 0xdc); + puVar4 = (undefined4 *)FUN_00402298(0x160); + if (puVar4 == (undefined4 *)0x0) { + puVar4 = (undefined4 *)0x0; + } + else { + puVar4 = FUN_0041de1c(puVar4,param_1,0); + } + param_1[0x38] = (int)puVar4; + FUN_00402a98((int *)&local_10,(int *)(param_1[0x38] + 0x15c),(char *)param_1[0x35]); + piVar1 = local_10 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_10,3); + } + iVar3 = 0; + pcVar5 = param_4 + 0x30; + *(undefined4 *)(param_1[0x38] + 0x140) = *(undefined4 *)(param_4 + 0x44); + do { + *(undefined4 *)(param_1[0x38] + 0x144 + iVar3 * 4) = *(undefined4 *)pcVar5; + iVar3 = iVar3 + 1; + pcVar5 = pcVar5 + 4; + } while (iVar3 < 5); + iVar3 = 0; + do { + fVar6 = FUN_004dcd00((double)(*(float *)(param_1[0x38] + 0x144 + iVar3 * 4) - + _DAT_004ac860 / *(float *)(param_1[0x38] + 0x140))); + if ((float10)_DAT_004ac864 < fVar6) { + iVar2 = param_1[0x38]; + *(float *)(iVar2 + 0x144 + iVar3 * 4) = + _DAT_004ac860 / (*(float *)(iVar2 + 0x144 + iVar3 * 4) * *(float *)(iVar2 + 0x140)); + } + iVar3 = iVar3 + 1; + } while (iVar3 < 5); + return param_1; +} + + + +/* @004ac868 file=? name=FUN_004ac868 */ + +void __cdecl FUN_004ac868(int *param_1,byte param_2) + +{ + int *piVar1; + undefined4 *puVar2; + int *piVar3; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0050e210; + puVar2 = (undefined4 *)param_1[0x38]; + if (puVar2 != (undefined4 *)0x0) { + (**(code **)*puVar2)(puVar2,3); + } + piVar3 = (int *)param_1[0x3d]; + piVar1 = piVar3 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(piVar3,3); + } + FUN_0041c648(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004ac8c0 file=? name=FUN_004ac8c0 */ + +void __cdecl FUN_004ac8c0(int param_1) + +{ + int iVar1; + uint uVar2; + int *piVar3; + + iVar1 = *(int *)(param_1 + 0x40); + if (iVar1 == 0) { + FUN_004dbb24(&DAT_00524e20,*(char **)(param_1 + 0xd4),(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s___DefaultState_0050df99,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + return; + } + if (iVar1 != 1) { + if (iVar1 != 2) { + uVar2 = *(uint *)(param_1 + 0x40); + FUN_004dbb24(&DAT_00524e20,*(char **)(param_1 + 0xd4),(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s___UnknownState______0050dfa9,(char *)0x0); + piVar3 = FUN_004db880(&DAT_00524e20,uVar2); + FUN_004d9c38(piVar3); + return; + } + FUN_004dbb24(&DAT_00524e20,*(char **)(param_1 + 0xd4),(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s___Exploding_0050df8c,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + return; + } + FUN_004dbb24(&DAT_00524e20,*(char **)(param_1 + 0xd4),(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s___Destroyed_0050df7f,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + return; +} + + + +/* @004ac9c8 file=? name=FUN_004ac9c8 */ + +bool __cdecl FUN_004ac9c8(int param_1) + +{ + return *(int *)(*(int *)(*(int *)(param_1 + 0xd0) + 400) + 0x274) == 0; +} + + + +/* @004ac9ec file=? name=FUN_004ac9ec */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl +FUN_004ac9ec(int param_1,char *param_2,char *param_3,char *param_4,int param_5,int param_6, + int param_7) + +{ + char *pcVar1; + char cVar2; + int iVar3; + undefined4 uVar4; + char *pcVar5; + uint uVar6; + uint uVar7; + char *pcVar8; + bool bVar9; + float local_20; + float local_1c; + char *local_18; + char *local_14; + char *local_10; + char *local_c; + int local_8; + + iVar3 = FUN_0041c684(param_1,param_2,param_3,param_4,param_5,param_6); + if (iVar3 == 0) { + uVar4 = 0; + } + else { + param_4[0x24] = -0x1c; + param_4[0x25] = '\0'; + param_4[0x26] = '\0'; + param_4[0x27] = '\0'; + param_4[0x20] = -0x45; + param_4[0x21] = '\v'; + param_4[0x22] = '\0'; + param_4[0x23] = '\0'; + if (param_7 == 1) { + param_4[0xe0] = '\0'; + param_4[0xe1] = '\0'; + param_4[0xe2] = -0x80; + param_4[0xe3] = -0x41; + local_8 = 0; + pcVar5 = param_4 + 0x30; + do { + pcVar5[0] = '\0'; + pcVar5[1] = '\0'; + pcVar5[2] = -0x80; + pcVar5[3] = -0x41; + local_8 = local_8 + 1; + pcVar5 = pcVar5 + 4; + } while (local_8 < 5); + param_4[0x48] = -1; + param_4[0x49] = -1; + param_4[0x4a] = -1; + param_4[0x4b] = -1; + iVar3 = 0; + pcVar5 = param_4 + 0x4c; + do { + *pcVar5 = '\0'; + iVar3 = iVar3 + 1; + pcVar5 = pcVar5 + 1; + } while (iVar3 < 0x80); + *(undefined4 *)(param_4 + 0x4c) = DAT_0050dfc0; + param_4[0x50] = DAT_0050dfc4; + local_c = param_4 + 0xcc; + FUN_00408440((undefined4 *)local_c,&DAT_004e0f80); + param_4[0x44] = '\0'; + param_4[0x45] = '\0'; + param_4[0x46] = -0x80; + param_4[0x47] = -0x41; + param_4[0xd8] = '\0'; + param_4[0xd9] = '\0'; + param_4[0xda] = '\0'; + param_4[0xdb] = '\0'; + param_4[0xdc] = '\0'; + param_4[0xdd] = '\0'; + param_4[0xde] = '\0'; + param_4[0xdf] = '\0'; + } + FUN_00404190(param_5,param_3,s_PrintSimulationState_0050dfc5,(undefined4 *)(param_4 + 0xd8)); + FUN_00404118(param_5,param_3,s_CollisionCriticalHitWeight_0050dfda,(float *)(param_4 + 0xdc)); + local_10 = s_Unspecified_0050dff5; + FUN_00404088(param_5,param_3,s_VideoObjectName_0050e001,&local_10); + pcVar8 = s_Unspecified_0050e011; + pcVar5 = local_10; + do { + bVar9 = *pcVar5 == *pcVar8; + if (!bVar9) break; + if (*pcVar5 == '\0') goto LAB_004acb51; + pcVar1 = pcVar5 + 1; + bVar9 = *pcVar1 == pcVar8[1]; + if (!bVar9) break; + pcVar5 = pcVar5 + 2; + pcVar8 = pcVar8 + 2; + bVar9 = *pcVar1 == '\0'; + } while (!bVar9); + if (!bVar9) { + uVar6 = 0xffffffff; + pcVar5 = local_10; + do { + pcVar8 = pcVar5; + if (uVar6 == 0) break; + uVar6 = uVar6 - 1; + pcVar8 = pcVar5 + 1; + cVar2 = *pcVar5; + pcVar5 = pcVar8; + } while (cVar2 != '\0'); + uVar6 = ~uVar6; + pcVar5 = pcVar8 + -uVar6; + pcVar8 = param_4 + 0x4c; + for (uVar7 = uVar6 >> 2; uVar7 != 0; uVar7 = uVar7 - 1) { + *(undefined4 *)pcVar8 = *(undefined4 *)pcVar5; + pcVar5 = pcVar5 + 4; + pcVar8 = pcVar8 + 4; + } + for (uVar6 = uVar6 & 3; uVar6 != 0; uVar6 = uVar6 - 1) { + *pcVar8 = *pcVar5; + pcVar5 = pcVar5 + 1; + pcVar8 = pcVar8 + 1; + } + } +LAB_004acb51: + local_14 = s_Unspecified_0050e01d; + iVar3 = FUN_00404088(param_5,param_3,s_VitalSubsystem_0050e029,&local_14); + if ((iVar3 == 0) && (*(int *)(param_4 + 0x48) == -1)) { + FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_missing_VitalSubsystem__0050e038,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + uVar4 = 0; + } + else { + pcVar8 = s_Unspecified_0050e052; + pcVar5 = local_14; + do { + if (*pcVar5 != *pcVar8) goto LAB_004acbd7; + bVar9 = true; + if (*pcVar5 == '\0') break; + pcVar1 = pcVar5 + 1; + if (*pcVar1 != pcVar8[1]) goto LAB_004acbd7; + pcVar5 = pcVar5 + 2; + pcVar8 = pcVar8 + 2; + bVar9 = *pcVar1 == '\0'; + } while (!bVar9); + if (!bVar9) { +LAB_004acbd7: + pcVar8 = &DAT_0050e05e; + pcVar5 = local_14; + do { + if (*pcVar5 != *pcVar8) goto LAB_004acc06; + bVar9 = true; + if (*pcVar5 == '\0') break; + pcVar1 = pcVar5 + 1; + if (*pcVar1 != pcVar8[1]) goto LAB_004acc06; + pcVar5 = pcVar5 + 2; + pcVar8 = pcVar8 + 2; + bVar9 = *pcVar1 == '\0'; + } while (!bVar9); + if (bVar9) { + param_4[0x48] = '\x01'; + param_4[0x49] = '\0'; + param_4[0x4a] = '\0'; + param_4[0x4b] = '\0'; + } + else { +LAB_004acc06: + pcVar8 = s_False_0050e063; + pcVar5 = local_14; + do { + if (*pcVar5 != *pcVar8) goto LAB_004acc33; + bVar9 = true; + if (*pcVar5 == '\0') break; + pcVar1 = pcVar5 + 1; + if (*pcVar1 != pcVar8[1]) goto LAB_004acc33; + pcVar5 = pcVar5 + 2; + pcVar8 = pcVar8 + 2; + bVar9 = *pcVar1 == '\0'; + } while (!bVar9); + if (!bVar9) { +LAB_004acc33: + FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s___VitalSubsystem_must_be_True_or_0050e069,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + return 0; + } + param_4[0x48] = '\0'; + param_4[0x49] = '\0'; + param_4[0x4a] = '\0'; + param_4[0x4b] = '\0'; + } + } + iVar3 = FUN_00404088(param_5,param_3,s_SiteOffset_0050e092,&local_18); + if (iVar3 != 0) { + FUN_00408944(local_18,(float *)(param_4 + 0xcc)); + } + iVar3 = FUN_00404118(param_5,param_3,s_WeaponDamagePoints_0050e09d,(float *)(param_4 + 0x44)); + if ((iVar3 == 0) && (_DAT_004aceec == *(float *)(param_4 + 0x44))) { + FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_Must_have_a_WeaponDamagePoints_0050e0b0,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + uVar4 = 0; + } + else { + iVar3 = FUN_00404118(param_5,param_3,s_CriticalHitScoreBonus_0050e0d0, + (float *)(param_4 + 0xe0)); + if ((iVar3 == 0) && (_DAT_004aceec == *(float *)(param_4 + 0xe0))) { + FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_Must_have_a_CriticalHitScoreBonu_0050e0e6,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + uVar4 = 0; + } + else { + local_1c = _DAT_004acef0 / *(float *)(param_4 + 0x44); + local_20 = -1.0; + iVar3 = FUN_00404118(param_5,param_3,s_CollisionDamagePoints_0050e109,&local_20); + if ((iVar3 == 0) && (*(float *)(param_4 + 0x30) == _DAT_004aceec)) { + *(float *)(param_4 + 0x30) = local_1c; + } + if (local_20 != _DAT_004aceec) { + *(float *)(param_4 + 0x30) = _DAT_004acef0 / local_20; + } + local_20 = -1.0; + iVar3 = FUN_00404118(param_5,param_3,s_BallisticDamagePoints_0050e11f,&local_20); + if ((iVar3 == 0) && (*(float *)(param_4 + 0x34) == _DAT_004aceec)) { + *(float *)(param_4 + 0x34) = local_1c; + } + if (local_20 != _DAT_004aceec) { + *(float *)(param_4 + 0x34) = _DAT_004acef0 / local_20; + } + local_20 = -1.0; + iVar3 = FUN_00404118(param_5,param_3,s_ExplosiveDamagePoints_0050e135,&local_20); + if ((iVar3 == 0) && (*(float *)(param_4 + 0x38) == _DAT_004aceec)) { + *(float *)(param_4 + 0x38) = local_1c; + } + if (local_20 != _DAT_004aceec) { + *(float *)(param_4 + 0x38) = _DAT_004acef0 / local_20; + } + local_20 = -1.0; + iVar3 = FUN_00404118(param_5,param_3,s_LaserDamagePoints_0050e14b,&local_20); + if ((iVar3 == 0) && (*(float *)(param_4 + 0x3c) == _DAT_004aceec)) { + *(float *)(param_4 + 0x3c) = local_1c; + } + if (local_20 != _DAT_004aceec) { + *(float *)(param_4 + 0x3c) = _DAT_004acef0 / local_20; + } + local_20 = -1.0; + iVar3 = FUN_00404118(param_5,param_3,s_EnergyDamagePoints_0050e15d,&local_20); + if ((iVar3 == 0) && (*(float *)(param_4 + 0x40) == _DAT_004aceec)) { + *(float *)(param_4 + 0x40) = local_1c; + } + if (local_20 != _DAT_004aceec) { + *(float *)(param_4 + 0x40) = _DAT_004acef0 / local_20; + } + uVar4 = 1; + } + } + } + } + return uVar4; +} + + + +/* @004acfa9 file=? name=FUN_004acfa9 */ + +undefined4 * __cdecl FUN_004acfa9(undefined4 *param_1,int param_2,undefined4 param_3) + +{ + FUN_00415f30(param_1,param_2,param_3); + *param_1 = &PTR_FUN_0050e1c8; + return param_1; +} + + + +/* @004acfcc file=? name=FUN_004acfcc */ + +undefined4 * __cdecl FUN_004acfcc(undefined4 *param_1,int param_2,undefined4 param_3) + +{ + FUN_00415f30(param_1,param_2,param_3); + *param_1 = &PTR_FUN_0050e1c8; + return param_1; +} + + + +/* @004acfef file=? name=FUN_004acfef */ + +undefined4 * __cdecl FUN_004acfef(undefined4 *param_1,int param_2) + +{ + FUN_00415f60(param_1,param_2); + *param_1 = &PTR_FUN_0050e1c8; + return param_1; +} + + + +/* @004ad00e file=? name=FUN_004ad00e */ + +void __cdecl FUN_004ad00e(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0050e1c8; + FUN_00415f90(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004ad03a file=? name=FUN_004ad03a */ + +undefined4 * __cdecl FUN_004ad03a(undefined4 *param_1,undefined4 param_2) + +{ + FUN_00417be0(param_1,param_2); + *param_1 = &PTR_FUN_0050e1c0; + return param_1; +} + + + +/* @004ad059 file=? name=FUN_004ad059 */ + +void __cdecl FUN_004ad059(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0050e1c0; + FUN_00417c0c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004ad085 file=? name=FUN_004ad085 */ + +undefined4 * __cdecl FUN_004ad085(undefined4 *param_1,int param_2) + +{ + FUN_00417d00(param_1,param_2); + *param_1 = &PTR_FUN_0050e170; + return param_1; +} + + + +/* @004ad0a4 file=? name=FUN_004ad0a4 */ + +undefined4 * __cdecl FUN_004ad0a4(undefined4 *param_1,int param_2) + +{ + FUN_00417d00(param_1,param_2); + *param_1 = &PTR_FUN_0050e170; + return param_1; +} + + + +/* @004ad0c3 file=? name=FUN_004ad0c3 */ + +undefined4 * __cdecl FUN_004ad0c3(undefined4 *param_1,int param_2) + +{ + FUN_00417d28(param_1,param_2); + *param_1 = &PTR_FUN_0050e170; + return param_1; +} + + + +/* @004ad0e2 file=? name=FUN_004ad0e2 */ + +void __cdecl FUN_004ad0e2(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0050e170; + FUN_00417d54(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004ad10e file=? name=FUN_004ad10e */ + +void __cdecl FUN_004ad10e(int *param_1,undefined4 param_2) + +{ + (**(code **)(*param_1 + 0x28))(param_1,param_2); + return; +} + + + +/* @004ad124 file=? name=FUN_004ad124 */ + +undefined4 * __cdecl FUN_004ad124(undefined4 *param_1,undefined4 param_2) + +{ + undefined4 *puVar1; + int iVar2; + + FUN_00415e90(param_1,1); + *param_1 = &PTR_FUN_0050e3d0; + FUN_004de998(param_1 + 3,0x10,7,1,FUN_004ad619); + param_1[0x1f] = param_2; + iVar2 = 0; + puVar1 = param_1 + 3; + do { + *puVar1 = 0; + puVar1[2] = 0; + puVar1[1] = 0; + puVar1[3] = 0; + iVar2 = iVar2 + 1; + puVar1 = puVar1 + 4; + } while (iVar2 < 7); + return param_1; +} + + + +/* @004ad180 file=? name=FUN_004ad180 */ + +void __cdecl FUN_004ad180(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0050e3d0; + FUN_00415ed8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_00402f98(0x50e248,param_1); + } + } + return; +} + + + +/* @004ad1b8 file=? name=FUN_004ad1b8 */ + +void __cdecl FUN_004ad1b8(int *param_1,byte param_2) + +{ + void *this; + int local_10 [3]; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0050e3a0; + FUN_004ad68b(local_10,(int)(param_1 + 0x39)); + FUN_00417858(this,local_10,1); + FUN_004ad6c9(local_10,2); + FUN_004ad640(param_1 + 0x39,2); + FUN_0041c648(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004ad228 file=? name=FUN_004ad228 */ + +undefined4 * __cdecl +FUN_004ad228(undefined4 *param_1,int param_2,undefined4 param_3,char *param_4,undefined4 param_5) + +{ + int iVar1; + int iVar2; + undefined4 *puVar3; + int iVar4; + + FUN_0041c52c(param_1,param_2,param_3,param_4,param_5); + *param_1 = &PTR_FUN_0050e3a0; + FUN_004ad621(param_1 + 0x39,0); + if ((*(uint *)(param_2 + 0x28) & 0xc) == 0) { + param_1[7] = PTR_FUN_0050e2b0; + param_1[8] = DAT_0050e2b4; + param_1[9] = DAT_0050e2b8; + param_1[0x40] = *(undefined4 *)(param_4 + 0x30); + param_1[0x3d] = *(undefined4 *)(param_4 + 0x34); + param_1[0x3e] = *(undefined4 *)(param_4 + 0x38); + param_1[0x3f] = *(undefined4 *)(param_4 + 0x3c); + for (iVar4 = *(int *)(param_2 + 0x124) + -2; -1 < iVar4; iVar4 = iVar4 + -1) { + iVar1 = *(int *)(*(int *)(param_2 + 0x128) + iVar4 * 4); + if (((iVar1 != 0) && (iVar2 = FUN_0041a1a4(**(int **)(iVar1 + 0xc),0x50de2c), iVar2 != 0)) && + ((*(byte *)(iVar1 + 0x28) & 8) != 0)) { + puVar3 = FUN_00402f74(0x50e248); + if (puVar3 == (undefined4 *)0x0) { + puVar3 = (undefined4 *)0x0; + } + else { + puVar3 = FUN_004ad124(puVar3,iVar1); + } + (**(code **)(param_1[0x39] + 4))(param_1 + 0x39,puVar3); + } + } + } + else { + param_1[10] = param_1[10] | 2; + } + return param_1; +} + + + +/* @004ad33c file=? name=FUN_004ad33c */ + +void __cdecl FUN_004ad33c(int param_1) + +{ + int iVar1; + uint *puVar2; + uint uVar3; + uint local_64 [7]; + uint local_48 [8]; + int local_28 [3]; + int *local_1c; + int *local_18; + int *local_14; + uint local_10; + int *local_c; + int local_8; + + local_8 = *(int *)(DAT_004efc94 + 0x38); + FUN_004ad68b(local_28,param_1 + 0xe4); + while( true ) { + iVar1 = (**(code **)(local_28[0] + 0x28))(local_28); + if (iVar1 == 0) break; + local_c = *(int **)(iVar1 + 0x7c); + local_10 = (**(code **)(*local_c + 0x30))(local_c); + puVar2 = (uint *)(iVar1 + 0xc); + iVar1 = 0; + do { + uVar3 = local_10 & 1; + if (puVar2[1] != 0) { + if ((int)puVar2[3] < *(int *)(param_1 + 0x10)) { + puVar2[1] = 0; + } + else { + uVar3 = *puVar2; + } + } + if (uVar3 != *puVar2) { + if (uVar3 == 0) { + local_1c = *(int **)(param_1 + 0xd0); + FUN_004366b8(local_64,(int)local_1c,local_c,iVar1); + FUN_004364e4(local_8,local_1c,local_64); + } + else { + local_14 = local_c; + local_18 = *(int **)(param_1 + 0xd0); + FUN_00436688(local_48,(int)local_18,local_c,iVar1,*(undefined4 *)(param_1 + 0x100)); + FUN_004364e4(local_8,local_18,local_48); + } + } + *puVar2 = uVar3; + iVar1 = iVar1 + 1; + local_10 = (int)local_10 >> 1; + puVar2 = puVar2 + 4; + } while (iVar1 < 7); + } + FUN_004ad6c9(local_28,2); + return; +} + + + +/* @004ad470 file=? name=FUN_004ad470 */ + +void __cdecl FUN_004ad470(int param_1) + +{ + FUN_0041a1a4(**(int **)(param_1 + 0xc),0x50e280); + return; +} + + + +/* @004ad48c file=? name=FUN_004ad48c */ + +undefined4 __cdecl +FUN_004ad48c(int param_1,char *param_2,char *param_3,char *param_4,int param_5,int param_6, + int param_7) + +{ + int iVar1; + undefined4 uVar2; + undefined4 *puVar3; + char *local_8; + + iVar1 = FUN_0041c684(param_1,param_2,param_3,param_4,param_5,param_6); + if (iVar1 == 0) { + uVar2 = 0; + } + else { + param_4[0x24] = '@'; + param_4[0x25] = '\0'; + param_4[0x26] = '\0'; + param_4[0x27] = '\0'; + param_4[0x20] = -0x24; + param_4[0x21] = '\v'; + param_4[0x22] = '\0'; + param_4[0x23] = '\0'; + param_4[0x30] = -1; + param_4[0x31] = -1; + param_4[0x32] = -1; + param_4[0x33] = -1; + param_4[0x34] = '\0'; + param_4[0x35] = '\0'; + param_4[0x36] = '\0'; + param_4[0x37] = '\0'; + param_4[0x38] = '\0'; + param_4[0x39] = '\0'; + param_4[0x3a] = '\0'; + param_4[0x3b] = '\0'; + param_4[0x3c] = '\0'; + param_4[0x3d] = '\0'; + param_4[0x3e] = '\0'; + param_4[0x3f] = '\0'; + if ((*(int *)(param_4 + 0x30) == -1) && + (iVar1 = FUN_00404088(param_5,param_3,s_AlarmModel_0050e322,&local_8), iVar1 == 0)) { + return 1; + } + puVar3 = (undefined4 *)FUN_00406ff8(param_7,local_8,1,-1); + if (puVar3 == (undefined4 *)0x0) { + FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_couldn_t_locate_0050e32d,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,local_8,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s__mod_0050e33f,(char *)0x0); + uVar2 = 0; + } + else { + uVar2 = 1; + *(undefined4 *)(param_4 + 0x30) = *puVar3; + } + } + return uVar2; +} + + + +/* @004ad619 file=? name=FUN_004ad619 */ + +undefined4 __cdecl FUN_004ad619(undefined4 param_1) + +{ + return param_1; +} + + + +/* @004ad621 file=? name=FUN_004ad621 */ + +undefined4 * __cdecl FUN_004ad621(undefined4 *param_1,undefined4 param_2) + +{ + FUN_00417be0(param_1,param_2); + *param_1 = &PTR_FUN_0050e398; + return param_1; +} + + + +/* @004ad640 file=? name=FUN_004ad640 */ + +void __cdecl FUN_004ad640(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0050e398; + FUN_00417c0c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004ad66c file=? name=FUN_004ad66c */ + +undefined4 * __cdecl FUN_004ad66c(undefined4 *param_1,int param_2) + +{ + FUN_00417d00(param_1,param_2); + *param_1 = &PTR_FUN_0050e348; + return param_1; +} + + + +/* @004ad68b file=? name=FUN_004ad68b */ + +undefined4 * __cdecl FUN_004ad68b(undefined4 *param_1,int param_2) + +{ + FUN_00417d00(param_1,param_2); + *param_1 = &PTR_FUN_0050e348; + return param_1; +} + + + +/* @004ad6aa file=? name=FUN_004ad6aa */ + +undefined4 * __cdecl FUN_004ad6aa(undefined4 *param_1,int param_2) + +{ + FUN_00417d28(param_1,param_2); + *param_1 = &PTR_FUN_0050e348; + return param_1; +} + + + +/* @004ad6c9 file=? name=FUN_004ad6c9 */ + +void __cdecl FUN_004ad6c9(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0050e348; + FUN_00417d54(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004ad748 file=? name=FUN_004ad748 */ + +void __cdecl FUN_004ad748(int *param_1,undefined4 param_2) + +{ + FUN_004ac0bc(param_1,param_2); + return; +} + + + +/* @004ad760 file=? name=FUN_004ad760 */ + +void __cdecl FUN_004ad760(int *param_1) + +{ + param_1[0x45] = param_1[0x4f]; + param_1[0x56] = (int)((float)param_1[0x4f] * (float)param_1[0x55]); + param_1[0x4b] = param_1[0x4a]; + param_1[0x4c] = 0; + param_1[0x4d] = 1; + param_1[0x57] = 0x3f800000; + FUN_004ad884((int)param_1); + FUN_004ad7f0((int)param_1); + param_1[0x4e] = 0; + FUN_004ac22c(param_1); + return; +} + + + +/* @004ad7d4 file=? name=FUN_004ad7d4 */ + +undefined4 __cdecl FUN_004ad7d4(int param_1) + +{ + return *(undefined4 *)(*(int *)(*(int *)(param_1 + 0xd0) + 400) + 0x260); +} + + + +/* @004ad7f0 file=? name=FUN_004ad7f0 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004ad7f0(int param_1) + +{ + float fVar1; + float fVar2; + float10 fVar3; + + *(float *)(param_1 + 0x1cc) = *(float *)(param_1 + 0x114) * *(float *)(param_1 + 300); + fVar1 = (float)(_DAT_004ad870 * (float10)*(float *)(param_1 + 0x1cc)); + fVar2 = _DAT_004ad87c; + if ((_DAT_004ad87c <= fVar1) && (fVar2 = fVar1, _DAT_004ad880 < fVar1)) { + fVar2 = _DAT_004ad880; + } + FUN_0043ade4((uint *)(param_1 + 0x144),fVar2); + fVar3 = FUN_0043ae0b((uint *)(param_1 + 0x144)); + *(float *)(param_1 + 0x120) = (float)fVar3; + return; +} + + + +/* @004ad884 file=? name=FUN_004ad884 */ + +void __cdecl FUN_004ad884(int param_1) + +{ + int iVar1; + + iVar1 = 0; + do { + FUN_0043ade4((uint *)(param_1 + 0x144),0); + iVar1 = iVar1 + 1; + } while (iVar1 < 0xf); + return; +} + + + +/* @004ad8ac file=? name=FUN_004ad8ac */ + +void __cdecl FUN_004ad8ac(int param_1,float param_2) + +{ + int iVar1; + float10 fVar2; + int iVar3; + + iVar3 = param_1 + 0x164; + iVar1 = FUN_00417ab4(iVar3); + if ((iVar1 != 0) && (*(int *)(param_1 + 0x134) != 0)) { + fVar2 = FUN_004ad9ec((short)iVar3,param_1,iVar1,param_2); + *(float *)(iVar1 + 0x1c8) = (float)fVar2 + *(float *)(iVar1 + 0x1c8); + *(float *)(param_1 + 0x1c8) = -(float)fVar2 + *(float *)(param_1 + 0x1c8); + FUN_004ada94(param_1,param_2); + } + return; +} + + + +/* @004ad924 file=? name=FUN_004ad924 */ + +void __cdecl FUN_004ad924(int *param_1,float param_2) + +{ + int iVar1; + + iVar1 = FUN_004ad7d4((int)param_1); + if (iVar1 != 0) { + param_1[0x56] = (int)((float)param_1[0x72] + (float)param_1[0x56]); + param_1[0x45] = (int)((float)param_1[0x56] / (float)param_1[0x55]); + FUN_004ad7f0((int)param_1); + param_1[0x72] = 0; + FUN_004ad8ac((int)param_1,param_2); + } + iVar1 = FUN_004ad7d4((int)param_1); + if (iVar1 != 0) { + FUN_004adbf8(param_1,param_2); + } + if ((float)param_1[0x47] < (float)param_1[0x45]) { + FUN_0041bbd8((int)(param_1 + 0x5c),2); + return; + } + if ((float)param_1[0x46] < (float)param_1[0x45]) { + FUN_0041bbd8((int)(param_1 + 0x5c),1); + return; + } + FUN_0041bbd8((int)(param_1 + 0x5c),0); + return; +} + + + +/* @004ad9ec file=? name=FUN_004ad9ec */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 __thiscall FUN_004ad9ec(undefined2 param_1,int param_2,int param_3,float param_4) + +{ + float fVar1; + float fVar2; + float fVar3; + float fVar4; + float fVar5; + double dVar6; + float fVar7; + float fVar8; + float10 fVar9; + + fVar7 = *(float *)(param_2 + 0x154) / *(float *)(param_2 + 0x160); + fVar8 = fVar7 + *(float *)(param_3 + 0x154); + fVar1 = *(float *)(param_2 + 0x114); + fVar2 = *(float *)(param_2 + 0x160); + fVar3 = *(float *)(param_3 + 0x158); + fVar4 = *(float *)(param_3 + 0x1c8); + fVar5 = *(float *)(param_2 + 0x158); + dVar6 = (double)((-param_4 * + *(float *)(param_2 + 0x140) * + (*(float *)(param_2 + 300) / *(float *)(param_2 + 0x128)) * + *(float *)(param_2 + 0x15c)) / fVar8); + fVar9 = (float10)FUN_004dca38(param_1,SUB84(dVar6,0),(uint)((ulonglong)dVar6 >> 0x20)); + return (float10)(float)((float10)(fVar1 * fVar2 - (fVar3 + fVar4 + fVar5) / fVar8) * + (float10)fVar7 * ((float10)_DAT_004ada90 - fVar9)); +} + + + +/* @004ada94 file=? name=FUN_004ada94 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004ada94(int param_1,float param_2) + +{ + float fVar1; + float fVar2; + float fVar3; + float fVar4; + int iVar5; + float10 fVar6; + + iVar5 = FUN_00417ab4(param_1 + 0x164); + if ((iVar5 != 0) && + (fVar6 = FUN_004dcd00((double)(*(float *)(param_1 + 0x1cc) - *(float *)(iVar5 + 0x1cc))), + (float10)_DAT_004adbf4 < fVar6)) { + fVar1 = *(float *)(iVar5 + 0x1cc) / *(float *)(param_1 + 0x114) - *(float *)(param_1 + 300); + fVar2 = *(float *)(param_1 + 0x128) * param_2; + if (-fVar2 <= fVar1) { + if (fVar2 < fVar1) { + fVar1 = fVar2; + } + } + else { + fVar1 = -fVar2; + } + fVar2 = *(float *)(param_1 + 0x128) - *(float *)(param_1 + 300); + fVar3 = -*(float *)(param_1 + 300); + fVar4 = -(*(float *)(iVar5 + 0x128) - *(float *)(iVar5 + 300)); + if ((fVar3 <= fVar1) && (fVar3 = fVar1, fVar2 < fVar1)) { + fVar3 = fVar2; + } + if ((fVar4 <= fVar3) && (fVar4 = fVar3, *(float *)(iVar5 + 300) < fVar3)) { + fVar4 = *(float *)(iVar5 + 300); + } + fVar4 = *(float *)(param_1 + 0x15c) * fVar4; + *(float *)(param_1 + 300) = fVar4 + *(float *)(param_1 + 300); + *(float *)(iVar5 + 300) = *(float *)(iVar5 + 300) - fVar4; + } + return; +} + + + +/* @004adbf8 file=? name=FUN_004adbf8 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004adbf8(int *param_1,float param_2) + +{ + float fVar1; + float10 fVar2; + + param_1[0x4c] = (int)(*(float *)(param_1[0x38] + 0x158) * (float)param_1[0x48]); + if ((float)param_1[0x4c] < _DAT_0050e3d8) { + param_1[0x4c] = 0; + } + fVar1 = (float)param_1[0x4c] * param_2; + if ((float)param_1[0x4b] < fVar1) { + fVar1 = (float)param_1[0x4b]; + } + param_1[0x4b] = (int)((float)param_1[0x4b] - fVar1); + fVar2 = FUN_004dcd00((double)fVar1); + if ((float10)_DAT_004adcfc < fVar2) { + fVar2 = (float10)(**(code **)(*param_1 + 0x38))(param_1,fVar1); + param_1[0x4b] = (int)(float)(fVar2 + (float10)(float)param_1[0x4b]); + } + if ((param_1[0x4e] != 0) || ((float)param_1[0x4c] <= _DAT_0050e3d4)) { + if ((param_1[0x4e] == 1) && ((float)param_1[0x4c] < _DAT_0050e3d8)) { + param_1[0x4e] = 0; + } + } + else { + param_1[0x4e] = 1; + } + return; +} + + + +/* @004add30 file=? name=FUN_004add30 */ + +uint __cdecl FUN_004add30(int param_1) + +{ + uint uVar1; + int iVar2; + + uVar1 = FUN_004ac144(param_1); + if (*(int *)(param_1 + 0x184) != 0) { + uVar1 = uVar1 | 8; + } + if (*(int *)(param_1 + 0x138) != 0) { + iVar2 = FUN_004ad7d4(param_1); + if (iVar2 != 0) { + uVar1 = uVar1 | 4; + } + } + return uVar1; +} + + + +/* @004add6c file=? name=FUN_004add6c */ + +undefined4 __cdecl FUN_004add6c(int *param_1,int param_2) + +{ + undefined4 uVar1; + + if (param_2 == 1) { + *(undefined4 *)(param_1[0x38] + 0x158) = 0x3f000000; + return 1; + } + uVar1 = FUN_004ac1d4(param_1,param_2); + return uVar1; +} + + + +/* @004adda0 file=bt/heat.cpp name=FUN_004adda0 */ + +int * __cdecl +FUN_004adda0(int *param_1,int param_2,undefined4 param_3,char *param_4,undefined4 param_5, + int param_6,int param_7) + +{ + int iVar1; + int local_8; + + FUN_004ac644(param_1,param_2,param_3,param_4,param_5,param_6,param_7); + *param_1 = (int)&PTR_FUN_0050edc4; + param_1[0x45] = *(int *)(param_4 + 0xe4); + param_1[0x46] = *(int *)(param_4 + 0xe8); + param_1[0x47] = *(int *)(param_4 + 0xec); + param_1[0x48] = 0; + param_1[0x49] = 0x3f000000; + param_1[0x4a] = 0x3f800000; + param_1[0x4b] = param_1[0x4a]; + param_1[0x4c] = 0; + param_1[0x4d] = 1; + param_1[0x4e] = 0; + param_1[0x4f] = param_1[0x45]; + param_1[0x50] = *(int *)(param_4 + 0xf0); + FUN_0043ad4f((uint *)(param_1 + 0x51),0xf,0); + param_1[0x54] = 0x3ecccccd; + param_1[0x55] = *(int *)(param_4 + 0xf4); + param_1[0x56] = (int)((float)param_1[0x55] * (float)param_1[0x4f]); + param_1[0x57] = 0x3f800000; + param_1[0x58] = 0x3f800000; + FUN_004af9cf(param_1 + 0x59,0); + FUN_0041b9ec(param_1 + 0x5c,3); + param_1[0x72] = 0; + if (((*(uint *)(param_2 + 0x28) & 0xc) == 0) && ((*(uint *)(param_2 + 0x28) & 0x100) != 0)) { + param_1[7] = (int)PTR_FUN_0050e4e0; + param_1[8] = DAT_0050e4e4; + param_1[9] = DAT_0050e4e8; + } + param_1[0x71] = (int)param_4; + local_8 = 0; + iVar1 = FUN_0041a1a4(*(int *)param_1[3],0x50e590); + if (iVar1 == 0) { + if (*(int *)(param_4 + 0xf8) < *(int *)(param_2 + 0x124)) { + local_8 = *(int *)(*(int *)(param_2 + 0x128) + *(int *)(param_4 + 0xf8) * 4); + } + else { + FUN_0040385c(s_Bad_subsystem_resource_>heatSink_0050e7c9,s_d__tesla_bt_bt_HEAT_CPP_0050e804, + 0x25f); + } + if (((*(uint *)(param_2 + 0x28) & 0xc) == 0) && ((*(uint *)(param_2 + 0x28) & 0x100) != 0)) { + if (local_8 == 0) { + FUN_0040385c(s_Master_heatable_subystem_is_miss_0050e81c,s_d__tesla_bt_bt_HEAT_CPP_0050e859, + 0x26b); + } + else { + (**(code **)(param_1[0x59] + 4))(param_1 + 0x59,local_8); + } + } + else if (((*(uint *)(param_2 + 0x28) & 0xc) == 4) && (local_8 != 0)) { + (**(code **)(param_1[0x59] + 4))(param_1 + 0x59,local_8); + } + } + FUN_004ad7f0((int)param_1); + return param_1; +} + + + +/* @004adfd4 file=? name=FUN_004adfd4 */ + +void __cdecl FUN_004adfd4(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0050edc4; + FUN_0041baa4(param_1 + 0x5c,2); + FUN_004af9ee(param_1 + 0x59,2); + FUN_0043adb5(param_1 + 0x51,2); + FUN_004ac868(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004ae034 file=? name=FUN_004ae034 */ + +void __cdecl FUN_004ae034(int param_1) + +{ + FUN_0041a1a4(**(int **)(param_1 + 0xc),0x50e3ec); + return; +} + + + +/* @004ae050 file=? name=FUN_004ae050 */ + +void __cdecl FUN_004ae050(int param_1) + +{ + int iVar1; + + FUN_004ac8c0(param_1); + iVar1 = *(int *)(param_1 + 0x184); + if (iVar1 == 0) { + FUN_004dbb24(&DAT_00524e20,*(char **)(param_1 + 0xd4),(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s___NormalHeat_0050e893,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + } + else { + if (iVar1 == 1) { + FUN_004dbb24(&DAT_00524e20,*(char **)(param_1 + 0xd4),(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s___DegradationHeat_0050e880,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + return; + } + if (iVar1 == 2) { + FUN_004dbb24(&DAT_00524e20,*(char **)(param_1 + 0xd4),(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s___FailureHeat_0050e871,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + return; + } + } + FUN_004dbb24(&DAT_00524e20,*(char **)(param_1 + 0xd4),(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_Unknown_Heat_State__0050e8a1,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + return; +} + + + +/* @004ae150 file=? name=FUN_004ae150 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl +FUN_004ae150(int param_1,char *param_2,char *param_3,char *param_4,int param_5,int param_6, + int param_7) + +{ + char *pcVar1; + int iVar2; + undefined4 uVar3; + char *pcVar4; + char *pcVar5; + bool bVar6; + char *local_8; + + iVar2 = FUN_004ac9ec(param_1,param_2,param_3,param_4,param_5,param_6,param_7); + if (iVar2 == 0) { + uVar3 = 0; + } + else { + param_4[0x24] = -4; + param_4[0x25] = '\0'; + param_4[0x26] = '\0'; + param_4[0x27] = '\0'; + param_4[0x20] = -0x44; + param_4[0x21] = '\v'; + param_4[0x22] = '\0'; + param_4[0x23] = '\0'; + if (param_7 == 1) { + param_4[0xe4] = '\0'; + param_4[0xe5] = '\0'; + param_4[0xe6] = -0x80; + param_4[0xe7] = -0x41; + param_4[0xe8] = '\0'; + param_4[0xe9] = '\0'; + param_4[0xea] = -0x80; + param_4[0xeb] = -0x41; + param_4[0xec] = '\0'; + param_4[0xed] = '\0'; + param_4[0xee] = -0x80; + param_4[0xef] = -0x41; + param_4[0xf0] = '\0'; + param_4[0xf1] = '\0'; + param_4[0xf2] = -0x80; + param_4[0xf3] = -0x41; + param_4[0xf4] = '\0'; + param_4[0xf5] = '\0'; + param_4[0xf6] = -0x80; + param_4[0xf7] = -0x41; + param_4[0xf8] = -1; + param_4[0xf9] = -1; + param_4[0xfa] = -1; + param_4[0xfb] = -1; + } + iVar2 = FUN_00404118(param_5,param_3,s_StartingTemperature_0050e8b6,(float *)(param_4 + 0xe4)); + if ((iVar2 == 0) && (_DAT_004ae460 == *(float *)(param_4 + 0xe4))) { + FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_StartingTemperature__0050e8ca,(char *)0x0); + uVar3 = 0; + } + else { + iVar2 = FUN_00404118(param_5,param_3,s_DegradationTemperature_0050e8e9, + (float *)(param_4 + 0xe8)); + if ((iVar2 == 0) && (_DAT_004ae460 == *(float *)(param_4 + 0xe8))) { + FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_DegradationTemperature__0050e900,(char *)0x0); + uVar3 = 0; + } + else { + iVar2 = FUN_00404118(param_5,param_3,s_FailureTemperature_0050e922,(float *)(param_4 + 0xec) + ); + if ((iVar2 == 0) && (_DAT_004ae460 == *(float *)(param_4 + 0xec))) { + FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_FailureTemperature__0050e935,(char *)0x0); + uVar3 = 0; + } + else { + iVar2 = FUN_00404118(param_5,param_3,s_ThermalConductance_0050e953, + (float *)(param_4 + 0xf0)); + if ((iVar2 == 0) && (_DAT_004ae460 == *(float *)(param_4 + 0xf0))) { + FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_ThermalConductance__0050e966,(char *)0x0); + uVar3 = 0; + } + else { + iVar2 = FUN_00404118(param_5,param_3,s_ThermalMass_0050e984,(float *)(param_4 + 0xf4)); + if ((iVar2 == 0) && (_DAT_004ae460 == *(float *)(param_4 + 0xf4))) { + FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_ThermalMass__0050e990,(char *)0x0); + uVar3 = 0; + } + else { + local_8 = s_Unspecified_0050e9a7; + iVar2 = FUN_00404088(param_5,param_3,s_HeatSink_0050e9b3,&local_8); + if ((iVar2 == 0) && (*(int *)(param_4 + 0xf8) == -1)) { + FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_HeatSink__0050e9bc,(char *)0x0); + uVar3 = 0; + } + else { + pcVar5 = s_Unspecified_0050e9d0; + pcVar4 = local_8; + do { + bVar6 = *pcVar4 == *pcVar5; + if (!bVar6) break; + if (*pcVar4 == '\0') goto LAB_004ae418; + pcVar1 = pcVar4 + 1; + bVar6 = *pcVar1 == pcVar5[1]; + if (!bVar6) break; + pcVar4 = pcVar4 + 2; + pcVar5 = pcVar5 + 2; + bVar6 = *pcVar1 == '\0'; + } while (!bVar6); + if (!bVar6) { + iVar2 = FUN_004215b0(param_5,local_8); + *(int *)(param_4 + 0xf8) = iVar2; + } +LAB_004ae418: + if (*(int *)(param_4 + 0xf8) < 0) { + FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_has_an_invalid_heat_sink__0050e9dc,(char *)0x0 + ); + uVar3 = 0; + } + else { + *(int *)(param_4 + 0xf8) = *(int *)(param_4 + 0xf8) + 2; + uVar3 = 1; + } + } + } + } + } + } + } + } + return uVar3; +} + + + +/* @004ae4d8 file=? name=FUN_004ae4d8 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004ae4d8(int *param_1,undefined4 param_2) + +{ + float fVar1; + + param_1[0x58] = (int)((_DAT_004ae530 - *(float *)(param_1[0x38] + 0x158)) * (float)param_1[0x76]); + fVar1 = _DAT_004ae530; + if (_DAT_004ae530 <= (float)param_1[0x58]) { + fVar1 = (float)param_1[0x58]; + } + param_1[0x58] = (int)fVar1; + FUN_004ad748(param_1,param_2); + return; +} + + + +/* @004ae568 file=? name=FUN_004ae568 */ + +int * __cdecl FUN_004ae568(int *param_1,int param_2,undefined4 param_3,char *param_4) + +{ + char *pcVar1; + int iVar2; + + FUN_004adda0(param_1,param_2,param_3,param_4,&DAT_0050e4ec,0,0); + *param_1 = (int)&PTR_FUN_0050ed88; + FUN_0041b9ec(param_1 + 0x77,3); + param_1[0x74] = 1; + param_1[0x57] = 0; + param_1[0x58] = *(int *)(param_4 + 0xfc); + param_1[0x76] = param_1[0x58]; + param_1[10] = param_1[10] | 8; + pcVar1 = (char *)param_1[0x35]; + iVar2 = FUN_004d4a78(pcVar1); + iVar2 = FUN_004dd1e0(pcVar1 + iVar2 + -1); + param_1[0x75] = iVar2; + return param_1; +} + + + +/* @004ae5fc file=? name=FUN_004ae5fc */ + +void __cdecl FUN_004ae5fc(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0050ed88; + FUN_0041baa4(param_1 + 0x77,2); + FUN_004adfd4(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004ae63c file=? name=FUN_004ae63c */ + +void __cdecl FUN_004ae63c(int param_1) + +{ + FUN_0041a1a4(**(int **)(param_1 + 0xc),0x50e4fc); + return; +} + + + +/* @004ae658 file=? name=FUN_004ae658 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl +FUN_004ae658(int param_1,char *param_2,char *param_3,char *param_4,int param_5,int param_6, + int param_7) + +{ + int iVar1; + undefined4 uVar2; + + iVar1 = FUN_004ae150(param_1,param_2,param_3,param_4,param_5,param_6,param_7); + if (iVar1 == 0) { + uVar2 = 0; + } + else { + param_4[0x24] = '\0'; + param_4[0x25] = '\x01'; + param_4[0x26] = '\0'; + param_4[0x27] = '\0'; + param_4[0x20] = -0x43; + param_4[0x21] = '\v'; + param_4[0x22] = '\0'; + param_4[0x23] = '\0'; + if (param_7 == 1) { + param_4[0xfc] = '\0'; + param_4[0xfd] = '\0'; + param_4[0xfe] = -0x80; + param_4[0xff] = -0x41; + } + iVar1 = FUN_00404118(param_5,param_3,s_RefrigerationFactor_0050ea38,(float *)(param_4 + 0xfc)); + if ((iVar1 == 0) && (_DAT_004ae708 == *(float *)(param_4 + 0xfc))) { + FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_RefrigerationFactor__0050ea4c,(char *)0x0); + uVar2 = 0; + } + else { + uVar2 = 1; + } + } + return uVar2; +} + + + +/* @004ae724 file=? name=FUN_004ae724 */ + +void __cdecl FUN_004ae724(int *param_1,undefined4 param_2) + +{ + FUN_004ad748(param_1,param_2); + return; +} + + + +/* @004ae73c file=? name=FUN_004ae73c */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004ae73c(int *param_1,float param_2) + +{ + float fVar1; + float fVar2; + double dVar3; + float fVar4; + int iVar5; + float10 fVar6; + int *piVar7; + + iVar5 = FUN_004ad7d4((int)param_1); + if (iVar5 != 0) { + param_1[0x56] = (int)((float)param_1[0x72] + (float)param_1[0x56]); + param_1[0x45] = (int)((float)param_1[0x56] / (float)param_1[0x55]); + piVar7 = param_1; + FUN_004ad7f0((int)param_1); + param_1[0x72] = 0; + fVar4 = _DAT_004ae89c - (_DAT_004ae89c - (float)param_1[0x75]) * _DAT_004ae8a0; + fVar1 = (float)param_1[0x45]; + fVar2 = (float)param_1[0x58]; + dVar3 = (double)((-param_2 * + (float)param_1[0x50] * + (_DAT_004ae8a4 - *(float *)(param_1[0x38] + 0x158)) * + ((float)param_1[0x4b] / (float)param_1[0x4a]) * (float)param_1[0x57]) / + (float)param_1[0x55]); + fVar6 = (float10)FUN_004dca38((short)piVar7,SUB84(dVar3,0),(uint)((ulonglong)dVar3 >> 0x20)); + param_1[0x72] = + (int)(-(float)((float10)(fVar1 * fVar2 - fVar4) * (float10)(float)param_1[0x55] * + ((float10)_DAT_004ae8a4 - fVar6)) + (float)param_1[0x72]); + } + fVar1 = (float)param_1[0x4a] - (float)param_1[0x4b]; + if (_DAT_004ae8a8 < fVar1) { + fVar6 = FUN_004dcd00((double)fVar1); + if ((float10)_DAT_004ae8ac < fVar6) { + fVar6 = (float10)(**(code **)(*param_1 + 0x38))(param_1,fVar1); + param_1[0x4b] = (int)(float)(fVar6 + (float10)(float)param_1[0x4b]); + } + } + return; +} + + + +/* @004ae8d0 file=? name=FUN_004ae8d0 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +int * __cdecl FUN_004ae8d0(int *param_1,int param_2,undefined4 param_3,char *param_4) + +{ + FUN_004adda0(param_1,param_2,param_3,param_4,&DAT_0050e580,0,0); + *param_1 = (int)&PTR_LAB_0050ed4c; + param_1[0x74] = *(int *)(param_4 + 0xfc); + param_1[0x75] = 0x43960000; + FUN_004afa1a(param_1 + 0x76,0); + param_1[0x50] = + (int)(float)(_DAT_004ae974 * (float10)param_1[0x74] * (float10)(float)param_1[0x50]); + if (((*(uint *)(param_2 + 0x28) & 0xc) == 0) && ((*(uint *)(param_2 + 0x28) & 0x100) != 0)) { + param_1[7] = (int)PTR_FUN_0050e5e8; + param_1[8] = DAT_0050e5ec; + param_1[9] = DAT_0050e5f0; + } + return param_1; +} + + + +/* @004ae9c0 file=? name=FUN_004ae9c0 */ + +void __cdecl FUN_004ae9c0(int param_1) + +{ + FUN_0041a1a4(**(int **)(param_1 + 0xc),0x50e590); + return; +} + + + +/* @004ae9dc file=? name=FUN_004ae9dc */ + +undefined4 __cdecl +FUN_004ae9dc(int param_1,char *param_2,char *param_3,char *param_4,int param_5,int param_6, + int param_7) + +{ + bool bVar1; + int iVar2; + undefined4 uVar3; + undefined3 extraout_var; + + iVar2 = FUN_004ae150(param_1,param_2,param_3,param_4,param_5,param_6,param_7); + if (iVar2 == 0) { + uVar3 = 0; + } + else { + param_4[0x24] = '\0'; + param_4[0x25] = '\x01'; + param_4[0x26] = '\0'; + param_4[0x27] = '\0'; + param_4[0x20] = -0x42; + param_4[0x21] = '\v'; + param_4[0x22] = '\0'; + param_4[0x23] = '\0'; + if (param_7 == 1) { + param_4[0xfc] = -1; + param_4[0xfd] = -1; + param_4[0xfe] = -1; + param_4[0xff] = -1; + } + bVar1 = FUN_004040d8(param_5,param_3,s_HeatSinkCount_0050ea95,(int *)(param_4 + 0xfc)); + if ((CONCAT31(extraout_var,bVar1) == 0) && (*(int *)(param_4 + 0xfc) == -1)) { + FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_HeatSinkCount__0050eaa3,(char *)0x0); + uVar3 = 0; + } + else { + uVar3 = 1; + } + } + return uVar3; +} + + + +/* @004aea84 file=? name=FUN_004aea84 */ + +void __cdecl FUN_004aea84(int *param_1,undefined4 param_2) + +{ + FUN_004ac0bc(param_1,param_2); + return; +} + + + +/* @004aea9c file=? name=FUN_004aea9c */ + +void __cdecl FUN_004aea9c(int *param_1) + +{ + FUN_004ac22c(param_1); + FUN_0041bbd8((int)(param_1 + 0x4b),0); + return; +} + + + +/* @004aeac4 file=? name=FUN_004aeac4 */ + +void __cdecl FUN_004aeac4(int param_1) + +{ + int iVar1; + + iVar1 = FUN_00417ab4(param_1 + 0x114); + if (*(float *)(iVar1 + 0x114) <= *(float *)(param_1 + 0x124)) { + if (*(float *)(iVar1 + 0x114) <= *(float *)(param_1 + 0x120)) { + FUN_0041bbd8(param_1 + 300,0); + } + else { + FUN_0041bbd8(param_1 + 300,1); + } + } + else { + FUN_0041bbd8(param_1 + 300,2); + } + return; +} + + + +/* @004aeb40 file=? name=FUN_004aeb40 */ + +int * __cdecl +FUN_004aeb40(int *param_1,int param_2,undefined4 param_3,char *param_4,undefined4 param_5) + +{ + FUN_004ac644(param_1,param_2,param_3,param_4,param_5,0,0); + *param_1 = (int)&PTR_FUN_0050ed10; + FUN_004af9cf(param_1 + 0x45,0); + param_1[0x48] = *(int *)(param_4 + 0xe8); + param_1[0x49] = *(int *)(param_4 + 0xec); + param_1[0x4a] = *(int *)(param_4 + 0xe4); + FUN_0041b9ec(param_1 + 0x4b,3); + if (((*(uint *)(param_2 + 0x28) & 0xc) == 0) && ((*(uint *)(param_2 + 0x28) & 0x100) != 0)) { + param_1[7] = (int)PTR_FUN_0050e634; + param_1[8] = DAT_0050e638; + param_1[9] = DAT_0050e63c; + } + return param_1; +} + + + +/* @004aebe8 file=? name=FUN_004aebe8 */ + +void __cdecl FUN_004aebe8(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0050ed10; + FUN_0041baa4(param_1 + 0x4b,2); + FUN_004af9ee(param_1 + 0x45,2); + FUN_004ac868(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004aec38 file=? name=FUN_004aec38 */ + +void __cdecl FUN_004aec38(int param_1) + +{ + FUN_0041a1a4(**(int **)(param_1 + 0xc),0x50e604); + return; +} + + + +/* @004aec54 file=? name=FUN_004aec54 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl +FUN_004aec54(int param_1,char *param_2,char *param_3,char *param_4,int param_5,int param_6, + int param_7) + +{ + char *pcVar1; + int iVar2; + undefined4 uVar3; + char *pcVar4; + char *pcVar5; + bool bVar6; + char *local_8; + + iVar2 = FUN_004ac9ec(param_1,param_2,param_3,param_4,param_5,param_6,param_7); + if (iVar2 == 0) { + uVar3 = 0; + } + else { + param_4[0x24] = -0x10; + param_4[0x25] = '\0'; + param_4[0x26] = '\0'; + param_4[0x27] = '\0'; + param_4[0x20] = -0x41; + param_4[0x21] = '\v'; + param_4[0x22] = '\0'; + param_4[0x23] = '\0'; + if (param_7 == 1) { + param_4[0xe4] = -1; + param_4[0xe5] = -1; + param_4[0xe6] = -1; + param_4[0xe7] = -1; + } + iVar2 = FUN_00404118(param_5,param_3,s_DegradationTemperature_0050eac8,(float *)(param_4 + 0xe8) + ); + if ((iVar2 == 0) && (_DAT_004aee28 == *(float *)(param_4 + 0xe8))) { + FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_DegradationTemperature__0050eadf,(char *)0x0); + uVar3 = 0; + } + else { + iVar2 = FUN_00404118(param_5,param_3,s_FailureTemperature_0050eb01,(float *)(param_4 + 0xec)); + if ((iVar2 == 0) && (_DAT_004aee28 == *(float *)(param_4 + 0xec))) { + FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_FailureTemperature__0050eb14,(char *)0x0); + uVar3 = 0; + } + else { + local_8 = s_Unspecified_0050eb32; + iVar2 = FUN_00404088(param_5,param_3,s_WatchedSubsystem_0050eb3e,&local_8); + if ((iVar2 == 0) && (*(int *)(param_4 + 0xe4) == -1)) { + FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_WatchedSubsystem__0050eb4f,(char *)0x0); + uVar3 = 0; + } + else { + pcVar5 = s_Unspecified_0050eb6b; + pcVar4 = local_8; + do { + bVar6 = *pcVar4 == *pcVar5; + if (!bVar6) break; + if (*pcVar4 == '\0') goto LAB_004aede2; + pcVar1 = pcVar4 + 1; + bVar6 = *pcVar1 == pcVar5[1]; + if (!bVar6) break; + pcVar4 = pcVar4 + 2; + pcVar5 = pcVar5 + 2; + bVar6 = *pcVar1 == '\0'; + } while (!bVar6); + if (!bVar6) { + iVar2 = FUN_004215b0(param_5,local_8); + *(int *)(param_4 + 0xe4) = iVar2; + } +LAB_004aede2: + if (*(int *)(param_4 + 0xe4) < 0) { + FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_has_an_invalid_watched_subsystem_0050eb77, + (char *)0x0); + uVar3 = 0; + } + else { + *(int *)(param_4 + 0xe4) = *(int *)(param_4 + 0xe4) + 2; + uVar3 = 1; + } + } + } + } + } + return uVar3; +} + + + +/* @004aee70 file=? name=FUN_004aee70 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004aee70(int param_1,int param_2) + +{ + bool bVar1; + undefined3 extraout_var; + + bVar1 = FUN_004ac9c8(param_1); + if (CONCAT31(extraout_var,bVar1) == 0) { + if (*(int *)(param_2 + 0xc) < 1) { + FUN_0041bbd8(param_1 + 0x1d0,0); + } + else { + if ((*(int *)(param_1 + 0x1e4) != 1) && (_DAT_004aeedc < *(float *)(param_1 + 300))) { + FUN_0041bbd8(param_1 + 0x1d0,1); + } + *(undefined4 *)(param_1 + 0x228) = 0; + } + *(ushort *)(param_1 + 0x18) = *(ushort *)(param_1 + 0x18) | 1; + } + return; +} + + + +/* @004aeef8 file=? name=FUN_004aeef8 */ + +void __cdecl FUN_004aeef8(int param_1,int param_2) + +{ + FUN_0041bd34(param_1,param_2); + if (*(int *)(param_2 + 0x10) == 0) { + FUN_0041bbd8(param_1 + 0x1d0,0); + } + else { + FUN_0041bbd8(param_1 + 0x1d0,1); + } + return; +} + + + +/* @004aef40 file=? name=FUN_004aef40 */ + +void __cdecl FUN_004aef40(int param_1,undefined4 *param_2,undefined2 param_3) + +{ + FUN_0041c500(param_1,param_2,param_3); + *param_2 = 0x14; + param_2[4] = (uint)(*(int *)(param_1 + 0x1e4) == 1); + return; +} + + + +/* @004aef78 file=? name=FUN_004aef78 */ + +void __cdecl FUN_004aef78(int param_1,float param_2) + +{ + if (*(int *)(param_1 + 0x1e4) == 1) { + *(float *)(param_1 + 0x228) = param_2 + *(float *)(param_1 + 0x228); + FUN_004aefa4(param_1,param_2); + } + return; +} + + + +/* @004aefa4 file=? name=FUN_004aefa4 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004aefa4(int param_1,float param_2) + +{ + float fVar1; + int iVar2; + int iVar3; + float10 fVar4; + int local_6c [3]; + int local_60 [3]; + int local_54 [3]; + int local_48 [3]; + int local_3c [4]; + float local_2c; + float local_28; + float local_24; + float local_20; + float local_1c; + float local_18; + float local_14; + float local_10; + float local_c; + float local_8; + + local_8 = *(float *)(param_1 + 300); + fVar4 = FUN_004dcd00((double)local_8); + if ((float10)_DAT_004af3a0 < fVar4) { + iVar3 = *(int *)(param_1 + 0xd0); + FUN_004afa65(local_3c,0); + FUN_004a4f15(local_48,iVar3 + 0x7cc); + while (iVar2 = (**(code **)(local_48[0] + 0x28))(), iVar2 != 0) { + (**(code **)(local_3c[0] + 4))(local_3c); + } + FUN_004afab0(local_54,iVar3 + 0x7bc); + while (iVar2 = (**(code **)(local_54[0] + 0x28))(), iVar2 != 0) { + (**(code **)(local_3c[0] + 4))(local_3c); + } + FUN_004a4f9e(local_60,iVar3 + 0x7ac); + while (iVar3 = (**(code **)(local_60[0] + 0x28))(), iVar3 != 0) { + (**(code **)(local_3c[0] + 4))(local_3c); + } + FUN_00417ab4(param_1 + 0x164); + (**(code **)(local_3c[0] + 4))(local_3c); + FUN_004afb58(local_6c,(int)local_3c); + while (iVar3 = (**(code **)(local_6c[0] + 0x28))(), iVar3 != 0) { + local_c = *(float *)(param_1 + 300); + fVar4 = FUN_004dcd00((double)local_c); + if (fVar4 <= (float10)_DAT_004af3a0) { + FUN_004afb96(local_6c,2); + FUN_004a4ffb(local_60,2); + FUN_004afb0d(local_54,2); + FUN_004a4f72(local_48,2); + FUN_004afa84(local_3c,2); + return; + } + if (*(float *)(iVar3 + 0x15c) != _DAT_004af3a4) { + fVar1 = -*(float *)(param_1 + 0x224) * *(float *)(iVar3 + 0x15c) * param_2; + local_14 = -*(float *)(param_1 + 300); + local_10 = local_14; + if ((local_14 <= fVar1) && (local_10 = fVar1, _DAT_004af3a4 < fVar1)) { + local_10 = _DAT_004af3a4; + } + local_24 = *(float *)(iVar3 + 300); + fVar4 = FUN_004dcd00((double)local_24); + if ((float10)_DAT_004af3a0 < fVar4) { + local_20 = local_10; + if (local_10 <= _DAT_004af3a4) { + local_20 = -local_10; + } + local_20 = local_20 / *(float *)(iVar3 + 300); + local_1c = local_10; + if (local_10 <= _DAT_004af3a4) { + local_1c = -local_10; + } + local_1c = local_1c / *(float *)(param_1 + 300); + local_18 = *(float *)(iVar3 + 0x158) * local_20 - *(float *)(param_1 + 0x158) * local_1c; + } + else { + local_20 = local_10; + if (local_10 <= _DAT_004af3a4) { + local_20 = -local_10; + } + local_20 = local_20 / *(float *)(iVar3 + 0x128); + local_1c = local_10; + if (local_10 <= _DAT_004af3a4) { + local_1c = -local_10; + } + local_1c = local_1c / *(float *)(param_1 + 300); + local_18 = *(float *)(iVar3 + 0x158) * local_20 - *(float *)(param_1 + 0x158) * local_1c; + } + *(float *)(param_1 + 300) = local_10 + *(float *)(param_1 + 300); + *(float *)(iVar3 + 300) = *(float *)(iVar3 + 300) - local_10; + if (_DAT_004af3a4 <= *(float *)(iVar3 + 300)) { + if (*(float *)(iVar3 + 300) <= *(float *)(iVar3 + 0x128)) { + fVar1 = *(float *)(iVar3 + 300); + } + else { + fVar1 = *(float *)(iVar3 + 0x128); + } + } + else { + fVar1 = (float)_DAT_004af3a8; + } + *(float *)(iVar3 + 300) = fVar1; + if (*(float *)(iVar3 + 0x154) * *(float *)(param_1 + 0x13c) < local_18) { + local_18 = *(float *)(iVar3 + 0x154) * *(float *)(param_1 + 0x13c); + } + local_2c = -local_18; + if (_DAT_004af3a4 < local_2c) { + local_2c = _DAT_004af3a4; + } + *(float *)(iVar3 + 0x1c8) = local_2c + *(float *)(iVar3 + 0x1c8); + local_28 = local_2c; + } + } + FUN_004afb96(local_6c,2); + FUN_004a4ffb(local_60,2); + FUN_004afb0d(local_54,2); + FUN_004a4f72(local_48,2); + FUN_004afa84(local_3c,2); + } + return; +} + + + +/* @004af3b0 file=? name=FUN_004af3b0 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 __cdecl FUN_004af3b0(int param_1,float param_2) + +{ + float fVar1; + + fVar1 = _DAT_004af404; + if ((_DAT_004af404 <= param_2) && (fVar1 = param_2, *(float *)(param_1 + 300) < param_2)) { + fVar1 = *(float *)(param_1 + 300); + } + *(float *)(param_1 + 300) = *(float *)(param_1 + 300) - fVar1; + return (float10)fVar1; +} + + + +/* @004af408 file=? name=FUN_004af408 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +int * __cdecl +FUN_004af408(int *param_1,int param_2,undefined4 param_3,char *param_4,undefined4 param_5) + +{ + int iVar1; + + FUN_004adda0(param_1,param_2,param_3,param_4,param_5,0,0); + *param_1 = (int)&PTR_LAB_0050ecd4; + FUN_0041b9ec(param_1 + 0x74,2); + param_1[0x8b] = 0x3f000000; + param_1[0x4a] = *(int *)(param_4 + 0xfc); + param_1[0x89] = *(int *)(param_4 + 0x100); + param_1[0x4b] = param_1[0x4a]; + param_1[0x57] = 0; + FUN_0041bbd8((int)(param_1 + 0x74),0); + param_1[0x8a] = 0; + if (((*(uint *)(param_2 + 0x28) & 0xc) == 0) && ((*(uint *)(param_2 + 0x28) & 0x100) != 0)) { + param_1[7] = (int)PTR_FUN_0050e6b4; + param_1[8] = DAT_0050e6b8; + param_1[9] = DAT_0050e6bc; + iVar1 = FUN_00417ab4((int)(param_1 + 0x59)); + (**(code **)(*(int *)(iVar1 + 0x1d8) + 4))(iVar1 + 0x1d8,param_1); + param_1[0x4a] = + (int)(float)(_DAT_004af518 * (float10)*(int *)(iVar1 + 0x1d0) * + (float10)(float)param_1[0x4a]); + param_1[0x4b] = param_1[0x4a]; + } + else { + param_1[10] = param_1[10] | 2; + } + return param_1; +} + + + +/* @004af564 file=? name=FUN_004af564 */ + +void __cdecl FUN_004af564(int param_1) + +{ + FUN_0041a1a4(**(int **)(param_1 + 0xc),0x50e650); + return; +} + + + +/* @004af580 file=? name=FUN_004af580 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl +FUN_004af580(int param_1,char *param_2,char *param_3,char *param_4,int param_5,int param_6, + int param_7) + +{ + int iVar1; + undefined4 uVar2; + + iVar1 = FUN_004ae150(param_1,param_2,param_3,param_4,param_5,param_6,param_7); + if (iVar1 == 0) { + uVar2 = 0; + } + else { + param_4[0x24] = '\x04'; + param_4[0x25] = '\x01'; + param_4[0x26] = '\0'; + param_4[0x27] = '\0'; + param_4[0x20] = -0x40; + param_4[0x21] = '\v'; + param_4[0x22] = '\0'; + param_4[0x23] = '\0'; + if (param_7 == 1) { + param_4[0xfc] = '\0'; + param_4[0xfd] = '\0'; + param_4[0xfe] = -0x80; + param_4[0xff] = -0x41; + param_4[0x100] = '\0'; + param_4[0x101] = '\0'; + param_4[0x102] = -0x80; + param_4[0x103] = -0x41; + } + iVar1 = FUN_00404118(param_5,param_3,s_CoolantCapacity_0050ebc2,(float *)(param_4 + 0xfc)); + if ((iVar1 == 0) && (_DAT_004af694 == *(float *)(param_4 + 0xfc))) { + FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_CoolantCapacity__0050ebd2,(char *)0x0); + uVar2 = 0; + } + else { + iVar1 = FUN_00404118(param_5,param_3,s_CoolantSquirtMass_0050ebed,(float *)(param_4 + 0x100)); + if ((iVar1 == 0) && (_DAT_004af694 == *(float *)(param_4 + 0x100))) { + FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_CoolantSquirtMass__0050ebff,(char *)0x0); + uVar2 = 0; + } + else { + uVar2 = 1; + } + } + } + return uVar2; +} + + + diff --git a/reference/decomp/archive_2025export/all/part_013.c b/reference/decomp/archive_2025export/all/part_013.c new file mode 100644 index 0000000..848d461 --- /dev/null +++ b/reference/decomp/archive_2025export/all/part_013.c @@ -0,0 +1,15041 @@ +/* @004af9cf file=? name=FUN_004af9cf */ + +undefined4 * __cdecl FUN_004af9cf(undefined4 *param_1,undefined4 param_2) + +{ + FUN_004179d4(param_1,param_2); + *param_1 = &PTR_FUN_0050eccc; + return param_1; +} + + + +/* @004af9ee file=? name=FUN_004af9ee */ + +void __cdecl FUN_004af9ee(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0050eccc; + FUN_004179f8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004afa1a file=? name=FUN_004afa1a */ + +undefined4 * __cdecl FUN_004afa1a(undefined4 *param_1,undefined4 param_2) + +{ + FUN_004179d4(param_1,param_2); + *param_1 = &PTR_FUN_0050ecc4; + return param_1; +} + + + +/* @004afa39 file=? name=FUN_004afa39 */ + +void __cdecl FUN_004afa39(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0050ecc4; + FUN_004179f8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004afa65 file=? name=FUN_004afa65 */ + +undefined4 * __cdecl FUN_004afa65(undefined4 *param_1,undefined4 param_2) + +{ + FUN_00417be0(param_1,param_2); + *param_1 = &PTR_FUN_0050ecbc; + return param_1; +} + + + +/* @004afa84 file=? name=FUN_004afa84 */ + +void __cdecl FUN_004afa84(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0050ecbc; + FUN_00417c0c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004afab0 file=? name=FUN_004afab0 */ + +undefined4 * __cdecl FUN_004afab0(undefined4 *param_1,int param_2) + +{ + FUN_00417d00(param_1,param_2); + *param_1 = &PTR_FUN_0050ec6c; + return param_1; +} + + + +/* @004afacf file=? name=FUN_004afacf */ + +undefined4 * __cdecl FUN_004afacf(undefined4 *param_1,int param_2) + +{ + FUN_00417d00(param_1,param_2); + *param_1 = &PTR_FUN_0050ec6c; + return param_1; +} + + + +/* @004afaee file=? name=FUN_004afaee */ + +undefined4 * __cdecl FUN_004afaee(undefined4 *param_1,int param_2) + +{ + FUN_00417d28(param_1,param_2); + *param_1 = &PTR_FUN_0050ec6c; + return param_1; +} + + + +/* @004afb0d file=? name=FUN_004afb0d */ + +void __cdecl FUN_004afb0d(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0050ec6c; + FUN_00417d54(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004afb39 file=? name=FUN_004afb39 */ + +undefined4 * __cdecl FUN_004afb39(undefined4 *param_1,int param_2) + +{ + FUN_00417d00(param_1,param_2); + *param_1 = &PTR_FUN_0050ec1c; + return param_1; +} + + + +/* @004afb58 file=? name=FUN_004afb58 */ + +undefined4 * __cdecl FUN_004afb58(undefined4 *param_1,int param_2) + +{ + FUN_00417d00(param_1,param_2); + *param_1 = &PTR_FUN_0050ec1c; + return param_1; +} + + + +/* @004afb77 file=? name=FUN_004afb77 */ + +undefined4 * __cdecl FUN_004afb77(undefined4 *param_1,int param_2) + +{ + FUN_00417d28(param_1,param_2); + *param_1 = &PTR_FUN_0050ec1c; + return param_1; +} + + + +/* @004afb96 file=? name=FUN_004afb96 */ + +void __cdecl FUN_004afb96(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0050ec1c; + FUN_00417d54(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004afbe0 file=? name=FUN_004afbe0 */ + +void __cdecl FUN_004afbe0(int *param_1,int param_2) + +{ + int iVar1; + int iVar2; + + if (0 < *(int *)(param_2 + 0xc)) { + param_1[100] = param_1[100] + 1; + if (2 < param_1[100]) { + param_1[100] = 0; + } + (**(code **)(*param_1 + 0x48))(param_1,param_1[100]); + iVar1 = *(int *)(param_1[0x34] + 0x438); + iVar2 = *(int *)(param_1[0x34] + 0x5b4); + if (param_1[100] == 0) { + *(undefined4 *)(iVar1 + 0x1f0) = 0; + *(undefined4 *)(iVar1 + 0x274) = 1; + *(undefined4 *)(iVar1 + 0x220) = *(undefined4 *)(iVar1 + 0x228); + *(undefined4 *)(iVar1 + 0x224) = *(undefined4 *)(iVar1 + 0x22c); + *(undefined4 *)(iVar2 + 0x2a0) = 1; + } + else if (param_1[100] - 1U < 2) { + *(undefined4 *)(iVar1 + 0x220) = *(undefined4 *)(iVar1 + 0x230); + *(undefined4 *)(iVar1 + 0x224) = *(undefined4 *)(iVar1 + 0x234); + } + } + return; +} + + + +/* @004afcac file=? name=FUN_004afcac */ + +void __cdecl FUN_004afcac(int *param_1,int param_2) + +{ + if (0 < *(int *)(param_2 + 0xc)) { + param_1[0x65] = param_1[0x65] + 1; + if (2 < param_1[0x65]) { + param_1[0x65] = 0; + } + (**(code **)(*param_1 + 0x4c))(param_1,param_1[0x65]); + } + return; +} + + + +/* @004afce8 file=? name=FUN_004afce8 */ + +void __cdecl FUN_004afce8(int param_1,int param_2) + +{ + if (0 < *(int *)(param_2 + 0xc)) { + FUN_004bff74(*(int *)(*(int *)(param_1 + 0xd0) + 400)); + } + return; +} + + + +/* @004afd10 file=? name=FUN_004afd10 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004afd10(int param_1) + +{ + float fVar1; + int iVar2; + int iVar3; + int iVar4; + int iVar5; + float10 fVar6; + undefined4 local_44; + undefined4 local_40; + int local_38 [3]; + undefined4 local_2c; + undefined4 local_28; + undefined4 local_24; + undefined4 local_20; + float local_1c; + float local_18; + float local_14; + float local_10; + float local_c; + float local_8; + + iVar2 = *(int *)(param_1 + 0xd0); + if (*(int *)(param_1 + 0x124) < 1) { + *(float *)(param_1 + 0x128) = + *(float *)(iVar2 + 0x34c) * *(float *)(param_1 + 0x11c) * *(float *)(iVar2 + 0x5c0); + } + else { + *(float *)(param_1 + 0x128) = -*(float *)(iVar2 + 0x34c) * *(float *)(param_1 + 0x11c); + } + local_8 = *(float *)(param_1 + 0x114) * *(float *)(param_1 + 0x114); + local_c = *(float *)(param_1 + 0x118) * *(float *)(param_1 + 0x118); + local_10 = *(float *)(param_1 + 0x120) * *(float *)(param_1 + 0x120) * *(float *)(param_1 + 0x120) + ; + if (*(float *)(param_1 + 0x114) < _DAT_004b0274) { + local_8 = -local_8; + } + if (*(float *)(param_1 + 0x118) < _DAT_004b0274) { + local_c = -local_c; + } + *(undefined4 *)(param_1 + 300) = 0; + iVar5 = *(int *)(iVar2 + 0x438); + iVar3 = *(int *)(iVar2 + 0x5b4); + iVar4 = *(int *)(param_1 + 400); + if (iVar4 == 0) { + *(float *)(param_1 + 300) = local_8; + *(float *)(iVar5 + 500) = local_c; + *(undefined4 *)(iVar5 + 0x1f0) = 0; + *(undefined4 *)(iVar3 + 0x28c) = 0; + if (*(float *)(param_1 + 300) <= _DAT_004b0274) { + fVar1 = -*(float *)(param_1 + 300); + } + else { + fVar1 = *(float *)(param_1 + 300); + } + local_14 = (*(float *)(iVar2 + 0x34c) - *(float *)(iVar2 + 0x534)) * (_DAT_004b0278 - fVar1) + + *(float *)(iVar2 + 0x534); + if (*(float *)(param_1 + 300) <= _DAT_004b0274) { + local_18 = -*(float *)(param_1 + 300); + } + else { + local_18 = *(float *)(param_1 + 300); + } + fVar6 = FUN_004dcd00((double)local_18); + if ((float10)_DAT_004b027c < fVar6) { + if (-local_14 <= *(float *)(param_1 + 0x128)) { + fVar1 = local_14; + if (*(float *)(param_1 + 0x128) <= local_14) { + fVar1 = *(float *)(param_1 + 0x128); + } + } + else { + fVar1 = -local_14; + } + *(float *)(param_1 + 0x128) = fVar1; + } + } + else if (iVar4 == 1) { + if (*(int *)(iVar5 + 0x250) == 0) { + *(float *)(iVar3 + 0x28c) = local_8; + } + else { + *(float *)(iVar5 + 0x1f0) = local_8; + } + *(float *)(iVar5 + 500) = local_c; + if (local_10 == _DAT_004b0274) { + *(undefined4 *)(param_1 + 300) = 0; + } + else { + *(float *)(param_1 + 300) = local_10; + } + if (*(float *)(param_1 + 300) <= _DAT_004b0274) { + fVar1 = -*(float *)(param_1 + 300); + } + else { + fVar1 = *(float *)(param_1 + 300); + } + local_14 = (*(float *)(iVar2 + 0x34c) - *(float *)(iVar2 + 0x534)) * (_DAT_004b0278 - fVar1) + + *(float *)(iVar2 + 0x534); + if (*(float *)(param_1 + 300) <= _DAT_004b0274) { + local_1c = -*(float *)(param_1 + 300); + } + else { + local_1c = *(float *)(param_1 + 300); + } + fVar6 = FUN_004dcd00((double)local_1c); + if ((float10)_DAT_004b027c < fVar6) { + if (-local_14 <= *(float *)(param_1 + 0x128)) { + fVar1 = local_14; + if (*(float *)(param_1 + 0x128) <= local_14) { + fVar1 = *(float *)(param_1 + 0x128); + } + } + else { + fVar1 = -local_14; + } + *(float *)(param_1 + 0x128) = fVar1; + } + } + else if (iVar4 == 2) { + if (*(int *)(iVar5 + 0x250) == 0) { + *(float *)(iVar3 + 0x28c) = local_8; + } + else { + *(float *)(iVar5 + 0x1f0) = local_8; + } + *(float *)(iVar5 + 500) = local_c; + if (local_10 == _DAT_004b0274) { + *(undefined4 *)(param_1 + 300) = 0; + } + else { + *(float *)(param_1 + 300) = local_10; + } + } + *(undefined4 *)(param_1 + 0x19c) = *(undefined4 *)(param_1 + 0x198); + if (*(int *)(param_1 + 0x134) < 1) { + if (*(int *)(param_1 + 0x138) < 1) { + if (*(int *)(param_1 + 0x13c) < 1) { + if (*(int *)(param_1 + 0x140) < 1) { + *(undefined4 *)(param_1 + 0x198) = 0; + } + else { + *(undefined4 *)(param_1 + 0x198) = 4; + } + } + else { + *(undefined4 *)(param_1 + 0x198) = 3; + } + } + else { + *(undefined4 *)(param_1 + 0x198) = 2; + } + } + else { + *(undefined4 *)(param_1 + 0x198) = 1; + } + if (*(int *)(param_1 + 0x198) != *(int *)(param_1 + 0x19c)) { + FUN_004afacf(local_38,iVar2 + 0x7bc); + switch(*(undefined4 *)(param_1 + 0x198)) { + case 0: + FUN_00408e90(&local_44,&DAT_004e0f8c); + *(undefined4 *)(iVar2 + 0x378) = 1; + while (iVar5 = (**(code **)(local_38[0] + 0x28))(), iVar5 != 0) { + *(uint *)(iVar5 + 0x3e0) = (uint)(*(int *)(iVar5 + 0x334) == 0); + } + break; + case 1: + FUN_00408e90(&local_44,&DAT_004e0f8c); + local_40 = *(undefined4 *)(iVar2 + 0x564); + *(undefined4 *)(iVar2 + 0x378) = 0; + local_20 = local_40; + while (iVar5 = (**(code **)(local_38[0] + 0x28))(), iVar5 != 0) { + *(undefined4 *)(iVar5 + 0x3e0) = 0; + } + break; + case 2: + FUN_00408e90(&local_44,&DAT_004e0f8c); + local_40 = *(undefined4 *)(iVar2 + 0x568); + *(undefined4 *)(iVar2 + 0x378) = 0; + local_24 = local_40; + while (iVar5 = (**(code **)(local_38[0] + 0x28))(), iVar5 != 0) { + *(undefined4 *)(iVar5 + 0x3e0) = 0; + } + break; + case 3: + FUN_00408e90(&local_44,&DAT_004e0f8c); + local_40 = 0x40490fdb; + local_44 = *(undefined4 *)(iVar2 + 0x570); + *(undefined4 *)(iVar2 + 0x378) = *(undefined4 *)(iVar2 + 0x410); + local_28 = local_44; + while (iVar5 = (**(code **)(local_38[0] + 0x28))(), iVar5 != 0) { + *(undefined4 *)(iVar5 + 0x3e0) = *(undefined4 *)(iVar5 + 0x334); + } + break; + case 4: + FUN_00408e90(&local_44,&DAT_004e0f8c); + local_44 = *(undefined4 *)(iVar2 + 0x56c); + *(undefined4 *)(iVar2 + 0x378) = 0; + local_2c = local_44; + while (iVar5 = (**(code **)(local_38[0] + 0x28))(), iVar5 != 0) { + *(undefined4 *)(iVar5 + 0x3e0) = 0; + } + } + FUN_00408e90((undefined4 *)(iVar2 + 0x360),&local_44); + FUN_004afb0d(local_38,2); + } + return; +} + + + +/* @004b029c file=bt/mechmppr.cpp name=FUN_004b029c */ + +void FUN_004b029c(void) + +{ + FUN_0040385c(s_ExitConfiguration_not_overridden_0050f3ac,s_d__tesla_bt_bt_MECHMPPR_CPP_0050f3cf, + 0x245); + return; +} + + + +/* @004b02b8 file=bt/mechmppr.cpp name=FUN_004b02b8 */ + +void FUN_004b02b8(void) + +{ + FUN_0040385c(s_Unhandled_mapping__0050f3eb,s_d__tesla_bt_bt_MECHMPPR_CPP_0050f3ff,0x24f); + return; +} + + + +/* @004b02d4 file=bt/mechmppr.cpp name=FUN_004b02d4 */ + +void FUN_004b02d4(void) + +{ + FUN_0040385c(s_Unhandled_mapping__0050f41b,s_d__tesla_bt_bt_MECHMPPR_CPP_0050f42f,0x25a); + return; +} + + + +/* @004b02f0 file=? name=FUN_004b02f0 */ + +undefined4 * __cdecl +FUN_004b02f0(undefined4 *param_1,undefined4 param_2,undefined4 param_3,int *param_4, + undefined4 param_5,undefined4 param_6) + +{ + int *piVar1; + int iVar2; + + param_4[3] = param_4[3] + 1; + FUN_004ac530(param_1,param_2,param_3,param_4,param_5,param_6,0,0); + *param_1 = &PTR_FUN_0050f45c; + param_1[7] = PTR_FUN_0050f120; + param_1[8] = DAT_0050f124; + param_1[9] = DAT_0050f128; + param_1[0x45] = 0; + param_1[0x46] = 0; + param_1[0x47] = 0; + param_1[0x48] = 0; + param_1[0x4a] = 0; + param_1[0x4b] = 0; + param_1[0x49] = 0; + param_1[0x4d] = 0; + param_1[0x4e] = 0; + param_1[0x4f] = 0; + param_1[0x50] = 0; + param_1[0x4c] = 0; + param_1[0x66] = 0; + param_1[0x51] = 0; + param_1[0x52] = 0; + param_1[0x53] = 0; + param_1[0x54] = 0; + param_1[0x55] = 0; + param_1[100] = 0; + param_1[0x65] = 0; + iVar2 = *(int *)(param_1[0x34] + 0x438); + *(undefined4 *)(iVar2 + 0x220) = *(undefined4 *)(iVar2 + 0x228); + *(undefined4 *)(iVar2 + 0x224) = *(undefined4 *)(iVar2 + 0x22c); + param_1[0x56] = 0; + param_1[0x61] = 0; + param_1[0x62] = 0; + param_1[0x57] = 0; + piVar1 = param_4 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(param_4,3); + } + return param_1; +} + + + +/* @004b044c file=? name=FUN_004b044c */ + +void __cdecl FUN_004b044c(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0050f45c; + if ((int *)param_1[0x62] != (int *)0x0) { + FUN_004022e8((int *)param_1[0x62]); + } + FUN_004ac868(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004b048c file=? name=FUN_004b048c */ + +void FUN_004b048c(void) + +{ + return; +} + + + +/* @004b0494 file=? name=FUN_004b0494 */ + +void FUN_004b0494(void) + +{ + return; +} + + + +/* @004b049c file=? name=FUN_004b049c */ + +void __cdecl FUN_004b049c(int param_1,int param_2) + +{ + int iVar1; + undefined4 uVar2; + + if ((*(int *)(param_1 + 0x184) != 0) && (*(int *)(param_1 + 0x15c) != 0)) { + uVar2 = 0; + iVar1 = *(int *)(param_1 + 0x15c + param_2 * 4); + if (iVar1 != 0) { + uVar2 = *(undefined4 *)(iVar1 + 0x1fc); + } + *(undefined4 *)(*(int *)(param_1 + 0x15c) + 0x284) = uVar2; + } + return; +} + + + +/* @004b04d8 file=? name=FUN_004b04d8 */ + +void __cdecl FUN_004b04d8(int param_1,int param_2) + +{ + int iVar1; + int iVar2; + int iVar3; + float local_28; + float local_24; + float local_20; + int *local_1c; + float local_18; + int local_14; + int local_10; + float local_c; + undefined4 local_8; + + if ((*(int *)(param_1 + 0x184) != 0) && (*(int *)(param_1 + 0x15c) != 0)) { + local_8 = 0; + local_c = 0.0; + local_1c = (int *)(param_1 + 0x160); + local_10 = 0; + local_14 = 1; + for (iVar3 = 1; iVar3 < *(int *)(param_1 + 0x18c); iVar3 = iVar3 + 1) { + iVar1 = *(int *)(*local_1c + 0x1fc); + FUN_00408644(&local_28,(float *)(*local_1c + 0x100), + (float *)(*(int *)(param_1 + 0x15c) + 0x100)); + local_18 = local_20 * local_20 + local_24 * local_24 + local_28 * local_28; + if (local_14 == 1) { + iVar2 = FUN_0049fb54(iVar1); + if ((iVar2 == 0) && (iVar1 != param_2)) { + local_14 = 0; + local_c = local_18; + local_10 = iVar3; + } + } + else { + iVar2 = FUN_0049fb54(iVar1); + if (((iVar2 == 0) && (iVar1 != param_2)) && (local_18 < local_c)) { + local_c = local_18; + local_10 = iVar3; + } + } + local_1c = local_1c + 1; + } + if (local_14 != 1) { + iVar3 = *(int *)(param_1 + 0x15c + local_10 * 4); + if (iVar3 != 0) { + local_8 = *(undefined4 *)(iVar3 + 0x1fc); + } + *(undefined4 *)(*(int *)(param_1 + 0x15c) + 0x284) = local_8; + } + } + return; +} + + + +/* @004b0600 file=? name=FUN_004b0600 */ + +void __cdecl FUN_004b0600(int param_1) + +{ + int iVar1; + undefined4 uVar2; + undefined4 *puVar3; + int local_10 [3]; + + if (*(int *)(param_1 + 0x184) == 0) { + *(undefined4 *)(param_1 + 0x184) = 1; + iVar1 = FUN_00403ad0(*(int *)(DAT_004efc94 + 0x24) + 0x18,s_Players_0050f44b); + *(undefined4 *)(param_1 + 0x18c) = 0; + if (iVar1 != 0) { + FUN_00421414(local_10,iVar1 + 0x10); + while( true ) { + iVar1 = (**(code **)(local_10[0] + 0x28))(local_10); + if (iVar1 == 0) break; + if ((*(byte *)(iVar1 + 0x29) & 0x40) == 0) { + *(int *)(param_1 + 0x18c) = *(int *)(param_1 + 0x18c) + 1; + } + } + FUN_00421452(local_10,2); + } + uVar2 = FUN_004022b0(*(int *)(param_1 + 0x18c) << 2); + *(undefined4 *)(param_1 + 0x188) = uVar2; + puVar3 = (undefined4 *)(param_1 + 0x15c); + for (iVar1 = 0; iVar1 <= *(int *)(param_1 + 0x18c); iVar1 = iVar1 + 1) { + *puVar3 = 0; + puVar3 = puVar3 + 1; + } + FUN_004b06cc(param_1); + FUN_004b07f0(param_1); + } + return; +} + + + +/* @004b06cc file=? name=FUN_004b06cc */ + +void __cdecl FUN_004b06cc(int param_1) + +{ + int iVar1; + int iVar2; + int iVar3; + int local_18 [3]; + int *local_c; + int local_8; + + local_8 = 1; + for (iVar1 = 0; iVar1 < *(int *)(param_1 + 0x18c); iVar1 = iVar1 + 1) { + *(undefined4 *)(*(int *)(param_1 + 0x188) + iVar1 * 4) = 0xffffffff; + } + if ((*(int *)(DAT_004efc94 + 0x6c) != 0) && + (iVar1 = *(int *)(*(int *)(DAT_004efc94 + 0x6c) + 400), iVar1 != 0)) { + *(int *)(param_1 + 0x15c) = iVar1; + **(undefined4 **)(param_1 + 0x188) = *(undefined4 *)(iVar1 + 0x1e0); + iVar2 = FUN_00403ad0(*(int *)(DAT_004efc94 + 0x24) + 0x18,s_Players_0050f453); + if (iVar2 != 0) { + FUN_00421414(local_18,iVar2 + 0x10); + iVar2 = *(int *)(param_1 + 0x158) * *(int *)(param_1 + 0x18c); + while ((0 < iVar2 && (iVar3 = (**(code **)(local_18[0] + 0x28))(local_18), iVar3 != 0))) { + iVar2 = iVar2 + 1; + } + local_c = (int *)(param_1 + 0x15c + local_8 * 4); + do { + do { + iVar2 = (**(code **)(local_18[0] + 0x28))(local_18); + if (iVar2 == 0) goto LAB_004b07d9; + } while (((*(byte *)(iVar2 + 0x29) & 0x40) != 0) || (iVar1 == iVar2)); + *local_c = iVar2; + *(undefined4 *)(*(int *)(param_1 + 0x188) + local_8 * 4) = *(undefined4 *)(iVar2 + 0x1e0); + local_c = local_c + 1; + local_8 = local_8 + 1; + } while (local_8 < *(int *)(param_1 + 0x18c)); +LAB_004b07d9: + FUN_00421452(local_18,2); + } + } + return; +} + + + +/* @004b07f0 file=? name=FUN_004b07f0 */ + +void __cdecl FUN_004b07f0(int param_1) + +{ + int *piVar1; + int iVar2; + int unaff_ESI; + int iVar3; + undefined4 local_8; + + local_8 = 0; + if (*(int *)(param_1 + 0x18c) != 1) { + if (*(int *)(param_1 + 0x18c) == **(int **)(param_1 + 0x188)) { + iVar2 = 1; + piVar1 = *(int **)(param_1 + 0x188); + while ((piVar1 = piVar1 + 1, iVar3 = unaff_ESI, iVar2 < *(int *)(param_1 + 0x18c) && + (iVar3 = iVar2, *piVar1 != 1))) { + iVar2 = iVar2 + 1; + } + } + else { + iVar2 = 1; + piVar1 = *(int **)(param_1 + 0x188); + while ((piVar1 = piVar1 + 1, iVar3 = unaff_ESI, iVar2 < *(int *)(param_1 + 0x18c) && + (iVar3 = iVar2, **(int **)(param_1 + 0x188) + 1 != *piVar1))) { + iVar2 = iVar2 + 1; + } + } + iVar2 = *(int *)(param_1 + 0x15c + iVar3 * 4); + if (iVar2 != 0) { + local_8 = *(undefined4 *)(iVar2 + 0x1fc); + } + *(undefined4 *)(*(int *)(param_1 + 0x15c) + 0x284) = local_8; + } + return; +} + + + +/* @004b0898 file=? name=FUN_004b0898 */ + +undefined4 __cdecl FUN_004b0898(int param_1,int param_2) + +{ + if (*(int *)(param_1 + 0x18c) <= param_2) { + return 0; + } + if (param_2 < 0) { + return 0; + } + return *(undefined4 *)(param_1 + 0x15c + param_2 * 4); +} + + + +/* @004b08c0 file=? name=FUN_004b08c0 */ + +void __cdecl FUN_004b08c0(int param_1) + +{ + FUN_0041a1a4(**(int **)(param_1 + 0xc),0x50ee10); + return; +} + + + +/* @004b099c file=? name=FUN_004b099c */ + +void __cdecl FUN_004b099c(int param_1,int param_2) + +{ + bool bVar1; + undefined3 extraout_var; + int iVar2; + + bVar1 = FUN_004ac9c8(param_1); + if ((CONCAT31(extraout_var,bVar1) == 0) && (0 < *(int *)(param_2 + 0xc))) { + iVar2 = FUN_004b0b18(param_1,1); + FUN_004b0dd8(param_1,iVar2); + FUN_0041bbd8(param_1 + 0x2b8,1); + } + return; +} + + + +/* @004b09e4 file=? name=FUN_004b09e4 */ + +void __cdecl FUN_004b09e4(int param_1,int param_2) + +{ + bool bVar1; + undefined3 extraout_var; + int iVar2; + + bVar1 = FUN_004ac9c8(param_1); + if ((CONCAT31(extraout_var,bVar1) == 0) && (0 < *(int *)(param_2 + 0xc))) { + iVar2 = FUN_004b0b18(param_1,2); + FUN_004b0dd8(param_1,iVar2); + FUN_0041bbd8(param_1 + 0x2b8,1); + } + return; +} + + + +/* @004b0a2c file=? name=FUN_004b0a2c */ + +void __cdecl FUN_004b0a2c(int param_1,int param_2) + +{ + bool bVar1; + undefined3 extraout_var; + int iVar2; + + bVar1 = FUN_004ac9c8(param_1); + if ((CONCAT31(extraout_var,bVar1) == 0) && (0 < *(int *)(param_2 + 0xc))) { + iVar2 = FUN_004b0b18(param_1,3); + FUN_004b0dd8(param_1,iVar2); + FUN_0041bbd8(param_1 + 0x2b8,1); + } + return; +} + + + +/* @004b0a74 file=? name=FUN_004b0a74 */ + +void __cdecl FUN_004b0a74(int param_1,int param_2) + +{ + bool bVar1; + undefined3 extraout_var; + int iVar2; + + bVar1 = FUN_004ac9c8(param_1); + if ((CONCAT31(extraout_var,bVar1) == 0) && (0 < *(int *)(param_2 + 0xc))) { + iVar2 = FUN_004b0b18(param_1,4); + FUN_004b0dd8(param_1,iVar2); + FUN_0041bbd8(param_1 + 0x2b8,1); + } + return; +} + + + +/* @004b0abc file=? name=FUN_004b0abc */ + +void __cdecl FUN_004b0abc(int param_1,int param_2) + +{ + bool bVar1; + undefined3 extraout_var; + + bVar1 = FUN_004ac9c8(param_1); + if ((CONCAT31(extraout_var,bVar1) == 0) && (0 < *(int *)(param_2 + 0xc))) { + if (*(uint *)(param_1 + 0x2cc) < 2) { + FUN_0041bbd8(param_1 + 0x2b8,2); + return; + } + if (*(uint *)(param_1 + 0x2cc) != 2) { + return; + } + FUN_004b0e30(param_1); + FUN_0041bbd8(param_1 + 0x2b8,0); + } + return; +} + + + +/* @004b0b18 file=? name=FUN_004b0b18 */ + +int __cdecl FUN_004b0b18(int param_1,int param_2) + +{ + int iVar1; + int iVar2; + int *piVar3; + + iVar2 = 0; + piVar3 = *(int **)(*(int *)(param_1 + 0xd0) + 0x128); + while( true ) { + if (*(int *)(*(int *)(param_1 + 0xd0) + 0x124) <= iVar2) { + return 0; + } + iVar1 = *piVar3; + if ((*(int *)(iVar1 + 4) == 0xbc1) && (param_2 == *(int *)(iVar1 + 0x1e0))) break; + iVar2 = iVar2 + 1; + piVar3 = piVar3 + 1; + } + return iVar1; +} + + + +/* @004b0b5c file=? name=FUN_004b0b5c */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl FUN_004b0b5c(int param_1,int param_2) + +{ + float10 fVar1; + + if (param_2 == 0) { + param_2 = FUN_00417ab4(param_1 + 0x1d0); + } + if (((param_2 != 0) && (*(int *)(param_2 + 0x210) == 2)) && + (fVar1 = FUN_004dcd00((double)(*(float *)(param_2 + 0x1dc) - _DAT_004b0bcc)), + (float10)_DAT_004b0bcc < fVar1)) { + return 1; + } + return 0; +} + + + +/* @004b0bd0 file=? name=FUN_004b0bd0 */ + +void __cdecl FUN_004b0bd0(int *param_1,float param_2) + +{ + int iVar1; + int iVar2; + int iVar3; + int iVar4; + + FUN_004ad924(param_1,param_2); + iVar1 = FUN_00417ab4((int)(param_1 + 0x74)); + if (iVar1 == 0) { + FUN_0041bbd8((int)(param_1 + 0x99),1); + } + else { + if (*(int *)(iVar1 + 0x210) == 3) { + FUN_0041bbd8((int)(param_1 + 0x99),2); + } + if ((*(int *)(iVar1 + 0x210) == 1) || (*(int *)(iVar1 + 0x210) == 4)) { + FUN_0041bbd8((int)(param_1 + 0x99),3); + } + } + iVar4 = param_1[0x9e]; + if (iVar4 == 0) { + param_1[0xc6] = (int)(param_2 + (float)param_1[0xc6]); + if ((float)param_1[0xc5] <= (float)param_1[0xc6]) { + FUN_0041bbd8((int)(param_1 + 0x99),4); + } + } + else if (iVar4 == 1) { + if (iVar1 != 0) { + FUN_0041bbd8((int)(param_1 + 0x99),0); + param_1[0xc6] = 0; + } + } + else if (((iVar4 - 2U < 2) && (iVar1 != 0)) && (*(int *)(iVar1 + 0x210) == 2)) { + FUN_0041bbd8((int)(param_1 + 0x99),0); + param_1[0xc6] = 0; + } + iVar1 = param_1[0xb3]; + if (((iVar1 != 0) && (iVar1 != 1)) && + ((iVar1 == 2 && (iVar1 = (**(code **)(*param_1 + 0x40))(param_1,0), iVar1 == 0)))) { + iVar1 = param_1[0x34]; + iVar4 = 0; + while ((iVar4 < *(int *)(iVar1 + 0x124) && + (((iVar3 = *(int *)(*(int *)(iVar1 + 0x128) + iVar4 * 4), *(int *)(iVar3 + 4) != 0xbc1 || + (iVar2 = (**(code **)(*param_1 + 0x40))(param_1,iVar3), iVar2 == 0)) || + (iVar3 = FUN_004b0dd8((int)param_1,iVar3), iVar3 == -1))))) { + iVar4 = iVar4 + 1; + } + } + return; +} + + + +/* @004b0d50 file=? name=FUN_004b0d50 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 __cdecl FUN_004b0d50(int param_1) + +{ + float fVar1; + int iVar2; + + iVar2 = FUN_00417ab4(param_1 + 0x1d0); + fVar1 = *(float *)(iVar2 + 0x114) - *(float *)(iVar2 + 0x13c); + if (fVar1 < _DAT_004b0dd0) { + fVar1 = _DAT_004b0dd0; + } + fVar1 = (*(float *)(param_1 + 0x30c) * fVar1 + _DAT_004b0dd4) * *(float *)(param_1 + 0x310); + if (fVar1 < *(float *)(param_1 + 0x310)) { + fVar1 = *(float *)(param_1 + 0x310); + } + return (float10)fVar1; +} + + + +/* @004b0dd8 file=? name=FUN_004b0dd8 */ + +int __cdecl FUN_004b0dd8(int param_1,int param_2) + +{ + int iVar1; + + if (*(int *)(param_2 + 0x1e8) < *(int *)(param_2 + 0x1e4)) { + *(int *)(param_2 + 0x1e8) = *(int *)(param_2 + 0x1e8) + 1; + iVar1 = *(int *)(param_2 + 0x1e8); + } + else { + iVar1 = -1; + } + if (-1 < iVar1) { + FUN_004b0e30(param_1); + (**(code **)(*(int *)(param_1 + 0x1d0) + 4))(param_1 + 0x1d0,param_2); + } + return iVar1; +} + + + +/* @004b0e30 file=? name=FUN_004b0e30 */ + +void __cdecl FUN_004b0e30(int param_1) + +{ + int iVar1; + + iVar1 = FUN_00417ab4(param_1 + 0x1d0); + if (iVar1 != 0) { + *(int *)(iVar1 + 0x1e8) = *(int *)(iVar1 + 0x1e8) + -1; + FUN_00417a5c(param_1 + 0x1d0); + } + FUN_0041bbd8(param_1 + 0x264,1); + return; +} + + + +/* @004b0e6c file=? name=FUN_004b0e6c */ + +void __cdecl FUN_004b0e6c(int *param_1,int param_2) + +{ + int iVar1; + + FUN_004ad760(param_1); + if (param_2 == 0) { + iVar1 = FUN_00417ab4((int)(param_1 + 0x74)); + if (iVar1 != 0) { + FUN_0041bbd8((int)(param_1 + 0x99),0); + param_1[0xc6] = 0; + } + } + else { + iVar1 = FUN_00417ab4((int)(param_1 + 0x74)); + if (iVar1 != 0) { + iVar1 = FUN_00417ab4((int)(param_1 + 0x74)); + if (*(int *)(iVar1 + 0x210) == 2) { + FUN_0041bbd8((int)(param_1 + 0x99),4); + param_1[0xc6] = param_1[0xc5]; + } + } + } + return; +} + + + +/* @004b0efc file=? name=FUN_004b0efc */ + +void __cdecl FUN_004b0efc(int *param_1,int *param_2) + +{ + int iVar1; + bool bVar2; + undefined3 extraout_var; + + FUN_004ad748(param_1,param_2); + iVar1 = *(int *)(param_1[0x34] + 400); + bVar2 = FUN_004ac9c8((int)param_1); + if (((CONCAT31(extraout_var,bVar2) == 0) && (*(int *)(iVar1 + 0x25c) != 0)) && (*param_2 == 4)) { + FUN_004b11bc((int)param_1); + } + return; +} + + + +/* @004b0f48 file=? name=FUN_004b0f48 */ + +uint __cdecl FUN_004b0f48(int *param_1) + +{ + uint uVar1; + int iVar2; + + uVar1 = FUN_004add30((int)param_1); + iVar2 = (**(code **)(*param_1 + 0x40))(param_1,0); + if (iVar2 == 0) { + uVar1 = uVar1 | 0x40; + } + return uVar1; +} + + + +/* @004b0f74 file=bt/powersub.cpp name=FUN_004b0f74 */ + +int * __cdecl +FUN_004b0f74(int *param_1,int param_2,undefined4 param_3,char *param_4,undefined4 param_5, + int param_6,int param_7) + +{ + char cVar1; + uint uVar2; + uint uVar3; + int *piVar4; + char *pcVar5; + char *pcVar6; + int *piVar7; + int local_8; + + FUN_004adda0(param_1,param_2,param_3,param_4,param_5,param_6,param_7); + *param_1 = (int)&PTR_FUN_0050f9d8; + FUN_004b1bb1(param_1 + 0x74,0); + FUN_0041b9ec(param_1 + 0x99,5); + FUN_0041b9ec(param_1 + 0xae,3); + local_8 = 0; + if (*(int *)(param_4 + 0xfc) < *(int *)(param_2 + 0x124)) { + local_8 = *(int *)(*(int *)(param_2 + 0x128) + *(int *)(param_4 + 0xfc) * 4); + } + else { + FUN_0040385c(s_Bad_voltageSourceIndex_to_connec_0050f700,s_d__tesla_bt_bt_POWERSUB_CPP_0050f72d, + 0x264); + } + if (((*(uint *)(param_2 + 0x28) & 0xc) == 0) && ((*(uint *)(param_2 + 0x28) & 0x100) != 0)) { + param_1[7] = (int)PTR_FUN_0050f5b0; + param_1[8] = DAT_0050f5b4; + param_1[9] = DAT_0050f5b8; + if (local_8 == 0) { + FUN_0040385c(s_Master_PoweredSubsystem_is_missi_0050f749, + s_d__tesla_bt_bt_POWERSUB_CPP_0050f780,0x272); + } + else { + FUN_004b0dd8((int)param_1,local_8); + } + } + else if (((*(uint *)(param_2 + 0x28) & 0xc) == 4) && (local_8 != 0)) { + FUN_004b0dd8((int)param_1,local_8); + } + param_1[0xc3] = *(int *)(param_4 + 0x100); + param_1[0xc5] = *(int *)(param_4 + 0x18c); + param_1[0xc6] = param_1[0xc5]; + FUN_0041bbd8((int)(param_1 + 0x99),4); + FUN_0041bbd8((int)(param_1 + 0xae),1); + param_1[0xc4] = 0x3f800000; + param_1[0x77] = *(int *)(param_4 + 0x104); + param_1[0x78] = *(int *)(param_4 + 0x108); + uVar2 = 0xffffffff; + pcVar5 = param_4 + 0x10c; + do { + pcVar6 = pcVar5; + if (uVar2 == 0) break; + uVar2 = uVar2 - 1; + pcVar6 = pcVar5 + 1; + cVar1 = *pcVar5; + pcVar5 = pcVar6; + } while (cVar1 != '\0'); + uVar2 = ~uVar2; + piVar4 = (int *)(pcVar6 + -uVar2); + piVar7 = param_1 + 0x79; + for (uVar3 = uVar2 >> 2; uVar3 != 0; uVar3 = uVar3 - 1) { + *piVar7 = *piVar4; + piVar4 = piVar4 + 1; + piVar7 = piVar7 + 1; + } + for (uVar2 = uVar2 & 3; uVar2 != 0; uVar2 = uVar2 - 1) { + *(char *)piVar7 = (char)*piVar4; + piVar4 = (int *)((int)piVar4 + 1); + piVar7 = (int *)((int)piVar7 + 1); + } + uVar2 = 0xffffffff; + pcVar5 = param_4 + 0x14c; + do { + pcVar6 = pcVar5; + if (uVar2 == 0) break; + uVar2 = uVar2 - 1; + pcVar6 = pcVar5 + 1; + cVar1 = *pcVar5; + pcVar5 = pcVar6; + } while (cVar1 != '\0'); + uVar2 = ~uVar2; + piVar4 = (int *)(pcVar6 + -uVar2); + piVar7 = param_1 + 0x89; + for (uVar3 = uVar2 >> 2; uVar3 != 0; uVar3 = uVar3 - 1) { + *piVar7 = *piVar4; + piVar4 = piVar4 + 1; + piVar7 = piVar7 + 1; + } + for (uVar2 = uVar2 & 3; uVar2 != 0; uVar2 = uVar2 - 1) { + *(char *)piVar7 = (char)*piVar4; + piVar4 = (int *)((int)piVar4 + 1); + piVar7 = (int *)((int)piVar7 + 1); + } + return param_1; +} + + + +/* @004b115c file=? name=FUN_004b115c */ + +void __cdecl FUN_004b115c(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0050f9d8; + FUN_0041baa4(param_1 + 0xae,2); + FUN_0041baa4(param_1 + 0x99,2); + FUN_004b1bd0(param_1 + 0x74,2); + FUN_004adfd4(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004b11bc file=? name=FUN_004b11bc */ + +void __cdecl FUN_004b11bc(int param_1) + +{ + bool bVar1; + undefined3 extraout_var; + int iVar2; + undefined3 extraout_var_00; + + bVar1 = FUN_004ac9c8(param_1); + if (CONCAT31(extraout_var,bVar1) == 0) { + iVar2 = FUN_00417ab4(param_1 + 0x1d0); + if (iVar2 != 0) { + bVar1 = FUN_004ac9c8(iVar2); + if (CONCAT31(extraout_var_00,bVar1) == 0) { + FUN_0041bbd8(iVar2 + 0x1fc,3); + *(undefined4 *)(iVar2 + 0x1f8) = 0; + } + } + } + return; +} + + + +/* @004b1208 file=? name=FUN_004b1208 */ + +void __cdecl FUN_004b1208(int param_1) + +{ + FUN_0041a1a4(**(int **)(param_1 + 0xc),0x50f4bc); + return; +} + + + +/* @004b1224 file=? name=FUN_004b1224 */ + +void __cdecl FUN_004b1224(int param_1) + +{ + FUN_004ae050(param_1); + switch(*(undefined4 *)(param_1 + 0x278)) { + case 0: + FUN_004dbb24(&DAT_00524e20,*(char **)(param_1 + 0xd4),(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s___Starting_0050f79c,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + return; + case 1: + FUN_004dbb24(&DAT_00524e20,*(char **)(param_1 + 0xd4),(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s___NoVoltage_0050f7a8,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + return; + case 2: + FUN_004dbb24(&DAT_00524e20,*(char **)(param_1 + 0xd4),(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s___Shorted_0050f7b5,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + return; + case 3: + FUN_004dbb24(&DAT_00524e20,*(char **)(param_1 + 0xd4),(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s___GeneratorOff_0050f7c0,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + return; + case 4: + FUN_004dbb24(&DAT_00524e20,*(char **)(param_1 + 0xd4),(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s___Ready_0050f7d0,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + return; + default: + FUN_004dbb24(&DAT_00524e20,*(char **)(param_1 + 0xd4),(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_Unknown_Electrical_State__0050f7d9,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + return; + } +} + + + +/* @004b13ac file=? name=FUN_004b13ac */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl +FUN_004b13ac(int param_1,char *param_2,char *param_3,char *param_4,int param_5,int param_6, + int param_7) + +{ + char *pcVar1; + char cVar2; + int iVar3; + undefined4 uVar4; + undefined3 extraout_var; + undefined3 extraout_var_00; + uint uVar5; + uint uVar6; + char *pcVar7; + char *pcVar8; + bool bVar9; + char *local_c; + char *local_8; + + iVar3 = FUN_004ae150(param_1,param_2,param_3,param_4,param_5,param_6,param_7); + if (iVar3 == 0) { + uVar4 = 0; + } + else { + param_4[0x24] = -0x70; + param_4[0x25] = '\x01'; + param_4[0x26] = '\0'; + param_4[0x27] = '\0'; + param_4[0x20] = -0x3e; + param_4[0x21] = '\v'; + param_4[0x22] = '\0'; + param_4[0x23] = '\0'; + if (param_7 == 1) { + param_4[0xfc] = -1; + param_4[0xfd] = -1; + param_4[0xfe] = -1; + param_4[0xff] = -1; + param_4[0x100] = '\0'; + param_4[0x101] = '\0'; + param_4[0x102] = -0x80; + param_4[0x103] = -0x41; + param_4[0x104] = -1; + param_4[0x105] = -1; + param_4[0x106] = -1; + param_4[0x107] = -1; + param_4[0x108] = -1; + param_4[0x109] = -1; + param_4[0x10a] = -1; + param_4[0x10b] = -1; + param_4[0x18c] = '\0'; + param_4[0x18d] = '\0'; + param_4[0x18e] = -0x80; + param_4[399] = -0x41; + iVar3 = 0; + pcVar7 = param_4 + 0x10c; + do { + *pcVar7 = '\0'; + iVar3 = iVar3 + 1; + pcVar7 = pcVar7 + 1; + } while (iVar3 < 0x40); + iVar3 = 0; + pcVar7 = param_4 + 0x14c; + do { + *pcVar7 = '\0'; + iVar3 = iVar3 + 1; + pcVar7 = pcVar7 + 1; + } while (iVar3 < 0x40); + } + local_8 = s_Unspecified_0050f7f4; + iVar3 = FUN_00404088(param_5,param_3,s_VoltageSource_0050f800,&local_8); + if ((iVar3 == 0) && (*(int *)(param_4 + 0xfc) == -1)) { + FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_missing_VoltageSource__0050f80e,(char *)0x0); + uVar4 = 0; + } + else { + pcVar8 = s_Unspecified_0050f827; + pcVar7 = local_8; + do { + bVar9 = *pcVar7 == *pcVar8; + if (!bVar9) break; + if (*pcVar7 == '\0') goto LAB_004b14db; + pcVar1 = pcVar7 + 1; + bVar9 = *pcVar1 == pcVar8[1]; + if (!bVar9) break; + pcVar7 = pcVar7 + 2; + pcVar8 = pcVar8 + 2; + bVar9 = *pcVar1 == '\0'; + } while (!bVar9); + if (!bVar9) { + iVar3 = FUN_004215b0(param_5,local_8); + *(int *)(param_4 + 0xfc) = iVar3; + } +LAB_004b14db: + if (*(int *)(param_4 + 0xfc) < 0) { + FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_has_an_invalid_voltage_source__0050f833,(char *)0x0); + uVar4 = 0; + } + else { + pcVar8 = s_Unspecified_0050f854; + pcVar7 = local_8; + do { + bVar9 = *pcVar7 == *pcVar8; + if (!bVar9) break; + if (*pcVar7 == '\0') goto LAB_004b153f; + pcVar1 = pcVar7 + 1; + bVar9 = *pcVar1 == pcVar8[1]; + if (!bVar9) break; + pcVar7 = pcVar7 + 2; + pcVar8 = pcVar8 + 2; + bVar9 = *pcVar1 == '\0'; + } while (!bVar9); + if (!bVar9) { + *(int *)(param_4 + 0xfc) = *(int *)(param_4 + 0xfc) + 2; + } +LAB_004b153f: + iVar3 = FUN_00404118(param_5,param_3,s_ThermalResistivityCoefficient_0050f860, + (float *)(param_4 + 0x100)); + if ((iVar3 == 0) && (_DAT_004b177c == *(float *)(param_4 + 0x100))) { + FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_missing_ThermalResistivityCoeffi_0050f87e,(char *)0x0); + uVar4 = 0; + } + else { + bVar9 = FUN_004040d8(param_5,param_3,s_AuxScreenPlacement_0050f8a7, + (int *)(param_4 + 0x108)); + if ((CONCAT31(extraout_var,bVar9) == 0) && (*(int *)(param_4 + 0x108) == -1)) { + param_4[0x108] = -1; + param_4[0x109] = -1; + param_4[0x10a] = -1; + param_4[0x10b] = -1; + } + bVar9 = FUN_004040d8(param_5,param_3,s_AuxScreenNumber_0050f8ba,(int *)(param_4 + 0x104)); + if ((CONCAT31(extraout_var_00,bVar9) == 0) && (*(int *)(param_4 + 0x104) == -1)) { + FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_missing_AuxScreenNumber__0050f8ca,(char *)0x0); + uVar4 = 0; + } + else { + iVar3 = FUN_00404088(param_5,param_3,s_AuxScreenLabel_0050f8e5,&local_c); + if (iVar3 == 0) { + if (param_4[0x10c] == '\0') { + FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_missing_AuxScreenLabel__0050f8f4,(char *)0x0); + return 0; + } + } + else { + uVar5 = 0xffffffff; + pcVar7 = local_c; + do { + pcVar8 = pcVar7; + if (uVar5 == 0) break; + uVar5 = uVar5 - 1; + pcVar8 = pcVar7 + 1; + cVar2 = *pcVar7; + pcVar7 = pcVar8; + } while (cVar2 != '\0'); + uVar5 = ~uVar5; + pcVar7 = pcVar8 + -uVar5; + pcVar8 = param_4 + 0x10c; + for (uVar6 = uVar5 >> 2; uVar6 != 0; uVar6 = uVar6 - 1) { + *(undefined4 *)pcVar8 = *(undefined4 *)pcVar7; + pcVar7 = pcVar7 + 4; + pcVar8 = pcVar8 + 4; + } + for (uVar5 = uVar5 & 3; uVar5 != 0; uVar5 = uVar5 - 1) { + *pcVar8 = *pcVar7; + pcVar7 = pcVar7 + 1; + pcVar8 = pcVar8 + 1; + } + param_4[0x14b] = '\0'; + } + iVar3 = FUN_00404088(param_5,param_3,s_EngScreenLabel_0050f90e,&local_c); + if (iVar3 == 0) { + if (param_4[0x14c] == '\0') { + FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_missing_EngScreenLabel__0050f91d,(char *)0x0); + return 0; + } + } + else { + uVar5 = 0xffffffff; + do { + pcVar7 = local_c; + if (uVar5 == 0) break; + uVar5 = uVar5 - 1; + pcVar7 = local_c + 1; + cVar2 = *local_c; + local_c = pcVar7; + } while (cVar2 != '\0'); + uVar5 = ~uVar5; + pcVar7 = pcVar7 + -uVar5; + pcVar8 = param_4 + 0x14c; + for (uVar6 = uVar5 >> 2; uVar6 != 0; uVar6 = uVar6 - 1) { + *(undefined4 *)pcVar8 = *(undefined4 *)pcVar7; + pcVar7 = pcVar7 + 4; + pcVar8 = pcVar8 + 4; + } + for (uVar5 = uVar5 & 3; uVar5 != 0; uVar5 = uVar5 - 1) { + *pcVar8 = *pcVar7; + pcVar7 = pcVar7 + 1; + pcVar8 = pcVar8 + 1; + } + param_4[0x18b] = '\0'; + } + iVar3 = FUN_00404118(param_5,param_3,s_StartTime_0050f937,(float *)(param_4 + 0x18c)); + if ((iVar3 == 0) && (_DAT_004b177c == *(float *)(param_4 + 0x18c))) { + FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_missing_StartTime__0050f941,(char *)0x0); + uVar4 = 0; + } + else { + uVar4 = 1; + } + } + } + } + } + } + return uVar4; +} + + + +/* @004b179c file=? name=FUN_004b179c */ + +void __cdecl FUN_004b179c(int *param_1,int *param_2) + +{ + bool bVar1; + int iVar2; + undefined3 extraout_var; + + if (*param_2 == 4) { + iVar2 = FUN_00417ab4((int)(param_1 + 0x45)); + iVar2 = FUN_00417ab4(iVar2 + 0x1d0); + if (iVar2 != 0) { + bVar1 = FUN_004ac9c8(iVar2); + if (CONCAT31(extraout_var,bVar1) == 0) { + FUN_0041bbd8(iVar2 + 0x1fc,3); + *(undefined4 *)(iVar2 + 0x1f8) = 0; + } + } + } + FUN_004aea84(param_1,param_2); + return; +} + + + +/* @004b1804 file=? name=FUN_004b1804 */ + +void __cdecl FUN_004b1804(int *param_1) + +{ + FUN_004aea9c(param_1); + return; +} + + + +/* @004b181c file=? name=FUN_004b181c */ + +void __cdecl FUN_004b181c(int param_1) + +{ + int iVar1; + int iVar2; + + FUN_004aeac4(param_1); + iVar1 = FUN_00417ab4(param_1 + 0x114); + iVar2 = FUN_00417ab4(iVar1 + 0x1d0); + FUN_0041bbd8(param_1 + 0x184,*(int *)(iVar1 + 0x278)); + if (((*(int *)(iVar1 + 0x278) == 4) && (iVar2 != 0)) && + (*(float *)(iVar2 + 0x1dc) <= *(float *)(param_1 + 0x180) * *(float *)(iVar2 + 0x1d8))) { + FUN_0041bbd8(param_1 + 0x184,1); + } + return; +} + + + +/* @004b18a4 file=? name=FUN_004b18a4 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +int * __cdecl +FUN_004b18a4(int *param_1,int param_2,undefined4 param_3,char *param_4,undefined4 param_5) + +{ + FUN_004aeb40(param_1,param_2,param_3,param_4,param_5); + *param_1 = (int)&PTR_FUN_0050f99c; + param_1[0x60] = (int)(float)(_DAT_004b1924 * (float10)*(float *)(param_4 + 0xf0)); + FUN_0041b9ec(param_1 + 0x61,5); + if (((*(uint *)(param_2 + 0x28) & 0xc) == 0) && ((*(uint *)(param_2 + 0x28) & 0x100) != 0)) { + param_1[7] = (int)PTR_FUN_0050f5fc; + param_1[8] = DAT_0050f600; + param_1[9] = DAT_0050f604; + } + return param_1; +} + + + +/* @004b1930 file=? name=FUN_004b1930 */ + +void __cdecl FUN_004b1930(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0050f99c; + FUN_0041baa4(param_1 + 0x61,2); + FUN_004aebe8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004b1970 file=? name=FUN_004b1970 */ + +void __cdecl FUN_004b1970(int param_1) + +{ + FUN_0041a1a4(**(int **)(param_1 + 0xc),0x50f5cc); + return; +} + + + +/* @004b198c file=? name=FUN_004b198c */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl +FUN_004b198c(int param_1,char *param_2,char *param_3,char *param_4,int param_5,int param_6, + int param_7) + +{ + int iVar1; + undefined4 uVar2; + + iVar1 = FUN_004aec54(param_1,param_2,param_3,param_4,param_5,param_6,param_7); + if (iVar1 == 0) { + uVar2 = 0; + } + else { + param_4[0x24] = -0xc; + param_4[0x25] = '\0'; + param_4[0x26] = '\0'; + param_4[0x27] = '\0'; + param_4[0x20] = -0x2b; + param_4[0x21] = '\v'; + param_4[0x22] = '\0'; + param_4[0x23] = '\0'; + if (param_7 == 1) { + param_4[0xf0] = '\0'; + param_4[0xf1] = '\0'; + param_4[0xf2] = -0x80; + param_4[0xf3] = -0x41; + } + iVar1 = FUN_00404118(param_5,param_3,s_MinVoltagePercent_0050f963,(float *)(param_4 + 0xf0)); + if ((iVar1 == 0) && (_DAT_004b1a3c == *(float *)(param_4 + 0xf0))) { + FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_missing_MinVoltagePercent__0050f975,(char *)0x0); + uVar2 = 0; + } + else { + uVar2 = 1; + } + } + return uVar2; +} + + + +/* @004b1bb1 file=? name=FUN_004b1bb1 */ + +undefined4 * __cdecl FUN_004b1bb1(undefined4 *param_1,undefined4 param_2) + +{ + FUN_004179d4(param_1,param_2); + *param_1 = &PTR_FUN_0050f994; + return param_1; +} + + + +/* @004b1bd0 file=? name=FUN_004b1bd0 */ + +void __cdecl FUN_004b1bd0(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0050f994; + FUN_004179f8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004b1bfc file=? name=FUN_004b1bfc */ + +void __cdecl FUN_004b1bfc(int *param_1,int *param_2) + +{ + FUN_004b0efc(param_1,param_2); + return; +} + + + +/* @004b1c18 file=? name=FUN_004b1c18 */ + +void __cdecl FUN_004b1c18(int *param_1,int param_2) + +{ + if (param_2 != 0) { + param_1[199] = 0x3f800000; + param_1[200] = 0; + param_1[0xc9] = 0; + } + FUN_004b0e6c(param_1,param_2); + return; +} + + + +/* @004b1c4c file=? name=FUN_004b1c4c */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004b1c4c(int *param_1,float param_2) + +{ + int iVar1; + + FUN_004b0bd0(param_1,param_2); + param_1[199] = (int)(_DAT_004b1d10 - *(float *)(param_1[0x38] + 0x158)); + if (param_1[0x10] == 1) { + param_1[199] = 0; + param_1[200] = 0; + } + else { + param_1[200] = 1; + } + if (param_1[0x9e] == 4) { + param_1[0xc9] = 0; + } + else { + param_1[0xc9] = 1; + param_1[199] = 0; + } + iVar1 = param_1[0x61]; + if (iVar1 == 0) { + param_1[200] = 1; + } + else { + if (iVar1 == 1) { + param_1[199] = (int)((float)param_1[199] * _DAT_004b1d14); + param_1[200] = 1; + return; + } + if (iVar1 == 2) { + param_1[199] = 0; + param_1[200] = 0; + return; + } + } + return; +} + + + +/* @004b1d18 file=? name=FUN_004b1d18 */ + +int * __cdecl FUN_004b1d18(int *param_1,int param_2,undefined4 param_3,char *param_4) + +{ + FUN_004b0f74(param_1,param_2,param_3,param_4,&DAT_0050fa1c,0,0); + *param_1 = (int)&PTR_FUN_0050fb0c; + param_1[199] = 0x3f800000; + param_1[200] = 0; + param_1[0xc9] = 0; + param_1[10] = param_1[10] | 8; + if ((*(uint *)(param_2 + 0x28) & 0xc) != 4) { + param_1[7] = (int)PTR_FUN_0050fa94; + param_1[8] = DAT_0050fa98; + param_1[9] = DAT_0050fa9c; + } + return param_1; +} + + + +/* @004b1d90 file=? name=FUN_004b1d90 */ + +void __cdecl FUN_004b1d90(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0050fb0c; + *(undefined4 *)(param_1[0x34] + 0x374) = 0; + FUN_004b115c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004b1dcc file=? name=FUN_004b1dcc */ + +bool __cdecl +FUN_004b1dcc(int param_1,char *param_2,char *param_3,char *param_4,int param_5,int param_6, + int param_7) + +{ + int iVar1; + + iVar1 = FUN_004b13ac(param_1,param_2,param_3,param_4,param_5,param_6,param_7); + if (iVar1 != 0) { + param_4[0x24] = -0x70; + param_4[0x25] = '\x01'; + param_4[0x26] = '\0'; + param_4[0x27] = '\0'; + param_4[0x20] = -0x3d; + param_4[0x21] = '\v'; + param_4[0x22] = '\0'; + param_4[0x23] = '\0'; + } + return iVar1 != 0; +} + + + +/* @004b1e18 file=? name=FUN_004b1e18 */ + +void __cdecl FUN_004b1e18(int param_1) + +{ + FUN_0041a1a4(**(int **)(param_1 + 0xc),0x50fa2c); + return; +} + + + +/* @004b1f7c file=? name=FUN_004b1f7c */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004b1f7c(int *param_1,float param_2) + +{ + float fVar1; + + FUN_004ad924(param_1,param_2); + if (param_1[0x10] == 1) { + FUN_0041bbd8((int)(param_1 + 0x7f),1); + } + if (param_1[0x61] == 2) { + FUN_0041bbd8((int)(param_1 + 0x7f),4); + } + switch(param_1[0x84]) { + case 0: + param_1[0x77] = 0; + param_1[0x7c] = (int)(param_2 + (float)param_1[0x7c]); + if ((float)param_1[0x7b] <= (float)param_1[0x7c]) { + FUN_0041bbd8((int)(param_1 + 0x7f),2); + param_1[0x77] = + (int)((_DAT_004b2154 - *(float *)(param_1[0x38] + 0x158)) * (float)param_1[0x76]); + } + break; + case 1: + param_1[0x77] = 0; + break; + case 3: + param_1[0x77] = 0; + param_1[0x7e] = (int)(param_2 + (float)param_1[0x7e]); + if ((float)param_1[0x7d] <= (float)param_1[0x7e]) { + FUN_0041bbd8((int)(param_1 + 0x7f),2); + param_1[0x77] = + (int)((_DAT_004b2154 - *(float *)(param_1[0x38] + 0x158)) * (float)param_1[0x76]); + } + break; + case 4: + param_1[0x77] = 0; + if (param_1[0x61] == 0) { + if (param_1[0x75] == 0) { + FUN_0041bbd8((int)(param_1 + 0x7f),1); + } + else { + param_1[0x7c] = 0; + FUN_0041bbd8((int)(param_1 + 0x7f),0); + } + } + } + param_1[0x74] = (int)((float)param_1[0x77] / (float)param_1[0x76]); + fVar1 = _DAT_004b2158; + if ((_DAT_004b2158 <= (float)param_1[0x74]) && + (fVar1 = _DAT_004b2154, (float)param_1[0x74] <= _DAT_004b2154)) { + fVar1 = (float)param_1[0x74]; + } + param_1[0x74] = (int)fVar1; + return; +} + + + +/* @004b21d0 file=? name=FUN_004b21d0 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004b21d0(int *param_1,int *param_2) + +{ + bool bVar1; + undefined3 extraout_var; + + FUN_004ad748(param_1,param_2); + if (*(int *)(*(int *)(param_1[0x34] + 400) + 0x274) != 0) { + if (*param_2 == 4) { + if ((param_1[0x10] == 2) || (param_1[0x10] == 0)) { + bVar1 = FUN_004ac9c8((int)param_1); + if (CONCAT31(extraout_var,bVar1) == 0) { + FUN_0041bbd8((int)(param_1 + 0x7f),3); + param_1[0x7e] = 0; + } + } + } + else { + param_1[0x77] = + (int)((_DAT_004b2258 - *(float *)(param_1[0x38] + 0x158)) * (float)param_1[0x76]); + } + } + return; +} + + + +/* @004b225c file=? name=FUN_004b225c */ + +int * __cdecl FUN_004b225c(int *param_1,int param_2,undefined4 param_3,char *param_4) + +{ + char *pcVar1; + int iVar2; + + FUN_004adda0(param_1,param_2,param_3,param_4,&DAT_0050fb50,0,0); + *param_1 = (int)&PTR_FUN_0050fd74; + FUN_0041b9ec(param_1 + 0x7f,5); + if (((*(uint *)(param_2 + 0x28) & 0xc) == 0) && ((*(uint *)(param_2 + 0x28) & 0x100) != 0)) { + param_1[7] = (int)PTR_FUN_0050fc14; + param_1[8] = DAT_0050fc18; + param_1[9] = DAT_0050fc1c; + } + param_1[0x76] = *(int *)(param_4 + 0xfc); + param_1[0x77] = param_1[0x76]; + param_1[0x79] = *(int *)(param_4 + 0x100); + param_1[0x7a] = 0; + param_1[0x77] = param_1[0x76]; + param_1[0x74] = 0x3f800000; + param_1[0x7b] = *(int *)(param_4 + 0x104); + param_1[0x7c] = param_1[0x7b]; + FUN_0041bbd8((int)(param_1 + 0x7f),2); + param_1[0x75] = 1; + param_1[0x7d] = *(int *)(param_4 + 0x108); + param_1[0x7e] = param_1[0x7d]; + param_1[10] = param_1[10] | 8; + pcVar1 = (char *)param_1[0x35]; + iVar2 = FUN_004d4a78(pcVar1); + param_1[0x78] = pcVar1[iVar2 + -1] + -0x40; + return param_1; +} + + + +/* @004b237c file=? name=FUN_004b237c */ + +void __cdecl FUN_004b237c(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0050fd74; + FUN_0041baa4(param_1 + 0x7f,2); + FUN_004adfd4(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004b23bc file=? name=FUN_004b23bc */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl +FUN_004b23bc(int param_1,char *param_2,char *param_3,char *param_4,int param_5,int param_6, + int param_7) + +{ + bool bVar1; + int iVar2; + undefined4 uVar3; + undefined3 extraout_var; + + iVar2 = FUN_004ae150(param_1,param_2,param_3,param_4,param_5,param_6,param_7); + if (iVar2 == 0) { + uVar3 = 0; + } + else { + param_4[0x24] = '\f'; + param_4[0x25] = '\x01'; + param_4[0x26] = '\0'; + param_4[0x27] = '\0'; + param_4[0x20] = -0x3f; + param_4[0x21] = '\v'; + param_4[0x22] = '\0'; + param_4[0x23] = '\0'; + if (param_7 == 1) { + param_4[0xfc] = '\0'; + param_4[0xfd] = '\0'; + param_4[0xfe] = -0x80; + param_4[0xff] = -0x41; + param_4[0x104] = '\0'; + param_4[0x105] = '\0'; + param_4[0x106] = -0x80; + param_4[0x107] = -0x41; + param_4[0x108] = '\0'; + param_4[0x109] = '\0'; + param_4[0x10a] = -0x80; + param_4[0x10b] = -0x41; + } + iVar2 = FUN_00404118(param_5,param_3,s_RatedVoltage_0050fcde,(float *)(param_4 + 0xfc)); + if ((iVar2 == 0) && (_DAT_004b2580 == *(float *)(param_4 + 0xfc))) { + FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_RatedVoltage__0050fceb,(char *)0x0); + uVar3 = 0; + } + else { + bVar1 = FUN_004040d8(param_5,param_3,s_MaxTapCount_0050fd03,(int *)(param_4 + 0x100)); + if ((CONCAT31(extraout_var,bVar1) == 0) && (*(int *)(param_4 + 0x100) == -1)) { + FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_MaxTapCount__0050fd0f,(char *)0x0); + uVar3 = 0; + } + else { + iVar2 = FUN_00404118(param_5,param_3,s_StartTime_0050fd26,(float *)(param_4 + 0x104)); + if ((iVar2 == 0) && (_DAT_004b2580 == *(float *)(param_4 + 0x104))) { + FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_StartTime__0050fd30,(char *)0x0); + uVar3 = 0; + } + else { + iVar2 = FUN_00404118(param_5,param_3,s_ShortRecoveryTime_0050fd45, + (float *)(param_4 + 0x108)); + if ((iVar2 == 0) && (_DAT_004b2580 == *(float *)(param_4 + 0x108))) { + FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_ShortRecoveryTime__0050fd57,(char *)0x0); + uVar3 = 0; + } + else { + uVar3 = 1; + } + } + } + } + } + return uVar3; +} + + + +/* @004b2660 file=? name=FUN_004b2660 */ + +void __cdecl FUN_004b2660(int *param_1,int *param_2) + +{ + FUN_004b179c(param_1,param_2); + return; +} + + + +/* @004b2678 file=? name=FUN_004b2678 */ + +void __cdecl FUN_004b2678(int *param_1,int param_2) + +{ + if (param_2 != 0) { + param_1[0xef] = 0; + param_1[0xf0] = 0; + param_1[0xea] = 0; + param_1[0xf1] = 0; + FUN_00408440(param_1 + 0x77,&DAT_004e0f74); + FUN_00408440(param_1 + 0x8c,&DAT_004e0f74); + FUN_00408440(param_1 + 0x8f,&DAT_004e0f74); + FUN_00408440(param_1 + 0x92,&DAT_004e0f74); + FUN_00408e90(param_1 + 0xad,&DAT_004e0f8c); + FUN_00408440(param_1 + 0xc2,&DAT_004e0f74); + FUN_00408440(param_1 + 0xc5,&DAT_004e0f74); + FUN_00408440(param_1 + 200,&DAT_004e0f74); + } + FUN_004b1804(param_1); + return; +} + + + +/* @004b275c file=? name=FUN_004b275c */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004b275c(int param_1,float param_2) + +{ + float fVar1; + undefined4 uVar2; + undefined4 local_c; + undefined4 local_8; + + FUN_004b181c(param_1); + if (((*(int *)(param_1 + 0x40) == 1) || (*(int *)(param_1 + 0x198) != 4)) || + (*(int *)(param_1 + 0x140) == 2)) { + local_8 = *(float *)(param_1 + 0x3a4) * param_2; + if (*(float *)(param_1 + 0x3b0) + *(float *)(param_1 + 0x3a8) < *(float *)(param_1 + 0x3bc)) { + local_8 = -local_8; + } + *(float *)(param_1 + 0x3bc) = local_8 + *(float *)(param_1 + 0x3bc); + if (local_8 <= _DAT_004b297c) { + if (local_8 < _DAT_004b297c) { + if (*(float *)(param_1 + 0x3b0) + *(float *)(param_1 + 0x3a8) <= *(float *)(param_1 + 0x3bc) + ) { + fVar1 = *(float *)(param_1 + 0x3bc); + } + else { + fVar1 = *(float *)(param_1 + 0x3b0) + *(float *)(param_1 + 0x3a8); + } + *(float *)(param_1 + 0x3bc) = fVar1; + } + } + else { + if (*(float *)(param_1 + 0x3bc) <= *(float *)(param_1 + 0x3b0) + *(float *)(param_1 + 0x3a8)) + { + fVar1 = *(float *)(param_1 + 0x3bc); + } + else { + fVar1 = *(float *)(param_1 + 0x3b0) + *(float *)(param_1 + 0x3a8); + } + *(float *)(param_1 + 0x3bc) = fVar1; + } + } + else { + local_c = *(float *)(param_1 + 0x3a4) * param_2; + if (*(float *)(param_1 + 0x3ac) + *(float *)(param_1 + 0x3a8) < *(float *)(param_1 + 0x3bc)) { + local_c = -local_c; + } + *(float *)(param_1 + 0x3bc) = local_c + *(float *)(param_1 + 0x3bc); + if (local_c <= _DAT_004b297c) { + if (local_c < _DAT_004b297c) { + if (*(float *)(param_1 + 0x3ac) + *(float *)(param_1 + 0x3a8) <= *(float *)(param_1 + 0x3bc) + ) { + fVar1 = *(float *)(param_1 + 0x3bc); + } + else { + fVar1 = *(float *)(param_1 + 0x3ac) + *(float *)(param_1 + 0x3a8); + } + *(float *)(param_1 + 0x3bc) = fVar1; + } + } + else { + if (*(float *)(param_1 + 0x3bc) <= *(float *)(param_1 + 0x3ac) + *(float *)(param_1 + 0x3a8)) + { + fVar1 = *(float *)(param_1 + 0x3bc); + } + else { + fVar1 = *(float *)(param_1 + 0x3ac) + *(float *)(param_1 + 0x3a8); + } + *(float *)(param_1 + 0x3bc) = fVar1; + } + } + if (*(float *)(param_1 + 0x3bc) <= *(float *)(param_1 + 0x39c)) { + uVar2 = *(undefined4 *)(param_1 + 0x3bc); + } + else { + uVar2 = *(undefined4 *)(param_1 + 0x39c); + } + *(undefined4 *)(param_1 + 0x3bc) = uVar2; + if (*(float *)(param_1 + 0x3a0) <= *(float *)(param_1 + 0x3bc)) { + uVar2 = *(undefined4 *)(param_1 + 0x3bc); + } + else { + uVar2 = *(undefined4 *)(param_1 + 0x3a0); + } + *(undefined4 *)(param_1 + 0x3bc) = uVar2; + FUN_004b2ec0(param_1,param_2); + FUN_004b30ec(param_1,param_2); + return; +} + + + +/* @004b2d8c file=? name=FUN_004b2d8c */ + +void __cdecl FUN_004b2d8c(int param_1,float param_2,float param_3,float param_4,float param_5) + +{ + param_2 = -param_2; + param_3 = -param_3; + param_4 = -param_4; + param_5 = *(float *)(param_1 + 0x1d8) * param_5; + FUN_004086ac(¶m_2,¶m_2,param_5); + FUN_004085ec((float *)(param_1 + 0x230),¶m_2,(float *)(param_1 + 0x230)); + return; +} + + + +/* @004b2de4 file=? name=FUN_004b2de4 */ + +void __cdecl FUN_004b2de4(int param_1,float param_2,float param_3,float param_4,float param_5) + +{ + param_2 = -param_2; + param_3 = -param_3; + param_4 = -param_4; + param_5 = *(float *)(param_1 + 0x1d8) * param_5; + FUN_004086ac(¶m_2,¶m_2,param_5); + FUN_004085ec((float *)(param_1 + 0x308),¶m_2,(float *)(param_1 + 0x308)); + *(undefined4 *)(param_1 + 0x30c) = 0; + *(float *)(param_1 + 0x308) = -*(float *)(param_1 + 0x308); + return; +} + + + +/* @004b2e50 file=? name=FUN_004b2e50 */ + +void __cdecl +FUN_004b2e50(int param_1,float param_2,undefined4 param_3,undefined4 param_4,float param_5) + +{ + param_3 = 0; + param_4 = 0; + param_5 = *(float *)(param_1 + 0x1d8) * param_5; + FUN_004086ac(¶m_2,¶m_2,param_5); + FUN_004085ec((float *)(param_1 + 0x308),¶m_2,(float *)(param_1 + 0x308)); + *(undefined4 *)(param_1 + 0x30c) = *(undefined4 *)(param_1 + 0x308); + return; +} + + + +/* @004b2eac file=? name=FUN_004b2eac */ + +void __cdecl FUN_004b2eac(int param_1) + +{ + FUN_004b33e0(param_1); + return; +} + + + +/* @004b2ec0 file=? name=FUN_004b2ec0 */ + +void __cdecl FUN_004b2ec0(int param_1,float param_2) + +{ + float *pfVar1; + float *pfVar2; + undefined4 uVar3; + float local_7c [12]; + float local_4c [3]; + float local_40 [3]; + float local_34 [3]; + float local_28 [3]; + float local_1c [3]; + float local_10 [3]; + + FUN_00408644(local_10,(float *)(param_1 + 0x1dc),(float *)(param_1 + 0x224)); + FUN_00408644(local_1c,(float *)(param_1 + 0x1dc),(float *)(param_1 + 0x218)); + FUN_004086d0(local_28,(float *)(param_1 + 0x1e8),local_10); + FUN_004086d0(local_34,(float *)(param_1 + 0x1e8),local_1c); + pfVar1 = (float *)(param_1 + 0x230); + FUN_004085ec(pfVar1,pfVar1,local_28); + FUN_004085ec(pfVar1,pfVar1,local_34); + FUN_00408440((undefined4 *)(param_1 + 0x248),pfVar1); + FUN_004086ac(local_40,(float *)(param_1 + 0x248),param_2); + pfVar2 = (float *)(param_1 + 0x23c); + FUN_004085ec(pfVar2,pfVar2,local_40); + FUN_004086d0(pfVar1,(float *)(param_1 + 500),pfVar2); + FUN_00408440((undefined4 *)(param_1 + 0x248),pfVar1); + FUN_004086ac(local_40,(float *)(param_1 + 0x248),param_2); + FUN_004085ec(pfVar2,pfVar2,local_40); + FUN_0040aadc(local_7c); + FUN_00408744(local_4c,pfVar2,local_7c); + FUN_004085ec((float *)(param_1 + 0x1dc),(float *)(param_1 + 0x1dc),local_4c); + if (*(float *)(param_1 + 0x1dc) <= *(float *)(param_1 + 0x200)) { + uVar3 = *(undefined4 *)(param_1 + 0x1dc); + } + else { + uVar3 = *(undefined4 *)(param_1 + 0x200); + } + *(undefined4 *)(param_1 + 0x1dc) = uVar3; + if (*(float *)(param_1 + 0x1e0) <= *(float *)(param_1 + 0x204)) { + uVar3 = *(undefined4 *)(param_1 + 0x1e0); + } + else { + uVar3 = *(undefined4 *)(param_1 + 0x204); + } + *(undefined4 *)(param_1 + 0x1e0) = uVar3; + if (*(float *)(param_1 + 0x1e4) <= *(float *)(param_1 + 0x208)) { + uVar3 = *(undefined4 *)(param_1 + 0x1e4); + } + else { + uVar3 = *(undefined4 *)(param_1 + 0x208); + } + *(undefined4 *)(param_1 + 0x1e4) = uVar3; + if (*(float *)(param_1 + 0x20c) <= *(float *)(param_1 + 0x1dc)) { + uVar3 = *(undefined4 *)(param_1 + 0x1dc); + } + else { + uVar3 = *(undefined4 *)(param_1 + 0x20c); + } + *(undefined4 *)(param_1 + 0x1dc) = uVar3; + if (*(float *)(param_1 + 0x210) <= *(float *)(param_1 + 0x1e0)) { + uVar3 = *(undefined4 *)(param_1 + 0x1e0); + } + else { + uVar3 = *(undefined4 *)(param_1 + 0x210); + } + *(undefined4 *)(param_1 + 0x1e0) = uVar3; + if (*(float *)(param_1 + 0x214) <= *(float *)(param_1 + 0x1e4)) { + uVar3 = *(undefined4 *)(param_1 + 0x1e4); + } + else { + uVar3 = *(undefined4 *)(param_1 + 0x214); + } + *(undefined4 *)(param_1 + 0x1e4) = uVar3; + return; +} + + + +/* @004b30ec file=? name=FUN_004b30ec */ + +void __cdecl FUN_004b30ec(int param_1,float param_2) + +{ + float *pfVar1; + float *pfVar2; + undefined4 *puVar3; + float local_ac [12]; + float local_7c; + float local_78; + float local_74; + float local_70 [3]; + float local_64; + float local_60; + float local_5c; + float local_58; + float local_54; + float local_50; + float local_4c; + float local_48; + float local_44; + float local_40; + float local_3c; + float local_38; + float local_1c; + float local_18; + float local_14; + float local_10; + float local_c; + float local_8; + + local_40 = *(float *)(param_1 + 0x2b4) - *(float *)(param_1 + 0x2fc); + local_3c = *(float *)(param_1 + 0x2b8) - *(float *)(param_1 + 0x300); + local_38 = *(float *)(param_1 + 700) - *(float *)(param_1 + 0x304); + local_4c = *(float *)(param_1 + 0x2b4) - *(float *)(param_1 + 0x2f0); + local_48 = *(float *)(param_1 + 0x2b8) - *(float *)(param_1 + 0x2f4); + local_44 = *(float *)(param_1 + 700) - *(float *)(param_1 + 0x2f8); + local_58 = *(float *)(param_1 + 0x2c0) * local_38; + local_54 = *(float *)(param_1 + 0x2c4) * local_3c; + local_50 = *(float *)(param_1 + 0x2c8) * local_40; + local_64 = *(float *)(param_1 + 0x2c0) * local_44; + local_60 = *(float *)(param_1 + 0x2c4) * local_48; + local_5c = *(float *)(param_1 + 0x2c8) * local_4c; + local_1c = local_44; + local_18 = local_48; + local_14 = local_4c; + local_10 = local_38; + local_c = local_3c; + local_8 = local_40; + FUN_004085ec((float *)(param_1 + 0x308),(float *)(param_1 + 0x308),&local_58); + pfVar1 = (float *)(param_1 + 0x308); + FUN_004085ec(pfVar1,pfVar1,&local_64); + FUN_00408440((undefined4 *)(param_1 + 800),pfVar1); + FUN_004086ac(local_70,(float *)(param_1 + 800),param_2); + pfVar2 = (float *)(param_1 + 0x314); + FUN_004085ec(pfVar2,pfVar2,local_70); + FUN_004086d0(pfVar1,(float *)(param_1 + 0x2cc),pfVar2); + FUN_00408440((undefined4 *)(param_1 + 800),pfVar1); + FUN_004086ac(local_70,(float *)(param_1 + 800),param_2); + FUN_004085ec(pfVar2,pfVar2,local_70); + FUN_0040aadc(local_ac); + FUN_00408744(&local_7c,pfVar2,local_ac); + *(float *)(param_1 + 0x2b4) = local_74 + *(float *)(param_1 + 0x2b4); + *(float *)(param_1 + 0x2b8) = local_78 + *(float *)(param_1 + 0x2b8); + *(float *)(param_1 + 700) = local_7c + *(float *)(param_1 + 700); + if (*(float *)(param_1 + 0x2b8) <= *(float *)(param_1 + 0x2dc)) { + puVar3 = (undefined4 *)(param_1 + 0x2b8); + } + else { + puVar3 = (undefined4 *)(param_1 + 0x2dc); + } + *(undefined4 *)(param_1 + 0x2b8) = *puVar3; + if (*(float *)(param_1 + 0x2b4) <= *(float *)(param_1 + 0x2d8)) { + puVar3 = (undefined4 *)(param_1 + 0x2b4); + } + else { + puVar3 = (undefined4 *)(param_1 + 0x2d8); + } + *(undefined4 *)(param_1 + 0x2b4) = *puVar3; + if (*(float *)(param_1 + 700) <= *(float *)(param_1 + 0x2e0)) { + puVar3 = (undefined4 *)(param_1 + 700); + } + else { + puVar3 = (undefined4 *)(param_1 + 0x2e0); + } + *(undefined4 *)(param_1 + 700) = *puVar3; + if (*(float *)(param_1 + 0x2e8) <= *(float *)(param_1 + 0x2b8)) { + puVar3 = (undefined4 *)(param_1 + 0x2b8); + } + else { + puVar3 = (undefined4 *)(param_1 + 0x2e8); + } + *(undefined4 *)(param_1 + 0x2b8) = *puVar3; + if (*(float *)(param_1 + 0x2e4) <= *(float *)(param_1 + 0x2b4)) { + puVar3 = (undefined4 *)(param_1 + 0x2b4); + } + else { + puVar3 = (undefined4 *)(param_1 + 0x2e4); + } + *(undefined4 *)(param_1 + 0x2b4) = *puVar3; + if (*(float *)(param_1 + 0x2ec) <= *(float *)(param_1 + 700)) { + puVar3 = (undefined4 *)(param_1 + 700); + } + else { + puVar3 = (undefined4 *)(param_1 + 0x2ec); + } + *(undefined4 *)(param_1 + 700) = *puVar3; + return; +} + + + +/* @004b33e0 file=? name=FUN_004b33e0 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004b33e0(int param_1) + +{ + uint uVar1; + float *pfVar2; + int iVar3; + float10 fVar4; + float local_2c [3]; + float local_20; + float local_1c; + float local_18; + float local_14; + float local_10; + float local_c; + float local_8; + + local_14 = *(float *)(param_1 + 0x3bc); + uVar1 = *(uint *)(*(int *)(param_1 + 0x3c8) + 0x10); + local_8 = local_14; + if (uVar1 < 3) { + pfVar2 = (float *)(*(int *)(*(int *)(param_1 + 0x3c8) + 0xc) + 4); + local_10 = *pfVar2; + local_1c = local_14 * local_10; + local_20 = *pfVar2; + local_18 = local_20; + local_c = local_1c; + fVar4 = FUN_004dcd00((double)(local_20 - local_1c)); + if ((float10)_DAT_004b34e8 < fVar4) { + FUN_0041d0a8(*(int *)(param_1 + 0x3c8),&local_c); + } + } + else if (uVar1 - 4 < 2) { + pfVar2 = (float *)FUN_0041cfa0(*(int *)(param_1 + 0x3c8)); + FUN_004092fc(local_2c,pfVar2,local_14); + pfVar2 = (float *)FUN_0041cfa0(*(int *)(param_1 + 0x3c8)); + iVar3 = FUN_004091f4(pfVar2,local_2c,0.0001); + if (iVar3 == 0) { + FUN_0041d020(*(int *)(param_1 + 0x3c8),local_2c); + } + } + return; +} + + + +/* @004b34ec file=? name=FUN_004b34ec */ + +void __cdecl FUN_004b34ec(int param_1) + +{ + int iVar1; + float *pfVar2; + + if (*(int *)(*(int *)(param_1 + 0x3cc) + 0x10) == 5) { + iVar1 = FUN_004084fc(*(float **)(*(int *)(param_1 + 0x3cc) + 0xc),(float *)(param_1 + 0x1dc), + 0.0001); + if (iVar1 == 0) { + FUN_0041d11c(*(int *)(param_1 + 0x3cc),(float *)(param_1 + 0x1dc)); + } + pfVar2 = (float *)FUN_0041cfa0(*(int *)(param_1 + 0x3cc)); + iVar1 = FUN_004091f4(pfVar2,(float *)(param_1 + 0x2b4),0.0001); + if (iVar1 == 0) { + FUN_0041d020(*(int *)(param_1 + 0x3cc),(float *)(param_1 + 0x2b4)); + } + } + return; +} + + + +/* @004b357c file=? name=FUN_004b357c */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +bool __cdecl FUN_004b357c(int param_1,float param_2) + +{ + float *pfVar1; + float *pfVar2; + float fVar3; + float local_74 [3]; + float local_68 [3]; + float local_5c [4]; + float local_4c; + undefined4 local_48; + float local_44; + undefined4 local_40; + float local_3c; + float local_38; + undefined4 local_34; + undefined4 local_30; + undefined4 local_2c; + undefined4 local_28; + undefined4 local_24; + undefined4 local_20; + undefined4 local_1c; + undefined4 local_18; + undefined4 local_14; + undefined4 local_10; + undefined4 local_c; + undefined4 local_8; + + local_8 = 0; + local_c = 0; + local_10 = 0; + local_5c[0] = 0.0; + local_5c[1] = 0.0; + local_5c[2] = 0.0; + local_1c = 0; + local_18 = 0; + local_14 = 0; + local_28 = 0x3f800000; + local_24 = 0; + local_20 = 0x3f800000; + local_34 = 0x40000000; + local_30 = 0; + local_2c = 0x40000000; + if (*(int *)(param_1 + 0x3c4) == 0) { + *(undefined4 *)(param_1 + 0x3c4) = 1; + *(undefined4 *)(param_1 + 0x3c0) = 0x40000000; + } + fVar3 = param_2 / *(float *)(param_1 + 0x3c0); + local_38 = fVar3; + switch(*(undefined4 *)(*(int *)(param_1 + 0x3c8) + 0x10)) { + case 0: + FUN_00408dd4(&local_40,*(undefined4 **)(*(int *)(param_1 + 0x3c8) + 0xc),(int)&local_18,fVar3); + FUN_0041d0a8(*(int *)(param_1 + 0x3c8),&local_3c); + break; + case 1: + FUN_00408dd4(&local_48,*(undefined4 **)(*(int *)(param_1 + 0x3c8) + 0xc),(int)&local_24,fVar3); + FUN_0041d0a8(*(int *)(param_1 + 0x3c8),&local_44); + break; + case 2: + FUN_00408dd4(local_5c + 3,*(undefined4 **)(*(int *)(param_1 + 0x3c8) + 0xc),(int)&local_30,fVar3 + ); + FUN_0041d0a8(*(int *)(param_1 + 0x3c8),&local_4c); + break; + case 4: + pfVar2 = local_5c; + pfVar1 = (float *)FUN_0041cfa0(*(int *)(param_1 + 0x3c8)); + FUN_00409390(local_74,pfVar1,pfVar2,fVar3); + FUN_0041d020(*(int *)(param_1 + 0x3c8),local_74); + break; + case 5: + pfVar2 = local_5c; + pfVar1 = (float *)FUN_0041cfa0(*(int *)(param_1 + 0x3c8)); + FUN_00409390(local_68,pfVar1,pfVar2,fVar3); + FUN_0041d020(*(int *)(param_1 + 0x3c8),local_68); + } + *(float *)(param_1 + 0x3c0) = *(float *)(param_1 + 0x3c0) - param_2; + fVar3 = _DAT_004b3774; + if (*(float *)(param_1 + 0x3c0) <= _DAT_004b3774) { + *(undefined4 *)(param_1 + 0x3c4) = 0; + } + return *(float *)(param_1 + 0x3c0) <= fVar3; +} + + + +/* @004b3778 file=? name=FUN_004b3778 */ + +int * __cdecl FUN_004b3778(int *param_1,int param_2,undefined4 param_3,char *param_4) + +{ + uint *puVar1; + int iVar2; + int iVar3; + int *piVar4; + int *piVar5; + int local_15c [7]; + int local_140 [7]; + float local_124 [12]; + float local_f4 [12]; + int *local_c4; + undefined4 local_c0; + undefined4 local_bc; + int local_b8; + int local_b4; + undefined4 local_b0; + undefined4 local_ac; + char *local_a8; + uint *local_a4; + uint *local_a0; + char *local_9c; + uint *local_98; + float *local_94; + float *local_90; + float *local_8c; + float *local_88; + int *local_84; + char *local_80; + int *local_7c; + char *local_78; + int *local_74; + int *local_70; + int *local_6c; + int *local_68; + int *local_64; + int *local_60; + int *local_5c; + int *local_58; + int *local_54; + int *local_50; + int *local_4c; + int *local_48; + int *local_44; + int *local_40; + int *local_3c; + int *local_38; + int *local_34; + int *local_30; + int *local_2c; + int *local_28; + int *local_24; + int *local_20; + int *local_1c; + int *local_18; + int *local_14; + int *local_10; + int *local_c; + int *local_8; + + FUN_004b18a4(param_1,param_2,param_3,param_4,&DAT_0050fdb0); + *param_1 = (int)&PTR_FUN_00510abc; + local_8 = param_1 + 0x77; + local_c = param_1 + 0x7a; + local_10 = param_1 + 0x7d; + local_14 = param_1 + 0x80; + local_18 = param_1 + 0x83; + local_1c = param_1 + 0x86; + local_20 = param_1 + 0x89; + local_24 = param_1 + 0x8c; + local_28 = param_1 + 0x8f; + local_2c = param_1 + 0x92; + local_30 = param_1 + 0x97; + FUN_0040aadc(local_30); + local_34 = param_1 + 0xa3; + local_38 = param_1 + 0xaa; + local_3c = param_1 + 0xad; + local_40 = param_1 + 0xb0; + local_44 = param_1 + 0xb3; + local_48 = param_1 + 0xb6; + local_4c = param_1 + 0xb9; + local_50 = param_1 + 0xbc; + local_54 = param_1 + 0xbf; + local_58 = param_1 + 0xc2; + local_5c = param_1 + 0xc5; + local_60 = param_1 + 200; + local_64 = param_1 + 0xe4; + if (((*(uint *)(param_2 + 0x28) & 0xc) == 0) && ((*(byte *)(param_2 + 0x29) & 1) != 0)) { + param_1[7] = (int)PTR_FUN_0050fe08; + param_1[8] = DAT_0050fe0c; + param_1[9] = DAT_0050fe10; + } + param_1[0x76] = *(int *)(param_4 + 0xf8); + param_1[0xe8] = *(int *)(param_4 + 0x100); + param_1[0xe7] = *(int *)(param_4 + 0xfc); + param_1[0xe9] = *(int *)(param_4 + 0x104); + param_1[0xeb] = *(int *)(param_4 + 0x108); + param_1[0xec] = *(int *)(param_4 + 0x10c); + param_1[0xed] = *(int *)(param_4 + 0x110); + local_68 = param_1 + 0x7a; + param_1[0xee] = *(int *)(param_4 + 0x114); + FUN_00408440(local_68,(undefined4 *)(param_4 + 0x118)); + local_6c = param_1 + 0x7d; + FUN_00408440(local_6c,(undefined4 *)(param_4 + 0x124)); + local_70 = param_1 + 0x86; + FUN_00408440(local_70,(undefined4 *)(param_4 + 0x130)); + local_74 = param_1 + 0x89; + FUN_00408440(local_74,(undefined4 *)(param_4 + 0x13c)); + local_78 = param_4 + 0x148; + local_7c = param_1 + 0xb0; + FUN_00408440(local_7c,(undefined4 *)local_78); + local_80 = param_4 + 0x154; + local_84 = param_1 + 0xb3; + FUN_00408440(local_84,(undefined4 *)local_80); + FUN_00408e90(param_1 + 0xbc,(undefined4 *)(param_4 + 0x160)); + FUN_00408e90(param_1 + 0xbf,(undefined4 *)(param_4 + 0x16c)); + param_1[0xcb] = *(int *)(param_4 + 0x1b8); + param_1[0xcc] = *(int *)(param_4 + 0x1bc); + param_1[0xcd] = *(int *)(param_4 + 0x1c0); + param_1[0xce] = *(int *)(param_4 + 0x1c4); + param_1[0xcf] = *(int *)(param_4 + 0x1c8); + piVar4 = (int *)(param_4 + 0x1cc); + piVar5 = param_1 + 0xd0; + for (iVar3 = 4; iVar3 != 0; iVar3 = iVar3 + -1) { + *piVar5 = *piVar4; + piVar4 = piVar4 + 1; + piVar5 = piVar5 + 1; + } + piVar4 = (int *)(param_4 + 0x1dc); + piVar5 = param_1 + 0xd4; + for (iVar3 = 4; iVar3 != 0; iVar3 = iVar3 + -1) { + *piVar5 = *piVar4; + piVar4 = piVar4 + 1; + piVar5 = piVar5 + 1; + } + piVar4 = (int *)(param_4 + 0x1ec); + piVar5 = param_1 + 0xd8; + for (iVar3 = 4; iVar3 != 0; iVar3 = iVar3 + -1) { + *piVar5 = *piVar4; + piVar4 = piVar4 + 1; + piVar5 = piVar5 + 1; + } + piVar4 = (int *)(param_4 + 0x1fc); + piVar5 = param_1 + 0xdc; + for (iVar3 = 4; iVar3 != 0; iVar3 = iVar3 + -1) { + *piVar5 = *piVar4; + piVar4 = piVar4 + 1; + piVar5 = piVar5 + 1; + } + piVar4 = (int *)(param_4 + 0x20c); + piVar5 = param_1 + 0xe0; + for (iVar3 = 4; iVar3 != 0; iVar3 = iVar3 + -1) { + *piVar5 = *piVar4; + piVar4 = piVar4 + 1; + piVar5 = piVar5 + 1; + } + FUN_0040aadc(local_f4); + local_88 = (float *)(param_1 + 0x86); + local_8c = (float *)(param_1 + 0x80); + FUN_00408744(local_8c,local_88,local_f4); + FUN_0040aadc(local_124); + local_90 = (float *)(param_1 + 0x89); + local_94 = (float *)(param_1 + 0x83); + FUN_00408744(local_94,local_90,local_124); + FUN_004092fc((float *)(param_1 + 0xb6),(float *)(param_1 + 0xbc),2.0); + FUN_004092fc((float *)(param_1 + 0xb9),(float *)(param_1 + 0xbf),2.0); + local_9c = param_4 + 0x178; + local_a0 = (uint *)FUN_00402298(0x10); + if (local_a0 == (uint *)0x0) { + local_98 = (uint *)0x0; + } + else { + local_98 = FUN_00402460(local_a0,local_9c); + } + local_98[3] = local_98[3] + 1; + local_a8 = param_4 + 0x198; + puVar1 = (uint *)FUN_00402298(0x10); + if (puVar1 == (uint *)0x0) { + local_a4 = (uint *)0x0; + } + else { + local_a4 = FUN_00402460(puVar1,local_a8); + } + local_a4[3] = local_a4[3] + 1; + iVar3 = FUN_00417ab4(param_2 + 0x31c); + local_98[3] = local_98[3] + 1; + local_b4 = FUN_00424b60(param_2,(int *)local_98); + local_ac = *(undefined4 *)(local_b4 + 0xc0); + local_a4[3] = local_a4[3] + 1; + local_b8 = FUN_00424b60(param_2,(int *)local_a4); + local_b0 = *(undefined4 *)(local_b8 + 0xc0); + local_bc = local_ac; + FUN_0041d3b3(local_140,iVar3 + 0xe4); + iVar2 = (**(code **)(local_140[0] + 0x34))(local_140,local_bc); + FUN_0041d3d2(local_140,2); + param_1[0xf2] = iVar2; + local_c0 = local_b0; + FUN_0041d3b3(local_15c,iVar3 + 0xe4); + iVar3 = (**(code **)(local_15c[0] + 0x34))(local_15c,local_c0); + FUN_0041d3d2(local_15c,2); + param_1[0xf3] = iVar3; + param_1[0xe4] = 0; + param_1[0xe5] = 0x3f800000; + param_1[0xe6] = 0; + param_1[0xef] = 0; + param_1[0xf0] = 0; + param_1[0xf1] = 0; + param_1[0xea] = 0; + FUN_00409a00((float *)(param_1 + 0xa6),(float *)&DAT_004e0f8c); + FUN_00408440(param_1 + 0xa3,&DAT_004e0f74); + FUN_00408e90(param_1 + 0xaa,&DAT_004e0f8c); + param_1[0x95] = 0; + local_c4 = param_1 + 0xa3; + param_1[0x96] = (int)(param_1 + 0x95); + FUN_0040ab44((float *)(param_1 + 0x97),local_c4); + FUN_00408440(param_1 + 0x77,&DAT_004e0f74); + FUN_00408440(param_1 + 0x8c,&DAT_004e0f74); + FUN_00408440(param_1 + 0x8f,&DAT_004e0f74); + FUN_00408440(param_1 + 0x92,&DAT_004e0f74); + FUN_00408e90(param_1 + 0xad,&DAT_004e0f8c); + FUN_00408440(param_1 + 0xc2,&DAT_004e0f74); + FUN_00408440(param_1 + 0xc5,&DAT_004e0f74); + FUN_00408440(param_1 + 200,&DAT_004e0f74); + puVar1 = local_a4 + 3; + *puVar1 = *puVar1 - 1; + if (*puVar1 == 0) { + FUN_004024d8((int *)local_a4,3); + } + puVar1 = local_98 + 3; + *puVar1 = *puVar1 - 1; + if (*puVar1 == 0) { + FUN_004024d8((int *)local_98,3); + } + return param_1; +} + + + +/* @004b3e88 file=? name=FUN_004b3e88 */ + +void __cdecl FUN_004b3e88(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_00510abc; + FUN_004b1930(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004b3eb4 file=? name=FUN_004b3eb4 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 +FUN_004b3eb4(int param_1,char *param_2,char *param_3,char *param_4,int param_5,int param_6, + int param_7) + +{ + char *pcVar1; + char cVar2; + int iVar3; + undefined4 uVar4; + char *pcVar5; + int *piVar6; + int *piVar7; + uint uVar8; + uint uVar9; + char *pcVar10; + bool bVar11; + char *local_124; + char *local_120; + char *local_11c; + char *local_118; + char *local_114; + char *local_110; + char *local_10c; + char *local_108; + char *local_104; + char *local_100; + char *local_fc; + char *local_f8; + char *local_f4; + char *local_f0; + char *local_ec; + char *local_e8; + char *local_e4; + char *local_e0; + char *local_dc; + char *local_d8; + char *local_d4; + char *local_d0; + char *local_cc; + char *local_c8; + char *local_c4; + char *local_c0; + char *local_bc; + char *local_b8; + char *local_b4; + char *local_b0; + float local_ac; + float local_a8; + char *local_a4; + float local_a0; + float local_9c; + char *local_98; + float local_94; + float local_90; + char *local_8c; + float local_88; + float local_84; + char *local_80; + float local_7c; + float local_78; + char *local_74; + float local_70; + float local_6c; + char *local_68; + float local_64; + char *local_60; + char *local_5c; + char *local_58; + char *local_54; + char *local_50; + char *local_4c; + char *local_48; + char *local_44; + char *local_40; + char *local_3c; + char *local_38; + char *local_34; + char *local_30; + char *local_2c; + char *local_28; + char *local_24; + char *local_20; + char *local_1c; + char *local_18; + char *local_14; + char *local_10; + char *local_c; + char *local_8; + + iVar3 = FUN_004b198c(param_1,param_2,param_3,param_4,param_5,param_6,param_7); + if (iVar3 == 0) { + uVar4 = 0; + } + else { + param_4[0x24] = '\x1c'; + param_4[0x25] = '\x02'; + param_4[0x26] = '\0'; + param_4[0x27] = '\0'; + param_4[0x20] = -0x3c; + param_4[0x21] = '\v'; + param_4[0x22] = '\0'; + param_4[0x23] = '\0'; + if (param_7 == 1) { + param_4[0xf4] = '\0'; + param_4[0xf5] = '\0'; + param_4[0xf6] = -0x80; + param_4[0xf7] = -0x41; + param_4[0xf8] = '\0'; + param_4[0xf9] = '\0'; + param_4[0xfa] = -0x80; + param_4[0xfb] = -0x41; + param_4[0xfc] = '\0'; + param_4[0xfd] = '\0'; + param_4[0xfe] = -0x80; + param_4[0xff] = -0x41; + param_4[0x100] = '\0'; + param_4[0x101] = '\0'; + param_4[0x102] = -0x80; + param_4[0x103] = -0x41; + param_4[0x104] = '\0'; + param_4[0x105] = '\0'; + param_4[0x106] = -0x80; + param_4[0x107] = -0x41; + param_4[0x108] = '\0'; + param_4[0x109] = '\0'; + param_4[0x10a] = -0x80; + param_4[0x10b] = -0x41; + param_4[0x10c] = '\0'; + param_4[0x10d] = '\0'; + param_4[0x10e] = -0x80; + param_4[0x10f] = -0x41; + param_4[0x110] = '\0'; + param_4[0x111] = '\0'; + param_4[0x112] = -0x80; + param_4[0x113] = -0x41; + param_4[0x114] = '\0'; + param_4[0x115] = '\0'; + param_4[0x116] = -0x80; + param_4[0x117] = -0x41; + param_4[0x118] = '\0'; + param_4[0x119] = '\0'; + param_4[0x11a] = -0x80; + param_4[0x11b] = -0x41; + param_4[0x11c] = '\0'; + param_4[0x11d] = '\0'; + param_4[0x11e] = -0x80; + param_4[0x11f] = -0x41; + param_4[0x120] = '\0'; + param_4[0x121] = '\0'; + param_4[0x122] = -0x80; + param_4[0x123] = -0x41; + param_4[0x124] = '\0'; + param_4[0x125] = '\0'; + param_4[0x126] = -0x80; + param_4[0x127] = -0x41; + param_4[0x128] = '\0'; + param_4[0x129] = '\0'; + param_4[0x12a] = -0x80; + param_4[299] = -0x41; + param_4[300] = '\0'; + param_4[0x12d] = '\0'; + param_4[0x12e] = -0x80; + param_4[0x12f] = -0x41; + param_4[0x130] = '\0'; + param_4[0x131] = '\0'; + param_4[0x132] = -0x80; + param_4[0x133] = -0x41; + param_4[0x134] = '\0'; + param_4[0x135] = '\0'; + param_4[0x136] = -0x80; + param_4[0x137] = -0x41; + param_4[0x138] = '\0'; + param_4[0x139] = '\0'; + param_4[0x13a] = -0x80; + param_4[0x13b] = -0x41; + param_4[0x13c] = '\0'; + param_4[0x13d] = '\0'; + param_4[0x13e] = -0x80; + param_4[0x13f] = -0x41; + param_4[0x140] = '\0'; + param_4[0x141] = '\0'; + param_4[0x142] = -0x80; + param_4[0x143] = -0x41; + param_4[0x144] = '\0'; + param_4[0x145] = '\0'; + param_4[0x146] = -0x80; + param_4[0x147] = -0x41; + param_4[0x148] = '\0'; + param_4[0x149] = '\0'; + param_4[0x14a] = -0x80; + param_4[0x14b] = -0x41; + param_4[0x14c] = '\0'; + param_4[0x14d] = '\0'; + param_4[0x14e] = -0x80; + param_4[0x14f] = -0x41; + param_4[0x150] = '\0'; + param_4[0x151] = '\0'; + param_4[0x152] = -0x80; + param_4[0x153] = -0x41; + param_4[0x154] = '\0'; + param_4[0x155] = '\0'; + param_4[0x156] = -0x80; + param_4[0x157] = -0x41; + param_4[0x158] = '\0'; + param_4[0x159] = '\0'; + param_4[0x15a] = -0x80; + param_4[0x15b] = -0x41; + param_4[0x15c] = '\0'; + param_4[0x15d] = '\0'; + param_4[0x15e] = -0x80; + param_4[0x15f] = -0x41; + param_4[0x160] = '\0'; + param_4[0x161] = '\0'; + param_4[0x162] = -0x80; + param_4[0x163] = -0x41; + param_4[0x164] = '\0'; + param_4[0x165] = '\0'; + param_4[0x166] = -0x80; + param_4[0x167] = -0x41; + param_4[0x168] = '\0'; + param_4[0x169] = '\0'; + param_4[0x16a] = -0x80; + param_4[0x16b] = -0x41; + param_4[0x16c] = '\0'; + param_4[0x16d] = '\0'; + param_4[0x16e] = -0x80; + param_4[0x16f] = -0x41; + param_4[0x170] = '\0'; + param_4[0x171] = '\0'; + param_4[0x172] = -0x80; + param_4[0x173] = -0x41; + param_4[0x174] = '\0'; + param_4[0x175] = '\0'; + param_4[0x176] = -0x80; + param_4[0x177] = -0x41; + param_4[0x1b8] = '\0'; + param_4[0x1b9] = '\0'; + param_4[0x1ba] = -0x80; + param_4[0x1bb] = -0x41; + param_4[0x1bc] = '\0'; + param_4[0x1bd] = '\0'; + param_4[0x1be] = -0x80; + param_4[0x1bf] = -0x41; + param_4[0x1c0] = '\0'; + param_4[0x1c1] = '\0'; + param_4[0x1c2] = -0x80; + param_4[0x1c3] = -0x41; + param_4[0x1c4] = '\0'; + param_4[0x1c5] = '\0'; + param_4[0x1c6] = -0x80; + param_4[0x1c7] = -0x41; + param_4[0x1c8] = '\0'; + param_4[0x1c9] = '\0'; + param_4[0x1ca] = -0x80; + param_4[0x1cb] = -0x41; + param_4[0x1cc] = '\0'; + param_4[0x1cd] = '\0'; + param_4[0x1ce] = -0x80; + param_4[0x1cf] = -0x41; + param_4[0x1d0] = '\0'; + param_4[0x1d1] = '\0'; + param_4[0x1d2] = -0x80; + param_4[0x1d3] = -0x41; + param_4[0x1d4] = '\0'; + param_4[0x1d5] = '\0'; + param_4[0x1d6] = -0x80; + param_4[0x1d7] = -0x41; + param_4[0x1d8] = '\0'; + param_4[0x1d9] = '\0'; + param_4[0x1da] = -0x80; + param_4[0x1db] = -0x41; + param_4[0x1dc] = '\0'; + param_4[0x1dd] = '\0'; + param_4[0x1de] = -0x80; + param_4[0x1df] = -0x41; + param_4[0x1e0] = '\0'; + param_4[0x1e1] = '\0'; + param_4[0x1e2] = -0x80; + param_4[0x1e3] = -0x41; + param_4[0x1e4] = '\0'; + param_4[0x1e5] = '\0'; + param_4[0x1e6] = -0x80; + param_4[0x1e7] = -0x41; + param_4[0x1e8] = '\0'; + param_4[0x1e9] = '\0'; + param_4[0x1ea] = -0x80; + param_4[0x1eb] = -0x41; + param_4[0x1ec] = '\0'; + param_4[0x1ed] = '\0'; + param_4[0x1ee] = -0x80; + param_4[0x1ef] = -0x41; + param_4[0x1f0] = '\0'; + param_4[0x1f1] = '\0'; + param_4[0x1f2] = -0x80; + param_4[499] = -0x41; + param_4[500] = '\0'; + param_4[0x1f5] = '\0'; + param_4[0x1f6] = -0x80; + param_4[0x1f7] = -0x41; + param_4[0x1f8] = '\0'; + param_4[0x1f9] = '\0'; + param_4[0x1fa] = -0x80; + param_4[0x1fb] = -0x41; + param_4[0x1fc] = '\0'; + param_4[0x1fd] = '\0'; + param_4[0x1fe] = -0x80; + param_4[0x1ff] = -0x41; + param_4[0x200] = '\0'; + param_4[0x201] = '\0'; + param_4[0x202] = -0x80; + param_4[0x203] = -0x41; + param_4[0x204] = '\0'; + param_4[0x205] = '\0'; + param_4[0x206] = -0x80; + param_4[0x207] = -0x41; + param_4[0x208] = '\0'; + param_4[0x209] = '\0'; + param_4[0x20a] = -0x80; + param_4[0x20b] = -0x41; + param_4[0x20c] = '\0'; + param_4[0x20d] = '\0'; + param_4[0x20e] = -0x80; + param_4[0x20f] = -0x41; + param_4[0x210] = '\0'; + param_4[0x211] = '\0'; + param_4[0x212] = -0x80; + param_4[0x213] = -0x41; + param_4[0x214] = '\0'; + param_4[0x215] = '\0'; + param_4[0x216] = -0x80; + param_4[0x217] = -0x41; + param_4[0x218] = '\0'; + param_4[0x219] = '\0'; + param_4[0x21a] = -0x80; + param_4[0x21b] = -0x41; + } + iVar3 = FUN_00404118(param_5,param_3,s_PercentageOnNormal_0050fe6b,(float *)(param_4 + 0x108)); + if ((iVar3 == 0) && (_DAT_004b5b20 == *(float *)(param_4 + 0x108))) { + FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_PercentageOnNormal__0050fe7e,(char *)0x0); + uVar4 = 0; + } + else { + iVar3 = FUN_00404118(param_5,param_3,s_PercentageOnDestruction_0050fe9c, + (float *)(param_4 + 0x10c)); + if ((iVar3 == 0) && (_DAT_004b5b20 == *(float *)(param_4 + 0x10c))) { + FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_PercentageOnDestruction__0050feb4,(char *)0x0); + uVar4 = 0; + } + else { + iVar3 = FUN_00404118(param_5,param_3,s_PercentageOnDegradation_0050fed7, + (float *)(param_4 + 0x110)); + if ((iVar3 == 0) && (_DAT_004b5b20 == *(float *)(param_4 + 0x110))) { + FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_PercentageOnDegradation__0050feef,(char *)0x0) + ; + uVar4 = 0; + } + else { + iVar3 = FUN_00404118(param_5,param_3,s_PercentageOnFailure_0050ff12, + (float *)(param_4 + 0x114)); + if ((iVar3 == 0) && (_DAT_004b5b20 == *(float *)(param_4 + 0x114))) { + local_8 = param_3; + FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_PercentageOnFailure__0050ff26,(char *)0x0); + uVar4 = 0; + } + else { + iVar3 = FUN_00404118(param_5,param_3,s_RotationPerSecond_0050ff45, + (float *)(param_4 + 0x104)); + if ((iVar3 == 0) && (_DAT_004b5b20 == *(float *)(param_4 + 0x104))) { + local_c = param_3; + FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_RotationPerSecond__0050ff57,(char *)0x0); + uVar4 = 0; + } + else { + iVar3 = FUN_00404118(param_5,param_3,s_Exageration_0050ff74,(float *)(param_4 + 0xf8)) + ; + if ((iVar3 == 0) && (_DAT_004b5b20 == *(float *)(param_4 + 0xf8))) { + local_10 = param_3; + FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_Exageration__0050ff80,(char *)0x0); + uVar4 = 0; + } + else { + iVar3 = FUN_00404118(param_5,param_3,s_MaxAnimationNoise_0050ff97, + (float *)(param_4 + 0xfc)); + if ((iVar3 == 0) && (_DAT_004b5b20 == *(float *)(param_4 + 0xfc))) { + local_14 = param_3; + FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_MaxAnimationNoise__0050ffa9, + (char *)0x0); + uVar4 = 0; + } + else { + iVar3 = FUN_00404118(param_5,param_3,s_MinAnimationNoise_0050ffc6, + (float *)(param_4 + 0x100)); + if ((iVar3 == 0) && (_DAT_004b5b20 == *(float *)(param_4 + 0x100))) { + local_18 = param_3; + FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_MinAnimationNoise__0050ffd8, + (char *)0x0); + uVar4 = 0; + } + else { + iVar3 = FUN_00404118(param_5,param_3,s_SpringConstantX_0050fff5, + (float *)(param_4 + 0x118)); + if ((iVar3 == 0) && (_DAT_004b5b20 == *(float *)(param_4 + 0x118))) { + local_1c = param_3; + FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_SpringConstantX__00510005, + (char *)0x0); + uVar4 = 0; + } + else { + iVar3 = FUN_00404118(param_5,param_3,s_SpringConstantY_00510020, + (float *)(param_4 + 0x11c)); + if ((iVar3 == 0) && (_DAT_004b5b20 == *(float *)(param_4 + 0x11c))) { + local_20 = param_3; + FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_SpringConstantY__00510030, + (char *)0x0); + uVar4 = 0; + } + else { + iVar3 = FUN_00404118(param_5,param_3,s_SpringConstantZ_0051004b, + (float *)(param_4 + 0x120)); + if ((iVar3 == 0) && (_DAT_004b5b20 == *(float *)(param_4 + 0x120))) { + local_24 = param_3; + FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_SpringConstantZ__0051005b, + (char *)0x0); + uVar4 = 0; + } + else { + iVar3 = FUN_00404118(param_5,param_3,s_DampingConstantX_00510076, + (float *)(param_4 + 0x124)); + if ((iVar3 == 0) && (_DAT_004b5b20 == *(float *)(param_4 + 0x124))) { + local_28 = param_3; + FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_DampingConstantX__00510087, + (char *)0x0); + uVar4 = 0; + } + else { + iVar3 = FUN_00404118(param_5,param_3,s_DampingConstantY_005100a3, + (float *)(param_4 + 0x128)); + if ((iVar3 == 0) && (_DAT_004b5b20 == *(float *)(param_4 + 0x128))) { + local_2c = param_3; + FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_DampingConstantY__005100b4 + ,(char *)0x0); + uVar4 = 0; + } + else { + iVar3 = FUN_00404118(param_5,param_3,s_DampingConstantZ_005100d0, + (float *)(param_4 + 300)); + if ((iVar3 == 0) && (_DAT_004b5b20 == *(float *)(param_4 + 300))) { + local_30 = param_3; + FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68, + s_missing_DampingConstantZ__005100e1,(char *)0x0); + uVar4 = 0; + } + else { + iVar3 = FUN_00404118(param_5,param_3,s_NegSpringX_005100fd, + (float *)(param_4 + 0x13c)); + if ((iVar3 == 0) && (_DAT_004b5b20 == *(float *)(param_4 + 0x13c))) + { + local_34 = param_3; + FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_NegSpringX__00510108, + (char *)0x0); + uVar4 = 0; + } + else { + iVar3 = FUN_00404118(param_5,param_3,s_NegSpringY_0051011e, + (float *)(param_4 + 0x140)); + if ((iVar3 == 0) && (_DAT_004b5b20 == *(float *)(param_4 + 0x140)) + ) { + local_38 = param_3; + FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_NegSpringY__00510129 + ,(char *)0x0); + uVar4 = 0; + } + else { + iVar3 = FUN_00404118(param_5,param_3,s_NegSpringZ_0051013f, + (float *)(param_4 + 0x144)); + if ((iVar3 == 0) && + (_DAT_004b5b20 == *(float *)(param_4 + 0x144))) { + local_3c = param_3; + FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68, + s_missing_NegSpringZ__0051014a,(char *)0x0); + uVar4 = 0; + } + else { + iVar3 = FUN_00404118(param_5,param_3,s_PosSpringX_00510160, + (float *)(param_4 + 0x130)); + if ((iVar3 == 0) && + (_DAT_004b5b20 == *(float *)(param_4 + 0x130))) { + local_40 = param_3; + FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68, + s_missing_PosSpringX__0051016b,(char *)0x0); + uVar4 = 0; + } + else { + iVar3 = FUN_00404118(param_5,param_3,s_PosSpringY_00510181, + (float *)(param_4 + 0x134)); + if ((iVar3 == 0) && + (_DAT_004b5b20 == *(float *)(param_4 + 0x134))) { + local_44 = param_3; + FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68, + s_missing_PosSpringY__0051018c,(char *)0x0); + uVar4 = 0; + } + else { + iVar3 = FUN_00404118(param_5,param_3,s_PosSpringZ_005101a2 + ,(float *)(param_4 + 0x138)); + if ((iVar3 == 0) && + (_DAT_004b5b20 == *(float *)(param_4 + 0x138))) { + local_48 = param_3; + FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68, + s_missing_PosSpringZ__005101ad,(char *)0x0) + ; + uVar4 = 0; + } + else { + iVar3 = FUN_00404118(param_5,param_3, + + s_RotationSpringConstantPitch_005101c3, + (float *)(param_4 + 0x150)); + if ((iVar3 == 0) && + (_DAT_004b5b20 == *(float *)(param_4 + 0x150))) { + local_4c = param_3; + FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0) + ; + FUN_004dbb24((int *)&DAT_00524e68, + + s_missing_RotationSpringConstantPi_005101df, + (char *)0x0); + uVar4 = 0; + } + else { + iVar3 = FUN_00404118(param_5,param_3, + + s_RotationSpringConstantYaw_00510206, + (float *)(param_4 + 0x14c)); + if ((iVar3 == 0) && + (_DAT_004b5b20 == *(float *)(param_4 + 0x14c))) { + local_50 = param_3; + FUN_004dbb24((int *)&DAT_00524e68,param_3, + (char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68, + + s_missing_RotationSpringConstantYa_00510220, + (char *)0x0); + uVar4 = 0; + } + else { + iVar3 = FUN_00404118(param_5,param_3, + + s_RotationSpringConstantRoll_00510245, + (float *)(param_4 + 0x148)); + if ((iVar3 == 0) && + (_DAT_004b5b20 == *(float *)(param_4 + 0x148))) { + local_54 = param_3; + FUN_004dbb24((int *)&DAT_00524e68,param_3, + (char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68, + + s_missing_RotationSpringConstantRo_00510260, + (char *)0x0); + uVar4 = 0; + } + else { + iVar3 = FUN_00404118(param_5,param_3, + + s_RotationDampingConstantPitch_00510286, + (float *)(param_4 + 0x15c)); + if ((iVar3 == 0) && + (_DAT_004b5b20 == *(float *)(param_4 + 0x15c))) + { + local_58 = param_3; + FUN_004dbb24((int *)&DAT_00524e68,param_3, + (char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68, + + s_missing_RotationDampingConstantP_005102a3, + (char *)0x0); + uVar4 = 0; + } + else { + iVar3 = FUN_00404118(param_5,param_3, + + s_RotationDampingConstantYaw_005102cb, + (float *)(param_4 + 0x158)); + if ((iVar3 == 0) && + (_DAT_004b5b20 == *(float *)(param_4 + 0x158))) + { + local_5c = param_3; + FUN_004dbb24((int *)&DAT_00524e68,param_3, + (char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68, + + s_missing_RotationDampingConstantY_005102e6, + (char *)0x0); + uVar4 = 0; + } + else { + iVar3 = FUN_00404118(param_5,param_3, + + s_RotationDampingConstantRoll_0051030c, + (float *)(param_4 + 0x154)); + if ((iVar3 == 0) && + (_DAT_004b5b20 == *(float *)(param_4 + 0x154))) + { + local_60 = param_3; + FUN_004dbb24((int *)&DAT_00524e68,param_3, + (char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68, + + s_missing_RotationDampingConstantR_00510328, + (char *)0x0); + uVar4 = 0; + } + else { + local_64 = -1.0; + iVar3 = FUN_00404118(param_5,param_3, + + s_RotationNegSpringPitch_0051034f,&local_64); + if ((iVar3 == 0) && + (_DAT_004b5b20 == *(float *)(param_4 + 0x16c))) + { + local_68 = param_3; + FUN_004dbb24((int *)&DAT_00524e68,param_3, + (char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68, + + s_missing_RotationNegSpringPitch__00510366, + (char *)0x0); + uVar4 = 0; + } + else { + if (local_64 != _DAT_004b5b20) { + local_6c = local_64; + local_70 = local_64; + *(float *)(param_4 + 0x16c) = + local_64 * _DAT_004b5b24; + } + local_64 = -1.0; + iVar3 = FUN_00404118(param_5,param_3, + + s_RotationNegSpringYaw_00510388,&local_64); + if ((iVar3 == 0) && + (_DAT_004b5b20 == *(float *)(param_4 + 0x170))) + { + local_74 = param_3; + FUN_004dbb24((int *)&DAT_00524e68,param_3, + (char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68, + + s_missing_RotationNegSpringYaw__0051039d, + (char *)0x0); + uVar4 = 0; + } + else { + if (local_64 != _DAT_004b5b20) { + local_78 = local_64; + local_7c = local_64; + *(float *)(param_4 + 0x170) = + local_64 * _DAT_004b5b24; + } + local_64 = -1.0; + iVar3 = FUN_00404118(param_5,param_3, + + s_RotationNegSpringRoll_005103bd,&local_64); + if ((iVar3 == 0) && + (_DAT_004b5b20 == *(float *)(param_4 + 0x174))) + { + local_80 = param_3; + FUN_004dbb24((int *)&DAT_00524e68,param_3, + (char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68, + + s_missing_RotationNegSpringRoll__005103d3, + (char *)0x0); + uVar4 = 0; + } + else { + if (local_64 != _DAT_004b5b20) { + local_84 = local_64; + local_88 = local_64; + *(float *)(param_4 + 0x174) = + local_64 * _DAT_004b5b24; + } + local_64 = -1.0; + iVar3 = FUN_00404118(param_5,param_3, + + s_RotationPosSpringPitch_005103f4,&local_64); + if ((iVar3 == 0) && + (_DAT_004b5b20 == *(float *)(param_4 + 0x160))) + { + local_8c = param_3; + FUN_004dbb24((int *)&DAT_00524e68,param_3, + (char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68, + + s_missing_RotationPosSpringPitch__0051040b, + (char *)0x0); + uVar4 = 0; + } + else { + if (local_64 != _DAT_004b5b20) { + local_90 = local_64; + local_94 = local_64; + *(float *)(param_4 + 0x160) = + local_64 * _DAT_004b5b24; + } + local_64 = -1.0; + iVar3 = FUN_00404118(param_5,param_3, + + s_RotationPosSpringYaw_0051042d,&local_64); + if ((iVar3 == 0) && + (_DAT_004b5b20 == *(float *)(param_4 + 0x164))) + { + local_98 = param_3; + FUN_004dbb24((int *)&DAT_00524e68,param_3, + (char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68, + + s_missing_RotationPosSpringYaw__00510442, + (char *)0x0); + uVar4 = 0; + } + else { + if (local_64 != _DAT_004b5b20) { + local_9c = local_64; + local_a0 = local_64; + *(float *)(param_4 + 0x164) = + local_64 * _DAT_004b5b24; + } + local_64 = -1.0; + iVar3 = FUN_00404118(param_5,param_3, + + s_RotationPosSpringRoll_00510462,&local_64); + if ((iVar3 == 0) && + (_DAT_004b5b20 == *(float *)(param_4 + 0x168))) + { + local_a4 = param_3; + FUN_004dbb24((int *)&DAT_00524e68,param_3, + (char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68, + + s_missing_RotationPosSpringRoll__00510478, + (char *)0x0); + uVar4 = 0; + } + else { + if (local_64 != _DAT_004b5b20) { + local_a8 = local_64; + local_ac = local_64; + *(float *)(param_4 + 0x168) = + local_64 * _DAT_004b5b24; + } + iVar3 = FUN_00404118(param_5,param_3, + + s_CollisionDamageMultiplier_00510499, + (float *)(param_4 + 0x1b8)); + if ((iVar3 == 0) && + (_DAT_004b5b20 == *(float *)(param_4 + 0x1b8))) + { + local_b0 = param_3; + FUN_004dbb24((int *)&DAT_00524e68,param_3, + (char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68, + + s_missing_CollisionDamageMultiplie_005104b3, + (char *)0x0); + uVar4 = 0; + } + else { + iVar3 = FUN_00404118(param_5,param_3, + + s_BallisticDamageMultiplier_005104d8, + (float *)(param_4 + 0x1bc)); + if ((iVar3 == 0) && + (_DAT_004b5b20 == *(float *)(param_4 + 0x1bc))) + { + local_b4 = param_3; + FUN_004dbb24((int *)&DAT_00524e68,param_3, + (char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68, + + s_missing_BallisticDamageMultiplie_005104f2, + (char *)0x0); + uVar4 = 0; + } + else { + iVar3 = FUN_00404118(param_5,param_3, + + s_ExplosiveDamageMultiplier_00510517, + (float *)(param_4 + 0x1c0)); + if ((iVar3 == 0) && + (_DAT_004b5b20 == *(float *)(param_4 + 0x1c0))) + { + local_b8 = param_3; + FUN_004dbb24((int *)&DAT_00524e68,param_3, + (char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68, + + s_missing_ExplosiveDamageMultiplie_00510531, + (char *)0x0); + uVar4 = 0; + } + else { + iVar3 = FUN_00404118(param_5,param_3, + + s_LaserDamageMultiplier_00510556, + (float *)(param_4 + 0x1c4)); + if ((iVar3 == 0) && + (_DAT_004b5b20 == *(float *)(param_4 + 0x1c4))) + { + local_bc = param_3; + FUN_004dbb24((int *)&DAT_00524e68,param_3, + (char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68, + + s_missing_LaserDamageMultiplier__0051056c, + (char *)0x0); + uVar4 = 0; + } + else { + iVar3 = FUN_00404118(param_5,param_3, + + s_EnergyDamageMultiplier_0051058d, + (float *)(param_4 + 0x1c8)); + if ((iVar3 == 0) && + (_DAT_004b5b20 == *(float *)(param_4 + 0x1c8))) + { + local_c0 = param_3; + FUN_004dbb24((int *)&DAT_00524e68,param_3, + (char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68, + + s_missing_EnergyDamageMultiplier__005105a4, + (char *)0x0); + uVar4 = 0; + } + else { + iVar3 = FUN_00404118(param_5,param_3, + + s_CollisionDamageTrans_005105c6, + (float *)(param_4 + 0x1cc)); + if ((iVar3 == 0) && + (_DAT_004b5b20 == *(float *)(param_4 + 0x1cc))) + { + local_c4 = param_3; + FUN_004dbb24((int *)&DAT_00524e68,param_3, + (char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68, + + s_missing_CollisionDamageTrans__005105db, + (char *)0x0); + uVar4 = 0; + } + else { + iVar3 = FUN_00404118(param_5,param_3, + + s_CollisionDamagePitchRoll_005105fb, + (float *)(param_4 + 0x1d0)); + if ((iVar3 == 0) && + (_DAT_004b5b20 == *(float *)(param_4 + 0x1d0))) + { + local_c8 = param_3; + FUN_004dbb24((int *)&DAT_00524e68,param_3, + (char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68, + + s_missing_CollisionDamagePitchRoll_00510614, + (char *)0x0); + uVar4 = 0; + } + else { + iVar3 = FUN_00404118(param_5,param_3, + + s_CollisionDamageYaw_00510638, + (float *)(param_4 + 0x1d4)); + if ((iVar3 == 0) && + (_DAT_004b5b20 == *(float *)(param_4 + 0x1d4))) + { + local_cc = param_3; + FUN_004dbb24((int *)&DAT_00524e68,param_3, + (char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68, + + s_missing_CollisionDamageYaw__0051064b,(char *)0x0 + ); + uVar4 = 0; + } + else { + iVar3 = FUN_00404118(param_5,param_3, + + s_CollisionDamageVibration_00510669, + (float *)(param_4 + 0x1d8)); + if ((iVar3 == 0) && + (_DAT_004b5b20 == *(float *)(param_4 + 0x1d8))) + { + local_d0 = param_3; + FUN_004dbb24((int *)&DAT_00524e68,param_3, + (char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68, + + s_missing_CollisionDamageVibration_00510682, + (char *)0x0); + uVar4 = 0; + } + else { + iVar3 = FUN_00404118(param_5,param_3, + + s_BallisticDamageTrans_005106a6, + (float *)(param_4 + 0x1dc)); + if ((iVar3 == 0) && + (_DAT_004b5b20 == *(float *)(param_4 + 0x1dc))) + { + local_d4 = param_3; + FUN_004dbb24((int *)&DAT_00524e68,param_3, + (char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68, + + s_missing_BallisticDamageTrans__005106bb, + (char *)0x0); + uVar4 = 0; + } + else { + iVar3 = FUN_00404118(param_5,param_3, + + s_BallisticDamagePitchRoll_005106db, + (float *)(param_4 + 0x1e0)); + if ((iVar3 == 0) && + (_DAT_004b5b20 == *(float *)(param_4 + 0x1e0))) + { + local_d8 = param_3; + FUN_004dbb24((int *)&DAT_00524e68,param_3, + (char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68, + + s_missing_BallisticDamagePitchRoll_005106f4, + (char *)0x0); + uVar4 = 0; + } + else { + iVar3 = FUN_00404118(param_5,param_3, + + s_BallisticDamageYaw_00510718, + (float *)(param_4 + 0x1e4)); + if ((iVar3 == 0) && + (_DAT_004b5b20 == *(float *)(param_4 + 0x1e4))) + { + local_dc = param_3; + FUN_004dbb24((int *)&DAT_00524e68,param_3, + (char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68, + + s_missing_BallisticDamageYaw__0051072b,(char *)0x0 + ); + uVar4 = 0; + } + else { + iVar3 = FUN_00404118(param_5,param_3, + + s_BallisticDamageVibration_00510749, + (float *)(param_4 + 0x1e8)); + if ((iVar3 == 0) && + (_DAT_004b5b20 == *(float *)(param_4 + 0x1e8))) + { + local_e0 = param_3; + FUN_004dbb24((int *)&DAT_00524e68,param_3, + (char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68, + + s_missing_BallisticDamageVibration_00510762, + (char *)0x0); + uVar4 = 0; + } + else { + iVar3 = FUN_00404118(param_5,param_3, + + s_ExplosiveDamageTrans_00510786, + (float *)(param_4 + 0x1ec)); + if ((iVar3 == 0) && + (_DAT_004b5b20 == *(float *)(param_4 + 0x1ec))) + { + local_e4 = param_3; + FUN_004dbb24((int *)&DAT_00524e68,param_3, + (char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68, + + s_missing_ExplosiveDamageTrans__0051079b, + (char *)0x0); + uVar4 = 0; + } + else { + iVar3 = FUN_00404118(param_5,param_3, + + s_ExplosiveDamagePitchRoll_005107bb, + (float *)(param_4 + 0x1f0)); + if ((iVar3 == 0) && + (_DAT_004b5b20 == *(float *)(param_4 + 0x1f0))) + { + local_e8 = param_3; + FUN_004dbb24((int *)&DAT_00524e68,param_3, + (char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68, + + s_missing_ExplosiveDamagePitchRoll_005107d4, + (char *)0x0); + uVar4 = 0; + } + else { + iVar3 = FUN_00404118(param_5,param_3, + + s_ExplosiveDamageYaw_005107f8, + (float *)(param_4 + 500)); + if ((iVar3 == 0) && + (_DAT_004b5b20 == *(float *)(param_4 + 500))) { + local_ec = param_3; + FUN_004dbb24((int *)&DAT_00524e68,param_3, + (char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68, + + s_missing_ExplosiveDamageYaw__0051080b,(char *)0x0 + ); + uVar4 = 0; + } + else { + iVar3 = FUN_00404118(param_5,param_3, + + s_ExplosiveDamageVibration_00510829, + (float *)(param_4 + 0x1f8)); + if ((iVar3 == 0) && + (_DAT_004b5b20 == *(float *)(param_4 + 0x1f8))) + { + local_f0 = param_3; + FUN_004dbb24((int *)&DAT_00524e68,param_3, + (char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68, + + s_missing_ExplosiveDamageVibration_00510842, + (char *)0x0); + uVar4 = 0; + } + else { + iVar3 = FUN_00404118(param_5,param_3, + s_LaserDamageTrans_00510866 + ,(float *)(param_4 + 0x1fc) + ); + if ((iVar3 == 0) && + (_DAT_004b5b20 == *(float *)(param_4 + 0x1fc) + )) { + local_f4 = param_3; + FUN_004dbb24((int *)&DAT_00524e68,param_3, + (char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68, + + s_missing_LaserDamageTrans__00510877,(char *)0x0); + uVar4 = 0; + } + else { + iVar3 = FUN_00404118(param_5,param_3, + + s_LaserDamagePitchRoll_00510893, + (float *)(param_4 + 0x200)); + if ((iVar3 == 0) && + (_DAT_004b5b20 == *(float *)(param_4 + 0x200))) + { + local_f8 = param_3; + FUN_004dbb24((int *)&DAT_00524e68,param_3, + (char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68, + + s_missing_LaserDamagePitchRoll__005108a8, + (char *)0x0); + uVar4 = 0; + } + else { + iVar3 = FUN_00404118(param_5,param_3, + s_LaserDamageYaw_005108c8, + (float *)(param_4 + 0x204)) + ; + if ((iVar3 == 0) && + (_DAT_004b5b20 == *(float *)(param_4 + 0x204) + )) { + local_fc = param_3; + FUN_004dbb24((int *)&DAT_00524e68,param_3, + (char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68, + + s_missing_LaserDamageYaw__005108d7,(char *)0x0); + uVar4 = 0; + } + else { + iVar3 = FUN_00404118(param_5,param_3, + + s_LaserDamageVibration_005108f1, + (float *)(param_4 + 0x208)); + if ((iVar3 == 0) && + (_DAT_004b5b20 == *(float *)(param_4 + 0x208))) + { + local_100 = param_3; + FUN_004dbb24((int *)&DAT_00524e68,param_3, + (char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68, + + s_missing_LaserDamageVibration__00510906, + (char *)0x0); + uVar4 = 0; + } + else { + iVar3 = FUN_00404118(param_5,param_3, + + s_EnergyDamageTrans_00510926, + (float *)(param_4 + 0x20c)); + if ((iVar3 == 0) && + (_DAT_004b5b20 == *(float *)(param_4 + 0x20c))) + { + local_104 = param_3; + FUN_004dbb24((int *)&DAT_00524e68,param_3, + (char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68, + + s_missing_EnergyDamageTrans__00510938,(char *)0x0) + ; + uVar4 = 0; + } + else { + iVar3 = FUN_00404118(param_5,param_3, + + s_EnergyDamagePitchRoll_00510955, + (float *)(param_4 + 0x210)); + if ((iVar3 == 0) && + (_DAT_004b5b20 == *(float *)(param_4 + 0x210))) + { + local_108 = param_3; + FUN_004dbb24((int *)&DAT_00524e68,param_3, + (char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68, + + s_missing_EnergyDamagePitchRoll__0051096b, + (char *)0x0); + uVar4 = 0; + } + else { + iVar3 = FUN_00404118(param_5,param_3, + s_EnergyDamageYaw_0051098c, + (float *)(param_4 + 0x214)) + ; + if ((iVar3 == 0) && + (_DAT_004b5b20 == *(float *)(param_4 + 0x214) + )) { + local_10c = param_3; + FUN_004dbb24((int *)&DAT_00524e68,param_3, + (char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68, + + s_missing_EnergyDamageYaw__0051099c,(char *)0x0); + uVar4 = 0; + } + else { + iVar3 = FUN_00404118(param_5,param_3, + + s_EnergyDamageVibration_005109b7, + (float *)(param_4 + 0x218)); + if ((iVar3 == 0) && + (_DAT_004b5b20 == *(float *)(param_4 + 0x218))) + { + local_110 = param_3; + FUN_004dbb24((int *)&DAT_00524e68,param_3, + (char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68, + + s_missing_EnergyDamageVibration__005109cd, + (char *)0x0); + uVar4 = 0; + } + else { + local_114 = s_Unspecified_005109ee; + iVar3 = FUN_00404088(param_5,param_3, + s_EyeJoint_005109fa, + &local_114); + if (iVar3 == 0) { + pcVar10 = s_Unspecified_00510a03; + pcVar5 = local_114; + do { + bVar11 = *pcVar5 == *pcVar10; + if (!bVar11) break; + if (*pcVar5 == '\0') goto LAB_004b5837; + pcVar1 = pcVar5 + 1; + bVar11 = *pcVar1 == pcVar10[1]; + if (!bVar11) break; + pcVar5 = pcVar5 + 2; + pcVar10 = pcVar10 + 2; + bVar11 = *pcVar1 == '\0'; + } while (!bVar11); + if (!bVar11) { + local_118 = param_3; + FUN_004dbb24((int *)&DAT_00524e68,param_3, + (char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68, + s_missing_EyeJoint__00510a0f, + (char *)0x0); + return 0; + } + } +LAB_004b5837: + pcVar10 = s_Unspecified_00510a23; + pcVar5 = local_114; + do { + bVar11 = *pcVar5 == *pcVar10; + if (!bVar11) break; + if (*pcVar5 == '\0') goto LAB_004b5891; + pcVar1 = pcVar5 + 1; + bVar11 = *pcVar1 == pcVar10[1]; + if (!bVar11) break; + pcVar5 = pcVar5 + 2; + pcVar10 = pcVar10 + 2; + bVar11 = *pcVar1 == '\0'; + } while (!bVar11); + if (!bVar11) { + uVar8 = 0xffffffff; + pcVar5 = local_114; + do { + pcVar10 = pcVar5; + if (uVar8 == 0) break; + uVar8 = uVar8 - 1; + pcVar10 = pcVar5 + 1; + cVar2 = *pcVar5; + pcVar5 = pcVar10; + } while (cVar2 != '\0'); + uVar8 = ~uVar8; + pcVar5 = pcVar10 + -uVar8; + pcVar10 = param_4 + 0x178; + for (uVar9 = uVar8 >> 2; uVar9 != 0; + uVar9 = uVar9 - 1) { + *(undefined4 *)pcVar10 = + *(undefined4 *)pcVar5; + pcVar5 = pcVar5 + 4; + pcVar10 = pcVar10 + 4; + } + for (uVar8 = uVar8 & 3; uVar8 != 0; + uVar8 = uVar8 - 1) { + *pcVar10 = *pcVar5; + pcVar5 = pcVar5 + 1; + pcVar10 = pcVar10 + 1; + } + } +LAB_004b5891: + local_11c = s_Unspecified_00510a2f; + iVar3 = FUN_00404088(param_5,param_3, + s_MechJoint_00510a3b, + &local_11c); + if (iVar3 == 0) { + pcVar10 = s_Unspecified_00510a45; + pcVar5 = local_11c; + do { + bVar11 = *pcVar5 == *pcVar10; + if (!bVar11) break; + if (*pcVar5 == '\0') goto LAB_004b5915; + pcVar1 = pcVar5 + 1; + bVar11 = *pcVar1 == pcVar10[1]; + if (!bVar11) break; + pcVar5 = pcVar5 + 2; + pcVar10 = pcVar10 + 2; + bVar11 = *pcVar1 == '\0'; + } while (!bVar11); + if (!bVar11) { + local_120 = param_3; + FUN_004dbb24((int *)&DAT_00524e68,param_3, + (char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68, + s_missing_MechJoint__00510a51, + (char *)0x0); + return 0; + } + } +LAB_004b5915: + pcVar10 = s_Unspecified_00510a66; + pcVar5 = local_11c; + do { + bVar11 = *pcVar5 == *pcVar10; + if (!bVar11) break; + if (*pcVar5 == '\0') goto LAB_004b596b; + pcVar1 = pcVar5 + 1; + bVar11 = *pcVar1 == pcVar10[1]; + if (!bVar11) break; + pcVar5 = pcVar5 + 2; + pcVar10 = pcVar10 + 2; + bVar11 = *pcVar1 == '\0'; + } while (!bVar11); + if (!bVar11) { + uVar8 = 0xffffffff; + pcVar5 = local_11c; + do { + pcVar10 = pcVar5; + if (uVar8 == 0) break; + uVar8 = uVar8 - 1; + pcVar10 = pcVar5 + 1; + cVar2 = *pcVar5; + pcVar5 = pcVar10; + } while (cVar2 != '\0'); + uVar8 = ~uVar8; + pcVar5 = pcVar10 + -uVar8; + pcVar10 = param_4 + 0x198; + for (uVar9 = uVar8 >> 2; uVar9 != 0; + uVar9 = uVar9 - 1) { + *(undefined4 *)pcVar10 = + *(undefined4 *)pcVar5; + pcVar5 = pcVar5 + 4; + pcVar10 = pcVar10 + 4; + } + for (uVar8 = uVar8 & 3; uVar8 != 0; + uVar8 = uVar8 - 1) { + *pcVar10 = *pcVar5; + pcVar5 = pcVar5 + 1; + pcVar10 = pcVar10 + 1; + } + } +LAB_004b596b: + iVar3 = FUN_00404088(param_1,s_video_00510a72, + s_skeleton_00510a78, + &local_124); + if (iVar3 == 0) { + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0 + ); + FUN_004dbb24(&DAT_00524e20, + + s_is_missing_skeleton_file__00510a81,(char *)0x0); + uVar4 = 0xffffffff; + } + else { + piVar6 = (int *)FUN_004064fc(*(char **)(param_6 + + 0x10),local_124); + piVar7 = (int *)FUN_00402298(0x20); + if (piVar7 == (int *)0x0) { + piVar7 = (int *)0x0; + } + else { + piVar7 = FUN_00403e84(piVar7,(char *)piVar6,1); + } + iVar3 = FUN_00403f84((int)piVar7,param_4 + 0x178); + if (iVar3 == 0) { + FUN_004dbb24(&DAT_00524e20,param_4 + 0x178, + (char *)0x0); + FUN_004dbb24(&DAT_00524e20, + s_not_found_in_00510a9d,(char *)0x0 + ); + FUN_004dbb24(&DAT_00524e20,local_124,(char *)0x0 + ); + FUN_004d9c38(&DAT_00524e20); + } + else { + iVar3 = FUN_00403f84((int)piVar7,param_4 + 0x198 + ); + if (iVar3 != 0) { + FUN_004022d0(piVar6); + FUN_00403ecc(piVar7,3); + return 1; + } + FUN_004dbb24(&DAT_00524e20,param_4 + 0x198, + (char *)0x0); + FUN_004dbb24(&DAT_00524e20, + s_not_found_in_00510aac,(char *)0x0 + ); + FUN_004dbb24(&DAT_00524e20,local_124,(char *)0x0 + ); + FUN_004d9c38(&DAT_00524e20); + } + FUN_004022d0(piVar6); + FUN_00403ecc(piVar7,3); + uVar4 = 0xffffffff; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + return uVar4; +} + + + +/* @004b5bf8 file=? name=FUN_004b5bf8 */ + +void __cdecl FUN_004b5bf8(int *param_1,int param_2) + +{ + undefined4 local_10 [3]; + + FUN_004b1804(param_1); + if (param_2 != 0) { + param_1[0x91] = param_1[0x8f]; + param_1[0x92] = param_1[0x90]; + param_1[0x96] = 0; + param_1[0x97] = 0; + param_1[0x98] = 0; + param_1[0x99] = 0; + } + param_1[0x7e] = 0; + param_1[0x7f] = 0; + param_1[0x80] = 0; + param_1[0x81] = 0; + param_1[0x82] = 0; + param_1[0x7c] = 0; + param_1[0x7d] = 0; + param_1[0x76] = 0; + param_1[0x79] = 0; + param_1[0x7a] = 0; + param_1[0x7b] = 0; + param_1[0x87] = 0; + param_1[0x86] = 0; + param_1[0x8e] = 0; + param_1[0x9c] = 0; + param_1[0x9d] = 0; + FUN_004b66b4((int)param_1,local_10); + return; +} + + + +/* @004b5cf0 file=? name=FUN_004b5cf0 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004b5cf0(int param_1,float param_2) + +{ + float fVar1; + float fVar2; + int iVar3; + float fVar4; + float fVar5; + float fVar6; + bool bVar7; + undefined3 extraout_var; + undefined4 *puVar8; + float10 fVar9; + float local_90; + + FUN_004b181c(param_1); + fVar1 = *(float *)(param_1 + 0x1d8); + fVar2 = *(float *)(param_1 + 0x1e4); + *(undefined4 *)(param_1 + 0x244) = *(undefined4 *)(param_1 + 0x23c); + *(undefined4 *)(param_1 + 0x248) = *(undefined4 *)(param_1 + 0x240); + if (*(int *)(param_1 + 0x40) == 1) { + *(undefined4 *)(param_1 + 0x244) = 0; + } + if (*(int *)(param_1 + 0x198) != 4) { + *(undefined4 *)(param_1 + 0x244) = 0; + } + iVar3 = *(int *)(param_1 + 0x140); + if (iVar3 != 0) { + if (iVar3 == 1) { + *(float *)(param_1 + 0x244) = _DAT_004b64f8 * *(float *)(param_1 + 0x23c); + } + else if (iVar3 == 2) { + *(undefined4 *)(param_1 + 0x244) = 0; + } + } + fVar4 = *(float *)(param_1 + 0x244) * param_2; + fVar5 = *(float *)(param_1 + 0x248) * param_2; + if (*(int *)(param_1 + 0x268) == 0) { + *(undefined4 *)(param_1 + 0x26c) = *(undefined4 *)(param_1 + 0x214); + } + else { + *(float *)(param_1 + 0x26c) = + *(float *)(param_1 + 0x210) * param_2 + *(float *)(param_1 + 0x26c); + fVar6 = _DAT_004b64fc; + if (*(float *)(param_1 + 0x26c) <= _DAT_004b64fc) { + fVar6 = *(float *)(param_1 + 0x26c); + } + *(float *)(param_1 + 0x26c) = fVar6; + *(undefined4 *)(param_1 + 0x268) = 0; + } + *(undefined4 *)(param_1 + 0x26c) = 0x3f800000; + if (0 < *(int *)(param_1 + 0x1f8)) { + *(float *)(param_1 + 0x1e4) = fVar5 * *(float *)(param_1 + 0x26c) + *(float *)(param_1 + 0x1e4); + if (*(float *)(param_1 + 0x1e4) <= *(float *)(param_1 + 0x220)) { + puVar8 = (undefined4 *)(param_1 + 0x1e4); + } + else { + puVar8 = (undefined4 *)(param_1 + 0x220); + } + *(undefined4 *)(param_1 + 0x1e4) = *puVar8; + *(undefined4 *)(param_1 + 0x268) = 1; + } + if (0 < *(int *)(param_1 + 0x1fc)) { + *(float *)(param_1 + 0x1e4) = *(float *)(param_1 + 0x1e4) - fVar5 * *(float *)(param_1 + 0x26c); + if (*(float *)(param_1 + 0x224) <= *(float *)(param_1 + 0x1e4)) { + puVar8 = (undefined4 *)(param_1 + 0x1e4); + } + else { + puVar8 = (undefined4 *)(param_1 + 0x224); + } + *(undefined4 *)(param_1 + 0x1e4) = *puVar8; + *(undefined4 *)(param_1 + 0x268) = 1; + } + if (0 < *(int *)(param_1 + 0x200)) { + *(float *)(param_1 + 0x1d8) = fVar4 * *(float *)(param_1 + 0x26c) + *(float *)(param_1 + 0x1d8); + if (*(float *)(param_1 + 0x1d8) <= *(float *)(param_1 + 0x1e0)) { + puVar8 = (undefined4 *)(param_1 + 0x1d8); + } + else { + puVar8 = (undefined4 *)(param_1 + 0x1e0); + } + *(undefined4 *)(param_1 + 0x1d8) = *puVar8; + *(undefined4 *)(param_1 + 0x274) = 0; + *(undefined4 *)(param_1 + 0x268) = 1; + } + if (0 < *(int *)(param_1 + 0x204)) { + *(float *)(param_1 + 0x1d8) = *(float *)(param_1 + 0x1d8) - fVar4 * *(float *)(param_1 + 0x26c); + if (*(float *)(param_1 + 0x1dc) <= *(float *)(param_1 + 0x1d8)) { + puVar8 = (undefined4 *)(param_1 + 0x1d8); + } + else { + puVar8 = (undefined4 *)(param_1 + 0x1dc); + } + *(undefined4 *)(param_1 + 0x1d8) = *puVar8; + *(undefined4 *)(param_1 + 0x274) = 0; + *(undefined4 *)(param_1 + 0x268) = 1; + } + if (0 < *(int *)(param_1 + 0x208)) { + *(undefined4 *)(param_1 + 0x274) = 1; + *(undefined4 *)(param_1 + 0x268) = 0; + } + if (*(float *)(param_1 + 0x1f0) != _DAT_004b6500) { + *(float *)(param_1 + 0x1d8) = *(float *)(param_1 + 0x1f0) * fVar4 + *(float *)(param_1 + 0x1d8); + if (*(float *)(param_1 + 0x1d8) <= *(float *)(param_1 + 0x1e0)) { + puVar8 = (undefined4 *)(param_1 + 0x1d8); + } + else { + puVar8 = (undefined4 *)(param_1 + 0x1e0); + } + *(undefined4 *)(param_1 + 0x1d8) = *puVar8; + if (*(float *)(param_1 + 0x1dc) <= *(float *)(param_1 + 0x1d8)) { + puVar8 = (undefined4 *)(param_1 + 0x1d8); + } + else { + puVar8 = (undefined4 *)(param_1 + 0x1dc); + } + *(undefined4 *)(param_1 + 0x1d8) = *puVar8; + *(undefined4 *)(param_1 + 0x274) = 0; + } + if (*(float *)(param_1 + 500) != _DAT_004b6500) { + *(float *)(param_1 + 0x1e4) = *(float *)(param_1 + 500) * fVar5 + *(float *)(param_1 + 0x1e4); + if (*(float *)(param_1 + 0x1e4) <= *(float *)(param_1 + 0x220)) { + puVar8 = (undefined4 *)(param_1 + 0x1e4); + } + else { + puVar8 = (undefined4 *)(param_1 + 0x220); + } + *(undefined4 *)(param_1 + 0x1e4) = *puVar8; + if (*(float *)(param_1 + 0x224) <= *(float *)(param_1 + 0x1e4)) { + puVar8 = (undefined4 *)(param_1 + 0x1e4); + } + else { + puVar8 = (undefined4 *)(param_1 + 0x224); + } + *(undefined4 *)(param_1 + 0x1e4) = *puVar8; + } + if (*(int *)(param_1 + 0x274) != 0) { + bVar7 = FUN_004b6918(param_1,param_2); + *(uint *)(param_1 + 0x274) = CONCAT31(extraout_var,bVar7); + } + local_90 = *(float *)(param_1 + 0x238); + if (_DAT_004b6500 < param_2) { + *(float *)(param_1 + 0x1e8) = (*(float *)(param_1 + 0x1d8) - fVar1) / param_2; + *(float *)(param_1 + 0x1ec) = (*(float *)(param_1 + 0x1e4) - fVar2) / param_2; + *(undefined4 *)(param_1 + 0x238) = *(undefined4 *)(param_1 + 0x1e8); + if (*(float *)(param_1 + 0x1e8) <= _DAT_004b6500) { + fVar1 = -*(float *)(param_1 + 0x1e8); + } + else { + fVar1 = *(float *)(param_1 + 0x1e8); + } + *(float *)(param_1 + 0x1e8) = fVar1; + if (*(float *)(param_1 + 0x1ec) <= _DAT_004b6500) { + fVar1 = -*(float *)(param_1 + 0x1ec); + } + else { + fVar1 = *(float *)(param_1 + 0x1ec); + } + *(float *)(param_1 + 0x1ec) = fVar1; + } + fVar9 = FUN_004dcd00((double)*(float *)(param_1 + 0x238)); + if (fVar9 <= (float10)_DAT_004b6504) { + *(undefined4 *)(param_1 + 0x238) = 0; + } + fVar9 = FUN_004dcd00((double)local_90); + if (fVar9 <= (float10)_DAT_004b6504) { + local_90 = 0.0; + } + FUN_004b6510(param_1); + fVar1 = *(float *)(param_1 + 0x1d8) - *(float *)(param_1 + 0x218); + bVar7 = false; + if ((*(float *)(param_1 + 0x238) == _DAT_004b6500) && (local_90 != _DAT_004b6500)) { + bVar7 = true; + } + local_90 = *(float *)(param_1 + 0x238) - local_90; + if (fVar1 <= _DAT_004b6500) { + fVar1 = -fVar1; + } + if (fVar1 <= _DAT_004b6508) { + if (local_90 <= _DAT_004b6500) { + local_90 = -local_90; + } + if ((local_90 <= _DAT_004b650c) && (!bVar7)) goto LAB_004b6318; + } + *(ushort *)(param_1 + 0x18) = *(ushort *)(param_1 + 0x18) | 1; +LAB_004b6318: + *(undefined4 *)(param_1 + 0x20c) = 0; + fVar9 = FUN_004dcd00((double)(*(float *)(param_1 + 0x1d8) - *(float *)(param_1 + 0x1e0))); + if ((float10)_DAT_004b6504 < fVar9) { + *(undefined4 *)(param_1 + 0x260) = 0; + } + else if (*(int *)(param_1 + 0x260) == 0) { + *(undefined4 *)(param_1 + 0x260) = 1; + *(undefined4 *)(param_1 + 0x20c) = 2; + } + fVar9 = FUN_004dcd00((double)(*(float *)(param_1 + 0x1d8) - *(float *)(param_1 + 0x1dc))); + if ((float10)_DAT_004b6504 < fVar9) { + *(undefined4 *)(param_1 + 0x264) = 0; + } + else if (*(int *)(param_1 + 0x264) == 0) { + *(undefined4 *)(param_1 + 0x264) = 1; + *(undefined4 *)(param_1 + 0x20c) = 2; + } + fVar9 = FUN_004dcd00((double)(*(float *)(param_1 + 0x1e4) - *(float *)(param_1 + 0x220))); + if ((float10)_DAT_004b6504 < fVar9) { + *(undefined4 *)(param_1 + 600) = 0; + } + else if (*(int *)(param_1 + 600) == 0) { + *(undefined4 *)(param_1 + 600) = 1; + *(undefined4 *)(param_1 + 0x20c) = 2; + } + fVar9 = FUN_004dcd00((double)(*(float *)(param_1 + 0x1e4) - *(float *)(param_1 + 0x224))); + if ((float10)_DAT_004b6504 < fVar9) { + *(undefined4 *)(param_1 + 0x25c) = 0; + } + else if (*(int *)(param_1 + 0x25c) == 0) { + *(undefined4 *)(param_1 + 0x25c) = 1; + *(undefined4 *)(param_1 + 0x20c) = 2; + } + if (*(int *)(param_1 + 0x274) != 0) { + *(undefined4 *)(param_1 + 0x20c) = 1; + } + return; +} + + + +/* @004b6510 file=? name=FUN_004b6510 */ + +undefined4 __cdecl FUN_004b6510(int param_1) + +{ + undefined4 *puVar1; + int iVar2; + undefined4 uVar3; + undefined4 local_8; + + if ((*(int *)(param_1 + 0x24c) == 0) || (*(int *)(param_1 + 0x254) <= *(int *)(param_1 + 0x10))) { + iVar2 = *(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x14); + uVar3 = 0; + } + else { + iVar2 = *(int *)(param_1 + 0x254) - *(int *)(param_1 + 0x14); + uVar3 = 1; + } + local_8 = (float)iVar2 / DAT_0052140c; + *(float *)(param_1 + 0x218) = *(float *)(param_1 + 0x21c) + *(float *)(param_1 + 0x238) * local_8; + if (*(float *)(param_1 + 0x218) <= *(float *)(param_1 + 0x1e0)) { + puVar1 = (undefined4 *)(param_1 + 0x218); + } + else { + puVar1 = (undefined4 *)(param_1 + 0x1e0); + } + *(undefined4 *)(param_1 + 0x218) = *puVar1; + if (*(float *)(param_1 + 0x1dc) <= *(float *)(param_1 + 0x218)) { + puVar1 = (undefined4 *)(param_1 + 0x218); + } + else { + puVar1 = (undefined4 *)(param_1 + 0x1dc); + } + *(undefined4 *)(param_1 + 0x218) = *puVar1; + return uVar3; +} + + + +/* @004b65f8 file=? name=FUN_004b65f8 */ + +void __cdecl FUN_004b65f8(int param_1,float param_2) + +{ + int iVar1; + undefined4 *puVar2; + + iVar1 = FUN_004b6510(param_1); + if (iVar1 == 0) { + *(undefined4 *)(param_1 + 0x1d8) = *(undefined4 *)(param_1 + 0x218); + } + else { + FUN_004081e0((float *)(param_1 + 0x1d8),(float *)(param_1 + 0x1d8),(float *)(param_1 + 0x218), + param_2 / ((float)(*(int *)(param_1 + 0x254) - *(int *)(param_1 + 0x10)) / + DAT_0052140c + param_2)); + } + if (*(float *)(param_1 + 0x218) <= *(float *)(param_1 + 0x1e0)) { + puVar2 = (undefined4 *)(param_1 + 0x218); + } + else { + puVar2 = (undefined4 *)(param_1 + 0x1e0); + } + *(undefined4 *)(param_1 + 0x218) = *puVar2; + if (*(float *)(param_1 + 0x1dc) <= *(float *)(param_1 + 0x218)) { + puVar2 = (undefined4 *)(param_1 + 0x218); + } + else { + puVar2 = (undefined4 *)(param_1 + 0x1dc); + } + *(undefined4 *)(param_1 + 0x218) = *puVar2; + return; +} + + + +/* @004b66b4 file=? name=FUN_004b66b4 */ + +void __cdecl FUN_004b66b4(int param_1,undefined4 *param_2) + +{ + uint uVar1; + float *pfVar2; + float local_2c; + undefined4 local_28; + float local_24; + float local_20; + undefined4 local_1c; + float local_18; + undefined4 local_14; + float local_10; + undefined4 local_c; + float local_8; + + *param_2 = *(undefined4 *)(param_1 + 0x1e4); + if (*(int *)(param_1 + 0x250) != 0) { + uVar1 = *(uint *)(*(int *)(param_1 + 0x278) + 0x10); + if (uVar1 < 3) { + local_c = **(undefined4 **)(*(int *)(param_1 + 0x278) + 0xc); + local_8 = *(float *)(param_1 + 0x1d8); + FUN_0041d0a8(*(int *)(param_1 + 0x278),&local_8); + } + else if (uVar1 - 4 < 2) { + pfVar2 = (float *)FUN_0041cfa0(*(int *)(param_1 + 0x278)); + local_20 = *pfVar2; + local_18 = pfVar2[2]; + local_1c = *(undefined4 *)(param_1 + 0x1d8); + FUN_0041d020(*(int *)(param_1 + 0x278),&local_20); + } + uVar1 = *(uint *)(*(int *)(param_1 + 0x27c) + 0x10); + if (uVar1 < 3) { + local_14 = **(undefined4 **)(*(int *)(param_1 + 0x27c) + 0xc); + local_10 = *(float *)(param_1 + 0x1d8); + FUN_0041d0a8(*(int *)(param_1 + 0x27c),&local_10); + } + else if (uVar1 - 4 < 2) { + pfVar2 = (float *)FUN_0041cfa0(*(int *)(param_1 + 0x27c)); + local_2c = *pfVar2; + local_24 = pfVar2[2]; + local_28 = *(undefined4 *)(param_1 + 0x1d8); + FUN_0041d020(*(int *)(param_1 + 0x27c),&local_2c); + } + } + return; +} + + + +/* @004b67ec file=? name=FUN_004b67ec */ + +void __cdecl FUN_004b67ec(int param_1) + +{ + uint uVar1; + float *pfVar2; + float local_2c; + undefined4 local_28; + float local_24; + float local_20; + undefined4 local_1c; + float local_18; + undefined4 local_14; + float local_10; + undefined4 local_c; + float local_8; + + if (*(int *)(param_1 + 0x250) != 0) { + uVar1 = *(uint *)(*(int *)(param_1 + 0x278) + 0x10); + if (uVar1 < 3) { + local_c = **(undefined4 **)(*(int *)(param_1 + 0x278) + 0xc); + local_8 = *(float *)(param_1 + 0x1d8); + FUN_0041d0a8(*(int *)(param_1 + 0x278),&local_8); + } + else if (uVar1 - 4 < 2) { + pfVar2 = (float *)FUN_0041cfa0(*(int *)(param_1 + 0x278)); + local_20 = *pfVar2; + local_18 = pfVar2[2]; + local_1c = *(undefined4 *)(param_1 + 0x1d8); + FUN_0041d020(*(int *)(param_1 + 0x278),&local_20); + } + uVar1 = *(uint *)(*(int *)(param_1 + 0x27c) + 0x10); + if (uVar1 < 3) { + local_14 = **(undefined4 **)(*(int *)(param_1 + 0x27c) + 0xc); + local_10 = *(float *)(param_1 + 0x1d8); + FUN_0041d0a8(*(int *)(param_1 + 0x27c),&local_10); + } + else if (uVar1 - 4 < 2) { + pfVar2 = (float *)FUN_0041cfa0(*(int *)(param_1 + 0x27c)); + local_2c = *pfVar2; + local_24 = pfVar2[2]; + local_28 = *(undefined4 *)(param_1 + 0x1d8); + FUN_0041d020(*(int *)(param_1 + 0x27c),&local_2c); + } + } + return; +} + + + +/* @004b6918 file=? name=FUN_004b6918 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +bool __cdecl FUN_004b6918(int param_1,float param_2) + +{ + undefined4 *puVar1; + float10 fVar2; + undefined4 local_20; + undefined4 local_1c; + float local_18; + undefined4 local_14; + undefined4 local_10; + float local_c; + float local_8; + + local_8 = *(float *)(param_1 + 0x244) * param_2; + if (_DAT_004b6a14 < *(float *)(param_1 + 0x1d8)) { + local_c = local_8; + *(float *)(param_1 + 0x1d8) = *(float *)(param_1 + 0x1d8) - local_8; + local_10 = 0; + if (0.0 <= *(float *)(param_1 + 0x1d8)) { + puVar1 = (undefined4 *)(param_1 + 0x1d8); + } + else { + local_14 = 0; + puVar1 = &local_14; + } + *(undefined4 *)(param_1 + 0x1d8) = *puVar1; + } + if (*(float *)(param_1 + 0x1d8) < _DAT_004b6a14) { + local_18 = local_8; + *(float *)(param_1 + 0x1d8) = local_8 + *(float *)(param_1 + 0x1d8); + local_1c = 0; + if (*(float *)(param_1 + 0x1d8) <= 0.0) { + puVar1 = (undefined4 *)(param_1 + 0x1d8); + } + else { + local_20 = 0; + puVar1 = &local_20; + } + *(undefined4 *)(param_1 + 0x1d8) = *puVar1; + } + fVar2 = FUN_004dcd00((double)(*(float *)(param_1 + 0x1d8) - _DAT_004b6a14)); + return (float10)_DAT_004b6a18 < fVar2; +} + + + +/* @004b6a78 file=? name=FUN_004b6a78 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004b6a78(int param_1,int param_2) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00414b60(); + *(undefined4 *)(param_1 + 0x254) = *puVar1; + if ((float)(*(int *)(param_1 + 0x254) - *(int *)(param_1 + 0x14)) / DAT_0052140c < _DAT_004b6b08) + { + *(int *)(param_1 + 0x254) = + *(int *)(param_1 + 0x254) + (*(int *)(param_1 + 0x254) - *(int *)(param_1 + 0x14)); + } + FUN_0041bd34(param_1,param_2); + *(undefined4 *)(param_1 + 0x21c) = *(undefined4 *)(param_2 + 0x10); + *(undefined4 *)(param_1 + 0x1e8) = *(undefined4 *)(param_2 + 0x14); + *(undefined4 *)(param_1 + 0x238) = *(undefined4 *)(param_2 + 0x18); + return; +} + + + +/* @004b6b0c file=? name=FUN_004b6b0c */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +int * __cdecl FUN_004b6b0c(int *param_1,int param_2,undefined4 param_3,char *param_4) + +{ + uint *puVar1; + int iVar2; + int local_cc [7]; + int local_b0 [10]; + uint *local_88; + uint *local_84; + undefined4 local_80; + int local_7c; + uint *local_78; + char *local_74; + uint *local_70; + undefined4 local_6c; + int local_68; + int local_64; + undefined4 local_60; + uint *local_5c; + char *local_58; + uint *local_54; + float local_50; + int *local_4c; + int *local_48; + int *local_44; + int *local_40; + int *local_3c; + int *local_38; + float local_34; + float local_30; + float local_2c; + float local_28; + float local_24; + float local_20; + float local_1c; + float local_18; + float local_14; + float local_10; + float local_c; + float local_8; + + FUN_004b18a4(param_1,param_2,param_3,param_4,&DAT_00510af8); + *param_1 = (int)&PTR_LAB_0051103c; + if (((*(uint *)(param_2 + 0x28) & 0xc) == 0) && ((*(byte *)(param_2 + 0x29) & 1) != 0)) { + param_1[0x93] = 0; + param_1[7] = (int)PTR_FUN_00510c10; + param_1[8] = DAT_00510c14; + param_1[9] = DAT_00510c18; + } + else { + param_1[0x93] = 1; + param_1[7] = (int)PTR_FUN_00510c1c; + param_1[8] = DAT_00510c20; + param_1[9] = DAT_00510c24; + } + param_1[0x83] = 0; + param_1[0x84] = *(int *)(param_4 + 0x150); + param_1[0x85] = *(int *)(param_4 + 0x154); + local_c = *(float *)(param_4 + 0xf4); + param_1[0x8f] = (int)(local_c * _DAT_004b6fb8); + local_14 = *(float *)(param_4 + 0xf8); + param_1[0x90] = (int)(local_14 * _DAT_004b6fb8); + local_1c = *(float *)(param_4 + 0xfc); + param_1[0x77] = (int)(local_1c * _DAT_004b6fb8); + local_24 = *(float *)(param_4 + 0x100); + param_1[0x78] = (int)(local_24 * _DAT_004b6fb8); + local_2c = *(float *)(param_4 + 0x104); + param_1[0x88] = (int)(local_2c * _DAT_004b6fb8); + local_34 = *(float *)(param_4 + 0x108); + param_1[0x89] = (int)(local_34 * _DAT_004b6fb8); + local_38 = param_1 + 0x88; + local_3c = param_1 + 0x8c; + local_40 = param_1 + 0x89; + *local_3c = *local_38; + local_44 = param_1 + 0x8d; + local_48 = param_1 + 0x88; + *local_44 = *local_40; + local_4c = param_1 + 0x8a; + *local_4c = *local_48; + local_50 = (float)param_1[0x89] * _DAT_004b6fbc; + param_1[0x8b] = (int)local_50; + param_1[0x9a] = 0; + param_1[0x9b] = 0; + param_1[0x94] = *(int *)(param_4 + 0x14c); + if (param_1[0x94] != 0) { + local_58 = param_4 + 0x10c; + local_30 = local_34; + local_28 = local_2c; + local_20 = local_24; + local_18 = local_1c; + local_10 = local_14; + local_8 = local_c; + local_5c = (uint *)FUN_00402298(0x10); + if (local_5c == (uint *)0x0) { + local_54 = (uint *)0x0; + } + else { + local_54 = FUN_00402460(local_5c,local_58); + } + local_54[3] = local_54[3] + 1; + local_64 = FUN_00417ab4(param_2 + 0x31c); + local_54[3] = local_54[3] + 1; + local_68 = FUN_00424b60(param_2,(int *)local_54); + local_6c = *(undefined4 *)(local_68 + 0xc0); + local_60 = local_6c; + FUN_0041d3b3(local_b0,local_64 + 0xe4); + iVar2 = (**(code **)(local_b0[0] + 0x34))(local_b0,local_6c); + FUN_0041d3d2(local_b0,2); + local_74 = param_4 + 300; + param_1[0x9e] = iVar2; + local_78 = (uint *)FUN_00402298(0x10); + if (local_78 == (uint *)0x0) { + local_70 = (uint *)0x0; + } + else { + local_70 = FUN_00402460(local_78,local_74); + } + local_70[3] = local_70[3] + 1; + local_70[3] = local_70[3] + 1; + local_7c = FUN_00424b60(param_2,(int *)local_70); + local_80 = *(undefined4 *)(local_7c + 0xc0); + local_60 = local_80; + FUN_0041d3b3(local_cc,local_64 + 0xe4); + iVar2 = (**(code **)(local_cc[0] + 0x34))(local_cc,local_80); + FUN_0041d3d2(local_cc,2); + param_1[0x9f] = iVar2; + local_84 = local_70; + puVar1 = local_70 + 3; + *puVar1 = *puVar1 - 1; + if (*puVar1 == 0) { + FUN_004024d8((int *)local_70,3); + } + local_88 = local_54; + puVar1 = local_54 + 3; + *puVar1 = *puVar1 - 1; + if (*puVar1 == 0) { + FUN_004024d8((int *)local_54,3); + } + } + param_1[0x96] = 0; + param_1[0x97] = 0; + param_1[0x98] = 0; + param_1[0x99] = 0; + param_1[0x91] = param_1[0x8f]; + param_1[0x92] = param_1[0x90]; + param_1[0x76] = 0; + param_1[0x79] = 0; + param_1[0x7a] = 0; + param_1[0x7b] = 0; + param_1[0x87] = 0; + param_1[0x86] = 0; + param_1[0x8e] = 0; + param_1[0x9c] = 0; + param_1[0x9d] = 0; + param_1[0x7e] = 0; + param_1[0x7f] = 0; + param_1[0x80] = 0; + param_1[0x81] = 0; + param_1[0x82] = 0; + param_1[0x7c] = 0; + param_1[0x7d] = 0; + param_1[0x95] = param_1[5]; + return param_1; +} + + + +/* @004b6fec file=? name=FUN_004b6fec */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl +FUN_004b6fec(int param_1,char *param_2,char *param_3,char *param_4,int param_5,int param_6, + int param_7) + +{ + char *pcVar1; + char cVar2; + int iVar3; + undefined4 uVar4; + char *pcVar5; + int *piVar6; + int *piVar7; + uint uVar8; + uint uVar9; + char *pcVar10; + bool bVar11; + char *local_14; + char *local_10; + char *local_c; + char *local_8; + + iVar3 = FUN_004b198c(param_1,param_2,param_3,param_4,param_5,param_6,param_7); + if (iVar3 == 0) { + uVar4 = 0; + } + else { + param_4[0x24] = 'X'; + param_4[0x25] = '\x01'; + param_4[0x26] = '\0'; + param_4[0x27] = '\0'; + param_4[0x20] = -0x3b; + param_4[0x21] = '\v'; + param_4[0x22] = '\0'; + param_4[0x23] = '\0'; + if (param_7 == 1) { + iVar3 = FUN_00404088(param_5,param_3,s_TorsoHorizontalEnabled_00510d43,&local_8); + if (iVar3 == 0) { + param_4[0x14c] = '\x01'; + param_4[0x14d] = '\0'; + param_4[0x14e] = '\0'; + param_4[0x14f] = '\0'; + } + else { + iVar3 = FUN_004d4b58(local_8,s_false_00510d5a); + if (iVar3 == 0) { + param_4[0x14c] = '\0'; + param_4[0x14d] = '\0'; + param_4[0x14e] = '\0'; + param_4[0x14f] = '\0'; + } + else { + param_4[0x14c] = '\x01'; + param_4[0x14d] = '\0'; + param_4[0x14e] = '\0'; + param_4[0x14f] = '\0'; + } + } + } + if (param_7 == 1) { + param_4[0x150] = '\0'; + param_4[0x151] = '\0'; + param_4[0x152] = -0x80; + param_4[0x153] = -0x41; + param_4[0x154] = '\0'; + param_4[0x155] = '\0'; + param_4[0x156] = -0x80; + param_4[0x157] = -0x41; + param_4[0xf4] = '\0'; + param_4[0xf5] = '\0'; + param_4[0xf6] = -0x80; + param_4[0xf7] = -0x41; + param_4[0xf8] = '\0'; + param_4[0xf9] = '\0'; + param_4[0xfa] = -0x80; + param_4[0xfb] = -0x41; + param_4[0x100] = '\0'; + param_4[0x101] = '\0'; + param_4[0x102] = -0x80; + param_4[0x103] = -0x41; + param_4[0xfc] = '\0'; + param_4[0xfd] = '\0'; + param_4[0xfe] = -0x80; + param_4[0xff] = -0x41; + param_4[0x104] = '\0'; + param_4[0x105] = '\0'; + param_4[0x106] = -0x80; + param_4[0x107] = -0x41; + param_4[0x108] = '\0'; + param_4[0x109] = '\0'; + param_4[0x10a] = -0x80; + param_4[0x10b] = -0x41; + } + iVar3 = FUN_00404118(param_5,param_3,s_ButtonAccelerationPerSecond_00510d60, + (float *)(param_4 + 0x150)); + if ((iVar3 == 0) && (_DAT_004b76c4 == *(float *)(param_4 + 0x150))) { + FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_ButtonAccelerationPerSec_00510d7c,(char *)0x0); + uVar4 = 0; + } + else { + iVar3 = FUN_00404118(param_5,param_3,s_ButtonAccelerationStartValue_00510da3, + (float *)(param_4 + 0x154)); + if ((iVar3 == 0) && (_DAT_004b76c4 == *(float *)(param_4 + 0x154))) { + FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_ButtonAccelerationStartV_00510dc0,(char *)0x0); + uVar4 = 0; + } + else { + iVar3 = FUN_00404118(param_5,param_3,s_HorizontalRotationPerSecond_00510de8, + (float *)(param_4 + 0xf4)); + if ((iVar3 == 0) && (_DAT_004b76c4 == *(float *)(param_4 + 0xf4))) { + FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_HorizontalRotationPerSec_00510e04,(char *)0x0) + ; + uVar4 = 0; + } + else { + iVar3 = FUN_00404118(param_5,param_3,s_VerticalRotationPerSecond_00510e2b, + (float *)(param_4 + 0xf8)); + if ((iVar3 == 0) && (_DAT_004b76c4 == *(float *)(param_4 + 0xf8))) { + FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_VerticalRotationPerSecon_00510e45, + (char *)0x0); + uVar4 = 0; + } + else { + iVar3 = FUN_00404118(param_5,param_3,s_HorizontalLimitRight_00510e6a, + (float *)(param_4 + 0xfc)); + if ((iVar3 == 0) && (_DAT_004b76c4 == *(float *)(param_4 + 0xfc))) { + FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_HorizontalLimitRight__00510e7f,(char *)0x0 + ); + uVar4 = 0; + } + else { + iVar3 = FUN_00404118(param_5,param_3,s_HorizontalLimitLeft_00510e9f, + (float *)(param_4 + 0x100)); + if ((iVar3 == 0) && (_DAT_004b76c4 == *(float *)(param_4 + 0x100))) { + FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_HorizontalLimitLeft__00510eb3, + (char *)0x0); + uVar4 = 0; + } + else { + iVar3 = FUN_00404118(param_5,param_3,s_VerticalLimitTop_00510ed2, + (float *)(param_4 + 0x104)); + if ((iVar3 == 0) && (_DAT_004b76c4 == *(float *)(param_4 + 0x104))) { + FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_VerticalLimitTop__00510ee3,(char *)0x0 + ); + uVar4 = 0; + } + else { + iVar3 = FUN_00404118(param_5,param_3,s_VerticalLimitBottom_00510eff, + (float *)(param_4 + 0x108)); + if ((iVar3 == 0) && (_DAT_004b76c4 == *(float *)(param_4 + 0x108))) { + FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_VerticalLimitBottom__00510f13, + (char *)0x0); + uVar4 = 0; + } + else { + local_c = s_Unspecified_00510f32; + local_10 = s_Unspecified_00510f3e; + if (*(int *)(param_4 + 0x14c) != 0) { + iVar3 = FUN_00404088(param_5,param_3,s_TorsoHorizontalJoint_00510f4a,&local_c) + ; + if (iVar3 == 0) { + pcVar10 = s_Unspecified_00510f5f; + pcVar5 = local_c; + do { + bVar11 = *pcVar5 == *pcVar10; + if (!bVar11) break; + if (*pcVar5 == '\0') goto LAB_004b7420; + pcVar1 = pcVar5 + 1; + bVar11 = *pcVar1 == pcVar10[1]; + if (!bVar11) break; + pcVar5 = pcVar5 + 2; + pcVar10 = pcVar10 + 2; + bVar11 = *pcVar1 == '\0'; + } while (!bVar11); + if (!bVar11) { + FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_TorsoHorizontalJoint__00510f6b + ,(char *)0x0); + return 0; + } + } +LAB_004b7420: + pcVar10 = s_Unspecified_00510f8b; + pcVar5 = local_c; + do { + bVar11 = *pcVar5 == *pcVar10; + if (!bVar11) break; + if (*pcVar5 == '\0') goto LAB_004b7474; + pcVar1 = pcVar5 + 1; + bVar11 = *pcVar1 == pcVar10[1]; + if (!bVar11) break; + pcVar5 = pcVar5 + 2; + pcVar10 = pcVar10 + 2; + bVar11 = *pcVar1 == '\0'; + } while (!bVar11); + if (!bVar11) { + uVar8 = 0xffffffff; + pcVar5 = local_c; + do { + pcVar10 = pcVar5; + if (uVar8 == 0) break; + uVar8 = uVar8 - 1; + pcVar10 = pcVar5 + 1; + cVar2 = *pcVar5; + pcVar5 = pcVar10; + } while (cVar2 != '\0'); + uVar8 = ~uVar8; + pcVar5 = pcVar10 + -uVar8; + pcVar10 = param_4 + 0x10c; + for (uVar9 = uVar8 >> 2; uVar9 != 0; uVar9 = uVar9 - 1) { + *(undefined4 *)pcVar10 = *(undefined4 *)pcVar5; + pcVar5 = pcVar5 + 4; + pcVar10 = pcVar10 + 4; + } + for (uVar8 = uVar8 & 3; uVar8 != 0; uVar8 = uVar8 - 1) { + *pcVar10 = *pcVar5; + pcVar5 = pcVar5 + 1; + pcVar10 = pcVar10 + 1; + } + } +LAB_004b7474: + iVar3 = FUN_00404088(param_5,param_3,s_TorsoHorizontalShadowJoint_00510f97, + &local_10); + if (iVar3 == 0) { + pcVar10 = s_Unspecified_00510fb2; + pcVar5 = local_c; + do { + bVar11 = *pcVar5 == *pcVar10; + if (!bVar11) break; + if (*pcVar5 == '\0') goto LAB_004b74de; + pcVar1 = pcVar5 + 1; + bVar11 = *pcVar1 == pcVar10[1]; + if (!bVar11) break; + pcVar5 = pcVar5 + 2; + pcVar10 = pcVar10 + 2; + bVar11 = *pcVar1 == '\0'; + } while (!bVar11); + if (!bVar11) { + FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68, + s_missing_TorsoHorizontalShadowJoi_00510fbe,(char *)0x0); + return 0; + } + } +LAB_004b74de: + pcVar10 = s_Unspecified_00510fe4; + pcVar5 = local_10; + do { + bVar11 = *pcVar5 == *pcVar10; + if (!bVar11) break; + if (*pcVar5 == '\0') goto LAB_004b752e; + pcVar1 = pcVar5 + 1; + bVar11 = *pcVar1 == pcVar10[1]; + if (!bVar11) break; + pcVar5 = pcVar5 + 2; + pcVar10 = pcVar10 + 2; + bVar11 = *pcVar1 == '\0'; + } while (!bVar11); + if (!bVar11) { + uVar8 = 0xffffffff; + pcVar5 = local_10; + do { + pcVar10 = pcVar5; + if (uVar8 == 0) break; + uVar8 = uVar8 - 1; + pcVar10 = pcVar5 + 1; + cVar2 = *pcVar5; + pcVar5 = pcVar10; + } while (cVar2 != '\0'); + uVar8 = ~uVar8; + pcVar5 = pcVar10 + -uVar8; + pcVar10 = param_4 + 300; + for (uVar9 = uVar8 >> 2; uVar9 != 0; uVar9 = uVar9 - 1) { + *(undefined4 *)pcVar10 = *(undefined4 *)pcVar5; + pcVar5 = pcVar5 + 4; + pcVar10 = pcVar10 + 4; + } + for (uVar8 = uVar8 & 3; uVar8 != 0; uVar8 = uVar8 - 1) { + *pcVar10 = *pcVar5; + pcVar5 = pcVar5 + 1; + pcVar10 = pcVar10 + 1; + } + } +LAB_004b752e: + iVar3 = FUN_00404088(param_1,s_video_00510ff0,s_skeleton_00510ff6,&local_14); + if (iVar3 == 0) { + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_is_missing_skeleton_file__00510fff,(char *)0x0) + ; + return 0xffffffff; + } + piVar6 = (int *)FUN_004064fc(*(char **)(param_6 + 0x10),local_14); + piVar7 = (int *)FUN_00402298(0x20); + if (piVar7 == (int *)0x0) { + piVar7 = (int *)0x0; + } + else { + piVar7 = FUN_00403e84(piVar7,(char *)piVar6,1); + } + iVar3 = FUN_00403f84((int)piVar7,param_4 + 0x10c); + if (iVar3 == 0) { + FUN_004dbb24(&DAT_00524e20,param_4 + 0x10c,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_not_found_in_0051101b,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,local_14,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + FUN_004022d0(piVar6); + FUN_00403ecc(piVar7,3); + return 0xffffffff; + } + iVar3 = FUN_00403f84((int)piVar7,param_4 + 300); + if (iVar3 == 0) { + FUN_004dbb24(&DAT_00524e20,param_4 + 300,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_not_found_in_0051102a,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,local_14,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + FUN_004022d0(piVar6); + FUN_00403ecc(piVar7,3); + return 0xffffffff; + } + FUN_004022d0(piVar6); + FUN_00403ecc(piVar7,3); + } + uVar4 = 1; + } + } + } + } + } + } + } + } + } + return uVar4; +} + + + +/* @004b77bc file=? name=FUN_004b77bc */ + +void __cdecl FUN_004b77bc(int *param_1,int param_2) + +{ + if (param_2 != 0) { + param_1[0x86] = 0; + param_1[0x8b] = 0; + param_1[0x87] = 0; + param_1[0x8c] = 0; + } + param_1[0xa5] = 0; + param_1[0xa3] = 0; + param_1[0xa4] = 0; + FUN_004b1804(param_1); + return; +} + + + +/* @004b7810 file=? name=FUN_004b7810 */ + +void __cdecl FUN_004b7810(int param_1,undefined4 *param_2) + +{ + FUN_00408440((undefined4 *)(param_1 + 0x208),param_2); + return; +} + + + +/* @004b7830 file=? name=FUN_004b7830 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004b7830(int param_1,float param_2) + +{ + float fVar1; + int iVar2; + int iVar3; + undefined4 uVar4; + float10 fVar5; + float local_16c; + undefined4 local_168; + undefined4 local_164; + int local_160 [7]; + float local_144 [12]; + float local_114 [12]; + float local_e4 [12]; + float local_b4 [12]; + float local_84 [12]; + float local_54; + undefined4 local_50; + undefined4 local_4c; + float local_48 [3]; + float local_3c; + float local_38; + float local_34; + undefined4 local_30; + int local_2c; + int local_28; + float local_24; + undefined4 *local_20; + undefined4 *local_1c; + float local_18; + float local_14; + undefined4 local_10; + int local_c; + uint local_8; + + iVar2 = *(int *)(param_1 + 0xd0); + FUN_004b181c(param_1); + local_8 = (uint)(*(int *)(param_1 + 0x40) != 1); + if (*(int *)(param_1 + 0x198) == 2) { + local_8 = (uint)(local_8 != 0); + FUN_0041bbd8(param_1 + 0x238,0); + } + else if (*(int *)(param_1 + 0x198) == 4) { + local_8 = (uint)(local_8 != 0); + FUN_0041bbd8(param_1 + 0x238,1); + } + else { + FUN_0041bbd8(param_1 + 0x238,1); + local_8 = 0; + } + iVar3 = *(int *)(param_1 + 0x140); + if (iVar3 == 0) { + local_8 = (uint)(local_8 != 0); + FUN_0041bbd8(param_1 + 0x238,1); + } + else if (iVar3 == 1) { + local_8 = (uint)(local_8 != 0); + FUN_0041bbd8(param_1 + 0x238,0); + } + else if (iVar3 == 2) { + local_8 = 0; + FUN_0041bbd8(param_1 + 0x238,1); + } + if (*(int *)(param_1 + 0x24c) == 0) { + *(float *)(param_1 + 0x218) = param_2 + *(float *)(param_1 + 0x218); + if (*(float *)(param_1 + 0x218) != *(float *)(param_1 + 0x1d8)) { + *(undefined4 *)(param_1 + 0x218) = 0; + *(uint *)(param_1 + 0x224) = (uint)(*(int *)(param_1 + 0x224) == 0); + } + } + else if (*(int *)(param_1 + 0x24c) == 1) { + *(undefined4 *)(param_1 + 0x224) = 1; + } + if ((local_8 == 0) || (*(int *)(param_1 + 0x224) == 0)) { + local_8 = 0; + } + else { + local_8 = 1; + } + iVar3 = **(int **)(iVar2 + 0x128); + *(undefined4 *)(param_1 + 500) = 1; + iVar3 = *(int *)(iVar3 + 0x198); + if (iVar3 == 0) { + *(uint *)(iVar2 + 0x390) = *(uint *)(iVar2 + 0x390) | 1; + *(uint *)(iVar2 + 0x390) = *(uint *)(iVar2 + 0x390) & 0xfffffffd; + *(uint *)(param_1 + 500) = (uint)(*(int *)(param_1 + 500) != 0); + } + else if (iVar3 == 3) { + *(uint *)(iVar2 + 0x390) = *(uint *)(iVar2 + 0x390) | 2; + *(uint *)(iVar2 + 0x390) = *(uint *)(iVar2 + 0x390) & 0xfffffffe; + if ((*(int *)(param_1 + 500) == 0) || (*(int *)(iVar2 + 0x410) == 0)) { + uVar4 = 0; + } + else { + uVar4 = 1; + } + *(undefined4 *)(param_1 + 500) = uVar4; + } + else { + *(undefined4 *)(param_1 + 500) = 0; + } + if (*(int *)(param_1 + 500) == 0) { + *(undefined4 *)(iVar2 + 0x374) = 0; + } + else { + *(undefined4 *)(iVar2 + 0x374) = 1; + } + if (local_8 == 0) { + *(uint *)(iVar2 + 0x390) = *(uint *)(iVar2 + 0x390) & 0xffffffdf; + } + else { + *(uint *)(iVar2 + 0x390) = *(uint *)(iVar2 + 0x390) | 0x20; + } + iVar3 = *(int *)(iVar2 + 0x388); + if (((iVar3 == 0) || (*(int *)(iVar3 + 0x120) == 0)) || + (_DAT_004b7ec4 <= *(float *)(*(int *)(param_1 + 0xe0) + 0x158))) { + *(undefined4 *)(param_1 + 0x1f8) = 0; + } + else { + local_c = *(int *)(iVar2 + 0x38c); + if (local_c == -1) { + local_c = 0; + } + if (_DAT_004b7ec8 <= *(float *)(*(int *)(*(int *)(iVar3 + 0x120) + local_c * 4) + 0x158)) { + *(undefined4 *)(param_1 + 0x1f8) = 0; + } + else { + *(undefined4 *)(param_1 + 0x1f8) = 1; + } + } + if (*(int *)(iVar2 + 0x388) == 0) { + *(undefined4 *)(param_1 + 0x1ec) = 0x44960000; + } + else if (*(int *)(param_1 + 0x22c) == 0) { + FUN_00408644(&local_3c,(float *)(iVar2 + 0x37c),(float *)(iVar2 + 0x100)); + fVar5 = FUN_004dd138((double)(local_34 * local_34 + local_38 * local_38 + local_3c * local_3c)); + *(float *)(param_1 + 0x1ec) = (float)fVar5; + } + if (*(int *)(param_1 + 0x22c) != 0) { + *(float *)(param_1 + 0x1ec) = *(float *)(param_1 + 0x1ec) - _DAT_004b7ecc; + *(float *)(param_1 + 0x21c) = param_2 + *(float *)(param_1 + 0x21c); + if (*(float *)(param_1 + 0x1d8) <= *(float *)(param_1 + 0x21c)) { + *(undefined4 *)(param_1 + 0x21c) = 0; + *(undefined4 *)(param_1 + 0x22c) = 0; + } + } + local_10 = 0x43fa0000; + if (param_2 * 500.0 <= _DAT_004b7ed0) { + local_14 = param_2 * -500.0; + } + else { + local_14 = param_2 * 500.0; + } + local_18 = *(float *)(param_1 + 0x1ec) - *(float *)(param_1 + 0x230); + if (-local_14 <= local_18) { + if (local_14 < local_18) { + local_18 = local_14; + } + } + else { + local_18 = -local_14; + } + local_20 = (undefined4 *)(param_1 + 0x1dc); + *(float *)(param_1 + 0x1ec) = *(float *)(param_1 + 0x230) + local_18; + *(undefined4 *)(param_1 + 0x230) = *(undefined4 *)(param_1 + 0x1ec); + local_1c = (undefined4 *)(*(int *)(param_1 + 0x234) + 0x1d8); + *local_20 = *local_1c; + *(undefined4 *)(param_1 + 0x1e8) = *(undefined4 *)(*(int *)(param_1 + 0x234) + 0x1e8); + FUN_0040954c(local_48,(float *)(iVar2 + 0x10c)); + local_24 = local_48[0] + *(float *)(param_1 + 0x1dc); + *(float *)(param_1 + 0x214) = local_24; + local_28 = *(int *)(iVar2 + 400); + local_2c = *(int *)(local_28 + 0x284); + if (local_2c == 0) { + FUN_00408440((undefined4 *)(param_1 + 0x1fc),&DAT_004e0f74); + } + else { + FUN_0040aadc(local_84); + FUN_0040aadc(local_b4); + FUN_0040aadc(local_e4); + FUN_0040aadc(local_114); + FUN_0040aadc(local_144); + local_30 = *(undefined4 *)(param_1 + 0xdc); + FUN_0041f216(local_160,iVar2 + 0x300); + iVar3 = (**(code **)(local_160[0] + 0x34))(local_160); + FUN_0041f235(local_160,2); + FUN_00424da8(iVar2,iVar3,local_84); + FUN_0040bc54(local_b4,local_84); + FUN_0040ac6c(local_144,(float *)(iVar2 + 0x360)); + FUN_0040bc54(local_114,local_144); + FUN_0040b104(local_e4,local_b4,local_114); + FUN_00408440(&local_54,(undefined4 *)(local_2c + 0x100)); + local_16c = local_54; + local_168 = local_50; + local_164 = local_4c; + FUN_00408b98(&local_54,&local_16c,local_e4); + FUN_00408440((undefined4 *)(param_1 + 0x1fc),&local_54); + } + if (*(int *)(local_28 + 0x274) == 0) { + *(uint *)(iVar2 + 0x390) = *(uint *)(iVar2 + 0x390) & 0xffffffef; + } + else { + *(uint *)(iVar2 + 0x390) = *(uint *)(iVar2 + 0x390) | 0x10; + } + if ((*(float *)(param_1 + 0x28c) == _DAT_004b7ed0) || (*(int *)(param_1 + 0x2a0) != 0)) { + if (*(int *)(param_1 + 0x2a0) != 0) { + uVar4 = FUN_004b7ed4(param_1,param_2); + *(undefined4 *)(param_1 + 0x2a0) = uVar4; + } + } + else { + *(float *)(param_1 + 0x294) = + -*(float *)(param_1 + 0x28c) * *(float *)(param_1 + 0x298) * param_2 + + *(float *)(param_1 + 0x294); + if (*(float *)(param_1 + 0x294) <= *(float *)(param_1 + 0x29c)) { + uVar4 = *(undefined4 *)(param_1 + 0x294); + } + else { + uVar4 = *(undefined4 *)(param_1 + 0x29c); + } + *(undefined4 *)(param_1 + 0x294) = uVar4; + if (-*(float *)(param_1 + 0x29c) <= *(float *)(param_1 + 0x294)) { + fVar1 = *(float *)(param_1 + 0x294); + } + else { + fVar1 = -*(float *)(param_1 + 0x29c); + } + *(float *)(param_1 + 0x294) = fVar1; + } + *(undefined4 *)(iVar2 + 0x36c) = *(undefined4 *)(param_1 + 0x294); + return; +} + + + +/* @004b7ed4 file=? name=FUN_004b7ed4 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl FUN_004b7ed4(int param_1,float param_2) + +{ + float fVar1; + float fVar2; + + fVar1 = *(float *)(param_1 + 0x298) * param_2; + if (_DAT_004b7f90 < *(float *)(param_1 + 0x294)) { + *(float *)(param_1 + 0x294) = *(float *)(param_1 + 0x294) - fVar1; + fVar2 = _DAT_004b7f90; + if (_DAT_004b7f90 <= *(float *)(param_1 + 0x294)) { + fVar2 = *(float *)(param_1 + 0x294); + } + *(float *)(param_1 + 0x294) = fVar2; + } + if (*(float *)(param_1 + 0x294) < _DAT_004b7f90) { + *(float *)(param_1 + 0x294) = fVar1 + *(float *)(param_1 + 0x294); + fVar1 = _DAT_004b7f90; + if (*(float *)(param_1 + 0x294) < _DAT_004b7f90) { + fVar1 = *(float *)(param_1 + 0x294); + } + *(float *)(param_1 + 0x294) = fVar1; + } + if (*(float *)(param_1 + 0x294) != _DAT_004b7f90) { + return 1; + } + return 0; +} + + + +/* @004b7f94 file=? name=FUN_004b7f94 */ + +int * __cdecl FUN_004b7f94(int *param_1,int param_2,undefined4 param_3,char *param_4) + +{ + int iVar1; + + FUN_004b18a4(param_1,param_2,param_3,param_4,&DAT_00511078); + *param_1 = (int)&PTR_FUN_00511510; + param_1[0x76] = 0; + param_1[0x77] = 0; + param_1[0x78] = 0; + param_1[0x79] = 0; + param_1[0x7a] = 0; + param_1[0x7b] = 0; + param_1[0x7d] = 1; + param_1[0x7e] = 0; + param_1[0x7f] = DAT_004e0f74; + param_1[0x80] = DAT_004e0f78; + param_1[0x81] = DAT_004e0f7c; + param_1[0x82] = DAT_004e0f74; + param_1[0x83] = DAT_004e0f78; + param_1[0x84] = DAT_004e0f7c; + param_1[0x85] = 0; + param_1[0x86] = 0; + param_1[0x87] = 0; + param_1[0x88] = 0; + param_1[0x89] = 1; + param_1[0x8a] = 0; + param_1[0x8b] = 0; + param_1[0x8c] = 0; + FUN_0041b9ec(param_1 + 0x8e,2); + param_1[0xa3] = 0; + param_1[0xa4] = 0; + param_1[0xa5] = 0; + if (((*(uint *)(param_2 + 0x28) & 0xc) == 0) && ((*(uint *)(param_2 + 0x28) & 0x100) != 0)) { + param_1[7] = (int)PTR_FUN_00511170; + param_1[8] = DAT_00511174; + param_1[9] = DAT_00511178; + } + param_1[0x76] = *(int *)(param_4 + 0xf4); + param_1[0xa6] = *(int *)(param_4 + 0xfc); + param_1[0xa7] = *(int *)(param_4 + 0x100); + iVar1 = *(int *)(param_2 + 0x438); + param_1[0x8d] = iVar1; + param_1[0x78] = *(int *)(iVar1 + 0x1dc); + param_1[0x79] = *(int *)(param_1[0x8d] + 0x1e0); + param_1[0x77] = *(int *)(param_1[0x8d] + 0x1d8); + param_1[0x7a] = *(int *)(param_1[0x8d] + 0x1e8); + return param_1; +} + + + +/* @004b816c file=? name=FUN_004b816c */ + +void __cdecl FUN_004b816c(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_00511510; + *(undefined4 *)(param_1[0x34] + 0x374) = 0; + FUN_0041baa4(param_1 + 0x8e,2); + FUN_004b1930(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004b81b8 file=? name=FUN_004b81b8 */ + +void __cdecl FUN_004b81b8(int param_1) + +{ + FUN_0041a1a4(**(int **)(param_1 + 0xc),0x511088); + return; +} + + + +/* @004b81d4 file=? name=FUN_004b81d4 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl +FUN_004b81d4(int param_1,char *param_2,char *param_3,char *param_4,int param_5,int param_6, + int param_7) + +{ + int iVar1; + undefined4 uVar2; + + iVar1 = FUN_004b198c(param_1,param_2,param_3,param_4,param_5,param_6,param_7); + if (iVar1 == 0) { + uVar2 = 0; + } + else { + param_4[0x24] = '\x04'; + param_4[0x25] = '\x01'; + param_4[0x26] = '\0'; + param_4[0x27] = '\0'; + param_4[0x20] = -0x2a; + param_4[0x21] = '\v'; + param_4[0x22] = '\0'; + param_4[0x23] = '\0'; + if (param_7 == 1) { + param_4[0xf4] = '\0'; + param_4[0xf5] = '\0'; + param_4[0xf6] = -0x80; + param_4[0xf7] = -0x41; + *(undefined4 *)(param_4 + 0xf8) = *(undefined4 *)(param_4 + 0x28); + } + if ((*(int *)(param_4 + 0xf8) == -1) && (1 < param_7)) { + FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_missing_SegmentPageName__00511395,(char *)0x0); + uVar2 = 0; + } + else { + if (1 < param_7) { + *(undefined4 *)(param_4 + 0x28) = *(undefined4 *)(param_4 + 0xf8); + } + iVar1 = FUN_00404118(param_5,param_3,s_FlickerRate_005113af,(float *)(param_4 + 0xf4)); + if ((iVar1 == 0) && (_DAT_004b8388 == *(float *)(param_4 + 0xf4))) { + FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_FlickerRate__005113bb,(char *)0x0); + uVar2 = 0; + } + else { + iVar1 = FUN_00404118(param_5,param_3,s_HorizontalMovementPerSecond_005113d2, + (float *)(param_4 + 0xfc)); + if ((iVar1 == 0) && (_DAT_004b8388 == *(float *)(param_4 + 0xfc))) { + FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_HorizontalMovementPerSec_005113ee,(char *)0x0) + ; + uVar2 = 0; + } + else { + iVar1 = FUN_00404118(param_5,param_3,s_HorizontalLimit_00511415,(float *)(param_4 + 0x100) + ); + if ((iVar1 == 0) && (_DAT_004b8388 == *(float *)(param_4 + 0x100))) { + FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_HorizontalLimit__00511425,(char *)0x0); + uVar2 = 0; + } + else { + uVar2 = 1; + } + } + } + } + } + return uVar2; +} + + + +/* @004b83b8 file=? name=FUN_004b83b8 */ + +void __cdecl FUN_004b83b8(int param_1,int param_2) + +{ + int iVar1; + + FUN_0041bd34(param_1,param_2); + iVar1 = *(int *)(param_2 + 0x10); + *(int *)(param_1 + 0x1d8) = iVar1; + FUN_0041bbd8(param_1 + 0x1e4,iVar1); + return; +} + + + +/* @004b83f0 file=? name=FUN_004b83f0 */ + +void __cdecl FUN_004b83f0(int param_1,undefined4 *param_2,undefined2 param_3) + +{ + FUN_0041c500(param_1,param_2,param_3); + *param_2 = 0x14; + param_2[4] = *(undefined4 *)(param_1 + 0x1d8); + return; +} + + + +/* @004b841c file=? name=FUN_004b841c */ + +void __cdecl FUN_004b841c(int param_1) + +{ + int iVar1; + + FUN_004b181c(param_1); + iVar1 = *(int *)(param_1 + 0x1d8); + if (*(int *)(param_1 + 0x40) == 1) { + *(undefined4 *)(param_1 + 0x1d8) = 0; + } + else { + *(undefined4 *)(param_1 + 0x1d8) = *(undefined4 *)(param_1 + 0x1e0); + } + if (*(int *)(param_1 + 0x198) == 4) { + *(uint *)(param_1 + 0x1d8) = (uint)(*(int *)(param_1 + 0x1d8) != 0); + } + else { + *(undefined4 *)(param_1 + 0x1d8) = 0; + } + if (*(uint *)(param_1 + 0x140) < 2) { + *(uint *)(param_1 + 0x1d8) = (uint)(*(int *)(param_1 + 0x1d8) != 0); + } + else if (*(uint *)(param_1 + 0x140) == 2) { + *(undefined4 *)(param_1 + 0x1d8) = 0; + } + FUN_0041bbd8(param_1 + 0x1e4,*(int *)(param_1 + 0x1d8)); + if (iVar1 != *(int *)(param_1 + 0x1d8)) { + *(ushort *)(param_1 + 0x18) = *(ushort *)(param_1 + 0x18) | 1; + } + return; +} + + + +/* @004b84dc file=? name=FUN_004b84dc */ + +int * __cdecl FUN_004b84dc(int *param_1,int param_2,undefined4 param_3,char *param_4) + +{ + FUN_004b18a4(param_1,param_2,param_3,param_4,&DAT_00511198); + *param_1 = (int)&PTR_FUN_005114d4; + param_1[0x76] = 0; + param_1[0x78] = 0; + FUN_0041b9ec(param_1 + 0x79,2); + param_1[0x77] = *(int *)(param_4 + 0x28); + if (((*(uint *)(param_2 + 0x28) & 0xc) == 0) && ((*(uint *)(param_2 + 0x28) & 0x100) != 0)) { + param_1[7] = (int)PTR_FUN_00511200; + param_1[8] = DAT_00511204; + param_1[9] = DAT_00511208; + } + else { + param_1[10] = param_1[10] | 2; + } + return param_1; +} + + + +/* @004b8568 file=? name=FUN_004b8568 */ + +void __cdecl FUN_004b8568(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_005114d4; + FUN_0041baa4(param_1 + 0x79,2); + FUN_004b1930(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004b85a8 file=? name=FUN_004b85a8 */ + +undefined4 __cdecl +FUN_004b85a8(int param_1,char *param_2,char *param_3,char *param_4,int param_5,int param_6, + int param_7) + +{ + int iVar1; + + iVar1 = FUN_004b198c(param_1,param_2,param_3,param_4,param_5,param_6,param_7); + if (iVar1 == 0) { + return 0; + } + param_4[0x24] = -0xc; + param_4[0x25] = '\0'; + param_4[0x26] = '\0'; + param_4[0x27] = '\0'; + param_4[0x20] = -0x28; + param_4[0x21] = '\v'; + param_4[0x22] = '\0'; + param_4[0x23] = '\0'; + return 1; +} + + + +/* @004b85f0 file=? name=FUN_004b85f0 */ + +void __cdecl FUN_004b85f0(int param_1) + +{ + FUN_0041a1a4(**(int **)(param_1 + 0xc),0x5111a8); + return; +} + + + +/* @004b860c file=? name=FUN_004b860c */ + +void __cdecl FUN_004b860c(int param_1,int param_2) + +{ + if ((0 < *(int *)(param_2 + 0xc)) && + (*(int *)(*(int *)(*(int *)(param_1 + 0xd0) + 400) + 0x25c) != 0)) { + *(uint *)(param_1 + 0x1dc) = (uint)(*(int *)(param_1 + 0x1dc) == 0); + } + return; +} + + + +/* @004b8648 file=? name=FUN_004b8648 */ + +void __cdecl FUN_004b8648(int param_1) + +{ + int iVar1; + + FUN_004b181c(param_1); + iVar1 = *(int *)(param_1 + 0x1d8); + if (*(int *)(param_1 + 0x40) == 1) { + *(undefined4 *)(param_1 + 0x1d8) = 0; + } + else { + *(undefined4 *)(param_1 + 0x1d8) = *(undefined4 *)(param_1 + 0x1dc); + } + if (*(int *)(param_1 + 0x198) == 4) { + *(uint *)(param_1 + 0x1d8) = (uint)(*(int *)(param_1 + 0x1d8) != 0); + } + else { + *(undefined4 *)(param_1 + 0x1d8) = 0; + } + if (*(uint *)(param_1 + 0x140) < 2) { + *(uint *)(param_1 + 0x1d8) = (uint)(*(int *)(param_1 + 0x1d8) != 0); + } + else if (*(uint *)(param_1 + 0x140) == 2) { + *(undefined4 *)(param_1 + 0x1d8) = 0; + } + FUN_0041bbd8(param_1 + 0x1e0,*(int *)(param_1 + 0x1d8)); + if ((iVar1 != *(int *)(param_1 + 0x1d8)) && (*(int *)(*(int *)PTR_DAT_004fd4b8 + 0x48) != 0)) { + FUN_0045fe44(); + } + return; +} + + + +/* @004b8718 file=? name=FUN_004b8718 */ + +int * __cdecl FUN_004b8718(int *param_1,int param_2,undefined4 param_3,char *param_4) + +{ + FUN_004b18a4(param_1,param_2,param_3,param_4,&DAT_00511228); + *param_1 = (int)&PTR_FUN_00511498; + param_1[0x76] = 0; + param_1[0x77] = 0; + FUN_0041b9ec(param_1 + 0x78,2); + if (((*(uint *)(param_2 + 0x28) & 0xc) == 0) && ((*(uint *)(param_2 + 0x28) & 0x100) != 0)) { + param_1[7] = (int)PTR_FUN_00511290; + param_1[8] = DAT_00511294; + param_1[9] = DAT_00511298; + } + return param_1; +} + + + +/* @004b8794 file=? name=FUN_004b8794 */ + +void __cdecl FUN_004b8794(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_00511498; + FUN_0041baa4(param_1 + 0x78,2); + FUN_004b1930(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004b87d4 file=? name=FUN_004b87d4 */ + +undefined4 __cdecl +FUN_004b87d4(int param_1,char *param_2,char *param_3,char *param_4,int param_5,int param_6, + int param_7) + +{ + int iVar1; + + iVar1 = FUN_004b198c(param_1,param_2,param_3,param_4,param_5,param_6,param_7); + if (iVar1 == 0) { + return 0; + } + param_4[0x24] = -0xc; + param_4[0x25] = '\0'; + param_4[0x26] = '\0'; + param_4[0x27] = '\0'; + param_4[0x20] = -0x22; + param_4[0x21] = '\v'; + param_4[0x22] = '\0'; + param_4[0x23] = '\0'; + return 1; +} + + + +/* @004b881c file=? name=FUN_004b881c */ + +void __cdecl FUN_004b881c(int param_1) + +{ + FUN_0041a1a4(**(int **)(param_1 + 0xc),0x511238); + return; +} + + + +/* @004b8a8c file=? name=FUN_004b8a8c */ + +void __cdecl FUN_004b8a8c(int *param_1,int *param_2) + +{ + FUN_004b0efc(param_1,param_2); + return; +} + + + +/* @004b8aa4 file=? name=FUN_004b8aa4 */ + +void __cdecl FUN_004b8aa4(int *param_1,int param_2) + +{ + FUN_004b0e6c(param_1,param_2); + return; +} + + + +/* @004b8ac0 file=? name=FUN_004b8ac0 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 __cdecl FUN_004b8ac0(int param_1,float param_2) + +{ + float fVar1; + float fVar2; + undefined4 local_10; + + fVar1 = *(float *)(*(int *)(param_1 + 0xd0) + 0x34c) * + (param_2 / *(float *)(param_1 + 0x330 + *(int *)(param_1 + 0x324) * 4)); + if (*(float *)(param_1 + 0x118) <= *(float *)(param_1 + 0x114)) { + if (*(float *)(param_1 + 0x11c) <= *(float *)(param_1 + 0x114)) { + local_10 = 0.0; + } + else { + fVar2 = *(float *)(param_1 + 0x114) - *(float *)(param_1 + 0x118); + if (fVar1 == _DAT_004b8b94) { + local_10 = 1.0; + } + else { + local_10 = (fVar1 - fVar2 * fVar2 * (fVar1 / *(float *)(param_1 + 0x34c))) / fVar1; + } + } + } + else { + local_10 = 1.0; + } + return (float10)((_DAT_004b8b98 - *(float *)(*(int *)(param_1 + 0xe0) + 0x158)) * fVar1 * local_10 + ); +} + + + +/* @004b8d18 file=? name=FUN_004b8d18 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004b8d18(int param_1,float param_2) + +{ + float fVar1; + float fVar2; + float fVar3; + float fVar4; + float fVar5; + float fVar6; + float fVar7; + float fVar8; + float fVar9; + float fVar10; + float fVar11; + int iVar12; + float10 fVar13; + + iVar12 = *(int *)(param_1 + 0xd0); + fVar1 = *(float *)(iVar12 + 0x1c4); + fVar2 = *(float *)(iVar12 + 0x1c4); + fVar3 = *(float *)(iVar12 + 0x1c8); + fVar4 = *(float *)(iVar12 + 0x1c8); + fVar5 = *(float *)(iVar12 + 0x1cc); + fVar6 = *(float *)(iVar12 + 0x1cc); + fVar13 = FUN_004dd138((double)(*(float *)(iVar12 + 0x1cc) * *(float *)(iVar12 + 0x1cc) + + *(float *)(iVar12 + 0x1c8) * *(float *)(iVar12 + 0x1c8) + + *(float *)(iVar12 + 0x1c4) * *(float *)(iVar12 + 0x1c4))); + fVar7 = (float)fVar13; + fVar13 = FUN_004dd138((double)(*(float *)(iVar12 + 0x834) * *(float *)(iVar12 + 0x834) + + *(float *)(iVar12 + 0x830) * *(float *)(iVar12 + 0x830) + + *(float *)(iVar12 + 0x82c) * *(float *)(iVar12 + 0x82c))); + fVar8 = (float)fVar13; + fVar9 = *(float *)(iVar12 + 0x1c8); + fVar10 = *(float *)(iVar12 + 0x20c); + fVar11 = **(float **)(iVar12 + 0x250); + fVar1 = fVar10 * (fVar5 * fVar6 + fVar3 * fVar4 + fVar1 * fVar2) * _DAT_004b8ee4; + if (fVar8 <= _DAT_004b8ee8) { + fVar8 = -fVar8; + } + if (fVar7 <= _DAT_004b8ee8) { + fVar7 = -fVar7; + } + if (fVar9 <= _DAT_004b8ee8) { + fVar9 = -fVar9; + } + fVar3 = _DAT_004b8eec - *(float *)(param_1 + 0x354); + fVar5 = _DAT_004b8eec - *(float *)(param_1 + 0x350); + fVar4 = _DAT_004b8eec - *(float *)(param_1 + 0x354); + fVar6 = _DAT_004b8eec + *(float *)(*(int *)(param_1 + 0xe0) + 0x158); + fVar2 = *(float *)(param_1 + 0x330 + *(int *)(param_1 + 800) * 4) / + *(float *)(param_1 + 0x330 + *(int *)(param_1 + 0x324) * 4); + if (fVar2 < _DAT_004b8eec) { + fVar2 = _DAT_004b8eec; + } + iVar12 = FUN_004ad7d4(param_1); + if (iVar12 != 0) { + *(float *)(param_1 + 0x1c8) = + fVar2 * fVar2 * + fVar6 * (fVar4 * fVar9 * fVar10 * fVar11 * param_2 + + fVar5 * fVar1 + fVar3 * fVar7 * fVar8 * fVar10 * param_2) + + *(float *)(param_1 + 0x1c8); + } + return; +} + + + +/* @004b8ef0 file=? name=FUN_004b8ef0 */ + +void __cdecl FUN_004b8ef0(int param_1) + +{ + float fVar1; + int iVar2; + float10 fVar3; + + iVar2 = *(int *)(param_1 + 0xd0); + fVar3 = FUN_004b8ac0(param_1,*(float *)(param_1 + 0x330 + *(int *)(param_1 + 0x32c) * 4)); + fVar1 = (float)fVar3; + if (fVar1 < *(float *)(iVar2 + 0x7a0)) { + fVar1 = *(float *)(iVar2 + 0x7a0); + } + *(float *)(iVar2 + 0x7a0) = fVar1; + return; +} + + + +/* @004b8f3c file=? name=FUN_004b8f3c */ + +undefined4 __cdecl FUN_004b8f3c(int param_1,int param_2) + +{ + if (param_2 == 0) { + param_2 = FUN_00417ab4(param_1 + 0x1d0); + } + if (param_2 == 0) { + return 0; + } + if ((*(float *)(param_1 + 0x330 + *(int *)(param_1 + 800) * 4) <= *(float *)(param_2 + 0x1dc)) && + (*(int *)(param_2 + 0x210) == 2)) { + return 1; + } + return 0; +} + + + +/* @004b8f94 file=? name=FUN_004b8f94 */ + +void __cdecl FUN_004b8f94(int param_1,float param_2) + +{ + float10 fVar1; + + fVar1 = FUN_004b8ac0(param_1,param_2); + FUN_004dd138((double)(((float)(fVar1 * (float10)3.6) - 0.0) / 350.0)); + return; +} + + + +/* @004b8fec file=? name=FUN_004b8fec */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +int * __cdecl FUN_004b8fec(int *param_1,int param_2,undefined4 param_3,char *param_4) + +{ + int iVar1; + int iVar2; + float *pfVar3; + float *pfVar4; + + FUN_004b0f74(param_1,param_2,param_3,param_4,&DAT_0051154c,0,0); + *param_1 = (int)&PTR_LAB_005117dc; + param_1[199] = 0x3f800000; + param_1[0xd2] = (int)((float)param_1[0x47] - (float)param_1[0x46]); + param_1[0xd3] = (int)((float)param_1[0xd2] * (float)param_1[0xd2]); + param_1[0xd4] = *(int *)(param_4 + 400); + param_1[0xd5] = *(int *)(param_4 + 0x194); + param_1[0x54] = 0x3e19999a; + if (((*(uint *)(param_2 + 0x28) & 0xc) == 0) && ((*(uint *)(param_2 + 0x28) & 0x100) != 0)) { + param_1[7] = (int)PTR_LAB_00511620; + param_1[8] = DAT_00511624; + param_1[9] = DAT_00511628; + } + iVar1 = FUN_00417ab4((int)(param_1 + 0x74)); + param_1[10] = param_1[10] | 8; + iVar2 = 0; + pfVar4 = (float *)(param_1 + 0xcc); + pfVar3 = (float *)(param_4 + 0x198); + do { + if (*pfVar3 == _DAT_004b9110) { + param_1[0xcb] = iVar2 + -1; + break; + } + *pfVar4 = *pfVar3 * *(float *)(iVar1 + 0x1d8); + iVar2 = iVar2 + 1; + pfVar4 = pfVar4 + 1; + pfVar3 = pfVar3 + 1; + } while (iVar2 < 5); + iVar1 = *(int *)(param_4 + 0x1ac); + param_1[0xc9] = iVar1; + param_1[200] = iVar1; + param_1[0xca] = 0; + return param_1; +} + + + +/* @004b9140 file=? name=FUN_004b9140 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl +FUN_004b9140(int param_1,char *param_2,char *param_3,char *param_4,int param_5,int param_6, + int param_7) + +{ + int *piVar1; + uint *puVar2; + undefined4 *puVar3; + int iVar4; + undefined4 uVar5; + char *pcVar6; + undefined4 *puVar7; + uint *puVar8; + char cVar9; + float10 fVar10; + float *local_1c; + int *local_10; + int *local_c; + int *local_8; + + iVar4 = FUN_004b13ac(param_1,param_2,param_3,param_4,param_5,param_6,param_7); + if (iVar4 == 0) { + uVar5 = 0; + } + else { + param_4[0x24] = -0x50; + param_4[0x25] = '\x01'; + param_4[0x26] = '\0'; + param_4[0x27] = '\0'; + param_4[0x20] = -0x3a; + param_4[0x21] = '\v'; + param_4[0x22] = '\0'; + param_4[0x23] = '\0'; + if (param_7 == 1) { + param_4[400] = '\0'; + param_4[0x191] = '\0'; + param_4[0x192] = -0x80; + param_4[0x193] = -0x41; + param_4[0x194] = '\0'; + param_4[0x195] = '\0'; + param_4[0x196] = -0x80; + param_4[0x197] = -0x41; + iVar4 = 0; + pcVar6 = param_4 + 0x198; + do { + pcVar6[0] = '\0'; + pcVar6[1] = '\0'; + pcVar6[2] = -0x80; + pcVar6[3] = -0x41; + iVar4 = iVar4 + 1; + pcVar6 = pcVar6 + 4; + } while (iVar4 < 5); + param_4[0x1ac] = -1; + param_4[0x1ad] = -1; + param_4[0x1ae] = -1; + param_4[0x1af] = -1; + } + iVar4 = FUN_00404118(param_5,param_3,s_VelocityEfficiency_00511709,(float *)(param_4 + 400)); + if ((iVar4 == 0) && (_DAT_004b9470 == *(float *)(param_4 + 400))) { + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_Missing_VelocityEfficiency__0051171c,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + uVar5 = 0; + } + else { + iVar4 = FUN_00404118(param_5,param_3,s_AccelerationEfficiency_00511739, + (float *)(param_4 + 0x194)); + if ((iVar4 == 0) && (_DAT_004b9470 == *(float *)(param_4 + 0x194))) { + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_Missing_AccelerationEfficiency__00511750,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + uVar5 = 0; + } + else { + local_8 = FUN_00404720(param_5,param_3,s_SeekVoltage_00511771); + iVar4 = FUN_00403b60((int)local_8); + if ((iVar4 == 0) && (*(int *)(param_4 + 0x1ac) == -1)) { + if (local_8 != (int *)0x0) { + (**(code **)*local_8)(local_8,3); + } + FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_missing_SeekVoltage_0051177d,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + } + else { + local_1c = (float *)(param_4 + 0x198); + puVar3 = (undefined4 *)local_8[1]; + while (puVar3 != (undefined4 *)0x0) { + puVar7 = (undefined4 *)FUN_00402298(0x10); + if (puVar7 == (undefined4 *)0x0) { + local_c = (int *)0x0; + } + else { + local_c = (int *)FUN_004023f4(puVar7); + } + local_c[3] = local_c[3] + 1; + FUN_00402a98((int *)&local_10,(int *)&local_c,(char *)(puVar3 + 2)); + piVar1 = local_10 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_10,3); + } + puVar8 = (uint *)FUN_00402298(0x10); + if (puVar8 == (uint *)0x0) { + puVar8 = (uint *)0x0; + } + else { + puVar8 = FUN_00402460(puVar8,s_SeekVoltageRecommendedIndex_00511793); + } + puVar8[3] = puVar8[3] + 1; + iVar4 = FUN_004027d8((int)local_c,(int)puVar8); + cVar9 = iVar4 == 0; + puVar2 = puVar8 + 3; + *puVar2 = *puVar2 - 1; + if (*puVar2 == 0) { + FUN_004024d8((int *)puVar8,3); + } + if (cVar9 == '\0') { + fVar10 = (float10)FUN_004dd1cc(puVar3[1]); + *local_1c = (float)fVar10; + local_1c = local_1c + 1; + } + else { + iVar4 = FUN_004dd1e0((char *)puVar3[1]); + *(int *)(param_4 + 0x1ac) = iVar4; + } + puVar3 = (undefined4 *)*puVar3; + piVar1 = local_c + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_c,3); + } + } + if (*(int *)(param_4 + 0x1ac) == -1) { + FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_missing_SeekVoltageRecommendedIn_005117af,(char *)0x0); + if (local_8 != (int *)0x0) { + (**(code **)*local_8)(local_8,3); + } + return 0; + } + if (local_8 != (int *)0x0) { + (**(code **)*local_8)(local_8,3); + } + } + uVar5 = 1; + } + } + } + return uVar5; +} + + + +/* @004b9550 file=? name=FUN_004b9550 */ + +void __cdecl FUN_004b9550(int param_1,int param_2) + +{ + int *piVar1; + int iVar2; + uint uVar3; + + uVar3 = (int)*(uint *)(param_2 + 0xc) >> 0x1f; + iVar2 = ((*(uint *)(param_2 + 0xc) ^ uVar3) - uVar3) + -1; + piVar1 = (int *)**(undefined4 **)(*(int *)(param_1 + 0xd0) + 0x128); + if (*(int *)(param_2 + 0xc) < 1) { + (**(code **)(*piVar1 + 0x3c))(piVar1,iVar2); + *(undefined4 *)(param_1 + 0x110) = 0xffffffff; + } + else { + *(undefined4 *)(param_1 + 0x110) = 0; + (**(code **)(*piVar1 + 0x38))(piVar1,iVar2,param_1 + 0x31c,param_1,10,9,0); + } + return; +} + + + +/* @004b95b8 file=? name=FUN_004b95b8 */ + +void __cdecl FUN_004b95b8(int param_1,int param_2) + +{ + int *piVar1; + + if (0 < *(int *)(param_2 + 0xc)) { + piVar1 = (int *)**(undefined4 **)(*(int *)(param_1 + 0xd0) + 0x128); + (**(code **)(*piVar1 + 0x44))(piVar1,*(int *)(param_2 + 0xc),param_1 + 0x31c); + } + return; +} + + + +/* @004b95ec file=bt/mechweap.cpp name=FUN_004b95ec */ + +void FUN_004b95ec(void) + +{ + FUN_0040385c(s_MechWeapon_abstract_class_should_00511a4c,s_d__tesla_bt_bt_MECHWEAP_CPP_00511a86, + 0xc9); + return; +} + + + +/* @004b9608 file=? name=FUN_004b9608 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl FUN_004b9608(int param_1) + +{ + undefined4 uVar1; + + if (((float)*(int *)(param_1 + 0x31c) <= _DAT_004b9648) || + (_DAT_004b9648 < (float)*(int *)(param_1 + 0x3a4))) { + uVar1 = 0; + } + else { + uVar1 = 1; + } + *(undefined4 *)(param_1 + 0x3a4) = *(undefined4 *)(param_1 + 0x31c); + return uVar1; +} + + + +/* @004b964c file=? name=FUN_004b964c */ + +void __cdecl FUN_004b964c(int param_1,int param_2) + +{ + FUN_0041bd34(param_1,param_2); + if (*(int *)(param_2 + 0x14) != 0) { + FUN_0041bbd8(param_1 + 0x350,0); + } + FUN_0041bbd8(param_1 + 0x350,*(int *)(param_2 + 0x10)); + return; +} + + + +/* @004b9690 file=? name=FUN_004b9690 */ + +void __cdecl FUN_004b9690(int param_1,undefined4 *param_2,undefined2 param_3) + +{ + FUN_0041c500(param_1,param_2,param_3); + *param_2 = 0x18; + param_2[4] = *(undefined4 *)(param_1 + 0x364); + if (*(int *)(param_1 + 0x360) == 0) { + param_2[5] = 1; + } + else { + param_2[5] = 0; + } + return; +} + + + +/* @004b96d4 file=? name=FUN_004b96d4 */ + +void __cdecl FUN_004b96d4(int *param_1,int *param_2) + +{ + FUN_004b0efc(param_1,param_2); + return; +} + + + +/* @004b96ec file=? name=FUN_004b96ec */ + +void __cdecl FUN_004b96ec(int *param_1,int param_2) + +{ + FUN_004b0e6c(param_1,param_2); + param_1[0xfa] = 0; + param_1[200] = 0x3f800000; + param_1[199] = 0; + param_1[0xe9] = 0; + return; +} + + + +/* @004b9728 file=? name=FUN_004b9728 */ + +void __cdecl FUN_004b9728(int param_1,int param_2,undefined4 *param_3) + +{ + int iVar1; + int iVar2; + undefined4 local_70; + undefined4 local_6c; + undefined4 local_68; + undefined4 local_64 [2]; + undefined4 local_5c; + undefined4 local_58; + undefined4 local_54 [2]; + int local_4c; + uint local_48; + undefined4 local_44; + undefined4 local_40; + undefined4 local_3c; + undefined4 local_38; + undefined4 local_34; + undefined4 local_30; + undefined4 local_2c; + undefined4 local_28; + undefined4 local_24; + undefined4 local_20; + undefined4 local_1c; + undefined4 local_18; + int local_14; + uint local_10; + undefined4 *local_c; + int local_8; + + iVar1 = *(int *)(param_1 + 0xd0); + iVar2 = FUN_0041a1a4(**(int **)(param_2 + 0xc),0x50bdb4); + if ((iVar2 == 0) || (*(int *)(iVar1 + 0x38c) != -1)) { + FUN_00408440(param_3 + 8,(undefined4 *)(iVar1 + 0x37c)); + local_8 = *(int *)(param_1 + 0xd8); + local_c = (undefined4 *)(iVar1 + 0x184); + iVar2 = *(int *)(iVar1 + 0x38c); + local_70 = 100; + local_6c = 0x12; + local_68 = 1; + FUN_00420ea4(local_64,(undefined4 *)&DAT_00522524); + local_5c = 0; + local_58 = 0; + FUN_00420ea4(local_54,local_c); + local_48 = (uint)(iVar2 < 0); + local_44 = *param_3; + local_40 = param_3[1]; + local_3c = param_3[2]; + local_38 = param_3[3]; + local_34 = param_3[4]; + local_30 = param_3[5]; + local_2c = param_3[6]; + local_28 = param_3[7]; + local_24 = param_3[8]; + local_20 = param_3[9]; + local_1c = param_3[10]; + local_18 = param_3[0xb]; + local_14 = local_8; + local_10 = (uint)(local_8 < 0); + local_4c = iVar2; + FUN_0049b6d8(*(int *)(iVar1 + 0x434),param_2,(int)&local_70); + } + return; +} + + + +/* @004b9864 file=? name=FUN_004b9864 */ + +void __cdecl FUN_004b9864(undefined4 param_1,float *param_2,float *param_3) + +{ + float10 fVar1; + float local_68 [12]; + float local_38; + float local_34; + undefined4 local_30; + float local_2c; + float local_28; + float local_24; + float local_20; + float local_1c; + float local_18; + float local_14; + float local_10; + float local_c; + float local_8; + + FUN_004087f4(&local_2c,param_3); + fVar1 = FUN_004dc8ec((double)-local_2c,SUB84((double)-local_24,0), + (uint)((ulonglong)(double)-local_24 >> 0x20)); + local_c = (float)fVar1; + local_8 = local_c; + fVar1 = FUN_00408110(local_c); + local_10 = (float)fVar1; + local_8 = local_10; + fVar1 = FUN_004dd138((double)(local_24 * local_24 + local_2c * local_2c)); + local_14 = (float)fVar1; + fVar1 = FUN_004dc8ec((double)local_28,SUB84((double)local_14,0), + (uint)((ulonglong)(double)local_14 >> 0x20)); + local_1c = (float)fVar1; + local_18 = local_1c; + fVar1 = FUN_00408110(local_1c); + local_34 = (float)fVar1; + local_38 = local_8; + local_30 = 0; + local_20 = local_34; + local_18 = local_34; + FUN_0040aadc(local_68); + FUN_0040ad2c(local_68,&local_38); + FUN_00409a70(param_2,local_68); + return; +} + + + +/* @004b9948 file=? name=FUN_004b9948 */ + +void __cdecl FUN_004b9948(int param_1,float *param_2) + +{ + int iVar1; + undefined4 uVar2; + int iVar3; + int local_20 [7]; + + iVar1 = *(int *)(param_1 + 0xd0); + uVar2 = *(undefined4 *)(param_1 + 0xdc); + FUN_0041f216(local_20,iVar1 + 0x300); + iVar3 = (**(code **)(local_20[0] + 0x34))(local_20,uVar2); + FUN_0041f235(local_20,2); + FUN_00424da8(iVar1,iVar3,param_2); + return; +} + + + +/* @004b99a8 file=? name=FUN_004b99a8 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +int * __cdecl +FUN_004b99a8(int *param_1,int param_2,undefined4 param_3,char *param_4,undefined4 param_5, + undefined4 param_6,int *param_7,int param_8) + +{ + int *piVar1; + int iVar2; + char *pcVar3; + int local_24 [7]; + int *local_8; + + if (param_7 == (int *)0x0) { + param_7 = param_1 + 199; + } + FUN_004b0f74(param_1,param_2,param_3,param_4,param_5,(int)param_7,param_8); + *param_1 = (int)&PTR_FUN_00511d2c; + iVar2 = _DAT_004b9b98; + param_1[0xd1] = _DAT_004b9b98; + param_1[0xd0] = iVar2; + param_1[0xcf] = iVar2; + FUN_0041b9ec(param_1 + 0xd4,param_6); + FUN_0041db7c((int)(param_1 + 0xea)); + param_1[0xf7] = *(int *)(param_4 + 400); + param_1[0xf9] = *(int *)(param_4 + 0x198); + param_1[0xea] = *(int *)(param_4 + 0x1a0); + param_1[0xeb] = *(int *)(param_4 + 0x19c); + param_1[0xfb] = *(int *)(param_4 + 0x28); + param_1[0xca] = *(int *)(param_4 + 0x194); + param_1[0xf6] = *(int *)(param_4 + 0x1a4); + param_1[0xce] = *(int *)(param_4 + 0x1a8); + param_1[0xcf] = *(int *)(param_4 + 0x1ac); + param_1[0xd0] = *(int *)(param_4 + 0x1b0); + param_1[0xd1] = *(int *)(param_4 + 0x1b4); + param_1[0xd2] = *(int *)(param_4 + 0x1b8); + param_1[0xcb] = param_1[0xca]; + param_1[10] = param_1[10] | 8; + param_1[0xc9] = 0; + param_1[0xd3] = 0; + iVar2 = param_1[0x37]; + FUN_0041f216(local_24,param_2 + 0x300); + iVar2 = (**(code **)(local_24[0] + 0x34))(local_24,iVar2); + FUN_0041f235(local_24,2); + local_8 = *(int **)(iVar2 + 0x11c); + local_8[3] = local_8[3] + 1; + pcVar3 = FUN_004d4c78((char *)local_8[2],&DAT_00511aa2); + if (pcVar3 == (char *)0x0) { + param_1[0xcd] = 0; + } + else { + param_1[0xcd] = 1; + } + param_1[0xfa] = 0; + param_1[200] = 0x3f800000; + param_1[199] = 0; + param_1[0xe9] = 0; + param_1[0xf8] = (uint)(param_1[0xcd] == 0); + param_1[0xcc] = 0; + piVar1 = local_8 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_8,3); + } + return param_1; +} + + + +/* @004b9b9c file=? name=FUN_004b9b9c */ + +void __cdecl FUN_004b9b9c(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_00511d2c; + FUN_0041baa4(param_1 + 0xd4,2); + FUN_004b115c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004b9bdc file=? name=FUN_004b9bdc */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004b9bdc(int param_1) + +{ + int iVar1; + float10 fVar2; + float local_10; + float local_c; + float local_8; + + iVar1 = *(int *)(param_1 + 0xd0); + if (*(int *)(iVar1 + 0x388) == 0) { + *(undefined4 *)(param_1 + 0x324) = 0xbf800000; + *(undefined4 *)(param_1 + 0x34c) = 0; + } + else { + FUN_00408644(&local_10,(float *)(iVar1 + 0x37c),(float *)(iVar1 + 0x100)); + fVar2 = FUN_004dd138((double)(local_8 * local_8 + local_c * local_c + local_10 * local_10)); + *(float *)(param_1 + 0x324) = (float)fVar2; + *(float *)(param_1 + 0x328) = + (_DAT_004b9c98 - *(float *)(*(int *)(param_1 + 0xe0) + 0x158)) * + *(float *)(param_1 + 0x32c); + if (*(float *)(param_1 + 0x328) <= *(float *)(param_1 + 0x324)) { + *(undefined4 *)(param_1 + 0x34c) = 0; + } + else { + *(undefined4 *)(param_1 + 0x34c) = 1; + } + } + return; +} + + + +/* @004b9cbc file=? name=FUN_004b9cbc */ + +void __cdecl FUN_004b9cbc(int param_1,undefined4 *param_2) + +{ + FUN_0040a7f4(param_2,(undefined4 *)(*(int *)(param_1 + 0xd0) + 0x1c4)); + return; +} + + + +/* @004b9cdc file=? name=FUN_004b9cdc */ + +void __cdecl FUN_004b9cdc(int param_1,float *param_2,float *param_3) + +{ + FUN_00408644(param_3,(float *)(*(int *)(param_1 + 0xd0) + 0x37c),param_2); + return; +} + + + +/* @004b9d00 file=? name=FUN_004b9d00 */ + +void __cdecl FUN_004b9d00(int param_1) + +{ + FUN_004b1224(param_1); + return; +} + + + +/* @004b9d10 file=? name=FUN_004b9d10 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl +FUN_004b9d10(int param_1,int param_2,char *param_3,char *param_4,char *param_5,int param_6, + int param_7,int param_8) + +{ + char *pcVar1; + float fVar2; + bool bVar3; + int iVar4; + undefined4 uVar5; + undefined3 extraout_var; + char *pcVar6; + char *pcVar7; + undefined4 *puVar8; + float local_2c; + float local_28; + float local_24; + float local_20; + float local_1c; + float local_18; + char *local_14; + char *local_10; + byte *local_c; + char *local_8; + + iVar4 = FUN_004b13ac(param_2,param_3,param_4,param_5,param_6,param_7,param_8); + if (iVar4 == 0) { + uVar5 = 0; + } + else { + param_5[0x24] = -0x44; + param_5[0x25] = '\x01'; + param_5[0x26] = '\0'; + param_5[0x27] = '\0'; + param_5[0x20] = -0x33; + param_5[0x21] = '\v'; + param_5[0x22] = '\0'; + param_5[0x23] = '\0'; + if (param_8 == 1) { + param_5[0x19c] = '\0'; + param_5[0x19d] = '\0'; + param_5[0x19e] = -0x80; + param_5[0x19f] = -0x41; + param_5[400] = '\0'; + param_5[0x191] = '\0'; + param_5[0x192] = -0x80; + param_5[0x193] = -0x41; + param_5[0x194] = '\0'; + param_5[0x195] = '\0'; + param_5[0x196] = -0x80; + param_5[0x197] = -0x41; + param_5[0x1a4] = '\0'; + param_5[0x1a5] = '\0'; + param_5[0x1a6] = -0x80; + param_5[0x1a7] = -0x41; + param_5[0x1a0] = -1; + param_5[0x1a1] = -1; + param_5[0x1a2] = -1; + param_5[0x1a3] = -1; + param_5[0x198] = -1; + param_5[0x199] = -1; + param_5[0x19a] = -1; + param_5[0x19b] = -1; + param_5[0x1a8] = -1; + fVar2 = _DAT_004ba37c; + param_5[0x1a9] = -1; + param_5[0x1aa] = -1; + param_5[0x1ab] = -1; + local_18 = _DAT_004ba37c; + local_1c = _DAT_004ba37c; + local_20 = _DAT_004ba37c; + *(float *)(param_5 + 0x1ac) = _DAT_004ba37c; + *(float *)(param_5 + 0x1b0) = fVar2; + *(float *)(param_5 + 0x1b4) = fVar2; + param_5[0x1b8] = -1; + param_5[0x1b9] = -1; + param_5[0x1ba] = -1; + param_5[0x1bb] = -1; + } + if ((*(int *)(param_5 + 0x28) == -1) && (1 < param_8)) { + FUN_004dbb24(&DAT_00524e20,param_4,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_missing_SegmentPageName__00511aa4,(char *)0x0); + uVar5 = 0; + } + else { + iVar4 = FUN_00404118(param_6,param_4,s_DamageAmount_00511abe,(float *)(param_5 + 0x19c)); + if ((iVar4 == 0) && (_DAT_004ba37c == *(float *)(param_5 + 0x19c))) { + FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_Missing_DamageAmount_00511acb,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + uVar5 = 0; + } + else { + iVar4 = FUN_00404118(param_6,param_4,s_HeatCostToFire_00511ae1,(float *)(param_5 + 0x1a4)); + if ((iVar4 == 0) && (_DAT_004ba37c == *(float *)(param_5 + 0x1a4))) { + FUN_004dbb24(&DAT_00524e20,param_4,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_missing_HeatCostToFire___00511af0,(char *)0x0); + uVar5 = 0; + } + else { + bVar3 = FUN_004040d8(param_6,param_4,s_PipPosition_00511b0a,(int *)(param_5 + 0x1a8)); + if ((CONCAT31(extraout_var,bVar3) == 0) && (*(int *)(param_5 + 0x1a8) == -1)) { + FUN_004dbb24(&DAT_00524e20,param_4,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_missing_PipPosition___00511b16,(char *)0x0); + uVar5 = 0; + } + else { + local_8 = s_Unspecified_00511b2d; + iVar4 = FUN_00404088(param_6,param_4,s_PipColor_00511b39,&local_8); + if (iVar4 == 0) { + local_c = (byte *)(param_5 + 0x1ac); + local_24 = _DAT_004ba37c; + local_28 = _DAT_004ba37c; + local_2c = _DAT_004ba37c; + iVar4 = FUN_004d4b14((byte *)&local_2c,local_c,0xc); + if (iVar4 == 0) { + FUN_004dbb24(&DAT_00524e20,param_4,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_missing_PipColor__00511b42,(char *)0x0); + return 0; + } + } + pcVar7 = s_Unspecified_00511b55; + pcVar6 = local_8; + do { + bVar3 = *pcVar6 == *pcVar7; + if (!bVar3) break; + if (*pcVar6 == '\0') goto LAB_004b9fcd; + pcVar1 = pcVar6 + 1; + bVar3 = *pcVar1 == pcVar7[1]; + if (!bVar3) break; + pcVar6 = pcVar6 + 2; + pcVar7 = pcVar7 + 2; + bVar3 = *pcVar1 == '\0'; + } while (!bVar3); + if (!bVar3) { + FUN_00406824(local_8,(float *)(param_5 + 0x1ac)); + } +LAB_004b9fcd: + iVar4 = FUN_00404190(param_6,param_4,s_PipExtendedRange_00511b61, + (undefined4 *)(param_5 + 0x1b8)); + if ((iVar4 == 0) && (*(int *)(param_5 + 0x1b8) == -1)) { + FUN_004dbb24(&DAT_00524e20,param_4,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_missing_PipExtendedRange__00511b72,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + uVar5 = 0; + } + else { + iVar4 = FUN_00404118(param_6,param_4,s_RechargeRate_00511b8e,(float *)(param_5 + 400)) + ; + if ((iVar4 == 0) && (_DAT_004ba37c == *(float *)(param_5 + 400))) { + FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_Missing_RechargeRate_00511b9b,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + uVar5 = 0; + } + else { + iVar4 = FUN_00404118(param_6,param_4,s_WeaponRange_00511bb1, + (float *)(param_5 + 0x194)); + if ((iVar4 == 0) && (_DAT_004ba37c == *(float *)(param_5 + 0x194))) { + FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_Missing_WeaponRange_00511bbd,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + uVar5 = 0; + } + else { + local_10 = s_Unspecified_00511bd2; + iVar4 = FUN_00404088(param_6,param_4,s_DamageType_00511bde,&local_10); + if ((iVar4 == 0) && (_DAT_004ba37c == *(float *)(param_5 + 0x19c))) { + FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_missing_DamageType__00511be9,(char *)0x0); + uVar5 = 0; + } + else { + pcVar7 = s_Unspecified_00511bff; + pcVar6 = local_10; + do { + if (*pcVar7 != *pcVar6) goto LAB_004ba177; + bVar3 = true; + if (*pcVar7 == '\0') break; + pcVar1 = pcVar7 + 1; + if (*pcVar1 != pcVar6[1]) goto LAB_004ba177; + pcVar7 = pcVar7 + 2; + pcVar6 = pcVar6 + 2; + bVar3 = *pcVar1 == '\0'; + } while (!bVar3); + if (!bVar3) { +LAB_004ba177: + iVar4 = FUN_004d4b58(local_10,s_CollisionDamage_00511c0b); + if (iVar4 == 0) { + param_5[0x1a0] = '\0'; + param_5[0x1a1] = '\0'; + param_5[0x1a2] = '\0'; + param_5[0x1a3] = '\0'; + } + else { + iVar4 = FUN_004d4b58(local_10,s_BallisticDamage_00511c1b); + if (iVar4 == 0) { + param_5[0x1a0] = '\x01'; + param_5[0x1a1] = '\0'; + param_5[0x1a2] = '\0'; + param_5[0x1a3] = '\0'; + } + else { + iVar4 = FUN_004d4b58(local_10,s_ExplosiveDamage_00511c2b); + if (iVar4 == 0) { + param_5[0x1a0] = '\x02'; + param_5[0x1a1] = '\0'; + param_5[0x1a2] = '\0'; + param_5[0x1a3] = '\0'; + } + else { + iVar4 = FUN_004d4b58(local_10,s_LaserDamage_00511c3b); + if (iVar4 == 0) { + param_5[0x1a0] = '\x03'; + param_5[0x1a1] = '\0'; + param_5[0x1a2] = '\0'; + param_5[0x1a3] = '\0'; + } + else { + iVar4 = FUN_004d4b58(local_10,s_EnergyDamage_00511c47); + pcVar6 = local_10; + if (iVar4 != 0) { + FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_has_an_unknown_DamageType_of_00511c54, + (char *)0x0); + FUN_004dbb24(&DAT_00524e20,pcVar6,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + return 0; + } + param_5[0x1a0] = '\x04'; + param_5[0x1a1] = '\0'; + param_5[0x1a2] = '\0'; + param_5[0x1a3] = '\0'; + } + } + } + } + } + local_14 = s_Unspecified_00511c73; + iVar4 = FUN_00404088(param_6,param_4,s_ExplosionModelFile_00511c7f,&local_14); + if ((iVar4 == 0) && (*(int *)(param_5 + 0x198) == -1)) { + FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_missing_ExplosionModelFile__00511c92,(char *)0x0) + ; + uVar5 = 0; + } + else { + puVar8 = (undefined4 *)0x0; + pcVar7 = s_Unspecified_00511cb0; + pcVar6 = local_14; + do { + bVar3 = *pcVar6 == *pcVar7; + if (!bVar3) break; + if (*pcVar6 == '\0') goto LAB_004ba302; + pcVar1 = pcVar6 + 1; + bVar3 = *pcVar1 == pcVar7[1]; + if (!bVar3) break; + pcVar6 = pcVar6 + 2; + pcVar7 = pcVar7 + 2; + bVar3 = *pcVar1 == '\0'; + } while (!bVar3); + if (!bVar3) { + puVar8 = (undefined4 *)FUN_00406ff8(param_1,local_14,1,-1); + } +LAB_004ba302: + pcVar6 = local_14; + if ((puVar8 == (undefined4 *)0x0) && (*(int *)(param_5 + 0x198) == -1)) { + FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_cannot_find_00511cbc,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,pcVar6,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_in_resource_file__00511cca,(char *)0x0); + uVar5 = 0; + } + else { + if (puVar8 != (undefined4 *)0x0) { + *(undefined4 *)(param_5 + 0x198) = *puVar8; + } + uVar5 = 1; + } + } + } + } + } + } + } + } + } + } + } + return uVar5; +} + + + +/* @004ba45c file=bt/mechweap.hpp name=FUN_004ba45c */ + +void FUN_004ba45c(void) + +{ + FUN_0040385c(s_ERROR__Accessing_Pure_Virtual_Me_00511cde,s_d__tesla_bt_bt_mechweap_hpp_00511d0f, + 0x157); + return; +} + + + +/* @004ba478 file=? name=FUN_004ba478 */ + +int __cdecl FUN_004ba478(int param_1,int param_2) + +{ + bool bVar1; + undefined3 extraout_var; + int iVar2; + int iVar3; + int iVar4; + int iVar5; + + bVar1 = FUN_004ac9c8(param_1); + iVar4 = CONCAT31(extraout_var,bVar1); + if (CONCAT31(extraout_var,bVar1) == 0) { + iVar2 = FUN_004ad7d4(param_1); + iVar4 = 0; + if ((iVar2 != 0) && (iVar4 = param_2, 0 < *(int *)(param_2 + 0xc))) { + iVar2 = *(int *)(param_1 + 0x3f0); + iVar5 = *(int *)(param_1 + 0x3fc) + 1; + iVar3 = iVar2 + 1; + iVar4 = iVar3 / iVar5; + iVar3 = iVar3 % iVar5; + *(int *)(param_1 + 0x3f0) = iVar3; + if (iVar2 < iVar3) { + iVar4 = FUN_004ba9a8(param_1); + } + } + } + return iVar4; +} + + + +/* @004ba4d0 file=? name=FUN_004ba4d0 */ + +void __cdecl FUN_004ba4d0(int *param_1,int param_2) + +{ + undefined4 local_10; + undefined4 local_c; + undefined4 local_8; + + FUN_004b96ec(param_1,param_2); + FUN_0041bbd8((int)(param_1 + 0xd4),3); + param_1[0x105] = 0; + param_1[0x117] = 0; + param_1[0x11b] = 0; + param_1[0x11d] = 0; + local_10 = 0x3f800000; + local_c = 0x3f800000; + local_8 = 0x3f800000; + FUN_00408440(param_1 + 0x10b,&local_10); + FUN_00409968(param_1 + 0x107,&DAT_004e0fa4); + param_1[0x106] = 0; + *(ushort *)(param_1 + 6) = *(ushort *)(param_1 + 6) | 1; + return; +} + + + +/* @004ba568 file=? name=FUN_004ba568 */ + +void __cdecl FUN_004ba568(int param_1,int param_2) + +{ + int iVar1; + undefined4 uVar2; + undefined4 local_14 [2]; + int local_c; + int local_8; + + iVar1 = FUN_00421070((int *)(param_2 + 0x30),(int *)&DAT_00522524); + if (iVar1 == 0) { + *(undefined4 *)(param_1 + 0x474) = 0; + } + else { + local_c = param_2 + 0x30; + local_8 = *(int *)(DAT_004efc94 + 0x2c); + uVar2 = (**(code **)(*(int *)(local_8 + 0x54) + 0xc))(local_8 + 0x54,local_c); + *(undefined4 *)(param_1 + 0x474) = uVar2; + if (*(int *)(param_1 + 0x474) == 0) { + return; + } + } + FUN_004b964c(param_1,param_2); + iVar1 = *(int *)(param_2 + 0x18); + *(int *)(param_1 + 0x418) = iVar1; + if (iVar1 == 0) { + FUN_0041bbd8(param_1 + 0x350,2); + } + else { + FUN_0041bbd8(param_1 + 0x350,0); + } + *(undefined4 *)(param_1 + 0x46c) = *(undefined4 *)(param_2 + 0x28); + FUN_00408440((undefined4 *)(param_1 + 0x460),(undefined4 *)(param_2 + 0x1c)); + FUN_00420ea4(local_14,(undefined4 *)(param_2 + 0x30)); + *(undefined4 *)(param_1 + 0x470) = *(undefined4 *)(param_2 + 0x2c); + *(uint *)(param_1 + 0x28) = *(uint *)(param_1 + 0x28) & 0xfffffffd; + *(undefined4 *)(param_1 + 0x10) = *(undefined4 *)(param_1 + 0x14); + return; +} + + + +/* @004ba65c file=? name=FUN_004ba65c */ + +void __cdecl FUN_004ba65c(int param_1,undefined4 *param_2,undefined2 param_3) + +{ + FUN_004b9690(param_1,param_2,param_3); + *param_2 = 0x38; + param_2[6] = *(undefined4 *)(param_1 + 0x418); + param_2[10] = *(undefined4 *)(param_1 + 0x46c); + FUN_00408440(param_2 + 7,(undefined4 *)(param_1 + 0x460)); + param_2[0xb] = *(undefined4 *)(param_1 + 0x470); + if (*(int *)(param_1 + 0x474) == 0) { + FUN_00420ef4(param_2 + 0xc,(undefined4 *)&DAT_00522524); + } + else { + FUN_00420ef4(param_2 + 0xc,(undefined4 *)(*(int *)(param_1 + 0x474) + 0x184)); + } + return; +} + + + +/* @004ba6e0 file=? name=FUN_004ba6e0 */ + +undefined4 __cdecl FUN_004ba6e0(int param_1,int param_2) + +{ + if (param_2 == 0) { + param_2 = FUN_00417ab4(param_1 + 0x1d0); + } + if (param_2 == 0) { + return 0; + } + if ((*(float *)(param_1 + 0x400 + *(int *)(param_1 + 0x3f0) * 4) <= *(float *)(param_2 + 0x1dc)) + && (*(int *)(param_2 + 0x210) == 2)) { + return 1; + } + return 0; +} + + + +/* @004ba738 file=? name=FUN_004ba738 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004ba738(int param_1) + +{ + float fVar1; + float10 fVar2; + + fVar2 = FUN_004dcd00((double)(*(float *)(param_1 + 0x414) - _DAT_004ba818)); + if ((float10)_DAT_004ba81c < fVar2) { + *(float *)(param_1 + 800) = + *(float *)(param_1 + 0x414) / *(float *)(param_1 + 0x400 + *(int *)(param_1 + 0x3f0) * 4); + } + else { + *(undefined4 *)(param_1 + 800) = 0; + } + fVar2 = FUN_004dcd00((double)(*(float *)(param_1 + 800) - _DAT_004ba820)); + if (fVar2 <= (float10)_DAT_004ba824) { + *(undefined4 *)(param_1 + 800) = 0x3f800000; + } + if (_DAT_004ba818 <= *(float *)(param_1 + 800)) { + if (*(float *)(param_1 + 800) <= _DAT_004ba820) { + fVar1 = *(float *)(param_1 + 800); + } + else { + fVar1 = (float)_DAT_004ba830; + } + } + else { + fVar1 = (float)_DAT_004ba828; + } + *(float *)(param_1 + 800) = fVar1; + return; +} + + + +/* @004ba838 file=? name=FUN_004ba838 */ + +void __cdecl FUN_004ba838(int param_1,float param_2) + +{ + int iVar1; + float10 fVar2; + + iVar1 = FUN_00417ab4(param_1 + 0x1d0); + fVar2 = FUN_004b0d50(param_1); + *(float *)(param_1 + 0x45c) = + (*(float *)(iVar1 + 0x1dc) - *(float *)(param_1 + 0x414)) / (float)fVar2; + *(float *)(param_1 + 0x414) = + (*(float *)(param_1 + 0x45c) / *(float *)(param_1 + 0x454)) * param_2 + + *(float *)(param_1 + 0x414); + iVar1 = FUN_004ad7d4(param_1); + if (iVar1 != 0) { + iVar1 = FUN_00417ab4(param_1 + 0x1d0); + *(float *)(iVar1 + 0x1c8) = + *(float *)(param_1 + 0x45c) * *(float *)(param_1 + 0x45c) * (float)fVar2 * param_2 + + *(float *)(iVar1 + 0x1c8); + } + return; +} + + + +/* @004ba8d0 file=? name=FUN_004ba8d0 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004ba8d0(int param_1,float param_2) + +{ + int iVar1; + + if (*(int *)(param_1 + 0x418) == 0) { + *(uint *)(param_1 + 0x28) = *(uint *)(param_1 + 0x28) | 2; + return; + } + FUN_0041bbd8(param_1 + 0x350,0); + *(float *)(param_1 + 0x440) = *(float *)(param_1 + 0x440) - param_2; + if (*(float *)(param_1 + 0x440) <= _DAT_004ba9a4) { +LAB_004ba916: + *(undefined4 *)(param_1 + 0x418) = 0; + FUN_0041bbd8(param_1 + 0x350,2); + *(undefined4 *)(param_1 + 0x46c) = 0; + *(undefined4 *)(param_1 + 0x440) = *(undefined4 *)(param_1 + 0x43c); + *(uint *)(param_1 + 0x28) = *(uint *)(param_1 + 0x28) | 2; + return; + } + if (*(int *)(param_1 + 0x474) != 0) { + iVar1 = FUN_0041a1a4(**(int **)(*(int *)(param_1 + 0x474) + 0xc),0x50bdb4); + if (iVar1 != 0) { + iVar1 = FUN_0049fb54(*(int *)(param_1 + 0x474)); + if (iVar1 != 0) goto LAB_004ba916; + } + } + FUN_0041c350(param_1,PTR_LAB_00511e6c,DAT_00511e70,DAT_00511e74); + return; +} + + + +/* @004ba9a8 file=? name=FUN_004ba9a8 */ + +void __cdecl FUN_004ba9a8(int param_1) + +{ + undefined4 local_10; + undefined4 local_c; + undefined4 local_8; + + FUN_00409968((undefined4 *)(param_1 + 0x41c),&DAT_004e0fa4); + local_10 = 0x3f800000; + local_c = 0x3f800000; + local_8 = 0x3f800000; + FUN_00408440((undefined4 *)(param_1 + 0x42c),&local_10); + *(undefined4 *)(param_1 + 0x474) = 0; + *(undefined4 *)(param_1 + 0x418) = 0; + *(undefined4 *)(param_1 + 0x46c) = 0; + FUN_0041bbd8(param_1 + 0x350,3); + return; +} + + + +/* @004baa20 file=? name=FUN_004baa20 */ + +void __cdecl FUN_004baa20(int param_1) + +{ + int iVar1; + + if (*(int *)(param_1 + 0x46c) != 0) { + iVar1 = FUN_0041a1a4(**(int **)(*(int *)(param_1 + 0x474) + 0xc),0x50bdb4); + if (iVar1 != 0) { + iVar1 = FUN_0049fb54(*(int *)(param_1 + 0x474)); + if (iVar1 != 0) { + FUN_004ba9a8(param_1); + return; + } + } + FUN_0041c350(param_1,PTR_LAB_00511e78,DAT_00511e7c,DAT_00511e80); + } + return; +} + + + +/* @004baa88 file=? name=FUN_004baa88 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004baa88(int *param_1,float param_2) + +{ + int iVar1; + int iVar2; + int iVar3; + + FUN_004b0bd0(param_1,param_2); + iVar1 = FUN_004b9608((int)param_1); + iVar2 = FUN_004b9bdc((int)param_1); + param_1[0xd3] = iVar2; + iVar2 = param_1[0x34]; + if (((param_1[0x10] == 1) || (param_1[0x61] == 2)) || (iVar3 = FUN_0049fb54(iVar2), iVar3 != 0)) { + FUN_004ba9a8((int)param_1); + param_1[0x105] = 0; + (**(code **)(*param_1 + 0x44))(param_1); + return; + } + iVar3 = param_1[0xd9]; + if (iVar3 == 0) { + param_1[0x110] = (int)((float)param_1[0x110] - param_2); + if ((float)param_1[0x110] <= _DAT_004bac08) { + FUN_004ba9a8((int)param_1); + return; + } + FUN_004baa20((int)param_1); + return; + } + if (iVar3 != 2) { + if (iVar3 != 3) { + return; + } + if (iVar1 != 0) { + FUN_0041bbd8((int)(param_1 + 0xd4),4); + FUN_0041bbd8((int)(param_1 + 0xd4),3); + } + if (param_1[0x9e] == 4) { + FUN_004ba838((int)param_1,param_2); + } + (**(code **)(*param_1 + 0x44))(param_1); + if (_DAT_004bac04 != (float)param_1[200]) { + return; + } + FUN_0041bbd8((int)(param_1 + 0xd4),2); + return; + } + if (iVar1 == 0) { + return; + } + if ((param_1[0xf8] != 0) && (*(int *)(iVar2 + 0x388) != 0)) { + FUN_0041bbd8((int)(param_1 + 0xd4),0); + (**(code **)(*param_1 + 0x48))(param_1); + FUN_004baa20((int)param_1); + return; + } + FUN_0041bbd8((int)(param_1 + 0xd4),4); + FUN_0041bbd8((int)(param_1 + 0xd4),2); + return; +} + + + +/* @004bace8 file=? name=FUN_004bace8 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004bace8(int *param_1) + +{ + float *pfVar1; + int iVar2; + int iVar3; + float10 fVar4; + float local_c4; + float local_c0; + float local_bc; + float local_b8 [3]; + float local_ac [12]; + int local_7c [7]; + float local_60 [7]; + float local_44 [12]; + int *local_14; + int *local_10; + float local_c; + float local_8; + + iVar2 = param_1[0x34]; + if (*(int *)(iVar2 + 0x388) != 0) { + param_1[0x110] = param_1[0x10f]; + local_8 = (float)param_1[0x105] * (float)param_1[0x105] * _DAT_004bafb8 * (float)param_1[0x115]; + param_1[0x113] = (int)((float)param_1[0x111] * local_8); + param_1[0x114] = (int)(local_8 - (float)param_1[0x113]); + param_1[0x113] = (int)(float)(_DAT_004bafbc * (float10)(float)param_1[0x113]); + iVar3 = FUN_004ad7d4((int)param_1); + if (iVar3 != 0) { + local_c = (float)param_1[0x114]; + param_1[0x72] = (int)(local_c + (float)param_1[0x72]); + } + (**(code **)(*param_1 + 0x44))(); + param_1[0x105] = 0; + param_1[0x106] = 1; + FUN_0040aadc(local_44); + FUN_004b9948((int)param_1,local_44); + FUN_0040a968(local_60,local_44); + FUN_0041f216(local_7c,iVar2 + 0x300); + iVar3 = (**(code **)(local_7c[0] + 0x34))(local_7c); + FUN_0041f235(local_7c,2); + FUN_0040aadc(local_ac); + FUN_00424da8(iVar2,iVar3,local_ac); + param_1[0x11b] = 1; + pfVar1 = (float *)(iVar2 + 0x37c); + FUN_00408bf8(local_b8,pfVar1,local_ac); + FUN_004b9864(param_1,(float *)(param_1 + 0x107),local_b8); + FUN_0040a138((float *)(param_1 + 0x107)); + FUN_00408644(&local_c4,pfVar1,local_60); + fVar4 = FUN_004dd138((double)(local_bc * local_bc + local_c0 * local_c0 + local_c4 * local_c4)); + param_1[0x10d] = (int)(float)(fVar4 / (float10)(float)param_1[0x10e]); + fVar4 = FUN_004dd138((double)(local_bc * local_bc + local_c0 * local_c0 + local_c4 * local_c4)); + if (fVar4 <= (float10)(float)param_1[0xca]) { + local_10 = param_1 + 0xf2; + FUN_00408440(local_10,pfVar1); + local_14 = param_1 + 0xec; + FUN_00408440(local_14,&local_c4); + param_1[0xeb] = param_1[0x113]; + FUN_004b9728((int)param_1,*(int *)(iVar2 + 0x388),param_1 + 0xea); + } + iVar3 = *(int *)(iVar2 + 0x388); + param_1[0x11d] = iVar3; + if ((*(byte *)(iVar3 + 0x29) & 1) == 0) { + param_1[0x11c] = 1; + FUN_00408440(param_1 + 0x118,pfVar1); + } + else { + param_1[0x11c] = 0; + FUN_00408bf8((float *)(param_1 + 0x118),pfVar1,(float *)(*(int *)(iVar2 + 0x388) + 0xd0)); + } + *(ushort *)(param_1 + 6) = *(ushort *)(param_1 + 6) | 1; + } + return; +} + + + +/* @004bb014 file=? name=FUN_004bb014 */ + +void __cdecl FUN_004bb014(int param_1) + +{ + int iVar1; + + FUN_004b9d00(param_1); + iVar1 = *(int *)(param_1 + 0x364); + if (iVar1 == 0) { + FUN_004dbb24(&DAT_00524e20,*(char **)(param_1 + 0xd4),(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s___Firing_00511f8e,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + return; + } + if (iVar1 == 2) { + FUN_004dbb24(&DAT_00524e20,*(char **)(param_1 + 0xd4),(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s___Loaded_00511f98,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + return; + } + if (iVar1 == 3) { + FUN_004dbb24(&DAT_00524e20,*(char **)(param_1 + 0xd4),(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s___Loading_00511fa2,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + return; + } + if (iVar1 == 4) { + FUN_004dbb24(&DAT_00524e20,*(char **)(param_1 + 0xd4),(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s___TriggerDuringLoad_00511fad,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + } + return; +} + + + +/* @004bb120 file=? name=FUN_004bb120 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +int * __cdecl +FUN_004bb120(int *param_1,int param_2,undefined4 param_3,char *param_4,undefined4 param_5) + +{ + float fVar1; + double dVar2; + int *piVar3; + float *pfVar4; + int iVar5; + float *pfVar6; + float10 fVar7; + undefined4 local_18; + undefined4 local_14; + undefined4 local_10; + int local_8; + + FUN_004b99a8(param_1,param_2,param_3,param_4,param_5,5,(int *)0x0,0); + *param_1 = (int)&PTR_FUN_00512078; + if ((*(uint *)(param_2 + 0x28) & 0xc) == 4) { + param_1[7] = (int)PTR_FUN_00511e90; + param_1[8] = DAT_00511e94; + param_1[9] = DAT_00511e98; + param_1[10] = param_1[10] | 2; + } + else { + param_1[7] = (int)PTR_FUN_00511e84; + param_1[8] = DAT_00511e88; + param_1[9] = DAT_00511e8c; + } + FUN_0041bbd8((int)(param_1 + 0xd4),3); + FUN_00408440(param_1 + 0x118,&DAT_004e0f80); + param_1[0x11b] = 0; + param_1[0x11d] = 0; + param_1[0x11c] = 0; + local_18 = 0x3f800000; + local_14 = 0x3f800000; + local_10 = 0x3f800000; + FUN_00408440(param_1 + 0x10b,&local_18); + FUN_00409968(param_1 + 0x107,&DAT_004e0fa4); + param_1[0x106] = 0; + param_1[0x105] = 0; + param_1[0x113] = 0; + param_1[0x114] = 0; + param_1[0x116] = 0; + param_1[0x10e] = *(int *)(param_4 + 0x1bc); + param_1[0x10f] = *(int *)(param_4 + 0x1c0); + param_1[0x110] = param_1[0x10f]; + param_1[0x112] = (int)(((float)param_1[0xeb] + (float)param_1[0xf6]) * _DAT_004bb3ac); + if (((*(uint *)(param_2 + 0x28) & 0xc) == 0) && ((*(uint *)(param_2 + 0x28) & 0x100) != 0)) { + local_8 = FUN_00417ab4((int)(param_1 + 0x74)); + iVar5 = 0; + piVar3 = param_1 + 0x100; + do { + iVar5 = iVar5 + 1; + *piVar3 = 0; + piVar3 = piVar3 + 1; + } while (iVar5 < 5); + iVar5 = 0; + pfVar6 = (float *)(param_1 + 0x100); + pfVar4 = (float *)(param_4 + 0x1c4); + do { + if (*pfVar4 == _DAT_004bb3b0) { + param_1[0xff] = iVar5 + -1; + break; + } + iVar5 = iVar5 + 1; + fVar1 = *pfVar4; + pfVar4 = pfVar4 + 1; + *pfVar6 = fVar1 * *(float *)(local_8 + 0x1d8); + pfVar6 = pfVar6 + 1; + } while (iVar5 < 5); + iVar5 = *(int *)(param_4 + 0x1d8); + param_1[0xfd] = iVar5; + param_1[0xfc] = iVar5; + param_1[0xfe] = 0; + param_1[0x115] = + (int)((float)param_1[0x112] / + ((float)param_1[param_1[0xfd] + 0x100] * (float)param_1[param_1[0xfd] + 0x100] * + _DAT_004bb3b4)); + dVar2 = (double)((float10)_DAT_004bb3c4 - + _DAT_004bb3b8 * (float10)(float)param_1[param_1[0xfd] + 0x100]); + fVar7 = (float10)FUN_004dce24(SUB84(dVar2,0),(int)((ulonglong)dVar2 >> 0x20)); + param_1[0xc4] = (int)((float)((float10)(float)param_1[0xf7] / -fVar7) / (float)param_1[0x115]); + } + param_1[0x111] = (int)((float)param_1[0xeb] / ((float)param_1[0xeb] + (float)param_1[0xf6])); + param_1[0x117] = 0; + return param_1; +} + + + +/* @004bb3c8 file=? name=FUN_004bb3c8 */ + +void __cdecl FUN_004bb3c8(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_00512078; + FUN_004b9b9c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004bb3f4 file=? name=FUN_004bb3f4 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 __cdecl FUN_004bb3f4(int param_1,float param_2) + +{ + return (float10)(*(float *)(param_1 + 0x444) * + param_2 * param_2 * _DAT_004bb428 * *(float *)(param_1 + 0x454)); +} + + + +/* @004bb478 file=? name=FUN_004bb478 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl +FUN_004bb478(int param_1,int param_2,char *param_3,char *param_4,char *param_5,int param_6, + int param_7,int param_8) + +{ + int *piVar1; + uint *puVar2; + undefined4 *puVar3; + int iVar4; + undefined4 uVar5; + char *pcVar6; + undefined4 *puVar7; + uint *puVar8; + char cVar9; + float10 fVar10; + float *local_1c; + int *local_10; + int *local_c; + int *local_8; + + iVar4 = FUN_004b9d10(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8); + if (iVar4 == 0) { + uVar5 = 0; + } + else { + param_5[0x24] = -0x24; + param_5[0x25] = '\x01'; + param_5[0x26] = '\0'; + param_5[0x27] = '\0'; + param_5[0x20] = -0x38; + param_5[0x21] = '\v'; + param_5[0x22] = '\0'; + param_5[0x23] = '\0'; + if (param_8 == 1) { + param_5[0x1bc] = '\0'; + param_5[0x1bd] = '\0'; + param_5[0x1be] = -0x80; + param_5[0x1bf] = -0x41; + param_5[0x1c0] = '\0'; + param_5[0x1c1] = '\0'; + param_5[0x1c2] = -0x80; + param_5[0x1c3] = -0x41; + iVar4 = 0; + pcVar6 = param_5 + 0x1c4; + do { + pcVar6[0] = '\0'; + pcVar6[1] = '\0'; + pcVar6[2] = -0x80; + pcVar6[3] = -0x41; + iVar4 = iVar4 + 1; + pcVar6 = pcVar6 + 4; + } while (iVar4 < 5); + param_5[0x1d8] = -1; + param_5[0x1d9] = -1; + param_5[0x1da] = -1; + param_5[0x1db] = -1; + } + iVar4 = FUN_00404118(param_6,param_4,s_DischargeTime_00511fc2,(float *)(param_5 + 0x1c0)); + if ((iVar4 == 0) && (_DAT_004bb798 == *(float *)(param_5 + 0x1c0))) { + FUN_004dbb24((int *)&DAT_00524e68,param_4,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_DischargeTime__00511fd0,(char *)0x0); + uVar5 = 0; + } + else { + iVar4 = FUN_00404118(param_6,param_4,s_GraphicLength_00511fe9,(float *)(param_5 + 0x1bc)); + if ((iVar4 == 0) && (_DAT_004bb798 == *(float *)(param_5 + 0x1bc))) { + FUN_004dbb24((int *)&DAT_00524e68,param_4,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_GraphicLength__00511ff7,(char *)0x0); + uVar5 = 0; + } + else { + local_8 = FUN_00404720(param_6,param_4,s_SeekVoltage_00512010); + iVar4 = FUN_00403b60((int)local_8); + if ((iVar4 == 0) && (*(int *)(param_5 + 0x1d8) == -1)) { + if (local_8 != (int *)0x0) { + (**(code **)*local_8)(local_8,3); + } + FUN_004dbb24((int *)&DAT_00524e68,param_4,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_SeekVoltage_0051201c,(char *)0x0); + FUN_004d9c38((int *)&DAT_00524e68); + } + else { + local_1c = (float *)(param_5 + 0x1c4); + puVar3 = (undefined4 *)local_8[1]; + while (puVar3 != (undefined4 *)0x0) { + puVar7 = (undefined4 *)FUN_00402298(0x10); + if (puVar7 == (undefined4 *)0x0) { + local_c = (int *)0x0; + } + else { + local_c = (int *)FUN_004023f4(puVar7); + } + local_c[3] = local_c[3] + 1; + FUN_00402a98((int *)&local_10,(int *)&local_c,(char *)(puVar3 + 2)); + piVar1 = local_10 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_10,3); + } + puVar8 = (uint *)FUN_00402298(0x10); + if (puVar8 == (uint *)0x0) { + puVar8 = (uint *)0x0; + } + else { + puVar8 = FUN_00402460(puVar8,s_SeekVoltageRecommendedIndex_00512032); + } + puVar8[3] = puVar8[3] + 1; + iVar4 = FUN_004027d8((int)local_c,(int)puVar8); + cVar9 = iVar4 == 0; + puVar2 = puVar8 + 3; + *puVar2 = *puVar2 - 1; + if (*puVar2 == 0) { + FUN_004024d8((int *)puVar8,3); + } + if (cVar9 == '\0') { + fVar10 = (float10)FUN_004dd1cc(puVar3[1]); + *local_1c = (float)fVar10; + local_1c = local_1c + 1; + } + else { + iVar4 = FUN_004dd1e0((char *)puVar3[1]); + *(int *)(param_5 + 0x1d8) = iVar4; + } + puVar3 = (undefined4 *)*puVar3; + piVar1 = local_c + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(local_c,3); + } + } + if (*(int *)(param_5 + 0x1d8) == -1) { + FUN_004dbb24((int *)&DAT_00524e68,param_4,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_SeekVoltageRecommendedIn_0051204e, + (char *)0x0); + if (local_8 != (int *)0x0) { + (**(code **)*local_8)(local_8,3); + } + return 0; + } + if (local_8 != (int *)0x0) { + (**(code **)*local_8)(local_8,3); + } + } + uVar5 = 1; + } + } + } + return uVar5; +} + + + +/* @004bb878 file=? name=FUN_004bb878 */ + +void __cdecl FUN_004bb878(int *param_1) + +{ + FUN_004bace8(param_1); + return; +} + + + +/* @004bb888 file=? name=FUN_004bb888 */ + +int * __cdecl +FUN_004bb888(int *param_1,int param_2,undefined4 param_3,char *param_4,undefined4 param_5) + +{ + FUN_004bb120(param_1,param_2,param_3,param_4,param_5); + *param_1 = (int)&PTR_FUN_0051214c; + return param_1; +} + + + +/* @004bb8b4 file=? name=FUN_004bb8b4 */ + +void __cdecl FUN_004bb8b4(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0051214c; + FUN_004bb3c8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004bb8e0 file=? name=FUN_004bb8e0 */ + +undefined4 __cdecl +FUN_004bb8e0(int param_1,int param_2,char *param_3,char *param_4,char *param_5,int param_6, + int param_7,int param_8) + +{ + int iVar1; + + iVar1 = FUN_004bb478(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8); + if (iVar1 == 0) { + return 0; + } + param_5[0x24] = -0x24; + param_5[0x25] = '\x01'; + param_5[0x26] = '\0'; + param_5[0x27] = '\0'; + param_5[0x20] = -0x2c; + param_5[0x21] = '\v'; + param_5[0x22] = '\0'; + param_5[0x23] = '\0'; + return 1; +} + + + +/* @004bb92c file=? name=FUN_004bb92c */ + +void __cdecl FUN_004bb92c(int param_1) + +{ + FUN_0041a1a4(**(int **)(param_1 + 0xc),0x5120d4); + return; +} + + + +/* @004bbae0 file=? name=FUN_004bbae0 */ + +void __cdecl FUN_004bbae0(int *param_1,int *param_2) + +{ + FUN_004b96d4(param_1,param_2); + return; +} + + + +/* @004bbaf8 file=? name=FUN_004bbaf8 */ + +void __cdecl FUN_004bbaf8(int *param_1,int param_2) + +{ + FUN_004b96ec(param_1,param_2); + FUN_0041bbd8((int)(param_1 + 0xd4),3); + param_1[0xfa] = param_1[0xf7]; + param_1[0xfd] = param_1[0xfc]; + param_1[0xfe] = 0; + param_1[0x100] = -1; + *(ushort *)(param_1 + 6) = *(ushort *)(param_1 + 6) | 1; + return; +} + + + +/* @004bbb50 file=? name=FUN_004bbb50 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004bbb50(int param_1,float param_2) + +{ + float fVar1; + int iVar2; + float10 fVar3; + + if (*(int *)(param_1 + 0x400) == 0) { + *(float *)(param_1 + 0x3f4) = *(float *)(param_1 + 0x3f4) - param_2; + fVar1 = _DAT_004bbc18; + if (_DAT_004bbc18 <= *(float *)(param_1 + 0x3f4)) { + fVar1 = *(float *)(param_1 + 0x3f4); + } + *(float *)(param_1 + 0x3f4) = fVar1; + *(float *)(param_1 + 0x3f8) = + (*(float *)(param_1 + 0x3f0) - *(float *)(param_1 + 0x3f4)) / *(float *)(param_1 + 0x3f0); + } + fVar3 = FUN_004dcd00((double)(*(float *)(param_1 + 0x3f4) - _DAT_004bbc18)); + if (fVar3 <= (float10)_DAT_004bbc1c) { + iVar2 = FUN_00417ab4(param_1 + 0x43c); + if (iVar2 != 0) { + FUN_004bd588(iVar2); + FUN_0041bbd8(param_1 + 0x350,7); + } + *(undefined4 *)(param_1 + 0x400) = 0xffffffff; + } + return; +} + + + +/* @004bbc78 file=? name=FUN_004bbc78 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004bbc78(int param_1,float param_2) + +{ + float fVar1; + int iVar2; + float10 fVar3; + float local_c; + + fVar3 = FUN_004b0d50(param_1); + fVar1 = (float)((float10)_DAT_004bbd00 / fVar3); + if (fVar1 < _DAT_004bbd00) { + fVar1 = _DAT_004bbd00; + } + iVar2 = FUN_00417ab4(param_1 + 0x1d0); + local_c = *(float *)(iVar2 + 0x1dc) / *(float *)(iVar2 + 0x1d8); + if (local_c < *(float *)(param_1 + 0x404)) { + local_c = 0.0; + } + *(float *)(param_1 + 1000) = *(float *)(param_1 + 1000) - (param_2 * local_c) / fVar1; + return; +} + + + +/* @004bbfcc file=? name=FUN_004bbfcc */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl FUN_004bbfcc(int param_1) + +{ + float fVar1; + float10 fVar2; + + if (*(int *)(*(int *)(*(int *)(param_1 + 0xd0) + 400) + 0x25c) == 0) { + return 0; + } + if (*(int *)(param_1 + 0x184) != 0) { + fVar1 = (_DAT_004bc064 * *(float *)(param_1 + 0x114)) / *(float *)(param_1 + 0x11c); + if (*(float *)(param_1 + 0x3fc) <= fVar1) { + if (_DAT_004bc068 < fVar1) { + fVar1 = _DAT_004bc068; + } + } + else { + fVar1 = *(float *)(param_1 + 0x3fc); + } + fVar2 = FUN_00408050(); + if ((float10)fVar1 <= fVar2) { + return 0; + } + return 1; + } + return 0; +} + + + +/* @004bc06c file=? name=FUN_004bc06c */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 __cdecl FUN_004bc06c(int param_1) + +{ + float *pfVar1; + int iVar2; + float10 fVar3; + + pfVar1 = (float *)(param_1 + 0x420); + FUN_004b9cbc(param_1,pfVar1); + *(float *)(param_1 + 0x420) = *(float *)(param_1 + 0x410) + *(float *)(param_1 + 0x420); + *(float *)(param_1 + 0x424) = *(float *)(param_1 + 0x414) + *(float *)(param_1 + 0x424); + *(undefined4 *)(param_1 + 0x428) = *(undefined4 *)(param_1 + 0x418); + iVar2 = FUN_004b9bdc(param_1); + if (iVar2 == 0) { + fVar3 = (float10)*(float *)(param_1 + 0x40c) + (float10)_DAT_004bc100; + } + else { + fVar3 = FUN_004dd138((double)(*(float *)(param_1 + 0x428) * *(float *)(param_1 + 0x428) + + *(float *)(param_1 + 0x424) * *(float *)(param_1 + 0x424) + + *pfVar1 * *pfVar1)); + fVar3 = (float10)*(float *)(param_1 + 0x324) / fVar3; + } + return fVar3; +} + + + +/* @004bc3fc file=? name=FUN_004bc3fc */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +int * __cdecl +FUN_004bc3fc(int *param_1,int param_2,undefined4 param_3,char *param_4,undefined4 param_5) + +{ + int iVar1; + int iVar2; + float10 fVar3; + undefined4 local_60; + float local_5c; + float local_44 [12]; + undefined4 *local_14; + undefined4 *local_10; + int *local_c; + float local_8; + + FUN_004b99a8(param_1,param_2,param_3,param_4,param_5,8,(int *)0x0,0); + *param_1 = (int)&PTR_FUN_0051242c; + FUN_004bcbb0(param_1 + 0x10f,0); + param_1[0x10e] = *(int *)(param_4 + 0x1bc); + param_1[0x103] = *(int *)(param_4 + 0x1c4); + param_1[0xff] = *(int *)(param_4 + 0x1cc); + FUN_0040a7f4(param_1 + 0x108,(undefined4 *)&DAT_004e0fd4); + param_1[0x101] = *(int *)(param_4 + 0x1c8); + param_1[0x102] = 0; + FUN_0040aadc(local_44); + FUN_004b9948((int)param_1,local_44); + FUN_0040a968(&local_60,local_44); + fVar3 = FUN_004dd138((double)(_DAT_004bc67c * (float10)_DAT_004bc678 * (float10)local_5c)); + local_8 = (float)fVar3; + local_c = param_1 + 0x104; + FUN_00408440(local_c,&DAT_004e0f74); + param_1[0x106] = (int)-((float)param_1[0xca] / local_8); + param_1[0xfc] = 0x40400000; + param_1[0xfd] = param_1[0xfc]; + param_1[0xfe] = 0; + param_1[0x100] = -1; + if (((*(uint *)(param_2 + 0x28) & 0xc) == 0) && ((*(uint *)(param_2 + 0x28) & 0x100) != 0)) { + param_1[7] = (int)PTR_LAB_0051222c; + param_1[8] = DAT_00512230; + param_1[9] = DAT_00512234; + } + else { + param_1[10] = param_1[10] | 2; + } + if (*(int *)(param_4 + 0x1c0) < *(int *)(param_2 + 0x124)) { + iVar1 = *(int *)(*(int *)(param_2 + 0x128) + *(int *)(param_4 + 0x1c0) * 4); + (**(code **)(param_1[0x10f] + 4))(param_1 + 0x10f); + *(int *)(iVar1 + 0x1f0) = param_1[0xea]; + *(int *)(iVar1 + 500) = param_1[0xeb]; + local_10 = (undefined4 *)(iVar1 + 0x1f8); + *(int *)(iVar1 + 0x21c) = param_1[0xf5]; + FUN_00408440(local_10,param_1 + 0xec); + local_14 = (undefined4 *)(iVar1 + 0x204); + FUN_00408440(local_14,param_1 + 0xef); + FUN_00408440((undefined4 *)(iVar1 + 0x210),param_1 + 0xf2); + } + iVar1 = FUN_00417ab4((int)(param_1 + 0x10f)); + if (iVar1 == 0) { + FUN_004dbb24(&DAT_00524e20,(char *)param_1[0x35],(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_Could_not_get_ammo_bin__005122c0,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + } + iVar2 = FUN_00407064(*(int *)(DAT_004efc94 + 0x68),*(int *)(iVar1 + 0x1e8),0xf); + iVar1 = *(int *)(iVar2 + 4); + *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + 1; + if (iVar1 == 0) { + FUN_00406cd0(iVar2); + } + param_1[0x107] = **(int **)(iVar2 + 0x3c); + *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + -1; + return param_1; +} + + + +/* @004bc688 file=? name=FUN_004bc688 */ + +void __cdecl FUN_004bc688(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0051242c; + FUN_004bcbcf(param_1 + 0x10f,2); + FUN_004b9b9c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004bc6c8 file=? name=FUN_004bc6c8 */ + +void __cdecl FUN_004bc6c8(int param_1) + +{ + int iVar1; + + FUN_004b9d00(param_1); + iVar1 = *(int *)(param_1 + 0x364); + if (iVar1 == 5) { + FUN_004dbb24(&DAT_00524e20,*(char **)(param_1 + 0xd4),(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s___Jammed_005122e3,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + return; + } + if (iVar1 != 6) { + if (iVar1 == 7) { + FUN_004dbb24(&DAT_00524e20,*(char **)(param_1 + 0xd4),(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s___NoAmmo_005122d9,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + return; + } + FUN_004dbb24(&DAT_00524e20,*(char **)(param_1 + 0xd4),(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_Unknown_weapon_state__00512301,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + return; + } + FUN_004dbb24(&DAT_00524e20,*(char **)(param_1 + 0xd4),(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s___TriggerDuringJam_005122ed,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + return; +} + + + +/* @004bc7cc file=? name=FUN_004bc7cc */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl +FUN_004bc7cc(int param_1,int param_2,char *param_3,char *param_4,char *param_5,int param_6, + int param_7,int param_8) + +{ + char *pcVar1; + bool bVar2; + int iVar3; + undefined4 uVar4; + undefined3 extraout_var; + char *pcVar5; + char *pcVar6; + char *local_8; + + iVar3 = FUN_004b9d10(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8); + if (iVar3 == 0) { + uVar4 = 0; + } + else { + param_5[0x24] = -0x30; + param_5[0x25] = '\x01'; + param_5[0x26] = '\0'; + param_5[0x27] = '\0'; + param_5[0x20] = -0x33; + param_5[0x21] = '\v'; + param_5[0x22] = '\0'; + param_5[0x23] = '\0'; + if (param_8 == 1) { + param_5[0x1bc] = -1; + param_5[0x1bd] = -1; + param_5[0x1be] = -1; + param_5[0x1bf] = -1; + param_5[0x1c0] = -1; + param_5[0x1c1] = -1; + param_5[0x1c2] = -1; + param_5[0x1c3] = -1; + param_5[0x1c4] = '\0'; + param_5[0x1c5] = '\0'; + param_5[0x1c6] = -0x80; + param_5[0x1c7] = -0x41; + param_5[0x1c8] = '\0'; + param_5[0x1c9] = '\0'; + param_5[0x1ca] = -0x80; + param_5[0x1cb] = -0x41; + param_5[0x1cc] = '\0'; + param_5[0x1cd] = '\0'; + param_5[0x1ce] = -0x80; + param_5[0x1cf] = -0x41; + } + bVar2 = FUN_004040d8(param_6,param_4,s_TracerInterval_00512318,(int *)(param_5 + 0x1bc)); + if ((CONCAT31(extraout_var,bVar2) == 0) && (*(int *)(param_5 + 0x1bc) == -1)) { + FUN_004dbb24(&DAT_00524e20,param_4,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_missing_TracerInterval__00512327,(char *)0x0); + uVar4 = 0; + } + else { + local_8 = s_Unspecified_00512340; + iVar3 = FUN_00404088(param_6,param_4,s_AmmoBin_0051234c,&local_8); + if ((iVar3 == 0) && (*(int *)(param_5 + 0x1c0) == -1)) { + FUN_004dbb24(&DAT_00524e20,param_4,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_missing_AmmoBin__00512354,(char *)0x0); + uVar4 = 0; + } + else { + pcVar6 = s_Unspecified_00512366; + pcVar5 = local_8; + do { + bVar2 = *pcVar5 == *pcVar6; + if (!bVar2) break; + if (*pcVar5 == '\0') goto LAB_004bc929; + pcVar1 = pcVar5 + 1; + bVar2 = *pcVar1 == pcVar6[1]; + if (!bVar2) break; + pcVar5 = pcVar5 + 2; + pcVar6 = pcVar6 + 2; + bVar2 = *pcVar1 == '\0'; + } while (!bVar2); + if (!bVar2) { + iVar3 = FUN_004215b0(param_6,local_8); + *(int *)(param_5 + 0x1c0) = iVar3; + } +LAB_004bc929: + if (*(int *)(param_5 + 0x1c0) < 0) { + FUN_004dbb24(&DAT_00524e20,param_4,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_has_an_invalid_Ammo_Bin__00512372,(char *)0x0); + uVar4 = 0; + } + else { + pcVar6 = s_Unspecified_0051238d; + pcVar5 = local_8; + do { + bVar2 = *pcVar5 == *pcVar6; + if (!bVar2) break; + if (*pcVar5 == '\0') goto LAB_004bc98d; + pcVar1 = pcVar5 + 1; + bVar2 = *pcVar1 == pcVar6[1]; + if (!bVar2) break; + pcVar5 = pcVar5 + 2; + pcVar6 = pcVar6 + 2; + bVar2 = *pcVar1 == '\0'; + } while (!bVar2); + if (!bVar2) { + *(int *)(param_5 + 0x1c0) = *(int *)(param_5 + 0x1c0) + 2; + } +LAB_004bc98d: + iVar3 = FUN_00404118(param_6,param_4,s_MinTimeOfFlight_00512399,(float *)(param_5 + 0x1c4) + ); + if ((iVar3 == 0) && (_DAT_004bca9c == *(float *)(param_5 + 0x1c4))) { + FUN_004dbb24(&DAT_00524e20,param_4,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_missing_MinTimeOfFlight___005123a9,(char *)0x0); + uVar4 = 0; + } + else { + iVar3 = FUN_00404118(param_6,param_4,s_MinJamChance_005123c4,(float *)(param_5 + 0x1cc)) + ; + if ((iVar3 == 0) && (_DAT_004bca9c == *(float *)(param_5 + 0x1cc))) { + FUN_004dbb24(&DAT_00524e20,param_4,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_missing_MinJamChance___005123d1,(char *)0x0); + uVar4 = 0; + } + else { + iVar3 = FUN_00404118(param_6,param_4,s_MinVoltagePercentToFire_005123e9, + (float *)(param_5 + 0x1c8)); + if ((iVar3 == 0) && (_DAT_004bca9c == *(float *)(param_5 + 0x1c8))) { + FUN_004dbb24(&DAT_00524e20,param_4,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_missing_MinVoltagePercentToFire___00512401,(char *)0x0) + ; + uVar4 = 0; + } + else { + uVar4 = 1; + } + } + } + } + } + } + } + return uVar4; +} + + + +/* @004bcabc file=? name=FUN_004bcabc */ + +undefined4 __cdecl FUN_004bcabc(int *param_1,int param_2) + +{ + undefined4 uVar1; + + if (param_2 == 2) { + FUN_0041bbd8((int)(param_1 + 0xd4),5); + return 1; + } + uVar1 = FUN_004add6c(param_1,param_2); + return uVar1; +} + + + +/* @004bcbb0 file=? name=FUN_004bcbb0 */ + +undefined4 * __cdecl FUN_004bcbb0(undefined4 *param_1,undefined4 param_2) + +{ + FUN_004179d4(param_1,param_2); + *param_1 = &PTR_FUN_00512424; + return param_1; +} + + + +/* @004bcbcf file=? name=FUN_004bcbcf */ + +void __cdecl FUN_004bcbcf(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_00512424; + FUN_004179f8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004bcc60 file=? name=FUN_004bcc60 */ + +void __cdecl FUN_004bcc60(int param_1) + +{ + int iVar1; + undefined4 uVar2; + undefined4 uVar3; + undefined4 uVar4; + undefined4 uVar5; + undefined4 uVar6; + undefined4 uVar7; + undefined4 uVar8; + undefined4 uVar9; + undefined4 uVar10; + undefined4 uVar11; + undefined4 uVar12; + undefined4 uVar13; + undefined4 uVar14; + undefined4 uVar15; + int iVar16; + undefined4 local_168; + undefined4 local_164; + undefined4 local_160; + undefined4 local_15c [2]; + undefined4 local_154; + undefined4 local_150; + undefined4 local_14c; + undefined4 local_148 [2]; + undefined4 local_140; + undefined4 local_13c; + undefined4 local_138; + undefined4 local_134; + undefined4 local_130; + undefined4 local_12c; + undefined4 local_128; + undefined4 local_124; + undefined4 local_120; + undefined4 local_11c [6]; + undefined4 local_104 [6]; + undefined4 local_ec [2]; + undefined4 local_e4; + undefined4 local_e0; + undefined4 local_dc; + undefined4 local_d8; + undefined4 local_d4; + undefined4 local_d0; + undefined4 local_cc; + undefined4 local_c8; + undefined4 local_c4; + undefined4 local_c0; + undefined4 local_bc; + undefined4 local_b8; + undefined4 local_b4; + undefined4 local_b0; + undefined4 local_ac [2]; + float local_a4; + undefined4 local_a0; + undefined4 local_9c; + undefined4 local_98; + undefined4 local_94; + undefined4 local_90; + undefined4 local_8c; + undefined4 local_88; + undefined4 local_84; + undefined4 local_80; + undefined4 local_7c; + float local_78 [12]; + float local_48; + float local_44; + float local_40; + float local_30; + undefined4 local_2c; + undefined4 local_28; + undefined4 local_24 [2]; + undefined4 local_1c; + undefined4 local_18; + undefined4 local_14 [2]; + float local_c; + int local_8; + + iVar1 = *(int *)(param_1 + 0xd0); + local_8 = FUN_00417ab4(param_1 + 0x43c); + iVar16 = FUN_004ad7d4(param_1); + if (iVar16 != 0) { + local_c = *(float *)(param_1 + 0x3d8); + *(float *)(param_1 + 0x1c8) = local_c + *(float *)(param_1 + 0x1c8); + } + local_30 = DAT_004e0f80; + local_2c = DAT_004e0f84; + local_28 = DAT_004e0f88; + FUN_00420e8c(local_14); + iVar16 = *(int *)(iVar1 + 0x388); + if (iVar16 != 0) { + FUN_00420ef4(local_14,(undefined4 *)(iVar16 + 0x184)); + FUN_00408bf8(&local_30,(float *)(iVar1 + 0x37c),(float *)(iVar16 + 0xd0)); + } + uVar2 = *(undefined4 *)(*(int *)(iVar1 + 400) + 0x264); + FUN_004b9cbc(param_1,&local_48); + local_48 = *(float *)(param_1 + 0x410) + local_48; + local_44 = *(float *)(param_1 + 0x414) + local_44; + local_40 = local_40 - *(float *)(param_1 + 0x418); + FUN_0040aadc(local_78); + FUN_004b9948(param_1,local_78); + FUN_0040a968(&local_94,local_78); + local_1c = *(undefined4 *)(param_1 + 0x3e4); + uVar3 = *(undefined4 *)(param_1 + 0x3a8); + uVar4 = *(undefined4 *)(param_1 + 0x3ac); + uVar5 = *(undefined4 *)(param_1 + 0x3b0); + uVar6 = *(undefined4 *)(param_1 + 0x3b4); + uVar7 = *(undefined4 *)(param_1 + 0x3b8); + uVar8 = *(undefined4 *)(param_1 + 0x3bc); + uVar9 = *(undefined4 *)(param_1 + 0x3c0); + uVar10 = *(undefined4 *)(param_1 + 0x3c4); + uVar11 = *(undefined4 *)(param_1 + 0x3c8); + uVar12 = *(undefined4 *)(param_1 + 0x3cc); + uVar13 = *(undefined4 *)(param_1 + 0x3d0); + uVar14 = *(undefined4 *)(param_1 + 0x3d4); + uVar15 = *(undefined4 *)(local_8 + 0x1e8); + local_18 = uVar2; + FUN_00420ebc(local_24,0xbd0); + uVar2 = *(undefined4 *)(param_1 + 0xd8); + local_168 = 0xd4; + local_164 = 3; + local_160 = 1; + FUN_00420ea4(local_15c,(undefined4 *)&DAT_00522524); + local_154 = 0; + local_150 = 0; + local_14c = 0xbba; + FUN_00420ea4(local_148,local_24); + local_13c = 0xc100; + local_138 = local_94; + local_134 = local_90; + local_130 = local_8c; + local_12c = local_88; + local_128 = local_84; + local_124 = local_80; + local_120 = local_7c; + local_140 = uVar15; + FUN_0040a7c0(local_11c,&local_48); + FUN_0040a7c0(local_104,(undefined4 *)&DAT_004e0fd4); + FUN_00420ea4(local_ec,(undefined4 *)(iVar1 + 0x184)); + local_b0 = local_1c; + local_e4 = uVar2; + local_e0 = uVar3; + local_dc = uVar4; + local_d8 = uVar5; + local_d4 = uVar6; + local_d0 = uVar7; + local_cc = uVar8; + local_c8 = uVar9; + local_c4 = uVar10; + local_c0 = uVar11; + local_bc = uVar12; + local_b8 = uVar13; + local_b4 = uVar14; + FUN_00420ea4(local_ac,local_14); + local_a4 = local_30; + local_a0 = local_2c; + local_9c = local_28; + local_98 = local_18; + FUN_004bf8bc((int)&local_168); + return; +} + + + +/* @004bcff0 file=? name=FUN_004bcff0 */ + +int * __cdecl +FUN_004bcff0(int *param_1,int param_2,undefined4 param_3,char *param_4,undefined4 param_5) + +{ + FUN_004bc3fc(param_1,param_2,param_3,param_4,param_5); + *param_1 = (int)&PTR_FUN_00512570; + param_1[0x112] = *(int *)(param_4 + 0x1d0); + FUN_00408440(param_1 + 0x104,(undefined4 *)(param_4 + 0x1d4)); + param_1[0xf5] = param_1[0x112]; + param_1[0xeb] = (int)((float)param_1[0xeb] / (float)param_1[0x112]); + return param_1; +} + + + +/* @004bd060 file=? name=FUN_004bd060 */ + +void __cdecl FUN_004bd060(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_00512570; + FUN_004bc688(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004bd08c file=? name=FUN_004bd08c */ + +undefined4 __cdecl +FUN_004bd08c(int param_1,int param_2,char *param_3,char *param_4,char *param_5,int param_6, + int param_7,int param_8) + +{ + char *pcVar1; + bool bVar2; + int iVar3; + undefined4 uVar4; + undefined3 extraout_var; + char *pcVar5; + char *pcVar6; + char *local_8; + + iVar3 = FUN_004bc7cc(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8); + if (iVar3 == 0) { + uVar4 = 0; + } + else { + param_5[0x24] = -0x20; + param_5[0x25] = '\x01'; + param_5[0x26] = '\0'; + param_5[0x27] = '\0'; + param_5[0x20] = -0x30; + param_5[0x21] = '\v'; + param_5[0x22] = '\0'; + param_5[0x23] = '\0'; + if (param_8 == 1) { + param_5[0x1d0] = -1; + param_5[0x1d1] = -1; + param_5[0x1d2] = -1; + param_5[0x1d3] = -1; + } + bVar2 = FUN_004040d8(param_6,param_4,s_MissileCount_00512509,(int *)(param_5 + 0x1d0)); + if ((CONCAT31(extraout_var,bVar2) == 0) && (*(int *)(param_5 + 0x1d0) == -1)) { + FUN_004dbb24((int *)&DAT_00524e68,param_4,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_MissileCount__00512516,(char *)0x0); + uVar4 = 0; + } + else { + local_8 = s_Unspecified_0051252d; + iVar3 = FUN_00404088(param_6,param_4,s_MuzzleVelocity_00512539,&local_8); + if ((iVar3 == 0) && + (iVar3 = FUN_004084fc((float *)&DAT_004e0f74,(float *)(param_5 + 0x1d4),0.0001), iVar3 != 0 + )) { + FUN_004dbb24((int *)&DAT_00524e68,param_4,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_MuzzleVelocity__00512548,(char *)0x0); + return 0; + } + pcVar6 = s_Unspecified_00512561; + pcVar5 = local_8; + do { + bVar2 = *pcVar5 == *pcVar6; + if (!bVar2) break; + if (*pcVar5 == '\0') goto LAB_004bd1d2; + pcVar1 = pcVar5 + 1; + bVar2 = *pcVar1 == pcVar6[1]; + if (!bVar2) break; + pcVar5 = pcVar5 + 2; + pcVar6 = pcVar6 + 2; + bVar2 = *pcVar1 == '\0'; + } while (!bVar2); + if (!bVar2) { + FUN_00408944(local_8,(float *)(param_5 + 0x1d4)); + } +LAB_004bd1d2: + uVar4 = 1; + } + } + return uVar4; +} + + + +/* @004bd1e0 file=? name=FUN_004bd1e0 */ + +void __cdecl FUN_004bd1e0(int param_1) + +{ + FUN_0041a1a4(**(int **)(param_1 + 0xc),0x512488); + return; +} + + + +/* @004bd2c0 file=? name=FUN_004bd2c0 */ + +void __cdecl FUN_004bd2c0(int *param_1,undefined4 param_2) + +{ + int iVar1; + + iVar1 = param_1[0x10]; + FUN_004aea84(param_1,param_2); + if ((param_1[0x10] == 1) && (iVar1 != 1)) { + param_1[0x60] = 0; + FUN_0041bbd8((int)(param_1 + 0x65),2); + } + return; +} + + + +/* @004bd300 file=? name=FUN_004bd300 */ + +void __cdecl FUN_004bd300(int *param_1) + +{ + int local_34; + float local_30; + int local_2c; + int local_28; + int local_24; + int local_20; + int local_1c; + int local_18; + int local_14; + int local_10; + int local_c; + int local_8; + + local_34 = param_1[0x7c]; + local_2c = param_1[0x7e]; + local_28 = param_1[0x7f]; + local_24 = param_1[0x80]; + local_20 = param_1[0x81]; + local_1c = param_1[0x82]; + local_18 = param_1[0x83]; + local_14 = param_1[0x84]; + local_10 = param_1[0x85]; + local_c = param_1[0x86]; + local_8 = param_1[0x87]; + local_30 = (float)param_1[0x60] * (float)param_1[0x7d]; + FUN_004ac274(param_1,&local_34); + param_1[0x60] = 0; + FUN_0041bbd8((int)(param_1 + 0x65),2); + return; +} + + + +/* @004bd394 file=? name=FUN_004bd394 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004bd394(int *param_1,float param_2) + +{ + int *piVar1; + int iVar2; + int *piVar3; + + FUN_004aeac4((int)param_1); + if (param_1[0x10] == 1) { + FUN_0041bbd8((int)(param_1 + 0x65),2); + } + if ((_DAT_004bd4e8 < param_2) && (param_1[0x6a] == 0)) { + if (param_2 < (float)param_1[0x61]) { + param_1[0x61] = (int)((float)param_1[0x61] - param_2); + } + else { + param_1[0x61] = 0; + FUN_0041bbd8((int)(param_1 + 0x65),1); + } + } + if (((param_1[0x50] == 2) && (param_1[0x6a] != 2)) && (param_1[99] == 0)) { + param_1[99] = 1; + piVar1 = (int *)FUN_00414b60(); + piVar3 = param_1 + 100; + *piVar3 = *piVar1; + iVar2 = FUN_004dcd94(); + *piVar3 = *piVar3 + iVar2; + } + if (param_1[99] != 0) { + if (param_1[0x6a] == 2) { + param_1[99] = 0; + } + else { + piVar3 = (int *)FUN_00414b60(); + if (param_1[100] < *piVar3) { + param_1[99] = 0; + FUN_0041bbd8((int)(param_1 + 0xb),1); + if (param_1[0x41] != 0) { + (**(code **)(*param_1 + 0x34))(param_1); + } + FUN_004bd300(param_1); + } + } + } + if (param_1[0x60] < 1) { + FUN_0041bbd8((int)(param_1 + 0x65),2); + } + return; +} + + + +/* @004bd4f4 file=? name=FUN_004bd4f4 */ + +undefined4 __cdecl FUN_004bd4f4(int param_1) + +{ + int iVar1; + undefined4 uVar2; + + if (*(int *)(param_1 + 0x40) == 1) { + uVar2 = 0; + } + else { + iVar1 = *(int *)(param_1 + 0x1a8); + if (iVar1 == 0) { + uVar2 = 0; + } + else if (iVar1 == 1) { + FUN_0041bbd8(param_1 + 0x194,0); + *(undefined4 *)(param_1 + 0x184) = *(undefined4 *)(param_1 + 0x224); + *(int *)(param_1 + 0x180) = *(int *)(param_1 + 0x180) + -1; + if (*(int *)(param_1 + 0x180) < 1) { + FUN_0041bbd8(param_1 + 0x194,2); + } + if (*(int *)(param_1 + 0x180) < 0) { + uVar2 = 0; + } + else { + uVar2 = *(undefined4 *)(param_1 + 0x180); + } + *(undefined4 *)(param_1 + 0x180) = uVar2; + uVar2 = 1; + } + else if (iVar1 == 2) { + uVar2 = 0; + } + else if (iVar1 == 3) { + uVar2 = 0; + } + else { + uVar2 = 0; + } + } + return uVar2; +} + + + +/* @004bd588 file=? name=FUN_004bd588 */ + +void __cdecl FUN_004bd588(int param_1) + +{ + if (*(int *)(param_1 + 0x1a8) != 2) { + *(undefined4 *)(param_1 + 0x180) = 0; + FUN_0041bbd8(param_1 + 0x194,5); + FUN_0041bbd8(param_1 + 0x194,2); + } + return; +} + + + +/* @004bd5c4 file=? name=FUN_004bd5c4 */ + +int * __cdecl FUN_004bd5c4(int *param_1,int param_2,undefined4 param_3,char *param_4) + +{ + FUN_004aeb40(param_1,param_2,param_3,param_4,&DAT_005125bc); + *param_1 = (int)&PTR_FUN_0051286c; + FUN_0041b9ec(param_1 + 0x65,6); + FUN_0041db7c((int)(param_1 + 0x7c)); + param_1[0x8a] = 0; + param_1[0x60] = *(int *)(param_4 + 0xfc); + param_1[0x89] = *(int *)(param_4 + 0x100); + param_1[0x62] = *(int *)(param_4 + 0xf0); + param_1[0x7a] = *(int *)(param_4 + 0xf4); + param_1[0x7b] = *(int *)(param_4 + 0xf8); + param_1[0x61] = 0; + if (((*(uint *)(param_2 + 0x28) & 0xc) == 0) && ((*(uint *)(param_2 + 0x28) & 0x100) != 0)) { + param_1[7] = (int)PTR_FUN_00512654; + param_1[8] = DAT_00512658; + param_1[9] = DAT_0051265c; + } + FUN_0041bbd8((int)(param_1 + 0x65),1); + param_1[0x88] = param_1[0x60]; + param_1[99] = 0; + return param_1; +} + + + +/* @004bd6b0 file=? name=FUN_004bd6b0 */ + +void __cdecl FUN_004bd6b0(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0051286c; + FUN_0041baa4(param_1 + 0x65,2); + FUN_004aebe8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004bd6f0 file=? name=FUN_004bd6f0 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl +FUN_004bd6f0(int param_1,int param_2,char *param_3,char *param_4,char *param_5,int param_6, + int param_7,int param_8) + +{ + char *pcVar1; + bool bVar2; + int iVar3; + undefined4 uVar4; + undefined3 extraout_var; + char *pcVar5; + char *pcVar6; + char *pcVar7; + undefined4 *puVar8; + char *local_14; + undefined4 *local_10; + char *local_c; + char *local_8; + + iVar3 = FUN_004aec54(param_2,param_3,param_4,param_5,param_6,param_7,param_8); + if (iVar3 == 0) { + uVar4 = 0; + } + else { + param_5[0x24] = '\x04'; + param_5[0x25] = '\x01'; + param_5[0x26] = '\0'; + param_5[0x27] = '\0'; + param_5[0x20] = -0x35; + param_5[0x21] = '\v'; + param_5[0x22] = '\0'; + param_5[0x23] = '\0'; + if (param_8 == 1) { + param_5[0xfc] = -1; + param_5[0xfd] = -1; + param_5[0xfe] = -1; + param_5[0xff] = -1; + param_5[0x100] = '\0'; + param_5[0x101] = '\0'; + param_5[0x102] = -0x80; + param_5[0x103] = -0x41; + param_5[0xf0] = -1; + param_5[0xf1] = -1; + param_5[0xf2] = -1; + param_5[0xf3] = -1; + param_5[0xf4] = -1; + param_5[0xf5] = -1; + param_5[0xf6] = -1; + param_5[0xf7] = -1; + param_5[0xf8] = -1; + param_5[0xf9] = -1; + param_5[0xfa] = -1; + param_5[0xfb] = -1; + } + bVar2 = FUN_004040d8(param_6,param_4,s_AmmoCount_005126ea,(int *)(param_5 + 0xfc)); + if ((CONCAT31(extraout_var,bVar2) == 0) && (*(int *)(param_5 + 0xfc) == -1)) { + FUN_004dbb24((int *)&DAT_00524e68,param_4,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_AmmoCount__005126f4,(char *)0x0); + uVar4 = 0; + } + else { + iVar3 = FUN_00404118(param_6,param_4,s_FeedRate_00512708,(float *)(param_5 + 0x100)); + if ((iVar3 == 0) && (_DAT_004bdb74 == *(float *)(param_5 + 0x100))) { + FUN_004dbb24((int *)&DAT_00524e68,param_4,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_FeedRate__00512711,(char *)0x0); + uVar4 = 0; + } + else { + local_8 = s_Unspecified_00512724; + iVar3 = FUN_00404088(param_6,param_4,s_AmmoClassID_00512730,&local_8); + pcVar6 = local_8; + if ((iVar3 == 0) && (*(int *)(param_5 + 0xf0) == -1)) { + FUN_004dbb24((int *)&DAT_00524e68,param_4,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_AmmoClassID__0051273c,(char *)0x0); + uVar4 = 0; + } + else { + pcVar5 = s_Unspecified_00512752; + pcVar7 = local_8; + do { + if (*pcVar5 != *pcVar7) goto LAB_004bd894; + bVar2 = true; + if (*pcVar5 == '\0') break; + pcVar1 = pcVar5 + 1; + if (*pcVar1 != pcVar7[1]) goto LAB_004bd894; + pcVar5 = pcVar5 + 2; + pcVar7 = pcVar7 + 2; + bVar2 = *pcVar1 == '\0'; + } while (!bVar2); + if (!bVar2) { +LAB_004bd894: + pcVar5 = s_ProjectileClassID_0051275e; + pcVar7 = local_8; + do { + if (*pcVar5 != *pcVar7) goto LAB_004bd8c9; + bVar2 = true; + if (*pcVar5 == '\0') break; + pcVar1 = pcVar5 + 1; + if (*pcVar1 != pcVar7[1]) goto LAB_004bd8c9; + pcVar5 = pcVar5 + 2; + pcVar7 = pcVar7 + 2; + bVar2 = *pcVar1 == '\0'; + } while (!bVar2); + if (bVar2) { + param_5[0xf0] = -0x2f; + param_5[0xf1] = '\v'; + param_5[0xf2] = '\0'; + param_5[0xf3] = '\0'; + } + else { +LAB_004bd8c9: + pcVar5 = s_MissileClassID_00512770; + pcVar7 = local_8; + do { + if (*pcVar5 != *pcVar7) goto LAB_004bd8fb; + bVar2 = true; + if (*pcVar5 == '\0') break; + pcVar1 = pcVar5 + 1; + if (*pcVar1 != pcVar7[1]) goto LAB_004bd8fb; + pcVar5 = pcVar5 + 2; + pcVar7 = pcVar7 + 2; + bVar2 = *pcVar1 == '\0'; + } while (!bVar2); + if (bVar2) { + param_5[0xf0] = -0x46; + param_5[0xf1] = '\v'; + param_5[0xf2] = '\0'; + param_5[0xf3] = '\0'; + } + else { +LAB_004bd8fb: + if (*(int *)(param_5 + 0xf0) == -1) { + FUN_004dbb24((int *)&DAT_00524e68,param_4,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_invalid_AmmoClassID_0051277f,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,pcVar6,(char *)0x0); + FUN_004d9c38((int *)&DAT_00524e68); + return 0; + } + } + } + } + local_c = s_Unspecified_00512794; + iVar3 = FUN_00404088(param_6,param_4,s_AmmoModelFile_005127a0,&local_c); + if ((iVar3 == 0) && (*(int *)(param_5 + 0xf4) == -1)) { + FUN_004dbb24((int *)&DAT_00524e68,param_4,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_missing_AmmoModelFile__005127ae,(char *)0x0); + uVar4 = 0; + } + else { + local_10 = (undefined4 *)0x0; + pcVar7 = s_Unspecified_005127c6; + pcVar6 = local_c; + do { + bVar2 = *pcVar6 == *pcVar7; + if (!bVar2) break; + if (*pcVar6 == '\0') goto LAB_004bd9e5; + pcVar5 = pcVar6 + 1; + bVar2 = *pcVar5 == pcVar7[1]; + if (!bVar2) break; + pcVar6 = pcVar6 + 2; + pcVar7 = pcVar7 + 2; + bVar2 = *pcVar5 == '\0'; + } while (!bVar2); + if (!bVar2) { + local_10 = (undefined4 *)FUN_00406ff8(param_1,local_c,1,-1); + } +LAB_004bd9e5: + if ((local_10 == (undefined4 *)0x0) && (*(int *)(param_5 + 0xf4) == -1)) { + FUN_004dbb24((int *)&DAT_00524e68,local_c,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_must_be_declared_before_005127d2,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_in_the__bld_file_005127ec,(char *)0x0); + FUN_004d9c38((int *)&DAT_00524e68); + uVar4 = 0; + } + else { + if (local_10 != (undefined4 *)0x0) { + *(undefined4 *)(param_5 + 0xf4) = *local_10; + } + local_14 = s_Unspecified_005127ff; + iVar3 = FUN_00404088(param_6,param_4,s_ExplosionModelFile_0051280b,&local_14); + if ((iVar3 == 0) && (*(int *)(param_5 + 0xf8) == -1)) { + FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_missing_ExplosionModelFile__0051281e,(char *)0x0); + uVar4 = 0; + } + else { + puVar8 = (undefined4 *)0x0; + pcVar7 = s_Unspecified_0051283c; + pcVar6 = local_14; + do { + bVar2 = *pcVar6 == *pcVar7; + if (!bVar2) break; + if (*pcVar6 == '\0') goto LAB_004bdafa; + pcVar5 = pcVar6 + 1; + bVar2 = *pcVar5 == pcVar7[1]; + if (!bVar2) break; + pcVar6 = pcVar6 + 2; + pcVar7 = pcVar7 + 2; + bVar2 = *pcVar5 == '\0'; + } while (!bVar2); + if (!bVar2) { + puVar8 = (undefined4 *)FUN_00406ff8(param_1,local_14,1,-1); + } +LAB_004bdafa: + pcVar6 = local_14; + if ((puVar8 == (undefined4 *)0x0) && (*(int *)(param_5 + 0xf8) == -1)) { + FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_cannot_find_00512848,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,pcVar6,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_in_resource_file__00512856,(char *)0x0); + uVar4 = 0; + } + else { + if (puVar8 != (undefined4 *)0x0) { + *(undefined4 *)(param_5 + 0xf8) = *puVar8; + } + uVar4 = 1; + } + } + } + } + } + } + } + } + return uVar4; +} + + + +/* @004bdb94 file=? name=FUN_004bdb94 */ + +undefined4 __cdecl FUN_004bdb94(int *param_1,int param_2) + +{ + int *piVar1; + int *piVar2; + int iVar3; + undefined4 uVar4; + + if (param_2 != 1) { + uVar4 = FUN_004ac1d4(param_1,param_2); + return uVar4; + } + if (param_1[99] == 0) { + param_1[99] = 1; + piVar2 = (int *)FUN_00414b60(); + piVar1 = param_1 + 100; + *piVar1 = *piVar2; + iVar3 = FUN_004dcd94(); + *piVar1 = *piVar1 + iVar3; + return 1; + } + return 0; +} + + + +/* @004bdcb4 file=? name=FUN_004bdcb4 */ + +int * __cdecl +FUN_004bdcb4(int *param_1,int param_2,undefined4 param_3,char *param_4,undefined4 param_5) + +{ + FUN_004bb120(param_1,param_2,param_3,param_4,param_5); + *param_1 = (int)&PTR_FUN_00512934; + param_1[0x105] = 0; + return param_1; +} + + + +/* @004bdce8 file=? name=FUN_004bdce8 */ + +void __cdecl FUN_004bdce8(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_00512934; + FUN_004bb3c8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004bdd14 file=? name=FUN_004bdd14 */ + +undefined4 __cdecl +FUN_004bdd14(int param_1,int param_2,char *param_3,char *param_4,char *param_5,int param_6, + int param_7,int param_8) + +{ + int iVar1; + + iVar1 = FUN_004bb478(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8); + if (iVar1 == 0) { + return 0; + } + param_5[0x24] = -0x20; + param_5[0x25] = '\x01'; + param_5[0x26] = '\0'; + param_5[0x27] = '\0'; + param_5[0x20] = -0x32; + param_5[0x21] = '\v'; + param_5[0x22] = '\0'; + param_5[0x23] = '\0'; + return 1; +} + + + +/* @004bdd60 file=? name=FUN_004bdd60 */ + +void __cdecl FUN_004bdd60(int param_1) + +{ + FUN_0041a1a4(**(int **)(param_1 + 0xc),0x5128b8); + return; +} + + + +/* @004be078 file=? name=FUN_004be078 */ + +void FUN_004be078(int param_1,int *param_2) + +{ + int iVar1; + int iVar2; + undefined4 uStack_74; + undefined4 uStack_70; + undefined4 uStack_6c; + undefined4 auStack_68 [2]; + undefined4 uStack_60; + undefined4 uStack_5c; + undefined4 auStack_58 [2]; + undefined4 uStack_50; + undefined4 uStack_4c; + undefined4 uStack_48; + undefined4 uStack_44; + undefined4 uStack_40; + undefined4 uStack_3c; + undefined4 uStack_38; + undefined4 uStack_34; + undefined4 uStack_30; + undefined4 uStack_2c; + undefined4 uStack_28; + undefined4 uStack_24; + undefined4 uStack_20; + undefined4 uStack_1c; + int iStack_18; + uint uStack_14; + float fStack_10; + undefined4 uStack_c; + undefined4 uStack_8; + + FUN_00408440((undefined4 *)(param_1 + 0x32c),(undefined4 *)(param_1 + 0x100)); + fStack_10 = DAT_004e0f74; + uStack_c = DAT_004e0f78; + uStack_8 = DAT_004e0f7c; + FUN_004086ac(&fStack_10,(float *)(param_1 + 500),*(float *)(param_1 + 0x20c)); + FUN_00408440((undefined4 *)(param_1 + 0x314),&fStack_10); + iVar1 = *(int *)(param_1 + 0x300); + iVar2 = *(int *)(param_1 + 0x308); + uStack_74 = 100; + uStack_70 = 0x12; + uStack_6c = 1; + FUN_00420ea4(auStack_68,(undefined4 *)&DAT_00522524); + uStack_60 = 0; + uStack_5c = 0; + FUN_00420ea4(auStack_58,(undefined4 *)(iVar1 + 0x184)); + uStack_50 = 0xffffffff; + uStack_4c = 1; + uStack_48 = *(undefined4 *)(param_1 + 0x30c); + uStack_44 = *(undefined4 *)(param_1 + 0x310); + uStack_40 = *(undefined4 *)(param_1 + 0x314); + uStack_3c = *(undefined4 *)(param_1 + 0x318); + uStack_38 = *(undefined4 *)(param_1 + 0x31c); + uStack_34 = *(undefined4 *)(param_1 + 800); + uStack_30 = *(undefined4 *)(param_1 + 0x324); + uStack_2c = *(undefined4 *)(param_1 + 0x328); + uStack_28 = *(undefined4 *)(param_1 + 0x32c); + uStack_24 = *(undefined4 *)(param_1 + 0x330); + uStack_20 = *(undefined4 *)(param_1 + 0x334); + uStack_1c = *(undefined4 *)(param_1 + 0x338); + uStack_14 = (uint)(iVar2 < 0); + iStack_18 = iVar2; + (**(code **)(*param_2 + 0xc))(param_2,&uStack_74); + return; +} + + + +/* @004be07e file=? name=FUN_004be07e */ + +void FUN_004be07e(void) + +{ + int iVar1; + int iVar2; + undefined4 uVar3; + int unaff_EBP; + + iVar1 = *(int *)(unaff_EBP + 8); + FUN_00408440((undefined4 *)(iVar1 + 0x32c),(undefined4 *)(iVar1 + 0x100)); + *(undefined4 *)(unaff_EBP + -0xc) = DAT_004e0f74; + *(undefined4 *)(unaff_EBP + -8) = DAT_004e0f78; + *(undefined4 *)(unaff_EBP + -4) = DAT_004e0f7c; + FUN_004086ac((float *)(unaff_EBP + -0xc),(float *)(iVar1 + 500),*(float *)(iVar1 + 0x20c)); + FUN_00408440((undefined4 *)(iVar1 + 0x314),(undefined4 *)(unaff_EBP + -0xc)); + iVar2 = *(int *)(iVar1 + 0x300); + uVar3 = *(undefined4 *)(iVar1 + 0x308); + *(undefined4 *)(unaff_EBP + -0x70) = 100; + *(undefined4 *)(unaff_EBP + -0x6c) = 0x12; + *(undefined4 *)(unaff_EBP + -0x68) = 1; + FUN_00420ea4((undefined4 *)(unaff_EBP + -100),(undefined4 *)&DAT_00522524); + *(undefined4 *)(unaff_EBP + -0x5c) = 0; + *(undefined4 *)(unaff_EBP + -0x58) = 0; + FUN_00420ea4((undefined4 *)(unaff_EBP + -0x54),(undefined4 *)(iVar2 + 0x184)); + *(undefined4 *)(unaff_EBP + -0x4c) = 0xffffffff; + *(undefined4 *)(unaff_EBP + -0x48) = 1; + *(undefined4 *)(unaff_EBP + -0x44) = *(undefined4 *)(iVar1 + 0x30c); + *(undefined4 *)(unaff_EBP + -0x40) = *(undefined4 *)(iVar1 + 0x310); + *(undefined4 *)(unaff_EBP + -0x3c) = *(undefined4 *)(iVar1 + 0x314); + *(undefined4 *)(unaff_EBP + -0x38) = *(undefined4 *)(iVar1 + 0x318); + *(undefined4 *)(unaff_EBP + -0x34) = *(undefined4 *)(iVar1 + 0x31c); + *(undefined4 *)(unaff_EBP + -0x30) = *(undefined4 *)(iVar1 + 800); + *(undefined4 *)(unaff_EBP + -0x2c) = *(undefined4 *)(iVar1 + 0x324); + *(undefined4 *)(unaff_EBP + -0x28) = *(undefined4 *)(iVar1 + 0x328); + *(undefined4 *)(unaff_EBP + -0x24) = *(undefined4 *)(iVar1 + 0x32c); + *(undefined4 *)(unaff_EBP + -0x20) = *(undefined4 *)(iVar1 + 0x330); + *(undefined4 *)(unaff_EBP + -0x1c) = *(undefined4 *)(iVar1 + 0x334); + *(undefined4 *)(unaff_EBP + -0x18) = *(undefined4 *)(iVar1 + 0x338); + *(undefined4 *)(unaff_EBP + -0x14) = uVar3; + *(uint *)(unaff_EBP + -0x10) = (uint)(*(int *)(unaff_EBP + -0x14) < 0); + (**(code **)(**(int **)(unaff_EBP + 0xc) + 0xc))(*(int **)(unaff_EBP + 0xc),unaff_EBP + -0x70); + return; +} + + + +/* @004be1bc file=? name=FUN_004be1bc */ + +int * __cdecl FUN_004be1bc(int *param_1,int param_2,undefined4 param_3) + +{ + int iVar1; + + FUN_004234f0(param_1,param_2,param_3); + *param_1 = (int)&PTR_FUN_00512a5c; + FUN_0041db7c((int)(param_1 + 0xc3)); + param_1[10] = param_1[10] | 0x10; + FUN_0041bbd8((int)(param_1 + 0xb),2); + iVar1 = (**(code **)(*(int *)(*(int *)(DAT_004efc94 + 0x2c) + 0x54) + 0xc)) + (*(int *)(DAT_004efc94 + 0x2c) + 0x54,param_2 + 0x7c); + param_1[0xc0] = iVar1; + param_1[0xc1] = *(int *)(*(int *)(param_1[0xc0] + 0x128) + *(int *)(param_2 + 0x84) * 4); + param_1[0xc2] = *(int *)(param_2 + 0x84); + param_1[0xc3] = *(int *)(param_2 + 0x88); + param_1[0xc4] = *(int *)(param_2 + 0x8c); + param_1[0xce] = *(int *)(param_2 + 0xb4); + FUN_00408440(param_1 + 0xc5,(undefined4 *)(param_2 + 0x90)); + FUN_00408440(param_1 + 200,(undefined4 *)(param_2 + 0x9c)); + FUN_00408440(param_1 + 0xcb,(undefined4 *)(param_2 + 0xa8)); + param_1[0xcf] = *(int *)(param_2 + 0xb8); + iVar1 = FUN_00433ed4(*(int *)(DAT_004efc94 + 0x30) + 0x14); + param_1[0x94] = *(int *)(iVar1 + 0x34) + 0x2c; + param_1[0x95] = (int)PTR_FUN_005129dc; + param_1[0x96] = DAT_005129e0; + param_1[0x97] = DAT_005129e4; + if ((param_1[10] & 0xcU) == 4) { + param_1[7] = (int)PTR_LAB_005129e8; + param_1[8] = DAT_005129ec; + param_1[9] = DAT_005129f0; + } + else { + param_1[7] = (int)PTR_LAB_005129f4; + param_1[8] = DAT_005129f8; + param_1[9] = DAT_005129fc; + } + (**(code **)(*param_1 + 0x38))(param_1); + return param_1; +} + + + +/* @004be358 file=? name=FUN_004be358 */ + +void __cdecl FUN_004be358(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_00512a5c; + FUN_00423c18(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004be384 file=? name=FUN_004be384 */ + +int * __cdecl FUN_004be384(int param_1) + +{ + int *piVar1; + + piVar1 = (int *)FUN_00402298(0x340); + if (piVar1 == (int *)0x0) { + piVar1 = (int *)0x0; + } + else { + piVar1 = FUN_004be1bc(piVar1,param_1,&DAT_005129b0); + } + return piVar1; +} + + + +/* @004be3b4 file=? name=FUN_004be3b4 */ + +void __cdecl FUN_004be3b4(int param_1) + +{ + FUN_0041a1a4(**(int **)(param_1 + 0xc),0x512980); + return; +} + + + +/* @004be7c4 file=? name=FUN_004be7c4 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 * __cdecl FUN_004be7c4(undefined4 *param_1,int param_2,undefined4 param_3,char *param_4) + +{ + FUN_0041c52c(param_1,param_2,param_3,param_4,&DAT_00512a9c); + *param_1 = &PTR_LAB_00512bbc; + param_1[0x39] = *(undefined4 *)(param_4 + 0x30); + param_1[0x3b] = *(undefined4 *)(param_4 + 0x38); + param_1[0x3c] = *(undefined4 *)(param_4 + 0x3c); + if ((*(uint *)(param_2 + 0x28) & 0xc) != 4) { + param_1[7] = PTR_LAB_00512b14; + param_1[8] = DAT_00512b18; + param_1[9] = DAT_00512b1c; + } + param_1[7] = PTR_LAB_00512b20; + param_1[8] = DAT_00512b24; + param_1[9] = DAT_00512b28; + param_1[0x3a] = *(float *)(param_4 + 0x34) * _DAT_004be8b8; + FUN_0041bbd8((int)(param_1 + 0xb),1); + FUN_00408440(param_1 + 0x3d,&DAT_004e0f74); + param_1[0x3f] = (float)param_1[0x3f] - (float)param_1[0x3b]; + FUN_00408440(param_1 + 0x40,&DAT_004e0f74); + return param_1; +} + + + +/* @004be8e8 file=? name=FUN_004be8e8 */ + +void __cdecl FUN_004be8e8(int param_1) + +{ + FUN_0041a1a4(**(int **)(param_1 + 0xc),0x512aac); + return; +} + + + +/* @004beae4 file=? name=FUN_004beae4 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004beae4(int param_1) + +{ + int iVar1; + int iVar2; + float10 fVar3; + float local_1c; + float local_18; + float local_14; + float local_10; + float local_c; + float local_8; + + if (*(int *)(param_1 + 0xfc) != 0) { + iVar2 = *(int *)(param_1 + 0xd0); + iVar1 = *(int *)(*(int *)(iVar2 + 0x128) + 4); + FUN_00408644(&local_1c,(float *)(param_1 + 0xe4),(float *)(iVar2 + 0x100)); + fVar3 = FUN_004dd138((double)(local_14 * local_14 + local_18 * local_18 + local_1c * local_1c)); + local_8 = (float)fVar3; + local_c = local_8 / *(float *)(iVar2 + 0x348); + if ((_DAT_004bec18 < local_8) && (_DAT_004bec1c < *(float *)(iVar1 + 0xf0))) { + local_10 = local_8 - _DAT_004bec18; + if ((_DAT_004bec20 <= local_18) && (_DAT_004bec24 < local_10)) { + local_10 = _DAT_004bec24; + } + *(float *)(param_1 + 0xe8) = + (float)(_DAT_004bec28 * (float10)local_10 + (float10)*(float *)(param_1 + 0xe8)); + } + iVar2 = FUN_0041a1a4(**(int **)(*(int *)(param_1 + 0xfc) + 0xc),0x4e4518); + if (iVar2 != 0) { + FUN_004086ac(&local_1c,(float *)(*(int *)(param_1 + 0xfc) + 500),local_c); + FUN_004085ec((float *)(param_1 + 0xe4),(float *)(param_1 + 0xe4),&local_1c); + } + } + return; +} + + + +/* @004bec34 file=? name=FUN_004bec34 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 * __cdecl +FUN_004bec34(undefined4 *param_1,int param_2,undefined4 param_3,char *param_4,undefined4 param_5, + undefined4 param_6,undefined4 param_7,undefined4 param_8) + +{ + float10 fVar1; + float local_24; + float local_20; + float local_1c; + float local_18; + float local_14; + float local_10; + int local_c; + undefined4 *local_8; + + FUN_0041c52c(param_1,param_2,param_3,param_4,&DAT_00512bec); + *param_1 = &PTR_LAB_00512ce8; + local_8 = (undefined4 *)(param_2 + 0x100); + param_1[0x3c] = *local_8; + param_1[0x3d] = *(undefined4 *)(param_2 + 0x104); + param_1[0x3e] = *(undefined4 *)(param_2 + 0x108); + param_1[0x3f] = param_5; + param_1[0x40] = param_6; + param_1[0x41] = param_7; + param_1[0x42] = param_8; + if ((*(uint *)(param_2 + 0x28) & 0xc) != 4) { + param_1[7] = PTR_LAB_00512c64; + param_1[8] = DAT_00512c68; + param_1[9] = DAT_00512c6c; + } + FUN_0041bbd8((int)(param_1 + 0xb),1); + if (param_1[0x3f] == 0) { + local_c = *(int *)(param_2 + 0x300); + FUN_00408440(param_1 + 0x39,&DAT_004e0f80); + param_1[0x3b] = (float)param_1[0x3b] - _DAT_004bee40; + FUN_00408b98((float *)(param_1 + 0x39),(float *)(param_1 + 0x40),(float *)(local_c + 0xd0)); + } + else { + FUN_00408440(param_1 + 0x39,&DAT_004e0f80); + FUN_00408b98((float *)(param_1 + 0x39),(float *)(param_1 + 0x40),(float *)(param_1[0x3f] + 0xd0) + ); + } + local_18 = DAT_004e0f74; + local_14 = DAT_004e0f78; + local_10 = DAT_004e0f7c; + FUN_00408644(&local_18,(float *)(param_1 + 0x39),(float *)(param_2 + 0x100)); + fVar1 = FUN_004dd138((double)(local_10 * local_10 + local_14 * local_14 + local_18 * local_18)); + param_1[0x43] = (float)fVar1; + param_1[0x45] = param_1[0x43]; + local_24 = DAT_004e0f74; + local_20 = DAT_004e0f78; + local_1c = DAT_004e0f7c; + FUN_00408644(&local_24,(float *)(param_2 + 0x100),(float *)(param_1 + 0x3c)); + fVar1 = FUN_004dd138((double)(local_1c * local_1c + local_20 * local_20 + local_24 * local_24)); + param_1[0x44] = (float)fVar1; + return param_1; +} + + + +/* @004bee70 file=? name=FUN_004bee70 */ + +void __cdecl FUN_004bee70(int param_1) + +{ + FUN_0041a1a4(**(int **)(param_1 + 0xc),0x512bfc); + return; +} + + + +/* @004bef4c file=? name=FUN_004bef4c */ + +void __cdecl FUN_004bef4c(int param_1,int *param_2,int param_3) + +{ + FUN_004225a4(param_1,param_2,param_3); + *param_2 = 0x78; + param_2[0x1d] = *(int *)(param_1 + 0x35c); + return; +} + + + +/* @004bef78 file=? name=FUN_004bef78 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004bef78(int param_1,float param_2) + +{ + int iVar1; + int iVar2; + uint uVar3; + uint uVar4; + int *piVar5; + undefined4 in_stack_fffffef0; + undefined4 in_stack_fffffef4; + undefined4 *puVar6; + float fVar7; + float local_e8; + float local_e4; + float local_e0; + undefined4 local_dc; + undefined4 local_d8; + undefined4 local_d4; + undefined4 local_d0 [2]; + undefined4 local_c8; + undefined4 local_c4; + undefined4 local_c0; + undefined4 local_bc [2]; + undefined4 local_b4; + undefined4 local_b0; + float local_ac; + undefined4 local_a8; + undefined4 local_a4; + undefined4 local_a0; + undefined4 local_9c; + undefined4 local_98; + undefined4 local_94; + undefined4 local_90 [2]; + undefined4 local_88 [2]; + float local_80; + undefined4 local_7c; + undefined4 local_78; + undefined4 local_74; + undefined4 local_70; + undefined4 local_6c; + undefined4 local_68; + float local_64 [3]; + float local_58; + float local_54; + float local_50; + float local_4c; + undefined4 local_48; + undefined4 local_44; + float local_40; + undefined4 local_3c; + undefined4 local_38; + float local_34 [6]; + float local_1c; + undefined4 *local_18; + undefined4 local_14; + int *local_10; + float local_c; + float local_8; + + *(float *)(param_1 + 0x35c) = param_2 + *(float *)(param_1 + 0x35c); + if (_DAT_004bf594 < (float)(*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x14)) / DAT_0052140c) { + *(ushort *)(param_1 + 0x18) = *(ushort *)(param_1 + 0x18) | 1; + } + if (*(float *)(param_1 + 0x35c) <= *(float *)(param_1 + 0x340)) { + *(float *)(param_1 + 0x344) = *(float *)(param_1 + 0x35c) / *(float *)(param_1 + 0x340); + } + else { + *(undefined4 *)(param_1 + 0x344) = 0x3f800000; + } + piVar5 = (int *)0x0; + FUN_0040d150(local_34,(undefined4 *)(param_1 + 0x100)); + iVar2 = *(int *)(param_1 + 0x250); + local_40 = *(float *)(iVar2 + 0x14); + local_3c = *(undefined4 *)(iVar2 + 0x18); + local_38 = *(undefined4 *)(iVar2 + 0x1c); + local_8 = *(float *)(iVar2 + 4); + FUN_00408644(&local_58,(float *)(param_1 + 0x1c4),&local_40); + if (local_58 <= _DAT_004bf598) { + local_4c = *(float *)(param_1 + 0x228); + } + else { + local_4c = *(float *)(param_1 + 0x21c); + } + if (local_54 <= _DAT_004bf598) { + local_48 = *(undefined4 *)(param_1 + 0x22c); + } + else { + local_48 = *(undefined4 *)(param_1 + 0x220); + } + if (local_50 <= _DAT_004bf598) { + local_44 = *(undefined4 *)(param_1 + 0x230); + } + else { + local_44 = *(undefined4 *)(param_1 + 0x224); + } + local_c = local_8; + FUN_004086ac(&local_4c,&local_4c,local_8); + if (_DAT_004bf59c <= local_58) { + uVar3 = (uint)(_DAT_004bf5a0 < local_58); + } + else { + uVar3 = 0xffffffff; + } + local_58 = (float)(int)uVar3 * local_58 * local_58; + if (_DAT_004bf59c <= local_54) { + uVar3 = (uint)(_DAT_004bf5a0 < local_54); + } + else { + uVar3 = 0xffffffff; + } + local_54 = (float)(int)uVar3 * local_54 * local_54; + if (_DAT_004bf59c <= local_50) { + uVar3 = (uint)(_DAT_004bf5a0 < local_50); + } + else { + uVar3 = 0xffffffff; + } + local_50 = (float)(int)uVar3 * local_50 * local_50; + FUN_004086d0(&local_4c,&local_4c,&local_58); + FUN_00408644((float *)(param_1 + 0x1dc),(float *)(param_1 + 0x1dc),&local_4c); + FUN_004086d0(&local_4c,(float *)(param_1 + 0x234),(float *)(param_1 + 0x1d0)); + FUN_00408644((float *)(param_1 + 0x1e8),(float *)(param_1 + 0x1e8),&local_4c); + iVar2 = **(int **)(param_1 + 0x128); + if (*(int *)((*(int **)(param_1 + 0x128))[1] + 0x40) == 1) { + *(undefined4 *)(param_1 + 0x1dc) = 0; + *(undefined4 *)(param_1 + 0x1e0) = 0; + *(undefined4 *)(param_1 + 0x1c4) = 0; + *(undefined4 *)(param_1 + 0x1c8) = 0; + FUN_00421b2c(param_1); + } + else { + FUN_00421b2c(param_1); + *(float *)(param_1 + 0x204) = *(float *)(param_1 + 0x204) - **(float **)(param_1 + 0x250); + } + FUN_00421bac(param_1,param_2); + if (((*(int *)(iVar2 + 0xfc) != 0) && + (iVar1 = FUN_0041a1a4(**(int **)(*(int *)(iVar2 + 0xfc) + 0xc),0x50bdb4), iVar1 != 0)) && + (iVar1 = FUN_0049fb54(*(int *)(iVar2 + 0xfc)), iVar1 != 0)) { + *(undefined4 *)(iVar2 + 0xfc) = 0; + } + if (*(float *)(iVar2 + 0x10c) < _DAT_004bf5a4) { + piVar5 = *(int **)(iVar2 + 0xfc); + } + FUN_00408644(local_64,(float *)(param_1 + 0x100),local_34); + FUN_0040d100((int)local_34,local_64); + FUN_0040ab44((float *)(param_1 + 0xd0),(undefined4 *)(param_1 + 0x100)); + iVar2 = FUN_0042291c(param_1,local_34,*(int *)(param_1 + 0x300)); + if (iVar2 != 0) { + piVar5 = *(int **)(iVar2 + 0x1c); + } + if (piVar5 == (int *)0x0) { + FUN_00421b6c(param_1); + (**(code **)(param_1 + 0x254))(); + FUN_00408644(&local_e8,(float *)(param_1 + 0x260),(float *)(param_1 + 0x100)); + if (_DAT_004bf5a8 < local_e0 * local_e0 + local_e4 * local_e4 + local_e8 * local_e8) { + *(ushort *)(param_1 + 0x18) = *(ushort *)(param_1 + 0x18) | 1; + } + } + else { + FUN_0042061c(param_1); + local_80 = *(float *)(param_1 + 0x100); + local_7c = *(undefined4 *)(param_1 + 0x104); + local_78 = *(undefined4 *)(param_1 + 0x108); + local_74 = *(undefined4 *)(param_1 + 0x10c); + local_70 = *(undefined4 *)(param_1 + 0x110); + local_6c = *(undefined4 *)(param_1 + 0x114); + local_68 = *(undefined4 *)(param_1 + 0x118); + FUN_00409968(&local_74,&DAT_004e0fa4); + FUN_0040cdf4(local_34,local_1c,&local_80); + iVar2 = *(int *)(param_1 + 0x300); + local_10 = piVar5 + 0x61; + local_14 = *(undefined4 *)(param_1 + 0x33c); + local_dc = 0x5c; + local_d8 = 3; + local_d4 = 1; + FUN_00420ea4(local_d0,(undefined4 *)&DAT_00522524); + local_c8 = 0; + local_c4 = 0; + local_c0 = 0x31; + FUN_00420ea4(local_bc,(undefined4 *)&DAT_00522524); + local_b4 = local_14; + local_b0 = 0x100; + local_ac = local_80; + local_a8 = local_7c; + local_a4 = local_78; + local_a0 = local_74; + local_9c = local_70; + local_98 = local_6c; + local_94 = local_68; + FUN_00420ea4(local_90,local_10); + FUN_00420ea4(local_88,(undefined4 *)(iVar2 + 0x184)); + local_18 = FUN_004302ec((int)&local_dc); + uVar3 = *(uint *)(param_1 + 0x338); + iVar2 = FUN_0040807c(&DAT_00521f5c,uVar3); + uVar4 = uVar3; + if ((int)uVar3 < 0) { + uVar4 = uVar3 + 3; + } + uVar4 = iVar2 + ((int)uVar4 >> 2); + if ((int)uVar3 < (int)uVar4) { + uVar4 = uVar3; + } + *(uint *)(param_1 + 0x338) = uVar4; + FUN_004be078(param_1,piVar5); + if (*(int *)(param_1 + 0x360) != 0) { + *(uint *)(param_1 + 0x338) = uVar3; + puVar6 = (undefined4 *)(param_1 + 0x30c); + fVar7 = *(float *)(param_1 + 0x364); + FUN_00420ea4((undefined4 *)&stack0xfffffef0,(undefined4 *)(*(int *)(param_1 + 0x300) + 0x184)) + ; + FUN_0042fad0((int)local_18,in_stack_fffffef0,in_stack_fffffef4,puVar6,fVar7); + } + } + if ((*(float *)(param_1 + 0x340) + _DAT_004bf5ac < + (float)(*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x19c)) / DAT_0052140c) || + (*(float *)(param_1 + 0x104) < _DAT_004bf5b0)) { + FUN_0042061c(param_1); + *(ushort *)(param_1 + 0x18) = *(ushort *)(param_1 + 0x18) | 1; + } + return; +} + + + +/* @004bf5b4 file=? name=FUN_004bf5b4 */ + +int * __cdecl FUN_004bf5b4(int *param_1,int param_2,undefined4 param_3) + +{ + int iVar1; + int iVar2; + int iVar3; + undefined4 *puVar4; + char *pcVar5; + char *pcVar6; + float10 fVar7; + char local_88 [2]; + char acStack_86 [30]; + undefined4 local_68; + undefined4 local_64; + undefined4 local_60; + undefined4 local_5c; + undefined4 local_58; + undefined4 local_54; + undefined4 local_50; + undefined4 local_4c; + char local_48 [4]; + char acStack_44 [2]; + char cStack_42; + undefined4 local_28; + undefined4 local_24; + undefined4 local_20; + undefined4 local_1c; + undefined4 local_18; + int *local_14; + undefined4 *local_10; + int local_c; + int *local_8; + + FUN_004be1bc(param_1,param_2,param_3); + *param_1 = (int)&PTR_FUN_00512f2c; + param_1[0xd1] = 0; + local_8 = (int *)(param_2 + 0xc4); + param_1[0xd4] = *local_8; + param_1[0xd5] = *(int *)(param_2 + 200); + param_1[0xd6] = *(int *)(param_2 + 0xcc); + param_1[0xd7] = 0; + param_1[0xd8] = *(int *)(param_2 + 0xd0); + param_1[10] = param_1[10] | 0x10; + local_c = param_2 + 0xbc; + iVar1 = (**(code **)(*(int *)(*(int *)(DAT_004efc94 + 0x2c) + 0x54) + 0xc)) + (*(int *)(DAT_004efc94 + 0x2c) + 0x54); + param_1[0xd3] = iVar1; + param_1[0x95] = (int)PTR_FUN_00512d94; + param_1[0x96] = DAT_00512d98; + param_1[0x97] = DAT_00512d9c; + if ((param_1[10] & 0xcU) == 4) { + param_1[7] = (int)PTR_LAB_00512da0; + param_1[8] = DAT_00512da4; + param_1[9] = DAT_00512da8; + } + else { + param_1[7] = (int)PTR_FUN_00512dac; + param_1[8] = DAT_00512db0; + param_1[9] = DAT_00512db4; + } + iVar2 = FUN_00407064(*(int *)(DAT_004efc94 + 0x68),param_1[0x6f],0xf); + iVar1 = *(int *)(iVar2 + 4); + *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + 1; + if (iVar1 == 0) { + FUN_00406cd0(iVar2); + } + iVar1 = *(int *)(iVar2 + 0x3c); + param_1[0x49] = 2; + iVar3 = FUN_004022b0(param_1[0x49] << 2); + param_1[0x4a] = iVar3; + param_1[0xd0] = *(int *)(iVar1 + 0x44); + param_1[0xd9] = *(int *)(iVar1 + 0x50); + local_48[0] = s_Seeker_00512e1e[0]; + local_48[1] = s_Seeker_00512e1e[1]; + local_48[2] = s_Seeker_00512e1e[2]; + local_48[3] = s_Seeker_00512e1e[3]; + acStack_44[0] = s_Seeker_00512e1e[4]; + acStack_44[1] = s_Seeker_00512e1e[5]; + cStack_42 = s_Seeker_00512e1e[6]; + local_28 = 0xf; + local_24 = 0x30; + local_20 = 0xffffffff; + local_1c = 0; + local_10 = (undefined4 *)FUN_00402298(0x118); + if (local_10 == (undefined4 *)0x0) { + puVar4 = (undefined4 *)0x0; + } + else { + local_14 = param_1 + 0xd4; + puVar4 = FUN_004bec34(local_10,(int)param_1,0,local_48,param_1[0xd3],*local_14,param_1[0xd5], + param_1[0xd6]); + } + *(undefined4 **)param_1[0x4a] = puVar4; + pcVar5 = s_MissleThruster_00512e25; + pcVar6 = local_88; + for (iVar3 = 3; iVar3 != 0; iVar3 = iVar3 + -1) { + *(undefined4 *)pcVar6 = *(undefined4 *)pcVar5; + pcVar5 = pcVar5 + 4; + pcVar6 = pcVar6 + 4; + } + *(undefined2 *)pcVar6 = *(undefined2 *)pcVar5; + pcVar6[2] = pcVar5[2]; + local_68 = 0xf; + local_64 = 0x40; + local_58 = *(undefined4 *)(iVar1 + 0x44); + local_54 = *(undefined4 *)(iVar1 + 0x40); + local_50 = *(undefined4 *)(iVar1 + 0x48); + local_4c = *(undefined4 *)(iVar1 + 0x4c); + local_60 = 0xffffffff; + local_5c = 0; + local_18 = local_54; + fVar7 = FUN_004dd138((double)(*(float *)(iVar1 + 0x48) / (float)param_1[0x8c])); + param_1[0xd2] = (int)(float)fVar7; + puVar4 = (undefined4 *)FUN_00402298(0x10c); + if (puVar4 == (undefined4 *)0x0) { + puVar4 = (undefined4 *)0x0; + } + else { + puVar4 = FUN_004be7c4(puVar4,(int)param_1,1,local_88); + } + *(undefined4 **)(param_1[0x4a] + 4) = puVar4; + if (param_1[0xd3] != 0) { + iVar1 = FUN_0041a1a4(**(int **)(param_1[0xd3] + 0xc),0x50bdb4); + if (iVar1 != 0) { + (**(code **)(*(int *)(param_1[0xd3] + 0x418) + 4))(param_1[0xd3] + 0x418,param_1); + } + } + *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + -1; + return param_1; +} + + + +/* @004bf890 file=? name=FUN_004bf890 */ + +void __cdecl FUN_004bf890(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_00512f2c; + FUN_004be358(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004bf8bc file=? name=FUN_004bf8bc */ + +int * __cdecl FUN_004bf8bc(int param_1) + +{ + int *piVar1; + + piVar1 = (int *)FUN_00402298(0x368); + if (piVar1 == (int *)0x0) { + piVar1 = (int *)0x0; + } + else { + piVar1 = FUN_004bf5b4(piVar1,param_1,&DAT_00512d48); + } + return piVar1; +} + + + +/* @004bf8ec file=? name=FUN_004bf8ec */ + +undefined4 __cdecl +FUN_004bf8ec(int param_1,char *param_2,int param_3,undefined4 param_4,float *param_5) + +{ + float *pfVar1; + int iVar2; + undefined4 *puVar3; + + pfVar1 = param_5; + if (param_5 == (float *)0x0) { + pfVar1 = (float *)FUN_00402298(0x54); + } + iVar2 = FUN_004238bc(param_1,param_2,param_3,param_4,pfVar1); + if (iVar2 != -1) { + iVar2 = FUN_00404118(param_3,s_gamedata_00512e34,s_BurnTime_00512e3d,pfVar1 + 0x11); + if (iVar2 == 0) { + FUN_004dbb24((int *)&DAT_00524e68,param_2,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_Missing_BurnTime_00512e46,(char *)0x0); + FUN_004d9c38((int *)&DAT_00524e68); + } + else { + iVar2 = FUN_00404118(param_3,s_gamedata_00512e57,s_MaxThrusterRotationRate_00512e60, + pfVar1 + 0x10); + if (iVar2 == 0) { + FUN_004dbb24((int *)&DAT_00524e68,param_2,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_MaxThrusterRotationRate_Missing_00512e78,(char *)0x0); + FUN_004d9c38((int *)&DAT_00524e68); + } + else { + iVar2 = FUN_00404118(param_3,s_gamedata_00512e98,s_ThrusterAcceleration_00512ea1, + pfVar1 + 0x12); + if (iVar2 == 0) { + FUN_004dbb24((int *)&DAT_00524e68,param_2,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_ThrusterAcceleration_Missing_00512eb6,(char *)0x0); + FUN_004d9c38((int *)&DAT_00524e68); + } + else { + iVar2 = FUN_00404118(param_3,s_gamedata_00512ed3,s_ThrusterClimb_00512edc,pfVar1 + 0x13); + if (iVar2 == 0) { + FUN_004dbb24((int *)&DAT_00524e68,param_2,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_ThrusterClimb_missing_00512eea,(char *)0x0); + FUN_004d9c38((int *)&DAT_00524e68); + } + else { + iVar2 = FUN_00404118(param_3,s_gamedata_00512f00,s_SplashRadius_00512f09,pfVar1 + 0x14); + if (iVar2 != 0) { + if (param_5 == (float *)0x0) { + puVar3 = (undefined4 *)FUN_00406db4(param_1,param_2,0xf,1,0,pfVar1,0x54,-1); + FUN_004022d0((int *)pfVar1); + return *puVar3; + } + return 1; + } + FUN_004dbb24((int *)&DAT_00524e68,param_2,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_Splash_Radius_missing_00512f16,(char *)0x0); + FUN_004d9c38((int *)&DAT_00524e68); + } + } + } + } + } + if (param_5 == (float *)0x0) { + FUN_004022d0((int *)pfVar1); + } + return 0xffffffff; +} + + + +/* @004bfb28 file=? name=FUN_004bfb28 */ + +void __cdecl FUN_004bfb28(int param_1) + +{ + FUN_0041a1a4(**(int **)(param_1 + 0xc),0x512d18); + return; +} + + + +/* @004bfc20 file=? name=FUN_004bfc20 */ + +void __cdecl FUN_004bfc20(int param_1) + +{ + int iVar1; + + FUN_0042d9e0(param_1); + iVar1 = FUN_004dcd94(); + *(int *)(param_1 + 0x288) = *(int *)(param_1 + 0x288) - iVar1; + if (*(int *)(DAT_004efc94 + 0x88) == 8) { + iVar1 = FUN_0041a1a4(**(int **)(*(int *)(param_1 + 0x1fc) + 0xc),0x50bdb4); + if (iVar1 != 0) { + FUN_0049fb74(*(int *)(param_1 + 0x1fc),(undefined4 *)&DAT_00524b38,1); + *(ushort *)(param_1 + 0x18) = *(ushort *)(param_1 + 0x18) | 1; + } + } + return; +} + + + +/* @004bfee0 file=? name=FUN_004bfee0 */ + +void __cdecl FUN_004bfee0(int param_1) + +{ + uint local_30 [5]; + undefined4 local_1c; + undefined4 local_18; + undefined4 local_14 [2]; + undefined4 local_c [2]; + + FUN_00420ea4(local_c,(undefined4 *)(param_1 + 0x184)); + local_30[0] = 0x24; + local_30[1] = 0x14; + local_30[2] = 1; + FUN_00420ea4(local_30 + 3,(undefined4 *)&DAT_00522524); + local_1c = 0; + local_18 = 0; + FUN_00420e8c(local_14); + FUN_00420ef4(local_14,local_c); + (**(code **)(**(int **)(param_1 + 0x1fc) + 0xc))(*(int **)(param_1 + 0x1fc),local_30); + FUN_0041f640(*(int *)(param_1 + 0x1fc),local_30); + return; +} + + + +/* @004bff74 file=? name=FUN_004bff74 */ + +void __cdecl FUN_004bff74(int param_1) + +{ + undefined4 uVar1; + + if ((*(int *)(param_1 + 0x270) == 0) && (*(int *)(param_1 + 0x274) != 0)) { + uVar1 = 1; + } + else { + uVar1 = 0; + } + *(undefined4 *)(param_1 + 0x270) = uVar1; + return; +} + + + +/* @004bffa0 file=? name=FUN_004bffa0 */ + +void __cdecl FUN_004bffa0(int param_1,uint *param_2) + +{ + if ((param_2[1] == 0x16) && (param_2[8] == 0)) { + FUN_004c0200(param_1,(int)param_2); + return; + } + FUN_0041f59c(param_1,param_2); + return; +} + + + +/* @004bffd0 file=? name=FUN_004bffd0 */ + +void __cdecl FUN_004bffd0(int *param_1,uint *param_2) + +{ + if (param_1[0x7f] == 0) { + FUN_0040a938((undefined4 *)&DAT_00524b38,param_2 + 7); + (**(code **)(*param_1 + 0x40)) + (param_1,param_2[7],param_2[8],param_2[9],param_2[10],param_2[0xb],param_2[0xc], + param_2[0xd]); + FUN_004bfee0((int)param_1); + if (*(int *)(param_1[0x7f] + 4) == 0x45) { + param_1[7] = (int)PTR_LAB_00513064; + param_1[8] = DAT_00513068; + param_1[9] = DAT_0051306c; + param_1[0x73] = -1; + } + else if (*(int *)(param_1[0x7f] + 4) == 0xbb9) { + param_1[7] = (int)PTR_LAB_00513058; + param_1[8] = DAT_0051305c; + param_1[9] = DAT_00513060; + } + param_1[0x80] = 0; + param_1[10] = param_1[10] & 0xfffffffd; + } + else { + if (param_2[0xe] != param_1[0x80]) { + return; + } + if (param_1[0x10] == 4) { + return; + } + if (param_1[0x10] != 1) { + FUN_004c012c((int)param_1,param_2); + return; + } + } + FUN_0041bbd8((int)(param_1 + 0xb),2); + if (*(int *)(param_1[0x7f] + 4) == 0xbb9) { + if (param_1[0x99] == 0) { + FUN_0049fb74(param_1[0x7f],param_2 + 7,1); + } + else { + FUN_0049fb74(param_1[0x7f],(undefined4 *)&DAT_00524b38,1); + } + } + return; +} + + + +/* @004c012c file=? name=FUN_004c012c */ + +void __cdecl FUN_004c012c(int param_1,uint *param_2) + +{ + int iVar1; + int *piVar2; + int iVar3; + + *(int *)(param_1 + 0x200) = *(int *)(param_1 + 0x200) + 1; + param_2[0xe] = *(uint *)(param_1 + 0x200); + *(int *)(*(int *)(param_1 + 0x208) + 0x28) = *(int *)(*(int *)(param_1 + 0x208) + 0x28) + -1; + *(ushort *)(param_1 + 0x18) = *(ushort *)(param_1 + 0x18) | 1; + FUN_0041bbd8(param_1 + 0x2c,1); + if (*(int *)(param_1 + 0x264) == 0) { + FUN_00408440((undefined4 *)(param_1 + 0x1d0),param_2 + 7); + } + else { + FUN_00408440((undefined4 *)(param_1 + 0x1d0),(undefined4 *)&DAT_00524b38); + } + piVar2 = (int *)FUN_00414b60(); + iVar1 = *piVar2; + iVar3 = FUN_004dcd94(); + FUN_0041acbc(*(int *)(DAT_004efc94 + 0x60),3,param_1,param_2,iVar1 + iVar3); + *(undefined4 *)(param_1 + 0x290) = 0; + *(undefined4 *)(param_1 + 600) = 0; + return; +} + + + +/* @004c0200 file=bt/btplayer.cpp name=FUN_004c0200 */ + +void __cdecl FUN_004c0200(int param_1,int param_2) + +{ + int iVar1; + int iVar2; + float10 fVar3; + float local_10; + + if (*(int *)(param_2 + 0x20) != 0) { + FUN_0040385c(s_BTPlayer__ScoreInflictedMessageH_00513110,s_d__tesla_bt_bt_btplayer_cpp_0051316a, + 0x18b); + } + iVar2 = (**(code **)(*(int *)(*(int *)(DAT_004efc94 + 0x2c) + 0x54) + 0xc)) + (*(int *)(DAT_004efc94 + 0x2c) + 0x54,param_2 + 0x34); + iVar1 = *(int *)(param_1 + 0x1fc); + fVar3 = FUN_004c052c(param_1,(float *)(param_2 + 0x24),iVar2,0.0); + local_10 = (float)fVar3; + if (iVar2 == iVar1) { + local_10 = -local_10; + } + *(float *)(param_1 + 0x278) = + (*(float *)(iVar2 + 0x4bc) / *(float *)(iVar1 + 0x4bc)) * local_10 + + *(float *)(param_1 + 0x278); + return; +} + + + +/* @004c02a8 file=bt/btplayer.cpp name=FUN_004c02a8 */ + +void __cdecl FUN_004c02a8(int param_1,int param_2) + +{ + if ((*(uint *)(param_1 + 0x28) & 0xc) == 4) { + FUN_0040385c(s_BTPlayer__ScoreUpdateMessageHand_00513186,s_d__tesla_bt_bt_btplayer_cpp_005131cf, + 0x1d5); + } + FUN_0042da20(param_1,param_2); + return; +} + + + +/* @004c02e4 file=bt/btplayer.cpp name=FUN_004c02e4 */ + +void __cdecl FUN_004c02e4(int param_1,int param_2) + +{ + int *piVar1; + int iVar2; + int iVar3; + undefined4 uVar4; + float10 fVar5; + undefined4 uVar6; + undefined4 local_4c [10]; + int local_24; + undefined4 local_20; + int local_1c; + undefined4 local_18; + undefined4 *local_14; + float local_10; + int local_c; + int local_8; + + if ((*(uint *)(param_1 + 0x28) & 0xc) == 4) { + FUN_0040385c(s_BTPlayer__ScoreMessageHandler_sh_005131eb,s_d__tesla_bt_bt_btplayer_cpp_0051322e, + 0x1e9); + } + if (*(int *)(param_1 + 0x40) != 4) { + local_8 = param_2 + 0x34; + iVar3 = (**(code **)(*(int *)(*(int *)(DAT_004efc94 + 0x2c) + 0x54) + 0xc)) + (*(int *)(DAT_004efc94 + 0x2c) + 0x54,local_8); + local_c = *(int *)(param_1 + 0x1fc); + iVar2 = *(int *)(param_2 + 0x20); + if (iVar2 == 0) { + FUN_0040385c(s_BTPlayer__ScoreMessageHandler_sh_0051324a, + s_d__tesla_bt_bt_btplayer_cpp_0051329a,0x296); + } + else if (iVar2 == 1) { + if (iVar3 != local_c) { + fVar5 = FUN_00429b94(*(int *)(param_1 + 0x208),(float *)(param_2 + 0x24)); + local_10 = (*(float *)(local_c + 0x4bc) / *(float *)(iVar3 + 0x4bc)) * (float)fVar5; + } + local_1c = FUN_00429078(*(int *)(DAT_004efc94 + 0x2c)); + if ((local_1c != 0) && (*(int *)(param_1 + 600) == 0)) { + local_20 = *(undefined4 *)(param_2 + 0x30); + local_24 = FUN_004078fc(*(float *)(param_2 + 0x24)); + uVar6 = local_20; + uVar4 = FUN_004dcd94(); + FUN_004c1944(local_4c,*(undefined4 *)(param_1 + 0x18c), + *(undefined4 *)(*(int *)(iVar3 + 400) + 0x18c),local_24, + *(undefined4 *)(param_2 + 0x2c),*(undefined4 *)(param_2 + 0x28),uVar4,uVar6); + (**(code **)(**(int **)(DAT_004efc94 + 0x20) + 0x18)) + (*(int **)(DAT_004efc94 + 0x20),local_4c,5,*(undefined4 *)(local_1c + 0xc)); + } + } + else if (iVar2 == 2) { + fVar5 = FUN_004c052c(param_1,(float *)(param_2 + 0x24),iVar3,*(float *)(param_2 + 0x1c)); + local_10 = (*(float *)(iVar3 + 0x4bc) / *(float *)(local_c + 0x4bc)) * (float)fVar5; + if (iVar3 == local_c) { + local_10 = -local_10; + } + else { + *(int *)(param_1 + 0x27c) = *(int *)(param_1 + 0x27c) + 1; + piVar1 = (int *)(*(int *)(iVar3 + 400) + 0x27c); + *piVar1 = *piVar1 + 1; + } + local_14 = FUN_00402f74(0x512f6c); + if (local_14 != (undefined4 *)0x0) { + local_18 = *(undefined4 *)(iVar3 + 400); + FUN_0042d990(local_14,local_18,0,0x40c00000); + *local_14 = &PTR_LAB_00513344; + local_14[6] = 0; + } + FUN_0042e580(param_1,local_14); + if (iVar3 == *(int *)(param_1 + 0x284)) { + FUN_004b04d8(**(int **)(*(int *)(param_1 + 0x1fc) + 0x128),iVar3); + } + } + *(float *)(param_2 + 0x1c) = local_10; + FUN_0042da20(param_1,param_2); + } + return; +} + + + +/* @004c052c file=? name=FUN_004c052c */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 __cdecl FUN_004c052c(int param_1,float *param_2,int param_3,float param_4) + +{ + char *pcVar1; + char *pcVar2; + char *pcVar3; + bool bVar4; + float local_8; + + if (*(int *)(param_1 + 0x250) == 0) { + pcVar2 = (char *)(*(int *)(param_3 + 400) + 0x20c); + pcVar3 = (char *)(param_1 + 0x20c); + do { + if (*pcVar2 != *pcVar3) goto LAB_004c0599; + bVar4 = true; + if (*pcVar2 == '\0') break; + pcVar1 = pcVar2 + 1; + if (*pcVar1 != pcVar3[1]) goto LAB_004c0599; + pcVar2 = pcVar2 + 2; + pcVar3 = pcVar3 + 2; + bVar4 = *pcVar1 == '\0'; + } while (!bVar4); + if (bVar4) { + local_8 = -*(float *)(*(int *)(param_1 + 0x208) + 0x14); + goto LAB_004c05b1; + } + } +LAB_004c0599: + local_8 = *(float *)(param_3 + 0x354) * *(float *)(*(int *)(param_1 + 0x208) + 0x18) + + _DAT_004c05c0; +LAB_004c05b1: + return (float10)((*param_2 + param_4) * *(float *)(*(int *)(param_1 + 0x208) + 0xc)) * + (float10)local_8; +} + + + +/* @004c083c file=? name=FUN_004c083c */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004c083c(int *param_1) + +{ + undefined4 local_28; + undefined4 local_24; + undefined4 local_20; + undefined4 local_1c [2]; + undefined4 local_14; + undefined4 local_10; + int local_c; + int local_8; + + FUN_0042e168((int)param_1); + if (((_DAT_004c08fc <= (float)(param_1[4] - param_1[0xa3]) / DAT_0052140c) || + (*(int *)(DAT_004efc94 + 0x88) == 6)) && + (param_1[0xa3] = param_1[4], (float)param_1[0x9e] != _DAT_004c0900)) { + local_8 = param_1[0x9e]; + local_28 = 0x20; + local_24 = 0x1a; + local_20 = 1; + FUN_00420ea4(local_1c,(undefined4 *)&DAT_00522524); + local_14 = 0; + local_10 = 0; + local_c = local_8; + (**(code **)(*param_1 + 0xc))(param_1,&local_28); + param_1[0x9e] = 0; + } + return; +} + + + +/* @004c0bc8 file=? name=FUN_004c0bc8 */ + +undefined4 * __cdecl FUN_004c0bc8(undefined4 *param_1,int param_2,undefined4 param_3) + +{ + char *pcVar1; + char cVar2; + undefined4 *puVar3; + char *pcVar4; + int iVar5; + uint *puVar6; + undefined4 uVar7; + uint uVar8; + uint uVar9; + char *pcVar10; + bool bVar11; + int local_2c [5]; + int local_18 [3]; + uint *local_c; + char *local_8; + + FUN_0042e328(param_1,param_2,param_3); + *param_1 = &PTR_FUN_00513300; + param_1[0x95] = 0; + param_1[0x96] = 0; + param_1[0x9e] = 0; + param_1[0xa4] = 0; + uVar8 = 0xffffffff; + pcVar4 = (char *)(param_2 + 0x50); + do { + pcVar10 = pcVar4; + if (uVar8 == 0) break; + uVar8 = uVar8 - 1; + pcVar10 = pcVar4 + 1; + cVar2 = *pcVar4; + pcVar4 = pcVar10; + } while (cVar2 != '\0'); + uVar8 = ~uVar8; + pcVar4 = pcVar10 + -uVar8; + pcVar10 = (char *)(param_1 + 0x83); + for (uVar9 = uVar8 >> 2; uVar9 != 0; uVar9 = uVar9 - 1) { + *(undefined4 *)pcVar10 = *(undefined4 *)pcVar4; + pcVar4 = pcVar4 + 4; + pcVar10 = pcVar10 + 4; + } + for (uVar8 = uVar8 & 3; uVar8 != 0; uVar8 = uVar8 - 1) { + *pcVar10 = *pcVar4; + pcVar4 = pcVar4 + 1; + pcVar10 = pcVar10 + 1; + } + puVar3 = FUN_004212b0(*(int *)(DAT_004efc94 + 0x24),s_Teams_005132ee); + if (puVar3 != (undefined4 *)0x0) { + FUN_00421414(local_18,(int)(puVar3 + 4)); +LAB_004c0c95: + do { + iVar5 = (**(code **)(local_18[0] + 0x28))(local_18); + if (iVar5 == 0) goto LAB_004c0ca6; + pcVar4 = (char *)(iVar5 + 0x1c4); + pcVar10 = (char *)(param_1 + 0x83); + do { + if (*pcVar4 != *pcVar10) goto LAB_004c0c95; + bVar11 = true; + if (*pcVar4 == '\0') break; + pcVar1 = pcVar4 + 1; + if (*pcVar1 != pcVar10[1]) goto LAB_004c0c95; + pcVar4 = pcVar4 + 2; + pcVar10 = pcVar10 + 2; + bVar11 = *pcVar1 == '\0'; + } while (!bVar11); + } while (!bVar11); + param_1[0x93] = iVar5; +LAB_004c0ca6: + FUN_00421452(local_18,2); + } + iVar5 = FUN_004d4b58(*(char **)(*(int *)(DAT_004efc94 + 200) + 0x38),s_freeforall_005132f4); + if (iVar5 == 0) { + param_1[0x94] = 1; + } + else { + param_1[0x94] = 1; + } + if (((param_1[10] & 0xc) == 4) && (param_1[0x7e] == 0)) { + param_1[0x7e] = *(undefined4 *)(DAT_004efc94 + 200); + } + local_8 = (char *)(param_2 + 0x90); + puVar6 = (uint *)FUN_00402298(0x10); + if (puVar6 == (uint *)0x0) { + local_c = (uint *)0x0; + } + else { + local_c = FUN_00402460(puVar6,local_8); + } + local_c[3] = local_c[3] + 1; + FUN_004323c7(local_2c,param_1[0x7e] + 0x50); + uVar7 = (**(code **)(local_2c[0] + 0x54))(local_2c,&local_c); + FUN_00432405(local_2c,2); + param_1[0x82] = uVar7; + puVar6 = local_c + 3; + *puVar6 = *puVar6 - 1; + if (*puVar6 == 0) { + FUN_004024d8((int *)local_c,3); + } + if ((param_1[10] & 0xc) == 4) { + param_1[7] = PTR_FUN_00513070; + param_1[8] = DAT_00513074; + param_1[9] = DAT_00513078; + } + else { + iVar5 = *(int *)(param_1[0x7e] + 0xe4); + param_1[0x9d] = iVar5; + if (iVar5 == 0) { + param_1[0x98] = 0; + param_1[0x97] = 0; + param_1[0x9c] = 0; + param_1[0x9b] = 0; + } + else if (iVar5 == 1) { + param_1[0x98] = 0; + param_1[0x97] = 1; + param_1[0x9c] = 1; + param_1[0x9b] = 1; + } + else if (iVar5 == 2) { + param_1[0x98] = 1; + param_1[0x97] = 1; + param_1[0x9c] = 1; + param_1[0x9b] = 1; + } + else if (iVar5 == 3) { + param_1[0x98] = 1; + param_1[0x97] = 1; + param_1[0x9c] = 1; + param_1[0x9b] = 0; + } + uVar7 = *(undefined4 *)(param_1[0x7e] + 0xf0); + param_1[0x99] = uVar7; + param_1[0x9a] = uVar7; + } + param_1[0x9f] = 0; + param_1[0xa0] = 0; + param_1[0xa1] = 0; + param_1[0xa2] = param_1[4]; + param_1[0xa3] = param_1[4]; + return param_1; +} + + + +/* @004c0ecc file=? name=FUN_004c0ecc */ + +undefined4 * __cdecl FUN_004c0ecc(int param_1) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00402298(0x294); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_004c0bc8(puVar1,param_1,&DAT_00512fc4); + } + return puVar1; +} + + + +/* @004c0efc file=? name=FUN_004c0efc */ + +void __cdecl FUN_004c0efc(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_00513300; + FUN_0042e524(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004c0f28 file=? name=FUN_004c0f28 */ + +void __cdecl FUN_004c0f28(int param_1) + +{ + FUN_0041a1a4(**(int **)(param_1 + 0xc),0x512f94); + return; +} + + + +/* @004c10dc file=? name=FUN_004c10dc */ + +undefined4 * __cdecl FUN_004c10dc(undefined4 *param_1,int param_2,undefined4 param_3) + +{ + FUN_00429ea4(param_1,param_2,param_3); + *param_1 = &PTR_FUN_005133dc; + param_1[0x82] = param_1[4]; + return param_1; +} + + + +/* @004c110c file=? name=FUN_004c110c */ + +void __cdecl FUN_004c110c(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_005133dc; + FUN_00429f30(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004c1138 file=? name=FUN_004c1138 */ + +undefined4 * __cdecl FUN_004c1138(int param_1) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00402298(0x20c); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_004c10dc(puVar1,param_1,&DAT_00513380); + } + return puVar1; +} + + + +/* @004c1168 file=? name=FUN_004c1168 */ + +undefined4 __cdecl FUN_004c1168(undefined4 *param_1) + +{ + int iVar1; + + iVar1 = FUN_00429f8c(param_1); + if (iVar1 == 0) { + return 0; + } + param_1[7] = 0xbd9; + return 1; +} + + + +/* @004c1198 file=? name=FUN_004c1198 */ + +void __cdecl FUN_004c1198(int param_1) + +{ + FUN_0041a1a4(**(int **)(param_1 + 0xc),0x513350); + return; +} + + + +/* @004c1408 file=? name=FUN_004c1408 */ + +undefined4 * __cdecl FUN_004c1408(undefined4 *param_1,int param_2,undefined4 param_3) + +{ + FUN_0042eec8(param_1,param_2,param_3); + *param_1 = &PTR_FUN_005134c4; + if ((param_1[10] & 0xc) != 4) { + param_1[7] = PTR_LAB_00513464; + param_1[8] = DAT_00513468; + param_1[9] = DAT_0051346c; + } + return param_1; +} + + + +/* @004c1454 file=? name=FUN_004c1454 */ + +undefined4 * __cdecl FUN_004c1454(int param_1) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00402298(0x238); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_004c1408(puVar1,param_1,&DAT_00513444); + } + return puVar1; +} + + + +/* @004c1484 file=? name=FUN_004c1484 */ + +void __cdecl FUN_004c1484(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_005134c4; + FUN_0042efa4(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004c14b0 file=? name=FUN_004c14b0 */ + +void __cdecl FUN_004c14b0(int param_1) + +{ + FUN_0041a1a4(**(int **)(param_1 + 0xc),0x513414); + return; +} + + + +/* @004c1548 file=? name=FUN_004c1548 */ + +undefined4 * __cdecl FUN_004c1548(undefined4 *param_1) + +{ + FUN_00433220(param_1); + *param_1 = &PTR_FUN_00513588; + return param_1; +} + + + +/* @004c1564 file=? name=FUN_004c1564 */ + +void __cdecl FUN_004c1564(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_00513588; + FUN_0043324c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004c1590 file=? name=FUN_004c1590 */ + +undefined * __cdecl FUN_004c1590(undefined4 param_1,int param_2) + +{ + undefined *puVar1; + + if (param_2 < 0xbd2) { + if (param_2 == 0xbd1) { + return &DAT_005129b0; + } + if (param_2 == 0xbb9) { + return &DAT_0050bde4; + } + if (param_2 == 0xbba) { + return &DAT_00512d48; + } + } + else { + if (param_2 == 0xbd9) { + return &DAT_00513380; + } + if (param_2 == 0xbda) { + return &DAT_00512fc4; + } + } + puVar1 = FUN_004332fc(param_1,param_2); + return puVar1; +} + + + +/* @004c15f0 file=? name=FUN_004c15f0 */ + +undefined4 * __cdecl FUN_004c15f0(undefined4 param_1,int param_2) + +{ + char *pcVar1; + int *piVar2; + char cVar3; + undefined4 uVar4; + char *pcVar5; + undefined4 *puVar6; + uint uVar7; + uint uVar8; + char *pcVar9; + bool bVar10; + undefined4 local_12c; + undefined4 local_128; + undefined4 local_124; + undefined4 local_120 [2]; + undefined4 local_118; + undefined4 local_114; + undefined4 local_110; + undefined4 local_10c [2]; + undefined4 local_104; + undefined4 local_100; + undefined4 local_fc; + undefined4 local_f8; + undefined4 local_f4; + undefined4 local_f0; + undefined4 local_ec; + undefined4 local_e8; + undefined4 local_e4; + undefined4 local_e0; + undefined4 local_dc; + undefined4 local_d8; + undefined4 local_d4; + undefined4 local_d0 [2]; + undefined4 local_c8; + undefined4 local_c4; + undefined4 local_c0; + undefined4 local_bc [2]; + undefined4 local_b4; + undefined4 local_b0; + undefined4 local_ac; + undefined4 local_a8; + undefined4 local_a4; + undefined4 local_a0; + undefined4 local_9c; + undefined4 local_98; + undefined4 local_94; + undefined4 local_90; + char local_8c [64]; + char local_4c [64]; + int *local_c; + int *local_8; + + pcVar9 = s_camera_00513549; + pcVar5 = *(char **)(param_2 + 0x2c); + do { + bVar10 = *pcVar5 == *pcVar9; + if (!bVar10) break; + if (*pcVar5 == '\0') goto LAB_004c17c9; + pcVar1 = pcVar5 + 1; + bVar10 = *pcVar1 == pcVar9[1]; + if (!bVar10) break; + pcVar5 = pcVar5 + 2; + pcVar9 = pcVar9 + 2; + bVar10 = *pcVar1 == '\0'; + } while (!bVar10); + if (bVar10) { +LAB_004c17c9: + uVar4 = *(undefined4 *)(param_2 + 0x4c); + local_12c = 0x50; + local_128 = 3; + local_124 = 1; + FUN_00420ea4(local_120,(undefined4 *)&DAT_00522524); + local_118 = 0; + local_114 = 0; + local_110 = 0x46; + FUN_00420ea4(local_10c,(undefined4 *)&DAT_00522524); + local_104 = 0xffffffff; + local_100 = 0x9100; + local_fc = DAT_004e0fec; + local_f8 = DAT_004e0ff0; + local_f4 = DAT_004e0ff4; + local_f0 = DAT_004e0ff8; + local_ec = DAT_004e0ffc; + local_e8 = DAT_004e1000; + local_e4 = DAT_004e1004; + local_e0 = uVar4; + puVar6 = (undefined4 *)FUN_00402298(0x238); + if (puVar6 == (undefined4 *)0x0) { + puVar6 = (undefined4 *)0x0; + } + else { + puVar6 = FUN_004c1408(puVar6,(int)&local_12c,&DAT_00513444); + } + } + else { + local_8 = *(int **)(param_2 + 0xec); + local_8[3] = local_8[3] + 1; + local_c = *(int **)(param_2 + 0xe8); + local_c[3] = local_c[3] + 1; + uVar4 = *(undefined4 *)(param_2 + 0x4c); + local_dc = 0xd0; + local_d8 = 3; + local_d4 = 1; + FUN_00420ea4(local_d0,(undefined4 *)&DAT_00522524); + local_c8 = 0; + local_c4 = 0; + local_c0 = 0xbda; + FUN_00420ea4(local_bc,(undefined4 *)&DAT_00522524); + local_b4 = 0xffffffff; + local_b0 = 0x5100; + local_ac = DAT_004e0fec; + local_a8 = DAT_004e0ff0; + local_a4 = DAT_004e0ff4; + local_a0 = DAT_004e0ff8; + local_9c = DAT_004e0ffc; + local_98 = DAT_004e1000; + local_94 = DAT_004e1004; + uVar7 = 0xffffffff; + pcVar5 = (char *)local_8[2]; + do { + pcVar9 = pcVar5; + if (uVar7 == 0) break; + uVar7 = uVar7 - 1; + pcVar9 = pcVar5 + 1; + cVar3 = *pcVar5; + pcVar5 = pcVar9; + } while (cVar3 != '\0'); + uVar7 = ~uVar7; + pcVar5 = pcVar9 + -uVar7; + pcVar9 = local_8c; + for (uVar8 = uVar7 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) { + *(undefined4 *)pcVar9 = *(undefined4 *)pcVar5; + pcVar5 = pcVar5 + 4; + pcVar9 = pcVar9 + 4; + } + for (uVar7 = uVar7 & 3; uVar7 != 0; uVar7 = uVar7 - 1) { + *pcVar9 = *pcVar5; + pcVar5 = pcVar5 + 1; + pcVar9 = pcVar9 + 1; + } + uVar7 = 0xffffffff; + pcVar5 = (char *)local_c[2]; + do { + pcVar9 = pcVar5; + if (uVar7 == 0) break; + uVar7 = uVar7 - 1; + pcVar9 = pcVar5 + 1; + cVar3 = *pcVar5; + pcVar5 = pcVar9; + } while (cVar3 != '\0'); + uVar7 = ~uVar7; + pcVar5 = pcVar9 + -uVar7; + pcVar9 = local_4c; + for (uVar8 = uVar7 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) { + *(undefined4 *)pcVar9 = *(undefined4 *)pcVar5; + pcVar5 = pcVar5 + 4; + pcVar9 = pcVar9 + 4; + } + for (uVar7 = uVar7 & 3; uVar7 != 0; uVar7 = uVar7 - 1) { + *pcVar9 = *pcVar5; + pcVar5 = pcVar5 + 1; + pcVar9 = pcVar9 + 1; + } + piVar2 = local_c + 3; + *piVar2 = *piVar2 + -1; + local_90 = uVar4; + if (*piVar2 == 0) { + FUN_004024d8(local_c,3); + } + piVar2 = local_8 + 3; + *piVar2 = *piVar2 + -1; + if (*piVar2 == 0) { + FUN_004024d8(local_8,3); + } + puVar6 = (undefined4 *)FUN_00402298(0x294); + if (puVar6 == (undefined4 *)0x0) { + puVar6 = (undefined4 *)0x0; + } + else { + puVar6 = FUN_004c0bc8(puVar6,(int)&local_dc,&DAT_00512fc4); + } + } + return puVar6; +} + + + +/* @004c18f4 file=? name=FUN_004c18f4 */ + +void __cdecl FUN_004c18f4(undefined4 *param_1,undefined4 param_2,undefined4 param_3) + +{ + *param_1 = 0x14; + param_1[1] = 9; + param_1[2] = 1; + param_1[3] = param_2; + param_1[4] = param_3; + return; +} + + + +/* @004c191c file=? name=FUN_004c191c */ + +void __cdecl FUN_004c191c(undefined4 *param_1,undefined4 param_2,undefined4 param_3) + +{ + *param_1 = 0x14; + param_1[1] = 0xd; + param_1[2] = 1; + param_1[3] = param_2; + param_1[4] = param_3; + return; +} + + + +/* @004c1944 file=? name=FUN_004c1944 */ + +void __cdecl +FUN_004c1944(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4, + undefined4 param_5,undefined4 param_6,undefined4 param_7,undefined4 param_8) + +{ + *param_1 = 0x28; + param_1[1] = 10; + param_1[2] = 1; + param_1[3] = param_2; + param_1[4] = param_3; + param_1[5] = param_4; + param_1[6] = param_7; + param_1[7] = param_5; + param_1[8] = param_6; + param_1[9] = param_8; + return; +} + + + +/* @004c198c file=? name=FUN_004c198c */ + +void __cdecl FUN_004c198c(undefined4 *param_1,undefined4 param_2) + +{ + *param_1 = 0x10; + param_1[1] = 0xf; + param_1[2] = 1; + param_1[3] = param_2; + return; +} + + + +/* @004c19fc file=? name=FUN_004c19fc */ + +void __cdecl FUN_004c19fc(float *param_1,int param_2,float *param_3,int param_4,int param_5) + +{ + float fVar1; + undefined4 local_c; + int local_8; + + if (param_2 == param_4) { + param_1[6] = 0.0; + } + else { + if (*(int *)(param_2 + 400) == 0) { + param_1[6] = 0.0; + } + else { + local_8 = *(int *)(DAT_004efc94 + 200); + local_c = *(undefined4 *)(*(int *)(param_2 + 400) + 0x1e0); + fVar1 = (float)(**(code **)(*(int *)(local_8 + 0x80) + 0xc))(local_8 + 0x80,&local_c); + param_1[6] = fVar1; + } + FUN_00408b98(param_1,(float *)(param_2 + 0x100),param_3); + fVar1 = (float)FUN_004c2f88(); + param_1[7] = fVar1; + param_1[8] = (float)(uint)(param_2 == param_5); + param_1[3] = -1.0; + param_1[4] = 0.0; + param_1[5] = 0.0; + } + return; +} + + + +/* @004c1ab0 file=? name=FUN_004c1ab0 */ + +void __cdecl FUN_004c1ab0(int param_1,int *param_2,undefined4 param_3) + +{ + int iVar1; + undefined4 uVar2; + undefined4 uVar3; + + if (*(int *)(param_1 + 0x18) != 0) { + uVar2 = FUN_004dcd94(); + uVar3 = FUN_004dcd94(); + (**(code **)(*param_2 + 0x24))(param_2,uVar2,uVar3); + if (*(int *)(param_1 + 0x20) == 0) { + (**(code **)(*param_2 + 0x18))(param_2,*(undefined4 *)(param_1 + 0x1c)); + } + else { + (**(code **)(*param_2 + 0x18))(param_2,param_3); + } + iVar1 = *(int *)(param_1 + 0x18); + (**(code **)(*param_2 + 0x54)) + (param_2,0,iVar1,0,0,*(int *)(iVar1 + 0xc) + -1,*(int *)(iVar1 + 0x10) + -1); + } + return; +} + + + +/* @004c1c24 file=? name=FUN_004c1c24 */ + +int * __cdecl +FUN_004c1c24(int *param_1,undefined4 param_2,undefined4 param_3,int param_4,undefined4 param_5, + int param_6,int param_7,int param_8,undefined4 param_9,int param_10,int param_11, + int param_12,int param_13,int param_14,int param_15,int param_16,int param_17, + undefined4 param_18,undefined4 param_19,undefined4 param_20,undefined4 param_21, + int param_22) + +{ + int iVar1; + undefined4 *puVar2; + int *piVar3; + + FUN_00444818(param_1,param_2,param_3,param_4,param_5,param_6,s_MapDisplay_00514011); + *param_1 = (int)&PTR_FUN_0051422c; + piVar3 = FUN_004de998(param_1 + 0x24,0x24,0x10,1,FUN_004c2a1d); + FUN_00443474(param_1 + 0xde); + FUN_00443474(param_1 + 0xe5); + FUN_0044a5b4((uint *)(param_1 + 0xec)); + (**(code **)(param_1[0x12] + 8))(param_1 + 0x12,param_7,param_8,piVar3,param_10); + if (param_11 == 1) { + (**(code **)(param_1[0x12] + 0x10))(param_1 + 0x12,(int)piVar3 - param_7 >> 1,0); + } + else { + (**(code **)(param_1[0x12] + 0x10)) + (param_1 + 0x12,(int)piVar3 - param_7 >> 1,param_10 - param_8 >> 1); + } + param_1[0xd6] = param_13; + param_1[0xd7] = param_14; + param_1[0xd8] = param_15; + param_1[0xbc] = param_16; + param_1[0xdc] = param_22; + param_1[0xd9] = (int)piVar3 - param_7 >> 1; + param_1[0xda] = param_10 - param_8 >> 1; + param_1[0xb4] = param_11; + param_1[0xf0] = param_12 >> 1; + iVar1 = FUN_004022b0((param_12 >> 1) << 3); + param_1[0xf1] = iVar1; + param_1[199] = 0; + param_1[200] = 0x3ec90fdb; + param_1[0xdd] = 0; + puVar2 = (undefined4 *)FUN_00402298(0x18); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_00474855(puVar2,0,param_1 + 0xb5,param_18); + } + (**(code **)(*param_1 + 0x34))(param_1,puVar2); + puVar2 = (undefined4 *)FUN_00402298(0x18); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_004c2a3e(puVar2,0,param_1 + 0xb6,param_19); + } + (**(code **)(*param_1 + 0x34))(param_1,puVar2); + puVar2 = (undefined4 *)FUN_00402298(0x18); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_004c2bc0(puVar2,0,param_1 + 0xb7,param_20); + } + (**(code **)(*param_1 + 0x34))(param_1,puVar2); + puVar2 = (undefined4 *)FUN_00402298(0x18); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_00474855(puVar2,0,param_1 + 0xb8,param_21); + } + (**(code **)(*param_1 + 0x34))(param_1,puVar2); + if (*(int *)(param_17 + 4) == 0xbb9) { + iVar1 = FUN_0041f98c(param_17,s_Torso_0051401c); + if (iVar1 != 0) { + puVar2 = (undefined4 *)FUN_00402298(0x18); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_004c2d42(puVar2,0,param_1 + 199,iVar1 + 0x1d8); + } + (**(code **)(*param_1 + 0x34))(param_1,puVar2); + } + } + return param_1; +} + + + +/* @004c1ea8 file=? name=FUN_004c1ea8 */ + +void __cdecl FUN_004c1ea8(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0051422c; + FUN_004022e8((int *)param_1[0xf1]); + FUN_0044a5dc(param_1 + 0xec,2); + FUN_004434a0(param_1 + 0xe5,2); + FUN_004434a0(param_1 + 0xde,2); + FUN_004de8d4(param_1 + 0x24,0x24,0x10,1,FUN_004c2a25); + FUN_00444870(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004c1f30 file=? name=FUN_004c1f30 */ + +void FUN_004c1f30(void) + +{ + FUN_004448ac(); + return; +} + + + +/* @004c1f40 file=? name=FUN_004c1f40 */ + +void __cdecl FUN_004c1f40(int param_1,char *param_2) + +{ + char cVar1; + uint uVar2; + uint uVar3; + char *pcVar4; + char *pcVar5; + char local_54 [80]; + + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_ThreatIndicator__00514022,(char *)0x0); + uVar2 = 0xffffffff; + do { + pcVar4 = param_2; + if (uVar2 == 0) break; + uVar2 = uVar2 - 1; + pcVar4 = param_2 + 1; + cVar1 = *param_2; + param_2 = pcVar4; + } while (cVar1 != '\0'); + uVar2 = ~uVar2; + pcVar4 = pcVar4 + -uVar2; + pcVar5 = local_54; + for (uVar3 = uVar2 >> 2; uVar3 != 0; uVar3 = uVar3 - 1) { + *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4; + pcVar4 = pcVar4 + 4; + pcVar5 = pcVar5 + 4; + } + for (uVar2 = uVar2 & 3; uVar2 != 0; uVar2 = uVar2 - 1) { + *pcVar5 = *pcVar4; + pcVar4 = pcVar4 + 1; + pcVar5 = pcVar5 + 1; + } + FUN_004d49b8(local_54,&DAT_00514034); + FUN_004448bc(param_1,local_54); + return; +} + + + +/* @004c1fc0 file=? name=FUN_004c1fc0 */ + +void __cdecl FUN_004c1fc0(int param_1) + +{ + *(undefined4 *)(param_1 + 0x354) = 0; + return; +} + + + +/* @004c1fd0 file=? name=FUN_004c1fd0 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004c1fd0(int param_1) + +{ + int iVar1; + uint uVar2; + + iVar1 = *(int *)(param_1 + 0x354); + *(int *)(param_1 + 0x354) = *(int *)(param_1 + 0x354) + 1; + if (iVar1 == 0) { + uVar2 = (uint)(_DAT_004c2174 < *(float *)(param_1 + 0x2e0)); + *(uint *)(param_1 + 0x36c) = uVar2; + if (uVar2 != 0) { + *(float *)(param_1 + 0x2f4) = *(float *)(param_1 + 0x2e0) * *(float *)(param_1 + 0x2f0); + *(float *)(param_1 + 0x2f4) = *(float *)(param_1 + 0x2f4) * *(float *)(param_1 + 0x2f4); + FUN_004c2178(param_1); + } + } + else if (iVar1 == 1) { + FUN_004435ac(param_1 + 0x378); + if (*(int *)(param_1 + 0x36c) != 0) { + FUN_00443ba4(*(int *)(param_1 + 0x1c) + 0xb0,param_1 + 0x378,*(float *)(param_1 + 0x2f8), + *(undefined4 *)(param_1 + 0x2fc),*(float *)(param_1 + 0x300), + *(float *)(param_1 + 0x304),*(undefined4 *)(param_1 + 0x308), + *(float *)(param_1 + 0x30c),0); + } + } + else if (iVar1 == 2) { + FUN_004435ac(param_1 + 0x394); + if (*(int *)(param_1 + 0x36c) != 0) { + FUN_0044366c(*(int *)(param_1 + 0x1c) + 0x94,param_1 + 0x394,*(float *)(param_1 + 0x2f8), + *(undefined4 *)(param_1 + 0x2fc),*(float *)(param_1 + 0x300), + *(float *)(param_1 + 0x304),*(undefined4 *)(param_1 + 0x308), + *(float *)(param_1 + 0x30c),0); + } + } + else { + if ((iVar1 == 3) && (FUN_004c2294(param_1), *(int *)(param_1 + 0x36c) != 0)) { + FUN_004c22c4(param_1); + } + *(undefined4 *)(param_1 + 0x354) = 0; + } + return; +} + + + +/* @004c2178 file=bt_l4/btl4rdr.cpp name=FUN_004c2178 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004c2178(int param_1) + +{ + float fVar1; + float fVar2; + int iVar3; + + if (*(float *)(param_1 + 0x2d4) <= _DAT_004c2284) { + FUN_0040385c(s_MapDisplay__CalculateBounds_dete_00514038, + s_d__tesla_bt_bt_l4_BTL4RDR_CPP_00514071,0x224); + *(undefined4 *)(param_1 + 0x2d4) = 0x3f800000; + } + *(float *)(param_1 + 0x2e8) = (float)(*(int *)(param_1 + 0x364) * 2) / *(float *)(param_1 + 0x2d4) + ; + *(float *)(param_1 + 0x2ec) = _DAT_004c2288 / *(float *)(param_1 + 0x2e8); + *(undefined4 *)(param_1 + 0x2e4) = *(undefined4 *)(param_1 + 0x2ec); + fVar1 = (float)*(int *)(param_1 + 0x364) / *(float *)(param_1 + 0x2e8); + fVar2 = (float)*(int *)(param_1 + 0x368) / *(float *)(param_1 + 0x2e8); + iVar3 = FUN_00417ab4(*(int *)(param_1 + 0x1c) + 0x40); + FUN_00408440((undefined4 *)(param_1 + 0x310),(undefined4 *)(iVar3 + 0x100)); + *(float *)(param_1 + 0x2f8) = *(float *)(param_1 + 0x310) - fVar1; + *(float *)(param_1 + 0x304) = *(float *)(param_1 + 0x310) + fVar1; + *(undefined4 *)(param_1 + 0x2fc) = 0xc7000000; + *(undefined4 *)(param_1 + 0x308) = 0x47000000; + *(float *)(param_1 + 0x300) = *(float *)(param_1 + 0x318) - fVar2; + *(float *)(param_1 + 0x30c) = *(float *)(param_1 + 0x318) + fVar2; + return; +} + + + +/* @004c228c file=? name=FUN_004c228c */ + +void FUN_004c228c(void) + +{ + return; +} + + + +/* @004c2294 file=? name=FUN_004c2294 */ + +void __cdecl FUN_004c2294(int param_1) + +{ + FUN_0044a650((int *)(param_1 + 0x3b0),param_1 + 0x48,*(uint *)(param_1 + 0x358)); + FUN_0044a630(param_1 + 0x3b0); + return; +} + + + +/* @004c22c4 file=? name=FUN_004c22c4 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004c22c4(int param_1) + +{ + float *pfVar1; + int iVar2; + float *pfVar3; + float *pfVar4; + float local_b8 [12]; + float local_88 [4]; + float local_78 [3]; + float local_6c [4]; + undefined4 local_5c [3]; + float local_50 [12]; + float local_20; + undefined4 local_1c; + undefined4 local_18; + float local_14; + float local_10; + float local_c; + undefined4 local_8; + + FUN_0040aadc(local_50); + FUN_0040aadc(local_50); + iVar2 = FUN_00417ab4(*(int *)(param_1 + 0x1c) + 0x40); + if ((*(int *)(param_1 + 0x2d8) == 0) && (iVar2 != 0)) { + *(int *)(param_1 + 0x2d8) = iVar2 + 0x100; + } + if (*(undefined4 **)(param_1 + 0x2d8) != (undefined4 *)0x0) { + FUN_00408440(local_5c,*(undefined4 **)(param_1 + 0x2d8)); + FUN_0040b0ac((int)local_50,3,local_5c); + if (*(undefined4 **)(param_1 + 0x2dc) != (undefined4 *)0x0) { + if (*(int *)(param_1 + 0x370) == 0) { + FUN_0040954c(local_78,*(float **)(param_1 + 0x2dc)); + local_14 = local_78[0] * _DAT_004c2480; + local_10 = local_14; + FUN_00408328(&local_c,&local_14); + FUN_00409948(local_88,0,local_c,0,local_8); + FUN_0040adec(local_50,local_88); + } + else { + FUN_00409968(local_6c,*(undefined4 **)(param_1 + 0x2dc)); + FUN_0040adec(local_50,local_6c); + } + } + } + pfVar1 = (float *)(param_1 + 0x324); + FUN_0040b244(pfVar1,local_50); + local_20 = *(float *)(param_1 + 0x2e8); + local_1c = *(undefined4 *)(param_1 + 0x2e8); + local_18 = *(undefined4 *)(param_1 + 0x2e8); + pfVar3 = pfVar1; + pfVar4 = local_b8; + for (iVar2 = 0xc; iVar2 != 0; iVar2 = iVar2 + -1) { + *pfVar4 = *pfVar3; + pfVar3 = pfVar3 + 1; + pfVar4 = pfVar4 + 1; + } + FUN_0040b374(pfVar1,local_b8,&local_20); + FUN_004c228c(); + *(uint *)(param_1 + 0x374) = *(uint *)(param_1 + 0x374) ^ 1; + (**(code **)(*(int *)(param_1 + 0x48) + 100))(param_1 + 0x48,param_1 + 0x3b0); + FUN_004c2484(param_1); + FUN_004c25b4(param_1,pfVar1); + FUN_004c2788(param_1,pfVar1); + FUN_004c28c4(param_1,pfVar1); + (**(code **)(*(int *)(param_1 + 0x48) + 0x68))(param_1 + 0x48); + return; +} + + + +/* @004c2484 file=? name=FUN_004c2484 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004c2484(int param_1) + +{ + int iVar1; + undefined4 uVar2; + undefined4 uVar3; + float local_34; + float local_30; + float local_2c; + float local_28; + float local_24; + float local_20; + float local_1c; + float local_18; + float local_14; + float local_10; + float local_c; + float local_8; + + local_c = *(float *)(param_1 + 0x31c) - *(float *)(param_1 + 800); + iVar1 = param_1 + 0x48; + local_14 = *(float *)(param_1 + 0x31c) + *(float *)(param_1 + 800); + local_10 = local_14; + local_8 = local_c; + (**(code **)(*(int *)(param_1 + 0x48) + 0x18))(iVar1,*(undefined4 *)(param_1 + 0x35c)); + local_2c = -local_8; + local_28 = local_2c; + FUN_00408328(&local_24,&local_2c); + local_18 = local_24 * _DAT_004c25ac; + local_1c = local_20 * _DAT_004c25ac; + (**(code **)(*(int *)(param_1 + 0x48) + 0x24))(iVar1,0,0); + uVar2 = FUN_004dcd94(); + uVar3 = FUN_004dcd94(); + (**(code **)(*(int *)(param_1 + 0x48) + 0x30))(iVar1,uVar3,uVar2); + local_34 = -local_10; + local_30 = local_34; + FUN_00408328(&local_24,&local_34); + local_18 = local_24 * _DAT_004c25ac; + local_1c = local_20 * _DAT_004c25ac; + (**(code **)(*(int *)(param_1 + 0x48) + 0x24))(iVar1,0,0); + uVar2 = FUN_004dcd94(); + uVar3 = FUN_004dcd94(); + (**(code **)(*(int *)(param_1 + 0x48) + 0x30))(iVar1,uVar3,uVar2); + return; +} + + + +/* @004c25b4 file=? name=FUN_004c25b4 */ + +void __cdecl FUN_004c25b4(int param_1,float *param_2) + +{ + int *piVar1; + int iVar2; + undefined4 uVar3; + int iVar4; + float local_80 [3]; + float local_74; + float local_70; + float local_6c; + int local_68 [3]; + float local_5c [15]; + undefined4 local_20; + undefined4 local_1c; + undefined4 local_18; + undefined4 local_14; + undefined4 local_10; + int local_c; + int local_8; + + FUN_0042ac1c(local_68,param_1 + 900); + local_20 = 0; + local_1c = 0; + local_18 = 0; + local_8 = *(int *)(*(int *)(param_1 + 0x1c) + 0x4c); + local_c = *(int *)(DAT_004efc94 + 200); + while( true ) { + iVar4 = (**(code **)(local_68[0] + 0x28))(local_68); + if (iVar4 == 0) break; + FUN_00408644(&local_74,(float *)(param_1 + 0x310),(float *)(iVar4 + 0x100)); + if (local_6c * local_6c + local_70 * local_70 + local_74 * local_74 <= + *(float *)(param_1 + 0x2f4)) { + piVar1 = FUN_004688ce(local_8 + 0x58,*(int *)(iVar4 + 0x1bc),0); + if (piVar1 != (int *)0x0) { + FUN_0040b104(local_5c,(float *)(iVar4 + 0xd0),param_2); + FUN_0046f0c0(piVar1,*(float *)(param_1 + 0x2e4),*(float *)(param_1 + 0x2ec), + (int *)(param_1 + 0x48),*(int *)(param_1 + 0x35c),local_5c,0); + } + iVar2 = FUN_0041a1a4(**(int **)(iVar4 + 0xc),0x4e70c4); + if (iVar2 != 0) { + local_10 = *(undefined4 *)(iVar4 + 0x21c); + iVar2 = (**(code **)(*(int *)(local_c + 0x68) + 0xc))(local_c + 0x68,&local_10); + if (iVar2 != 0) { + FUN_00408b98(local_80,(float *)(iVar4 + 0x100),param_2); + local_14 = FUN_004dcd94(); + uVar3 = FUN_004dcd94(); + (**(code **)(*(int *)(param_1 + 0x48) + 0x24))(param_1 + 0x48,local_14,uVar3); + uVar3 = FUN_004c2f88(); + (**(code **)(*(int *)(param_1 + 0x48) + 0x18))(param_1 + 0x48,uVar3); + (**(code **)(*(int *)(param_1 + 0x48) + 0x54)) + (param_1 + 0x48,0,iVar2,0,0,*(int *)(iVar2 + 0xc) + -1, + *(int *)(iVar2 + 0x10) + -1); + } + } + } + } + FUN_0042ac79(local_68,2); + return; +} + + + +/* @004c2788 file=? name=FUN_004c2788 */ + +void __cdecl FUN_004c2788(int param_1,float *param_2) + +{ + int iVar1; + int iVar2; + int iVar3; + float *pfVar4; + float local_58; + float local_54; + float local_50; + float local_4c [12]; + int local_1c [3]; + int local_10; + int local_c; + int *local_8; + + FUN_0042ac1c(local_1c,param_1 + 0x3a0); + local_c = *(int *)(*(int *)(param_1 + 0x1c) + 0x4c); + iVar1 = FUN_00417ab4(*(int *)(param_1 + 0x1c) + 0x40); + local_10 = 0; + if (iVar1 != 0) { + local_10 = *(int *)(*(int *)(iVar1 + 400) + 0x284); + } + while( true ) { + iVar3 = (**(code **)(local_1c[0] + 0x28))(local_1c); + if (iVar3 == 0) break; + if (iVar1 != iVar3) { + FUN_00408644(&local_58,(float *)(param_1 + 0x310),(float *)(iVar3 + 0x100)); + if (local_50 * local_50 + local_54 * local_54 + local_58 * local_58 <= + *(float *)(param_1 + 0x2f4)) { + local_8 = FUN_004688ce(local_c + 0x58,*(int *)(iVar3 + 0x1bc),0); + if (local_8 != (int *)0x0) { + FUN_0040b104(local_4c,(float *)(iVar3 + 0xd0),param_2); + if (iVar3 == local_10) { + iVar3 = *(int *)(param_1 + 0x360); + } + else { + iVar3 = 0; + } + pfVar4 = local_4c; + iVar2 = FUN_004c2f88(); + FUN_0046f0c0(local_8,*(float *)(param_1 + 0x2e4),*(float *)(param_1 + 0x2ec), + (int *)(param_1 + 0x48),iVar2,pfVar4,iVar3); + } + } + } + } + FUN_0042ac79(local_1c,2); + return; +} + + + +/* @004c28c4 file=bt_l4/btl4rdr.cpp name=FUN_004c28c4 */ + +void __cdecl FUN_004c28c4(int param_1,float *param_2) + +{ + int iVar1; + float *pfVar2; + int iVar3; + undefined4 uVar4; + int local_1c [3]; + int local_10; + int local_c; + int local_8; + + local_8 = FUN_00417ab4(*(int *)(param_1 + 0x1c) + 0x40); + local_c = 0; + if (local_8 != 0) { + local_c = *(int *)(*(int *)(local_8 + 400) + 0x284); + } + FUN_0042ac1c(local_1c,param_1 + 0x3a0); + local_10 = (**(code **)(local_1c[0] + 0x14))(local_1c); + if (local_10 < 1) { + FUN_0042ac79(local_1c,2); + } + else { + if (0x10 < local_10) { + local_10 = 0x10; + } + iVar3 = 0; + pfVar2 = (float *)(param_1 + 0x90); + if (0 < local_10) { + do { + iVar1 = (**(code **)(local_1c[0] + 0x28))(local_1c); + if (iVar1 == 0) { + FUN_0040385c(s_MapDisplay__DrawNames___GetSize__0051408f, + s_d__tesla_bt_bt_l4_BTL4RDR_CPP_005140b7,0x408); + } + FUN_004c19fc(pfVar2,iVar1,param_2,local_8,local_c); + iVar3 = iVar3 + 1; + pfVar2 = pfVar2 + 9; + } while (iVar3 < local_10); + } + if (*(int *)(param_1 + 0x374) == 0) { + uVar4 = 0; + } + else { + uVar4 = *(undefined4 *)(param_1 + 0x360); + } + iVar1 = 0; + iVar3 = param_1 + 0x90; + if (0 < local_10) { + do { + FUN_004c1ab0(iVar3,(int *)(param_1 + 0x48),uVar4); + iVar1 = iVar1 + 1; + iVar3 = iVar3 + 0x24; + } while (iVar1 < local_10); + } + FUN_0042ac79(local_1c,2); + } + return; +} + + + +/* @004c2a1d file=? name=FUN_004c2a1d */ + +undefined4 __cdecl FUN_004c2a1d(undefined4 param_1) + +{ + return param_1; +} + + + +/* @004c2a25 file=? name=FUN_004c2a25 */ + +void __cdecl FUN_004c2a25(int *param_1,byte param_2) + +{ + if ((param_1 != (int *)0x0) && ((param_2 & 1) != 0)) { + FUN_004022d0(param_1); + } + return; +} + + + +/* @004c2a3e file=? name=FUN_004c2a3e */ + +undefined4 * __cdecl +FUN_004c2a3e(undefined4 *param_1,undefined4 param_2,undefined4 *param_3,undefined4 param_4) + +{ + FUN_00444124(param_1,param_2); + *param_1 = &PTR_FUN_00514220; + param_1[4] = param_4; + param_1[5] = param_3; + *param_3 = *(undefined4 *)param_1[4]; + return param_1; +} + + + +/* @004c2a70 file=? name=FUN_004c2a70 */ + +void __cdecl FUN_004c2a70(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_00514220; + FUN_00444148(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004c2a9c file=? name=FUN_004c2a9c */ + +void __cdecl FUN_004c2a9c(int param_1) + +{ + **(undefined4 **)(param_1 + 0x14) = **(undefined4 **)(param_1 + 0x10); + return; +} + + + +/* @004c2aae file=? name=FUN_004c2aae */ + +void __cdecl FUN_004c2aae(int param_1,char *param_2) + +{ + undefined8 uVar1; + uint uVar2; + uint uVar3; + + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_GaugeConnectionDirectOf__00514121,(char *)0x0); + uVar3 = **(uint **)(param_1 + 0x10); + uVar2 = *(uint *)(param_1 + 0x10); + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s____dataSource_at_0051413b,(char *)0x0); + uVar1 = FUN_004dbd4c(&DAT_00524e20,uVar2); + FUN_004dbb24((int *)uVar1,&DAT_00514151,(char *)0x0); + uVar1 = FUN_004dbd4c((int *)uVar1,uVar3); + FUN_004dbb24((int *)uVar1,&DAT_00514153,(char *)0x0); + uVar3 = *(uint *)(param_1 + 0x10); + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s____dataDestination_at_00514155,(char *)0x0); + uVar1 = FUN_004dbd4c(&DAT_00524e20,uVar3); + FUN_004dbb24((int *)uVar1,&DAT_0051416b,(char *)0x0); + FUN_004d9c70((int *)uVar1); + FUN_0044419c(param_1,param_2); + return; +} + + + +/* @004c2bb1 file=? name=FUN_004c2bb1 */ + +void FUN_004c2bb1(void) + +{ + FUN_00415f1c(); + return; +} + + + +/* @004c2bc0 file=? name=FUN_004c2bc0 */ + +undefined4 * __cdecl +FUN_004c2bc0(undefined4 *param_1,undefined4 param_2,undefined4 *param_3,undefined4 param_4) + +{ + FUN_00444124(param_1,param_2); + *param_1 = &PTR_FUN_00514214; + param_1[4] = param_4; + param_1[5] = param_3; + *param_3 = *(undefined4 *)param_1[4]; + return param_1; +} + + + +/* @004c2bf2 file=? name=FUN_004c2bf2 */ + +void __cdecl FUN_004c2bf2(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_00514214; + FUN_00444148(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004c2c1e file=? name=FUN_004c2c1e */ + +void __cdecl FUN_004c2c1e(int param_1) + +{ + **(undefined4 **)(param_1 + 0x14) = **(undefined4 **)(param_1 + 0x10); + return; +} + + + +/* @004c2c30 file=? name=FUN_004c2c30 */ + +void __cdecl FUN_004c2c30(int param_1,char *param_2) + +{ + undefined8 uVar1; + uint uVar2; + uint uVar3; + + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_GaugeConnectionDirectOf__0051416d,(char *)0x0); + uVar3 = **(uint **)(param_1 + 0x10); + uVar2 = *(uint *)(param_1 + 0x10); + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s____dataSource_at_00514187,(char *)0x0); + uVar1 = FUN_004dbd4c(&DAT_00524e20,uVar2); + FUN_004dbb24((int *)uVar1,&DAT_0051419d,(char *)0x0); + uVar1 = FUN_004dbd4c((int *)uVar1,uVar3); + FUN_004dbb24((int *)uVar1,&DAT_0051419f,(char *)0x0); + uVar3 = *(uint *)(param_1 + 0x10); + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s____dataDestination_at_005141a1,(char *)0x0); + uVar1 = FUN_004dbd4c(&DAT_00524e20,uVar3); + FUN_004dbb24((int *)uVar1,&DAT_005141b7,(char *)0x0); + FUN_004d9c70((int *)uVar1); + FUN_0044419c(param_1,param_2); + return; +} + + + +/* @004c2d33 file=? name=FUN_004c2d33 */ + +void FUN_004c2d33(void) + +{ + FUN_00415f1c(); + return; +} + + + +/* @004c2d42 file=? name=FUN_004c2d42 */ + +undefined4 * __cdecl +FUN_004c2d42(undefined4 *param_1,undefined4 param_2,undefined4 *param_3,undefined4 param_4) + +{ + FUN_00444124(param_1,param_2); + *param_1 = &PTR_FUN_00514208; + param_1[4] = param_4; + param_1[5] = param_3; + *param_3 = *(undefined4 *)param_1[4]; + return param_1; +} + + + +/* @004c2d74 file=? name=FUN_004c2d74 */ + +void __cdecl FUN_004c2d74(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_00514208; + FUN_00444148(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004c2da0 file=? name=FUN_004c2da0 */ + +void __cdecl FUN_004c2da0(int param_1) + +{ + **(undefined4 **)(param_1 + 0x14) = **(undefined4 **)(param_1 + 0x10); + return; +} + + + +/* @004c2db2 file=? name=FUN_004c2db2 */ + +void __cdecl FUN_004c2db2(int param_1,char *param_2) + +{ + int *piVar1; + undefined8 uVar2; + uint uVar3; + float *pfVar4; + + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_GaugeConnectionDirectOf__005141b9,(char *)0x0); + pfVar4 = *(float **)(param_1 + 0x10); + uVar3 = *(uint *)(param_1 + 0x10); + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s____dataSource_at_005141d3,(char *)0x0); + uVar2 = FUN_004dbd4c(&DAT_00524e20,uVar3); + FUN_004dbb24((int *)uVar2,&DAT_005141e9,(char *)0x0); + piVar1 = FUN_00408270((int *)uVar2,pfVar4); + FUN_004dbb24(piVar1,&DAT_005141eb,(char *)0x0); + uVar3 = *(uint *)(param_1 + 0x10); + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s____dataDestination_at_005141ed,(char *)0x0); + uVar2 = FUN_004dbd4c(&DAT_00524e20,uVar3); + FUN_004dbb24((int *)uVar2,&DAT_00514203,(char *)0x0); + FUN_004d9c70((int *)uVar2); + FUN_0044419c(param_1,param_2); + return; +} + + + +/* @004c2eb3 file=? name=FUN_004c2eb3 */ + +void FUN_004c2eb3(void) + +{ + FUN_00415f1c(); + return; +} + + + +/* @004c2ec4 file=? name=FUN_004c2ec4 */ + +void __cdecl +FUN_004c2ec4(undefined4 param_1,undefined4 param_2,int *param_3,int param_4,char *param_5) + +{ + undefined4 *puVar1; + + (**(code **)(*param_3 + 0x24))(param_3,param_1,param_2); + puVar1 = FUN_00442aec(param_4 + 4,param_5,0); + if (puVar1 != (undefined4 *)0x0) { + (**(code **)(*param_3 + 0x58))(param_3,0,0,puVar1,0,0,puVar1[3] + -1,puVar1[4] + -1); + } + FUN_00442c12(param_4 + 4,param_5); + return; +} + + + +/* @004c2f28 file=? name=FUN_004c2f28 */ + +void __cdecl +FUN_004c2f28(undefined4 param_1,undefined4 param_2,int *param_3,int param_4,char *param_5) + +{ + int *piVar1; + + (**(code **)(*param_3 + 0x24))(param_3,param_1,param_2); + piVar1 = FUN_00442d2b(param_4 + 0x20,param_5,0); + if (piVar1 != (int *)0x0) { + (**(code **)(*param_3 + 0x5c))(param_3,1,0,piVar1,0,0,*piVar1 + -1,piVar1[1] + -1); + } + FUN_00442c12(param_4 + 4,param_5); + return; +} + + + +/* @004c2f88 file=? name=FUN_004c2f88 */ + +undefined4 FUN_004c2f88(void) + +{ + return 7; +} + + + +/* @004c2f94 file=? name=FUN_004c2f94 */ + +uint __cdecl FUN_004c2f94(int param_1) + +{ + int iVar1; + uint *puVar2; + uint local_8; + + iVar1 = FUN_0041a1a4(**(int **)(param_1 + 0xc),0x50bdb4); + if (iVar1 != 0) { + local_8 = (uint)**(uint3 **)(*(int *)(param_1 + 0x848) + 8); + for (puVar2 = &DAT_00514274; 0 < (int)puVar2[1]; puVar2 = puVar2 + 2) { + if (*puVar2 == local_8) { + return puVar2[1]; + } + } + } + return 0xff; +} + + + +/* @004c2ff8 file=? name=FUN_004c2ff8 */ + +void __cdecl +FUN_004c2ff8(int *param_1,int param_2,int param_3,int param_4,int param_5,undefined4 param_6, + int param_7) + +{ + int iVar1; + int *piVar2; + int iVar3; + int iVar4; + int local_30 [3]; + int local_24 [3]; + int local_18; + int local_14; + int local_10; + int local_c; + int local_8; + + local_8 = *(int *)(param_7 + 0xc); + local_c = *(int *)(param_7 + 0x10); + iVar4 = 0; + if (0 < param_5) { + do { + local_24[2] = param_3 - iVar4; + local_24[1] = 0; + if (param_3 - iVar4 < 0) { + piVar2 = local_24 + 1; + } + else { + piVar2 = local_24 + 2; + } + local_10 = *piVar2; + if (*piVar2 < local_c) { + local_24[0] = (param_5 - iVar4) + 1; + if (local_c < local_24[0]) { + piVar2 = &local_c; + } + else { + piVar2 = local_24; + } + local_18 = *piVar2; + if (0 < local_18) { + local_18 = local_18 + -1; + iVar3 = 0; + if (0 < param_4) { + do { + local_30[2] = param_2 - iVar3; + local_30[1] = 0; + if (param_2 - iVar3 < 0) { + piVar2 = local_30 + 1; + } + else { + piVar2 = local_30 + 2; + } + iVar1 = *piVar2; + if (iVar1 < local_8) { + local_30[0] = (param_4 - iVar3) + 1; + if (local_8 < local_30[0]) { + piVar2 = &local_8; + } + else { + piVar2 = local_30; + } + local_14 = *piVar2; + if (0 < local_14) { + local_14 = local_14 + -1; + (**(code **)(*param_1 + 0x24))(param_1,iVar3,iVar4); + (**(code **)(*param_1 + 0x58)) + (param_1,param_6,0,param_7,iVar1,local_10,local_14,local_18); + } + } + iVar3 = iVar3 + local_8; + } while (iVar3 < param_4); + } + } + } + iVar4 = iVar4 + local_c; + } while (iVar4 < param_5); + } + return; +} + + + +/* @004c3134 file=? name=FUN_004c3134 */ + +undefined4 * __cdecl +FUN_004c3134(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) + +{ + FUN_00444124(param_1,param_2); + *param_1 = &PTR_FUN_00518ea8; + param_1[4] = param_4; + param_1[5] = param_3; + return param_1; +} + + + +/* @004c3160 file=? name=FUN_004c3160 */ + +void __cdecl FUN_004c3160(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_00518ea8; + FUN_00444148(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004c318c file=? name=FUN_004c318c */ + +undefined4 FUN_004c318c(void) + +{ + return 1; +} + + + +/* @004c3198 file=? name=FUN_004c3198 */ + +void FUN_004c3198(void) + +{ + return; +} + + + +/* @004c31a0 file=? name=FUN_004c31a0 */ + +void __cdecl FUN_004c31a0(int param_1) + +{ + int iVar1; + int iVar2; + + iVar2 = 0; + if (*(int *)(*(int *)(param_1 + 0x10) + 0x134) == 1) { + iVar1 = FUN_0041bf44(*(int *)(param_1 + 0x10),3); + if (iVar1 != 0) { + iVar2 = FUN_00417ab4(iVar1); + } + } + if (iVar2 == 0) { + **(undefined4 **)(param_1 + 0x14) = 0; + } + else { + **(undefined4 **)(param_1 + 0x14) = *(undefined4 *)(iVar2 + 0x1d4); + } + return; +} + + + +/* @004c31ec file=? name=FUN_004c31ec */ + +undefined4 * __cdecl +FUN_004c31ec(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) + +{ + FUN_00444124(param_1,param_2); + *param_1 = &PTR_FUN_00518e9c; + param_1[4] = param_4; + param_1[5] = param_3; + return param_1; +} + + + +/* @004c3218 file=? name=FUN_004c3218 */ + +void __cdecl FUN_004c3218(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_00518e9c; + FUN_00444148(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004c3244 file=? name=FUN_004c3244 */ + +undefined4 FUN_004c3244(void) + +{ + return 1; +} + + + +/* @004c3250 file=? name=FUN_004c3250 */ + +void FUN_004c3250(void) + +{ + return; +} + + + +/* @004c3258 file=? name=FUN_004c3258 */ + +void __cdecl FUN_004c3258(int param_1) + +{ + int iVar1; + + iVar1 = FUN_00417ab4(*(int *)(param_1 + 0x10)); + if (iVar1 == 0) { + **(undefined4 **)(param_1 + 0x14) = 0; + return; + } + **(undefined4 **)(param_1 + 0x14) = *(undefined4 *)(iVar1 + 0x1e0); + return; +} + + + +/* @004c3288 file=? name=FUN_004c3288 */ + +undefined4 * __cdecl +FUN_004c3288(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) + +{ + FUN_00444124(param_1,param_2); + *param_1 = &PTR_FUN_00518e90; + param_1[4] = param_4; + param_1[5] = param_3; + return param_1; +} + + + +/* @004c32b4 file=? name=FUN_004c32b4 */ + +void __cdecl FUN_004c32b4(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_00518e90; + FUN_00444148(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004c32e0 file=? name=FUN_004c32e0 */ + +undefined4 FUN_004c32e0(void) + +{ + return 1; +} + + + +/* @004c32ec file=? name=FUN_004c32ec */ + +void FUN_004c32ec(void) + +{ + return; +} + + + +/* @004c32f4 file=? name=FUN_004c32f4 */ + +void __cdecl FUN_004c32f4(int param_1) + +{ + int iVar1; + + iVar1 = FUN_00417ab4(*(int *)(param_1 + 0x10)); + if (iVar1 == 0) { + **(undefined4 **)(param_1 + 0x14) = 0; + return; + } + **(undefined4 **)(param_1 + 0x14) = *(undefined4 *)(iVar1 + 0x1dc); + return; +} + + + +/* @004c3324 file=? name=FUN_004c3324 */ + +undefined4 * __cdecl +FUN_004c3324(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) + +{ + FUN_00444124(param_1,param_2); + *param_1 = &PTR_FUN_00518e84; + param_1[4] = param_4; + param_1[5] = param_3; + return param_1; +} + + + +/* @004c3350 file=? name=FUN_004c3350 */ + +void __cdecl FUN_004c3350(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_00518e84; + FUN_00444148(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004c337c file=? name=FUN_004c337c */ + +undefined4 FUN_004c337c(void) + +{ + return 1; +} + + + +/* @004c3388 file=? name=FUN_004c3388 */ + +void FUN_004c3388(void) + +{ + return; +} + + + +/* @004c3390 file=? name=FUN_004c3390 */ + +void __cdecl FUN_004c3390(int param_1) + +{ + **(undefined4 **)(param_1 + 0x14) = *(undefined4 *)(*(int *)(param_1 + 0x10) + 0x14); + return; +} + + + +/* @004c33a4 file=? name=FUN_004c33a4 */ + +undefined4 * __cdecl +FUN_004c33a4(undefined4 *param_1,undefined4 param_2,undefined4 param_3,int param_4,int param_5) + +{ + FUN_00444124(param_1,param_2); + *param_1 = &PTR_FUN_00518e78; + if (param_5 < 0) { + param_1[4] = 0; + } + else { + param_1[4] = *(undefined4 *)(*(int *)(param_4 + 0x120) + param_5 * 4); + } + param_1[5] = param_3; + return param_1; +} + + + +/* @004c33e8 file=? name=FUN_004c33e8 */ + +void __cdecl FUN_004c33e8(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_00518e78; + FUN_00444148(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004c3414 file=? name=FUN_004c3414 */ + +undefined4 FUN_004c3414(void) + +{ + return 1; +} + + + +/* @004c3428 file=? name=FUN_004c3428 */ + +void FUN_004c3428(void) + +{ + return; +} + + + +/* @004c3430 file=? name=FUN_004c3430 */ + +void __cdecl FUN_004c3430(int param_1) + +{ + undefined4 uVar1; + + if (*(int *)(param_1 + 0x10) == 0) { + **(undefined4 **)(param_1 + 0x14) = 100; + return; + } + uVar1 = FUN_004dcd94(); + **(undefined4 **)(param_1 + 0x14) = uVar1; + return; +} + + + +/* @004c346c file=? name=FUN_004c346c */ + +undefined4 * __cdecl +FUN_004c346c(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4, + undefined4 *param_5) + +{ + int iVar1; + undefined4 *puVar2; + + FUN_00444124(param_1,param_2); + *param_1 = &PTR_FUN_00518e6c; + iVar1 = 0; + puVar2 = param_1 + 6; + do { + *puVar2 = *param_5; + iVar1 = iVar1 + 1; + puVar2 = puVar2 + 1; + param_5 = param_5 + 1; + } while (iVar1 < 8); + param_1[4] = param_4; + param_1[0xe] = param_3; + return param_1; +} + + + +/* @004c34b4 file=? name=FUN_004c34b4 */ + +void __cdecl FUN_004c34b4(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_00518e6c; + FUN_00444148(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004c34e0 file=? name=FUN_004c34e0 */ + +undefined4 FUN_004c34e0(void) + +{ + return 1; +} + + + +/* @004c34ec file=? name=FUN_004c34ec */ + +void FUN_004c34ec(void) + +{ + return; +} + + + +/* @004c34f4 file=? name=FUN_004c34f4 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004c34f4(int param_1) + +{ + int iVar1; + undefined4 uVar2; + int iVar3; + int *piVar4; + int local_c; + float local_8; + + iVar3 = 0; + local_8 = 0.0; + local_c = 0; + piVar4 = (int *)(param_1 + 0x18); + do { + if (((-1 < *piVar4) && + (iVar1 = *(int *)(*(int *)(*(int *)(param_1 + 0x10) + 0x120) + *piVar4 * 4), iVar1 != 0)) && + (local_c = local_c + 1, local_8 < *(float *)(iVar1 + 0x158))) { + local_8 = *(float *)(iVar1 + 0x158); + } + iVar3 = iVar3 + 1; + piVar4 = piVar4 + 1; + } while (iVar3 < 8); + if (local_c == 0) { + **(undefined4 **)(param_1 + 0x38) = 100; + } + else { + uVar2 = FUN_004dcd94(); + **(undefined4 **)(param_1 + 0x38) = uVar2; + } + return; +} + + + +/* @004c3598 file=? name=FUN_004c3598 */ + +undefined4 * __cdecl +FUN_004c3598(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) + +{ + FUN_00444124(param_1,param_2); + *param_1 = &PTR_FUN_00518e60; + param_1[4] = param_4; + param_1[5] = param_3; + return param_1; +} + + + +/* @004c35c8 file=? name=FUN_004c35c8 */ + +void __cdecl FUN_004c35c8(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_00518e60; + FUN_00444148(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004c35f4 file=? name=FUN_004c35f4 */ + +undefined4 FUN_004c35f4(void) + +{ + return 1; +} + + + +/* @004c3608 file=? name=FUN_004c3608 */ + +void FUN_004c3608(void) + +{ + return; +} + + + +/* @004c3610 file=? name=FUN_004c3610 */ + +void __cdecl FUN_004c3610(int param_1) + +{ + undefined4 uVar1; + + if (*(int *)(param_1 + 0x10) == 0) { + **(undefined4 **)(param_1 + 0x14) = 0; + return; + } + if (*(int *)(*(int *)(param_1 + 0x10) + 0x40) == 1) { + **(undefined4 **)(param_1 + 0x14) = 100; + return; + } + uVar1 = FUN_004dcd94(); + **(undefined4 **)(param_1 + 0x14) = uVar1; + return; +} + + + +/* @004c3664 file=? name=FUN_004c3664 */ + +undefined4 * __cdecl +FUN_004c3664(undefined4 *param_1,undefined4 param_2,undefined4 param_3,int param_4) + +{ + int iVar1; + + FUN_00444124(param_1,param_2); + *param_1 = &PTR_FUN_00518e54; + if (param_4 != 0) { + iVar1 = FUN_0041a1a4(**(int **)(param_4 + 0xc),0x50e3ec); + if (iVar1 == 0) { + iVar1 = FUN_0041a1a4(**(int **)(param_4 + 0xc),0x50e604); + if (iVar1 == 0) { + param_4 = 0; + } + else { + param_1[5] = 0; + } + } + else { + param_1[5] = 1; + } + } + param_1[4] = param_4; + param_1[6] = param_3; + return param_1; +} + + + +/* @004c36d8 file=? name=FUN_004c36d8 */ + +void __cdecl FUN_004c36d8(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_00518e54; + FUN_00444148(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004c3704 file=? name=FUN_004c3704 */ + +undefined4 FUN_004c3704(void) + +{ + return 1; +} + + + +/* @004c3718 file=? name=FUN_004c3718 */ + +void FUN_004c3718(void) + +{ + return; +} + + + +/* @004c3720 file=? name=FUN_004c3720 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004c3720(int param_1) + +{ + undefined4 uVar1; + + if (*(int *)(param_1 + 0x10) == 0) { + **(undefined4 **)(param_1 + 0x18) = 100; + } + else if (*(int *)(*(int *)(param_1 + 0x10) + 0x40) == 1) { + **(undefined4 **)(param_1 + 0x18) = 100; + } + else { + if (*(int *)(param_1 + 0x14) == 0) { + FUN_00417ab4(*(int *)(param_1 + 0x10) + 0x114); + } + uVar1 = FUN_004dcd94(); + **(undefined4 **)(param_1 + 0x18) = uVar1; + } + return; +} + + + +/* @004c37dc file=? name=FUN_004c37dc */ + +undefined4 * __cdecl +FUN_004c37dc(undefined4 *param_1,undefined4 param_2,undefined4 param_3,int param_4, + undefined4 param_5,int param_6,undefined4 param_7,char *param_8,char *param_9, + undefined4 param_10) + +{ + undefined4 uVar1; + char *pcVar2; + int iVar3; + int *piVar4; + undefined4 *puVar5; + int iVar6; + + FUN_00444308(param_1,param_2,param_3,param_4,param_5,param_10); + *param_1 = &PTR_FUN_00518e10; + uVar1 = FUN_004700ac(param_8); + param_1[0x12] = uVar1; + pcVar2 = (char *)FUN_004700ac(param_9); + param_1[0x13] = pcVar2; + iVar3 = FUN_004d4b58((char *)param_1[0x12],pcVar2); + if (iVar3 == 0) { + param_1[0x14] = 0; + } + else { + param_1[0x14] = 1; + } + iVar3 = *(int *)(param_4 + 0x4c); + iVar6 = 0; + puVar5 = param_1 + 0x12; + do { + piVar4 = FUN_00442f6a(iVar3 + 0x3c,(char *)*puVar5,0); + if (piVar4 == (int *)0x0) { + pcVar2 = (char *)*puVar5; + FUN_004dbb24(&DAT_00524e20,s_ColorMapper_cannot_find_palette_f_005185b6,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,pcVar2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_005185dd,(char *)0x0); + } + iVar6 = iVar6 + 1; + puVar5 = puVar5 + 1; + } while (iVar6 < 2); + param_1[0x17] = param_7; + param_1[0x18] = 0; + uVar1 = FUN_00447f84(param_4,param_6); + param_1[0x1a] = uVar1; + return param_1; +} + + + +/* @004c38dc file=? name=FUN_004c38dc */ + +void __cdecl FUN_004c38dc(int *param_1,byte param_2) + +{ + int iVar1; + int *piVar2; + int iVar3; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_00518e10; + iVar3 = 0; + piVar2 = param_1 + 0x12; + iVar1 = *(int *)(param_1[7] + 0x4c); + do { + FUN_00443090(iVar1 + 0x3c,(char *)*piVar2); + FUN_004022e8((int *)*piVar2); + *piVar2 = 0; + iVar3 = iVar3 + 1; + piVar2 = piVar2 + 1; + } while (iVar3 < 2); + FUN_00444360(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004c3944 file=? name=FUN_004c3944 */ + +void FUN_004c3944(void) + +{ + FUN_004443a4(); + return; +} + + + +/* @004c3954 file=? name=FUN_004c3954 */ + +void FUN_004c3954(void) + +{ + return; +} + + + +/* @004c395c file=? name=FUN_004c395c */ + +void __cdecl FUN_004c395c(int param_1) + +{ + *(undefined4 *)(param_1 + 0x54) = 0xffffffff; + *(undefined4 *)(param_1 + 0x58) = 0xffffffff; + *(undefined1 *)(param_1 + 100) = 0xff; + *(undefined1 *)(param_1 + 0x65) = 0xff; + *(undefined1 *)(param_1 + 0x66) = 0xff; + return; +} + + + +/* @004c3980 file=? name=FUN_004c3980 */ + +void __cdecl FUN_004c3980(int param_1) + +{ + undefined2 uVar1; + int iVar2; + int iVar3; + bool bVar4; + int *piVar5; + int *piVar6; + undefined2 local_103; + char local_101; + int local_c [2]; + + local_c[1] = 0xff; + piVar6 = (int *)(param_1 + 0x54); + if (0xfe < *piVar6) { + piVar6 = local_c + 1; + } + piVar5 = (int *)(param_1 + 0x54); + *(int *)(param_1 + 0x54) = *piVar6; + local_c[0] = 0; + if (*piVar5 < 1) { + piVar5 = local_c; + } + *(int *)(param_1 + 0x54) = *piVar5; + if (*(int *)(param_1 + 0x50) == 0) { + if (*(int *)(param_1 + 0x54) == *(int *)(param_1 + 0x58)) { + return; + } + *(int *)(param_1 + 0x58) = *(int *)(param_1 + 0x54); + } + else { + *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) + 1; + if (1 < *(int *)(param_1 + 0x60)) { + *(undefined4 *)(param_1 + 0x60) = 0; + } + } + iVar2 = *(int *)(*(int *)(param_1 + 0x1c) + 0x4c); + piVar6 = FUN_00442f6a(iVar2 + 0x3c,*(char **)(param_1 + 0x48 + *(int *)(param_1 + 0x60) * 4),0); + uVar1 = local_103; + if (piVar6 != (int *)0x0) { + iVar3 = *(int *)(param_1 + 0x54) * 3; + uVar1 = *(undefined2 *)((int)piVar6 + iVar3 + 4); + local_101 = *(char *)((int)piVar6 + iVar3 + 6); + local_103._0_1_ = (char)uVar1; + local_103._1_1_ = (char)((ushort)uVar1 >> 8); + if (((*(char *)(param_1 + 100) == (char)local_103) && + (*(char *)(param_1 + 0x65) == local_103._1_1_)) && (*(char *)(param_1 + 0x66) == local_101)) + { + bVar4 = false; + } + else { + bVar4 = true; + } + if (bVar4) { + *(char *)(param_1 + 100) = (char)local_103; + *(char *)(param_1 + 0x65) = local_103._1_1_; + *(char *)(param_1 + 0x66) = local_101; + local_103 = uVar1; + (**(code **)(**(int **)(param_1 + 0x68) + 0xc)) + (*(int **)(param_1 + 0x68),&local_103,*(undefined4 *)(param_1 + 0x5c)); + uVar1 = local_103; + } + } + local_103 = uVar1; + FUN_00443090(iVar2 + 0x3c,*(char **)(param_1 + 0x48 + *(int *)(param_1 + 0x60) * 4)); + return; +} + + + +/* @004c3aa4 file=? name=FUN_004c3aa4 */ + +undefined4 __cdecl +FUN_004c3aa4(int param_1,undefined4 param_2,undefined4 param_3,int param_4,int param_5) + +{ + uint *puVar1; + int iVar2; + int *piVar3; + undefined4 uVar4; + uint *local_8; + + puVar1 = (uint *)FUN_00402298(0x10); + if (puVar1 == (uint *)0x0) { + local_8 = (uint *)0x0; + } + else { + local_8 = FUN_00402460(puVar1,&DAT_00514414); + } + local_8[3] = local_8[3] + 1; + iVar2 = FUN_0042076c(param_4,(int *)&local_8); + if (iVar2 < 0) { + FUN_004dbb24(&DAT_00524e20,s_Warning__damage_zone___005185e9,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,(char *)local_8[2],(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s___not_found__00518600,(char *)0x0); + } + piVar3 = (int *)FUN_00402298(0x70); + if (piVar3 != (int *)0x0) { + FUN_004c3b98(piVar3,DAT_005142c0,DAT_00514304,param_5,0,param_1,param_4,DAT_00514348, + &DAT_0051438c,&DAT_005143d0,iVar2,s_ColorMapperArmor_00518489); + } + uVar4 = 1; + puVar1 = local_8 + 3; + *puVar1 = *puVar1 - 1; + if (*puVar1 == 0) { + FUN_004024d8((int *)local_8,3); + } + return uVar4; +} + + + +/* @004c3b98 file=? name=FUN_004c3b98 */ + +int * __cdecl +FUN_004c3b98(int *param_1,undefined4 param_2,undefined4 param_3,int param_4,undefined4 param_5, + int param_6,int param_7,undefined4 param_8,char *param_9,char *param_10,int param_11, + undefined4 param_12) + +{ + undefined4 *puVar1; + + FUN_004c37dc(param_1,param_2,param_3,param_4,param_5,param_6,param_8,param_9,param_10,param_12); + *param_1 = (int)&PTR_FUN_00518dcc; + param_1[0x1b] = 0; + puVar1 = (undefined4 *)FUN_00402298(0x18); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_004c33a4(puVar1,0,param_1 + 0x15,param_7,param_11); + } + (**(code **)(*param_1 + 0x34))(param_1,puVar1); + return param_1; +} + + + +/* @004c3c14 file=? name=FUN_004c3c14 */ + +void FUN_004c3c14(void) + +{ + return; +} + + + +/* @004c3c1c file=? name=FUN_004c3c1c */ + +void __cdecl FUN_004c3c1c(int param_1) + +{ + if (*(int *)(param_1 + 0x6c) != 0) { + *(undefined4 *)(param_1 + 0x54) = 100; + } + FUN_004c3980(param_1); + return; +} + + + +/* @004c3c38 file=? name=FUN_004c3c38 */ + +void __cdecl FUN_004c3c38(int param_1,undefined4 param_2) + +{ + *(undefined4 *)(param_1 + 0x6c) = param_2; + return; +} + + + +/* @004c3c48 file=? name=FUN_004c3c48 */ + +undefined4 __cdecl +FUN_004c3c48(int param_1,undefined4 param_2,undefined4 param_3,int param_4,int param_5) + +{ + uint *puVar1; + int iVar2; + undefined4 uVar3; + int *piVar4; + int iVar5; + int local_34 [8]; + char *local_14; + uint *local_10; + int local_c; + undefined *local_8; + + iVar5 = 0; + local_8 = &DAT_00514704; + local_c = 1; + piVar4 = local_34; + do { + local_14 = local_8 + iVar5 * 0x44 + 0x158; + puVar1 = (uint *)FUN_00402298(0x10); + if (puVar1 == (uint *)0x0) { + local_10 = (uint *)0x0; + } + else { + local_10 = FUN_00402460(puVar1,local_14); + } + local_10[3] = local_10[3] + 1; + iVar2 = FUN_0042076c(param_4,(int *)&local_10); + *piVar4 = iVar2; + if (iVar2 != 0) { + local_c = 0; + } + puVar1 = local_10 + 3; + *puVar1 = *puVar1 - 1; + if (*puVar1 == 0) { + FUN_004024d8((int *)local_10,3); + } + iVar5 = iVar5 + 1; + piVar4 = piVar4 + 1; + } while (iVar5 < 8); + if (local_c == 0) { + piVar4 = (int *)FUN_00402298(0x6c); + if (piVar4 != (int *)0x0) { + FUN_004c3d60(piVar4,*(undefined4 *)(local_8 + 4),*(undefined4 *)(local_8 + 0x48),param_5,0, + param_1,param_4,*(undefined4 *)(local_8 + 0x8c),local_8 + 0xd0,local_8 + 0x114, + local_34,s_ColorMapperMultiArmor_0051849a); + } + uVar3 = 1; + } + else { + FUN_004dbb24(&DAT_00524e20,s_No_Damage_zones_found__00518624,(char *)0x0); + uVar3 = 0; + } + return uVar3; +} + + + +/* @004c3d60 file=? name=FUN_004c3d60 */ + +int * __cdecl +FUN_004c3d60(int *param_1,undefined4 param_2,undefined4 param_3,int param_4,undefined4 param_5, + int param_6,undefined4 param_7,undefined4 param_8,char *param_9,char *param_10, + undefined4 *param_11,undefined4 param_12) + +{ + undefined4 *puVar1; + + FUN_004c37dc(param_1,param_2,param_3,param_4,param_5,param_6,param_8,param_9,param_10,param_12); + *param_1 = (int)&PTR_FUN_00518d88; + puVar1 = (undefined4 *)FUN_00402298(0x3c); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_004c346c(puVar1,0,param_1 + 0x15,param_7,param_11); + } + (**(code **)(*param_1 + 0x34))(param_1,puVar1); + return param_1; +} + + + +/* @004c3dd4 file=? name=FUN_004c3dd4 */ + +void FUN_004c3dd4(void) + +{ + return; +} + + + +/* @004c3ddc file=? name=FUN_004c3ddc */ + +undefined4 __cdecl +FUN_004c3ddc(int param_1,undefined4 param_2,undefined4 param_3,int param_4,int param_5) + +{ + int *piVar1; + + piVar1 = (int *)FUN_00402298(0x6c); + if (piVar1 != (int *)0x0) { + FUN_004c3e40(piVar1,DAT_00514b50,DAT_00514b94,param_5,0,param_1,param_4,DAT_00514bd8, + &DAT_00514c1c,&DAT_00514c60,&DAT_00514ca4,s_ColorMapperCritical_005184b0); + } + return 1; +} + + + +/* @004c3e40 file=? name=FUN_004c3e40 */ + +int * __cdecl +FUN_004c3e40(int *param_1,undefined4 param_2,undefined4 param_3,int param_4,undefined4 param_5, + int param_6,int param_7,undefined4 param_8,char *param_9,char *param_10,char *param_11, + undefined4 param_12) + +{ + int iVar1; + undefined4 *puVar2; + + FUN_004c37dc(param_1,param_2,param_3,param_4,param_5,param_6,param_8,param_9,param_10,param_12); + *param_1 = (int)&PTR_FUN_00518d44; + iVar1 = FUN_0041f98c(param_7,param_11); + if (iVar1 == 0) { + FUN_004dbb24(&DAT_00524e20,s_ColorMapperCritical_warning__sub_00518643,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,param_11,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s___does_not_exist_0051866c,(char *)0x0); + } + puVar2 = (undefined4 *)FUN_00402298(0x18); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_004c3598(puVar2,0,param_1 + 0x15,iVar1); + } + (**(code **)(*param_1 + 0x34))(param_1,puVar2); + return param_1; +} + + + +/* @004c3f00 file=? name=FUN_004c3f00 */ + +void FUN_004c3f00(void) + +{ + return; +} + + + +/* @004c3f08 file=? name=FUN_004c3f08 */ + +undefined4 __cdecl +FUN_004c3f08(int param_1,undefined4 param_2,undefined4 param_3,int param_4,int param_5) + +{ + int *piVar1; + + piVar1 = (int *)FUN_00402298(0x6c); + if (piVar1 != (int *)0x0) { + FUN_004c3f6c(piVar1,DAT_00514f98,DAT_00514fdc,param_5,0,param_1,param_4,DAT_00515020, + &DAT_00515064,&DAT_005150a8,&DAT_005150ec,s_ColorMapperHeat_005184c4); + } + return 1; +} + + + +/* @004c3f6c file=bt_l4/btl4gaug.cpp name=FUN_004c3f6c */ + +int * __cdecl +FUN_004c3f6c(int *param_1,undefined4 param_2,undefined4 param_3,int param_4,undefined4 param_5, + int param_6,int param_7,undefined4 param_8,char *param_9,char *param_10,char *param_11, + undefined4 param_12) + +{ + int iVar1; + int iVar2; + undefined4 *puVar3; + + FUN_004c37dc(param_1,param_2,param_3,param_4,param_5,param_6,param_8,param_9,param_10,param_12); + *param_1 = (int)&PTR_FUN_00518d00; + iVar1 = FUN_0041f98c(param_7,param_11); + if (iVar1 == 0) { + FUN_004dbb24(&DAT_00524e20,s_ColorMapperHeat_warning__subsyst_00518685,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,param_11,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s___does_not_exist_005186aa,(char *)0x0); + } + else { + iVar2 = FUN_0041a1a4(**(int **)(iVar1 + 0xc),0x50e3ec); + if ((iVar2 == 0) && (iVar2 = FUN_0041a1a4(**(int **)(iVar1 + 0xc),0x50e604), iVar2 == 0)) { + FUN_0040385c(s_Bad_subsystem_type_005186bc,s_d__tesla_bt_bt_l4_BTL4GAUG_CPP_005186cf,0x68a); + } + } + puVar3 = (undefined4 *)FUN_00402298(0x1c); + if (puVar3 == (undefined4 *)0x0) { + puVar3 = (undefined4 *)0x0; + } + else { + puVar3 = FUN_004c3664(puVar3,0,param_1 + 0x15,iVar1); + } + (**(code **)(*param_1 + 0x34))(param_1,puVar3); + return param_1; +} + + + +/* @004c4074 file=? name=FUN_004c4074 */ + +void FUN_004c4074(void) + +{ + return; +} + + + +/* @004c407c file=? name=FUN_004c407c */ + +bool __cdecl FUN_004c407c(int param_1,int param_2,int param_3,undefined4 param_4,int param_5) + +{ + int iVar1; + int *piVar2; + undefined4 *puVar3; + + piVar2 = (int *)FUN_00402298(0xb8); + if (piVar2 != (int *)0x0) { + FUN_004c4170(piVar2,DAT_005153e0,DAT_00515424,param_5,0,param_1,param_2,param_3, + param_2 + DAT_00515468,param_3 + DAT_0051546c,&DAT_005154ac,DAT_005154f0, + DAT_00515534,DAT_00515578,DAT_005155bc,DAT_00515600,s_HorizTwoPartBar_005184d4); + } + iVar1 = *(int *)(param_5 + 0x4c); + puVar3 = FUN_00442aec(iVar1 + 4,&DAT_005154ac,0); + if (puVar3 != (undefined4 *)0x0) { + FUN_00442c12(iVar1 + 4,&DAT_005154ac); + } + else { + FUN_004dbb24(&DAT_00524e20,s_HorizTwoPartBar__Missing_image__005186f7,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_005154ac,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_00518717,(char *)0x0); + } + return puVar3 != (undefined4 *)0x0; +} + + + +/* @004c4170 file=? name=FUN_004c4170 */ + +int * __cdecl +FUN_004c4170(int *param_1,undefined4 param_2,undefined4 param_3,int param_4,undefined4 param_5, + int param_6,int param_7,int param_8,int param_9,int param_10,char *param_11,int param_12 + ,int param_13,undefined4 param_14,undefined4 param_15,undefined4 param_16, + undefined4 param_17) + +{ + int iVar1; + undefined4 *puVar2; + + FUN_00444818(param_1,param_2,param_3,param_4,param_5,param_6,param_17); + *param_1 = (int)&PTR_FUN_00518cbc; + iVar1 = FUN_004700ac(param_11); + param_1[0x27] = iVar1; + FUN_00442aec(*(int *)(param_4 + 0x4c) + 4,(char *)param_1[0x27],0); + (**(code **)(param_1[0x12] + 8))(param_1 + 0x12,param_7,param_8,param_9,param_10); + param_1[0x28] = param_12; + param_1[0x29] = param_13; + param_1[0x2a] = param_9 - param_7; + param_1[0x2b] = (param_10 - param_8) + -1; + puVar2 = (undefined4 *)FUN_00402298(0x18); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_00474855(puVar2,0,param_1 + 0x24,param_14); + } + (**(code **)(*param_1 + 0x34))(param_1,puVar2); + puVar2 = (undefined4 *)FUN_00402298(0x18); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_00474855(puVar2,0,param_1 + 0x25,param_15); + } + (**(code **)(*param_1 + 0x34))(param_1,puVar2); + puVar2 = (undefined4 *)FUN_00402298(0x18); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_00474855(puVar2,0,param_1 + 0x26,param_16); + } + (**(code **)(*param_1 + 0x34))(param_1,puVar2); + return param_1; +} + + + +/* @004c42b0 file=? name=FUN_004c42b0 */ + +void __cdecl FUN_004c42b0(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_00518cbc; + FUN_00442c12(*(int *)(param_1[7] + 0x4c) + 4,(char *)param_1[0x27]); + FUN_004022e8((int *)param_1[0x27]); + param_1[0x27] = 0; + FUN_00444870(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004c430c file=? name=FUN_004c430c */ + +void FUN_004c430c(void) + +{ + FUN_004448ac(); + return; +} + + + +/* @004c431c file=? name=FUN_004c431c */ + +void FUN_004c431c(void) + +{ + return; +} + + + +/* @004c4324 file=? name=FUN_004c4324 */ + +void __cdecl FUN_004c4324(int param_1) + +{ + *(undefined4 *)(param_1 + 0xb4) = 0; + *(undefined4 *)(param_1 + 0xb0) = *(undefined4 *)(param_1 + 0xa8); + return; +} + + + +/* @004c4340 file=? name=FUN_004c4340 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004c4340(int param_1) + +{ + int iVar1; + undefined4 *puVar2; + int *piVar3; + int *piVar4; + int local_14 [3]; + int local_8; + + if (_DAT_004c452c <= *(float *)(param_1 + 0x90)) { + if (*(float *)(param_1 + 0x98) < *(float *)(param_1 + 0x90)) { + *(undefined4 *)(param_1 + 0x90) = *(undefined4 *)(param_1 + 0x98); + } + } + else { + *(undefined4 *)(param_1 + 0x90) = 0; + } + local_8 = FUN_004dcd94(); + local_14[2] = FUN_004dcd94(); + local_14[1] = 0; + if (local_8 < 0) { + piVar3 = local_14 + 1; + } + else { + piVar3 = &local_8; + } + if (*(int *)(param_1 + 0xa8) <= *piVar3) { + piVar3 = (int *)(param_1 + 0xa8); + } + local_8 = *piVar3; + local_14[0] = 0; + if (local_14[2] < 0) { + piVar4 = local_14; + } + else { + piVar4 = local_14 + 2; + } + if (*(int *)(param_1 + 0xa8) <= *piVar4) { + piVar4 = (int *)(param_1 + 0xa8); + } + local_14[2] = *piVar4; + if ((*piVar3 != *(int *)(param_1 + 0xb4)) || (local_14[2] != *(int *)(param_1 + 0xb0))) { + piVar3 = (int *)(param_1 + 0x48); + (**(code **)(*(int *)(param_1 + 0x48) + 0x18))(piVar3,*(undefined4 *)(param_1 + 0xa0)); + iVar1 = *(int *)(*(int *)(param_1 + 0x1c) + 0x4c); + puVar2 = FUN_00442aec(iVar1 + 4,*(char **)(param_1 + 0x9c),0); + FUN_004c2ff8(piVar3,0,0,local_8 + -1,*(int *)(param_1 + 0xac),*(undefined4 *)(param_1 + 0xa4), + (int)puVar2); + FUN_00442c12(iVar1 + 4,*(char **)(param_1 + 0x9c)); + if (local_8 < local_14[2]) { + (**(code **)(*(int *)(param_1 + 0x48) + 0x24))(piVar3,local_8,0); + (**(code **)(*(int *)(param_1 + 0x48) + 0x48)) + (piVar3,local_14[2] + -1,*(undefined4 *)(param_1 + 0xac)); + } + if (local_14[2] < *(int *)(param_1 + 0xa8)) { + (**(code **)(*(int *)(param_1 + 0x48) + 0x18))(piVar3,*(undefined4 *)(param_1 + 0xa4)); + (**(code **)(*(int *)(param_1 + 0x48) + 0x24))(piVar3,local_14[2],0); + (**(code **)(*(int *)(param_1 + 0x48) + 0x48)) + (piVar3,*(undefined4 *)(param_1 + 0xa8),*(undefined4 *)(param_1 + 0xac)); + } + *(int *)(param_1 + 0xb4) = local_8; + *(int *)(param_1 + 0xb0) = local_14[2]; + } + return; +} + + + +/* @004c462c file=? name=FUN_004c462c */ + +bool __cdecl FUN_004c462c(int param_1,int param_2,int param_3,undefined4 param_4,int param_5) + +{ + int iVar1; + int *piVar2; + undefined4 *puVar3; + + piVar2 = (int *)FUN_00402298(0xbc); + if (piVar2 != (int *)0x0) { + FUN_004c4724(piVar2,DAT_00515c70,DAT_00515cb4,param_5,0,param_1,param_2,param_3, + param_2 + DAT_00515cf8,param_3 + DAT_00515cfc,&DAT_00515d3c,DAT_00515d80, + DAT_00515dc4,DAT_00515e08,DAT_00515e4c,DAT_00515e90,&DAT_00514270, + s_VertTwoPartBar_005184e4); + } + iVar1 = *(int *)(param_5 + 0x4c); + puVar3 = FUN_00442aec(iVar1 + 4,&DAT_00515d3c,0); + if (puVar3 != (undefined4 *)0x0) { + FUN_00442c12(iVar1 + 4,&DAT_00515d3c); + } + else { + FUN_004dbb24(&DAT_00524e20,s_VertTwoPartBarNormalized__Missin_00518756,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_00515d3c,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_0051877f,(char *)0x0); + } + return puVar3 != (undefined4 *)0x0; +} + + + +/* @004c4724 file=? name=FUN_004c4724 */ + +int * __cdecl +FUN_004c4724(int *param_1,undefined4 param_2,undefined4 param_3,int param_4,undefined4 param_5, + int param_6,int param_7,int param_8,int param_9,int param_10,char *param_11,int param_12 + ,int param_13,int param_14,undefined4 param_15,undefined4 param_16,undefined4 param_17, + undefined4 param_18) + +{ + int iVar1; + undefined4 *puVar2; + + FUN_00444818(param_1,param_2,param_3,param_4,param_5,param_6,param_18); + *param_1 = (int)&PTR_FUN_00518c78; + iVar1 = FUN_004700ac(param_11); + param_1[0x24] = iVar1; + FUN_00442aec(*(int *)(param_4 + 0x4c) + 4,(char *)param_1[0x24],0); + (**(code **)(param_1[0x12] + 8))(param_1 + 0x12,param_7,param_8,param_9,param_10); + param_1[0x25] = param_12; + param_1[0x26] = param_13; + param_1[0x27] = param_14; + param_1[0x28] = (param_9 - param_7) + -1; + param_1[0x29] = param_10 - param_8; + puVar2 = (undefined4 *)FUN_00402298(0x18); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_00474855(puVar2,0,param_1 + 0x2c,param_15); + } + (**(code **)(*param_1 + 0x34))(param_1,puVar2); + puVar2 = (undefined4 *)FUN_00402298(0x18); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_00474855(puVar2,0,param_1 + 0x2d,param_16); + } + (**(code **)(*param_1 + 0x34))(param_1,puVar2); + puVar2 = (undefined4 *)FUN_00402298(0x18); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_00474855(puVar2,0,param_1 + 0x2e,param_17); + } + (**(code **)(*param_1 + 0x34))(param_1,puVar2); + return param_1; +} + + + +/* @004c486c file=? name=FUN_004c486c */ + +void __cdecl FUN_004c486c(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_00518c78; + FUN_00442c12(*(int *)(param_1[7] + 0x4c) + 4,(char *)param_1[0x24]); + FUN_004022e8((int *)param_1[0x24]); + param_1[0x24] = 0; + FUN_00444870(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004c48c8 file=? name=FUN_004c48c8 */ + +void FUN_004c48c8(void) + +{ + FUN_004448ac(); + return; +} + + + +/* @004c48d8 file=? name=FUN_004c48d8 */ + +void FUN_004c48d8(void) + +{ + return; +} + + + +/* @004c48e0 file=? name=FUN_004c48e0 */ + +void __cdecl FUN_004c48e0(int param_1) + +{ + *(undefined4 *)(param_1 + 0xac) = 0; + *(undefined4 *)(param_1 + 0xa8) = *(undefined4 *)(param_1 + 0xa0); + return; +} + + + +/* @004c48fc file=? name=FUN_004c48fc */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004c48fc(int param_1) + +{ + int iVar1; + undefined4 *puVar2; + int *piVar3; + int *piVar4; + int local_14 [3]; + int local_8; + + if (_DAT_004c4b00 <= *(float *)(param_1 + 0xb0)) { + if (*(float *)(param_1 + 0xb8) < *(float *)(param_1 + 0xb0)) { + *(undefined4 *)(param_1 + 0xb0) = *(undefined4 *)(param_1 + 0xb8); + } + } + else { + *(undefined4 *)(param_1 + 0xb0) = 0; + } + local_8 = FUN_004dcd94(); + local_14[2] = FUN_004dcd94(); + local_14[1] = 0; + if (local_8 < 0) { + piVar3 = local_14 + 1; + } + else { + piVar3 = &local_8; + } + if (*(int *)(param_1 + 0xa4) <= *piVar3) { + piVar3 = (int *)(param_1 + 0xa4); + } + local_8 = *piVar3; + local_14[0] = 0; + if (local_14[2] < 0) { + piVar4 = local_14; + } + else { + piVar4 = local_14 + 2; + } + if (*(int *)(param_1 + 0xa4) <= *piVar4) { + piVar4 = (int *)(param_1 + 0xa4); + } + local_14[2] = *piVar4; + if ((*piVar3 != *(int *)(param_1 + 0xac)) || (local_14[2] != *(int *)(param_1 + 0xa8))) { + iVar1 = *(int *)(*(int *)(param_1 + 0x1c) + 0x4c); + puVar2 = FUN_00442aec(iVar1 + 4,*(char **)(param_1 + 0x90),0); + piVar3 = (int *)(param_1 + 0x48); + (**(code **)(*(int *)(param_1 + 0x48) + 0x18))(piVar3,*(undefined4 *)(param_1 + 0x94)); + FUN_004c2ff8(piVar3,0,0,*(int *)(param_1 + 0xa0),local_8 + -1,*(undefined4 *)(param_1 + 0x9c), + (int)puVar2); + FUN_00442c12(iVar1 + 4,*(char **)(param_1 + 0x90)); + if (local_8 < local_14[2]) { + (**(code **)(*(int *)(param_1 + 0x48) + 0x18))(piVar3,*(undefined4 *)(param_1 + 0x98)); + (**(code **)(*(int *)(param_1 + 0x48) + 0x24))(piVar3,0,local_8); + (**(code **)(*(int *)(param_1 + 0x48) + 0x48)) + (piVar3,*(undefined4 *)(param_1 + 0xa0),local_14[2] + -1); + } + if (local_14[2] < *(int *)(param_1 + 0xa4)) { + (**(code **)(*(int *)(param_1 + 0x48) + 0x18))(piVar3,*(undefined4 *)(param_1 + 0x9c)); + (**(code **)(*(int *)(param_1 + 0x48) + 0x24))(piVar3,0,local_14[2]); + (**(code **)(*(int *)(param_1 + 0x48) + 0x48)) + (piVar3,*(undefined4 *)(param_1 + 0xa0),*(undefined4 *)(param_1 + 0xa4)); + } + *(int *)(param_1 + 0xac) = local_8; + *(int *)(param_1 + 0xa8) = local_14[2]; + } + return; +} + + + +/* @004c4b84 file=? name=FUN_004c4b84 */ + +int * __cdecl +FUN_004c4b84(int *param_1,undefined4 param_2,undefined4 param_3,int param_4,undefined4 param_5, + int param_6,int param_7,int param_8,int param_9,int param_10,int param_11,int param_12, + int param_13,undefined4 param_14,undefined4 param_15) + +{ + int *piVar1; + undefined4 *puVar2; + + FUN_00444818(param_1,param_2,param_3,param_4,param_5,param_6,param_15); + *param_1 = (int)&PTR_FUN_00518c34; + piVar1 = param_1 + 0x12; + (**(code **)(param_1[0x12] + 8))(piVar1,param_7,param_8,param_9,param_10); + (**(code **)(param_1[0x12] + 0xc))(piVar1,3); + (**(code **)(param_1[0x12] + 0x18))(piVar1,param_11); + param_1[0x29] = param_11; + param_1[0x2a] = param_12; + param_1[0x27] = param_13; + param_1[0x25] = (param_9 - param_7) + -1; + param_1[0x26] = param_10 - param_8; + param_1[0x28] = (param_10 - param_8) - param_1[0x27]; + puVar2 = (undefined4 *)FUN_00402298(0x18); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_00474855(puVar2,0,param_1 + 0x2b,param_14); + } + (**(code **)(*param_1 + 0x34))(param_1,puVar2); + return param_1; +} + + + +/* @004c4c68 file=? name=FUN_004c4c68 */ + +void __cdecl FUN_004c4c68(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_00518c34; + FUN_00444870(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004c4c94 file=? name=FUN_004c4c94 */ + +void FUN_004c4c94(void) + +{ + FUN_004448ac(); + return; +} + + + +/* @004c4ca4 file=? name=FUN_004c4ca4 */ + +void FUN_004c4ca4(void) + +{ + return; +} + + + +/* @004c4cac file=? name=FUN_004c4cac */ + +void __cdecl FUN_004c4cac(int param_1) + +{ + *(undefined4 *)(param_1 + 0x90) = 0xffffffff; + return; +} + + + +/* @004c4cc0 file=? name=FUN_004c4cc0 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004c4cc0(int param_1) + +{ + int iVar1; + + if (_DAT_004c4d3c <= *(float *)(param_1 + 0xac)) { + if (_DAT_004c4d40 < *(float *)(param_1 + 0xac)) { + *(undefined4 *)(param_1 + 0xac) = 0x3f800000; + } + } + else { + *(undefined4 *)(param_1 + 0xac) = 0; + } + iVar1 = FUN_004dcd94(); + if (iVar1 != *(int *)(param_1 + 0x90)) { + FUN_004c4d48(param_1); + *(int *)(param_1 + 0x90) = iVar1; + FUN_004c4d48(param_1); + } + return; +} + + + +/* @004c4d48 file=? name=FUN_004c4d48 */ + +void __cdecl FUN_004c4d48(int param_1) + +{ + if (-1 < *(int *)(param_1 + 0x90)) { + (**(code **)(*(int *)(param_1 + 0x48) + 0x24))(param_1 + 0x48,0,*(int *)(param_1 + 0x90)); + (**(code **)(*(int *)(param_1 + 0x48) + 0x4c)) + (param_1 + 0x48,*(undefined4 *)(param_1 + 0x94),*(undefined4 *)(param_1 + 0x9c)); + } + return; +} + + + +/* @004c4d88 file=? name=FUN_004c4d88 */ + +undefined4 * __cdecl +FUN_004c4d88(undefined4 *param_1,undefined4 param_2,undefined4 param_3,int param_4, + undefined4 param_5,int param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9, + char *param_10,undefined4 param_11,undefined4 param_12,int param_13,int param_14, + undefined4 param_15) + +{ + undefined4 uVar1; + undefined4 *puVar2; + int *piVar3; + + FUN_00444818(param_1,param_2,param_3,param_4,param_5,param_6,param_15); + *param_1 = &PTR_FUN_00518bf0; + param_1[0x26] = param_11; + param_1[0x27] = param_12; + param_1[0x28] = param_13; + param_1[0x24] = param_9; + uVar1 = FUN_004700ac(param_10); + param_1[0x25] = uVar1; + if (param_1[0x24] == 0) { + piVar3 = FUN_00442d2b(*(int *)(param_4 + 0x4c) + 0x20,(char *)param_1[0x25],0); + param_1[0x29] = *piVar3 / param_13; + param_1[0x2a] = piVar3[1] / param_14; + } + else { + puVar2 = FUN_00442aec(*(int *)(param_4 + 0x4c) + 4,(char *)param_1[0x25],0); + param_1[0x29] = (int)puVar2[3] / param_13; + param_1[0x2a] = (int)puVar2[4] / param_14; + } + (**(code **)(param_1[0x12] + 0x10))(param_1 + 0x12,param_7,param_8); + return param_1; +} + + + +/* @004c4e7c file=? name=FUN_004c4e7c */ + +void __cdecl FUN_004c4e7c(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_00518bf0; + if (param_1[0x24] == 0) { + FUN_00442e51(*(int *)(param_1[7] + 0x4c) + 0x20,(char *)param_1[0x25]); + } + else { + FUN_00442c12(*(int *)(param_1[7] + 0x4c) + 4,(char *)param_1[0x25]); + } + FUN_004022e8((int *)param_1[0x25]); + param_1[0x25] = 0; + FUN_00444870(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004c4efc file=? name=FUN_004c4efc */ + +void FUN_004c4efc(void) + +{ + FUN_004448ac(); + return; +} + + + +/* @004c4f0c file=? name=FUN_004c4f0c */ + +void FUN_004c4f0c(void) + +{ + return; +} + + + +/* @004c4f14 file=? name=FUN_004c4f14 */ + +void __cdecl FUN_004c4f14(int param_1) + +{ + *(undefined4 *)(param_1 + 0xb0) = 0xffffffff; + return; +} + + + +/* @004c4f28 file=? name=FUN_004c4f28 */ + +void __cdecl FUN_004c4f28(int param_1) + +{ + int iVar1; + undefined4 *puVar2; + int *piVar3; + int iVar4; + int iVar5; + int iVar6; + int iVar7; + + if (*(int *)(param_1 + 0xac) != *(int *)(param_1 + 0xb0)) { + *(int *)(param_1 + 0xb0) = *(int *)(param_1 + 0xac); + iVar7 = *(int *)(param_1 + 0xa0); + if (iVar7 == 1) { + iVar6 = 0; + iVar7 = *(int *)(param_1 + 0xac); + } + else { + iVar6 = *(int *)(param_1 + 0xac) % iVar7; + iVar7 = *(int *)(param_1 + 0xac) / iVar7; + } + iVar6 = iVar6 * *(int *)(param_1 + 0xa4); + iVar4 = *(int *)(param_1 + 0xa4) + iVar6 + -1; + iVar7 = iVar7 * *(int *)(param_1 + 0xa8); + iVar5 = *(int *)(param_1 + 0xa8) + iVar7 + -1; + if (*(int *)(param_1 + 0x90) == 0) { + iVar1 = *(int *)(*(int *)(param_1 + 0x1c) + 0x4c); + piVar3 = FUN_00442d2b(iVar1 + 0x20,*(char **)(param_1 + 0x94),0); + (**(code **)(*(int *)(param_1 + 0x48) + 0x5c)) + (param_1 + 0x48,1,0,piVar3,iVar6,iVar7,iVar4,iVar5); + FUN_00442e51(iVar1 + 0x20,*(char **)(param_1 + 0x94)); + } + else { + (**(code **)(*(int *)(param_1 + 0x48) + 0x18))(param_1 + 0x48,*(undefined4 *)(param_1 + 0x98)) + ; + iVar1 = *(int *)(*(int *)(param_1 + 0x1c) + 0x4c); + puVar2 = FUN_00442aec(iVar1 + 4,*(char **)(param_1 + 0x94),0); + (**(code **)(*(int *)(param_1 + 0x48) + 0x58)) + (param_1 + 0x48,*(undefined4 *)(param_1 + 0x9c),0,puVar2,iVar6,iVar7,iVar4,iVar5); + FUN_00442c12(iVar1 + 4,*(char **)(param_1 + 0x94)); + } + } + return; +} + + + +/* @004c5068 file=? name=FUN_004c5068 */ + +bool __cdecl +FUN_004c5068(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,int param_5) + +{ + int iVar1; + int *piVar2; + undefined4 *puVar3; + + piVar2 = (int *)FUN_00402298(0xb4); + if (piVar2 != (int *)0x0) { + FUN_004c5148(piVar2,DAT_00516500,DAT_00516544,param_5,0,param_1,param_2,param_3,&DAT_00516588, + DAT_005165cc,DAT_00516610,DAT_00516654,DAT_00516698,DAT_005166dc, + s_OneOfSeveralInt_00518511); + } + iVar1 = *(int *)(param_5 + 0x4c); + puVar3 = FUN_00442aec(iVar1 + 4,&DAT_00516588,0); + if (puVar3 != (undefined4 *)0x0) { + FUN_00442c12(iVar1 + 4,&DAT_00516588); + } + else { + FUN_004dbb24(&DAT_00524e20,s_OneOfSeveralInt__Missing_image__005187a3,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_00516588,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_005187c3,(char *)0x0); + } + return puVar3 != (undefined4 *)0x0; +} + + + +/* @004c5148 file=? name=FUN_004c5148 */ + +int * __cdecl +FUN_004c5148(int *param_1,undefined4 param_2,undefined4 param_3,int param_4,undefined4 param_5, + int param_6,undefined4 param_7,undefined4 param_8,char *param_9,undefined4 param_10, + undefined4 param_11,int param_12,int param_13,undefined4 param_14,undefined4 param_15) + +{ + undefined4 *puVar1; + + FUN_004c4d88(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8,1,param_9,param_10, + param_11,param_12,param_13,param_15); + *param_1 = (int)&PTR_FUN_00518bac; + param_1[0x2b] = 0; + puVar1 = (undefined4 *)FUN_00402298(0x18); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_004749de(puVar1,0,param_1 + 0x2b,param_14); + } + (**(code **)(*param_1 + 0x34))(param_1,puVar1); + return param_1; +} + + + +/* @004c51d8 file=? name=FUN_004c51d8 */ + +void __cdecl FUN_004c51d8(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_00518bac; + FUN_004c4e7c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004c5204 file=? name=FUN_004c5204 */ + +bool __cdecl +FUN_004c5204(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,int param_5) + +{ + int iVar1; + int *piVar2; + + piVar2 = (int *)FUN_00402298(0xb4); + if (piVar2 != (int *)0x0) { + FUN_004c52d8(piVar2,DAT_00516948,DAT_0051698c,param_5,0,param_1,param_2,param_3,&DAT_005169d0, + DAT_00516a14,DAT_00516a58,DAT_00516a9c,s_OneOfSeveralPixInt_00518521); + } + iVar1 = *(int *)(param_5 + 0x4c); + piVar2 = FUN_00442d2b(iVar1 + 0x20,&DAT_005169d0,0); + if (piVar2 != (int *)0x0) { + FUN_00442e51(iVar1 + 0x20,&DAT_005169d0); + } + else { + FUN_004dbb24(&DAT_00524e20,s_OneOfSeveralPixInt__Missing_imag_005187d9,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_005169d0,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_005187fc,(char *)0x0); + } + return piVar2 != (int *)0x0; +} + + + +/* @004c52d8 file=? name=FUN_004c52d8 */ + +int * __cdecl +FUN_004c52d8(int *param_1,undefined4 param_2,undefined4 param_3,int param_4,undefined4 param_5, + int param_6,undefined4 param_7,undefined4 param_8,char *param_9,int param_10, + int param_11,undefined4 param_12,undefined4 param_13) + +{ + undefined4 *puVar1; + + FUN_004c4d88(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8,0,param_9,0,0, + param_10,param_11,param_13); + *param_1 = (int)&PTR_FUN_00518b68; + param_1[0x2b] = 0; + puVar1 = (undefined4 *)FUN_00402298(0x18); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_004749de(puVar1,0,param_1 + 0x2b,param_12); + } + (**(code **)(*param_1 + 0x34))(param_1,puVar1); + return param_1; +} + + + +/* @004c5364 file=? name=FUN_004c5364 */ + +void __cdecl FUN_004c5364(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_00518b68; + FUN_004c4e7c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004c5390 file=? name=FUN_004c5390 */ + +bool __cdecl +FUN_004c5390(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,int param_5) + +{ + int iVar1; + int *piVar2; + undefined4 *puVar3; + + piVar2 = (int *)FUN_00402298(0xb4); + if (piVar2 != (int *)0x0) { + FUN_004c5470(piVar2,DAT_00516d90,DAT_00516dd4,param_5,0,param_1,param_2,param_3,&DAT_00516e18, + DAT_00516e5c,DAT_00516ea0,DAT_00516ee4,DAT_00516f28,DAT_00516f6c, + s_OneOfSeveralStates_00518534); + } + iVar1 = *(int *)(param_5 + 0x4c); + puVar3 = FUN_00442aec(iVar1 + 4,&DAT_00516e18,0); + if (puVar3 != (undefined4 *)0x0) { + FUN_00442c12(iVar1 + 4,&DAT_00516e18); + } + else { + FUN_004dbb24(&DAT_00524e20,s_OneOfSeveralStates__Missing_imag_00518812,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_00516e18,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_00518835,(char *)0x0); + } + return puVar3 != (undefined4 *)0x0; +} + + + +/* @004c5470 file=? name=FUN_004c5470 */ + +int * __cdecl +FUN_004c5470(int *param_1,undefined4 param_2,undefined4 param_3,int param_4,undefined4 param_5, + int param_6,undefined4 param_7,undefined4 param_8,char *param_9,undefined4 param_10, + undefined4 param_11,int param_12,int param_13,undefined4 param_14,undefined4 param_15) + +{ + undefined4 *puVar1; + + FUN_004c4d88(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8,1,param_9,param_10, + param_11,param_12,param_13,param_15); + *param_1 = (int)&PTR_FUN_00518b24; + param_1[0x2b] = 0; + puVar1 = (undefined4 *)FUN_00402298(0x18); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_004c3324(puVar1,0,param_1 + 0x2b,param_14); + } + (**(code **)(*param_1 + 0x34))(param_1,puVar1); + return param_1; +} + + + +/* @004c5500 file=? name=FUN_004c5500 */ + +void __cdecl FUN_004c5500(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_00518b24; + FUN_004c4e7c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004c552c file=? name=FUN_004c552c */ + +void __cdecl FUN_004c552c(int param_1) + +{ + if (*(int *)(param_1 + 0xac) < 0) { + *(undefined4 *)(param_1 + 0xac) = 0; + } + FUN_004c4f28(param_1); + return; +} + + + +/* @004c554c file=? name=FUN_004c554c */ + +bool __cdecl +FUN_004c554c(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,int param_5) + +{ + int iVar1; + undefined4 *puVar2; + + puVar2 = (undefined4 *)FUN_00402298(0xc0); + if (puVar2 != (undefined4 *)0x0) { + FUN_004c562c(puVar2,DAT_005171d8,DAT_0051721c,param_5,0,param_1,param_2,param_3,DAT_00517260, + DAT_005172a4,DAT_005172e8,DAT_0051732c,DAT_00517370,&DAT_005173b4, + s_HeadingPointer_00518547); + } + iVar1 = *(int *)(param_5 + 0x4c); + puVar2 = FUN_00442aec(iVar1 + 4,&DAT_005173b4,0); + if (puVar2 != (undefined4 *)0x0) { + FUN_00442c12(iVar1 + 4,&DAT_005173b4); + } + else { + FUN_004dbb24(&DAT_00524e20,s_HeadingPointer__Missing_font__00518847,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_005173b4,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_00518865,(char *)0x0); + } + return puVar2 != (undefined4 *)0x0; +} + + + +/* @004c562c file=? name=FUN_004c562c */ + +undefined4 * __cdecl +FUN_004c562c(undefined4 *param_1,undefined4 param_2,undefined4 param_3,int param_4, + undefined4 param_5,int param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9, + int param_10,int param_11,undefined4 param_12,undefined4 param_13,char *param_14, + undefined4 param_15) + +{ + int iVar1; + uint uVar2; + undefined4 uVar3; + undefined4 *puVar4; + int iVar5; + int *piVar6; + int iVar7; + + FUN_00444818(param_1,param_2,param_3,param_4,param_5,param_6,param_15); + *param_1 = &PTR_FUN_00518ae0; + FUN_0044a5b4(param_1 + 0x29); + (**(code **)(param_1[0x12] + 0x10))(param_1 + 0x12,param_7,param_8); + param_1[0x24] = param_9; + param_1[0x25] = param_11; + param_1[0x26] = param_12; + param_1[0x27] = param_13; + uVar3 = FUN_004700ac(param_14); + param_1[0x28] = uVar3; + iVar1 = *(int *)(param_1[7] + 0x4c); + puVar4 = FUN_00442aec(iVar1 + 4,param_14,0); + uVar2 = ((int)puVar4[3] / 0xe) * 3; + iVar5 = (int)uVar2 >> 1; + if (iVar5 < 0) { + iVar5 = iVar5 + (uint)((uVar2 & 1) != 0); + } + iVar7 = (int)puVar4[4] >> 1; + if (iVar7 < 0) { + iVar7 = iVar7 + (uint)((puVar4[4] & 1) != 0); + } + piVar6 = (int *)FUN_00402298(0x44); + if (piVar6 == (int *)0x0) { + piVar6 = (int *)0x0; + } + else { + piVar6 = FUN_004700bc(piVar6,iVar1,-iVar5,-iVar7,param_14,3,0,param_11,param_10); + } + param_1[0x2f] = piVar6; + return param_1; +} + + + +/* @004c573c file=? name=FUN_004c573c */ + +void __cdecl FUN_004c573c(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_00518ae0; + FUN_00442c12(*(int *)(param_1[7] + 0x4c) + 4,(char *)param_1[0x28]); + FUN_004022e8((int *)param_1[0x28]); + param_1[0x28] = 0; + FUN_0047018c((int *)param_1[0x2f],3); + param_1[0x2f] = 0; + FUN_0044a5dc(param_1 + 0x29,2); + FUN_00444870(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004c57c0 file=? name=FUN_004c57c0 */ + +void FUN_004c57c0(void) + +{ + FUN_004448ac(); + return; +} + + + +/* @004c57d0 file=? name=FUN_004c57d0 */ + +void __cdecl FUN_004c57d0(int param_1,char *param_2) + +{ + char cVar1; + int *piVar2; + uint uVar3; + uint uVar4; + char *pcVar5; + char *pcVar6; + char local_54 [80]; + + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_HeadingPointer__00518868,(char *)0x0); + uVar3 = 0xffffffff; + do { + pcVar5 = param_2; + if (uVar3 == 0) break; + uVar3 = uVar3 - 1; + pcVar5 = param_2 + 1; + cVar1 = *param_2; + param_2 = pcVar5; + } while (cVar1 != '\0'); + uVar3 = ~uVar3; + pcVar5 = pcVar5 + -uVar3; + pcVar6 = local_54; + for (uVar4 = uVar3 >> 2; uVar4 != 0; uVar4 = uVar4 - 1) { + *(undefined4 *)pcVar6 = *(undefined4 *)pcVar5; + pcVar5 = pcVar5 + 4; + pcVar6 = pcVar6 + 4; + } + for (uVar3 = uVar3 & 3; uVar3 != 0; uVar3 = uVar3 - 1) { + *pcVar6 = *pcVar5; + pcVar5 = pcVar5 + 1; + pcVar6 = pcVar6 + 1; + } + FUN_004d49b8(local_54,&DAT_00518879); + uVar3 = *(uint *)(param_1 + 0x94); + FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_bgColor__0051887d,(char *)0x0); + piVar2 = FUN_004db78c(&DAT_00524e20,uVar3); + FUN_004dbb24(piVar2,&DAT_00518886,(char *)0x0); + uVar3 = *(uint *)(param_1 + 0x90); + FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_fgColor__00518888,(char *)0x0); + piVar2 = FUN_004db78c(&DAT_00524e20,uVar3); + FUN_004dbb24(piVar2,&DAT_00518891,(char *)0x0); + FUN_004448bc(param_1,local_54); + return; +} + + + +/* @004c58e8 file=? name=FUN_004c58e8 */ + +void __cdecl FUN_004c58e8(int param_1) + +{ + *(undefined4 *)(param_1 + 0xb4) = 0xfffffc19; + *(undefined4 *)(param_1 + 0xb8) = 0xfffffc19; + FUN_004703f4(*(int *)(param_1 + 0xbc)); + return; +} + + + +/* @004c5914 file=? name=FUN_004c5914 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_004c5914(int param_1) + +{ + int *piVar1; + int iVar2; + float afStack_30 [3]; + int iStack_24; + int iStack_20; + undefined4 uStack_1c; + undefined4 uStack_18; + float fStack_14; + float fStack_10; + float afStack_c [2]; + + iVar2 = FUN_00417ab4(*(int *)(param_1 + 0x1c) + 0x40); + if (iVar2 != 0) { + FUN_0040954c(afStack_30,(float *)(iVar2 + 0x10c)); + fStack_14 = -afStack_30[0]; + fStack_10 = fStack_14; + FUN_00408328(afStack_c,&fStack_14); + uStack_1c = FUN_004dcd94(); + uStack_18 = FUN_004dcd94(); + iStack_24 = FUN_004dcd94(); + iStack_20 = FUN_004dcd94(); + if ((iStack_24 != *(int *)(param_1 + 0xb4)) || (iStack_20 != *(int *)(param_1 + 0xb8))) { + *(int *)(param_1 + 0xb4) = iStack_24; + iVar2 = param_1 + 0x48; + piVar1 = (int *)(param_1 + 0xa4); + *(int *)(param_1 + 0xb8) = iStack_20; + FUN_0044a650(piVar1,iVar2,*(uint *)(param_1 + 0x94)); + FUN_0044a630((int)piVar1); + (**(code **)(*(int *)(param_1 + 0x48) + 100))(iVar2,piVar1); + (**(code **)(*(int *)(param_1 + 0x48) + 0x18))(iVar2,*(undefined4 *)(param_1 + 0x90)); + (**(code **)(*(int *)(param_1 + 0x48) + 0x24))(iVar2,uStack_1c,uStack_18); + (**(code **)(*(int *)(param_1 + 0x48) + 0x38))(iVar2,iStack_24,iStack_20); + (**(code **)(*(int *)(param_1 + 0x48) + 0x68))(iVar2); + } + iVar2 = FUN_004dcd94(); + if ((float)iVar2 < _DAT_004c5acc) { + FUN_004dcd94(); + } + iVar2 = FUN_004dcd94(); + FUN_00470430(*(int **)(param_1 + 0xbc),(int *)(param_1 + 0x48),(float)iVar2); + } + return; +} + + + +/* @004c591a file=? name=FUN_004c591a */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_004c591a(void) + +{ + int *piVar1; + int iVar2; + int iVar3; + undefined4 uVar4; + int unaff_EBP; + + iVar2 = *(int *)(unaff_EBP + 8); + iVar3 = FUN_00417ab4(*(int *)(iVar2 + 0x1c) + 0x40); + if (iVar3 != 0) { + FUN_0040954c((float *)(unaff_EBP + -0x2c),(float *)(iVar3 + 0x10c)); + *(float *)(unaff_EBP + -0xc) = -*(float *)(unaff_EBP + -0x2c); + *(undefined4 *)(unaff_EBP + -0x10) = *(undefined4 *)(unaff_EBP + -0xc); + FUN_00408328((float *)(unaff_EBP + -8),(float *)(unaff_EBP + -0x10)); + uVar4 = FUN_004dcd94(); + *(undefined4 *)(unaff_EBP + -0x18) = uVar4; + uVar4 = FUN_004dcd94(); + *(undefined4 *)(unaff_EBP + -0x14) = uVar4; + uVar4 = FUN_004dcd94(); + *(undefined4 *)(unaff_EBP + -0x20) = uVar4; + uVar4 = FUN_004dcd94(); + *(undefined4 *)(unaff_EBP + -0x1c) = uVar4; + if ((*(int *)(unaff_EBP + -0x20) != *(int *)(iVar2 + 0xb4)) || + (*(int *)(unaff_EBP + -0x1c) != *(int *)(iVar2 + 0xb8))) { + *(int *)(iVar2 + 0xb4) = *(int *)(unaff_EBP + -0x20); + iVar3 = iVar2 + 0x48; + piVar1 = (int *)(iVar2 + 0xa4); + *(undefined4 *)(iVar2 + 0xb8) = *(undefined4 *)(unaff_EBP + -0x1c); + FUN_0044a650(piVar1,iVar3,*(uint *)(iVar2 + 0x94)); + FUN_0044a630((int)piVar1); + (**(code **)(*(int *)(iVar2 + 0x48) + 100))(iVar3,piVar1); + (**(code **)(*(int *)(iVar2 + 0x48) + 0x18))(iVar3,*(undefined4 *)(iVar2 + 0x90)); + (**(code **)(*(int *)(iVar2 + 0x48) + 0x24)) + (iVar3,*(undefined4 *)(unaff_EBP + -0x18),*(undefined4 *)(unaff_EBP + -0x14)); + (**(code **)(*(int *)(iVar2 + 0x48) + 0x38)) + (iVar3,*(undefined4 *)(unaff_EBP + -0x20),*(undefined4 *)(unaff_EBP + -0x1c)); + (**(code **)(*(int *)(iVar2 + 0x48) + 0x68))(iVar3); + } + uVar4 = FUN_004dcd94(); + *(undefined4 *)(unaff_EBP + -0x30) = uVar4; + if ((float)*(int *)(unaff_EBP + -0x30) < _DAT_004c5acc) { + *(undefined4 *)(unaff_EBP + -0x34) = uVar4; + uVar4 = FUN_004dcd94(); + } + *(undefined4 *)(unaff_EBP + -0x30) = uVar4; + uVar4 = FUN_004dcd94(); + *(undefined4 *)(unaff_EBP + -0x34) = uVar4; + FUN_00470430(*(int **)(iVar2 + 0xbc),(int *)(iVar2 + 0x48),(float)*(int *)(unaff_EBP + -0x34)); + } + return; +} + + + +/* @004c5b7c file=? name=FUN_004c5b7c */ + +int * __cdecl +FUN_004c5b7c(int *param_1,undefined4 param_2,undefined4 param_3,int param_4,undefined4 param_5, + int param_6,undefined4 param_7,undefined4 param_8,char *param_9,int param_10, + int param_11,int param_12,int param_13,undefined4 param_14,undefined4 param_15) + +{ + int iVar1; + undefined4 *puVar2; + + FUN_00444818(param_1,param_2,param_3,param_4,param_5,param_6,param_15); + *param_1 = (int)&PTR_FUN_00518a9c; + (**(code **)(param_1[0x12] + 0x10))(param_1 + 0x12,param_7,param_8); + iVar1 = FUN_004700ac(param_9); + param_1[0x24] = iVar1; + param_1[0x25] = param_10; + param_1[0x26] = param_11; + param_1[0x28] = param_12; + param_1[0x27] = param_12 * 2; + param_1[0x2c] = param_13; + puVar2 = FUN_00442aec(*(int *)(param_4 + 0x4c) + 4,(char *)param_1[0x24],0); + if (puVar2 == (undefined4 *)0x0) { + param_1[0x2a] = 0; + param_1[0x29] = 0; + } + else { + param_1[0x2a] = (int)puVar2[3] / 3; + param_1[0x29] = puVar2[4]; + } + puVar2 = (undefined4 *)FUN_00402298(0x18); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_00474855(puVar2,0,param_1 + 0x2d,param_14); + } + (**(code **)(*param_1 + 0x34))(param_1,puVar2); + return param_1; +} + + + +/* @004c5c80 file=? name=FUN_004c5c80 */ + +void __cdecl FUN_004c5c80(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_00518a9c; + FUN_00442c12(*(int *)(param_1[7] + 0x4c) + 4,(char *)param_1[0x24]); + FUN_004022e8((int *)param_1[0x24]); + param_1[0x24] = 0; + FUN_00444870(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004c5cdc file=? name=FUN_004c5cdc */ + +void FUN_004c5cdc(void) + +{ + FUN_004448ac(); + return; +} + + + +/* @004c5cec file=? name=FUN_004c5cec */ + +void FUN_004c5cec(void) + +{ + return; +} + + + +/* @004c5cf4 file=? name=FUN_004c5cf4 */ + +void __cdecl FUN_004c5cf4(int param_1) + +{ + *(undefined4 *)(param_1 + 0xac) = 0xffffffff; + return; +} + + + +/* @004c5d08 file=? name=FUN_004c5d08 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004c5d08(int param_1) + +{ + int iVar1; + int iVar2; + int iVar3; + undefined4 *puVar4; + int iVar5; + int iVar6; + + iVar1 = *(int *)(param_1 + 0x9c); + iVar3 = FUN_004dcd94(); + if (iVar3 < 0) { + iVar3 = 0; + } + if (iVar1 < iVar3) { + iVar3 = iVar1; + } + if ((_DAT_0050e3d8 < *(float *)(param_1 + 0xb4)) && (iVar3 < 1)) { + iVar3 = 1; + } + if (iVar3 != *(int *)(param_1 + 0xac)) { + *(int *)(param_1 + 0xac) = iVar3; + iVar1 = *(int *)(*(int *)(param_1 + 0x1c) + 0x4c); + puVar4 = FUN_00442aec(iVar1 + 4,*(char **)(param_1 + 0x90),0); + if (puVar4 != (undefined4 *)0x0) { + iVar6 = -*(int *)(param_1 + 0xa4); + for (iVar2 = *(int *)(param_1 + 0xa0); 0 < iVar2; iVar2 = iVar2 + -1) { + iVar5 = param_1 + 0x48; + (**(code **)(*(int *)(param_1 + 0x48) + 0x24))(iVar5,0,iVar6); + if (iVar3 < 1) { + (**(code **)(*(int *)(param_1 + 0x48) + 0x18))(iVar5,*(undefined4 *)(param_1 + 0x94)); + iVar5 = 0; + } + else if (iVar3 == 1) { + (**(code **)(*(int *)(param_1 + 0x48) + 0x18))(iVar5,*(undefined4 *)(param_1 + 0x98)); + iVar5 = *(int *)(param_1 + 0xa8); + } + else { + (**(code **)(*(int *)(param_1 + 0x48) + 0x18))(iVar5,*(undefined4 *)(param_1 + 0x98)); + iVar5 = *(int *)(param_1 + 0xa8) * 2; + } + (**(code **)(*(int *)(param_1 + 0x48) + 0x54)) + (param_1 + 0x48,0,puVar4,iVar5,0,*(int *)(param_1 + 0xa8) + iVar5, + *(undefined4 *)(param_1 + 0xa4)); + iVar3 = iVar3 + -2; + iVar6 = iVar6 - *(int *)(param_1 + 0xa4); + } + } + FUN_00442c12(iVar1 + 4,*(char **)(param_1 + 0x90)); + } + return; +} + + + +/* @004c5e84 file=? name=FUN_004c5e84 */ + +undefined4 * __cdecl +FUN_004c5e84(undefined4 *param_1,undefined4 param_2,undefined4 param_3,int param_4, + undefined4 param_5,int param_6,undefined4 param_7,undefined4 param_8,char *param_9, + undefined4 param_10,undefined4 param_11,undefined4 param_12) + +{ + undefined4 uVar1; + undefined4 *puVar2; + + FUN_00444818(param_1,param_2,param_3,param_4,param_5,param_6,param_12); + *param_1 = &PTR_FUN_00518a58; + (**(code **)(param_1[0x12] + 0x10))(param_1 + 0x12,param_7,param_8); + uVar1 = FUN_004700ac(param_9); + param_1[0x24] = uVar1; + param_1[0x25] = param_10; + param_1[0x26] = param_11; + puVar2 = FUN_00442aec(*(int *)(param_4 + 0x4c) + 4,(char *)param_1[0x24],0); + if (puVar2 == (undefined4 *)0x0) { + param_1[0x27] = 0; + param_1[0x28] = 0; + } + else { + param_1[0x27] = puVar2[3]; + param_1[0x28] = puVar2[4]; + } + return param_1; +} + + + diff --git a/reference/decomp/archive_2025export/all/part_014.c b/reference/decomp/archive_2025export/all/part_014.c new file mode 100644 index 0000000..5451230 --- /dev/null +++ b/reference/decomp/archive_2025export/all/part_014.c @@ -0,0 +1,13884 @@ +/* @004c5f30 file=? name=FUN_004c5f30 */ + +void __cdecl FUN_004c5f30(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_00518a58; + FUN_00442c12(*(int *)(param_1[7] + 0x4c) + 4,(char *)param_1[0x24]); + FUN_004022e8((int *)param_1[0x24]); + param_1[0x24] = 0; + FUN_00444870(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004c5f8c file=? name=FUN_004c5f8c */ + +void FUN_004c5f8c(void) + +{ + FUN_004448ac(); + return; +} + + + +/* @004c5f9c file=? name=FUN_004c5f9c */ + +void FUN_004c5f9c(void) + +{ + return; +} + + + +/* @004c5fa4 file=? name=FUN_004c5fa4 */ + +void __cdecl FUN_004c5fa4(int param_1) + +{ + *(undefined4 *)(param_1 + 0xa4) = 0xffffffff; + return; +} + + + +/* @004c5fb8 file=? name=FUN_004c5fb8 */ + +void __cdecl FUN_004c5fb8(int param_1) + +{ + int iVar1; + int iVar2; + undefined4 *puVar3; + + iVar1 = *(int *)(param_1 + 0x9c); + iVar2 = FUN_004dcd94(); + if (iVar2 < 0) { + iVar2 = 0; + } + if (iVar1 < iVar2) { + iVar2 = iVar1; + } + if (iVar2 != *(int *)(param_1 + 0xa4)) { + *(int *)(param_1 + 0xa4) = iVar2; + iVar1 = *(int *)(*(int *)(param_1 + 0x1c) + 0x4c); + puVar3 = FUN_00442aec(iVar1 + 4,*(char **)(param_1 + 0x90),0); + if (puVar3 != (undefined4 *)0x0) { + if (iVar2 != 0) { + (**(code **)(*(int *)(param_1 + 0x48) + 0x24))(param_1 + 0x48,0,0); + (**(code **)(*(int *)(param_1 + 0x48) + 0x18)) + (param_1 + 0x48,*(undefined4 *)(param_1 + 0x94)); + (**(code **)(*(int *)(param_1 + 0x48) + 0x58)) + (param_1 + 0x48,*(undefined4 *)(param_1 + 0x98),0,puVar3,0,0,iVar2, + *(undefined4 *)(param_1 + 0xa0)); + iVar2 = iVar2 + 1; + } + if (iVar2 < *(int *)(param_1 + 0x9c)) { + (**(code **)(*(int *)(param_1 + 0x48) + 0x24))(param_1 + 0x48,iVar2,0); + (**(code **)(*(int *)(param_1 + 0x48) + 0x18)) + (param_1 + 0x48,*(undefined4 *)(param_1 + 0x98)); + (**(code **)(*(int *)(param_1 + 0x48) + 0x58)) + (param_1 + 0x48,*(undefined4 *)(param_1 + 0x94),0,puVar3,iVar2,0, + *(undefined4 *)(param_1 + 0x9c),*(undefined4 *)(param_1 + 0xa0)); + } + } + FUN_00442c12(iVar1 + 4,*(char **)(param_1 + 0x90)); + } + return; +} + + + +/* @004c61c8 file=? name=FUN_004c61c8 */ + +int * __cdecl +FUN_004c61c8(int *param_1,undefined4 param_2,undefined4 param_3,int param_4,undefined4 param_5, + int param_6,undefined4 param_7,undefined4 param_8,char *param_9,undefined4 param_10, + undefined4 param_11,undefined4 param_12,undefined4 param_13) + +{ + undefined4 *puVar1; + + FUN_004c5e84(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9,param_10, + param_11,param_13); + *param_1 = (int)&PTR_FUN_00518a14; + puVar1 = (undefined4 *)FUN_00402298(0x18); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_00474855(puVar1,0,param_1 + 0x2a,param_12); + } + (**(code **)(*param_1 + 0x34))(param_1,puVar1); + return param_1; +} + + + +/* @004c6244 file=? name=FUN_004c6244 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +int * __cdecl +FUN_004c6244(int *param_1,undefined4 param_2,undefined4 param_3,int param_4,undefined4 param_5, + int param_6,undefined4 param_7,undefined4 param_8,float param_9,float param_10, + float param_11,float param_12,float param_13,float param_14,uint param_15, + undefined4 param_16,undefined4 param_17,undefined4 param_18,undefined4 param_19, + undefined4 param_20) + +{ + int iVar1; + + FUN_004745e0(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9,param_10, + param_11,param_12,param_13,param_14,param_15,param_16,param_17,param_18,param_19, + param_20); + *param_1 = (int)&PTR_FUN_005189d0; + iVar1 = (param_15 ^ (int)param_15 >> 0x1f) - ((int)param_15 >> 0x1f); + param_1[0x30] = (int)((float)(iVar1 / (iVar1 + -1)) * _DAT_004c62d4); + return param_1; +} + + + +/* @004c62fc file=? name=FUN_004c62fc */ + +undefined4 __cdecl +FUN_004c62fc(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,int param_5) + +{ + int *piVar1; + + piVar1 = (int *)FUN_00402298(0xcc); + if (piVar1 != (int *)0x0) { + FUN_004c6394(piVar1,DAT_00517eb0,DAT_00517ef4,param_5,0,param_1,param_2,param_3,DAT_00517f38, + DAT_00517f7c,DAT_00517f38,DAT_00517f7c,DAT_00517fc0,DAT_00518004,DAT_00518048, + DAT_0051808c,DAT_005180d0,DAT_00518114,DAT_00518158,1,s_SegmentArcRatio_00518598); + } + return 1; +} + + + +/* @004c6394 file=? name=FUN_004c6394 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +int * __cdecl +FUN_004c6394(int *param_1,undefined4 param_2,undefined4 param_3,int param_4,undefined4 param_5, + int param_6,undefined4 param_7,undefined4 param_8,float param_9,float param_10, + float param_11,float param_12,float param_13,float param_14,uint param_15, + undefined4 param_16,undefined4 param_17,undefined4 param_18,undefined4 param_19, + undefined4 param_20,undefined4 param_21) + +{ + int iVar1; + undefined4 *puVar2; + + FUN_00473f44(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9,param_10, + param_11,param_12,param_13,param_14,param_15,param_16,param_17,param_20,param_21); + *param_1 = (int)&PTR_FUN_0051898c; + iVar1 = (param_15 ^ (int)param_15 >> 0x1f) - ((int)param_15 >> 0x1f); + param_1[0x32] = (int)((float)(iVar1 / (iVar1 + -1)) * _DAT_004c6484); + puVar2 = (undefined4 *)FUN_00402298(0x18); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_00474855(puVar2,0,param_1 + 0x30,param_18); + } + (**(code **)(*param_1 + 0x34))(param_1,puVar2); + puVar2 = (undefined4 *)FUN_00402298(0x18); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_00474855(puVar2,0,param_1 + 0x31,param_19); + } + (**(code **)(*param_1 + 0x34))(param_1,puVar2); + return param_1; +} + + + +/* @004c668d file=? name=FUN_004c668d */ + +void __cdecl FUN_004c668d(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + FUN_00474094(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004c66b3 file=? name=FUN_004c66b3 */ + +void __cdecl FUN_004c66b3(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + FUN_00474094(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004c66d9 file=? name=FUN_004c66d9 */ + +void __cdecl FUN_004c66d9(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + FUN_004c5f30(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004c66ff file=? name=FUN_004c66ff */ + +void __cdecl FUN_004c66ff(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + FUN_004c38dc(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004c6725 file=? name=FUN_004c6725 */ + +void __cdecl FUN_004c6725(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + FUN_004c38dc(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004c674b file=? name=FUN_004c674b */ + +void __cdecl FUN_004c674b(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + FUN_004c38dc(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004c6771 file=? name=FUN_004c6771 */ + +void __cdecl FUN_004c6771(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + FUN_004c38dc(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004c6798 file=? name=FUN_004c6798 */ + +undefined4 * __cdecl +FUN_004c6798(undefined4 *param_1,undefined4 param_2,undefined4 param_3,int param_4, + undefined4 param_5,int param_6,int param_7,undefined4 param_8,char *param_9, + undefined4 param_10,undefined4 param_11) + +{ + char *pcVar1; + int iVar2; + + FUN_00444818(param_1,param_2,param_3,param_4,param_5,param_6,param_11); + *param_1 = &PTR_FUN_0051a1fc; + pcVar1 = (char *)FUN_004700ac(param_9); + param_1[0x24] = pcVar1; + FUN_00442aec(*(int *)(param_1[7] + 0x4c) + 4,pcVar1,0); + iVar2 = FUN_0041bfc0(param_7,s_CurrentSeekVoltageIndex_00519b05); + param_1[0x25] = iVar2; + iVar2 = FUN_0041bfc0(param_7,s_MinSeekVoltageIndex_00519b1d); + param_1[0x26] = iVar2; + iVar2 = FUN_0041bfc0(param_7,s_MaxSeekVoltageIndex_00519b31); + param_1[0x27] = iVar2; + iVar2 = FUN_0041bfc0(param_7,s_SeekVoltage_00519b45); + param_1[0x28] = iVar2; + param_1[0x29] = param_8; + param_1[0x2a] = param_7; + (**(code **)(param_1[0x12] + 0xc))(param_1 + 0x12,3); + (**(code **)(param_1[0x12] + 8))(param_1 + 0x12,0x97,0x80,0x17d,0x13b); + param_1[0x2c] = 0x43660000; + param_1[0x2d] = 0x433b0000; + param_1[0x2f] = param_10; + param_1[0x2e] = 0; + return param_1; +} + + + +/* @004c68ac file=? name=FUN_004c68ac */ + +void __cdecl FUN_004c68ac(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0051a1fc; + FUN_00442c12(*(int *)(param_1[7] + 0x4c) + 4,(char *)param_1[0x24]); + FUN_004022e8((int *)param_1[0x24]); + param_1[0x24] = 0; + FUN_00444870(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004c6908 file=? name=FUN_004c6908 */ + +void FUN_004c6908(void) + +{ + FUN_004448ac(); + return; +} + + + +/* @004c6918 file=? name=FUN_004c6918 */ + +void FUN_004c6918(void) + +{ + return; +} + + + +/* @004c6920 file=? name=FUN_004c6920 */ + +void __cdecl FUN_004c6920(int param_1) + +{ + *(undefined4 *)(param_1 + 0xac) = 0x461c3c00; + return; +} + + + +/* @004c6934 file=? name=FUN_004c6934 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004c6934(int *param_1) + +{ + int iVar1; + undefined4 *puVar2; + int iVar3; + int iVar4; + undefined4 uVar5; + undefined4 uVar6; + int iVar7; + float10 fVar8; + float local_c; + + if (*(int *)(param_1[0x2a] + 0x40) == 1) { + if (param_1[0x2e] == 0) { + param_1[0x2e] = 1; + FUN_004c6be4((int)param_1); + iVar7 = *(int *)(param_1[7] + 0x4c); + puVar2 = FUN_00442aec(iVar7 + 4,(char *)param_1[0x24],0); + iVar3 = FUN_004dcd94(); + iVar1 = puVar2[3]; + iVar4 = FUN_004dcd94(); + (**(code **)(param_1[0x12] + 0x24))(param_1 + 0x12,iVar3 - iVar1 >> 1,iVar4 - puVar2[4] >> 1); + (**(code **)(param_1[0x12] + 0x18))(param_1 + 0x12,0xff); + (**(code **)(param_1[0x12] + 0x54))(param_1 + 0x12,0,puVar2,0,0,puVar2[3] + -1,puVar2[4] + -1) + ; + FUN_00442c12(iVar7 + 4,(char *)param_1[0x24]); + } + } + else { + if (param_1[0x2e] != 0) { + param_1[0x2e] = 0; + (**(code **)(*param_1 + 0xc))(param_1); + } + fVar8 = (float10)(**(code **)(*(int *)param_1[0x2a] + 0x3c))((int *)param_1[0x2a],0x463b8000); + if ((float)param_1[0x2b] != (float)fVar8) { + param_1[0x2b] = (int)(float)fVar8; + FUN_004c6be4((int)param_1); + (**(code **)(param_1[0x12] + 0x18))(param_1 + 0x12,0xff); + (**(code **)(param_1[0x12] + 0x24))(param_1 + 0x12,0,0); + for (local_c = 0.0; local_c < _DAT_004c6be0; local_c = local_c + _DAT_004c6bdc) { + (**(code **)(*(int *)param_1[0x2a] + 0x3c))((int *)param_1[0x2a],local_c); + uVar5 = FUN_004dcd94(); + uVar6 = FUN_004dcd94(); + (**(code **)(param_1[0x12] + 0x30))(param_1 + 0x12,uVar5,uVar6); + } + param_1[0x30] = -1; + param_1[0x31] = -1; + (**(code **)(param_1[0x12] + 0xc))(param_1 + 0x12,3); + if (((int *)param_1[0x25] != (int *)0x0) && (param_1[0x28] != 0)) { + param_1[0x32] = *(int *)param_1[0x25]; + FUN_004c6c6c((int)param_1); + } + } + if ((((int *)param_1[0x25] != (int *)0x0) && (param_1[0x28] != 0)) && + (iVar7 = *(int *)param_1[0x25], iVar7 != param_1[0x32])) { + FUN_004c6c6c((int)param_1); + param_1[0x32] = iVar7; + FUN_004c6c6c((int)param_1); + } + if (param_1[0x2f] != 0) { + if (-1 < param_1[0x30]) { + FUN_004c6c30((int)param_1); + } + (**(code **)(*(int *)param_1[0x2a] + 0x3c))((int *)param_1[0x2a],*(undefined4 *)param_1[0x29]) + ; + iVar7 = FUN_004dcd94(); + param_1[0x30] = iVar7; + iVar7 = FUN_004dcd94(); + param_1[0x31] = iVar7; + FUN_004c6c30((int)param_1); + } + } + return; +} + + + +/* @004c6be4 file=? name=FUN_004c6be4 */ + +void __cdecl FUN_004c6be4(int param_1) + +{ + int iVar1; + + iVar1 = param_1 + 0x48; + (**(code **)(*(int *)(param_1 + 0x48) + 0xc))(iVar1,0); + (**(code **)(*(int *)(param_1 + 0x48) + 0x18))(iVar1,0); + (**(code **)(*(int *)(param_1 + 0x48) + 0x24))(iVar1,0,0); + (**(code **)(*(int *)(param_1 + 0x48) + 0x48))(iVar1,1000,1000); + return; +} + + + +/* @004c6c30 file=? name=FUN_004c6c30 */ + +void __cdecl FUN_004c6c30(int param_1) + +{ + (**(code **)(*(int *)(param_1 + 0x48) + 0x24)) + (param_1 + 0x48,*(int *)(param_1 + 0xc0) + -4,*(int *)(param_1 + 0xc4) + -4); + (**(code **)(*(int *)(param_1 + 0x48) + 0x4c))(param_1 + 0x48,8,8); + return; +} + + + +/* @004c6c6c file=? name=FUN_004c6c6c */ + +void __cdecl FUN_004c6c6c(int param_1) + +{ + int iVar1; + undefined4 uVar2; + undefined4 uVar3; + int iVar4; + + iVar1 = **(int **)(param_1 + 0x9c); + for (iVar4 = **(int **)(param_1 + 0x98); iVar4 <= iVar1; iVar4 = iVar4 + 1) { + (**(code **)(**(int **)(param_1 + 0xa8) + 0x3c)) + (*(int **)(param_1 + 0xa8),*(undefined4 *)(*(int *)(param_1 + 0xa0) + iVar4 * 4)); + uVar2 = FUN_004dcd94(); + uVar3 = FUN_004dcd94(); + if (iVar4 == *(int *)(param_1 + 200)) { + (**(code **)(*(int *)(param_1 + 0x48) + 0x24))(param_1 + 0x48,0,uVar3); + (**(code **)(*(int *)(param_1 + 0x48) + 0x30))(param_1 + 0x48,uVar2,uVar3); + (**(code **)(*(int *)(param_1 + 0x48) + 0x30))(param_1 + 0x48,uVar2,0); + } + else { + (**(code **)(*(int *)(param_1 + 0x48) + 0x24))(param_1 + 0x48,0,uVar3); + (**(code **)(*(int *)(param_1 + 0x48) + 0x30))(param_1 + 0x48,10,uVar3); + (**(code **)(*(int *)(param_1 + 0x48) + 0x24))(param_1 + 0x48,uVar2,0); + (**(code **)(*(int *)(param_1 + 0x48) + 0x30))(param_1 + 0x48,uVar2,10); + } + } + return; +} + + + +/* @004c6d80 file=? name=FUN_004c6d80 */ + +undefined4 * __cdecl +FUN_004c6d80(undefined4 *param_1,undefined4 param_2,undefined4 param_3,int param_4, + undefined4 param_5,int param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9, + undefined4 param_10) + +{ + int iVar1; + undefined4 *puVar2; + int iVar3; + + FUN_00444818(param_1,param_2,param_3,param_4,param_5,param_6,param_10); + *param_1 = &PTR_FUN_0051a1b8; + param_1[0x26] = s_btjoy_pcc_00519b51; + param_1[0x27] = s_cm_off_pcc_00519b5b; + param_1[0x28] = s_cm_other_pcc_00519b66; + param_1[0x29] = s_cm_only_pcc_00519b73; + param_1[0x2a] = s_cm_both_pcc_00519b7f; + (**(code **)(param_1[0x12] + 0x10))(param_1 + 0x12,param_7,param_8); + param_1[0x25] = 0; + param_1[0x24] = param_9; + iVar1 = *(int *)(param_4 + 0x4c); + FUN_00442aec(iVar1 + 4,(char *)param_1[0x26],0); + iVar3 = 0; + puVar2 = param_1 + 0x27; + do { + FUN_00442d2b(iVar1 + 0x20,(char *)*puVar2,0); + iVar3 = iVar3 + 1; + puVar2 = puVar2 + 1; + } while (iVar3 < 4); + return param_1; +} + + + +/* @004c6e54 file=? name=FUN_004c6e54 */ + +void __cdecl FUN_004c6e54(int *param_1,byte param_2) + +{ + int iVar1; + int *piVar2; + int iVar3; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0051a1b8; + iVar1 = *(int *)(param_1[7] + 0x4c); + FUN_00442c12(iVar1 + 4,(char *)param_1[0x26]); + iVar3 = 0; + piVar2 = param_1 + 0x27; + do { + FUN_00442e51(iVar1 + 0x20,(char *)*piVar2); + iVar3 = iVar3 + 1; + piVar2 = piVar2 + 1; + } while (iVar3 < 4); + FUN_00444870(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004c6ec8 file=? name=FUN_004c6ec8 */ + +void FUN_004c6ec8(void) + +{ + FUN_004448ac(); + return; +} + + + +/* @004c6ed8 file=? name=FUN_004c6ed8 */ + +void FUN_004c6ed8(void) + +{ + return; +} + + + +/* @004c6ee0 file=? name=FUN_004c6ee0 */ + +void __cdecl FUN_004c6ee0(int param_1,undefined4 param_2) + +{ + *(undefined4 *)(param_1 + 0x94) = param_2; + return; +} + + + +/* @004c6ef4 file=? name=FUN_004c6ef4 */ + +void __cdecl FUN_004c6ef4(int param_1) + +{ + undefined4 *puVar1; + int iVar2; + + iVar2 = 0; + *(undefined4 *)(param_1 + 0xbc) = 1; + puVar1 = (undefined4 *)(param_1 + 0xac); + do { + *puVar1 = 0xffffffff; + iVar2 = iVar2 + 1; + puVar1 = puVar1 + 1; + } while (iVar2 < 4); + return; +} + + + +/* @004c6f1c file=? name=FUN_004c6f1c */ + +void __cdecl FUN_004c6f1c(int param_1) + +{ + int iVar1; + int iVar2; + undefined4 *puVar3; + int iVar4; + int *piVar5; + int *piVar6; + int *local_18; + int local_10; + + if (*(int *)(param_1 + 0x94) != 0) { + iVar2 = *(int *)(*(int *)(param_1 + 0x1c) + 0x4c); + if (*(int *)(param_1 + 0xbc) != 0) { + *(undefined4 *)(param_1 + 0xbc) = 0; + puVar3 = FUN_00442aec(iVar2 + 4,*(char **)(param_1 + 0x98),0); + if (puVar3 != (undefined4 *)0x0) { + iVar1 = param_1 + 0x48; + (**(code **)(*(int *)(param_1 + 0x48) + 0x18))(iVar1,0xff); + (**(code **)(*(int *)(param_1 + 0x48) + 0x24))(iVar1,0,0); + (**(code **)(*(int *)(param_1 + 0x48) + 0x54)) + (iVar1,0,puVar3,0,0,puVar3[3] + -1,puVar3[4] + -1); + } + } + piVar6 = &DAT_00518eb8; + iVar1 = *(int *)(DAT_004efc94 + 0x3c); + local_10 = 0; + local_18 = (int *)(param_1 + 0xac); + do { + iVar4 = *(int *)(param_1 + 0x90); + iVar4 = (**(code **)(*(int *)(iVar1 + 0x1c0 + *piVar6 * 0x20) + 0x24)) + (*piVar6 * 0x20 + iVar1 + 0x1c0,*(undefined4 *)(iVar4 + 0xe8),iVar4, + *(undefined4 *)(iVar4 + 0xec),0x10000); + if (iVar4 != *local_18) { + *local_18 = iVar4; + piVar5 = FUN_00442d2b(iVar2 + 0x20,*(char **)(param_1 + 0x9c + iVar4 * 4),0); + if (piVar5 != (int *)0x0) { + (**(code **)(*(int *)(param_1 + 0x48) + 0x24))(param_1 + 0x48,0xc,piVar6[-1]); + (**(code **)(*(int *)(param_1 + 0x48) + 0x5c)) + (param_1 + 0x48,0,0,piVar5,0,0,*piVar5 + -1,piVar5[1] + -1); + } + FUN_00442e51(iVar2 + 0x20,*(char **)(param_1 + 0x9c + iVar4 * 4)); + } + local_10 = local_10 + 1; + local_18 = local_18 + 1; + piVar6 = piVar6 + 2; + } while (local_10 < 4); + } + return; +} + + + +/* @004c70a4 file=? name=FUN_004c70a4 */ + +int * __cdecl +FUN_004c70a4(int *param_1,undefined4 param_2,undefined4 param_3,int param_4,undefined4 param_5, + int param_6,undefined4 param_7,undefined4 param_8,char *param_9,undefined4 param_10, + undefined4 param_11,int param_12,int param_13,undefined4 param_14,undefined4 param_15) + +{ + undefined4 *puVar1; + + FUN_004c4d88(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8,1,param_9,param_10, + param_11,param_12,param_13,param_15); + *param_1 = (int)&PTR_FUN_0051a174; + param_1[0x2b] = 0; + puVar1 = (undefined4 *)FUN_00402298(0x18); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_004c3134(puVar1,0,param_1 + 0x2b,param_14); + } + (**(code **)(*param_1 + 0x34))(param_1,puVar1); + return param_1; +} + + + +/* @004c7134 file=? name=FUN_004c7134 */ + +void __cdecl FUN_004c7134(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0051a174; + FUN_004c4e7c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004c7160 file=? name=FUN_004c7160 */ + +int * __cdecl +FUN_004c7160(int *param_1,undefined4 param_2,undefined4 param_3,int param_4,undefined4 param_5, + int param_6,undefined4 param_7,undefined4 param_8,char *param_9,undefined4 param_10, + undefined4 param_11,int param_12,int param_13,undefined4 param_14,undefined4 param_15) + +{ + undefined4 *puVar1; + + FUN_004c4d88(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8,1,param_9,param_10, + param_11,param_12,param_13,param_15); + *param_1 = (int)&PTR_FUN_0051a130; + param_1[0x2b] = 0; + puVar1 = (undefined4 *)FUN_00402298(0x18); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_004c31ec(puVar1,0,param_1 + 0x2b,param_14); + } + (**(code **)(*param_1 + 0x34))(param_1,puVar1); + return param_1; +} + + + +/* @004c71f0 file=? name=FUN_004c71f0 */ + +void __cdecl FUN_004c71f0(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0051a130; + FUN_004c4e7c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004c721c file=? name=FUN_004c721c */ + +int * __cdecl +FUN_004c721c(int *param_1,undefined4 param_2,undefined4 param_3,int param_4,undefined4 param_5, + int param_6,int param_7,int param_8,int param_9,int param_10,char *param_11,int param_12 + ,int param_13,undefined4 param_14,float param_15,float param_16,undefined4 param_17, + undefined4 param_18) + +{ + undefined4 *puVar1; + + FUN_00472ef0(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9,param_10, + param_11,param_12,param_13,param_14,param_15,param_16,0,param_18); + *param_1 = (int)&PTR_FUN_0051a0e4; + puVar1 = (undefined4 *)FUN_00402298(0x18); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_004c3288(puVar1,0,param_1 + 0x2d,param_17); + } + (**(code **)(*param_1 + 0x34))(param_1,puVar1); + return param_1; +} + + + +/* @004c72ac file=? name=FUN_004c72ac */ + +int * __cdecl +FUN_004c72ac(int *param_1,undefined4 param_2,undefined4 param_3,int param_4,undefined4 param_5, + int param_6,int param_7,int param_8,int param_9,int param_10,char *param_11,int param_12 + ,int param_13,undefined4 param_14,float param_15,float param_16,undefined4 param_17, + undefined4 param_18) + +{ + undefined4 *puVar1; + + FUN_00472ef0(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9,param_10, + param_11,param_12,param_13,param_14,param_15,param_16,0,param_18); + *param_1 = (int)&PTR_FUN_0051a0e4; + puVar1 = (undefined4 *)FUN_00402298(0x18); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_00474855(puVar1,0,param_1 + 0x2d,param_17); + } + (**(code **)(*param_1 + 0x34))(param_1,puVar1); + return param_1; +} + + + +/* @004c733c file=? name=FUN_004c733c */ + +void __cdecl FUN_004c733c(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0051a0e4; + FUN_00472fb4(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004c7368 file=? name=FUN_004c7368 */ + +undefined4 __cdecl FUN_004c7368(int param_1,int param_2,int param_3,int param_4,int param_5) + +{ + int iVar1; + undefined4 uVar2; + undefined4 *puVar3; + + iVar1 = FUN_0041f98c(param_4,&DAT_00518f24); + if (iVar1 == 0) { + FUN_004dbb24(&DAT_00524e20,s_Subsystem___00519b9c,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_00518f24,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s___not_found__00519ba8,(char *)0x0); + uVar2 = 0; + } + else { + puVar3 = (undefined4 *)FUN_00402298(0xb4); + if (puVar3 != (undefined4 *)0x0) { + FUN_004c746c(puVar3,DAT_00518ee0,param_5,0,param_1,param_2,param_3,iVar1,&DAT_00518f68, + DAT_00518fac,&DAT_00518ff0,DAT_00519034,DAT_00519078,&DAT_005190bc,DAT_00519100, + &DAT_00519144,DAT_00519188,&DAT_005191cc,&DAT_00519210,DAT_00519254,DAT_00519298, + s_GeneratorCluster_00519a8c); + } + uVar2 = 1; + } + return uVar2; +} + + + +/* @004c746c file=? name=FUN_004c746c */ + +undefined4 * __cdecl +FUN_004c746c(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4,int param_5, + int param_6,int param_7,int param_8,char *param_9,int param_10,char *param_11, + int param_12,int param_13,char *param_14,int param_15,char *param_16,int param_17, + char *param_18,char *param_19,int param_20,int param_21,undefined4 param_22) + +{ + undefined4 uVar1; + undefined4 uVar2; + undefined4 uVar3; + undefined4 uVar4; + int iVar5; + int iVar6; + int iVar7; + int iVar8; + int iVar9; + undefined4 uVar10; + int *piVar11; + + FUN_00444818(param_1,0xffff,param_2,param_3,param_4,param_5,param_22); + *param_1 = &PTR_FUN_0051a0a0; + uVar1 = FUN_004442b8(); + uVar2 = FUN_004442b8(); + uVar3 = FUN_004442b8(); + uVar4 = FUN_004442b8(); + iVar5 = FUN_0041bfc0(param_8,s_CurrentTemperature_00519bb6); + iVar6 = FUN_0041bfc0(param_8,s_DegradationTemperature_00519bc9); + iVar7 = FUN_0041bfc0(param_8,s_FailureTemperature_00519be0); + iVar8 = FUN_0041bfc0(param_8,s_CoolantMassLeakRate_00519bf3); + iVar9 = FUN_0041bfc0(param_8,s_OutputVoltage_00519c07); + (**(code **)(param_1[0x12] + 0x10))(param_1 + 0x12,param_6,param_7); + param_1[0x25] = param_17; + uVar10 = FUN_004700ac(param_9); + param_1[0x24] = uVar10; + FUN_00442d2b(*(int *)(param_3 + 0x4c) + 0x20,(char *)param_1[0x24],0); + piVar11 = (int *)FUN_00402298(0xbc); + if (piVar11 == (int *)0x0) { + piVar11 = (int *)0x0; + } + else { + piVar11 = FUN_004c4724(piVar11,uVar1,param_2,param_3,param_4,param_5,param_6 + 5,param_7 + 0x29, + param_6 + 0xc,param_7 + 0x5c,param_11,param_12,param_13,param_10,iVar5, + iVar6,iVar7,s_VertTwoPartBar_0051995c); + } + param_1[0x26] = piVar11; + piVar11 = (int *)FUN_00402298(0xcc); + if (piVar11 == (int *)0x0) { + piVar11 = (int *)0x0; + } + else { + piVar11 = FUN_004c72ac(piVar11,uVar2,param_2,param_3,param_4,param_5,param_6 + 0x18, + param_7 + 0x29,param_6 + 0x1c,param_7 + 0x5c,param_14,param_15,param_10,3 + ,0.0,12000.0,iVar9,s_GeneratorVoltage_scalar__00519a73); + } + param_1[0x27] = piVar11; + piVar11 = (int *)FUN_00402298(0xb8); + if (piVar11 == (int *)0x0) { + piVar11 = (int *)0x0; + } + else { + piVar11 = FUN_004c5b7c(piVar11,uVar3,param_2,param_3,param_4,param_5,param_6,param_7 + 0x27, + param_16,param_10,param_17,3,*(int *)(param_8 + 0x150),iVar8, + s_LeakGauge_005199ce); + } + param_1[0x28] = piVar11; + piVar11 = (int *)FUN_00402298(0xa4); + if (piVar11 == (int *)0x0) { + piVar11 = (int *)0x0; + } + else { + piVar11 = FUN_004739d8(piVar11,uVar4,param_2,param_3,param_4,param_5,param_6 + 0xc,param_7 + 2, + param_18,param_20,param_21,param_8 + 0x1d4,s_TwoState_005198af); + } + param_1[0x29] = piVar11; + piVar11 = (int *)FUN_00402298(0xa4); + if (piVar11 == (int *)0x0) { + piVar11 = (int *)0x0; + } + else { + piVar11 = FUN_004739d8(piVar11,uVar4,param_2,param_3,param_4,param_5,param_6 + 2,param_7 + 2, + param_19,param_20,param_21,param_8 + 0x1d4,s_TwoState_005198af); + } + param_1[0x2a] = piVar11; + param_1[0x2b] = param_8; + return param_1; +} + + + +/* @004c7778 file=? name=FUN_004c7778 */ + +void __cdecl FUN_004c7778(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0051a0a0; + FUN_00442e51(*(int *)(param_1[7] + 0x4c) + 0x20,(char *)param_1[0x24]); + FUN_004022e8((int *)param_1[0x24]); + param_1[0x24] = 0; + FUN_00444870(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004c77d4 file=? name=FUN_004c77d4 */ + +void FUN_004c77d4(void) + +{ + FUN_004448ac(); + return; +} + + + +/* @004c77e4 file=? name=FUN_004c77e4 */ + +void FUN_004c77e4(void) + +{ + return; +} + + + +/* @004c77ec file=? name=FUN_004c77ec */ + +void __cdecl FUN_004c77ec(int param_1) + +{ + *(undefined4 *)(param_1 + 0xb0) = 0xffffffff; + (**(code **)(**(int **)(param_1 + 0x98) + 0xc))(*(int **)(param_1 + 0x98)); + (**(code **)(**(int **)(param_1 + 0x9c) + 0xc))(*(int **)(param_1 + 0x9c)); + (**(code **)(**(int **)(param_1 + 0xa0) + 0xc))(*(int **)(param_1 + 0xa0)); + (**(code **)(**(int **)(param_1 + 0xa4) + 0xc))(*(int **)(param_1 + 0xa4)); + (**(code **)(**(int **)(param_1 + 0xa8) + 0xc))(*(int **)(param_1 + 0xa8)); + return; +} + + + +/* @004c7844 file=? name=FUN_004c7844 */ + +void __cdecl FUN_004c7844(int param_1) + +{ + int iVar1; + int *piVar2; + uint uVar3; + + uVar3 = (uint)(*(int *)(*(int *)(param_1 + 0xac) + 0x40) == 1); + if (uVar3 != *(uint *)(param_1 + 0xb0)) { + *(uint *)(param_1 + 0xb0) = uVar3; + FUN_004c7978(param_1,uVar3); + if (uVar3 == 0) { + iVar1 = *(int *)(*(int *)(param_1 + 0x1c) + 0x4c); + piVar2 = FUN_00442d2b(iVar1 + 0x20,*(char **)(param_1 + 0x90),0); + if (piVar2 != (int *)0x0) { + (**(code **)(*(int *)(param_1 + 0x48) + 0x24))(param_1 + 0x48,0,0); + (**(code **)(*(int *)(param_1 + 0x48) + 0x5c)) + (param_1 + 0x48,1,0,piVar2,0,0,*piVar2 + -1,piVar2[1] + -1); + } + FUN_00442e51(iVar1 + 0x20,*(char **)(param_1 + 0x90)); + } + else { + iVar1 = param_1 + 0x48; + (**(code **)(*(int *)(param_1 + 0x48) + 0x18))(iVar1,*(undefined4 *)(param_1 + 0x94)); + (**(code **)(*(int *)(param_1 + 0x48) + 0x24))(iVar1,0,0); + (**(code **)(*(int *)(param_1 + 0x48) + 0x30))(iVar1,0x23,0x66); + (**(code **)(*(int *)(param_1 + 0x48) + 0x24))(iVar1,1,0); + (**(code **)(*(int *)(param_1 + 0x48) + 0x30))(iVar1,0x24,0x66); + (**(code **)(*(int *)(param_1 + 0x48) + 0x24))(iVar1,0,0x66); + (**(code **)(*(int *)(param_1 + 0x48) + 0x30))(iVar1,0x23,0); + (**(code **)(*(int *)(param_1 + 0x48) + 0x24))(iVar1,1,0x66); + (**(code **)(*(int *)(param_1 + 0x48) + 0x30))(iVar1,0x24,0); + } + } + return; +} + + + +/* @004c7978 file=? name=FUN_004c7978 */ + +void __cdecl FUN_004c7978(int param_1,int param_2) + +{ + FUN_00444650(*(int **)(param_1 + 0x9c),param_2); + FUN_00444650(*(int **)(param_1 + 0x98),param_2); + FUN_00444650(*(int **)(param_1 + 0xa4),param_2); + FUN_00444650(*(int **)(param_1 + 0xa8),param_2); + return; +} + + + +/* @004c79c8 file=? name=FUN_004c79c8 */ + +void __cdecl +FUN_004c79c8(int *param_1,int param_2,int param_3,char *param_4,char *param_5,char *param_6) + +{ + if (param_3 != 0) { + (**(code **)(*param_1 + 0x18))(param_1,0); + (**(code **)(*param_1 + 0x24))(param_1,0x97,0x80); + (**(code **)(*param_1 + 0x48))(param_1,0x17d,0x13b); + } + if (param_4 == (char *)0x0) { + (**(code **)(*param_1 + 0x18))(param_1,0); + (**(code **)(*param_1 + 0x24))(param_1,0x15a,0x145); + (**(code **)(*param_1 + 0x48))(param_1,0x17f,0x159); + } + else { + (**(code **)(*param_1 + 0x18))(param_1,0xff); + FUN_004c2ec4(0x15a,0x145,param_1,param_2,param_4); + } + if (param_5 == (char *)0x0) { + (**(code **)(*param_1 + 0x18))(param_1,0); + (**(code **)(*param_1 + 0x24))(param_1,0x85,0x58); + (**(code **)(*param_1 + 0x48))(param_1,0x17f,0x7c); + } + else { + (**(code **)(*param_1 + 0x18))(param_1,0xff); + FUN_004c2ec4(0x85,0x58,param_1,param_2,param_5); + } + if (param_6 == (char *)0x0) { + (**(code **)(*param_1 + 0x18))(param_1,0); + (**(code **)(*param_1 + 0x24))(param_1,0x2a,0x34); + (**(code **)(*param_1 + 0x4c))(param_1,99,10); + (**(code **)(*param_1 + 0x24))(param_1,10,0); + (**(code **)(*param_1 + 0x48))(param_1,0x9f,0x2d); + } + else { + (**(code **)(*param_1 + 0x18))(param_1,0xff); + FUN_004c2ec4(0x2a,0x34,param_1,param_2,param_6); + } + return; +} + + + +/* @004c7b30 file=? name=FUN_004c7b30 */ + +undefined4 __cdecl +FUN_004c7b30(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,int param_5) + +{ + uint uVar1; + int *piVar2; + undefined4 uVar3; + undefined4 *puVar4; + + uVar1 = DAT_0051936c; + if (((int)DAT_0051936c < 1) || (0xc < (int)DAT_0051936c)) { + FUN_004dbb24(&DAT_00524e20,s_PrepEngr__screen_number_out_of_r_00519c1e,(char *)0x0); + piVar2 = FUN_004db78c(&DAT_00524e20,uVar1); + FUN_004dbb24(piVar2,&DAT_00519c46,(char *)0x0); + uVar3 = 0; + } + else { + puVar4 = (undefined4 *)FUN_00402298(0x90); + if (puVar4 != (undefined4 *)0x0) { + FUN_004c7bf0(puVar4,DAT_00519328,param_5,0,param_1,param_4,DAT_0051936c,&DAT_005193b0, + &DAT_005193f4,&DAT_00519438,&DAT_0051947c,&DAT_005194c0,&DAT_00519504, + &DAT_00519548,s_PrepEngr_00519a9d); + } + uVar3 = 1; + } + return uVar3; +} + + + +/* @004c7bf0 file=? name=FUN_004c7bf0 */ + +undefined4 * __cdecl +FUN_004c7bf0(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4,int param_5, + undefined4 param_6,undefined4 param_7,char *param_8,char *param_9,char *param_10, + char *param_11,char *param_12,char *param_13,char *param_14,undefined4 param_15) + +{ + int iVar1; + undefined4 uVar2; + + FUN_004440d4(param_1,param_2,param_3,param_4,param_5,param_15); + *param_1 = &PTR_FUN_0051a06c; + param_1[0x1c] = param_6; + param_1[0x1b] = param_7; + uVar2 = FUN_004700ac(param_8); + param_1[0x1d] = uVar2; + uVar2 = FUN_004700ac(param_9); + param_1[0x1e] = uVar2; + uVar2 = FUN_004700ac(param_10); + param_1[0x1f] = uVar2; + uVar2 = FUN_004700ac(param_11); + param_1[0x20] = uVar2; + uVar2 = FUN_004700ac(param_12); + param_1[0x21] = uVar2; + uVar2 = FUN_004700ac(param_13); + param_1[0x22] = uVar2; + uVar2 = FUN_004700ac(param_14); + param_1[0x23] = uVar2; + iVar1 = *(int *)(param_3 + 0x4c) + 4; + FUN_00442aec(iVar1,(char *)param_1[0x1d],0); + FUN_00442aec(iVar1,(char *)param_1[0x1e],0); + FUN_00442aec(iVar1,(char *)param_1[0x1f],0); + FUN_00442aec(iVar1,(char *)param_1[0x20],0); + FUN_00442aec(iVar1,(char *)param_1[0x21],0); + FUN_00442aec(iVar1,(char *)param_1[0x22],0); + FUN_00442aec(iVar1,(char *)param_1[0x23],0); + return param_1; +} + + + +/* @004c7d14 file=? name=FUN_004c7d14 */ + +void __cdecl FUN_004c7d14(int *param_1,byte param_2) + +{ + int iVar1; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0051a06c; + iVar1 = *(int *)(param_1[7] + 0x4c) + 4; + FUN_00442c12(iVar1,(char *)param_1[0x1d]); + FUN_00442c12(iVar1,(char *)param_1[0x1e]); + FUN_00442c12(iVar1,(char *)param_1[0x1f]); + FUN_00442c12(iVar1,(char *)param_1[0x20]); + FUN_00442c12(iVar1,(char *)param_1[0x21]); + FUN_00442c12(iVar1,(char *)param_1[0x22]); + FUN_00442c12(iVar1,(char *)param_1[0x23]); + FUN_004022e8((int *)param_1[0x1d]); + param_1[0x1d] = 0; + FUN_004022e8((int *)param_1[0x1e]); + param_1[0x1e] = 0; + FUN_004022e8((int *)param_1[0x1f]); + param_1[0x1f] = 0; + FUN_004022e8((int *)param_1[0x20]); + param_1[0x20] = 0; + FUN_004022e8((int *)param_1[0x21]); + param_1[0x21] = 0; + FUN_004022e8((int *)param_1[0x22]); + param_1[0x22] = 0; + FUN_004022e8((int *)param_1[0x23]); + param_1[0x23] = 0; + FUN_0044ae0c(param_1 + 9,2); + FUN_00443f7c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004c7e48 file=? name=FUN_004c7e48 */ + +void __cdecl FUN_004c7e48(int param_1) + +{ + int *piVar1; + int iVar2; + int iVar3; + int iVar4; + int local_58 [17]; + char *local_14; + int local_10; + int local_c; + int local_8; + + local_8 = *(int *)(*(int *)(param_1 + 0x1c) + 0x4c); + local_c = *(int *)(*(int *)(param_1 + 0x70) + 0x124); + iVar4 = 0; + if (0 < local_c) { + do { + if ((((iVar4 != 0) && + (iVar2 = *(int *)(*(int *)(*(int *)(param_1 + 0x70) + 0x128) + iVar4 * 4), iVar2 != 0)) + && (iVar3 = FUN_0041a1a4(**(int **)(iVar2 + 0xc),0x50f4bc), iVar3 != 0)) && + (*(int *)(iVar2 + 0x1dc) == *(int *)(param_1 + 0x6c))) { + FUN_004700bc(local_58,local_8,0xe9,0x176,*(char **)(param_1 + 0x74),2,0,0,0xff); + piVar1 = (int *)(param_1 + 0x24); + FUN_00470430(local_58,piVar1,(float)*(int *)(param_1 + 0x6c)); + FUN_0047018c(local_58,2); + local_10 = 0; + iVar4 = FUN_0041bfc0(iVar2,s_HeatSink_00519c49); + if ((iVar4 != 0) && (iVar4 = FUN_00417ab4(iVar4), iVar4 != 0)) { + local_10 = *(int *)(iVar4 + 0x1d4); + } + FUN_004700bc((int *)&stack0xffffff64,local_8,0x15e,5,*(char **)(param_1 + 0x74),1,0,0,0xff); + FUN_00470430((int *)&stack0xffffff64,piVar1,(float)local_10); + FUN_0047018c((int *)&stack0xffffff64,2); + local_14 = (char *)(iVar2 + 0x224); + (**(code **)(*(int *)(param_1 + 0x24) + 0x18))(); + (**(code **)(*(int *)(param_1 + 0x24) + 0x24))(); + (**(code **)(*(int *)(param_1 + 0x24) + 0x48))(); + if (local_14 != (char *)0x0) { + (**(code **)(*(int *)(param_1 + 0x24) + 0x18))(); + FUN_004c2ec4(0x125,0x172,piVar1,local_8,local_14); + } + switch(*(undefined4 *)(iVar2 + 4)) { + case 0xbc3: + FUN_004c79c8((int *)(param_1 + 0x24),local_8,1,(char *)0x0,(char *)0x0,(char *)0x0); + (**(code **)(*(int *)(param_1 + 0x24) + 0x18))(); + FUN_004c2ec4(0xb8,0x8c,(int *)(param_1 + 0x24),local_8,*(char **)(param_1 + 0x8c)); + return; + default: + return; + case 0xbc6: + FUN_004c79c8((int *)(param_1 + 0x24),local_8,0,(char *)0x0,*(char **)(param_1 + 0x88), + *(char **)(param_1 + 0x80)); + return; + case 0xbc8: + case 0xbd4: + FUN_004c79c8((int *)(param_1 + 0x24),local_8,0,*(char **)(param_1 + 0x78), + *(char **)(param_1 + 0x7c),*(char **)(param_1 + 0x80)); + return; + case 0xbcd: + case 0xbd0: + FUN_004c79c8((int *)(param_1 + 0x24),local_8,1,(char *)0x0,(char *)0x0, + *(char **)(param_1 + 0x84)); + return; + case 0xbce: + FUN_004dbb24(&DAT_00524e20,s_PrepEngr__Gauss_rifle_not_yet_su_00519c52,(char *)0x0); + FUN_004c79c8((int *)(param_1 + 0x24),local_8,1,(char *)0x0,(char *)0x0, + *(char **)(param_1 + 0x80)); + return; + } + } + iVar4 = iVar4 + 1; + } while (iVar4 < local_c); + } + return; +} + + + +/* @004c8140 file=? name=FUN_004c8140 */ + +undefined4 * __cdecl +FUN_004c8140(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4,int param_5, + int param_6,int param_7,int param_8,undefined4 param_9,char *param_10,char *param_11, + char *param_12,int param_13,undefined4 param_14) + +{ + undefined4 uVar1; + undefined4 uVar2; + undefined4 uVar3; + undefined4 uVar4; + undefined4 uVar5; + undefined4 uVar6; + undefined4 uVar7; + int iVar8; + int iVar9; + int iVar10; + int iVar11; + int iVar12; + int *piVar13; + undefined4 *puVar14; + int iVar15; + int iVar16; + int iVar17; + + FUN_00444818(param_1,0xffff,0xffffffff,param_3,param_4,param_5,param_14); + *param_1 = &PTR_FUN_0051a020; + uVar1 = FUN_004442b8(); + uVar2 = FUN_004442b8(); + uVar3 = FUN_004442b8(); + uVar4 = FUN_004442b8(); + uVar5 = FUN_004442dc(); + uVar6 = FUN_004442dc(); + uVar7 = FUN_004442dc(); + iVar8 = FUN_0041bfc0(param_8,s_InputVoltage_00519c7b); + iVar9 = FUN_0041bfc0(param_8,s_HeatSink_00519c88); + iVar10 = FUN_0041bfc0(param_8,s_CurrentTemperature_00519c91); + iVar11 = FUN_0041bfc0(param_8,s_DegradationTemperature_00519ca4); + iVar12 = FUN_0041bfc0(param_8,s_FailureTemperature_00519cbb); + iVar15 = *(int *)(param_3 + 0x4c); + piVar13 = (int *)FUN_00402298(0xb8); + if (piVar13 == (int *)0x0) { + piVar13 = (int *)0x0; + } + else { + piVar13 = FUN_004c4170(piVar13,uVar1,param_2,param_3,param_4,param_5,param_6 + 0x13, + param_7 + 0x10,param_6 + 0xdc,param_7 + 0x1f,param_11,0xff,0,iVar10, + iVar11,iVar12,s_HorizTwoPartBar_0051994c); + } + param_1[0x26] = piVar13; + piVar13 = (int *)FUN_00402298(0xb4); + if (piVar13 == (int *)0x0) { + piVar13 = (int *)0x0; + } + else { + piVar13 = FUN_004c70a4(piVar13,uVar2,param_2,param_3,param_4,param_5,param_6 + 0xe5, + param_7 + 0xe,s_btploop_pcc_00519cce,0xff,0,7,1,param_8, + s_CoolingLoop_00519a42); + } + param_1[0x27] = piVar13; + if (iVar8 == 0) { + param_1[0x29] = 0; + } + else { + piVar13 = (int *)FUN_00402298(0xb4); + if (piVar13 == (int *)0x0) { + piVar13 = (int *)0x0; + } + else { + piVar13 = FUN_004c7160(piVar13,uVar3,param_2,param_3,param_4,param_5,param_6 + 0x10e, + param_7 + 0xe,s_btpbus_pcc_00519cda,0xff,0,5,1,iVar8, + s_PowerSource_00519a4e); + } + param_1[0x29] = piVar13; + } + iVar16 = *(int *)(param_8 + 0x1e0); + param_1[0x24] = 0; + if ((-1 < iVar16) && (*(int *)(param_13 + iVar16 * 4) != 0)) { + puVar14 = (undefined4 *)FUN_00402298(0x7c); + if (puVar14 == (undefined4 *)0x0) { + puVar14 = (undefined4 *)0x0; + } + else { + puVar14 = FUN_00471d00(puVar14,param_2,param_3,param_4,param_5,param_6 + 0x90,param_7 + 0x36, + *(char **)(param_13 + iVar16 * 4),0,0xff,0,s_BackgroundBitmap_00519843) + ; + } + param_1[0x24] = puVar14; + } + (**(code **)(param_1[0x12] + 0x10))(param_1 + 0x12,param_6,param_7); + (**(code **)(param_1[0x12] + 0x18))(param_1 + 0x12,0xff); + FUN_004c2ec4(9,0xb4,param_1 + 0x12,iVar15,param_12); + iVar15 = FUN_00447f1c(param_3,param_10); + iVar9 = FUN_00417ab4(iVar9); + iVar16 = FUN_0041bfc0(iVar9,s_CurrentTemperature_00519ce5); + iVar9 = FUN_0041bfc0(iVar9,s_DegradationTemperature_00519cf8); + iVar17 = FUN_0041bfc0(param_8,s_CoolantMassLeakRate_00519d0f); + piVar13 = (int *)FUN_00402298(0xb4); + if (piVar13 == (int *)0x0) { + piVar13 = (int *)0x0; + } + else { + piVar13 = FUN_004c70a4(piVar13,uVar1,param_9,param_3,param_4,iVar15,0x254,0x13b, + s_bteloop_pcc_00519d23,0xff,0,7,1,param_8,s_CoolingLoop_00519a42); + } + param_1[0x28] = piVar13; + piVar13 = (int *)FUN_00402298(0xb4); + if (piVar13 == (int *)0x0) { + piVar13 = (int *)0x0; + } + else { + piVar13 = FUN_004c5148(piVar13,uVar2,param_9,param_3,param_4,iVar15,400,10, + s_btecmode_pcc_00519d2f,0xff,0,1,2,param_8 + 0x134, + s_OneOfSeveralInt_00519989); + } + param_1[0x2d] = piVar13; + if (iVar8 == 0) { + param_1[0x2a] = 0; + param_1[0x25] = 0; + param_1[0x2e] = 0; + } + else { + piVar13 = (int *)FUN_00402298(0xb4); + if (piVar13 == (int *)0x0) { + piVar13 = (int *)0x0; + } + else { + piVar13 = FUN_004c7160(piVar13,uVar3,param_9,param_3,param_4,iVar15,0x1a,0xd0, + s_btebus_pcc_00519d3c,0xff,0,5,1,iVar8,s_PowerSource_00519a4e); + } + param_1[0x2a] = piVar13; + piVar13 = (int *)FUN_00402298(0xcc); + if (piVar13 == (int *)0x0) { + piVar13 = (int *)0x0; + } + else { + piVar13 = FUN_004c721c(piVar13,uVar4,param_9,param_3,param_4,iVar15,0x89,0x82,0x93,0x13b, + s_evolt_pcc_00519d47,0xff,0,3,0.0,12000.0,iVar8, + s_GeneratorVoltage_slotOf__00519a5a); + } + param_1[0x25] = piVar13; + iVar8 = FUN_0041a1a4(**(int **)(param_8 + 0xc),0x50f4bc); + if (iVar8 == 0) { + param_1[0x2e] = 0; + } + else { + piVar13 = (int *)FUN_00402298(0xb4); + if (piVar13 == (int *)0x0) { + piVar13 = (int *)0x0; + } + else { + piVar13 = FUN_004c5470(piVar13,uVar1,param_9,param_3,param_4,iVar15,0xbe,0, + s_btemode_pcc_00519d51,0xff,0,1,3,param_8 + 0x2b8, + s_OneOfSeveralStates_005199ac); + } + param_1[0x2e] = piVar13; + } + } + piVar13 = (int *)FUN_00402298(0xbc); + if (piVar13 == (int *)0x0) { + piVar13 = (int *)0x0; + } + else { + piVar13 = FUN_004c4724(piVar13,uVar5,param_9,param_3,param_4,iVar15,0x1d1,0x5c,0x1eb,0x124, + param_11,0xff,0xff,0,iVar10,iVar11,iVar12,s_VertTwoPartBar_0051995c); + } + param_1[0x2c] = piVar13; + piVar13 = (int *)FUN_00402298(0xbc); + if (piVar13 == (int *)0x0) { + piVar13 = (int *)0x0; + } + else { + piVar13 = FUN_004c4724(piVar13,uVar6,param_9,param_3,param_4,iVar15,0x222,0x5c,0x23d,0x124, + param_11,0xff,0xff,0,iVar16,iVar9,iVar12,s_VertTwoPartBar_0051995c); + } + param_1[0x2b] = piVar13; + piVar13 = (int *)FUN_00402298(0xb8); + if (piVar13 == (int *)0x0) { + piVar13 = (int *)0x0; + } + else { + piVar13 = FUN_004c5b7c(piVar13,uVar7,param_9,param_3,param_4,iVar15,0x255,0xe0, + s_eleak_pcc_00519d5d,0,0xff,3,*(int *)(param_8 + 0x150),iVar17, + s_LeakGauge_005199ce); + } + param_1[0x2f] = piVar13; + param_1[0x31] = 0; + param_1[0x30] = param_8; + return param_1; +} + + + +/* @004c87dc file=? name=FUN_004c87dc */ + +void __cdecl FUN_004c87dc(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0051a020; + FUN_00444870(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004c8808 file=? name=FUN_004c8808 */ + +void FUN_004c8808(void) + +{ + FUN_004448ac(); + return; +} + + + +/* @004c8818 file=? name=FUN_004c8818 */ + +void FUN_004c8818(void) + +{ + return; +} + + + +/* @004c8820 file=? name=FUN_004c8820 */ + +void __cdecl FUN_004c8820(int param_1) + +{ + int *piVar1; + + piVar1 = *(int **)(param_1 + 0x90); + if (piVar1 != (int *)0x0) { + (**(code **)(*piVar1 + 0xc))(piVar1); + } + (**(code **)(**(int **)(param_1 + 0x98) + 0xc))(*(int **)(param_1 + 0x98)); + (**(code **)(**(int **)(param_1 + 0x9c) + 0xc))(*(int **)(param_1 + 0x9c)); + (**(code **)(**(int **)(param_1 + 0xa0) + 0xc))(*(int **)(param_1 + 0xa0)); + (**(code **)(**(int **)(param_1 + 0xb4) + 0xc))(*(int **)(param_1 + 0xb4)); + piVar1 = *(int **)(param_1 + 0xa4); + if (piVar1 != (int *)0x0) { + (**(code **)(*piVar1 + 0xc))(piVar1); + } + piVar1 = *(int **)(param_1 + 0xa8); + if (piVar1 != (int *)0x0) { + (**(code **)(*piVar1 + 0xc))(piVar1); + } + piVar1 = *(int **)(param_1 + 0xb8); + if (piVar1 != (int *)0x0) { + (**(code **)(*piVar1 + 0xc))(piVar1); + } + piVar1 = *(int **)(param_1 + 0x94); + if (piVar1 != (int *)0x0) { + (**(code **)(*piVar1 + 0xc))(piVar1); + } + (**(code **)(**(int **)(param_1 + 0xac) + 0xc))(*(int **)(param_1 + 0xac)); + (**(code **)(**(int **)(param_1 + 0xb0) + 0xc))(*(int **)(param_1 + 0xb0)); + (**(code **)(**(int **)(param_1 + 0xbc) + 0xc))(*(int **)(param_1 + 0xbc)); + *(undefined4 *)(param_1 + 200) = 0; + return; +} + + + +/* @004c88e4 file=? name=FUN_004c88e4 */ + +void __cdecl FUN_004c88e4(int *param_1) + +{ + int *piVar1; + int iVar2; + + param_1[0x31] = (uint)(*(int *)(param_1[0x30] + 0x40) == 1); + iVar2 = (**(code **)(*param_1 + 0x48))(param_1); + if (iVar2 != param_1[0x32]) { + param_1[0x32] = iVar2; + (**(code **)(*param_1 + 0x44))(param_1,iVar2); + if (iVar2 == 0) { + FUN_004c89c4((int)param_1,0); + piVar1 = (int *)param_1[0x24]; + if (piVar1 != (int *)0x0) { + (**(code **)(*piVar1 + 0xc))(piVar1); + } + } + else { + piVar1 = param_1 + 0x12; + (**(code **)(param_1[0x12] + 0x18))(piVar1,0); + (**(code **)(param_1[0x12] + 0x24))(piVar1,1,0x32); + (**(code **)(param_1[0x12] + 0x48))(piVar1,0x136,0xad); + FUN_004c89c4((int)param_1,0xff); + } + } + return; +} + + + +/* @004c8990 file=? name=FUN_004c8990 */ + +undefined4 __cdecl FUN_004c8990(int param_1) + +{ + if (*(int *)(param_1 + 0xc4) != 0) { + return 1; + } + if (*(int *)(*(int *)(param_1 + 0xc0) + 0x278) != 4) { + return 1; + } + return 0; +} + + + +/* @004c89c4 file=? name=FUN_004c89c4 */ + +void __cdecl FUN_004c89c4(int param_1,undefined4 param_2) + +{ + int iVar1; + + iVar1 = param_1 + 0x48; + (**(code **)(*(int *)(param_1 + 0x48) + 0x18))(iVar1,param_2); + (**(code **)(*(int *)(param_1 + 0x48) + 0x24))(iVar1,9,0x33); + (**(code **)(*(int *)(param_1 + 0x48) + 0x38))(iVar1,0x132,0xab); + (**(code **)(*(int *)(param_1 + 0x48) + 0x24))(iVar1,9,0xab); + (**(code **)(*(int *)(param_1 + 0x48) + 0x38))(iVar1,0x132,0x33); + return; +} + + + +/* @004c8a28 file=? name=FUN_004c8a28 */ + +void __cdecl FUN_004c8a28(int param_1,int param_2) + +{ + FUN_00444650(*(int **)(param_1 + 0x98),param_2); + FUN_00444650(*(int **)(param_1 + 0x9c),param_2); + if (*(int **)(param_1 + 0xa4) != (int *)0x0) { + FUN_00444650(*(int **)(param_1 + 0xa4),param_2); + } + return; +} + + + +/* @004c8a6c file=? name=FUN_004c8a6c */ + +int * __cdecl +FUN_004c8a6c(int *param_1,undefined4 param_2,int param_3,undefined4 param_4,int param_5,int param_6, + int param_7,int param_8,int param_9,undefined4 param_10,char *param_11,char *param_12, + char *param_13,char *param_14,int param_15,undefined4 param_16) + +{ + undefined4 uVar1; + undefined4 uVar2; + undefined4 uVar3; + undefined4 uVar4; + int iVar5; + int *piVar6; + undefined4 *puVar7; + + FUN_004c8140(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_10,param_11, + param_12,param_13,param_15,param_16); + *param_1 = (int)&PTR_FUN_00519fd4; + uVar1 = FUN_004442dc(); + uVar2 = FUN_004442dc(); + uVar3 = FUN_004442dc(); + uVar4 = FUN_004442dc(); + param_1[0x36] = 0x42c80000; + iVar5 = FUN_00447f1c(param_3,param_11); + piVar6 = (int *)FUN_00402298(0xa4); + if (piVar6 == (int *)0x0) { + piVar6 = (int *)0x0; + } + else { + piVar6 = FUN_004739d8(piVar6,uVar1,param_10,param_3,param_4,iVar5,200,0x110,param_14,0,0xff, + param_1 + 0x31,s_TwoState_005198af); + } + param_1[0x37] = (int)piVar6; + param_1[0x33] = param_9; + param_1[0x34] = 0; + piVar6 = (int *)FUN_00402298(0xa4); + if (piVar6 == (int *)0x0) { + piVar6 = (int *)0x0; + } + else { + piVar6 = FUN_004739d8(piVar6,uVar2,param_10,param_3,param_4,iVar5,0x97,0xe8, + s_btehfail_pcc_00519d67,0,0xff,param_1 + 0x34,s_TwoState_005198af); + } + param_1[0x38] = (int)piVar6; + piVar6 = (int *)FUN_00402298(0xa4); + if (piVar6 == (int *)0x0) { + piVar6 = (int *)0x0; + } + else { + piVar6 = FUN_004739d8(piVar6,uVar3,param_10,param_3,param_4,iVar5,0x97,0xc0, + s_btepfail_pcc_00519d74,0,0xff,param_8 + 0x324,s_TwoState_005198af); + } + param_1[0x39] = (int)piVar6; + piVar6 = (int *)FUN_00402298(0xa4); + if (piVar6 == (int *)0x0) { + piVar6 = (int *)0x0; + } + else { + piVar6 = FUN_004739d8(piVar6,uVar4,param_10,param_3,param_4,iVar5,0x97,0x98, + s_btesfail_pcc_00519d81,0xff,0,param_8 + 800,s_TwoState_005198af); + } + param_1[0x3a] = (int)piVar6; + piVar6 = (int *)FUN_00402298(0x98); + if (piVar6 == (int *)0x0) { + piVar6 = (int *)0x0; + } + else { + piVar6 = FUN_00470888(piVar6,uVar3,param_10,param_3,param_4,iVar5,0x132,0x8c,0x15a,0xaa, + s_helv18_pcc_00519d8e,3,0,0,0xff,param_1 + 0x36, + s_NumericDisplayScalar_005197a5); + } + param_1[0x3b] = (int)piVar6; + puVar7 = (undefined4 *)FUN_00402298(0x18); + if (puVar7 == (undefined4 *)0x0) { + puVar7 = (undefined4 *)0x0; + } + else { + puVar7 = FUN_00474855(puVar7,0,param_1 + 0x35,param_8 + 0x31c); + } + (**(code **)(*param_1 + 0x34))(param_1,puVar7); + return param_1; +} + + + +/* @004c8d18 file=? name=FUN_004c8d18 */ + +void __cdecl FUN_004c8d18(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_00519fd4; + FUN_004c87dc(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004c8d44 file=? name=FUN_004c8d44 */ + +void FUN_004c8d44(void) + +{ + FUN_004c8808(); + return; +} + + + +/* @004c8d54 file=? name=FUN_004c8d54 */ + +void FUN_004c8d54(void) + +{ + return; +} + + + +/* @004c8d5c file=? name=FUN_004c8d5c */ + +void __cdecl FUN_004c8d5c(int param_1) + +{ + FUN_004c8820(param_1); + (**(code **)(**(int **)(param_1 + 0xdc) + 0xc))(*(int **)(param_1 + 0xdc)); + (**(code **)(**(int **)(param_1 + 0xe4) + 0xc))(*(int **)(param_1 + 0xe4)); + (**(code **)(**(int **)(param_1 + 0xe0) + 0xc))(*(int **)(param_1 + 0xe0)); + (**(code **)(**(int **)(param_1 + 0xe8) + 0xc))(*(int **)(param_1 + 0xe8)); + (**(code **)(**(int **)(param_1 + 0xec) + 0xc))(*(int **)(param_1 + 0xec)); + return; +} + + + +/* @004c8db0 file=? name=FUN_004c8db0 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004c8db0(int *param_1) + +{ + if (param_1[0x33] != 0) { + param_1[0x34] = (uint)(*(int *)(param_1[0x33] + 0x40) == 1); + } + param_1[0x36] = (int)((float)param_1[0x35] * _DAT_004c8df0); + FUN_004c88e4(param_1); + return; +} + + + +/* @004c8f54 file=? name=FUN_004c8f54 */ + +void __cdecl FUN_004c8f54(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_00519f88; + FUN_004c87dc(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004c8f80 file=? name=FUN_004c8f80 */ + +void FUN_004c8f80(void) + +{ + FUN_004c8808(); + return; +} + + + +/* @004c8f90 file=? name=FUN_004c8f90 */ + +void FUN_004c8f90(void) + +{ + return; +} + + + +/* @004c8f98 file=? name=FUN_004c8f98 */ + +void __cdecl FUN_004c8f98(int param_1) + +{ + FUN_004c8820(param_1); + (**(code **)(**(int **)(param_1 + 0xd0) + 0xc))(*(int **)(param_1 + 0xd0)); + (**(code **)(**(int **)(param_1 + 0xd4) + 0xc))(*(int **)(param_1 + 0xd4)); + return; +} + + + +/* @004c8fc4 file=? name=FUN_004c8fc4 */ + +int * __cdecl +FUN_004c8fc4(int *param_1,undefined4 param_2,int param_3,undefined4 param_4,int param_5,int param_6, + int param_7,int param_8,undefined4 param_9,char *param_10,char *param_11,char *param_12, + char *param_13,int param_14,undefined4 param_15) + +{ + char *pcVar1; + undefined4 uVar2; + int iVar3; + int iVar4; + undefined4 *puVar5; + int *piVar6; + + FUN_004c8140(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9,param_10, + param_11,param_12,param_14,param_15); + *param_1 = (int)&PTR_FUN_00519f38; + uVar2 = FUN_004442b8(); + iVar3 = FUN_0041bfc0(param_8,s_PercentDone_00519dbf); + iVar4 = FUN_004700ac(param_13); + param_1[0x33] = iVar4; + puVar5 = FUN_00442aec(*(int *)(param_3 + 0x4c) + 4,(char *)param_1[0x33],0); + if (puVar5 == (undefined4 *)0x0) { + pcVar1 = (char *)param_1[0x33]; + FUN_004dbb24(&DAT_00524e20,s_WeaponCluster_missing___00519dcb,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,pcVar1,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_00519de3,(char *)0x0); + param_1[0x37] = 0; + param_1[0x38] = 0; + } + else { + param_1[0x37] = 0x41 - ((int)puVar5[3] >> 1); + param_1[0x38] = 0x6d - ((int)puVar5[4] >> 1); + } + piVar6 = (int *)FUN_00402298(0xc4); + if (piVar6 == (int *)0x0) { + piVar6 = (int *)0x0; + } + else { + piVar6 = FUN_004c6244(piVar6,0xffff,param_2,param_3,0,param_5,param_6 + 0x41,param_7 + 0x6d,40.0 + ,60.0,40.0,60.0,0.0,360.0,0x14,0,0xff,iVar3,1,s_SegmentArc270_00519a02); + } + param_1[0x34] = (int)piVar6; + puVar5 = (undefined4 *)FUN_00402298(0xc0); + if (puVar5 == (undefined4 *)0x0) { + puVar5 = (undefined4 *)0x0; + } + else { + puVar5 = FUN_004c6d80(puVar5,uVar2,param_2,param_3,0,param_5,param_6 + 0xee,param_7 + 0x38, + param_8,s_ConfigMap_00519a38); + } + param_1[0x35] = (int)puVar5; + puVar5 = (undefined4 *)FUN_00402298(0x18); + if (puVar5 == (undefined4 *)0x0) { + puVar5 = (undefined4 *)0x0; + } + else { + puVar5 = FUN_00474855(puVar5,0,param_1 + 0x36,iVar3); + } + (**(code **)(*param_1 + 0x34))(param_1,puVar5); + return param_1; +} + + + +/* @004c91d4 file=? name=FUN_004c91d4 */ + +void __cdecl FUN_004c91d4(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_00519f38; + FUN_00442c12(*(int *)(param_1[7] + 0x4c) + 4,(char *)param_1[0x33]); + FUN_004022e8((int *)param_1[0x33]); + param_1[0x33] = 0; + FUN_004c87dc(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004c9230 file=? name=FUN_004c9230 */ + +void FUN_004c9230(void) + +{ + FUN_004740c0(); + FUN_004c8808(); + return; +} + + + +/* @004c9250 file=? name=FUN_004c9250 */ + +void FUN_004c9250(void) + +{ + return; +} + + + +/* @004c9258 file=? name=FUN_004c9258 */ + +void __cdecl FUN_004c9258(int param_1) + +{ + *(undefined4 *)(param_1 + 0xe4) = 0xfffffffe; + (**(code **)(**(int **)(param_1 + 0xd4) + 0xc))(*(int **)(param_1 + 0xd4)); + (**(code **)(**(int **)(param_1 + 0xd0) + 0xc))(*(int **)(param_1 + 0xd0)); + FUN_004c8820(param_1); + return; +} + + + +/* @004c9290 file=? name=FUN_004c9290 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004c9290(int *param_1) + +{ + uint uVar1; + + FUN_004c88e4(param_1); + if ((param_1[0x32] == 0) && + (uVar1 = (uint)(_DAT_004c92e0 < (float)param_1[0x36]), uVar1 != param_1[0x39])) { + param_1[0x39] = uVar1; + (**(code **)(*param_1 + 0x4c))(param_1,uVar1); + } + return; +} + + + +/* @004c92e4 file=? name=FUN_004c92e4 */ + +void __cdecl FUN_004c92e4(int param_1,int param_2) + +{ + FUN_00444650(*(int **)(param_1 + 0xd4),param_2); + FUN_00444650(*(int **)(param_1 + 0xd0),param_2); + if (param_2 == 0) { + *(undefined4 *)(param_1 + 0xe4) = 0xfffffffe; + } + FUN_004c8a28(param_1,param_2); + return; +} + + + +/* @004c932c file=? name=FUN_004c932c */ + +void __cdecl FUN_004c932c(int param_1,int param_2) + +{ + undefined4 *puVar1; + undefined4 uVar2; + + puVar1 = FUN_00442aec(*(int *)(*(int *)(param_1 + 0x1c) + 0x4c) + 4,*(char **)(param_1 + 0xcc),0); + if (puVar1 != (undefined4 *)0x0) { + (**(code **)(*(int *)(param_1 + 0x48) + 0x24)) + (param_1 + 0x48,*(undefined4 *)(param_1 + 0xdc),*(undefined4 *)(param_1 + 0xe0)); + uVar2 = 0; + if (param_2 != 0) { + uVar2 = 0xff; + } + (**(code **)(*(int *)(param_1 + 0x48) + 0x18))(param_1 + 0x48,uVar2); + (**(code **)(*(int *)(param_1 + 0x48) + 0x54)) + (param_1 + 0x48,0,puVar1,0,0,puVar1[3] + -1,puVar1[4] + -1); + } + return; +} + + + +/* @004c93b0 file=? name=FUN_004c93b0 */ + +int * __cdecl +FUN_004c93b0(int *param_1,undefined4 param_2,int param_3,undefined4 param_4,int param_5,int param_6, + int param_7,int param_8,undefined4 param_9,char *param_10,char *param_11,char *param_12, + char *param_13,int param_14,undefined4 param_15) + +{ + undefined4 uVar1; + int iVar2; + int iVar3; + undefined4 *puVar4; + int *piVar5; + + FUN_004c8fc4(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9,param_10, + param_11,param_12,param_13,param_14,param_15); + *param_1 = (int)&PTR_FUN_00519ee8; + uVar1 = FUN_004442dc(); + iVar2 = FUN_00447f1c(param_3,param_10); + iVar3 = FUN_0041bfc0(param_8,s_OutputVoltage_00519de7); + puVar4 = (undefined4 *)FUN_00402298(0xcc); + if (puVar4 == (undefined4 *)0x0) { + puVar4 = (undefined4 *)0x0; + } + else { + puVar4 = FUN_004c6798(puVar4,0xffff,param_9,param_3,0,iVar2,param_8,iVar3, + s_edestryd_pcc_00519df5,1,s_EngrGraph_00519a2e); + } + param_1[0x3a] = (int)puVar4; + piVar5 = (int *)FUN_00402298(0xb4); + if (piVar5 == (int *)0x0) { + piVar5 = (int *)0x0; + } + else { + piVar5 = FUN_004c5148(piVar5,uVar1,param_9,param_3,param_4,iVar2,0xf,0,s_bteseek_pcc_00519e02, + 0xff,0,1,4,param_8 + 0x3f0,s_OneOfSeveralInt_00519989); + } + param_1[0x3b] = (int)piVar5; + return param_1; +} + + + +/* @004c94dc file=? name=FUN_004c94dc */ + +void __cdecl FUN_004c94dc(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_00519ee8; + FUN_004c91d4(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004c9508 file=? name=FUN_004c9508 */ + +void FUN_004c9508(void) + +{ + FUN_004c9230(); + return; +} + + + +/* @004c9518 file=? name=FUN_004c9518 */ + +void FUN_004c9518(void) + +{ + return; +} + + + +/* @004c9520 file=? name=FUN_004c9520 */ + +void __cdecl FUN_004c9520(int param_1) + +{ + FUN_004c9258(param_1); + (**(code **)(**(int **)(param_1 + 0xe8) + 0xc))(*(int **)(param_1 + 0xe8)); + (**(code **)(**(int **)(param_1 + 0xec) + 0xc))(*(int **)(param_1 + 0xec)); + *(undefined4 *)(param_1 + 0xe4) = 0xffffffff; + return; +} + + + +/* @004c9558 file=? name=FUN_004c9558 */ + +int * __cdecl +FUN_004c9558(int *param_1,undefined4 param_2,int param_3,undefined4 param_4,int param_5,int param_6, + int param_7,int param_8,undefined4 param_9,char *param_10,char *param_11,char *param_12, + char *param_13,int param_14,char *param_15,char *param_16,undefined4 param_17) + +{ + int *piVar1; + undefined4 uVar2; + undefined4 uVar3; + undefined4 uVar4; + undefined4 uVar5; + undefined4 uVar6; + int iVar7; + int iVar8; + undefined4 *puVar9; + undefined4 *puVar10; + + FUN_004c8fc4(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9,param_10, + param_11,param_12,param_13,param_14,param_17); + *param_1 = (int)&PTR_FUN_00519e98; + piVar1 = (int *)FUN_00414b60(); + param_1[0x3d] = *piVar1; + param_1[0x3e] = (int)((float)param_1[0x3d] / DAT_0052140c); + uVar2 = FUN_00444290(); + uVar3 = FUN_004442b8(); + uVar4 = FUN_004442b8(); + uVar5 = FUN_004442b8(); + uVar6 = FUN_004442dc(); + iVar7 = FUN_00417ab4(param_8 + 0x43c); + piVar1 = (int *)FUN_00402298(0x98); + if (piVar1 == (int *)0x0) { + piVar1 = (int *)0x0; + } + else { + piVar1 = FUN_00470cfc(piVar1,uVar3,param_2,param_3,param_4,param_5,param_6 + 0x27,param_7 + 100, + param_6 + 0x5f,param_7 + 0x76,param_15,4,0,0,0xff,iVar7 + 0x180, + s_NumericDisplayInteger_005197ba); + } + param_1[0x45] = (int)piVar1; + iVar8 = FUN_00447f1c(param_3,param_10); + piVar1 = (int *)FUN_00402298(0x98); + if (piVar1 == (int *)0x0) { + piVar1 = (int *)0x0; + } + else { + piVar1 = FUN_00470cfc(piVar1,uVar4,param_9,param_3,param_4,iVar8,0xdc,0x104,0x140,300,param_16,4 + ,0,0,0xff,iVar7 + 0x180,s_NumericDisplayInteger_005197ba); + } + param_1[0x46] = (int)piVar1; + param_1[0x3a] = 0; + piVar1 = (int *)FUN_00402298(0xa4); + if (piVar1 == (int *)0x0) { + piVar1 = (int *)0x0; + } + else { + piVar1 = FUN_004739d8(piVar1,uVar5,param_9,param_3,param_4,iVar8,0xa0,0xb2,s_btejam_pcc_00519e0e + ,0,0xff,param_1 + 0x3a,s_TwoState_005198af); + } + param_1[0x42] = (int)piVar1; + param_1[0x3b] = 0; + param_1[0x3c] = 0; + piVar1 = (int *)FUN_00402298(0xa4); + if (piVar1 == (int *)0x0) { + piVar1 = (int *)0x0; + } + else { + piVar1 = FUN_004739d8(piVar1,uVar5,param_9,param_3,param_4,iVar8,0x121,0xb6, + s_btefire_pcc_00519e19,0,0xff,param_1 + 0x3b,s_TwoState_005198af); + } + param_1[0x43] = (int)piVar1; + puVar9 = (undefined4 *)FUN_00402298(0x48); + if (puVar9 == (undefined4 *)0x0) { + puVar9 = (undefined4 *)0x0; + } + else { + puVar10 = (undefined4 *)FUN_00447f84(param_3,iVar8); + puVar9 = FUN_0044ad78(puVar9,puVar10); + } + param_1[0x3f] = (int)puVar9; + piVar1 = (int *)FUN_00402298(0xac); + if (piVar1 == (int *)0x0) { + piVar1 = (int *)0x0; + } + else { + piVar1 = FUN_00473c94(piVar1,uVar5,param_9,param_3,param_4,iVar8,0x130,0xbc,0x162,0xee, + s_helv42_pcc_00519e25,2,0,0,0xff,param_1 + 0x3e,param_1 + 0x3b, + s_NumericDisplayScalarTwoState_005198b8); + } + param_1[0x40] = (int)piVar1; + piVar1 = (int *)FUN_00402298(0xa4); + if (piVar1 == (int *)0x0) { + piVar1 = (int *)0x0; + } + else { + piVar1 = FUN_004739d8(piVar1,uVar6,param_9,param_3,param_4,iVar8,0xc2,0x85, + s_edestryd_pcc_00519e30,0,0xff,param_1 + 0x31,s_TwoState_005198af); + } + param_1[0x41] = (int)piVar1; + piVar1 = (int *)FUN_00402298(0xac); + if (piVar1 == (int *)0x0) { + piVar1 = (int *)0x0; + } + else { + piVar1 = FUN_004c61c8(piVar1,uVar2,param_9,param_3,param_4,iVar8,0xf,0,s_bteejtm_pcc_00519e3d,0, + 0xff,param_8 + 0x3f8,s_BitMapInverseWipeScalar_005199ea); + } + param_1[0x44] = (int)piVar1; + return param_1; +} + + + +/* @004c9940 file=? name=FUN_004c9940 */ + +void __cdecl FUN_004c9940(int *param_1,byte param_2) + +{ + undefined4 *puVar1; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_00519e98; + puVar1 = (undefined4 *)param_1[0x3f]; + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + param_1[0x3f] = 0; + puVar1 = (undefined4 *)param_1[0x40]; + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + param_1[0x40] = 0; + FUN_004c91d4(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004c99a4 file=? name=FUN_004c99a4 */ + +void FUN_004c99a4(void) + +{ + FUN_00470e0c(); + FUN_004c9230(); + return; +} + + + +/* @004c99c4 file=? name=FUN_004c99c4 */ + +void FUN_004c99c4(void) + +{ + return; +} + + + +/* @004c99cc file=? name=FUN_004c99cc */ + +void __cdecl FUN_004c99cc(int param_1) + +{ + (**(code **)(**(int **)(param_1 + 0x114) + 0xc))(*(int **)(param_1 + 0x114)); + (**(code **)(**(int **)(param_1 + 0x118) + 0xc))(*(int **)(param_1 + 0x118)); + (**(code **)(**(int **)(param_1 + 0x104) + 0xc))(*(int **)(param_1 + 0x104)); + (**(code **)(**(int **)(param_1 + 0x108) + 0xc))(*(int **)(param_1 + 0x108)); + (**(code **)(**(int **)(param_1 + 0x10c) + 0xc))(*(int **)(param_1 + 0x10c)); + (**(code **)(**(int **)(param_1 + 0x100) + 0xc))(*(int **)(param_1 + 0x100)); + (**(code **)(**(int **)(param_1 + 0x110) + 0xc))(*(int **)(param_1 + 0x110)); + FUN_004c9258(param_1); + return; +} + + + +/* @004c9a38 file=? name=FUN_004c9a38 */ + +void __cdecl FUN_004c9a38(int *param_1) + +{ + int iVar1; + int iVar2; + int *piVar3; + + param_1[0x3a] = (uint)(*(int *)(param_1[0x30] + 0x364) == 5); + iVar2 = FUN_00417ab4(param_1[0x30] + 0x43c); + iVar1 = *(int *)(iVar2 + 0x18c); + param_1[0x3b] = iVar1; + if (iVar1 == 0) { + if (param_1[0x3c] != 0) { + param_1[0x3c] = 0; + } + } + else { + param_1[0x3c] = 1; + piVar3 = (int *)FUN_00414b60(); + param_1[0x3d] = *piVar3; + param_1[0x3d] = param_1[0x3d] - *(int *)(iVar2 + 400); + param_1[0x3e] = (int)((float)param_1[0x3d] / DAT_0052140c); + } + FUN_004c9290(param_1); + return; +} + + + +/* @004c9adc file=? name=FUN_004c9adc */ + +undefined4 __cdecl FUN_004c9adc(int param_1) + +{ + int iVar1; + undefined4 uVar2; + + iVar1 = FUN_00417ab4(*(int *)(param_1 + 0xc0) + 0x43c); + if (*(int *)(iVar1 + 0x180) == 0) { + return 1; + } + if (*(int *)(param_1 + 0xe8) != 0) { + return 1; + } + uVar2 = FUN_004c8990(param_1); + return uVar2; +} + + + +/* @004c9b24 file=? name=FUN_004c9b24 */ + +void __cdecl FUN_004c9b24(int param_1,int param_2) + +{ + FUN_00444650(*(int **)(param_1 + 0x114),param_2); + FUN_004c92e4(param_1,param_2); + return; +} + + + +/* @004c9b50 file=? name=FUN_004c9b50 */ + +void __cdecl FUN_004c9b50(int param_1,int param_2) + +{ + FUN_004c932c(param_1,param_2); + if (param_2 == 0) { + FUN_00470ec8(*(int *)(param_1 + 0x114),0,0xff); + } + else { + FUN_00470ec8(*(int *)(param_1 + 0x114),0xff,0); + } + return; +} + + + +/* @004c9bd0 file=? name=FUN_004c9bd0 */ + +undefined4 * __cdecl +FUN_004c9bd0(undefined4 *param_1,undefined4 param_2,undefined4 param_3,int param_4, + undefined4 param_5,int param_6,int param_7,int param_8,char *param_9,char *param_10, + undefined4 param_11) + +{ + uint *puVar1; + int *piVar2; + undefined4 uVar3; + undefined **ppuVar4; + undefined4 *puVar5; + undefined4 uVar6; + int iVar7; + undefined4 uVar8; + int iVar9; + int iVar10; + int iVar11; + char *pcVar12; + char *pcVar13; + int iVar14; + undefined4 uVar15; + uint *local_10; + int local_c; + int local_8; + + local_8 = 0; + ppuVar4 = &PTR_s_dz_door_0051a240; + puVar5 = param_1; + do { + pcVar12 = *ppuVar4; + puVar1 = (uint *)FUN_00402298(0x10); + if (puVar1 == (uint *)0x0) { + local_10 = (uint *)0x0; + } + else { + local_10 = FUN_00402460(puVar1,pcVar12); + } + local_10[3] = local_10[3] + 1; + local_c = FUN_0042076c(param_7,(int *)&local_10); + piVar2 = (int *)FUN_00402298(0x70); + if (piVar2 == (int *)0x0) { + piVar2 = (int *)0x0; + } + else { + uVar6 = param_3; + iVar7 = param_4; + uVar8 = param_5; + iVar9 = param_6; + iVar10 = param_7; + iVar11 = param_8; + pcVar12 = param_9; + pcVar13 = param_10; + iVar14 = local_c; + uVar15 = param_11; + uVar3 = FUN_004442b8(); + piVar2 = FUN_004c3b98(piVar2,uVar3,uVar6,iVar7,uVar8,iVar9,iVar10,iVar11,pcVar12,pcVar13, + iVar14,uVar15); + } + *puVar5 = piVar2; + puVar1 = local_10 + 3; + *puVar1 = *puVar1 - 1; + if (*puVar1 == 0) { + FUN_004024d8((int *)local_10,3); + } + local_8 = local_8 + 1; + param_8 = param_8 + 1; + ppuVar4 = ppuVar4 + 1; + puVar5 = puVar5 + 1; + } while (local_8 < 0x1c); + return param_1; +} + + + +/* @004c9ca8 file=? name=FUN_004c9ca8 */ + +void __cdecl FUN_004c9ca8(int *param_1,byte param_2) + +{ + undefined4 *puVar1; + int *piVar2; + int iVar3; + + if (param_1 != (int *)0x0) { + iVar3 = 0; + piVar2 = param_1; + do { + puVar1 = (undefined4 *)*piVar2; + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + *piVar2 = 0; + iVar3 = iVar3 + 1; + piVar2 = piVar2 + 1; + } while (iVar3 < 0x1c); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004c9ce8 file=? name=FUN_004c9ce8 */ + +undefined4 FUN_004c9ce8(void) + +{ + return 1; +} + + + +/* @004c9cf4 file=? name=FUN_004c9cf4 */ + +void __cdecl FUN_004c9cf4(undefined4 *param_1) + +{ + int iVar1; + + iVar1 = 0; + do { + (**(code **)(*(int *)*param_1 + 0xc))((int *)*param_1); + iVar1 = iVar1 + 1; + param_1 = param_1 + 1; + } while (iVar1 < 0x1c); + return; +} + + + +/* @004c9d18 file=? name=FUN_004c9d18 */ + +void __cdecl FUN_004c9d18(int *param_1,undefined4 param_2) + +{ + int iVar1; + + iVar1 = 0; + do { + FUN_004c3c38(*param_1,param_2); + iVar1 = iVar1 + 1; + param_1 = param_1 + 1; + } while (iVar1 < 0x1c); + return; +} + + + +/* @004c9d44 file=? name=FUN_004c9d44 */ + +bool __cdecl +FUN_004c9d44(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,int param_5) + +{ + int iVar1; + undefined4 *puVar2; + + puVar2 = (undefined4 *)FUN_00402298(0xc4); + if (puVar2 != (undefined4 *)0x0) { + FUN_004c9e10(puVar2,DAT_0051a2bc,DAT_0051a300,param_5,0,param_1,param_2,param_3,&DAT_0051a344, + DAT_0051a388,DAT_0051a3cc,s_SectorDisplay_0051bb34); + } + iVar1 = *(int *)(param_5 + 0x4c); + puVar2 = FUN_00442aec(iVar1 + 4,&DAT_0051a344,0); + if (puVar2 != (undefined4 *)0x0) { + FUN_00442c12(iVar1 + 4,&DAT_0051a344); + } + else { + FUN_004dbb24(&DAT_00524e20,s_SectorDisplay__Missing_image___0051bc90,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_0051a344,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_0051bcaf,(char *)0x0); + } + return puVar2 != (undefined4 *)0x0; +} + + + +/* @004c9e10 file=? name=FUN_004c9e10 */ + +undefined4 * __cdecl +FUN_004c9e10(undefined4 *param_1,undefined4 param_2,undefined4 param_3,int param_4, + undefined4 param_5,int param_6,undefined4 param_7,undefined4 param_8,char *param_9, + int param_10,int param_11,undefined4 param_12) + +{ + int iVar1; + undefined4 uVar2; + undefined4 *puVar3; + int *piVar4; + + FUN_00444818(param_1,param_2,param_3,param_4,param_5,param_6,param_12); + *param_1 = &PTR_FUN_0051beec; + uVar2 = FUN_004700ac(param_9); + param_1[0x25] = uVar2; + param_1[0x2a] = param_10; + param_1[0x2b] = param_11; + param_1[0x24] = 0; + param_1[0x2d] = 500; + param_1[0x2c] = 500; + iVar1 = *(int *)(param_4 + 0x4c); + puVar3 = FUN_00442aec(iVar1 + 4,(char *)param_1[0x25],0); + if (puVar3 == (undefined4 *)0x0) { + param_1[0x26] = 0; + param_1[0x27] = 0; + param_1[0x28] = 0; + param_1[0x29] = 0; + } + else { + param_1[0x26] = (int)puVar3[3] / 0xe; + param_1[0x27] = param_1[0x26] * 0xc; + param_1[0x28] = param_1[0x26] * 0xc + param_1[0x26] + -1; + param_1[0x29] = puVar3[4]; + } + (**(code **)(param_1[0x12] + 0x10))(param_1 + 0x12,param_7,param_8); + piVar4 = (int *)FUN_00402298(0x44); + if (piVar4 == (int *)0x0) { + piVar4 = (int *)0x0; + } + else { + piVar4 = FUN_004700bc(piVar4,iVar1,0,0,param_9,3,0,param_10,param_11); + } + param_1[0x2f] = piVar4; + piVar4 = (int *)FUN_00402298(0x44); + if (piVar4 == (int *)0x0) { + piVar4 = (int *)0x0; + } + else { + piVar4 = FUN_004700bc(piVar4,iVar1,param_1[0x26] << 2,0,param_9,3,0,param_10,param_11); + } + param_1[0x30] = piVar4; + return param_1; +} + + + +/* @004c9f94 file=? name=FUN_004c9f94 */ + +void __cdecl FUN_004c9f94(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0051beec; + FUN_00442c12(*(int *)(param_1[7] + 0x4c) + 4,(char *)param_1[0x25]); + FUN_004022e8((int *)param_1[0x25]); + param_1[0x25] = 0; + FUN_0047018c((int *)param_1[0x2f],3); + param_1[0x2f] = 0; + FUN_0047018c((int *)param_1[0x30],3); + param_1[0x30] = 0; + FUN_00444870(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004ca020 file=? name=FUN_004ca020 */ + +void FUN_004ca020(void) + +{ + FUN_004448ac(); + return; +} + + + +/* @004ca030 file=? name=FUN_004ca030 */ + +void FUN_004ca030(void) + +{ + return; +} + + + +/* @004ca038 file=? name=FUN_004ca038 */ + +void __cdecl FUN_004ca038(int param_1) + +{ + *(undefined4 *)(param_1 + 0xb8) = 1; + FUN_004703f4(*(int *)(param_1 + 0xc0)); + FUN_004703f4(*(int *)(param_1 + 0xbc)); + return; +} + + + +/* @004ca068 file=? name=FUN_004ca068 */ + +void __cdecl FUN_004ca068(int param_1,undefined4 param_2) + +{ + *(undefined4 *)(param_1 + 0x90) = param_2; + return; +} + + + +/* @004ca07c file=? name=FUN_004ca07c */ + +void __cdecl FUN_004ca07c(int param_1) + +{ + int *piVar1; + int iVar2; + int iVar3; + undefined4 *puVar4; + + if (*(int *)(param_1 + 0x90) != 0) { + iVar2 = FUN_004dcd94(); + iVar3 = FUN_004dcd94(); + piVar1 = (int *)(param_1 + 0x48); + FUN_00470430(*(int **)(param_1 + 0xbc),piVar1,(float)(iVar2 + *(int *)(param_1 + 0xb0))); + FUN_00470430(*(int **)(param_1 + 0xc0),piVar1,(float)(iVar3 + *(int *)(param_1 + 0xb4))); + if (*(int *)(param_1 + 0xb8) != 0) { + *(undefined4 *)(param_1 + 0xb8) = 0; + puVar4 = FUN_00442aec(*(int *)(*(int *)(param_1 + 0x1c) + 0x4c) + 4,*(char **)(param_1 + 0x94) + ,0); + if (puVar4 != (undefined4 *)0x0) { + (**(code **)(*(int *)(param_1 + 0x48) + 0x24))(piVar1,*(int *)(param_1 + 0x98) * 3,0); + (**(code **)(*(int *)(param_1 + 0x48) + 0x18))(piVar1,*(undefined4 *)(param_1 + 0xac)); + (**(code **)(*(int *)(param_1 + 0x48) + 0x54)) + (piVar1,0,puVar4,*(undefined4 *)(param_1 + 0x9c),0,*(undefined4 *)(param_1 + 0xa0) + ,*(undefined4 *)(param_1 + 0xa4)); + } + } + } + return; +} + + + +/* @004ca208 file=? name=FUN_004ca208 */ + +undefined4 * __cdecl +FUN_004ca208(undefined4 *param_1,undefined4 param_2,undefined4 param_3,int param_4, + undefined4 param_5,int param_6,undefined4 param_7,int param_8,char *param_9, + undefined4 param_10,int param_11,undefined4 param_12,undefined4 param_13) + +{ + int iVar1; + int iVar2; + undefined4 *puVar3; + int *piVar4; + int iVar5; + int local_1c; + int local_18; + + FUN_00444818(param_1,param_2,param_3,param_4,param_5,param_6,param_13); + *param_1 = &PTR_FUN_0051bea8; + param_1[0x29] = param_10; + param_1[0x28] = param_12; + param_1[0x26] = param_7; + param_1[0x27] = param_8 + -0x20; + iVar1 = *(int *)(param_4 + 0x4c); + puVar3 = FUN_00442aec(iVar1 + 4,param_9,0); + iVar2 = puVar3[3]; + iVar5 = (iVar2 / 0xe) * 8; + FUN_00442c12(iVar1 + 4,param_9); + param_1[0x2a] = iVar5 + 0x86; + if ((*(byte *)(param_1 + 0x28) & 4) != 0) { + param_1[0x2a] = param_1[0x2a] + iVar2 / 0xe + 0x20; + } + puVar3 = param_1 + 0x3b; + local_1c = param_1[0x27] + 3; + local_18 = 0; + do { + piVar4 = (int *)FUN_00402298(0x44); + if (piVar4 == (int *)0x0) { + piVar4 = (int *)0x0; + } + else { + piVar4 = FUN_004700bc(piVar4,iVar1,param_1[0x26] + 0x82,local_1c,param_9,8,2,0,param_11); + } + *puVar3 = piVar4; + if ((*(byte *)(param_1 + 0x28) & 4) == 0) { + puVar3[0x11] = 0; + } + else { + piVar4 = (int *)FUN_00402298(0x44); + if (piVar4 == (int *)0x0) { + piVar4 = (int *)0x0; + } + else { + piVar4 = FUN_004700bc(piVar4,iVar1,param_1[0x26] + iVar5 + 0xa2,local_1c,param_9,1,0,0, + param_11); + } + puVar3[0x11] = piVar4; + } + puVar3 = puVar3 + 1; + local_18 = local_18 + 1; + local_1c = local_1c - param_1[0x29]; + } while (local_18 < 8); + return param_1; +} + + + +/* @004ca39c file=? name=FUN_004ca39c */ + +void __cdecl FUN_004ca39c(int *param_1,byte param_2) + +{ + int *piVar1; + int iVar2; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0051bea8; + iVar2 = 0; + piVar1 = param_1 + 0x3b; + do { + if ((int *)*piVar1 != (int *)0x0) { + FUN_0047018c((int *)*piVar1,3); + *piVar1 = 0; + } + if ((int *)piVar1[0x11] != (int *)0x0) { + FUN_0047018c((int *)piVar1[0x11],3); + piVar1[0x11] = 0; + } + iVar2 = iVar2 + 1; + piVar1 = piVar1 + 1; + } while (iVar2 < 8); + FUN_00444870(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004ca40c file=? name=FUN_004ca40c */ + +void FUN_004ca40c(void) + +{ + FUN_004448ac(); + return; +} + + + +/* @004ca41c file=? name=FUN_004ca41c */ + +void FUN_004ca41c(void) + +{ + return; +} + + + +/* @004ca424 file=? name=FUN_004ca424 */ + +void __cdecl FUN_004ca424(int param_1,undefined4 param_2) + +{ + *(undefined4 *)(param_1 + 0x90) = param_2; + return; +} + + + +/* @004ca438 file=? name=FUN_004ca438 */ + +void __cdecl FUN_004ca438(int param_1) + +{ + undefined4 *puVar1; + int iVar2; + + *(undefined4 *)(param_1 + 0x94) = 999; + *(undefined4 *)(param_1 + 0x10c) = 0; + iVar2 = 0; + puVar1 = (undefined4 *)(param_1 + 0xac); + do { + *puVar1 = 0xffffffff; + puVar1[8] = 0xba83126f; + puVar1[0x19] = 0xffffffff; + iVar2 = iVar2 + 1; + puVar1 = puVar1 + 1; + } while (iVar2 < 8); + return; +} + + + +/* @004ca478 file=? name=FUN_004ca478 */ + +void __cdecl FUN_004ca478(int param_1) + +{ + int iVar1; + int iVar2; + int *piVar3; + undefined4 uVar4; + int *piVar5; + int local_54 [3]; + int local_48 [8]; + int local_28; + float local_24; + undefined4 local_20; + int local_1c; + int local_18; + uint local_14; + int local_10; + int local_c; + int local_8; + + iVar1 = FUN_00403ad0(*(int *)(DAT_004efc94 + 0x24) + 0x18,s_Players_0051bcba); + if (iVar1 != 0) { + if (*(int *)(param_1 + 0x90) == 0) { + local_10 = -1; + local_14 = 0; + } + else { + iVar2 = *(int *)(*(int *)(param_1 + 0x90) + 400); + local_10 = *(int *)(iVar2 + 0x1cc); + iVar2 = FUN_0044fc10(*(int *)(iVar2 + 0x204)); + local_14 = (uint)(iVar2 != -1); + } + piVar3 = local_48; + local_8 = 0; + do { + *piVar3 = 0; + local_8 = local_8 + 1; + piVar3 = piVar3 + 1; + } while (local_8 < 8); + FUN_00421414(local_54,iVar1 + 0x10); + while (iVar1 = (**(code **)(local_54[0] + 0x28))(local_54), iVar1 != 0) { + if ((((*(byte *)(iVar1 + 0x29) & 0x40) == 0) && (iVar2 = *(int *)(iVar1 + 0x1cc), iVar2 < 8)) + && (-1 < iVar2)) { + local_48[iVar2] = iVar1; + } + } + local_c = *(int *)(param_1 + 0x9c); + local_8 = 0; + piVar3 = local_48; + piVar5 = (int *)(param_1 + 0xac); + do { + if (*piVar5 != *piVar3) { + *piVar5 = *piVar3; + piVar5[8] = -0x1a5697ea; + (**(code **)(*(int *)(param_1 + 0x48) + 0x24)) + (param_1 + 0x48,*(int *)(param_1 + 0x98) + 1,local_c); + if (*piVar3 == 0) { + (**(code **)(*(int *)(param_1 + 0x48) + 0x18))(param_1 + 0x48,0); + (**(code **)(*(int *)(param_1 + 0x48) + 0x4c))(param_1 + 0x48,0x80,0x20); + FUN_00470758(piVar5[0x10],(int *)(param_1 + 0x48)); + if (piVar5[0x21] != 0) { + FUN_00470758(piVar5[0x21],(int *)(param_1 + 0x48)); + } + } + else { + local_18 = *(int *)(DAT_004efc94 + 200); + local_20 = *(undefined4 *)(*piVar3 + 0x1e0); + local_1c = (**(code **)(*(int *)(local_18 + 0x68) + 0xc))(local_18 + 0x68,&local_20); + if (local_1c == 0) { + (**(code **)(*(int *)(param_1 + 0x48) + 0x18))(param_1 + 0x48,0); + (**(code **)(*(int *)(param_1 + 0x48) + 0x4c))(param_1 + 0x48,0x80,0x20); + } + else { + uVar4 = 0xff; + if (((*(byte *)(param_1 + 0xa0) & 1) != 0) && (*(int *)(*piVar3 + 0x1fc) != 0)) { + uVar4 = FUN_004c2f88(); + } + (**(code **)(*(int *)(param_1 + 0x48) + 0x18))(param_1 + 0x48,uVar4); + (**(code **)(*(int *)(param_1 + 0x48) + 0x58)) + (param_1 + 0x48,0,0,local_1c,0,0,*(int *)(local_1c + 0xc) + -1, + *(int *)(local_1c + 0x10) + -1); + } + } + } + local_8 = local_8 + 1; + piVar5 = piVar5 + 1; + piVar3 = piVar3 + 1; + local_c = local_c - *(int *)(param_1 + 0xa4); + } while (local_8 < 8); + piVar5 = (int *)(param_1 + 0xec); + local_8 = 0; + piVar3 = local_48; + do { + if (*piVar3 == 0) { + FUN_00470758(*piVar5,(int *)(param_1 + 0x48)); + } + else { + local_24 = *(float *)(*piVar3 + 0x1c8); + if ((float)piVar5[-8] != local_24) { + piVar5[-8] = (int)local_24; + if ((local_10 < local_8) && ((*(byte *)(param_1 + 0xa0) & 2) == 0)) { + FUN_00470758(*piVar5,(int *)(param_1 + 0x48)); + } + else { + FUN_00470430((int *)*piVar5,(int *)(param_1 + 0x48),local_24); + } + } + } + local_8 = local_8 + 1; + piVar5 = piVar5 + 1; + piVar3 = piVar3 + 1; + } while (local_8 < 8); + if ((*(byte *)(param_1 + 0xa0) & 4) != 0) { + if (local_14 == 0) { + if (*(int *)(param_1 + 0x10c) == 1) { + piVar3 = (int *)(param_1 + 0x130); + local_8 = 0; + do { + FUN_00470758(*piVar3,(int *)(param_1 + 0x48)); + piVar3[-8] = -1; + local_8 = local_8 + 1; + piVar3 = piVar3 + 1; + } while (local_8 < 8); + } + } + else { + piVar5 = (int *)(param_1 + 0x110); + local_8 = 0; + piVar3 = local_48; + do { + if (*piVar3 == 0) { + if (*piVar5 != -1) { + FUN_00470758(piVar5[8],(int *)(param_1 + 0x48)); + *piVar5 = -1; + } + } + else { + local_28 = *(int *)(*piVar3 + 0x204); + iVar1 = FUN_0044fc10(local_28); + iVar1 = iVar1 - *(int *)(local_28 + 0x40); + if (iVar1 != *piVar5) { + *piVar5 = iVar1; + if (iVar1 == -1) { + FUN_00470758(piVar5[8],(int *)(param_1 + 0x48)); + } + else { + FUN_00470430((int *)piVar5[8],(int *)(param_1 + 0x48),(float)(iVar1 + 1)); + } + } + } + local_8 = local_8 + 1; + piVar5 = piVar5 + 1; + piVar3 = piVar3 + 1; + } while (local_8 < 8); + } + *(uint *)(param_1 + 0x10c) = local_14; + } + iVar1 = *(int *)(param_1 + 0x94); + if (iVar1 != local_10) { + if ((-1 < iVar1) && (iVar1 < 8)) { + iVar1 = param_1 + 0x48; + (**(code **)(*(int *)(param_1 + 0x48) + 0x18))(iVar1,0); + (**(code **)(*(int *)(param_1 + 0x48) + 0x24)) + (iVar1,*(undefined4 *)(param_1 + 0x98), + (*(int *)(param_1 + 0x9c) - *(int *)(param_1 + 0x94) * *(int *)(param_1 + 0xa4)) + + -1); + (**(code **)(*(int *)(param_1 + 0x48) + 0x44))(iVar1,*(undefined4 *)(param_1 + 0xa8),0x22); + } + if ((-1 < local_10) && (local_10 < 8)) { + iVar1 = param_1 + 0x48; + (**(code **)(*(int *)(param_1 + 0x48) + 0x18))(iVar1,0xff); + (**(code **)(*(int *)(param_1 + 0x48) + 0x24)) + (iVar1,*(undefined4 *)(param_1 + 0x98), + (*(int *)(param_1 + 0x9c) - local_10 * *(int *)(param_1 + 0xa4)) + -1); + (**(code **)(*(int *)(param_1 + 0x48) + 0x44))(iVar1,*(undefined4 *)(param_1 + 0xa8),0x22); + } + *(int *)(param_1 + 0x94) = local_10; + } + FUN_00421452(local_54,2); + } + return; +} + + + +/* @004ca90c file=? name=FUN_004ca90c */ + +undefined4 __cdecl FUN_004ca90c(int param_1) + +{ + undefined4 *puVar1; + int in_stack_00000014; + + puVar1 = (undefined4 *)FUN_00402298(0x178); + if (puVar1 != (undefined4 *)0x0) { + FUN_004ca958(puVar1,DAT_0051ab4c,DAT_0051ab90,in_stack_00000014,0,param_1,&DAT_0051abd4, + s_PilotList_0051bb4a); + } + return 1; +} + + + +/* @004ca958 file=? name=FUN_004ca958 */ + +undefined4 * __cdecl +FUN_004ca958(undefined4 *param_1,undefined4 param_2,undefined4 param_3,int param_4, + undefined4 param_5,int param_6,char *param_7,undefined4 param_8) + +{ + int iVar1; + int iVar2; + int iVar3; + int iVar4; + int *piVar5; + int *piVar6; + int *piVar7; + int local_18; + int local_14; + int local_10; + int local_c; + int local_8; + + FUN_00444818(param_1,param_2,param_3,param_4,param_5,param_6,param_8); + piVar7 = &DAT_0051af88; + *param_1 = &PTR_FUN_0051be64; + param_1[0x24] = 0; + param_1[0x25] = 0; + iVar1 = *(int *)(param_4 + 0x4c); + local_8 = 0; + piVar6 = param_1 + 0x26; + do { + iVar2 = *piVar7; + iVar3 = piVar7[1]; + iVar4 = piVar7[2]; + if (iVar4 == 0) { +LAB_004ca9cc: + local_c = iVar2 + 0x95; + local_10 = iVar3 + -0xd; + local_14 = iVar2 + 0xe8; + local_18 = iVar3 + -0xd; + } + else if (iVar4 == 1) { + local_c = iVar2 + -8; + local_10 = iVar3 + -0x50; + local_14 = iVar2 + 0x48; + local_18 = iVar3 + -0x50; + } + else { + if (iVar4 != 2) goto LAB_004ca9cc; + local_c = iVar2 + -8; + local_10 = iVar3 + 0x44; + local_14 = iVar2 + 0x48; + local_18 = iVar3 + 0x44; + } + *piVar6 = iVar2; + piVar6[1] = iVar3; + piVar6[2] = 0; + piVar6[3] = 0; + piVar5 = (int *)FUN_00402298(0x44); + if (piVar5 == (int *)0x0) { + piVar5 = (int *)0x0; + } + else { + piVar5 = FUN_004700bc(piVar5,iVar1,local_c,local_10,param_7,2,2,0,0xff); + } + piVar6[4] = (int)piVar5; + piVar5 = (int *)FUN_00402298(0x44); + if (piVar5 == (int *)0x0) { + piVar5 = (int *)0x0; + } + else { + piVar5 = FUN_004700bc(piVar5,iVar1,local_14,local_18,param_7,2,2,0,0xff); + } + piVar6[5] = (int)piVar5; + piVar5 = (int *)FUN_00402298(0x44); + if (piVar5 == (int *)0x0) { + piVar5 = (int *)0x0; + } + else { + piVar5 = FUN_004700bc(piVar5,iVar1,iVar2,iVar3,param_7,1,2,0,0xff); + } + piVar6[6] = (int)piVar5; + piVar7 = piVar7 + 3; + local_8 = local_8 + 1; + piVar6 = piVar6 + 7; + if (7 < local_8) { + return param_1; + } + } while( true ); +} + + + +/* @004cab10 file=? name=FUN_004cab10 */ + +void __cdecl FUN_004cab10(int *param_1,byte param_2) + +{ + int *piVar1; + int iVar2; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0051be64; + iVar2 = 0; + piVar1 = param_1 + 0x26; + do { + FUN_0047018c((int *)piVar1[4],3); + piVar1[4] = 0; + FUN_0047018c((int *)piVar1[5],3); + piVar1[5] = 0; + FUN_0047018c((int *)piVar1[6],3); + piVar1[6] = 0; + iVar2 = iVar2 + 1; + piVar1 = piVar1 + 7; + } while (iVar2 < 8); + FUN_00444870(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004cab8c file=? name=FUN_004cab8c */ + +void FUN_004cab8c(void) + +{ + FUN_004448ac(); + return; +} + + + +/* @004cab9c file=? name=FUN_004cab9c */ + +void FUN_004cab9c(void) + +{ + return; +} + + + +/* @004caba4 file=? name=FUN_004caba4 */ + +void __cdecl FUN_004caba4(int param_1) + +{ + int iVar1; + int iVar2; + + iVar2 = 0; + iVar1 = param_1 + 0x98; + do { + *(undefined4 *)(iVar1 + 8) = 0xffffffff; + iVar2 = iVar2 + 1; + iVar1 = iVar1 + 0x1c; + } while (iVar2 < 8); + *(undefined4 *)(param_1 + 0x90) = 9; + return; +} + + + +/* @004cabd0 file=? name=FUN_004cabd0 */ + +void __cdecl FUN_004cabd0(int param_1) + +{ + int *piVar1; + int iVar2; + int iVar3; + int iVar4; + undefined4 local_c; + + iVar4 = **(int **)(*(int *)(DAT_004efc94 + 0x6c) + 0x128); + iVar2 = FUN_004b0898(iVar4,0); + if (iVar2 != 0) { + if (7 < *(int *)(param_1 + 0x90)) { + *(undefined4 *)(param_1 + 0x90) = 0; + *(undefined4 *)(param_1 + 0x94) = 0; + } + iVar3 = *(int *)(param_1 + 0x90) * 0x1c + param_1; + if (*(int *)(param_1 + 0x94) == 0) { + iVar4 = FUN_004b0898(iVar4,*(int *)(param_1 + 0x90)); + if (iVar4 == 0) { + *(undefined4 *)(param_1 + 0x94) = 1; + } + } + else { + iVar4 = 0; + } + if (iVar4 == 0) { + if (*(int *)(iVar3 + 0xa0) != 0) { + piVar1 = (int *)(param_1 + 0x48); + (**(code **)(*(int *)(param_1 + 0x48) + 0x24)) + (piVar1,*(undefined4 *)(iVar3 + 0x98),*(undefined4 *)(iVar3 + 0x9c)); + (**(code **)(*(int *)(param_1 + 0x48) + 0x18))(piVar1,0); + (**(code **)(*(int *)(param_1 + 0x48) + 0x4c))(piVar1,0x80,0x20); + FUN_00470758(*(int *)(iVar3 + 0xa8),piVar1); + FUN_00470758(*(int *)(iVar3 + 0xac),piVar1); + FUN_00470758(*(int *)(iVar3 + 0xb0),piVar1); + } + } + else { + if (*(int *)(iVar2 + 0x284) == 0) { + local_c = 0; + } + else { + local_c = (uint)(iVar4 == *(int *)(*(int *)(iVar2 + 0x284) + 400)); + } + if ((iVar4 != *(int *)(iVar3 + 0xa0)) || (*(uint *)(iVar3 + 0xa4) != local_c)) { + (**(code **)(*(int *)(param_1 + 0x48) + 0x24)) + (param_1 + 0x48,*(undefined4 *)(iVar3 + 0x98),*(undefined4 *)(iVar3 + 0x9c)); + FUN_004cad70(param_1,iVar4,local_c); + *(uint *)(iVar3 + 0xa4) = local_c; + } + FUN_00470430(*(int **)(iVar3 + 0xa8),(int *)(param_1 + 0x48),(float)*(int *)(iVar4 + 0x27c)); + FUN_00470430(*(int **)(iVar3 + 0xac),(int *)(param_1 + 0x48),(float)*(int *)(iVar4 + 0x280)); + } + } + *(int *)(param_1 + 0x90) = *(int *)(param_1 + 0x90) + 1; + return; +} + + + +/* @004cad70 file=? name=FUN_004cad70 */ + +void __cdecl FUN_004cad70(int param_1,int param_2,int param_3) + +{ + int iVar1; + undefined4 uVar2; + undefined4 uVar3; + undefined4 local_8; + + local_8 = *(undefined4 *)(param_2 + 0x1e0); + iVar1 = (**(code **)(*(int *)(*(int *)(DAT_004efc94 + 200) + 0x68) + 0xc)) + (*(int *)(DAT_004efc94 + 200) + 0x68,&local_8); + uVar3 = 0xff; + if (param_3 == 0) { + uVar3 = 0; + } + uVar2 = 0; + if (param_3 == 0) { + uVar2 = 0xff; + } + if (iVar1 == 0) { + (**(code **)(*(int *)(param_1 + 0x48) + 0x18))(param_1 + 0x48,uVar3); + (**(code **)(*(int *)(param_1 + 0x48) + 0x4c))(param_1 + 0x48,0x80,0x20); + } + else { + (**(code **)(*(int *)(param_1 + 0x48) + 0x18))(param_1 + 0x48,uVar2); + (**(code **)(*(int *)(param_1 + 0x48) + 0x58)) + (param_1 + 0x48,uVar3,0,iVar1,0,0,*(int *)(iVar1 + 0xc) + -1, + *(int *)(iVar1 + 0x10) + -1); + } + return; +} + + + +/* @004cae20 file=? name=FUN_004cae20 */ + +void __cdecl FUN_004cae20(int param_1,undefined4 param_2,int param_3,int param_4) + +{ + int iVar1; + bool bVar2; + int iVar3; + + bVar2 = false; + iVar3 = 0; + iVar1 = *(int *)(param_3 + 0x204); + if (iVar1 != 0) { + iVar3 = FUN_0044fc10(iVar1); + if (iVar3 != -1) { + bVar2 = true; + iVar3 = (iVar3 - *(int *)(iVar1 + 0x40)) + 1; + } + } + if (bVar2) { + FUN_00470430(*(int **)(param_4 + 0x18),(int *)(param_1 + 0x48),(float)iVar3); + } + else { + FUN_00470758(*(int *)(param_4 + 0x18),(int *)(param_1 + 0x48)); + } + return; +} + + + +/* @004cae90 file=? name=FUN_004cae90 */ + +undefined4 __cdecl +FUN_004cae90(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,int param_5) + +{ + uint uVar1; + int *piVar2; + undefined4 *puVar3; + undefined4 uVar4; + + uVar1 = DAT_0051b07c; + uVar4 = 0; + if (((int)DAT_0051b07c < 1) || (8 < (int)DAT_0051b07c)) { + FUN_004dbb24(&DAT_00524e20,s_PlayerStatus__Make_player_number_0051bcd9,(char *)0x0); + piVar2 = FUN_004db78c(&DAT_00524e20,uVar1); + FUN_004dbb24(piVar2,&DAT_0051bd0a,(char *)0x0); + } + else { + puVar3 = (undefined4 *)FUN_00402298(200); + if (puVar3 != (undefined4 *)0x0) { + FUN_004cb1a8(puVar3,DAT_0051aff4,DAT_0051b038,param_5,0,param_1,param_2,param_3,uVar1, + &DAT_0051b0c0,DAT_0051b104,DAT_0051b148,DAT_0051b18c,DAT_0051b1d0, + s_PlayerStatus_0051bb54); + } + uVar4 = 1; + } + return uVar4; +} + + + +/* @004caf50 file=? name=FUN_004caf50 */ + +void __cdecl FUN_004caf50(int *param_1,undefined1 *param_2,int param_3) + +{ + int iVar1; + int local_c; + undefined1 local_5; + + (**(code **)(*param_1 + 0x1c))(param_1,&local_c,4); + iVar1 = 0; + if (0 < local_c) { + do { + (**(code **)(*param_1 + 0x1c))(param_1,&local_5,1); + if (iVar1 < param_3 + -1) { + *param_2 = local_5; + param_2 = param_2 + 1; + } + iVar1 = iVar1 + 1; + } while (iVar1 < local_c); + } + *param_2 = 0; + return; +} + + + +/* @004cafac file=? name=FUN_004cafac */ + +int * __cdecl FUN_004cafac(int param_1,int param_2,int param_3,int *param_4) + +{ + uint uVar1; + byte bVar2; + int *piVar3; + undefined4 *puVar4; + int iVar5; + byte *pbVar6; + byte *pbVar7; + char local_68 [80]; + int local_18; + int local_14; + int *local_10; + int *local_c; + int local_8; + + local_8 = FUN_00407064(*(int *)(DAT_004efc94 + 0x68),*(int *)(param_1 + 0x1bc),0x20); + if (local_8 == 0) { + uVar1 = *(uint *)(param_1 + 0x1bc); + FUN_004dbb24(&DAT_00524e20,s_CreateMutantPixelmap8__couldn_t_f_0051bd0d,(char *)0x0); + piVar3 = FUN_004db78c(&DAT_00524e20,uVar1); + FUN_004dbb24(piVar3,&DAT_0051bd3d,(char *)0x0); + } + else { + iVar5 = *(int *)(local_8 + 4); + *(int *)(local_8 + 4) = *(int *)(local_8 + 4) + 1; + if (iVar5 == 0) { + FUN_00406cd0(local_8); + } + puVar4 = (undefined4 *)FUN_00402298(0x18); + if (puVar4 == (undefined4 *)0x0) { + local_c = (int *)0x0; + } + else { + local_c = FUN_004032dc(puVar4,*(undefined4 *)(local_8 + 0x3c),*(undefined4 *)(local_8 + 0x40), + 0); + } + if (local_c == (int *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_CreateMutantPixelmap8__couldn_t_o_0051bd40,(char *)0x0); + } + else { + FUN_004caf50(local_c,local_68,0x50); + local_10 = FUN_00442d2b(param_2 + 0x20,local_68,0); + if (local_10 == (int *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_CreateMutantPixelmap8_can_t_find_0051bd6d,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,local_68,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,&DAT_0051bd95,(char *)0x0); + FUN_004d9c70(&DAT_00524e20); + } + else { + pbVar6 = (byte *)local_10[2]; + if (param_4 == (int *)0x0) { + piVar3 = (int *)FUN_00402298(0xc); + if (piVar3 == (int *)0x0) { + param_4 = (int *)0x0; + } + else { + param_4 = FUN_00449c88(piVar3,*local_10,local_10[1]); + } + } + local_18 = param_3 + -0x20; + pbVar7 = (byte *)param_4[2]; + for (local_14 = local_10[1]; 0 < local_14; local_14 = local_14 + -1) { + for (iVar5 = *local_10; 0 < iVar5; iVar5 = iVar5 + -1) { + bVar2 = *pbVar6; + pbVar6 = pbVar6 + 1; + if (0x1f < bVar2) { + bVar2 = bVar2 + (char)local_18; + } + *pbVar7 = bVar2; + pbVar7 = pbVar7 + 1; + } + } + FUN_00442e51(param_2 + 0x20,local_68); + } + FUN_00403310(local_c,3); + } + *(int *)(local_8 + 4) = *(int *)(local_8 + 4) + -1; + } + return param_4; +} + + + +/* @004cb1a8 file=? name=FUN_004cb1a8 */ + +undefined4 * __cdecl +FUN_004cb1a8(undefined4 *param_1,undefined4 param_2,undefined4 param_3,int param_4, + undefined4 param_5,int param_6,undefined4 param_7,undefined4 param_8,int param_9, + char *param_10,undefined4 param_11,undefined4 param_12,undefined4 param_13, + undefined4 param_14,undefined4 param_15) + +{ + int iVar1; + int *piVar2; + + FUN_00444818(param_1,param_2,param_3,param_4,param_5,param_6,param_15); + *param_1 = &PTR_FUN_0051be20; + param_1[0x29] = param_11; + param_1[0x2a] = param_12; + param_1[0x2b] = param_13; + param_1[0x2c] = param_14; + param_1[0x24] = param_6; + (**(code **)(param_1[0x12] + 0x10))(param_1 + 0x12,param_7,param_8); + param_1[0x25] = param_9 + -1; + param_1[0x26] = 0; + param_1[0x27] = 0; + param_1[0x28] = 0; + param_1[0x2d] = 0; + iVar1 = *(int *)(param_4 + 0x4c); + piVar2 = (int *)FUN_00402298(0x44); + if (piVar2 == (int *)0x0) { + piVar2 = (int *)0x0; + } + else { + piVar2 = FUN_004700bc(piVar2,iVar1,0x72,0xd8,param_10,5,2,param_1[0x29],param_1[0x2a]); + } + param_1[0x2e] = piVar2; + return param_1; +} + + + +/* @004cb28c file=? name=FUN_004cb28c */ + +void __cdecl FUN_004cb28c(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0051be20; + param_1[0x26] = 0; + FUN_0047018c((int *)param_1[0x2e],3); + param_1[0x2e] = 0; + if ((int *)param_1[0x28] != (int *)0x0) { + FUN_00449d0c((int *)param_1[0x28],3); + param_1[0x28] = 0; + } + FUN_00444870(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004cb2f8 file=? name=FUN_004cb2f8 */ + +void FUN_004cb2f8(void) + +{ + FUN_004448ac(); + return; +} + + + +/* @004cb308 file=? name=FUN_004cb308 */ + +void FUN_004cb308(void) + +{ + return; +} + + + +/* @004cb310 file=? name=FUN_004cb310 */ + +void __cdecl FUN_004cb310(int param_1) + +{ + FUN_004703f4(*(int *)(param_1 + 0xb8)); + if (*(undefined4 **)(param_1 + 0xb4) != (undefined4 *)0x0) { + FUN_004c9cf4(*(undefined4 **)(param_1 + 0xb4)); + } + *(undefined4 *)(param_1 + 0xbc) = 1; + *(undefined4 *)(param_1 + 0xc0) = 0xffffffff; + *(undefined4 *)(param_1 + 0xc4) = 0xffffffff; + return; +} + + + +/* @004cb358 file=? name=FUN_004cb358 */ + +void __cdecl FUN_004cb358(int *param_1) + +{ + int *piVar1; + int iVar2; + int *piVar3; + undefined4 *puVar4; + int iVar5; + uint uVar6; + int local_20 [3]; + int local_14; + undefined4 local_10; + undefined4 *local_c; + int local_8; + + iVar2 = FUN_00403ad0(*(int *)(DAT_004efc94 + 0x24) + 0x18,s_Players_0051bd97); + if (iVar2 != 0) { + FUN_00421414(local_20,iVar2 + 0x10); + iVar2 = (**(code **)(local_20[0] + 0x34))(local_20,param_1[0x25]); + if ((iVar2 != param_1[0x26]) && (param_1[0x26] = iVar2, iVar2 != 0)) { + iVar2 = *(int *)(iVar2 + 0x1fc); + if (iVar2 == 0) { + param_1[0x26] = 0; + } + else { + local_8 = *(int *)(param_1[7] + 0x4c); + iVar5 = param_1[0x25] * 0x1c + 0x10; + piVar3 = FUN_004cafac(iVar2,local_8,iVar5,(int *)param_1[0x28]); + param_1[0x28] = (int)piVar3; + if ((int *)param_1[0x2d] != (int *)0x0) { + FUN_004c9ca8((int *)param_1[0x2d],3); + } + local_c = (undefined4 *)FUN_00402298(0x70); + if (local_c == (undefined4 *)0x0) { + puVar4 = (undefined4 *)0x0; + } + else { + puVar4 = FUN_004c9bd0(local_c,param_1[9],param_1[6],param_1[7],param_1[5],param_1[0x24], + iVar2,iVar5,s_adpal_pcc_0051bd9f,s_adpal2_pcc_0051bda9, + s_PlayerStatusMappingGroup_0051bdb4); + } + param_1[0x2d] = (int)puVar4; + local_10 = *(undefined4 *)(param_1[0x26] + 0x1e0); + iVar2 = (**(code **)(*(int *)(*(int *)(DAT_004efc94 + 200) + 0x68) + 0xc)) + (*(int *)(DAT_004efc94 + 200) + 0x68,&local_10); + param_1[0x27] = iVar2; + (**(code **)(*param_1 + 0xc))(param_1); + } + } + FUN_00421452(local_20,2); + } + if (param_1[0x26] != 0) { + piVar3 = param_1 + 0x12; + FUN_00470430((int *)param_1[0x2e],piVar3,*(float *)(param_1[0x26] + 0x1c8)); + iVar2 = *(int *)(param_1[0x26] + 0x1fc); + local_14 = 0; + iVar5 = FUN_0041a1a4(**(int **)(iVar2 + 0xc),0x50bdb4); + if (iVar5 != 0) { + local_14 = FUN_0049fb54(iVar2); + } + if (local_14 != param_1[0x31]) { + param_1[0x31] = local_14; + if ((int *)param_1[0x2d] != (int *)0x0) { + FUN_004c9d18((int *)param_1[0x2d],local_14); + } + } + if (param_1[0x2f] != 0) { + param_1[0x2f] = 0; + if (param_1[0x28] != 0) { + (**(code **)(param_1[0x12] + 0x24))(piVar3,1,1); + piVar1 = (int *)param_1[0x28]; + (**(code **)(param_1[0x12] + 0x5c))(piVar3,1,0,piVar1,0,0,*piVar1 + -1,piVar1[1] + -1); + } + (**(code **)(param_1[0x12] + 0x24))(piVar3,1,0xcf); + if (param_1[0x27] == 0) { + (**(code **)(param_1[0x12] + 0x18))(piVar3,param_1[0x29]); + (**(code **)(param_1[0x12] + 0x4c))(piVar3,0x80,0x20); + } + else { + uVar6 = FUN_004c2f94(iVar2); + (**(code **)(param_1[0x12] + 0x18))(piVar3,uVar6); + iVar2 = param_1[0x27]; + (**(code **)(param_1[0x12] + 0x58)) + (piVar3,param_1[0x29],0,iVar2,0,0,*(int *)(iVar2 + 0xc) + -1, + *(int *)(iVar2 + 0x10) + -1); + } + } + iVar2 = *(int *)(param_1[0x26] + 0x1c4); + if (iVar2 != param_1[0x30]) { + param_1[0x30] = iVar2; + if (iVar2 == 0) { + iVar2 = param_1[0x2b]; + } + else { + iVar2 = param_1[0x2c]; + } + (**(code **)(param_1[0x12] + 0x18))(param_1 + 0x12,iVar2); + (**(code **)(param_1[0x12] + 0x24))(param_1 + 0x12,0,0); + (**(code **)(param_1[0x12] + 0x44))(param_1 + 0x12,0x9f,0xef); + } + } + return; +} + + + +/* @004cb678 file=? name=FUN_004cb678 */ + +bool __cdecl +FUN_004cb678(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,int param_5) + +{ + int iVar1; + undefined4 *puVar2; + + puVar2 = (undefined4 *)FUN_00402298(0xa4); + if (puVar2 != (undefined4 *)0x0) { + FUN_004cb704(puVar2,DAT_0051b43c,DAT_0051b480,param_5,0,param_1,param_2,param_3,&DAT_0051b4c4, + DAT_0051b508,s_MessageBoard_0051bb61); + } + iVar1 = *(int *)(param_5 + 0x4c) + 4; + puVar2 = FUN_00442aec(iVar1,&DAT_0051b4c4,0); + if (puVar2 != (undefined4 *)0x0) { + FUN_00442c12(iVar1,&DAT_0051b4c4); + } + return puVar2 != (undefined4 *)0x0; +} + + + +/* @004cb704 file=? name=FUN_004cb704 */ + +undefined4 * __cdecl +FUN_004cb704(undefined4 *param_1,undefined4 param_2,undefined4 param_3,int param_4, + undefined4 param_5,int param_6,undefined4 param_7,undefined4 param_8,char *param_9, + undefined4 param_10,undefined4 param_11) + +{ + char *pcVar1; + + FUN_00444818(param_1,param_2,param_3,param_4,param_5,param_6,param_11); + *param_1 = &PTR_FUN_0051bddc; + pcVar1 = (char *)FUN_004700ac(param_9); + param_1[0x25] = pcVar1; + FUN_00442aec(*(int *)(param_4 + 0x4c) + 4,pcVar1,0); + (**(code **)(param_1[0x12] + 0x10))(param_1 + 0x12,param_7,param_8); + param_1[0x26] = param_10; + param_1[0x24] = 0; + return param_1; +} + + + +/* @004cb788 file=? name=FUN_004cb788 */ + +void __cdecl FUN_004cb788(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0051bddc; + FUN_00442c12(*(int *)(param_1[7] + 0x4c) + 4,(char *)param_1[0x25]); + FUN_004022e8((int *)param_1[0x25]); + param_1[0x25] = 0; + FUN_00444870(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004cb7e4 file=? name=FUN_004cb7e4 */ + +void FUN_004cb7e4(void) + +{ + FUN_004448ac(); + return; +} + + + +/* @004cb7f4 file=? name=FUN_004cb7f4 */ + +void FUN_004cb7f4(void) + +{ + return; +} + + + +/* @004cb7fc file=? name=FUN_004cb7fc */ + +void __cdecl FUN_004cb7fc(int param_1) + +{ + *(undefined4 *)(param_1 + 0x9c) = 0xffffffff; + *(undefined4 *)(param_1 + 0xa0) = 0xfffffffe; + return; +} + + + +/* @004cb818 file=? name=FUN_004cb818 */ + +void __cdecl FUN_004cb818(int param_1,undefined4 param_2) + +{ + *(undefined4 *)(param_1 + 0x90) = param_2; + return; +} + + + +/* @004cb82c file=? name=FUN_004cb82c */ + +void __cdecl FUN_004cb82c(int param_1) + +{ + int iVar1; + undefined4 *puVar2; + int iVar3; + undefined4 uVar4; + int iVar5; + undefined4 local_14; + undefined4 local_10; + int local_c; + int local_8; + + if ((*(int *)(param_1 + 0x90) != 0) && + (iVar1 = *(int *)(*(int *)(param_1 + 0x90) + 400), iVar1 != 0)) { + iVar1 = *(int *)(iVar1 + 0x1dc); + if (iVar1 == 0) { + iVar5 = 0; + iVar1 = -1; + } + else { + iVar5 = *(int *)(iVar1 + 0x10); + iVar1 = *(int *)(iVar1 + 0xc); + } + if (iVar1 != *(int *)(param_1 + 0xa0)) { + *(int *)(param_1 + 0xa0) = iVar1; + (**(code **)(*(int *)(param_1 + 0x48) + 0x24))(param_1 + 0x48,0,0); + if (*(int *)(param_1 + 0xa0) == -1) { + (**(code **)(*(int *)(param_1 + 0x48) + 0x18)) + (param_1 + 0x48,*(undefined4 *)(param_1 + 0x98)); + (**(code **)(*(int *)(param_1 + 0x48) + 0x4c))(param_1 + 0x48,0x80,0x20); + } + else { + local_8 = (*(uint *)(param_1 + 0xa0) & 3) << 7; + local_c = ((int)*(uint *)(param_1 + 0xa0) >> 2) << 5; + uVar4 = FUN_004c2f88(); + (**(code **)(*(int *)(param_1 + 0x48) + 0x18))(param_1 + 0x48,uVar4); + iVar1 = *(int *)(*(int *)(param_1 + 0x1c) + 0x4c); + puVar2 = FUN_00442aec(iVar1 + 4,*(char **)(param_1 + 0x94),0); + if (puVar2 != (undefined4 *)0x0) { + (**(code **)(*(int *)(param_1 + 0x48) + 0x58)) + (param_1 + 0x48,*(undefined4 *)(param_1 + 0x98),0,puVar2,local_8,local_c, + local_8 + 0x7f,local_c + 0x1f); + } + FUN_00442c12(iVar1 + 4,*(char **)(param_1 + 0x94)); + } + } + if (iVar5 != *(int *)(param_1 + 0x9c)) { + iVar1 = param_1 + 0x48; + (**(code **)(*(int *)(param_1 + 0x48) + 0x24))(iVar1,0x80,0); + if (iVar5 == 0) { + (**(code **)(*(int *)(param_1 + 0x48) + 0x18))(iVar1,*(undefined4 *)(param_1 + 0x98)); + if (*(int *)(param_1 + 0x9c) == -1) { + (**(code **)(*(int *)(param_1 + 0x48) + 0x4c))(iVar1,0x80,0x20); + } + else { + local_10 = *(undefined4 *)(*(int *)(param_1 + 0x9c) + 0x1e0); + iVar3 = (**(code **)(*(int *)(*(int *)(DAT_004efc94 + 200) + 0x68) + 0xc)) + (*(int *)(DAT_004efc94 + 200) + 0x68,&local_10); + (**(code **)(*(int *)(param_1 + 0x48) + 0x54)) + (iVar1,0,iVar3,0,0,*(int *)(iVar3 + 0xc) + -1,*(int *)(iVar3 + 0x10) + -1); + } + } + else { + uVar4 = FUN_004c2f88(); + (**(code **)(*(int *)(param_1 + 0x48) + 0x18))(iVar1,uVar4); + local_14 = *(undefined4 *)(iVar5 + 0x1e0); + iVar3 = (**(code **)(*(int *)(*(int *)(DAT_004efc94 + 200) + 0x68) + 0xc)) + (*(int *)(DAT_004efc94 + 200) + 0x68,&local_14); + (**(code **)(*(int *)(param_1 + 0x48) + 0x58)) + (iVar1,*(undefined4 *)(param_1 + 0x98),0,iVar3,0,0,*(int *)(iVar3 + 0xc) + -1, + *(int *)(iVar3 + 0x10) + -1); + } + *(int *)(param_1 + 0x9c) = iVar5; + } + } + return; +} + + + +/* @004cbea0 file=? name=FUN_004cbea0 */ + +int * __cdecl FUN_004cbea0(int *param_1) + +{ + undefined4 uVar1; + undefined4 *puVar2; + + FUN_0046f97c(param_1); + *param_1 = (int)&PTR_FUN_0051cebc; + puVar2 = (undefined4 *)FUN_00402298(0x14); + if (puVar2 != (undefined4 *)0x0) { + FUN_00448c54(puVar2); + *puVar2 = &PTR_FUN_0051ceb0; + } + param_1[0x7033] = (int)puVar2; + uVar1 = *(undefined4 *)(DAT_004efc94 + 0x3c); + puVar2 = (undefined4 *)FUN_00402298(0x44); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_00474c4c(puVar2,uVar1); + } + param_1[0x7032] = (int)puVar2; + puVar2 = (undefined4 *)FUN_00402298(0x74); + if (puVar2 == (undefined4 *)0x0) { + puVar2 = (undefined4 *)0x0; + } + else { + puVar2 = FUN_00468778(puVar2); + } + param_1[0x13] = (int)puVar2; + FUN_00448928(param_1,s_gauge_l4gauge_cfg_0051ce9e,(int *)&PTR_PTR_0051c910); + return param_1; +} + + + +/* @004cbf40 file=? name=FUN_004cbf40 */ + +void __cdecl FUN_004cbf40(int *param_1,byte param_2) + +{ + undefined4 *puVar1; + + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0051cebc; + FUN_00447fc0((int)param_1,0); + puVar1 = (undefined4 *)param_1[0x13]; + if (puVar1 != (undefined4 *)0x0) { + (**(code **)*puVar1)(puVar1,3); + } + param_1[0x13] = 0; + FUN_0046fbcc(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004cbf90 file=? name=FUN_004cbf90 */ + +void __cdecl FUN_004cbf90(int param_1) + +{ + FUN_00447b60(param_1); + return; +} + + + +/* @004cbfa0 file=? name=FUN_004cbfa0 */ + +void __cdecl FUN_004cbfa0(int param_1,int param_2) + +{ + int iVar1; + + iVar1 = FUN_00407064(*(int *)(DAT_004efc94 + 0x68),*(int *)(param_2 + 0x1bc),0x12); + if (iVar1 != 0) { + iVar1 = FUN_0041a1a4(**(int **)(param_2 + 0xc),0x4e4518); + if (iVar1 == 0) { + iVar1 = FUN_0041a1a4(**(int **)(param_2 + 0xc),0x4e6ef8); + if (iVar1 != 0) { + FUN_00443864((float *)(param_1 + 0xb0),param_2); + } + } + else { + FUN_004434f4(param_1 + 0x94,param_2); + } + } + FUN_0046fd6c(param_1,param_2); + return; +} + + + +/* @004cc028 file=? name=FUN_004cc028 */ + +void __cdecl FUN_004cc028(int param_1,int param_2) + +{ + int iVar1; + + iVar1 = FUN_00407064(*(int *)(DAT_004efc94 + 0x68),*(int *)(param_2 + 0x1bc),0x12); + if (iVar1 != 0) { + iVar1 = FUN_0041a1a4(**(int **)(param_2 + 0xc),0x4e4518); + if (iVar1 == 0) { + iVar1 = FUN_0041a1a4(**(int **)(param_2 + 0xc),0x4e6ef8); + if (iVar1 != 0) { + FUN_00443930(param_1 + 0xb0,param_2); + } + } + else { + FUN_00443510(param_1 + 0x94,param_2); + } + } + FUN_0046fda0(param_1,param_2); + return; +} + + + +/* @004cc0e1 file=? name=FUN_004cc0e1 */ + +void __cdecl FUN_004cc0e1(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + FUN_00448c74(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004cc108 file=? name=FUN_004cc108 */ + +undefined4 __cdecl FUN_004cc108(char *param_1,undefined4 *param_2) + +{ + int iVar1; + undefined **ppuVar2; + + ppuVar2 = &PTR_s_coolingLoop1_0051cf1c; + while( true ) { + if (*ppuVar2 == (char *)0x0) { + return 0; + } + iVar1 = FUN_004d4b58(param_1,*ppuVar2); + if (iVar1 == 0) break; + ppuVar2 = ppuVar2 + 2; + } + *param_2 = ppuVar2[1]; + return 1; +} + + + +/* @004cc148 file=? name=FUN_004cc148 */ + +undefined4 __cdecl FUN_004cc148(undefined4 param_1) + +{ + undefined4 uVar1; + + uVar1 = 0xffffffff; + switch(param_1) { + case 0: + uVar1 = 0x2f; + break; + case 1: + uVar1 = 0x2e; + break; + case 2: + uVar1 = 0x2d; + break; + case 3: + uVar1 = 0x2c; + break; + case 4: + uVar1 = 0x2b; + break; + case 5: + uVar1 = 0x2a; + } + return uVar1; +} + + + +/* @004cc1a0 file=? name=FUN_004cc1a0 */ + +int __cdecl FUN_004cc1a0(int param_1,int param_2,undefined4 *param_3) + +{ + int iVar1; + int iVar2; + + iVar2 = -1; + iVar1 = FUN_0041a1a4(**(int **)(param_2 + 0xc),0x50f4bc); + if ((iVar1 != 0) && (0 < *(int *)(param_2 + 0x1dc))) { + iVar1 = *(int *)(param_2 + 0x1dc) + -1; + if (param_1 == 0x80) { + iVar2 = *(int *)(&DAT_0051cffc + iVar1 * 4); + *param_3 = *(undefined4 *)(&DAT_0051cf9c + iVar1 * 4); + } + else { + iVar2 = *(int *)(&DAT_0051d02c + iVar1 * 4); + *param_3 = *(undefined4 *)(&DAT_0051cfcc + iVar1 * 4); + switch(param_1) { + case 0x82: + iVar2 = iVar2 + -1; + break; + case 0x83: + iVar2 = iVar2 + -2; + break; + case 0x84: + iVar2 = iVar2 + -3; + break; + case 0x85: + iVar2 = iVar2 + -4; + break; + case 0x86: + iVar2 = iVar2 + -5; + break; + case 0x87: + iVar2 = iVar2 + -6; + break; + case 0x88: + iVar2 = iVar2 + -7; + } + } + } + return iVar2; +} + + + +/* @004cc264 file=? name=FUN_004cc264 */ + +undefined4 __cdecl FUN_004cc264(int param_1) + +{ + return *(undefined4 *)(&DAT_0051d058 + *(int *)(param_1 + 0x1d4) * 4); +} + + + +/* @004cc27c file=? name=FUN_004cc27c */ + +undefined4 __cdecl FUN_004cc27c(int param_1) + +{ + return *(undefined4 *)(&DAT_0051d070 + *(int *)(param_1 + 0x1e0) * 4); +} + + + +/* @004cc294 file=? name=FUN_004cc294 */ + +undefined4 __cdecl FUN_004cc294(undefined4 param_1,int *param_2,char *param_3,char *param_4) + +{ + int iVar1; + undefined4 uVar2; + undefined4 local_c; + undefined4 local_8; + + iVar1 = FUN_004ac194(param_3,&local_8); + if (iVar1 == 0) { + uVar2 = 0; + } + else { + iVar1 = FUN_004cc108(param_4,&local_c); + if (iVar1 == 0) { + uVar2 = 0; + } + else { + (**(code **)(*param_2 + 0x20))(param_2,&local_8,4); + (**(code **)(*param_2 + 0x20))(param_2,&local_c,4); + uVar2 = 1; + } + } + return uVar2; +} + + + +/* @004cc2fc file=? name=FUN_004cc2fc */ + +void __cdecl +FUN_004cc2fc(undefined4 param_1,int param_2,undefined4 param_3,int param_4,int param_5,int *param_6) + +{ + int iVar1; + int *piVar2; + int unaff_EBX; + int local_10; + int local_c; + int local_8; + + (**(code **)(*param_6 + 0x1c))(param_6,&local_8,4); + (**(code **)(*param_6 + 0x1c))(param_6,&local_c,4); + if (param_5 == local_8) { + local_10 = -1; + iVar1 = FUN_0041a1a4(**(int **)(param_4 + 0xc),0x50e4fc); + if (iVar1 == 0) { + iVar1 = FUN_0041a1a4(**(int **)(param_4 + 0xc),0x50fb60); + if (iVar1 == 0) { + if (local_c < 0x80) { + unaff_EBX = FUN_004cc148(local_c); + } + else { + unaff_EBX = FUN_004cc1a0(local_c,param_4,&local_10); + } + } + else if (param_5 == 2) { + unaff_EBX = FUN_004cc27c(param_4); + } + } + else if (param_5 == 2) { + unaff_EBX = FUN_004cc264(param_4); + } + if ((-1 < unaff_EBX) && (*(int *)(DAT_004efc94 + 0x4c) != 0)) { + piVar2 = (int *)FUN_00444c80(*(int *)(*(int *)(DAT_004efc94 + 0x4c) + 0x1c0c8),unaff_EBX, + local_10); + if (piVar2 != (int *)0x0) { + FUN_00444e64(piVar2,1); + (**(code **)(*(int *)(param_2 + 0x18) + 4))(param_2 + 0x18,piVar2); + } + } + } + return; +} + + + +/* @004cc40c file=? name=FUN_004cc40c */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 * __cdecl +FUN_004cc40c(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 *param_4, + undefined4 param_5,undefined4 *param_6,undefined4 param_7,undefined4 param_8, + undefined4 param_9,undefined4 param_10,undefined4 param_11,undefined4 param_12, + undefined4 param_13,undefined4 param_14,undefined4 param_15) + +{ + int *piVar1; + int iVar2; + undefined4 uVar3; + undefined4 local_24 [6]; + float local_c; + undefined4 *local_8; + + FUN_004530ec(param_1,param_2,param_3); + *param_1 = &PTR_LAB_0051db44; + local_8 = param_1 + 0xcd; + FUN_004d123b(param_1 + 0xd1,0); + param_1[0x94] = param_4; + param_1[0x95] = *param_4; + param_1[0x96] = param_5; + param_1[0x89] = param_6; + param_1[0x8a] = *param_6; + param_1[0x8b] = param_11; + param_1[0x8c] = param_12; + param_1[0x91] = *(undefined4 *)param_1[0x95]; + param_1[0x92] = ((undefined4 *)param_1[0x95])[1]; + param_1[0x93] = *(undefined4 *)(param_1[0x95] + 8); + param_1[0x90] = 0; + param_1[0x78] = 0; + param_1[0x77] = 0; + param_1[0xe] = 0; + param_1[0xd] = 0; + param_1[0x79] = param_8; + param_1[0x7a] = 0; + param_1[0x7b] = param_9; + param_1[0x7c] = param_10; + param_1[0x7d] = param_7; + param_1[0x7e] = 0; + param_1[0xd0] = param_13; + FUN_00408440(param_1 + 0xcd,&DAT_004e0f74); + param_1[0xc9] = param_14; + FUN_00408440(param_1 + 0xca,&DAT_004e0f74); + param_1[0x61] = param_15; + param_1[0x62] = 0; + piVar1 = (int *)FUN_00414b60(); + param_1[0x4b] = (float)*piVar1 / DAT_0052140c; + param_1[8] = *(undefined4 *)(param_1[0x95] + 0x24); + param_1[7] = 0; + param_1[0x60] = 0; + param_1[0x7f] = 0x3eb33333; + param_1[0x80] = 0x3e800000; + param_1[0x81] = 0x3f000000; + param_1[0x83] = 0x3c03126f; + param_1[0x82] = 0x3c83126f; + param_1[9] = 0xd; + param_1[10] = 1; + param_1[0x84] = 0xbe800000; + param_1[0x85] = 0x3eb33333; + param_1[0x86] = 0x3f000000; + param_1[0x88] = 0x3c03126f; + param_1[0x87] = 0x3c83126f; + param_1[0xb] = 0x15; + param_1[0xc] = 1; + iVar2 = FUN_00498448(s_PNAME1_bgf_0051d1f7,0); + param_1[0xbb] = iVar2; + iVar2 = FUN_00498448(s_PNAME2_bgf_0051d202,0); + param_1[0xbc] = iVar2; + iVar2 = FUN_00498448(s_PNAME3_bgf_0051d20d,0); + param_1[0xbd] = iVar2; + iVar2 = FUN_00498448(s_PNAME4_bgf_0051d218,0); + param_1[0xbe] = iVar2; + iVar2 = FUN_00498448(s_PNAME5_bgf_0051d223,0); + param_1[0xbf] = iVar2; + iVar2 = FUN_00498448(s_PNAME6_bgf_0051d22e,0); + param_1[0xc0] = iVar2; + iVar2 = FUN_00498448(s_PNAME7_bgf_0051d239,0); + param_1[0xc1] = iVar2; + iVar2 = FUN_00498448(s_PNAME8_bgf_0051d244,0); + param_1[0xc2] = iVar2; + uVar3 = FUN_00489708(); + param_1[199] = uVar3; + iVar2 = FUN_00489724(); + param_1[200] = iVar2; + FUN_0048ab0c(iVar2,param_1[0xbb]); + FUN_0048ac30(param_1[200],0); + FUN_00489e04(param_1[199],param_1[200]); + FUN_00491cc4(param_1[199],0.12,0x3df5c28f,0x3df5c28f); + FUN_00491c58(param_1[199],0x80000000,0xbda3d70a,0xbf800000); + FUN_004901a0(param_1[199],1); + FUN_0048fe54(param_1[199],7); + FUN_0048d5d4((undefined4 *)param_1[200]); + FUN_0048d3e8((undefined4 *)param_1[199]); + FUN_00489ba8(param_1[199]); + param_1[0x8d] = (float)param_1[0x8b] - (float)param_1[0x8c]; + if ((float)param_1[0x8c] <= (float)param_1[0x8a]) { + if ((float)param_1[0x8a] <= (float)param_1[0x8b]) { + uVar3 = param_1[0x8a]; + } + else { + uVar3 = param_1[0x8b]; + } + } + else { + uVar3 = param_1[0x8c]; + } + param_1[0x8a] = uVar3; + param_1[0x8f] = ((float)param_1[0x8a] - (float)param_1[0x8c]) / (float)param_1[0x8d]; + param_1[0x8e] = param_1[0x8f]; + piVar1 = FUN_00487f34(); + param_1[0x97] = piVar1; + piVar1 = FUN_00487f34(); + param_1[0x98] = piVar1; + piVar1 = FUN_00487f34(); + param_1[0x99] = piVar1; + piVar1 = FUN_00487f34(); + param_1[0x9b] = piVar1; + piVar1 = FUN_00487f34(); + param_1[0x9c] = piVar1; + piVar1 = FUN_00487f34(); + param_1[0x9a] = piVar1; + piVar1 = FUN_00487f34(); + param_1[0x9d] = piVar1; + piVar1 = FUN_00487f34(); + param_1[0xb7] = piVar1; + piVar1 = FUN_00487f34(); + param_1[0xb8] = piVar1; + piVar1 = FUN_00487f34(); + param_1[0xb9] = piVar1; + piVar1 = FUN_00487f34(); + param_1[0xb6] = piVar1; + piVar1 = FUN_00487f34(); + param_1[0x9e] = piVar1; + piVar1 = FUN_00487f34(); + param_1[0xba] = piVar1; + piVar1 = FUN_00487f34(); + param_1[0x9f] = piVar1; + piVar1 = FUN_00487f34(); + param_1[0xa0] = piVar1; + piVar1 = FUN_00487f34(); + param_1[0xa1] = piVar1; + FUN_00487fbc(param_1[0x97],1); + FUN_00488850(param_1[0x97],(undefined4 *)param_1[0x98]); + FUN_00488030(param_1[0x97]); + FUN_00488054((byte *)param_1[0x97]); + FUN_00487fbc(param_1[0x98],1); + FUN_00488500(param_1[0x98],0x3f800000); + FUN_004888c0(param_1[0x98]); + FUN_00488630(param_1[0x98],0x3f400000,0,0); + FUN_00488850(param_1[0x98],(undefined4 *)param_1[0xa1]); + FUN_00488630(param_1[0x98],0,0x3f400000,0); + FUN_00488850(param_1[0x98],(undefined4 *)param_1[0x9a]); + FUN_00488340(param_1[0x98]); + FUN_00488408(param_1[0x98],0,0); + FUN_004883a4(param_1[0x98]); + FUN_00488278(param_1[0x98]); + FUN_00488408(param_1[0x98],0x3d23d70a,0); + FUN_00488408(param_1[0x98],0x3dcccccd,0); + FUN_00488408(param_1[0x98],0xbd23d70a,0); + FUN_00488408(param_1[0x98],0xbdcccccd,0); + FUN_00488408(param_1[0x98],0,0x3d23d70a); + FUN_00488408(param_1[0x98],0,0x3dcccccd); + FUN_00488408(param_1[0x98],0,0xbd23d70a); + FUN_00488408(param_1[0x98],0,0xbdcccccd); + FUN_004882dc(param_1[0x98]); + FUN_00488500(param_1[0x98],0x40400000); + FUN_00488278(param_1[0x98]); + FUN_00488408(param_1[0x98],0x3dcccccd,0); + FUN_00488408(param_1[0x98],0x3e23d70a,0); + FUN_00488408(param_1[0x98],0xbdcccccd,0); + FUN_00488408(param_1[0x98],0xbe23d70a,0); + FUN_00488408(param_1[0x98],0,0x3dcccccd); + FUN_00488408(param_1[0x98],0,0x3e23d70a); + FUN_00488408(param_1[0x98],0,0xbdcccccd); + FUN_00488408(param_1[0x98],0,0xbe23d70a); + FUN_004882dc(param_1[0x98]); + FUN_00488500(param_1[0x98],0x3f800000); + FUN_004cd938(param_1,param_1[0x98],param_1[9],param_1[10],(float)param_1[0x81], + (float)param_1[0x7f],(float)param_1[0x80],3,(float)param_1[0x83],(float)param_1[0x82] + ); + FUN_0048856c(param_1[0x98]); + FUN_00488500(param_1[0x98],0x40000000); + FUN_00488630(param_1[0x98],0x3f400000,0x3f400000,0); + FUN_00488850(param_1[0x98],(undefined4 *)param_1[0x9b]); + FUN_00488500(param_1[0x98],0x3f800000); + FUN_00488630(param_1[0x98],0,0x3f400000,0); + FUN_004880e8(param_1[0x98]); + FUN_00488408(param_1[0x98],(float)param_1[0x7f] - (float)param_1[0x82],param_1[0x80]); + FUN_00488408(param_1[0x98],((float)param_1[0x7f] - _DAT_004cd7f4) - (float)param_1[0x82], + (float)param_1[0x80] + _DAT_004cd7f4); + FUN_00488408(param_1[0x98],((float)param_1[0x7f] - _DAT_004cd7f4) - (float)param_1[0x82], + (float)param_1[0x80] - _DAT_004cd7f4); + FUN_00488408(param_1[0x98],(float)param_1[0x7f] - (float)param_1[0x82],param_1[0x80]); + FUN_0048814c(param_1[0x98]); + FUN_004885cc(param_1[0x98]); + FUN_004cd938(param_1,param_1[0x98],param_1[0xb],param_1[0xc],(float)param_1[0x86], + (float)param_1[0x84],(float)param_1[0x85],0,(float)param_1[0x88],(float)param_1[0x87] + ); + local_c = (float)param_1[0x86] * _DAT_004cd7f8 + (float)param_1[0x84]; + FUN_0048856c(param_1[0x98]); + FUN_00488500(param_1[0x98],0x40000000); + FUN_00488630(param_1[0x98],0x3f400000,0x3f400000,0); + FUN_00488850(param_1[0x98],(undefined4 *)param_1[0x9c]); + FUN_00488500(param_1[0x98],0x3f800000); + FUN_00488630(param_1[0x98],0,0x3f400000,0); + FUN_004880e8(param_1[0x98]); + FUN_00488408(param_1[0x98],local_c,(float)param_1[0x85] - (float)param_1[0x87]); + FUN_00488408(param_1[0x98],local_c + _DAT_004cd7f4, + ((float)param_1[0x85] - _DAT_004cd7f4) - (float)param_1[0x87]); + FUN_00488408(param_1[0x98],local_c - _DAT_004cd7f4, + ((float)param_1[0x85] - _DAT_004cd7f4) - (float)param_1[0x87]); + FUN_00488408(param_1[0x98],local_c,(float)param_1[0x85] - (float)param_1[0x87]); + FUN_0048814c(param_1[0x98]); + FUN_004885cc(param_1[0x98]); + FUN_004880e8(param_1[0x98]); + FUN_00488408(param_1[0x98],local_c,(float)param_1[0x85] + (float)param_1[0x87]); + FUN_00488408(param_1[0x98],local_c + _DAT_004cd7f4, + (float)param_1[0x85] + _DAT_004cd7f4 + (float)param_1[0x87]); + FUN_00488408(param_1[0x98],local_c - _DAT_004cd7f4, + (float)param_1[0x85] + _DAT_004cd7f4 + (float)param_1[0x87]); + FUN_00488408(param_1[0x98],local_c,(float)param_1[0x85] + (float)param_1[0x87]); + FUN_0048814c(param_1[0x98]); + FUN_0048856c(param_1[0x98]); + FUN_00488850(param_1[0x98],(undefined4 *)param_1[0x9e]); + FUN_0048847c(param_1[0x98],0,0,0x3cf5c28f,0); + FUN_00488278(param_1[0x98]); + FUN_00488408(param_1[0x98],0,0xbd23d70a); + FUN_00488408(param_1[0x98],0,0xbba3d70a); + FUN_004882dc(param_1[0x98]); + FUN_00488850(param_1[0x98],(undefined4 *)param_1[0xba]); + FUN_004885cc(param_1[0x98]); + FUN_00488850(param_1[0x98],(undefined4 *)param_1[0xb6]); + FUN_00488850(param_1[0x98],(undefined4 *)param_1[0x9d]); + FUN_00488850(param_1[0x98],(undefined4 *)param_1[0xb7]); + FUN_00488030(param_1[0x98]); + FUN_00488054((byte *)param_1[0x98]); + FUN_00488b80(local_24); + FUN_00488bac((int)local_24,*(float *)param_1[0x95],((float *)param_1[0x95])[1]); + FUN_00487fbc(param_1[0x9a],1); + FUN_00488718(param_1[0x9a],local_24); + FUN_00488030(param_1[0x9a]); + FUN_00488054((byte *)param_1[0x9a]); + FUN_00488b80(local_24); + FUN_00488bac((int)local_24,0.0,-(float)param_1[0x81] * (float)param_1[0x8f]); + FUN_00487fbc(param_1[0x9b],1); + FUN_004887b0(param_1[0x9b],local_24,0); + FUN_00488030(param_1[0x9b]); + FUN_00488054((byte *)param_1[0x9b]); + FUN_00488b80(local_24); + FUN_00487fbc(param_1[0x9c],1); + FUN_004887b0(param_1[0x9c],local_24,0); + FUN_00488030(param_1[0x9c]); + FUN_00488054((byte *)param_1[0x9c]); + FUN_00488b80(local_24); + FUN_00488bac((int)local_24,(float)param_1[0x84], + ((float)param_1[0x85] - (float)param_1[0x87] * _DAT_004cd7fc) - _DAT_004cd800); + FUN_00487fbc(param_1[0x9e],1); + FUN_004887b0(param_1[0x9e],local_24,0); + FUN_00488030(param_1[0x9e]); + FUN_00488054((byte *)param_1[0x9e]); + FUN_00487fbc(param_1[0xba],1); + FUN_00488030(param_1[0xba]); + FUN_00488054((byte *)param_1[0xba]); + FUN_00487fbc(param_1[0xb6],1); + FUN_00488030(param_1[0xb6]); + FUN_00488054((byte *)param_1[0xb6]); + FUN_00488b80(local_24); + FUN_00487fbc(param_1[0x9d],1); + FUN_004887b0(param_1[0x9d],local_24,0); + FUN_00488030(param_1[0x9d]); + FUN_00488054((byte *)param_1[0x9d]); + FUN_00487fbc(param_1[0xb7],1); + FUN_00488030(param_1[0xb7]); + FUN_00488054((byte *)param_1[0xb7]); + FUN_00487fbc(param_1[0xb8],1); + FUN_00488630(param_1[0xb8],0,0x3f400000,0); + FUN_0048847c(param_1[0xb8],0,0,0x3df5c28f,0); + FUN_00488030(param_1[0xb8]); + FUN_00488054((byte *)param_1[0xb8]); + FUN_00487fbc(param_1[0xb9],1); + FUN_00488630(param_1[0xb9],0,0x3f400000,0); + FUN_0048847c(param_1[0xb9],0,0,0x3df5c28f,0); + FUN_00488278(param_1[0xb9]); + FUN_00488408(param_1[0xb9],0x3e0f5c29,0); + FUN_00488408(param_1[0xb9],0x3dcccccd,0); + FUN_00488408(param_1[0xb9],0xbe0f5c29,0); + FUN_00488408(param_1[0xb9],0xbdcccccd,0); + FUN_00488408(param_1[0xb9],0,0x3e0f5c29); + FUN_00488408(param_1[0xb9],0,0x3dcccccd); + FUN_00488408(param_1[0xb9],0,0xbe0f5c29); + FUN_00488408(param_1[0xb9],0,0xbdcccccd); + FUN_004882dc(param_1[0xb9]); + FUN_00488030(param_1[0xb9]); + FUN_00488054((byte *)param_1[0xb9]); + FUN_00487fbc(param_1[0x9f],1); + FUN_00488500(param_1[0x9f],0x41400000); + FUN_004886ac(param_1[0x9f],0x3f000000); + FUN_00488278(param_1[0x9f]); + FUN_00488408(param_1[0x9f],0xbf99999a,0xbe99a6b5); + FUN_00488408(param_1[0x9f],0xbfc00000,0); + FUN_00488408(param_1[0x9f],0xbfc00000,0); + FUN_00488408(param_1[0x9f],0xbf99999a,0x3e99a6b5); + FUN_004882dc(param_1[0x9f]); + FUN_00488500(param_1[0x9f],0x3f800000); + FUN_004886ac(param_1[0x9f],0x3f800000); + FUN_00488030(param_1[0x9f]); + FUN_00488054((byte *)param_1[0x9f]); + FUN_00487fbc(param_1[0xa0],1); + FUN_00488500(param_1[0xa0],0x41400000); + FUN_004886ac(param_1[0xa0],0x3f000000); + FUN_00488278(param_1[0xa0]); + FUN_00488408(param_1[0xa0],0x3f99999a,0x3e99a6b5); + FUN_00488408(param_1[0xa0],0x3fc00000,0); + FUN_00488408(param_1[0xa0],0x3fc00000,0); + FUN_00488408(param_1[0xa0],0x3f99999a,0xbe99a6b5); + FUN_004882dc(param_1[0xa0]); + FUN_00488500(param_1[0xa0],0x3f800000); + FUN_004886ac(param_1[0xa0],0x3f800000); + FUN_00488030(param_1[0xa0]); + FUN_00488054((byte *)param_1[0xa0]); + FUN_00487fbc(param_1[0xa1],1); + FUN_00488030(param_1[0xa1]); + FUN_00488054((byte *)param_1[0xa1]); + FUN_00487fbc(param_1[0x99],1); + FUN_00488500(param_1[0x99],0x3f800000); + FUN_004888c0(param_1[0x99]); + FUN_00488630(param_1[0x99],0,0x3f400000,0); + FUN_00488850(param_1[0x99],(undefined4 *)param_1[0x9a]); + FUN_00488278(param_1[0x99]); + FUN_00488408(param_1[0x99],0xbda3d70a,0); + FUN_00488408(param_1[0x99],0xbca3d70a,0); + FUN_00488408(param_1[0x99],0x3ca3d70a,0); + FUN_00488408(param_1[0x99],0x3da3d70a,0); + FUN_00488408(param_1[0x99],0,0xbda3d70a); + FUN_00488408(param_1[0x99],0,0xbca3d70a); + FUN_00488408(param_1[0x99],0,0x3ca3d70a); + FUN_00488408(param_1[0x99],0,0x3da3d70a); + FUN_004882dc(param_1[0x99]); + FUN_00488030(param_1[0x99]); + FUN_00488054((byte *)param_1[0x99]); + if (param_1[0x93] == 1) { + FUN_00488ab4(param_1[0x96],param_1[0x97]); + FUN_0048d42c((undefined4 *)param_1[0x96]); + } + return param_1; +} + + + +/* @004cd918 file=? name=FUN_004cd918 */ + +undefined4 __cdecl FUN_004cd918(int param_1) + +{ + int iVar1; + + FUN_004531c4(param_1); + for (iVar1 = 0; iVar1 < *(int *)(param_1 + 0x38); iVar1 = iVar1 + 1) { + } + return 1; +} + + + +/* @004cd938 file=? name=FUN_004cd938 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl +FUN_004cd938(undefined4 param_1,int param_2,int param_3,int param_4,float param_5,float param_6, + float param_7,int param_8,float param_9,float param_10) + +{ + float fVar1; + int iVar2; + int iVar3; + undefined4 local_28; + undefined4 local_24; + undefined4 local_20; + undefined4 local_1c; + undefined4 local_18; + undefined4 local_14; + undefined4 local_c; + undefined4 local_8; + + local_8 = param_6; + local_c = param_7; + fVar1 = param_5 / (float)(param_3 + -1); + local_28 = _DAT_004cdabc; + local_24 = _DAT_004cdabc; + local_20 = _DAT_004cdabc; + local_1c = _DAT_004cdabc; + if (param_8 == 0) { + local_18 = 0.0; + local_20 = param_10; + local_28 = param_9; + local_14 = fVar1; + } + else if (param_8 == 1) { + local_18 = 0.0; + local_20 = param_10; + local_28 = param_9; + local_14 = -fVar1; + } + else if (param_8 == 2) { + local_14 = 0.0; + local_1c = param_10; + local_24 = param_9; + local_18 = fVar1; + } + else if (param_8 == 3) { + local_14 = 0.0; + local_1c = param_10; + local_24 = param_9; + local_18 = -fVar1; + } + iVar2 = 0; + FUN_00488278(param_2); + iVar3 = 0; + if (0 < param_3) { + do { + if (iVar2 == 0) { + FUN_00488408(param_2,local_8 + local_1c,local_c + local_20); + FUN_00488408(param_2,local_8 - local_1c,local_c - local_20); + iVar2 = param_4; + } + else { + FUN_00488408(param_2,local_8 + local_24,local_c + local_28); + FUN_00488408(param_2,local_8 - local_24,local_c - local_28); + iVar2 = iVar2 + -1; + } + local_8 = local_14 + local_8; + local_c = local_18 + local_c; + iVar3 = iVar3 + 1; + } while (iVar3 < param_3); + } + FUN_004882dc(param_2); + return; +} + + + +/* @004cdac0 file=bt_l4/btl4vid.cpp name=FUN_004cdac0 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl +FUN_004cdac0(int param_1,float param_2,int param_3,undefined4 *param_4,int param_5, + undefined4 param_6,undefined4 param_7,undefined4 param_8,int param_9,undefined4 param_10 + ,undefined4 param_11,int param_12,undefined4 param_13,undefined4 param_14) + +{ + float fVar1; + float fVar2; + byte *pbVar3; + byte *pbVar4; + + if (9 < *(int *)(param_1 + 0x38)) { + FUN_0040385c(s_Tried_to_display_too_many_weapon_0051d24f, + s_d__tesla_bt_bt_l4_BTL4VID_CPP_0051d272,0x338); + } + *(undefined4 *)(param_1 + 100 + *(int *)(param_1 + 0x38) * 4) = param_11; + *(undefined4 *)(param_1 + 0x8c + *(int *)(param_1 + 0x38) * 4) = param_10; + *(undefined4 *)(param_1 + 0xb4 + *(int *)(param_1 + 0x38) * 4) = param_13; + *(int *)(param_1 + 0x130 + *(int *)(param_1 + 0x38) * 4) = param_9; + *(undefined4 *)(param_1 + 0xdc + *(int *)(param_1 + 0x38) * 4) = *(undefined4 *)(param_9 + 0x14); + *(int *)(param_1 + 0x158 + *(int *)(param_1 + 0x38) * 4) = param_12; + *(undefined4 *)(param_1 + 0x104 + *(int *)(param_1 + 0x38) * 4) = *(undefined4 *)(param_12 + 0x14) + ; + *(undefined4 **)(param_1 + 0x18c + *(int *)(param_1 + 0x38) * 4) = param_4; + *(undefined4 *)(param_1 + 0x1b4 + *(int *)(param_1 + 0x38) * 4) = *param_4; + *(undefined4 *)(param_1 + 0x3c + *(int *)(param_1 + 0x38) * 4) = param_14; + pbVar3 = (byte *)FUN_00487f34(); + pbVar4 = (byte *)FUN_00487f34(); + *(byte **)(param_1 + 0x2b0 + *(int *)(param_1 + 0x38) * 4) = pbVar3; + *(byte **)(param_1 + 0x288 + *(int *)(param_1 + 0x38) * 4) = pbVar4; + if (*(float *)(param_1 + 0x230) <= param_2) { + if (*(float *)(param_1 + 0x22c) < param_2) { + param_2 = *(float *)(param_1 + 0x22c); + } + } + else { + param_2 = *(float *)(param_1 + 0x230); + } + fVar2 = *(float *)(param_1 + 0x1fc) + *(float *)(param_1 + 0x208) + + (float)param_3 * (float)_DAT_004cdce8; + fVar1 = -*(float *)(param_1 + 0x204) * + ((param_2 - *(float *)(param_1 + 0x230)) / *(float *)(param_1 + 0x234)) + + *(float *)(param_1 + 0x200); + FUN_00487fbc((int)pbVar3,1); + FUN_00488630((int)pbVar3,param_6,param_7,param_8); + FUN_0048847c((int)pbVar3,fVar2,fVar1,0x3c449ba6,1); + FUN_00488630((int)pbVar3,0,0,0); + FUN_0048847c((int)pbVar3,fVar2,fVar1,0x3c656042,0); + if (param_5 != 0) { + FUN_00488630((int)pbVar3,0x3f333333,0x3f333333,0x3f333333); + FUN_00488340((int)pbVar3); + FUN_00488408((int)pbVar3,fVar2,fVar1); + FUN_004883a4((int)pbVar3); + } + FUN_00488030((int)pbVar3); + FUN_00488054(pbVar3); + FUN_00487fbc((int)pbVar4,1); + FUN_00488630((int)pbVar4,0,0,0); + FUN_0048847c((int)pbVar4,fVar2,fVar1,0x3c656042,0); + FUN_00488030((int)pbVar4); + FUN_00488054(pbVar4); + *(int *)(param_1 + 0x38) = *(int *)(param_1 + 0x38) + 1; + return; +} + + + +/* @004ceecc file=? name=FUN_004ceecc */ + +undefined4 * __cdecl +FUN_004ceecc(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4, + undefined4 param_5,undefined4 param_6) + +{ + FUN_0045a180(param_1,param_2,param_3,param_4,param_5,param_6); + *param_1 = &PTR_FUN_0051daf4; + return param_1; +} + + + +/* @004ceefc file=? name=FUN_004ceefc */ + +void __cdecl FUN_004ceefc(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0051daf4; + FUN_0045d0f4(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004cef28 file=bt_l4/btl4vid.cpp name=FUN_004cef28 */ + +undefined4 __cdecl FUN_004cef28(int param_1,int param_2,undefined4 param_3,int param_4) + +{ + char *pcVar1; + char cVar2; + int iVar3; + int *piVar4; + undefined4 *puVar5; + undefined4 *puVar6; + char *pcVar7; + int iVar8; + int iVar9; + uint uVar10; + uint uVar11; + char *pcVar12; + bool bVar13; + undefined4 uVar14; + undefined4 local_320 [3]; + undefined4 local_314 [3]; + float local_308; + undefined4 local_304; + undefined4 local_300; + float local_2fc [3]; + undefined4 local_2f0 [12]; + int local_2c0 [7]; + int local_2a4 [7]; + undefined4 local_288 [12]; + int local_258 [7]; + char local_23c [40]; + undefined4 *local_214; + undefined4 *local_210; + int *local_20c; + int *local_208; + int local_204; + int local_200; + int local_1fc; + undefined4 *local_1f8; + undefined4 *local_1f4; + int *local_1f0; + undefined4 local_1ec; + int local_1e8; + undefined4 *local_1e4; + undefined4 *local_1e0; + undefined4 *local_1dc; + int local_1d8; + undefined4 *local_1d4; + undefined4 *local_1d0; + undefined4 *local_1cc; + undefined4 *local_1c8; + undefined4 *local_1c4; + undefined4 *local_1c0; + int local_1bc; + int *local_1b8; + undefined4 *local_1b4; + int local_1b0; + undefined4 *local_1ac; + int local_1a8; + undefined4 *local_1a4; + int local_1a0; + int local_19c; + int local_198; + int local_194; + undefined4 *local_190; + undefined4 *local_18c; + int local_188; + int local_184; + int local_180; + int local_17c; + undefined4 local_178; + int *local_174; + int local_170; + int local_16c; + int *local_168; + undefined4 *local_164; + int *local_160; + float *local_15c; + undefined4 *local_158; + int *local_154; + int *local_150; + int *local_14c; + int *local_148; + int *local_144; + int *local_140; + undefined4 *local_13c; + int *local_138; + int local_134; + undefined4 *local_130; + int local_12c; + int local_128; + int local_124; + int local_120; + int *local_11c; + int *local_118; + undefined4 *local_114; + undefined4 *local_110; + undefined4 *local_10c; + int local_108; + int local_104; + int local_100; + int local_fc; + undefined4 *local_f8; + undefined4 *local_f4; + int local_f0; + undefined4 *local_ec; + int local_e8; + undefined4 *local_e4; + undefined4 *local_e0; + undefined4 *local_dc; + undefined4 *local_d8; + undefined4 *local_d4; + undefined4 *local_d0; + undefined4 *local_cc; + undefined4 *local_c8; + undefined4 *local_c4; + undefined4 *local_c0; + undefined4 *local_bc; + undefined4 *local_b8; + undefined4 *local_b4; + undefined4 *local_b0; + undefined4 *local_ac; + undefined4 *local_a8; + undefined4 *local_a4; + undefined4 *local_a0; + undefined4 *local_9c; + undefined4 *local_98; + undefined4 *local_94; + undefined4 *local_90; + undefined4 *local_8c; + undefined4 *local_88; + int local_84; + uint local_80; + int local_7c; + int local_78; + int local_74; + undefined4 *local_70; + undefined4 *local_6c; + int *local_68; + int *local_64; + undefined4 *local_60; + int local_5c; + int local_58; + undefined4 *local_54; + int local_50; + int *local_4c; + int local_48; + int local_44; + undefined4 *local_40; + int local_3c; + undefined4 *local_38; + undefined4 *local_34; + undefined4 *local_30; + undefined4 *local_2c; + undefined4 *local_28; + undefined4 local_24; + undefined4 *local_20; + uint local_1c; + int local_18; + int local_14; + undefined4 local_10; + undefined4 local_c; + undefined4 *local_8; + + local_20 = (undefined4 *)0x0; + local_1c = 1; + local_8 = FUN_0045a724(); + if (param_4 == 1) { + local_c = 1; + local_10 = 0; + local_24 = 4; + local_2c = (undefined4 *)FUN_00402298(0x60); + if (local_2c == (undefined4 *)0x0) { + local_28 = (undefined4 *)0x0; + } + else { + local_28 = FUN_00455de4(local_2c,param_2,1,1,local_8); + } + } + else { + local_c = 3; + local_10 = 0xffffffff; + local_24 = 0; + local_30 = (undefined4 *)FUN_00402298(0x60); + if (local_30 == (undefined4 *)0x0) { + local_28 = (undefined4 *)0x0; + } + else { + local_28 = FUN_00455de4(local_30,param_2,1,0,local_8); + } + } + local_38 = (undefined4 *)FUN_00402298(100); + if (local_38 == (undefined4 *)0x0) { + local_34 = (undefined4 *)0x0; + } + else { + local_34 = FUN_00453578(local_38,param_2,3,0,local_8,local_c,local_10); + } + FUN_00455c18((int)local_28,local_34); + if (((param_4 == 1) && (local_3c = FUN_0041bf44(param_2,1), local_3c != 0)) && + (local_40 = (undefined4 *)FUN_00402298(0x48), local_40 != (undefined4 *)0x0)) { + FUN_00453f18(local_40,param_2,2,*(undefined4 *)(param_1 + 300),local_8,local_34[0xb],local_3c,2) + ; + } + if ((*(int *)(param_1 + 0xb0) != 0) && (iVar3 = FUN_00417ab4(param_1 + 0x40), param_2 == iVar3)) { + local_44 = local_34[0xb]; + FUN_00489cec(local_44,*(int *)(param_1 + 0x120)); + } + local_48 = param_2; + local_4c = (int *)FUN_004022b0(*(int *)(param_2 + 0x318) << 2); + local_50 = FUN_00417ab4(local_48 + 0x31c); + FUN_0041f216(local_258,local_48 + 0x300); +LAB_004cf86e: + do { + iVar3 = (**(code **)(local_258[0] + 0x28))(local_258); + if (iVar3 == 0) { + if (param_4 == 1) { + local_e8 = FUN_0041f98c(param_2,&DAT_0051d2ae); + if (local_e8 == 0) { + FUN_004dbb24(&DAT_00524e20,s_Mech_did_not_have_a_HUD_subsyste_0051d36f,(char *)0x0); + } + else { + iVar3 = FUN_0041bfc0(param_2,s_TargetReticle_0051d2b2); + *(int *)(param_1 + 0x130) = iVar3; + local_ec = (undefined4 *)FUN_0041bf44(local_e8,8); + local_f0 = FUN_0041bf44(local_e8,4); + local_f4 = (undefined4 *)FUN_0041bf44(local_e8,5); + local_f8 = (undefined4 *)FUN_0041bf44(local_e8,6); + local_fc = FUN_0041bf44(local_e8,0xd); + local_100 = FUN_0041bf44(local_e8,0xc); + local_104 = FUN_0041bf44(local_e8,0xb); + local_108 = FUN_0041bf44(local_e8,10); + if (((local_108 == 0) || (*(int *)(param_1 + 0x130) == 0)) || + ((local_ec == (undefined4 *)0x0 || + ((((local_f0 == 0 || (local_f4 == (undefined4 *)0x0)) || + (local_f8 == (undefined4 *)0x0)) || (local_fc == 0)))))) { + FUN_0040385c(s_Bad_reticle__one_of_TargetReticl_0051d2c0, + s_d__tesla_bt_bt_l4_BTL4VID_CPP_0051d315,0x7be); + } + local_10c = (undefined4 *)FUN_00402298(0x358); + if (local_10c == (undefined4 *)0x0) { + local_20 = (undefined4 *)0x0; + } + else { + local_114 = local_f8; + local_110 = local_f4; + local_20 = FUN_004cc40c(local_10c,param_2,1,(undefined4 *)(param_1 + 0x130), + *(undefined4 *)(param_1 + 0x124),local_ec,local_fc,local_f0, + *local_f4,*local_f8,0x44960000,0,local_100,local_104,local_108); + } + if (local_20 == (undefined4 *)0x0) { + FUN_0040385c(s_Could_not_create_the_reticle_0051d333, + s_d__tesla_bt_bt_l4_BTL4VID_CPP_0051d351,0x7d3); + } + } + } + local_118 = (int *)0x0; + local_11c = (int *)0x0; + iVar3 = 0; + do { + if (*(int *)(param_2 + 0x124) <= iVar3) { + if ((local_118 != (int *)0x0) && + (local_1cc = (undefined4 *)FUN_00402298(0x2c), local_1cc != (undefined4 *)0x0)) { + FUN_00456778(local_1cc,param_2,1,local_118,(int)local_11c); + } + local_1d4 = (undefined4 *)FUN_00402298(0x14); + if (local_1d4 == (undefined4 *)0x0) { + local_1dc = (undefined4 *)0x0; + } + else { + local_1dc = FUN_00460cd0(local_1d4,param_2,(int)local_4c); + } + local_1d8 = param_2; + local_1d0 = local_1dc; + (**(code **)(*(int *)(param_1 + 0x3a4) + 8))(param_1 + 0x3a4,local_1dc,&local_1d8); + FUN_004022e8(local_4c); + local_1e4 = (undefined4 *)FUN_00402298(0x38); + if (local_1e4 == (undefined4 *)0x0) { + local_1e0 = (undefined4 *)0x0; + } + else { + local_1e0 = FUN_00455d3c(local_1e4,param_2,3,0x3f000000); + } + FUN_00455e88((int)local_28,local_1e0); + iVar3 = 0; + do { + if (*(int *)(param_2 + 0x11c) <= iVar3) { + uVar14 = local_34[0xb]; + FUN_0041f235(local_258,2); + return uVar14; + } + local_1e8 = *(int *)(*(int *)(param_2 + 0x120) + iVar3 * 4); + local_1ec = local_24; + iVar8 = (**(code **)(*(int *)(local_1e8 + 0xbc) + 0xc))(local_1e8 + 0xbc,&local_1ec); + if (iVar8 != 0) { + local_1f8 = (undefined4 *)FUN_00402298(0x3c); + if (local_1f8 == (undefined4 *)0x0) { + local_1f4 = (undefined4 *)0x0; + } + else { + local_1f4 = FUN_00455c7c(local_1f8,param_2,3,(undefined4 *)(local_1e8 + 0x158), + 0x3d23d70a); + } + FUN_00455c18((int)local_1e0,local_1f4); + (**(code **)(**(int **)(iVar8 + 0xc) + 4))(*(int **)(iVar8 + 0xc)); + while( true ) { + iVar9 = (**(code **)(**(int **)(iVar8 + 0xc) + 0x30))(*(int **)(iVar8 + 0xc)); + if (iVar9 == 0) { + local_1f0 = (int *)0x0; + } + else { + local_1fc = (**(code **)(**(int **)(iVar8 + 0xc) + 0x28))(*(int **)(iVar8 + 0xc)); + local_1f0 = (int *)(local_1fc + 0xc); + } + if (local_1f0 == (int *)0x0) break; + uVar10 = 0xffffffff; + pcVar12 = *(char **)(*local_1f0 + 8); + do { + pcVar7 = pcVar12; + if (uVar10 == 0) break; + uVar10 = uVar10 - 1; + pcVar7 = pcVar12 + 1; + cVar2 = *pcVar12; + pcVar12 = pcVar7; + } while (cVar2 != '\0'); + uVar10 = ~uVar10; + pcVar12 = pcVar7 + -uVar10; + pcVar7 = (char *)&DAT_00524b54; + for (uVar11 = uVar10 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) { + *(undefined4 *)pcVar7 = *(undefined4 *)pcVar12; + pcVar12 = pcVar12 + 4; + pcVar7 = pcVar7 + 4; + } + for (uVar10 = uVar10 & 3; uVar10 != 0; uVar10 = uVar10 - 1) { + *pcVar7 = *pcVar12; + pcVar12 = pcVar12 + 1; + pcVar7 = pcVar7 + 1; + } + local_204 = FUN_00497678((char *)&DAT_00524b54,0,&local_200); + if (local_204 == 0) { + FUN_004dbb24(&DAT_00524e20,s_BTL4VideoRenderer__Material_name_0051d6f8,(char *)0x0 + ); + FUN_004dbb24(&DAT_00524e20,(char *)&DAT_00524b54,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s_could_not_be_found_0051d71a,(char *)0x0); + } + else { + FUN_00402a98((int *)&local_208,local_1f0,(char *)&DAT_00524b54); + local_20c = local_208; + piVar4 = local_208 + 3; + *piVar4 = *piVar4 + -1; + if (*piVar4 == 0) { + FUN_004024d8(local_208,3); + } + local_214 = (undefined4 *)FUN_00402298(0xe8); + if (local_214 == (undefined4 *)0x0) { + local_210 = (undefined4 *)0x0; + } + else { + local_210 = FUN_004573e4(local_214,param_2,3,local_204, + (undefined4 *)(local_1e8 + 0x158),0.1); + } + FUN_00455c18((int)local_1f4,local_210); + } + } + } + iVar3 = iVar3 + 1; + } while( true ); + } + iVar8 = *(int *)(*(int *)(param_2 + 0x128) + iVar3 * 4); + if (((iVar8 != 0) && (iVar3 != 0)) && (local_120 = *(int *)(iVar8 + 0xdc), local_120 != -1)) + { + local_124 = local_120; + FUN_0041f216(local_2c0,local_48 + 0x300); + iVar9 = (**(code **)(local_2c0[0] + 0x34))(local_2c0,local_124); + FUN_0041f235(local_2c0,2); + if (*(int *)(iVar9 + 0xc4) == 0) { + local_128 = local_34[0xb]; + } + else { + local_12c = *(int *)(iVar9 + 200); + local_128 = local_4c[local_12c]; + } + local_130 = (undefined4 *)(iVar9 + 0x74); + puVar5 = local_130; + puVar6 = local_2f0; + for (iVar9 = 0xc; iVar9 != 0; iVar9 = iVar9 + -1) { + *puVar6 = *puVar5; + puVar5 = puVar5 + 1; + puVar6 = puVar6 + 1; + } + iVar9 = FUN_0041a1a4(**(int **)(iVar8 + 0xc),0x50de2c); + if (iVar9 == 0) { + local_14 = 0; + } + else { + local_134 = iVar8; + FUN_0040b058((int)local_2f0,3,local_2fc); + local_308 = *(float *)(local_134 + 0xf8); + local_304 = *(undefined4 *)(local_134 + 0xfc); + local_300 = *(undefined4 *)(local_134 + 0x100); + FUN_004085ec(local_2fc,local_2fc,&local_308); + FUN_0040b0ac((int)local_2f0,3,local_2fc); + local_13c = (undefined4 *)FUN_00402298(0x10); + if (local_13c == (undefined4 *)0x0) { + local_138 = (int *)0x0; + } + else { + local_138 = (int *)FUN_004023f4(local_13c); + } + local_138[3] = local_138[3] + 1; + local_144 = (int *)(local_134 + 0xf4); + local_148 = (int *)*local_144; + local_148[3] = local_148[3] + 1; + FUN_00402a4c((int *)&local_140,(int *)&local_138,(int *)&local_148); + local_14c = local_140; + piVar4 = local_140 + 3; + *piVar4 = *piVar4 + -1; + if (*piVar4 == 0) { + FUN_004024d8(local_140,3); + } + local_150 = local_148; + piVar4 = local_148 + 3; + *piVar4 = *piVar4 + -1; + if (*piVar4 == 0) { + FUN_004024d8(local_148,3); + } + pcVar7 = &DAT_0051d398; + pcVar12 = (char *)local_138[2]; + do { + bVar13 = *pcVar7 == *pcVar12; + if (!bVar13) break; + if (*pcVar7 == '\0') goto LAB_004cfd8d; + pcVar1 = pcVar7 + 1; + bVar13 = *pcVar1 == pcVar12[1]; + if (!bVar13) break; + pcVar7 = pcVar7 + 2; + pcVar12 = pcVar12 + 2; + bVar13 = *pcVar1 == '\0'; + } while (!bVar13); + if (bVar13) { +LAB_004cfd8d: + local_14 = 0; + } + else { + uVar10 = 0xffffffff; + pcVar12 = (char *)local_138[2]; + do { + pcVar7 = pcVar12; + if (uVar10 == 0) break; + uVar10 = uVar10 - 1; + pcVar7 = pcVar12 + 1; + cVar2 = *pcVar12; + pcVar12 = pcVar7; + } while (cVar2 != '\0'); + uVar10 = ~uVar10; + pcVar12 = pcVar7 + -uVar10; + pcVar7 = local_23c; + for (uVar11 = uVar10 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) { + *(undefined4 *)pcVar7 = *(undefined4 *)pcVar12; + pcVar12 = pcVar12 + 4; + pcVar7 = pcVar7 + 4; + } + for (uVar10 = uVar10 & 3; uVar10 != 0; uVar10 = uVar10 - 1) { + *pcVar7 = *pcVar12; + pcVar12 = pcVar12 + 1; + pcVar7 = pcVar7 + 1; + } + local_14 = FUN_00498448(local_23c,local_1c); + } + local_154 = local_138; + piVar4 = local_138 + 3; + *piVar4 = *piVar4 + -1; + if (*piVar4 == 0) { + FUN_004024d8(local_138,3); + } + } + if (((param_4 == 1) && + (iVar9 = FUN_0041a1a4(**(int **)(iVar8 + 0xc),0x511830), iVar9 != 0)) && + (local_20 != (undefined4 *)0x0)) { + local_158 = (undefined4 *)FUN_0041bf44(iVar8,0x15); + local_15c = (float *)FUN_0041bf44(iVar8,0x16); + local_160 = (int *)FUN_0041bf44(iVar8,0x17); + local_164 = (undefined4 *)FUN_0041bf44(iVar8,0x18); + local_168 = (int *)FUN_0041bf44(iVar8,0x19); + local_16c = FUN_0041bf44(iVar8,1); + local_170 = FUN_0041bf44(iVar8,0x1c); + local_174 = (int *)FUN_0041bf44(iVar8,0x1b); + if (local_158 == (undefined4 *)0x0) { + FUN_0040385c(s_No_TargetWithinRange_attribute_i_0051d39d, + s_d__tesla_bt_bt_l4_BTL4VID_CPP_0051d3d2,0x866); + } + if (local_15c == (float *)0x0) { + FUN_0040385c(s_No_WeaponRange_attribute_in_weap_0051d3f0, + s_d__tesla_bt_bt_l4_BTL4VID_CPP_0051d41f,0x868); + } + if (local_160 == (int *)0x0) { + FUN_0040385c(s_No_PipPosition_attribute_in_weap_0051d43d, + s_d__tesla_bt_bt_l4_BTL4VID_CPP_0051d46c,0x86a); + } + if (local_164 == (undefined4 *)0x0) { + FUN_0040385c(s_No_PipColor_attribute_in_weapons_0051d48a, + s_d__tesla_bt_bt_l4_BTL4VID_CPP_0051d4b6,0x86c); + } + if (local_168 == (int *)0x0) { + FUN_0040385c(s_No_PipExtendedRange_attribute_in_0051d4d4, + s_d__tesla_bt_bt_l4_BTL4VID_CPP_0051d508,0x86e); + } + if (local_16c == 0) { + FUN_0040385c(s_No_SimulationState_attribute_in_w_0051d526, + s_d__tesla_bt_bt_l4_BTL4VID_CPP_0051d559,0x870); + } + if (local_170 == 0) { + FUN_0040385c(s_No_SimulationState_attribute_in_w_0051d577, + s_d__tesla_bt_bt_l4_BTL4VID_CPP_0051d5aa,0x873); + } + if (local_174 == (int *)0x0) { + FUN_0040385c(s_No_RearFiring_attribute_in_weapo_0051d5c8, + s_d__tesla_bt_bt_l4_BTL4VID_CPP_0051d5f6,0x875); + } + if (*local_174 == 0) { + local_178 = 1; + } + else { + local_178 = 2; + } + FUN_004cdac0((int)local_20,*local_15c,*local_160,local_158,*local_168,*local_164, + local_164[1],local_164[2],local_170,2,3,local_16c,1,local_178); + } + switch(*(undefined4 *)(iVar8 + 4)) { + case 0xbc0: + FUN_0040b058((int)local_2f0,3,local_320); + local_1b0 = FUN_0041bfc0(iVar8,s_ReservoirState_0051d614); + if (local_1b0 == 0) { + FUN_0040385c(s_Reservoir_did_not_have_a_Reservo_0051d623, + s_d__tesla_bt_bt_l4_BTL4VID_CPP_0051d64c,0x926); + } + local_1b4 = (undefined4 *)FUN_00402298(0x138); + if (local_1b4 != (undefined4 *)0x0) { + FUN_00456a68(local_1b4,param_2,2,local_1b0,1,*(undefined4 **)(param_1 + 0x318), + local_128,local_320); + } + break; + case 0xbc8: + local_17c = FUN_0041bf44(iVar8,0x1e); + local_180 = FUN_0041bf44(iVar8,0x1f); + local_184 = FUN_0041bf44(iVar8,0x1d); + local_188 = FUN_0041bf44(iVar8,0x1c); + local_190 = (undefined4 *)FUN_00402298(0x80); + if (local_190 == (undefined4 *)0x0) { + local_18c = (undefined4 *)0x0; + } + else { + local_18c = FUN_004593c0(local_190,param_2,2,local_14,local_8,1,0,local_128,local_2f0, + local_188,0,local_180,local_17c); + } + break; + case 0xbcd: + FUN_0040b058((int)local_2f0,3,local_314); + local_1a8 = FUN_0041bf44(iVar8,0x1c); + if ((param_4 != 1) && + (local_1ac = (undefined4 *)FUN_00402298(0x138), local_1ac != (undefined4 *)0x0)) { + FUN_00456a68(local_1ac,param_2,2,local_1a8,0,*(undefined4 **)(param_1 + 0x2e4), + local_128,local_314); + } + break; + case 0xbd4: + local_194 = FUN_0041bf44(iVar8,0x1e); + local_198 = FUN_0041bf44(iVar8,0x1f); + local_19c = FUN_0041bf44(iVar8,0x1d); + local_1a0 = FUN_0041bf44(iVar8,0x1c); + local_1a4 = (undefined4 *)FUN_00402298(0x88); + if (local_1a4 != (undefined4 *)0x0) { + FUN_004590d8(local_1a4,param_2,2,local_14,local_8,1,0,local_128,local_2f0,local_1a0,0, + local_198,local_194,0x40000000); + } + break; + case 0xbd8: + local_1b8 = (int *)FUN_0041bfc0(iVar8,s_LightOn_0051d66a); + if (local_1b8 == (int *)0x0) { + FUN_0040385c(s_searchlight_subsystem_had_no_lig_0051d672, + s_d__tesla_bt_bt_l4_BTL4VID_CPP_0051d6a2,0x941); + } + if (param_4 == 1) { + if (local_118 == (int *)0x0) { + local_118 = local_1b8; + } + else { + local_11c = local_1b8; + } + } + else { + local_1bc = FUN_00498448(s_spot_bgf_0051d6c0,0); + if (local_1bc == 0) { + FUN_004dbb24(&DAT_00524e20,s_Couldn_t_locate_spot_bgf_for_mec_0051d6c9,(char *)0x0); + } + else { + local_1c4 = (undefined4 *)FUN_00402298(0x50); + if (local_1c4 == (undefined4 *)0x0) { + local_1c0 = (undefined4 *)0x0; + } + else { + local_1c0 = FUN_0045848c(local_1c4,param_2,(int)local_8,local_1bc,1,0,local_2f0, + local_128); + } + local_1c8 = (undefined4 *)FUN_00402298(0x2c); + if (local_1c8 != (undefined4 *)0x0) { + FUN_0045612c(local_1c8,param_2,1,local_1c0[6],1,local_1b8); + } + } + } + } + } + iVar3 = iVar3 + 1; + } while( true ); + } + FUN_0040aadc(local_288); + local_54 = (undefined4 *)(iVar3 + 0x74); + FUN_0040ab28(local_288,local_54); + if (*(int *)(iVar3 + 0xc4) == 0) { + local_58 = local_34[0xb]; + } + else { + local_5c = *(int *)(iVar3 + 200); + local_58 = local_4c[local_5c]; + } + if (*(int *)(iVar3 + 0x10) != 0) { + if (param_4 == 1) { + local_60 = (undefined4 *)(iVar3 + 0x11c); + local_68 = (int *)*local_60; + pcVar7 = s_siteeyepoint_0051d290; + local_68[3] = local_68[3] + 1; + pcVar12 = (char *)local_68[2]; + do { + bVar13 = *pcVar12 == *pcVar7; + if ((!bVar13) || (bVar13 = true, *pcVar12 == '\0')) break; + pcVar1 = pcVar12 + 1; + bVar13 = *pcVar1 == pcVar7[1]; + if (!bVar13) break; + pcVar12 = pcVar12 + 2; + pcVar7 = pcVar7 + 2; + bVar13 = *pcVar1 == '\0'; + } while (!bVar13); + uVar10 = (uint)bVar13; + piVar4 = local_68 + 3; + *piVar4 = *piVar4 + -1; + local_64 = local_68; + if (*piVar4 == 0) { + FUN_004024d8(local_68,3); + } + if (uVar10 != 0) { + local_6c = (undefined4 *)FUN_0041bfc0(param_2,s_EyepointRotation_0051d29d); + local_70 = (undefined4 *)FUN_00402298(0x5c); + if (local_70 != (undefined4 *)0x0) { + FUN_004579a8(local_70,param_2,(int)local_8,local_288,local_58, + *(undefined4 **)(param_1 + 0x124),local_6c); + } + } + } + goto LAB_004cf86e; + } + piVar4 = (int *)FUN_00424084(iVar3,local_24); + if (piVar4 == (int *)0x0) { + local_14 = 0; + } + else { + uVar10 = 0xffffffff; + pcVar12 = *(char **)(*piVar4 + 8); + do { + pcVar7 = pcVar12; + if (uVar10 == 0) break; + uVar10 = uVar10 - 1; + pcVar7 = pcVar12 + 1; + cVar2 = *pcVar12; + pcVar12 = pcVar7; + } while (cVar2 != '\0'); + uVar10 = ~uVar10; + pcVar12 = pcVar7 + -uVar10; + pcVar7 = local_23c; + for (uVar11 = uVar10 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) { + *(undefined4 *)pcVar7 = *(undefined4 *)pcVar12; + pcVar12 = pcVar12 + 4; + pcVar7 = pcVar7 + 4; + } + for (uVar10 = uVar10 & 3; uVar10 != 0; uVar10 = uVar10 - 1) { + *pcVar7 = *pcVar12; + pcVar12 = pcVar12 + 1; + pcVar7 = pcVar7 + 1; + } + local_14 = FUN_00498448(local_23c,local_1c); + } + piVar4 = (int *)FUN_00424084(iVar3,local_24); + if (piVar4 == (int *)0x0) { + local_18 = 0; + local_74 = 0; + } + else { + uVar10 = 0xffffffff; + pcVar12 = *(char **)(*piVar4 + 8); + do { + pcVar7 = pcVar12; + if (uVar10 == 0) break; + uVar10 = uVar10 - 1; + pcVar7 = pcVar12 + 1; + cVar2 = *pcVar12; + pcVar12 = pcVar7; + } while (cVar2 != '\0'); + uVar10 = ~uVar10; + pcVar12 = pcVar7 + -uVar10; + pcVar7 = local_23c; + for (uVar11 = uVar10 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) { + *(undefined4 *)pcVar7 = *(undefined4 *)pcVar12; + pcVar12 = pcVar12 + 4; + pcVar7 = pcVar7 + 4; + } + for (uVar10 = uVar10 & 3; uVar10 != 0; uVar10 = uVar10 - 1) { + *pcVar7 = *pcVar12; + pcVar12 = pcVar12 + 1; + pcVar7 = pcVar7 + 1; + } + local_18 = FUN_00498448(local_23c,local_1c); + local_78 = *(int *)(*(int *)(param_2 + 0x120) + *(int *)(iVar3 + 0x100) * 4); + local_74 = local_78 + 100; + } + local_7c = *(int *)(iVar3 + 0xcc); + iVar8 = 0; + if (*(int *)(iVar3 + 0xc0) == -1) { + local_80 = 3; + } + else { + local_84 = *(int *)(iVar3 + 0xc0); + FUN_0041d3b3(local_2a4,local_50 + 0xe4); + iVar8 = (**(code **)(local_2a4[0] + 0x34))(local_2a4,local_84); + FUN_0041d3d2(local_2a4,2); + local_80 = *(uint *)(iVar8 + 0x10); + } + if (2 < local_80) { + if (local_80 != 3) { + if (local_80 == 4) { + local_a4 = (undefined4 *)FUN_00402298(0x7c); + if (local_a4 == (undefined4 *)0x0) { + local_a0 = (undefined4 *)0x0; + } + else { + puVar5 = (undefined4 *)FUN_0041cfa0(iVar8); + local_a0 = FUN_004539b4(local_a4,param_2,3,local_14,local_8,local_c,local_10,local_58, + local_288,puVar5); + } + FUN_00455e88((int)local_28,local_a0); + local_4c[local_7c] = local_a0[0xb]; + if (local_18 != 0) { + local_ac = (undefined4 *)FUN_00402298(0x30); + if (local_ac == (undefined4 *)0x0) { + local_a8 = (undefined4 *)0x0; + } + else { + local_a8 = FUN_00453474(local_ac,param_2,0,local_18,local_a0[0xb],local_c,local_10,1); + } + local_b0 = (undefined4 *)FUN_00402298(0x30); + if (local_b0 != (undefined4 *)0x0) { + FUN_00456224(local_b0,param_2,2,local_a0[0xc],1,local_74,0); + } + local_b4 = (undefined4 *)FUN_00402298(0x30); + if (local_b4 != (undefined4 *)0x0) { + FUN_00456224(local_b4,param_2,2,local_a8[0xb],1,local_74,1); + } + } + goto LAB_004cf86e; + } + if (local_80 == 5) { + local_bc = (undefined4 *)FUN_00402298(0x8c); + if (local_bc == (undefined4 *)0x0) { + local_b8 = (undefined4 *)0x0; + } + else { + puVar5 = *(undefined4 **)(iVar8 + 0xc); + puVar6 = (undefined4 *)FUN_0041cfa0(iVar8); + local_b8 = FUN_00453ac4(local_bc,param_2,3,local_14,local_8,local_c,local_10,local_58, + local_288,puVar6,puVar5); + } + FUN_00455e88((int)local_28,local_b8); + local_4c[local_7c] = local_b8[0xb]; + if (local_18 != 0) { + local_c4 = (undefined4 *)FUN_00402298(0x30); + if (local_c4 == (undefined4 *)0x0) { + local_c0 = (undefined4 *)0x0; + } + else { + local_c0 = FUN_00453474(local_c4,param_2,0,local_18,local_b8[0xb],local_c,local_10,1); + } + local_c8 = (undefined4 *)FUN_00402298(0x30); + if (local_c8 != (undefined4 *)0x0) { + FUN_00456224(local_c8,param_2,2,local_b8[0xc],1,local_74,0); + } + local_cc = (undefined4 *)FUN_00402298(0x30); + if (local_cc != (undefined4 *)0x0) { + FUN_00456224(local_cc,param_2,2,local_c0[0xb],1,local_74,1); + } + } + goto LAB_004cf86e; + } + } + local_d4 = (undefined4 *)FUN_00402298(0x50); + if (local_d4 == (undefined4 *)0x0) { + local_d0 = (undefined4 *)0x0; + } + else { + local_d0 = FUN_0045848c(local_d4,param_2,(int)local_8,local_14,local_c,local_10,local_288, + local_58); + } + local_4c[local_7c] = local_d0[4]; + if (local_18 != 0) { + local_dc = (undefined4 *)FUN_00402298(0x30); + if (local_dc == (undefined4 *)0x0) { + local_d8 = (undefined4 *)0x0; + } + else { + local_d8 = FUN_00453474(local_dc,param_2,0,local_18,local_d0[4],local_c,local_10,1); + } + local_e0 = (undefined4 *)FUN_00402298(0x30); + if (local_e0 != (undefined4 *)0x0) { + FUN_00456224(local_e0,param_2,2,local_d0[6],1,local_74,0); + } + local_e4 = (undefined4 *)FUN_00402298(0x30); + if (local_e4 != (undefined4 *)0x0) { + FUN_00456224(local_e4,param_2,2,local_d8[0xb],1,local_74,1); + } + } + goto LAB_004cf86e; + } + local_8c = (undefined4 *)FUN_00402298(0x78); + if (local_8c == (undefined4 *)0x0) { + local_88 = (undefined4 *)0x0; + } + else { + local_88 = FUN_004537e8(local_8c,param_2,3,local_14,local_8,local_c,local_10,local_58, + local_288,*(undefined4 **)(iVar8 + 0xc)); + } + FUN_00455e88((int)local_28,local_88); + local_4c[local_7c] = local_88[0xb]; + if (local_18 != 0) { + local_94 = (undefined4 *)FUN_00402298(0x30); + if (local_94 == (undefined4 *)0x0) { + local_90 = (undefined4 *)0x0; + } + else { + local_90 = FUN_00453474(local_94,param_2,0,local_18,local_88[0xb],local_c,local_10,1); + } + local_98 = (undefined4 *)FUN_00402298(0x30); + if (local_98 != (undefined4 *)0x0) { + FUN_00456224(local_98,param_2,2,local_88[0xc],1,local_74,0); + } + local_9c = (undefined4 *)FUN_00402298(0x30); + if (local_9c != (undefined4 *)0x0) { + FUN_00456224(local_9c,param_2,2,local_90[0xb],1,local_74,1); + } + } + } while( true ); +} + + + +/* @004d0774 file=? name=FUN_004d0774 */ + +void __cdecl FUN_004d0774(int param_1,int param_2,int param_3,int param_4) + +{ + undefined4 *puVar1; + int iVar2; + int iVar3; + undefined4 *puVar4; + int iVar5; + + DAT_004f1aa8 = param_2; + iVar5 = 0; + iVar2 = *(int *)(param_2 + 4); + if (iVar2 == 0xbb9) { + FUN_0045d3cc(param_1,0x68); + FUN_004d0cc0(param_1,param_2); + iVar5 = FUN_004cef28(param_1,param_2,param_3,param_4); + FUN_004d11e8(); + } + else if (iVar2 == 0xbba) { + iVar2 = FUN_00498448(s_tmst_c_bgf_0051d72f,0); + puVar4 = (undefined4 *)FUN_00402298(100); + if (puVar4 == (undefined4 *)0x0) { + puVar4 = (undefined4 *)0x0; + } + else { + puVar4 = FUN_00453578(puVar4,param_2,1,iVar2,*(undefined4 *)(param_1 + 300),1,0); + } + puVar1 = (undefined4 *)FUN_00402298(0x120); + if (puVar1 != (undefined4 *)0x0) { + FUN_00458c58(puVar1,param_2,0,*(undefined4 **)(param_1 + 0x2cc),puVar4[0xb]); + } + } + else if (iVar2 == 0xbda) { + iVar2 = FUN_0041bf44(param_2,1); + if ((*(uint *)(param_2 + 0x28) & 0xc) == 4) { + iVar3 = FUN_0041bfc0(param_2,s_DropZoneLocation_0051d73a); + if ((iVar2 != 0) && (iVar3 != 0)) { + puVar4 = (undefined4 *)FUN_00402298(0x40); + if (puVar4 != (undefined4 *)0x0) { + FUN_00458d2c(puVar4,param_2,2,*(undefined4 *)(param_1 + 300),iVar2,iVar3,1); + } + } + } + else if (iVar2 != 0) { + puVar4 = (undefined4 *)FUN_00402298(0x50); + if (puVar4 != (undefined4 *)0x0) { + FUN_00454394(puVar4,param_2,2,*(undefined4 *)(param_1 + 300), + *(undefined4 *)(param_1 + 0x128),*(undefined4 *)(param_1 + 0x124),iVar2, + *(undefined4 *)(param_1 + 200),*(undefined4 *)(param_1 + 0xd0), + *(undefined4 *)(param_1 + 0xcc),*(undefined4 *)(param_1 + 0xd4), + *(undefined4 *)(param_1 + 0xd8),3,4); + } + } + } + else { + FUN_0045e744(param_1,param_2,param_3,param_4); + } + DAT_004f1aa8 = 0; + if (iVar5 != 0) { + FUN_0045a994(param_1,iVar5,param_2); + } + return; +} + + + +/* @004d097c file=? name=FUN_004d097c */ + +void __cdecl FUN_004d097c(int param_1,int param_2,int param_3,uint param_4) + +{ + int iVar1; + int iVar2; + int *piVar3; + int local_6c [3]; + undefined4 local_60; + undefined4 local_5c; + undefined4 local_58; + undefined4 local_54 [12]; + int local_24 [4]; + int local_14; + int local_10; + int local_c; + uint local_8; + + FUN_00452cad(local_24,0); + FUN_0040aadc(local_54); + iVar2 = FUN_0041dbd0(param_3,1); + if (iVar2 == 0) { + FUN_004dbb24(&DAT_00524e20,s_StartEntityEffectImplementation__0051d74b,(char *)0x0); + FUN_004d9c70(&DAT_00524e20); + FUN_00452ccc(local_24,2); + } + else { + FUN_0040ab28(local_54,(undefined4 *)(iVar2 + 0x74)); + FUN_0040b058((int)local_54,3,&local_60); + iVar2 = *(int *)(*(int *)(iVar2 + 0xc4) + 0xc0); + if (iVar2 == -1) { + FUN_004dbb24(&DAT_00524e20,s_StartEntityEffectImplementation__0051d785,(char *)0x0); + FUN_004d9c70(&DAT_00524e20); + FUN_00452ccc(local_24,2); + } + else { + local_14 = param_2; + local_10 = (**(code **)(*(int *)(param_1 + 0x3a4) + 0xc))(param_1 + 0x3a4,&local_14); + if (local_10 == 0) { + FUN_004dbb24(&DAT_00524e20,s_StartEntityEffectImplementation__0051d7ca,(char *)0x0); + FUN_004d9c70(&DAT_00524e20); + FUN_00452ccc(local_24,2); + } + else { + local_c = *(int *)(*(int *)(local_10 + 0x10) + iVar2 * 4); + iVar2 = FUN_00407064(*(int *)(DAT_004efc94 + 0x68),param_4,10); + if (iVar2 == 0) { + FUN_004dbb24(&DAT_00524e20,s_StartEntityEffectImplementation__0051d810,(char *)0x0); + piVar3 = FUN_004db78c(&DAT_00524e20,param_4); + FUN_004dbb24(piVar3,s_has_no_video_resource_0051d83b,(char *)0x0); + FUN_00452ccc(local_24,2); + } + else { + iVar1 = *(int *)(iVar2 + 4); + *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + 1; + if (iVar1 == 0) { + FUN_00406cd0(iVar2); + } + FUN_0045a0c4(local_24,iVar2); + *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + -1; + FUN_004614d7(local_6c,(int)local_24); + if (*(int *)(param_2 + 400) == 0) { + FUN_004dbb24(&DAT_00524e20,s_StartEntityEffectImplementation__0051d853,(char *)0x0); + local_8 = 0; + } + else { + local_8 = *(uint *)(*(int *)(param_2 + 400) + 0x1e0); + } + (**(code **)(local_6c[0] + 4))(local_6c); + while( true ) { + iVar2 = (**(code **)(local_6c[0] + 0x28))(local_6c); + if (iVar2 == 0) break; + iVar2 = FUN_004dd1e0(*(char **)(iVar2 + 0xc)); + if (iVar2 < 1000) { + FUN_004dbb24(&DAT_00524e20,s_StartEntityEffectImplementation__0051d897,(char *)0x0); + } + else { + FUN_004606d4(param_1,local_60,local_5c,local_58,iVar2,local_c,local_8); + } + } + FUN_0045a134((int)local_24); + FUN_00461515(local_6c,2); + FUN_00452ccc(local_24,2); + } + } + } + } + return; +} + + + +/* @004d0c14 file=? name=FUN_004d0c14 */ + +void __cdecl FUN_004d0c14(undefined4 param_1,int param_2) + +{ + uint uVar1; + + if (*(int *)(param_2 + 400) != 0) { + uVar1 = *(int *)(*(int *)(param_2 + 400) + 0x1e0) << 0x10; + FUN_00490368(uVar1,uVar1 | 0xffff); + return; + } + FUN_004dbb24(&DAT_00524e20,s_StopAllEntityEffectsImplementati_0051d8da,(char *)0x0); + return; +} + + + +/* @004d0c5c file=? name=FUN_004d0c5c */ + +void __cdecl FUN_004d0c5c(int param_1,int param_2) + +{ + int iVar1; + undefined4 *puVar2; + int local_8; + + iVar1 = FUN_0041a1a4(**(int **)(param_2 + 0xc),0x4e4afc); + if (iVar1 != 0) { + local_8 = param_2; + puVar2 = (undefined4 *)(**(code **)(*(int *)(param_1 + 0x3a4) + 0xc))(param_1 + 0x3a4,&local_8); + if ((puVar2 != (undefined4 *)0x0) && (puVar2 != (undefined4 *)0x0)) { + (**(code **)*puVar2)(puVar2,3); + } + } + FUN_004369a0(param_1,param_2); + return; +} + + + +/* @004d0cc0 file=bt_l4/btl4vid.cpp name=FUN_004d0cc0 */ + +void __cdecl FUN_004d0cc0(undefined4 param_1,int param_2) + +{ + char cVar1; + int iVar2; + int iVar3; + int *piVar4; + int *piVar5; + char *pcVar6; + char *pcVar7; + uint uVar8; + uint uVar9; + char *pcVar10; + char *pcVar11; + char local_7c [80]; + char *local_2c; + char *local_28; + char *local_24; + undefined4 *local_20; + uint local_1c; + char *local_18; + char *local_14; + char *local_10; + undefined4 *local_c; + int *local_8; + + if (DAT_0051d19c == '\0') { + DAT_0051d198 = FUN_004d4a78(PTR_s__color__0051d188); + DAT_0051d19c = DAT_0051d19c + '\x01'; + } + if (DAT_0051d1a4 == '\0') { + DAT_0051d1a0 = FUN_004d4a78(PTR_s__badge__0051d18c); + DAT_0051d1a4 = DAT_0051d1a4 + '\x01'; + } + if (DAT_0051d1ac == '\0') { + DAT_0051d1a8 = FUN_004d4a78(PTR_s__patch__0051d190); + DAT_0051d1ac = DAT_0051d1ac + '\x01'; + } + if (DAT_0051d1b4 == '\0') { + DAT_0051d1b0 = FUN_004d4a78(PTR_s__serno__0051d194); + DAT_0051d1b4 = DAT_0051d1b4 + '\x01'; + } + iVar3 = FUN_00406ff8(*(int *)(DAT_004efc94 + 0x68),s_vehicletable_0051d941,0x19,-1); + if (iVar3 != 0) { + iVar2 = *(int *)(iVar3 + 4); + *(int *)(iVar3 + 4) = *(int *)(iVar3 + 4) + 1; + if (iVar2 == 0) { + FUN_00406cd0(iVar3); + } + local_20 = *(undefined4 **)(iVar3 + 0x3c); + uVar8 = *(uint *)(iVar3 + 0x40); + piVar4 = (int *)FUN_004022b0(uVar8); + FUN_004d4918(piVar4,local_20,uVar8); + *(int *)(iVar3 + 4) = *(int *)(iVar3 + 4) + -1; + piVar5 = (int *)FUN_00402298(0x20); + if (piVar5 == (int *)0x0) { + local_8 = (int *)0x0; + } + else { + local_8 = FUN_00403e84(piVar5,(char *)0x0,1); + } + FUN_00404d00((int)local_8,(char *)piVar4,uVar8); + FUN_004022d0(piVar4); + pcVar11 = *(char **)(*(int *)(param_2 + 0x848) + 8); + pcVar7 = *(char **)(*(int *)(param_2 + 0x844) + 8); + pcVar6 = *(char **)(*(int *)(param_2 + 0x84c) + 8); + iVar3 = FUN_00404088((int)local_8,s_color_0051d94e,pcVar11,&local_10); + if (iVar3 == 0) { + local_24 = pcVar11; + FUN_004dbb24(&DAT_00524e20,s_____Color_value___0051d954,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,local_24,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s___from_egg_not_found_in_vehicle_t_0051d966,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + FUN_0040385c(s_Exiting__0051d991,s_d__tesla_bt_bt_l4_BTL4VID_CPP_0051d99a,0xbeb); + } + iVar3 = FUN_00404088((int)local_8,s_badge_0051d9b8,pcVar7,&local_14); + if (iVar3 == 0) { + local_28 = pcVar7; + FUN_004dbb24(&DAT_00524e20,s_____Badge_value___0051d9be,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,local_28,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s___from_egg_not_found_in_vehicle_t_0051d9d0,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + FUN_0040385c(s_Exiting__0051d9fb,s_d__tesla_bt_bt_l4_BTL4VID_CPP_0051da04,0xbf2); + } + iVar3 = FUN_00404088((int)local_8,s_patch_0051da22,pcVar6,&local_18); + if (iVar3 == 0) { + local_2c = pcVar6; + FUN_004dbb24(&DAT_00524e20,s_____Patch_value___0051da28,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,local_2c,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s___from_egg_not_found_in_vehicle_t_0051da3a,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + FUN_0040385c(s_Exiting__0051da65,s_d__tesla_bt_bt_l4_BTL4VID_CPP_0051da6e,0xbf9); + } + DAT_004f1aac = FUN_00404720((int)local_8,s_substitute_0051da8c,(char *)0x0); + for (local_c = (undefined4 *)DAT_004f1aac[1]; local_c != (undefined4 *)0x0; + local_c = (undefined4 *)*local_c) { + pcVar11 = local_7c; + pcVar7 = (char *)local_c[1]; + local_7c[0] = '\0'; + while (pcVar6 = FUN_004d49f4(pcVar7,'%'), pcVar6 != (char *)0x0) { + local_1c = (int)pcVar6 - (int)pcVar7; + pcVar10 = pcVar7; + if (local_1c != 0) { + FUN_004d4b9c((undefined4 *)pcVar11,pcVar7,local_1c); + pcVar11 = pcVar11 + local_1c; + pcVar10 = pcVar6; + } + iVar3 = FUN_004d4ae0(pcVar6,PTR_s__serno__0051d194,DAT_0051d1b0); + if (iVar3 == 0) { + if (s_0GraphicGaugeBackground_0051d1b5[0] != '\0') { + *pcVar11 = s_0GraphicGaugeBackground_0051d1b5[0]; + pcVar11 = pcVar11 + 1; + } + pcVar7 = pcVar10 + DAT_0051d1b0; + } + else { + iVar3 = FUN_004d4ae0(pcVar6,PTR_s__color__0051d188,DAT_0051d198); + if (iVar3 == 0) { + if (local_10 != (char *)0x0) { + uVar8 = 0xffffffff; + pcVar7 = local_10; + do { + pcVar6 = pcVar7; + if (uVar8 == 0) break; + uVar8 = uVar8 - 1; + pcVar6 = pcVar7 + 1; + cVar1 = *pcVar7; + pcVar7 = pcVar6; + } while (cVar1 != '\0'); + uVar8 = ~uVar8; + pcVar7 = pcVar6 + -uVar8; + pcVar6 = pcVar11; + for (uVar9 = uVar8 >> 2; uVar9 != 0; uVar9 = uVar9 - 1) { + *(undefined4 *)pcVar6 = *(undefined4 *)pcVar7; + pcVar7 = pcVar7 + 4; + pcVar6 = pcVar6 + 4; + } + for (uVar8 = uVar8 & 3; uVar8 != 0; uVar8 = uVar8 - 1) { + *pcVar6 = *pcVar7; + pcVar7 = pcVar7 + 1; + pcVar6 = pcVar6 + 1; + } + iVar3 = FUN_004d4a78(local_10); + pcVar11 = pcVar11 + iVar3; + } + pcVar7 = pcVar10 + DAT_0051d198; + } + else { + iVar3 = FUN_004d4ae0(pcVar6,PTR_s__badge__0051d18c,DAT_0051d1a0); + if (iVar3 == 0) { + if (local_14 != (char *)0x0) { + uVar8 = 0xffffffff; + pcVar7 = local_14; + do { + pcVar6 = pcVar7; + if (uVar8 == 0) break; + uVar8 = uVar8 - 1; + pcVar6 = pcVar7 + 1; + cVar1 = *pcVar7; + pcVar7 = pcVar6; + } while (cVar1 != '\0'); + uVar8 = ~uVar8; + pcVar7 = pcVar6 + -uVar8; + pcVar6 = pcVar11; + for (uVar9 = uVar8 >> 2; uVar9 != 0; uVar9 = uVar9 - 1) { + *(undefined4 *)pcVar6 = *(undefined4 *)pcVar7; + pcVar7 = pcVar7 + 4; + pcVar6 = pcVar6 + 4; + } + for (uVar8 = uVar8 & 3; uVar8 != 0; uVar8 = uVar8 - 1) { + *pcVar6 = *pcVar7; + pcVar7 = pcVar7 + 1; + pcVar6 = pcVar6 + 1; + } + iVar3 = FUN_004d4a78(local_14); + pcVar11 = pcVar11 + iVar3; + } + pcVar7 = pcVar10 + DAT_0051d1a0; + } + else { + iVar3 = FUN_004d4ae0(pcVar6,PTR_s__patch__0051d190,DAT_0051d1a8); + if (iVar3 == 0) { + if (local_18 != (char *)0x0) { + uVar8 = 0xffffffff; + pcVar7 = local_18; + do { + pcVar6 = pcVar7; + if (uVar8 == 0) break; + uVar8 = uVar8 - 1; + pcVar6 = pcVar7 + 1; + cVar1 = *pcVar7; + pcVar7 = pcVar6; + } while (cVar1 != '\0'); + uVar8 = ~uVar8; + pcVar7 = pcVar6 + -uVar8; + pcVar6 = pcVar11; + for (uVar9 = uVar8 >> 2; uVar9 != 0; uVar9 = uVar9 - 1) { + *(undefined4 *)pcVar6 = *(undefined4 *)pcVar7; + pcVar7 = pcVar7 + 4; + pcVar6 = pcVar6 + 4; + } + for (uVar8 = uVar8 & 3; uVar8 != 0; uVar8 = uVar8 - 1) { + *pcVar6 = *pcVar7; + pcVar7 = pcVar7 + 1; + pcVar6 = pcVar6 + 1; + } + iVar3 = FUN_004d4a78(local_18); + pcVar11 = pcVar11 + iVar3; + } + pcVar7 = pcVar10 + DAT_0051d1a8; + } + else { + pcVar7 = pcVar10 + 1; + *pcVar11 = *pcVar10; + pcVar11 = pcVar11 + 1; + } + } + } + } + } + if (*pcVar7 == '\0') { + *pcVar11 = '\0'; + } + else { + uVar8 = 0xffffffff; + do { + pcVar6 = pcVar7; + if (uVar8 == 0) break; + uVar8 = uVar8 - 1; + pcVar6 = pcVar7 + 1; + cVar1 = *pcVar7; + pcVar7 = pcVar6; + } while (cVar1 != '\0'); + uVar8 = ~uVar8; + pcVar7 = pcVar6 + -uVar8; + for (uVar9 = uVar8 >> 2; uVar9 != 0; uVar9 = uVar9 - 1) { + *(undefined4 *)pcVar11 = *(undefined4 *)pcVar7; + pcVar7 = pcVar7 + 4; + pcVar11 = pcVar11 + 4; + } + for (uVar8 = uVar8 & 3; uVar8 != 0; uVar8 = uVar8 - 1) { + *pcVar11 = *pcVar7; + pcVar7 = pcVar7 + 1; + pcVar11 = pcVar11 + 1; + } + } + iVar3 = FUN_004d4a78(local_7c); + pcVar7 = (char *)FUN_004022b0(iVar3 + 1); + uVar8 = 0xffffffff; + pcVar11 = local_7c; + do { + pcVar6 = pcVar11; + if (uVar8 == 0) break; + uVar8 = uVar8 - 1; + pcVar6 = pcVar11 + 1; + cVar1 = *pcVar11; + pcVar11 = pcVar6; + } while (cVar1 != '\0'); + uVar8 = ~uVar8; + pcVar11 = pcVar6 + -uVar8; + pcVar6 = pcVar7; + for (uVar9 = uVar8 >> 2; uVar9 != 0; uVar9 = uVar9 - 1) { + *(undefined4 *)pcVar6 = *(undefined4 *)pcVar11; + pcVar11 = pcVar11 + 4; + pcVar6 = pcVar6 + 4; + } + for (uVar8 = uVar8 & 3; uVar8 != 0; uVar8 = uVar8 - 1) { + *pcVar6 = *pcVar11; + pcVar11 = pcVar11 + 1; + pcVar6 = pcVar6 + 1; + } + local_c[1] = pcVar7; + } + FUN_00403ecc(local_8,3); + if (s_0GraphicGaugeBackground_0051d1b5[0] == '9') { + s_0GraphicGaugeBackground_0051d1b5[0] = 'A'; + } + else { + s_0GraphicGaugeBackground_0051d1b5[0] = s_0GraphicGaugeBackground_0051d1b5[0] + '\x01'; + } + FUN_0049664c(FUN_00459eb8); + } + return; +} + + + +/* @004d11e8 file=? name=FUN_004d11e8 */ + +void FUN_004d11e8(void) + +{ + undefined4 *puVar1; + + FUN_0049664c(0); + if (DAT_004f1aac != (undefined4 *)0x0) { + for (puVar1 = (undefined4 *)DAT_004f1aac[1]; puVar1 != (undefined4 *)0x0; + puVar1 = (undefined4 *)*puVar1) { + if ((int *)puVar1[1] != (int *)0x0) { + FUN_004022d0((int *)puVar1[1]); + puVar1[1] = 0; + } + } + if (DAT_004f1aac != (undefined4 *)0x0) { + (**(code **)*DAT_004f1aac)(DAT_004f1aac,3); + } + DAT_004f1aac = (undefined4 *)0x0; + } + return; +} + + + +/* @004d123b file=? name=FUN_004d123b */ + +undefined4 * __cdecl FUN_004d123b(undefined4 *param_1,undefined4 param_2) + +{ + FUN_0041827c(param_1,param_2); + *param_1 = &PTR_FUN_0051daec; + return param_1; +} + + + +/* @004d125a file=? name=FUN_004d125a */ + +void __cdecl FUN_004d125a(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0051daec; + FUN_004182a8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004d1286 file=? name=FUN_004d1286 */ + +undefined4 * __cdecl FUN_004d1286(undefined4 *param_1,int param_2) + +{ + FUN_00418398(param_1,param_2); + *param_1 = &PTR_FUN_0051da98; + return param_1; +} + + + +/* @004d12a5 file=? name=FUN_004d12a5 */ + +undefined4 * __cdecl FUN_004d12a5(undefined4 *param_1,int param_2) + +{ + FUN_00418398(param_1,param_2); + *param_1 = &PTR_FUN_0051da98; + return param_1; +} + + + +/* @004d12c4 file=? name=FUN_004d12c4 */ + +undefined4 * __cdecl FUN_004d12c4(undefined4 *param_1,int param_2) + +{ + FUN_004183c0(param_1,param_2); + *param_1 = &PTR_FUN_0051da98; + return param_1; +} + + + +/* @004d12e3 file=? name=FUN_004d12e3 */ + +void __cdecl FUN_004d12e3(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0051da98; + FUN_004183ec(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004d130f file=? name=FUN_004d130f */ + +void __cdecl FUN_004d130f(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0051db40; + FUN_00415ed8(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004d133c file=? name=FUN_004d133c */ + +void __cdecl FUN_004d133c(int param_1,char *param_2,undefined4 param_3) + +{ + int *piVar1; + undefined4 local_24; + undefined4 local_20; + undefined4 local_1c; + undefined4 local_18; + undefined4 local_14; + undefined4 local_10; + undefined4 local_c; + undefined4 local_8; + + piVar1 = (int *)FUN_0041f98c(param_1,param_2); + if (piVar1 == (int *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_SendFakeButtonEvents__subsystem___0051e1b6,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,s___not_found_0051e1d8,(char *)0x0); + } + else { + local_14 = 0x10; + local_10 = param_3; + local_c = 1; + local_8 = 1; + (**(code **)(*piVar1 + 0xc))(piVar1,&local_14); + local_24 = 0x10; + local_20 = param_3; + local_1c = 1; + local_18 = 0xffffffff; + (**(code **)(*piVar1 + 0xc))(piVar1,&local_24); + } + return; +} + + + +/* @004d13f0 file=? name=FUN_004d13f0 */ + +void __cdecl FUN_004d13f0(char *param_1,undefined4 param_2) + +{ + int *piVar1; + + piVar1 = (int *)FUN_0041f98c(*(int *)(DAT_004efc94 + 0x6c),param_1); + if (piVar1 != (int *)0x0) { + (**(code **)(*piVar1 + 0x20))(piVar1,param_2); + } + return; +} + + + +/* @004d141c file=? name=FUN_004d141c */ + +void __cdecl FUN_004d141c(int param_1,int param_2) + +{ + int iVar1; + undefined4 local_14; + undefined4 local_10; + undefined4 local_c; + undefined4 local_8; + + iVar1 = *(int *)(param_2 + 0xc); + if (iVar1 < 0x166) { + if (iVar1 == 0x165) { + FUN_004d13f0(s_LRM15_0051e259,0); + } + else if (iVar1 < 0x162) { + if (iVar1 == 0x161) { + FUN_004d13f0(s_GeneratorD_0051e230,0); + } + else if (iVar1 == 0x5c) { + local_14 = 0x10; + local_10 = 0x19; + local_c = 1; + local_8 = 1; + FUN_00419bbc(*(int *)(param_1 + 0xd0),(int)&local_14); + } + else if (iVar1 == 0x15e) { + FUN_004d13f0(s_GeneratorA_0051e20f,0); + } + else if (iVar1 == 0x15f) { + FUN_004d13f0(s_GeneratorB_0051e21a,0); + } + else if (iVar1 == 0x160) { + FUN_004d13f0(s_GeneratorC_0051e225,0); + } + } + else if (iVar1 == 0x162) { + FUN_004d13f0(s_Condenser1_0051e23b,0); + } + else if (iVar1 == 0x163) { + FUN_004d13f0(s_LRM15_0051e246,2); + } + else if (iVar1 == 0x164) { + FUN_004d13f0(s_AmmoBinLRM15_0051e24c,1); + } + } + else { + switch(iVar1) { + case 0x166: + FUN_004d13f0(s_Avionics_0051e25f,0); + break; + case 0x167: + FUN_004d13f0(&DAT_0051e268,0); + break; + case 0x168: + FUN_004d13f0(s_GeneratorA_0051e26c,1); + break; + case 0x169: + FUN_004d13f0(s_GeneratorB_0051e277,1); + break; + case 0x16a: + FUN_004d13f0(s_GeneratorC_0051e282,1); + break; + case 0x16b: + FUN_004d13f0(s_GeneratorD_0051e28d,1); + break; + case 0x16c: + FUN_004d13f0(s_Condenser1_0051e298,1); + break; + case 0x185: + if (*(int *)(DAT_004efc94 + 0x4c) != 0) { + FUN_00448654(*(int *)(DAT_004efc94 + 0x4c)); + } + } + } + return; +} + + + +/* @004d168c file=? name=FUN_004d168c */ + +void __cdecl FUN_004d168c(int param_1,int param_2) + +{ + int *piVar1; + undefined4 local_98; + undefined4 local_94; + undefined4 local_90; + undefined4 local_8c [2]; + undefined4 local_84; + undefined4 local_80; + undefined4 local_7c [2]; + undefined4 local_74; + undefined4 local_70; + undefined4 local_6c; + undefined4 local_68; + undefined4 local_64; + undefined4 local_60; + undefined4 local_5c; + undefined4 local_58; + undefined4 local_54; + undefined4 local_50; + undefined4 local_4c; + undefined4 local_48; + undefined4 local_44; + undefined4 local_40; + undefined4 local_3c; + undefined4 local_38; + undefined4 local_34; + undefined4 local_30; + undefined4 local_2c; + undefined4 local_28; + undefined4 local_24; + undefined4 local_20; + undefined4 local_1c; + undefined4 local_18; + undefined4 local_14; + undefined4 local_10; + undefined4 local_c; + undefined4 local_8; + + piVar1 = *(int **)(param_1 + 0xd0); + if (*(int *)(param_2 + 0xc) == 1) { + FUN_0041db7c((int)&local_34); + local_34 = 2; + local_30 = 0x47c35000; + local_8 = 0; + FUN_00408440(&local_14,piVar1 + 0x40); + local_98 = 100; + local_94 = 0x12; + local_90 = 1; + FUN_00420ea4(local_8c,(undefined4 *)&DAT_00522524); + local_84 = 0; + local_80 = 0; + FUN_00420ea4(local_7c,piVar1 + 0x61); + local_74 = 0xffffffff; + local_70 = 1; + local_6c = local_34; + local_68 = local_30; + local_64 = local_2c; + local_60 = local_28; + local_5c = local_24; + local_58 = local_20; + local_54 = local_1c; + local_50 = local_18; + local_4c = local_14; + local_48 = local_10; + local_44 = local_c; + local_40 = local_8; + local_3c = 0xffffffff; + local_38 = 1; + (**(code **)(*piVar1 + 0xc))(piVar1,&local_98); + } + return; +} + + + +/* @004d17ac file=? name=FUN_004d17ac */ + +undefined4 * __cdecl +FUN_004d17ac(undefined4 *param_1,undefined4 param_2,undefined4 param_3,int *param_4, + undefined4 param_5,undefined4 param_6) + +{ + int *piVar1; + + param_4[3] = param_4[3] + 1; + FUN_004b02f0(param_1,param_2,param_3,param_4,param_5,param_6); + *param_1 = &PTR_FUN_0051e440; + param_1[0x6a] = 0; + param_1[0x68] = 0x40000000; + param_1[0x69] = 0x40000000; + piVar1 = param_4 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(param_4,3); + } + return param_1; +} + + + +/* @004d1814 file=? name=FUN_004d1814 */ + +void __cdecl FUN_004d1814(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0051e440; + FUN_004b044c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004d1840 file=? name=FUN_004d1840 */ + +void __cdecl +FUN_004d1840(undefined4 param_1,int param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5 + ,undefined4 param_6,undefined4 param_7) + +{ + int *piVar1; + int iVar2; + + piVar1 = *(int **)(DAT_004efc94 + 0x3c); + (**(code **)(*piVar1 + 0x20))(piVar1,param_3,param_4,param_4,param_7,0x10000,0x8000); + (**(code **)(piVar1[param_2 * 8 + 0x70] + 0x14)) + (piVar1 + param_2 * 8 + 0x70,0x8000,param_4,param_6,param_4); + iVar2 = 0x40; + do { + if (iVar2 == 0x41) { + iVar2 = 0x45; + } + (**(code **)(piVar1[iVar2 * 8 + 0x70] + 0x14)) + (piVar1 + iVar2 * 8 + 0x70,0x8000,param_4,param_5,param_4); + iVar2 = iVar2 + 1; + } while (iVar2 < 0x48); + return; +} + + + +/* @004d18dc file=? name=FUN_004d18dc */ + +void __cdecl FUN_004d18dc(undefined4 param_1,int param_2) + +{ + int *piVar1; + int iVar2; + + piVar1 = *(int **)(DAT_004efc94 + 0x3c); + (**(code **)(*piVar1 + 0x24))(piVar1,0x8000,0x10000); + (**(code **)(piVar1[param_2 * 8 + 0x70] + 0xc))(piVar1 + param_2 * 8 + 0x70,0x8000); + iVar2 = 0x40; + do { + if (iVar2 == 0x41) { + iVar2 = 0x45; + } + (**(code **)(piVar1[iVar2 * 8 + 0x70] + 0xc))(piVar1 + iVar2 * 8 + 0x70,0x8000); + iVar2 = iVar2 + 1; + } while (iVar2 < 0x48); + return; +} + + + +/* @004d195c file=? name=FUN_004d195c */ + +void FUN_004d195c(void) + +{ + return; +} + + + +/* @004d1964 file=? name=FUN_004d1964 */ + +void FUN_004d1964(void) + +{ + return; +} + + + +/* @004d196c file=? name=FUN_004d196c */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004d196c(int param_1,float param_2) + +{ + int iVar1; + int iVar2; + float10 fVar3; + + fVar3 = FUN_004dcd00((double)(*(float *)(param_1 + 0x11c) - _DAT_004d1ac0)); + if (fVar3 <= (float10)_DAT_004d1ac4) { + *(undefined4 *)(param_1 + 0x11c) = 0x3f800000; + } + FUN_004b0600(param_1); + iVar1 = *(int *)(*(int *)(param_1 + 0xd0) + 0x414); + if (iVar1 != *(int *)(param_1 + 0x1a8)) { + *(int *)(param_1 + 0x1a8) = iVar1; + iVar2 = *(int *)(DAT_004efc94 + 0x50); + if (iVar1 == 0) { + *(undefined4 *)(iVar2 + 8) = *(undefined4 *)(iVar2 + 4); + *(uint *)(iVar2 + 4) = *(uint *)(iVar2 + 4) & 0xffdfffff; + } + else { + *(undefined4 *)(iVar2 + 8) = *(undefined4 *)(iVar2 + 4); + *(uint *)(iVar2 + 4) = *(uint *)(iVar2 + 4) | 0x200000; + } + } + if (*(float *)(param_1 + 0x1a0) != *(float *)(param_1 + 0x1a4)) { + if (*(float *)(param_1 + 0x1a0) <= *(float *)(param_1 + 0x1a4)) { + *(float *)(param_1 + 0x1a4) = *(float *)(param_1 + 0x1a4) - param_2; + if (*(float *)(param_1 + 0x1a4) < *(float *)(param_1 + 0x1a0)) { + *(undefined4 *)(param_1 + 0x1a4) = *(undefined4 *)(param_1 + 0x1a0); + } + } + else { + *(float *)(param_1 + 0x1a4) = param_2 + *(float *)(param_1 + 0x1a4); + if (*(float *)(param_1 + 0x1a0) < *(float *)(param_1 + 0x1a4)) { + *(undefined4 *)(param_1 + 0x1a4) = *(undefined4 *)(param_1 + 0x1a0); + } + } + iVar1 = *(int *)(param_1 + 0xd0); + fVar3 = FUN_004dce94(2.0,SUB84((double)*(float *)(param_1 + 0x1a4),0), + (uint)((ulonglong)(double)*(float *)(param_1 + 0x1a4) >> 0x20)); + *(float *)(iVar1 + 0x404) = (float)(fVar3 * (float10)_DAT_004d1ac8); + } + FUN_004afd10(param_1); + return; +} + + + +/* @004d1ae4 file=? name=FUN_004d1ae4 */ + +void __cdecl FUN_004d1ae4(undefined4 param_1,int param_2) + +{ + int iVar1; + uint uVar2; + + iVar1 = *(int *)(DAT_004efc94 + 0x50); + *(undefined4 *)(iVar1 + 8) = *(undefined4 *)(iVar1 + 4); + *(uint *)(iVar1 + 4) = *(uint *)(iVar1 + 4) & 0xffe3ffff; + uVar2 = *(uint *)(&DAT_0051dbe4 + param_2 * 4); + *(undefined4 *)(iVar1 + 8) = *(undefined4 *)(iVar1 + 4); + *(uint *)(iVar1 + 4) = *(uint *)(iVar1 + 4) | uVar2; + FUN_004b0494(); + return; +} + + + +/* @004d1b24 file=? name=FUN_004d1b24 */ + +void __cdecl FUN_004d1b24(undefined4 param_1,int param_2,int param_3) + +{ + int iVar1; + uint uVar2; + int iVar3; + + iVar3 = param_2 * 5 + param_3; + iVar1 = *(int *)(DAT_004efc94 + 0x50); + uVar2 = *(uint *)(&DAT_0051dbf0 + iVar3 * 8); + *(undefined4 *)(iVar1 + 8) = *(undefined4 *)(iVar1 + 4); + *(uint *)(iVar1 + 4) = *(uint *)(iVar1 + 4) & ~uVar2; + uVar2 = *(uint *)(&DAT_0051dbf4 + iVar3 * 8); + *(undefined4 *)(iVar1 + 8) = *(undefined4 *)(iVar1 + 4); + *(uint *)(iVar1 + 4) = *(uint *)(iVar1 + 4) | uVar2; + return; +} + + + +/* @004d1b64 file=? name=FUN_004d1b64 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004d1b64(int param_1) + +{ + float fVar1; + + fVar1 = *(float *)(param_1 + 0x1a0) - _DAT_004d1b94; + *(float *)(param_1 + 0x1a0) = fVar1; + if (fVar1 < _DAT_004d1b98) { + *(undefined4 *)(param_1 + 0x1a0) = 0; + } + return; +} + + + +/* @004d1b9c file=? name=FUN_004d1b9c */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004d1b9c(int param_1) + +{ + float fVar1; + + fVar1 = _DAT_004d1bcc + *(float *)(param_1 + 0x1a0); + *(float *)(param_1 + 0x1a0) = fVar1; + if (_DAT_004d1bd0 < fVar1) { + *(undefined4 *)(param_1 + 0x1a0) = 0x40a00000; + } + return; +} + + + +/* @004d1bf0 file=? name=FUN_004d1bf0 */ + +void __cdecl FUN_004d1bf0(int *param_1,int param_2) + +{ + int iVar1; + undefined4 local_24; + undefined4 local_20; + undefined4 local_1c; + undefined4 local_18; + undefined4 local_14; + undefined4 local_10; + undefined4 local_c; + undefined4 local_8; + + iVar1 = *(int *)(param_2 + 0xc); + if (iVar1 < 0x71) { + if (iVar1 == 0x70) { + FUN_004b04d8((int)param_1,0); + return; + } + switch(iVar1) { + case 0x2b: + FUN_004d1b64((int)param_1); + return; + case 0x2d: + FUN_004d1b9c((int)param_1); + return; + case 0x31: + FUN_004d1b24(param_1,0,1); + return; + case 0x32: + FUN_004d1b24(param_1,0,2); + return; + case 0x33: + FUN_004d1b24(param_1,0,3); + return; + case 0x34: + FUN_004d1b24(param_1,0,4); + return; + case 0x35: + FUN_004d1b24(param_1,0,0); + return; + case 0x61: + FUN_004d1b24(param_1,1,1); + return; + case 0x62: + FUN_004d1b24(param_1,2,0); + return; + case 99: + FUN_004d1b24(param_1,2,3); + return; + case 100: + FUN_004d1b24(param_1,1,3); + return; + case 0x65: + FUN_004b049c((int)param_1,1); + return; + case 0x66: + FUN_004d1b24(param_1,1,4); + return; + case 0x67: + FUN_004d1b24(param_1,1,0); + return; + case 0x69: + FUN_004b049c((int)param_1,6); + return; + case 0x6a: + FUN_004d133c(param_1[0x34],s_LRM10_0051e2e3,0xb); + return; + case 0x6c: + FUN_004d133c(param_1[0x34],s_Searchlight_0051e2d7,3); + return; + case 0x6f: + FUN_004b049c((int)param_1,7); + return; + } + } + else if (iVar1 < 0x13c) { + if (iVar1 == 0x13b) { + FUN_00476e34(*(int *)(DAT_004efc94 + 0x3c)); + return; + } + switch(iVar1) { + case 0x72: + FUN_004b049c((int)param_1,2); + return; + case 0x73: + FUN_004d1b24(param_1,1,2); + return; + case 0x74: + FUN_004b049c((int)param_1,3); + return; + case 0x75: + FUN_004b049c((int)param_1,5); + return; + case 0x76: + FUN_004d1b24(param_1,2,4); + return; + case 0x77: + FUN_004b049c((int)param_1,0); + return; + case 0x78: + FUN_004d1b24(param_1,2,2); + return; + case 0x79: + FUN_004b049c((int)param_1,4); + return; + case 0x7a: + FUN_004d1b24(param_1,2,1); + return; + } + } + else if (iVar1 < 0x14c) { + if (iVar1 == 0x14b) { + param_1[0x4c] = -1; + param_1[0x4d] = 1; + param_1[0x4e] = -1; + param_1[0x4f] = -1; + param_1[0x50] = -1; + return; + } + if (iVar1 == 0x13c) { + FUN_00476e54(*(int *)(DAT_004efc94 + 0x3c)); + return; + } + if (iVar1 == 0x13d) { + local_14 = 0x10; + local_10 = 0; + local_c = 1; + local_8 = 1; + FUN_004afbe0(param_1,(int)&local_14); + return; + } + if (iVar1 == 0x13e) { + local_24 = 0x10; + local_20 = 0; + local_1c = 1; + local_18 = 1; + FUN_004afcac(param_1,(int)&local_24); + return; + } + if (iVar1 == 0x148) { + param_1[0x4c] = 1; + param_1[0x4d] = -1; + param_1[0x4e] = -1; + param_1[0x4f] = -1; + param_1[0x50] = -1; + return; + } + } + else { + if (iVar1 == 0x14d) { + param_1[0x4c] = -1; + param_1[0x4d] = -1; + param_1[0x4e] = 1; + param_1[0x4f] = -1; + param_1[0x50] = -1; + return; + } + if (iVar1 == 0x150) { + param_1[0x4c] = -1; + param_1[0x4d] = -1; + param_1[0x4e] = -1; + param_1[0x4f] = 1; + param_1[0x50] = -1; + return; + } + if (iVar1 == 0x18d) { + param_1[0x4c] = -1; + param_1[0x4d] = -1; + param_1[0x4e] = -1; + param_1[0x4f] = -1; + param_1[0x50] = 1; + return; + } + } + FUN_004d141c((int)param_1,param_2); + return; +} + + + +/* @004d2150 file=? name=FUN_004d2150 */ + +void __cdecl FUN_004d2150(int param_1,float param_2) + +{ + if (*(int *)(param_1 + 0x1ac) < 1) { + if (*(int *)(param_1 + 0x1b0) < 1) { + *(undefined4 *)(param_1 + 0x124) = 0; + *(undefined4 *)(param_1 + 0x11c) = 0; + } + else { + *(undefined4 *)(param_1 + 0x11c) = 0x3f800000; + *(undefined4 *)(param_1 + 0x124) = 1; + } + } + else { + *(undefined4 *)(param_1 + 0x11c) = 0x3f800000; + *(undefined4 *)(param_1 + 0x124) = 0; + } + *(float *)(param_1 + 0x120) = (float)(*(int *)(param_1 + 0x1b4) - *(int *)(param_1 + 0x1b8)); + FUN_004d196c(param_1,param_2); + return; +} + + + +/* @004d21d0 file=? name=FUN_004d21d0 */ + +undefined4 * __cdecl +FUN_004d21d0(undefined4 *param_1,undefined4 param_2,undefined4 param_3,int *param_4, + undefined4 param_5,undefined4 param_6) + +{ + int *piVar1; + int iVar2; + + param_4[3] = param_4[3] + 1; + FUN_004d17ac(param_1,param_2,param_3,param_4,param_5,param_6); + *param_1 = &PTR_FUN_0051e3f0; + param_1[7] = PTR_FUN_0051dcc4; + param_1[8] = DAT_0051dcc8; + param_1[9] = DAT_0051dccc; + param_1[0x6b] = 0; + param_1[0x6c] = 0; + param_1[0x6d] = 0; + param_1[0x6e] = 0; + iVar2 = *(int *)(DAT_004efc94 + 0x3c); + (**(code **)(*(int *)(iVar2 + 0xa00) + 0x18))(iVar2 + 0xa00,0xffffffff,param_1 + 0x6b,param_1); + (**(code **)(*(int *)(iVar2 + 0x9e0) + 0x18))(iVar2 + 0x9e0,0xffffffff,param_1 + 0x6c,param_1); + (**(code **)(*(int *)(iVar2 + 0x1a0) + 0x14))(iVar2 + 0x1a0,0xffffffff,param_1,0x17,param_1); + piVar1 = param_4 + 3; + *piVar1 = *piVar1 + -1; + if (*piVar1 == 0) { + FUN_004024d8(param_4,3); + } + return param_1; +} + + + +/* @004d22b4 file=? name=FUN_004d22b4 */ + +void __cdecl FUN_004d22b4(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0051e3f0; + FUN_004d1814(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004d22e0 file=? name=FUN_004d22e0 */ + +void __cdecl FUN_004d22e0(int param_1) + +{ + FUN_0041a1a4(**(int **)(param_1 + 0xc),0x51dc78); + return; +} + + + +/* @004d22fc file=? name=FUN_004d22fc */ + +void __cdecl FUN_004d22fc(undefined4 param_1,int param_2) + +{ + if (0 < *(int *)(param_2 + 0xc)) { + FUN_004d1b24(param_1,0,0); + } + return; +} + + + +/* @004d231c file=? name=FUN_004d231c */ + +void __cdecl FUN_004d231c(undefined4 param_1,int param_2) + +{ + if (0 < *(int *)(param_2 + 0xc)) { + FUN_004d1b24(param_1,0,1); + } + return; +} + + + +/* @004d233c file=? name=FUN_004d233c */ + +void __cdecl FUN_004d233c(undefined4 param_1,int param_2) + +{ + if (0 < *(int *)(param_2 + 0xc)) { + FUN_004d1b24(param_1,0,2); + } + return; +} + + + +/* @004d235c file=? name=FUN_004d235c */ + +void __cdecl FUN_004d235c(undefined4 param_1,int param_2) + +{ + if (0 < *(int *)(param_2 + 0xc)) { + FUN_004d1b24(param_1,0,3); + } + return; +} + + + +/* @004d237c file=? name=FUN_004d237c */ + +void __cdecl FUN_004d237c(undefined4 param_1,int param_2) + +{ + if (0 < *(int *)(param_2 + 0xc)) { + FUN_004d1b24(param_1,0,4); + } + return; +} + + + +/* @004d239c file=? name=FUN_004d239c */ + +void __cdecl FUN_004d239c(undefined4 param_1,int param_2) + +{ + if (0 < *(int *)(param_2 + 0xc)) { + FUN_004d1b24(param_1,1,0); + } + return; +} + + + +/* @004d23bc file=? name=FUN_004d23bc */ + +void __cdecl FUN_004d23bc(undefined4 param_1,int param_2) + +{ + if (0 < *(int *)(param_2 + 0xc)) { + FUN_004d1b24(param_1,1,1); + } + return; +} + + + +/* @004d23dc file=? name=FUN_004d23dc */ + +void __cdecl FUN_004d23dc(undefined4 param_1,int param_2) + +{ + if (0 < *(int *)(param_2 + 0xc)) { + FUN_004d1b24(param_1,1,2); + } + return; +} + + + +/* @004d23fc file=? name=FUN_004d23fc */ + +void __cdecl FUN_004d23fc(undefined4 param_1,int param_2) + +{ + if (0 < *(int *)(param_2 + 0xc)) { + FUN_004d1b24(param_1,1,3); + } + return; +} + + + +/* @004d241c file=? name=FUN_004d241c */ + +void __cdecl FUN_004d241c(undefined4 param_1,int param_2) + +{ + if (0 < *(int *)(param_2 + 0xc)) { + FUN_004d1b24(param_1,1,4); + } + return; +} + + + +/* @004d243c file=? name=FUN_004d243c */ + +void __cdecl FUN_004d243c(undefined4 param_1,int param_2) + +{ + if (0 < *(int *)(param_2 + 0xc)) { + FUN_004d1b24(param_1,2,0); + } + return; +} + + + +/* @004d245c file=? name=FUN_004d245c */ + +void __cdecl FUN_004d245c(undefined4 param_1,int param_2) + +{ + if (0 < *(int *)(param_2 + 0xc)) { + FUN_004d1b24(param_1,2,1); + } + return; +} + + + +/* @004d247c file=? name=FUN_004d247c */ + +void __cdecl FUN_004d247c(undefined4 param_1,int param_2) + +{ + if (0 < *(int *)(param_2 + 0xc)) { + FUN_004d1b24(param_1,2,2); + } + return; +} + + + +/* @004d249c file=? name=FUN_004d249c */ + +void __cdecl FUN_004d249c(undefined4 param_1,int param_2) + +{ + if (0 < *(int *)(param_2 + 0xc)) { + FUN_004d1b24(param_1,2,3); + } + return; +} + + + +/* @004d24bc file=? name=FUN_004d24bc */ + +void __cdecl FUN_004d24bc(undefined4 param_1,int param_2) + +{ + if (0 < *(int *)(param_2 + 0xc)) { + FUN_004d1b24(param_1,2,4); + } + return; +} + + + +/* @004d24dc file=? name=FUN_004d24dc */ + +void __cdecl FUN_004d24dc(int param_1,int param_2) + +{ + if (0 < *(int *)(param_2 + 0xc)) { + FUN_004d1b64(param_1); + } + return; +} + + + +/* @004d24f8 file=? name=FUN_004d24f8 */ + +void __cdecl FUN_004d24f8(int param_1,int param_2) + +{ + if (0 < *(int *)(param_2 + 0xc)) { + FUN_004d1b9c(param_1); + } + return; +} + + + +/* @004d2514 file=? name=FUN_004d2514 */ + +void __cdecl FUN_004d2514(int param_1,int param_2) + +{ + if (*(int *)(param_2 + 0xc) == 0x13b) { + FUN_00476e8c(*(int *)(DAT_004efc94 + 0x3c)); + FUN_0041bbd8(*(int *)(param_1 + 0xd0) + 0x2c,0); + return; + } + if (*(int *)(param_2 + 0xc) != 0x186) { + FUN_004d141c(param_1,param_2); + return; + } + FUN_0044e6c0(DAT_004efc94); + return; +} + + + +/* @004d2574 file=? name=FUN_004d2574 */ + +void __cdecl FUN_004d2574(int param_1,int param_2) + +{ + int iVar1; + int *piVar2; + + if (0 < *(int *)(param_2 + 0xc)) { + piVar2 = &DAT_0051dcd0; + iVar1 = 0; + do { + if (*(int *)(param_2 + 0xc) + -1 == *piVar2) { + if (iVar1 < 7) { + FUN_004b049c(param_1,iVar1 + 1); + return; + } + FUN_004b04d8(param_1,0); + return; + } + iVar1 = iVar1 + 1; + piVar2 = piVar2 + 1; + } while (iVar1 < 8); + } + return; +} + + + +/* @004d25c0 file=? name=FUN_004d25c0 */ + +void __cdecl FUN_004d25c0(int param_1,float param_2) + +{ + *(float *)(param_1 + 0x120) = *(float *)(param_1 + 0x1b4) - *(float *)(param_1 + 0x1b8); + FUN_004d196c(param_1,param_2); + return; +} + + + +/* @004d25e8 file=? name=FUN_004d25e8 */ + +void __cdecl FUN_004d25e8(undefined4 param_1,int param_2,undefined4 param_3,undefined4 param_4) + +{ + int iVar1; + + iVar1 = (param_2 + -1) * 0x20; + (**(code **)(*(int *)(*(int *)(DAT_004efc94 + 0x3c) + 0x1c0 + iVar1) + 0x1c)) + (iVar1 + *(int *)(DAT_004efc94 + 0x3c) + 0x1c0,0x10000,param_3,param_4,param_1); + return; +} + + + +/* @004d262c file=? name=FUN_004d262c */ + +void __cdecl FUN_004d262c(undefined4 param_1,int param_2,undefined4 param_3) + +{ + int iVar1; + + iVar1 = (param_2 + -1) * 0x20; + (**(code **)(*(int *)(*(int *)(DAT_004efc94 + 0x3c) + 0x1c0 + iVar1) + 0x20)) + (iVar1 + *(int *)(DAT_004efc94 + 0x3c) + 0x1c0,0x10000,param_3,param_1); + return; +} + + + +/* @004d266c file=? name=FUN_004d266c */ + +undefined4 * __cdecl +FUN_004d266c(undefined4 *param_1,undefined4 param_2,undefined4 param_3,int *param_4, + undefined4 param_5,undefined4 param_6) + +{ + int iVar1; + int *piVar2; + int local_8; + + param_4[3] = param_4[3] + 1; + FUN_004d17ac(param_1,param_2,param_3,param_4,param_5,param_6); + *param_1 = &PTR_FUN_0051e3a0; + param_1[7] = PTR_FUN_0051deb4; + param_1[8] = DAT_0051deb8; + param_1[9] = DAT_0051debc; + param_1[0x6b] = 0; + param_1[0x6c] = 0; + param_1[0x6d] = 0; + param_1[0x6e] = 0; + iVar1 = *(int *)(DAT_004efc94 + 0x3c); + (**(code **)(*(int *)(iVar1 + 0x1a0) + 0x14))(iVar1 + 0x1a0,0xffffffff,param_1,0x19,param_1); + (**(code **)(*(int *)(iVar1 + 0x44) + 0x18))(iVar1 + 0x44,0xffffffff,param_1 + 0x6d,param_1); + (**(code **)(*(int *)(iVar1 + 100) + 0x18))(iVar1 + 100,0xffffffff,param_1 + 0x6e,param_1); + (**(code **)(*(int *)(iVar1 + 0x960) + 0x14))(iVar1 + 0x960,0x200000,param_2,0x19,param_1); + piVar2 = FUN_00476fc0(iVar1,0x3d,0x200000); + if (piVar2 != (int *)0x0) { + FUN_00444e64(piVar2,1); + } + piVar2 = &DAT_0051dcd0; + local_8 = 0; + do { + (**(code **)(*(int *)(iVar1 + 0x1c0 + *piVar2 * 0x20) + 0x14)) + (*piVar2 * 0x20 + iVar1 + 0x1c0,0xffffffff,param_1,0x1a,param_1); + FUN_00476fc0(iVar1,*piVar2,0xffffffff); + local_8 = local_8 + 1; + piVar2 = piVar2 + 1; + } while (local_8 < 8); + piVar2 = param_4 + 3; + *piVar2 = *piVar2 + -1; + if (*piVar2 == 0) { + FUN_004024d8(param_4,3); + } + return param_1; +} + + + +/* @004d27cc file=? name=FUN_004d27cc */ + +void __cdecl FUN_004d27cc(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0051e3a0; + FUN_004d1814(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004d27f8 file=? name=FUN_004d27f8 */ + +void __cdecl FUN_004d27f8(int param_1) + +{ + FUN_0041a1a4(**(int **)(param_1 + 0xc),0x51dd00); + return; +} + + + +/* @004d29fc file=? name=FUN_004d29fc */ + +undefined4 * __cdecl FUN_004d29fc(undefined4 *param_1) + +{ + int iVar1; + undefined4 *puVar2; + undefined4 *puVar3; + + FUN_00436b1c(param_1); + *param_1 = &PTR_FUN_0051e568; + puVar2 = &DAT_004e107c; + puVar3 = param_1 + 0x16; + for (iVar1 = 0xc; iVar1 != 0; iVar1 = iVar1 + -1) { + *puVar3 = *puVar2; + puVar2 = puVar2 + 1; + puVar3 = puVar3 + 1; + } + param_1[0x14] = 0; + param_1[0x15] = 0; + return param_1; +} + + + +/* @004d2a34 file=? name=FUN_004d2a34 */ + +void __cdecl FUN_004d2a34(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0051e568; + FUN_00436b9c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004d2a60 file=? name=FUN_004d2a60 */ + +void __cdecl FUN_004d2a60(int param_1,int param_2) + +{ + int iVar1; + uint *puVar2; + + FUN_00436bd8(param_1,param_2); + *(undefined4 *)(param_1 + 0x50) = 0; + iVar1 = FUN_0041a1a4(**(int **)(param_2 + 0xc),0x4e4afc); + if (iVar1 != 0) { + puVar2 = (uint *)FUN_00402298(0x10); + if (puVar2 == (uint *)0x0) { + puVar2 = (uint *)0x0; + } + else { + puVar2 = FUN_00402460(puVar2,s_siteeyepoint_0051e4d1); + } + puVar2[3] = puVar2[3] + 1; + iVar1 = FUN_00424b60(param_2,(int *)puVar2); + *(int *)(param_1 + 0x54) = iVar1; + if (iVar1 != 0) { + *(undefined4 *)(param_1 + 0x50) = 1; + FUN_004d2ae4(param_1); + } + } + return; +} + + + +/* @004d2ae4 file=? name=FUN_004d2ae4 */ + +void __cdecl FUN_004d2ae4(int param_1) + +{ + int iVar1; + undefined4 local_34 [12]; + + if (*(int *)(param_1 + 0x50) == 0) { + FUN_00436c08(local_34,param_1); + FUN_0040ab28((undefined4 *)(param_1 + 0x58),local_34); + } + else { + iVar1 = FUN_00417ab4(param_1 + 8); + FUN_00424da8(iVar1,*(int *)(param_1 + 0x54),(float *)(param_1 + 0x58)); + } + return; +} + + + +/* @004d2b34 file=? name=FUN_004d2b34 */ + +void __cdecl FUN_004d2b34(int param_1) + +{ + FUN_00436c38(param_1); + FUN_004d2ae4(param_1); + return; +} + + + +/* @004d2b4c file=? name=FUN_004d2b4c */ + +void __cdecl FUN_004d2b4c(undefined4 *param_1,int param_2) + +{ + int iVar1; + undefined4 *puVar2; + + puVar2 = (undefined4 *)(param_2 + 0x58); + for (iVar1 = 0xc; iVar1 != 0; iVar1 = iVar1 + -1) { + *param_1 = *puVar2; + puVar2 = puVar2 + 1; + param_1 = param_1 + 1; + } + return; +} + + + +/* @004d2b6c file=? name=FUN_004d2b6c */ + +undefined4 * __cdecl FUN_004d2b6c(undefined4 *param_1,undefined4 param_2,undefined4 param_3) + +{ + FUN_0046739c(param_1,param_2,param_3); + *param_1 = &PTR_FUN_0051e518; + return param_1; +} + + + +/* @004d2b90 file=? name=FUN_004d2b90 */ + +void __cdecl FUN_004d2b90(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0051e518; + FUN_00467418(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004d2bbc file=? name=FUN_004d2bbc */ + +undefined4 * FUN_004d2bbc(void) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00402298(0x88); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_004d29fc(puVar1); + } + return puVar1; +} + + + +/* @004d2be0 file=? name=FUN_004d2be0 */ + +undefined4 * __cdecl FUN_004d2be0(undefined4 *param_1,int param_2,int param_3) + +{ + FUN_0049b54c(param_1,param_2,param_3); + *param_1 = &PTR_FUN_0051e870; + return param_1; +} + + + +/* @004d2c04 file=? name=FUN_004d2c04 */ + +void __cdecl FUN_004d2c04(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0051e870; + FUN_0049b648(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004d2c30 file=bt_l4/btl4mssn.cpp name=FUN_004d2c30 */ + +void __cdecl FUN_004d2c30(int param_1,int param_2) + +{ + char *pcVar1; + uint *puVar2; + int *piVar3; + char *pcVar4; + int iVar5; + undefined3 extraout_var; + undefined4 *puVar6; + uint uVar7; + undefined3 extraout_var_00; + undefined3 extraout_var_01; + char *pcVar8; + bool bVar9; + int local_a4 [5]; + int local_90 [5]; + undefined4 local_7c; + int local_78; + float local_74; + int *local_70; + int *local_6c; + int *local_68; + int *local_64; + int *local_60; + int *local_5c; + undefined4 *local_58; + uint *local_54; + uint *local_50; + uint *local_4c; + char *local_48; + char *local_44; + int *local_40; + char *local_3c; + float local_38; + int local_34; + char *local_30; + int *local_2c; + int *local_28; + char *local_24; + char *local_20; + int *local_1c; + char *local_18; + char *local_14; + char *local_10; + char *local_c; + int *local_8; + + local_8 = *(int **)(*(int *)(*(int *)(DAT_004efc94 + 0x2c) + 0x14) + 0x1064); + local_8[3] = local_8[3] + 1; + *(undefined4 *)(param_1 + 0x2c) = 0; + local_c = (char *)0x0; + FUN_00404088(param_2,(char *)local_8[2],s_vehicle_0051e5b5,&local_c); + if (local_c == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_Error__vehicle_not_specified__0051e5bd,(char *)0x0); + FUN_004036a0(1); + } + pcVar4 = FUN_00402300(local_c); + *(char **)(param_1 + 0x2c) = pcVar4; + *(undefined4 *)(param_1 + 0x28) = 0; + local_10 = (char *)0x0; + FUN_00404088(param_2,(char *)local_8[2],s_dropzone_0051e5dc,&local_10); + if (local_10 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_Error__dropzone_not_specified__0051e5e5,(char *)0x0); + FUN_004036a0(1); + } + pcVar4 = FUN_00402300(local_10); + *(char **)(param_1 + 0x28) = pcVar4; + *(undefined4 *)(param_1 + 0x3c) = 0; + FUN_004040d8(param_2,(char *)local_8[2],s_loadzones_0051e605,(int *)(param_1 + 0x3c)); + *(undefined4 *)(param_1 + 0x20) = 0; + local_14 = (char *)0x0; + FUN_00404088(param_2,(char *)local_8[2],s_color_0051e60f,&local_14); + if (local_14 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_Error__color_not_specified__0051e615,(char *)0x0); + FUN_004036a0(1); + } + pcVar4 = FUN_00402300(local_14); + *(char **)(param_1 + 0x20) = pcVar4; + local_18 = (char *)0x0; + FUN_00404088(param_2,(char *)local_8[2],s_patch_0051e632,&local_18); + if (local_18 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_Error__patch_not_specified__0051e638,(char *)0x0); + FUN_004036a0(1); + } + FUN_00402a98((int *)&local_1c,(int *)(param_1 + 0xf8),local_18); + piVar3 = local_1c + 3; + *piVar3 = *piVar3 + -1; + if (*piVar3 == 0) { + FUN_004024d8(local_1c,3); + } + *(undefined4 *)(param_1 + 0x24) = 0; + local_20 = (char *)0x0; + FUN_00404088(param_2,(char *)local_8[2],s_badge_0051e655,&local_20); + if (local_20 == (char *)0x0) { + FUN_004dbb24(&DAT_00524e20,s_Error__badge_not_specified__0051e65b,(char *)0x0); + FUN_004036a0(1); + } + pcVar4 = FUN_00402300(local_20); + *(char **)(param_1 + 0x24) = pcVar4; + iVar5 = FUN_00404088(param_2,(char *)local_8[2],s_badge_0051e678,&local_24); + if (iVar5 == 0) { + FUN_00402a98((int *)&local_2c,(int *)(param_1 + 0xec),s_DEFAULT_0051e67e); + piVar3 = local_2c + 3; + *piVar3 = *piVar3 + -1; + if (*piVar3 == 0) { + FUN_004024d8(local_2c,3); + } + } + else { + FUN_00402a98((int *)&local_28,(int *)(param_1 + 0xec),local_24); + piVar3 = local_28 + 3; + *piVar3 = *piVar3 + -1; + if (*piVar3 == 0) { + FUN_004024d8(local_28,3); + } + } + local_30 = s_Unspecified_0051e686; + iVar5 = FUN_00404088(param_2,(char *)local_8[2],s_experience_0051e692,&local_30); + if (iVar5 == 0) { + pcVar4 = *(char **)(param_1 + 0x2c); + pcVar8 = s_camera_0051e69d; + do { + bVar9 = *pcVar4 == *pcVar8; + if (!bVar9) break; + if (*pcVar4 == '\0') goto LAB_004d2f3e; + pcVar1 = pcVar4 + 1; + bVar9 = *pcVar1 == pcVar8[1]; + if (!bVar9) break; + pcVar4 = pcVar4 + 2; + pcVar8 = pcVar8 + 2; + bVar9 = *pcVar1 == '\0'; + } while (!bVar9); + if (!bVar9) { + FUN_004dbb24((int *)&DAT_00524e68,(char *)local_8[2],(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_page_missing_expereince__0051e6a4,(char *)0x0); + FUN_004d9c38((int *)&DAT_00524e68); + FUN_0040385c(s_Exiting_0051e6be,s_d__tesla_bt_bt_l4_BTL4MSSN_CPP_0051e6c6,0xf0); + goto LAB_004d3052; + } + } +LAB_004d2f3e: + pcVar8 = s_Unspecified_0051e6e5; + pcVar4 = local_30; + do { + if (*pcVar8 != *pcVar4) goto LAB_004d2f68; + bVar9 = true; + if (*pcVar8 == '\0') break; + pcVar1 = pcVar8 + 1; + if (*pcVar1 != pcVar4[1]) goto LAB_004d2f68; + pcVar8 = pcVar8 + 2; + pcVar4 = pcVar4 + 2; + bVar9 = *pcVar1 == '\0'; + } while (!bVar9); + if (!bVar9) { +LAB_004d2f68: + iVar5 = FUN_004d4b58(local_30,s_novice_0051e6f1); + if (iVar5 == 0) { + *(undefined4 *)(param_1 + 0xe4) = 0; + } + else { + iVar5 = FUN_004d4b58(local_30,s_standard_0051e6f8); + if (iVar5 == 0) { + *(undefined4 *)(param_1 + 0xe4) = 1; + } + else { + iVar5 = FUN_004d4b58(local_30,s_veteran_0051e701); + if (iVar5 == 0) { + *(undefined4 *)(param_1 + 0xe4) = 2; + } + else { + iVar5 = FUN_004d4b58(local_30,s_expert_0051e709); + pcVar4 = local_30; + if (iVar5 == 0) { + *(undefined4 *)(param_1 + 0xe4) = 3; + } + else { + FUN_004dbb24((int *)&DAT_00524e68,(char *)local_8[2],(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_has_an_unknown_experience_field_o_0051e710, + (char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,pcVar4,(char *)0x0); + FUN_004d9c38((int *)&DAT_00524e68); + FUN_0040385c(s_Exiting_0051e735,s_d__tesla_bt_bt_l4_BTL4MSSN_CPP_0051e73d,0x108); + } + } + } + } + } +LAB_004d3052: + local_34 = 0; + bVar9 = FUN_004040d8(param_2,(char *)local_8[2],s_advancedDamage_0051e75c,&local_34); + if (CONCAT31(extraout_var,bVar9) != 0) { + if (local_34 == 0) { + *(undefined4 *)(param_1 + 0xf0) = 0; + } + else { + *(undefined4 *)(param_1 + 0xf0) = 1; + } + } + iVar5 = FUN_00404088(param_2,(char *)local_8[2],&DAT_0051e76b,&local_3c); + if (iVar5 == 0) { + FUN_004dbb24((int *)&DAT_00524e68,s_Each_Player_page_must_have_a_rol_0051e7fd,(char *)0x0); + FUN_004d9c38((int *)&DAT_00524e68); + FUN_0040385c(s_Exiting_0051e827,s_d__tesla_bt_bt_l4_BTL4MSSN_CPP_0051e82f,0x1c3); + } + else { + FUN_00402a98((int *)&local_40,(int *)(param_1 + 0xe8),local_3c); + piVar3 = local_40 + 3; + *piVar3 = *piVar3 + -1; + if (*piVar3 == 0) { + FUN_004024d8(local_40,3); + } + iVar5 = FUN_00404088(param_2,local_3c,s_model_0051e770,&local_44); + if (iVar5 == 0) { + FUN_004dbb24((int *)&DAT_00524e68,local_3c,(char *)0x0); + FUN_004dbb24((int *)&DAT_00524e68,s_page_or_model_field_missing___0051e7b7,(char *)0x0); + FUN_004d9c38((int *)&DAT_00524e68); + FUN_0040385c(s_Exiting_0051e7d6,s_d__tesla_bt_bt_l4_BTL4MSSN_CPP_0051e7de,0x1bd); + } + else { + FUN_004323c7(local_90,param_1 + 0x50); + puVar6 = (undefined4 *)(**(code **)(local_90[0] + 0x54))(local_90,param_1 + 0xe8); + FUN_00432405(local_90,2); + if (puVar6 == (undefined4 *)0x0) { + puVar6 = (undefined4 *)FUN_00402298(0x2c); + if (puVar6 == (undefined4 *)0x0) { + puVar6 = (undefined4 *)0x0; + } + else { + local_48 = local_44; + local_50 = (uint *)FUN_00402298(0x10); + if (local_50 == (uint *)0x0) { + local_4c = (uint *)0x0; + } + else { + local_4c = FUN_00402460(local_50,local_48); + } + local_4c[3] = local_4c[3] + 1; + puVar6 = FUN_00429a9c(puVar6,(int *)(param_1 + 0xe8),(int *)&local_4c); + } + local_54 = local_4c; + puVar2 = local_4c + 3; + *puVar2 = *puVar2 - 1; + if (*puVar2 == 0) { + FUN_004024d8((int *)local_4c,3); + } + local_5c = puVar6 + 9; + local_60 = (int *)*local_5c; + local_60[3] = local_60[3] + 1; + local_58 = puVar6; + FUN_004323c7(local_a4,param_1 + 0x50); + iVar5 = (**(code **)(local_a4[0] + 0x54))(local_a4,&local_60); + FUN_00432405(local_a4,2); + uVar7 = (uint)(iVar5 == 0); + local_64 = local_60; + piVar3 = local_60 + 3; + *piVar3 = *piVar3 + -1; + if (*piVar3 == 0) { + FUN_004024d8(local_60,3); + } + if (uVar7 != 0) { + local_68 = local_58 + 9; + local_6c = (int *)*local_68; + local_6c[3] = local_6c[3] + 1; + (**(code **)(*(int *)(param_1 + 0x50) + 8))(param_1 + 0x50,local_58,&local_6c); + local_70 = local_6c; + piVar3 = local_6c + 3; + *piVar3 = *piVar3 + -1; + if (*piVar3 == 0) { + FUN_004024d8(local_6c,3); + } + } + } + iVar5 = FUN_00404118(param_2,local_3c,s_dmgInflctdMdfr_0051e776,&local_38); + if (iVar5 != 0) { + puVar6[3] = local_38; + } + iVar5 = FUN_00404118(param_2,local_3c,s_dmgRcvdMdfr_0051e785,&local_38); + if (iVar5 != 0) { + local_74 = local_38; + puVar6[4] = local_38; + } + iVar5 = FUN_00404118(param_2,local_3c,s_dmgBias_0051e791,&local_38); + if (iVar5 != 0) { + puVar6[6] = local_38; + } + iVar5 = FUN_00404118(param_2,local_3c,s_friendlyFire_0051e799,&local_38); + if (iVar5 != 0) { + puVar6[5] = local_38; + } + bVar9 = FUN_004040d8(param_2,local_3c,s_return_0051e7a6,&local_78); + if (CONCAT31(extraout_var_00,bVar9) != 0) { + puVar6[10] = local_78; + } + iVar5 = FUN_00404118(param_2,local_3c,s_killBonus_0051e7ad,&local_38); + if (iVar5 != 0) { + puVar6[7] = local_38; + } + } + } + bVar9 = FUN_004040d8(param_2,(char *)local_8[2],s_bitmapindex_0051e84e,(int *)(param_1 + 0x4c)); + if (CONCAT31(extraout_var_01,bVar9) == 0) { + FUN_004dbb24(&DAT_00524e20,s_No_Bitmap_for_player_0051e85a,(char *)0x0); + FUN_004dbb24(&DAT_00524e20,(char *)local_8[2],(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + } + else { + local_7c = *(undefined4 *)(param_1 + 0x4c); + iVar5 = (**(code **)(*(int *)(param_1 + 0x68) + 0xc))(param_1 + 0x68,&local_7c); + if (((iVar5 != 0) && (*(int *)(DAT_004efc94 + 0x4c) != 0)) && + (piVar3 = *(int **)(*(int *)(DAT_004efc94 + 0x4c) + 0x1c530), piVar3 != (int *)0x0)) { + (**(code **)(*piVar3 + 0x28)) + (piVar3,1,0,0xff,0,0,0,0,iVar5,0,0,*(int *)(iVar5 + 0xc) + -1, + *(int *)(iVar5 + 0x10) + -1); + (**(code **)(*piVar3 + 8))(piVar3,1); + (**(code **)(*piVar3 + 0xc))(piVar3); + } + } + piVar3 = local_8 + 3; + *piVar3 = *piVar3 + -1; + if (*piVar3 == 0) { + FUN_004024d8(local_8,3); + } + return; +} + + + +/* @004d34b0 file=? name=FUN_004d34b0 */ + +undefined4 FUN_004d34b0(void) + +{ + FUN_0044d828(); + return 1; +} + + + +/* @004d34c4 file=? name=FUN_004d34c4 */ + +undefined4 * __cdecl +FUN_004d34c4(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) + +{ + FUN_0047b410(param_1,param_2,1,param_3,param_4); + *param_1 = &PTR_FUN_0051ed9c; + FUN_004dbb24(&DAT_00524e20,s_BTL4Application__BTL4Application_0051ebd6,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + return param_1; +} + + + +/* @004d350c file=? name=FUN_004d350c */ + +void __cdecl FUN_004d350c(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0051ed9c; + FUN_0047b624(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004d3538 file=? name=FUN_004d3538 */ + +undefined4 * FUN_004d3538(void) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00402298(0x10); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_004c1548(puVar1); + } + return puVar1; +} + + + +/* @004d3564 file=? name=FUN_004d3564 */ + +undefined4 * __cdecl FUN_004d3564(int param_1) + +{ + undefined4 *puVar1; + + if (*(int *)(param_1 + 0xd0) == 0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = (undefined4 *)FUN_00402298(0x3e0); + if (puVar1 == (undefined4 *)0x0) { + return (undefined4 *)0x0; + } + puVar1 = FUN_004ceecc(puVar1,DAT_004e8238,DAT_004e823c,1,0,1); + } + return puVar1; +} + + + +/* @004d35b0 file=? name=FUN_004d35b0 */ + +undefined4 * __cdecl FUN_004d35b0(int param_1) + +{ + int iVar1; + int iVar2; + undefined4 *puVar3; + float10 fVar4; + undefined4 uVar5; + + iVar1 = FUN_004dee74(s_AWE_FRONT_0051ec1e); + iVar2 = FUN_004dee74(s_AWE_REAR_0051ec28); + if ((iVar1 == 0) || (iVar2 == 0)) { + puVar3 = (undefined4 *)0x0; + } + else { + puVar3 = (undefined4 *)FUN_00402298(0x1b0); + if (puVar3 == (undefined4 *)0x0) { + puVar3 = (undefined4 *)0x0; + } + else { + uVar5 = DAT_004fd550; + fVar4 = FUN_0044e19c(param_1); + puVar3 = FUN_004d2b6c(puVar3,(float)fVar4,uVar5); + } + } + return puVar3; +} + + + +/* @004d3614 file=? name=FUN_004d3614 */ + +undefined4 * FUN_004d3614(void) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00402298(0xc); + if (puVar1 != (undefined4 *)0x0) { + FUN_0044c2d0(puVar1,0x50421); + *puVar1 = &PTR_LAB_0051ed98; + } + return puVar1; +} + + + +/* @004d3644 file=? name=FUN_004d3644 */ + +undefined4 * __cdecl FUN_004d3644(undefined4 param_1) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00402298(0xd10); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_00475c18(puVar1); + } + (**(code **)(puVar1[0x68] + 0x14))(puVar1 + 0x68,0xffffffff,param_1,7,param_1); + return puVar1; +} + + + +/* @004d368c file=? name=FUN_004d368c */ + +int * FUN_004d368c(void) + +{ + int iVar1; + int *piVar2; + + iVar1 = FUN_004dee74(s_L4GAUGE_0051ec31); + if (iVar1 == 0) { + piVar2 = (int *)0x0; + } + else { + piVar2 = (int *)FUN_00402298(0x1c53c); + if (piVar2 == (int *)0x0) { + return (int *)0x0; + } + piVar2 = FUN_004cbea0(piVar2); + } + return piVar2; +} + + + +/* @004d36c4 file=? name=FUN_004d36c4 */ + +undefined4 * __cdecl FUN_004d36c4(undefined4 param_1,int param_2,int param_3) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00402298(0xfc); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_004d2be0(puVar1,param_2,param_3); + } + return puVar1; +} + + + +/* @004d36f4 file=bt_l4/btl4app.cpp name=FUN_004d36f4 */ + +int * __cdecl FUN_004d36f4(int param_1,int param_2) + +{ + int iVar1; + uint *puVar2; + undefined4 *puVar3; + int iVar4; + int *piVar5; + char *pcVar6; + char *pcVar7; + undefined4 uVar8; + undefined *puVar9; + char local_60 [2]; + char acStack_5e [30]; + undefined4 local_40; + undefined4 local_3c; + int *local_30; + uint *local_2c; + undefined4 *local_28; + uint *local_24; + undefined4 *local_20; + int *local_1c; + undefined4 *local_18; + undefined4 *local_14; + undefined4 *local_10; + int *local_c; + char *local_8; + + piVar5 = (int *)0x0; + iVar1 = *(int *)(param_1 + 0x3c); + local_8 = (char *)0x0; + if (*(int *)(param_2 + 0x1c) == 0x45) { + piVar5 = FUN_0042d16c(param_2); + pcVar6 = s_ControlsMapper_0051ec39; + pcVar7 = local_60; + local_c = piVar5; + for (iVar4 = 3; iVar4 != 0; iVar4 = iVar4 + -1) { + *(undefined4 *)pcVar7 = *(undefined4 *)pcVar6; + pcVar6 = pcVar6 + 4; + pcVar7 = pcVar7 + 4; + } + *(undefined2 *)pcVar7 = *(undefined2 *)pcVar6; + pcVar7[2] = pcVar6[2]; + local_40 = 0xf; + local_3c = 0x30; + if (*(int *)(iVar1 + 0xc98) == 2) { + local_10 = (undefined4 *)FUN_00402298(0x110); + if (local_10 == (undefined4 *)0x0) { + puVar3 = (undefined4 *)0x0; + } + else { + puVar3 = FUN_0047ac5c(local_10,local_c,0,local_60,&DAT_004fd318); + } + local_8 = s_Thrustmaster_0051ec48; + } + else if (*(int *)(iVar1 + 0xc98) == 4) { + local_14 = (undefined4 *)FUN_00402298(0x108); + if (local_14 == (undefined4 *)0x0) { + puVar3 = (undefined4 *)0x0; + } + else { + puVar3 = FUN_0047ad3c(local_14,local_c,0,local_60,&DAT_004fd364); + } + local_8 = &DAT_0051ec55; + } + else { + local_18 = (undefined4 *)FUN_00402298(0x108); + if (local_18 == (undefined4 *)0x0) { + puVar3 = (undefined4 *)0x0; + } + else { + puVar3 = FUN_0047aa78(local_18,local_c,0,local_60,&DAT_004fd2b0); + } + } + FUN_0042c630((int)local_c,puVar3); + } + else if (*(int *)(param_2 + 0x1c) == 0xbb9) { + piVar5 = FUN_004a2d48(param_2); + local_1c = piVar5; + FUN_00476eac(iVar1,0.05); + FUN_00476eec(iVar1,0.05); + FUN_00476f10(iVar1,0.05); + if (*(int *)(iVar1 + 0xc98) == 2) { + local_20 = (undefined4 *)FUN_00402298(0x1bc); + if (local_20 == (undefined4 *)0x0) { + puVar3 = (undefined4 *)0x0; + } + else { + puVar9 = &DAT_0051dc68; + uVar8 = 0x7dc; + local_24 = (uint *)FUN_00402298(0x10); + if (local_24 == (uint *)0x0) { + puVar2 = (uint *)0x0; + } + else { + puVar2 = FUN_00402460(local_24,s_ControlsMapper_0051ec58); + } + puVar2[3] = puVar2[3] + 1; + puVar3 = FUN_004d21d0(local_20,local_1c,0,(int *)puVar2,uVar8,puVar9); + } + local_8 = s_Thrustmaster_0051ec67; + } + else if (*(int *)(iVar1 + 0xc98) == 4) { + local_28 = (undefined4 *)FUN_00402298(0x1bc); + if (local_28 == (undefined4 *)0x0) { + puVar3 = (undefined4 *)0x0; + } + else { + puVar9 = &DAT_0051dcf0; + uVar8 = 0x7dc; + local_2c = (uint *)FUN_00402298(0x10); + if (local_2c == (uint *)0x0) { + puVar2 = (uint *)0x0; + } + else { + puVar2 = FUN_00402460(local_2c,s_ControlsMapper_0051ec74); + } + puVar2[3] = puVar2[3] + 1; + puVar3 = FUN_004d266c(local_28,local_1c,0,(int *)puVar2,uVar8,puVar9); + } + local_8 = &DAT_0051ec83; + } + else { + FUN_004dbb24(&DAT_00524e20,s______Mech_has_no_controls_mappin_0051ec86,(char *)0x0); + FUN_0040385c(s_BTL4Application__MakeViewpointEn_0051ecae, + s_d__tesla_bt_bt_l4_BTL4APP_CPP_0051ecd3,400); + puVar3 = (undefined4 *)0x0; + } + FUN_0049fe40((int)local_1c,puVar3); + (**(code **)(*local_1c + 0x38))(local_1c); + } + if (((local_8 != (char *)0x0) && + (local_30 = (int *)FUN_00407064(*(int *)(DAT_004efc94 + 0x68),piVar5[0x6f],6), + local_30 != (int *)0x0)) && + (local_30 = (int *)FUN_004070dc(*(int *)(param_1 + 0x68),*local_30,local_8), + local_30 != (int *)0x0)) { + iVar4 = local_30[1]; + local_30[1] = local_30[1] + 1; + if (iVar4 == 0) { + FUN_00406cd0((int)local_30); + } + FUN_0047703c(iVar1,(int)piVar5,(int *)local_30[0xf]); + local_30[1] = local_30[1] + -1; + } + if (*(int **)(param_1 + 0x4c) != (int *)0x0) { + FUN_0046ff64(*(int **)(param_1 + 0x4c),&DAT_0051ecf1,piVar5); + } + return piVar5; +} + + + +/* @004d3a2c file=? name=FUN_004d3a2c */ + +void __cdecl FUN_004d3a2c(int param_1) + +{ + int iVar1; + + FUN_004dbb24(&DAT_00524e20,s_BTL4Application__RunMissionMessa_0051ecf6,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + iVar1 = *(int *)(param_1 + 0x50); + *(undefined4 *)(iVar1 + 8) = *(undefined4 *)(iVar1 + 4); + *(uint *)(iVar1 + 4) = *(uint *)(iVar1 + 4) | 0x400000; + FUN_004dbb24(&DAT_00524e20,s_Turning_Plasma_Score_Display_On_0051ed20,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + FUN_0047b788(param_1); + return; +} + + + +/* @004d3a94 file=? name=FUN_004d3a94 */ + +void __cdecl FUN_004d3a94(int param_1) + +{ + int iVar1; + + iVar1 = *(int *)(param_1 + 0x50); + *(undefined4 *)(iVar1 + 8) = *(undefined4 *)(iVar1 + 4); + *(uint *)(iVar1 + 4) = *(uint *)(iVar1 + 4) & 0xffbfffff; + FUN_0047b864(param_1); + FUN_004dbb24(&DAT_00524e20,s_Turning_Plasma_Score_Display_Off_0051ed40,(char *)0x0); + FUN_004d9c38(&DAT_00524e20); + return; +} + + + +/* @004d3b74 file=? name=FUN_004d3b74 */ + +undefined4 * __cdecl FUN_004d3b74(undefined4 *param_1) + +{ + FUN_0047c5d8(param_1); + *param_1 = &PTR_FUN_0051f204; + return param_1; +} + + + +/* @004d3b90 file=? name=FUN_004d3b90 */ + +void __cdecl FUN_004d3b90(undefined4 param_1,uint *param_2) + +{ + FUN_004d3ecc(DAT_004efc94,param_2); + return; +} + + + +/* @004d3bb8 file=? name=FUN_004d3bb8 */ + +void __cdecl FUN_004d3bb8(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0051f204; + FUN_0047c734(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004d3be4 file=? name=FUN_004d3be4 */ + +undefined4 * __cdecl FUN_004d3be4(undefined4 *param_1,undefined4 param_2,undefined4 param_3) + +{ + FUN_004d34c4(param_1,param_2,0x3eb,&DAT_0051ee5c); + *param_1 = &PTR_FUN_0051f1a4; + param_1[6] = param_3; + return param_1; +} + + + +/* @004d3c14 file=? name=FUN_004d3c14 */ + +undefined4 * FUN_004d3c14(void) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00402298(0x28); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_0047bfc4(puVar1); + } + return puVar1; +} + + + +/* @004d3c34 file=? name=FUN_004d3c34 */ + +void __cdecl FUN_004d3c34(int *param_1) + +{ + FUN_0047b468(param_1); + return; +} + + + +/* @004d3c44 file=? name=FUN_004d3c44 */ + +void __cdecl FUN_004d3c44(int param_1) + +{ + undefined4 *puVar1; + + puVar1 = (undefined4 *)FUN_00402298(0x10); + if (puVar1 == (undefined4 *)0x0) { + puVar1 = (undefined4 *)0x0; + } + else { + puVar1 = FUN_004d3b74(puVar1); + } + FUN_0044de1c(*(int *)(param_1 + 100),puVar1); + puVar1 = (undefined4 *)FUN_00402298(0x10); + if (puVar1 != (undefined4 *)0x0) { + FUN_0044dd08(puVar1,0x48); + *puVar1 = &PTR_FUN_004f037c; + } + FUN_0044de1c(*(int *)(param_1 + 100),puVar1); + puVar1 = (undefined4 *)FUN_00402298(0x10); + if (puVar1 != (undefined4 *)0x0) { + FUN_0044dd08(puVar1,0x48); + *puVar1 = &PTR_FUN_004f031c; + } + FUN_0044de1c(*(int *)(param_1 + 100),puVar1); + puVar1 = (undefined4 *)FUN_00402298(0x10); + if (puVar1 != (undefined4 *)0x0) { + FUN_0044dd08(puVar1,0x48); + *puVar1 = &PTR_FUN_004f0304; + } + FUN_0044de1c(*(int *)(param_1 + 100),puVar1); + puVar1 = (undefined4 *)FUN_00402298(0x10); + if (puVar1 != (undefined4 *)0x0) { + FUN_0044dd08(puVar1,0x48); + *puVar1 = &PTR_FUN_004f0364; + } + FUN_0044de1c(*(int *)(param_1 + 100),puVar1); + return; +} + + + +/* @004d3d40 file=? name=FUN_004d3d40 */ + +undefined4 __cdecl FUN_004d3d40(int param_1,int param_2) + +{ + undefined4 uVar1; + int *piVar2; + + if ((*(int *)(param_1 + 0x70) == 0) || (*(int *)(param_1 + 0x88) == 1)) { + if ((*(int *)(param_1 + 0x70) == 0) || (DAT_004efc98 != 0)) { + uVar1 = 0; + } + else { + uVar1 = 1; + } + } + else { + FUN_004dcd94(); + if (DAT_004fd550 == 2) { + (**(code **)(**(int **)(param_1 + 0x3c) + 0x18))(*(int **)(param_1 + 0x3c)); + } + FUN_00435794(*(int *)(param_1 + 0x34)); + FUN_004363ec(*(int *)(param_1 + 0x38),param_2); + FUN_00434a08(); + FUN_0043649c(*(int *)(param_1 + 0x38)); + FUN_00436440(*(int *)(param_1 + 0x38),param_2); + (**(code **)(**(int **)(param_1 + 0x40) + 0x24))(*(int **)(param_1 + 0x40)); + if (*(int *)(param_1 + 0x88) == 5) { + piVar2 = (int *)FUN_00414b60(); + *(float *)(param_1 + 0x58) = + *(float *)(*(int *)(param_1 + 200) + 0xe0) - + (float)(*piVar2 - *(int *)(param_1 + 0x5c)) / DAT_0052140c; + } + if ((*(int *)(param_1 + 0x70) == 0) || (DAT_004efc98 != 0)) { + uVar1 = 0; + } + else { + uVar1 = 1; + } + } + return uVar1; +} + + + +/* @004d3ea0 file=? name=FUN_004d3ea0 */ + +void __cdecl FUN_004d3ea0(int *param_1,byte param_2) + +{ + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0051f1a4; + FUN_004d350c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004d3ecc file=? name=FUN_004d3ecc */ + +void __cdecl FUN_004d3ecc(int param_1,uint *param_2) + +{ + int *piVar1; + + piVar1 = (int *)FUN_0041d7f0(*(int *)(param_1 + 0x20),*param_2); + (**(code **)(*piVar1 + 0x14))(piVar1,param_2,param_2 + 4); + return; +} + + + +/* @004d3ef8 file=? name=FUN_004d3ef8 */ + +void __cdecl FUN_004d3ef8(int param_1) + +{ + int *piVar1; + int iVar2; + int *piVar3; + + if (*(int *)(param_1 + 0x88) == 3) { + piVar1 = *(int **)(param_1 + 0x18); + iVar2 = (**(code **)*piVar1)(piVar1); + piVar3 = (int *)FUN_00414b60(); + *(int *)(param_1 + 0xd4) = *piVar3 - *(int *)(iVar2 + 0xc); + FUN_0044f850(piVar1); + } + FUN_004d3a2c(param_1); + return; +} + + + +/* @004d3f44 file=? name=FUN_004d3f44 */ + +void __cdecl FUN_004d3f44(int param_1) + +{ + char *pcVar1; + int *piVar2; + int iVar3; + char *pcVar4; + int iVar5; + int iVar6; + char *pcVar7; + bool bVar8; + uint local_30 [5]; + int local_1c [3]; + int local_10; + char *local_c; + int local_8; + + iVar3 = FUN_0044e13c(param_1); + if (*(int **)(param_1 + 0x18) != (int *)0x0) { + FUN_0044fac0(iVar3,*(int **)(param_1 + 0x18)); + *(undefined4 *)(param_1 + 0x18) = 0; + local_8 = FUN_00403ad0(*(int *)(DAT_004efc94 + 0x24) + 0x18,s_DropZones_0051f19a); + local_c = &DAT_0051ee67; + iVar3 = 0; + while( true ) { + iVar6 = FUN_0042efe4(iVar3); + if (iVar6 == 0) break; + *local_c = (char)iVar3 + '1'; + FUN_00421414(local_1c,local_8 + 0x10); +LAB_004d3fea: + do { + iVar5 = (**(code **)(local_1c[0] + 0x28))(local_1c); + if (iVar5 == 0) break; + pcVar4 = (char *)(iVar5 + 0x1c8); + pcVar7 = &DAT_0051ee64; + do { + if (*pcVar4 != *pcVar7) goto LAB_004d3fea; + bVar8 = true; + if (*pcVar4 == '\0') break; + pcVar1 = pcVar4 + 1; + if (*pcVar1 != pcVar7[1]) goto LAB_004d3fea; + pcVar4 = pcVar4 + 2; + pcVar7 = pcVar7 + 2; + bVar8 = *pcVar1 == '\0'; + } while (!bVar8); + } while (!bVar8); + if (iVar5 == 0) { + FUN_00421452(local_1c,2); + } + else { + piVar2 = *(int **)(iVar6 + 0x1fc); + if (piVar2[1] == 0xbb9) { + FUN_0049fb74((int)piVar2,(undefined4 *)(iVar5 + 0x100),0); + piVar2[7] = (int)PTR_FUN_0051ee69; + piVar2[8] = DAT_0051ee6d; + piVar2[9] = DAT_0051ee71; + FUN_00419cb8((int)piVar2); + local_10 = *(int *)(DAT_004efc94 + 0x38); + FUN_00436668(local_30,(int)piVar2); + FUN_004364e4(local_10,piVar2,local_30); + } + FUN_00421452(local_1c,2); + } + iVar3 = iVar3 + 1; + } + iVar3 = *(int *)(param_1 + 0x48); + FUN_00460840(iVar3); + FUN_0045a7a8(iVar3,4); + } + FUN_004d3a94(param_1); + return; +} + + + +/* @004d40d8 file=? name=FUN_004d40d8 */ + +void __cdecl FUN_004d40d8(int param_1) + +{ + FUN_0041a1a4(**(int **)(param_1 + 0xc),0x51ee2c); + return; +} + + + +/* @004d4179 file=? name=FUN_004d4179 */ + +undefined2 FUN_004d4179(void) + +{ + code *pcVar1; + undefined2 uVar2; + + pcVar1 = (code *)swi(0x11); + uVar2 = (*pcVar1)(); + return uVar2; +} + + + +/* @004d4183 file=? name=FUN_004d4183 */ + +undefined2 FUN_004d4183(void) + +{ + code *pcVar1; + undefined2 uVar2; + + pcVar1 = (code *)swi(0x12); + uVar2 = (*pcVar1)(); + return uVar2; +} + + + +/* @004d418d file=? name=FUN_004d418d */ + +undefined4 FUN_004d418d(void) + +{ + code *pcVar1; + undefined2 extraout_CX; + undefined2 extraout_DX; + + pcVar1 = (code *)swi(0x1a); + (*pcVar1)(); + return CONCAT22(extraout_CX,extraout_DX); +} + + + +/* @004d45b0 file=? name=FUN_004d45b0 */ + +undefined4 FUN_004d45b0(void) + +{ + undefined4 in_EAX; + + LOCK(); + UNLOCK(); + return in_EAX; +} + + + +/* @004d45c6 file=? name=FUN_004d45c6 */ + +undefined2 __cdecl FUN_004d45c6(undefined2 param_1) + +{ + undefined2 uVar1; + + uVar1 = in(param_1); + return uVar1; +} + + + +/* @004d45d3 file=? name=FUN_004d45d3 */ + +undefined1 __cdecl FUN_004d45d3(undefined2 param_1) + +{ + undefined1 uVar1; + + uVar1 = in(param_1); + return uVar1; +} + + + +/* @004d45df file=? name=FUN_004d45df */ + +undefined2 __cdecl FUN_004d45df(undefined2 param_1) + +{ + undefined2 uVar1; + + uVar1 = in(param_1); + return uVar1; +} + + + +/* @004d45ec file=? name=FUN_004d45ec */ + +undefined1 __cdecl FUN_004d45ec(undefined2 param_1) + +{ + undefined1 uVar1; + + uVar1 = in(param_1); + return uVar1; +} + + + +/* @004d461f file=? name=FUN_004d461f */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004d461f(undefined4 param_1,int param_2,undefined4 *param_3,undefined2 *param_4) + +{ + undefined4 uVar1; + undefined4 uVar2; + uint uVar3; + undefined4 uVar4; + undefined4 extraout_ECX; + undefined4 extraout_EDX; + undefined2 uVar5; + undefined2 uVar6; + undefined2 uVar7; + undefined2 uVar8; + byte bVar9; + byte in_PF; + byte in_AF; + byte in_ZF; + byte in_SF; + byte in_TF; + byte in_IF; + byte in_OF; + byte in_NT; + byte in_AC; + byte in_VIF; + byte in_VIP; + byte in_ID; + + uVar5 = *param_4; + uVar7 = param_4[4]; + uVar8 = param_4[5]; + uVar6 = param_4[3]; + uVar1 = *(undefined4 *)(param_2 + 4); + uVar2 = *(undefined4 *)(param_2 + 0x14); + bVar9 = 0; + uVar4 = FUN_004d45b0(); + uVar3 = (uint)(bVar9 & 1); + *param_3 = uVar4; + param_3[1] = uVar1; + param_3[2] = extraout_ECX; + param_3[3] = extraout_EDX; + param_3[4] = param_3; + param_3[5] = uVar2; + param_3[7] = (uint)(in_NT & 1) * 0x4000 | (uint)(in_OF & 1) * 0x800 | (uint)(in_IF & 1) * 0x200 | + (uint)(in_TF & 1) * 0x100 | (uint)(in_SF & 1) * 0x80 | (uint)(in_ZF & 1) * 0x40 | + (uint)(in_AF & 1) * 0x10 | (uint)(in_PF & 1) * 4 | uVar3 | + (uint)(in_ID & 1) * 0x200000 | (uint)(in_VIP & 1) * 0x100000 | + (uint)(in_VIF & 1) * 0x80000 | (uint)(in_AC & 1) * 0x40000; + param_3[6] = uVar3; + *param_4 = uVar5; + param_4[3] = uVar6; + param_4[4] = uVar7; + param_4[5] = uVar8; + if (uVar3 == 0) { + DAT_00520bcc = uVar4; + _DAT_00524dd0 = uVar4; + } + return; +} + + + +/* @004d46a5 file=? name=FUN_004d46a5 */ + +void FUN_004d46a5(void) + +{ + if (DAT_00525224 != 2) { + FUN_004ded48(s_This_DPMI32_module_cannot_be_run_0051f224); + } + return; +} + + + +/* @004d46c0 file=? name=FUN_004d46c0 */ + +undefined2 __cdecl FUN_004d46c0(undefined2 param_1,undefined2 param_2) + +{ + out(param_1,param_2); + return param_2; +} + + + +/* @004d46cf file=? name=FUN_004d46cf */ + +undefined1 __cdecl FUN_004d46cf(undefined2 param_1,undefined1 param_2) + +{ + out(param_1,param_2); + return param_2; +} + + + +/* @004d46dc file=? name=FUN_004d46dc */ + +undefined6 __cdecl FUN_004d46dc(undefined2 param_1,ushort param_2) + +{ + out(param_1,param_2); + return CONCAT24(param_1,(uint)param_2); +} + + + +/* @004d46ed file=? name=FUN_004d46ed */ + +undefined6 __cdecl FUN_004d46ed(undefined2 param_1,byte param_2) + +{ + out(param_1,param_2); + return CONCAT24(param_1,(uint)param_2); +} + + + +/* @004d46fc file=? name=FUN_004d46fc */ + +void __cdecl FUN_004d46fc(undefined2 *param_1) + +{ + undefined2 in_ES; + undefined2 in_CS; + undefined2 in_SS; + undefined2 in_DS; + undefined2 in_FS; + undefined2 in_GS; + + *param_1 = in_ES; + param_1[1] = in_CS; + param_1[2] = in_SS; + param_1[3] = in_DS; + param_1[4] = in_FS; + param_1[5] = in_GS; + return; +} + + + +/* @004d4718 file=? name=FUN_004d4718 */ + +uint FUN_004d4718(void) + +{ + HANDLE hConsoleHandle; + BOOL BVar1; + uint uVar2; + short *psVar3; + DWORD DStack_28; + uint local_24; + _INPUT_RECORD local_20; + + uVar2 = DAT_0051f5d8; + if (DAT_0051f5dc == '\0') { + if (DAT_0051f5d8 == 0xffffffff) { + hConsoleHandle = GetStdHandle(0xfffffff6); + BVar1 = GetConsoleMode(hConsoleHandle,&local_24); + if (BVar1 == 1) { + if (((local_24 & 7) == 0) || + (BVar1 = SetConsoleMode(hConsoleHandle,local_24 & 0xfffffff8), BVar1 == 1)) { + do { + do { + do { + BVar1 = ReadConsoleInputA(hConsoleHandle,&local_20,1,&DStack_28); + if (BVar1 != 1) { + uVar2 = 0xffffffff; + goto LAB_004d483d; + } + } while (local_20.Event.KeyEvent.bKeyDown == 0); + uVar2 = (uint)local_20.Event.KeyEvent.wVirtualKeyCode; + for (psVar3 = &DAT_0051f254; (uVar2 != (int)*psVar3 && (*psVar3 != -1)); + psVar3 = psVar3 + 5) { + } + } while (*psVar3 == -1); + if ((local_20.Event.KeyEvent.dwControlKeyState & 3) == 0) { + if ((local_20.Event.KeyEvent.dwControlKeyState & 0xc) == 0) { + if ((local_20.Event.KeyEvent.dwControlKeyState & 0x10) == 0) { + if ((uVar2 < 0x41) || (0x5a < uVar2)) { + uVar2 = (uint)psVar3[1]; + } + else { + uVar2 = (uint)(char)local_20.Event.MouseEvent.dwControlKeyState._2_1_; + } + } + else { + uVar2 = (uint)psVar3[2]; + } + } + else { + uVar2 = (uint)psVar3[3]; + } + } + else { + uVar2 = (uint)psVar3[4]; + } + } while (uVar2 == 0xffffffff); + if ((uVar2 & 0x100) != 0) { + DAT_0051f5d8 = uVar2 & 0xff; + uVar2 = 0; + } +LAB_004d483d: + if (((local_24 & 7) != 0) && (BVar1 = SetConsoleMode(hConsoleHandle,local_24), BVar1 != 1) + ) { + uVar2 = 0xffffffff; + } + } + else { + uVar2 = 0xffffffff; + } + } + else { + uVar2 = 0xffffffff; + } + } + else { + DAT_0051f5d8 = 0xffffffff; + } + } + else { + DAT_0051f5dc = '\0'; + uVar2 = (uint)DAT_0051f5dd; + } + return uVar2; +} + + + +/* @004d4860 file=? name=FUN_004d4860 */ + +uint __cdecl FUN_004d4860(byte param_1) + +{ + if (DAT_0051f5dc != '\0') { + return 0xffffffff; + } + DAT_0051f5dc = 1; + DAT_0051f5dd = param_1; + return (uint)param_1; +} + + + +/* @004d4888 file=? name=FUN_004d4888 */ + +undefined4 FUN_004d4888(void) + +{ + undefined4 uVar1; + HANDLE hConsoleInput; + BOOL BVar2; + DWORD DStack_24; + DWORD local_20; + _INPUT_RECORD local_1c; + + if (DAT_0051f5dc == '\0') { + hConsoleInput = GetStdHandle(0xfffffff6); + do { + BVar2 = GetNumberOfConsoleInputEvents(hConsoleInput,&local_20); + if (((BVar2 != 1) || (local_20 == 0)) || + (BVar2 = PeekConsoleInputA(hConsoleInput,&local_1c,1,&DStack_24), BVar2 != 1)) break; + if ((((byte)local_1c.EventType & 1) != 0) && (local_1c.Event.KeyEvent.bKeyDown != 0)) { + return 1; + } + BVar2 = ReadConsoleInputA(hConsoleInput,&local_1c,1,&DStack_24); + } while (BVar2 == 1); + uVar1 = 0; + } + else { + uVar1 = 1; + } + return uVar1; +} + + + +/* @004d48f8 file=? name=FUN_004d48f8 */ + +char * __cdecl FUN_004d48f8(char *param_1,char param_2,int param_3) + +{ + char *pcVar1; + undefined1 in_ZF; + + if (param_3 != 0) { + do { + pcVar1 = param_1; + if (param_3 == 0) break; + param_3 = param_3 + -1; + pcVar1 = param_1 + 1; + in_ZF = param_2 == *param_1; + param_1 = pcVar1; + } while (!(bool)in_ZF); + if ((bool)in_ZF) { + return pcVar1 + -1; + } + } + return (char *)0x0; +} + + + +/* @004d4918 file=? name=FUN_004d4918 */ + +undefined4 * __cdecl FUN_004d4918(undefined4 *param_1,undefined4 *param_2,uint param_3) + +{ + uint uVar1; + undefined4 *puVar2; + + puVar2 = param_1; + for (uVar1 = param_3 >> 2; uVar1 != 0; uVar1 = uVar1 - 1) { + *puVar2 = *param_2; + param_2 = param_2 + 1; + puVar2 = puVar2 + 1; + } + for (uVar1 = param_3 & 3; uVar1 != 0; uVar1 = uVar1 - 1) { + *(undefined1 *)puVar2 = *(undefined1 *)param_2; + param_2 = (undefined4 *)((int)param_2 + 1); + puVar2 = (undefined4 *)((int)puVar2 + 1); + } + return param_1; +} + + + +/* @004d493c file=? name=FUN_004d493c */ + +undefined4 * __cdecl FUN_004d493c(undefined4 *param_1,undefined4 *param_2,uint param_3) + +{ + uint uVar1; + undefined1 *puVar2; + undefined4 *puVar3; + undefined1 *puVar4; + undefined4 *puVar5; + + if (param_1 < param_2) { + puVar3 = param_1; + for (uVar1 = param_3 >> 2; uVar1 != 0; uVar1 = uVar1 - 1) { + *puVar3 = *param_2; + param_2 = param_2 + 1; + puVar3 = puVar3 + 1; + } + for (uVar1 = param_3 & 3; uVar1 != 0; uVar1 = uVar1 - 1) { + *(undefined1 *)puVar3 = *(undefined1 *)param_2; + param_2 = (undefined4 *)((int)param_2 + 1); + puVar3 = (undefined4 *)((int)puVar3 + 1); + } + } + else if (param_1 != param_2) { + puVar2 = (undefined1 *)((int)param_2 + (param_3 - 1)); + puVar4 = (undefined1 *)((int)param_1 + (param_3 - 1)); + for (uVar1 = param_3 & 3; uVar1 != 0; uVar1 = uVar1 - 1) { + *puVar4 = *puVar2; + puVar2 = puVar2 + -1; + puVar4 = puVar4 + -1; + } + puVar3 = (undefined4 *)(puVar2 + -3); + puVar5 = (undefined4 *)(puVar4 + -3); + for (uVar1 = param_3 >> 2; uVar1 != 0; uVar1 = uVar1 - 1) { + *puVar5 = *puVar3; + puVar3 = puVar3 + -1; + puVar5 = puVar5 + -1; + } + } + return param_1; +} + + + +/* @004d4988 file=? name=FUN_004d4988 */ + +undefined4 * __cdecl FUN_004d4988(undefined4 *param_1,undefined1 param_2,uint param_3) + +{ + uint uVar1; + undefined4 *puVar2; + + puVar2 = param_1; + for (uVar1 = param_3 >> 2; uVar1 != 0; uVar1 = uVar1 - 1) { + *puVar2 = CONCAT22(CONCAT11(param_2,param_2),CONCAT11(param_2,param_2)); + puVar2 = puVar2 + 1; + } + for (uVar1 = param_3 & 3; uVar1 != 0; uVar1 = uVar1 - 1) { + *(undefined1 *)puVar2 = param_2; + puVar2 = (undefined4 *)((int)puVar2 + 1); + } + return param_1; +} + + + +/* @004d49b8 file=? name=FUN_004d49b8 */ + +char * __cdecl FUN_004d49b8(char *param_1,char *param_2) + +{ + char cVar1; + int iVar2; + uint uVar3; + uint uVar4; + char *pcVar5; + char *pcVar6; + + iVar2 = -1; + pcVar5 = param_1; + do { + pcVar6 = pcVar5; + if (iVar2 == 0) break; + iVar2 = iVar2 + -1; + pcVar6 = pcVar5 + 1; + cVar1 = *pcVar5; + pcVar5 = pcVar6; + } while (cVar1 != '\0'); + uVar3 = 0xffffffff; + do { + pcVar5 = param_2; + if (uVar3 == 0) break; + uVar3 = uVar3 - 1; + pcVar5 = param_2 + 1; + cVar1 = *param_2; + param_2 = pcVar5; + } while (cVar1 != '\0'); + uVar3 = ~uVar3; + pcVar5 = pcVar5 + -uVar3; + pcVar6 = pcVar6 + -1; + for (uVar4 = uVar3 >> 2; uVar4 != 0; uVar4 = uVar4 - 1) { + *(undefined4 *)pcVar6 = *(undefined4 *)pcVar5; + pcVar5 = pcVar5 + 4; + pcVar6 = pcVar6 + 4; + } + for (uVar3 = uVar3 & 3; uVar3 != 0; uVar3 = uVar3 - 1) { + *pcVar6 = *pcVar5; + pcVar5 = pcVar5 + 1; + pcVar6 = pcVar6 + 1; + } + return param_1; +} + + + +/* @004d49f4 file=? name=FUN_004d49f4 */ + +char * __cdecl FUN_004d49f4(char *param_1,char param_2) + +{ + char *pcVar1; + uint uVar2; + bool bVar3; + + uVar2 = 0xffffffff; + bVar3 = true; + pcVar1 = param_1; + do { + if (uVar2 == 0) break; + uVar2 = uVar2 - 1; + bVar3 = *pcVar1 == '\0'; + pcVar1 = pcVar1 + 1; + } while (!bVar3); + uVar2 = ~uVar2; + do { + pcVar1 = param_1; + if (uVar2 == 0) break; + uVar2 = uVar2 - 1; + pcVar1 = param_1 + 1; + bVar3 = param_2 == *param_1; + param_1 = pcVar1; + } while (!bVar3); + if (bVar3) { + pcVar1 = pcVar1 + -1; + } + else { + pcVar1 = (char *)0x0; + } + return pcVar1; +} + + + +/* @004d4a1c file=? name=FUN_004d4a1c */ + +int __cdecl FUN_004d4a1c(char *param_1,char *param_2) + +{ + char cVar1; + char cVar2; + uint uVar3; + char *pcVar4; + char *pcVar5; + + uVar3 = 0xffffffff; + pcVar4 = param_2; + do { + if (uVar3 == 0) break; + uVar3 = uVar3 - 1; + cVar1 = *pcVar4; + pcVar4 = pcVar4 + 1; + } while (cVar1 != '\0'); + uVar3 = ~uVar3; + do { + pcVar4 = param_1; + pcVar5 = param_2; + if (uVar3 == 0) break; + uVar3 = uVar3 - 1; + pcVar5 = param_2 + 1; + pcVar4 = param_1 + 1; + cVar2 = *param_2; + cVar1 = *param_1; + param_1 = pcVar4; + param_2 = pcVar5; + } while (cVar1 == cVar2); + return (uint)(byte)pcVar4[-1] - (uint)(byte)pcVar5[-1]; +} + + + +/* @004d4a48 file=? name=FUN_004d4a48 */ + +char * __cdecl FUN_004d4a48(char *param_1,char *param_2) + +{ + char cVar1; + uint uVar2; + uint uVar3; + char *pcVar4; + + uVar2 = 0xffffffff; + pcVar4 = param_2; + do { + if (uVar2 == 0) break; + uVar2 = uVar2 - 1; + cVar1 = *pcVar4; + pcVar4 = pcVar4 + 1; + } while (cVar1 != '\0'); + pcVar4 = param_1; + for (uVar3 = ~uVar2 >> 2; uVar3 != 0; uVar3 = uVar3 - 1) { + *(undefined4 *)pcVar4 = *(undefined4 *)param_2; + param_2 = param_2 + 4; + pcVar4 = pcVar4 + 4; + } + for (uVar2 = ~uVar2 & 3; uVar2 != 0; uVar2 = uVar2 - 1) { + *pcVar4 = *param_2; + param_2 = param_2 + 1; + pcVar4 = pcVar4 + 1; + } + return param_1; +} + + + +/* @004d4a78 file=? name=FUN_004d4a78 */ + +int __cdecl FUN_004d4a78(char *param_1) + +{ + char cVar1; + uint uVar2; + + uVar2 = 0xffffffff; + do { + if (uVar2 == 0) break; + uVar2 = uVar2 - 1; + cVar1 = *param_1; + param_1 = param_1 + 1; + } while (cVar1 != '\0'); + return ~uVar2 - 1; +} + + + +/* @004d4a94 file=? name=FUN_004d4a94 */ + +char * __cdecl FUN_004d4a94(char *param_1,char *param_2,uint param_3) + +{ + char cVar1; + int iVar2; + uint uVar3; + uint uVar4; + uint uVar5; + char *pcVar6; + char *pcVar7; + + iVar2 = -1; + pcVar6 = param_1; + do { + pcVar7 = pcVar6; + if (iVar2 == 0) break; + iVar2 = iVar2 + -1; + pcVar7 = pcVar6 + 1; + cVar1 = *pcVar6; + pcVar6 = pcVar7; + } while (cVar1 != '\0'); + uVar3 = 0xffffffff; + do { + pcVar6 = param_2; + if (uVar3 == 0) break; + uVar3 = uVar3 - 1; + pcVar6 = param_2 + 1; + cVar1 = *param_2; + param_2 = pcVar6; + } while (cVar1 != '\0'); + uVar4 = ~uVar3 - 1; + if (param_3 < uVar4) { + uVar4 = param_3; + } + pcVar6 = pcVar6 + -~uVar3; + pcVar7 = pcVar7 + -1; + for (uVar5 = uVar4 >> 2; uVar5 != 0; uVar5 = uVar5 - 1) { + *(undefined4 *)pcVar7 = *(undefined4 *)pcVar6; + pcVar6 = pcVar6 + 4; + pcVar7 = pcVar7 + 4; + } + for (uVar4 = uVar4 & 3; uVar4 != 0; uVar4 = uVar4 - 1) { + *pcVar7 = *pcVar6; + pcVar6 = pcVar6 + 1; + pcVar7 = pcVar7 + 1; + } + *pcVar7 = '\0'; + return param_1; +} + + + +/* @004d4ae0 file=? name=FUN_004d4ae0 */ + +int __cdecl FUN_004d4ae0(char *param_1,char *param_2,int param_3) + +{ + char cVar1; + char cVar2; + int iVar3; + int iVar4; + char *pcVar5; + char *pcVar6; + + iVar3 = 0; + iVar4 = param_3; + pcVar5 = param_2; + if (param_3 != 0) { + do { + if (iVar4 == 0) break; + iVar4 = iVar4 + -1; + cVar1 = *pcVar5; + pcVar5 = pcVar5 + 1; + } while (cVar1 != '\0'); + iVar4 = param_3 - iVar4; + do { + pcVar5 = param_1; + pcVar6 = param_2; + if (iVar4 == 0) break; + iVar4 = iVar4 + -1; + pcVar6 = param_2 + 1; + pcVar5 = param_1 + 1; + cVar2 = *param_2; + cVar1 = *param_1; + param_1 = pcVar5; + param_2 = pcVar6; + } while (cVar1 == cVar2); + iVar3 = (uint)(byte)pcVar5[-1] - (uint)(byte)pcVar6[-1]; + } + return iVar3; +} + + + +/* @004d4b14 file=? name=FUN_004d4b14 */ + +int __cdecl FUN_004d4b14(byte *param_1,byte *param_2,int param_3) + +{ + if (param_3 == 0) { + return 0; + } + while( true ) { + if (param_3 == 0) { + return (uint)param_1[-1] - (uint)param_2[-1]; + } + if (*param_1 != *param_2) break; + param_1 = param_1 + 1; + param_2 = param_2 + 1; + param_3 = param_3 + -1; + } + return (uint)*param_1 - (uint)*param_2; +} + + + +/* @004d4b58 file=? name=FUN_004d4b58 */ + +int __cdecl FUN_004d4b58(char *param_1,char *param_2) + +{ + uint uVar1; + uint uVar2; + char cVar3; + + while( true ) { + uVar1 = FUN_004dc8c4((int)*param_1); + uVar2 = FUN_004dc8c4((int)*param_2); + cVar3 = (char)uVar1; + if ((cVar3 != (char)uVar2) || (cVar3 == '\0')) break; + param_1 = param_1 + 1; + param_2 = param_2 + 1; + } + return (int)cVar3 - (int)(char)uVar2; +} + + + +/* @004d4b9c file=? name=FUN_004d4b9c */ + +undefined4 * __cdecl FUN_004d4b9c(undefined4 *param_1,char *param_2,uint param_3) + +{ + uint uVar1; + + uVar1 = FUN_004d4a78(param_2); + if (param_3 < uVar1) { + FUN_004d4918(param_1,(undefined4 *)param_2,param_3); + } + else { + FUN_004d4918(param_1,(undefined4 *)param_2,uVar1); + FUN_004d4988((undefined4 *)(uVar1 + (int)param_1),0,param_3 - uVar1); + } + return param_1; +} + + + +/* @004d4bec file=? name=FUN_004d4bec */ + +int __cdecl FUN_004d4bec(char *param_1,char *param_2,int param_3) + +{ + uint uVar1; + uint uVar2; + int iVar3; + + while( true ) { + uVar1 = FUN_004dc8c4((int)*param_1); + uVar2 = FUN_004dc8c4((int)*param_2); + if (((uVar1 != uVar2) || (*param_1 == '\0')) || (param_3 == 0)) break; + param_3 = param_3 + -1; + param_1 = param_1 + 1; + param_2 = param_2 + 1; + } + if (param_3 == 0) { + iVar3 = 0; + } + else { + uVar1 = FUN_004dc8c4((int)*param_1); + uVar2 = FUN_004dc8c4((int)*param_2); + iVar3 = uVar1 - uVar2; + } + return iVar3; +} + + + +/* @004d4c4c file=? name=FUN_004d4c4c */ + +char * __cdecl FUN_004d4c4c(char *param_1,char param_2) + +{ + int iVar1; + char *pcVar2; + + iVar1 = FUN_004d4a78(param_1); + pcVar2 = param_1 + iVar1; + while( true ) { + if (param_2 == *pcVar2) { + return pcVar2; + } + if (param_1 == pcVar2) break; + pcVar2 = pcVar2 + -1; + } + return (char *)0x0; +} + + + +/* @004d4c78 file=? name=FUN_004d4c78 */ + +char * __cdecl FUN_004d4c78(char *param_1,char *param_2) + +{ + int iVar1; + int iVar2; + int iVar3; + int iVar4; + char *pcVar5; + int iVar6; + char *local_10; + + iVar1 = FUN_004d4a78(param_1); + iVar2 = FUN_004d4a78(param_2); + if (iVar2 != 0) { + if (iVar1 == 0) { + param_1 = (char *)0x0; + } + else { + iVar3 = 0; + while( true ) { + for (pcVar5 = param_1 + iVar3; (iVar3 < iVar1 && (*pcVar5 != *param_2)); pcVar5 = pcVar5 + 1 + ) { + iVar3 = iVar3 + 1; + } + if (iVar1 == iVar3) { + return (char *)0x0; + } + iVar6 = 0; + local_10 = param_2; + iVar4 = iVar3; + for (pcVar5 = param_1 + iVar3; + ((iVar4 < iVar1 && (iVar6 < iVar2)) && (*pcVar5 == *local_10)); pcVar5 = pcVar5 + 1) { + iVar4 = iVar4 + 1; + iVar6 = iVar6 + 1; + local_10 = local_10 + 1; + } + if (iVar6 == iVar2) { + return param_1 + iVar3; + } + if (iVar1 == iVar4) break; + iVar3 = iVar3 + 1; + } + param_1 = (char *)0x0; + } + } + return param_1; +} + + + +/* @004d4d1c file=? name=FUN_004d4d1c */ + +char * __cdecl FUN_004d4d1c(char *param_1,char *param_2) + +{ + char *pcVar1; + char *pcVar2; + + if (param_1 == (char *)0x0) { + param_1 = DAT_00524c54; + } + for (; pcVar1 = param_2, *param_1 != '\0'; param_1 = param_1 + 1) { + for (; (*pcVar1 != '\0' && (*pcVar1 != *param_1)); pcVar1 = pcVar1 + 1) { + } + if (*pcVar1 == '\0') break; + } + DAT_00524c54 = param_1; + if (*param_1 == '\0') { + pcVar2 = (char *)0x0; + } + else { + for (; pcVar1 = param_2, pcVar2 = param_1, *DAT_00524c54 != '\0'; + DAT_00524c54 = DAT_00524c54 + 1) { + for (; *pcVar1 != '\0'; pcVar1 = pcVar1 + 1) { + if (*pcVar1 == *DAT_00524c54) { + *DAT_00524c54 = '\0'; + DAT_00524c54 = DAT_00524c54 + 1; + return param_1; + } + } + } + } + return pcVar2; +} + + + +/* @004d4d84 file=? name=FUN_004d4d84 */ + +int __cdecl FUN_004d4d84(undefined4 *param_1,char *param_2) + +{ + int iVar1; + + iVar1 = FUN_004d4a78(param_2); + FUN_004d4918(param_1,(undefined4 *)param_2,iVar1 + 1); + return iVar1 + (int)param_1; +} + + + +/* @004d4db0 file=? name=FUN_004d4db0 */ + +void FUN_004d4db0(void) + +{ + code *UNRECOVERED_JUMPTABLE; + + /* WARNING: Could not recover jumptable at 0x004d4db4. Too many branches */ + /* WARNING: Treating indirect jump as call */ + (*UNRECOVERED_JUMPTABLE)(); + return; +} + + + +/* @004d4db7 file=? name=FUN_004d4db7 */ + +char * __cdecl FUN_004d4db7(int param_1) + +{ + if (param_1 == 0) { + return s__0051f6d8; + } + return (char *)(param_1 + (uint)*(ushort *)(param_1 + 6)); +} + + + +/* @004d4dd0 file=? name=FUN_004d4dd0 */ + +undefined4 __cdecl FUN_004d4dd0(int *param_1,int *param_2) + +{ + char cVar1; + char cVar2; + char *pcVar3; + char *pcVar4; + + if (param_2 == param_1) { + return 1; + } + if (((short)param_1[1] == (short)param_2[1]) && (*param_1 == *param_2)) { + if (((*(ushort *)(param_1 + 1) | *(ushort *)(param_2 + 1)) & 0x80) != 0) { + return 0; + } + pcVar3 = (char *)((int)param_1 + (uint)*(ushort *)((int)param_1 + 6)); + pcVar4 = (char *)((int)param_2 + (uint)*(ushort *)((int)param_2 + 6)); + do { + cVar1 = *pcVar3; + pcVar3 = pcVar3 + 1; + cVar2 = *pcVar4; + pcVar4 = pcVar4 + 1; + if (cVar2 != cVar1) { + return 0; + } + } while (cVar1 != '\0'); + return 1; + } + return 0; +} + + + +/* @004d4e36 file=? name=FUN_004d4e36 */ + +undefined4 __cdecl FUN_004d4e36(int param_1,int *param_2,undefined4 param_3,int param_4) + +{ + int *piVar1; + int iVar2; + int iVar3; + undefined4 *puVar4; + + puVar4 = (undefined4 *)((uint)*(ushort *)(param_1 + 0x12) + param_1); + do { + piVar1 = (int *)*puVar4; + if (piVar1 == (int *)0x0) { + puVar4 = (undefined4 *)((uint)*(ushort *)(param_1 + 0x10) + param_1); + while( true ) { + piVar1 = (int *)*puVar4; + if (piVar1 == (int *)0x0) { + return 0; + } + if ((param_4 == 0) || ((puVar4[2] & 3) != 3)) { + iVar2 = 0; + } + else { + iVar2 = 1; + } + iVar3 = FUN_004d4dd0(param_2,piVar1); + if ((iVar3 != 0) && (iVar2 != 0)) break; + if (((*(byte *)(piVar1 + 3) & 4) != 0) && + (iVar2 = FUN_004d4e36((int)piVar1,param_2,param_3,iVar2), iVar2 != 0)) { + return 1; + } + puVar4 = puVar4 + 3; + } + return 1; + } + if ((*(byte *)(puVar4 + 2) & 8) == 0) { + if ((param_4 == 0) || ((puVar4[2] & 3) != 3)) { + iVar2 = 0; + } + else { + iVar2 = 1; + } + iVar3 = FUN_004d4dd0(param_2,piVar1); + if ((iVar3 != 0) && (iVar2 != 0)) { + return 1; + } + if (((*(byte *)(piVar1 + 3) & 4) != 0) && + (iVar2 = FUN_004d4e36((int)piVar1,param_2,param_3,iVar2), iVar2 != 0)) { + return 1; + } + } + puVar4 = puVar4 + 3; + } while( true ); +} + + + +/* @004d4f30 file=? name=FUN_004d4f30 */ + +undefined4 __cdecl FUN_004d4f30(int *param_1,int *param_2,int param_3,undefined4 param_4) + +{ + uint uVar1; + ushort uVar2; + ushort uVar3; + int iVar4; + undefined4 uVar5; + uint uVar6; + + while( true ) { + while( true ) { + if (param_2 == param_1) { + return 1; + } + uVar2 = *(ushort *)(param_1 + 1); + uVar3 = *(ushort *)(param_2 + 1); + if ((uVar3 & uVar2 & 0x10) == 0) break; + uVar6 = uVar2 & 0x300; + uVar1 = uVar3 & 0x300; + if (uVar6 != uVar1) { + if ((param_3 != 0) || (uVar6 == uVar1)) { + return 0; + } + if ((byte)(~(byte)(uVar1 >> 8) & (byte)(uVar6 >> 8)) != 0) { + return 0; + } + } + param_3 = 1; + param_1 = (int *)param_1[2]; + param_2 = (int *)param_2[2]; + } + if ((uVar3 & uVar2 & 0x400) == 0) break; + if ((param_1[3] != param_2[3]) && ((param_3 != 0 || (param_1[3] != 0 || param_2[3] != 0)))) { + return 0; + } + param_3 = 1; + param_1 = (int *)param_1[2]; + param_2 = (int *)param_2[2]; + } + iVar4 = FUN_004d4dd0(param_1,param_2); + if (iVar4 != 0) { + return 1; + } + if ((((uVar2 & 2) != 0) && ((uVar3 & 1) != 0)) && ((*(byte *)(param_1 + 3) & 4) != 0)) { + uVar5 = FUN_004d4e36((int)param_1,param_2,param_4,1); + return uVar5; + } + return 0; +} + + + +/* @004d503f file=? name=FUN_004d503f */ + +int * __cdecl FUN_004d503f(uint param_1) + +{ + uint *puVar1; + int *piVar2; + int unaff_FS_OFFSET; + + piVar2 = FUN_004de55c(param_1); + if (piVar2 == (int *)0x0) { + if ((0x80 < param_1) || ((*(byte *)(*(int *)(*(int *)(unaff_FS_OFFSET + 4) + -8) + 4) & 1) != 0) + ) { + FUN_004dedb8(); + } + puVar1 = (uint *)(*(int *)(*(int *)(unaff_FS_OFFSET + 4) + -8) + 4); + *puVar1 = *puVar1 | 1; + piVar2 = *(int **)(*(int *)(*(int *)(unaff_FS_OFFSET + 4) + -8) + 0x1c); + } + return piVar2; +} + + + +/* @004d5089 file=? name=FUN_004d5089 */ + +void __cdecl FUN_004d5089(int *param_1) + +{ + uint *puVar1; + int unaff_FS_OFFSET; + + if (param_1 == *(int **)(*(int *)(*(int *)(unaff_FS_OFFSET + 4) + -8) + 0x1c)) { + puVar1 = (uint *)(*(int *)(*(int *)(unaff_FS_OFFSET + 4) + -8) + 4); + *puVar1 = *puVar1 & 0xfffffffe; + return; + } + FUN_004de420(param_1); + return; +} + + + +/* @004d50b6 file=? name=FUN_004d50b6 */ + +bool __cdecl FUN_004d50b6(int *param_1,undefined4 param_2,int *param_3,byte param_4) + +{ + ushort uVar1; + ushort uVar2; + int iVar3; + + iVar3 = FUN_004d4f30(param_1,param_3,0,param_2); + if (iVar3 != 0) { + return true; + } + uVar1 = *(ushort *)(param_1 + 1); + uVar2 = *(ushort *)(param_3 + 1); + if ((uVar2 & 0x20) != 0) { + iVar3 = FUN_004d4f30(param_1,(int *)param_3[2],1,param_2); + if (iVar3 != 0) { + return true; + } + uVar2 = *(ushort *)((int *)param_3[2] + 1); + if ((uVar2 & 0x10) == 0) { + return false; + } + iVar3 = FUN_004d4f30(param_1,(int *)param_3[2],0,param_2); + if (iVar3 != 0) { + return true; + } + } + if ((uVar2 & 0x10) != 0) { + if ((param_4 & 1) != 0) { + return true; + } + if ((uVar1 & 0x10) == 0) { + return false; + } + if ((uVar2 & 0x40) != 0) { + return (uVar1 & 0x300) == (uVar2 & 0x300); + } + } + return false; +} + + + +/* @004d5177 file=? name=FUN_004d5177 */ + +void __cdecl FUN_004d5177(undefined4 param_1,undefined4 param_2,undefined *param_3,uint param_4) + +{ + uint uVar1; + + if ((param_4 & 0x1000) == 0) { + uVar1 = param_4 & 7; + if (uVar1 == 1) { + (*(code *)param_3)(param_1,param_2); + return; + } + if (uVar1 == 2) { + (*(code *)param_3)(param_2,param_1); + return; + } + if (uVar1 == 3) { + (*(code *)param_3)(); + return; + } + if (uVar1 != 5) { + return; + } + (*(code *)param_3)(param_1,param_2); + } + else { + uVar1 = param_4 & 7; + if (uVar1 == 1) { + (*(code *)param_3)(param_1,0,param_2); + return; + } + if (uVar1 == 2) { + (*(code *)param_3)(param_1,param_2,0); + return; + } + if (uVar1 == 3) { + (*(code *)param_3)(); + return; + } + if (uVar1 == 5) { + (*(code *)param_3)(param_1,0,param_2); + return; + } + } + return; +} + + + +/* @004d51fb file=? name=FUN_004d51fb */ + +void __cdecl FUN_004d51fb(undefined4 param_1,undefined *param_2,uint param_3,int param_4) + +{ + undefined4 uVar1; + uint uVar2; + + uVar1 = 2; + if (param_4 == 0) { + uVar1 = 0; + } + uVar2 = param_3 & 7; + if (uVar2 == 1) { + (*(code *)param_2)(param_1,uVar1); + return; + } + if (uVar2 == 2) { + (*(code *)param_2)(param_1,uVar1); + return; + } + if (uVar2 != 3) { + if (uVar2 != 5) { + return; + } + (*(code *)param_2)(param_1,uVar1); + return; + } + (*(code *)param_2)(); + return; +} + + + +/* @004d5248 file=? name=FUN_004d5248 */ + +void __cdecl FUN_004d5248(undefined4 param_1,undefined *param_2,uint param_3) + +{ + uint uVar1; + + uVar1 = param_3 & 7; + if (uVar1 == 1) { + (*(code *)param_2)(param_1); + return; + } + if (uVar1 == 2) { + (*(code *)param_2)(param_1); + return; + } + if (uVar1 == 3) { + (*(code *)param_2)(); + return; + } + if (uVar1 != 5) { + return; + } + (*(code *)param_2)(param_1); + return; +} + + + +/* @004d5282 file=? name=FUN_004d5282 */ + +void __cdecl +FUN_004d5282(uint *param_1,undefined4 *param_2,int param_3,undefined *param_4,uint param_5, + int param_6,int param_7,int param_8,undefined4 param_9,int param_10) + +{ + ushort uVar1; + uint uVar2; + undefined4 *unaff_FS_OFFSET; + ULONG_PTR local_40; + undefined4 local_3c; + int *local_38; + undefined4 local_34; + int *local_30; + uint local_2c; + uint *local_28; + undefined4 local_24; + undefined2 local_14; + + FUN_004d66b8(); + local_28 = param_1; + *(uint *)(*(int *)(unaff_FS_OFFSET[1] + -8) + 0x18) = + (uint)*(ushort *)((int)param_1 + 6) + (int)param_1; + *(int *)(*(int *)(unaff_FS_OFFSET[1] + -8) + 0x14) = param_7; + *(int *)(*(int *)(unaff_FS_OFFSET[1] + -8) + 0x10) = param_8; + uVar2 = *param_1; + uVar1 = (ushort)param_1[1]; + if ((uVar1 & 2) == 0) { + local_2c = 0; + } + else { + local_2c = param_1[3]; + } + if ((uVar1 & 0x30) != 0) { + param_1 = (uint *)param_1[2]; + } + local_30 = FUN_004d503f(uVar2 + 0x46); + *local_30 = **(int **)(unaff_FS_OFFSET[1] + -8); + **(undefined4 **)(unaff_FS_OFFSET[1] + -8) = local_30; + local_30[1] = (int)local_28; + local_30[3] = param_6; + local_30[4] = uVar2; + *(ushort *)(local_30 + 6) = uVar1; + *(undefined2 *)((int)local_30 + 0x1a) = (undefined2)local_2c; + local_30[5] = (int)param_1; + local_30[2] = param_3; + local_30[10] = 0; + local_30[0xb] = 0; + local_30[7] = (int)FUN_004d5089; + local_30[0xd] = param_7; + local_30[0xe] = param_8; + local_30[8] = (int)param_4; + local_30[9] = param_5; + *(undefined1 *)((int)local_30 + 0x45) = 0; + *(undefined1 *)(local_30 + 0x11) = 1; + FUN_004d4918((undefined4 *)((int)local_30 + 0x46),param_2,uVar2); + if ((local_2c & 1) != 0) { + local_34 = *DAT_00524c68; + local_14 = 8; + FUN_004d5177((int)local_30 + 0x46,param_2,param_4,param_5); + local_14 = 0; + *DAT_00524c68 = local_34; + } + if ((param_10 == 0) && ((local_2c & 2) != 0)) { + local_14 = 0x14; + FUN_004d51fb(param_2,(undefined *)local_28[10],(uint)(ushort)local_28[0xb],1); + local_14 = 0; + } + local_40 = *(ULONG_PTR *)(*(int *)(unaff_FS_OFFSET[1] + -8) + 0x18); + local_3c = param_9; + local_38 = local_30; + RaiseException(0xeefface,1,3,&local_40); + *unaff_FS_OFFSET = local_24; + return; +} + + + +/* @004d5488 file=? name=FUN_004d5488 */ + +void __cdecl +FUN_004d5488(uint *param_1,undefined4 *param_2,int param_3,undefined *param_4,uint param_5, + int param_6,int param_7,int param_8) + +{ + undefined4 unaff_retaddr; + + FUN_004d5282(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8,unaff_retaddr,0); + return; +} + + + +/* @004d54b5 file=? name=FUN_004d54b5 */ + +void __cdecl FUN_004d54b5(int param_1,int param_2) + +{ + int iVar1; + undefined4 *puVar2; + int unaff_FS_OFFSET; + undefined4 unaff_retaddr; + + iVar1 = **(int **)(*(int *)(unaff_FS_OFFSET + 4) + -8); + if (iVar1 == 0) { + FUN_004d6723(); + } + if (*(char *)(iVar1 + 0x44) == '\0') { + puVar2 = *(undefined4 **)(iVar1 + 0x40); + } + else { + puVar2 = (undefined4 *)(iVar1 + 0x46); + } + FUN_004d5282(*(uint **)(iVar1 + 4),puVar2,*(int *)(iVar1 + 8),*(undefined **)(iVar1 + 0x20), + *(uint *)(iVar1 + 0x24),*(int *)(iVar1 + 0xc),param_1,param_2,unaff_retaddr,1); + return; +} + + + +/* @004d5506 file=? name=FUN_004d5506 */ + +void __cdecl FUN_004d5506(undefined4 param_1,undefined4 *param_2) + +{ + undefined4 local_54; + undefined4 local_50; + undefined4 local_44; + + if (param_2 == (undefined4 *)0x0) { + local_54 = 0x26; + local_50 = 2; + local_44 = 0; + param_2 = &local_54; + } + param_2[1] = param_2[1] | 2; + FUN_004d69ea(param_2,(PEXCEPTION_RECORD)param_2); + return; +} + + + +/* @004d5545 file=? name=FUN_004d5545 */ + +void __cdecl FUN_004d5545(undefined4 param_1,undefined *param_2,uint param_3) + +{ + undefined4 *unaff_FS_OFFSET; + undefined4 local_24; + + FUN_004d66b8(); + FUN_004d51fb(param_1,param_2,param_3,1); + *unaff_FS_OFFSET = local_24; + return; +} + + + +/* @004d5593 file=? name=FUN_004d5593 */ + +void __cdecl FUN_004d5593(int param_1) + +{ + undefined4 uVar1; + int iVar2; + + if (*(char *)(param_1 + 0x44) != '\0') { + if ((*(byte *)(param_1 + 0x1a) & 2) != 0) { + uVar1 = *DAT_00524c68; + FUN_004d5545(param_1 + 0x46,*(undefined **)(*(int *)(param_1 + 4) + 0x28), + (uint)*(ushort *)(*(int *)(param_1 + 4) + 0x2c)); + *DAT_00524c68 = uVar1; + } + *(undefined1 *)(param_1 + 0x44) = 0; + } + if (*(char *)(param_1 + 0x45) != '\0') { + iVar2 = *(int *)(param_1 + 0x3c); + if (((*(byte *)(iVar2 + 4) & 2) != 0) && ((*(byte *)(iVar2 + 0xc) & 2) != 0)) { + FUN_004d5545(*(undefined4 *)(param_1 + 0x40),*(undefined **)(iVar2 + 0x28), + (uint)*(ushort *)(iVar2 + 0x2c)); + } + *(undefined1 *)(param_1 + 0x45) = 0; + } + return; +} + + + +/* @004d563c file=? name=FUN_004d563c */ + +undefined4 __cdecl FUN_004d563c(undefined4 *param_1,int param_2,int *param_3,int *param_4) + +{ + int *piVar1; + int iVar2; + undefined4 *local_8; + + while( true ) { + piVar1 = (int *)*param_1; + if (piVar1 == (int *)0x0) { + return 0; + } + local_8 = (undefined4 *)(*param_4 + param_1[1]); + if (param_2 != 0) { + local_8 = (undefined4 *)*local_8; + } + iVar2 = FUN_004d4dd0(piVar1,param_3); + if (iVar2 != 0) break; + if ((((*(byte *)(piVar1 + 1) & 2) != 0) && + ((undefined4 *)((int)piVar1 + (uint)*(ushort *)(piVar1 + 4)) != (undefined4 *)0x0)) && + (iVar2 = FUN_004d563c((undefined4 *)((int)piVar1 + (uint)*(ushort *)(piVar1 + 4)),0,param_3, + (int *)&local_8), iVar2 != 0)) { + *param_4 = (int)local_8; + return 1; + } + param_1 = param_1 + 3; + } + *param_4 = (int)local_8; + return 1; +} + + + +/* @004d56c2 file=? name=FUN_004d56c2 */ + +int __cdecl FUN_004d56c2(int param_1,int param_2,int *param_3) + +{ + int *piVar1; + int iVar2; + int iVar3; + + piVar1 = param_3; + iVar3 = param_2; + if (((param_1 != 0) && + (iVar2 = FUN_004d563c((undefined4 *)((uint)*(ushort *)(param_2 + 0x10) + param_2),0,param_3, + ¶m_1), iVar2 == 0)) && + (iVar3 = FUN_004d563c((undefined4 *)((uint)*(ushort *)(iVar3 + 0x12) + iVar3),1,piVar1,¶m_1 + ), iVar3 == 0)) { + param_1 = 0; + } + return param_1; +} + + + +/* @004d571e file=? name=FUN_004d571e */ + +void __cdecl FUN_004d571e(int param_1,undefined4 param_2,int param_3,int *param_4,int param_5) + +{ + ushort uVar1; + uint uVar2; + undefined4 *puVar3; + int iVar4; + ushort uVar5; + uint *puVar6; + bool bVar7; + bool bVar8; + undefined4 *local_8; + + puVar6 = *(uint **)(param_1 + 4); + *(uint **)(param_3 + 0x3c) = puVar6; + if ((puVar6 != (uint *)0x0) && ((*(byte *)(param_1 + 8) & 0x80) == 0)) { + bVar7 = (*(uint *)(param_1 + 8) & 1) == 0; + local_8 = (undefined4 *)(param_3 + 0x46); + *(undefined1 *)(param_3 + 0x45) = 1; + *(int *)(param_3 + 0x40) = *param_4 + param_5; + uVar2 = *puVar6; + uVar1 = (ushort)puVar6[1]; + uVar5 = uVar1; + if ((uVar1 & 0x30) != 0) { + puVar6 = (uint *)puVar6[2]; + uVar5 = (ushort)puVar6[1]; + } + if (((uVar1 & 0x10) == 0) || ((*(byte *)(param_3 + 0xc) & 1) == 0)) { + if (((uVar5 & 1) == 0) || ((uVar1 & 0x30) == 0)) { + if ((*(byte *)(param_3 + 0x18) & 1) == 0) { + if ((uVar1 & 0x20) == 0) { + FUN_004d4918(*(undefined4 **)(param_3 + 0x40),local_8,uVar2); + } + else { + FUN_004d4918(*(undefined4 **)(param_3 + 0x40),&local_8,uVar2); + bVar7 = true; + } + } + else { + iVar4 = FUN_004d4dd0(*(int **)(param_3 + 0x14),(int *)puVar6); + if (iVar4 == 0) { + local_8 = (undefined4 *) + FUN_004d56c2((int)local_8,*(int *)(param_3 + 0x14),(int *)puVar6); + } + bVar7 = iVar4 == 0 || bVar7; + if ((puVar6[3] & 1) == 0) { + FUN_004d4918(*(undefined4 **)(param_3 + 0x40),local_8,uVar2); + } + else { + FUN_004d5177(*(undefined4 *)(param_3 + 0x40),local_8,*(undefined **)(param_1 + 0xc), + *(uint *)(param_1 + 0x10)); + bVar7 = true; + } + } + } + else { + bVar8 = (uVar1 & 0x20) == 0; + if (bVar8) { + local_8 = (undefined4 *)*local_8; + } + bVar7 = !bVar8 || bVar7; + iVar4 = FUN_004d4dd0(*(int **)(param_3 + 0x14),(int *)puVar6); + puVar3 = local_8; + if ((iVar4 == 0) && + (local_8 = (undefined4 *) + FUN_004d56c2((int)local_8,*(int *)(param_3 + 0x14),(int *)puVar6), + local_8 != puVar3)) { + bVar7 = true; + } + FUN_004d4918(*(undefined4 **)(param_3 + 0x40),&local_8,uVar2); + } + } + else { + FUN_004d4988(*(undefined4 **)(param_3 + 0x40),0,uVar2); + bVar7 = true; + } + if (!bVar7) { + if ((puVar6[3] & 2) != 0) { + FUN_004d5545(local_8,(undefined *)puVar6[10],(uint)(ushort)puVar6[0xb]); + } + *(undefined1 *)(param_3 + 0x44) = 0; + } + } + return; +} + + + +/* @004d58d2 file=? name=FUN_004d58d2 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004d58d2(int param_1) + +{ + int *piVar1; + int *piVar2; + undefined4 uVar3; + uint uVar4; + uint uVar5; + undefined1 *puVar6; + uint uVar7; + int unaff_FS_OFFSET; + + puVar6 = &stack0xfffffffc; + uVar7 = (uint)*(ushort *)(param_1 + 0x10); + do { + while( true ) { + do { + while( true ) { + uVar5 = uVar7; + if ((uVar5 == 0) || (uVar5 == *(uint *)(puVar6 + 0xc))) { + return; + } + uVar7 = (uint)*(ushort *)(*(int *)(puVar6 + -4) + uVar5); + uVar4 = (uint)*(ushort *)(*(int *)(puVar6 + -4) + uVar5 + 2); + *(ushort *)(*(int *)(puVar6 + 8) + 0x10) = *(ushort *)(*(int *)(puVar6 + -4) + uVar5); + if (uVar4 != 0) break; + _DAT_00524c58 = *(undefined4 *)(*(int *)(puVar6 + -4) + 4 + uVar5 + 4); + *(undefined2 *)(*(int *)(puVar6 + 8) + 0x12) = 1; + FUN_004d69ff(); + *(undefined2 *)(*(int *)(puVar6 + 8) + 0x12) = 0; + } + } while (uVar4 - 1 < 3); + if (uVar4 == 4) break; + if (uVar4 - 1 == 4) { + uVar3 = FUN_004d5fe6(*(int **)(*(int *)(puVar6 + -4) + uVar5 + 8), + *(int *)(*(int *)(puVar6 + -4) + uVar5 + 4) + *(int *)(puVar6 + -0xc), + *(int *)(puVar6 + 8),*(int *)(puVar6 + -8)); + *(undefined4 *)(puVar6 + -0xc) = uVar3; + } + } + piVar1 = *(int **)(*(int *)(unaff_FS_OFFSET + 4) + -8); + do { + piVar2 = piVar1; + piVar1 = (int *)*piVar2; + if (piVar1 == (int *)0x0) break; + } while ((piVar1[10] != *(int *)(puVar6 + 8)) || (uVar5 != piVar1[0xc])); + *piVar2 = *piVar1; + FUN_004d5593((int)piVar1); + (*(code *)piVar1[7])(piVar1); + } while( true ); +} + + + +/* @004d59e0 file=? name=FUN_004d59e0 */ + +void __cdecl FUN_004d59e0(int param_1) + +{ + FUN_004d58d2(param_1); + return; +} + + + +/* @004d59f3 file=? name=FUN_004d59f3 */ + +void __cdecl FUN_004d59f3(undefined4 *param_1) + +{ + undefined4 *unaff_FS_OFFSET; + + FUN_004d58d2((int)param_1); + *unaff_FS_OFFSET = *param_1; + return; +} + + + +/* @004d5a10 file=? name=FUN_004d5a10 */ + +int * __cdecl FUN_004d5a10(int param_1,int param_2) + +{ + bool bVar1; + undefined3 extraout_var; + int *piVar2; + + piVar2 = (int *)(param_1 + 8); + while( true ) { + if (*piVar2 == 0) { + return (int *)0x0; + } + if ((int *)piVar2[1] == (int *)0x0) break; + bVar1 = FUN_004d50b6(*(int **)(param_2 + 4),*(undefined4 *)(param_2 + 8),(int *)piVar2[1], + (byte)*(undefined4 *)(param_2 + 0xc)); + if (CONCAT31(extraout_var,bVar1) != 0) { + return piVar2; + } + piVar2 = piVar2 + 5; + } + return piVar2; +} + + + +/* @004d5a65 file=? name=FUN_004d5a65 */ + +/* WARNING (jumptable): Unable to track spacebase fully for stack */ +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 FUN_004d5a65(void) + +{ + undefined4 uVar1; + bool bVar2; + undefined3 extraout_var; + int *piVar3; + int *piVar4; + uint uVar5; + int unaff_EBP; + int iVar6; + undefined4 *unaff_FS_OFFSET; + + *(undefined4 *)(unaff_EBP + -4) = *(undefined4 *)(unaff_EBP + 8); + *(undefined4 *)(unaff_EBP + -8) = *(undefined4 *)(unaff_EBP + 0xc); + *(undefined4 *)(unaff_EBP + -0xc) = *(undefined4 *)(unaff_EBP + 0x10); + *(undefined4 *)(unaff_EBP + -0x10) = *(undefined4 *)(*(int *)(unaff_EBP + -4) + 0x1c); + piVar4 = *(int **)(*(int *)(unaff_EBP + -8) + 8); + *(int *)(unaff_EBP + -0x18) = *(int *)(unaff_EBP + -8) - piVar4[1]; + *(undefined4 *)(unaff_EBP + -0x1c) = *(undefined4 *)(*(int *)(unaff_EBP + -8) + 0xc); + if ((*(byte *)(*(int *)(unaff_EBP + -4) + 4) & 6) == 0) { + uVar5 = (uint)*(ushort *)(*(int *)(unaff_EBP + -8) + 0x10); + while (uVar5 != 0) { + *(uint *)(unaff_EBP + -0x14) = (uint)*(ushort *)((int)piVar4 + uVar5); + *(uint *)(unaff_EBP + -0x20) = (uint)*(ushort *)((int)piVar4 + uVar5 + 2); + iVar6 = uVar5 + 4; + switch(*(undefined4 *)(unaff_EBP + -0x20)) { + case 1: + if (**(int **)(unaff_EBP + -4) != 0xeefface) { + *(undefined4 *)(unaff_EBP + -0x34) = *(undefined4 *)(unaff_EBP + -4); + *(undefined4 *)(unaff_EBP + -0x30) = *(undefined4 *)(unaff_EBP + -0xc); + *(undefined4 *)(*(int *)(unaff_EBP + -8) + 0x14) = **(undefined4 **)(unaff_EBP + -4); + *(int *)(*(int *)(unaff_EBP + -8) + 0x18) = unaff_EBP + -0x34; + _DAT_00524c5c = *(undefined4 *)((int)piVar4 + iVar6); + iVar6 = FUN_004d69ff(); +LAB_004d5c8d: + if (iVar6 < 0) { + if ((*(byte *)(*(int *)(unaff_EBP + -4) + 4) & 1) != 0) { + *(undefined2 *)(*(int *)(unaff_EBP + -8) + 0x10) = *(undefined2 *)(unaff_EBP + -0x14); + } + return 0; + } + if (iVar6 != 0) { + *(undefined4 *)(*(int *)(unaff_EBP + -8) + 0x18) = 0; + *(undefined4 *)(unaff_EBP + -0x2c) = *(undefined4 *)(unaff_EBP + -0x14); +LAB_004d5bb9: + FUN_004d5506(*(undefined4 *)(unaff_EBP + -8),*(undefined4 **)(unaff_EBP + -4)); + FUN_004d58d2(*(int *)(unaff_EBP + -8)); + *(undefined2 *)(*(int *)(unaff_EBP + -8) + 0x10) = *(undefined2 *)(unaff_EBP + -0x2c); + if (*(int *)(unaff_EBP + -0x20) == 3) { + FUN_004d571e(*(int *)(unaff_EBP + -0x24),*(undefined4 *)(unaff_EBP + -8), + *(int *)(unaff_EBP + -0x10),*(int **)(unaff_EBP + -0x28), + *(int *)(unaff_EBP + -0x18)); + } + FUN_004d4db0(); + } + } + break; + case 2: + if (**(int **)(unaff_EBP + -4) != 0xeefface) { + *(undefined4 *)(*(int *)(unaff_EBP + -8) + 0x14) = **(undefined4 **)(unaff_EBP + -4); + iVar6 = *(int *)((int)piVar4 + iVar6); + goto LAB_004d5c8d; + } + break; + case 3: + if (**(int **)(unaff_EBP + -4) == 0xeefface) { + *(undefined4 *)(unaff_EBP + -0x28) = *(undefined4 *)((int)piVar4 + iVar6); + piVar3 = FUN_004d5a10(*(int *)(unaff_EBP + -0x28),*(int *)(unaff_EBP + -0x10)); + *(int **)(unaff_EBP + -0x24) = piVar3; + if (*(int *)(unaff_EBP + -0x24) != 0) { + *(undefined4 *)(*(int *)(unaff_EBP + -0x10) + 0x28) = *(undefined4 *)(unaff_EBP + -8); + *(undefined4 *)(*(int *)(unaff_EBP + -0x10) + 0x2c) = *(undefined4 *)(unaff_EBP + -0x24) + ; + *(uint *)(*(int *)(unaff_EBP + -0x10) + 0x30) = uVar5 + 8; + *(uint *)(unaff_EBP + -0x2c) = uVar5 + 8; + goto LAB_004d5bb9; + } + } + } + uVar5 = *(uint *)(unaff_EBP + -0x14); + } + } + else { + FUN_004d58d2(*(int *)(unaff_EBP + -8)); + if ((**(int **)(unaff_EBP + -4) == 0xeefface) && (piVar4 = (int *)*piVar4, piVar4 != (int *)0x0) + ) { + for (; *piVar4 != 0; piVar4 = piVar4 + 1) { + bVar2 = FUN_004d50b6(*(int **)(*(int *)(unaff_EBP + -0x10) + 4), + *(undefined4 *)(*(int *)(unaff_EBP + -0x10) + 8),(int *)*piVar4, + (byte)*(undefined4 *)(*(int *)(unaff_EBP + -0x10) + 0xc)); + if (CONCAT31(extraout_var,bVar2) != 0) { + return 1; + } + } + uVar1 = *unaff_FS_OFFSET; + *unaff_FS_OFFSET = **(undefined4 **)(unaff_EBP + -8); + FUN_004d679c(); + *unaff_FS_OFFSET = uVar1; + } + } + return 1; +} + + + +/* @004d5cdf file=? name=FUN_004d5cdf */ + +void __cdecl FUN_004d5cdf(undefined4 param_1,int param_2,int param_3) + +{ + undefined4 *unaff_FS_OFFSET; + undefined4 local_24; + + FUN_004d66b8(); + FUN_004d51fb(param_1,*(undefined **)(param_2 + 0x28),(uint)*(ushort *)(param_2 + 0x2c),param_3); + *unaff_FS_OFFSET = local_24; + return; +} + + + +/* @004d5d4b file=? name=FUN_004d5d4b */ + +void __cdecl +FUN_004d5d4b(int param_1,int *param_2,int *param_3,uint param_4,int param_5,undefined4 param_6) + +{ + undefined4 *puVar1; + int *piVar2; + + while (piVar2 = param_2 + -3, param_3 <= piVar2) { + puVar1 = (undefined4 *)(param_2[-2] + param_1); + if (param_5 != 0) { + puVar1 = (undefined4 *)*puVar1; + } + param_2 = piVar2; + if ((*(byte *)(*piVar2 + 0xc) & 2) != 0) { + FUN_004d5d90((int)puVar1,*piVar2,param_4,0,param_6); + param_4 = 0; + } + } + return; +} + + + +/* @004d5d90 file=? name=FUN_004d5d90 */ + +void __cdecl FUN_004d5d90(int param_1,int param_2,uint param_3,int param_4,undefined4 param_5) + +{ + int *piVar1; + int iVar2; + uint uVar3; + int *piVar4; + int *piVar5; + int *piVar6; + int *piVar7; + uint local_18; + int *local_10; + + if (param_4 == 0) { + uVar3 = *(uint *)(param_2 + 0x24); + } + else { + uVar3 = *(uint *)(param_2 + 0x20); + } + if ((param_3 == 0) || (uVar3 <= param_3)) { + FUN_004d5cdf(param_1,param_2,param_4); + } + else { + piVar1 = (int *)((uint)*(ushort *)(param_2 + 0x12) + param_2); + local_10 = piVar1; + if (param_4 != 0) { + for (; iVar2 = *local_10, iVar2 != 0; local_10 = local_10 + 3) { + if ((*(byte *)(iVar2 + 0xc) & 2) != 0) { + if (param_3 <= *(uint *)(iVar2 + 0x24)) { + FUN_004d5d4b(param_1,local_10 + 3,piVar1,param_3,1,param_5); + return; + } + param_3 = param_3 - *(uint *)(iVar2 + 0x24); + } + } + } + piVar6 = (int *)((uint)*(ushort *)(param_2 + 0x10) + param_2); + for (piVar7 = piVar6; iVar2 = *piVar7, iVar2 != 0; piVar7 = piVar7 + 3) { + if ((*(byte *)(iVar2 + 0xc) & 2) != 0) { + if (param_3 <= *(uint *)(iVar2 + 0x24)) { + FUN_004d5d4b(param_1,piVar7 + 3,piVar6,param_3,0,param_5); + if (param_4 == 0) { + return; + } + FUN_004d5d4b(param_1,local_10,piVar1,0,1,param_5); + return; + } + param_3 = param_3 - *(uint *)(iVar2 + 0x24); + } + } + piVar4 = (int *)((uint)*(ushort *)(param_2 + 0x2e) + param_2); + piVar5 = piVar4; + while( true ) { + iVar2 = *piVar5; + local_18 = 1; + if ((*(byte *)(iVar2 + 5) & 4) != 0) { + local_18 = *(uint *)(iVar2 + 0xc); + iVar2 = *(int *)(iVar2 + 8); + } + uVar3 = *(int *)(iVar2 + 0x20) * local_18; + if (param_3 <= uVar3) break; + param_3 = param_3 - uVar3; + piVar5 = piVar5 + 2; + } + do { + if (local_18 < 2) { + FUN_004d5d90(param_1 + piVar5[1],*piVar5,param_3,1,param_5); + } + else { + FUN_004d5f36(param_1 + piVar5[1],*piVar5,param_3,param_5); + } + param_3 = 0; + piVar5 = piVar5 + -2; + } while (piVar4 <= piVar5); + FUN_004d5d4b(param_1,piVar7,piVar6,0,0,param_5); + if (param_4 != 0) { + FUN_004d5d4b(param_1,local_10,piVar1,0,1,param_5); + } + } + return; +} + + + +/* @004d5f36 file=? name=FUN_004d5f36 */ + +void __cdecl FUN_004d5f36(int param_1,int param_2,uint param_3,undefined4 param_4) + +{ + int *piVar1; + uint uVar2; + uint uVar3; + int iVar4; + uint local_8; + + piVar1 = *(int **)(param_2 + 8); + uVar2 = piVar1[8]; + if (param_3 == 0) { + param_3 = uVar2 * *(int *)(param_2 + 0xc); + } + local_8 = param_3 / uVar2; + uVar3 = param_3 - local_8 * uVar2; + iVar4 = param_1 + local_8 * *piVar1; + if (uVar3 != 0) { + FUN_004d5d90(iVar4,(int)piVar1,uVar3,1,param_4); + } + while (local_8 != 0) { + iVar4 = iVar4 - *piVar1; + FUN_004d5d90(iVar4,(int)piVar1,uVar2,1,param_4); + local_8 = local_8 - 1; + } + return; +} + + + +/* @004d5fa8 file=? name=FUN_004d5fa8 */ + +int __cdecl FUN_004d5fa8(int param_1,int *param_2) + +{ + int iVar1; + int iVar2; + + iVar1 = *param_2; + if ((*(uint *)(iVar1 + 0xc) & 0x50) != 0x50) { + return param_1; + } + if (*(int *)(iVar1 + 8) == -1) { + return param_1; + } + iVar1 = *(int *)(*(int *)(iVar1 + 8) + param_1); + iVar2 = *(int *)(iVar1 + -8); + *param_2 = *(int *)((iVar1 - *(int *)(iVar1 + -4)) + -0xc); + return param_1 - iVar2; +} + + + +/* @004d5fe6 file=? name=FUN_004d5fe6 */ + +undefined4 __cdecl FUN_004d5fe6(int *param_1,int param_2,int param_3,int param_4) + +{ + bool bVar1; + undefined4 uVar2; + int iVar3; + uint uVar4; + int *piVar5; + int iVar6; + uint uVar7; + int *local_1c; + int *local_18; + int local_14; + int *local_10; + int local_c; + int local_8; + + local_8 = 0; + if (param_1 == (int *)0x0) { + uVar2 = 0; + } + else { + uVar7 = (*DAT_00524c68 - *(int *)(param_3 + 0x1c)) - param_2; + if ((*(byte *)(param_1 + 1) & 0x20) != 0) { + uVar7 = *(uint *)(*(int *)(*param_1 + 8) + 0x20); + } + if ((*(byte *)((int)param_1 + 5) & 1) == 0) { + piVar5 = param_1; + if ((int)uVar7 < 1) { + if ((param_1[1] & 3U) != 3) { + return 0; + } + local_8 = 1; + } + else { + for (; *piVar5 != 0; piVar5 = piVar5 + 3) { + local_c = *piVar5; + iVar6 = 1; + if (((((*(byte *)(local_c + 4) & 0x10) != 0) && + (local_c = *(int *)(local_c + 8), (*(byte *)(local_c + 4) & 2) != 0)) && + ((*(byte *)(local_c + 0xc) & 0x20) != 0)) && ((*(byte *)(piVar5 + 1) & 8) != 0)) { + if ((*(byte *)(piVar5 + 1) & 4) == 0) { + local_10 = (int *)piVar5[2]; + } + else { + local_10 = (int *)(param_4 + piVar5[2]); + } + local_10 = (int *)*local_10; + if ((*(byte *)(piVar5 + 1) & 0x40) != 0) { + local_10 = (int *)((int)local_10 + 4); + } + local_10 = (int *)FUN_004d5fa8((int)local_10,&local_c); + } + iVar3 = local_c; + if ((*(byte *)(local_c + 5) & 4) != 0) { + iVar6 = *(int *)(local_c + 0xc); + iVar3 = *(int *)(local_c + 8); + } + uVar4 = *(int *)(iVar3 + 0x20) * iVar6; + if (uVar7 <= uVar4) goto LAB_004d6109; + uVar7 = uVar7 - uVar4; + } + piVar5 = piVar5 + -3; + } +LAB_004d6109: + do { + local_14 = *piVar5; + uVar4 = piVar5[1]; + if ((uVar4 & 4) == 0) { + local_18 = (int *)piVar5[2]; + } + else { + local_18 = (int *)(param_4 + piVar5[2]); + } + if ((uVar4 & 0x11) != 0) { + local_14 = *(int *)(local_14 + 8); + local_1c = (int *)*local_18; + local_18 = local_1c; + if ((uVar4 & 0x48) == 0x40) { + local_18 = local_1c + 1; + } + if ((((*(byte *)(local_14 + 4) & 2) != 0) && ((*(byte *)(local_14 + 0xc) & 0x20) != 0)) && + ((uVar4 & 8) != 0)) { + local_18 = (int *)FUN_004d5fa8((int)local_18,&local_14); + } + } + if (local_8 == 0) { + if ((*(byte *)(local_14 + 5) & 4) == 0) { + FUN_004d5d90((int)local_18,local_14,uVar7,1,param_4); + } + else { + FUN_004d5f36((int)local_18,local_14,uVar7,param_4); + } + } + if ((uVar4 & 3) == 3) { + if ((uVar4 & 0x48) == 0x48) { + local_1c = local_1c + -1; + } + if ((*(byte *)(local_14 + 5) & 4) == 0) { + if (*(int *)(local_14 + 0x14) == 0) { + FUN_004022d0(local_1c); + } + else { + FUN_004d5248(local_1c,*(undefined **)(local_14 + 0x14), + (uint)*(ushort *)(local_14 + 0x18)); + } + } + else { + local_14 = *(int *)(local_14 + 8); + if (*(int *)(local_14 + 0x1c) == 0) { + FUN_004022e8(local_1c); + } + else { + FUN_004d5248(local_1c,*(undefined **)(local_14 + 0x1c), + (uint)*(ushort *)(local_14 + 0x1a)); + } + } + } + uVar7 = 0; + bVar1 = param_1 < piVar5; + piVar5 = piVar5 + -3; + } while (bVar1); + uVar2 = 0; + } + else { + uVar2 = *(undefined4 *)(*param_1 + 0x24); + } + } + return uVar2; +} + + + +/* @004d6257 file=? name=FUN_004d6257 */ + +uint __cdecl FUN_004d6257(int param_1) + +{ + uint uVar1; + int iVar2; + + if (param_1 == -1) { + uVar1 = 0xffffffff; + } + else { + iVar2 = FUN_004d4b14((byte *)(*(int *)(param_1 + 4) + -8),(byte *)s___BCCxh1_0051f6e1,8); + if (iVar2 == 0) { + uVar1 = (uint)*(ushort *)(param_1 + 0x10); + } + else { + uVar1 = 0xffffffff; + } + } + return uVar1; +} + + + +/* @004d62b7 file=? name=FUN_004d62b7 */ + +undefined4 * __cdecl FUN_004d62b7(undefined4 *param_1) + +{ + undefined4 local_8; + + *param_1 = &PTR_FUN_0051f6f8; + local_8 = 0; + FUN_004d5488((uint *)&DAT_004d6621,&local_8,0,(undefined *)0x0,0,0,0,0); + return param_1; +} + + + +/* @004d62ed file=? name=FUN_004d62ed */ + +undefined4 __cdecl FUN_004d62ed(undefined4 param_1) + +{ + return param_1; +} + + + +/* @004d62f5 file=? name=FUN_004d62f5 */ + +void __cdecl FUN_004d62f5(int *param_1,byte param_2) + +{ + if ((param_1 != (int *)0x0) && (*param_1 = (int)&PTR_FUN_0051f6f8, (param_2 & 1) != 0)) { + FUN_004022d0(param_1); + } + return; +} + + + +/* @004d6314 file=? name=FUN_004d6314 */ + +void __cdecl FUN_004d6314(int param_1,int param_2) + +{ + FUN_004d4dd0(*(int **)(param_1 + 4),*(int **)(param_2 + 4)); + return; +} + + + +/* @004d632d file=? name=FUN_004d632d */ + +bool __cdecl FUN_004d632d(int param_1,int param_2) + +{ + int iVar1; + + iVar1 = FUN_004d6314(param_1,param_2); + return iVar1 == 0; +} + + + +/* @004d634a file=? name=FUN_004d634a */ + +bool __cdecl FUN_004d634a(int param_1,int param_2) + +{ + int iVar1; + bool bVar2; + + if (*(int *)(param_1 + 4) == 0) { + bVar2 = false; + } + else if (*(int *)(param_2 + 4) == 0) { + bVar2 = true; + } + else { + iVar1 = FUN_004d4a1c((char *)((uint)*(ushort *)(*(int *)(param_1 + 4) + 6) + + *(int *)(param_1 + 4)), + (char *)((uint)*(ushort *)(*(int *)(param_2 + 4) + 6) + + *(int *)(param_2 + 4))); + bVar2 = iVar1 < 0; + } + return bVar2; +} + + + +/* @004d6396 file=? name=FUN_004d6396 */ + +void __cdecl FUN_004d6396(int param_1) + +{ + FUN_004d4db7(*(int *)(param_1 + 4)); + return; +} + + + +/* @004d63a7 file=? name=FUN_004d63a7 */ + +int __cdecl FUN_004d63a7(int param_1,int param_2,undefined4 param_3,int param_4) + +{ + if (param_1 == 0) { + FUN_004d5488((uint *)&DAT_004d6638,(undefined4 *)&DAT_00524c60,0,(undefined *)0x0,0,0,0,0); + } + *(undefined4 *)(param_4 + 4) = *(undefined4 *)((param_2 - *(int *)(param_2 + -4)) + -0xc); + return param_4; +} + + + +/* @004d63e5 file=? name=FUN_004d63e5 */ + +undefined4 * __cdecl +FUN_004d63e5(int param_1,int *param_2,undefined4 *param_3,int *param_4,int param_5,int *param_6, + uint *param_7,int param_8,int *param_9) + +{ + int *piVar1; + bool bVar2; + int iVar3; + undefined4 *puVar4; + undefined4 *puVar5; + undefined4 *puVar6; + int *local_1c; + uint local_18; + int local_14; + undefined4 *local_10; + uint local_c; + + local_c = 0; + local_10 = (undefined4 *)0x0; + local_14 = 0; + if (((param_6 != (int *)0x0) && (iVar3 = FUN_004d4dd0(param_6,param_2), iVar3 != 0)) || + ((*(byte *)(param_2 + 3) & 4) == 0)) { + return (undefined4 *)0x0; + } + bVar2 = false; + puVar5 = (undefined4 *)((uint)*(ushort *)((int)param_2 + 0x12) + (int)param_2); + do { + while (piVar1 = (int *)*puVar5, piVar1 == (int *)0x0) { + if (bVar2) { + *param_7 = local_c; + if (local_14 != 1) { + return (undefined4 *)0x0; + } + return local_10; + } + bVar2 = true; + puVar5 = (undefined4 *)((uint)*(ushort *)(param_2 + 4) + (int)param_2); + } + if ((*(byte *)(puVar5 + 2) & 8) == 0) { + if ((param_8 == 0) || ((puVar5[2] & 3) != 3)) { + local_18 = 0; + } + else { + local_18 = 1; + } + puVar6 = (undefined4 *)(param_1 + puVar5[1]); + local_1c = param_9; + if ((*(byte *)(puVar5 + 2) & 4) != 0) { + puVar6 = (undefined4 *)*puVar6; + local_1c = piVar1; + } + iVar3 = FUN_004d4dd0(param_4,piVar1); + if (iVar3 == 0) { + if (((*(byte *)(piVar1 + 3) & 4) != 0) && + (puVar6 = FUN_004d63e5((int)puVar6,piVar1,param_3,param_4,param_5,param_6,param_7, + local_18,local_1c), puVar6 != (undefined4 *)0x0)) { + local_18 = *param_7; +LAB_004d6500: + if ((local_14 == 0) || (puVar6 != local_10)) { + local_14 = local_14 + 1; + local_c = local_18; + local_10 = puVar6; + } + else { + local_c = local_c | local_18; + } + } + } + else if (param_3 == (undefined4 *)0x0) { + if ((param_5 == 0) || + (puVar4 = FUN_004d63e5((int)puVar6,piVar1,(undefined4 *)param_5,param_6,0,(int *)0x0, + param_7,0,(int *)0x0), puVar4 != (undefined4 *)0x0)) + goto LAB_004d6500; + } + else if (puVar6 == param_3) { + return puVar6; + } + } + puVar5 = puVar5 + 3; + } while( true ); +} + + + +/* @004d655c file=? name=FUN_004d655c */ + +undefined4 * __cdecl FUN_004d655c(int param_1,int param_2,int *param_3,int *param_4,int param_5) + +{ + int *piVar1; + int iVar2; + undefined4 *puVar3; + undefined4 *puVar4; + uint local_c; + int *local_8; + + local_8 = param_3; + if (param_1 != 0) { + puVar4 = (undefined4 *)(param_1 - *(int *)(param_2 + -8)); + piVar1 = *(int **)((param_2 - *(int *)(param_2 + -4)) + -0xc); + if (param_4 == (int *)0x0) { + return puVar4; + } + iVar2 = FUN_004d4dd0(param_4,piVar1); + if (iVar2 != 0) { + return puVar4; + } + iVar2 = FUN_004d4dd0(local_8,piVar1); + if ((iVar2 == 0) && + (puVar3 = FUN_004d63e5((int)puVar4,piVar1,(undefined4 *)0x0,param_4,param_1,local_8,&local_c, + 1,(int *)0x0), puVar3 != (undefined4 *)0x0)) { + return puVar3; + } + puVar4 = FUN_004d63e5((int)puVar4,piVar1,(undefined4 *)0x0,param_4,0,(int *)0x0,&local_c,1, + (int *)0x0); + if ((puVar4 != (undefined4 *)0x0) && (local_c != 0)) { + return puVar4; + } + } + if (param_5 != 0) { + FUN_004d5488((uint *)&DAT_004d6654,(undefined4 *)&DAT_00524c61,0,(undefined *)0x0,0,0,0,0); + } + return (undefined4 *)0x0; +} + + + +/* @004d66b8 file=? name=FUN_004d66b8 */ + +void FUN_004d66b8(void) + +{ + undefined4 *puVar1; + int in_EAX; + undefined4 *puVar2; + int unaff_EBP; + undefined2 in_FS; + + puVar2 = (undefined4 *)(unaff_EBP + *(int *)(in_EAX + 4)); + puVar2[2] = in_EAX; + puVar2[3] = &stack0x00000004; + puVar2[1] = &DAT_004d5a5f; + puVar2[4] = 0; + *(undefined4 *)((int)puVar2 + 0x12) = 0; + puVar2[7] = *DAT_00524c68; + puVar1 = (undefined4 *)segment(in_FS,0); + *puVar2 = *puVar1; + puVar1 = (undefined4 *)segment(in_FS,0); + *puVar1 = puVar2; + return; +} + + + +/* @004d66fe file=? name=FUN_004d66fe */ + +undefined4 __cdecl FUN_004d66fe(int param_1) + +{ + undefined4 uVar1; + int unaff_FS_OFFSET; + + uVar1 = *(undefined4 *)(*(int *)(*(int *)(unaff_FS_OFFSET + 4) + -8) + 8); + if (param_1 != 0) { + *(int *)(*(int *)(*(int *)(unaff_FS_OFFSET + 4) + -8) + 8) = param_1; + } + return uVar1; +} + + + +/* @004d6723 file=? name=FUN_004d6723 */ + +void FUN_004d6723(void) + +{ + undefined4 *unaff_FS_OFFSET; + undefined4 local_24; + + FUN_004d66b8(); + thunk_FUN_004d87e8(); + (**(code **)(*(int *)(unaff_FS_OFFSET[1] + -8) + 8))(); + FUN_004dedb8(); + *unaff_FS_OFFSET = local_24; + return; +} + + + +/* @004d6777 file=? name=FUN_004d6777 */ + +undefined4 __cdecl FUN_004d6777(int param_1) + +{ + undefined4 uVar1; + int unaff_FS_OFFSET; + + uVar1 = *(undefined4 *)(*(int *)(*(int *)(unaff_FS_OFFSET + 4) + -8) + 0xc); + if (param_1 != 0) { + *(int *)(*(int *)(*(int *)(unaff_FS_OFFSET + 4) + -8) + 0xc) = param_1; + } + return uVar1; +} + + + +/* @004d679c file=? name=FUN_004d679c */ + +void FUN_004d679c(void) + +{ + int unaff_FS_OFFSET; + + (**(code **)(*(int *)(*(int *)(unaff_FS_OFFSET + 4) + -8) + 0xc))(); + FUN_004dedb8(); + return; +} + + + +/* @004d67b0 file=? name=FUN_004d67b0 */ + +undefined4 __cdecl FUN_004d67b0(int param_1,int param_2) + +{ + if (param_1 == 0) { + return 0; + } + return *(undefined4 *) + (*(int *)((*(int *)(param_1 + param_2) - *(int *)(*(int *)(param_1 + param_2) + -4)) + + -0xc) + 0x20); +} + + + +/* @004d67cf file=? name=FUN_004d67cf */ + +void __cdecl FUN_004d67cf(int param_1) + +{ + HMODULE hModule; + FARPROC pFVar1; + int unaff_FS_OFFSET; + bool bVar2; + uint local_c; + int local_8; + + bVar2 = param_1 == 0; + if (param_1 == 0) { + if (DAT_004e0058 != '\0') { + pFVar1 = (FARPROC)0x0; + hModule = GetModuleHandleA((LPCSTR)0x0); + if (hModule != (HMODULE)0x0) { + pFVar1 = GetProcAddress(hModule,s___GetExceptDLLinfo_0051f7d8); + } + if (pFVar1 != (FARPROC)0x0) { + (*pFVar1)(&local_c); + if ((0x82727348 < local_c) && (local_c < 0x8272735a)) { + param_1 = local_8; + } + } + } + if (param_1 == 0) { + FUN_004d6888(&local_c); + param_1 = local_8; + } + } + else { + *(undefined1 **)(param_1 + 8) = &LAB_004d66f8; + *(undefined1 **)(param_1 + 0xc) = &LAB_004d6771; + } + *(int *)(*(int *)(unaff_FS_OFFSET + 4) + -8) = param_1; + if (bVar2) { + DAT_00524c68 = *(int *)(unaff_FS_OFFSET + 4) + -4; + } + *(undefined4 *)(*(int *)(unaff_FS_OFFSET + 4) + -4) = 0; + *(undefined4 *)(*(int *)(*(int *)(unaff_FS_OFFSET + 4) + -8) + 4) = 0; + return; +} + + + +/* @004d6888 file=? name=FUN_004d6888 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004d6888(undefined4 *param_1) + +{ + int unaff_FS_OFFSET; + + _DAT_0051f718 = *(int *)(*(int *)(unaff_FS_OFFSET + 4) + -8) + 0x24; + *param_1 = 0x82727349; + param_1[1] = &DAT_0051f6fc; + return; +} + + + +/* @004d68b0 file=? name=FUN_004d68b0 */ + +undefined4 FUN_004d68b0(void) + +{ + return 1; +} + + + +/* @004d6958 file=? name=FUN_004d6958 */ + +void __cdecl FUN_004d6958(undefined4 *param_1) + +{ + *param_1 = 0; + param_1[1] = &LAB_004d68bc; + FUN_004d6a08(param_1); + return; +} + + + +/* @004d6974 file=? name=FUN_004d6974 */ + +void __cdecl FUN_004d6974(undefined4 *param_1) + +{ + FUN_004d6a1d(param_1); + return; +} + + + +/* @004d6984 file=? name=FUN_004d6984 */ + +undefined4 __cdecl FUN_004d6984(undefined4 param_1) + +{ + undefined4 uVar1; + + uVar1 = DAT_00524c70; + DAT_00524c70 = param_1; + return uVar1; +} + + + +/* @004d69d0 file=? name=FUN_004d69d0 */ + +void FUN_004d69d0(void) + +{ + if (DAT_005252c4 != (undefined4 *)0x0) { + FUN_004d6958(DAT_005252c4); + } + return; +} + + + +/* @004d69ea file=? name=FUN_004d69ea */ + +void __fastcall FUN_004d69ea(undefined4 param_1,PEXCEPTION_RECORD param_2) + +{ + PVOID in_EAX; + + RtlUnwind(in_EAX,(PVOID)0x4d69fb,param_2,(PVOID)0x0); + return; +} + + + +/* @004d69ff file=? name=FUN_004d69ff */ + +void FUN_004d69ff(void) + +{ + undefined4 *unaff_EBX; + + (*(code *)*unaff_EBX)(); + return; +} + + + +/* @004d6a08 file=? name=FUN_004d6a08 */ + +void __cdecl FUN_004d6a08(undefined4 *param_1) + +{ + undefined4 *puVar1; + undefined2 in_FS; + + puVar1 = (undefined4 *)segment(in_FS,0); + *param_1 = *puVar1; + puVar1 = (undefined4 *)segment(in_FS,0); + *puVar1 = param_1; + return; +} + + + +/* @004d6a1d file=? name=FUN_004d6a1d */ + +void __cdecl FUN_004d6a1d(undefined4 *param_1) + +{ + undefined4 *puVar1; + int *piVar2; + undefined2 in_FS; + + piVar2 = (int *)segment(in_FS,0); + piVar2 = (int *)*piVar2; + if (param_1 == piVar2) { + puVar1 = (undefined4 *)segment(in_FS,0); + *puVar1 = *param_1; + } + else { + for (; piVar2 != (int *)0xffffffff; piVar2 = (int *)*piVar2) { + if ((undefined4 *)*piVar2 == param_1) { + *piVar2 = *param_1; + return; + } + } + } + return; +} + + + +/* @004d6a50 file=? name=thunk_FUN_004d92c4 */ + +undefined4 __cdecl thunk_FUN_004d92c4(uint param_1) + +{ + undefined4 uVar1; + BOOL BVar2; + + if (DAT_0051fbc0 <= param_1) { + uVar1 = FUN_004d9148(6); + return uVar1; + } + BVar2 = CloseHandle(*(HANDLE *)(&DAT_00524d14 + param_1 * 4)); + if (BVar2 == 1) { + (&DAT_0051fbc4)[param_1] = 0; + return 0; + } + uVar1 = FUN_004d91ac(); + return uVar1; +} + + + +/* @004d6a58 file=? name=thunk_FUN_004d87e8 */ + +int thunk_FUN_004d87e8(void) + +{ + int *piVar1; + int iVar2; + int iVar3; + + iVar3 = 0; + piVar1 = &DAT_0051f800; + iVar2 = DAT_0051fbc0; + while (iVar2 != 0) { + if ((*(byte *)((int)piVar1 + 0x12) & 3) != 0) { + FUN_004d6b9c(piVar1); + iVar3 = iVar3 + 1; + } + piVar1 = piVar1 + 6; + iVar2 = iVar2 + -1; + } + return iVar3; +} + + + +/* @004d6a68 file=? name=thunk_FUN_004d9334 */ + +DWORD __cdecl thunk_FUN_004d9334(uint param_1,LONG param_2,int param_3) + +{ + DWORD DVar1; + + if (param_1 < DAT_0051fbc0) { + if (param_3 == 0) { + DVar1 = 0; + } + else if (param_3 == 1) { + DVar1 = 1; + } + else { + if (param_3 != 2) { + DVar1 = FUN_004d9148(1); + return DVar1; + } + DVar1 = 2; + } + (&DAT_0051fbc4)[param_1] = (&DAT_0051fbc4)[param_1] & 0xfffffdff; + DVar1 = SetFilePointer(*(HANDLE *)(&DAT_00524d14 + param_1 * 4),param_2,(PLONG)0x0,DVar1); + if (DVar1 == 0xffffffff) { + FUN_004d91ac(); + } + } + else { + DVar1 = FUN_004d9148(6); + } + return DVar1; +} + + + +/* @004d6a70 file=? name=thunk_FUN_004d93ac */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +int __cdecl thunk_FUN_004d93ac(LPCSTR param_1,uint param_2,uint param_3) + +{ + bool bVar1; + uint uVar2; + int iVar3; + HANDLE hObject; + undefined3 extraout_var; + DWORD dwFlagsAndAttributes; + DWORD DVar4; + _SECURITY_ATTRIBUTES _Stack_18; + DWORD DStack_c; + DWORD DStack_8; + + if ((param_2 & 0xc000) == 0) { + param_2 = param_2 | *(uint *)PTR_DAT_0051fc68 & 0xc000; + } + if ((param_2 & 0x8000) == 0) { + param_2 = param_2 | 0x4000; + } + uVar2 = param_2 & 0x700; + if (uVar2 < 0x501) { + if (uVar2 == 0x500) { +LAB_004d940f: + DVar4 = 1; + goto LAB_004d9430; + } + if (uVar2 == 0x100) { + DVar4 = 4; + goto LAB_004d9430; + } + if (uVar2 != 0x200) { + if (uVar2 == 0x300) { + DVar4 = 2; + goto LAB_004d9430; + } + goto LAB_004d942b; + } + } + else if (uVar2 != 0x600) { + if (uVar2 != 0x700) { +LAB_004d942b: + DVar4 = 3; + goto LAB_004d9430; + } + goto LAB_004d940f; + } + DVar4 = 5; +LAB_004d9430: + if ((param_2 & 0x100) == 0) { + dwFlagsAndAttributes = GetFileAttributesA(param_1); + if (dwFlagsAndAttributes == 0xffffffff) { + dwFlagsAndAttributes = 0; + } + } + else if ((param_3 & _DAT_005201e4 & 0x80) == 0) { + dwFlagsAndAttributes = 1; + } + else { + dwFlagsAndAttributes = 0x80; + } + uVar2 = param_2 & 3; + if (uVar2 == 0) { + DStack_8 = 0x80000000; + } + else if (uVar2 == 1) { + DStack_8 = 0x40000000; + } + else { + if (uVar2 != 2) { + iVar3 = FUN_004d9148(1); + return iVar3; + } + DStack_8 = 0xc0000000; + } + uVar2 = param_2 & 0x70; + if (uVar2 == 0x10) { + DStack_c = 0; + } + else if (uVar2 == 0x20) { + DStack_c = 1; + } + else if (uVar2 == 0x30) { + DStack_c = 2; + } + else { + DStack_c = 3; + } + _Stack_18.nLength = 0xc; + _Stack_18.lpSecurityDescriptor = (LPVOID)0x0; + _Stack_18.bInheritHandle = (BOOL)((param_2 & 0x80) == 0); + hObject = CreateFileA(param_1,DStack_8,DStack_c,&_Stack_18,DVar4,dwFlagsAndAttributes,(HANDLE)0x0) + ; + if (hObject == (HANDLE)0xffffffff) { + DVar4 = GetLastError(); + uVar2 = DVar4 & 0xffff; + if ((uVar2 == 0x6e) && (uVar2 = 0x50, (param_2 & 0x100) == 0)) { + uVar2 = 2; + } + iVar3 = FUN_004d9148(uVar2); + } + else { + bVar1 = FUN_004d9304((uint)hObject); + if (CONCAT31(extraout_var,bVar1) != 0) { + param_2 = param_2 | 0x2000; + } + iVar3 = FUN_004d8eac(hObject,param_2 & 0xfffff8ff); + if (iVar3 == -1) { + FUN_004d9148(4); + CloseHandle(hObject); + } + } + return iVar3; +} + + + +/* @004d6a78 file=? name=thunk_FUN_004d892c */ + +char * __cdecl thunk_FUN_004d892c(uint param_1,char *param_2,char *param_3) + +{ + char *pcVar1; + uint uVar2; + DWORD DVar3; + char *pcVar4; + DWORD DVar5; + char *pcVar6; + + if (param_1 < DAT_0051fbc0) { + if (param_3 + 1 < (char *)0x2) { + pcVar1 = (char *)0x0; + } + else if ((*(byte *)((int)&DAT_0051fbc4 + param_1 * 4 + 1) & 0x40) == 0) { + pcVar1 = (char *)FUN_004d91c0(param_1,param_2,(DWORD)param_3); + } + else if ((*(byte *)((int)&DAT_0051fbc4 + param_1 * 4 + 1) & 2) == 0) { + pcVar1 = (char *)0x0; + if (param_3 != (char *)0x0) { + while( true ) { + uVar2 = (int)param_3 - (int)pcVar1; + DVar3 = FUN_004d91c0(param_1,param_2,uVar2); + if (DVar3 == 0xffffffff) { + return (char *)0xffffffff; + } + if (DVar3 == 0) { + return pcVar1; + } + pcVar4 = FUN_004d48f8(param_2,'\x1a',DVar3); + if (pcVar4 != (char *)0x0) { + (&DAT_0051fbc4)[param_1] = (&DAT_0051fbc4)[param_1] | 0x200; + DVar3 = (int)pcVar4 - (int)param_2; + if (DVar3 == 0) { + return pcVar1; + } + } + if ((param_2[DVar3 - 1] == '\r') && + (DVar5 = FUN_004d91c0(param_1,param_2 + (DVar3 - 1),1), DVar5 == 0xffffffff)) break; + pcVar6 = FUN_004d88c0(param_2,DVar3); + pcVar1 = pcVar1 + (int)pcVar6; + if ((DVar3 < uVar2) && ((*(byte *)((int)&DAT_0051fbc4 + param_1 * 4 + 1) & 0x20) != 0)) { + return pcVar1; + } + if (pcVar4 != (char *)0x0) { + return pcVar1; + } + if (pcVar6 != (char *)0x0) { + return pcVar1; + } + if (param_3 <= pcVar1) { + return pcVar1; + } + } + pcVar1 = (char *)0xffffffff; + } + } + else { + pcVar1 = (char *)0x0; + } + } + else { + pcVar1 = (char *)FUN_004d9148(-6); + } + return pcVar1; +} + + + +/* @004d6a80 file=? name=thunk_FUN_004d8b14 */ + +char * __cdecl thunk_FUN_004d8b14(uint param_1,char *param_2,char *param_3) + +{ + char *pcVar1; + char *pcVar2; + DWORD DVar3; + undefined4 auStack_8c [32]; + DWORD DStack_c; + char *pcStack_8; + + if (param_1 < DAT_0051fbc0) { + if (param_3 + 1 < (char *)0x2) { + param_3 = (char *)0x0; + } + else { + if ((*(byte *)((int)&DAT_0051fbc4 + param_1 * 4 + 1) & 8) != 0) { + FUN_004d9334(param_1,0,2); + } + pcVar1 = param_2; + pcVar2 = param_3; + if ((*(byte *)((int)&DAT_0051fbc4 + param_1 * 4 + 1) & 0x40) == 0) { + param_3 = (char *)FUN_004d9224(param_1,param_2,(DWORD)param_3); + } + else { + for (; pcVar2 != (char *)0x0; pcVar2 = pcVar2 + -(int)pcStack_8) { + pcStack_8 = pcVar2; + DVar3 = FUN_004d8a5c(pcVar1,(int *)&pcStack_8,auStack_8c,0x80); + DStack_c = FUN_004d9224(param_1,auStack_8c,DVar3); + if (DVar3 != DStack_c) { + if (DStack_c == 0xffffffff) { + return (char *)0xffffffff; + } + return pcVar1 + (DStack_c - (int)param_2); + } + pcVar1 = pcVar1 + (int)pcStack_8; + } + } + } + } + else { + param_3 = (char *)FUN_004d9148(-6); + } + return param_3; +} + + + +/* @004d6a88 file=? name=FUN_004d6a88 */ + +undefined4 __cdecl FUN_004d6a88(int *param_1,int *param_2,int param_3,uint param_4) + +{ + if ((*(byte *)((int)param_1 + 0x12) & 4) != 0) { + FUN_004de420((int *)param_1[1]); + } + *(ushort *)((int)param_1 + 0x12) = *(ushort *)((int)param_1 + 0x12) & 0xfff3; + param_1[3] = 0; + param_1[1] = (int)param_1 + 0x17; + *param_1 = (int)param_1 + 0x17; + if ((param_3 != 2) && (param_4 != 0)) { + PTR_FUN_00520c14 = &LAB_004d87b0; + if (param_2 == (int *)0x0) { + param_2 = FUN_004de55c(param_4); + if (param_2 == (int *)0x0) { + return 0xffffffff; + } + *(ushort *)((int)param_1 + 0x12) = *(ushort *)((int)param_1 + 0x12) | 4; + } + *param_1 = (int)param_2; + param_1[1] = (int)param_2; + param_1[3] = param_4; + if (param_3 == 1) { + *(ushort *)((int)param_1 + 0x12) = *(ushort *)((int)param_1 + 0x12) | 8; + } + } + return 0; +} + + + +/* @004d6b08 file=? name=FUN_004d6b08 */ + +undefined4 __cdecl FUN_004d6b08(int *param_1) + +{ + undefined4 uVar1; + int iVar2; + char *pcVar3; + + if ((param_1 == (int *)0x0) || ((short)param_1[5] != (short)param_1)) { + uVar1 = 0xffffffff; + } + else { + if (param_1[3] != 0) { + if ((param_1[2] < 0) && (iVar2 = FUN_004d6b9c(param_1), iVar2 != 0)) { + return 0xffffffff; + } + if ((*(byte *)((int)param_1 + 0x12) & 4) != 0) { + FUN_004de420((int *)param_1[1]); + } + } + uVar1 = FUN_004d92c4((int)*(char *)((int)param_1 + 0x16)); + *(undefined2 *)((int)param_1 + 0x12) = 0; + param_1[3] = 0; + param_1[2] = 0; + *(undefined1 *)((int)param_1 + 0x16) = 0xff; + if (*(ushort *)(param_1 + 4) != 0) { + pcVar3 = FUN_004d760c((char *)0x0,(char *)0x0,*(ushort *)(param_1 + 4)); + FUN_004d959c(pcVar3); + *(undefined2 *)(param_1 + 4) = 0; + } + } + return uVar1; +} + + + +/* @004d6b9c file=? name=FUN_004d6b9c */ + +undefined4 __cdecl FUN_004d6b9c(int *param_1) + +{ + undefined4 uVar1; + char *pcVar2; + char *pcVar3; + + if (param_1 == (int *)0x0) { + FUN_004d6d50(); + uVar1 = 0; + } + else if ((short)param_1[5] == (short)param_1) { + if (param_1[2] < 0) { + pcVar3 = (char *)(param_1[3] + param_1[2] + 1); + param_1[2] = param_1[2] - (int)pcVar3; + *param_1 = param_1[1]; + pcVar2 = FUN_004d8b14((int)*(char *)((int)param_1 + 0x16),(char *)param_1[1],pcVar3); + if ((pcVar3 == pcVar2) || ((*(byte *)((int)param_1 + 0x13) & 2) != 0)) { + uVar1 = 0; + } + else { + *(ushort *)((int)param_1 + 0x12) = *(ushort *)((int)param_1 + 0x12) | 0x10; + uVar1 = 0xffffffff; + } + } + else { + if ((((*(byte *)((int)param_1 + 0x12) & 8) != 0) || ((int)param_1 + 0x17 == *param_1)) && + (param_1[2] = 0, (int)param_1 + 0x17 == *param_1)) { + *param_1 = param_1[1]; + } + uVar1 = 0; + } + } + else { + uVar1 = 0xffffffff; + } + return uVar1; +} + + + +/* @004d6c20 file=? name=FUN_004d6c20 */ + +/* WARNING: Type propagation algorithm not settling */ + +undefined4 * __cdecl FUN_004d6c20(undefined4 *param_1,int param_2,int *param_3) + +{ + int *piVar1; + char *pcVar2; + byte *pbVar3; + char *pcVar4; + undefined4 *puVar5; + uint unaff_EDI; + char *local_8; + + puVar5 = param_1; + if (param_3[3] == 0) { + unaff_EDI = 0; + while ((unaff_EDI != 10 && (param_2 = param_2 + -1, 0 < param_2))) { + piVar1 = param_3 + 2; + *piVar1 = *piVar1 + -1; + if (*piVar1 < 0) { + unaff_EDI = FUN_004d7438(param_3); + } + else { + pbVar3 = (byte *)*param_3; + *param_3 = *param_3 + 1; + unaff_EDI = (uint)*pbVar3; + } + if (unaff_EDI == 0xffffffff) break; + *(char *)puVar5 = (char)unaff_EDI; + puVar5 = (undefined4 *)((int)puVar5 + 1); + } + } + else { + pcVar2 = (char *)(param_2 - 1); + do { + while( true ) { + if ((int)pcVar2 < 0) goto LAB_004d6d25; + local_8 = (char *)param_3[2]; + if ((int)local_8 < 1) break; + if (pcVar2 <= local_8) { + local_8 = pcVar2; + } + pcVar4 = FUN_004d48f8((char *)*param_3,'\n',(int)local_8); + if (pcVar4 != (char *)0x0) { + local_8 = pcVar4 + (1 - *param_3); + } + FUN_004d4918(puVar5,(undefined4 *)*param_3,(uint)local_8); + *param_3 = (int)(local_8 + *param_3); + param_3[2] = param_3[2] - (int)local_8; + puVar5 = (undefined4 *)((int)puVar5 + (int)local_8); + pcVar2 = (char *)((int)pcVar2 - (int)local_8); + if ((pcVar4 != (char *)0x0) || (pcVar2 == (char *)0x0)) { + unaff_EDI = 10; + goto LAB_004d6d25; + } + } + piVar1 = param_3 + 2; + *piVar1 = *piVar1 + -1; + if (*piVar1 < 0) { + unaff_EDI = FUN_004d7438(param_3); + } + else { + pbVar3 = (byte *)*param_3; + *param_3 = *param_3 + 1; + unaff_EDI = (uint)*pbVar3; + } + if (unaff_EDI == 0xffffffff) { + *(ushort *)((int)param_3 + 0x12) = *(ushort *)((int)param_3 + 0x12) | 0x20; + break; + } + *(char *)puVar5 = (char)unaff_EDI; + puVar5 = (undefined4 *)((int)puVar5 + 1); + pcVar2 = pcVar2 + -1; + } while (unaff_EDI != 10); + } +LAB_004d6d25: + if ((unaff_EDI == 0xffffffff) && (puVar5 == param_1)) { + param_1 = (undefined4 *)0x0; + } + else { + *(undefined1 *)puVar5 = 0; + if ((*(byte *)((int)param_3 + 0x12) & 0x10) != 0) { + param_1 = (undefined4 *)0x0; + } + } + return param_1; +} + + + +/* @004d6d50 file=? name=FUN_004d6d50 */ + +int FUN_004d6d50(void) + +{ + char *pcVar1; + undefined4 *puVar2; + int iVar3; + char *pcVar4; + int iVar5; + + iVar3 = 0; + puVar2 = &DAT_0051f800; + iVar5 = DAT_0051fbc0; + while (iVar5 != 0) { + if ((int)puVar2[2] < 0) { + pcVar4 = (char *)(puVar2[3] + puVar2[2] + 1); + puVar2[2] = puVar2[2] - (int)pcVar4; + *puVar2 = (char *)puVar2[1]; + pcVar1 = FUN_004d8b14((int)*(char *)((int)puVar2 + 0x16),(char *)puVar2[1],pcVar4); + if ((pcVar4 != pcVar1) && ((*(byte *)((int)puVar2 + 0x13) & 2) == 0)) { + *(ushort *)((int)puVar2 + 0x12) = *(ushort *)((int)puVar2 + 0x12) | 0x10; + } + iVar3 = iVar3 + 1; + } + puVar2 = puVar2 + 6; + iVar5 = iVar5 + -1; + } + return iVar3; +} + + + +/* @004d6db0 file=? name=FUN_004d6db0 */ + +void __cdecl FUN_004d6db0(undefined *param_1) + +{ + PTR_DAT_0051fc68 = param_1; + return; +} + + + +/* @004d6dc0 file=? name=FUN_004d6dc0 */ + +uint __cdecl FUN_004d6dc0(char *param_1,uint *param_2,undefined4 *param_3) + +{ + char cVar1; + uint uVar2; + uint uVar3; + undefined4 uVar4; + + uVar4 = 0; + cVar1 = *param_1; + if (cVar1 == 'r') { + uVar3 = 0; + uVar2 = 1; + } + else if (cVar1 == 'w') { + uVar3 = 0x301; + uVar4 = 0x80; + uVar2 = 2; + } + else { + if (cVar1 != 'a') { + return 0; + } + uVar3 = 0x901; + uVar4 = 0x80; + uVar2 = 2; + } + cVar1 = param_1[1]; + if ((cVar1 == '+') || ((param_1[2] == '+' && ((cVar1 == 't' || (cVar1 == 'b')))))) { + if (cVar1 == '+') { + cVar1 = param_1[2]; + } + uVar3 = uVar3 & 0xfffffffe | 2; + uVar4 = 0x180; + uVar2 = 3; + } + if (cVar1 == 't') { + uVar3 = uVar3 | 0x4000; + } + else if (cVar1 == 'b') { + uVar3 = uVar3 | 0x8000; + uVar2 = uVar2 | 0x40; + } + else { + uVar3 = uVar3 | *(uint *)PTR_DAT_0051fc68 & 0xc000; + if ((*(uint *)PTR_DAT_0051fc68 & 0x8000) != 0) { + uVar2 = uVar2 | 0x40; + } + } + PTR_FUN_00520c18 = &LAB_004d8788; + *param_2 = uVar3; + *param_3 = uVar4; + return uVar2; +} + + + +/* @004d6e80 file=? name=FUN_004d6e80 */ + +int * __cdecl FUN_004d6e80(int *param_1,LPCSTR param_2,char *param_3,uint param_4) + +{ + uint uVar1; + int iVar2; + uint local_c; + uint local_8; + + uVar1 = FUN_004d6dc0(param_3,&local_8,&local_c); + *(short *)((int)param_1 + 0x12) = (short)uVar1; + if ((short)uVar1 == 0) { +LAB_004d6ecb: + *(undefined1 *)((int)param_1 + 0x16) = 0xff; + *(undefined2 *)((int)param_1 + 0x12) = 0; + param_1 = (int *)0x0; + } + else { + if (*(char *)((int)param_1 + 0x16) < '\0') { + iVar2 = FUN_004d93ac(param_2,local_8 | param_4,local_c); + *(char *)((int)param_1 + 0x16) = (char)iVar2; + if ((char)iVar2 < '\0') goto LAB_004d6ecb; + } + if ((*(byte *)((int)&DAT_0051fbc4 + *(char *)((int)param_1 + 0x16) * 4 + 1) & 0x20) != 0) { + *(ushort *)((int)param_1 + 0x12) = *(ushort *)((int)param_1 + 0x12) | 0x200; + } + iVar2 = FUN_004d7e84(param_1,(int *)0x0,(uint)((*(byte *)((int)param_1 + 0x13) & 2) != 0),0x200) + ; + if (iVar2 == 0) { + *(undefined2 *)(param_1 + 4) = 0; + } + else { + FUN_004d6b08(param_1); + param_1 = (int *)0x0; + } + } + return param_1; +} + + + +/* @004d6f28 file=? name=FUN_004d6f28 */ + +undefined4 * FUN_004d6f28(void) + +{ + undefined4 *puVar1; + + puVar1 = &DAT_0051f800; + while( true ) { + if (*(char *)((int)puVar1 + 0x16) < '\0') { + return puVar1; + } + if (&DAT_0051f800 + DAT_0051fbc0 * 6 <= puVar1) break; + puVar1 = puVar1 + 6; + } + return (undefined4 *)0x0; +} + + + +/* @004d6f54 file=? name=FUN_004d6f54 */ + +int * __cdecl FUN_004d6f54(LPCSTR param_1,char *param_2) + +{ + int *piVar1; + int *piVar2; + + piVar1 = FUN_004d6f28(); + piVar2 = (int *)0x0; + if (piVar1 != (int *)0x0) { + piVar2 = FUN_004d6e80(piVar1,param_1,param_2,0); + } + return piVar2; +} + + + +/* @004d6f80 file=? name=FUN_004d6f80 */ + +void __cdecl FUN_004d6f80(undefined4 param_1,char *param_2) + +{ + FUN_004d812c(FUN_004d6fa0,param_1,param_2,(uint *)&stack0x0000000c); + return; +} + + + +/* @004d6fa0 file=? name=FUN_004d6fa0 */ + +char * __cdecl FUN_004d6fa0(byte *param_1,char *param_2,int *param_3) + +{ + uint uVar1; + int iVar2; + char *pcVar3; + + pcVar3 = param_2; + if ((*(byte *)((int)param_3 + 0x12) & 8) == 0) { + pcVar3 = (char *)param_3[3]; + if ((pcVar3 == (char *)0x0) || (pcVar3 < param_2)) { + if ((param_3[3] == 0) || ((param_3[2] == 0 || (iVar2 = FUN_004d6b9c(param_3), iVar2 == 0)))) { + pcVar3 = FUN_004d8b14((int)*(char *)((int)param_3 + 0x16),(char *)param_1,param_2); + if (pcVar3 < param_2) { + param_2 = (char *)0x0; + } + } + else { + param_2 = (char *)0x0; + } + } + else { + if (-1 < (int)(param_2 + param_3[2])) { + if (param_3[2] == 0) { + param_3[2] = -1 - (int)pcVar3; + } + else { + iVar2 = FUN_004d6b9c(param_3); + if (iVar2 != 0) { + return (char *)0x0; + } + } + } + FUN_004d4918((undefined4 *)*param_3,(undefined4 *)param_1,(uint)param_2); + param_3[2] = (int)(param_2 + param_3[2]); + *param_3 = (int)(param_2 + *param_3); + } + } + else { + for (; pcVar3 != (char *)0x0; pcVar3 = pcVar3 + -1) { + uVar1 = FUN_004d7518(*param_1,param_3); + if (uVar1 == 0xffffffff) { + return (char *)0x0; + } + param_1 = param_1 + 1; + } + } + return param_2; +} + + + +/* @004d70b0 file=? name=FUN_004d70b0 */ + +char * __cdecl FUN_004d70b0(char *param_1,char *param_2,int *param_3) + +{ + int *piVar1; + byte *pbVar2; + char *pcVar3; + uint uVar4; + char *unaff_ESI; + char *pcVar5; + char *local_c; + uint local_8; + + local_c = param_1; + if (param_3[3] != 0) { +LAB_004d70cf: + if (param_2 == (char *)0x0) { + return unaff_ESI; + } + do { + pcVar3 = (char *)param_3[2]; + if (pcVar3 != (char *)0x0) { + pcVar5 = param_2; + if (pcVar3 < param_2) { + pcVar5 = pcVar3; + } + FUN_004d4918((undefined4 *)local_c,(undefined4 *)*param_3,(uint)pcVar5); + *param_3 = (int)(pcVar5 + *param_3); + param_3[2] = param_3[2] - (int)pcVar5; + if (param_2 == pcVar5) { + return unaff_ESI; + } + local_c = local_c + (int)pcVar5; + param_2 = param_2 + -(int)pcVar5; + } + if ((char *)param_3[3] <= param_2) { + pcVar5 = param_2 + -((uint)param_2 % (uint)param_3[3]); + pcVar3 = FUN_004d892c((int)*(char *)((int)param_3 + 0x16),local_c,pcVar5); + if (param_2 == pcVar3) { + return unaff_ESI; + } + if (pcVar3 == (char *)0xffffffff) { + *(ushort *)((int)param_3 + 0x12) = *(ushort *)((int)param_3 + 0x12) | 0x10; + return unaff_ESI; + } + local_c = local_c + (int)pcVar3; + param_2 = param_2 + -(int)pcVar3; + if (pcVar5 != pcVar3) goto code_r0x004d715c; + } + uVar4 = FUN_004d744c(param_3); + if (uVar4 == 0xffffffff) { + *(ushort *)((int)param_3 + 0x12) = *(ushort *)((int)param_3 + 0x12) | 0x20; + return unaff_ESI; + } + local_8._0_1_ = (char)uVar4; + *local_c = (char)local_8; + local_c = local_c + 1; + param_2 = param_2 + -1; + if (param_2 == (char *)0x0) { + return unaff_ESI; + } + } while( true ); + } + for (; param_2 != (char *)0x0; param_2 = param_2 + -1) { + piVar1 = param_3 + 2; + *piVar1 = *piVar1 + -1; + if (*piVar1 < 0) { + local_8 = FUN_004d7438(param_3); + } + else { + pbVar2 = (byte *)*param_3; + *param_3 = *param_3 + 1; + local_8 = (uint)*pbVar2; + } + if (local_8 == 0xffffffff) break; + *local_c = (char)local_8; + local_c = local_c + 1; + } + if (local_8 == 0xffffffff) { + *(ushort *)((int)param_3 + 0x12) = *(ushort *)((int)param_3 + 0x12) | 0x20; + } + return unaff_ESI; +code_r0x004d715c: + if (((*(byte *)((int)param_3 + 0x12) & 0x40) != 0) || (pcVar3 == (char *)0x0)) { + *(ushort *)((int)param_3 + 0x12) = *(ushort *)((int)param_3 + 0x12) | 0x20; + return unaff_ESI; + } + goto LAB_004d70cf; +} + + + +/* @004d71e0 file=? name=FUN_004d71e0 */ + +uint __cdecl FUN_004d71e0(char *param_1,int param_2,int param_3,int *param_4) + +{ + uint uVar1; + int extraout_EAX; + char *pcVar2; + + if (param_2 == 0) { + uVar1 = 0; + } + else { + pcVar2 = FUN_004d70b0(param_1,(char *)(param_2 * param_3),param_4); + uVar1 = (uint)(param_2 * param_3 - extraout_EAX) / (uint)pcVar2; + } + return uVar1; +} + + + +/* @004d7214 file=? name=FUN_004d7214 */ + +int __cdecl FUN_004d7214(undefined4 *param_1) + +{ + char cVar1; + int iVar2; + int iVar3; + int iVar4; + int iVar5; + char *pcVar6; + + iVar2 = param_1[2]; + if (iVar2 < 0) { + iVar2 = param_1[3] + iVar2 + 1; + } + if ((*(byte *)((int)param_1 + 0x12) & 0x40) == 0) { + pcVar6 = (char *)*param_1; + iVar3 = iVar2; + iVar5 = iVar2; + if ((int)param_1[2] < 0) { + while (iVar3 = iVar2 + -1, iVar2 != 0) { + pcVar6 = pcVar6 + -1; + iVar2 = iVar3; + if (*pcVar6 == '\n') { + iVar5 = iVar5 + 1; + } + } + } + else { + while (iVar4 = iVar3 + -1, iVar5 = iVar2, iVar3 != 0) { + cVar1 = *pcVar6; + pcVar6 = pcVar6 + 1; + iVar3 = iVar4; + if (cVar1 == '\n') { + iVar2 = iVar2 + 1; + } + } + } + return iVar5; + } + return iVar2; +} + + + +/* @004d7270 file=? name=FUN_004d7270 */ + +undefined4 __cdecl FUN_004d7270(int *param_1,LONG param_2,int param_3) + +{ + int iVar1; + undefined4 uVar2; + DWORD DVar3; + + iVar1 = FUN_004d6b9c(param_1); + if (iVar1 == 0) { + if ((param_3 == 1) && (0 < param_1[2])) { + iVar1 = FUN_004d7214(param_1); + param_2 = param_2 - iVar1; + } + *(ushort *)((int)param_1 + 0x12) = *(ushort *)((int)param_1 + 0x12) & 0xfe5f; + param_1[2] = 0; + *param_1 = param_1[1]; + DVar3 = FUN_004d9334((int)*(char *)((int)param_1 + 0x16),param_2,param_3); + if (DVar3 == 0xffffffff) { + uVar2 = 0xffffffff; + } + else { + uVar2 = 0; + } + } + else { + uVar2 = 0xffffffff; + } + return uVar2; +} + + + +/* @004d72d4 file=? name=FUN_004d72d4 */ + +DWORD __cdecl FUN_004d72d4(undefined4 *param_1) + +{ + DWORD DVar1; + DWORD DVar2; + int iVar3; + + DVar1 = FUN_004d9334((int)*(char *)((int)param_1 + 0x16),0,1); + if (DVar1 != 0xffffffff) { + if ((int)param_1[2] < 0) { + DVar2 = DVar1; + if ((*(byte *)((int)&DAT_0051fbc4 + *(char *)((int)param_1 + 0x16) * 4 + 1) & 8) != 0) { + DVar2 = FUN_004d9334((int)*(char *)((int)param_1 + 0x16),0,2); + if (DVar2 == 0xffffffff) { + return 0xffffffff; + } + DVar1 = FUN_004d9334((int)*(char *)((int)param_1 + 0x16),DVar1,0); + if (DVar1 == 0xffffffff) { + return 0xffffffff; + } + } + iVar3 = FUN_004d7214(param_1); + DVar1 = DVar2 + iVar3; + } + else { + iVar3 = FUN_004d7214(param_1); + DVar1 = DVar1 - iVar3; + } + } + return DVar1; +} + + + +/* @004d7358 file=? name=FUN_004d7358 */ + +uint __cdecl FUN_004d7358(byte *param_1,uint param_2,uint param_3,int *param_4) + +{ + char *pcVar1; + + if (param_2 != 0) { + pcVar1 = FUN_004d6fa0(param_1,(char *)(param_2 * param_3),param_4); + param_3 = (uint)pcVar1 / param_2; + } + return param_3; +} + + + +/* @004d7388 file=? name=FUN_004d7388 */ + +void __cdecl FUN_004d7388(int *param_1,uint param_2) + +{ + FUN_004d8d20(0,param_1,param_2); + return; +} + + + +/* @004d73a0 file=? name=FUN_004d73a0 */ + +void FUN_004d73a0(void) + +{ + int *piVar1; + int iVar2; + + piVar1 = &DAT_0051f800; + iVar2 = 0x28; + while (iVar2 != 0) { + if ((*(ushort *)((int)piVar1 + 0x12) & 0x300) == 0x300) { + FUN_004d6b9c(piVar1); + } + piVar1 = piVar1 + 6; + iVar2 = iVar2 + -1; + } + return; +} + + + +/* @004d73d4 file=? name=FUN_004d73d4 */ + +undefined4 __cdecl FUN_004d73d4(undefined4 *param_1) + +{ + char *pcVar1; + + if ((*(byte *)((int)param_1 + 0x13) & 2) != 0) { + FUN_004d73a0(); + } + *param_1 = (char *)param_1[1]; + pcVar1 = FUN_004d892c((int)*(char *)((int)param_1 + 0x16),(char *)param_1[1],(char *)param_1[3]); + param_1[2] = pcVar1; + if (0 < (int)pcVar1) { + *(ushort *)((int)param_1 + 0x12) = *(ushort *)((int)param_1 + 0x12) & 0xffdf; + return 0; + } + if (param_1[2] == 0) { + *(ushort *)((int)param_1 + 0x12) = *(ushort *)((int)param_1 + 0x12) & 0xfe7f | 0x20; + } + else { + param_1[2] = 0; + *(ushort *)((int)param_1 + 0x12) = *(ushort *)((int)param_1 + 0x12) | 0x10; + } + return 0xffffffff; +} + + + +/* @004d7438 file=? name=FUN_004d7438 */ + +void __cdecl FUN_004d7438(int *param_1) + +{ + param_1[2] = param_1[2] + 1; + FUN_004d744c(param_1); + return; +} + + + +/* @004d744c file=? name=FUN_004d744c */ + +uint __cdecl FUN_004d744c(int *param_1) + +{ + byte *pbVar1; + int iVar2; + char *pcVar3; + uint uVar4; + + if (param_1 == (int *)0x0) { + return 0xffffffff; + } + if (0 < param_1[2]) { + param_1[2] = param_1[2] + -1; + pbVar1 = (byte *)*param_1; + *param_1 = *param_1 + 1; + return (uint)*pbVar1; + } + if (((param_1[2] < 0) || ((*(ushort *)((int)param_1 + 0x12) & 0x110) != 0)) || + ((*(byte *)((int)param_1 + 0x12) & 1) == 0)) { + *(ushort *)((int)param_1 + 0x12) = *(ushort *)((int)param_1 + 0x12) | 0x10; + return 0xffffffff; + } + *(ushort *)((int)param_1 + 0x12) = *(ushort *)((int)param_1 + 0x12) | 0x80; + if (param_1[3] != 0) { + iVar2 = FUN_004d73d4(param_1); + if (iVar2 != 0) { + return 0xffffffff; + } + param_1[2] = param_1[2] + -1; + pbVar1 = (byte *)*param_1; + *param_1 = *param_1 + 1; + return (uint)*pbVar1; + } + if ((*(byte *)((int)param_1 + 0x13) & 2) != 0) { + FUN_004d73a0(); + } + pcVar3 = FUN_004d892c((int)*(char *)((int)param_1 + 0x16),(char *)&DAT_00524db4,(char *)0x1); + if (pcVar3 == (char *)0x0) { + uVar4 = FUN_004d8834((int)*(char *)((int)param_1 + 0x16)); + if (uVar4 == 1) { + *(ushort *)((int)param_1 + 0x12) = *(ushort *)((int)param_1 + 0x12) & 0xfe7f | 0x20; + } + else { + *(ushort *)((int)param_1 + 0x12) = *(ushort *)((int)param_1 + 0x12) | 0x10; + } + return 0xffffffff; + } + *(ushort *)((int)param_1 + 0x12) = *(ushort *)((int)param_1 + 0x12) & 0xffdf; + return (uint)DAT_00524db4; +} + + + +/* @004d7518 file=? name=FUN_004d7518 */ + +uint __cdecl FUN_004d7518(byte param_1,int *param_2) + +{ + byte *pbVar1; + int iVar2; + uint uVar3; + char *pcVar4; + byte local_5; + + local_5 = param_1; + if (param_2[2] < -1) { + param_2[2] = param_2[2] + 1; + pbVar1 = (byte *)*param_2; + *param_2 = *param_2 + 1; + *pbVar1 = param_1; + if ((((*(byte *)((int)param_2 + 0x12) & 8) != 0) && ((param_1 == 10 || (param_1 == 0xd)))) && + (iVar2 = FUN_004d6b9c(param_2), iVar2 != 0)) { + return 0xffffffff; + } + uVar3 = (uint)local_5; + } + else if (((*(ushort *)((int)param_2 + 0x12) & 0x90) == 0) && + ((*(ushort *)((int)param_2 + 0x12) & 2) != 0)) { + *(ushort *)((int)param_2 + 0x12) = *(ushort *)((int)param_2 + 0x12) | 0x100; + if (param_2[3] == 0) { + pcVar4 = FUN_004d8b14((int)*(char *)((int)param_2 + 0x16),(char *)&local_5,(char *)0x1); + if ((pcVar4 == (char *)0x1) || ((*(byte *)((int)param_2 + 0x13) & 2) != 0)) { + uVar3 = (uint)local_5; + } + else { + *(ushort *)((int)param_2 + 0x12) = *(ushort *)((int)param_2 + 0x12) | 0x10; + uVar3 = 0xffffffff; + } + } + else { + if ((param_2[2] != 0) && (iVar2 = FUN_004d6b9c(param_2), iVar2 != 0)) { + return 0xffffffff; + } + param_2[2] = -param_2[3]; + pbVar1 = (byte *)*param_2; + *param_2 = *param_2 + 1; + *pbVar1 = local_5; + if (((*(byte *)((int)param_2 + 0x12) & 8) != 0) && + (((local_5 == 10 || (local_5 == 0xd)) && (iVar2 = FUN_004d6b9c(param_2), iVar2 != 0)))) { + return 0xffffffff; + } + uVar3 = (uint)local_5; + } + } + else { + *(ushort *)((int)param_2 + 0x12) = *(ushort *)((int)param_2 + 0x12) | 0x10; + uVar3 = 0xffffffff; + } + return uVar3; +} + + + +/* @004d760c file=? name=FUN_004d760c */ + +char * __cdecl FUN_004d760c(char *param_1,char *param_2,ushort param_3) + +{ + char *pcVar1; + + if (param_1 == (char *)0x0) { + param_1 = &DAT_00524dbe; + } + if (param_2 == (char *)0x0) { + param_2 = &DAT_0051fc6c; + } + pcVar1 = (char *)FUN_004d4d84((undefined4 *)param_1,param_2); + FUN_004dd3d0((uint)param_3,pcVar1); + FUN_004d49b8(param_1,&DAT_0051fc70); + return param_1; +} + + + +/* @004d765c file=? name=FUN_004d765c */ + +char * __cdecl FUN_004d765c(char *param_1,ushort *param_2) + +{ + int iVar1; + + do { + *param_2 = *param_2 + 1; + if (*param_2 == 0) { + *param_2 = 1; + } + param_1 = FUN_004d760c(param_1,(char *)0x0,*param_2); + iVar1 = FUN_004d9288(param_1,0); + } while (iVar1 == 0); + return param_1; +} + + + +/* @004d771c file=? name=FUN_004d771c */ + +void __cdecl FUN_004d771c(char *param_1) + +{ + FUN_004d812c(FUN_004d6fa0,&DAT_0051f818,param_1,(uint *)&stack0x00000008); + return; +} + + + +/* @004d773c file=? name=FUN_004d773c */ + +int __cdecl +FUN_004d773c(undefined *param_1,undefined *param_2,undefined4 param_3,byte *param_4, + undefined4 *param_5) + +{ + byte *pbVar1; + byte bVar2; + int iVar3; + byte *pbVar4; + uint uVar5; + byte local_54 [32]; + int local_34; + byte *local_24; + byte local_1d; + uint local_1c; + uint local_18; + int local_14; + uint local_10; + int local_c; + byte local_5; + + local_c = 0; + local_10 = 0; +LAB_004d7752: + do { + local_1d = *param_4; + if (local_1d == 0) { + return local_c; + } + pbVar1 = param_4 + 1; + if (local_1d == 0x25) { + local_1d = param_4[1]; + param_4 = param_4 + 2; + pbVar1 = param_4; + if (local_1d != 0x25) { + local_5 = 0x20; + uVar5 = 0xffffffff; +LAB_004d7803: + if ((local_1d & 0x80) == 0) { + iVar3 = (int)(char)(&DAT_005200f4)[(char)local_1d]; + } + else { + iVar3 = 2; + } + switch(iVar3) { + default: + goto switchD_004d7824_caseD_0; + case 2: + goto switchD_004d7824_caseD_2; + case 4: + local_5 = local_5 | 1; + local_1d = *param_4; + param_4 = param_4 + 1; + goto LAB_004d7803; + case 5: + if ((int)uVar5 < 0) { + iVar3 = (int)(char)local_1d; + } + else { + iVar3 = uVar5 * 10 + (int)(char)local_1d; + } + uVar5 = iVar3 - 0x30; + local_1d = *param_4; + param_4 = param_4 + 1; + goto LAB_004d7803; + case 6: + if ((local_5 & 1) == 0) { + local_24 = (byte *)*param_5; + param_5 = param_5 + 1; + } + if ((int)uVar5 < 0) { + uVar5 = 1; + } + if (uVar5 == 0) goto LAB_004d7b71; + goto LAB_004d7b48; + case 7: + case 8: + local_18 = 10; + goto switchD_004d7824_caseD_0; + case 9: + local_18 = 0; + goto switchD_004d7824_caseD_0; + case 10: + thunk_FUN_004dd258(); + if (local_14 < 0) goto LAB_004d7cb4; + if (local_14 == 0) goto switchD_004d7824_caseD_2; + if ((local_5 & 1) == 0) { + param_5 = param_5 + 1; + thunk_FUN_004dd258(); + local_c = local_c + 1; + } + goto LAB_004d7752; + case 0xb: + local_5 = local_5 | 8; + local_1d = *param_4; + param_4 = param_4 + 1; + goto LAB_004d7803; + case 0xc: + local_5 = local_5 | 2; + local_1d = *param_4; + param_4 = param_4 + 1; + goto LAB_004d7803; + case 0xd: + local_5 = local_5 | 4; + local_1d = *param_4; + param_4 = param_4 + 1; + goto LAB_004d7803; + case 0xe: + local_18 = 8; + goto switchD_004d7824_caseD_0; + case 0xf: + goto switchD_004d7824_caseD_f; + case 0x10: + FUN_004d4988((undefined4 *)local_54,0,0x20); + local_1c = 0; + bVar2 = *param_4; + pbVar1 = param_4 + 1; + if (bVar2 == 0x5e) { + local_1c = 1; + bVar2 = param_4[1]; + pbVar1 = param_4 + 2; + } + goto LAB_004d7baa; + case 0x11: + uVar5 = local_10; + goto LAB_004d7969; + case 0x12: + goto switchD_004d7824_caseD_12; + case 0x13: + uVar5 = FUN_004d7cd8(param_1,param_2,param_3,0x10,8,(int *)&local_10,&local_14); + if (local_14 < 1) goto switchD_004d7824_caseD_2; + if ((local_5 & 1) == 0) { + *(uint *)*param_5 = uVar5; + local_c = local_c + 1; + param_5 = param_5 + 1; + } + goto LAB_004d7752; + case 0x14: + local_5 = local_5 & 0xdf; + local_1d = *param_4; + param_4 = param_4 + 1; + goto LAB_004d7803; + case 0x15: + local_5 = local_5 | 0x20; + local_1d = *param_4; + param_4 = param_4 + 1; + goto LAB_004d7803; + } + } + } + param_4 = pbVar1; + local_10 = local_10 + 1; + bVar2 = (*(code *)param_1)(param_3); + if (bVar2 == 0xff) goto LAB_004d7cb4; + if (((local_1d & 0x80) == 0) && ((&DAT_005200f4)[(char)local_1d] == '\x01')) { + while (((bVar2 & 0x80) == 0 && ((&DAT_005200f4)[(char)bVar2] == '\x01'))) { + local_10 = local_10 + 1; + bVar2 = (*(code *)param_1)(param_3); + if (bVar2 == 0xff) goto LAB_004d7cb4; + } + (*(code *)param_2)((int)(char)bVar2,param_3); + local_10 = local_10 - 1; + } + else if (bVar2 != local_1d) { + (*(code *)param_2)((int)(char)bVar2,param_3); + goto switchD_004d7824_caseD_2; + } + } while( true ); +switchD_004d7824_caseD_12: + local_18 = 0x10; +switchD_004d7824_caseD_0: + uVar5 = FUN_004d7cd8(param_1,param_2,param_3,local_18,uVar5 & 0x7fff,(int *)&local_10,&local_14); + if (local_14 < 0) goto LAB_004d7cb4; + if (local_14 == 0) goto switchD_004d7824_caseD_2; +LAB_004d7969: + if ((('@' < (char)local_1d) && ((char)local_1d < '[')) && (local_1d != 0x58)) { + local_5 = local_5 | 4; + } + if ((local_5 & 1) == 0) { + if ((local_5 & 4) == 0) { + if ((local_5 & 2) == 0) { + *(uint *)*param_5 = uVar5; + } + else { + *(short *)*param_5 = (short)uVar5; + } + } + else { + *(uint *)*param_5 = uVar5; + } + param_5 = param_5 + 1; + if (local_1d != 0x6e) { + local_c = local_c + 1; + } + } + goto LAB_004d7752; +LAB_004d7baa: + pbVar4 = pbVar1; + local_1d = bVar2; + if (bVar2 == 0) goto switchD_004d7824_caseD_2; + local_54[(int)(char)bVar2 >> 3 & 0x1f] = + local_54[(int)(char)bVar2 >> 3 & 0x1f] | '\x01' << (bVar2 & 7); + bVar2 = *pbVar4; + param_4 = pbVar4 + 1; + if (bVar2 != 0x5d) { + pbVar1 = param_4; + if (((bVar2 == 0x2d) && ((char)local_1d < (char)*param_4)) && (*param_4 != 0x5d)) { + bVar2 = *param_4; + while( true ) { + local_1d = local_1d + 1; + pbVar1 = pbVar4 + 2; + if ((char)bVar2 <= (char)local_1d) break; + local_54[(int)(char)local_1d >> 3 & 0x1f] = + local_54[(int)(char)local_1d >> 3 & 0x1f] | '\x01' << (local_1d & 7); + } + } + goto LAB_004d7baa; + } + if (uVar5 == 0xffffffff) { + uVar5 = 0x7fff; + } + if ((local_5 & 1) == 0) { + local_24 = (byte *)*param_5; + param_5 = param_5 + 1; + } + local_34 = 0; + bVar2 = 0x5d; + while (uVar5 = uVar5 - 1, -1 < (int)uVar5) { + local_10 = local_10 + 1; + bVar2 = (*(code *)param_1)(param_3); + if ((bVar2 == 0xff) || + (((1 << (bVar2 & 7) & (int)(char)local_54[(int)(char)bVar2 >> 3 & 0x1f]) != 0) == local_1c)) + break; + local_34 = local_34 + 1; + if ((local_5 & 1) == 0) { + *local_24 = bVar2; + local_24 = local_24 + 1; + } + } + if (-1 < (int)uVar5) { + (*(code *)param_2)((int)(char)bVar2,param_3); + local_10 = local_10 - 1; + } + if ((local_34 != 0) && ((local_5 & 1) == 0)) { + *local_24 = 0; + local_24 = local_24 + 1; + local_c = local_c + 1; + } + if (bVar2 == 0xff) { +LAB_004d7cb4: + (*(code *)param_2)(0xffffffff,param_3); + if (local_c == 0) { + local_c = -1; + } + else { +switchD_004d7824_caseD_2: + } + return local_c; + } + goto LAB_004d7752; + while (((bVar2 & 0x80) == 0 && ((&DAT_005200f4)[(char)bVar2] == '\x01'))) { +switchD_004d7824_caseD_f: + local_10 = local_10 + 1; + bVar2 = (*(code *)param_1)(param_3); + if (bVar2 == 0xff) goto LAB_004d7cb4; + } + if ((local_5 & 1) == 0) { + local_24 = (byte *)*param_5; + local_c = local_c + 1; + param_5 = param_5 + 1; + } + if (uVar5 == 0xffffffff) { + uVar5 = 0x7fff; + } + do { + if ((local_5 & 1) == 0) { + *local_24 = bVar2; + local_24 = local_24 + 1; + } + local_10 = local_10 + 1; + bVar2 = (*(code *)param_1)(param_3); + } while ((((bVar2 != 0xff) && (bVar2 != 0)) && + (((bVar2 & 0x80) != 0 || ((&DAT_005200f4)[(char)bVar2] != '\x01')))) && + (uVar5 = uVar5 - 1, 0 < (int)uVar5)); + (*(code *)param_2)((int)(char)bVar2,param_3); + local_10 = local_10 - 1; + if ((local_5 & 1) == 0) { + *local_24 = 0; + } + goto LAB_004d7752; + while( true ) { + if ((local_5 & 1) == 0) { + *local_24 = bVar2; + local_24 = local_24 + 1; + } + uVar5 = uVar5 - 1; + if ((int)uVar5 < 1) break; +LAB_004d7b48: + local_10 = local_10 + 1; + bVar2 = (*(code *)param_1)(param_3); + if (bVar2 == 0xff) goto LAB_004d7cb4; + } +LAB_004d7b71: + if ((local_5 & 1) == 0) { + local_c = local_c + 1; + } + goto LAB_004d7752; +} + + + +/* @004d7cd8 file=? name=FUN_004d7cd8 */ + +uint __cdecl +FUN_004d7cd8(undefined *param_1,undefined *param_2,undefined4 param_3,uint param_4,int param_5, + int *param_6,int *param_7) + +{ + int iVar1; + int iVar2; + int iVar3; + uint uVar4; + int iVar5; + bool bVar6; + bool bVar7; + int local_1c; + int local_18; + uint local_14; + int local_10; + int local_c; + + bVar6 = false; + local_c = 0; + local_10 = 1; + local_14 = 0; + local_18 = 0; + iVar5 = 0; + iVar1 = local_c; +LAB_004d7d00: + do { + local_c = iVar1; + iVar1 = local_c + 1; + iVar3 = (*(code *)param_1)(param_3); + if (iVar5 == 0) { + if (((-1 < iVar3) && (iVar3 < 0x80)) && (((&DAT_005207dd)[iVar3] & 1) != 0)) + goto LAB_004d7d00; + iVar5 = 1; + } + iVar2 = param_5 + -1; + if (iVar2 < 0) goto LAB_004d7e3c; + if ((iVar5 != 1) || ((iVar5 = 2, iVar3 != 0x2b && (iVar3 != 0x2d)))) { + if (iVar5 == 2) { + iVar5 = 3; + if ((iVar3 == 0x30) && ((local_18 = 1, param_4 == 0 || (param_4 == 0x10)))) { + iVar1 = local_c + 2; + iVar3 = (*(code *)param_1)(param_3); + param_5 = param_5 + -2; + if (param_5 < 0) goto LAB_004d7e3c; + if ((iVar3 == 0x78) || (iVar3 == 0x58)) { + param_4 = 0x10; + goto LAB_004d7d00; + } + iVar2 = param_5; + if (param_4 == 0) { + param_4 = 8; + } + } + local_c = iVar1; + param_5 = iVar2; + iVar2 = param_5; + iVar1 = local_c; + if (param_4 == 0) { + param_4 = 10; + } + else if (((int)param_4 < 1) || (0x24 < (int)param_4)) goto LAB_004d7e3c; + } + local_c = iVar1; + param_5 = iVar2; + iVar1 = local_c; + if (iVar5 == 3) { + if ((iVar3 < 0x30) || (0x39 < iVar3)) { + if ((iVar3 < 0x61) || (0x7a < iVar3)) { + if ((iVar3 < 0x41) || (0x5a < iVar3)) goto LAB_004d7e3c; + local_1c = iVar3 + -0x37; + } + else { + local_1c = iVar3 + -0x57; + } + } + else { + local_1c = iVar3 + -0x30; + } + if ((int)param_4 <= local_1c) goto LAB_004d7e3c; + local_18 = local_18 + 1; + uVar4 = local_14 * param_4 + local_1c; + bVar7 = local_14 != (uVar4 - local_1c) / param_4; + local_14 = uVar4; + if (bVar7) { + local_10 = 2; + local_14 = 0x80000000; + if (!bVar6) { + local_14 = 0x7fffffff; + } +LAB_004d7e3c: + local_c = iVar1; + if (local_10 != 2) { + (*(code *)param_2)(iVar3,param_3); + local_c = local_c + -1; + if (bVar6) { + local_14 = -local_14; + } + } + if ((local_18 == 0) && (local_10 = -1, iVar3 != -1)) { + local_10 = 0; + } + *param_7 = local_10; + *param_6 = *param_6 + local_c; + return local_14; + } + } + goto LAB_004d7d00; + } + bVar6 = iVar3 == 0x2d; + param_5 = iVar2; + } while( true ); +} + + + +/* @004d7e84 file=? name=FUN_004d7e84 */ + +undefined4 __cdecl FUN_004d7e84(int *param_1,int *param_2,int param_3,uint param_4) + +{ + undefined4 uVar1; + + if ((((short)param_1[5] == (short)param_1) && (param_3 < 3)) && (param_4 < 0x80000000)) { + if (param_1[2] != 0) { + FUN_004d7270(param_1,0,1); + } + if ((*(byte *)((int)param_1 + 0x12) & 4) != 0) { + FUN_004de420((int *)param_1[1]); + } + uVar1 = FUN_004d6a88(param_1,param_2,param_3,param_4); + } + else { + uVar1 = 0xffffffff; + } + return uVar1; +} + + + +/* @004d7f10 file=? name=FUN_004d7f10 */ + +void __cdecl FUN_004d7f10(undefined1 *param_1,char *param_2) + +{ + *param_1 = 0; + FUN_004d812c(&LAB_004d7ee8,¶m_1,param_2,(uint *)&stack0x0000000c); + return; +} + + + +/* @004d7f34 file=? name=FUN_004d7f34 */ + +void __cdecl FUN_004d7f34(undefined1 *param_1,char *param_2,uint *param_3) + +{ + *param_1 = 0; + FUN_004d812c(&LAB_004d7ee8,¶m_1,param_2,param_3); + return; +} + + + +/* @004d7f58 file=? name=FUN_004d7f58 */ + +uint __cdecl FUN_004d7f58(int *param_1) + +{ + byte *pbVar1; + uint uVar2; + + pbVar1 = (byte *)*param_1; + *param_1 = *param_1 + 1; + if (*pbVar1 == 0) { + uVar2 = 0xffffffff; + } + else { + uVar2 = (uint)*pbVar1; + } + return uVar2; +} + + + +/* @004d7f78 file=? name=FUN_004d7f78 */ + +void __cdecl FUN_004d7f78(undefined4 param_1,int *param_2) + +{ + *param_2 = *param_2 + -1; + return; +} + + + +/* @004d7f84 file=? name=FUN_004d7f84 */ + +void __cdecl FUN_004d7f84(undefined4 param_1,byte *param_2) + +{ + FUN_004d773c(FUN_004d7f58,FUN_004d7f78,¶m_1,param_2,(undefined4 *)&stack0x0000000c); + return; +} + + + +/* @004d7fa8 file=? name=FUN_004d7fa8 */ + +void __cdecl FUN_004d7fa8(undefined4 param_1,byte *param_2,undefined4 *param_3) + +{ + FUN_004d773c(FUN_004d7f58,FUN_004d7f78,¶m_1,param_2,param_3); + return; +} + + + +/* @004d8080 file=? name=FUN_004d8080 */ + +void __cdecl FUN_004d8080(undefined4 param_1,char *param_2,uint *param_3) + +{ + FUN_004d812c(FUN_004d6fa0,param_1,param_2,param_3); + return; +} + + + +/* @004d80a0 file=? name=FUN_004d80a0 */ + +void __cdecl FUN_004d80a0(int param_1) + +{ + int iVar1; + + if (*(int *)(param_1 + 0x50) != 0) { + iVar1 = (**(code **)(param_1 + 0x54)) + (param_1,*(int *)(param_1 + 0x50),*(undefined4 *)(param_1 + 0x58)); + if (iVar1 == 0) { + *(undefined4 *)(param_1 + 0x60) = 1; + } + *(undefined4 *)(param_1 + 0x50) = 0; + } + return; +} + + + +/* @004d80d0 file=? name=FUN_004d80d0 */ + +void __cdecl FUN_004d80d0(undefined1 param_1,int param_2) + +{ + if (0x4f < *(int *)(param_2 + 0x50)) { + FUN_004d80a0(param_2); + } + *(undefined1 *)(param_2 + *(int *)(param_2 + 0x50)) = param_1; + *(int *)(param_2 + 0x50) = *(int *)(param_2 + 0x50) + 1; + *(int *)(param_2 + 0x5c) = *(int *)(param_2 + 0x5c) + 1; + return; +} + + + +/* @004d80f8 file=? name=FUN_004d80f8 */ + +void __cdecl FUN_004d80f8(uint param_1,int param_2) + +{ + char *pcVar1; + int iVar2; + char cVar3; + + iVar2 = 7; + pcVar1 = (char *)(param_2 + 7); + do { + cVar3 = (char)(param_1 & 0xf); + if ((param_1 & 0xf) < 10) { + *pcVar1 = cVar3 + '0'; + } + else { + *pcVar1 = cVar3 + '7'; + } + param_1 = param_1 >> 4; + iVar2 = iVar2 + -1; + pcVar1 = pcVar1 + -1; + } while (-1 < iVar2); + return; +} + + + +/* @004d812c file=? name=FUN_004d812c */ + +undefined4 __cdecl FUN_004d812c(undefined4 param_1,undefined4 param_2,char *param_3,uint *param_4) + +{ + uint *puVar1; + int iVar2; + uint uVar3; + bool bVar4; + bool bVar5; + bool bVar6; + bool bVar7; + bool bVar8; + uint uVar9; + char cVar10; + char *pcVar11; + uint uVar12; + bool bVar13; + undefined1 local_c0 [80]; + undefined4 local_70; + undefined4 local_6c; + undefined4 local_68; + undefined4 local_64; + int local_60; + char local_5c [8]; + undefined1 local_54; + uint local_2c; + uint local_28; + uint local_24; + char *local_20; + char local_19; + char *local_18; + int local_14; + char local_d; + uint local_c; + uint local_8; + + local_60 = 0; + local_64 = 0; + local_70 = 0; + local_6c = param_1; + local_68 = param_2; +LAB_004d8152: + pcVar11 = param_3; + cVar10 = *pcVar11; + param_3 = pcVar11 + 1; + if (cVar10 != '\0') { + if (cVar10 == '%') { + if (*param_3 != '%') { + uVar9 = 0; + local_d = '\0'; + local_14 = 0; + uVar12 = 0; + bVar7 = false; + bVar13 = false; + bVar6 = false; + bVar5 = false; + local_c = 0xffffffff; + local_8 = 0xffffffff; +switchD_004d81b8_default: + bVar4 = false; + cVar10 = *param_3; + param_3 = param_3 + 1; + local_18 = pcVar11; + if (cVar10 < ' ') goto switchD_004d81b8_caseD_13; + switch((&DAT_0052015b)[cVar10]) { + case 0: + local_18 = pcVar11; + if (uVar9 != 0) goto switchD_004d81b8_caseD_13; + if (local_d != '+') { + local_d = cVar10; + } + goto switchD_004d81b8_default; + case 1: + local_18 = pcVar11; + if (uVar9 != 0) goto switchD_004d81b8_caseD_13; + uVar12 = 1; + goto switchD_004d81b8_default; + case 2: + uVar3 = *param_4; + if (uVar9 < 2) { + local_8 = uVar3; + if ((int)uVar3 < 0) { + bVar5 = true; + local_8 = -uVar3; + } + uVar9 = 3; + param_4 = param_4 + 1; + } + else { + local_18 = pcVar11; + if (uVar9 != 4) goto switchD_004d81b8_caseD_13; + uVar9 = 5; + param_4 = param_4 + 1; + local_c = uVar3; + } + goto switchD_004d81b8_default; + case 3: + local_18 = pcVar11; + if (uVar9 != 0) goto switchD_004d81b8_caseD_13; + bVar5 = true; + goto switchD_004d81b8_default; + case 4: + local_18 = pcVar11; + if (3 < uVar9) goto switchD_004d81b8_caseD_13; + uVar9 = 4; + local_c = local_c + 1; + goto switchD_004d81b8_default; + case 5: + goto switchD_004d81b8_caseD_5; + case 6: + bVar6 = true; + uVar9 = 5; + goto switchD_004d81b8_default; + case 7: + bVar6 = false; + uVar9 = 5; + goto switchD_004d81b8_default; + case 8: + bVar7 = true; + bVar6 = false; + uVar9 = 5; + goto switchD_004d81b8_default; + case 9: + if (uVar9 == 0) { + if (!bVar5) { + bVar13 = true; + uVar9 = 1; + } + } + else { +switchD_004d81b8_caseD_5: + cVar10 = cVar10 + -0x30; + if (uVar9 < 3) { + uVar9 = 2; + if (local_8 == 0xffffffff) { + local_8 = (uint)cVar10; + } + else { + local_8 = local_8 * 10 + (int)cVar10; + } + } + else { + local_18 = pcVar11; + if (uVar9 != 4) goto switchD_004d81b8_caseD_13; + local_c = local_c * 10 + (int)cVar10; + } + } + goto switchD_004d81b8_default; + case 10: + goto switchD_004d81b8_caseD_a; + case 0xb: + local_24 = 8; + break; + case 0xc: + local_24 = 10; + break; + case 0xd: + local_24 = 0x10; + local_19 = cVar10 + -0x17; + break; + case 0xe: + local_20 = (char *)*param_4; + FUN_004d80f8((uint)local_20,(int)local_5c); + local_54 = 0; + local_20 = local_5c; + param_4 = param_4 + 1; + goto LAB_004d8548; + case 0xf: + local_20 = local_5c + 1; + thunk_FUN_004dd24c(); + param_4 = (uint *)thunk_FUN_004dd24c(); + goto LAB_004d8548; + case 0x10: + local_5c[0] = (char)*param_4; + local_5c[1] = 0; + local_20 = local_5c; + local_2c = 1; + param_4 = param_4 + 1; + goto LAB_004d85b9; + case 0x11: + puVar1 = param_4 + 1; + local_20 = (char *)*param_4; + if (local_20 == (char *)0x0) { + local_20 = &DAT_00520174; + } + local_2c = FUN_004d4a78(local_20); + param_4 = puVar1; + if (((int)local_c < (int)local_2c) && (-1 < (int)local_c)) { + local_2c = local_c; + } + goto LAB_004d85b9; + case 0x12: + puVar1 = param_4 + 1; + local_20 = (char *)*param_4; + param_4 = puVar1; + if (bVar6) { + *(undefined4 *)local_20 = local_64; + } + else if (bVar7) { + *(undefined2 *)local_20 = (undefined2)local_64; + } + else { + *(undefined4 *)local_20 = local_64; + } + goto LAB_004d8152; + case 0x13: + case 0x14: + case 0x15: + goto switchD_004d81b8_caseD_13; + case 0x16: + uVar9 = 5; + goto switchD_004d81b8_default; + case 0x17: + uVar9 = 5; + default: + goto switchD_004d81b8_default; + } + local_d = '\0'; + bVar8 = false; + goto LAB_004d8398; + } + param_3 = pcVar11 + 2; + cVar10 = '%'; + } + FUN_004d80d0(cVar10,(int)local_c0); + goto LAB_004d8152; + } + goto LAB_004d8763; +switchD_004d81b8_caseD_a: + local_24 = 10; + bVar8 = true; +LAB_004d8398: + if (bVar6) { + uVar9 = *param_4; + } + else if (bVar7) { + if (bVar8) { + uVar9 = (uint)(short)(ushort)*param_4; + } + else { + uVar9 = (uint)(ushort)*param_4; + } + } + else { + uVar9 = *param_4; + } + param_4 = param_4 + 1; + local_20 = local_5c + 1; + if (uVar9 == 0) { + if (local_c == 0) { + local_5c[1] = 0; + goto LAB_004d840a; + } + } + else { + uVar12 = uVar12 | 4; + } + FUN_004dd35c(uVar9,local_20,local_24,bVar8,local_19); +LAB_004d840a: + if ((int)local_c < 0) { +LAB_004d8548: + if ((bVar13) && (0 < (int)local_8)) { + local_2c = FUN_004d4a78(local_20); + if (*local_20 == '-') { + local_2c = local_2c + -1; + } + if ((int)local_2c < (int)local_8) { + local_14 = local_8 - local_2c; + } + } + if ((*local_20 == '-') || (local_d != '\0')) { + if (*local_20 != '-') { + local_20 = local_20 + -1; + *local_20 = local_d; + } + if ((0 < local_14) && ((int)local_c < 0)) { + local_14 = local_14 + -1; + } + } + local_2c = FUN_004d4a78(local_20); + } + else { + local_28 = FUN_004d4a78(local_20); + local_2c = local_28; + if (*local_20 == '-') { + local_28 = local_28 - 1; + } + else if (local_d != '\0') { + local_2c = local_28 + 1; + local_20 = local_20 + -1; + *local_20 = local_d; + } + if ((int)local_28 < (int)local_c) { + local_14 = local_c - local_28; + } + } +LAB_004d85b9: + if (uVar12 == 5) { + if (cVar10 == 'o') { + if (local_14 < 1) { + local_14 = 1; + } + } + else if ((cVar10 == 'x') || (cVar10 == 'X')) { + bVar4 = true; + local_8 = local_8 - 2; + local_14 = local_14 + -2; + if (local_14 < 0) { + local_14 = 0; + } + } + } + local_2c = local_2c + local_14; + if ((!bVar5) && ((int)local_2c < (int)local_8)) { + do { + FUN_004d80d0(0x20,(int)local_c0); + local_8 = local_8 - 1; + } while ((int)local_2c < (int)local_8); + } + if (bVar4) { + FUN_004d80d0(0x30,(int)local_c0); + FUN_004d80d0(cVar10,(int)local_c0); + } + if (0 < local_14) { + local_2c = local_2c - local_14; + local_8 = local_8 - local_14; + cVar10 = *local_20; + if (((cVar10 == '-') || (cVar10 == ' ')) || (cVar10 == '+')) { + cVar10 = *local_20; + local_20 = local_20 + 1; + FUN_004d80d0(cVar10,(int)local_c0); + local_2c = local_2c + -1; + local_8 = local_8 - 1; + } + while (iVar2 = local_14 + -1, bVar13 = local_14 != 0, local_14 = iVar2, bVar13) { + FUN_004d80d0(0x30,(int)local_c0); + } + } + if (local_2c != 0) { + local_8 = local_8 - local_2c; + while (local_2c != 0) { + cVar10 = *local_20; + local_2c = local_2c + -1; + local_20 = local_20 + 1; + FUN_004d80d0(cVar10,(int)local_c0); + } + local_2c = -1; + } + while (uVar12 = local_8 - 1, bVar13 = 0 < (int)local_8, local_8 = uVar12, bVar13) { + FUN_004d80d0(0x20,(int)local_c0); + } + goto LAB_004d8152; +switchD_004d81b8_caseD_13: + while( true ) { + pcVar11 = local_18 + 1; + cVar10 = *local_18; + local_18 = pcVar11; + if (cVar10 == '\0') break; + FUN_004d80d0(cVar10,(int)local_c0); + } +LAB_004d8763: + FUN_004d80a0((int)local_c0); + if (local_60 != 0) { + local_64 = 0xffffffff; + } + return local_64; +} + + + +/* @004d87e8 file=? name=FUN_004d87e8 */ + +int FUN_004d87e8(void) + +{ + int *piVar1; + int iVar2; + int iVar3; + + iVar3 = 0; + piVar1 = &DAT_0051f800; + iVar2 = DAT_0051fbc0; + while (iVar2 != 0) { + if ((*(byte *)((int)piVar1 + 0x12) & 3) != 0) { + FUN_004d6b9c(piVar1); + iVar3 = iVar3 + 1; + } + piVar1 = piVar1 + 6; + iVar2 = iVar2 + -1; + } + return iVar3; +} + + + +/* @004d8834 file=? name=FUN_004d8834 */ + +uint __cdecl FUN_004d8834(uint param_1) + +{ + uint uVar1; + DWORD DVar2; + DWORD DVar3; + DWORD DVar4; + + if (param_1 < DAT_0051fbc0) { + if (((&DAT_0051fbc4)[param_1] & 0x200) == 0) { + if (((&DAT_0051fbc4)[param_1] & 0x2000) == 0) { + DVar2 = FUN_004d9334(param_1,0,1); + if (DVar2 == 0xffffffff) { + uVar1 = 0xffffffff; + } + else { + DVar3 = FUN_004d9334(param_1,0,2); + if (DVar3 == 0xffffffff) { + uVar1 = 0xffffffff; + } + else { + DVar4 = FUN_004d9334(param_1,DVar2,0); + if (DVar4 == 0xffffffff) { + uVar1 = 0xffffffff; + } + else { + uVar1 = (uint)((int)DVar3 <= (int)DVar2); + } + } + } + } + else { + uVar1 = 0; + } + } + else { + uVar1 = 1; + } + } + else { + uVar1 = FUN_004d9148(-6); + } + return uVar1; +} + + + diff --git a/reference/decomp/archive_2025export/all/part_015.c b/reference/decomp/archive_2025export/all/part_015.c new file mode 100644 index 0000000..b0a1499 --- /dev/null +++ b/reference/decomp/archive_2025export/all/part_015.c @@ -0,0 +1,7231 @@ +/* @004d88c0 file=? name=FUN_004d88c0 */ + +char * __cdecl FUN_004d88c0(char *param_1,int param_2) + +{ + char *pcVar1; + char *pcVar2; + uint uVar3; + char *pcVar4; + char *pcVar5; + + pcVar1 = param_1 + param_2; + pcVar4 = param_1; + pcVar5 = param_1; + while( true ) { + pcVar2 = FUN_004d48f8(pcVar4,'\r',(int)pcVar1 - (int)pcVar4); + if (pcVar2 == (char *)0x0) { + pcVar2 = pcVar1; + } + uVar3 = (int)pcVar2 - (int)pcVar4; + if (pcVar5 != pcVar4) { + FUN_004d4918((undefined4 *)pcVar5,(undefined4 *)pcVar4,uVar3); + } + if (pcVar1 + -1 <= pcVar2) break; + pcVar4 = pcVar2 + 1; + pcVar5 = pcVar5 + uVar3; + } + return pcVar5 + (uVar3 - (int)param_1); +} + + + +/* @004d892c file=? name=FUN_004d892c */ + +char * __cdecl FUN_004d892c(uint param_1,char *param_2,char *param_3) + +{ + char *pcVar1; + uint uVar2; + DWORD DVar3; + char *pcVar4; + DWORD DVar5; + char *pcVar6; + + if (param_1 < DAT_0051fbc0) { + if (param_3 + 1 < (char *)0x2) { + pcVar1 = (char *)0x0; + } + else if ((*(byte *)((int)&DAT_0051fbc4 + param_1 * 4 + 1) & 0x40) == 0) { + pcVar1 = (char *)FUN_004d91c0(param_1,param_2,(DWORD)param_3); + } + else if ((*(byte *)((int)&DAT_0051fbc4 + param_1 * 4 + 1) & 2) == 0) { + pcVar1 = (char *)0x0; + if (param_3 != (char *)0x0) { + while( true ) { + uVar2 = (int)param_3 - (int)pcVar1; + DVar3 = FUN_004d91c0(param_1,param_2,uVar2); + if (DVar3 == 0xffffffff) { + return (char *)0xffffffff; + } + if (DVar3 == 0) { + return pcVar1; + } + pcVar4 = FUN_004d48f8(param_2,'\x1a',DVar3); + if (pcVar4 != (char *)0x0) { + (&DAT_0051fbc4)[param_1] = (&DAT_0051fbc4)[param_1] | 0x200; + DVar3 = (int)pcVar4 - (int)param_2; + if (DVar3 == 0) { + return pcVar1; + } + } + if ((param_2[DVar3 - 1] == '\r') && + (DVar5 = FUN_004d91c0(param_1,param_2 + (DVar3 - 1),1), DVar5 == 0xffffffff)) break; + pcVar6 = FUN_004d88c0(param_2,DVar3); + pcVar1 = pcVar1 + (int)pcVar6; + if ((DVar3 < uVar2) && ((*(byte *)((int)&DAT_0051fbc4 + param_1 * 4 + 1) & 0x20) != 0)) { + return pcVar1; + } + if (pcVar4 != (char *)0x0) { + return pcVar1; + } + if (pcVar6 != (char *)0x0) { + return pcVar1; + } + if (param_3 <= pcVar1) { + return pcVar1; + } + } + pcVar1 = (char *)0xffffffff; + } + } + else { + pcVar1 = (char *)0x0; + } + } + else { + pcVar1 = (char *)FUN_004d9148(-6); + } + return pcVar1; +} + + + +/* @004d8a5c file=? name=FUN_004d8a5c */ + +/* WARNING: Type propagation algorithm not settling */ + +int __cdecl FUN_004d8a5c(char *param_1,int *param_2,undefined4 *param_3,int param_4) + +{ + int iVar1; + char *pcVar2; + char *pcVar3; + char *pcVar4; + undefined1 *puVar5; + undefined4 *puVar6; + char *pcVar7; + int local_14; + + iVar1 = *param_2; + *param_2 = 0; + local_14 = 0; + puVar6 = param_3; + pcVar7 = param_1; + while( true ) { + pcVar4 = param_1 + (iVar1 - (int)pcVar7); + pcVar2 = FUN_004d48f8(pcVar7,'\n',(int)pcVar4); + if (pcVar2 != (char *)0x0) { + pcVar4 = pcVar2 + -(int)pcVar7; + } + pcVar3 = (char *)((int)param_3 + (param_4 - (int)puVar6)); + if (pcVar3 < pcVar4) break; + FUN_004d4918(puVar6,(undefined4 *)pcVar7,(uint)pcVar4); + puVar5 = (undefined1 *)((int)puVar6 + (int)pcVar4); + if ((pcVar2 == (char *)0x0) || ((int)param_3 + (param_4 - (int)puVar5) < 2)) { + *param_2 = (int)(pcVar4 + *param_2); +LAB_004d8b0c: + return local_14 + (int)pcVar4; + } + *puVar5 = 0xd; + puVar5[1] = 10; + puVar6 = (undefined4 *)(puVar5 + 2); + local_14 = local_14 + (int)(pcVar4 + 2); + pcVar7 = pcVar7 + (int)(pcVar4 + 1); + *param_2 = (int)(pcVar4 + 1 + *param_2); + } + FUN_004d4918(puVar6,(undefined4 *)pcVar7,(uint)pcVar3); + *param_2 = (int)(pcVar3 + *param_2); + pcVar4 = pcVar3; + goto LAB_004d8b0c; +} + + + +/* @004d8b14 file=? name=FUN_004d8b14 */ + +char * __cdecl FUN_004d8b14(uint param_1,char *param_2,char *param_3) + +{ + char *pcVar1; + char *pcVar2; + DWORD DVar3; + undefined4 local_8c [32]; + DWORD local_c; + char *local_8; + + if (param_1 < DAT_0051fbc0) { + if (param_3 + 1 < (char *)0x2) { + param_3 = (char *)0x0; + } + else { + if ((*(byte *)((int)&DAT_0051fbc4 + param_1 * 4 + 1) & 8) != 0) { + FUN_004d9334(param_1,0,2); + } + pcVar1 = param_2; + pcVar2 = param_3; + if ((*(byte *)((int)&DAT_0051fbc4 + param_1 * 4 + 1) & 0x40) == 0) { + param_3 = (char *)FUN_004d9224(param_1,param_2,(DWORD)param_3); + } + else { + for (; pcVar2 != (char *)0x0; pcVar2 = pcVar2 + -(int)local_8) { + local_8 = pcVar2; + DVar3 = FUN_004d8a5c(pcVar1,(int *)&local_8,local_8c,0x80); + local_c = FUN_004d9224(param_1,local_8c,DVar3); + if (DVar3 != local_c) { + if (local_c == 0xffffffff) { + return (char *)0xffffffff; + } + return pcVar1 + (local_c - (int)param_2); + } + pcVar1 = pcVar1 + (int)local_8; + } + } + } + } + else { + param_3 = (char *)FUN_004d9148(-6); + } + return param_3; +} + + + +/* @004d8bf4 file=? name=FUN_004d8bf4 */ + +void __cdecl FUN_004d8bf4(int *param_1) + +{ + int iVar1; + char local_108 [260]; + + GetCurrentDirectoryA(0x104,local_108); + if (local_108[0] < 'a') { + iVar1 = local_108[0] + -0x40; + } + else { + iVar1 = local_108[0] + -0x60; + } + *param_1 = iVar1; + return; +} + + + +/* @004d8c38 file=? name=FUN_004d8c38 */ + +void __cdecl FUN_004d8c38(char param_1,int *param_2) + +{ + DWORD DVar1; + BOOL BVar2; + UINT UVar3; + CHAR local_10c [260]; + CHAR local_8; + char local_7; + undefined1 local_6; + undefined1 local_5; + + *param_2 = 0; + local_8 = '='; + local_7 = param_1 + '@'; + local_6 = 0x3a; + local_5 = 0; + DVar1 = GetEnvironmentVariableA(&local_8,local_10c,0x104); + if (DVar1 == 0) { + local_10c[0] = local_7; + local_10c[1] = 0x3a; + local_10c[2] = 0x5c; + local_10c[3] = 0; + BVar2 = SetEnvironmentVariableA(&local_8,local_10c); + if (BVar2 != 1) { + FUN_004d91ac(); + return; + } + } + BVar2 = SetCurrentDirectoryA(local_10c); + if (BVar2 == 1) { + builtin_memcpy(local_10c,"A:\\",4); + for (; local_10c[0] < '['; local_10c[0] = local_10c[0] + '\x01') { + UVar3 = GetDriveTypeA(local_10c); + if ((UVar3 != 0) && (UVar3 != 1)) { + *param_2 = *param_2 + 1; + } + } + } + else { + FUN_004d91ac(); + } + return; +} + + + +/* @004d8ce0 file=? name=FUN_004d8ce0 */ + +undefined4 __cdecl FUN_004d8ce0(int param_1,int *param_2) + +{ + int *piVar1; + undefined4 uVar2; + int iVar3; + + piVar1 = FUN_004d8d20(param_1,param_2,0x100); + if (piVar1 == (int *)0x0) { + uVar2 = 0xffffffff; + } + else { + iVar3 = FUN_004d4a78((char *)((int)param_2 + 3)); + FUN_004d493c(param_2,(undefined4 *)((int)param_2 + 3),iVar3 + 1); + uVar2 = 0; + } + return uVar2; +} + + + +/* @004d8d20 file=? name=FUN_004d8d20 */ + +int * __cdecl FUN_004d8d20(int param_1,int *param_2,uint param_3) + +{ + code *pcVar1; + DWORD DVar2; + uint uVar3; + uint uVar4; + char cVar5; + int *piVar6; + char *pcVar7; + char *pcVar8; + int *piVar9; + bool bVar10; + char local_10c [260]; + CHAR local_8; + char local_7; + undefined1 local_6; + undefined1 local_5; + + if (param_1 == 0) { + DVar2 = GetCurrentDirectoryA(0x103,local_10c); + if ((DVar2 == 0) || ((int)param_3 < (int)DVar2)) { + DAT_00520bcc = 8; + return (int *)0x0; + } + } + else { + cVar5 = (char)param_1; + if (DAT_00525224 == 2) { + local_10c[0] = cVar5 + '@'; + local_10c[1] = 0x3a; + local_10c[2] = 0x5c; + local_10c[3] = 0; + bVar10 = (char *)0xfffffffc < local_10c; + pcVar1 = (code *)swi(0x21); + (*pcVar1)(); + if (bVar10) { + return (int *)0x0; + } + } + else { + DVar2 = GetLogicalDrives(); + if ((1 << (cVar5 - 1U & 0x1f) & DVar2) == 0) { + return (int *)0x0; + } + local_8 = '='; + local_7 = cVar5 + '@'; + local_6 = 0x3a; + local_5 = 0; + DVar2 = GetEnvironmentVariableA(&local_8,local_10c,0x103); + if (DVar2 == 0) { + local_10c[0] = local_7; + local_10c[1] = 0x3a; + local_10c[2] = 0x5c; + local_10c[3] = 0; + } + } + } + uVar3 = FUN_004d4a78(local_10c); + if (uVar3 < param_3) { + if ((param_2 == (int *)0x0) && (param_2 = FUN_004de55c(param_3), param_2 == (int *)0x0)) { + DAT_00520bcc = 8; + param_2 = (int *)0x0; + } + else { + uVar3 = 0xffffffff; + pcVar7 = local_10c; + do { + pcVar8 = pcVar7; + if (uVar3 == 0) break; + uVar3 = uVar3 - 1; + pcVar8 = pcVar7 + 1; + cVar5 = *pcVar7; + pcVar7 = pcVar8; + } while (cVar5 != '\0'); + uVar3 = ~uVar3; + piVar6 = (int *)(pcVar8 + -uVar3); + piVar9 = param_2; + for (uVar4 = uVar3 >> 2; uVar4 != 0; uVar4 = uVar4 - 1) { + *piVar9 = *piVar6; + piVar6 = piVar6 + 1; + piVar9 = piVar9 + 1; + } + for (uVar3 = uVar3 & 3; uVar3 != 0; uVar3 = uVar3 - 1) { + *(char *)piVar9 = (char)*piVar6; + piVar6 = (int *)((int)piVar6 + 1); + piVar9 = (int *)((int)piVar9 + 1); + } + } + } + else { + DAT_00520bcc = 0x22; + param_2 = (int *)0x0; + } + return param_2; +} + + + +/* @004d8e80 file=? name=FUN_004d8e80 */ + +int FUN_004d8e80(void) + +{ + int local_4; + + FUN_004d8bf4(&local_4); + return local_4 + -1; +} + + + +/* @004d8e90 file=? name=FUN_004d8e90 */ + +int __cdecl FUN_004d8e90(char param_1) + +{ + int local_8; + + FUN_004d8c38(param_1 + '\x01',&local_8); + return local_8; +} + + + +/* @004d8eac file=? name=FUN_004d8eac */ + +int __cdecl FUN_004d8eac(undefined4 param_1,undefined4 param_2) + +{ + int iVar1; + int *piVar2; + + iVar1 = 0; + for (piVar2 = &DAT_0051fbc4; (iVar1 < DAT_0051fbc0 && (*piVar2 != 0)); piVar2 = piVar2 + 1) { + iVar1 = iVar1 + 1; + } + if (iVar1 == DAT_0051fbc0) { + return -1; + } + (&DAT_0051fbc4)[iVar1] = param_2; + *(undefined4 *)(&DAT_00524d14 + iVar1 * 4) = param_1; + return iVar1; +} + + + +/* @004d8eec file=? name=FUN_004d8eec */ + +uint __cdecl FUN_004d8eec(uint param_1,uint param_2,undefined4 param_3) + +{ + int *piVar1; + + if (param_2 == 0xffffffff) { + param_2 = 0; + for (piVar1 = &DAT_0051fbc4; ((int)param_2 < (int)DAT_0051fbc0 && (*piVar1 != 0)); + piVar1 = piVar1 + 1) { + param_2 = param_2 + 1; + } + } + if ((param_1 < DAT_0051fbc0) && (param_2 < DAT_0051fbc0)) { + if (((&DAT_0051fbc4)[param_1] != 0) && ((&DAT_0051fbc4)[param_2] == 0)) { + (&DAT_0051fbc4)[param_2] = (&DAT_0051fbc4)[param_1]; + *(undefined4 *)(&DAT_00524d14 + param_2 * 4) = param_3; + return param_2; + } + return 0xffffffff; + } + return 0xffffffff; +} + + + +/* @004d8f54 file=? name=FUN_004d8f54 */ + +void __cdecl FUN_004d8f54(uint param_1) + +{ + if (param_1 < DAT_0051fbc0) { + (&DAT_0051fbc4)[param_1] = 0; + } + return; +} + + + +/* @004d8f70 file=? name=FUN_004d8f70 */ + +int __cdecl FUN_004d8f70(int *param_1) + +{ + uint uVar1; + int iVar2; + byte bVar3; + int *piVar4; + uint *puVar5; + byte *pbVar6; + int local_8; + + iVar2 = DAT_0051fbc0; + for (piVar4 = &DAT_0051fbc0 + DAT_0051fbc0; (iVar2 != 0 && (*piVar4 == 0)); piVar4 = piVar4 + -1) + { + iVar2 = iVar2 + -1; + } + if (param_1 == (int *)0x0) { + if (iVar2 == 0) { + iVar2 = 0; + } + else { + iVar2 = iVar2 * 5 + 4; + } + } + else { + *param_1 = iVar2; + pbVar6 = (byte *)(param_1 + 1); + local_8 = 0; + puVar5 = &DAT_0051fbc4; + if (0 < iVar2) { + do { + bVar3 = 1; + uVar1 = *puVar5; + if ((uVar1 & 0x800) != 0) { + bVar3 = 0x21; + } + if ((uVar1 & 0x8000) == 0) { + bVar3 = bVar3 | 0x80; + } + if ((uVar1 & 0x2000) != 0) { + bVar3 = bVar3 | 0x40; + } + *pbVar6 = bVar3; + pbVar6 = pbVar6 + 1; + local_8 = local_8 + 1; + puVar5 = puVar5 + 1; + } while (local_8 < iVar2); + } + FUN_004d4918((undefined4 *)pbVar6,(undefined4 *)&DAT_00524d14,iVar2 << 2); + iVar2 = 0; + } + return iVar2; +} + + + +/* @004d9004 file=? name=FUN_004d9004 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_004d9004(void) + +{ + bool bVar1; + UINT UVar2; + uint uVar3; + undefined4 *puVar4; + undefined3 extraout_var; + int iVar5; + uint uVar6; + uint uVar7; + uint *puVar8; + uint *puVar9; + _STARTUPINFOA local_50; + + UVar2 = SetHandleCount(DAT_0051fbc0); + if (UVar2 < DAT_0051fbc0) { + DAT_0051fbc0 = UVar2; + } + PTR_LAB_005201e0 = FUN_004d8f70; + bVar1 = false; + GetStartupInfoA(&local_50); + if (local_50.cbReserved2 != 0) { + uVar7 = *(uint *)local_50.lpReserved2; + puVar8 = (uint *)((int)local_50.lpReserved2 + 4); + if (uVar7 * 5 + 4 == (uint)local_50.cbReserved2) { + bVar1 = true; + iVar5 = 0; + puVar9 = &DAT_0051fbc4; + if (0 < (int)uVar7) { + do { + uVar6 = *puVar8; + puVar8 = (uint *)((int)puVar8 + 1); + uVar3 = 0; + if ((uVar6 & 0x20) != 0) { + uVar3 = 0x800; + } + if ((uVar6 & 0x40) != 0) { + uVar3 = uVar3 | 0x2000; + } + if ((uVar6 & 0x80) == 0) { + uVar3 = uVar3 | 0x8000; + } + else { + uVar3 = uVar3 | 0x4000; + } + *puVar9 = *puVar9 & 3 | uVar3; + iVar5 = iVar5 + 1; + puVar9 = puVar9 + 1; + } while (iVar5 < (int)uVar7); + } + puVar4 = &DAT_0051fbc4 + uVar7; + for (uVar6 = uVar7; uVar6 < DAT_0051fbc0; uVar6 = uVar6 + 1) { + *puVar4 = 0; + puVar4 = puVar4 + 1; + } + FUN_004d493c((undefined4 *)&DAT_00524d14,puVar8,uVar7 << 2); + } + } + if (!bVar1) { + _DAT_00524d14 = GetStdHandle(0xfffffff6); + DAT_00524d18 = GetStdHandle(0xfffffff5); + _DAT_00524d1c = GetStdHandle(0xfffffff4); + uVar7 = 0; + puVar8 = &DAT_0051fbc4; + do { + bVar1 = FUN_004d9304(uVar7); + if (CONCAT31(extraout_var,bVar1) == 0) { + *puVar8 = *puVar8 & 0xffffdfff; + } + else { + *puVar8 = *puVar8 | 0x2000; + } + uVar7 = uVar7 + 1; + puVar8 = puVar8 + 1; + } while ((int)uVar7 < 3); + } + return; +} + + + +/* @004d9148 file=? name=FUN_004d9148 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined4 __cdecl FUN_004d9148(int param_1) + +{ + if (param_1 < 0) { + if (-param_1 < DAT_0051fd3c) { + DAT_00520bcc = -param_1; + _DAT_00524dd0 = 0xffffffff; + return 0xffffffff; + } + } + else if (param_1 < 299) goto LAB_004d915e; + param_1 = 1; +LAB_004d915e: + _DAT_00524dd0 = param_1; + DAT_00520bcc = (int)(char)(&DAT_005201e8)[param_1]; + return 0xffffffff; +} + + + +/* @004d91ac file=? name=FUN_004d91ac */ + +void FUN_004d91ac(void) + +{ + DWORD DVar1; + + DVar1 = GetLastError(); + FUN_004d9148(DVar1 & 0xffff); + return; +} + + + +/* @004d91c0 file=? name=FUN_004d91c0 */ + +DWORD __cdecl FUN_004d91c0(uint param_1,LPVOID param_2,DWORD param_3) + +{ + BOOL BVar1; + DWORD local_8; + + if (param_1 < DAT_0051fbc0) { + BVar1 = ReadFile(*(HANDLE *)(&DAT_00524d14 + param_1 * 4),param_2,param_3,&local_8, + (LPOVERLAPPED)0x0); + if (BVar1 != 1) { + local_8 = FUN_004d91ac(); + } + } + else { + local_8 = FUN_004d9148(6); + } + return local_8; +} + + + +/* @004d9208 file=? name=FUN_004d9208 */ + +void __cdecl FUN_004d9208(uint param_1,LPVOID param_2,DWORD param_3) + +{ + FUN_004d91c0(param_1,param_2,param_3); + return; +} + + + +/* @004d9224 file=? name=FUN_004d9224 */ + +DWORD __cdecl FUN_004d9224(uint param_1,LPCVOID param_2,DWORD param_3) + +{ + BOOL BVar1; + DWORD local_8; + + if (param_1 < DAT_0051fbc0) { + BVar1 = WriteFile(*(HANDLE *)(&DAT_00524d14 + param_1 * 4),param_2,param_3,&local_8, + (LPOVERLAPPED)0x0); + if (BVar1 != 1) { + local_8 = FUN_004d91ac(); + } + } + else { + local_8 = FUN_004d9148(6); + } + return local_8; +} + + + +/* @004d926c file=? name=FUN_004d926c */ + +void __cdecl FUN_004d926c(uint param_1,LPCVOID param_2,DWORD param_3) + +{ + FUN_004d9224(param_1,param_2,param_3); + return; +} + + + +/* @004d9288 file=? name=FUN_004d9288 */ + +undefined4 __cdecl FUN_004d9288(LPCSTR param_1,byte param_2) + +{ + DWORD DVar1; + undefined4 uVar2; + + DVar1 = GetFileAttributesA(param_1); + if (DVar1 == 0xffffffff) { + uVar2 = FUN_004d91ac(); + return uVar2; + } + if (((param_2 & 2) != 0) && ((DVar1 & 1) != 0)) { + DAT_00520bcc = 5; + return 0xffffffff; + } + return 0; +} + + + +/* @004d92c4 file=? name=FUN_004d92c4 */ + +undefined4 __cdecl FUN_004d92c4(uint param_1) + +{ + undefined4 uVar1; + BOOL BVar2; + + if (DAT_0051fbc0 <= param_1) { + uVar1 = FUN_004d9148(6); + return uVar1; + } + BVar2 = CloseHandle(*(HANDLE *)(&DAT_00524d14 + param_1 * 4)); + if (BVar2 == 1) { + (&DAT_0051fbc4)[param_1] = 0; + return 0; + } + uVar1 = FUN_004d91ac(); + return uVar1; +} + + + +/* @004d9304 file=? name=FUN_004d9304 */ + +bool __cdecl FUN_004d9304(uint param_1) + +{ + DWORD DVar1; + + if (DAT_0051fbc0 <= param_1) { + return false; + } + DVar1 = GetFileType(*(HANDLE *)(&DAT_00524d14 + param_1 * 4)); + return DVar1 == 2; +} + + + +/* @004d9334 file=? name=FUN_004d9334 */ + +DWORD __cdecl FUN_004d9334(uint param_1,LONG param_2,int param_3) + +{ + DWORD DVar1; + + if (param_1 < DAT_0051fbc0) { + if (param_3 == 0) { + DVar1 = 0; + } + else if (param_3 == 1) { + DVar1 = 1; + } + else { + if (param_3 != 2) { + DVar1 = FUN_004d9148(1); + return DVar1; + } + DVar1 = 2; + } + (&DAT_0051fbc4)[param_1] = (&DAT_0051fbc4)[param_1] & 0xfffffdff; + DVar1 = SetFilePointer(*(HANDLE *)(&DAT_00524d14 + param_1 * 4),param_2,(PLONG)0x0,DVar1); + if (DVar1 == 0xffffffff) { + FUN_004d91ac(); + } + } + else { + DVar1 = FUN_004d9148(6); + } + return DVar1; +} + + + +/* @004d93ac file=? name=FUN_004d93ac */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +int __cdecl FUN_004d93ac(LPCSTR param_1,uint param_2,uint param_3) + +{ + bool bVar1; + uint uVar2; + int iVar3; + HANDLE hObject; + undefined3 extraout_var; + DWORD dwFlagsAndAttributes; + DWORD DVar4; + _SECURITY_ATTRIBUTES local_18; + DWORD local_c; + DWORD local_8; + + if ((param_2 & 0xc000) == 0) { + param_2 = param_2 | *(uint *)PTR_DAT_0051fc68 & 0xc000; + } + if ((param_2 & 0x8000) == 0) { + param_2 = param_2 | 0x4000; + } + uVar2 = param_2 & 0x700; + if (uVar2 < 0x501) { + if (uVar2 == 0x500) { +LAB_004d940f: + DVar4 = 1; + goto LAB_004d9430; + } + if (uVar2 == 0x100) { + DVar4 = 4; + goto LAB_004d9430; + } + if (uVar2 != 0x200) { + if (uVar2 == 0x300) { + DVar4 = 2; + goto LAB_004d9430; + } + goto LAB_004d942b; + } + } + else if (uVar2 != 0x600) { + if (uVar2 != 0x700) { +LAB_004d942b: + DVar4 = 3; + goto LAB_004d9430; + } + goto LAB_004d940f; + } + DVar4 = 5; +LAB_004d9430: + if ((param_2 & 0x100) == 0) { + dwFlagsAndAttributes = GetFileAttributesA(param_1); + if (dwFlagsAndAttributes == 0xffffffff) { + dwFlagsAndAttributes = 0; + } + } + else if ((param_3 & _DAT_005201e4 & 0x80) == 0) { + dwFlagsAndAttributes = 1; + } + else { + dwFlagsAndAttributes = 0x80; + } + uVar2 = param_2 & 3; + if (uVar2 == 0) { + local_8 = 0x80000000; + } + else if (uVar2 == 1) { + local_8 = 0x40000000; + } + else { + if (uVar2 != 2) { + iVar3 = FUN_004d9148(1); + return iVar3; + } + local_8 = 0xc0000000; + } + uVar2 = param_2 & 0x70; + if (uVar2 == 0x10) { + local_c = 0; + } + else if (uVar2 == 0x20) { + local_c = 1; + } + else if (uVar2 == 0x30) { + local_c = 2; + } + else { + local_c = 3; + } + local_18.nLength = 0xc; + local_18.lpSecurityDescriptor = (LPVOID)0x0; + local_18.bInheritHandle = (BOOL)((param_2 & 0x80) == 0); + hObject = CreateFileA(param_1,local_8,local_c,&local_18,DVar4,dwFlagsAndAttributes,(HANDLE)0x0); + if (hObject == (HANDLE)0xffffffff) { + DVar4 = GetLastError(); + uVar2 = DVar4 & 0xffff; + if ((uVar2 == 0x6e) && (uVar2 = 0x50, (param_2 & 0x100) == 0)) { + uVar2 = 2; + } + iVar3 = FUN_004d9148(uVar2); + } + else { + bVar1 = FUN_004d9304((uint)hObject); + if (CONCAT31(extraout_var,bVar1) != 0) { + param_2 = param_2 | 0x2000; + } + iVar3 = FUN_004d8eac(hObject,param_2 & 0xfffff8ff); + if (iVar3 == -1) { + FUN_004d9148(4); + CloseHandle(hObject); + } + } + return iVar3; +} + + + +/* @004d959c file=? name=FUN_004d959c */ + +undefined4 __cdecl FUN_004d959c(LPCSTR param_1) + +{ + BOOL BVar1; + undefined4 uVar2; + + BVar1 = DeleteFileA(param_1); + if (BVar1 == 1) { + uVar2 = 0; + } + else { + uVar2 = FUN_004d91ac(); + } + return uVar2; +} + + + +/* @004d9800 file=? name=FUN_004d9800 */ + +void FUN_004d9800(void) + +{ + undefined4 *puVar1; + int iVar2; + undefined4 *unaff_FS_OFFSET; + undefined4 local_30; + + FUN_004d66b8(); + puVar1 = DAT_00524ef8; + if (DAT_00524ef8 != (undefined4 *)0x0) { + iVar2 = FUN_004d67b0((int)DAT_00524ef8,0); + *DAT_00524c68 = *DAT_00524c68 + iVar2; + (**(code **)*puVar1)(puVar1,3); + } + puVar1 = DAT_00524efc; + if (DAT_00524efc != (undefined4 *)0x0) { + iVar2 = FUN_004d67b0((int)DAT_00524efc,0); + *DAT_00524c68 = *DAT_00524c68 + iVar2; + (**(code **)*puVar1)(puVar1,3); + } + puVar1 = DAT_00524f00; + if (DAT_00524f00 != (undefined4 *)0x0) { + iVar2 = FUN_004d67b0((int)DAT_00524f00,0); + *DAT_00524c68 = *DAT_00524c68 + iVar2; + (**(code **)*puVar1)(puVar1,3); + } + *unaff_FS_OFFSET = local_30; + return; +} + + + +/* @004d98e0 file=? name=FUN_004d98e0 */ + +void FUN_004d98e0(void) + +{ + undefined4 *unaff_FS_OFFSET; + undefined4 local_24; + + FUN_004d66b8(); + FUN_004daac0((undefined4 *)&DAT_00524dd4,0); + FUN_004db534(&DAT_00524e20,0); + FUN_004db534((undefined4 *)&DAT_00524e68,0); + FUN_004db534((undefined4 *)&DAT_00524eb0,0); + *unaff_FS_OFFSET = local_24; + return; +} + + + +/* @004d9c38 file=? name=FUN_004d9c38 */ + +int * __cdecl FUN_004d9c38(int *param_1) + +{ + FUN_004db92c(param_1,10); + FUN_004db6b4(param_1); + return param_1; +} + + + +/* @004d9c58 file=? name=FUN_004d9c58 */ + +int * __cdecl FUN_004d9c58(int *param_1) + +{ + FUN_004db92c(param_1,0); + return param_1; +} + + + +/* @004d9c70 file=? name=FUN_004d9c70 */ + +int * __cdecl FUN_004d9c70(int *param_1) + +{ + FUN_004db6b4(param_1); + return param_1; +} + + + +/* @004d9cc4 file=? name=FUN_004d9cc4 */ + +int * __cdecl FUN_004d9cc4(int *param_1) + +{ + bool bVar1; + int iVar2; + + if (param_1[10] == -1) { + *(undefined2 *)(param_1 + 0xc) = 0; + } + if ((short)param_1[0xc] == 0) { + param_1 = (int *)0x0; + } + else { + bVar1 = false; + if (param_1[5] == 0) { + iVar2 = 0; + } + else { + iVar2 = param_1[5] - param_1[4]; + } + if (iVar2 != 0) { + bVar1 = true; + iVar2 = (**(code **)(*param_1 + 0x18))(param_1,0xffffffff); + if (iVar2 != -1) { + bVar1 = false; + } + } + iVar2 = thunk_FUN_004d92c4(param_1[10]); + param_1[10] = -1; + *(undefined2 *)(param_1 + 0xc) = 0; + if (bVar1 || iVar2 != 0) { + param_1 = (int *)0x0; + } + } + return param_1; +} + + + +/* @004d9d34 file=? name=FUN_004d9d34 */ + +undefined4 * __cdecl FUN_004d9d34(undefined4 *param_1) + +{ + uint uVar1; + uint uVar2; + + FUN_004dc35c(param_1); + *param_1 = &PTR_FUN_0052050c; + param_1[10] = 0xffffffff; + param_1[0xb] = 0; + *(undefined2 *)(param_1 + 0xc) = 0; + *(undefined4 *)((int)param_1 + 0x32) = 0; + uVar2 = FUN_004022b0(0x204); + if (uVar2 != 0) { + FUN_004dc4fc((int)param_1,uVar2,uVar2 + 0x204,1); + uVar1 = uVar2 + 4; + FUN_004dc598((int)param_1,uVar1,uVar1); + FUN_004dc564((int)param_1,uVar2,uVar1,uVar1); + } + *DAT_00524c68 = *DAT_00524c68 + 1; + return param_1; +} + + + +/* @004d9e28 file=? name=FUN_004d9e28 */ + +void __cdecl FUN_004d9e28(int *param_1,byte param_2) + +{ + *DAT_00524c68 = *DAT_00524c68 + -1; + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_0052050c; + if (param_1[0xb] == 0) { + (**(code **)(*param_1 + 0x18))(param_1,0xffffffff); + } + else { + FUN_004d9cc4(param_1); + } + FUN_004dc48c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004d9e78 file=? name=FUN_004d9e78 */ + +undefined4 __thiscall FUN_004d9e78(void *this,int *param_1,uint param_2) + +{ + uint uVar1; + undefined1 *puVar2; + undefined4 uVar3; + char *pcVar4; + int iVar5; + undefined4 uStack_8; + + if (((short)param_1[0xc] == 0) || ((param_1[0xb] & 3U) == 1)) { + uVar3 = 0xffffffff; + } + else { + if ((*(short *)((int)param_1 + 6) == 0) && (param_1[2] != 0)) { + uStack_8 = this; + iVar5 = (**(code **)(*param_1 + 0x24))(param_1); + if (iVar5 != 0) { + return 0xffffffff; + } + iVar5 = 4; + if (param_1[3] - param_1[2] < 9) { + iVar5 = 1; + } + uVar1 = param_1[2]; + FUN_004dc598((int)param_1,iVar5 + uVar1,(param_1[3] - uVar1) + uVar1); + FUN_004dc564((int)param_1,uVar1,iVar5 + uVar1,iVar5 + uVar1); + if (param_2 != 0xffffffff) { + if ((uint)param_1[5] < (uint)param_1[6]) { + puVar2 = (undefined1 *)param_1[5]; + param_1[5] = param_1[5] + 1; + *puVar2 = (undefined1)param_2; + } + else { + (**(code **)(*param_1 + 0x18))(param_1,param_2 & 0xff); + } + param_1[8] = param_1[8] + 1; + } + } + else if (param_2 != 0xffffffff) { + uStack_8 = (void *)CONCAT13((undefined1)param_2,(int3)this); + pcVar4 = thunk_FUN_004d8b14(param_1[10],(char *)((int)&uStack_8 + 3),(char *)0x1); + if (pcVar4 != (char *)0x1) { + return 0xffffffff; + } + } + uVar3 = 1; + } + return uVar3; +} + + + +/* @004d9f60 file=? name=FUN_004d9f60 */ + +int __cdecl FUN_004d9f60(int param_1,LPCSTR param_2,uint param_3,uint param_4) + +{ + uint uVar1; + uint uVar2; + int iVar3; + DWORD DVar4; + + if ((*(short *)(param_1 + 0x30) == 0) && (param_3 != 0)) { + if ((param_3 & 2) == 0) { + if ((param_3 & 1) == 0) { + return 0; + } + uVar2 = 0; + } + else { + if ((param_3 & 1) == 0) { + uVar1 = 1; + } + else { + uVar1 = 2; + } + uVar2 = uVar1; + if (((param_3 & 0x20) == 0) && (uVar2 = uVar1 | 0x100, (param_3 & 0x40) != 0)) { + uVar2 = uVar1 | 0x500; + } + if ((param_3 & 0x10) != 0) { + uVar2 = uVar2 | 0x200; + } + } + if ((param_3 & 0x80) == 0) { + uVar2 = uVar2 | 0x4000; + } + else { + uVar2 = uVar2 | 0x8000; + } + if ((param_3 & 8) != 0) { + uVar2 = uVar2 | 0x800; + } + uVar2 = thunk_FUN_004d93ac(param_2,uVar2,param_4); + if (uVar2 == 0xffffffff) { + param_1 = 0; + } + else { + *(uint *)(param_1 + 0x28) = uVar2; + *(undefined2 *)(param_1 + 0x30) = 1; + *(uint *)(param_1 + 0x2c) = param_3; + iVar3 = 2; + if ((param_3 & 4) == 0) { + iVar3 = 0; + } + DVar4 = thunk_FUN_004d9334(uVar2,0,iVar3); + *(DWORD *)(param_1 + 0x32) = DVar4; + if (*(int *)(param_1 + 0x32) == -1) { + param_1 = 0; + } + else { + uVar2 = *(uint *)(param_1 + 8); + if (uVar2 == 0) { + iVar3 = 0; + } + else { + iVar3 = 4; + if (*(int *)(param_1 + 0xc) - *(int *)(param_1 + 8) < 9) { + iVar3 = 1; + } + } + FUN_004dc598(param_1,iVar3 + uVar2,iVar3 + uVar2); + FUN_004dc564(param_1,uVar2,iVar3 + uVar2,iVar3 + uVar2); + } + } + } + else { + param_1 = 0; + } + return param_1; +} + + + +/* @004da44c file=? name=FUN_004da44c */ + +void __cdecl FUN_004da44c(int *param_1) + +{ + int *piVar1; + + piVar1 = FUN_004d9cc4(param_1 + 2); + if (piVar1 != (int *)0x0) { + FUN_004dc680(*param_1,0); + return; + } + FUN_004dc80c(*param_1,2); + return; +} + + + +/* @004da484 file=? name=FUN_004da484 */ + +int * __cdecl FUN_004da484(int *param_1,short param_2) + +{ + if (param_2 == 0) { + *param_1 = (int)(param_1 + 0x11); + FUN_004dc6bc(param_1 + 0x11); + } + param_1[1] = (int)&PTR_FUN_00520550; + *(undefined ***)*param_1 = &PTR_LAB_0052055c; + FUN_004d9d34(param_1 + 2); + FUN_004dc738(*param_1,param_1 + 2); + *DAT_00524c68 = *DAT_00524c68 + 1; + return param_1; +} + + + +/* @004da538 file=? name=FUN_004da538 */ + +int * __cdecl FUN_004da538(int *param_1,short param_2,LPCSTR param_3,uint param_4,uint param_5) + +{ + if (param_2 == 0) { + *param_1 = (int)(param_1 + 0x11); + FUN_004dc6bc(param_1 + 0x11); + } + param_1[1] = (int)&PTR_FUN_00520550; + *(undefined ***)*param_1 = &PTR_LAB_0052055c; + FUN_004d9d34(param_1 + 2); + FUN_004dc738(*param_1,param_1 + 2); + FUN_004da5f8(param_1,param_3,param_4,param_5); + *DAT_00524c68 = *DAT_00524c68 + 1; + return param_1; +} + + + +/* @004da59c file=? name=FUN_004da59c */ + +void __cdecl FUN_004da59c(int *param_1,uint param_2) + +{ + *DAT_00524c68 = *DAT_00524c68 + -1; + if (param_1 != (int *)0x0) { + param_1[1] = (int)&PTR_FUN_00520550; + *(undefined ***)*param_1 = &PTR_LAB_0052055c; + FUN_004d9e28(param_1 + 2,2); + if ((param_2 & 2) != 0) { + FUN_004dc6d8(param_1 + 0x11,0); + } + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004da5f8 file=? name=FUN_004da5f8 */ + +void __cdecl FUN_004da5f8(int *param_1,LPCSTR param_2,uint param_3,uint param_4) + +{ + int iVar1; + + if ((param_3 & 8) == 0) { + if ((param_3 & 0xf) == 2) { + param_3 = param_3 | 0x10; + } + } + else { + param_3 = param_3 | 2; + } + if ((short)param_1[0xe] == 0) { + iVar1 = FUN_004d9f60((int)(param_1 + 2),param_2,param_3,param_4); + if (iVar1 == 0) { + FUN_004dc680(*param_1,4); + } + else { + FUN_004dc680(*param_1,0); + } + } + else { + FUN_004dc680(*param_1,2); + } + return; +} + + + +/* @004da66c file=? name=FUN_004da66c */ + +int * __cdecl FUN_004da66c(int *param_1,short param_2,LPCSTR param_3,uint param_4,uint param_5) + +{ + int *piVar1; + + if (param_2 == 0) { + piVar1 = param_1 + 0x14; + *param_1 = (int)piVar1; + param_1[0x11] = (int)piVar1; + FUN_004dc6bc(piVar1); + } + FUN_004da538(param_1,1,param_3,param_4 | 1,param_5); + FUN_004daa7c(param_1 + 0x11,1); + param_1[1] = (int)&PTR_FUN_0052056c; + param_1[0x12] = (int)&PTR_LAB_00520578; + *(undefined ***)*param_1 = &PTR_LAB_00520584; + *DAT_00524c68 = *DAT_00524c68 + 1; + return param_1; +} + + + +/* @004da754 file=? name=FUN_004da754 */ + +void __cdecl FUN_004da754(int *param_1,uint param_2) + +{ + *DAT_00524c68 = *DAT_00524c68 + -1; + if (param_1 != (int *)0x0) { + param_1[1] = (int)&PTR_FUN_0052056c; + param_1[0x12] = (int)&PTR_LAB_00520578; + *(undefined ***)*param_1 = &PTR_LAB_00520584; + FUN_004dabf8(param_1 + 0x11,0); + FUN_004da59c(param_1,0); + if ((param_2 & 2) != 0) { + FUN_004dc6d8(param_1 + 0x14,0); + } + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004da7c0 file=? name=FUN_004da7c0 */ + +int * __cdecl FUN_004da7c0(int *param_1,short param_2) + +{ + int *piVar1; + + if (param_2 == 0) { + piVar1 = param_1 + 0x16; + *param_1 = (int)piVar1; + param_1[0x11] = (int)piVar1; + param_1[0x14] = (int)piVar1; + FUN_004dc6bc(piVar1); + } + FUN_004da484(param_1,1); + FUN_004da988(param_1 + 0x11,1); + param_1[1] = (int)&PTR_FUN_00520594; + param_1[0x12] = (int)&PTR_LAB_005205a0; + param_1[0x15] = (int)&PTR_LAB_005205ac; + *(undefined ***)*param_1 = &PTR_LAB_005205b8; + *DAT_00524c68 = *DAT_00524c68 + 1; + return param_1; +} + + + +/* @004da914 file=? name=FUN_004da914 */ + +void __cdecl FUN_004da914(int *param_1,uint param_2) + +{ + *DAT_00524c68 = *DAT_00524c68 + -1; + if (param_1 != (int *)0x0) { + param_1[1] = (int)&PTR_FUN_00520594; + param_1[0x12] = (int)&PTR_LAB_005205a0; + param_1[0x15] = (int)&PTR_LAB_005205ac; + *(undefined ***)*param_1 = &PTR_LAB_005205b8; + FUN_004da9f4(param_1 + 0x11,0); + FUN_004da59c(param_1,0); + if ((param_2 & 2) != 0) { + FUN_004dc6d8(param_1 + 0x16,0); + } + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004da988 file=? name=FUN_004da988 */ + +undefined4 * __cdecl FUN_004da988(undefined4 *param_1,short param_2) + +{ + undefined4 *puVar1; + + if (param_2 == 0) { + puVar1 = param_1 + 5; + *param_1 = puVar1; + param_1[3] = puVar1; + FUN_004dc6bc(puVar1); + } + FUN_004daa7c(param_1,1); + FUN_004db4b0(param_1 + 3,1); + param_1[1] = &PTR_FUN_005205c8; + param_1[4] = &PTR_LAB_005205d4; + *(undefined ***)*param_1 = &PTR_LAB_005205e0; + *DAT_00524c68 = *DAT_00524c68 + 1; + return param_1; +} + + + +/* @004da9f4 file=? name=FUN_004da9f4 */ + +void __cdecl FUN_004da9f4(int *param_1,uint param_2) + +{ + *DAT_00524c68 = *DAT_00524c68 + -1; + if (param_1 != (int *)0x0) { + param_1[1] = (int)&PTR_FUN_005205c8; + param_1[4] = (int)&PTR_LAB_005205d4; + *(undefined ***)*param_1 = &PTR_LAB_005205e0; + FUN_004db580(param_1 + 3,0); + FUN_004dabf8(param_1,0); + if ((param_2 & 2) != 0) { + FUN_004dc6d8(param_1 + 5,0); + } + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004daa60 file=? name=FUN_004daa60 */ + +int * __cdecl FUN_004daa60(int *param_1,undefined4 param_2) + +{ + FUN_004dc738(*param_1,param_2); + return param_1; +} + + + +/* @004daa7c file=? name=FUN_004daa7c */ + +undefined4 * __cdecl FUN_004daa7c(undefined4 *param_1,short param_2) + +{ + if (param_2 == 0) { + *param_1 = param_1 + 3; + FUN_004dc6bc(param_1 + 3); + } + param_1[1] = &PTR_FUN_005205f0; + *(undefined ***)*param_1 = &PTR_LAB_005205fc; + param_1[2] = 0; + *DAT_00524c68 = *DAT_00524c68 + 1; + return param_1; +} + + + +/* @004daac0 file=? name=FUN_004daac0 */ + +undefined4 * __cdecl FUN_004daac0(undefined4 *param_1,short param_2) + +{ + if (param_2 == 0) { + *param_1 = param_1 + 3; + FUN_004dc6bc(param_1 + 3); + } + FUN_004daa7c(param_1,1); + param_1[1] = &PTR_FUN_0052060c; + *(undefined ***)*param_1 = &PTR_LAB_00520618; + *DAT_00524c68 = *DAT_00524c68 + 1; + return param_1; +} + + + +/* @004dab0c file=? name=FUN_004dab0c */ + +uint __cdecl FUN_004dab0c(int *param_1) + +{ + int *piVar1; + byte *pbVar2; + int iVar3; + uint uVar4; + + piVar1 = *(int **)(*param_1 + 4); + if ((uint)piVar1[9] <= (uint)piVar1[8]) { + iVar3 = (**(code **)(*piVar1 + 0xc))(piVar1); + if (iVar3 == -1) { + uVar4 = 0xffffffff; + goto LAB_004dab3f; + } + } + pbVar2 = *(byte **)(*(int *)(*param_1 + 4) + 0x20); + piVar1 = (int *)(*(int *)(*param_1 + 4) + 0x20); + *piVar1 = *piVar1 + 1; + uVar4 = (uint)*pbVar2; +LAB_004dab3f: + if (uVar4 == 0xffffffff) { + FUN_004dc80c(*param_1,3); + } + else { + param_1[2] = param_1[2] + 1; + } + return uVar4; +} + + + +/* @004dab60 file=? name=FUN_004dab60 */ + +bool __cdecl FUN_004dab60(int *param_1,int param_2) + +{ + int iVar1; + + param_1[2] = 0; + if (*(int *)(*param_1 + 0xc) != 0) { + FUN_004dc80c(*param_1,2); + return false; + } + if (*(int *)(*param_1 + 8) != 0) { + if (param_2 != 0) { + if (*(uint *)(*(int *)(*param_1 + 4) + 0x20) < *(uint *)(*(int *)(*param_1 + 4) + 0x24)) { + iVar1 = *(int *)(*(int *)(*param_1 + 4) + 0x24) - *(int *)(*(int *)(*param_1 + 4) + 0x20); + } + else { + iVar1 = 0; + } + if (param_2 <= iVar1) goto LAB_004dabbf; + } + FUN_004db6b4(*(int **)(*param_1 + 8)); + } +LAB_004dabbf: + if ((param_2 == 0) && ((*(byte *)(*param_1 + 0x11) & 1) != 0)) { + FUN_004dac9c(param_1); + if (*(int *)(*param_1 + 0xc) != 0) { + FUN_004dc80c(*param_1,2); + } + } + return *(int *)(*param_1 + 0xc) == 0; +} + + + +/* @004dabf8 file=? name=FUN_004dabf8 */ + +void __cdecl FUN_004dabf8(int *param_1,uint param_2) + +{ + *DAT_00524c68 = *DAT_00524c68 + -1; + if (param_1 != (int *)0x0) { + param_1[1] = (int)&PTR_FUN_005205f0; + *(undefined ***)*param_1 = &PTR_LAB_005205fc; + if ((param_2 & 2) != 0) { + FUN_004dc6d8(param_1 + 3,0); + } + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004dac44 file=? name=FUN_004dac44 */ + +void __cdecl FUN_004dac44(int *param_1,uint param_2) + +{ + *DAT_00524c68 = *DAT_00524c68 + -1; + if (param_1 != (int *)0x0) { + param_1[1] = (int)&PTR_FUN_0052060c; + *(undefined ***)*param_1 = &PTR_LAB_00520618; + FUN_004dabf8(param_1,0); + if ((param_2 & 2) != 0) { + FUN_004dc6d8(param_1 + 3,0); + } + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004dac9c file=? name=FUN_004dac9c */ + +void __cdecl FUN_004dac9c(int *param_1) + +{ + int *piVar1; + uint uVar2; + + while( true ) { + if (*(uint *)(*(int *)(*param_1 + 4) + 0x20) < *(uint *)(*(int *)(*param_1 + 4) + 0x24)) { + uVar2 = (uint)**(byte **)(*(int *)(*param_1 + 4) + 0x20); + } + else { + uVar2 = (**(code **)(**(int **)(*param_1 + 4) + 0xc))(*(undefined4 *)(*param_1 + 4)); + } + if (((&DAT_005207dd)[uVar2] & 1) == 0) break; + piVar1 = *(int **)(*param_1 + 4); + if ((uint)piVar1[8] < (uint)piVar1[9]) { + piVar1[8] = piVar1[8] + 1; + } + else { + (**(code **)(*piVar1 + 0xc))(piVar1); + } + param_1[2] = param_1[2] + 1; + } + if (uVar2 == 0xffffffff) { + FUN_004dc80c(*param_1,1); + } + return; +} + + + +/* @004dad10 file=? name=FUN_004dad10 */ + +int * __cdecl FUN_004dad10(int *param_1,undefined1 *param_2,int param_3,byte param_4) + +{ + int *piVar1; + bool bVar2; + undefined3 extraout_var; + uint uVar3; + undefined1 *puVar4; + + bVar2 = FUN_004dab60(param_1,1); + puVar4 = param_2; + if (CONCAT31(extraout_var,bVar2) != 0) { + uVar3 = 0; + while (param_3 = param_3 + -1, 0 < param_3) { + if (*(uint *)(*(int *)(*param_1 + 4) + 0x20) < *(uint *)(*(int *)(*param_1 + 4) + 0x24)) { + uVar3 = (uint)**(byte **)(*(int *)(*param_1 + 4) + 0x20); + } + else { + uVar3 = (**(code **)(**(int **)(*param_1 + 4) + 0xc))(*(undefined4 *)(*param_1 + 4)); + } + if (uVar3 == 0xffffffff) break; + param_1[2] = param_1[2] + 1; + piVar1 = *(int **)(*param_1 + 4); + if ((uint)piVar1[8] < (uint)piVar1[9]) { + piVar1[8] = piVar1[8] + 1; + } + else { + (**(code **)(*piVar1 + 0xc))(piVar1); + } + if (uVar3 == param_4) break; + *puVar4 = (char)uVar3; + puVar4 = puVar4 + 1; + } + if (uVar3 == 0xffffffff) { + uVar3 = 3; + if (puVar4 != param_2) { + uVar3 = 1; + } + FUN_004dc80c(*param_1,uVar3); + } + } + *puVar4 = 0; + return param_1; +} + + + +/* @004dadcc file=? name=FUN_004dadcc */ + +int * __cdecl FUN_004dadcc(int *param_1,undefined1 *param_2) + +{ + int *piVar1; + undefined1 *puVar2; + bool bVar3; + undefined1 uVar4; + undefined3 extraout_var; + int iVar5; + uint uVar6; + + bVar3 = FUN_004dab60(param_1,1); + if (CONCAT31(extraout_var,bVar3) == 0) { + FUN_004dc80c(*param_1,2); + return param_1; + } + if (*(uint *)(*(int *)(*param_1 + 4) + 0x20) < *(uint *)(*(int *)(*param_1 + 4) + 0x24)) { + iVar5 = *(int *)(*(int *)(*param_1 + 4) + 0x24) - *(int *)(*(int *)(*param_1 + 4) + 0x20); + } + else { + iVar5 = 0; + } + if (iVar5 != 0) { + param_1[2] = 1; + piVar1 = *(int **)(*param_1 + 4); + if (((uint)piVar1[8] < (uint)piVar1[9]) || + (iVar5 = (**(code **)(*piVar1 + 0xc))(piVar1), iVar5 != -1)) { + puVar2 = *(undefined1 **)(*(int *)(*param_1 + 4) + 0x20); + piVar1 = (int *)(*(int *)(*param_1 + 4) + 0x20); + *piVar1 = *piVar1 + 1; + uVar4 = *puVar2; + } + else { + uVar4 = 0xff; + } + *param_2 = uVar4; + return param_1; + } + uVar6 = FUN_004dab0c(param_1); + *param_2 = (char)uVar6; + return param_1; +} + + + +/* @004dae60 file=? name=FUN_004dae60 */ + +int * __cdecl FUN_004dae60(int *param_1,undefined1 *param_2,int param_3) + +{ + int *piVar1; + bool bVar2; + undefined3 extraout_var; + uint uVar3; + + bVar2 = FUN_004dab60(param_1,1); + if (CONCAT31(extraout_var,bVar2) != 0) { + uVar3 = 0; + while( true ) { + param_3 = param_3 + -1; + if (param_3 < 0) break; + if (*(uint *)(*(int *)(*param_1 + 4) + 0x20) < *(uint *)(*(int *)(*param_1 + 4) + 0x24)) { + uVar3 = (uint)**(byte **)(*(int *)(*param_1 + 4) + 0x20); + } + else { + uVar3 = (**(code **)(**(int **)(*param_1 + 4) + 0xc))(*(undefined4 *)(*param_1 + 4)); + } + if (uVar3 == 0xffffffff) break; + *param_2 = (char)uVar3; + param_2 = param_2 + 1; + param_1[2] = param_1[2] + 1; + piVar1 = *(int **)(*param_1 + 4); + if ((uint)piVar1[8] < (uint)piVar1[9]) { + piVar1[8] = piVar1[8] + 1; + } + else { + (**(code **)(*piVar1 + 0xc))(piVar1); + } + } + if (uVar3 == 0xffffffff) { + uVar3 = 3; + if (param_3 < 0) { + uVar3 = 1; + } + FUN_004dc80c(*param_1,uVar3); + } + } + return param_1; +} + + + +/* @004daf00 file=? name=FUN_004daf00 */ + +int * __cdecl FUN_004daf00(int *param_1,undefined4 param_2,undefined4 param_3) + +{ + int iVar1; + + if (((*(byte *)(*param_1 + 0xc) & 0x84) == 0) && + (iVar1 = (**(code **)(**(int **)(*param_1 + 4) + 0x1c)) + (*(int **)(*param_1 + 4),param_2,param_3,1), iVar1 != -1)) { + return param_1; + } + FUN_004dc80c(*param_1,2); + return param_1; +} + + + +/* @004daf40 file=? name=FUN_004daf40 */ + +int * __cdecl FUN_004daf40(int *param_1,undefined4 param_2) + +{ + int iVar1; + + if (((*(byte *)(*param_1 + 0xc) & 0x84) == 0) && + (iVar1 = (**(code **)(**(int **)(*param_1 + 4) + 0x20))(*(int **)(*param_1 + 4),param_2,1), + iVar1 != -1)) { + return param_1; + } + FUN_004dc80c(*param_1,2); + return param_1; +} + + + +/* @004daf7c file=? name=FUN_004daf7c */ + +int __cdecl FUN_004daf7c(int *param_1) + +{ + int iVar1; + + iVar1 = -1; + if (((*(byte *)(*param_1 + 0xc) & 0x84) == 0) && + (iVar1 = (**(code **)(**(int **)(*param_1 + 4) + 0x1c))(*(undefined4 *)(*param_1 + 4),0,1,1), + iVar1 != -1)) { + return iVar1; + } + FUN_004dc80c(*param_1,2); + return iVar1; +} + + + +/* @004dafd8 file=? name=FUN_004dafd8 */ + +void __cdecl FUN_004dafd8(undefined4 *param_1,undefined4 param_2) + +{ + *param_1 = &LAB_004dafc4; + param_1[1] = param_2; + return; +} + + + +/* @004dafec file=? name=FUN_004dafec */ + +void __cdecl FUN_004dafec(int param_1,undefined4 param_2) + +{ + *(undefined4 *)(param_1 + 0x1c) = param_2; + return; +} + + + +/* @004db000 file=? name=FUN_004db000 */ + +void __cdecl FUN_004db000(undefined4 *param_1,undefined4 param_2) + +{ + *param_1 = FUN_004dafec; + param_1[1] = param_2; + return; +} + + + +/* @004db014 file=? name=FUN_004db014 */ + +int * __cdecl FUN_004db014(int *param_1,short param_2) + +{ + int *piVar1; + + if (param_2 == 0) { + piVar1 = param_1 + 0x13; + *param_1 = (int)piVar1; + param_1[0x11] = (int)piVar1; + FUN_004dc6bc(piVar1); + } + FUN_004da484(param_1,1); + FUN_004db4b0(param_1 + 0x11,1); + param_1[1] = (int)&PTR_FUN_00520628; + param_1[0x12] = (int)&PTR_LAB_00520634; + *(undefined ***)*param_1 = &PTR_LAB_00520640; + *DAT_00524c68 = *DAT_00524c68 + 1; + return param_1; +} + + + +/* @004db0ec file=? name=FUN_004db0ec */ + +void __cdecl FUN_004db0ec(int *param_1,uint param_2) + +{ + *DAT_00524c68 = *DAT_00524c68 + -1; + if (param_1 != (int *)0x0) { + param_1[1] = (int)&PTR_FUN_00520628; + param_1[0x12] = (int)&PTR_LAB_00520634; + *(undefined ***)*param_1 = &PTR_LAB_00520640; + FUN_004db580(param_1 + 0x11,0); + FUN_004da59c(param_1,0); + if ((param_2 & 2) != 0) { + FUN_004dc6d8(param_1 + 0x13,0); + } + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004db158 file=? name=FUN_004db158 */ + +int * __cdecl FUN_004db158(int *param_1,short param_2,char *param_3,int param_4,byte param_5) + +{ + undefined4 *puVar1; + int iVar2; + undefined4 uVar3; + undefined4 uVar4; + + if (param_2 == 0) { + puVar1 = (undefined4 *)((int)param_1 + 0x46); + *param_1 = (int)puVar1; + *(undefined4 **)((int)param_1 + 0x3e) = puVar1; + FUN_004dc6bc(puVar1); + } + FUN_004dc260(param_1,1,param_3,param_4,param_3); + FUN_004db4f0((int *)((int)param_1 + 0x3e),1,param_1 + 2); + param_1[1] = (int)&PTR_FUN_00520650; + *(undefined ***)((int)param_1 + 0x42) = &PTR_LAB_0052065c; + *(undefined ***)*param_1 = &PTR_LAB_00520668; + if ((param_5 & 0xc) != 0) { + uVar4 = 2; + uVar3 = 0; + iVar2 = FUN_004d4a78(param_3); + (**(code **)(param_1[2] + 0x1c))(param_1 + 2,iVar2,uVar3,uVar4); + } + *DAT_00524c68 = *DAT_00524c68 + 1; + return param_1; +} + + + +/* @004db1e0 file=? name=FUN_004db1e0 */ + +int * __cdecl FUN_004db1e0(int *param_1,short param_2,char *param_3,int param_4,byte param_5) + +{ + undefined4 *puVar1; + int iVar2; + undefined4 uVar3; + undefined4 uVar4; + + if (param_2 == 0) { + puVar1 = (undefined4 *)((int)param_1 + 0x46); + *param_1 = (int)puVar1; + *(undefined4 **)((int)param_1 + 0x3e) = puVar1; + FUN_004dc6bc(puVar1); + } + FUN_004dc260(param_1,1,param_3,param_4,param_3); + FUN_004db4f0((int *)((int)param_1 + 0x3e),1,param_1 + 2); + param_1[1] = (int)&PTR_FUN_00520650; + *(undefined ***)((int)param_1 + 0x42) = &PTR_LAB_0052065c; + *(undefined ***)*param_1 = &PTR_LAB_00520668; + if ((param_5 & 0xc) != 0) { + uVar4 = 2; + uVar3 = 0; + iVar2 = FUN_004d4a78(param_3); + (**(code **)(param_1[2] + 0x1c))(param_1 + 2,iVar2,uVar3,uVar4); + } + *DAT_00524c68 = *DAT_00524c68 + 1; + return param_1; +} + + + +/* @004db268 file=? name=FUN_004db268 */ + +int * __cdecl FUN_004db268(int *param_1,short param_2,char *param_3,int param_4,byte param_5) + +{ + undefined4 *puVar1; + int iVar2; + undefined4 uVar3; + undefined4 uVar4; + + if (param_2 == 0) { + puVar1 = (undefined4 *)((int)param_1 + 0x46); + *param_1 = (int)puVar1; + *(undefined4 **)((int)param_1 + 0x3e) = puVar1; + FUN_004dc6bc(puVar1); + } + FUN_004dc260(param_1,1,param_3,param_4,param_3); + FUN_004db4f0((int *)((int)param_1 + 0x3e),1,param_1 + 2); + param_1[1] = (int)&PTR_FUN_00520650; + *(undefined ***)((int)param_1 + 0x42) = &PTR_LAB_0052065c; + *(undefined ***)*param_1 = &PTR_LAB_00520668; + if ((param_5 & 0xc) != 0) { + uVar4 = 2; + uVar3 = 0; + iVar2 = FUN_004d4a78(param_3); + (**(code **)(param_1[2] + 0x1c))(param_1 + 2,iVar2,uVar3,uVar4); + } + *DAT_00524c68 = *DAT_00524c68 + 1; + return param_1; +} + + + +/* @004db428 file=? name=FUN_004db428 */ + +void __cdecl FUN_004db428(int *param_1,uint param_2) + +{ + *DAT_00524c68 = *DAT_00524c68 + -1; + if (param_1 != (int *)0x0) { + param_1[1] = (int)&PTR_FUN_00520650; + *(undefined ***)((int)param_1 + 0x42) = &PTR_LAB_0052065c; + *(undefined ***)*param_1 = &PTR_LAB_00520668; + FUN_004db580((int *)((int)param_1 + 0x3e),0); + FUN_004dc2c8(param_1,0); + if ((param_2 & 2) != 0) { + FUN_004dc6d8((int *)((int)param_1 + 0x46),0); + } + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004db494 file=? name=FUN_004db494 */ + +int * __cdecl FUN_004db494(int *param_1,undefined4 param_2) + +{ + FUN_004dc738(*param_1,param_2); + return param_1; +} + + + +/* @004db4b0 file=? name=FUN_004db4b0 */ + +undefined4 * __cdecl FUN_004db4b0(undefined4 *param_1,short param_2) + +{ + if (param_2 == 0) { + *param_1 = param_1 + 2; + FUN_004dc6bc(param_1 + 2); + } + param_1[1] = &PTR_FUN_00520678; + *(undefined ***)*param_1 = &PTR_LAB_00520684; + *DAT_00524c68 = *DAT_00524c68 + 1; + return param_1; +} + + + +/* @004db4f0 file=? name=FUN_004db4f0 */ + +int * __cdecl FUN_004db4f0(int *param_1,short param_2,undefined4 param_3) + +{ + undefined4 *puVar1; + + if (param_2 == 0) { + *param_1 = (int)(param_1 + 2); + FUN_004dc6bc(param_1 + 2); + } + param_1[1] = (int)&PTR_FUN_00520678; + puVar1 = (undefined4 *)*param_1; + *puVar1 = &PTR_LAB_00520684; + FUN_004dc738((int)puVar1,param_3); + *DAT_00524c68 = *DAT_00524c68 + 1; + return param_1; +} + + + +/* @004db534 file=? name=FUN_004db534 */ + +undefined4 * __cdecl FUN_004db534(undefined4 *param_1,short param_2) + +{ + if (param_2 == 0) { + *param_1 = param_1 + 2; + FUN_004dc6bc(param_1 + 2); + } + FUN_004db4b0(param_1,1); + param_1[1] = &PTR_FUN_00520694; + *(undefined ***)*param_1 = &PTR_LAB_005206a0; + *DAT_00524c68 = *DAT_00524c68 + 1; + return param_1; +} + + + +/* @004db580 file=? name=FUN_004db580 */ + +void __cdecl FUN_004db580(int *param_1,uint param_2) + +{ + undefined4 *puVar1; + + *DAT_00524c68 = *DAT_00524c68 + -1; + if (param_1 != (int *)0x0) { + param_1[1] = (int)&PTR_FUN_00520678; + puVar1 = (undefined4 *)*param_1; + *puVar1 = &PTR_LAB_00520684; + if (puVar1[1] != 0) { + FUN_004db6b4(param_1); + } + if ((param_2 & 2) != 0) { + FUN_004dc6d8(param_1 + 2,0); + } + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004db5dc file=? name=FUN_004db5dc */ + +void __cdecl FUN_004db5dc(int *param_1,uint param_2) + +{ + *DAT_00524c68 = *DAT_00524c68 + -1; + if (param_1 != (int *)0x0) { + param_1[1] = (int)&PTR_FUN_00520694; + *(undefined ***)*param_1 = &PTR_LAB_005206a0; + FUN_004db580(param_1,0); + if ((param_2 & 2) != 0) { + FUN_004dc6d8(param_1 + 2,0); + } + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004db634 file=? name=FUN_004db634 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +int * __cdecl FUN_004db634(int *param_1,float10 param_2) + +{ + char *pcVar1; + char local_40 [60]; + + pcVar1 = (char *)0x0; + if (((float10)_DAT_004db6b0 <= param_2) && ((*(byte *)(*param_1 + 0x19) & 4) != 0)) { + pcVar1 = &DAT_005206a4; + } + thunk_FUN_004dd24c(); + FUN_004dbb24(param_1,local_40,pcVar1); + return param_1; +} + + + +/* @004db6b4 file=? name=FUN_004db6b4 */ + +int * __cdecl FUN_004db6b4(int *param_1) + +{ + int iVar1; + + iVar1 = (**(code **)(**(int **)(*param_1 + 4) + 0x24))(*(int **)(*param_1 + 4)); + if (iVar1 == -1) { + FUN_004dc80c(*param_1,4); + } + return param_1; +} + + + +/* @004db6e0 file=? name=FUN_004db6e0 */ + +char * __cdecl FUN_004db6e0(char *param_1,uint param_2) + +{ + *param_1 = '\0'; + do { + param_1 = param_1 + -1; + *param_1 = (char)((ulonglong)param_2 % 10) + '0'; + param_2 = param_2 / 10; + } while (param_2 != 0); + return param_1; +} + + + +/* @004db718 file=? name=FUN_004db718 */ + +char * __cdecl FUN_004db718(char *param_1,uint param_2) + +{ + *param_1 = '\0'; + do { + param_1 = param_1 + -1; + *param_1 = ((byte)param_2 & 7) + 0x30; + param_2 = param_2 / 8; + } while (param_2 != 0); + return param_1; +} + + + +/* @004db748 file=? name=FUN_004db748 */ + +undefined1 * __cdecl FUN_004db748(undefined1 *param_1,uint param_2,int param_3) + +{ + char *pcVar1; + + if (param_3 == 0) { + pcVar1 = s_0123456789abcdef0123456789ABCDEF_005206a8; + } + else { + pcVar1 = s_0123456789abcdef0123456789ABCDEF_005206a8 + 0x10; + } + *param_1 = 0; + do { + param_1 = param_1 + -1; + *param_1 = pcVar1[param_2 & 0xf]; + param_2 = param_2 / 0x10; + } while (param_2 != 0); + return param_1; +} + + + +/* @004db78c file=? name=FUN_004db78c */ + +int * __cdecl FUN_004db78c(int *param_1,uint param_2) + +{ + int iVar1; + char *pcVar2; + char *pcVar3; + char local_d; + uint local_c; + int local_8; + + pcVar3 = (char *)0x0; + if ((*(byte *)(*param_1 + 0x18) & 0x40) == 0) { + iVar1 = 8; + if ((*(byte *)(*param_1 + 0x18) & 0x20) == 0) { + iVar1 = 10; + } + } + else { + iVar1 = 0x10; + } + if ((iVar1 == 10) && ((int)param_2 < 0)) { + local_8 = 1; + } + else { + local_8 = 0; + } + if (local_8 != 0) { + param_2 = -param_2; + } + if (iVar1 == 10) { + pcVar2 = FUN_004db6e0(&local_d,param_2); + if (param_2 != 0) { + if (local_8 == 0) { + if ((*(byte *)(*param_1 + 0x19) & 4) != 0) { + pcVar3 = &DAT_005206ca; + } + } + else { + pcVar3 = s_0123456789abcdef0123456789ABCDEF_005206a8 + 0x20; + } + } + } + else if (iVar1 == 0x10) { + local_c = (uint)((*(byte *)(*param_1 + 0x19) & 2) != 0); + pcVar2 = FUN_004db748(&local_d,param_2,local_c); + if ((*(byte *)(*param_1 + 0x18) & 0x80) != 0) { + if (local_c == 0) { + pcVar3 = &DAT_005206cf; + } + else { + pcVar3 = &DAT_005206cc; + } + } + } + else { + pcVar2 = FUN_004db718(&local_d,param_2); + if ((*(byte *)(*param_1 + 0x18) & 0x80) != 0) { + pcVar3 = &DAT_005206d2; + } + } + FUN_004dbb24(param_1,pcVar2,pcVar3); + return param_1; +} + + + +/* @004db880 file=? name=FUN_004db880 */ + +int * __cdecl FUN_004db880(int *param_1,uint param_2) + +{ + char *pcVar1; + char *pcVar2; + char local_9; + uint local_8; + + pcVar2 = (char *)0x0; + if ((*(uint *)(*param_1 + 0x18) & 0x40) == 0) { + if ((*(byte *)(*param_1 + 0x18) & 0x20) == 0) { + pcVar1 = FUN_004db6e0(&local_9,param_2); + if ((param_2 != 0) && ((*(byte *)(*param_1 + 0x19) & 4) != 0)) { + pcVar2 = &DAT_005206dc; + } + } + else { + pcVar1 = FUN_004db718(&local_9,param_2); + if ((*(byte *)(*param_1 + 0x18) & 0x80) != 0) { + pcVar2 = &DAT_005206da; + } + } + } + else { + local_8 = (uint)((*(uint *)(*param_1 + 0x18) & 0x200) != 0); + pcVar1 = FUN_004db748(&local_9,param_2,local_8); + if ((*(byte *)(*param_1 + 0x18) & 0x80) != 0) { + if (local_8 == 0) { + pcVar2 = &DAT_005206d7; + } + else { + pcVar2 = &DAT_005206d4; + } + } + } + FUN_004dbb24(param_1,pcVar1,pcVar2); + return param_1; +} + + + +/* @004db92c file=? name=FUN_004db92c */ + +int * __cdecl FUN_004db92c(int *param_1,byte param_2) + +{ + int *piVar1; + byte *pbVar2; + undefined1 *puVar3; + int iVar4; + uint uVar5; + int iVar6; + + if (*(int *)(*param_1 + 0x14) == 0) { + iVar4 = 1; + } + else { + iVar4 = FUN_004dbabc(param_1); + } + if (iVar4 != 0) { + iVar4 = *param_1; + iVar6 = *(int *)(iVar4 + 0x20); + *(undefined4 *)(iVar4 + 0x20) = 0; + iVar6 = iVar6 + -1; + if ((*(byte *)(iVar4 + 0x18) & 10) == 0) { + do { + iVar6 = iVar6 + -1; + if (iVar6 < 0) goto LAB_004db9c5; + uVar5 = *(uint *)(*param_1 + 0x24); + if (*(uint *)(*(int *)(*param_1 + 4) + 0x14) < *(uint *)(*(int *)(*param_1 + 4) + 0x18)) { + puVar3 = *(undefined1 **)(*(int *)(*param_1 + 4) + 0x14); + piVar1 = (int *)(*(int *)(*param_1 + 4) + 0x14); + *piVar1 = *piVar1 + 1; + *puVar3 = (char)uVar5; + uVar5 = uVar5 & 0xff; + } + else { + uVar5 = (**(code **)(**(int **)(*param_1 + 4) + 0x18)) + (*(undefined4 *)(*param_1 + 4),uVar5 & 0xff); + } + } while (uVar5 != 0xffffffff); + FUN_004dc80c(*param_1,4); + } +LAB_004db9c5: + if ((*(byte *)(*param_1 + 0xc) & 0x86) == 0) { + if (*(uint *)(*(int *)(*param_1 + 4) + 0x14) < *(uint *)(*(int *)(*param_1 + 4) + 0x18)) { + pbVar2 = *(byte **)(*(int *)(*param_1 + 4) + 0x14); + piVar1 = (int *)(*(int *)(*param_1 + 4) + 0x14); + *piVar1 = *piVar1 + 1; + *pbVar2 = param_2; + uVar5 = (uint)param_2; + } + else { + uVar5 = (**(code **)(**(int **)(*param_1 + 4) + 0x18)) + (*(undefined4 *)(*param_1 + 4),param_2); + } + if (uVar5 == 0xffffffff) { + FUN_004dc80c(*param_1,4); + } + } + if (((*(byte *)(*param_1 + 0xc) & 0x86) == 0) && ((*(byte *)(*param_1 + 0x18) & 2) != 0)) { + do { + iVar6 = iVar6 + -1; + if (iVar6 < 0) goto LAB_004dba91; + uVar5 = *(uint *)(*param_1 + 0x24); + if (*(uint *)(*(int *)(*param_1 + 4) + 0x14) < *(uint *)(*(int *)(*param_1 + 4) + 0x18)) { + puVar3 = *(undefined1 **)(*(int *)(*param_1 + 4) + 0x14); + piVar1 = (int *)(*(int *)(*param_1 + 4) + 0x14); + *piVar1 = *piVar1 + 1; + *puVar3 = (char)uVar5; + uVar5 = uVar5 & 0xff; + } + else { + uVar5 = (**(code **)(**(int **)(*param_1 + 4) + 0x18)) + (*(undefined4 *)(*param_1 + 4),uVar5 & 0xff); + } + } while (uVar5 != 0xffffffff); + FUN_004dc80c(*param_1,4); + } + } +LAB_004dba91: + if ((*(byte *)(*param_1 + 0x19) & 0x60) != 0) { + FUN_004dbae4(param_1); + } + return param_1; +} + + + +/* @004dbaa8 file=? name=FUN_004dbaa8 */ + +undefined4 * __cdecl FUN_004dbaa8(undefined4 *param_1,undefined *param_2) + +{ + (*(code *)param_2)(*param_1); + return param_1; +} + + + +/* @004dbabc file=? name=FUN_004dbabc */ + +undefined4 __cdecl FUN_004dbabc(int *param_1) + +{ + int *piVar1; + + if ((*(byte *)(*param_1 + 0xc) & 0x86) == 0) { + piVar1 = *(int **)(*param_1 + 8); + if (piVar1 != (int *)0x0) { + FUN_004db6b4(piVar1); + } + return 1; + } + return 0; +} + + + +/* @004dbae4 file=? name=FUN_004dbae4 */ + +void __cdecl FUN_004dbae4(int *param_1) + +{ + if (((*(byte *)(*param_1 + 0xc) & 0x86) == 0) && ((*(byte *)(*param_1 + 0x19) & 0x20) != 0)) { + FUN_004db6b4(param_1); + } + if ((*(byte *)(*param_1 + 0x19) & 0x40) != 0) { + FUN_004db6b4(&DAT_00524e20); + FUN_004db6b4((int *)&DAT_00524eb0); + } + return; +} + + + +/* @004dbb24 file=? name=FUN_004dbb24 */ + +void __cdecl FUN_004dbb24(int *param_1,char *param_2,char *param_3) + +{ + int *piVar1; + undefined1 *puVar2; + int iVar3; + uint uVar4; + uint uVar5; + uint uVar6; + int iVar7; + + if (*(int *)(*param_1 + 0x14) == 0) { + iVar3 = 1; + } + else { + iVar3 = FUN_004dbabc(param_1); + } + if (iVar3 != 0) { + if (param_3 == (char *)0x0) { + uVar4 = 0; + } + else { + uVar4 = FUN_004d4a78(param_3); + } + if (param_2 == (char *)0x0) { + uVar5 = 0; + } + else { + uVar5 = FUN_004d4a78(param_2); + } + iVar3 = *param_1; + iVar7 = *(int *)(iVar3 + 0x20); + *(undefined4 *)(iVar3 + 0x20) = 0; + iVar7 = (iVar7 - uVar4) - uVar5; + if ((*(byte *)(iVar3 + 0x18) & 10) == 0) { + do { + iVar7 = iVar7 + -1; + if (iVar7 < 0) goto LAB_004dbbf3; + uVar6 = *(uint *)(*param_1 + 0x24); + if (*(uint *)(*(int *)(*param_1 + 4) + 0x14) < *(uint *)(*(int *)(*param_1 + 4) + 0x18)) { + puVar2 = *(undefined1 **)(*(int *)(*param_1 + 4) + 0x14); + piVar1 = (int *)(*(int *)(*param_1 + 4) + 0x14); + *piVar1 = *piVar1 + 1; + *puVar2 = (char)uVar6; + uVar6 = uVar6 & 0xff; + } + else { + uVar6 = (**(code **)(**(int **)(*param_1 + 4) + 0x18)) + (*(undefined4 *)(*param_1 + 4),uVar6 & 0xff); + } + } while (uVar6 != 0xffffffff); + FUN_004dc80c(*param_1,4); + } +LAB_004dbbf3: + if ((((*(byte *)(*param_1 + 0xc) & 0x86) == 0) && (uVar4 != 0)) && + (uVar6 = FUN_004dc5e4(*(int **)(*param_1 + 4),(undefined4 *)param_3,uVar4), uVar6 != uVar4)) + { + FUN_004dc80c(*param_1,4); + } + if (((*(byte *)(*param_1 + 0xc) & 0x86) == 0) && ((*(byte *)(*param_1 + 0x18) & 8) != 0)) { + do { + iVar7 = iVar7 + -1; + if (iVar7 < 0) goto LAB_004dbc94; + uVar4 = *(uint *)(*param_1 + 0x24); + if (*(uint *)(*(int *)(*param_1 + 4) + 0x14) < *(uint *)(*(int *)(*param_1 + 4) + 0x18)) { + puVar2 = *(undefined1 **)(*(int *)(*param_1 + 4) + 0x14); + piVar1 = (int *)(*(int *)(*param_1 + 4) + 0x14); + *piVar1 = *piVar1 + 1; + *puVar2 = (char)uVar4; + uVar4 = uVar4 & 0xff; + } + else { + uVar4 = (**(code **)(**(int **)(*param_1 + 4) + 0x18)) + (*(undefined4 *)(*param_1 + 4),uVar4 & 0xff); + } + } while (uVar4 != 0xffffffff); + FUN_004dc80c(*param_1,4); + } +LAB_004dbc94: + if ((((*(byte *)(*param_1 + 0xc) & 0x86) == 0) && (uVar5 != 0)) && + (uVar4 = FUN_004dc5e4(*(int **)(*param_1 + 4),(undefined4 *)param_2,uVar5), uVar4 != uVar5)) + { + FUN_004dc80c(*param_1,4); + } + if (((*(byte *)(*param_1 + 0xc) & 0x86) == 0) && ((*(byte *)(*param_1 + 0x18) & 2) != 0)) { + do { + iVar7 = iVar7 + -1; + if (iVar7 < 0) goto LAB_004dbd35; + uVar4 = *(uint *)(*param_1 + 0x24); + if (*(uint *)(*(int *)(*param_1 + 4) + 0x14) < *(uint *)(*(int *)(*param_1 + 4) + 0x18)) { + puVar2 = *(undefined1 **)(*(int *)(*param_1 + 4) + 0x14); + piVar1 = (int *)(*(int *)(*param_1 + 4) + 0x14); + *piVar1 = *piVar1 + 1; + *puVar2 = (char)uVar4; + uVar4 = uVar4 & 0xff; + } + else { + uVar4 = (**(code **)(**(int **)(*param_1 + 4) + 0x18)) + (*(undefined4 *)(*param_1 + 4),uVar4 & 0xff); + } + } while (uVar4 != 0xffffffff); + FUN_004dc80c(*param_1,4); + } + } +LAB_004dbd35: + if ((*(byte *)(*param_1 + 0x19) & 0x60) != 0) { + FUN_004dbae4(param_1); + } + return; +} + + + +/* @004dbd4c file=? name=FUN_004dbd4c */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +undefined8 __cdecl FUN_004dbd4c(int *param_1,uint param_2) + +{ + char cVar1; + undefined1 uVar2; + int iVar3; + uint uVar4; + undefined4 extraout_EDX; + + iVar3 = *param_1; + uVar4 = *(uint *)(iVar3 + 0x18); + cVar1 = *(char *)(iVar3 + 0x24); + FUN_004dc7d4(iVar3,200,DAT_0052078c | _DAT_00520790 | 0x80); + iVar3 = *param_1; + *(undefined4 *)(iVar3 + 0x24) = 0x30; + *(undefined4 *)(iVar3 + 0x20) = 10; + FUN_004db880(param_1,param_2); + FUN_004dc710(*param_1,uVar4); + uVar2 = *(undefined1 *)(*param_1 + 0x24); + *(int *)(*param_1 + 0x24) = (int)cVar1; + return CONCAT44(CONCAT31((int3)((uint)extraout_EDX >> 8),uVar2),param_1); +} + + + +/* @004dbdbc file=? name=FUN_004dbdbc */ + +undefined4 * __cdecl FUN_004dbdbc(undefined4 *param_1,char *param_2,int param_3,char *param_4) + +{ + FUN_004dc35c(param_1); + *param_1 = &PTR_FUN_005206ec; + FUN_004dbeb0((int)param_1,param_2,param_3,param_4); + *DAT_00524c68 = *DAT_00524c68 + 1; + return param_1; +} + + + +/* @004dbdf1 file=? name=FUN_004dbdf1 */ + +void FUN_004dbdf1(void) + +{ + return; +} + + + +/* @004dbdf6 file=? name=FUN_004dbdf6 */ + +void FUN_004dbdf6(void) + +{ + return; +} + + + +/* @004dbe58 file=? name=FUN_004dbe58 */ + +void __cdecl FUN_004dbe58(int *param_1,byte param_2) + +{ + *DAT_00524c68 = *DAT_00524c68 + -1; + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_005206ec; + if ((*(ushort *)(param_1 + 0xc) & 3) == 1) { + if (param_1[0xb] == 0) { + FUN_004022e8((int *)param_1[2]); + } + else { + (*(code *)param_1[0xb])(param_1[2]); + } + } + FUN_004dc48c(param_1,0); + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004dbeb0 file=? name=FUN_004dbeb0 */ + +void __cdecl FUN_004dbeb0(int param_1,char *param_2,int param_3,char *param_4) + +{ + *(undefined2 *)(param_1 + 0x30) = 0; + if (param_3 == 0) { + param_3 = FUN_004d4a78(param_2); + } + else if (param_3 < 0) { + param_3 = 0x7fffffff; + *(ushort *)(param_1 + 0x30) = *(ushort *)(param_1 + 0x30) | 4; + } + FUN_004dc4fc(param_1,(uint)param_2,(uint)(param_2 + param_3),0); + if (param_4 == (char *)0x0) { + FUN_004dc564(param_1,(uint)param_2,(uint)param_2,*(uint *)(param_1 + 0xc)); + } + else { + FUN_004dc598(param_1,(uint)param_4,*(uint *)(param_1 + 0xc)); + if (param_2 + param_3 < param_4) { + param_4 = param_2 + param_3; + } + FUN_004dc564(param_1,(uint)param_2,(uint)param_2,(uint)param_4); + } + *(undefined4 *)(param_1 + 0x28) = 0; + *(undefined4 *)(param_1 + 0x2c) = 0; + return; +} + + + +/* @004dbf44 file=? name=FUN_004dbf44 */ + +uint __cdecl FUN_004dbf44(int *param_1,byte param_2) + +{ + int *piVar1; + int iVar2; + int iVar3; + byte *pbVar4; + undefined4 *puVar5; + uint uVar6; + int local_14; + int local_10; + int local_c; + + if ((*(ushort *)(param_1 + 0xc) & 3) == 1) { + if (param_1[2] == 0) { + (**(code **)(*param_1 + 0x30))(param_1); + } + if (param_1[4] == 0) { + FUN_004dc598((int)param_1,param_1[2],param_1[3]); + } + } + if (param_1[4] != 0) { + if (((uint)param_1[6] <= (uint)param_1[5]) && ((*(ushort *)(param_1 + 0xc) & 3) == 1)) { + piVar1 = (int *)param_1[2]; + uVar6 = param_1[3] - (int)piVar1; + puVar5 = (undefined4 *)FUN_004022b0(uVar6 + 4); + if (puVar5 == (undefined4 *)0x0) { + return 0xffffffff; + } + FUN_004d4918(puVar5,piVar1,uVar6); + iVar2 = param_1[5]; + iVar3 = param_1[8]; + if (iVar3 != 0) { + local_c = param_1[7] - (int)piVar1; + local_10 = iVar3 - (int)piVar1; + local_14 = param_1[9] - (int)piVar1; + } + FUN_004dc4fc((int)param_1,(uint)puVar5,(int)puVar5 + uVar6 + 4,0); + FUN_004dc598((int)param_1,(uint)puVar5,param_1[3]); + param_1[5] = param_1[5] + (iVar2 - (int)piVar1); + if (iVar3 != 0) { + FUN_004dc564((int)param_1,(int)puVar5 + local_c,local_10 + (int)puVar5, + local_14 + (int)puVar5); + } + FUN_004022e8(piVar1); + } + if ((uint)param_1[5] < (uint)param_1[6]) { + if ((uint)param_1[6] <= (uint)param_1[5]) { + uVar6 = (**(code **)(*param_1 + 0x18))(param_1,param_2); + return uVar6; + } + pbVar4 = (byte *)param_1[5]; + param_1[5] = param_1[5] + 1; + *pbVar4 = param_2; + return (uint)param_2; + } + } + return 0xffffffff; +} + + + +/* @004dc260 file=? name=FUN_004dc260 */ + +int * __cdecl FUN_004dc260(int *param_1,short param_2,char *param_3,int param_4,char *param_5) + +{ + if (param_2 == 0) { + *param_1 = (int)param_1 + 0x3e; + FUN_004dc6bc((undefined4 *)((int)param_1 + 0x3e)); + } + param_1[1] = (int)&PTR_FUN_0052072c; + *(undefined ***)*param_1 = &PTR_LAB_00520738; + FUN_004dbdbc(param_1 + 2,param_3,param_4,param_5); + FUN_004dc738(*param_1,param_1 + 2); + *DAT_00524c68 = *DAT_00524c68 + 1; + return param_1; +} + + + +/* @004dc2c8 file=? name=FUN_004dc2c8 */ + +void __cdecl FUN_004dc2c8(int *param_1,uint param_2) + +{ + *DAT_00524c68 = *DAT_00524c68 + -1; + if (param_1 != (int *)0x0) { + param_1[1] = (int)&PTR_FUN_0052072c; + *(undefined ***)*param_1 = &PTR_LAB_00520738; + FUN_004dbe58(param_1 + 2,2); + if ((param_2 & 2) != 0) { + FUN_004dc6d8((int *)((int)param_1 + 0x3e),0); + } + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004dc35c file=? name=FUN_004dc35c */ + +void __cdecl FUN_004dc35c(undefined4 *param_1) + +{ + *param_1 = &PTR_FUN_00520748; + *(undefined2 *)(param_1 + 1) = 0; + *(undefined2 *)((int)param_1 + 6) = 0; + param_1[2] = 0; + param_1[4] = 0; + param_1[5] = 0; + param_1[6] = 0; + param_1[8] = 0; + param_1[9] = 0; + param_1[7] = 0; + param_1[3] = 0; + *DAT_00524c68 = *DAT_00524c68 + 1; + return; +} + + + +/* @004dc41c file=? name=FUN_004dc41c */ + +uint __cdecl FUN_004dc41c(int *param_1,byte *param_2,uint param_3) + +{ + byte bVar1; + byte *pbVar2; + uint uVar3; + uint uVar4; + + uVar4 = param_1[6] - param_1[5]; + if (0 < (int)uVar4) { + FUN_004d4918((undefined4 *)param_1[5],(undefined4 *)param_2,uVar4); + param_1[5] = param_1[5] + uVar4; + param_2 = param_2 + uVar4; + } + while( true ) { + if (param_3 <= uVar4) { + return uVar4; + } + bVar1 = *param_2; + if ((uint)param_1[5] < (uint)param_1[6]) { + pbVar2 = (byte *)param_1[5]; + param_1[5] = param_1[5] + 1; + *pbVar2 = bVar1; + uVar3 = (uint)bVar1; + } + else { + uVar3 = (**(code **)(*param_1 + 0x18))(param_1,bVar1); + } + if (uVar3 == 0xffffffff) break; + uVar4 = uVar4 + 1; + param_2 = param_2 + 1; + } + return uVar4; +} + + + +/* @004dc48c file=? name=FUN_004dc48c */ + +void __cdecl FUN_004dc48c(int *param_1,byte param_2) + +{ + *DAT_00524c68 = *DAT_00524c68 + -1; + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_00520748; + if ((short)param_1[1] != 0) { + FUN_004022e8((int *)param_1[2]); + } + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004dc4d0 file=? name=FUN_004dc4d0 */ + +undefined4 FUN_004dc4d0(void) + +{ + return 0xffffffff; +} + + + +/* @004dc4d8 file=? name=FUN_004dc4d8 */ + +int __cdecl FUN_004dc4d8(int param_1,uint param_2,int param_3) + +{ + FUN_004dc4fc(param_1,param_2,param_3 + param_2,0); + return param_1; +} + + + +/* @004dc4fc file=? name=FUN_004dc4fc */ + +void __cdecl FUN_004dc4fc(int param_1,uint param_2,uint param_3,int param_4) + +{ + undefined2 uVar1; + + if (((*(short *)(param_1 + 4) != 0) && (*(int *)(param_1 + 8) != 0)) && + (param_2 != *(uint *)(param_1 + 8))) { + FUN_004022e8(*(int **)(param_1 + 8)); + } + *(uint *)(param_1 + 8) = param_2; + if (((param_2 == 0) || (param_3 == 0)) || (param_3 < param_2)) { + param_3 = param_2; + } + *(uint *)(param_1 + 0xc) = param_3; + *(ushort *)(param_1 + 6) = (ushort)(param_2 == 0); + if ((param_4 == 0) || (param_2 == 0)) { + uVar1 = 0; + } + else { + uVar1 = 1; + } + *(undefined2 *)(param_1 + 4) = uVar1; + return; +} + + + +/* @004dc564 file=? name=FUN_004dc564 */ + +void __cdecl FUN_004dc564(int param_1,uint param_2,uint param_3,uint param_4) + +{ + if ((param_3 == 0) || (param_2 == 0)) { + param_2 = param_3; + } + *(uint *)(param_1 + 0x1c) = param_2; + *(uint *)(param_1 + 0x20) = param_3; + if (((param_3 == 0) || (param_4 == 0)) || (param_4 < param_3)) { + param_4 = param_3; + } + *(uint *)(param_1 + 0x24) = param_4; + return; +} + + + +/* @004dc598 file=? name=FUN_004dc598 */ + +void __cdecl FUN_004dc598(int param_1,uint param_2,uint param_3) + +{ + *(uint *)(param_1 + 0x14) = param_2; + *(uint *)(param_1 + 0x10) = param_2; + if (((param_2 == 0) || (param_3 == 0)) || (param_3 < param_2)) { + param_3 = param_2; + } + *(uint *)(param_1 + 0x18) = param_3; + return; +} + + + +/* @004dc5c8 file=? name=FUN_004dc5c8 */ + +void __cdecl FUN_004dc5c8(int *param_1,undefined4 param_2,undefined4 param_3) + +{ + (**(code **)(*param_1 + 0x1c))(param_1,param_2,0,param_3); + return; +} + + + +/* @004dc5e4 file=? name=FUN_004dc5e4 */ + +uint __cdecl FUN_004dc5e4(int *param_1,undefined4 *param_2,uint param_3) + +{ + if ((uint)(param_1[6] - param_1[5]) < param_3) { + param_3 = (**(code **)(*param_1 + 0x14))(param_1,param_2,param_3); + } + else { + FUN_004d4918((undefined4 *)param_1[5],param_2,param_3); + param_1[5] = param_1[5] + param_3; + } + return param_3; +} + + + +/* @004dc680 file=? name=FUN_004dc680 */ + +void __cdecl FUN_004dc680(int param_1,uint param_2) + +{ + uint uVar1; + + uVar1 = param_2 & 0xff | *(uint *)(param_1 + 0xc) & 0x80; + *(uint *)(param_1 + 0xc) = uVar1; + *(uint *)(param_1 + 0x10) = *(uint *)(param_1 + 0x10) & 0xffffff00 | uVar1; + *(uint *)(param_1 + 0x14) = *(uint *)(param_1 + 0x14) & 0xffffff00 | *(uint *)(param_1 + 0xc); + return; +} + + + +/* @004dc6bc file=? name=FUN_004dc6bc */ + +void __cdecl FUN_004dc6bc(undefined4 *param_1) + +{ + *param_1 = &PTR_FUN_00520788; + param_1[0xe] = 0; + *DAT_00524c68 = *DAT_00524c68 + 1; + return; +} + + + +/* @004dc6d8 file=? name=FUN_004dc6d8 */ + +void __cdecl FUN_004dc6d8(int *param_1,byte param_2) + +{ + *DAT_00524c68 = *DAT_00524c68 + -1; + if (param_1 != (int *)0x0) { + *param_1 = (int)&PTR_FUN_00520788; + if ((int *)param_1[0xe] != (int *)0x0) { + FUN_004022e8((int *)param_1[0xe]); + } + if ((param_2 & 1) != 0) { + FUN_004022d0(param_1); + } + } + return; +} + + + +/* @004dc710 file=? name=FUN_004dc710 */ + +undefined4 __cdecl FUN_004dc710(int param_1,uint param_2) + +{ + undefined4 uVar1; + + uVar1 = *(undefined4 *)(param_1 + 0x18); + *(uint *)(param_1 + 0x18) = param_2; + if ((param_2 & 1) == 0) { + *(uint *)(param_1 + 0x10) = *(uint *)(param_1 + 0x10) & 0xfffffeff; + } + else { + *(uint *)(param_1 + 0x10) = *(uint *)(param_1 + 0x10) | 0x100; + } + return uVar1; +} + + + +/* @004dc738 file=? name=FUN_004dc738 */ + +void __cdecl FUN_004dc738(int param_1,undefined4 param_2) + +{ + *(undefined4 *)(param_1 + 0x3c) = 0; + *(undefined4 *)(param_1 + 0x14) = 0; + *(undefined4 *)(param_1 + 0xc) = 0; + *(undefined4 *)(param_1 + 0x10) = 0x100; + *(undefined4 *)(param_1 + 0x18) = 1; + *(undefined4 *)(param_1 + 0x1c) = 6; + *(undefined4 *)(param_1 + 0x20) = 0; + *(undefined4 *)(param_1 + 0x24) = 0x20; + *(undefined4 *)(param_1 + 8) = 0; + *(undefined4 *)(param_1 + 4) = param_2; + return; +} + + + +/* @004dc7d4 file=? name=FUN_004dc7d4 */ + +undefined4 __cdecl FUN_004dc7d4(int param_1,uint param_2,uint param_3) + +{ + undefined4 uVar1; + + uVar1 = *(undefined4 *)(param_1 + 0x18); + *(uint *)(param_1 + 0x18) = *(uint *)(param_1 + 0x18) & ~param_3; + *(uint *)(param_1 + 0x18) = *(uint *)(param_1 + 0x18) | param_3 & param_2; + if ((*(byte *)(param_1 + 0x18) & 1) == 0) { + *(uint *)(param_1 + 0x10) = *(uint *)(param_1 + 0x10) & 0xfffffeff; + } + else { + *(uint *)(param_1 + 0x10) = *(uint *)(param_1 + 0x10) | 0x100; + } + return uVar1; +} + + + +/* @004dc80c file=? name=FUN_004dc80c */ + +void __cdecl FUN_004dc80c(int param_1,uint param_2) + +{ + *(uint *)(param_1 + 0xc) = *(uint *)(param_1 + 0xc) | param_2 & 0xff; + *(uint *)(param_1 + 0x10) = *(uint *)(param_1 + 0x10) | param_2 & 0xfffffcff; + *(uint *)(param_1 + 0x14) = *(uint *)(param_1 + 0x14) | param_2 & 0xfffffdff; + return; +} + + + +/* @004dc888 file=? name=FUN_004dc888 */ + +void FUN_004dc888(void) + +{ + return; +} + + + +/* @004dc89c file=? name=FUN_004dc89c */ + +uint __cdecl FUN_004dc89c(uint param_1) + +{ + uint uVar1; + + if (param_1 == 0xffffffff) { + return 0xffffffff; + } + uVar1 = param_1 & 0xff; + if (((&DAT_005207dd)[uVar1] & 4) != 0) { + return uVar1 + 0x20; + } + return uVar1; +} + + + +/* @004dc8c4 file=? name=FUN_004dc8c4 */ + +uint __cdecl FUN_004dc8c4(uint param_1) + +{ + uint uVar1; + + if (param_1 == 0xffffffff) { + return 0xffffffff; + } + uVar1 = param_1 & 0xff; + if (((&DAT_005207dd)[uVar1] & 8) != 0) { + return uVar1 - 0x20; + } + return uVar1; +} + + + +/* @004dc8ec file=? name=FUN_004dc8ec */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 __cdecl FUN_004dc8ec(double param_1,undefined4 param_2,uint param_3) + +{ + ushort uVar1; + ushort uVar2; + float10 fVar3; + + uVar1 = (ushort)((ulonglong)param_1 >> 0x30) & 0xfff0; + uVar2 = uVar1 << 1; + if (uVar2 == 0) { + if ((param_3 & 0x7ff00000) != 0) { + if (-1 < (short)(param_3._2_2_ & 0xfff0)) { + return (float10)param_1; + } + if (-1 < (short)uVar1) { + return (float10)3.141592653589793; + } + return -(float10)3.141592653589793; + } +LAB_004dc975: + fVar3 = FUN_004de098(1,s_atan2_005208f6,(undefined8 *)¶m_2,¶m_1,DAT_005208ee, + DAT_005208f2); + return fVar3; + } + uVar1 = (param_3._2_2_ & 0xfff0) << 1; + if (uVar1 == 0) { +LAB_004dc953: + fVar3 = _DAT_005208e4; + if (((ulonglong)param_1 & 0x8000000000000000) != 0) { + fVar3 = -_DAT_005208e4; + } + } + else { + if (uVar1 < 0xffe0) { + if (0xffdf < uVar2) goto LAB_004dc953; + fVar3 = (float10)FUN_004dcaa4(); + } + else { + if (0xffdf < uVar2) goto LAB_004dc975; + fVar3 = (float10)0; + } + if ((param_3 & 0x80000000) != 0) { + if ((param_1._7_1_ & 0x80) == 0) { + fVar3 = (float10)3.141592653589793 + fVar3; + } + else { + fVar3 = fVar3 - (float10)3.141592653589793; + } + } + } + return fVar3; +} + + + +/* @004dc9a0 file=? name=FUN_004dc9a0 */ + +undefined2 FUN_004dc9a0(void) + +{ + undefined2 in_FPUStatusWord; + + return in_FPUStatusWord; +} + + + +/* @004dc9b4 file=? name=FUN_004dc9b4 */ + +void __cdecl FUN_004dc9b4(undefined4 param_1,undefined4 param_2) + +{ + if ((param_2._2_2_ & 0x7ff0) < 0x4340) { + FUN_004dcc20(); + } + else { + FUN_004de098(5,&DAT_00520904,(undefined8 *)¶m_1,(undefined8 *)0x0,DAT_005208fc,DAT_00520900) + ; + } + return; +} + + + +/* @004dc9f8 file=? name=FUN_004dc9f8 */ + +void FUN_004dc9f8(void) + +{ + return; +} + + + +/* @004dca20 file=? name=thunk_FUN_004dd24c */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void thunk_FUN_004dd24c(void) + +{ + /* WARNING: Could not recover jumptable at 0x004dca20. Too many branches */ + /* WARNING: Treating indirect jump as call */ + (*_DAT_00520964)(); + return; +} + + + +/* @004dca26 file=? name=thunk_FUN_004dd24c */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void thunk_FUN_004dd24c(void) + +{ + /* WARNING: Could not recover jumptable at 0x004dca26. Too many branches */ + /* WARNING: Treating indirect jump as call */ + (*_DAT_00520968)(); + return; +} + + + +/* @004dca2c file=? name=thunk_FUN_004dd258 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void thunk_FUN_004dd258(void) + +{ + /* WARNING: Could not recover jumptable at 0x004dca2c. Too many branches */ + /* WARNING: Treating indirect jump as call */ + (*_DAT_0052096c)(); + return; +} + + + +/* @004dca32 file=? name=thunk_FUN_004dd258 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void thunk_FUN_004dd258(void) + +{ + /* WARNING: Could not recover jumptable at 0x004dca32. Too many branches */ + /* WARNING: Treating indirect jump as call */ + (*_DAT_00520970)(); + return; +} + + + +/* @004dca38 file=? name=FUN_004dca38 */ + +void __thiscall FUN_004dca38(undefined2 param_1,undefined4 param_2,uint param_3) + +{ + ushort uVar1; + undefined4 *puVar2; + int iVar3; + + if (0x4085 < (param_3._2_2_ & 0x7fff)) { + uVar1 = 0xffff; + if ((param_3._2_2_ & 0x7fff) < 0x4087) { + uVar1 = (ushort)param_3; + } + if ((param_3 & 0x80000000) == 0) { + if (0x2e41 < uVar1) { + iVar3 = 3; + puVar2 = &DAT_005209d4; +LAB_004dca87: + FUN_004de098(iVar3,&DAT_00520910,(undefined8 *)¶m_2,(undefined8 *)0x0,*puVar2,puVar2[1]) + ; + return; + } + } + else if (0x232a < uVar1) { + iVar3 = 4; + puVar2 = &DAT_00520908; + goto LAB_004dca87; + } + } + FUN_004dcb11(param_1); + return; +} + + + +/* @004dcaa4 file=? name=FUN_004dcaa4 */ + +void FUN_004dcaa4(void) + +{ + float10 fVar1; + float10 in_ST0; + float10 fVar2; + float10 fVar3; + + if (in_ST0 != (float10)0) { + fVar2 = ABS(in_ST0); + fVar1 = (float10)1; + if (fVar1 != fVar2) { + fVar3 = fVar1; + if (fVar1 < fVar2) { + fVar3 = fVar2; + fVar2 = fVar1; + } + fpatan(fVar2,fVar3); + } + } + return; +} + + + +/* @004dcb11 file=? name=FUN_004dcb11 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __fastcall FUN_004dcb11(undefined2 param_1) + +{ + ushort uVar1; + short sVar2; + float10 in_ST0; + float10 fVar3; + float10 fVar4; + + sVar2 = CONCAT11((char)((ushort)param_1 >> 8),1); + fVar4 = in_ST0; + fVar3 = (float10)1.4426950408889634; + if (sVar2 != 0) { + fVar4 = (float10)1.4426950408889634; + fVar3 = in_ST0; + } + if (in_ST0 != (float10)0) { + if (sVar2 != 0) { + fVar4 = fVar4 * fVar3; + } + fVar4 = ABS(fVar4); + if ((float10)_DAT_005213bc < fVar4) { + fVar3 = (float10)fscale(fVar4,(float10)1); + uVar1 = (ushort)ROUND(ROUND(fVar3)); + fVar3 = (float10)fscale(ROUND(fVar3),-(float10)1); + fVar4 = (float10)f2xm1(fVar4 - fVar3); + fVar4 = (float10)1 + fVar4; + if ((uVar1 & 1) != 0) { + fVar4 = _DAT_005213c0 * fVar4; + } + fscale(fVar4,(float10)(uVar1 >> 1)); + } + else { + f2xm1(fVar4); + } + } + return; +} + + + +/* @004dcbdc file=? name=FUN_004dcbdc */ + +void FUN_004dcbdc(void) + +{ + float10 in_ST0; + + if ((in_ST0 != (float10)0) && ((float10)0 <= in_ST0)) { + log2(in_ST0); + } + return; +} + + + +/* @004dcc1c file=? name=FUN_004dcc1c */ + +/* WARNING: Removing unreachable block (ram,0x004dcc96) */ +/* WARNING: Removing unreachable block (ram,0x004dcc3e) */ +/* WARNING: Removing unreachable block (ram,0x004dcccd) */ +/* WARNING: Removing unreachable block (ram,0x004dccd8) */ +/* WARNING: Removing unreachable block (ram,0x004dccda) */ +/* WARNING: Removing unreachable block (ram,0x004dccde) */ +/* WARNING: Removing unreachable block (ram,0x004dccee) */ +/* WARNING: Removing unreachable block (ram,0x004dccf8) */ +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_004dcc1c(void) + +{ + float10 fVar1; + byte bVar2; + float10 in_ST0; + float10 fVar3; + byte bStack_3; + + if (in_ST0 != (float10)0) { + fVar1 = (float10)0; + bVar2 = NAN(_DAT_005213e8) | (byte)((ushort)((ushort)(_DAT_005213e8 < fVar1) << 9) >> 8); + bStack_3 = bVar2 | (byte)((ushort)((ushort)(_DAT_005213e8 != fVar1) << 10) >> 8) | + (byte)((ushort)((ushort)(_DAT_005213e8 == fVar1) << 0xe) >> 8); + fVar3 = ABS(in_ST0) - (float10)(unkint10)(ABS(in_ST0) / _DAT_005213e8) * _DAT_005213e8; + if ((_DAT_005213e8 != fVar1) == 0) { + if (3 < (byte)(bVar2 << 1 | (char)(bStack_3 << 1) < '\0')) { + fVar3 = _DAT_005213e8 - fVar3; + } + fptan(fVar3); + } + } + return; +} + + + +/* @004dcc20 file=? name=FUN_004dcc20 */ + +/* WARNING: Removing unreachable block (ram,0x004dcccd) */ +/* WARNING: Removing unreachable block (ram,0x004dccd8) */ +/* WARNING: Removing unreachable block (ram,0x004dccda) */ +/* WARNING: Removing unreachable block (ram,0x004dccde) */ +/* WARNING: Removing unreachable block (ram,0x004dccee) */ +/* WARNING: Removing unreachable block (ram,0x004dccf8) */ +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_004dcc20(void) + +{ + float10 fVar1; + byte bVar2; + float10 in_ST0; + float10 fVar3; + byte bStack_3; + + if (in_ST0 != (float10)0) { + fVar1 = (float10)0; + bVar2 = NAN(_DAT_005213e8) | (byte)((ushort)((ushort)(_DAT_005213e8 < fVar1) << 9) >> 8); + bStack_3 = bVar2 | (byte)((ushort)((ushort)(_DAT_005213e8 != fVar1) << 10) >> 8) | + (byte)((ushort)((ushort)(_DAT_005213e8 == fVar1) << 0xe) >> 8); + fVar3 = ABS(in_ST0) - (float10)(unkint10)(ABS(in_ST0) / _DAT_005213e8) * _DAT_005213e8; + if ((_DAT_005213e8 != fVar1) == 0) { + if (3 < (byte)(bVar2 << 1 | (char)(bStack_3 << 1) < '\0')) { + fVar3 = _DAT_005213e8 - fVar3; + } + fptan(fVar3); + } + } + return; +} + + + +/* @004dcc24 file=? name=FUN_004dcc24 */ + +/* WARNING: Removing unreachable block (ram,0x004dcc96) */ +/* WARNING: Removing unreachable block (ram,0x004dcc3e) */ +/* WARNING: Removing unreachable block (ram,0x004dccad) */ +/* WARNING: Removing unreachable block (ram,0x004dccb1) */ +/* WARNING: Removing unreachable block (ram,0x004dccb3) */ +/* WARNING: Removing unreachable block (ram,0x004dccc7) */ +/* WARNING: Removing unreachable block (ram,0x004dccc9) */ +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void FUN_004dcc24(void) + +{ + float10 fVar1; + byte bVar2; + float10 in_ST0; + float10 fVar3; + byte bStack_3; + + if (in_ST0 != (float10)0) { + fVar1 = (float10)0; + bVar2 = NAN(_DAT_005213e8) | (byte)((ushort)((ushort)(_DAT_005213e8 < fVar1) << 9) >> 8); + bStack_3 = bVar2 | (byte)((ushort)((ushort)(_DAT_005213e8 != fVar1) << 10) >> 8) | + (byte)((ushort)((ushort)(_DAT_005213e8 == fVar1) << 0xe) >> 8); + fVar3 = ABS(in_ST0) - (float10)(unkint10)(ABS(in_ST0) / _DAT_005213e8) * _DAT_005213e8; + if ((_DAT_005213e8 != fVar1) == 0) { + if (3 < (byte)(bVar2 << 1 | (char)(bStack_3 << 1) < '\0')) { + fVar3 = _DAT_005213e8 - fVar3; + } + fptan(fVar3); + } + } + return; +} + + + +/* @004dcd00 file=? name=FUN_004dcd00 */ + +float10 __cdecl FUN_004dcd00(double param_1) + +{ + return (float10)ABS(param_1); +} + + + +/* @004dcd10 file=? name=FUN_004dcd10 */ + +float10 __cdecl FUN_004dcd10(double param_1) + +{ + float10 fVar1; + + fVar1 = (float10)param_1; + if ((ushort)(param_1._6_2_ * 2) < 0x8681) { + fVar1 = FUN_004dd0c8(); + } + return fVar1; +} + + + +/* @004dcd2c file=? name=FUN_004dcd2c */ + +float10 __cdecl FUN_004dcd2c(double param_1,double param_2) + +{ + ushort in_FPUStatusWord; + float10 fVar1; + + if ((ushort)(param_2._6_2_ << 1) != 0) { + if (0xffdf < (ushort)(param_2._6_2_ << 1)) { + return (float10)param_1; + } + fVar1 = (float10)param_1; + if (((ushort)(param_1._6_2_ << 1) != 0) && ((ushort)(param_1._6_2_ << 1) < 0xffe0)) { + do { + fVar1 = fVar1 - (float10)(unkint10)(fVar1 / (float10)param_2) * (float10)param_2; + } while ((in_FPUStatusWord & 0x400) != 0); + return fVar1; + } + } + return (float10)0; +} + + + +/* @004dcd7c file=? name=FUN_004dcd7c */ + +void FUN_004dcd7c(void) + +{ + FUN_004dc9f8(); + return; +} + + + +/* @004dcd94 file=? name=FUN_004dcd94 */ + +undefined4 FUN_004dcd94(void) + +{ + float10 in_ST0; + undefined4 local_10; + + local_10 = (undefined4)(longlong)ROUND(in_ST0); + return local_10; +} + + + +/* @004dcdec file=? name=FUN_004dcdec */ + +void __cdecl FUN_004dcdec(longlong *param_1,float10 *param_2) + +{ + if (*(short *)((int)param_2 + 8) != 0x403e) { + *param_1 = (longlong)ROUND(*param_2); + return; + } + *(undefined4 *)param_1 = *(undefined4 *)param_2; + *(undefined4 *)((int)param_1 + 4) = *(undefined4 *)((int)param_2 + 4); + return; +} + + + +/* @004dce10 file=? name=FUN_004dce10 */ + +ushort __cdecl FUN_004dce10(float10 *param_1) + +{ + float10 fVar1; + float10 fVar2; + + fVar1 = *param_1; + fVar2 = (float10)0; + return (ushort)NAN(fVar1) << 8 | (ushort)(fVar1 < fVar2) << 9 | (ushort)(fVar1 != fVar2) << 10 | + (ushort)(fVar1 == fVar2) << 0xe; +} + + + +/* @004dce24 file=? name=FUN_004dce24 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004dce24(undefined4 param_1,int param_2) + +{ + double *pdVar1; + int iVar2; + double local_c; + + if ((short)(param_2._2_2_ * 2) == 0) { + iVar2 = 2; + local_c = -_DAT_005209d4; + pdVar1 = &local_c; + } + else if (param_2 < 0) { + iVar2 = 1; + pdVar1 = (double *)&DAT_00520914; + } + else { + if ((short)(param_2._2_2_ * 2) != -0x20) { + FUN_004dcbdc(); + return; + } + iVar2 = 3; + pdVar1 = (double *)&DAT_005209d4; + } + FUN_004de098(iVar2,&DAT_0052091c,(undefined8 *)¶m_1,(undefined8 *)0x0,*(undefined4 *)pdVar1, + *(undefined4 *)((int)pdVar1 + 4)); + return; +} + + + +/* @004dce94 file=? name=FUN_004dce94 */ + +/* WARNING: Removing unreachable block (ram,0x004dcf54) */ + +float10 __cdecl FUN_004dce94(double param_1,undefined4 param_2,uint param_3) + +{ + double dVar1; + char cVar2; + ushort uVar3; + byte bVar4; + undefined2 extraout_CX; + double *pdVar5; + ushort uVar6; + int iVar7; + short sVar8; + bool bVar9; + float10 fVar10; + float10 fVar11; + ushort uStack_10; + undefined2 uStack_e; + double local_c; + + bVar9 = false; + fVar10 = (float10)param_1; + uVar6 = (ushort)((ulonglong)param_1 >> 0x30); + uVar3 = (ushort)(param_3 >> 0x10); + if (((ulonglong)param_1 & 0x7ff0000000000000) == 0) { + if (0xffff < (int)param_3) { + return (float10)0; + } + iVar7 = 1; + if (uVar3 == 0) { + pdVar5 = (double *)&DAT_00520930; + } + else { + pdVar5 = (double *)&DAT_005209d4; + } + } + else { + if ((uVar6 & 0x7ff0) == 0x7ff0) { + local_c = param_1; + if ((int)param_3 < 0) { + iVar7 = 4; + pdVar5 = (double *)&DAT_00520928; + goto LAB_004dcf19; + } + } + else { + dVar1 = (double)CONCAT17(param_3._3_1_, + CONCAT16(param_3._2_1_,CONCAT24((undefined2)param_3,param_2))); + uVar3 = uVar3 & 0x7ff0; + if ((param_3 & 0x7ff00000) == 0) { + return (float10)1; + } + if (uVar3 != 0x7ff0) { + uVar3 = uVar3 >> 4; + if ((ushort)(uVar3 - 0x3ff) < 0x3f) { + if (((byte)(uVar3 - 0x3ff) < 0xc) && + (sVar8 = uVar6 * 2 + -0x7fe0, bVar4 = (char)uVar3 + 2, uVar3 = uVar3 - 0x3ff, + (short)(sVar8 << (bVar4 & 0x1f)) >> (bVar4 & 0x1f) == sVar8)) { + uVar6 = (ushort)CONCAT31((int3)((param_3 & 0xfff0) >> 8), + (byte)(param_3 & 0xfff0) | param_3._2_1_ & 0xf); + uVar6 = uVar6 >> 4 | uVar6 << 0xc; + fVar11 = fVar10; + while (cVar2 = (char)uVar3, uVar3 = (ushort)(byte)(cVar2 - 1), '\0' < cVar2) { + fVar11 = fVar11 * fVar11; + bVar9 = (short)uVar6 < 0; + uVar6 = uVar6 << 1; + if (bVar9) { + fVar11 = fVar11 * fVar10; + } + } + if ((param_3 & 0x80000000) == 0) { + return fVar11; + } + return (float10)1 / fVar11; + } + local_c = (double)(longlong)ROUND(ROUND(dVar1)); + if ((((ulonglong)param_1 & 0x8000000000000000) != 0) && + (fVar10 = -fVar10, ((ulonglong)local_c & 1) != 0)) { + bVar9 = true; + } + } + if (fVar10 < (float10)0) { + iVar7 = 1; + pdVar5 = (double *)&DAT_00520920; + goto LAB_004dcf19; + } + fVar10 = (float10)FUN_004dcbdc(); + fVar10 = fVar10 * (float10)(double)CONCAT17(param_3._3_1_, + CONCAT16(param_3._2_1_, + CONCAT24((undefined2)param_3,param_2))) + ; + uStack_e = (ushort)((unkuint10)fVar10 >> 0x40); + if ((uStack_e & 0x7fff) < 0x4008) { +LAB_004dcfc5: + fVar10 = (float10)FUN_004dcb11(extraout_CX); + if (!bVar9) { + return fVar10; + } + return -fVar10; + } + uStack_10 = 0xffff; + if ((uStack_e & 0x7fff) < 0x4009) { + uStack_10 = (ushort)((unkuint10)fVar10 >> 0x30); + } + uStack_e._1_1_ = (byte)((unkuint10)fVar10 >> 0x48); + if ((uStack_e._1_1_ & 0x80) == 0) { + if (uStack_10 < 0xb172) goto LAB_004dcfc5; + iVar7 = 3; + pdVar5 = (double *)&DAT_005209d4; + } + else { + if (uStack_10 < 0xb172) goto LAB_004dcfc5; + iVar7 = 4; + pdVar5 = (double *)&DAT_00520928; + } + goto LAB_004dcf19; + } + local_c = dVar1; + } + iVar7 = 3; + pdVar5 = &local_c; + } +LAB_004dcf19: + fVar10 = FUN_004de098(iVar7,&DAT_00520938,¶m_1,(undefined8 *)¶m_2,*(undefined4 *)pdVar5, + *(undefined4 *)((int)pdVar5 + 4)); + return fVar10; +} + + + +/* @004dd070 file=? name=FUN_004dd070 */ + +undefined4 __cdecl FUN_004dd070(undefined4 *param_1) + +{ + uint uVar1; + undefined4 uVar2; + uint uVar3; + + uVar1 = param_1[1]; + uVar3 = 0; + if (uVar1 != 0) { + uVar3 = uVar1 % 10; + param_1[1] = uVar1 / 10; + } + uVar2 = *param_1; + *param_1 = (int)(CONCAT44(uVar3,uVar2) / 10); + return (int)(CONCAT44(uVar3,uVar2) % 10); +} + + + +/* @004dd0c8 file=? name=FUN_004dd0c8 */ + +float10 FUN_004dd0c8(void) + +{ + float10 in_ST0; + + return ROUND(in_ST0); +} + + + +/* @004dd0f4 file=? name=FUN_004dd0f4 */ + +void __cdecl FUN_004dd0f4(undefined4 param_1,undefined4 param_2) + +{ + if ((param_2._2_2_ & 0x7ff0) < 0x4340) { + FUN_004dcc1c(); + } + else { + FUN_004de098(5,&DAT_00520944,(undefined8 *)¶m_1,(undefined8 *)0x0,DAT_0052093c,DAT_00520940) + ; + } + return; +} + + + +/* @004dd138 file=? name=FUN_004dd138 */ + +float10 __cdecl FUN_004dd138(double param_1) + +{ + float10 fVar1; + + fVar1 = (float10)param_1; + if (((ulonglong)param_1 & 0x7fff000000000000) != 0) { + if ((longlong)param_1 < 0) { + fVar1 = FUN_004de098(1,&DAT_00520950,¶m_1,(undefined8 *)0x0,DAT_00520948,DAT_0052094c); + } + else { + fVar1 = SQRT(fVar1); + } + } + return fVar1; +} + + + +/* @004dd188 file=? name=FUN_004dd188 */ + +void __cdecl FUN_004dd188(undefined4 param_1,undefined4 param_2) + +{ + if ((param_2._2_2_ & 0x7ff0) < 0x4340) { + FUN_004dcc24(); + } + else { + FUN_004de098(5,&DAT_00520960,(undefined8 *)¶m_1,(undefined8 *)0x0,DAT_00520958,DAT_0052095c) + ; + } + return; +} + + + +/* @004dd1cc file=? name=FUN_004dd1cc */ + +void __cdecl FUN_004dd1cc(undefined4 param_1) + +{ + FUN_004ddd94(param_1,(undefined4 *)0x0); + return; +} + + + +/* @004dd1e0 file=? name=FUN_004dd1e0 */ + +int __cdecl FUN_004dd1e0(char *param_1) + +{ + char cVar1; + int iVar2; + char *pcVar3; + bool bVar4; + + iVar2 = 0; + do { + pcVar3 = param_1; + cVar1 = *pcVar3; + param_1 = pcVar3 + 1; + } while (((&DAT_005207dd)[cVar1] & 1) != 0); + if ((cVar1 == '+') || (cVar1 == '-')) { + bVar4 = cVar1 == '-'; + cVar1 = *param_1; + param_1 = pcVar3 + 2; + } + else { + bVar4 = false; + } + while (('/' < cVar1 && (cVar1 < ':'))) { + iVar2 = iVar2 * 10 + (int)cVar1 + -0x30; + cVar1 = *param_1; + param_1 = param_1 + 1; + } + if (bVar4) { + iVar2 = -iVar2; + } + return iVar2; +} + + + +/* @004dd23c file=? name=FUN_004dd23c */ + +void __cdecl FUN_004dd23c(char *param_1) + +{ + FUN_004dd1e0(param_1); + return; +} + + + +/* @004dd24c file=? name=FUN_004dd24c */ + +void FUN_004dd24c(void) + +{ + FUN_004ded48(s_printf___floating_point_formats_n_00520974); + return; +} + + + +/* @004dd258 file=? name=FUN_004dd258 */ + +void FUN_004dd258(void) + +{ + FUN_004ded48(s_scanf___floating_point_formats_n_0052099f); + return; +} + + + +/* @004dd264 file=? name=FUN_004dd264 */ + +float10 __cdecl +FUN_004dd264(int param_1,undefined4 param_2,undefined4 param_3,ushort param_4,undefined4 param_5, + undefined4 param_6) + +{ + ushort uVar1; + ushort uVar2; + ushort uVar3; + float10 fVar4; + undefined8 local_10; + + if (param_1 == 0) { + uVar1 = 0x407e; + uVar3 = 0x3f6a; + } + else { + uVar1 = 0x43fe; + uVar3 = 0x3bcd; + } + uVar2 = param_4 & 0x7fff; + if (uVar2 == 0x7fff) { + return (float10)CONCAT28(param_4,CONCAT26(param_3._2_2_,CONCAT24((short)param_3,param_2))); + } + if (uVar1 < uVar2) { + local_10 = (double)CONCAT44(param_6,param_5); + } + else { + if (uVar1 == uVar2) { + FUN_004dc9f8(); + FUN_004dc9f8(); + FUN_004dc9f8(); + return (float10)(float)(float10)CONCAT28(param_4,CONCAT26(param_3._2_2_, + CONCAT24((short)param_3,param_2))); + } + if (((((short)param_2 == 0 && uVar2 == 0) && param_2._2_2_ == 0) && (short)param_3 == 0) && + param_3._2_2_ == 0) { + return (float10)CONCAT28(param_4,CONCAT26(param_3._2_2_,CONCAT24((short)param_3,param_2))); + } + if (uVar3 <= uVar2) { + return (float10)CONCAT28(param_4,CONCAT26(param_3._2_2_,CONCAT24((short)param_3,param_2))); + } + local_10 = 0.0; + } + DAT_00520bcc = 0x22; + if ((param_4 & 0x8000) == 0) { + fVar4 = (float10)local_10; + } + else { + fVar4 = -(float10)local_10; + } + return fVar4; +} + + + +/* @004dd35c file=? name=FUN_004dd35c */ + +char * __cdecl FUN_004dd35c(uint param_1,char *param_2,uint param_3,char param_4,char param_5) + +{ + char cVar1; + char *pcVar2; + char *pcVar3; + char local_28 [36]; + + pcVar3 = param_2; + if ((1 < (int)param_3) && ((int)param_3 < 0x25)) { + if (((int)param_1 < 0) && (param_4 != '\0')) { + *param_2 = '-'; + pcVar3 = param_2 + 1; + param_1 = -param_1; + } + pcVar2 = local_28; + do { + *pcVar2 = (char)(param_1 % param_3); + pcVar2 = pcVar2 + 1; + param_1 = param_1 / param_3; + } while (param_1 != 0); + while (pcVar2 != local_28) { + pcVar2 = pcVar2 + -1; + cVar1 = *pcVar2; + if (cVar1 < '\n') { + *pcVar3 = cVar1 + '0'; + pcVar3 = pcVar3 + 1; + } + else { + *pcVar3 = cVar1 + param_5 + -10; + pcVar3 = pcVar3 + 1; + } + } + } + *pcVar3 = '\0'; + return param_2; +} + + + +/* @004dd3d0 file=? name=FUN_004dd3d0 */ + +void __cdecl FUN_004dd3d0(uint param_1,char *param_2) + +{ + FUN_004dd35c(param_1,param_2,10,'\0','a'); + return; +} + + + +/* @004dd3ec file=? name=FUN_004dd3ec */ + +void __cdecl FUN_004dd3ec(uint param_1,char *param_2,uint param_3) + +{ + FUN_004dd35c(param_1,param_2,param_3,param_3 == 10,'a'); + return; +} + + + +/* @004dd41c file=? name=FUN_004dd41c */ + +void __cdecl FUN_004dd41c(uint param_1,char *param_2,uint param_3) + +{ + FUN_004dd35c(param_1,param_2,param_3,'\0','a'); + return; +} + + + +/* @004dd43c file=? name=FUN_004dd43c */ + +void __cdecl FUN_004dd43c(uint param_1,char *param_2,uint param_3) + +{ + FUN_004dd35c(param_1,param_2,param_3,param_3 == 10,'a'); + return; +} + + + +/* @004dd494 file=? name=FUN_004dd494 */ + +void __cdecl FUN_004dd494(undefined *param_1,undefined *param_2) + +{ + PTR_FUN_005209fc = param_1; + PTR_LAB_00520a00 = param_2; + return; +} + + + +/* @004dd4b0 file=? name=FUN_004dd4b0 */ + +void __cdecl FUN_004dd4b0(uint param_1) + +{ + FUN_004de144(param_1); + return; +} + + + +/* @004dd4c0 file=? name=FUN_004dd4c0 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004dd4c0(undefined4 param_1) + +{ + DAT_00520a48 = param_1; + _DAT_00520a4c = 0; + return; +} + + + +/* @004dd4d4 file=? name=FUN_004dd4d4 */ + +uint FUN_004dd4d4(void) + +{ + DAT_00520a48 = DAT_00520a48 * 0x15a4e35 + 1; + return DAT_00520a48 >> 0x10 & 0x7fff; +} + + + +/* @004dd53c file=? name=FUN_004dd53c */ + +uint __cdecl FUN_004dd53c(char param_1,uint param_2,uint param_3) + +{ + if ((param_1 == 'G') || (param_1 == 'g')) { + while (*(char *)(param_3 - 1) == '0') { + param_3 = param_3 - 1; + if (param_3 <= param_2) { + return param_2; + } + } + } + if (*PTR_DAT_005207a0 == *(char *)(param_3 - 1)) { + param_3 = param_3 - 1; + } + return param_3; +} + + + +/* @004dd574 file=? name=FUN_004dd574 */ + +byte * __cdecl +FUN_004dd574(float10 *param_1,uint param_2,byte *param_3,byte param_4,char param_5,int param_6) + +{ + char cVar1; + int iVar2; + char *pcVar3; + byte *pbVar4; + uint uVar5; + uint uVar6; + byte *pbVar7; + byte *pbVar8; + int iVar9; + char *pcVar10; + byte local_3c [46]; + byte local_e; + byte local_d; + uint local_c; + uint local_8; + + local_e = *PTR_DAT_005207a0; + if (0x28 < (int)param_2) { + param_2 = 0x28; + } + local_c = param_2; + local_d = param_4 & 0xdf; + if (local_d == 0x46) { + uVar5 = -param_2; + if (0 < (int)-param_2) { + param_2 = 0; + uVar5 = 0; + } + } + else if ((int)param_2 < 1) { + uVar5 = 1; + } + else { + uVar5 = param_2; + if (local_d == 0x45) { + uVar5 = param_2 + 1; + param_2 = param_2 + 1; + } + } + iVar2 = FUN_004dddc8(param_1,uVar5,&local_8,(undefined4 *)local_3c,param_6); + if (iVar2 == 0x7fff) { + if (local_8 == 0) { + pcVar3 = &DAT_00520a55; + } + else { + pcVar3 = &DAT_00520a50; + } + uVar5 = 0xffffffff; + do { + pcVar10 = pcVar3; + if (uVar5 == 0) break; + uVar5 = uVar5 - 1; + pcVar10 = pcVar3 + 1; + cVar1 = *pcVar3; + pcVar3 = pcVar10; + } while (cVar1 != '\0'); + uVar5 = ~uVar5; + pbVar7 = (byte *)(pcVar10 + -uVar5); + pbVar4 = param_3; + for (uVar6 = uVar5 >> 2; uVar6 != 0; uVar6 = uVar6 - 1) { + *(undefined4 *)pbVar4 = *(undefined4 *)pbVar7; + pbVar7 = pbVar7 + 4; + pbVar4 = pbVar4 + 4; + } + for (uVar5 = uVar5 & 3; uVar5 != 0; uVar5 = uVar5 - 1) { + *pbVar4 = *pbVar7; + pbVar7 = pbVar7 + 1; + pbVar4 = pbVar4 + 1; + } + return param_3; + } + if (iVar2 == 0x7ffe) { + if (local_8 == 0) { + pcVar3 = &DAT_00520a5f; + } + else { + pcVar3 = &DAT_00520a5a; + } + uVar5 = 0xffffffff; + do { + pcVar10 = pcVar3; + if (uVar5 == 0) break; + uVar5 = uVar5 - 1; + pcVar10 = pcVar3 + 1; + cVar1 = *pcVar3; + pcVar3 = pcVar10; + } while (cVar1 != '\0'); + uVar5 = ~uVar5; + pbVar7 = (byte *)(pcVar10 + -uVar5); + pbVar4 = param_3; + for (uVar6 = uVar5 >> 2; uVar6 != 0; uVar6 = uVar6 - 1) { + *(undefined4 *)pbVar4 = *(undefined4 *)pbVar7; + pbVar7 = pbVar7 + 4; + pbVar4 = pbVar4 + 4; + } + for (uVar5 = uVar5 & 3; uVar5 != 0; uVar5 = uVar5 - 1) { + *pbVar4 = *pbVar7; + pbVar7 = pbVar7 + 1; + pbVar4 = pbVar4 + 1; + } + return param_3; + } + pbVar7 = param_3; + if (local_8 != 0) { + *param_3 = 0x2d; + pbVar7 = param_3 + 1; + } + if (local_d != 0x46) { + if ((local_d != 0x47) || (iVar2 < -3)) goto LAB_004dd739; + uVar5 = param_2; + if (param_2 == 0) { + uVar5 = 1; + } + if ((int)uVar5 < iVar2) goto LAB_004dd739; + } + if (iVar2 < 0x29) { + if (iVar2 < 1) { + *pbVar7 = 0x30; + pbVar7[1] = local_e; + pbVar7 = pbVar7 + 2; + for (iVar9 = iVar2; iVar2 = 0, iVar9 != 0; iVar9 = iVar9 + 1) { + *pbVar7 = 0x30; + pbVar7 = pbVar7 + 1; + } + } + iVar9 = 0; + for (pbVar4 = local_3c; *pbVar4 != 0; pbVar4 = pbVar4 + 1) { + *pbVar7 = *pbVar4; + pbVar8 = pbVar7 + 1; + iVar2 = iVar2 + -1; + if (iVar2 == 0) { + *pbVar8 = local_e; + pbVar8 = pbVar7 + 2; + iVar9 = iVar9 + 1; + } + pbVar7 = pbVar8; + } + if ((int)(iVar9 + local_c) < (int)param_2) { + uVar5 = param_2 - (iVar9 + local_c); + pbVar4 = (byte *)FUN_004d4988((undefined4 *)pbVar7,0x30,uVar5); + pbVar7 = pbVar7 + uVar5; + } + else if ((iVar2 != 1) && (param_5 == '\0')) { + pbVar4 = (byte *)FUN_004dd53c(param_4,(uint)param_3,(uint)pbVar7); + pbVar7 = pbVar4; + } + if (pbVar7 == param_3) { + *pbVar7 = 0x30; + pbVar7 = pbVar7 + 1; + } + *pbVar7 = 0; + return pbVar4; + } +LAB_004dd739: + *pbVar7 = local_3c[0]; + pbVar4 = pbVar7 + 1; + if (local_3c[1] == 0) { + if (param_5 != '\0') { + *pbVar4 = local_e; + pbVar4 = pbVar7 + 2; + } + } + else { + *pbVar4 = local_e; + pbVar4 = pbVar7 + 2; + pbVar7 = local_3c + 2; + while (local_3c[1] != 0) { + *pbVar4 = local_3c[1]; + pbVar4 = pbVar4 + 1; + local_3c[1] = *pbVar7; + pbVar7 = pbVar7 + 1; + } + if (param_5 == '\0') { + pbVar4 = (byte *)FUN_004dd53c(param_4,(uint)param_3,(uint)pbVar4); + } + } + *pbVar4 = param_4 & 0x20 | 0x45; + pbVar7 = (byte *)(iVar2 + -1); + if ((int)pbVar7 < 0) { + pbVar7 = (byte *)-(int)pbVar7; + pbVar4[1] = 0x2d; + } + else { + pbVar4[1] = 0x2b; + } + if ((int)pbVar7 < 1000) { + if ((int)pbVar7 < 100) { + iVar2 = 2; + } + else { + iVar2 = 3; + } + } + else { + iVar2 = 4; + } + pbVar4[iVar2 + 2] = 0; + pbVar4 = pbVar4 + iVar2 + 2; + pbVar8 = pbVar4; + for (; iVar2 != 0; iVar2 = iVar2 + -1) { + pbVar4 = pbVar4 + -1; + *pbVar4 = (char)((int)pbVar7 % 10) + 0x30; + pbVar8 = (byte *)((int)pbVar7 / 10); + pbVar7 = pbVar8; + } + return pbVar8; +} + + + +/* @004dd7f4 file=? name=FUN_004dd7f4 */ + +int __cdecl FUN_004dd7f4(int param_1,int param_2) + +{ + int iVar1; + + if (param_2 == 0) { + iVar1 = param_1 + 8; + } + else { + iVar1 = param_1 + 0xc; + } + return iVar1; +} + + + +/* @004ddc7c file=? name=FUN_004ddc7c */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004ddc7c(float *param_1,double *param_2,uint param_3) + +{ + float10 fVar1; + + if ((param_3 & 4) == 0) { + if ((param_3 & 8) == 0) { + fVar1 = FUN_004dd264(0,*param_1,param_1[1],SUB42(param_1[2],0),SUB84((double)_DAT_00520a64,0), + (int)((ulonglong)(double)_DAT_00520a64 >> 0x20)); + *(float *)param_2 = (float)fVar1; + } + else { + *(float *)param_2 = *param_1; + *(float *)((int)param_2 + 4) = param_1[1]; + *(undefined2 *)(param_2 + 1) = *(undefined2 *)(param_1 + 2); + } + } + else { + fVar1 = FUN_004dd264(1,*param_1,param_1[1],SUB42(param_1[2],0),DAT_005209d4,DAT_005209d8); + *param_2 = (double)fVar1; + } + return; +} + + + +/* @004ddd20 file=? name=FUN_004ddd20 */ + +void __cdecl FUN_004ddd20(undefined4 param_1,int *param_2) + +{ + *param_2 = *param_2 + -1; + return; +} + + + +/* @004ddd2c file=? name=FUN_004ddd2c */ + +undefined1 [10] __cdecl FUN_004ddd2c(undefined4 param_1,undefined4 *param_2) + +{ + undefined1 local_18 [10]; + int local_c; + + thunk_FUN_004dd258(); + if ((0 < local_c) && (local_c == 2)) { + DAT_00520bcc = 0x22; + } + if (param_2 != (undefined4 *)0x0) { + *param_2 = param_1; + } + return local_18; +} + + + +/* @004ddd94 file=? name=FUN_004ddd94 */ + +void __cdecl FUN_004ddd94(undefined4 param_1,undefined4 *param_2) + +{ + undefined1 auVar1 [10]; + undefined4 uVar2; + undefined4 uVar3; + + uVar2 = DAT_005209d4; + uVar3 = DAT_005209d8; + auVar1 = FUN_004ddd2c(param_1,param_2); + FUN_004dd264(1,auVar1._0_4_,auVar1._4_4_,auVar1._8_2_,uVar2,uVar3); + return; +} + + + +/* @004dddc8 file=? name=FUN_004dddc8 */ + +/* WARNING: Restarted to delay deadcode elimination for space: stack */ + +int __cdecl +FUN_004dddc8(float10 *param_1,uint param_2,uint *param_3,undefined4 *param_4,int param_5) + +{ + ushort uVar1; + uint uVar2; + undefined4 uVar3; + uint uVar4; + char *pcVar5; + byte bVar6; + uint uVar7; + float10 fVar8; + undefined4 *local_28; + int local_18; + undefined1 local_10 [8]; + ushort uStack_8; + short local_6; + + local_6 = 10; + if (param_5 == 2) { + _local_10 = (float10)*(float *)param_1; + } + else if (param_5 == 6) { + _local_10 = (float10)*(double *)param_1; + } + else if (param_5 == 8) { + _local_10 = *param_1; + } + uVar1 = uStack_8; + uVar2 = (uint)uStack_8; + _local_10 = (float10)CONCAT28(uStack_8 & 0x7fff,local_10); + *param_3 = (uint)((uVar1 & 0x8000) != 0); + uVar1 = FUN_004dce10((float10 *)local_10); + uVar1 = uVar1 & 0x4700; + if (uVar1 != 0x4000) { + if (uVar1 == 0x500) { + return 0x7fff; + } + if (uVar1 == 0x100) { + return 0x7ffe; + } + uVar2 = ((uVar2 & 0x7fff) - 0x3fff) * 0x4d10 + ((uint)local_10[7] * 2 & 0xff) * 0x4d; + local_18 = (int)uVar2 >> 0x10; + if ((uVar2 & 0xffff) != 0) { + local_18 = local_18 + 1; + } + uVar2 = param_2; + if ((0 < (int)param_2) || (uVar2 = local_18 - param_2, -1 < (int)uVar2)) { + if (0x13 < (int)uVar2) { + uVar2 = 0x13; + } + for (uVar7 = uVar2 - local_18; uVar7 != 0; uVar7 = uVar7 + uVar4) { + uVar4 = uVar7; + if ((int)uVar7 < 0) { + uVar4 = -uVar7; + } + if (0x1344 < (int)uVar4) { + uVar4 = 0x1344; + } + fVar8 = FUN_004de144(uVar4); + if ((int)uVar7 < 0) { + _local_10 = _local_10 / fVar8; + } + else { + _local_10 = _local_10 * fVar8; + uVar4 = -uVar4; + } + } + fVar8 = FUN_004de144(uVar2); + if (_local_10 <= fVar8) { + fVar8 = FUN_004de144(uVar2 - 1); + uVar7 = uVar2; + if (_local_10 < fVar8) { + local_18 = local_18 + -1; + uVar7 = uVar2 - 1; + if (0 < (int)param_2) { + _local_10 = _local_10 * (float10)(int)local_6; + uVar7 = uVar2; + } + } + } + else { + local_18 = local_18 + 1; + uVar7 = uVar2 + 1; + if (((int)uVar7 < 0x14) && (0 < (int)param_2)) { + _local_10 = _local_10 / (float10)(int)local_6; + uVar7 = uVar2; + } + } + if (-1 < (int)uVar7) { + FUN_004dcdec((longlong *)local_10,(float10 *)local_10); + local_28 = (undefined4 *)((int)param_4 + uVar7); + *(undefined1 *)local_28 = 0; + pcVar5 = (char *)((int)local_28 + -1); + bVar6 = 0; + if (uVar7 == 0) { + if (local_10[0] != '\x01') goto LAB_004dde4f; + bVar6 = 0; + } + else { + do { + uVar3 = FUN_004dd070((undefined4 *)local_10); + bVar6 = bVar6 | (byte)uVar3; + *pcVar5 = (byte)uVar3 + 0x30; + pcVar5 = pcVar5 + -1; + uVar7 = uVar7 - 1; + } while (uVar7 != 0); + } + if (bVar6 == 0) { + local_18 = local_18 + 1; + if ((int)param_2 < 1) { + *(undefined1 *)local_28 = 0x30; + } + local_28 = (undefined4 *)((int)local_28 + 1); + pcVar5[1] = '1'; + } + if ((int)param_2 < 1) { + param_2 = local_18 - param_2; + } + if (0x28 < (int)param_2) { + param_2 = 0x28; + } + *(undefined1 *)local_28 = 0; + uVar2 = param_2 - ((int)local_28 - (int)param_4); + if ((int)uVar2 < 1) { + return local_18; + } + FUN_004d4988(local_28,0x30,uVar2); + *(undefined1 *)((int)local_28 + uVar2) = 0; + return local_18; + } + } + } +LAB_004dde4f: + if ((int)param_2 < 1) { + param_2 = 1 - param_2; + } + if (0x28 < (int)param_2) { + param_2 = 0x28; + } + FUN_004d4988(param_4,0x30,param_2); + *(undefined1 *)((int)param_4 + param_2) = 0; + *param_3 = 0; + return 1; +} + + + +/* @004de098 file=? name=FUN_004de098 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 __cdecl +FUN_004de098(int param_1,undefined4 param_2,undefined8 *param_3,undefined8 *param_4, + undefined4 param_5,undefined4 param_6) + +{ + int iVar1; + char local_74 [80]; + int local_24; + undefined4 local_20; + undefined8 local_1c; + undefined8 local_14; + undefined4 local_c; + undefined4 uStack_8; + + local_24 = param_1; + local_20 = param_2; + local_1c = _DAT_004de13c; + if (param_3 != (undefined8 *)0x0) { + local_1c = *param_3; + } + local_14 = _DAT_004de13c; + if (param_4 != (undefined8 *)0x0) { + local_14 = *param_4; + } + local_c = param_5; + uStack_8 = param_6; + iVar1 = (*(code *)PTR_FUN_005209fc)(&local_24); + if (iVar1 == 0) { + FUN_004d7f10(local_74,s__s___s_error_00520a8c); + if (param_1 - 2U < 3) { + DAT_00520bcc = 0x22; + } + else { + DAT_00520bcc = 0x21; + } + FUN_004dec88(local_74); + } + return (float10)(double)CONCAT44(uStack_8,local_c); +} + + + +/* @004de144 file=? name=FUN_004de144 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +float10 __cdecl FUN_004de144(uint param_1) + +{ + uint uVar1; + uint uVar2; + undefined1 local_10 [8]; + undefined2 uStack_8; + + _local_10 = _DAT_004de2a0; + if (((-0x1345 < (int)param_1) && (_local_10 = _DAT_00520b52, (int)param_1 < 0x1345)) && + (_local_10 = _DAT_004de2ac, param_1 != 0)) { + uVar1 = param_1; + if ((int)param_1 < 0) { + uVar1 = -param_1; + } + uVar2 = uVar1 & 7; + _local_10 = (float10)CONCAT28(*(undefined2 *)(&DAT_00520aa4 + uVar2 * 10), + CONCAT44(*(undefined4 *)(&DAT_00520aa0 + uVar2 * 10), + *(undefined4 *)(&DAT_00520a9c + uVar2 * 10))); + if (((int)uVar1 >> 3 & 1U) != 0) { + _local_10 = _local_10 * _DAT_00520aec; + } + if ((int)uVar1 >> 4 != 0) { + if (((int)uVar1 >> 4 & 1U) != 0) { + _local_10 = _local_10 * _DAT_00520af8; + } + if (((int)uVar1 >> 5 & 1U) != 0) { + _local_10 = _local_10 * _DAT_00520b02; + } + if (((int)uVar1 >> 6 & 1U) != 0) { + _local_10 = _local_10 * _DAT_00520b0c; + } + if (((int)uVar1 >> 7 & 1U) != 0) { + _local_10 = _local_10 * _DAT_00520b16; + } + if (((int)uVar1 >> 8 & 1U) != 0) { + _local_10 = _local_10 * _DAT_00520b20; + } + if (((int)uVar1 >> 9 & 1U) != 0) { + _local_10 = _local_10 * _DAT_00520b2a; + } + if (((int)uVar1 >> 10 & 1U) != 0) { + _local_10 = _local_10 * _DAT_00520b34; + } + if (((int)uVar1 >> 0xb & 1U) != 0) { + _local_10 = _local_10 * _DAT_00520b3e; + } + if (((int)uVar1 >> 0xc & 1U) != 0) { + _local_10 = _local_10 * _DAT_00520b48; + } + } + if ((int)param_1 < 0) { + _local_10 = (float10)_DAT_004de2b8 / _local_10; + } + } + return _local_10; +} + + + +/* @004de2bc file=? name=FUN_004de2bc */ + +int * __cdecl FUN_004de2bc(int param_1,int param_2) + +{ + int *piVar1; + + piVar1 = FUN_004de55c(param_1 * param_2); + if (piVar1 != (int *)0x0) { + FUN_004d4988(piVar1,0,param_1 * param_2); + } + return piVar1; +} + + + +/* @004de2e8 file=? name=FUN_004de2e8 */ + +undefined4 __cdecl FUN_004de2e8(int param_1) + +{ + int iVar1; + uint uVar2; + uint uVar3; + uint local_c; + int *local_8; + + uVar2 = param_1 + 0xffffU & 0xffff0000; + uVar3 = (int)DAT_00520b60 - (int)DAT_00520b5c; + if (uVar3 != 0) { + if (uVar2 < uVar3) { + uVar3 = uVar2; + } + iVar1 = FUN_004deac8(DAT_00520b5c,uVar3); + if (iVar1 == 0) { + return 0xffffffff; + } + FUN_004de4b8(DAT_00520b5c,uVar3); + DAT_00520b5c = (int *)((int)DAT_00520b5c + uVar3); + } + if (uVar3 < uVar2) { + iVar1 = FUN_004dea5c(uVar2,&local_8,&local_c); + if (iVar1 == 0) { + return 0xffffffff; + } + if (local_8 == DAT_00520b60) { + uVar2 = uVar2 - uVar3; + } + iVar1 = FUN_004deac8(local_8,uVar2); + if (iVar1 == 0) { + FUN_004deb5c(local_8); + return 0xffffffff; + } + FUN_004de4b8(local_8,uVar2); + DAT_00520b5c = (int *)(uVar2 + (int)local_8); + DAT_00520b60 = (int *)((int)local_8 + local_c); + } + return 0; +} + + + +/* @004de420 file=? name=FUN_004de420 */ + +void __cdecl FUN_004de420(int *param_1) + +{ + uint uVar1; + int *piVar2; + int iVar3; + undefined4 *puVar4; + uint uVar5; + int *piVar6; + bool bVar7; + + if ((param_1 != (int *)0x0) && ((param_1[-1] & 1U) != 0)) { + uVar5 = param_1[-1] & 0xfffffffe; + uVar1 = param_1[-2]; + bVar7 = (uVar1 & 1) == 0; + if (bVar7) { + param_1 = (int *)((int)param_1 - uVar1); + uVar5 = uVar5 + uVar1; + } + piVar6 = (int *)(uVar5 + (int)param_1); + uVar1 = piVar6[-1]; + if ((uVar1 & 1) == 0) { + piVar2 = (int *)piVar6[1]; + iVar3 = *piVar6; + *piVar2 = iVar3; + *(int *)(iVar3 + 4) = piVar6[1]; + if (piVar6 == DAT_00525120) { + DAT_00525120 = piVar2; + } + uVar5 = uVar5 + uVar1; + } + *(uint *)((int)param_1 + (uVar5 - 8)) = uVar5; + param_1[-1] = uVar5; + if (!bVar7) { + puVar4 = *(undefined4 **)(DAT_0052511c + 4); + *(int **)(DAT_0052511c + 4) = param_1; + param_1[1] = (int)puVar4; + *param_1 = DAT_0052511c; + *puVar4 = param_1; + } + } + return; +} + + + +/* @004de4b8 file=? name=FUN_004de4b8 */ + +undefined4 __cdecl FUN_004de4b8(int *param_1,uint param_2) + +{ + undefined4 uVar1; + int *piVar2; + int iVar3; + uint uVar4; + + if (param_2 < 0x10) { + uVar1 = 0xffffffff; + } + else { + uVar4 = param_2 & 0xfffffffc; + iVar3 = 0; + for (piVar2 = &DAT_00524f08; (iVar3 < DAT_00525108 && ((int *)(*piVar2 + piVar2[1]) != param_1)) + ; piVar2 = piVar2 + 2) { + iVar3 = iVar3 + 1; + } + if (iVar3 == DAT_00525108) { + if (DAT_00525108 == 0x40) { + return 0xffffffff; + } + (&DAT_00524f08)[DAT_00525108 * 2] = param_1; + (&DAT_00524f0c)[DAT_00525108 * 2] = uVar4; + DAT_00525108 = DAT_00525108 + 1; + uVar4 = uVar4 - 8; + piVar2 = param_1 + 2; + *param_1 = 1; + } + else { + (&DAT_00524f0c)[iVar3 * 2] = (&DAT_00524f0c)[iVar3 * 2] + uVar4; + piVar2 = param_1; + } + piVar2[-1] = uVar4 | 1; + *(uint *)((int)piVar2 + (uVar4 - 8)) = uVar4 | 1; + *(undefined4 *)((int)piVar2 + (uVar4 - 4)) = 1; + FUN_004de420(piVar2); + uVar1 = 0; + } + return uVar1; +} + + + +/* @004de55c file=? name=FUN_004de55c */ + +int * __cdecl FUN_004de55c(uint param_1) + +{ + uint uVar1; + int *piVar2; + int *piVar3; + int iVar4; + int *piVar5; + int iVar6; + uint uVar7; + uint uVar8; + + if (param_1 < 8) { + uVar8 = 0x10; + } + else { + uVar8 = (param_1 + 3 & 0xfffffffc) + 8; + } + if ((0xf < (int)uVar8) && (param_1 != 0)) { + iVar6 = 0; + piVar3 = DAT_00525120; + do { + do { + uVar1 = piVar3[-1]; + if (uVar8 <= uVar1) { + iVar6 = *piVar3; + piVar2 = (int *)piVar3[1]; + uVar7 = uVar1 - uVar8; + if (0xf < uVar7) { + piVar5 = (int *)(uVar8 + (int)piVar3); + *(int **)(iVar6 + 4) = piVar5; + DAT_00525120 = piVar5; + *piVar2 = (int)piVar5; + piVar5[1] = (int)piVar2; + *piVar5 = iVar6; + piVar5[-2] = uVar8 | 1; + piVar3[-1] = uVar8 | 1; + *(uint *)((int)piVar5 + (uVar7 - 8)) = uVar7; + piVar5[-1] = uVar7; + return piVar3; + } + *(int **)(iVar6 + 4) = piVar2; + *piVar2 = iVar6; + if (piVar3 == DAT_00525120) { + DAT_00525120 = piVar2; + } + *(uint *)((int)piVar3 + (uVar1 - 8)) = uVar1 | 1; + piVar3[-1] = uVar1 | 1; + return piVar3; + } + piVar2 = piVar3 + 1; + piVar3 = (int *)*piVar2; + } while ((int *)*piVar2 != DAT_00525120); + if (iVar6 == 2) { + return (int *)0x0; + } + iVar6 = iVar6 + 1; + iVar4 = FUN_004de2e8(uVar8); + piVar3 = DAT_00525120; + } while (iVar4 == 0); + } + return (int *)0x0; +} + + + +/* @004de644 file=? name=FUN_004de644 */ + +int __cdecl FUN_004de644(int param_1,uint param_2) + +{ + int iVar1; + uint uVar2; + uint uVar3; + uint uVar4; + int *piVar5; + int *piVar6; + + if (param_2 < 8) { + uVar2 = 0x10; + } + else { + uVar2 = (param_2 + 3 & 0xfffffffc) + 8; + } + if (((int)uVar2 < 0x10) || (param_2 == 0)) { + param_1 = 0; + } + else { + uVar4 = *(uint *)(param_1 + -4) & 0xfffffffe; + if (uVar2 != uVar4) { + if (uVar4 < uVar2) { + piVar5 = (int *)(param_1 + uVar4); + uVar3 = piVar5[-1]; + if (((uVar3 & 1) == 0) && (uVar2 <= uVar4 + uVar3)) { + iVar1 = *piVar5; + if (piVar5 == DAT_00525120) { + piVar5 = (int *)piVar5[1]; + DAT_00525120 = piVar5; + } + else { + piVar5 = (int *)piVar5[1]; + } + uVar4 = (uVar4 + uVar3) - uVar2; + if (uVar4 < 0x10) { + *(int **)(iVar1 + 4) = piVar5; + *piVar5 = iVar1; + uVar3 = uVar2 + uVar4 | 1; + *(uint *)(param_1 + uVar2 + uVar4 + -8) = uVar3; + *(uint *)(param_1 + -4) = uVar3; + } + else { + piVar6 = (int *)(param_1 + uVar2); + *(int **)(iVar1 + 4) = piVar6; + *piVar5 = (int)piVar6; + piVar6[1] = (int)piVar5; + *piVar6 = iVar1; + piVar6[-2] = uVar2 | 1; + *(uint *)(param_1 + -4) = uVar2 | 1; + *(uint *)((int)piVar6 + (uVar4 - 8)) = uVar4; + piVar6[-1] = uVar4; + } + } + else { + param_1 = 0; + } + } + else { + uVar4 = uVar4 - uVar2; + if (0xf < uVar4) { + piVar5 = (int *)(param_1 + uVar2); + piVar5[-2] = uVar2 | 1; + *(uint *)(param_1 + -4) = uVar2 | 1; + *(uint *)((int)piVar5 + (uVar4 - 8)) = uVar4 | 1; + piVar5[-1] = uVar4 | 1; + FUN_004de420(piVar5); + } + } + } + } + return param_1; +} + + + +/* @004de760 file=? name=FUN_004de760 */ + +int * __cdecl FUN_004de760(int *param_1,uint param_2) + +{ + int *piVar1; + int iVar2; + uint uVar3; + int *piVar4; + uint uVar5; + uint local_c; + + if (param_2 == 0) { + FUN_004de420(param_1); + piVar1 = (int *)0x0; + } + else if (param_1 == (int *)0x0) { + piVar1 = FUN_004de55c(param_2); + } + else { + iVar2 = FUN_004de644((int)param_1,param_2); + piVar1 = param_1; + if (iVar2 == 0) { + if (param_2 < 8) { + local_c = 0x10; + } + else { + local_c = (param_2 + 3 & 0xfffffffc) + 8; + } + if (((int)local_c < 0x10) || (param_2 == 0)) { + piVar1 = (int *)0x0; + } + else { + uVar5 = param_1[-1] & 0xfffffffe; + uVar3 = param_1[-2]; + if (((uVar3 & 1) == 0) && (local_c <= uVar3 + uVar5)) { + piVar1 = (int *)((int)param_1 - uVar3); + piVar4 = (int *)piVar1[1]; + iVar2 = *piVar1; + *(int **)(iVar2 + 4) = piVar4; + *piVar4 = iVar2; + if (piVar1 == DAT_00525120) { + DAT_00525120 = piVar4; + } + FUN_004d493c(piVar1,param_1,uVar5); + uVar5 = uVar5 + uVar3; + uVar3 = uVar5 - local_c; + if (uVar3 < 0x10) { + *(uint *)((int)piVar1 + (uVar5 - 8)) = uVar5 | 1; + piVar1[-1] = uVar5 | 1; + } + else { + piVar4 = (int *)(local_c + (int)piVar1); + piVar4[-2] = local_c | 1; + piVar1[-1] = local_c | 1; + *(uint *)((int)piVar4 + (uVar3 - 8)) = uVar3 | 1; + piVar4[-1] = uVar3 | 1; + FUN_004de420(piVar4); + } + } + else { + piVar1 = FUN_004de55c(param_2); + if (piVar1 != (int *)0x0) { + FUN_004d493c(piVar1,param_1,uVar5 - 8); + FUN_004de420(param_1); + } + } + } + } + } + return piVar1; +} + + + +/* @004de8b8 file=? name=FUN_004de8b8 */ + +int __cdecl FUN_004de8b8(int param_1) + +{ + if (param_1 == 0) { + return 0; + } + return (*(uint *)(param_1 + -4) & 0xfffffffe) - 8; +} + + + +/* @004de8d4 file=? name=FUN_004de8d4 */ + +int * __cdecl FUN_004de8d4(int *param_1,int param_2,int param_3,uint param_4,undefined *param_5) + +{ + int *piVar1; + uint uVar2; + + if (param_1 == (int *)0x0) { + param_1 = (int *)0x0; + } + else { + if ((param_4 & 0x10) != 0) { + param_3 = param_1[-1]; + } + uVar2 = param_4 & 7; + piVar1 = (int *)((param_3 + -1) * param_2 + (int)param_1); + while (param_3 != 0) { + if (uVar2 == 1) { + (*(code *)param_5)(piVar1,2); + } + else if (uVar2 == 2) { + (*(code *)param_5)(piVar1,2); + } + else if (uVar2 == 3) { + (*(code *)param_5)(); + } + else if (uVar2 == 5) { + (*(code *)param_5)(piVar1,2); + } + else { + FUN_004ded48(s_Illegal_mode_in__vector_delete__00520b64); + } + piVar1 = (int *)((int)piVar1 - param_2); + param_3 = param_3 + -1; + } + if ((param_4 & 0x10) != 0) { + param_1 = param_1 + -1; + } + if ((param_4 & 8) != 0) { + FUN_004022e8(param_1); + param_1 = (int *)0x0; + } + } + return param_1; +} + + + +/* @004de998 file=? name=FUN_004de998 */ + +int * __cdecl FUN_004de998(int *param_1,int param_2,int param_3,uint param_4,undefined *param_5) + +{ + undefined4 uVar1; + uint uVar2; + int iVar3; + int *unaff_EDI; + + uVar1 = *DAT_00524c68; + if (param_1 == (int *)0x0) { + iVar3 = 4; + if ((param_4 & 0x10) == 0) { + iVar3 = 0; + } + param_1 = (int *)FUN_004022b0(param_2 * param_3 + iVar3); + if (param_1 == (int *)0x0) { + return unaff_EDI; + } + } + if ((param_4 & 0x10) != 0) { + *param_1 = param_3; + param_1 = param_1 + 1; + } + if (param_5 != (undefined *)0x0) { + while (param_3 != 0) { + uVar2 = param_4 & 7; + if (uVar2 == 1) { + (*(code *)param_5)(param_1); + } + else if (uVar2 == 2) { + (*(code *)param_5)(param_1); + } + else if (uVar2 == 3) { + (*(code *)param_5)(); + } + else if (uVar2 == 5) { + (*(code *)param_5)(param_1); + } + else { + FUN_004ded48(s_Illegal_mode_in__vector_new__00520b84); + } + param_1 = (int *)((int)param_1 + param_2); + param_3 = param_3 + -1; + } + if ((param_4 & 0x200) != 0) { + *DAT_00524c68 = uVar1; + } + } + return unaff_EDI; +} + + + +/* @004dea5c file=? name=FUN_004dea5c */ + +undefined4 __cdecl FUN_004dea5c(int param_1,undefined4 *param_2,uint *param_3) + +{ + LPVOID pvVar1; + uint dwSize; + + if (DAT_00520ba4 == 0) { + if ((DAT_00525224 == 1) || (DAT_00525224 == 2)) { + DAT_00520ba4 = 0x100000; + } + else { + DAT_00520ba4 = 0x400000; + } + } + dwSize = (param_1 + DAT_00520ba4) - 1U & ~(DAT_00520ba4 - 1U); + pvVar1 = VirtualAlloc((LPVOID)0x0,dwSize,0x2000,1); + *param_2 = pvVar1; + if (pvVar1 == (LPVOID)0x0) { + return 0; + } + *param_3 = dwSize; + return 1; +} + + + +/* @004deac8 file=? name=FUN_004deac8 */ + +undefined4 __cdecl FUN_004deac8(LPVOID param_1,int param_2) + +{ + LPVOID pvVar1; + LPVOID lpAddress; + + lpAddress = param_1; + while( true ) { + if (param_2 == 0) { + return 1; + } + pvVar1 = VirtualAlloc(lpAddress,0x1000,0x1000,4); + if (pvVar1 == (LPVOID)0x0) break; + lpAddress = (LPVOID)((int)lpAddress + 0x1000); + param_2 = param_2 + -0x1000; + } + FUN_004deb1c(param_1,(int)lpAddress - (int)param_1); + return 0; +} + + + +/* @004deb1c file=? name=FUN_004deb1c */ + +undefined4 __cdecl FUN_004deb1c(LPVOID param_1,int param_2) + +{ + BOOL BVar1; + + while( true ) { + if (param_2 == 0) { + return 1; + } + BVar1 = VirtualFree(param_1,0x1000,0x4000); + if (BVar1 != 1) break; + param_1 = (LPVOID)((int)param_1 + 0x1000); + param_2 = param_2 + -0x1000; + } + return 0; +} + + + +/* @004deb5c file=? name=FUN_004deb5c */ + +undefined4 __cdecl FUN_004deb5c(LPVOID param_1) + +{ + BOOL BVar1; + + BVar1 = VirtualFree(param_1,0,0x8000); + if (BVar1 != 1) { + return 0; + } + return 1; +} + + + +/* @004deb80 file=? name=FUN_004deb80 */ + +void __cdecl FUN_004deb80(char *param_1,int param_2) + +{ + char *pcVar1; + int iVar2; + uint uVar3; + undefined4 *local_8; + + *param_1 = '\0'; + local_8 = (undefined4 *)&stack0x0000000c; + while( true ) { + pcVar1 = (char *)*local_8; + if (pcVar1 == (char *)0x0) { + return; + } + iVar2 = FUN_004d4a78(param_1); + uVar3 = (param_2 - iVar2) - 1; + if ((int)uVar3 < 1) break; + FUN_004d4a94(param_1,pcVar1,uVar3); + local_8 = local_8 + 1; + } + return; +} + + + +/* @004debc8 file=? name=FUN_004debc8 */ + +void __cdecl FUN_004debc8(undefined4 param_1,undefined4 param_2,uint param_3) + +{ + int iVar1; + + FUN_004deb80(&DAT_00525124,0xf6); + iVar1 = FUN_004d4a78(&DAT_00525124); + FUN_004dd3d0(param_3,&DAT_00525124 + iVar1); + FUN_004dec88(&DAT_00525124); + FUN_004dedb8(); + return; +} + + + +/* @004dec40 file=? name=FUN_004dec40 */ + +undefined4 FUN_004dec40(void) + +{ + DWORD DVar1; + undefined4 uVar2; + WNDENUMPROC lpfn; + int *lParam; + int local_4; + + lParam = &local_4; + local_4 = 0; + DVar1 = GetVersion(); + if ((DVar1 & 0x80000000) == 0) { + return 0x2000; + } + lpfn = (WNDENUMPROC)&LAB_004dec2c; + DVar1 = GetCurrentThreadId(); + EnumThreadWindows(DVar1,lpfn,(LPARAM)lParam); + uVar2 = 0x2000; + if (local_4 == 0) { + uVar2 = 0x1000; + } + return uVar2; +} + + + +/* @004dec88 file=? name=FUN_004dec88 */ + +void __cdecl FUN_004dec88(char *param_1) + +{ + char *pcVar1; + uint uVar2; + HANDLE hFile; + DWORD nNumberOfBytesToWrite; + LPCSTR lpCaption; + DWORD *lpNumberOfBytesWritten; + LPOVERLAPPED lpOverlapped; + CHAR local_58 [80]; + DWORD local_8; + + if (DAT_004e0069 != '\0') { + GetModuleFileNameA((HMODULE)0x0,local_58,0x50); + pcVar1 = FUN_004d4c4c(local_58,'\\'); + if ((pcVar1 == (char *)0x0) && (pcVar1 = FUN_004d4c4c(local_58,':'), pcVar1 == (char *)0x0)) { + lpCaption = local_58; + } + else { + lpCaption = pcVar1 + 1; + } + uVar2 = FUN_004dec40(); + MessageBoxA((HWND)0x0,param_1,lpCaption,uVar2 | 0x10); + return; + } + hFile = GetStdHandle(0xfffffff4); + WriteFile(hFile,&DAT_00520bd0,2,&local_8,(LPOVERLAPPED)0x0); + lpOverlapped = (LPOVERLAPPED)0x0; + lpNumberOfBytesWritten = &local_8; + nNumberOfBytesToWrite = FUN_004d4a78(param_1); + WriteFile(hFile,param_1,nNumberOfBytesToWrite,lpNumberOfBytesWritten,lpOverlapped); + WriteFile(hFile,&DAT_00520bd3,2,&local_8,(LPOVERLAPPED)0x0); + return; +} + + + +/* @004ded38 file=? name=FUN_004ded38 */ + +void __cdecl FUN_004ded38(char *param_1) + +{ + FUN_004dec88(param_1); + return; +} + + + +/* @004ded48 file=? name=FUN_004ded48 */ + +void __cdecl FUN_004ded48(char *param_1) + +{ + FUN_004dec88(param_1); + FUN_004dee3c(1); + return; +} + + + +/* @004deda4 file=? name=FUN_004deda4 */ + +void FUN_004deda4(void) + +{ + FUN_004dec88(s_Abnormal_program_termination_00520bf0); + FUN_004dee3c(3); + return; +} + + + +/* @004dedb8 file=? name=FUN_004dedb8 */ + +void FUN_004dedb8(void) + +{ + FUN_004df428(0x16); + FUN_004deda4(); + return; +} + + + +/* @004dedc8 file=? name=FUN_004dedc8 */ + +void FUN_004dedc8(void) + +{ + return; +} + + + +/* @004dedcc file=? name=FUN_004dedcc */ + +void __cdecl FUN_004dedcc(int param_1,int param_2,UINT param_3) + +{ + if (param_1 == 0) { + while (DAT_00520c10 != 0) { + DAT_00520c10 = DAT_00520c10 + -1; + (**(code **)(&DAT_00525228 + DAT_00520c10 * 4))(); + } + FUN_004df6bc(); + (*(code *)PTR_FUN_00520c14)(); + } + if (param_2 == 0) { + if (param_1 == 0) { + (*(code *)PTR_FUN_00520c18)(); + (*(code *)PTR_FUN_00520c1c)(); + } + FUN_004df734(param_3); + } + return; +} + + + +/* @004dee24 file=? name=FUN_004dee24 */ + +void __cdecl FUN_004dee24(UINT param_1) + +{ + FUN_004dedcc(0,0,param_1); + return; +} + + + +/* @004dee3c file=? name=FUN_004dee3c */ + +void __cdecl FUN_004dee3c(UINT param_1) + +{ + FUN_004dedcc(1,0,param_1); + return; +} + + + +/* @004dee74 file=? name=FUN_004dee74 */ + +int __cdecl FUN_004dee74(char *param_1) + +{ + int iVar1; + int iVar2; + int *piVar3; + + iVar1 = FUN_004d4a78(param_1); + for (piVar3 = DAT_005252b4; *piVar3 != 0; piVar3 = piVar3 + 1) { + iVar2 = FUN_004d4ae0((char *)*piVar3,param_1,iVar1); + if ((iVar2 == 0) && (*(char *)(*piVar3 + iVar1) == '=')) break; + } + if (*piVar3 == 0) { + iVar1 = 0; + } + else { + iVar1 = iVar1 + *piVar3 + 1; + } + return iVar1; +} + + + +/* @004deec4 file=? name=FUN_004deec4 */ + +void FUN_004deec4(void) + +{ + return; +} + + + +/* @004df048 file=? name=FUN_004df048 */ + +void __cdecl FUN_004df048(int *param_1,int *param_2) + +{ + if ((*(char *)*param_2 == '\\') && (((char *)*param_2)[1] == '\"')) { + *(undefined1 *)*param_1 = 0x22; + *param_2 = *param_2 + 2; + } + else { + *(undefined1 *)*param_1 = *(undefined1 *)*param_2; + *param_2 = *param_2 + 1; + } + *param_1 = *param_1 + 1; + return; +} + + + +/* @004df078 file=? name=FUN_004df078 */ + +void __cdecl FUN_004df078(int *param_1,int param_2) + +{ + int iVar1; + int *piVar2; + uint uVar3; + uint uVar4; + int *piVar5; + int *piVar6; + + if (DAT_005252a8 == DAT_005252b0) { + DAT_005252b0 = DAT_005252b0 + 0x10; + DAT_005252ac = FUN_004de760(DAT_005252ac,DAT_005252b0 * 4); + if (DAT_005252ac == (int *)0x0) { + FUN_004ded48(s_No_space_for_command_line_argume_00520c4a); + } + } + piVar2 = param_1; + if (param_2 != 0) { + iVar1 = FUN_004d4a78((char *)param_1); + piVar2 = FUN_004de55c(iVar1 + 1); + if (piVar2 == (int *)0x0) { + FUN_004ded48(s_No_space_for_command_line_argume_00520c74); + } + uVar3 = 0xffffffff; + do { + piVar5 = param_1; + if (uVar3 == 0) break; + uVar3 = uVar3 - 1; + piVar5 = (int *)((int)param_1 + 1); + iVar1 = *param_1; + param_1 = piVar5; + } while ((char)iVar1 != '\0'); + uVar3 = ~uVar3; + piVar5 = (int *)((int)piVar5 - uVar3); + piVar6 = piVar2; + for (uVar4 = uVar3 >> 2; uVar4 != 0; uVar4 = uVar4 - 1) { + *piVar6 = *piVar5; + piVar5 = piVar5 + 1; + piVar6 = piVar6 + 1; + } + for (uVar3 = uVar3 & 3; uVar3 != 0; uVar3 = uVar3 - 1) { + *(char *)piVar6 = (char)*piVar5; + piVar5 = (int *)((int)piVar5 + 1); + piVar6 = (int *)((int)piVar6 + 1); + } + } + DAT_005252ac[DAT_005252a8] = (int)piVar2; + DAT_005252a8 = DAT_005252a8 + 1; + return; +} + + + +/* @004df128 file=? name=FUN_004df128 */ + +void __cdecl FUN_004df128(int *param_1) + +{ + FUN_004df078(param_1,0); + return; +} + + + +/* @004df13c file=? name=FUN_004df13c */ + +char * __cdecl FUN_004df13c(char *param_1,char *param_2) + +{ + uint uVar1; + uint uVar2; + char cVar3; + char *pcVar4; + char *pcVar5; + + for (; (cVar3 = *param_2, cVar3 != '\0' && (cVar3 != '=')); param_2 = param_2 + 1) { + if (('`' < cVar3) && (cVar3 < '{')) { + cVar3 = cVar3 + -0x20; + } + *param_1 = cVar3; + param_1 = param_1 + 1; + } + uVar1 = 0xffffffff; + do { + pcVar4 = param_2; + if (uVar1 == 0) break; + uVar1 = uVar1 - 1; + pcVar4 = param_2 + 1; + cVar3 = *param_2; + param_2 = pcVar4; + } while (cVar3 != '\0'); + uVar1 = ~uVar1; + pcVar4 = pcVar4 + -uVar1; + pcVar5 = param_1; + for (uVar2 = uVar1 >> 2; uVar2 != 0; uVar2 = uVar2 - 1) { + *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4; + pcVar4 = pcVar4 + 4; + pcVar5 = pcVar5 + 4; + } + for (uVar1 = uVar1 & 3; uVar1 != 0; uVar1 = uVar1 - 1) { + *pcVar5 = *pcVar4; + pcVar4 = pcVar4 + 1; + pcVar5 = pcVar5 + 1; + } + return param_1; +} + + + +/* @004df190 file=? name=FUN_004df190 */ + +void FUN_004df190(void) + +{ + int iVar1; + int *piVar2; + char *pcVar3; + int iVar4; + + iVar4 = 0; + pcVar3 = DAT_005252c8; + while( true ) { + iVar1 = FUN_004d4a78(pcVar3); + if (iVar1 == 0) break; + iVar4 = iVar4 + 1; + pcVar3 = pcVar3 + iVar1 + 1; + } + DAT_005252b4 = FUN_004de55c((iVar4 + 1) * 4); + if (DAT_005252b4 != (int *)0x0) { + iVar4 = 0; + pcVar3 = DAT_005252c8; + while( true ) { + iVar1 = FUN_004d4a78(pcVar3); + if (iVar1 == 0) break; + piVar2 = FUN_004de55c(iVar1 + 1); + if (piVar2 == (int *)0x0) break; + FUN_004df13c((char *)piVar2,pcVar3); + DAT_005252b4[iVar4] = (int)piVar2; + iVar4 = iVar4 + 1; + pcVar3 = pcVar3 + iVar1 + 1; + } + DAT_005252d8 = DAT_005252b4; + DAT_005252b4[iVar4] = 0; + } + return; +} + + + +/* @004df214 file=? name=FUN_004df214 */ + +int __cdecl FUN_004df214(int param_1) + +{ + int iVar1; + int *piVar2; + + iVar1 = 0; + piVar2 = &DAT_00520cc8; + do { + if (param_1 == *piVar2) { + return iVar1; + } + iVar1 = iVar1 + 1; + piVar2 = piVar2 + 1; + } while (iVar1 < 10); + return -1; +} + + + +/* @004df234 file=? name=FUN_004df234 */ + +undefined4 __cdecl FUN_004df234(int *param_1,undefined4 param_2,int param_3) + +{ + code *pcVar1; + undefined4 uVar2; + int iVar3; + uint uVar4; + undefined4 local_8; + + uVar4 = 0; + iVar3 = *param_1; + if (iVar3 < -0x3fffff6e) { + if (iVar3 == -0x3fffff6f) { + iVar3 = 2; + local_8 = 0x84; + uVar4 = 8; + } + else if (iVar3 == -0x3ffffffb) { + iVar3 = 3; + local_8 = 0xc; + } + else if (iVar3 == -0x3fffffe3) { + iVar3 = 1; + local_8 = 0x14; + } + else if (iVar3 == -0x3fffff72) { + iVar3 = 2; + local_8 = 0x83; + uVar4 = 4; + } + else { + if (iVar3 != -0x3fffff70) { + return 1; + } + iVar3 = 2; + local_8 = 0x81; + uVar4 = 1; + } + } + else if (iVar3 == -0x3fffff6e) { + iVar3 = 2; + local_8 = 0x87; + uVar4 = 0x49; + } + else if (iVar3 == -0x3fffff6d) { + iVar3 = 2; + local_8 = 0x85; + uVar4 = 0x10; + } + else if (iVar3 == -0x3fffff6c) { + iVar3 = 2; + local_8 = 0x7f; + } + else { + if (iVar3 != -0x3fffff6a) { + return 1; + } + iVar3 = 1; + local_8 = 0x16; + } + pcVar1 = *(code **)(&DAT_00520ca0 + iVar3 * 4); + if (pcVar1 == (code *)0x1) { + uVar2 = 0; + } + else if (pcVar1 == (code *)0x0) { + uVar2 = 1; + } + else { + *(undefined4 *)(&DAT_00520ca0 + iVar3 * 4) = 0; + if (((iVar3 == 1) || (iVar3 == 3)) || (iVar3 == 2)) { + FUN_004dc9a0(); + FUN_004dc9f8(); + (*pcVar1)((&DAT_00520cc8)[iVar3],local_8); + *(uint *)(param_3 + 0x20) = *(uint *)(param_3 + 0x20) & ~uVar4; + } + else { + (*pcVar1)((&DAT_00520cc8)[iVar3]); + } + uVar2 = 0; + } + return uVar2; +} + + + +/* @004df3a4 file=? name=FUN_004df3a4 */ + +undefined4 FUN_004df3a4(int param_1) + +{ + int iVar1; + + iVar1 = 2; + if (param_1 != 0) { + iVar1 = 0x15; + } + FUN_004df428(iVar1); + return 1; +} + + + +/* @004df3c8 file=? name=FUN_004df3c8 */ + +undefined4 __cdecl FUN_004df3c8(int param_1,undefined4 param_2) + +{ + undefined4 uVar1; + int iVar2; + + if (DAT_00520c9c == '\0') { + DAT_00524c6c = FUN_004df234; + SetConsoleCtrlHandler(FUN_004df3a4,1); + DAT_00520c9c = '\x01'; + } + iVar2 = FUN_004df214(param_1); + if (iVar2 == -1) { + DAT_00520bcc = 0x13; + return 0xffffffff; + } + uVar1 = *(undefined4 *)(&DAT_00520ca0 + iVar2 * 4); + *(undefined4 *)(&DAT_00520ca0 + iVar2 * 4) = param_2; + return uVar1; +} + + + +/* @004df428 file=? name=FUN_004df428 */ + +undefined4 __cdecl FUN_004df428(int param_1) + +{ + code *pcVar1; + int iVar2; + undefined4 uVar3; + + iVar2 = FUN_004df214(param_1); + if (iVar2 == -1) { + uVar3 = 1; + } + else { + pcVar1 = *(code **)(&DAT_00520ca0 + iVar2 * 4); + if (pcVar1 != (code *)0x1) { + if (pcVar1 == (code *)0x0) { + if ((1 < param_1 - 0x10U) && (param_1 != 0x14)) { + if (param_1 == 0x16) { + FUN_004deda4(); + } + else { + FUN_004dee3c(3); + } + } + } + else { + *(undefined4 *)(&DAT_00520ca0 + iVar2 * 4) = 0; + if ((&DAT_00520cf0)[iVar2] == '\0') { + (*pcVar1)(param_1); + } + else { + (*pcVar1)(param_1,(&DAT_00520cf0)[iVar2]); + } + } + } + uVar3 = 0; + } + return uVar3; +} + + + +/* @004df4a4 file=? name=FUN_004df4a4 */ + +undefined4 FUN_004df4a4(void) + +{ + return 0; +} + + + +/* @004df4a8 file=? name=FUN_004df4a8 */ + +undefined4 FUN_004df4a8(void) + +{ + return 0; +} + + + +/* @004df4ac file=? name=FUN_004df4ac */ + +undefined4 __cdecl FUN_004df4ac(int *param_1,uint param_2) + +{ + undefined4 *puVar1; + char *pcVar2; + undefined4 uVar3; + uint uVar4; + char *pcVar5; + int *local_10; + int local_c; + char *local_8; + + uVar4 = 0; + if (param_2 == 0) { + uVar4 = 0xffff; + } + local_8 = (char *)0x0; + local_10 = param_1; + for (local_c = 0; local_10 = local_10 + 1, local_c < *param_1; local_c = local_c + 1) { + puVar1 = (undefined4 *)*local_10; + if (param_2 == 0) { + pcVar2 = (char *)*puVar1; + pcVar5 = (char *)puVar1[1]; + } + else { + pcVar2 = (char *)puVar1[2]; + pcVar5 = (char *)puVar1[3]; + } + for (; (pcVar2 < pcVar5 && (*(int *)(pcVar2 + 2) != 0)); pcVar2 = pcVar2 + 6) { + if ((*pcVar2 == '\0') && (param_2 == uVar4 <= (byte)pcVar2[1])) { + uVar4 = (uint)(byte)pcVar2[1]; + local_8 = pcVar2; + } + } + } + if (local_8 == (char *)0x0) { + uVar3 = 0; + } + else { + *local_8 = '\x01'; + uVar3 = *(undefined4 *)(local_8 + 2); + } + return uVar3; +} + + + +/* @004df558 file=? name=FUN_004df558 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +void __cdecl FUN_004df558(int param_1) + +{ + char cVar1; + int *piVar2; + code *pcVar3; + HMODULE pHVar4; + UINT UVar5; + char cVar6; + int *piVar7; + char *pcVar8; + undefined4 uVar9; + undefined4 uVar10; + int local_10; + undefined1 local_c [8]; + + _DAT_005252e8 = *(uint *)(param_1 + 0x10) & 1; + FUN_004dcd7c(); + FUN_004dd494(*(undefined **)(param_1 + 0x1c),*(undefined **)(param_1 + 0x20)); + FUN_004d6db0(*(undefined **)(param_1 + 0x28)); + _DAT_005252dc = 1; + _DAT_005252e0 = param_1; + DAT_005252c4 = local_c; + FUN_004d69d0(); + DAT_005252c8 = GetEnvironmentStrings(); + DAT_005252cc = GetCommandLineA(); + FUN_004deec4(); + piVar2 = (int *)FUN_004df4a4(); + if (piVar2 != (int *)0x0) { + piVar2[*piVar2 + 1] = -1; + while (pcVar3 = (code *)FUN_004df4ac(piVar2,0), pcVar3 != (code *)0x0) { + (*pcVar3)(); + } + piVar7 = piVar2; + for (local_10 = 0; piVar7 = piVar7 + 1, local_10 < *piVar2; local_10 = local_10 + 1) { + (**(code **)(*piVar7 + 0x18))(0,*(undefined4 *)(*piVar7 + 0x14)); + } + } + while (pcVar3 = (code *)FUN_004df4ac((int *)&DAT_005252dc,0), pcVar3 != (code *)0x0) { + (*pcVar3)(); + } + pcVar8 = DAT_005252cc; + if ((*(byte *)(param_1 + 0x10) & 1) == 0) { + UVar5 = (**(code **)(param_1 + 0x18))(DAT_005252d0,DAT_005252d4,DAT_005252d8); + FUN_004dee24(UVar5); + } + else { + for (; (*pcVar8 == ' ' || (*pcVar8 == '\t')); pcVar8 = pcVar8 + 1) { + } + if (*pcVar8 == '\"') { + cVar6 = '\"'; + pcVar8 = pcVar8 + 1; + } + else { + cVar6 = ' '; + } + for (; ((cVar1 = *pcVar8, cVar1 != '\0' && (cVar6 != cVar1)) && (cVar1 != '\t')); + pcVar8 = pcVar8 + 1) { + } + if (*pcVar8 == '\"') { + pcVar8 = pcVar8 + 1; + } + for (; ((cVar6 = *pcVar8, cVar6 != '\0' && (cVar6 == ' ')) || (cVar6 == '\t')); + pcVar8 = pcVar8 + 1) { + } + uVar10 = 10; + uVar9 = 0; + pHVar4 = GetModuleHandleA((LPCSTR)0x0); + UVar5 = (**(code **)(param_1 + 0x18))(pHVar4,uVar9,pcVar8,uVar10); + FUN_004dee24(UVar5); + } + return; +} + + + +/* @004df6bc file=? name=FUN_004df6bc */ + +void FUN_004df6bc(void) + +{ + code *pcVar1; + int *piVar2; + int *piVar3; + int iVar4; + + while (pcVar1 = (code *)FUN_004df4ac((int *)&DAT_005252dc,1), pcVar1 != (code *)0x0) { + (*pcVar1)(); + } + while (pcVar1 = (code *)FUN_004df4ac((int *)&DAT_005252bc,1), pcVar1 != (code *)0x0) { + (*pcVar1)(); + } + piVar2 = (int *)FUN_004df4a8(); + if (piVar2 != (int *)0x0) { + while (pcVar1 = (code *)FUN_004df4ac(piVar2,1), pcVar1 != (code *)0x0) { + (*pcVar1)(); + } + piVar3 = piVar2; + for (iVar4 = 0; piVar3 = piVar3 + 1, iVar4 < *piVar2; iVar4 = iVar4 + 1) { + (**(code **)(*piVar3 + 0x18))(1,*(undefined4 *)(*piVar3 + 0x14)); + } + } + return; +} + + + +/* @004df734 file=? name=FUN_004df734 */ + +void FUN_004df734(UINT param_1) + +{ + /* WARNING: Subroutine does not return */ + ExitProcess(param_1); +} + + + +/* @004df748 file=? name=FUN_004df748 */ + +void __cdecl FUN_004df748(undefined1 *param_1) + +{ + FUN_004d7f10(param_1,s__s__s__02d__02d__02d__02d__4d_s_00520d00); + return; +} + + + +/* @004df794 file=? name=FUN_004df794 */ + +undefined * FUN_004df794(void) + +{ + FUN_004df748(&DAT_005252ec); + return &DAT_005252ec; +} + + + +/* @004df7b4 file=? name=FUN_004df7b4 */ + +void __cdecl FUN_004df7b4(int *param_1) + +{ + FUN_004df950(param_1); + FUN_004df794(); + return; +} + + + +/* @004df7cc file=? name=FUN_004df7cc */ + +undefined4 * __cdecl FUN_004df7cc(uint param_1,int param_2) + +{ + ulonglong uVar1; + bool bVar2; + undefined3 extraout_var; + uint uVar3; + uint uVar4; + int local_8; + + DAT_00525308 = param_1 % 0x3c; + DAT_0052530c = (undefined4)(((ulonglong)param_1 / 0x3c) % 0x3c); + uVar1 = ((ulonglong)param_1 / 0x3c) / 0x3c; + local_8 = (int)(uVar1 / 0x88f8); + DAT_0052531c = local_8 * 4 + 0x46; + local_8 = local_8 * 0x5b5; + uVar4 = (uint)(uVar1 % 0x88f8); + while( true ) { + uVar3 = 0x2238; + if ((DAT_0052531c & 3) == 0) { + uVar3 = 0x2250; + } + if (uVar4 < uVar3) break; + local_8 = local_8 + uVar3 / 0x18; + DAT_0052531c = DAT_0052531c + 1; + uVar4 = uVar4 - uVar3; + } + if (((param_2 == 0) || (DAT_00520ef4 == 0)) || + (bVar2 = FUN_004dfb04(uVar4 % 0x18,uVar4 / 0x18,0,DAT_0052531c - 0x46), + CONCAT31(extraout_var,bVar2) == 0)) { + DAT_00525328 = 0; + } + else { + uVar4 = uVar4 + 1; + DAT_00525328 = 1; + } + DAT_00525310 = uVar4 % 0x18; + DAT_00525324 = uVar4 / 0x18; + DAT_00525320 = (local_8 + DAT_00525324 + 4) % 7; + uVar4 = DAT_00525324 + 1; + DAT_00525314 = uVar4; + if ((((DAT_0052531c & 3) == 0) && (DAT_00525314 = DAT_00525324, uVar4 < 0x3d)) && + (DAT_00525314 = uVar4, uVar4 == 0x3c)) { + DAT_00525318 = 1; + DAT_00525314 = 0x1d; + } + else { + for (DAT_00525318 = 0; (uint)(int)(char)(&DAT_00520dc4)[DAT_00525318] < DAT_00525314; + DAT_00525318 = DAT_00525318 + 1) { + DAT_00525314 = DAT_00525314 - (int)(char)(&DAT_00520dc4)[DAT_00525318]; + } + } + return &DAT_00525308; +} + + + +/* @004df938 file=? name=FUN_004df938 */ + +void __cdecl FUN_004df938(uint *param_1) + +{ + FUN_004df7cc(*param_1,0); + return; +} + + + +/* @004df950 file=? name=FUN_004df950 */ + +undefined4 * __cdecl FUN_004df950(int *param_1) + +{ + undefined4 *puVar1; + + if (*param_1 < DAT_00520ef0) { + return (undefined4 *)0x0; + } + puVar1 = FUN_004df7cc(*param_1 - DAT_00520ef0,1); + return puVar1; +} + + + +/* @004dfb04 file=? name=FUN_004dfb04 */ + +bool __cdecl FUN_004dfb04(uint param_1,uint param_2,uint param_3,uint param_4) + +{ + uint *puVar1; + int iVar2; + uint uVar3; + bool bVar4; + uint local_8; + + if (param_3 == 0) { + local_8 = param_2; + if ((0x3a < param_2) && ((param_4 + 0x46 & 3) == 0)) { + local_8 = param_2 - 1; + } + param_3 = 0; + for (puVar1 = &DAT_00520dd0; *puVar1 <= local_8; puVar1 = puVar1 + 1) { + param_3 = param_3 + 1; + } + } + else { + param_2 = param_2 + (&DAT_00520dcc)[param_3]; + if ((2 < param_3) && ((param_4 + 0x46 & 3) == 0)) { + param_2 = param_2 + 1; + } + } + if ((param_3 < 4) || (10 < param_3)) { + bVar4 = false; + } + else if ((param_3 < 5) || (9 < param_3)) { + if ((param_4 < 0x11) || (param_3 != 4)) { + iVar2 = (&DAT_00520dd0)[param_3]; + } + else { + iVar2 = iRam00520ddc + 7; + } + if ((param_4 + 0x46 & 3) != 0) { + iVar2 = iVar2 + -1; + } + uVar3 = iVar2 - ((param_4 + 1 >> 2) + iVar2 + param_4 * 0x16d + 4) % 7; + if (param_3 == 4) { + if (uVar3 < param_2) { + bVar4 = true; + } + else if (param_2 < uVar3) { + bVar4 = false; + } + else { + bVar4 = 1 < param_1; + } + } + else if (param_2 < uVar3) { + bVar4 = true; + } + else if (uVar3 < param_2) { + bVar4 = false; + } + else { + bVar4 = param_1 < 2; + } + } + else { + bVar4 = true; + } + return bVar4; +} + + + +/* @004dfc18 file=? name=FUN_004dfc18 */ + +int __cdecl FUN_004dfc18(int param_1,int param_2,int param_3,int param_4,int param_5,int param_6) + +{ + int iVar1; + char *pcVar2; + bool bVar3; + char *pcVar4; + int iVar5; + undefined3 extraout_var; + uint uVar6; + int iVar7; + uint uVar8; + uint uVar9; + int local_8; + + if ((param_1 < 0x46) || (0x8a < param_1)) { + local_8 = -1; + } + else { + iVar1 = param_5 + param_6 / 0x3c; + iVar5 = param_4 + iVar1 / 0x3c; + uVar8 = param_3 + iVar5 / 0x18; + uVar6 = iVar5 % 0x18; + uVar9 = param_1 + param_2 / 0xc; + pcVar2 = &DAT_00520dc4 + param_2 % 0xc; + iVar5 = param_2 % 0xc; + while (iVar7 = iVar5, pcVar4 = pcVar2, (int)*pcVar4 <= (int)uVar8) { + if (((uVar9 & 3) == 0) && (iVar7 == 1)) { + if ((int)uVar8 < 0x1d) break; + iVar5 = -0x1d; + } + else { + iVar5 = -(int)*pcVar4; + } + uVar8 = uVar8 + iVar5; + pcVar2 = pcVar4 + 1; + iVar5 = iVar7 + 1; + if (0xb < iVar7 + 1) { + uVar9 = uVar9 + 1; + pcVar2 = pcVar4 + -0xb; + iVar5 = iVar7 + -0xb; + } + } + iVar5 = uVar9 - 0x44; + if (iVar5 < 0) { + iVar5 = uVar9 - 0x41; + } + iVar5 = iVar5 >> 2; + if (((uVar9 & 3) == 0) && (iVar7 < 2)) { + iVar5 = iVar5 + -1; + } + local_8 = (iVar5 + (uVar9 - 0x46) * 0x16d + (&DAT_00520dd0)[iVar7] + uVar8) * 0x15180 + + uVar6 * 0xe10 + (iVar1 % 0x3c) * 0x3c + param_6 % 0x3c + DAT_00520ef0; + if ((DAT_00520ef4 != 0) && + (bVar3 = FUN_004dfb04(uVar6,uVar8,iVar7 + 1,uVar9 - 0x46), CONCAT31(extraout_var,bVar3) != 0) + ) { + local_8 = local_8 + -0xe10; + } + if (local_8 < 1) { + local_8 = -1; + } + } + return local_8; +} + + + +/* @004dfd90 file=? name=FUN_004dfd90 */ + +/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ + +int FUN_004dfd90(void) + +{ + DWORD DVar1; + + DVar1 = GetTickCount(); + return DVar1 - _DAT_00520f00; +} + + + +/* @004dfda8 file=? name=FUN_004dfda8 */ + +void __cdecl FUN_004dfda8(int *param_1) + +{ + int iVar1; + _SYSTEMTIME local_14; + + GetLocalTime(&local_14); + iVar1 = FUN_004dfc18(local_14.wYear - 0x76c,local_14.wMonth - 1,local_14.wDay - 1, + (uint)local_14.wHour,(uint)local_14.wMinute,(uint)local_14.wSecond); + if (param_1 != (int *)0x0) { + *param_1 = iVar1; + } + return; +} + + + +/* @004dfdf3 file=? name=GetStartupInfoA */ + +void GetStartupInfoA(LPSTARTUPINFOA lpStartupInfo) + +{ + /* WARNING: Could not recover jumptable at 0x004dfdf3. Too many branches */ + /* WARNING: Treating indirect jump as call */ + GetStartupInfoA(lpStartupInfo); + return; +} + + + +/* @004dfdf9 file=? name=DeleteFileA */ + +BOOL DeleteFileA(LPCSTR lpFileName) + +{ + BOOL BVar1; + + /* WARNING: Could not recover jumptable at 0x004dfdf9. Too many branches */ + /* WARNING: Treating indirect jump as call */ + BVar1 = DeleteFileA(lpFileName); + return BVar1; +} + + + +/* @004dfdff file=? name=ExitProcess */ + +void ExitProcess(UINT uExitCode) + +{ + /* WARNING: Could not recover jumptable at 0x004dfdff. Too many branches */ + /* WARNING: Subroutine does not return */ + /* WARNING: Treating indirect jump as call */ + ExitProcess(uExitCode); + return; +} + + + +/* @004dfe05 file=? name=CloseHandle */ + +BOOL CloseHandle(HANDLE hObject) + +{ + BOOL BVar1; + + /* WARNING: Could not recover jumptable at 0x004dfe05. Too many branches */ + /* WARNING: Treating indirect jump as call */ + BVar1 = CloseHandle(hObject); + return BVar1; +} + + + +/* @004dfe0b file=? name=GetConsoleMode */ + +BOOL GetConsoleMode(HANDLE hConsoleHandle,LPDWORD lpMode) + +{ + BOOL BVar1; + + /* WARNING: Could not recover jumptable at 0x004dfe0b. Too many branches */ + /* WARNING: Treating indirect jump as call */ + BVar1 = GetConsoleMode(hConsoleHandle,lpMode); + return BVar1; +} + + + +/* @004dfe11 file=? name=GetCurrentDirectoryA */ + +DWORD GetCurrentDirectoryA(DWORD nBufferLength,LPSTR lpBuffer) + +{ + DWORD DVar1; + + /* WARNING: Could not recover jumptable at 0x004dfe11. Too many branches */ + /* WARNING: Treating indirect jump as call */ + DVar1 = GetCurrentDirectoryA(nBufferLength,lpBuffer); + return DVar1; +} + + + +/* @004dfe17 file=? name=GetCurrentThreadId */ + +DWORD GetCurrentThreadId(void) + +{ + DWORD DVar1; + + /* WARNING: Could not recover jumptable at 0x004dfe17. Too many branches */ + /* WARNING: Treating indirect jump as call */ + DVar1 = GetCurrentThreadId(); + return DVar1; +} + + + +/* @004dfe1d file=? name=GetDriveTypeA */ + +UINT GetDriveTypeA(LPCSTR lpRootPathName) + +{ + UINT UVar1; + + /* WARNING: Could not recover jumptable at 0x004dfe1d. Too many branches */ + /* WARNING: Treating indirect jump as call */ + UVar1 = GetDriveTypeA(lpRootPathName); + return UVar1; +} + + + +/* @004dfe23 file=? name=CreateFileA */ + +HANDLE CreateFileA(LPCSTR lpFileName,DWORD dwDesiredAccess,DWORD dwShareMode, + LPSECURITY_ATTRIBUTES lpSecurityAttributes,DWORD dwCreationDisposition, + DWORD dwFlagsAndAttributes,HANDLE hTemplateFile) + +{ + HANDLE pvVar1; + + /* WARNING: Could not recover jumptable at 0x004dfe23. Too many branches */ + /* WARNING: Treating indirect jump as call */ + pvVar1 = CreateFileA(lpFileName,dwDesiredAccess,dwShareMode,lpSecurityAttributes, + dwCreationDisposition,dwFlagsAndAttributes,hTemplateFile); + return pvVar1; +} + + + +/* @004dfe29 file=? name=GetEnvironmentVariableA */ + +DWORD GetEnvironmentVariableA(LPCSTR lpName,LPSTR lpBuffer,DWORD nSize) + +{ + DWORD DVar1; + + /* WARNING: Could not recover jumptable at 0x004dfe29. Too many branches */ + /* WARNING: Treating indirect jump as call */ + DVar1 = GetEnvironmentVariableA(lpName,lpBuffer,nSize); + return DVar1; +} + + + +/* @004dfe2f file=? name=GetFileAttributesA */ + +DWORD GetFileAttributesA(LPCSTR lpFileName) + +{ + DWORD DVar1; + + /* WARNING: Could not recover jumptable at 0x004dfe2f. Too many branches */ + /* WARNING: Treating indirect jump as call */ + DVar1 = GetFileAttributesA(lpFileName); + return DVar1; +} + + + +/* @004dfe35 file=? name=GetFileType */ + +DWORD GetFileType(HANDLE hFile) + +{ + DWORD DVar1; + + /* WARNING: Could not recover jumptable at 0x004dfe35. Too many branches */ + /* WARNING: Treating indirect jump as call */ + DVar1 = GetFileType(hFile); + return DVar1; +} + + + +/* @004dfe3b file=? name=GetLastError */ + +DWORD GetLastError(void) + +{ + DWORD DVar1; + + /* WARNING: Could not recover jumptable at 0x004dfe3b. Too many branches */ + /* WARNING: Treating indirect jump as call */ + DVar1 = GetLastError(); + return DVar1; +} + + + +/* @004dfe41 file=? name=GetLocalTime */ + +void GetLocalTime(LPSYSTEMTIME lpSystemTime) + +{ + /* WARNING: Could not recover jumptable at 0x004dfe41. Too many branches */ + /* WARNING: Treating indirect jump as call */ + GetLocalTime(lpSystemTime); + return; +} + + + +/* @004dfe47 file=? name=GetLogicalDrives */ + +DWORD GetLogicalDrives(void) + +{ + DWORD DVar1; + + /* WARNING: Could not recover jumptable at 0x004dfe47. Too many branches */ + /* WARNING: Treating indirect jump as call */ + DVar1 = GetLogicalDrives(); + return DVar1; +} + + + +/* @004dfe4d file=? name=GetModuleFileNameA */ + +DWORD GetModuleFileNameA(HMODULE hModule,LPSTR lpFilename,DWORD nSize) + +{ + DWORD DVar1; + + /* WARNING: Could not recover jumptable at 0x004dfe4d. Too many branches */ + /* WARNING: Treating indirect jump as call */ + DVar1 = GetModuleFileNameA(hModule,lpFilename,nSize); + return DVar1; +} + + + +/* @004dfe53 file=? name=GetModuleHandleA */ + +HMODULE GetModuleHandleA(LPCSTR lpModuleName) + +{ + HMODULE pHVar1; + + /* WARNING: Could not recover jumptable at 0x004dfe53. Too many branches */ + /* WARNING: Treating indirect jump as call */ + pHVar1 = GetModuleHandleA(lpModuleName); + return pHVar1; +} + + + +/* @004dfe59 file=? name=GetNumberOfConsoleInputEvents */ + +BOOL GetNumberOfConsoleInputEvents(HANDLE hConsoleInput,LPDWORD lpNumberOfEvents) + +{ + BOOL BVar1; + + /* WARNING: Could not recover jumptable at 0x004dfe59. Too many branches */ + /* WARNING: Treating indirect jump as call */ + BVar1 = GetNumberOfConsoleInputEvents(hConsoleInput,lpNumberOfEvents); + return BVar1; +} + + + +/* @004dfe5f file=? name=GetEnvironmentStrings */ + +LPCH GetEnvironmentStrings(void) + +{ + LPCH pCVar1; + + /* WARNING: Could not recover jumptable at 0x004dfe5f. Too many branches */ + /* WARNING: Treating indirect jump as call */ + pCVar1 = GetEnvironmentStrings(); + return pCVar1; +} + + + +/* @004dfe65 file=? name=GetCommandLineA */ + +LPSTR GetCommandLineA(void) + +{ + LPSTR pCVar1; + + /* WARNING: Could not recover jumptable at 0x004dfe65. Too many branches */ + /* WARNING: Treating indirect jump as call */ + pCVar1 = GetCommandLineA(); + return pCVar1; +} + + + +/* @004dfe6b file=? name=GetStdHandle */ + +HANDLE GetStdHandle(DWORD nStdHandle) + +{ + HANDLE pvVar1; + + /* WARNING: Could not recover jumptable at 0x004dfe6b. Too many branches */ + /* WARNING: Treating indirect jump as call */ + pvVar1 = GetStdHandle(nStdHandle); + return pvVar1; +} + + + +/* @004dfe71 file=? name=GetTickCount */ + +DWORD GetTickCount(void) + +{ + DWORD DVar1; + + /* WARNING: Could not recover jumptable at 0x004dfe71. Too many branches */ + /* WARNING: Treating indirect jump as call */ + DVar1 = GetTickCount(); + return DVar1; +} + + + +/* @004dfe7d file=? name=GetVersion */ + +DWORD GetVersion(void) + +{ + DWORD DVar1; + + /* WARNING: Could not recover jumptable at 0x004dfe7d. Too many branches */ + /* WARNING: Treating indirect jump as call */ + DVar1 = GetVersion(); + return DVar1; +} + + + +/* @004dfe83 file=? name=PeekConsoleInputA */ + +BOOL PeekConsoleInputA(HANDLE hConsoleInput,PINPUT_RECORD lpBuffer,DWORD nLength, + LPDWORD lpNumberOfEventsRead) + +{ + BOOL BVar1; + + /* WARNING: Could not recover jumptable at 0x004dfe83. Too many branches */ + /* WARNING: Treating indirect jump as call */ + BVar1 = PeekConsoleInputA(hConsoleInput,lpBuffer,nLength,lpNumberOfEventsRead); + return BVar1; +} + + + +/* @004dfe89 file=? name=RaiseException */ + +void RaiseException(DWORD dwExceptionCode,DWORD dwExceptionFlags,DWORD nNumberOfArguments, + ULONG_PTR *lpArguments) + +{ + /* WARNING: Could not recover jumptable at 0x004dfe89. Too many branches */ + /* WARNING: Treating indirect jump as call */ + RaiseException(dwExceptionCode,dwExceptionFlags,nNumberOfArguments,lpArguments); + return; +} + + + +/* @004dfe8f file=? name=ReadConsoleInputA */ + +BOOL ReadConsoleInputA(HANDLE hConsoleInput,PINPUT_RECORD lpBuffer,DWORD nLength, + LPDWORD lpNumberOfEventsRead) + +{ + BOOL BVar1; + + /* WARNING: Could not recover jumptable at 0x004dfe8f. Too many branches */ + /* WARNING: Treating indirect jump as call */ + BVar1 = ReadConsoleInputA(hConsoleInput,lpBuffer,nLength,lpNumberOfEventsRead); + return BVar1; +} + + + +/* @004dfe95 file=? name=ReadFile */ + +BOOL ReadFile(HANDLE hFile,LPVOID lpBuffer,DWORD nNumberOfBytesToRead,LPDWORD lpNumberOfBytesRead, + LPOVERLAPPED lpOverlapped) + +{ + BOOL BVar1; + + /* WARNING: Could not recover jumptable at 0x004dfe95. Too many branches */ + /* WARNING: Treating indirect jump as call */ + BVar1 = ReadFile(hFile,lpBuffer,nNumberOfBytesToRead,lpNumberOfBytesRead,lpOverlapped); + return BVar1; +} + + + +/* @004dfe9b file=? name=RtlUnwind */ + +void RtlUnwind(PVOID TargetFrame,PVOID TargetIp,PEXCEPTION_RECORD ExceptionRecord,PVOID ReturnValue) + +{ + /* WARNING: Could not recover jumptable at 0x004dfe9b. Too many branches */ + /* WARNING: Treating indirect jump as call */ + RtlUnwind(TargetFrame,TargetIp,ExceptionRecord,ReturnValue); + return; +} + + + +/* @004dfea1 file=? name=SetConsoleCtrlHandler */ + +BOOL SetConsoleCtrlHandler(PHANDLER_ROUTINE HandlerRoutine,BOOL Add) + +{ + BOOL BVar1; + + /* WARNING: Could not recover jumptable at 0x004dfea1. Too many branches */ + /* WARNING: Treating indirect jump as call */ + BVar1 = SetConsoleCtrlHandler(HandlerRoutine,Add); + return BVar1; +} + + + +/* @004dfea7 file=? name=SetConsoleMode */ + +BOOL SetConsoleMode(HANDLE hConsoleHandle,DWORD dwMode) + +{ + BOOL BVar1; + + /* WARNING: Could not recover jumptable at 0x004dfea7. Too many branches */ + /* WARNING: Treating indirect jump as call */ + BVar1 = SetConsoleMode(hConsoleHandle,dwMode); + return BVar1; +} + + + +/* @004dfead file=? name=SetCurrentDirectoryA */ + +BOOL SetCurrentDirectoryA(LPCSTR lpPathName) + +{ + BOOL BVar1; + + /* WARNING: Could not recover jumptable at 0x004dfead. Too many branches */ + /* WARNING: Treating indirect jump as call */ + BVar1 = SetCurrentDirectoryA(lpPathName); + return BVar1; +} + + + +/* @004dfeb3 file=? name=SetEnvironmentVariableA */ + +BOOL SetEnvironmentVariableA(LPCSTR lpName,LPCSTR lpValue) + +{ + BOOL BVar1; + + /* WARNING: Could not recover jumptable at 0x004dfeb3. Too many branches */ + /* WARNING: Treating indirect jump as call */ + BVar1 = SetEnvironmentVariableA(lpName,lpValue); + return BVar1; +} + + + +/* @004dfeb9 file=? name=SetFilePointer */ + +DWORD SetFilePointer(HANDLE hFile,LONG lDistanceToMove,PLONG lpDistanceToMoveHigh,DWORD dwMoveMethod + ) + +{ + DWORD DVar1; + + /* WARNING: Could not recover jumptable at 0x004dfeb9. Too many branches */ + /* WARNING: Treating indirect jump as call */ + DVar1 = SetFilePointer(hFile,lDistanceToMove,lpDistanceToMoveHigh,dwMoveMethod); + return DVar1; +} + + + +/* @004dfebf file=? name=SetHandleCount */ + +UINT SetHandleCount(UINT uNumber) + +{ + UINT UVar1; + + /* WARNING: Could not recover jumptable at 0x004dfebf. Too many branches */ + /* WARNING: Treating indirect jump as call */ + UVar1 = SetHandleCount(uNumber); + return UVar1; +} + + + +/* @004dfec5 file=? name=UnhandledExceptionFilter */ + +LONG UnhandledExceptionFilter(_EXCEPTION_POINTERS *ExceptionInfo) + +{ + LONG LVar1; + + /* WARNING: Could not recover jumptable at 0x004dfec5. Too many branches */ + /* WARNING: Treating indirect jump as call */ + LVar1 = UnhandledExceptionFilter(ExceptionInfo); + return LVar1; +} + + + +/* @004dfecb file=? name=VirtualAlloc */ + +LPVOID VirtualAlloc(LPVOID lpAddress,SIZE_T dwSize,DWORD flAllocationType,DWORD flProtect) + +{ + LPVOID pvVar1; + + /* WARNING: Could not recover jumptable at 0x004dfecb. Too many branches */ + /* WARNING: Treating indirect jump as call */ + pvVar1 = VirtualAlloc(lpAddress,dwSize,flAllocationType,flProtect); + return pvVar1; +} + + + +/* @004dfed1 file=? name=VirtualFree */ + +BOOL VirtualFree(LPVOID lpAddress,SIZE_T dwSize,DWORD dwFreeType) + +{ + BOOL BVar1; + + /* WARNING: Could not recover jumptable at 0x004dfed1. Too many branches */ + /* WARNING: Treating indirect jump as call */ + BVar1 = VirtualFree(lpAddress,dwSize,dwFreeType); + return BVar1; +} + + + +/* @004dfed7 file=? name=WriteFile */ + +BOOL WriteFile(HANDLE hFile,LPCVOID lpBuffer,DWORD nNumberOfBytesToWrite, + LPDWORD lpNumberOfBytesWritten,LPOVERLAPPED lpOverlapped) + +{ + BOOL BVar1; + + /* WARNING: Could not recover jumptable at 0x004dfed7. Too many branches */ + /* WARNING: Treating indirect jump as call */ + BVar1 = WriteFile(hFile,lpBuffer,nNumberOfBytesToWrite,lpNumberOfBytesWritten,lpOverlapped); + return BVar1; +} + + + +/* @004dfedd file=? name=GetProcAddress */ + +FARPROC GetProcAddress(HMODULE hModule,LPCSTR lpProcName) + +{ + FARPROC pFVar1; + + /* WARNING: Could not recover jumptable at 0x004dfedd. Too many branches */ + /* WARNING: Treating indirect jump as call */ + pFVar1 = GetProcAddress(hModule,lpProcName); + return pFVar1; +} + + + +/* @004dfee3 file=? name=MessageBoxA */ + +int MessageBoxA(HWND hWnd,LPCSTR lpText,LPCSTR lpCaption,UINT uType) + +{ + int iVar1; + + /* WARNING: Could not recover jumptable at 0x004dfee3. Too many branches */ + /* WARNING: Treating indirect jump as call */ + iVar1 = MessageBoxA(hWnd,lpText,lpCaption,uType); + return iVar1; +} + + + +/* @004dfee9 file=? name=EnumThreadWindows */ + +BOOL EnumThreadWindows(DWORD dwThreadId,WNDENUMPROC lpfn,LPARAM lParam) + +{ + BOOL BVar1; + + /* WARNING: Could not recover jumptable at 0x004dfee9. Too many branches */ + /* WARNING: Treating indirect jump as call */ + BVar1 = EnumThreadWindows(dwThreadId,lpfn,lParam); + return BVar1; +} + + + diff --git a/reference/decomp/archive_2025export/functions_index.tsv b/reference/decomp/archive_2025export/functions_index.tsv new file mode 100644 index 0000000..90277cd --- /dev/null +++ b/reference/decomp/archive_2025export/functions_index.tsv @@ -0,0 +1,6267 @@ +401000 110 ? entry +40106e 5 ? __GetExceptDLLinfo +40109c 524 ? FUN_0040109c +4012a8 31 ? FUN_004012a8 +4012c7 31 ? FUN_004012c7 +4012e6 44 ? FUN_004012e6 +401312 31 ? FUN_00401312 +401331 31 ? FUN_00401331 +401350 44 ? FUN_00401350 +40137c 31 ? FUN_0040137c +40139b 31 ? FUN_0040139b +4013ba 44 ? FUN_004013ba +4013e6 31 ? FUN_004013e6 +401405 31 ? FUN_00401405 +401424 44 ? FUN_00401424 +401450 31 ? FUN_00401450 +40146f 31 ? FUN_0040146f +40148e 44 ? FUN_0040148e +4014ba 31 ? FUN_004014ba +4014d9 31 ? FUN_004014d9 +4014f8 31 ? FUN_004014f8 +401517 44 ? FUN_00401517 +401543 31 ? FUN_00401543 +401562 44 ? FUN_00401562 +40158e 31 ? FUN_0040158e +4015ad 44 ? FUN_004015ad +4015d9 31 ? FUN_004015d9 +4015f8 31 ? FUN_004015f8 +401617 31 ? FUN_00401617 +401636 44 ? FUN_00401636 +401662 31 ? FUN_00401662 +401681 31 ? FUN_00401681 +4016a0 31 ? FUN_004016a0 +4016bf 44 ? FUN_004016bf +4016eb 15 ? FUN_004016eb +4016fa 15 ? FUN_004016fa +401709 15 ? FUN_00401709 +401718 15 ? FUN_00401718 +401727 19 ? FUN_00401727 +40173a 19 ? FUN_0040173a +40174d 19 ? FUN_0040174d +401760 19 ? FUN_00401760 +401774 154 ? FUN_00401774 +401810 59 ? FUN_00401810 +40184c 125 ? FUN_0040184c +4018cc 160 ? FUN_004018cc +401970 161 ? FUN_00401970 +401a1c 60 ? FUN_00401a1c +401a5c 159 ? FUN_00401a5c +401afc 32 ? FUN_00401afc +401b1c 173 ? FUN_00401b1c +401be8 48 ? FUN_00401be8 +401c18 86 ? FUN_00401c18 +401c70 72 ? FUN_00401c70 +401cb8 34 ? FUN_00401cb8 +401cdc 19 ? FUN_00401cdc +401cf0 472 munga/heap.cpp FUN_00401cf0 +401ec8 102 ? FUN_00401ec8 +401f30 94 ? FUN_00401f30 +401f90 341 ? FUN_00401f90 +4020e8 76 ? FUN_004020e8 +402134 47 ? FUN_00402134 +402164 201 ? FUN_00402164 +402230 90 ? FUN_00402230 +40228c 10 ? FUN_0040228c +402298 22 ? FUN_00402298 +4022b0 22 ? FUN_004022b0 +4022c8 8 ? FUN_004022c8 +4022d0 22 ? FUN_004022d0 +4022e8 22 ? FUN_004022e8 +402300 68 ? FUN_00402300 +402370 30 ? FUN_00402370 +402390 66 ? FUN_00402390 +4023d4 32 ? FUN_004023d4 +4023f4 27 ? FUN_004023f4 +402410 80 ? FUN_00402410 +402460 118 ? FUN_00402460 +4024d8 41 ? FUN_004024d8 +402504 18 ? FUN_00402504 +402518 118 ? FUN_00402518 +402590 148 ? FUN_00402590 +402624 241 ? FUN_00402624 +402718 192 ? FUN_00402718 +4027d8 94 ? FUN_004027d8 +402838 269 ? FUN_00402838 +402948 102 ? FUN_00402948 +4029b0 50 ? FUN_004029b0 +4029e4 102 munga/cstr.cpp FUN_004029e4 +402a4c 73 ? FUN_00402a4c +402a98 84 ? FUN_00402a98 +402aec 79 ? FUN_00402aec +402b3c 79 ? FUN_00402b3c +402b98 141 ? FUN_00402b98 +402c28 95 ? FUN_00402c28 +402c88 100 ? FUN_00402c88 +402cec 639 ? FUN_00402cec +402f74 35 ? FUN_00402f74 +402f98 19 ? FUN_00402f98 +402fac 58 ? FUN_00402fac +402fe8 58 ? FUN_00402fe8 +403024 41 ? FUN_00403024 +403050 137 ? FUN_00403050 +4030dc 37 ? FUN_004030dc +403104 47 ? FUN_00403104 +403134 47 ? FUN_00403134 +403164 225 munga/memstrm.cpp FUN_00403164 +403248 37 ? FUN_00403248 +403270 27 ? FUN_00403270 +40328c 78 ? FUN_0040328c +4032dc 49 ? FUN_004032dc +403310 49 ? FUN_00403310 +403344 137 ? FUN_00403344 +4033d0 88 ? FUN_004033d0 +403428 11 ? FUN_00403428 +403433 19 ? FUN_00403433 +403446 14 ? FUN_00403446 +403454 17 ? FUN_00403454 +403465 14 ? FUN_00403465 +403473 14 ? FUN_00403473 +403481 19 ? FUN_00403481 +403494 28 ? FUN_00403494 +4034b0 50 ? FUN_004034b0 +4034e4 125 ? FUN_004034e4 +403564 33 ? FUN_00403564 +403588 31 ? FUN_00403588 +4035a8 36 ? FUN_004035a8 +4035cc 36 ? FUN_004035cc +4035f0 35 ? FUN_004035f0 +403614 35 ? FUN_00403614 +403638 10 ? FUN_00403638 +403642 27 munga/filestrm.hpp FUN_00403642 +40365d 25 munga/filestrm.hpp FUN_0040365d +403678 15 ? FUN_00403678 +4036a0 15 ? FUN_004036a0 +403798 196 ? FUN_00403798 +40385c 196 ? FUN_0040385c +403920 25 ? FUN_00403920 +403939 29 ? FUN_00403939 +403956 29 ? FUN_00403956 +403973 27 ? FUN_00403973 +40398e 29 ? FUN_0040398e +4039ab 27 ? FUN_004039ab +4039c6 29 ? FUN_004039c6 +4039e3 64 ? FUN_004039e3 +403a23 10 ? FUN_00403a23 +403a30 22 ? FUN_00403a30 +403a48 56 ? FUN_00403a48 +403a80 79 ? FUN_00403a80 +403ad0 74 ? FUN_00403ad0 +403b1c 67 ? FUN_00403b1c +403b60 26 ? FUN_00403b60 +403b7c 94 ? FUN_00403b7c +403bdc 10 ? FUN_00403bdc +403be8 53 ? FUN_00403be8 +403c20 71 ? FUN_00403c20 +403c68 10 ? FUN_00403c68 +403c74 25 ? FUN_00403c74 +403c90 44 ? FUN_00403c90 +403cbc 40 ? FUN_00403cbc +403ce4 65 ? FUN_00403ce4 +403d28 29 ? FUN_00403d28 +403d48 103 ? FUN_00403d48 +403db0 25 ? FUN_00403db0 +403dcc 44 ? FUN_00403dcc +403df8 137 ? FUN_00403df8 +403e84 71 ? FUN_00403e84 +403ecc 182 ? FUN_00403ecc +403f84 27 ? FUN_00403f84 +403fa0 57 ? FUN_00403fa0 +403fdc 79 ? FUN_00403fdc +40402c 91 ? FUN_0040402c +404088 78 ? FUN_00404088 +4040d8 61 ? FUN_004040d8 +404118 60 ? FUN_00404118 +404154 60 ? FUN_00404154 +404190 116 ? FUN_00404190 +404204 146 ? FUN_00404204 +404298 106 ? FUN_00404298 +404304 117 ? FUN_00404304 +40437c 123 ? FUN_0040437c +4043f8 150 ? FUN_004043f8 +404490 151 ? FUN_00404490 +404528 106 ? FUN_00404528 +404594 117 ? FUN_00404594 +40460c 123 ? FUN_0040460c +404688 150 ? FUN_00404688 +404720 54 ? FUN_00404720 +404758 257 ? FUN_00404758 +40485c 247 ? FUN_0040485c +404954 54 ? FUN_00404954 +40498c 257 ? FUN_0040498c +404a90 247 ? FUN_00404a90 +404b88 56 ? FUN_00404b88 +404bc0 57 ? FUN_00404bc0 +404bfc 260 ? FUN_00404bfc +404d00 107 ? FUN_00404d00 +404d6c 332 ? FUN_00404d6c +404eb8 69 ? FUN_00404eb8 +404f00 120 ? FUN_00404f00 +404f78 76 ? FUN_00404f78 +404fc4 107 ? FUN_00404fc4 +405030 65 ? FUN_00405030 +405074 54 ? FUN_00405074 +4050ac 225 ? FUN_004050ac +405190 146 ? FUN_00405190 +405224 87 ? FUN_00405224 +40527c 385 ? FUN_0040527c +405400 51 ? FUN_00405400 +405434 29 ? FUN_00405434 +405454 55 ? FUN_00405454 +40548c 187 ? FUN_0040548c +405548 101 ? FUN_00405548 +4055b0 174 ? FUN_004055b0 +405660 25 ? FUN_00405660 +40567c 47 ? FUN_0040567c +4056ac 85 ? FUN_004056ac +405704 194 ? FUN_00405704 +4057c8 107 ? FUN_004057c8 +405834 52 ? FUN_00405834 +405868 31 ? FUN_00405868 +405888 149 ? FUN_00405888 +405920 102 ? FUN_00405920 +405988 113 ? FUN_00405988 +4059fc 258 ? FUN_004059fc +405b00 30 ? FUN_00405b00 +405f44 13 ? FUN_00405f44 +406018 294 ? FUN_00406018 +406140 28 ? FUN_00406140 +40615c 28 ? FUN_0040615c +406178 28 ? FUN_00406178 +406194 28 ? FUN_00406194 +4061b0 28 ? FUN_004061b0 +4061cc 28 ? FUN_004061cc +4061e8 60 ? FUN_004061e8 +406224 152 ? FUN_00406224 +4062bc 59 ? FUN_004062bc +4062f8 229 ? FUN_004062f8 +4063e0 14 ? FUN_004063e0 +4064bc 64 ? FUN_004064bc +4064fc 220 ? FUN_004064fc +4065d8 189 ? FUN_004065d8 +406698 182 ? FUN_00406698 +406750 66 ? FUN_00406750 +406794 46 ? FUN_00406794 +4067c4 93 ? FUN_004067c4 +406824 404 ? FUN_00406824 +4069b8 10 ? FUN_004069b8 +4069c4 513 ? FUN_004069c4 +406bc8 174 ? FUN_00406bc8 +406c78 41 ? FUN_00406c78 +406ca4 41 ? FUN_00406ca4 +406cd0 26 ? FUN_00406cd0 +406cec 10 ? FUN_00406cec +406cf8 59 ? FUN_00406cf8 +406d34 126 ? FUN_00406d34 +406db4 270 ? FUN_00406db4 +406ec4 120 ? FUN_00406ec4 +406f3c 71 ? FUN_00406f3c +406f84 77 ? FUN_00406f84 +406fd4 36 ? FUN_00406fd4 +406ff8 106 ? FUN_00406ff8 +407064 119 ? FUN_00407064 +4070dc 159 ? FUN_004070dc +40717c 44 ? FUN_0040717c +4071a8 10 ? FUN_004071a8 +4071b4 41 ? FUN_004071b4 +4071e0 54 ? FUN_004071e0 +407218 316 ? FUN_00407218 +407354 60 ? FUN_00407354 +407390 815 ? FUN_00407390 +4076c0 414 ? FUN_004076c0 +407860 60 ? FUN_00407860 +40789c 71 ? FUN_0040789c +4078e4 10 ? FUN_004078e4 +4078ee 12 ? FUN_004078ee +4078fc 67 ? FUN_004078fc +4079fc 148 munga/scalar.cpp FUN_004079fc +407a90 38 ? FUN_00407a90 +407ab8 38 ? FUN_00407ab8 +407ae0 38 ? FUN_00407ae0 +407b08 38 ? FUN_00407b08 +407b30 34 ? FUN_00407b30 +407b54 34 ? FUN_00407b54 +407b78 34 ? FUN_00407b78 +407b9c 19 ? FUN_00407b9c +407bb0 31 ? FUN_00407bb0 +407bd0 31 ? FUN_00407bd0 +407bf0 223 ? FUN_00407bf0 +407cd0 165 ? FUN_00407cd0 +407d78 69 ? FUN_00407d78 +407dc0 10 ? FUN_00407dc0 +407dca 25 ? FUN_00407dca +407de3 33 ? FUN_00407de3 +407e04 33 ? FUN_00407e04 +407e25 32 ? FUN_00407e25 +407e45 33 ? FUN_00407e45 +407e66 36 ? FUN_00407e66 +407e8a 37 ? FUN_00407e8a +407eaf 79 ? FUN_00407eaf +407efe 10 ? FUN_00407efe +407f08 94 ? FUN_00407f08 +407f68 132 ? FUN_00407f68 +407fec 98 ? FUN_00407fec +408050 39 ? FUN_00408050 +40807c 46 ? FUN_0040807c +4080ac 50 ? FUN_004080ac +4080e0 30 ? FUN_004080e0 +408110 94 ? FUN_00408110 +40817c 88 ? FUN_0040817c +4081e0 127 ? FUN_004081e0 +408270 58 ? FUN_00408270 +4082ac 43 ? FUN_004082ac +40831c 10 ? FUN_0040831c +408328 73 ? FUN_00408328 +408374 106 ? FUN_00408374 +4083e0 85 ? FUN_004083e0 +408440 27 ? FUN_00408440 +40845c 158 ? FUN_0040845c +4084fc 189 ? FUN_004084fc +4085bc 10 ? FUN_004085bc +4085c8 33 ? FUN_004085c8 +4085ec 38 ? FUN_004085ec +408614 47 ? FUN_00408614 +408644 38 ? FUN_00408644 +40866c 62 ? FUN_0040866c +4086ac 36 ? FUN_004086ac +4086d0 38 ? FUN_004086d0 +4086f8 36 ? FUN_004086f8 +40871c 38 ? FUN_0040871c +408744 86 ? FUN_00408744 +40879c 86 ? FUN_0040879c +4087f4 81 ? FUN_004087f4 +408848 62 ? FUN_00408848 +408888 186 ? FUN_00408888 +408944 404 ? FUN_00408944 +408ad8 27 ? FUN_00408ad8 +408af4 29 ? FUN_00408af4 +408b14 29 ? FUN_00408b14 +408b34 29 ? FUN_00408b34 +408b98 95 ? FUN_00408b98 +408bf8 157 ? FUN_00408bf8 +408cbc 178 ? FUN_00408cbc +408d78 89 ? FUN_00408d78 +408dd4 45 ? FUN_00408dd4 +408e04 116 ? FUN_00408e04 +408e78 21 ? FUN_00408e78 +408e90 47 ? FUN_00408e90 +408ec0 56 ? FUN_00408ec0 +408ef8 76 ? FUN_00408ef8 +408f44 54 ? FUN_00408f44 +408f7c 457 ? FUN_00408f7c +4091f4 189 ? FUN_004091f4 +4092b4 69 ? FUN_004092b4 +4092fc 65 ? FUN_004092fc +409340 78 ? FUN_00409340 +409390 111 ? FUN_00409390 +40942c 93 ? FUN_0040942c +40948c 10 ? FUN_0040948c +409498 47 ? FUN_00409498 +4094c8 56 ? FUN_004094c8 +409500 76 ? FUN_00409500 +40954c 54 ? FUN_0040954c +409584 451 ? FUN_00409584 +4097f4 189 ? FUN_004097f4 +4098b4 39 ? FUN_004098b4 +4098dc 93 ? FUN_004098dc +40993c 10 ? FUN_0040993c +409948 31 ? FUN_00409948 +409968 33 ? FUN_00409968 +40998c 111 ? FUN_0040998c +409a00 56 ? FUN_00409a00 +409a38 56 ? FUN_00409a38 +409a70 465 ? FUN_00409a70 +409d9c 139 ? FUN_00409d9c +409e28 243 ? FUN_00409e28 +409f58 229 ? FUN_00409f58 +40a048 232 ? FUN_0040a048 +40a138 171 ? FUN_0040a138 +40a22c 598 ? FUN_0040a22c +40a4d8 406 ? FUN_0040a4d8 +40a738 10 ? FUN_0040a738 +40a7c0 49 ? FUN_0040a7c0 +40a7f4 47 ? FUN_0040a7f4 +40a824 33 ? FUN_0040a824 +40a848 59 ? FUN_0040a848 +40a884 69 ? FUN_0040a884 +40a8cc 18 ? FUN_0040a8cc +40a938 45 ? FUN_0040a938 +40a968 44 ? FUN_0040a968 +40a994 33 ? FUN_0040a994 +40a9b8 59 ? FUN_0040a9b8 +40a9f4 93 ? FUN_0040a9f4 +40aaa0 18 ? FUN_0040aaa0 +40aadc 73 ? FUN_0040aadc +40ab28 27 ? FUN_0040ab28 +40ab44 44 ? FUN_0040ab44 +40ab70 252 ? FUN_0040ab70 +40ac6c 190 ? FUN_0040ac6c +40ad2c 190 ? FUN_0040ad2c +40adec 237 ? FUN_0040adec +40aee0 81 ? FUN_0040aee0 +40af34 81 ? FUN_0040af34 +40af88 98 ? FUN_0040af88 +40aff0 98 ? FUN_0040aff0 +40b058 35 ? FUN_0040b058 +40b07c 48 ? FUN_0040b07c +40b0ac 35 ? FUN_0040b0ac +40b0d0 50 ? FUN_0040b0d0 +40b104 317 ? FUN_0040b104 +40b244 298 ? FUN_0040b244 +40b374 116 ? FUN_0040b374 +40b3e8 67 ? FUN_0040b3e8 +40b42c 40 ? FUN_0040b42c +40b454 62 ? FUN_0040b454 +40b494 504 ? FUN_0040b494 +40bbe8 10 ? FUN_0040bbe8 +40bc00 25 ? FUN_0040bc00 +40bc1c 25 ? FUN_0040bc1c +40bc38 25 ? FUN_0040bc38 +40bc54 145 ? FUN_0040bc54 +40bce8 57 ? FUN_0040bce8 +40bd24 137 ? FUN_0040bd24 +40bdbc 27 ? FUN_0040bdbc +40bdd8 105 ? FUN_0040bdd8 +40be44 10 ? FUN_0040be44 +40be50 95 ? FUN_0040be50 +40beb0 103 ? FUN_0040beb0 +40bf18 62 ? FUN_0040bf18 +40bf58 227 ? FUN_0040bf58 +40c03c 237 ? FUN_0040c03c +40c170 28 ? FUN_0040c170 +40c18c 97 ? FUN_0040c18c +40c1f0 535 ? FUN_0040c1f0 +40c408 428 ? FUN_0040c408 +40c5b4 419 ? FUN_0040c5b4 +40c758 51 ? FUN_0040c758 +40c78c 158 ? FUN_0040c78c +40cdb4 49 ? FUN_0040cdb4 +40cdf4 55 ? FUN_0040cdf4 +40ce2c 56 ? FUN_0040ce2c +40ce64 128 ? FUN_0040ce64 +40cfb8 322 ? FUN_0040cfb8 +40d100 80 ? FUN_0040d100 +40d150 27 ? FUN_0040d150 +40d16c 140 ? FUN_0040d16c +40d210 121 ? FUN_0040d210 +40d28c 45 ? FUN_0040d28c +40d2bc 145 ? FUN_0040d2bc +40d350 121 ? FUN_0040d350 +40d3cc 83 ? FUN_0040d3cc +40d420 84 ? FUN_0040d420 +40d474 84 ? FUN_0040d474 +40d4c8 49 ? FUN_0040d4c8 +40d4fc 304 ? FUN_0040d4fc +40d62c 731 ? FUN_0040d62c +40d908 6 ? FUN_0040d908 +40d90e 428 ? FUN_0040d90e +40daba 8 ? FUN_0040daba +40dac4 32 ? FUN_0040dac4 +40dae4 15 ? FUN_0040dae4 +40daf4 61 ? FUN_0040daf4 +40db34 32 ? FUN_0040db34 +40db54 66 ? FUN_0040db54 +40db98 60 ? FUN_0040db98 +40dbd4 44 ? FUN_0040dbd4 +40dc00 82 ? FUN_0040dc00 +40dc58 329 ? FUN_0040dc58 +40ddb8 10 ? FUN_0040ddb8 +40ddc4 47 ? FUN_0040ddc4 +40de34 10 ? FUN_0040de34 +40de40 53 ? FUN_0040de40 +40de78 42 ? FUN_0040de78 +40dea4 10 ? FUN_0040dea4 +40deb0 32 ? FUN_0040deb0 +40ded0 38 ? FUN_0040ded0 +40def8 45 ? FUN_0040def8 +40df25 8 ? FUN_0040df25 +40df68 59 ? FUN_0040df68 +40dfa4 89 ? FUN_0040dfa4 +40e000 385 ? FUN_0040e000 +40e184 294 ? FUN_0040e184 +40e2ac 190 ? FUN_0040e2ac +40e36c 127 ? FUN_0040e36c +40e3ec 189 ? FUN_0040e3ec +40e4ac 323 ? FUN_0040e4ac +40e5f0 350 ? FUN_0040e5f0 +40e754 771 ? FUN_0040e754 +40ea6c 78 ? FUN_0040ea6c +40eabc 31 ? FUN_0040eabc +40eadc 80 ? FUN_0040eadc +40eb2c 10 ? FUN_0040eb2c +40eb64 10 ? FUN_0040eb64 +40eb70 34 ? FUN_0040eb70 +40eb94 62 ? FUN_0040eb94 +40ebd4 81 ? FUN_0040ebd4 +40ec28 82 ? FUN_0040ec28 +40ec7c 64 ? FUN_0040ec7c +40ecbc 52 ? FUN_0040ecbc +40ecf0 110 ? FUN_0040ecf0 +40ed60 101 ? FUN_0040ed60 +40ee00 10 ? FUN_0040ee00 +40ee38 56 ? FUN_0040ee38 +40ee70 55 ? FUN_0040ee70 +40eea8 45 ? FUN_0040eea8 +40eed8 980 ? FUN_0040eed8 +40f2f8 10 ? FUN_0040f2f8 +40f304 30 munga/boxsolid.cpp FUN_0040f304 +40f324 21 ? FUN_0040f324 +40f33c 875 ? FUN_0040f33c +40f7d8 509 ? FUN_0040f7d8 +40f9d8 463 ? FUN_0040f9d8 +40fbb0 938 ? FUN_0040fbb0 +40ff5c 46 ? FUN_0040ff5c +40ff8c 45 ? FUN_0040ff8c +40ffbc 22 ? FUN_0040ffbc +40ffd4 21 ? FUN_0040ffd4 +40ffec 21 ? FUN_0040ffec +410004 108 ? FUN_00410004 +4101a0 855 ? FUN_004101a0 +4104f7 8 ? FUN_004104f7 +410500 46 ? FUN_00410500 +410530 45 ? FUN_00410530 +410560 159 ? FUN_00410560 +4108b4 46 ? FUN_004108b4 +4108e4 45 ? FUN_004108e4 +410914 206 ? FUN_00410914 +410b5c 34 ? FUN_00410b5c +410b80 793 ? FUN_00410b80 +410ec8 344 ? FUN_00410ec8 +411024 46 ? FUN_00411024 +411054 45 ? FUN_00411054 +411084 75 ? FUN_00411084 +4110d0 75 ? FUN_004110d0 +41111c 92 ? FUN_0041111c +411200 22 ? FUN_00411200 +411218 46 ? FUN_00411218 +411248 45 ? FUN_00411248 +411278 75 ? FUN_00411278 +4112c4 75 ? FUN_004112c4 +411310 92 ? FUN_00411310 +4113f4 22 ? FUN_004113f4 +41140c 46 ? FUN_0041140c +41143c 45 ? FUN_0041143c +41146c 73 ? FUN_0041146c +4114b8 73 ? FUN_004114b8 +411504 90 ? FUN_00411504 +4115e8 22 ? FUN_004115e8 +411600 46 ? FUN_00411600 +411630 45 ? FUN_00411630 +411660 73 ? FUN_00411660 +4116ac 72 ? FUN_004116ac +4116f4 89 ? FUN_004116f4 +4117d8 22 ? FUN_004117d8 +4117f0 46 ? FUN_004117f0 +411820 45 ? FUN_00411820 +411850 75 ? FUN_00411850 +41189c 75 ? FUN_0041189c +4118e8 104 ? FUN_004118e8 +4119dc 22 ? FUN_004119dc +4119f4 46 ? FUN_004119f4 +411a24 45 ? FUN_00411a24 +411a54 75 ? FUN_00411a54 +411aa0 75 ? FUN_00411aa0 +411aec 104 ? FUN_00411aec +411be0 22 ? FUN_00411be0 +411bf8 46 ? FUN_00411bf8 +411c28 45 ? FUN_00411c28 +411c58 72 ? FUN_00411c58 +411ca0 72 ? FUN_00411ca0 +411ce8 101 ? FUN_00411ce8 +411ddc 22 ? FUN_00411ddc +411df4 46 ? FUN_00411df4 +411e24 45 ? FUN_00411e24 +411e54 74 ? FUN_00411e54 +411ea0 73 ? FUN_00411ea0 +411eec 102 ? FUN_00411eec +411fe0 22 ? FUN_00411fe0 +411ff8 46 ? FUN_00411ff8 +412028 45 ? FUN_00412028 +412058 73 ? FUN_00412058 +4120a4 72 ? FUN_004120a4 +4120ec 110 ? FUN_004120ec +4121e8 22 ? FUN_004121e8 +412200 46 ? FUN_00412200 +412230 45 ? FUN_00412230 +412260 73 ? FUN_00412260 +4122ac 73 ? FUN_004122ac +4122f8 111 ? FUN_004122f8 +4123f4 22 ? FUN_004123f4 +41240c 46 ? FUN_0041240c +41243c 45 ? FUN_0041243c +41246c 73 ? FUN_0041246c +4124b8 72 ? FUN_004124b8 +412500 110 ? FUN_00412500 +4125fc 22 ? FUN_004125fc +412614 46 ? FUN_00412614 +412644 45 ? FUN_00412644 +412674 73 ? FUN_00412674 +4126c0 73 ? FUN_004126c0 +41270c 111 ? FUN_0041270c +412808 22 ? FUN_00412808 +412820 46 ? FUN_00412820 +412850 45 ? FUN_00412850 +412880 192 ? FUN_00412880 +412c78 46 ? FUN_00412c78 +412ca8 45 ? FUN_00412ca8 +412cd8 361 ? FUN_00412cd8 +4146dc 46 ? FUN_004146dc +41470c 45 ? FUN_0041470c +41473c 189 ? FUN_0041473c +414b60 53 ? FUN_00414b60 +414b98 10 ? FUN_00414b98 +414ba4 56 ? FUN_00414ba4 +414be8 20 ? FUN_00414be8 +414bfc 31 ? FUN_00414bfc +414c1c 59 ? FUN_00414c1c +414c58 38 ? FUN_00414c58 +414c80 10 ? FUN_00414c80 +414c8c 1789 ? FUN_00414c8c +415389 43 ? FUN_00415389 +4153b4 44 ? FUN_004153b4 +4153e0 80 ? FUN_004153e0 +415430 75 ? FUN_00415430 +41547b 109 ? FUN_0041547b +4154e8 65 ? FUN_004154e8 +415529 35 ? FUN_00415529 +41554c 44 ? FUN_0041554c +415578 77 ? FUN_00415578 +4155c5 74 ? FUN_004155c5 +41560f 31 ? FUN_0041560f +41562e 31 ? FUN_0041562e +41564d 44 ? FUN_0041564d +415679 35 ? FUN_00415679 +41569c 44 ? FUN_0041569c +4156c8 47 ? FUN_004156c8 +4156f7 44 ? FUN_004156f7 +415723 80 ? FUN_00415723 +415773 75 ? FUN_00415773 +4157be 35 ? FUN_004157be +4157e1 44 ? FUN_004157e1 +41580d 77 ? FUN_0041580d +41585a 74 ? FUN_0041585a +4158a4 80 ? FUN_004158a4 +4158f4 75 ? FUN_004158f4 +41593f 48 ? FUN_0041593f +41596f 48 ? FUN_0041596f +41599f 48 ? FUN_0041599f +4159cf 115 ? FUN_004159cf +415a42 65 ? FUN_00415a42 +415a83 80 ? FUN_00415a83 +415ad3 75 ? FUN_00415ad3 +415b1e 115 ? FUN_00415b1e +415b91 65 ? FUN_00415b91 +415bd2 80 ? FUN_00415bd2 +415c22 75 ? FUN_00415c22 +415c70 14 ? FUN_00415c70 +415c80 31 ? FUN_00415c80 +415ca0 10 ? FUN_00415ca0 +415cac 25 munga/iterator.cpp FUN_00415cac +415cc8 25 munga/iterator.cpp FUN_00415cc8 +415ce4 25 munga/iterator.cpp FUN_00415ce4 +415d00 25 munga/iterator.cpp FUN_00415d00 +415d1c 27 munga/iterator.cpp FUN_00415d1c +415d38 34 ? FUN_00415d38 +415d5c 34 ? FUN_00415d5c +415d80 30 munga/iterator.cpp FUN_00415d80 +415da0 59 ? FUN_00415da0 +415ddc 40 ? FUN_00415ddc +415e04 40 ? FUN_00415e04 +415e2c 10 ? FUN_00415e2c +415e38 56 ? FUN_00415e38 +415e70 32 ? FUN_00415e70 +415e90 36 ? FUN_00415e90 +415eb4 36 ? FUN_00415eb4 +415ed8 67 ? FUN_00415ed8 +415f1c 18 ? FUN_00415f1c +415f30 45 ? FUN_00415f30 +415f60 48 ? FUN_00415f60 +415f90 44 ? FUN_00415f90 +415fbc 18 ? FUN_00415fbc +415fd0 24 ? FUN_00415fd0 +415fe8 50 ? FUN_00415fe8 +41601c 24 ? FUN_0041601c +416034 24 ? FUN_00416034 +41604c 43 ? FUN_0041604c +416078 43 ? FUN_00416078 +4160a4 25 ? FUN_004160a4 +4160c0 44 ? FUN_004160c0 +4160ec 59 ? FUN_004160ec +416128 49 ? FUN_00416128 +41615c 49 ? FUN_0041615c +416190 33 ? FUN_00416190 +4161b4 72 ? FUN_004161b4 +4161fc 55 ? FUN_004161fc +416234 39 ? FUN_00416234 +41625c 47 ? FUN_0041625c +41628c 50 ? FUN_0041628c +4162c0 44 ? FUN_004162c0 +4162ec 52 ? FUN_004162ec +416320 12 ? FUN_00416320 +41632c 111 ? FUN_0041632c +41639c 37 munga/objstrm.cpp FUN_0041639c +4163c4 5 ? FUN_004163c4 +4163cc 141 ? FUN_004163cc +41645c 693 ? FUN_0041645c +416714 204 ? FUN_00416714 +4167e0 308 ? FUN_004167e0 +416914 977 ? FUN_00416914 +416ce8 157 ? FUN_00416ce8 +416d88 37 ? FUN_00416d88 +416db0 31 munga/objstrm.cpp FUN_00416db0 +416dd0 5 ? FUN_00416dd0 +416dd8 66 ? FUN_00416dd8 +416e1c 79 ? FUN_00416e1c +416e6c 20 ? FUN_00416e6c +416e80 103 ? FUN_00416e80 +416ee8 30 ? FUN_00416ee8 +416f08 26 ? FUN_00416f08 +416f24 60 ? FUN_00416f24 +416f60 39 ? FUN_00416f60 +416f88 35 ? FUN_00416f88 +416fac 45 ? FUN_00416fac +416fdc 41 ? FUN_00416fdc +417008 44 ? FUN_00417008 +417034 31 ? FUN_00417034 +417054 63 ? FUN_00417054 +417094 25 ? FUN_00417094 +4170b0 28 ? FUN_004170b0 +4170cc 21 ? FUN_004170cc +4170e4 60 ? FUN_004170e4 +417120 117 ? FUN_00417120 +417198 25 ? FUN_00417198 +4171b4 60 ? FUN_004171b4 +4171f0 21 ? FUN_004171f0 +417208 56 ? FUN_00417208 +417240 346 munga/objstrm.cpp FUN_00417240 +4173b8 7 ? FUN_004173b8 +4173bf 37 ? FUN_004173bf +4173e4 44 ? FUN_004173e4 +417410 39 ? FUN_00417410 +417437 44 ? FUN_00417437 +417463 47 ? FUN_00417463 +417492 19 ? FUN_00417492 +4174a5 35 ? FUN_004174a5 +4174c8 44 ? FUN_004174c8 +4174f4 77 ? FUN_004174f4 +417541 74 ? FUN_00417541 +41758b 31 ? FUN_0041758b +4175aa 31 ? FUN_004175aa +4175c9 44 ? FUN_004175c9 +4175f5 31 ? FUN_004175f5 +417614 31 ? FUN_00417614 +417633 44 ? FUN_00417633 +41765f 31 ? FUN_0041765f +41767e 31 ? FUN_0041767e +41769d 31 ? FUN_0041769d +4176bc 44 ? FUN_004176bc +4176e8 48 ? FUN_004176e8 +417718 20 ? FUN_00417718 +41772c 31 ? FUN_0041772c +41774c 10 ? FUN_0041774c +417758 25 munga/socket.cpp FUN_00417758 +417774 31 ? FUN_00417774 +417794 44 ? FUN_00417794 +4177c0 10 ? FUN_004177c0 +4177cc 25 munga/socket.cpp FUN_004177cc +4177e8 52 ? FUN_004177e8 +41781c 59 ? FUN_0041781c +417858 86 ? FUN_00417858 +4178b0 28 munga/socket.cpp FUN_004178b0 +4178cc 31 ? FUN_004178cc +4178ec 31 ? FUN_004178ec +41790c 44 ? FUN_0041790c +417938 5 ? FUN_00417938 +417940 35 ? FUN_00417940 +417964 91 ? FUN_00417964 +4179c0 20 ? FUN_004179c0 +4179d4 36 ? FUN_004179d4 +4179f8 70 ? FUN_004179f8 +417a40 27 ? FUN_00417a40 +417a5c 36 ? FUN_00417a5c +417a80 50 ? FUN_00417a80 +417ab4 22 ? FUN_00417ab4 +417af8 61 ? FUN_00417af8 +417b38 136 ? FUN_00417b38 +417bc0 31 ? FUN_00417bc0 +417be0 41 ? FUN_00417be0 +417c0c 72 ? FUN_00417c0c +417c54 31 ? FUN_00417c54 +417c74 70 ? FUN_00417c74 +417cbc 67 ? FUN_00417cbc +417d00 39 ? FUN_00417d00 +417d28 42 ? FUN_00417d28 +417d54 44 ? FUN_00417d54 +417d80 27 ? FUN_00417d80 +417d9c 17 ? FUN_00417d9c +417db0 17 ? FUN_00417db0 +417dc4 17 ? FUN_00417dc4 +417dd8 17 ? FUN_00417dd8 +417dec 30 ? FUN_00417dec +417e0c 30 ? FUN_00417e0c +417e2c 22 ? FUN_00417e2c +417e44 30 ? FUN_00417e44 +417e64 50 ? FUN_00417e64 +417e98 33 ? FUN_00417e98 +417ebc 33 ? FUN_00417ebc +417f0c 36 ? FUN_00417f0c +417f30 44 ? FUN_00417f30 +417f5c 27 ? FUN_00417f5c +417f78 45 ? FUN_00417f78 +417fa8 54 ? FUN_00417fa8 +417fe0 84 ? FUN_00417fe0 +418034 31 ? FUN_00418034 +418054 28 munga/sfeskt.cpp FUN_00418054 +418070 37 ? FUN_00418070 +418098 44 ? FUN_00418098 +4180c4 25 munga/srtskt.cpp FUN_004180c4 +4180e0 27 munga/srtskt.cpp FUN_004180e0 +4180fc 31 ? FUN_004180fc +41811c 44 ? FUN_0041811c +418148 27 munga/srtskt.cpp FUN_00418148 +418164 27 munga/srtskt.cpp FUN_00418164 +418180 65 ? FUN_00418180 +4181c4 152 ? FUN_004181c4 +41825c 31 ? FUN_0041825c +41827c 41 ? FUN_0041827c +4182a8 72 ? FUN_004182a8 +4182f0 27 ? FUN_004182f0 +41830c 70 ? FUN_0041830c +418354 67 ? FUN_00418354 +418398 39 ? FUN_00418398 +4183c0 42 ? FUN_004183c0 +4183ec 44 ? FUN_004183ec +418418 27 ? FUN_00418418 +418434 17 ? FUN_00418434 +418448 17 ? FUN_00418448 +41845c 17 ? FUN_0041845c +418470 17 ? FUN_00418470 +418484 30 ? FUN_00418484 +4184a4 30 ? FUN_004184a4 +4184c4 22 ? FUN_004184c4 +4184dc 30 ? FUN_004184dc +4184fc 50 ? FUN_004184fc +418530 25 ? FUN_00418530 +41854c 33 ? FUN_0041854c +418570 29 ? FUN_00418570 +4185bc 45 ? FUN_004185bc +4185ec 139 ? FUN_004185ec +418678 31 ? FUN_00418678 +418698 20 ? FUN_00418698 +4186ac 45 ? FUN_004186ac +4186dc 72 ? FUN_004186dc +418724 31 ? FUN_00418724 +418744 30 munga/vchain.cpp FUN_00418744 +418764 30 munga/vchain.cpp FUN_00418764 +418784 30 munga/vchain.cpp FUN_00418784 +4187a4 23 ? FUN_004187a4 +4187bc 188 ? FUN_004187bc +418878 38 ? FUN_00418878 +4188a0 58 ? FUN_004188a0 +4188dc 39 ? FUN_004188dc +418904 42 ? FUN_00418904 +418930 44 ? FUN_00418930 +41895c 27 ? FUN_0041895c +418978 17 ? FUN_00418978 +41898c 17 ? FUN_0041898c +4189a0 17 ? FUN_004189a0 +4189b4 17 ? FUN_004189b4 +4189c8 30 ? FUN_004189c8 +4189e8 30 ? FUN_004189e8 +418a08 22 ? FUN_00418a08 +418a20 30 ? FUN_00418a20 +418a40 50 ? FUN_00418a40 +418a74 25 ? FUN_00418a74 +418a90 46 ? FUN_00418a90 +418ac0 29 ? FUN_00418ac0 +418ae0 50 ? FUN_00418ae0 +418b14 99 ? FUN_00418b14 +418b78 35 ? FUN_00418b78 +418b9c 26 ? FUN_00418b9c +418bb8 40 ? FUN_00418bb8 +418be0 72 ? FUN_00418be0 +418c28 27 ? FUN_00418c28 +418c44 23 ? FUN_00418c44 +418c5c 53 ? FUN_00418c5c +418c94 38 ? FUN_00418c94 +418cbc 30 munga/tree.cpp FUN_00418cbc +418cdc 30 munga/tree.cpp FUN_00418cdc +418cfc 30 munga/tree.cpp FUN_00418cfc +418d1c 130 ? FUN_00418d1c +418da0 340 ? FUN_00418da0 +418ef4 61 ? FUN_00418ef4 +418f34 38 ? FUN_00418f34 +418f5c 44 ? FUN_00418f5c +418f88 27 ? FUN_00418f88 +418fa4 32 ? FUN_00418fa4 +418fc4 5 ? FUN_00418fc4 +418fcc 67 ? FUN_00418fcc +419010 5 ? FUN_00419010 +419018 22 ? FUN_00419018 +419030 69 ? FUN_00419030 +419078 29 ? FUN_00419078 +419098 46 ? FUN_00419098 +4190c8 29 ? FUN_004190c8 +4190e8 35 ? FUN_004190e8 +41910c 120 ? FUN_0041910c +419184 45 ? FUN_00419184 +4191b4 77 ? FUN_004191b4 +419204 33 ? FUN_00419204 +419228 23 ? FUN_00419228 +419240 60 ? FUN_00419240 +41927c 43 ? FUN_0041927c +4192a8 30 munga/table.cpp FUN_004192a8 +4192c8 30 munga/table.cpp FUN_004192c8 +4192e8 30 munga/table.cpp FUN_004192e8 +419308 104 ? FUN_00419308 +419370 96 ? FUN_00419370 +4193d0 89 ? FUN_004193d0 +41942c 36 ? FUN_0041942c +419450 134 ? FUN_00419450 +4194d8 66 ? FUN_004194d8 +41951c 44 ? FUN_0041951c +419548 27 ? FUN_00419548 +419564 19 ? FUN_00419564 +419578 21 ? FUN_00419578 +419590 26 ? FUN_00419590 +4195ac 20 ? FUN_004195ac +4195c0 49 ? FUN_004195c0 +4195f4 43 ? FUN_004195f4 +419620 29 ? FUN_00419620 +419640 11 ? FUN_00419640 +41964c 38 ? FUN_0041964c +419674 36 ? FUN_00419674 +419698 107 ? FUN_00419698 +419704 109 ? FUN_00419704 +419774 48 ? FUN_00419774 +4197a4 46 ? FUN_004197a4 +4197d4 108 ? FUN_004197d4 +419840 20 ? FUN_00419840 +419854 23 ? FUN_00419854 +41986c 68 ? FUN_0041986c +4198b0 53 ? FUN_004198b0 +4198e8 30 munga/hash.cpp FUN_004198e8 +419908 30 munga/hash.cpp FUN_00419908 +419928 64 ? FUN_00419928 +419968 68 ? FUN_00419968 +4199ac 27 ? FUN_004199ac +4199c8 19 ? FUN_004199c8 +4199dc 5 ? FUN_004199dc +4199e4 66 ? FUN_004199e4 +419a28 5 ? FUN_00419a28 +419a30 74 ? FUN_00419a30 +419a7c 69 ? FUN_00419a7c +419ac4 69 ? FUN_00419ac4 +419b0c 7 ? FUN_00419b0c +419b14 5 ? FUN_00419b14 +419b1c 36 ? FUN_00419b1c +419b40 114 ? FUN_00419b40 +419bbc 209 ? FUN_00419bbc +419c90 40 ? FUN_00419c90 +419cb8 85 ? FUN_00419cb8 +419d10 104 ? FUN_00419d10 +419d78 119 ? FUN_00419d78 +419df0 27 ? FUN_00419df0 +419e0c 10 ? FUN_00419e0c +419e18 71 ? FUN_00419e18 +419e60 43 ? FUN_00419e60 +419e8c 76 ? FUN_00419e8c +419ed8 78 ? FUN_00419ed8 +419f28 51 ? FUN_00419f28 +419f5c 10 ? FUN_00419f5c +419f68 10 ? FUN_00419f68 +419f74 41 ? FUN_00419f74 +419fa0 184 ? FUN_00419fa0 +41a058 87 ? FUN_0041a058 +41a0b0 61 ? FUN_0041a0b0 +41a0f0 82 ? FUN_0041a0f0 +41a144 95 ? FUN_0041a144 +41a1a4 119 ? FUN_0041a1a4 +41a21c 150 ? FUN_0041a21c +41a2b4 10 ? FUN_0041a2b4 +41a37f 31 ? FUN_0041a37f +41a39e 44 ? FUN_0041a39e +41a3ca 31 ? FUN_0041a3ca +41a3e9 44 ? FUN_0041a3e9 +41a415 31 ? FUN_0041a415 +41a434 31 ? FUN_0041a434 +41a453 31 ? FUN_0041a453 +41a472 44 ? FUN_0041a472 +41a49e 35 ? FUN_0041a49e +41a4c1 35 ? FUN_0041a4c1 +41a4e4 31 ? FUN_0041a4e4 +41a503 44 ? FUN_0041a503 +41a52f 35 ? FUN_0041a52f +41a552 35 ? FUN_0041a552 +41a575 31 ? FUN_0041a575 +41a594 44 ? FUN_0041a594 +41a5c0 31 ? FUN_0041a5c0 +41a5df 31 ? FUN_0041a5df +41a5fe 31 ? FUN_0041a5fe +41a61d 44 ? FUN_0041a61d +41a649 35 ? FUN_0041a649 +41a66c 35 ? FUN_0041a66c +41a68f 31 ? FUN_0041a68f +41a6ae 44 ? FUN_0041a6ae +41a6da 66 ? FUN_0041a6da +41a71c 49 ? FUN_0041a71c +41a750 83 ? FUN_0041a750 +41a7a4 58 ? FUN_0041a7a4 +41a7e0 25 munga/event.cpp FUN_0041a7e0 +41a7fc 25 munga/event.cpp FUN_0041a7fc +41a818 71 ? FUN_0041a818 +41a860 67 ? FUN_0041a860 +41a8a4 135 ? FUN_0041a8a4 +41a92c 148 ? FUN_0041a92c +41a9c0 30 ? FUN_0041a9c0 +41a9e0 232 ? FUN_0041a9e0 +41aac8 22 ? FUN_0041aac8 +41aae0 60 ? FUN_0041aae0 +41ab1c 44 ? FUN_0041ab1c +41ab48 124 ? FUN_0041ab48 +41abc4 69 ? FUN_0041abc4 +41ac0c 67 ? FUN_0041ac0c +41ac50 72 ? FUN_0041ac50 +41ac98 36 ? FUN_0041ac98 +41acbc 73 ? FUN_0041acbc +41ad08 76 ? FUN_0041ad08 +41ad54 74 ? FUN_0041ad54 +41ada0 74 ? FUN_0041ada0 +41adec 290 ? FUN_0041adec +41af10 225 ? FUN_0041af10 +41aff4 136 ? FUN_0041aff4 +41b07c 41 ? FUN_0041b07c +41b0a8 29 ? FUN_0041b0a8 +41b0c8 197 ? FUN_0041b0c8 +41b190 234 ? FUN_0041b190 +41b27c 424 ? FUN_0041b27c +41b424 29 ? FUN_0041b424 +41b444 44 ? FUN_0041b444 +41b470 36 ? FUN_0041b470 +41b494 263 ? FUN_0041b494 +41b59c 89 ? FUN_0041b59c +41b5f8 75 ? FUN_0041b5f8 +41b644 22 ? FUN_0041b644 +41b688 31 ? FUN_0041b688 +41b6a7 44 ? FUN_0041b6a7 +41b6d3 31 ? FUN_0041b6d3 +41b6f2 44 ? FUN_0041b6f2 +41b71e 35 ? FUN_0041b71e +41b741 35 ? FUN_0041b741 +41b764 31 ? FUN_0041b764 +41b783 44 ? FUN_0041b783 +41b7af 31 ? FUN_0041b7af +41b7ce 31 ? FUN_0041b7ce +41b7ed 31 ? FUN_0041b7ed +41b80c 44 ? FUN_0041b80c +41b838 45 ? FUN_0041b838 +41b868 45 ? FUN_0041b868 +41b898 44 ? FUN_0041b898 +41b8c4 25 munga/cmpnnt.cpp FUN_0041b8c4 +41b8e0 27 ? FUN_0041b8e0 +41b956 21 ? FUN_0041b956 +41b96b 38 ? FUN_0041b96b +41b994 86 ? FUN_0041b994 +41b9ec 85 ? FUN_0041b9ec +41ba44 94 ? FUN_0041ba44 +41baa4 225 ? FUN_0041baa4 +41bb88 29 ? FUN_0041bb88 +41bba8 46 ? FUN_0041bba8 +41bbd8 208 ? FUN_0041bbd8 +41bca8 128 ? FUN_0041bca8 +41bd28 10 ? FUN_0041bd28 +41bd34 43 ? FUN_0041bd34 +41bd60 53 ? FUN_0041bd60 +41bd98 85 ? FUN_0041bd98 +41bdf0 211 ? FUN_0041bdf0 +41bec4 126 ? FUN_0041bec4 +41bf44 121 ? FUN_0041bf44 +41bfc0 85 ? FUN_0041bfc0 +41c018 96 ? FUN_0041c018 +41c078 12 ? FUN_0041c078 +41c084 5 ? FUN_0041c084 +41c08c 253 ? FUN_0041c08c +41c18c 27 ? FUN_0041c18c +41c1a8 41 ? FUN_0041c1a8 +41c1d4 177 ? FUN_0041c1d4 +41c288 115 ? FUN_0041c288 +41c2fc 81 ? FUN_0041c2fc +41c350 40 ? FUN_0041c350 +41c42c 31 ? FUN_0041c42c +41c44b 44 ? FUN_0041c44b +41c477 31 ? FUN_0041c477 +41c496 31 ? FUN_0041c496 +41c4b5 31 ? FUN_0041c4b5 +41c4d4 44 ? FUN_0041c4d4 +41c500 41 ? FUN_0041c500 +41c52c 147 ? FUN_0041c52c +41c5c0 134 ? FUN_0041c5c0 +41c648 57 ? FUN_0041c648 +41c684 349 ? FUN_0041c684 +41c7e4 27 ? FUN_0041c7e4 +41c800 7 ? FUN_0041c800 +41c808 572 ? FUN_0041c808 +41cab2 27 ? FUN_0041cab2 +41cacd 5 ? FUN_0041cacd +41cad2 5 ? FUN_0041cad2 +41cad8 43 ? FUN_0041cad8 +41cb04 45 ? FUN_0041cb04 +41cb34 10 ? FUN_0041cb34 +41cb40 54 ? FUN_0041cb40 +41cb78 301 ? FUN_0041cb78 +41ccc0 279 ? FUN_0041ccc0 +41cdd8 359 ? FUN_0041cdd8 +41cf40 96 ? FUN_0041cf40 +41cfa0 37 ? FUN_0041cfa0 +41cfc8 88 ? FUN_0041cfc8 +41d020 136 ? FUN_0041d020 +41d0a8 109 ? FUN_0041d0a8 +41d11c 83 ? FUN_0041d11c +41d170 106 ? FUN_0041d170 +41d1dc 129 ? FUN_0041d1dc +41d260 27 ? FUN_0041d260 +41d2ea 35 ? FUN_0041d2ea +41d30d 44 ? FUN_0041d30d +41d339 47 ? FUN_0041d339 +41d368 44 ? FUN_0041d368 +41d394 31 ? FUN_0041d394 +41d3b3 31 ? FUN_0041d3b3 +41d3d2 44 ? FUN_0041d3d2 +41d3fe 48 ? FUN_0041d3fe +41d42e 43 ? FUN_0041d42e +41d459 44 ? FUN_0041d459 +41d485 80 ? FUN_0041d485 +41d4d5 75 ? FUN_0041d4d5 +41d520 51 ? FUN_0041d520 +41d554 44 ? FUN_0041d554 +41d580 27 ? FUN_0041d580 +41d59c 21 ? FUN_0041d59c +41d5b4 60 ? FUN_0041d5b4 +41d5f0 124 ? FUN_0041d5f0 +41d66c 60 ? FUN_0041d66c +41d6a8 44 ? FUN_0041d6a8 +41d6d4 212 ? FUN_0041d6d4 +41d7a8 5 ? FUN_0041d7a8 +41d7b0 53 ? FUN_0041d7b0 +41d7e8 5 ? FUN_0041d7e8 +41d7f0 150 munga/network.cpp FUN_0041d7f0 +41d8a8 251 munga/network.cpp FUN_0041d8a8 +41d9a4 10 ? FUN_0041d9a4 +41d9b0 30 munga/network.cpp FUN_0041d9b0 +41d9d0 28 munga/network.cpp FUN_0041d9d0 +41dac6 5 ? FUN_0041dac6 +41dacb 5 ? FUN_0041dacb +41dad0 79 ? FUN_0041dad0 +41db20 89 ? FUN_0041db20 +41db7c 83 ? FUN_0041db7c +41dbd0 386 ? FUN_0041dbd0 +41dd68 46 ? FUN_0041dd68 +41dd98 64 ? FUN_0041dd98 +41ddd8 65 ? FUN_0041ddd8 +41de1c 319 ? FUN_0041de1c +41df5c 1058 ? FUN_0041df5c +41e394 274 ? FUN_0041e394 +41e4a8 55 ? FUN_0041e4a8 +41e4e0 155 ? FUN_0041e4e0 +41e590 2786 ? FUN_0041e590 +41f07c 379 ? FUN_0041f07c +41f1f7 31 ? FUN_0041f1f7 +41f216 31 ? FUN_0041f216 +41f235 44 ? FUN_0041f235 +41f261 31 ? FUN_0041f261 +41f280 31 ? FUN_0041f280 +41f29f 44 ? FUN_0041f29f +41f2cb 31 ? FUN_0041f2cb +41f2ea 44 ? FUN_0041f2ea +41f316 31 ? FUN_0041f316 +41f335 31 ? FUN_0041f335 +41f354 31 ? FUN_0041f354 +41f373 44 ? FUN_0041f373 +41f39f 35 ? FUN_0041f39f +41f3c2 44 ? FUN_0041f3c2 +41f3ee 47 ? FUN_0041f3ee +41f41d 44 ? FUN_0041f41d +41f449 31 ? FUN_0041f449 +41f468 44 ? FUN_0041f468 +41f494 31 ? FUN_0041f494 +41f4b3 31 ? FUN_0041f4b3 +41f4d2 31 ? FUN_0041f4d2 +41f4f1 44 ? FUN_0041f4f1 +41f51d 48 ? FUN_0041f51d +41f54d 33 ? FUN_0041f54d +41f59c 161 ? FUN_0041f59c +41f640 62 ? FUN_0041f640 +41f680 144 ? FUN_0041f680 +41f710 89 ? FUN_0041f710 +41f76c 148 ? FUN_0041f76c +41f800 86 ? FUN_0041f800 +41f858 122 ? FUN_0041f858 +41f8d4 142 ? FUN_0041f8d4 +41f964 37 ? FUN_0041f964 +41f98c 84 ? FUN_0041f98c +41f9e0 631 ? FUN_0041f9e0 +41fc58 189 ? FUN_0041fc58 +41fd18 48 ? FUN_0041fd18 +41fd48 448 ? FUN_0041fd48 +41ff08 48 ? FUN_0041ff08 +41ff38 6 ? FUN_0041ff38 +41ff3e 710 ? FUN_0041ff3e +420204 46 ? FUN_00420204 +420234 445 ? FUN_00420234 +4203f4 258 ? FUN_004203f4 +4204f8 15 ? FUN_004204f8 +420508 273 ? FUN_00420508 +42061c 58 ? FUN_0042061c +420658 27 ? FUN_00420658 +420674 31 ? FUN_00420674 +420694 31 ? FUN_00420694 +4206b4 31 ? FUN_004206b4 +4206d4 18 ? FUN_004206d4 +4206e8 76 ? FUN_004206e8 +420734 14 ? FUN_00420734 +420744 14 ? FUN_00420744 +420754 21 ? FUN_00420754 +42076c 70 ? FUN_0042076c +4207b4 6 ? FUN_004207b4 +4207ba 581 ? FUN_004207ba +420a00 912 ? FUN_00420a00 +420e58 22 ? FUN_00420e58 +420e6e 22 ? FUN_00420e6e +420e84 5 ? FUN_00420e84 +420e8c 21 ? FUN_00420e8c +420ea4 21 ? FUN_00420ea4 +420ebc 22 ? FUN_00420ebc +420ed4 19 ? FUN_00420ed4 +420ee8 10 ? FUN_00420ee8 +420ef4 21 ? FUN_00420ef4 +420f0c 21 ? FUN_00420f0c +420f24 45 ? FUN_00420f24 +420f54 21 ? FUN_00420f54 +420f6c 14 ? FUN_00420f6c +420f7c 14 ? FUN_00420f7c +420f8c 46 ? FUN_00420f8c +420fbc 46 ? FUN_00420fbc +420fec 46 ? FUN_00420fec +42101c 46 ? FUN_0042101c +42104c 36 ? FUN_0042104c +421070 36 ? FUN_00421070 +421094 11 ? FUN_00421094 +4210ac 43 ? FUN_004210ac +4210d8 58 ? FUN_004210d8 +421114 63 ? FUN_00421114 +421154 102 ? FUN_00421154 +4211bc 79 ? FUN_004211bc +42120c 161 ? FUN_0042120c +4212b0 85 ? FUN_004212b0 +421308 43 ? FUN_00421308 +421334 27 ? FUN_00421334 +4213aa 31 ? FUN_004213aa +4213c9 44 ? FUN_004213c9 +4213f5 31 ? FUN_004213f5 +421414 31 ? FUN_00421414 +421433 31 ? FUN_00421433 +421452 44 ? FUN_00421452 +421480 36 ? FUN_00421480 +4214a4 31 ? FUN_004214a4 +4214c4 44 ? FUN_004214c4 +4214f0 36 ? FUN_004214f0 +421514 31 ? FUN_00421514 +421534 44 ? FUN_00421534 +421560 36 ? FUN_00421560 +421584 44 ? FUN_00421584 +4215b0 156 ? FUN_004215b0 +42164c 10 ? FUN_0042164c +421658 1094 ? FUN_00421658 +421aa0 49 ? FUN_00421aa0 +421ad4 43 ? FUN_00421ad4 +421b00 10 ? FUN_00421b00 +421b0a 8 ? FUN_00421b0a +421b12 24 ? FUN_00421b12 +421b2c 64 ? FUN_00421b2c +421b6c 64 ? FUN_00421b6c +421bac 246 ? FUN_00421bac +421ca8 381 ? FUN_00421ca8 +421e2c 145 ? FUN_00421e2c +421ec0 54 ? FUN_00421ec0 +421ef8 99 ? FUN_00421ef8 +421f5c 31 ? FUN_00421f5c +421f7c 225 ? FUN_00421f7c +422060 345 ? FUN_00422060 +42249c 257 ? FUN_0042249c +4225a4 223 ? FUN_004225a4 +422684 294 ? FUN_00422684 +4227b0 47 ? FUN_004227b0 +4227e0 310 ? FUN_004227e0 +42291c 513 ? FUN_0042291c +422bac 6 ? FUN_00422bac +422bb2 899 ? FUN_00422bb2 +422fe0 23 ? FUN_00422fe0 +422ff8 522 ? FUN_00422ff8 +423414 81 ? FUN_00423414 +423468 87 ? FUN_00423468 +4234c0 48 ? FUN_004234c0 +4234f0 879 ? FUN_004234f0 +423864 88 ? FUN_00423864 +4238bc 808 ? FUN_004238bc +423be8 46 ? FUN_00423be8 +423c18 174 ? FUN_00423c18 +423cc8 27 ? FUN_00423cc8 +423d88 39 ? FUN_00423d88 +423daf 36 ? FUN_00423daf +423dd3 33 ? FUN_00423dd3 +423df4 33 ? FUN_00423df4 +423e18 36 ? FUN_00423e18 +423e3c 45 ? FUN_00423e3c +423e6c 106 ? FUN_00423e6c +423ed8 61 ? FUN_00423ed8 +423f18 362 ? FUN_00423f18 +424084 62 ? FUN_00424084 +4240c4 278 ? FUN_004240c4 +4241dc 67 ? FUN_004241dc +424220 35 ? FUN_00424220 +424244 67 ? FUN_00424244 +424288 162 ? FUN_00424288 +42432c 430 ? FUN_0042432c +4244dc 75 ? FUN_004244dc +424527 35 ? FUN_00424527 +42454a 44 ? FUN_0042454a +424576 47 ? FUN_00424576 +4245a5 44 ? FUN_004245a5 +4245d1 80 ? FUN_004245d1 +424621 75 ? FUN_00424621 +42466c 35 ? FUN_0042466c +42468f 44 ? FUN_0042468f +4246bb 47 ? FUN_004246bb +4246ea 44 ? FUN_004246ea +424716 37 ? FUN_00424716 +42473b 44 ? FUN_0042473b +424767 35 ? FUN_00424767 +42478a 44 ? FUN_0042478a +4247b6 47 ? FUN_004247b6 +4247e5 44 ? FUN_004247e5 +424811 31 ? FUN_00424811 +424830 31 ? FUN_00424830 +42484f 44 ? FUN_0042484f +42487b 35 ? FUN_0042487b +42489e 44 ? FUN_0042489e +4248ca 47 ? FUN_004248ca +4248f9 44 ? FUN_004248f9 +424925 31 ? FUN_00424925 +424944 31 ? FUN_00424944 +424963 31 ? FUN_00424963 +424982 44 ? FUN_00424982 +4249ae 48 ? FUN_004249ae +4249de 48 ? FUN_004249de +424a0e 48 ? FUN_00424a0e +424a3e 48 ? FUN_00424a3e +424a6e 43 ? FUN_00424a6e +424a99 44 ? FUN_00424a99 +424ac5 80 ? FUN_00424ac5 +424b15 75 ? FUN_00424b15 +424b60 198 ? FUN_00424b60 +424c28 382 ? FUN_00424c28 +424da8 141 ? FUN_00424da8 +424e38 1647 ? FUN_00424e38 +4254a8 165 ? FUN_004254a8 +425550 126 ? FUN_00425550 +4255d0 990 ? FUN_004255d0 +4259b0 3536 ? FUN_004259b0 +426780 1763 ? FUN_00426780 +426e64 1684 ? FUN_00426e64 +4274f8 273 ? FUN_004274f8 +42760c 297 ? FUN_0042760c +427738 46 ? FUN_00427738 +427768 63 ? FUN_00427768 +4277a8 299 ? FUN_004277a8 +4278d4 54 ? FUN_004278d4 +42790c 1142 ? FUN_0042790c +427d92 574 ? FUN_00427d92 +4283b8 310 ? FUN_004283b8 +428508 58 ? FUN_00428508 +428544 27 ? FUN_00428544 +428601 31 ? FUN_00428601 +428620 44 ? FUN_00428620 +42864c 44 ? FUN_0042864c +428678 514 munga/watcher.cpp FUN_00428678 +42887c 432 munga/watcher.cpp FUN_0042887c +428a2c 20 ? FUN_00428a2c +428a40 28 ? FUN_00428a40 +428a5c 28 munga/watcher.cpp FUN_00428a5c +428a78 94 ? FUN_00428a78 +428ad8 86 ? FUN_00428ad8 +428b30 20 ? FUN_00428b30 +428b44 127 munga/host.cpp FUN_00428b44 +428bc4 34 ? FUN_00428bc4 +428be8 44 ? FUN_00428be8 +428c14 34 ? FUN_00428c14 +428c38 44 ? FUN_00428c38 +428c64 34 ? FUN_00428c64 +428c88 44 ? FUN_00428c88 +428cb4 31 ? FUN_00428cb4 +428cd3 44 ? FUN_00428cd3 +428cff 31 ? FUN_00428cff +428d1e 31 ? FUN_00428d1e +428d3d 31 ? FUN_00428d3d +428d5c 44 ? FUN_00428d5c +428d88 109 ? FUN_00428d88 +428df8 112 ? FUN_00428df8 +428e68 53 ? FUN_00428e68 +428ea0 61 ? FUN_00428ea0 +428ee0 81 ? FUN_00428ee0 +428f34 93 ? FUN_00428f34 +428f94 72 ? FUN_00428f94 +428fdc 110 ? FUN_00428fdc +42904c 14 ? FUN_0042904c +42905c 25 ? FUN_0042905c +429078 96 ? FUN_00429078 +4290d8 100 ? FUN_004290d8 +42913c 41 ? FUN_0042913c +429168 74 ? FUN_00429168 +4291b4 28 munga/hostmgr.cpp FUN_004291b4 +4291d0 27 ? FUN_004291d0 +4291ec 136 ? FUN_004291ec +429274 28 munga/hostmgr.cpp FUN_00429274 +429290 28 munga/hostmgr.cpp FUN_00429290 +4292ac 34 ? FUN_004292ac +4292d0 44 ? FUN_004292d0 +4292fc 34 ? FUN_004292fc +429320 44 ? FUN_00429320 +42934c 34 ? FUN_0042934c +429370 44 ? FUN_00429370 +42939c 34 ? FUN_0042939c +4293c0 44 ? FUN_004293c0 +4293ec 34 ? FUN_004293ec +429410 44 ? FUN_00429410 +4294c1 35 ? FUN_004294c1 +4294e4 44 ? FUN_004294e4 +429510 47 ? FUN_00429510 +42953f 44 ? FUN_0042953f +42956b 31 ? FUN_0042956b +42958a 31 ? FUN_0042958a +4295a9 44 ? FUN_004295a9 +4295d5 39 ? FUN_004295d5 +4295fc 44 ? FUN_004295fc +429628 47 ? FUN_00429628 +429657 26 ? FUN_00429657 +429671 35 ? FUN_00429671 +429694 44 ? FUN_00429694 +4296c0 63 ? FUN_004296c0 +4296ff 60 ? FUN_004296ff +42973b 80 ? FUN_0042973b +42978b 75 ? FUN_0042978b +4297d6 48 ? FUN_004297d6 +429806 48 ? FUN_00429806 +429836 60 ? FUN_00429836 +429872 44 ? FUN_00429872 +42989e 80 ? FUN_0042989e +4298ee 75 ? FUN_004298ee +42995c 46 ? FUN_0042995c +42998c 40 ? FUN_0042998c +4299b4 34 ? FUN_004299b4 +4299d8 52 ? FUN_004299d8 +429a0c 144 ? FUN_00429a0c +429a9c 247 ? FUN_00429a9c +429b94 18 ? FUN_00429b94 +429ba8 65 ? FUN_00429ba8 +429bec 658 ? FUN_00429bec +429e80 26 ? FUN_00429e80 +429e9c 5 ? FUN_00429e9c +429ea4 137 ? FUN_00429ea4 +429f30 44 ? FUN_00429f30 +429f5c 46 ? FUN_00429f5c +429f8c 224 ? FUN_00429f8c +42a06c 27 ? FUN_0042a06c +42a150 369 ? FUN_0042a150 +42a2c8 108 ? FUN_0042a2c8 +42a334 44 ? FUN_0042a334 +42a360 659 ? FUN_0042a360 +42a5f4 110 ? FUN_0042a5f4 +42a664 96 ? FUN_0042a664 +42a6c4 97 ? FUN_0042a6c4 +42a728 29 ? FUN_0042a728 +42a748 130 ? FUN_0042a748 +42a7cc 90 ? FUN_0042a7cc +42a828 346 ? FUN_0042a828 +42a984 112 ? FUN_0042a984 +42a9f4 54 ? FUN_0042a9f4 +42aa2c 314 ? FUN_0042aa2c +42ab68 10 ? FUN_0042ab68 +42ab72 35 ? FUN_0042ab72 +42ab95 44 ? FUN_0042ab95 +42abc1 47 ? FUN_0042abc1 +42abf0 44 ? FUN_0042abf0 +42ac1c 31 ? FUN_0042ac1c +42ac3b 31 ? FUN_0042ac3b +42ac5a 31 ? FUN_0042ac5a +42ac79 44 ? FUN_0042ac79 +42aca5 48 ? FUN_0042aca5 +42acd8 124 ? FUN_0042acd8 +42ad54 192 ? FUN_0042ad54 +42ae14 956 munga/caminst.cpp FUN_0042ae14 +42b1d0 44 ? FUN_0042b1d0 +42b1fc 102 ? FUN_0042b1fc +42b264 66 ? FUN_0042b264 +42b2a8 255 ? FUN_0042b2a8 +42b3ac 121 ? FUN_0042b3ac +42b428 183 ? FUN_0042b428 +42b4e0 112 ? FUN_0042b4e0 +42b550 109 ? FUN_0042b550 +42b5d4 288 ? FUN_0042b5d4 +42b6f4 731 ? FUN_0042b6f4 +42b9d0 39 ? FUN_0042b9d0 +42b9f8 31 ? FUN_0042b9f8 +42ba18 35 ? FUN_0042ba18 +42ba3c 10 ? FUN_0042ba3c +42ba46 8 ? FUN_0042ba46 +42ba4e 38 ? FUN_0042ba4e +42ba74 63 ? FUN_0042ba74 +42bab4 67 ? FUN_0042bab4 +42baf8 107 ? FUN_0042baf8 +42bb64 70 ? FUN_0042bb64 +42bbac 74 ? FUN_0042bbac +42bbf8 77 ? FUN_0042bbf8 +42bc48 90 ? FUN_0042bc48 +42bca4 33 ? FUN_0042bca4 +42bcc8 68 ? FUN_0042bcc8 +42bd0c 68 ? FUN_0042bd0c +42bd50 65 ? FUN_0042bd50 +42bd94 156 ? FUN_0042bd94 +42be30 10 ? FUN_0042be30 +42be3c 252 ? FUN_0042be3c +42bf38 319 ? FUN_0042bf38 +42c078 213 ? FUN_0042c078 +42c150 170 munga/cammgr.cpp FUN_0042c150 +42c1fc 699 ? FUN_0042c1fc +42c4b7 31 ? FUN_0042c4b7 +42c4d6 44 ? FUN_0042c4d6 +42c502 31 ? FUN_0042c502 +42c521 31 ? FUN_0042c521 +42c540 31 ? FUN_0042c540 +42c55f 44 ? FUN_0042c55f +42c630 47 ? FUN_0042c630 +42c660 259 ? FUN_0042c660 +42c764 214 ? FUN_0042c764 +42c850 29 ? FUN_0042c850 +42c870 198 ? FUN_0042c870 +42ca20 35 ? FUN_0042ca20 +42ca44 56 ? FUN_0042ca44 +42ca7c 697 ? FUN_0042ca7c +42cd48 74 ? FUN_0042cd48 +42cd94 207 ? FUN_0042cd94 +42ce64 186 ? FUN_0042ce64 +42cf20 186 ? FUN_0042cf20 +42cfdc 399 ? FUN_0042cfdc +42d16c 46 ? FUN_0042d16c +42d19c 61 ? FUN_0042d19c +42d1dc 27 ? FUN_0042d1dc +42d2c0 127 ? FUN_0042d2c0 +42d340 176 ? FUN_0042d340 +42d3f0 31 ? FUN_0042d3f0 +42d410 31 ? FUN_0042d410 +42d430 31 ? FUN_0042d430 +42d450 31 ? FUN_0042d450 +42d470 36 ? FUN_0042d470 +42d494 99 ? FUN_0042d494 +42d4f8 44 ? FUN_0042d4f8 +42d524 27 ? FUN_0042d524 +42d600 149 ? FUN_0042d600 +42d698 208 ? FUN_0042d698 +42d768 46 ? FUN_0042d768 +42d798 55 ? FUN_0042d798 +42d7d0 44 ? FUN_0042d7d0 +42d7fc 249 ? FUN_0042d7fc +42d8f8 27 ? FUN_0042d8f8 +42d990 47 ? FUN_0042d990 +42d9c0 32 ? FUN_0042d9c0 +42d9e0 37 ? FUN_0042d9e0 +42da08 23 ? FUN_0042da08 +42da20 42 ? FUN_0042da20 +42da4c 28 munga/player.cpp FUN_0042da4c +42da68 279 ? FUN_0042da68 +42db80 580 ? FUN_0042db80 +42df8c 336 ? FUN_0042df8c +42e100 101 ? FUN_0042e100 +42e168 68 ? FUN_0042e168 +42e1ac 256 ? FUN_0042e1ac +42e2ac 55 ? FUN_0042e2ac +42e2e4 65 ? FUN_0042e2e4 +42e328 458 ? FUN_0042e328 +42e4f4 46 ? FUN_0042e4f4 +42e524 89 ? FUN_0042e524 +42e580 31 ? FUN_0042e580 +42e5a0 144 ? FUN_0042e5a0 +42e718 31 ? FUN_0042e718 +42e737 44 ? FUN_0042e737 +42e763 35 ? FUN_0042e763 +42e786 44 ? FUN_0042e786 +42e7b2 49 ? FUN_0042e7b2 +42e7e3 46 ? FUN_0042e7e3 +42e811 80 ? FUN_0042e811 +42e861 75 ? FUN_0042e861 +42e8ac 31 ? FUN_0042e8ac +42e8cb 31 ? FUN_0042e8cb +42e8ea 31 ? FUN_0042e8ea +42e909 44 ? FUN_0042e909 +42e935 31 ? FUN_0042e935 +42e954 31 ? FUN_0042e954 +42e973 31 ? FUN_0042e973 +42e992 44 ? FUN_0042e992 +42e9be 48 ? FUN_0042e9be +42e9ee 38 ? FUN_0042e9ee +42ea14 43 ? FUN_0042ea14 +42ea3f 44 ? FUN_0042ea3f +42ea6b 80 ? FUN_0042ea6b +42eabb 75 ? FUN_0042eabb +42eb38 243 ? FUN_0042eb38 +42ec3a 297 ? FUN_0042ec3a +42ed68 352 ? FUN_0042ed68 +42eec8 169 ? FUN_0042eec8 +42ef74 46 ? FUN_0042ef74 +42efa4 61 ? FUN_0042efa4 +42efe4 127 ? FUN_0042efe4 +42f064 27 ? FUN_0042f064 +42f121 31 ? FUN_0042f121 +42f140 44 ? FUN_0042f140 +42f16c 396 ? FUN_0042f16c +42f2f8 46 ? FUN_0042f2f8 +42f328 100 ? FUN_0042f328 +42f38c 114 ? FUN_0042f38c +42f9bc 27 ? FUN_0042f9bc +42fa79 8 ? FUN_0042fa79 +42fa81 8 ? FUN_0042fa81 +42fa8c 65 ? FUN_0042fa8c +42fad0 1712 ? FUN_0042fad0 +430180 362 ? FUN_00430180 +4302ec 83 ? FUN_004302ec +430340 44 ? FUN_00430340 +43036c 27 ? FUN_0043036c +430388 323 munga/explode.cpp FUN_00430388 +4304cc 29 ? FUN_004304cc +4304ec 173 ? FUN_004304ec +43059c 106 ? FUN_0043059c +430608 560 ? FUN_00430608 +430838 20 ? FUN_00430838 +43084c 43 ? FUN_0043084c +430878 87 ? FUN_00430878 +43094a 35 ? FUN_0043094a +43096d 44 ? FUN_0043096d +430999 115 ? FUN_00430999 +430a0c 112 ? FUN_00430a0c +430a7c 80 ? FUN_00430a7c +430acc 75 ? FUN_00430acc +430b17 31 ? FUN_00430b17 +430b36 31 ? FUN_00430b36 +430b55 31 ? FUN_00430b55 +430b74 44 ? FUN_00430b74 +430ba0 48 ? FUN_00430ba0 +430bd0 55 ? FUN_00430bd0 +430c07 44 ? FUN_00430c07 +430c33 80 ? FUN_00430c33 +430c83 75 ? FUN_00430c83 +430cd0 265 ? FUN_00430cd0 +430ddc 117 ? FUN_00430ddc +430e54 46 ? FUN_00430e54 +430e84 80 ? FUN_00430e84 +430ed4 27 ? FUN_00430ed4 +430ef0 256 ? FUN_00430ef0 +430ff0 55 ? FUN_00430ff0 +431028 46 ? FUN_00431028 +431058 80 ? FUN_00431058 +4310a8 27 ? FUN_004310a8 +431200 548 ? FUN_00431200 +431428 147 ? FUN_00431428 +4314bc 366 ? FUN_004314bc +43162c 43 ? FUN_0043162c +431658 61 ? FUN_00431658 +431698 46 ? FUN_00431698 +4316c8 44 ? FUN_004316c8 +4316f4 672 ? FUN_004316f4 +431998 6 ? FUN_00431998 +43199e 581 ? FUN_0043199e +431be4 265 ? FUN_00431be4 +431cf0 27 ? FUN_00431cf0 +431d0c 787 ? FUN_00431d0c +432020 44 ? FUN_00432020 +43204c 321 ? FUN_0043204c +432190 46 ? FUN_00432190 +4321c0 98 ? FUN_004321c0 +432224 27 ? FUN_00432224 +4323a8 31 ? FUN_004323a8 +4323c7 31 ? FUN_004323c7 +4323e6 31 ? FUN_004323e6 +432405 44 ? FUN_00432405 +432450 264 ? FUN_00432450 +432558 46 ? FUN_00432558 +432588 55 ? FUN_00432588 +4325c0 44 ? FUN_004325c0 +4325ec 779 ? FUN_004325ec +4329d4 46 ? FUN_004329d4 +432a04 503 ? FUN_00432a04 +432c18 272 ? FUN_00432c18 +432d2c 520 ? FUN_00432d2c +432f34 114 ? FUN_00432f34 +432fa8 400 ? FUN_00432fa8 +433138 27 ? FUN_00433138 +433220 42 ? FUN_00433220 +43324c 44 ? FUN_0043324c +433278 27 ? FUN_00433278 +433294 40 ? FUN_00433294 +4332bc 30 munga/registry.cpp FUN_004332bc +4332dc 30 munga/registry.cpp FUN_004332dc +4332fc 179 ? FUN_004332fc +4333b0 520 ? FUN_004333b0 +4335b8 53 ? FUN_004335b8 +4335f0 89 ? FUN_004335f0 +43364c 136 ? FUN_0043364c +4336d4 27 ? FUN_004336d4 +4336f0 105 ? FUN_004336f0 +43375c 31 ? FUN_0043375c +43377c 25 ? FUN_0043377c +433798 44 ? FUN_00433798 +4337c4 20 ? FUN_004337c4 +4337d8 62 ? FUN_004337d8 +433818 33 ? FUN_00433818 +43383c 54 ? FUN_0043383c +433874 33 ? FUN_00433874 +433920 46 ? FUN_00433920 +433950 58 ? FUN_00433950 +43398c 95 ? FUN_0043398c +4339ec 44 ? FUN_004339ec +433a18 20 ? FUN_00433a18 +433a2c 60 ? FUN_00433a2c +433a68 172 ? FUN_00433a68 +433b14 39 ? FUN_00433b14 +433b3c 59 ? FUN_00433b3c +433b78 67 ? FUN_00433b78 +433bbc 20 ? FUN_00433bbc +433bd0 29 ? FUN_00433bd0 +433bf0 44 ? FUN_00433bf0 +433c1c 39 ? FUN_00433c1c +433c44 89 ? FUN_00433c44 +433ca0 20 ? FUN_00433ca0 +433cb4 515 ? FUN_00433cb4 +433eb8 27 ? FUN_00433eb8 +433ed4 18 ? FUN_00433ed4 +433ee8 635 ? FUN_00433ee8 +434163 32 ? FUN_00434163 +434183 36 ? FUN_00434183 +4341a7 45 ? FUN_004341a7 +4341d4 31 ? FUN_004341d4 +4341f3 44 ? FUN_004341f3 +434220 61 ? FUN_00434220 +434260 89 ? FUN_00434260 +4342bc 20 ? FUN_004342bc +4342d0 63 ? FUN_004342d0 +434310 28 munga/intorgn.cpp FUN_00434310 +43432c 28 munga/intorgn.cpp FUN_0043432c +434348 28 munga/intorgn.cpp FUN_00434348 +434364 31 ? FUN_00434364 +434383 44 ? FUN_00434383 +4343b0 49 ? FUN_004343b0 +4343e4 58 ? FUN_004343e4 +434420 20 ? FUN_00434420 +434434 109 ? FUN_00434434 +4344a4 63 ? FUN_004344a4 +4344e4 71 ? FUN_004344e4 +43452c 34 ? FUN_0043452c +434550 44 ? FUN_00434550 +43457c 65 ? FUN_0043457c +4345c0 93 ? FUN_004345c0 +434620 40 ? FUN_00434620 +434648 31 ? FUN_00434648 +434668 323 ? FUN_00434668 +4347ac 566 munga/interest.cpp FUN_004347ac +4349e4 36 ? FUN_004349e4 +434a08 5 ? FUN_00434a08 +434a10 54 ? FUN_00434a10 +434a48 21 ? FUN_00434a48 +434a60 181 munga/interest.cpp FUN_00434a60 +434b18 52 ? FUN_00434b18 +434b4c 146 ? FUN_00434b4c +434be0 159 ? FUN_00434be0 +434c80 91 ? FUN_00434c80 +434cdc 146 ? FUN_00434cdc +434d70 66 ? FUN_00434d70 +434db4 5 ? FUN_00434db4 +434dbc 28 munga/interest.cpp FUN_00434dbc +434dd8 28 munga/interest.cpp FUN_00434dd8 +434df4 5 ? FUN_00434df4 +434dfc 5 ? FUN_00434dfc +434e04 86 ? FUN_00434e04 +434e5c 66 ? FUN_00434e5c +434ea0 169 ? FUN_00434ea0 +434f4c 89 ? FUN_00434f4c +434fa8 28 munga/interest.cpp FUN_00434fa8 +434fc4 28 munga/interest.cpp FUN_00434fc4 +434fe0 79 ? FUN_00434fe0 +435030 79 ? FUN_00435030 +435080 81 ? FUN_00435080 +4350d4 73 ? FUN_004350d4 +435120 148 munga/interest.cpp FUN_00435120 +4351b4 70 ? FUN_004351b4 +4351fc 50 ? FUN_004351fc +435230 15 ? FUN_00435230 +435240 28 ? FUN_00435240 +43525c 27 ? FUN_0043525c +435278 63 ? FUN_00435278 +4352b8 28 ? FUN_004352b8 +4352d4 28 ? FUN_004352d4 +435375 31 ? FUN_00435375 +435394 44 ? FUN_00435394 +4353c0 31 ? FUN_004353c0 +4353df 31 ? FUN_004353df +4353fe 31 ? FUN_004353fe +43541d 44 ? FUN_0043541d +43544c 44 ? FUN_0043544c +435478 61 ? FUN_00435478 +4354b8 58 ? FUN_004354b8 +4354f4 20 ? FUN_004354f4 +435508 58 ? FUN_00435508 +435544 120 ? FUN_00435544 +4355bc 41 ? FUN_004355bc +4355e8 44 ? FUN_004355e8 +435614 31 ? FUN_00435614 +435633 44 ? FUN_00435633 +435660 60 ? FUN_00435660 +43569c 53 ? FUN_0043569c +4356d4 43 ? FUN_004356d4 +435700 128 ? FUN_00435700 +435780 20 ? FUN_00435780 +435794 6 ? FUN_00435794 +43579a 331 ? FUN_0043579a +4358e8 146 ? FUN_004358e8 +4359a8 31 ? FUN_004359a8 +4359c7 44 ? FUN_004359c7 +4359f3 31 ? FUN_004359f3 +435a12 31 ? FUN_00435a12 +435a31 31 ? FUN_00435a31 +435a50 44 ? FUN_00435a50 +435a7c 63 ? FUN_00435a7c +435abc 10 ? FUN_00435abc +435ac8 151 ? FUN_00435ac8 +435b64 65 ? FUN_00435b64 +435ba8 58 ? FUN_00435ba8 +435be4 20 ? FUN_00435be4 +435bf8 75 ? FUN_00435bf8 +435c44 78 ? FUN_00435c44 +435c94 76 ? FUN_00435c94 +435ce0 34 ? FUN_00435ce0 +435d04 44 ? FUN_00435d04 +435d30 188 ? FUN_00435d30 +435df8 79 ? FUN_00435df8 +435e48 40 ? FUN_00435e48 +435e70 114 ? FUN_00435e70 +435ee4 70 ? FUN_00435ee4 +435f2c 62 ? FUN_00435f2c +435f6c 47 ? FUN_00435f6c +435f9c 15 ? FUN_00435f9c +435fac 67 ? FUN_00435fac +435ff0 236 ? FUN_00435ff0 +43610c 24 ? FUN_0043610c +436124 132 ? FUN_00436124 +4361a8 38 ? FUN_004361a8 +4361d0 52 ? FUN_004361d0 +436204 48 ? FUN_00436204 +436234 28 munga/renderer.cpp FUN_00436234 +436250 28 munga/renderer.cpp FUN_00436250 +43626c 28 munga/renderer.cpp FUN_0043626c +436288 56 ? FUN_00436288 +4362c0 58 ? FUN_004362c0 +4362fc 20 ? FUN_004362fc +436310 25 ? FUN_00436310 +43632c 59 ? FUN_0043632c +436368 132 ? FUN_00436368 +4363ec 82 ? FUN_004363ec +436440 91 ? FUN_00436440 +43649c 71 ? FUN_0043649c +4364e4 95 ? FUN_004364e4 +436544 62 ? FUN_00436544 +436584 41 ? FUN_00436584 +4365b0 34 ? FUN_004365b0 +4365d4 60 ? FUN_004365d4 +436610 41 ? FUN_00436610 +43663c 41 ? FUN_0043663c +436668 29 ? FUN_00436668 +436688 47 ? FUN_00436688 +4366b8 41 ? FUN_004366b8 +436769 31 ? FUN_00436769 +436788 44 ? FUN_00436788 +4367b4 31 ? FUN_004367b4 +4367d3 44 ? FUN_004367d3 +4367ff 31 ? FUN_004367ff +43681e 31 ? FUN_0043681e +43683d 31 ? FUN_0043683d +43685c 44 ? FUN_0043685c +436888 7 ? FUN_00436888 +43688f 10 ? FUN_0043688f +436899 5 ? FUN_00436899 +43689e 5 ? FUN_0043689e +4368a3 5 ? FUN_004368a3 +4368a8 5 ? FUN_004368a8 +4368ad 5 ? FUN_004368ad +4368b2 5 ? FUN_004368b2 +4368b8 57 ? FUN_004368b8 +4368f4 44 ? FUN_004368f4 +436920 125 ? FUN_00436920 +4369a0 159 ? FUN_004369a0 +436a40 5 ? FUN_00436a40 +436a48 150 ? FUN_00436a48 +436ae0 5 ? FUN_00436ae0 +436ae8 5 ? FUN_00436ae8 +436af0 5 ? FUN_00436af0 +436af8 5 ? FUN_00436af8 +436b00 27 ? FUN_00436b00 +436b1c 128 ? FUN_00436b1c +436b9c 47 ? FUN_00436b9c +436bcc 10 ? FUN_00436bcc +436bd8 47 ? FUN_00436bd8 +436c08 46 ? FUN_00436c08 +436c38 11 ? FUN_00436c38 +436c44 14 ? FUN_00436c44 +436c54 86 ? FUN_00436c54 +436cac 20 ? FUN_00436cac +436cc0 26 ? FUN_00436cc0 +436cdc 26 ? FUN_00436cdc +436cf8 20 ? FUN_00436cf8 +436d0c 5 ? FUN_00436d0c +436d14 56 ? FUN_00436d14 +436d4c 58 ? FUN_00436d4c +436d88 40 ? FUN_00436d88 +436db0 99 ? FUN_00436db0 +436e14 15 ? FUN_00436e14 +436e24 28 munga/audio.cpp FUN_00436e24 +436e40 72 ? FUN_00436e40 +436e88 27 ? FUN_00436e88 +436ea4 40 ? FUN_00436ea4 +436f51 31 ? FUN_00436f51 +436f70 44 ? FUN_00436f70 +436f9c 31 ? FUN_00436f9c +436fbb 31 ? FUN_00436fbb +436fda 31 ? FUN_00436fda +436ff9 44 ? FUN_00436ff9 +437025 31 ? FUN_00437025 +437044 31 ? FUN_00437044 +437063 31 ? FUN_00437063 +437082 44 ? FUN_00437082 +4370b0 164 ? FUN_004370b0 +437154 61 ? FUN_00437154 +437194 51 ? FUN_00437194 +4371c8 46 ? FUN_004371c8 +4371f8 111 ? FUN_004371f8 +437268 248 ? FUN_00437268 +4373e8 25 ? FUN_004373e8 +437404 30 ? FUN_00437404 +437428 19 ? FUN_00437428 +43744c 114 ? FUN_0043744c +4374c4 433 munga/audlvl.cpp FUN_004374c4 +437678 44 ? FUN_00437678 +4376a4 20 ? FUN_004376a4 +4376b8 185 ? FUN_004376b8 +437774 498 ? FUN_00437774 +437968 58 ? FUN_00437968 +4379a4 20 ? FUN_004379a4 +4379b8 103 ? FUN_004379b8 +437a20 117 ? FUN_00437a20 +437a98 260 ? FUN_00437a98 +437b9c 58 ? FUN_00437b9c +437bd8 20 ? FUN_00437bd8 +437bec 29 ? FUN_00437bec +437c0c 64 ? FUN_00437c0c +437c4c 56 ? FUN_00437c4c +437c84 35 ? FUN_00437c84 +437ca7 44 ? FUN_00437ca7 +437cd3 49 ? FUN_00437cd3 +437d04 46 ? FUN_00437d04 +437d32 35 ? FUN_00437d32 +437d55 44 ? FUN_00437d55 +437d81 47 ? FUN_00437d81 +437db0 44 ? FUN_00437db0 +437ddc 47 ? FUN_00437ddc +437e0b 31 ? FUN_00437e0b +437e2a 31 ? FUN_00437e2a +437e49 44 ? FUN_00437e49 +437e75 47 ? FUN_00437e75 +437ea4 31 ? FUN_00437ea4 +437ec3 31 ? FUN_00437ec3 +437ee2 44 ? FUN_00437ee2 +437f0e 48 ? FUN_00437f0e +437f3e 48 ? FUN_00437f3e +437f6e 43 ? FUN_00437f6e +437f99 44 ? FUN_00437f99 +437fc5 80 ? FUN_00437fc5 +438015 75 ? FUN_00438015 +438060 149 ? FUN_00438060 +4380f8 44 ? FUN_004380f8 +438124 83 ? FUN_00438124 +438178 20 ? FUN_00438178 +43818c 436 munga/audloc.cpp FUN_0043818c +438340 5 ? FUN_00438340 +438348 106 ? FUN_00438348 +4383b4 946 ? FUN_004383b4 +438774 140 ? FUN_00438774 +438808 499 munga/audcmp.cpp FUN_00438808 +4389fc 75 ? FUN_004389fc +438a48 697 munga/audcmp.cpp FUN_00438a48 +438d04 27 ? FUN_00438d04 +438d20 53 ? FUN_00438d20 +438d58 5 ? FUN_00438d58 +438d60 35 ? FUN_00438d60 +438d84 44 ? FUN_00438d84 +438db0 21 ? FUN_00438db0 +438dc8 44 ? FUN_00438dc8 +438df4 122 ? FUN_00438df4 +438e70 380 munga/audcmp.cpp FUN_00438e70 +438fec 5 ? FUN_00438fec +438ff4 158 ? FUN_00438ff4 +439094 58 ? FUN_00439094 +4390d0 356 munga/audcmp.cpp FUN_004390d0 +439234 20 ? FUN_00439234 +439248 82 ? FUN_00439248 +43929c 58 ? FUN_0043929c +4392d8 150 ? FUN_004392d8 +439370 513 munga/audcmp.cpp FUN_00439370 +439574 103 ? FUN_00439574 +4395dc 20 ? FUN_004395dc +4395f0 95 ? FUN_004395f0 +439650 58 ? FUN_00439650 +43968c 150 ? FUN_0043968c +439724 513 munga/audcmp.cpp FUN_00439724 +439928 105 ? FUN_00439928 +439994 20 ? FUN_00439994 +4399a8 97 ? FUN_004399a8 +439a0c 72 ? FUN_00439a0c +439a54 170 ? FUN_00439a54 +439b00 447 munga/audcmp.cpp FUN_00439b00 +439cc0 66 ? FUN_00439cc0 +439d04 20 ? FUN_00439d04 +439d18 77 ? FUN_00439d18 +439d68 58 ? FUN_00439d68 +439da4 186 ? FUN_00439da4 +439e60 720 munga/audcmp.cpp FUN_00439e60 +43a130 90 ? FUN_0043a130 +43a18c 20 ? FUN_0043a18c +43a1a0 157 ? FUN_0043a1a0 +43a248 218 ? FUN_0043a248 +43a324 516 munga/audcmp.cpp FUN_0043a324 +43a528 113 ? FUN_0043a528 +43a59c 58 ? FUN_0043a59c +43a5d8 54 ? FUN_0043a5d8 +43a610 21 ? FUN_0043a610 +43a628 99 ? FUN_0043a628 +43a68c 228 ? FUN_0043a68c +43a770 912 munga/audcmp.cpp FUN_0043a770 +43ab00 136 ? FUN_0043ab00 +43ab88 58 ? FUN_0043ab88 +43abc4 24 ? FUN_0043abc4 +43abdc 21 ? FUN_0043abdc +43abf4 169 ? FUN_0043abf4 +43acac 31 ? FUN_0043acac +43accb 44 ? FUN_0043accb +43acf7 31 ? FUN_0043acf7 +43ad16 44 ? FUN_0043ad16 +43ad42 13 ? FUN_0043ad42 +43ad4f 33 ? FUN_0043ad4f +43ad70 69 ? FUN_0043ad70 +43adb5 37 ? FUN_0043adb5 +43adda 10 ? FUN_0043adda +43ade4 39 ? FUN_0043ade4 +43ae0b 60 ? FUN_0043ae0b +43ae47 141 ? FUN_0043ae47 +43aed4 198 ? FUN_0043aed4 +43afbc 47 ? FUN_0043afbc +43afeb 31 ? FUN_0043afeb +43b00a 31 ? FUN_0043b00a +43b029 31 ? FUN_0043b029 +43b048 44 ? FUN_0043b048 +43b074 47 ? FUN_0043b074 +43b0a3 47 ? FUN_0043b0a3 +43b0d2 10 ? FUN_0043b0d2 +43b0dc 89 ? FUN_0043b0dc +43b138 25 ? FUN_0043b138 +43b154 28 ? FUN_0043b154 +43b170 184 ? FUN_0043b170 +43b22c 336 ? FUN_0043b22c +43b37c 1385 munga/audsrc.cpp FUN_0043b37c +43b8e8 175 ? FUN_0043b8e8 +43b998 72 ? FUN_0043b998 +43b9e0 20 ? FUN_0043b9e0 +43b9f4 14 ? FUN_0043b9f4 +43ba04 94 ? FUN_0043ba04 +43ba64 171 ? FUN_0043ba64 +43bb14 90 ? FUN_0043bb14 +43bb70 78 ? FUN_0043bb70 +43bbc0 304 munga/audsrc.cpp FUN_0043bbc0 +43bd20 230 ? FUN_0043bd20 +43be08 21 ? FUN_0043be08 +43be20 79 ? FUN_0043be20 +43be70 17 ? FUN_0043be70 +43be84 79 ? FUN_0043be84 +43bed4 76 ? FUN_0043bed4 +43bf20 76 ? FUN_0043bf20 +43bf6c 22 ? FUN_0043bf6c +43bf84 32 ? FUN_0043bf84 +43bfa4 30 ? FUN_0043bfa4 +43bfc4 28 munga/audsrc.cpp FUN_0043bfc4 +43bfe0 49 ? FUN_0043bfe0 +43c014 27 ? FUN_0043c014 +43c030 102 ? FUN_0043c030 +43c11d 47 ? FUN_0043c11d +43c14c 20 ? FUN_0043c14c +43c160 5 ? FUN_0043c160 +43c165 5 ? FUN_0043c165 +43c16a 5 ? FUN_0043c16a +43c170 68 ? FUN_0043c170 +43c1b4 63 ? FUN_0043c1b4 +43c1f4 20 ? FUN_0043c1f4 +43c208 11 ? FUN_0043c208 +43c214 41 ? FUN_0043c214 +43c240 232 ? FUN_0043c240 +43c328 46 ? FUN_0043c328 +43c358 108 ? FUN_0043c358 +43c3c4 574 ? FUN_0043c3c4 +43c604 50 ? FUN_0043c604 +43c638 319 ? FUN_0043c638 +43c778 35 ? FUN_0043c778 +43c79c 218 ? FUN_0043c79c +43c878 53 ? FUN_0043c878 +43c8b0 59 ? FUN_0043c8b0 +43c8ec 28 ? FUN_0043c8ec +43c908 69 ? FUN_0043c908 +43c950 39 ? FUN_0043c950 +43c978 21 ? FUN_0043c978 +43c990 14 ? FUN_0043c990 +43c9a0 11 ? FUN_0043c9a0 +43c9ac 12 ? FUN_0043c9ac +43c9b8 47 ? FUN_0043c9b8 +43c9e8 96 ? FUN_0043c9e8 +43ca48 30 munga/audmidi.cpp FUN_0043ca48 +43ca68 28 munga/audmidi.cpp FUN_0043ca68 +43ca84 5 ? FUN_0043ca84 +43ca89 5 ? FUN_0043ca89 +43ca8e 5 ? FUN_0043ca8e +43ca93 5 ? FUN_0043ca93 +43ca98 5 ? FUN_0043ca98 +43ca9d 5 ? FUN_0043ca9d +43caa2 5 ? FUN_0043caa2 +43caa7 5 ? FUN_0043caa7 +43caac 5 ? FUN_0043caac +43cab1 5 ? FUN_0043cab1 +43cab6 5 ? FUN_0043cab6 +43cabb 5 ? FUN_0043cabb +43cac0 5 ? FUN_0043cac0 +43cac5 5 ? FUN_0043cac5 +43caca 5 ? FUN_0043caca +43cacf 5 ? FUN_0043cacf +43cad4 5 ? FUN_0043cad4 +43cad9 5 ? FUN_0043cad9 +43cade 5 ? FUN_0043cade +43cae3 5 ? FUN_0043cae3 +43cae8 5 ? FUN_0043cae8 +43caf0 47 ? FUN_0043caf0 +43cb20 44 ? FUN_0043cb20 +43cb4c 44 ? FUN_0043cb4c +43cb78 20 ? FUN_0043cb78 +43cb8c 27 ? FUN_0043cb8c +43cba8 45 ? FUN_0043cba8 +43cbd8 68 ? FUN_0043cbd8 +43cc1c 68 ? FUN_0043cc1c +43cc60 139 ? FUN_0043cc60 +43ccec 294 ? FUN_0043ccec +43ce14 99 ? FUN_0043ce14 +43ce78 127 ? FUN_0043ce78 +43cef8 869 munga/audseq.cpp FUN_0043cef8 +43d260 27 ? FUN_0043d260 +43d27c 87 ? FUN_0043d27c +43d2d4 88 ? FUN_0043d2d4 +43d32c 118 ? FUN_0043d32c +43d3a4 72 ? FUN_0043d3a4 +43d3ec 86 ? FUN_0043d3ec +43d444 38 ? FUN_0043d444 +43d478 65 ? FUN_0043d478 +43d4bc 106 ? FUN_0043d4bc +43d528 20 ? FUN_0043d528 +43d53c 104 ? FUN_0043d53c +43d5a4 56 ? FUN_0043d5a4 +43d5dc 33 ? FUN_0043d5dc +43d600 27 munga/audseq.cpp FUN_0043d600 +43d61c 15 ? FUN_0043d61c +43d62c 247 ? FUN_0043d62c +43d7bc 5 ? FUN_0043d7bc +43d7c1 31 ? FUN_0043d7c1 +43d7e0 44 ? FUN_0043d7e0 +43d80c 31 ? FUN_0043d80c +43d82b 31 ? FUN_0043d82b +43d84a 31 ? FUN_0043d84a +43d869 44 ? FUN_0043d869 +43d895 35 ? FUN_0043d895 +43d8b8 44 ? FUN_0043d8b8 +43d8e4 47 ? FUN_0043d8e4 +43d913 44 ? FUN_0043d913 +43d93f 80 ? FUN_0043d93f +43d98f 75 ? FUN_0043d98f +43d9da 31 ? FUN_0043d9da +43d9f9 31 ? FUN_0043d9f9 +43da18 31 ? FUN_0043da18 +43da37 44 ? FUN_0043da37 +43da63 48 ? FUN_0043da63 +43da93 43 ? FUN_0043da93 +43dabe 44 ? FUN_0043dabe +43daea 80 ? FUN_0043daea +43db3a 75 ? FUN_0043db3a +43db88 83 ? FUN_0043db88 +43dbdc 54 ? FUN_0043dbdc +43dc14 58 ? FUN_0043dc14 +43dc50 111 ? FUN_0043dc50 +43dcc0 20 ? FUN_0043dcc0 +43dcd4 48 ? FUN_0043dcd4 +43dd04 31 ? FUN_0043dd04 +43dd24 78 ? FUN_0043dd24 +43dd74 44 ? FUN_0043dd74 +43dda0 306 munga/audwthr.cpp FUN_0043dda0 +43ded4 244 munga/audwthr.cpp FUN_0043ded4 +43e004 78 ? FUN_0043e004 +43e054 44 ? FUN_0043e054 +43e080 306 munga/audwthr.cpp FUN_0043e080 +43e1b4 244 munga/audwthr.cpp FUN_0043e1b4 +43e2e4 42 ? FUN_0043e2e4 +43e310 44 ? FUN_0043e310 +43e33c 11 ? FUN_0043e33c +43e348 5 ? FUN_0043e348 +43e350 42 ? FUN_0043e350 +43e37c 44 ? FUN_0043e37c +43e3a8 29 ? FUN_0043e3a8 +43e3c8 10 ? FUN_0043e3c8 +43e3d4 42 ? FUN_0043e3d4 +43e400 44 ? FUN_0043e400 +43e42c 29 ? FUN_0043e42c +43e44c 42 ? FUN_0043e44c +43e478 44 ? FUN_0043e478 +43e4a4 10 ? FUN_0043e4a4 +43e4b0 42 ? FUN_0043e4b0 +43e4dc 44 ? FUN_0043e4dc +43e508 29 ? FUN_0043e508 +43e528 10 ? FUN_0043e528 +43e534 42 ? FUN_0043e534 +43e560 44 ? FUN_0043e560 +43e58c 29 ? FUN_0043e58c +43e5ac 10 ? FUN_0043e5ac +43e5b8 42 ? FUN_0043e5b8 +43e5e4 44 ? FUN_0043e5e4 +43e610 29 ? FUN_0043e610 +43e630 42 ? FUN_0043e630 +43e65c 44 ? FUN_0043e65c +43e688 29 ? FUN_0043e688 +43e6a8 10 ? FUN_0043e6a8 +43e6b4 42 ? FUN_0043e6b4 +43e6e0 44 ? FUN_0043e6e0 +43e70c 29 ? FUN_0043e70c +43e72c 10 ? FUN_0043e72c +43e738 56 ? FUN_0043e738 +43e770 44 ? FUN_0043e770 +43e79c 28 ? FUN_0043e79c +43e7b8 28 munga/audwthr.cpp FUN_0043e7b8 +43e7d4 164 ? FUN_0043e7d4 +43e878 44 ? FUN_0043e878 +43e8a4 668 munga/audwthr.cpp FUN_0043e8a4 +43eb40 144 ? FUN_0043eb40 +43ebd0 171 ? FUN_0043ebd0 +43ec7b 44 ? FUN_0043ec7b +43eca7 838 munga/audwthr.hpp FUN_0043eca7 +43efed 173 ? FUN_0043efed +43f09a 34 munga/audwthr.hpp FUN_0043f09a +43f0c2 81 ? FUN_0043f0c2 +43f113 58 ? FUN_0043f113 +43f14d 111 ? FUN_0043f14d +43f1bc 20 ? FUN_0043f1bc +43f1d0 48 ? FUN_0043f1d0 +43f200 44 ? FUN_0043f200 +43f22c 66 ? FUN_0043f22c +43f26e 168 munga/watcher.hpp FUN_0043f26e +43f316 15 ? FUN_0043f316 +43f325 37 ? FUN_0043f325 +43f34a 24 ? FUN_0043f34a +43f362 37 ? FUN_0043f362 +43f387 5 ? FUN_0043f387 +43f38c 165 ? FUN_0043f38c +43f431 44 ? FUN_0043f431 +43f45d 838 munga/audwthr.hpp FUN_0043f45d +43f7a3 220 ? FUN_0043f7a3 +43f8ab 165 ? FUN_0043f8ab +43f950 44 ? FUN_0043f950 +43f97c 838 munga/audwthr.hpp FUN_0043f97c +43fcc2 220 ? FUN_0043fcc2 +43fdca 81 ? FUN_0043fdca +43fe1b 58 ? FUN_0043fe1b +43fe55 111 ? FUN_0043fe55 +43fec4 20 ? FUN_0043fec4 +43fed8 48 ? FUN_0043fed8 +43ff08 44 ? FUN_0043ff08 +43ff34 63 ? FUN_0043ff34 +43ff73 168 munga/watcher.hpp FUN_0043ff73 +44001b 15 ? FUN_0044001b +44002a 44 ? FUN_0044002a +440056 28 ? FUN_00440056 +440072 37 ? FUN_00440072 +440097 5 ? FUN_00440097 +44009c 171 ? FUN_0044009c +440147 44 ? FUN_00440147 +440173 838 munga/audwthr.hpp FUN_00440173 +4404b9 173 ? FUN_004404b9 +440566 34 munga/audwthr.hpp FUN_00440566 +44058e 81 ? FUN_0044058e +4405df 58 ? FUN_004405df +440619 111 ? FUN_00440619 +440688 20 ? FUN_00440688 +44069c 48 ? FUN_0044069c +4406cc 44 ? FUN_004406cc +4406f8 63 ? FUN_004406f8 +440737 168 munga/watcher.hpp FUN_00440737 +4407df 15 ? FUN_004407df +4407ee 28 ? FUN_004407ee +44080a 16 ? FUN_0044080a +44081a 37 ? FUN_0044081a +44083f 5 ? FUN_0044083f +440844 121 ? FUN_00440844 +4408bd 44 ? FUN_004408bd +4408e9 375 munga/audwthr.hpp FUN_004408e9 +440a60 86 ? FUN_00440a60 +440abc 165 ? FUN_00440abc +440b61 44 ? FUN_00440b61 +440b8d 838 munga/audwthr.hpp FUN_00440b8d +440ed3 220 ? FUN_00440ed3 +440fdb 115 ? FUN_00440fdb +44104e 44 ? FUN_0044104e +44107a 439 munga/audwthr.hpp FUN_0044107a +441231 56 ? FUN_00441231 +441269 30 munga/audwthr.hpp FUN_00441269 +441287 81 ? FUN_00441287 +4412d8 58 ? FUN_004412d8 +441312 111 ? FUN_00441312 +441381 20 ? FUN_00441381 +441395 48 ? FUN_00441395 +4413c5 44 ? FUN_004413c5 +4413f1 63 ? FUN_004413f1 +441430 168 munga/watcher.hpp FUN_00441430 +4414d8 15 ? FUN_004414d8 +4414e7 27 ? FUN_004414e7 +441502 16 ? FUN_00441502 +441512 37 ? FUN_00441512 +441537 5 ? FUN_00441537 +44153c 121 ? FUN_0044153c +4415b5 44 ? FUN_004415b5 +4415e1 373 munga/audwthr.hpp FUN_004415e1 +441756 68 ? FUN_00441756 +44179a 171 ? FUN_0044179a +441845 44 ? FUN_00441845 +441871 838 munga/audwthr.hpp FUN_00441871 +441bb7 173 ? FUN_00441bb7 +441c64 34 munga/audwthr.hpp FUN_00441c64 +441c8c 81 ? FUN_00441c8c +441cdd 58 ? FUN_00441cdd +441d17 111 ? FUN_00441d17 +441d86 20 ? FUN_00441d86 +441d9a 48 ? FUN_00441d9a +441dca 58 ? FUN_00441dca +441e04 73 ? FUN_00441e04 +441e4d 168 munga/watcher.hpp FUN_00441e4d +441ef5 15 ? FUN_00441ef5 +441f04 37 ? FUN_00441f04 +441f29 24 ? FUN_00441f29 +441f41 37 ? FUN_00441f41 +441f66 5 ? FUN_00441f66 +441f6c 70 ? FUN_00441f6c +441fb4 72 ? FUN_00441fb4 +441ffc 20 ? FUN_00441ffc +442010 27 ? FUN_00442010 +44202c 37 ? FUN_0044202c +442054 18 ? FUN_00442054 +442068 197 ? FUN_00442068 +442134 126 ? FUN_00442134 +4421b4 146 ? FUN_004421b4 +442248 32 ? FUN_00442248 +442268 198 ? FUN_00442268 +442330 103 ? FUN_00442330 +442398 77 ? FUN_00442398 +4423e8 22 ? FUN_004423e8 +44242c 35 ? FUN_0044242c +44244f 44 ? FUN_0044244f +44247b 110 ? FUN_0044247b +4425af 75 ? FUN_004425af +4425fa 31 ? FUN_004425fa +442619 44 ? FUN_00442619 +442645 48 ? FUN_00442645 +442675 15 ? FUN_00442675 +442684 53 ? FUN_00442684 +4426b9 44 ? FUN_004426b9 +4426e5 80 ? FUN_004426e5 +442735 75 ? FUN_00442735 +442780 90 ? FUN_00442780 +4427dc 52 ? FUN_004427dc +442810 44 ? FUN_00442810 +44283c 10 ? FUN_0044283c +442848 42 ? FUN_00442848 +442874 58 ? FUN_00442874 +4428b0 10 ? FUN_004428b0 +4428bc 110 ? FUN_004428bc +44292c 100 ? FUN_0044292c +442990 48 ? FUN_00442990 +4429c0 82 ? FUN_004429c0 +442a14 40 ? FUN_00442a14 +442a3c 10 ? FUN_00442a3c +442a46 31 ? FUN_00442a46 +442a65 44 ? FUN_00442a65 +442a91 15 ? FUN_00442a91 +442aa0 25 ? FUN_00442aa0 +442ab9 51 ? FUN_00442ab9 +442aec 112 ? FUN_00442aec +442b5c 112 ? FUN_00442b5c +442bcc 35 ? FUN_00442bcc +442bef 35 ? FUN_00442bef +442c12 56 ? FUN_00442c12 +442c4a 56 ? FUN_00442c4a +442c82 78 ? FUN_00442c82 +442cd0 15 ? FUN_00442cd0 +442cdf 25 ? FUN_00442cdf +442cf8 51 ? FUN_00442cf8 +442d2b 112 ? FUN_00442d2b +442d9b 112 ? FUN_00442d9b +442e0b 35 ? FUN_00442e0b +442e2e 35 ? FUN_00442e2e +442e51 56 ? FUN_00442e51 +442e89 56 ? FUN_00442e89 +442ec1 78 ? FUN_00442ec1 +442f0f 15 ? FUN_00442f0f +442f1e 25 ? FUN_00442f1e +442f37 51 ? FUN_00442f37 +442f6a 112 ? FUN_00442f6a +442fda 112 ? FUN_00442fda +44304a 35 ? FUN_0044304a +44306d 35 ? FUN_0044306d +443090 56 ? FUN_00443090 +4430c8 56 ? FUN_004430c8 +443100 78 ? FUN_00443100 +44314e 31 ? FUN_0044314e +44316d 31 ? FUN_0044316d +44318c 31 ? FUN_0044318c +4431ab 44 ? FUN_004431ab +4431d7 41 ? FUN_004431d7 +443200 41 ? FUN_00443200 +443229 66 ? FUN_00443229 +44326b 15 ? FUN_0044326b +44327a 41 ? FUN_0044327a +4432a3 41 ? FUN_004432a3 +4432cc 63 ? FUN_004432cc +44330b 15 ? FUN_0044330b +44331a 41 ? FUN_0044331a +443343 41 ? FUN_00443343 +44336c 63 ? FUN_0044336c +4433ab 15 ? FUN_004433ab +4433bc 180 ? FUN_004433bc +443474 42 ? FUN_00443474 +4434a0 65 ? FUN_004434a0 +4434e4 15 ? FUN_004434e4 +4434f4 25 ? FUN_004434f4 +443510 97 ? FUN_00443510 +443574 56 ? FUN_00443574 +4435ac 71 ? FUN_004435ac +4435f4 120 ? FUN_004435f4 +44366c 185 ? FUN_0044366c +443728 171 ? FUN_00443728 +4437d8 67 ? FUN_004437d8 +44381c 60 ? FUN_0044381c +443858 10 ? FUN_00443858 +443864 204 ? FUN_00443864 +443930 104 ? FUN_00443930 +443998 93 ? FUN_00443998 +4439f8 302 ? FUN_004439f8 +443b28 123 ? FUN_00443b28 +443ba4 337 ? FUN_00443ba4 +443e94 50 ? FUN_00443e94 +443edc 31 ? FUN_00443edc +443efb 44 ? FUN_00443efb +443f28 82 ? FUN_00443f28 +443f7c 44 ? FUN_00443f7c +443fa8 10 ? FUN_00443fa8 +443fb4 78 ? FUN_00443fb4 +444004 5 ? FUN_00444004 +44400c 25 ? FUN_0044400c +444028 80 ? FUN_00444028 +444078 5 ? FUN_00444078 +444080 5 ? FUN_00444080 +444088 5 ? FUN_00444088 +444090 5 ? FUN_00444090 +444098 5 ? FUN_00444098 +4440a0 7 ? FUN_004440a0 +4440a8 43 ? FUN_004440a8 +4440d4 79 ? FUN_004440d4 +444124 35 ? FUN_00444124 +444148 44 ? FUN_00444148 +444174 10 ? FUN_00444174 +444180 28 munga/gauge.cpp FUN_00444180 +44419c 194 ? FUN_0044419c +444290 40 ? FUN_00444290 +4442b8 33 ? FUN_004442b8 +4442dc 26 ? FUN_004442dc +4442f8 15 ? FUN_004442f8 +444308 87 ? FUN_00444308 +444360 65 ? FUN_00444360 +4443a4 15 ? FUN_004443a4 +4443b4 466 ? FUN_004443b4 +444588 25 ? FUN_00444588 +4445a4 90 ? FUN_004445a4 +444600 78 ? FUN_00444600 +444650 41 ? FUN_00444650 +44467c 97 ? FUN_0044467c +4446e0 28 munga/gauge.cpp FUN_004446e0 +4446fc 36 ? FUN_004446fc +444720 62 ? FUN_00444720 +444818 85 ? FUN_00444818 +444870 58 ? FUN_00444870 +4448ac 15 ? FUN_004448ac +4448bc 143 ? FUN_004448bc +44494b 31 ? FUN_0044494b +44496a 44 ? FUN_0044496a +444996 31 ? FUN_00444996 +4449b5 31 ? FUN_004449b5 +4449d4 31 ? FUN_004449d4 +4449f3 44 ? FUN_004449f3 +444a1f 52 ? FUN_00444a1f +444a53 38 ? FUN_00444a53 +444a7c 65 ? FUN_00444a7c +444ac0 82 ? FUN_00444ac0 +444b14 10 ? FUN_00444b14 +444b20 108 ? FUN_00444b20 +444b8c 127 ? FUN_00444b8c +444c0c 116 ? FUN_00444c0c +444c80 112 ? FUN_00444c80 +444cf0 75 ? FUN_00444cf0 +444d3c 45 ? FUN_00444d3c +444d6c 78 ? FUN_00444d6c +444dbc 72 ? FUN_00444dbc +444e04 44 ? FUN_00444e04 +444e30 10 ? FUN_00444e30 +444e3c 39 ? FUN_00444e3c +444e64 53 ? FUN_00444e64 +444e9c 28 munga/lamp.cpp FUN_00444e9c +444eb8 5 ? FUN_00444eb8 +444ec0 81 ? FUN_00444ec0 +444f14 58 ? FUN_00444f14 +444f50 15 ? FUN_00444f50 +444f5f 31 ? FUN_00444f5f +444f7e 44 ? FUN_00444f7e +444faa 31 ? FUN_00444faa +444fc9 31 ? FUN_00444fc9 +444fe8 31 ? FUN_00444fe8 +445007 44 ? FUN_00445007 +445034 45 ? FUN_00445034 +445064 74 ? FUN_00445064 +4450b0 25 ? FUN_004450b0 +4450cc 10 ? FUN_004450cc +4450d8 18 ? FUN_004450d8 +4450ec 59 ? FUN_004450ec +445128 10 ? FUN_00445128 +445134 224 munga/gaugrend.cpp FUN_00445134 +445218 101 ? FUN_00445218 +445280 66 ? FUN_00445280 +4452c4 42 ? FUN_004452c4 +4452f0 36 ? FUN_004452f0 +445314 123 ? FUN_00445314 +445390 85 ? FUN_00445390 +4453e8 10 ? FUN_004453e8 +4453f4 720 munga/gaugrend.cpp FUN_004453f4 +4456c4 15 ? FUN_004456c4 +4456d4 204 ? FUN_004456d4 +4457a0 102 ? FUN_004457a0 +445808 262 ? FUN_00445808 +445910 104 ? FUN_00445910 +445978 244 ? FUN_00445978 +445a6c 132 munga/gaugrend.cpp FUN_00445a6c +445af0 420 ? FUN_00445af0 +445c94 1026 ? FUN_00445c94 +446098 301 ? FUN_00446098 +4461c8 52 ? FUN_004461c8 +4461fc 31 ? FUN_004461fc +44621c 59 ? FUN_0044621c +446258 45 ? FUN_00446258 +446288 133 ? FUN_00446288 +446310 420 ? FUN_00446310 +4464d4 40 ? FUN_004464d4 +4464fc 839 ? FUN_004464fc +446860 25 ? FUN_00446860 +44687c 5 ? FUN_0044687c +446884 909 ? FUN_00446884 +446c3c 132 ? FUN_00446c3c +446cc0 743 munga/gaugrend.cpp FUN_00446cc0 +446fdc 308 munga/gaugrend.cpp FUN_00446fdc +447138 393 munga/gaugrend.cpp FUN_00447138 +4472ec 918 ? FUN_004472ec +4476ac 280 ? FUN_004476ac +4477c4 100 ? FUN_004477c4 +447828 22 ? FUN_00447828 +447840 36 ? FUN_00447840 +447864 41 ? FUN_00447864 +447890 386 ? FUN_00447890 +447a14 289 ? FUN_00447a14 +447b38 30 ? FUN_00447b38 +447b58 5 ? FUN_00447b58 +447b60 15 ? FUN_00447b60 +447b70 232 ? FUN_00447b70 +447c58 222 ? FUN_00447c58 +447d38 222 ? FUN_00447d38 +447e18 39 ? FUN_00447e18 +447e40 35 ? FUN_00447e40 +447e64 5 ? FUN_00447e64 +447e6c 137 ? FUN_00447e6c +447ef8 18 ? FUN_00447ef8 +447f0c 16 ? FUN_00447f0c +447f1c 65 ? FUN_00447f1c +447f60 36 ? FUN_00447f60 +447f84 28 ? FUN_00447f84 +447fa0 31 ? FUN_00447fa0 +447fc0 238 ? FUN_00447fc0 +4480b0 131 ? FUN_004480b0 +448134 10 ? FUN_00448134 +448140 10 ? FUN_00448140 +44814c 10 ? FUN_0044814c +448158 10 ? FUN_00448158 +448164 33 ? FUN_00448164 +448188 332 ? FUN_00448188 +4482d4 59 ? FUN_004482d4 +448310 7 ? FUN_00448310 +448318 193 ? FUN_00448318 +4483dc 137 ? FUN_004483dc +448468 203 ? FUN_00448468 +448548 268 ? FUN_00448548 +448654 717 ? FUN_00448654 +448928 50 ? FUN_00448928 +44895c 59 ? FUN_0044895c +448997 31 ? FUN_00448997 +4489b6 44 ? FUN_004489b6 +4489e2 5 ? FUN_004489e2 +4489e8 61 ? FUN_004489e8 +448a28 125 ? FUN_00448a28 +448aa8 15 ? FUN_00448aa8 +448ab8 27 munga/gaugalrm.cpp FUN_00448ab8 +448ad4 25 munga/gaugalrm.cpp FUN_00448ad4 +448af0 353 ? FUN_00448af0 +448c54 32 ? FUN_00448c54 +448c74 47 ? FUN_00448c74 +448ca4 10 ? FUN_00448ca4 +448cb0 78 ? FUN_00448cb0 +448d00 255 ? FUN_00448d00 +448e00 114 ? FUN_00448e00 +448e72 31 ? FUN_00448e72 +448e91 44 ? FUN_00448e91 +448ebd 31 ? FUN_00448ebd +448edc 31 ? FUN_00448edc +448efb 31 ? FUN_00448efb +448f1a 44 ? FUN_00448f1a +448f48 510 ? FUN_00448f48 +449148 100 ? FUN_00449148 +4491ac 7 ? FUN_004491ac +4491b4 72 ? FUN_004491b4 +4491fc 127 ? FUN_004491fc +44927c 299 ? FUN_0044927c +4493a8 445 ? FUN_004493a8 +449568 73 ? FUN_00449568 +4495b4 10 ? FUN_004495b4 +4495c0 582 ? FUN_004495c0 +449808 158 ? FUN_00449808 +4498a8 12 ? FUN_004498a8 +4498b4 99 ? FUN_004498b4 +449918 7 ? FUN_00449918 +449920 71 ? FUN_00449920 +449968 41 ? FUN_00449968 +449994 25 ? FUN_00449994 +4499b0 52 ? FUN_004499b0 +4499e4 208 ? FUN_004499e4 +449ab4 10 ? FUN_00449ab4 +449ac0 348 ? FUN_00449ac0 +449c1c 97 ? FUN_00449c1c +449c80 7 ? FUN_00449c80 +449c88 40 ? FUN_00449c88 +449cb0 92 ? FUN_00449cb0 +449d0c 55 ? FUN_00449d0c +449d44 10 ? FUN_00449d44 +449d50 384 ? FUN_00449d50 +449ed0 42 ? FUN_00449ed0 +449efc 49 munga/graph2d.cpp FUN_00449efc +449f30 55 ? FUN_00449f30 +449f68 10 ? FUN_00449f68 +449f74 260 ? FUN_00449f74 +44a078 52 ? FUN_0044a078 +44a0ac 31 ? FUN_0044a0ac +44a0cc 188 ? FUN_0044a0cc +44a188 10 ? FUN_0044a188 +44a194 7 ? FUN_0044a194 +44a19c 5 ? FUN_0044a19c +44a1a4 75 munga/graph2d.cpp FUN_0044a1a4 +44a1f0 28 munga/graph2d.cpp FUN_0044a1f0 +44a20c 28 munga/graph2d.cpp FUN_0044a20c +44a228 28 munga/graph2d.cpp FUN_0044a228 +44a244 28 munga/graph2d.cpp FUN_0044a244 +44a260 28 munga/graph2d.cpp FUN_0044a260 +44a27c 28 munga/graph2d.cpp FUN_0044a27c +44a298 28 munga/graph2d.cpp FUN_0044a298 +44a2b4 28 munga/graph2d.cpp FUN_0044a2b4 +44a2d0 118 ? FUN_0044a2d0 +44a348 31 ? FUN_0044a348 +44a368 10 ? FUN_0044a368 +44a374 274 ? FUN_0044a374 +44a488 48 ? FUN_0044a488 +44a4b8 28 munga/graph2d.cpp FUN_0044a4b8 +44a4d4 28 munga/graph2d.cpp FUN_0044a4d4 +44a4f0 28 munga/graph2d.cpp FUN_0044a4f0 +44a50c 28 munga/graph2d.cpp FUN_0044a50c +44a528 28 munga/graph2d.cpp FUN_0044a528 +44a544 28 munga/graph2d.cpp FUN_0044a544 +44a560 28 munga/graph2d.cpp FUN_0044a560 +44a57c 28 munga/graph2d.cpp FUN_0044a57c +44a598 28 munga/graph2d.cpp FUN_0044a598 +44a5b4 40 ? FUN_0044a5b4 +44a5dc 69 ? FUN_0044a5dc +44a624 10 ? FUN_0044a624 +44a630 29 ? FUN_0044a630 +44a650 1088 ? FUN_0044a650 +44aab0 90 ? FUN_0044aab0 +44ab0c 74 munga/graph2d.cpp FUN_0044ab0c +44ab58 38 ? FUN_0044ab58 +44ab80 28 ? FUN_0044ab80 +44ab9c 40 ? FUN_0044ab9c +44abc4 51 ? FUN_0044abc4 +44abf8 79 ? FUN_0044abf8 +44ac48 79 ? FUN_0044ac48 +44ac98 223 ? FUN_0044ac98 +44ad78 146 ? FUN_0044ad78 +44ae0c 31 ? FUN_0044ae0c +44ae2c 131 ? FUN_0044ae2c +44aeb0 10 ? FUN_0044aeb0 +44aebc 811 ? FUN_0044aebc +44b1e8 14 ? FUN_0044b1e8 +44b1f8 72 ? FUN_0044b1f8 +44b240 14 ? FUN_0044b240 +44b250 14 ? FUN_0044b250 +44b260 128 ? FUN_0044b260 +44b2e0 25 ? FUN_0044b2e0 +44b2fc 28 ? FUN_0044b2fc +44b318 20 ? FUN_0044b318 +44b32c 155 ? FUN_0044b32c +44b3c8 93 ? FUN_0044b3c8 +44b428 93 ? FUN_0044b428 +44b488 111 ? FUN_0044b488 +44b4f8 109 ? FUN_0044b4f8 +44b568 119 ? FUN_0044b568 +44b5e0 129 ? FUN_0044b5e0 +44b664 107 ? FUN_0044b664 +44b6d0 107 ? FUN_0044b6d0 +44b73c 5 ? FUN_0044b73c +44b744 327 ? FUN_0044b744 +44b88c 347 ? FUN_0044b88c +44b9e8 326 ? FUN_0044b9e8 +44bb30 326 ? FUN_0044bb30 +44bc78 32 ? FUN_0044bc78 +44bc98 14 ? FUN_0044bc98 +44bca8 13 ? FUN_0044bca8 +44bcb8 56 ? FUN_0044bcb8 +44bcf0 267 ? FUN_0044bcf0 +44bdfc 631 ? FUN_0044bdfc +44c074 254 ? FUN_0044c074 +44c174 346 ? FUN_0044c174 +44c2d0 20 ? FUN_0044c2d0 +44c2e4 31 ? FUN_0044c2e4 +44c304 10 ? FUN_0044c304 +44c310 51 ? FUN_0044c310 +44c344 66 ? FUN_0044c344 +44c388 58 ? FUN_0044c388 +44c3c4 25 munga/controls.cpp FUN_0044c3c4 +44c3e0 22 ? FUN_0044c3e0 +44c3f8 42 ? FUN_0044c3f8 +44c424 69 ? FUN_0044c424 +44c46c 97 ? FUN_0044c46c +44c4d0 89 ? FUN_0044c4d0 +44c52c 101 ? FUN_0044c52c +44c594 80 ? FUN_0044c594 +44c5e4 91 ? FUN_0044c5e4 +44c640 28 munga/controls.cpp FUN_0044c640 +44c65c 28 munga/controls.cpp FUN_0044c65c +44c678 66 ? FUN_0044c678 +44c6fc 5 ? FUN_0044c6fc +44c704 27 ? FUN_0044c704 +44c720 27 ? FUN_0044c720 +44c73c 5 ? FUN_0044c73c +44c744 82 ? FUN_0044c744 +44c798 44 ? FUN_0044c798 +44c7c4 10 ? FUN_0044c7c4 +44c7d0 207 ? FUN_0044c7d0 +44c8a0 42 ? FUN_0044c8a0 +44c8cc 69 ? FUN_0044c8cc +44c914 10 ? FUN_0044c914 +44c920 80 ? FUN_0044c920 +44c970 98 ? FUN_0044c970 +44c9d4 85 ? FUN_0044c9d4 +44ca72 31 ? FUN_0044ca72 +44ca91 44 ? FUN_0044ca91 +44cabd 31 ? FUN_0044cabd +44cadc 44 ? FUN_0044cadc +44cb08 31 ? FUN_0044cb08 +44cb27 44 ? FUN_0044cb27 +44cb53 31 ? FUN_0044cb53 +44cb72 31 ? FUN_0044cb72 +44cb91 31 ? FUN_0044cb91 +44cbb0 44 ? FUN_0044cbb0 +44cbdc 31 ? FUN_0044cbdc +44cbfb 31 ? FUN_0044cbfb +44cc1a 31 ? FUN_0044cc1a +44cc39 44 ? FUN_0044cc39 +44cc68 48 ? FUN_0044cc68 +44cc98 65 ? FUN_0044cc98 +44ccdc 234 ? FUN_0044ccdc +44cdc8 259 ? FUN_0044cdc8 +44cecc 494 ? FUN_0044cecc +44d0bc 259 ? FUN_0044d0bc +44d1c0 1043 ? FUN_0044d1c0 +44d5d4 588 ? FUN_0044d5d4 +44d820 5 ? FUN_0044d820 +44d828 10 ? FUN_0044d828 +44d834 34 ? FUN_0044d834 +44d858 44 ? FUN_0044d858 +44d884 31 ? FUN_0044d884 +44d8a3 44 ? FUN_0044d8a3 +44d8cf 35 ? FUN_0044d8cf +44d8f2 44 ? FUN_0044d8f2 +44d91e 77 ? FUN_0044d91e +44d96b 74 ? FUN_0044d96b +44d9b5 80 ? FUN_0044d9b5 +44da05 75 ? FUN_0044da05 +44da50 35 ? FUN_0044da50 +44da73 44 ? FUN_0044da73 +44da9f 47 ? FUN_0044da9f +44dace 44 ? FUN_0044dace +44dafa 80 ? FUN_0044dafa +44db4a 75 ? FUN_0044db4a +44db95 31 ? FUN_0044db95 +44dbb4 31 ? FUN_0044dbb4 +44dbd3 31 ? FUN_0044dbd3 +44dbf2 44 ? FUN_0044dbf2 +44dc1e 31 ? FUN_0044dc1e +44dc3d 31 ? FUN_0044dc3d +44dc5c 31 ? FUN_0044dc5c +44dc7b 44 ? FUN_0044dc7b +44dca7 48 ? FUN_0044dca7 +44dcd7 48 ? FUN_0044dcd7 +44dd08 36 ? FUN_0044dd08 +44dd2c 44 ? FUN_0044dd2c +44dd58 84 ? FUN_0044dd58 +44ddac 89 ? FUN_0044ddac +44de08 20 ? FUN_0044de08 +44de1c 25 ? FUN_0044de1c +44de38 61 ? FUN_0044de38 +44df10 31 ? FUN_0044df10 +44df2f 44 ? FUN_0044df2f +44dfe0 345 ? FUN_0044dfe0 +44e13c 95 ? FUN_0044e13c +44e19c 18 ? FUN_0044e19c +44e1b0 164 ? FUN_0044e1b0 +44e254 362 ? FUN_0044e254 +44e3c0 32 ? FUN_0044e3c0 +44e3e0 39 ? FUN_0044e3e0 +44e408 30 munga/app.cpp FUN_0044e408 +44e428 30 munga/app.cpp FUN_0044e428 +44e448 30 munga/app.cpp FUN_0044e448 +44e468 30 munga/app.cpp FUN_0044e468 +44e488 282 ? FUN_0044e488 +44e6c0 40 ? FUN_0044e6c0 +44e6e8 193 ? FUN_0044e6e8 +44e7ac 241 ? FUN_0044e7ac +44e8a0 205 ? FUN_0044e8a0 +44e970 80 ? FUN_0044e970 +44e9c0 102 ? FUN_0044e9c0 +44ea28 30 munga/app.cpp FUN_0044ea28 +44ea48 67 ? FUN_0044ea48 +44ea8c 224 ? FUN_0044ea8c +44eb6c 30 munga/app.cpp FUN_0044eb6c +44eb8c 30 munga/app.cpp FUN_0044eb8c +44ebac 30 munga/app.cpp FUN_0044ebac +44ebcc 30 munga/app.cpp FUN_0044ebcc +44ebec 229 ? FUN_0044ebec +44ecdc 170 munga/app.cpp FUN_0044ecdc +44ed88 136 munga/app.cpp FUN_0044ed88 +44ee10 164 munga/app.cpp FUN_0044ee10 +44eeb4 152 ? FUN_0044eeb4 +44ef4c 138 ? FUN_0044ef4c +44efd8 92 ? FUN_0044efd8 +44f034 28 ? FUN_0044f034 +44f0d5 35 ? FUN_0044f0d5 +44f0f8 35 ? FUN_0044f0f8 +44f11b 31 ? FUN_0044f11b +44f13a 44 ? FUN_0044f13a +44f166 44 ? FUN_0044f166 +44f192 44 ? FUN_0044f192 +44f1be 44 ? FUN_0044f1be +44f1ea 44 ? FUN_0044f1ea +44f216 44 ? FUN_0044f216 +44f242 44 ? FUN_0044f242 +44f26e 44 ? FUN_0044f26e +44f29c 60 ? FUN_0044f29c +44f2dc 58 ? FUN_0044f2dc +44f318 42 ? FUN_0044f318 +44f344 365 munga/appmgr.cpp FUN_0044f344 +44f4bc 31 ? FUN_0044f4bc +44f4db 44 ? FUN_0044f4db +44f507 31 ? FUN_0044f507 +44f526 31 ? FUN_0044f526 +44f545 31 ? FUN_0044f545 +44f564 44 ? FUN_0044f564 +44f590 34 ? FUN_0044f590 +44f5b4 28 ? FUN_0044f5b4 +44f5d0 34 ? FUN_0044f5d0 +44f5f4 34 ? FUN_0044f5f4 +44f618 28 ? FUN_0044f618 +44f634 28 ? FUN_0044f634 +44f650 44 ? FUN_0044f650 +44f67c 52 ? FUN_0044f67c +44f6b0 31 ? FUN_0044f6b0 +44f6d0 114 ? FUN_0044f6d0 +44f744 176 ? FUN_0044f744 +44f7f4 89 ? FUN_0044f7f4 +44f850 102 ? FUN_0044f850 +44f8b8 152 ? FUN_0044f8b8 +44f950 115 ? FUN_0044f950 +44f9c4 77 munga/spooler.cpp FUN_0044f9c4 +44fa14 88 ? FUN_0044fa14 +44fa6c 83 ? FUN_0044fa6c +44fac0 60 ? FUN_0044fac0 +44fafc 65 ? FUN_0044fafc +44fb40 66 ? FUN_0044fb40 +44fb84 20 ? FUN_0044fb84 +44fb98 104 ? FUN_0044fb98 +44fc00 14 ? FUN_0044fc00 +44fc10 11 ? FUN_0044fc10 +44fc1c 111 ? FUN_0044fc1c +44fc8c 20 ? FUN_0044fc8c +44fca0 11 ? FUN_0044fca0 +44fcac 104 ? FUN_0044fcac +44fd14 67 ? FUN_0044fd14 +44fd58 11 ? FUN_0044fd58 +44fd64 53 ? FUN_0044fd64 +44fd9c 65 ? FUN_0044fd9c +44fde0 27 ? FUN_0044fde0 +44fdfc 5 ? FUN_0044fdfc +44fe04 78 ? FUN_0044fe04 +44fe54 28 munga/icom.cpp FUN_0044fe54 +44fe70 67 ? FUN_0044fe70 +44feb4 125 ? FUN_0044feb4 +44ff34 112 ? FUN_0044ff34 +44ffa4 96 ? FUN_0044ffa4 +45005e 31 ? FUN_0045005e +45007d 44 ? FUN_0045007d +4500a9 31 ? FUN_004500a9 +4500c8 31 ? FUN_004500c8 +4500e7 31 ? FUN_004500e7 +450106 44 ? FUN_00450106 +450134 91 ? FUN_00450134 +450190 68 ? FUN_00450190 +4501d4 664 munga_l4/l4net.cpp FUN_004501d4 +45046c 230 ? FUN_0045046c +450554 759 munga_l4/l4net.cpp FUN_00450554 +45084c 274 ? FUN_0045084c +450960 203 ? FUN_00450960 +450a2c 217 ? FUN_00450a2c +450b08 15 ? FUN_00450b08 +450b18 477 munga_l4/l4net.cpp FUN_00450b18 +450cf8 592 munga_l4/l4net.cpp FUN_00450cf8 +450f48 93 ? FUN_00450f48 +450fa8 932 munga_l4/l4net.cpp FUN_00450fa8 +45134c 251 ? FUN_0045134c +451448 1099 munga_l4/l4net.cpp FUN_00451448 +451894 33 ? FUN_00451894 +4518b8 1859 munga_l4/l4net.cpp FUN_004518b8 +452000 245 ? FUN_00452000 +4520f8 5 ? FUN_004520f8 +452100 206 munga_l4/l4net.cpp FUN_00452100 +4521d0 113 ? FUN_004521d0 +452244 210 munga_l4/l4net.cpp FUN_00452244 +452318 96 munga_l4/l4net.cpp FUN_00452318 +452378 333 munga_l4/l4net.cpp FUN_00452378 +4524c8 147 ? FUN_004524c8 +45255c 96 ? FUN_0045255c +4525bc 103 ? FUN_004525bc +452624 27 ? FUN_00452624 +452640 69 ? FUN_00452640 +452688 54 ? FUN_00452688 +4526c0 10 ? FUN_004526c0 +4526cc 49 ? FUN_004526cc +452700 106 ? FUN_00452700 +45276c 10 ? FUN_0045276c +452778 61 ? FUN_00452778 +4527b8 61 ? FUN_004527b8 +4527f8 106 ? FUN_004527f8 +452864 10 ? FUN_00452864 +452870 108 ? FUN_00452870 +4528dc 186 ? FUN_004528dc +452a1d 31 ? FUN_00452a1d +452a3c 44 ? FUN_00452a3c +452a68 35 ? FUN_00452a68 +452a8b 44 ? FUN_00452a8b +452ab7 47 ? FUN_00452ab7 +452ae6 44 ? FUN_00452ae6 +452b12 31 ? FUN_00452b12 +452b31 31 ? FUN_00452b31 +452b50 31 ? FUN_00452b50 +452b6f 44 ? FUN_00452b6f +452b9b 31 ? FUN_00452b9b +452bba 31 ? FUN_00452bba +452bd9 44 ? FUN_00452bd9 +452c05 48 ? FUN_00452c05 +452c38 24 ? FUN_00452c38 +452c50 56 ? FUN_00452c50 +452c88 24 ? FUN_00452c88 +452ca0 13 ? FUN_00452ca0 +452cad 31 ? FUN_00452cad +452ccc 44 ? FUN_00452ccc +452cf8 170 ? FUN_00452cf8 +452da4 95 ? FUN_00452da4 +452e04 20 ? FUN_00452e04 +452e18 128 ? FUN_00452e18 +452e98 132 ? FUN_00452e98 +452f1c 20 ? FUN_00452f1c +452f30 101 ? FUN_00452f30 +452f98 208 ? FUN_00452f98 +453068 101 ? FUN_00453068 +4530d0 20 ? FUN_004530d0 +4530e4 5 ? FUN_004530e4 +4530ec 171 munga_l4/l4vidrnd.cpp FUN_004530ec +453198 44 ? FUN_00453198 +4531c4 20 ? FUN_004531c4 +4531d8 5 ? FUN_004531d8 +4531e0 252 ? FUN_004531e0 +4532dc 64 ? FUN_004532dc +45331c 20 ? FUN_0045331c +453330 5 ? FUN_00453330 +453338 196 ? FUN_00453338 +4533fc 89 ? FUN_004533fc +453458 20 ? FUN_00453458 +45346c 5 ? FUN_0045346c +453474 158 ? FUN_00453474 +453514 70 ? FUN_00453514 +45355c 20 ? FUN_0045355c +453570 5 ? FUN_00453570 +453578 136 ? FUN_00453578 +453600 54 ? FUN_00453600 +453638 20 ? FUN_00453638 +45364c 102 ? FUN_0045364c +4536b4 179 ? FUN_004536b4 +453768 91 ? FUN_00453768 +4537c4 20 ? FUN_004537c4 +4537d8 15 ? FUN_004537d8 +4537e8 201 ? FUN_004537e8 +4538b4 44 ? FUN_004538b4 +4538e0 20 ? FUN_004538e0 +4538f4 190 ? FUN_004538f4 +4539b4 112 ? FUN_004539b4 +453a24 44 ? FUN_00453a24 +453a50 20 ? FUN_00453a50 +453a64 95 ? FUN_00453a64 +453ac4 191 ? FUN_00453ac4 +453b84 44 ? FUN_00453b84 +453bb0 20 ? FUN_00453bb0 +453bc4 190 ? FUN_00453bc4 +453c84 255 ? FUN_00453c84 +453d84 44 ? FUN_00453d84 +453db0 20 ? FUN_00453db0 +453dc4 333 ? FUN_00453dc4 +453f18 287 ? FUN_00453f18 +454038 96 ? FUN_00454038 +454098 20 ? FUN_00454098 +4540ac 691 ? FUN_004540ac +454394 168 ? FUN_00454394 +45443c 44 ? FUN_0045443c +454468 20 ? FUN_00454468 +45447c 686 ? FUN_0045447c +454924 95 ? FUN_00454924 +454984 20 ? FUN_00454984 +454998 213 ? FUN_00454998 +454a70 1864 ? FUN_00454a70 +4553ac 470 ? FUN_004553ac +455584 20 ? FUN_00455584 +455598 245 ? FUN_00455598 +455690 85 ? FUN_00455690 +4556e8 20 ? FUN_004556e8 +4556fc 56 ? FUN_004556fc +455734 152 ? FUN_00455734 +4557cc 54 ? FUN_004557cc +455804 20 ? FUN_00455804 +455818 102 ? FUN_00455818 +455880 93 ? FUN_00455880 +4558e0 44 ? FUN_004558e0 +45590c 20 ? FUN_0045590c +455920 15 ? FUN_00455920 +455930 311 ? FUN_00455930 +455a68 44 ? FUN_00455a68 +455a94 20 ? FUN_00455a94 +455aa8 236 ? FUN_00455aa8 +455b94 49 ? FUN_00455b94 +455bc8 58 ? FUN_00455bc8 +455c04 20 ? FUN_00455c04 +455c18 25 ? FUN_00455c18 +455c34 71 ? FUN_00455c34 +455c7c 52 ? FUN_00455c7c +455cb0 44 ? FUN_00455cb0 +455cdc 20 ? FUN_00455cdc +455cf0 70 ? FUN_00455cf0 +455d3c 53 ? FUN_00455d3c +455d74 44 ? FUN_00455d74 +455da0 20 ? FUN_00455da0 +455db4 47 ? FUN_00455db4 +455de4 102 ? FUN_00455de4 +455e4c 58 ? FUN_00455e4c +455e88 25 ? FUN_00455e88 +455ea4 20 ? FUN_00455ea4 +455eb8 615 ? FUN_00455eb8 +45612c 105 ? FUN_0045612c +456198 44 ? FUN_00456198 +4561c4 20 ? FUN_004561c4 +4561d8 74 ? FUN_004561d8 +456224 155 ? FUN_00456224 +4562c0 44 ? FUN_004562c0 +4562ec 20 ? FUN_004562ec +456300 90 ? FUN_00456300 +45635c 109 ? FUN_0045635c +4563fc 20 ? FUN_004563fc +456410 149 ? FUN_00456410 +4564a8 126 ? FUN_004564a8 +456558 20 ? FUN_00456558 +45656c 164 munga_l4/l4vidrnd.cpp FUN_0045656c +456610 115 ? FUN_00456610 +456684 44 ? FUN_00456684 +4566b0 20 ? FUN_004566b0 +4566c4 179 ? FUN_004566c4 +456778 90 ? FUN_00456778 +4567d4 44 ? FUN_004567d4 +456800 20 ? FUN_00456800 +456814 83 ? FUN_00456814 +456868 78 ? FUN_00456868 +4568b8 44 ? FUN_004568b8 +4568e4 20 ? FUN_004568e4 +4568f8 68 ? FUN_004568f8 +45693c 128 munga_l4/l4vidrnd.cpp FUN_0045693c +4569bc 60 ? FUN_004569bc +4569f8 20 ? FUN_004569f8 +456a0c 92 ? FUN_00456a0c +456a68 148 munga_l4/l4vidrnd.cpp FUN_00456a68 +456afc 60 ? FUN_00456afc +456b38 20 ? FUN_00456b38 +456b4c 82 ? FUN_00456b4c +456ba0 247 ? FUN_00456ba0 +456c9c 54 ? FUN_00456c9c +456cd4 20 ? FUN_00456cd4 +456ce8 5 ? FUN_00456ce8 +456cf0 1043 ? FUN_00456cf0 +457138 20 ? FUN_00457138 +45714c 653 ? FUN_0045714c +4573e4 859 ? FUN_004573e4 +457770 20 ? FUN_00457770 +457784 544 ? FUN_00457784 +4579a8 330 ? FUN_004579a8 +457af4 54 ? FUN_00457af4 +457b2c 27 ? FUN_00457b2c +457b48 171 ? FUN_00457b48 +457bf4 383 ? FUN_00457bf4 +457d74 78 ? FUN_00457d74 +457dc4 95 ? FUN_00457dc4 +457e24 27 ? FUN_00457e24 +457e40 407 ? FUN_00457e40 +457fd8 64 ? FUN_00457fd8 +458018 237 ? FUN_00458018 +458108 20 ? FUN_00458108 +45811c 479 ? FUN_0045811c +4582fc 64 ? FUN_004582fc +45833c 316 ? FUN_0045833c +458478 20 ? FUN_00458478 +45848c 268 ? FUN_0045848c +458598 68 ? FUN_00458598 +4585dc 27 ? FUN_004585dc +4585f8 144 ? FUN_004585f8 +4586bc 20 ? FUN_004586bc +4586d0 131 ? FUN_004586d0 +458754 114 ? FUN_00458754 +4587c8 44 ? FUN_004587c8 +4587f4 20 ? FUN_004587f4 +458808 134 ? FUN_00458808 +4589a0 44 ? FUN_004589a0 +4589cc 20 ? FUN_004589cc +4589e0 617 ? FUN_004589e0 +458c58 123 munga_l4/l4vidrnd.cpp FUN_00458c58 +458cd4 60 ? FUN_00458cd4 +458d10 20 ? FUN_00458d10 +458d24 5 ? FUN_00458d24 +458d2c 238 ? FUN_00458d2c +458e1c 44 ? FUN_00458e1c +458e48 20 ? FUN_00458e48 +458e5c 623 ? FUN_00458e5c +4590d8 285 ? FUN_004590d8 +4591f8 44 ? FUN_004591f8 +459224 20 ? FUN_00459224 +459238 388 ? FUN_00459238 +4593c0 268 ? FUN_004593c0 +4594cc 44 ? FUN_004594cc +4594f8 20 ? FUN_004594f8 +45950c 275 ? FUN_0045950c +45961f 135 ? FUN_0045961f +4596a6 5 ? FUN_004596a6 +459eb8 252 ? FUN_00459eb8 +459fb4 103 ? FUN_00459fb4 +45a01c 25 ? FUN_0045a01c +45a038 10 ? FUN_0045a038 +45a044 41 ? FUN_0045a044 +45a070 64 ? FUN_0045a070 +45a0b0 18 ? FUN_0045a0b0 +45a0c4 109 ? FUN_0045a0c4 +45a134 75 ? FUN_0045a134 +45a180 1437 ? FUN_0045a180 +45a724 30 ? FUN_0045a724 +45a744 31 ? FUN_0045a744 +45a764 66 ? FUN_0045a764 +45a7a8 407 ? FUN_0045a7a8 +45a954 63 ? FUN_0045a954 +45a994 99 munga_l4/l4video.cpp FUN_0045a994 +45a9f8 1982 munga_l4/l4video.cpp FUN_0045a9f8 +45b1b8 7331 munga_l4/l4video.cpp FUN_0045b1b8 +45ce5c 663 ? FUN_0045ce5c +45d0f4 305 ? FUN_0045d0f4 +45d228 20 ? FUN_0045d228 +45d23c 118 ? FUN_0045d23c +45d2b4 227 ? FUN_0045d2b4 +45d3cc 80 ? FUN_0045d3cc +45d41c 4875 munga_l4/l4video.cpp FUN_0045d41c +45e744 3648 ? FUN_0045e744 +45f59c 486 munga_l4/l4video.cpp FUN_0045f59c +45f784 84 ? FUN_0045f784 +45f7dc 551 ? FUN_0045f7dc +45fbf4 48 ? FUN_0045fbf4 +45fc24 50 ? FUN_0045fc24 +45fc58 70 ? FUN_0045fc58 +45fca0 312 ? FUN_0045fca0 +45fdd8 106 ? FUN_0045fdd8 +45fe44 128 ? FUN_0045fe44 +45fec8 131 ? FUN_0045fec8 +45ff4c 1552 ? FUN_0045ff4c +460590 192 ? FUN_00460590 +460654 125 ? FUN_00460654 +4606d4 154 munga_l4/l4video.cpp FUN_004606d4 +460770 161 ? FUN_00460770 +460840 211 ? FUN_00460840 +460914 128 ? FUN_00460914 +460994 69 munga_l4/l4video.cpp FUN_00460994 +4609dc 157 ? FUN_004609dc +460a7c 86 ? FUN_00460a7c +460ad4 5 ? FUN_00460ad4 +460adc 5 ? FUN_00460adc +460ae4 29 ? FUN_00460ae4 +460b04 66 ? FUN_00460b04 +460b48 186 ? FUN_00460b48 +460c04 171 ? FUN_00460c04 +460cb0 31 ? FUN_00460cb0 +460cd0 251 munga_l4/l4video.cpp FUN_00460cd0 +460dcc 59 ? FUN_00460dcc +460e08 10 ? FUN_00460e08 +460e14 1130 ? FUN_00460e14 +461280 48 ? FUN_00461280 +4612b0 45 ? FUN_004612b0 +4612dd 31 ? FUN_004612dd +4612fc 44 ? FUN_004612fc +461328 35 ? FUN_00461328 +46134b 44 ? FUN_0046134b +461377 77 ? FUN_00461377 +4613c4 74 ? FUN_004613c4 +46140e 35 ? FUN_0046140e +461431 44 ? FUN_00461431 +46145d 47 ? FUN_0046145d +46148c 44 ? FUN_0046148c +4614b8 31 ? FUN_004614b8 +4614d7 31 ? FUN_004614d7 +4614f6 31 ? FUN_004614f6 +461515 44 ? FUN_00461515 +461541 31 ? FUN_00461541 +461560 31 ? FUN_00461560 +46157f 31 ? FUN_0046157f +46159e 44 ? FUN_0046159e +4615ca 31 ? FUN_004615ca +4615e9 31 ? FUN_004615e9 +461608 44 ? FUN_00461608 +461634 48 ? FUN_00461634 +461664 48 ? FUN_00461664 +461694 65 ? FUN_00461694 +4616d5 43 ? FUN_004616d5 +461700 44 ? FUN_00461700 +46172c 80 ? FUN_0046172c +46177c 75 ? FUN_0046177c +4617c8 84 ? FUN_004617c8 +46181c 503 ? FUN_0046181c +461a14 603 ? FUN_00461a14 +461c74 159 ? FUN_00461c74 +461d14 57 ? FUN_00461d14 +461d50 64 ? FUN_00461d50 +461d90 916 ? FUN_00461d90 +462124 133 ? FUN_00462124 +4621ac 119 ? FUN_004621ac +462224 48 ? FUN_00462224 +462254 10 ? FUN_00462254 +462260 171 ? FUN_00462260 +46230c 52 ? FUN_0046230c +462340 44 ? FUN_00462340 +46236c 20 ? FUN_0046236c +462380 173 ? FUN_00462380 +462430 167 ? FUN_00462430 +4624d8 20 ? FUN_004624d8 +4624ec 94 munga_l4/l4audhdw.cpp FUN_004624ec +46254c 44 ? FUN_0046254c +462578 430 ? FUN_00462578 +462728 7 ? FUN_00462728 +462730 5 ? FUN_00462730 +462738 7 ? FUN_00462738 +462740 7 ? FUN_00462740 +462748 143 ? FUN_00462748 +4627d8 26 ? FUN_004627d8 +4627f4 18 ? FUN_004627f4 +462808 82 ? FUN_00462808 +46285c 122 ? FUN_0046285c +4628d8 194 ? FUN_004628d8 +46299c 72 ? FUN_0046299c +4629e4 55 munga_l4/l4audhdw.cpp FUN_004629e4 +462a1c 123 ? FUN_00462a1c +462a98 36 ? FUN_00462a98 +462abc 122 ? FUN_00462abc +462b38 52 ? FUN_00462b38 +462b6c 75 ? FUN_00462b6c +462bb8 20 ? FUN_00462bb8 +462bcc 91 ? FUN_00462bcc +462c28 38 ? FUN_00462c28 +462c4e 31 ? FUN_00462c4e +462c6d 44 ? FUN_00462c6d +462c99 31 ? FUN_00462c99 +462cb8 31 ? FUN_00462cb8 +462cd7 31 ? FUN_00462cd7 +462cf6 44 ? FUN_00462cf6 +462d24 57 ? FUN_00462d24 +462d60 25 ? FUN_00462d60 +462d7c 10 ? FUN_00462d7c +462d88 931 ? FUN_00462d88 +463148 52 ? FUN_00463148 +46317c 118 ? FUN_0046317c +4631f4 58 ? FUN_004631f4 +463230 20 ? FUN_00463230 +463244 6 ? FUN_00463244 +46324a 807 ? FUN_0046324a +463580 34 ? FUN_00463580 +4635a4 27 ? FUN_004635a4 +4635c0 30 ? FUN_004635c0 +4635e0 48 ? FUN_004635e0 +463610 55 ? FUN_00463610 +463648 29 ? FUN_00463648 +463668 5 ? FUN_00463668 +463670 44 ? FUN_00463670 +46369c 20 ? FUN_0046369c +4636b0 26 ? FUN_004636b0 +4636cc 30 ? FUN_004636cc +4636ec 13 ? FUN_004636ec +4636fc 20 ? FUN_004636fc +463710 65 ? FUN_00463710 +463754 168 munga_l4/l4audio.cpp FUN_00463754 +4637fc 44 ? FUN_004637fc +463828 30 ? FUN_00463828 +463848 96 ? FUN_00463848 +4638a8 659 ? FUN_004638a8 +463bbc 385 ? FUN_00463bbc +463d4c 35 ? FUN_00463d4c +463d70 44 ? FUN_00463d70 +463d9c 20 ? FUN_00463d9c +463db0 42 ? FUN_00463db0 +463ddc 911 ? FUN_00463ddc +4641e0 1592 ? FUN_004641e0 +46487c 90 ? FUN_0046487c +4648d8 61 ? FUN_004648d8 +464918 219 munga_l4/l4audio.cpp FUN_00464918 +4649f4 30 ? FUN_004649f4 +464a14 29 ? FUN_00464a14 +464a34 450 ? FUN_00464a34 +4651ac 1538 ? FUN_004651ac +4657c9 31 ? FUN_004657c9 +4657e8 31 ? FUN_004657e8 +465807 31 ? FUN_00465807 +465826 44 ? FUN_00465826 +465852 31 ? FUN_00465852 +465871 31 ? FUN_00465871 +465890 31 ? FUN_00465890 +4658af 44 ? FUN_004658af +4658db 31 ? FUN_004658db +4658fa 31 ? FUN_004658fa +465919 31 ? FUN_00465919 +465938 44 ? FUN_00465938 +465964 84 ? FUN_00465964 +4659b8 430 munga_l4/l4audlvl.cpp FUN_004659b8 +465b68 44 ? FUN_00465b68 +465b94 20 ? FUN_00465b94 +465ba8 137 ? FUN_00465ba8 +465c34 31 ? FUN_00465c34 +465c54 29 ? FUN_00465c54 +465c74 44 ? FUN_00465c74 +465ca0 20 ? FUN_00465ca0 +465cb4 24 ? FUN_00465cb4 +465ccc 14 ? FUN_00465ccc +465d08 199 ? FUN_00465d08 +465dd0 611 munga_l4/l4audwtr.cpp FUN_00465dd0 +466034 20 ? FUN_00466034 +466048 119 ? FUN_00466048 +4660c0 51 ? FUN_004660c0 +4660f4 37 ? FUN_004660f4 +46611c 30 ? FUN_0046611c +46613c 44 ? FUN_0046613c +466168 27 ? FUN_00466168 +466184 1406 ? FUN_00466184 +466804 64 ? FUN_00466804 +466844 638 ? FUN_00466844 +466bc4 73 ? FUN_00466bc4 +466c10 29 ? FUN_00466c10 +466c30 44 ? FUN_00466c30 +466c5c 20 ? FUN_00466c5c +466c70 211 ? FUN_00466c70 +466d44 33 ? FUN_00466d44 +466d68 122 ? FUN_00466d68 +466de4 171 ? FUN_00466de4 +466e90 101 ? FUN_00466e90 +466ef8 1187 munga_l4/l4audres.cpp FUN_00466ef8 +46739c 124 ? FUN_0046739c +467418 151 ? FUN_00467418 +4674b0 20 ? FUN_004674b0 +4674c4 6 ? FUN_004674c4 +4674ca 1086 munga_l4/l4audrnd.cpp FUN_004674ca +467908 56 ? FUN_00467908 +467940 26 ? FUN_00467940 +46795c 5 ? FUN_0046795c +467964 5 ? FUN_00467964 +46796c 5 ? FUN_0046796c +467974 5 ? FUN_00467974 +46797c 283 ? FUN_0046797c +467a9c 104 ? FUN_00467a9c +467b04 47 ? FUN_00467b04 +467b34 212 ? FUN_00467b34 +467c0c 6 ? FUN_00467c0c +467c12 641 ? FUN_00467c12 +467e9c 503 ? FUN_00467e9c +468098 112 ? FUN_00468098 +468108 134 ? FUN_00468108 +468190 351 ? FUN_00468190 +4682f4 197 ? FUN_004682f4 +4683b9 35 ? FUN_004683b9 +4683dc 44 ? FUN_004683dc +468408 110 ? FUN_00468408 +46853c 75 ? FUN_0046853c +468587 31 ? FUN_00468587 +4685a6 44 ? FUN_004685a6 +4685d2 35 ? FUN_004685d2 +4685f5 44 ? FUN_004685f5 +468621 47 ? FUN_00468621 +468650 44 ? FUN_00468650 +46867c 80 ? FUN_0046867c +4686cc 75 ? FUN_004686cc +468717 48 ? FUN_00468717 +468747 48 ? FUN_00468747 +468778 35 ? FUN_00468778 +46879c 58 ? FUN_0046879c +4687d8 27 ? FUN_004687d8 +4687f4 15 ? FUN_004687f4 +468803 15 ? FUN_00468803 +468812 25 ? FUN_00468812 +46882b 51 ? FUN_0046882b +46885e 112 ? FUN_0046885e +4688ce 112 ? FUN_004688ce +46893e 35 ? FUN_0046893e +468961 35 ? FUN_00468961 +468984 56 ? FUN_00468984 +4689bc 56 ? FUN_004689bc +4689f4 78 ? FUN_004689f4 +468a42 41 ? FUN_00468a42 +468a6b 41 ? FUN_00468a6b +468a94 63 ? FUN_00468a94 +468ad3 15 ? FUN_00468ad3 +468ae4 150 ? FUN_00468ae4 +468b7c 136 ? FUN_00468b7c +468c04 98 ? FUN_00468c04 +468c68 10 ? FUN_00468c68 +468c74 513 ? FUN_00468c74 +468e78 33 ? FUN_00468e78 +468e9c 48 ? FUN_00468e9c +468ecc 115 ? FUN_00468ecc +468f40 1152 ? FUN_00468f40 +4693e0 312 ? FUN_004693e0 +469518 13 ? FUN_00469518 +469528 890 ? FUN_00469528 +4698a4 918 ? FUN_004698a4 +469c3c 1192 ? FUN_00469c3c +46a0e4 708 ? FUN_0046a0e4 +46a3a8 110 ? FUN_0046a3a8 +46a418 44 ? FUN_0046a418 +46a444 10 ? FUN_0046a444 +46a450 434 ? FUN_0046a450 +46a604 86 ? FUN_0046a604 +46a65c 128 ? FUN_0046a65c +46a6dc 124 ? FUN_0046a6dc +46a758 5 ? FUN_0046a758 +46a760 171 ? FUN_0046a760 +46a80c 175 ? FUN_0046a80c +46a8bc 173 ? FUN_0046a8bc +46a96c 171 ? FUN_0046a96c +46aa18 93 ? FUN_0046aa18 +46aa78 24 ? FUN_0046aa78 +46aa90 15 ? FUN_0046aa90 +46aaa0 13 ? FUN_0046aaa0 +46aab0 47 ? FUN_0046aab0 +46aae0 54 ? FUN_0046aae0 +46ab18 29 ? FUN_0046ab18 +46ab38 24 ? FUN_0046ab38 +46ab50 183 ? FUN_0046ab50 +46ac08 96 ? FUN_0046ac08 +46ac68 10 ? FUN_0046ac68 +46ac74 591 ? FUN_0046ac74 +46aec4 89 ? FUN_0046aec4 +46af20 46 ? FUN_0046af20 +46af50 168 ? FUN_0046af50 +46aff8 1724 ? FUN_0046aff8 +46b6d4 583 ? FUN_0046b6d4 +46b91c 13 ? FUN_0046b91c +46b92c 1229 ? FUN_0046b92c +46bdfc 1317 ? FUN_0046bdfc +46c324 1950 ? FUN_0046c324 +46cac4 1040 ? FUN_0046cac4 +46ced4 378 ? FUN_0046ced4 +46d050 341 ? FUN_0046d050 +46d1a8 15 ? FUN_0046d1a8 +46d1b8 165 ? FUN_0046d1b8 +46d260 419 ? FUN_0046d260 +46d404 41 ? FUN_0046d404 +46d430 101 ? FUN_0046d430 +46d4a0 99 ? FUN_0046d4a0 +46d50c 224 ? FUN_0046d50c +46d694 415 ? FUN_0046d694 +46d840 15 ? FUN_0046d840 +46d850 203 ? FUN_0046d850 +46d91c 44 ? FUN_0046d91c +46d948 10 ? FUN_0046d948 +46d954 520 ? FUN_0046d954 +46db5c 39 ? FUN_0046db5c +46db84 85 ? FUN_0046db84 +46dbdc 193 ? FUN_0046dbdc +46dca0 95 ? FUN_0046dca0 +46dd00 137 ? FUN_0046dd00 +46dd8c 133 ? FUN_0046dd8c +46de14 5 ? FUN_0046de14 +46de1c 187 ? FUN_0046de1c +46ded8 195 ? FUN_0046ded8 +46df9c 187 ? FUN_0046df9c +46e058 187 ? FUN_0046e058 +46e114 108 ? FUN_0046e114 +46e180 97 ? FUN_0046e180 +46e1e4 310 ? FUN_0046e1e4 +46e31c 296 ? FUN_0046e31c +46e444 306 ? FUN_0046e444 +46e578 216 ? FUN_0046e578 +46e650 66 ? FUN_0046e650 +46e694 88 ? FUN_0046e694 +46e6ec 22 ? FUN_0046e6ec +46e702 41 ? FUN_0046e702 +46e72c 89 ? FUN_0046e72c +46e788 868 ? FUN_0046e788 +46eaf0 40 ? FUN_0046eaf0 +46eb18 74 ? FUN_0046eb18 +46eb64 7 ? FUN_0046eb64 +46eb6c 130 ? FUN_0046eb6c +46ebf0 236 ? FUN_0046ebf0 +46ecdc 88 ? FUN_0046ecdc +46ed34 335 ? FUN_0046ed34 +46ee84 569 ? FUN_0046ee84 +46f0c0 193 ? FUN_0046f0c0 +46f184 10 ? FUN_0046f184 +46f190 96 ? FUN_0046f190 +46f1f0 67 ? FUN_0046f1f0 +46f234 305 ? FUN_0046f234 +46f368 10 ? FUN_0046f368 +46f374 244 ? FUN_0046f374 +46f468 151 ? FUN_0046f468 +46f500 45 ? FUN_0046f500 +46f530 563 ? FUN_0046f530 +46f768 10 ? FUN_0046f768 +46f774 273 ? FUN_0046f774 +46f888 230 ? FUN_0046f888 +46f97c 589 ? FUN_0046f97c +46fbcc 141 ? FUN_0046fbcc +46fc5c 41 ? FUN_0046fc5c +46fc88 15 ? FUN_0046fc88 +46fc98 21 ? FUN_0046fc98 +46fcb0 15 ? FUN_0046fcb0 +46fcc0 15 ? FUN_0046fcc0 +46fcd0 15 ? FUN_0046fcd0 +46fce0 46 ? FUN_0046fce0 +46fd10 90 ? FUN_0046fd10 +46fd6c 49 ? FUN_0046fd6c +46fda0 47 ? FUN_0046fda0 +46fdd0 159 ? FUN_0046fdd0 +46fe70 80 ? FUN_0046fe70 +46fec0 99 ? FUN_0046fec0 +46ff24 30 ? FUN_0046ff24 +46ff44 30 ? FUN_0046ff44 +46ff64 102 ? FUN_0046ff64 +46ffcc 108 ? FUN_0046ffcc +47003c 70 ? FUN_0047003c +470084 10 ? FUN_00470084 +4700ac 15 ? FUN_004700ac +4700bc 204 ? FUN_004700bc +47018c 60 ? FUN_0047018c +4701c8 10 ? FUN_004701c8 +4701d4 523 ? FUN_004701d4 +4703f4 30 ? FUN_004703f4 +470414 27 ? FUN_00470414 +470430 6 ? FUN_00470430 +470436 794 ? FUN_00470436 +470758 78 ? FUN_00470758 +4707a8 223 ? FUN_004707a8 +470888 195 ? FUN_00470888 +47094c 73 ? FUN_0047094c +470998 15 ? FUN_00470998 +4709a8 145 ? FUN_004709a8 +470a3c 21 ? FUN_00470a3c +470a54 31 ? FUN_00470a54 +470a74 33 ? FUN_00470a74 +470a98 218 ? FUN_00470a98 +470b74 92 ? FUN_00470b74 +470bd0 69 ? FUN_00470bd0 +470cfc 195 ? FUN_00470cfc +470dc0 73 ? FUN_00470dc0 +470e0c 15 ? FUN_00470e0c +470e1c 145 ? FUN_00470e1c +470eb0 21 ? FUN_00470eb0 +470ec8 31 ? FUN_00470ec8 +470ee8 39 ? FUN_00470ee8 +470f10 216 ? FUN_00470f10 +470fe8 145 ? FUN_00470fe8 +47107c 73 ? FUN_0047107c +4710c8 15 ? FUN_004710c8 +4710d8 223 ? FUN_004710d8 +4711b8 21 ? FUN_004711b8 +4711d0 44 ? FUN_004711d0 +4711fc 439 ? FUN_004711fc +4713e0 391 ? FUN_004713e0 +471568 133 ? FUN_00471568 +4715f0 88 ? FUN_004715f0 +471648 95 ? FUN_00471648 +4716a8 101 ? FUN_004716a8 +471710 104 ? FUN_00471710 +471778 78 ? FUN_00471778 +4717c8 88 ? FUN_004717c8 +471820 98 ? FUN_00471820 +471884 51 ? FUN_00471884 +4718b8 130 ? FUN_004718b8 +47193c 98 ? FUN_0047193c +4719a0 51 ? FUN_004719a0 +4719d4 229 ? FUN_004719d4 +471abc 110 ? FUN_00471abc +471b2c 95 ? FUN_00471b2c +471b8c 15 ? FUN_00471b8c +471b9c 112 ? FUN_00471b9c +471c0c 243 ? FUN_00471c0c +471d00 122 ? FUN_00471d00 +471d7c 95 ? FUN_00471d7c +471ddc 15 ? FUN_00471ddc +471dec 173 ? FUN_00471dec +471e9c 147 ? FUN_00471e9c +471f30 239 ? FUN_00471f30 +472020 189 ? FUN_00472020 +4720e0 15 ? FUN_004720e0 +4720f0 5 ? FUN_004720f0 +4720f8 44 ? FUN_004720f8 +472124 85 ? FUN_00472124 +47217c 17 ? FUN_0047217c +472190 285 ? FUN_00472190 +4722b0 178 ? FUN_004722b0 +472364 44 ? FUN_00472364 +472390 15 ? FUN_00472390 +4723a0 204 ? FUN_004723a0 +47246c 18 ? FUN_0047246c +472480 1562 ? FUN_00472480 +472ac4 28 munga_l4/l4gauge.cpp FUN_00472ac4 +472ae0 165 ? FUN_00472ae0 +472b88 153 ? FUN_00472b88 +472c24 44 ? FUN_00472c24 +472c50 15 ? FUN_00472c50 +472c60 280 ? FUN_00472c60 +472d78 72 ? FUN_00472d78 +472dc0 72 ? FUN_00472dc0 +472e08 229 ? FUN_00472e08 +472ef0 193 ? FUN_00472ef0 +472fb4 90 ? FUN_00472fb4 +473010 15 ? FUN_00473010 +473020 284 ? FUN_00473020 +47313c 155 ? FUN_0047313c +4731d8 72 ? FUN_004731d8 +473220 222 ? FUN_00473220 +473300 184 ? FUN_00473300 +4733b8 92 ? FUN_004733b8 +473414 15 ? FUN_00473414 +473424 284 ? FUN_00473424 +473540 130 ? FUN_00473540 +4735c4 148 ? FUN_004735c4 +473658 206 ? FUN_00473658 +473728 210 ? FUN_00473728 +4737fc 90 ? FUN_004737fc +473858 10 ? FUN_00473858 +473864 5 ? FUN_00473864 +47386c 18 ? FUN_0047386c +473880 185 ? FUN_00473880 +47393c 154 ? FUN_0047393c +4739d8 180 ? FUN_004739d8 +473a8c 90 ? FUN_00473a8c +473ae8 10 ? FUN_00473ae8 +473af4 5 ? FUN_00473af4 +473afc 18 ? FUN_00473afc +473b10 156 ? FUN_00473b10 +473bac 230 ? FUN_00473bac +473c94 280 ? FUN_00473c94 +473dac 73 ? FUN_00473dac +473df8 15 ? FUN_00473df8 +473e08 145 ? FUN_00473e08 +473e9c 31 ? FUN_00473e9c +473ebc 136 ? FUN_00473ebc +473f44 310 ? FUN_00473f44 +474094 44 ? FUN_00474094 +4740c0 10 ? FUN_004740c0 +4740cc 545 ? FUN_004740cc +4742f0 16 ? FUN_004742f0 +474300 578 ? FUN_00474300 +4745e0 145 ? FUN_004745e0 +474855 50 ? FUN_00474855 +474887 44 ? FUN_00474887 +4748b3 18 ? FUN_004748b3 +4748c5 266 ? FUN_004748c5 +4749cf 15 ? FUN_004749cf +4749de 50 ? FUN_004749de +474a10 44 ? FUN_00474a10 +474a3c 18 ? FUN_00474a3c +474a4e 261 ? FUN_00474a4e +474b53 15 ? FUN_00474b53 +474b62 38 ? FUN_00474b62 +474b88 52 ? FUN_00474b88 +474bbc 52 ? FUN_00474bbc +474bf0 52 ? FUN_00474bf0 +474c24 38 ? FUN_00474c24 +474c4c 75 ? FUN_00474c4c +474c98 74 ? FUN_00474c98 +474ce4 15 ? FUN_00474ce4 +474cf4 94 ? FUN_00474cf4 +474d54 41 ? FUN_00474d54 +474d80 65 ? FUN_00474d80 +474dc4 55 ? FUN_00474dc4 +474dfc 15 ? FUN_00474dfc +474e0c 14 ? FUN_00474e0c +474e1c 117 ? FUN_00474e1c +474e94 80 ? FUN_00474e94 +474ee4 179 ? FUN_00474ee4 +474f98 81 ? FUN_00474f98 +474fec 15 ? FUN_00474fec +474ffc 184 ? FUN_00474ffc +4750b4 183 ? FUN_004750b4 +47516c 199 ? FUN_0047516c +47524c 126 ? FUN_0047524c +4752cc 161 ? FUN_004752cc +475370 57 ? FUN_00475370 +4753ac 185 ? FUN_004753ac +475468 86 ? FUN_00475468 +4754c8 163 ? FUN_004754c8 +47556c 150 ? FUN_0047556c +475604 34 ? FUN_00475604 +475628 62 ? FUN_00475628 +475668 43 ? FUN_00475668 +475694 28 munga_l4/l4ctrl.cpp FUN_00475694 +4756b0 40 ? FUN_004756b0 +4756d8 42 ? FUN_004756d8 +475704 44 ? FUN_00475704 +475730 128 ? FUN_00475730 +4757b0 10 ? FUN_004757b0 +4757bc 123 ? FUN_004757bc +475838 145 ? FUN_00475838 +4758cc 357 ? FUN_004758cc +475a54 78 ? FUN_00475a54 +475aa4 52 ? FUN_00475aa4 +475ad8 44 ? FUN_00475ad8 +475b04 273 ? FUN_00475b04 +475c18 1661 ? FUN_00475c18 +476298 443 ? FUN_00476298 +476454 46 ? FUN_00476454 +476484 227 ? FUN_00476484 +476568 35 ? FUN_00476568 +47658c 2199 ? FUN_0047658c +476e34 30 ? FUN_00476e34 +476e54 54 ? FUN_00476e54 +476e8c 30 ? FUN_00476e8c +476eac 64 ? FUN_00476eac +476eec 35 ? FUN_00476eec +476f10 35 ? FUN_00476f10 +476f34 68 ? FUN_00476f34 +476f78 71 ? FUN_00476f78 +476fc0 122 ? FUN_00476fc0 +47703c 581 munga_l4/l4ctrl.cpp FUN_0047703c +477284 94 ? FUN_00477284 +4772e8 74 ? FUN_004772e8 +477334 82 ? FUN_00477334 +477388 15 ? FUN_00477388 +477398 235 ? FUN_00477398 +477484 884 ? FUN_00477484 +477800 266 ? FUN_00477800 +47790c 129 ? FUN_0047790c +477990 161 ? FUN_00477990 +477a8e 8 ? FUN_00477a8e +477a96 10 ? FUN_00477a96 +477aa0 25 ? FUN_00477aa0 +477ab9 44 ? FUN_00477ab9 +477ae5 35 ? FUN_00477ae5 +477b08 30 ? FUN_00477b08 +477b26 75 ? FUN_00477b26 +477b71 71 ? FUN_00477b71 +477bb8 228 ? FUN_00477bb8 +477c9c 214 ? FUN_00477c9c +477d72 144 ? FUN_00477d72 +477e02 10 ? FUN_00477e02 +477e0c 25 ? FUN_00477e0c +477e25 44 ? FUN_00477e25 +477e51 55 ? FUN_00477e51 +477e88 36 ? FUN_00477e88 +477eac 75 ? FUN_00477eac +477ef7 71 ? FUN_00477ef7 +477f3e 228 ? FUN_00477f3e +478022 214 ? FUN_00478022 +4780f8 144 ? FUN_004780f8 +478188 10 ? FUN_00478188 +478192 25 ? FUN_00478192 +4781ab 44 ? FUN_004781ab +4781d7 32 ? FUN_004781d7 +4781f7 30 ? FUN_004781f7 +478215 75 ? FUN_00478215 +478260 71 ? FUN_00478260 +4782a7 228 ? FUN_004782a7 +47838b 214 ? FUN_0047838b +478461 144 ? FUN_00478461 +4784f1 10 ? FUN_004784f1 +4784fb 25 ? FUN_004784fb +478514 44 ? FUN_00478514 +478540 55 ? FUN_00478540 +478577 36 ? FUN_00478577 +47859b 75 ? FUN_0047859b +4785e6 71 ? FUN_004785e6 +47862d 228 ? FUN_0047862d +478711 214 ? FUN_00478711 +4787e7 144 ? FUN_004787e7 +478877 49 ? FUN_00478877 +4788a8 61 ? FUN_004788a8 +4788e5 44 ? FUN_004788e5 +478911 80 ? FUN_00478911 +478961 15 ? FUN_00478961 +478970 43 ? FUN_00478970 +47899b 55 ? FUN_0047899b +4789d2 44 ? FUN_004789d2 +4789fe 18 ? FUN_004789fe +478a10 15 ? FUN_00478a10 +478a1f 49 ? FUN_00478a1f +478a50 61 ? FUN_00478a50 +478a8d 44 ? FUN_00478a8d +478ab9 86 ? FUN_00478ab9 +478b0f 15 ? FUN_00478b0f +478b1e 43 ? FUN_00478b1e +478b49 55 ? FUN_00478b49 +478b80 44 ? FUN_00478b80 +478bac 24 ? FUN_00478bac +478bc4 15 ? FUN_00478bc4 +478bd3 49 ? FUN_00478bd3 +478c04 61 ? FUN_00478c04 +478c41 44 ? FUN_00478c41 +478c6d 80 ? FUN_00478c6d +478cbd 15 ? FUN_00478cbd +478ccc 43 ? FUN_00478ccc +478cf7 55 ? FUN_00478cf7 +478d2e 44 ? FUN_00478d2e +478d5a 18 ? FUN_00478d5a +478d6c 15 ? FUN_00478d6c +478d7b 49 ? FUN_00478d7b +478dac 61 ? FUN_00478dac +478de9 44 ? FUN_00478de9 +478e15 86 ? FUN_00478e15 +478e6b 15 ? FUN_00478e6b +478e7a 43 ? FUN_00478e7a +478ea5 55 ? FUN_00478ea5 +478edc 44 ? FUN_00478edc +478f08 24 ? FUN_00478f08 +478f20 15 ? FUN_00478f20 +478f2f 135 ? FUN_00478f2f +478fb8 32 ? FUN_00478fb8 +478fd8 45 ? FUN_00478fd8 +479008 10 ? FUN_00479008 +479014 72 ? FUN_00479014 +47905c 35 ? FUN_0047905c +479080 35 ? FUN_00479080 +4790a4 33 ? FUN_004790a4 +4790c8 70 ? FUN_004790c8 +479110 71 ? FUN_00479110 +479158 208 ? FUN_00479158 +479228 257 ? FUN_00479228 +47932c 47 ? FUN_0047932c +47935c 14 ? FUN_0047935c +47936c 43 ? FUN_0047936c +479398 27 ? FUN_00479398 +4793b4 193 ? FUN_004793b4 +479478 310 ? FUN_00479478 +4795b0 10 ? FUN_004795b0 +4795bc 106 ? FUN_004795bc +47962c 48 ? FUN_0047962c +47965c 25 ? FUN_0047965c +479678 10 ? FUN_00479678 +479684 51 ? FUN_00479684 +4796b8 13 ? FUN_004796b8 +4796c8 1062 ? FUN_004796c8 +479b78 1095 ? FUN_00479b78 +479fd0 259 ? FUN_00479fd0 +47a0e8 935 ? FUN_0047a0e8 +47a4cc 36 ? FUN_0047a4cc +47a4f0 46 ? FUN_0047a4f0 +47a520 26 ? FUN_0047a520 +47a53c 46 ? FUN_0047a53c +47a56c 40 ? FUN_0047a56c +47a594 40 ? FUN_0047a594 +47a5bc 40 ? FUN_0047a5bc +47a5e4 40 ? FUN_0047a5e4 +47a60c 40 ? FUN_0047a60c +47a634 40 ? FUN_0047a634 +47a65c 40 ? FUN_0047a65c +47a684 40 ? FUN_0047a684 +47a6ac 40 ? FUN_0047a6ac +47a6d4 55 ? FUN_0047a6d4 +47a70c 68 ? FUN_0047a70c +47a750 48 ? FUN_0047a750 +47a780 13 ? FUN_0047a780 +47a78d 34 ? FUN_0047a78d +47a7af 71 ? FUN_0047a7af +47a7f6 37 ? FUN_0047a7f6 +47a81b 10 ? FUN_0047a81b +47a825 39 ? FUN_0047a825 +47a84c 34 ? FUN_0047a84c +47a86e 101 ? FUN_0047a86e +47a8d3 198 ? FUN_0047a8d3 +47aa48 44 ? FUN_0047aa48 +47aa78 309 ? FUN_0047aa78 +47abb0 44 ? FUN_0047abb0 +47abdc 27 ? FUN_0047abdc +47abf8 97 ? FUN_0047abf8 +47ac5c 152 ? FUN_0047ac5c +47acf4 44 ? FUN_0047acf4 +47ad20 27 ? FUN_0047ad20 +47ad3c 152 ? FUN_0047ad3c +47add4 44 ? FUN_0047add4 +47ae00 27 ? FUN_0047ae00 +47b2ec 252 ? FUN_0047b2ec +47b3e8 40 ? FUN_0047b3e8 +47b410 60 ? FUN_0047b410 +47b44c 27 ? FUN_0047b44c +47b468 15 ? FUN_0047b468 +47b478 36 ? FUN_0047b478 +47b49c 35 ? FUN_0047b49c +47b4c0 69 ? FUN_0047b4c0 +47b508 39 ? FUN_0047b508 +47b530 73 ? FUN_0047b530 +47b57c 82 ? FUN_0047b57c +47b5d0 55 ? FUN_0047b5d0 +47b608 28 ? FUN_0047b608 +47b624 44 ? FUN_0047b624 +47b650 37 ? FUN_0047b650 +47b678 271 munga_l4/l4app.cpp FUN_0047b678 +47b788 218 munga_l4/l4app.cpp FUN_0047b788 +47b864 126 ? FUN_0047b864 +47bb20 19 ? FUN_0047bb20 +47bb34 115 ? FUN_0047bb34 +47bba8 105 ? FUN_0047bba8 +47bd48 25 ? FUN_0047bd48 +47bd64 44 ? FUN_0047bd64 +47bd90 5 ? FUN_0047bd90 +47bd98 5 ? FUN_0047bd98 +47bda0 44 ? FUN_0047bda0 +47bdcc 5 ? FUN_0047bdcc +47bdd4 25 ? FUN_0047bdd4 +47bdf0 311 ? FUN_0047bdf0 +47bf28 44 ? FUN_0047bf28 +47bf54 110 ? FUN_0047bf54 +47bfc4 32 ? FUN_0047bfc4 +47bfe4 6 ? FUN_0047bfe4 +47bfea 517 ? FUN_0047bfea +47c1f0 109 ? FUN_0047c1f0 +47c260 7 ? FUN_0047c260 +47c268 44 ? FUN_0047c268 +47c294 22 ? FUN_0047c294 +47c2ac 22 ? FUN_0047c2ac +47c2c4 139 ? FUN_0047c2c4 +47c380 121 ? FUN_0047c380 +47c3fc 53 ? FUN_0047c3fc +47c434 7 ? FUN_0047c434 +47c43c 32 ? FUN_0047c43c +47c45c 35 ? FUN_0047c45c +47c480 48 ? FUN_0047c480 +47c4b0 5 ? FUN_0047c4b0 +47c4b8 7 ? FUN_0047c4b8 +47c4c0 7 ? FUN_0047c4c0 +47c4c8 7 ? FUN_0047c4c8 +47c4d0 45 ? FUN_0047c4d0 +47c500 7 ? FUN_0047c500 +47c508 45 ? FUN_0047c508 +47c538 38 ? FUN_0047c538 +47c560 45 ? FUN_0047c560 +47c590 44 ? FUN_0047c590 +47c5bc 27 ? FUN_0047c5bc +47c5d8 29 ? FUN_0047c5d8 +47c5f8 28 munga_l4/l4splr.cpp FUN_0047c5f8 +47c614 30 munga_l4/l4splr.cpp FUN_0047c614 +47c634 253 ? FUN_0047c634 +47c734 44 ? FUN_0047c734 +47c7e8 34 ? FUN_0047c7e8 +47c80c 116 ? FUN_0047c80c +47c880 149 ? FUN_0047c880 +47c918 20 ? FUN_0047c918 +47c92c 32 ? FUN_0047c92c +47c94c 104 ? FUN_0047c94c +47c9b4 114 ? FUN_0047c9b4 +47ca28 57 ? FUN_0047ca28 +47ca64 547 ? FUN_0047ca64 +47cca0 33 ? FUN_0047cca0 +47ccc4 74 ? FUN_0047ccc4 +47cd10 70 ? FUN_0047cd10 +47cd58 104 ? FUN_0047cd58 +47cdc0 122 ? FUN_0047cdc0 +47ce3c 63 ? FUN_0047ce3c +47ce7c 58 ? FUN_0047ce7c +47ceb8 27 ? FUN_0047ceb8 +47ced4 101 ? FUN_0047ced4 +47cf3c 21 ? FUN_0047cf3c +47cf54 15 ? FUN_0047cf54 +47cf64 158 ? FUN_0047cf64 +47d062 31 ? FUN_0047d062 +47d081 44 ? FUN_0047d081 +47d0b0 30 ? FUN_0047d0b0 +47d0ce 65 ? FUN_0047d0ce +47d10f 62 ? FUN_0047d10f +47d14d 53 ? FUN_0047d14d +47d184 416 ? FUN_0047d184 +47d324 108 ? FUN_0047d324 +47d3fd 43 ? FUN_0047d3fd +47d428 123 ? FUN_0047d428 +47d4a3 37 ? FUN_0047d4a3 +47d517 17 ? FUN_0047d517 +47d5a2 69 ? FUN_0047d5a2 +47d61b 241 ? FUN_0047d61b +47d70c 97 ? FUN_0047d70c +47d76d 109 ? FUN_0047d76d +47d7da 28 ? FUN_0047d7da +47d7f6 82 ? FUN_0047d7f6 +47d848 67 ? FUN_0047d848 +47d88b 64 ? FUN_0047d88b +47d8cb 39 ? FUN_0047d8cb +47d8f2 64 ? FUN_0047d8f2 +47d962 26 ? FUN_0047d962 +47d97c 120 ? FUN_0047d97c +47d9f4 637 ? FUN_0047d9f4 +47dc71 114 ? FUN_0047dc71 +47dce3 247 ? FUN_0047dce3 +47ddda 283 ? FUN_0047ddda +47def5 37 ? FUN_0047def5 +47df1a 45 ? FUN_0047df1a +47df47 25 ? FUN_0047df47 +47df82 17 ? FUN_0047df82 +47df93 56 ? FUN_0047df93 +47dfcb 23 ? FUN_0047dfcb +47dfe2 769 ? FUN_0047dfe2 +47e2e6 676 ? FUN_0047e2e6 +47e5c1 156 ? FUN_0047e5c1 +47e661 50 ? FUN_0047e661 +47e693 45 ? FUN_0047e693 +47e6c0 260 ? FUN_0047e6c0 +47e7c4 54 ? FUN_0047e7c4 +47e7fa 101 ? FUN_0047e7fa +47e85f 48 ? FUN_0047e85f +47e88f 54 ? FUN_0047e88f +47e8c5 41 ? FUN_0047e8c5 +47e8ee 53 ? FUN_0047e8ee +47e923 80 ? FUN_0047e923 +47e973 35 ? FUN_0047e973 +47e996 35 ? FUN_0047e996 +47e9b9 68 ? FUN_0047e9b9 +47e9fd 80 ? FUN_0047e9fd +47ea4d 48 ? FUN_0047ea4d +47ea7d 35 ? FUN_0047ea7d +47eaa0 83 ? FUN_0047eaa0 +47eaf3 53 ? FUN_0047eaf3 +47eb28 41 ? FUN_0047eb28 +47eb51 38 ? FUN_0047eb51 +47eb77 39 ? FUN_0047eb77 +47eb9e 42 ? FUN_0047eb9e +47ebc8 53 ? FUN_0047ebc8 +47ebfd 53 ? FUN_0047ebfd +47ec32 63 ? FUN_0047ec32 +47ec71 71 ? FUN_0047ec71 +47ecbb 54 ? FUN_0047ecbb +47ecf1 53 ? FUN_0047ecf1 +47ed26 43 ? FUN_0047ed26 +47ed51 29 ? FUN_0047ed51 +47ed6e 62 ? FUN_0047ed6e +47eddd 105 ? FUN_0047eddd +47ee49 77 ? FUN_0047ee49 +47ee96 128 ? FUN_0047ee96 +47ef16 42 ? FUN_0047ef16 +47ef40 4 ? FUN_0047ef40 +47ef44 4 ? FUN_0047ef44 +47ef48 53 ? FUN_0047ef48 +47ef7d 84 ? FUN_0047ef7d +47efd1 35 ? FUN_0047efd1 +47eff4 26 ? FUN_0047eff4 +47f013 3 ? FUN_0047f013 +47f016 35 ? FUN_0047f016 +47f03a 5 ? FUN_0047f03a +47f03f 573 ? FUN_0047f03f +47f27c 184 ? FUN_0047f27c +47f334 497 ? FUN_0047f334 +47f525 125 ? FUN_0047f525 +47f5a2 5 ? FUN_0047f5a2 +47f629 312 ? FUN_0047f629 +47f807 93 ? FUN_0047f807 +47f8a2 5 ? FUN_0047f8a2 +47f8a7 412 ? FUN_0047f8a7 +47fa43 412 ? FUN_0047fa43 +47fbdf 55 ? FUN_0047fbdf +47fc16 22 ? FUN_0047fc16 +47fc2c 2191 ? FUN_0047fc2c +4804bd 457 ? FUN_004804bd +480686 180 ? FUN_00480686 +48073c 80 ? FUN_0048073c +48078c 35 ? FUN_0048078c +4807af 23 ? FUN_004807af +4807c6 23 ? FUN_004807c6 +4807dd 23 ? FUN_004807dd +4807f4 23 ? FUN_004807f4 +48080b 23 ? FUN_0048080b +480822 5 ? FUN_00480822 +480827 5 ? FUN_00480827 +48082c 99 ? FUN_0048082c +48088f 5 ? FUN_0048088f +480894 5 ? FUN_00480894 +4809ba 112 ? FUN_004809ba +48116d 149 ? FUN_0048116d +481286 5 ? FUN_00481286 +48130d 70 ? FUN_0048130d +481353 130 ? FUN_00481353 +4813d5 44 ? FUN_004813d5 +481401 44 ? FUN_00481401 +48142d 83 ? FUN_0048142d +481480 89 ? FUN_00481480 +4814d9 9 ? FUN_004814d9 +4814e4 5 ? FUN_004814e4 +4814e9 19 ? FUN_004814e9 +4814fc 5 ? FUN_004814fc +481528 61 ? FUN_00481528 +481675 61 ? FUN_00481675 +48186d 5 ? FUN_0048186d +481872 194 ? FUN_00481872 +481934 31 ? FUN_00481934 +481953 470 ? FUN_00481953 +481b29 345 ? FUN_00481b29 +481c82 379 ? FUN_00481c82 +481dfd 19 ? FUN_00481dfd +481e10 27 ? FUN_00481e10 +481eff 10 ? FUN_00481eff +481f09 5 ? FUN_00481f09 +481f0e 5 ? FUN_00481f0e +481f13 90 ? FUN_00481f13 +481f6d 5 ? FUN_00481f6d +481f72 5 ? FUN_00481f72 +48255c 43 ? FUN_0048255c +482587 110 ? FUN_00482587 +4826d1 474 ? FUN_004826d1 +4828ab 94 ? FUN_004828ab +482909 72 ? FUN_00482909 +482951 26 ? FUN_00482951 +48296b 26 ? FUN_0048296b +482985 38 ? FUN_00482985 +482c9f 5 ? FUN_00482c9f +482ca4 5 ? FUN_00482ca4 +482ca9 24 ? FUN_00482ca9 +482cc1 5 ? FUN_00482cc1 +482cc6 5 ? FUN_00482cc6 +482ccb 612 ? FUN_00482ccb +482f2f 612 ? FUN_00482f2f +483193 270 ? FUN_00483193 +4832a1 33 ? FUN_004832a1 +4832c2 1004 ? FUN_004832c2 +4836b0 233 ? FUN_004836b0 +483799 239 ? FUN_00483799 +483888 23 ? FUN_00483888 +48389f 5 ? FUN_0048389f +4838a4 5 ? FUN_004838a4 +4838a9 572 ? FUN_004838a9 +483ae7 170 ? FUN_00483ae7 +483b91 5 ? FUN_00483b91 +483b96 5 ? FUN_00483b96 +483df0 150 ? FUN_00483df0 +483f75 257 ? FUN_00483f75 +48416d 5 ? FUN_0048416d +484172 5 ? FUN_00484172 +484177 8 ? FUN_00484177 +48417f 5 ? FUN_0048417f +484184 5 ? FUN_00484184 +484189 120 ? FUN_00484189 +484201 22 ? FUN_00484201 +484217 5 ? FUN_00484217 +48421c 5 ? FUN_0048421c +484221 15 ? FUN_00484221 +484230 948 ? FUN_00484230 +4845e4 315 ? FUN_004845e4 +48471f 119 ? FUN_0048471f +484796 34 ? FUN_00484796 +4847b8 318 ? FUN_004847b8 +4848f8 47 ? FUN_004848f8 +484927 5 ? FUN_00484927 +48492c 5 ? FUN_0048492c +484931 187 ? FUN_00484931 +4849ec 5 ? FUN_004849ec +4849f1 145 ? FUN_004849f1 +484a84 337 ? FUN_00484a84 +484bd7 348 ? FUN_00484bd7 +484d35 315 ? FUN_00484d35 +484e72 100 ? FUN_00484e72 +485020 268 ? FUN_00485020 +48512e 5 ? FUN_0048512e +485133 5 ? FUN_00485133 +485138 15 ? FUN_00485138 +485147 31 ? FUN_00485147 +485166 7 ? FUN_00485166 +48516d 7 ? FUN_0048516d +485174 7 ? FUN_00485174 +48517b 15 ? FUN_0048517b +48518a 5 ? FUN_0048518a +48518f 5 ? FUN_0048518f +485194 70 ? FUN_00485194 +4852b1 12 ? FUN_004852b1 +4852bd 5 ? FUN_004852bd +4852c2 5 ? FUN_004852c2 +4852c7 3179 ? FUN_004852c7 +485f3e 1220 ? FUN_00485f3e +486402 72 ? FUN_00486402 +48644a 19 ? FUN_0048644a +48645d 5 ? FUN_0048645d +486462 5 ? FUN_00486462 +487788 381 ? FUN_00487788 +487905 5 ? FUN_00487905 +48790c 45 ? FUN_0048790c +487939 53 ? FUN_00487939 +48796e 72 ? FUN_0048796e +4879b6 42 ? FUN_004879b6 +4879e0 26 ? FUN_004879e0 +487a02 37 ? FUN_00487a02 +487ca0 50 ? FUN_00487ca0 +487cd4 45 ? FUN_00487cd4 +487d04 147 ? FUN_00487d04 +487d98 38 ? FUN_00487d98 +487dc0 188 ? FUN_00487dc0 +487e7c 156 ? FUN_00487e7c +487f18 25 ? FUN_00487f18 +487f34 66 ? FUN_00487f34 +487f78 67 ? FUN_00487f78 +487fbc 115 ? FUN_00487fbc +488030 33 ? FUN_00488030 +488054 63 ? FUN_00488054 +488094 16 ? FUN_00488094 +4880a4 68 ? FUN_004880a4 +4880e8 97 ? FUN_004880e8 +48814c 99 ? FUN_0048814c +4881b0 99 ? FUN_004881b0 +488214 99 ? FUN_00488214 +488278 99 ? FUN_00488278 +4882dc 99 ? FUN_004882dc +488340 99 ? FUN_00488340 +4883a4 99 ? FUN_004883a4 +488408 116 ? FUN_00488408 +48847c 132 ? FUN_0048847c +488500 108 ? FUN_00488500 +48856c 94 ? FUN_0048856c +4885cc 99 ? FUN_004885cc +488630 124 ? FUN_00488630 +4886ac 108 ? FUN_004886ac +488718 152 ? FUN_00488718 +4887b0 160 ? FUN_004887b0 +488850 110 ? FUN_00488850 +4888c0 99 ? FUN_004888c0 +488924 99 ? FUN_00488924 +488988 79 ? FUN_00488988 +4889d8 88 ? FUN_004889d8 +488a30 132 ? FUN_00488a30 +488ab4 34 ? FUN_00488ab4 +488ad8 26 ? FUN_00488ad8 +488af4 137 ? FUN_00488af4 +488b80 41 ? FUN_00488b80 +488bac 26 ? FUN_00488bac +488bc8 117 ? FUN_00488bc8 +488c80 50 ? FUN_00488c80 +488cb4 53 ? FUN_00488cb4 +488cec 41 ? FUN_00488cec +488d18 54 ? FUN_00488d18 +488d50 54 ? FUN_00488d50 +488d88 109 ? FUN_00488d88 +488df8 74 ? FUN_00488df8 +488e44 120 ? FUN_00488e44 +488ebc 120 ? FUN_00488ebc +488f34 103 ? FUN_00488f34 +488f9c 13 ? FUN_00488f9c +488fac 43 ? FUN_00488fac +488fd8 51 ? FUN_00488fd8 +48900c 184 ? FUN_0048900c +4890fc 52 ? FUN_004890fc +489130 66 ? FUN_00489130 +489174 15 ? FUN_00489174 +489184 144 ? FUN_00489184 +489214 67 ? FUN_00489214 +489258 133 ? FUN_00489258 +4892e0 33 ? FUN_004892e0 +489304 87 ? FUN_00489304 +48935c 44 ? FUN_0048935c +489388 57 ? FUN_00489388 +4893c4 73 ? FUN_004893c4 +489410 89 ? FUN_00489410 +48946c 99 ? FUN_0048946c +4894d0 56 ? FUN_004894d0 +489508 112 ? FUN_00489508 +489578 25 ? FUN_00489578 +489594 90 ? FUN_00489594 +4895f0 22 ? FUN_004895f0 +489608 48 ? FUN_00489608 +489638 147 ? FUN_00489638 +4896cc 35 ? FUN_004896cc +4896f0 22 ? FUN_004896f0 +489708 25 ? FUN_00489708 +489724 22 ? FUN_00489724 +48973c 42 ? FUN_0048973c +489768 29 ? FUN_00489768 +489788 22 ? FUN_00489788 +4897a0 22 ? FUN_004897a0 +4897b8 22 ? FUN_004897b8 +4897d0 22 ? FUN_004897d0 +4897e8 22 ? FUN_004897e8 +489800 22 ? FUN_00489800 +489818 22 ? FUN_00489818 +489830 70 ? FUN_00489830 +489878 63 ? FUN_00489878 +4898b8 63 ? FUN_004898b8 +4898f8 63 ? FUN_004898f8 +489938 94 ? FUN_00489938 +489998 63 ? FUN_00489998 +4899d8 77 ? FUN_004899d8 +489a28 63 ? FUN_00489a28 +489a68 63 ? FUN_00489a68 +489aa8 63 ? FUN_00489aa8 +489ae8 63 ? FUN_00489ae8 +489b28 63 ? FUN_00489b28 +489b68 63 ? FUN_00489b68 +489ba8 44 ? FUN_00489ba8 +489bd4 44 ? FUN_00489bd4 +489c00 89 ? FUN_00489c00 +489c5c 71 ? FUN_00489c5c +489ca4 71 ? FUN_00489ca4 +489cec 164 ? FUN_00489cec +489d90 114 ? FUN_00489d90 +489e04 82 ? FUN_00489e04 +489e58 84 ? FUN_00489e58 +489eac 84 ? FUN_00489eac +489f00 117 ? FUN_00489f00 +489f78 117 ? FUN_00489f78 +489ff0 117 ? FUN_00489ff0 +48a068 200 ? FUN_0048a068 +48a130 82 ? FUN_0048a130 +48a184 25 ? FUN_0048a184 +48a1a0 25 ? FUN_0048a1a0 +48a1bc 38 ? FUN_0048a1bc +48a1e4 87 ? FUN_0048a1e4 +48a23c 87 ? FUN_0048a23c +48a294 87 ? FUN_0048a294 +48a2ec 99 ? FUN_0048a2ec +48a350 60 ? FUN_0048a350 +48a38c 104 ? FUN_0048a38c +48a3f4 109 ? FUN_0048a3f4 +48a464 109 ? FUN_0048a464 +48a4d4 109 ? FUN_0048a4d4 +48a544 81 ? FUN_0048a544 +48a598 61 ? FUN_0048a598 +48a5d8 86 ? FUN_0048a5d8 +48a630 66 ? FUN_0048a630 +48a674 85 ? FUN_0048a674 +48a6cc 72 ? FUN_0048a6cc +48a714 90 ? FUN_0048a714 +48a770 89 ? FUN_0048a770 +48a7cc 104 ? FUN_0048a7cc +48a834 66 ? FUN_0048a834 +48a878 5 ? FUN_0048a878 +48a880 5 ? FUN_0048a880 +48a888 5 ? FUN_0048a888 +48a890 70 ? FUN_0048a890 +48a8d8 68 ? FUN_0048a8d8 +48a91c 99 ? FUN_0048a91c +48a980 121 ? FUN_0048a980 +48a9fc 132 ? FUN_0048a9fc +48aa80 69 ? FUN_0048aa80 +48aac8 66 ? FUN_0048aac8 +48ab0c 90 ? FUN_0048ab0c +48ab68 57 ? FUN_0048ab68 +48aba4 69 ? FUN_0048aba4 +48abec 66 ? FUN_0048abec +48ac30 69 ? FUN_0048ac30 +48ac78 66 ? FUN_0048ac78 +48acbc 69 ? FUN_0048acbc +48ad04 66 ? FUN_0048ad04 +48ad48 69 ? FUN_0048ad48 +48ad90 66 ? FUN_0048ad90 +48add4 55 ? FUN_0048add4 +48ae0c 57 ? FUN_0048ae0c +48ae48 69 ? FUN_0048ae48 +48ae90 69 ? FUN_0048ae90 +48aed8 66 ? FUN_0048aed8 +48af1c 66 ? FUN_0048af1c +48af60 62 ? FUN_0048af60 +48afa0 67 ? FUN_0048afa0 +48afe8 67 ? FUN_0048afe8 +48b02c 73 ? FUN_0048b02c +48b078 55 ? FUN_0048b078 +48b0b0 73 ? FUN_0048b0b0 +48b0fc 53 ? FUN_0048b0fc +48b134 101 ? FUN_0048b134 +48b19c 66 ? FUN_0048b19c +48b1e0 69 ? FUN_0048b1e0 +48b228 66 ? FUN_0048b228 +48b26c 81 ? FUN_0048b26c +48b2c0 87 ? FUN_0048b2c0 +48b318 75 ? FUN_0048b318 +48b364 79 ? FUN_0048b364 +48b3b4 75 ? FUN_0048b3b4 +48b400 79 ? FUN_0048b400 +48b450 90 ? FUN_0048b450 +48b4ac 121 ? FUN_0048b4ac +48b528 66 ? FUN_0048b528 +48b56c 75 ? FUN_0048b56c +48b5b8 79 ? FUN_0048b5b8 +48b608 81 ? FUN_0048b608 +48b65c 87 ? FUN_0048b65c +48b6b4 99 ? FUN_0048b6b4 +48b718 111 ? FUN_0048b718 +48b788 109 ? FUN_0048b788 +48b7f8 66 ? FUN_0048b7f8 +48b83c 89 ? FUN_0048b83c +48b898 97 ? FUN_0048b898 +48b8fc 114 ? FUN_0048b8fc +48b970 95 ? FUN_0048b970 +48b9d0 93 ? FUN_0048b9d0 +48ba30 103 ? FUN_0048ba30 +48ba98 89 ? FUN_0048ba98 +48baf4 95 ? FUN_0048baf4 +48bb54 89 ? FUN_0048bb54 +48bbb0 95 ? FUN_0048bbb0 +48bc10 89 ? FUN_0048bc10 +48bc6c 95 ? FUN_0048bc6c +48bccc 95 ? FUN_0048bccc +48bd2c 103 ? FUN_0048bd2c +48bd94 89 ? FUN_0048bd94 +48bdf0 95 ? FUN_0048bdf0 +48be50 98 ? FUN_0048be50 +48beb4 76 ? FUN_0048beb4 +48bf00 98 ? FUN_0048bf00 +48bf64 76 ? FUN_0048bf64 +48bfb0 98 ? FUN_0048bfb0 +48c014 76 ? FUN_0048c014 +48c060 107 ? FUN_0048c060 +48c0cc 119 ? FUN_0048c0cc +48c144 124 ? FUN_0048c144 +48c1f0 129 ? FUN_0048c1f0 +48c2a0 77 ? FUN_0048c2a0 +48c2f0 57 ? FUN_0048c2f0 +48c32c 75 ? FUN_0048c32c +48c378 79 ? FUN_0048c378 +48c3c8 83 ? FUN_0048c3c8 +48c41c 66 ? FUN_0048c41c +48c460 78 ? FUN_0048c460 +48c4b0 54 ? FUN_0048c4b0 +48c4e8 93 ? FUN_0048c4e8 +48c548 209 ? FUN_0048c548 +48c61c 55 ? FUN_0048c61c +48c654 51 ? FUN_0048c654 +48c688 51 ? FUN_0048c688 +48c6bc 48 ? FUN_0048c6bc +48c6ec 48 ? FUN_0048c6ec +48c71c 52 ? FUN_0048c71c +48c750 50 ? FUN_0048c750 +48c784 48 ? FUN_0048c784 +48c7b4 51 ? FUN_0048c7b4 +48c7e8 53 ? FUN_0048c7e8 +48c820 76 ? FUN_0048c820 +48c86c 61 ? FUN_0048c86c +48c8ac 51 ? FUN_0048c8ac +48c8e0 48 ? FUN_0048c8e0 +48c910 51 ? FUN_0048c910 +48c944 48 ? FUN_0048c944 +48c974 79 ? FUN_0048c974 +48c9c8 231 ? FUN_0048c9c8 +48cab0 48 ? FUN_0048cab0 +48cae0 51 ? FUN_0048cae0 +48cb14 48 ? FUN_0048cb14 +48cb44 53 ? FUN_0048cb44 +48cb7c 59 ? FUN_0048cb7c +48cbb8 36 ? FUN_0048cbb8 +48cbdc 36 ? FUN_0048cbdc +48cc00 33 ? FUN_0048cc00 +48cc24 33 ? FUN_0048cc24 +48cc48 163 ? FUN_0048cc48 +48ccec 121 ? FUN_0048ccec +48cd68 68 ? FUN_0048cd68 +48cdac 68 ? FUN_0048cdac +48cdf0 43 ? FUN_0048cdf0 +48ce1c 28 ? FUN_0048ce1c +48ce38 29 ? FUN_0048ce38 +48ce58 28 ? FUN_0048ce58 +48ce74 26 ? FUN_0048ce74 +48ce90 28 ? FUN_0048ce90 +48ceb4 25 ? FUN_0048ceb4 +48ced0 36 ? FUN_0048ced0 +48cef4 25 ? FUN_0048cef4 +48cf10 37 ? FUN_0048cf10 +48cf38 69 ? FUN_0048cf38 +48cf80 74 ? FUN_0048cf80 +48cfcc 88 ? FUN_0048cfcc +48d024 24 ? FUN_0048d024 +48d050 13 ? FUN_0048d050 +48d060 166 ? FUN_0048d060 +48d108 123 ? FUN_0048d108 +48d184 102 ? FUN_0048d184 +48d1ec 31 ? FUN_0048d1ec +48d20c 20 ? FUN_0048d20c +48d220 116 ? FUN_0048d220 +48d294 117 ? FUN_0048d294 +48d30c 65 ? FUN_0048d30c +48d350 77 ? FUN_0048d350 +48d3a0 42 ? FUN_0048d3a0 +48d3cc 27 ? FUN_0048d3cc +48d3e8 67 ? FUN_0048d3e8 +48d42c 73 ? FUN_0048d42c +48d478 56 ? FUN_0048d478 +48d4b0 34 ? FUN_0048d4b0 +48d4d4 100 ? FUN_0048d4d4 +48d538 34 ? FUN_0048d538 +48d55c 81 ? FUN_0048d55c +48d5b0 34 ? FUN_0048d5b0 +48d5d4 147 ? FUN_0048d5d4 +48d668 34 ? FUN_0048d668 +48d68c 56 ? FUN_0048d68c +48d6c4 100 ? FUN_0048d6c4 +48d728 56 ? FUN_0048d728 +48d760 64 ? FUN_0048d760 +48d7a0 64 ? FUN_0048d7a0 +48d7e0 87 ? FUN_0048d7e0 +48d838 87 ? FUN_0048d838 +48d890 72 ? FUN_0048d890 +48d8d8 72 ? FUN_0048d8d8 +48d920 72 ? FUN_0048d920 +48d968 75 ? FUN_0048d968 +48d9b4 101 ? FUN_0048d9b4 +48da1c 131 ? FUN_0048da1c +48daa0 264 ? FUN_0048daa0 +48dba8 264 ? FUN_0048dba8 +48dcb0 6 ? FUN_0048dcb0 +48dcb6 347 ? FUN_0048dcb6 +48de14 221 ? FUN_0048de14 +48def4 123 ? FUN_0048def4 +48df70 503 ? FUN_0048df70 +48e168 72 ? FUN_0048e168 +48e1b0 53 ? FUN_0048e1b0 +48e1e8 114 ? FUN_0048e1e8 +48e25c 42 ? FUN_0048e25c +48e288 55 ? FUN_0048e288 +48e2c0 25 ? FUN_0048e2c0 +48e2dc 83 ? FUN_0048e2dc +48e330 13 ? FUN_0048e330 +48e340 13 ? FUN_0048e340 +48e350 47 ? FUN_0048e350 +48e380 8 ? FUN_0048e380 +48e388 184 ? FUN_0048e388 +48e440 368 ? FUN_0048e440 +48e5b0 58 ? FUN_0048e5b0 +48e5ec 40 ? FUN_0048e5ec +48e614 114 ? FUN_0048e614 +48e688 40 ? FUN_0048e688 +48e6b0 77 ? FUN_0048e6b0 +48e700 242 ? FUN_0048e700 +48e7f4 228 ? FUN_0048e7f4 +48e8d8 54 ? FUN_0048e8d8 +48e910 90 ? FUN_0048e910 +48e96c 62 ? FUN_0048e96c +48e9ac 120 ? FUN_0048e9ac +48ea24 136 ? FUN_0048ea24 +48eaac 101 ? FUN_0048eaac +48eb14 287 ? FUN_0048eb14 +48ec34 85 ? FUN_0048ec34 +48ec8c 43 ? FUN_0048ec8c +48ecb8 33 ? FUN_0048ecb8 +48ecdc 65 ? FUN_0048ecdc +48ed20 58 ? FUN_0048ed20 +48ed5c 65 ? FUN_0048ed5c +48eda0 113 ? FUN_0048eda0 +48ee14 70 ? FUN_0048ee14 +48ee5c 607 ? FUN_0048ee5c +48f0bc 524 ? FUN_0048f0bc +48f2c8 6 ? FUN_0048f2c8 +48f2ce 605 ? FUN_0048f2ce +48f52c 1594 ? FUN_0048f52c +48fb6c 407 ? FUN_0048fb6c +48fd04 210 ? FUN_0048fd04 +48fdd8 32 ? FUN_0048fdd8 +48fdf8 57 ? FUN_0048fdf8 +48fe34 13 ? FUN_0048fe34 +48fe44 13 ? FUN_0048fe44 +48fe54 18 ? FUN_0048fe54 +48fe68 41 ? FUN_0048fe68 +48fe94 18 ? FUN_0048fe94 +48fea8 31 ? FUN_0048fea8 +48fec8 17 ? FUN_0048fec8 +48fedc 40 ? FUN_0048fedc +48ff04 40 ? FUN_0048ff04 +48ff2c 40 ? FUN_0048ff2c +48ff54 78 ? FUN_0048ff54 +48ffa4 184 ? FUN_0048ffa4 +49005c 20 ? FUN_0049005c +490070 204 ? FUN_00490070 +49016c 27 ? FUN_0049016c +490188 23 ? FUN_00490188 +4901a0 26 ? FUN_004901a0 +4901bc 26 ? FUN_004901bc +4901d8 26 ? FUN_004901d8 +4901f4 26 ? FUN_004901f4 +490210 143 ? FUN_00490210 +4902a0 14 ? FUN_004902a0 +4902b0 47 ? FUN_004902b0 +4902e0 37 ? FUN_004902e0 +490308 40 ? FUN_00490308 +490330 24 ? FUN_00490330 +490348 15 ? FUN_00490348 +490358 15 ? FUN_00490358 +490368 21 ? FUN_00490368 +490380 10 ? FUN_00490380 +49038c 13 ? FUN_0049038c +49039c 42 ? FUN_0049039c +4903c8 124 ? FUN_004903c8 +490444 48 ? FUN_00490444 +490474 25 ? FUN_00490474 +490490 14 ? FUN_00490490 +4904a0 11 ? FUN_004904a0 +4904ac 16 ? FUN_004904ac +4904bc 32 ? FUN_004904bc +4904dc 32 ? FUN_004904dc +4904fc 32 ? FUN_004904fc +49051c 44 ? FUN_0049051c +490548 44 ? FUN_00490548 +490574 57 ? FUN_00490574 +4905b0 15 ? FUN_004905b0 +4905c0 20 ? FUN_004905c0 +4905d4 14 ? FUN_004905d4 +4905e4 11 ? FUN_004905e4 +4905f0 14 ? FUN_004905f0 +490600 11 ? FUN_00490600 +49060c 11 ? FUN_0049060c +490618 8 ? FUN_00490618 +490620 37 ? FUN_00490620 +490648 23 ? FUN_00490648 +490660 28 ? FUN_00490660 +49067c 21 ? FUN_0049067c +490694 15 ? FUN_00490694 +4906a4 29 ? FUN_004906a4 +4906c4 22 ? FUN_004906c4 +4906dc 44 ? FUN_004906dc +490708 21 ? FUN_00490708 +490720 10 ? FUN_00490720 +49072c 19 ? FUN_0049072c +490740 19 ? FUN_00490740 +490754 14 ? FUN_00490754 +490764 16 ? FUN_00490764 +490774 46 ? FUN_00490774 +4907a4 70 ? FUN_004907a4 +4907ec 55 ? FUN_004907ec +490824 70 ? FUN_00490824 +49086c 32 ? FUN_0049086c +49088c 108 ? FUN_0049088c +4908f8 41 ? FUN_004908f8 +490924 16 ? FUN_00490924 +490934 16 ? FUN_00490934 +490944 46 ? FUN_00490944 +490974 70 ? FUN_00490974 +4909bc 70 ? FUN_004909bc +490a04 32 ? FUN_00490a04 +490a24 108 ? FUN_00490a24 +490a90 39 ? FUN_00490a90 +490ab8 36 ? FUN_00490ab8 +490adc 25 ? FUN_00490adc +490af8 106 ? FUN_00490af8 +490b64 32 ? FUN_00490b64 +490b84 104 ? FUN_00490b84 +490bec 21 ? FUN_00490bec +490c04 152 ? FUN_00490c04 +490c9c 595 ? FUN_00490c9c +490ef0 21 ? FUN_00490ef0 +490f08 132 ? FUN_00490f08 +490f8c 59 ? FUN_00490f8c +490fc8 34 ? FUN_00490fc8 +490fec 299 ? FUN_00490fec +491118 377 ? FUN_00491118 +491294 234 ? FUN_00491294 +491380 89 ? FUN_00491380 +4913f0 99 ? FUN_004913f0 +491454 21 ? FUN_00491454 +49146c 80 ? FUN_0049146c +4914c0 212 ? FUN_004914c0 +491594 218 ? FUN_00491594 +491670 216 ? FUN_00491670 +491748 216 ? FUN_00491748 +491820 13 ? FUN_00491820 +491830 95 ? FUN_00491830 +491890 132 ? FUN_00491890 +491914 58 ? FUN_00491914 +491950 131 ? FUN_00491950 +4919d4 25 ? FUN_004919d4 +4919f0 486 ? FUN_004919f0 +491c2c 43 ? FUN_00491c2c +491c58 54 ? FUN_00491c58 +491c90 52 ? FUN_00491c90 +491cc4 54 ? FUN_00491cc4 +491cfc 11 ? FUN_00491cfc +491d08 236 ? FUN_00491d08 +491df4 796 ? FUN_00491df4 +492150 154 ? FUN_00492150 +4921ec 242 ? FUN_004921ec +4922e0 235 ? FUN_004922e0 +4923cc 433 ? FUN_004923cc +492580 163 ? FUN_00492580 +492624 91 ? FUN_00492624 +492680 235 ? FUN_00492680 +49276c 48 ? FUN_0049276c +49279c 32 ? FUN_0049279c +4927bc 133 ? FUN_004927bc +492844 277 ? FUN_00492844 +49295c 73 ? FUN_0049295c +4929a8 232 ? FUN_004929a8 +492a90 74 ? FUN_00492a90 +492adc 65 ? FUN_00492adc +492b20 125 ? FUN_00492b20 +492ba0 106 ? FUN_00492ba0 +492c0c 118 ? FUN_00492c0c +492c84 45 ? FUN_00492c84 +492cb4 89 ? FUN_00492cb4 +492d10 112 ? FUN_00492d10 +492d84 108 ? FUN_00492d84 +492df0 285 ? FUN_00492df0 +492f10 179 ? FUN_00492f10 +492fc4 215 ? FUN_00492fc4 +49309c 34 ? FUN_0049309c +4930c0 199 ? FUN_004930c0 +493188 64 ? FUN_00493188 +4931c8 51 ? FUN_004931c8 +4931fc 165 ? FUN_004931fc +4932a4 488 ? FUN_004932a4 +49348c 654 ? FUN_0049348c +493720 307 ? FUN_00493720 +493854 354 ? FUN_00493854 +4939b8 214 ? FUN_004939b8 +493a90 321 ? FUN_00493a90 +493bd4 232 ? FUN_00493bd4 +493cbc 234 ? FUN_00493cbc +493da8 294 ? FUN_00493da8 +493ed0 500 ? FUN_00493ed0 +4940c8 238 ? FUN_004940c8 +4941e4 1114 ? FUN_004941e4 +494668 790 ? FUN_00494668 +494988 1113 ? FUN_00494988 +494e00 301 ? FUN_00494e00 +494f34 273 ? FUN_00494f34 +495048 307 ? FUN_00495048 +49517c 118 ? FUN_0049517c +4951f4 165 ? FUN_004951f4 +49529c 420 ? FUN_0049529c +495440 1538 ? FUN_00495440 +495a44 1402 ? FUN_00495a44 +496078 588 ? FUN_00496078 +4962c4 324 ? FUN_004962c4 +496408 253 ? FUN_00496408 +496508 30 ? FUN_00496508 +496530 30 ? FUN_00496530 +496558 138 ? FUN_00496558 +496600 1 ? FUN_00496600 +496604 13 ? FUN_00496604 +496614 6 ? FUN_00496614 +49661c 13 ? FUN_0049661c +49662c 6 ? FUN_0049662c +496634 13 ? FUN_00496634 +496644 6 ? FUN_00496644 +49664c 13 ? FUN_0049664c +49665c 6 ? FUN_0049665c +496664 29 ? FUN_00496664 +496684 224 ? FUN_00496684 +496764 47 ? FUN_00496764 +496794 34 ? FUN_00496794 +4967b8 83 ? FUN_004967b8 +49680c 202 ? FUN_0049680c +4968d8 104 ? FUN_004968d8 +496940 47 ? FUN_00496940 +496970 64 ? FUN_00496970 +4969b0 342 ? FUN_004969b0 +496b08 82 ? FUN_00496b08 +496b5c 163 ? FUN_00496b5c +496c18 33 ? FUN_00496c18 +496c3c 39 ? FUN_00496c3c +496c6c 97 ? FUN_00496c6c +496cd0 31 ? FUN_00496cd0 +496cf0 31 ? FUN_00496cf0 +496d10 38 ? FUN_00496d10 +496d68 39 ? FUN_00496d68 +496d98 616 ? FUN_00496d98 +497000 68 ? FUN_00497000 +497044 106 ? FUN_00497044 +4970b0 54 ? FUN_004970b0 +4970e8 171 ? FUN_004970e8 +497194 601 ? FUN_00497194 +4973f0 210 ? FUN_004973f0 +4974c4 146 ? FUN_004974c4 +497558 56 ? FUN_00497558 +497590 22 ? FUN_00497590 +4975a8 22 ? FUN_004975a8 +4975c0 122 ? FUN_004975c0 +49763c 57 ? FUN_0049763c +497678 50 ? FUN_00497678 +4976ac 15 ? FUN_004976ac +4976bc 15 ? FUN_004976bc +4976cc 36 ? FUN_004976cc +4976f0 36 ? FUN_004976f0 +497714 27 ? FUN_00497714 +497730 50 ? FUN_00497730 +497764 15 ? FUN_00497764 +497774 15 ? FUN_00497774 +497784 36 ? FUN_00497784 +4977a8 36 ? FUN_004977a8 +4977cc 27 ? FUN_004977cc +4977e8 50 ? FUN_004977e8 +49781c 15 ? FUN_0049781c +49782c 15 ? FUN_0049782c +49783c 36 ? FUN_0049783c +497860 36 ? FUN_00497860 +497884 27 ? FUN_00497884 +4978a0 51 ? FUN_004978a0 +4978d4 58 ? FUN_004978d4 +497910 17 ? FUN_00497910 +497924 354 ? FUN_00497924 +497a88 30 ? FUN_00497a88 +497aa8 63 ? FUN_00497aa8 +497b18 51 ? FUN_00497b18 +497b4c 58 ? FUN_00497b4c +497b88 17 ? FUN_00497b88 +497b9c 48 ? FUN_00497b9c +497bcc 23 ? FUN_00497bcc +497be4 17 ? FUN_00497be4 +497bf8 53 ? FUN_00497bf8 +497c30 76 ? FUN_00497c30 +497c7c 312 ? FUN_00497c7c +497db4 166 ? FUN_00497db4 +497e5c 123 ? FUN_00497e5c +497ed8 107 ? FUN_00497ed8 +497f44 26 ? FUN_00497f44 +497f60 25 ? FUN_00497f60 +497f7c 41 ? FUN_00497f7c +497fa8 25 ? FUN_00497fa8 +497fc4 25 ? FUN_00497fc4 +497fe0 41 ? FUN_00497fe0 +49800c 128 ? FUN_0049800c +49808c 160 ? FUN_0049808c +49812c 58 ? FUN_0049812c +498168 22 ? FUN_00498168 +498180 45 ? FUN_00498180 +4981b0 31 ? FUN_004981b0 +4981d0 31 ? FUN_004981d0 +4981f0 58 ? FUN_004981f0 +49822c 22 ? FUN_0049822c +498244 45 ? FUN_00498244 +498274 31 ? FUN_00498274 +498294 31 ? FUN_00498294 +4982b4 403 ? FUN_004982b4 +498448 859 ? FUN_00498448 +4987a4 338 ? FUN_004987a4 +4988f8 681 ? FUN_004988f8 +498ba4 195 ? FUN_00498ba4 +498c68 28 ? FUN_00498c68 +498c84 39 ? FUN_00498c84 +498cb4 51 ? FUN_00498cb4 +498ce8 58 ? FUN_00498ce8 +498d24 17 ? FUN_00498d24 +498d38 48 ? FUN_00498d38 +498d68 23 ? FUN_00498d68 +498d80 17 ? FUN_00498d80 +498d94 26 ? FUN_00498d94 +498db0 259 ? FUN_00498db0 +498eb4 836 ? FUN_00498eb4 +4991f8 194 ? FUN_004991f8 +4992bc 1622 ? FUN_004992bc +499918 405 ? FUN_00499918 +499ab0 152 ? FUN_00499ab0 +499b48 28 ? FUN_00499b48 +499b64 165 ? FUN_00499b64 +499c0c 334 ? FUN_00499c0c +499d5c 433 ? FUN_00499d5c +499f10 430 ? FUN_00499f10 +49a0c0 284 ? FUN_0049a0c0 +49a1dc 247 ? FUN_0049a1dc +49a2d4 28 ? FUN_0049a2d4 +49a2f0 13 ? FUN_0049a2f0 +49a300 168 ? FUN_0049a300 +49a3a8 8 ? FUN_0049a3a8 +49a3b0 91 ? FUN_0049a3b0 +49a40c 55 ? FUN_0049a40c +49a444 174 ? FUN_0049a444 +49a4f4 84 ? FUN_0049a4f4 +49a548 59 ? FUN_0049a548 +49a584 69 ? FUN_0049a584 +49a5cc 67 ? FUN_0049a5cc +49a610 268 ? FUN_0049a610 +49a71c 119 ? FUN_0049a71c +49a794 34 ? FUN_0049a794 +49a7b8 90 ? FUN_0049a7b8 +49a814 120 ? FUN_0049a814 +49a88c 27 ? FUN_0049a88c +49a8a8 120 ? FUN_0049a8a8 +49a920 72 ? FUN_0049a920 +49a968 37 ? FUN_0049a968 +49a990 10 ? FUN_0049a990 +49a99c 142 ? FUN_0049a99c +49aa2c 641 ? FUN_0049aa2c +49acb0 79 ? FUN_0049acb0 +49ad00 472 ? FUN_0049ad00 +49aed8 269 ? FUN_0049aed8 +49afe8 63 ? FUN_0049afe8 +49b028 180 ? FUN_0049b028 +49b0dc 430 ? FUN_0049b0dc +49b28c 13 ? FUN_0049b28c +49b29c 13 ? FUN_0049b29c +49b2ac 150 ? FUN_0049b2ac +49b344 92 ? FUN_0049b344 +49b3a0 66 ? FUN_0049b3a0 +49b3e4 110 ? FUN_0049b3e4 +49b454 15 ? FUN_0049b454 +49b464 33 ? FUN_0049b464 +49b488 117 ? FUN_0049b488 +49b500 51 ? FUN_0049b500 +49b54c 248 ? FUN_0049b54c +49b648 116 ? FUN_0049b648 +49b6bc 25 bt/btmssn.cpp FUN_0049b6bc +49b6d8 169 ? FUN_0049b6d8 +49b784 795 ? FUN_0049b784 +49baa0 510 ? FUN_0049baa0 +49bca4 213 ? FUN_0049bca4 +49bd7c 146 ? FUN_0049bd7c +49be10 321 ? FUN_0049be10 +49bf54 27 ? FUN_0049bf54 +49bfde 35 ? FUN_0049bfde +49c001 44 ? FUN_0049c001 +49c02d 47 ? FUN_0049c02d +49c05c 44 ? FUN_0049c05c +49c088 80 ? FUN_0049c088 +49c0d8 75 ? FUN_0049c0d8 +49c123 35 ? FUN_0049c123 +49c146 44 ? FUN_0049c146 +49c172 49 ? FUN_0049c172 +49c1a3 46 ? FUN_0049c1a3 +49c1d1 80 ? FUN_0049c1d1 +49c221 75 ? FUN_0049c221 +49c26c 31 ? FUN_0049c26c +49c28b 31 ? FUN_0049c28b +49c2aa 31 ? FUN_0049c2aa +49c2c9 44 ? FUN_0049c2c9 +49c2f5 31 ? FUN_0049c2f5 +49c314 31 ? FUN_0049c314 +49c333 31 ? FUN_0049c333 +49c352 44 ? FUN_0049c352 +49c37e 48 ? FUN_0049c37e +49c3ae 48 ? FUN_0049c3ae +49c3de 5 ? FUN_0049c3de +49c3e3 38 ? FUN_0049c3e3 +49c40c 253 ? FUN_0049c40c +49c51c 217 ? FUN_0049c51c +49c600 105 ? FUN_0049c600 +49c66c 33 ? FUN_0049c66c +49c690 777 ? FUN_0049c690 +49c9a8 289 ? FUN_0049c9a8 +49cad4 496 ? FUN_0049cad4 +49ccc4 387 ? FUN_0049ccc4 +49ce50 884 ? FUN_0049ce50 +49d1d0 108 ? FUN_0049d1d0 +49d23c 197 ? FUN_0049d23c +49d304 2076 ? FUN_0049d304 +49db20 502 ? FUN_0049db20 +49dd18 44 ? FUN_0049dd18 +49dd44 47 ? FUN_0049dd44 +49dd74 10 ? FUN_0049dd74 +49dd7e 31 ? FUN_0049dd7e +49dd9d 44 ? FUN_0049dd9d +49ddc9 31 ? FUN_0049ddc9 +49dde8 44 ? FUN_0049dde8 +49de14 154 ? FUN_0049de14 +49deb0 208 ? FUN_0049deb0 +49df80 127 ? FUN_0049df80 +49e000 10 ? FUN_0049e000 +49e00c 1298 ? FUN_0049e00c +49e524 192 ? FUN_0049e524 +49e5e4 145 ? FUN_0049e5e4 +49e678 178 ? FUN_0049e678 +49e740 206 ? FUN_0049e740 +49e880 10 ? FUN_0049e880 +49e88c 443 ? FUN_0049e88c +49ea48 145 ? FUN_0049ea48 +49eadc 106 ? FUN_0049eadc +49eb48 10 ? FUN_0049eb48 +49eb54 427 ? FUN_0049eb54 +49ed28 1244 ? FUN_0049ed28 +49f204 35 ? FUN_0049f204 +49f227 44 ? FUN_0049f227 +49f253 49 ? FUN_0049f253 +49f284 46 ? FUN_0049f284 +49f2b2 35 ? FUN_0049f2b2 +49f2d5 44 ? FUN_0049f2d5 +49f301 102 ? FUN_0049f301 +49f3d5 35 ? FUN_0049f3d5 +49f3f8 44 ? FUN_0049f3f8 +49f424 47 ? FUN_0049f424 +49f453 44 ? FUN_0049f453 +49f47f 48 ? FUN_0049f47f +49f4af 48 ? FUN_0049f4af +49f4df 48 ? FUN_0049f4df +49f50f 45 ? FUN_0049f50f +49f53c 44 ? FUN_0049f53c +49f568 80 ? FUN_0049f568 +49f5b8 75 ? FUN_0049f5b8 +49f624 79 ? FUN_0049f624 +49f674 130 ? FUN_0049f674 +49f728 96 ? FUN_0049f728 +49f788 199 ? FUN_0049f788 +49fa00 28 ? FUN_0049fa00 +49fa1c 306 ? FUN_0049fa1c +49fb54 30 ? FUN_0049fb54 +49fb74 661 ? FUN_0049fb74 +49fe0c 51 ? FUN_0049fe0c +49fe40 47 ? FUN_0049fe40 +49fe70 14 ? FUN_0049fe70 +49fe80 328 ? FUN_0049fe80 +4a1232 1048 ? FUN_004a1232 +4a1674 5690 bt/mech.cpp FUN_004a1674 +4a2d48 46 ? FUN_004a2d48 +4a2d78 48 ? FUN_004a2d78 +4a2da8 2538 ? FUN_004a2da8 +4a3794 3477 ? FUN_004a3794 +4a452c 541 ? FUN_004a452c +4a474c 1287 ? FUN_004a474c +4a4c54 37 ? FUN_004a4c54 +4a4c7c 27 ? FUN_004a4c7c +4a4d60 31 ? FUN_004a4d60 +4a4d7f 44 ? FUN_004a4d7f +4a4dab 31 ? FUN_004a4dab +4a4dca 44 ? FUN_004a4dca +4a4df6 31 ? FUN_004a4df6 +4a4e15 44 ? FUN_004a4e15 +4a4e41 31 ? FUN_004a4e41 +4a4e60 44 ? FUN_004a4e60 +4a4e8c 31 ? FUN_004a4e8c +4a4eab 31 ? FUN_004a4eab +4a4eca 31 ? FUN_004a4eca +4a4ee9 44 ? FUN_004a4ee9 +4a4f15 31 ? FUN_004a4f15 +4a4f34 31 ? FUN_004a4f34 +4a4f53 31 ? FUN_004a4f53 +4a4f72 44 ? FUN_004a4f72 +4a4f9e 31 ? FUN_004a4f9e +4a4fbd 31 ? FUN_004a4fbd +4a4fdc 31 ? FUN_004a4fdc +4a4ffb 44 ? FUN_004a4ffb +4a5028 1543 bt/mech2.cpp FUN_004a5028 +4a5678 1333 bt/mech2.cpp FUN_004a5678 +4a5bf8 1792 bt/mech2.cpp FUN_004a5bf8 +4a6344 1418 ? FUN_004a6344 +4a71f4 1840 bt/mech2.cpp FUN_004a71f4 +4a7970 1414 ? FUN_004a7970 +4a7f50 114 ? FUN_004a7f50 +4a7fc4 72 ? FUN_004a7fc4 +4a800c 72 ? FUN_004a800c +4a8054 127 ? FUN_004a8054 +4a80d4 1522 ? FUN_004a80d4 +4a86c8 1525 ? FUN_004a86c8 +4a8cc0 1741 ? FUN_004a8cc0 +4a9390 990 ? FUN_004a9390 +4a9770 1002 ? FUN_004a9770 +4ab188 63 ? FUN_004ab188 +4ab1c8 615 ? FUN_004ab1c8 +4ab430 1432 ? FUN_004ab430 +4abb40 1284 ? FUN_004abb40 +4ac04c 23 ? FUN_004ac04c +4ac064 23 ? FUN_004ac064 +4ac07c 64 ? FUN_004ac07c +4ac0bc 129 ? FUN_004ac0bc +4ac144 70 ? FUN_004ac144 +4ac194 61 ? FUN_004ac194 +4ac1d4 86 ? FUN_004ac1d4 +4ac22c 69 ? FUN_004ac22c +4ac274 647 ? FUN_004ac274 +4ac4fc 48 ? FUN_004ac4fc +4ac530 275 ? FUN_004ac530 +4ac644 538 ? FUN_004ac644 +4ac868 88 ? FUN_004ac868 +4ac8c0 262 ? FUN_004ac8c0 +4ac9c8 36 ? FUN_004ac9c8 +4ac9ec 1277 ? FUN_004ac9ec +4acfa9 35 ? FUN_004acfa9 +4acfcc 35 ? FUN_004acfcc +4acfef 31 ? FUN_004acfef +4ad00e 44 ? FUN_004ad00e +4ad03a 31 ? FUN_004ad03a +4ad059 44 ? FUN_004ad059 +4ad085 31 ? FUN_004ad085 +4ad0a4 31 ? FUN_004ad0a4 +4ad0c3 31 ? FUN_004ad0c3 +4ad0e2 44 ? FUN_004ad0e2 +4ad10e 21 ? FUN_004ad10e +4ad124 91 ? FUN_004ad124 +4ad180 53 ? FUN_004ad180 +4ad1b8 109 ? FUN_004ad1b8 +4ad228 273 ? FUN_004ad228 +4ad33c 308 ? FUN_004ad33c +4ad470 27 ? FUN_004ad470 +4ad48c 243 ? FUN_004ad48c +4ad619 8 ? FUN_004ad619 +4ad621 31 ? FUN_004ad621 +4ad640 44 ? FUN_004ad640 +4ad66c 31 ? FUN_004ad66c +4ad68b 31 ? FUN_004ad68b +4ad6aa 31 ? FUN_004ad6aa +4ad6c9 44 ? FUN_004ad6c9 +4ad748 21 ? FUN_004ad748 +4ad760 115 ? FUN_004ad760 +4ad7d4 26 ? FUN_004ad7d4 +4ad7f0 128 ? FUN_004ad7f0 +4ad884 37 ? FUN_004ad884 +4ad8ac 118 ? FUN_004ad8ac +4ad924 198 ? FUN_004ad924 +4ad9ec 163 ? FUN_004ad9ec +4ada94 349 ? FUN_004ada94 +4adbf8 258 ? FUN_004adbf8 +4add30 58 ? FUN_004add30 +4add6c 49 ? FUN_004add6c +4adda0 561 bt/heat.cpp FUN_004adda0 +4adfd4 95 ? FUN_004adfd4 +4ae034 27 ? FUN_004ae034 +4ae050 255 ? FUN_004ae050 +4ae150 782 ? FUN_004ae150 +4ae4d8 88 ? FUN_004ae4d8 +4ae568 146 ? FUN_004ae568 +4ae5fc 61 ? FUN_004ae5fc +4ae63c 27 ? FUN_004ae63c +4ae658 175 ? FUN_004ae658 +4ae724 21 ? FUN_004ae724 +4ae73c 351 ? FUN_004ae73c +4ae8d0 161 ? FUN_004ae8d0 +4ae9c0 27 ? FUN_004ae9c0 +4ae9dc 167 ? FUN_004ae9dc +4aea84 21 ? FUN_004aea84 +4aea9c 40 ? FUN_004aea9c +4aeac4 121 ? FUN_004aeac4 +4aeb40 165 ? FUN_004aeb40 +4aebe8 78 ? FUN_004aebe8 +4aec38 27 ? FUN_004aec38 +4aec54 468 ? FUN_004aec54 +4aee70 108 ? FUN_004aee70 +4aeef8 70 ? FUN_004aeef8 +4aef40 53 ? FUN_004aef40 +4aef78 44 ? FUN_004aef78 +4aefa4 1019 ? FUN_004aefa4 +4af3b0 84 ? FUN_004af3b0 +4af408 272 ? FUN_004af408 +4af564 27 ? FUN_004af564 +4af580 273 ? FUN_004af580 +4af9cf 31 ? FUN_004af9cf +4af9ee 44 ? FUN_004af9ee +4afa1a 31 ? FUN_004afa1a +4afa39 44 ? FUN_004afa39 +4afa65 31 ? FUN_004afa65 +4afa84 44 ? FUN_004afa84 +4afab0 31 ? FUN_004afab0 +4afacf 31 ? FUN_004afacf +4afaee 31 ? FUN_004afaee +4afb0d 44 ? FUN_004afb0d +4afb39 31 ? FUN_004afb39 +4afb58 31 ? FUN_004afb58 +4afb77 31 ? FUN_004afb77 +4afb96 44 ? FUN_004afb96 +4afbe0 201 ? FUN_004afbe0 +4afcac 59 ? FUN_004afcac +4afce8 37 ? FUN_004afce8 +4afd10 1359 ? FUN_004afd10 +4b029c 28 bt/mechmppr.cpp FUN_004b029c +4b02b8 28 bt/mechmppr.cpp FUN_004b02b8 +4b02d4 28 bt/mechmppr.cpp FUN_004b02d4 +4b02f0 348 ? FUN_004b02f0 +4b044c 61 ? FUN_004b044c +4b048c 5 ? FUN_004b048c +4b0494 5 ? FUN_004b0494 +4b049c 58 ? FUN_004b049c +4b04d8 296 ? FUN_004b04d8 +4b0600 204 ? FUN_004b0600 +4b06cc 290 ? FUN_004b06cc +4b07f0 167 ? FUN_004b07f0 +4b0898 38 ? FUN_004b0898 +4b08c0 27 ? FUN_004b08c0 +4b099c 69 ? FUN_004b099c +4b09e4 69 ? FUN_004b09e4 +4b0a2c 69 ? FUN_004b0a2c +4b0a74 69 ? FUN_004b0a74 +4b0abc 91 ? FUN_004b0abc +4b0b18 68 ? FUN_004b0b18 +4b0b5c 112 ? FUN_004b0b5c +4b0bd0 382 ? FUN_004b0bd0 +4b0d50 126 ? FUN_004b0d50 +4b0dd8 86 ? FUN_004b0dd8 +4b0e30 59 ? FUN_004b0e30 +4b0e6c 141 ? FUN_004b0e6c +4b0efc 74 ? FUN_004b0efc +4b0f48 41 ? FUN_004b0f48 +4b0f74 486 bt/powersub.cpp FUN_004b0f74 +4b115c 95 ? FUN_004b115c +4b11bc 76 ? FUN_004b11bc +4b1208 27 ? FUN_004b1208 +4b1224 372 ? FUN_004b1224 +4b13ac 976 ? FUN_004b13ac +4b179c 101 ? FUN_004b179c +4b1804 21 ? FUN_004b1804 +4b181c 133 ? FUN_004b181c +4b18a4 126 ? FUN_004b18a4 +4b1930 61 ? FUN_004b1930 +4b1970 27 ? FUN_004b1970 +4b198c 175 ? FUN_004b198c +4b1bb1 31 ? FUN_004b1bb1 +4b1bd0 44 ? FUN_004b1bd0 +4b1bfc 26 ? FUN_004b1bfc +4b1c18 51 ? FUN_004b1c18 +4b1c4c 195 ? FUN_004b1c4c +4b1d18 118 ? FUN_004b1d18 +4b1d90 58 ? FUN_004b1d90 +4b1dcc 73 ? FUN_004b1dcc +4b1e18 27 ? FUN_004b1e18 +4b1f7c 452 ? FUN_004b1f7c +4b21d0 134 ? FUN_004b21d0 +4b225c 286 ? FUN_004b225c +4b237c 61 ? FUN_004b237c +4b23bc 451 ? FUN_004b23bc +4b2660 21 ? FUN_004b2660 +4b2678 227 ? FUN_004b2678 +4b275c 543 ? FUN_004b275c +4b2d8c 85 ? FUN_004b2d8c +4b2de4 107 ? FUN_004b2de4 +4b2e50 89 ? FUN_004b2e50 +4b2eac 20 ? FUN_004b2eac +4b2ec0 553 ? FUN_004b2ec0 +4b30ec 753 ? FUN_004b30ec +4b33e0 261 ? FUN_004b33e0 +4b34ec 142 ? FUN_004b34ec +4b357c 478 ? FUN_004b357c +4b3778 1807 ? FUN_004b3778 +4b3e88 44 ? FUN_004b3e88 +4b3eb4 7274 ? FUN_004b3eb4 +4b5bf8 247 ? FUN_004b5bf8 +4b5cf0 2054 ? FUN_004b5cf0 +4b6510 231 ? FUN_004b6510 +4b65f8 186 ? FUN_004b65f8 +4b66b4 310 ? FUN_004b66b4 +4b67ec 297 ? FUN_004b67ec +4b6918 249 ? FUN_004b6918 +4b6a78 141 ? FUN_004b6a78 +4b6b0c 1196 ? FUN_004b6b0c +4b6fec 1751 ? FUN_004b6fec +4b77bc 81 ? FUN_004b77bc +4b7810 29 ? FUN_004b7810 +4b7830 1672 ? FUN_004b7830 +4b7ed4 187 ? FUN_004b7ed4 +4b7f94 471 ? FUN_004b7f94 +4b816c 75 ? FUN_004b816c +4b81b8 27 ? FUN_004b81b8 +4b81d4 435 ? FUN_004b81d4 +4b83b8 54 ? FUN_004b83b8 +4b83f0 44 ? FUN_004b83f0 +4b841c 189 ? FUN_004b841c +4b84dc 140 ? FUN_004b84dc +4b8568 61 ? FUN_004b8568 +4b85a8 71 ? FUN_004b85a8 +4b85f0 27 ? FUN_004b85f0 +4b860c 60 ? FUN_004b860c +4b8648 205 ? FUN_004b8648 +4b8718 123 ? FUN_004b8718 +4b8794 61 ? FUN_004b8794 +4b87d4 71 ? FUN_004b87d4 +4b881c 27 ? FUN_004b881c +4b8a8c 21 ? FUN_004b8a8c +4b8aa4 25 ? FUN_004b8aa4 +4b8ac0 210 ? FUN_004b8ac0 +4b8d18 458 ? FUN_004b8d18 +4b8ef0 74 ? FUN_004b8ef0 +4b8f3c 86 ? FUN_004b8f3c +4b8f94 86 ? FUN_004b8f94 +4b8fec 291 ? FUN_004b8fec +4b9140 816 ? FUN_004b9140 +4b9550 101 ? FUN_004b9550 +4b95b8 50 ? FUN_004b95b8 +4b95ec 28 bt/mechweap.cpp FUN_004b95ec +4b9608 63 ? FUN_004b9608 +4b964c 68 ? FUN_004b964c +4b9690 68 ? FUN_004b9690 +4b96d4 21 ? FUN_004b96d4 +4b96ec 57 ? FUN_004b96ec +4b9728 313 ? FUN_004b9728 +4b9864 226 ? FUN_004b9864 +4b9948 94 ? FUN_004b9948 +4b99a8 493 ? FUN_004b99a8 +4b9b9c 61 ? FUN_004b9b9c +4b9bdc 188 ? FUN_004b9bdc +4b9cbc 32 ? FUN_004b9cbc +4b9cdc 36 ? FUN_004b9cdc +4b9d00 15 ? FUN_004b9d00 +4b9d10 1641 ? FUN_004b9d10 +4ba45c 28 bt/mechweap.hpp FUN_004ba45c +4ba478 88 ? FUN_004ba478 +4ba4d0 152 ? FUN_004ba4d0 +4ba568 242 ? FUN_004ba568 +4ba65c 130 ? FUN_004ba65c +4ba6e0 86 ? FUN_004ba6e0 +4ba738 224 ? FUN_004ba738 +4ba838 152 ? FUN_004ba838 +4ba8d0 209 ? FUN_004ba8d0 +4ba9a8 118 ? FUN_004ba9a8 +4baa20 103 ? FUN_004baa20 +4baa88 380 ? FUN_004baa88 +4bace8 718 ? FUN_004bace8 +4bb014 267 ? FUN_004bb014 +4bb120 652 ? FUN_004bb120 +4bb3c8 44 ? FUN_004bb3c8 +4bb3f4 49 ? FUN_004bb3f4 +4bb478 798 ? FUN_004bb478 +4bb878 15 ? FUN_004bb878 +4bb888 43 ? FUN_004bb888 +4bb8b4 44 ? FUN_004bb8b4 +4bb8e0 75 ? FUN_004bb8e0 +4bb92c 27 ? FUN_004bb92c +4bbae0 21 ? FUN_004bbae0 +4bbaf8 87 ? FUN_004bbaf8 +4bbb50 200 ? FUN_004bbb50 +4bbc78 133 ? FUN_004bbc78 +4bbfcc 152 ? FUN_004bbfcc +4bc06c 145 ? FUN_004bc06c +4bc3fc 634 ? FUN_004bc3fc +4bc688 61 ? FUN_004bc688 +4bc6c8 259 ? FUN_004bc6c8 +4bc7cc 718 ? FUN_004bc7cc +4bcabc 49 ? FUN_004bcabc +4bcbb0 31 ? FUN_004bcbb0 +4bcbcf 44 ? FUN_004bcbcf +4bcc60 912 ? FUN_004bcc60 +4bcff0 109 ? FUN_004bcff0 +4bd060 44 ? FUN_004bd060 +4bd08c 337 ? FUN_004bd08c +4bd1e0 27 ? FUN_004bd1e0 +4bd2c0 64 ? FUN_004bd2c0 +4bd300 148 ? FUN_004bd300 +4bd394 340 ? FUN_004bd394 +4bd4f4 146 ? FUN_004bd4f4 +4bd588 59 ? FUN_004bd588 +4bd5c4 235 ? FUN_004bd5c4 +4bd6b0 61 ? FUN_004bd6b0 +4bd6f0 1153 ? FUN_004bd6f0 +4bdb94 107 ? FUN_004bdb94 +4bdcb4 51 ? FUN_004bdcb4 +4bdce8 44 ? FUN_004bdce8 +4bdd14 75 ? FUN_004bdd14 +4bdd60 27 ? FUN_004bdd60 +4be078 6 ? FUN_004be078 +4be07e 318 ? FUN_004be07e +4be1bc 411 ? FUN_004be1bc +4be358 44 ? FUN_004be358 +4be384 46 ? FUN_004be384 +4be3b4 27 ? FUN_004be3b4 +4be7c4 243 ? FUN_004be7c4 +4be8e8 27 ? FUN_004be8e8 +4beae4 307 ? FUN_004beae4 +4bec34 521 ? FUN_004bec34 +4bee70 27 ? FUN_004bee70 +4bef4c 44 ? FUN_004bef4c +4bef78 1563 ? FUN_004bef78 +4bf5b4 729 ? FUN_004bf5b4 +4bf890 44 ? FUN_004bf890 +4bf8bc 46 ? FUN_004bf8bc +4bf8ec 570 ? FUN_004bf8ec +4bfb28 27 ? FUN_004bfb28 +4bfc20 129 ? FUN_004bfc20 +4bfee0 146 ? FUN_004bfee0 +4bff74 41 ? FUN_004bff74 +4bffa0 45 ? FUN_004bffa0 +4bffd0 348 ? FUN_004bffd0 +4c012c 203 ? FUN_004c012c +4c0200 167 bt/btplayer.cpp FUN_004c0200 +4c02a8 57 bt/btplayer.cpp FUN_004c02a8 +4c02e4 583 bt/btplayer.cpp FUN_004c02e4 +4c052c 146 ? FUN_004c052c +4c083c 192 ? FUN_004c083c +4c0bc8 770 ? FUN_004c0bc8 +4c0ecc 46 ? FUN_004c0ecc +4c0efc 44 ? FUN_004c0efc +4c0f28 27 ? FUN_004c0f28 +4c10dc 48 ? FUN_004c10dc +4c110c 44 ? FUN_004c110c +4c1138 46 ? FUN_004c1138 +4c1168 48 ? FUN_004c1168 +4c1198 27 ? FUN_004c1198 +4c1408 73 ? FUN_004c1408 +4c1454 46 ? FUN_004c1454 +4c1484 44 ? FUN_004c1484 +4c14b0 27 ? FUN_004c14b0 +4c1548 25 ? FUN_004c1548 +4c1564 44 ? FUN_004c1564 +4c1590 94 ? FUN_004c1590 +4c15f0 724 ? FUN_004c15f0 +4c18f4 40 ? FUN_004c18f4 +4c191c 40 ? FUN_004c191c +4c1944 70 ? FUN_004c1944 +4c198c 34 ? FUN_004c198c +4c19fc 177 ? FUN_004c19fc +4c1ab0 149 ? FUN_004c1ab0 +4c1c24 644 ? FUN_004c1c24 +4c1ea8 134 ? FUN_004c1ea8 +4c1f30 15 ? FUN_004c1f30 +4c1f40 126 ? FUN_004c1f40 +4c1fc0 16 ? FUN_004c1fc0 +4c1fd0 419 ? FUN_004c1fd0 +4c2178 267 bt_l4/btl4rdr.cpp FUN_004c2178 +4c228c 5 ? FUN_004c228c +4c2294 45 ? FUN_004c2294 +4c22c4 444 ? FUN_004c22c4 +4c2484 295 ? FUN_004c2484 +4c25b4 463 ? FUN_004c25b4 +4c2788 313 ? FUN_004c2788 +4c28c4 318 bt_l4/btl4rdr.cpp FUN_004c28c4 +4c2a1d 8 ? FUN_004c2a1d +4c2a25 25 ? FUN_004c2a25 +4c2a3e 50 ? FUN_004c2a3e +4c2a70 44 ? FUN_004c2a70 +4c2a9c 18 ? FUN_004c2a9c +4c2aae 259 ? FUN_004c2aae +4c2bb1 15 ? FUN_004c2bb1 +4c2bc0 50 ? FUN_004c2bc0 +4c2bf2 44 ? FUN_004c2bf2 +4c2c1e 18 ? FUN_004c2c1e +4c2c30 259 ? FUN_004c2c30 +4c2d33 15 ? FUN_004c2d33 +4c2d42 50 ? FUN_004c2d42 +4c2d74 44 ? FUN_004c2d74 +4c2da0 18 ? FUN_004c2da0 +4c2db2 257 ? FUN_004c2db2 +4c2eb3 15 ? FUN_004c2eb3 +4c2ec4 97 ? FUN_004c2ec4 +4c2f28 96 ? FUN_004c2f28 +4c2f88 10 ? FUN_004c2f88 +4c2f94 100 ? FUN_004c2f94 +4c2ff8 315 ? FUN_004c2ff8 +4c3134 43 ? FUN_004c3134 +4c3160 44 ? FUN_004c3160 +4c318c 10 ? FUN_004c318c +4c3198 5 ? FUN_004c3198 +4c31a0 74 ? FUN_004c31a0 +4c31ec 43 ? FUN_004c31ec +4c3218 44 ? FUN_004c3218 +4c3244 10 ? FUN_004c3244 +4c3250 5 ? FUN_004c3250 +4c3258 45 ? FUN_004c3258 +4c3288 43 ? FUN_004c3288 +4c32b4 44 ? FUN_004c32b4 +4c32e0 10 ? FUN_004c32e0 +4c32ec 5 ? FUN_004c32ec +4c32f4 45 ? FUN_004c32f4 +4c3324 43 ? FUN_004c3324 +4c3350 44 ? FUN_004c3350 +4c337c 10 ? FUN_004c337c +4c3388 5 ? FUN_004c3388 +4c3390 19 ? FUN_004c3390 +4c33a4 68 ? FUN_004c33a4 +4c33e8 44 ? FUN_004c33e8 +4c3414 18 ? FUN_004c3414 +4c3428 5 ? FUN_004c3428 +4c3430 53 ? FUN_004c3430 +4c346c 69 ? FUN_004c346c +4c34b4 44 ? FUN_004c34b4 +4c34e0 10 ? FUN_004c34e0 +4c34ec 5 ? FUN_004c34ec +4c34f4 154 ? FUN_004c34f4 +4c3598 47 ? FUN_004c3598 +4c35c8 44 ? FUN_004c35c8 +4c35f4 18 ? FUN_004c35f4 +4c3608 5 ? FUN_004c3608 +4c3610 80 ? FUN_004c3610 +4c3664 113 ? FUN_004c3664 +4c36d8 44 ? FUN_004c36d8 +4c3704 18 ? FUN_004c3704 +4c3718 5 ? FUN_004c3718 +4c3720 177 ? FUN_004c3720 +4c37dc 256 ? FUN_004c37dc +4c38dc 104 ? FUN_004c38dc +4c3944 15 ? FUN_004c3944 +4c3954 5 ? FUN_004c3954 +4c395c 34 ? FUN_004c395c +4c3980 292 ? FUN_004c3980 +4c3aa4 243 ? FUN_004c3aa4 +4c3b98 121 ? FUN_004c3b98 +4c3c14 5 ? FUN_004c3c14 +4c3c1c 28 ? FUN_004c3c1c +4c3c38 14 ? FUN_004c3c38 +4c3c48 280 ? FUN_004c3c48 +4c3d60 116 ? FUN_004c3d60 +4c3dd4 5 ? FUN_004c3dd4 +4c3ddc 97 ? FUN_004c3ddc +4c3e40 189 ? FUN_004c3e40 +4c3f00 5 ? FUN_004c3f00 +4c3f08 97 ? FUN_004c3f08 +4c3f6c 262 bt_l4/btl4gaug.cpp FUN_004c3f6c +4c4074 5 ? FUN_004c4074 +4c407c 241 ? FUN_004c407c +4c4170 318 ? FUN_004c4170 +4c42b0 90 ? FUN_004c42b0 +4c430c 15 ? FUN_004c430c +4c431c 5 ? FUN_004c431c +4c4324 28 ? FUN_004c4324 +4c4340 492 ? FUN_004c4340 +4c462c 246 ? FUN_004c462c +4c4724 327 ? FUN_004c4724 +4c486c 90 ? FUN_004c486c +4c48c8 15 ? FUN_004c48c8 +4c48d8 5 ? FUN_004c48d8 +4c48e0 28 ? FUN_004c48e0 +4c48fc 515 ? FUN_004c48fc +4c4b84 227 ? FUN_004c4b84 +4c4c68 44 ? FUN_004c4c68 +4c4c94 15 ? FUN_004c4c94 +4c4ca4 5 ? FUN_004c4ca4 +4c4cac 18 ? FUN_004c4cac +4c4cc0 121 ? FUN_004c4cc0 +4c4d48 62 ? FUN_004c4d48 +4c4d88 241 ? FUN_004c4d88 +4c4e7c 126 ? FUN_004c4e7c +4c4efc 15 ? FUN_004c4efc +4c4f0c 5 ? FUN_004c4f0c +4c4f14 18 ? FUN_004c4f14 +4c4f28 319 ? FUN_004c4f28 +4c5068 223 ? FUN_004c5068 +4c5148 141 ? FUN_004c5148 +4c51d8 44 ? FUN_004c51d8 +4c5204 209 ? FUN_004c5204 +4c52d8 137 ? FUN_004c52d8 +4c5364 44 ? FUN_004c5364 +4c5390 223 ? FUN_004c5390 +4c5470 141 ? FUN_004c5470 +4c5500 44 ? FUN_004c5500 +4c552c 32 ? FUN_004c552c +4c554c 223 ? FUN_004c554c +4c562c 272 ? FUN_004c562c +4c573c 132 ? FUN_004c573c +4c57c0 15 ? FUN_004c57c0 +4c57d0 280 ? FUN_004c57d0 +4c58e8 41 ? FUN_004c58e8 +4c5914 6 ? FUN_004c5914 +4c591a 426 ? FUN_004c591a +4c5b7c 260 ? FUN_004c5b7c +4c5c80 90 ? FUN_004c5c80 +4c5cdc 15 ? FUN_004c5cdc +4c5cec 5 ? FUN_004c5cec +4c5cf4 18 ? FUN_004c5cf4 +4c5d08 378 ? FUN_004c5d08 +4c5e84 172 ? FUN_004c5e84 +4c5f30 90 ? FUN_004c5f30 +4c5f8c 15 ? FUN_004c5f8c +4c5f9c 5 ? FUN_004c5f9c +4c5fa4 18 ? FUN_004c5fa4 +4c5fb8 311 ? FUN_004c5fb8 +4c61c8 123 ? FUN_004c61c8 +4c6244 142 ? FUN_004c6244 +4c62fc 149 ? FUN_004c62fc +4c6394 238 ? FUN_004c6394 +4c668d 38 ? FUN_004c668d +4c66b3 38 ? FUN_004c66b3 +4c66d9 38 ? FUN_004c66d9 +4c66ff 38 ? FUN_004c66ff +4c6725 38 ? FUN_004c6725 +4c674b 38 ? FUN_004c674b +4c6771 38 ? FUN_004c6771 +4c6798 274 ? FUN_004c6798 +4c68ac 90 ? FUN_004c68ac +4c6908 15 ? FUN_004c6908 +4c6918 5 ? FUN_004c6918 +4c6920 18 ? FUN_004c6920 +4c6934 666 ? FUN_004c6934 +4c6be4 73 ? FUN_004c6be4 +4c6c30 59 ? FUN_004c6c30 +4c6c6c 264 ? FUN_004c6c6c +4c6d80 212 ? FUN_004c6d80 +4c6e54 116 ? FUN_004c6e54 +4c6ec8 15 ? FUN_004c6ec8 +4c6ed8 5 ? FUN_004c6ed8 +4c6ee0 17 ? FUN_004c6ee0 +4c6ef4 40 ? FUN_004c6ef4 +4c6f1c 392 ? FUN_004c6f1c +4c70a4 141 ? FUN_004c70a4 +4c7134 44 ? FUN_004c7134 +4c7160 141 ? FUN_004c7160 +4c71f0 44 ? FUN_004c71f0 +4c721c 143 ? FUN_004c721c +4c72ac 143 ? FUN_004c72ac +4c733c 44 ? FUN_004c733c +4c7368 257 ? FUN_004c7368 +4c746c 779 ? FUN_004c746c +4c7778 90 ? FUN_004c7778 +4c77d4 15 ? FUN_004c77d4 +4c77e4 5 ? FUN_004c77e4 +4c77ec 85 ? FUN_004c77ec +4c7844 308 ? FUN_004c7844 +4c7978 79 ? FUN_004c7978 +4c79c8 359 ? FUN_004c79c8 +4c7b30 192 ? FUN_004c7b30 +4c7bf0 289 ? FUN_004c7bf0 +4c7d14 307 ? FUN_004c7d14 +4c7e48 717 ? FUN_004c7e48 +4c8140 1689 ? FUN_004c8140 +4c87dc 44 ? FUN_004c87dc +4c8808 15 ? FUN_004c8808 +4c8818 5 ? FUN_004c8818 +4c8820 194 ? FUN_004c8820 +4c88e4 170 ? FUN_004c88e4 +4c8990 50 ? FUN_004c8990 +4c89c4 97 ? FUN_004c89c4 +4c8a28 67 ? FUN_004c8a28 +4c8a6c 682 ? FUN_004c8a6c +4c8d18 44 ? FUN_004c8d18 +4c8d44 15 ? FUN_004c8d44 +4c8d54 5 ? FUN_004c8d54 +4c8d5c 82 ? FUN_004c8d5c +4c8db0 61 ? FUN_004c8db0 +4c8f54 44 ? FUN_004c8f54 +4c8f80 15 ? FUN_004c8f80 +4c8f90 5 ? FUN_004c8f90 +4c8f98 43 ? FUN_004c8f98 +4c8fc4 525 ? FUN_004c8fc4 +4c91d4 90 ? FUN_004c91d4 +4c9230 30 ? FUN_004c9230 +4c9250 5 ? FUN_004c9250 +4c9258 53 ? FUN_004c9258 +4c9290 77 ? FUN_004c9290 +4c92e4 71 ? FUN_004c92e4 +4c932c 132 ? FUN_004c932c +4c93b0 299 ? FUN_004c93b0 +4c94dc 44 ? FUN_004c94dc +4c9508 15 ? FUN_004c9508 +4c9518 5 ? FUN_004c9518 +4c9520 53 ? FUN_004c9520 +4c9558 1000 ? FUN_004c9558 +4c9940 100 ? FUN_004c9940 +4c99a4 30 ? FUN_004c99a4 +4c99c4 5 ? FUN_004c99c4 +4c99cc 108 ? FUN_004c99cc +4c9a38 163 ? FUN_004c9a38 +4c9adc 71 ? FUN_004c9adc +4c9b24 41 ? FUN_004c9b24 +4c9b50 75 ? FUN_004c9b50 +4c9bd0 216 ? FUN_004c9bd0 +4c9ca8 64 ? FUN_004c9ca8 +4c9ce8 10 ? FUN_004c9ce8 +4c9cf4 34 ? FUN_004c9cf4 +4c9d18 42 ? FUN_004c9d18 +4c9d44 202 ? FUN_004c9d44 +4c9e10 388 ? FUN_004c9e10 +4c9f94 140 ? FUN_004c9f94 +4ca020 15 ? FUN_004ca020 +4ca030 5 ? FUN_004ca030 +4ca038 46 ? FUN_004ca038 +4ca068 17 ? FUN_004ca068 +4ca07c 280 ? FUN_004ca07c +4ca208 404 ? FUN_004ca208 +4ca39c 109 ? FUN_004ca39c +4ca40c 15 ? FUN_004ca40c +4ca41c 5 ? FUN_004ca41c +4ca424 17 ? FUN_004ca424 +4ca438 62 ? FUN_004ca438 +4ca478 1171 ? FUN_004ca478 +4ca90c 75 ? FUN_004ca90c +4ca958 439 ? FUN_004ca958 +4cab10 122 ? FUN_004cab10 +4cab8c 15 ? FUN_004cab8c +4cab9c 5 ? FUN_004cab9c +4caba4 42 ? FUN_004caba4 +4cabd0 415 ? FUN_004cabd0 +4cad70 176 ? FUN_004cad70 +4cae20 112 ? FUN_004cae20 +4cae90 190 ? FUN_004cae90 +4caf50 92 ? FUN_004caf50 +4cafac 508 ? FUN_004cafac +4cb1a8 226 ? FUN_004cb1a8 +4cb28c 106 ? FUN_004cb28c +4cb2f8 15 ? FUN_004cb2f8 +4cb308 5 ? FUN_004cb308 +4cb310 70 ? FUN_004cb310 +4cb358 798 ? FUN_004cb358 +4cb678 140 ? FUN_004cb678 +4cb704 129 ? FUN_004cb704 +4cb788 90 ? FUN_004cb788 +4cb7e4 15 ? FUN_004cb7e4 +4cb7f4 5 ? FUN_004cb7f4 +4cb7fc 28 ? FUN_004cb7fc +4cb818 17 ? FUN_004cb818 +4cb82c 583 ? FUN_004cb82c +4cbea0 157 ? FUN_004cbea0 +4cbf40 77 ? FUN_004cbf40 +4cbf90 15 ? FUN_004cbf90 +4cbfa0 136 ? FUN_004cbfa0 +4cc028 136 ? FUN_004cc028 +4cc0e1 38 ? FUN_004cc0e1 +4cc108 61 ? FUN_004cc108 +4cc148 63 ? FUN_004cc148 +4cc1a0 162 ? FUN_004cc1a0 +4cc264 21 ? FUN_004cc264 +4cc27c 21 ? FUN_004cc27c +4cc294 102 ? FUN_004cc294 +4cc2fc 272 ? FUN_004cc2fc +4cc40c 5096 ? FUN_004cc40c +4cd918 32 ? FUN_004cd918 +4cd938 386 ? FUN_004cd938 +4cdac0 549 bt_l4/btl4vid.cpp FUN_004cdac0 +4ceecc 45 ? FUN_004ceecc +4ceefc 44 ? FUN_004ceefc +4cef28 6157 bt_l4/btl4vid.cpp FUN_004cef28 +4d0774 518 ? FUN_004d0774 +4d097c 663 ? FUN_004d097c +4d0c14 69 ? FUN_004d0c14 +4d0c5c 98 ? FUN_004d0c5c +4d0cc0 1320 bt_l4/btl4vid.cpp FUN_004d0cc0 +4d11e8 83 ? FUN_004d11e8 +4d123b 31 ? FUN_004d123b +4d125a 44 ? FUN_004d125a +4d1286 31 ? FUN_004d1286 +4d12a5 31 ? FUN_004d12a5 +4d12c4 31 ? FUN_004d12c4 +4d12e3 44 ? FUN_004d12e3 +4d130f 44 ? FUN_004d130f +4d133c 179 ? FUN_004d133c +4d13f0 43 ? FUN_004d13f0 +4d141c 495 ? FUN_004d141c +4d168c 288 ? FUN_004d168c +4d17ac 102 ? FUN_004d17ac +4d1814 44 ? FUN_004d1814 +4d1840 155 ? FUN_004d1840 +4d18dc 128 ? FUN_004d18dc +4d195c 5 ? FUN_004d195c +4d1964 5 ? FUN_004d1964 +4d196c 337 ? FUN_004d196c +4d1ae4 62 ? FUN_004d1ae4 +4d1b24 61 ? FUN_004d1b24 +4d1b64 45 ? FUN_004d1b64 +4d1b9c 47 ? FUN_004d1b9c +4d1bf0 1062 ? FUN_004d1bf0 +4d2150 125 ? FUN_004d2150 +4d21d0 227 ? FUN_004d21d0 +4d22b4 44 ? FUN_004d22b4 +4d22e0 27 ? FUN_004d22e0 +4d22fc 31 ? FUN_004d22fc +4d231c 31 ? FUN_004d231c +4d233c 31 ? FUN_004d233c +4d235c 31 ? FUN_004d235c +4d237c 31 ? FUN_004d237c +4d239c 31 ? FUN_004d239c +4d23bc 31 ? FUN_004d23bc +4d23dc 31 ? FUN_004d23dc +4d23fc 31 ? FUN_004d23fc +4d241c 31 ? FUN_004d241c +4d243c 31 ? FUN_004d243c +4d245c 31 ? FUN_004d245c +4d247c 31 ? FUN_004d247c +4d249c 31 ? FUN_004d249c +4d24bc 31 ? FUN_004d24bc +4d24dc 25 ? FUN_004d24dc +4d24f8 25 ? FUN_004d24f8 +4d2514 95 ? FUN_004d2514 +4d2574 76 ? FUN_004d2574 +4d25c0 38 ? FUN_004d25c0 +4d25e8 65 ? FUN_004d25e8 +4d262c 61 ? FUN_004d262c +4d266c 350 ? FUN_004d266c +4d27cc 44 ? FUN_004d27cc +4d27f8 27 ? FUN_004d27f8 +4d29fc 56 ? FUN_004d29fc +4d2a34 44 ? FUN_004d2a34 +4d2a60 131 ? FUN_004d2a60 +4d2ae4 80 ? FUN_004d2ae4 +4d2b34 24 ? FUN_004d2b34 +4d2b4c 31 ? FUN_004d2b4c +4d2b6c 34 ? FUN_004d2b6c +4d2b90 44 ? FUN_004d2b90 +4d2bbc 35 ? FUN_004d2bbc +4d2be0 35 ? FUN_004d2be0 +4d2c04 44 ? FUN_004d2c04 +4d2c30 2173 bt_l4/btl4mssn.cpp FUN_004d2c30 +4d34b0 20 ? FUN_004d34b0 +4d34c4 72 ? FUN_004d34c4 +4d350c 44 ? FUN_004d350c +4d3538 43 ? FUN_004d3538 +4d3564 73 ? FUN_004d3564 +4d35b0 98 ? FUN_004d35b0 +4d3614 47 ? FUN_004d3614 +4d3644 69 ? FUN_004d3644 +4d368c 55 ? FUN_004d368c +4d36c4 45 ? FUN_004d36c4 +4d36f4 822 bt_l4/btl4app.cpp FUN_004d36f4 +4d3a2c 101 ? FUN_004d3a2c +4d3a94 85 ? FUN_004d3a94 +4d3b74 25 ? FUN_004d3b74 +4d3b90 23 ? FUN_004d3b90 +4d3bb8 44 ? FUN_004d3bb8 +4d3be4 47 ? FUN_004d3be4 +4d3c14 32 ? FUN_004d3c14 +4d3c34 15 ? FUN_004d3c34 +4d3c44 250 ? FUN_004d3c44 +4d3d40 306 ? FUN_004d3d40 +4d3ea0 44 ? FUN_004d3ea0 +4d3ecc 42 ? FUN_004d3ecc +4d3ef8 74 ? FUN_004d3ef8 +4d3f44 402 ? FUN_004d3f44 +4d40d8 27 ? FUN_004d40d8 +4d4179 10 ? FUN_004d4179 +4d4183 10 ? FUN_004d4183 +4d418d 33 ? FUN_004d418d +4d45b0 22 ? FUN_004d45b0 +4d45c6 13 ? FUN_004d45c6 +4d45d3 12 ? FUN_004d45d3 +4d45df 13 ? FUN_004d45df +4d45ec 12 ? FUN_004d45ec +4d461f 134 ? FUN_004d461f +4d46a5 27 ? FUN_004d46a5 +4d46c0 15 ? FUN_004d46c0 +4d46cf 13 ? FUN_004d46cf +4d46dc 17 ? FUN_004d46dc +4d46ed 15 ? FUN_004d46ed +4d46fc 25 ? FUN_004d46fc +4d4718 328 ? FUN_004d4718 +4d4860 39 ? FUN_004d4860 +4d4888 109 ? FUN_004d4888 +4d48f8 30 ? FUN_004d48f8 +4d4918 36 ? FUN_004d4918 +4d493c 74 ? FUN_004d493c +4d4988 46 ? FUN_004d4988 +4d49b8 60 ? FUN_004d49b8 +4d49f4 40 ? FUN_004d49f4 +4d4a1c 43 ? FUN_004d4a1c +4d4a48 47 ? FUN_004d4a48 +4d4a78 25 ? FUN_004d4a78 +4d4a94 75 ? FUN_004d4a94 +4d4ae0 51 ? FUN_004d4ae0 +4d4b14 65 ? FUN_004d4b14 +4d4b58 65 ? FUN_004d4b58 +4d4b9c 79 ? FUN_004d4b9c +4d4bec 93 ? FUN_004d4bec +4d4c4c 41 ? FUN_004d4c4c +4d4c78 162 ? FUN_004d4c78 +4d4d1c 103 ? FUN_004d4d1c +4d4d84 44 ? FUN_004d4d84 +4d4db0 6 ? FUN_004d4db0 +4d4db7 25 ? FUN_004d4db7 +4d4dd0 102 ? FUN_004d4dd0 +4d4e36 250 ? FUN_004d4e36 +4d4f30 271 ? FUN_004d4f30 +4d503f 74 ? FUN_004d503f +4d5089 45 ? FUN_004d5089 +4d50b6 193 ? FUN_004d50b6 +4d5177 132 ? FUN_004d5177 +4d51fb 77 ? FUN_004d51fb +4d5248 58 ? FUN_004d5248 +4d5282 498 ? FUN_004d5282 +4d5488 45 ? FUN_004d5488 +4d54b5 81 ? FUN_004d54b5 +4d5506 63 ? FUN_004d5506 +4d5545 68 ? FUN_004d5545 +4d5593 112 ? FUN_004d5593 +4d563c 134 ? FUN_004d563c +4d56c2 92 ? FUN_004d56c2 +4d571e 436 ? FUN_004d571e +4d58d2 270 ? FUN_004d58d2 +4d59e0 19 ? FUN_004d59e0 +4d59f3 29 ? FUN_004d59f3 +4d5a10 71 ? FUN_004d5a10 +4d5a65 610 ? FUN_004d5a65 +4d5cdf 88 ? FUN_004d5cdf +4d5d4b 69 ? FUN_004d5d4b +4d5d90 422 ? FUN_004d5d90 +4d5f36 114 ? FUN_004d5f36 +4d5fa8 62 ? FUN_004d5fa8 +4d5fe6 625 ? FUN_004d5fe6 +4d6257 57 ? FUN_004d6257 +4d62b7 54 ? FUN_004d62b7 +4d62ed 8 ? FUN_004d62ed +4d62f5 31 ? FUN_004d62f5 +4d6314 25 ? FUN_004d6314 +4d632d 29 ? FUN_004d632d +4d634a 76 ? FUN_004d634a +4d6396 17 ? FUN_004d6396 +4d63a7 62 ? FUN_004d63a7 +4d63e5 375 ? FUN_004d63e5 +4d655c 197 ? FUN_004d655c +4d66b8 62 ? FUN_004d66b8 +4d66fe 37 ? FUN_004d66fe +4d6723 73 ? FUN_004d6723 +4d6777 37 ? FUN_004d6777 +4d679c 20 ? FUN_004d679c +4d67b0 31 ? FUN_004d67b0 +4d67cf 185 ? FUN_004d67cf +4d6888 40 ? FUN_004d6888 +4d68b0 10 ? FUN_004d68b0 +4d6958 26 ? FUN_004d6958 +4d6974 15 ? FUN_004d6974 +4d6984 19 ? FUN_004d6984 +4d69d0 17 ? FUN_004d69d0 +4d69ea 21 ? FUN_004d69ea +4d69ff 7 ? FUN_004d69ff +4d6a08 21 ? FUN_004d6a08 +4d6a1d 44 ? FUN_004d6a1d +4d6a50 5 ? thunk_FUN_004d92c4 +4d6a58 5 ? thunk_FUN_004d87e8 +4d6a68 5 ? thunk_FUN_004d9334 +4d6a70 5 ? thunk_FUN_004d93ac +4d6a78 5 ? thunk_FUN_004d892c +4d6a80 5 ? thunk_FUN_004d8b14 +4d6a88 125 ? FUN_004d6a88 +4d6b08 146 ? FUN_004d6b08 +4d6b9c 131 ? FUN_004d6b9c +4d6c20 298 ? FUN_004d6c20 +4d6d50 90 ? FUN_004d6d50 +4d6db0 13 ? FUN_004d6db0 +4d6dc0 189 ? FUN_004d6dc0 +4d6e80 166 ? FUN_004d6e80 +4d6f28 42 ? FUN_004d6f28 +4d6f54 41 ? FUN_004d6f54 +4d6f80 30 ? FUN_004d6f80 +4d6fa0 207 ? FUN_004d6fa0 +4d70b0 302 ? FUN_004d70b0 +4d71e0 51 ? FUN_004d71e0 +4d7214 90 ? FUN_004d7214 +4d7270 97 ? FUN_004d7270 +4d72d4 130 ? FUN_004d72d4 +4d7358 48 ? FUN_004d7358 +4d7388 23 ? FUN_004d7388 +4d73a0 52 ? FUN_004d73a0 +4d73d4 99 ? FUN_004d73d4 +4d7438 18 ? FUN_004d7438 +4d744c 203 ? FUN_004d744c +4d7518 243 ? FUN_004d7518 +4d760c 77 ? FUN_004d760c +4d765c 65 ? FUN_004d765c +4d771c 31 ? FUN_004d771c +4d773c 1345 ? FUN_004d773c +4d7cd8 427 ? FUN_004d7cd8 +4d7e84 97 ? FUN_004d7e84 +4d7f10 36 ? FUN_004d7f10 +4d7f34 36 ? FUN_004d7f34 +4d7f58 29 ? FUN_004d7f58 +4d7f78 10 ? FUN_004d7f78 +4d7f84 35 ? FUN_004d7f84 +4d7fa8 35 ? FUN_004d7fa8 +4d8080 30 ? FUN_004d8080 +4d80a0 47 ? FUN_004d80a0 +4d80d0 38 ? FUN_004d80d0 +4d80f8 52 ? FUN_004d80f8 +4d812c 1529 ? FUN_004d812c +4d87e8 50 ? FUN_004d87e8 +4d8834 138 ? FUN_004d8834 +4d88c0 107 ? FUN_004d88c0 +4d892c 302 ? FUN_004d892c +4d8a5c 183 ? FUN_004d8a5c +4d8b14 224 ? FUN_004d8b14 +4d8bf4 66 ? FUN_004d8bf4 +4d8c38 167 ? FUN_004d8c38 +4d8ce0 63 ? FUN_004d8ce0 +4d8d20 349 ? FUN_004d8d20 +4d8e80 14 ? FUN_004d8e80 +4d8e90 27 ? FUN_004d8e90 +4d8eac 64 ? FUN_004d8eac +4d8eec 104 ? FUN_004d8eec +4d8f54 25 ? FUN_004d8f54 +4d8f70 145 ? FUN_004d8f70 +4d9004 321 ? FUN_004d9004 +4d9148 66 ? FUN_004d9148 +4d91ac 18 ? FUN_004d91ac +4d91c0 70 ? FUN_004d91c0 +4d9208 25 ? FUN_004d9208 +4d9224 70 ? FUN_004d9224 +4d926c 25 ? FUN_004d926c +4d9288 60 ? FUN_004d9288 +4d92c4 64 ? FUN_004d92c4 +4d9304 45 ? FUN_004d9304 +4d9334 120 ? FUN_004d9334 +4d93ac 496 ? FUN_004d93ac +4d959c 26 ? FUN_004d959c +4d9800 221 ? FUN_004d9800 +4d98e0 95 ? FUN_004d98e0 +4d9c38 30 ? FUN_004d9c38 +4d9c58 23 ? FUN_004d9c58 +4d9c70 19 ? FUN_004d9c70 +4d9cc4 110 ? FUN_004d9cc4 +4d9d34 121 ? FUN_004d9d34 +4d9e28 77 ? FUN_004d9e28 +4d9e78 230 ? FUN_004d9e78 +4d9f60 303 ? FUN_004d9f60 +4da44c 53 ? FUN_004da44c +4da484 77 ? FUN_004da484 +4da538 98 ? FUN_004da538 +4da59c 90 ? FUN_004da59c +4da5f8 116 ? FUN_004da5f8 +4da66c 103 ? FUN_004da66c +4da754 108 ? FUN_004da754 +4da7c0 98 ? FUN_004da7c0 +4da914 115 ? FUN_004da914 +4da988 88 ? FUN_004da988 +4da9f4 108 ? FUN_004da9f4 +4daa60 27 ? FUN_004daa60 +4daa7c 58 ? FUN_004daa7c +4daac0 64 ? FUN_004daac0 +4dab0c 82 ? FUN_004dab0c +4dab60 149 ? FUN_004dab60 +4dabf8 76 ? FUN_004dabf8 +4dac44 87 ? FUN_004dac44 +4dac9c 114 ? FUN_004dac9c +4dad10 185 ? FUN_004dad10 +4dadcc 145 ? FUN_004dadcc +4dae60 160 ? FUN_004dae60 +4daf00 64 ? FUN_004daf00 +4daf40 60 ? FUN_004daf40 +4daf7c 70 ? FUN_004daf7c +4dafd8 20 ? FUN_004dafd8 +4dafec 17 ? FUN_004dafec +4db000 20 ? FUN_004db000 +4db014 88 ? FUN_004db014 +4db0ec 108 ? FUN_004db0ec +4db158 133 ? FUN_004db158 +4db1e0 133 ? FUN_004db1e0 +4db268 133 ? FUN_004db268 +4db428 108 ? FUN_004db428 +4db494 27 ? FUN_004db494 +4db4b0 53 ? FUN_004db4b0 +4db4f0 66 ? FUN_004db4f0 +4db534 64 ? FUN_004db534 +4db580 89 ? FUN_004db580 +4db5dc 87 ? FUN_004db5dc +4db634 122 ? FUN_004db634 +4db6b4 42 ? FUN_004db6b4 +4db6e0 54 ? FUN_004db6e0 +4db718 46 ? FUN_004db718 +4db748 68 ? FUN_004db748 +4db78c 244 ? FUN_004db78c +4db880 169 ? FUN_004db880 +4db92c 379 ? FUN_004db92c +4dbaa8 19 ? FUN_004dbaa8 +4dbabc 39 ? FUN_004dbabc +4dbae4 61 ? FUN_004dbae4 +4dbb24 551 ? FUN_004dbb24 +4dbd4c 112 ? FUN_004dbd4c +4dbdbc 53 ? FUN_004dbdbc +4dbdf1 5 ? FUN_004dbdf1 +4dbdf6 5 ? FUN_004dbdf6 +4dbe58 87 ? FUN_004dbe58 +4dbeb0 148 ? FUN_004dbeb0 +4dbf44 338 ? FUN_004dbf44 +4dc260 91 ? FUN_004dc260 +4dc2c8 90 ? FUN_004dc2c8 +4dc35c 74 ? FUN_004dc35c +4dc41c 112 ? FUN_004dc41c +4dc48c 57 ? FUN_004dc48c +4dc4d0 8 ? FUN_004dc4d0 +4dc4d8 33 ? FUN_004dc4d8 +4dc4fc 103 ? FUN_004dc4fc +4dc564 52 ? FUN_004dc564 +4dc598 37 ? FUN_004dc598 +4dc5c8 27 ? FUN_004dc5c8 +4dc5e4 65 ? FUN_004dc5e4 +4dc680 60 ? FUN_004dc680 +4dc6bc 27 ? FUN_004dc6bc +4dc6d8 54 ? FUN_004dc6d8 +4dc710 40 ? FUN_004dc710 +4dc738 65 ? FUN_004dc738 +4dc7d4 53 ? FUN_004dc7d4 +4dc80c 42 ? FUN_004dc80c +4dc888 5 ? FUN_004dc888 +4dc89c 40 ? FUN_004dc89c +4dc8c4 40 ? FUN_004dc8c4 +4dc8ec 179 ? FUN_004dc8ec +4dc9a0 19 ? FUN_004dc9a0 +4dc9b4 66 ? FUN_004dc9b4 +4dc9f8 40 ? FUN_004dc9f8 +4dca20 6 ? thunk_FUN_004dd24c +4dca26 6 ? thunk_FUN_004dd24c +4dca2c 6 ? thunk_FUN_004dd258 +4dca32 6 ? thunk_FUN_004dd258 +4dca38 108 ? FUN_004dca38 +4dcaa4 95 ? FUN_004dcaa4 +4dcb11 192 ? FUN_004dcb11 +4dcbdc 64 ? FUN_004dcbdc +4dcc1c 4 ? FUN_004dcc1c +4dcc20 4 ? FUN_004dcc20 +4dcc24 218 ? FUN_004dcc24 +4dcd00 13 ? FUN_004dcd00 +4dcd10 28 ? FUN_004dcd10 +4dcd2c 77 ? FUN_004dcd2c +4dcd7c 23 ? FUN_004dcd7c +4dcd94 37 ? FUN_004dcd94 +4dcdec 33 ? FUN_004dcdec +4dce10 17 ? FUN_004dce10 +4dce24 109 ? FUN_004dce24 +4dce94 474 ? FUN_004dce94 +4dd070 37 ? FUN_004dd070 +4dd0c8 44 ? FUN_004dd0c8 +4dd0f4 66 ? FUN_004dd0f4 +4dd138 58 ? FUN_004dd138 +4dd188 66 ? FUN_004dd188 +4dd1cc 19 ? FUN_004dd1cc +4dd1e0 92 ? FUN_004dd1e0 +4dd23c 15 ? FUN_004dd23c +4dd24c 12 ? FUN_004dd24c +4dd258 12 ? FUN_004dd258 +4dd264 245 ? FUN_004dd264 +4dd35c 113 ? FUN_004dd35c +4dd3d0 27 ? FUN_004dd3d0 +4dd3ec 48 ? FUN_004dd3ec +4dd41c 29 ? FUN_004dd41c +4dd43c 37 ? FUN_004dd43c +4dd494 21 ? FUN_004dd494 +4dd4b0 15 ? FUN_004dd4b0 +4dd4c0 20 ? FUN_004dd4c0 +4dd4d4 25 ? FUN_004dd4d4 +4dd53c 55 ? FUN_004dd53c +4dd574 638 ? FUN_004dd574 +4dd7f4 22 ? FUN_004dd7f4 +4ddc7c 112 ? FUN_004ddc7c +4ddd20 10 ? FUN_004ddd20 +4ddd2c 101 ? FUN_004ddd2c +4ddd94 49 ? FUN_004ddd94 +4dddc8 717 ? FUN_004dddc8 +4de098 164 ? FUN_004de098 +4de144 345 ? FUN_004de144 +4de2bc 43 ? FUN_004de2bc +4de2e8 209 ? FUN_004de2e8 +4de420 150 ? FUN_004de420 +4de4b8 163 ? FUN_004de4b8 +4de55c 230 ? FUN_004de55c +4de644 283 ? FUN_004de644 +4de760 344 ? FUN_004de760 +4de8b8 27 ? FUN_004de8b8 +4de8d4 193 ? FUN_004de8d4 +4de998 196 ? FUN_004de998 +4dea5c 108 ? FUN_004dea5c +4deac8 82 ? FUN_004deac8 +4deb1c 63 ? FUN_004deb1c +4deb5c 33 ? FUN_004deb5c +4deb80 69 ? FUN_004deb80 +4debc8 94 ? FUN_004debc8 +4dec40 70 ? FUN_004dec40 +4dec88 173 ? FUN_004dec88 +4ded38 15 ? FUN_004ded38 +4ded48 23 ? FUN_004ded48 +4deda4 20 ? FUN_004deda4 +4dedb8 14 ? FUN_004dedb8 +4dedc8 1 ? FUN_004dedc8 +4dedcc 88 ? FUN_004dedcc +4dee24 21 ? FUN_004dee24 +4dee3c 21 ? FUN_004dee3c +4dee74 79 ? FUN_004dee74 +4deec4 1 ? FUN_004deec4 +4df048 48 ? FUN_004df048 +4df078 174 ? FUN_004df078 +4df128 19 ? FUN_004df128 +4df13c 81 ? FUN_004df13c +4df190 132 ? FUN_004df190 +4df214 31 ? FUN_004df214 +4df234 367 ? FUN_004df234 +4df3a4 33 ? FUN_004df3a4 +4df3c8 95 ? FUN_004df3c8 +4df428 122 ? FUN_004df428 +4df4a4 3 ? FUN_004df4a4 +4df4a8 3 ? FUN_004df4a8 +4df4ac 169 ? FUN_004df4ac +4df558 355 ? FUN_004df558 +4df6bc 118 ? FUN_004df6bc +4df734 12 ? FUN_004df734 +4df748 76 ? FUN_004df748 +4df794 32 ? FUN_004df794 +4df7b4 22 ? FUN_004df7b4 +4df7cc 361 ? FUN_004df7cc +4df938 21 ? FUN_004df938 +4df950 37 ? FUN_004df950 +4dfb04 276 ? FUN_004dfb04 +4dfc18 374 ? FUN_004dfc18 +4dfd90 12 ? FUN_004dfd90 +4dfda8 75 ? FUN_004dfda8 +4dfdf3 6 ? GetStartupInfoA +4dfdf9 6 ? DeleteFileA +4dfdff 6 ? ExitProcess +4dfe05 6 ? CloseHandle +4dfe0b 6 ? GetConsoleMode +4dfe11 6 ? GetCurrentDirectoryA +4dfe17 6 ? GetCurrentThreadId +4dfe1d 6 ? GetDriveTypeA +4dfe23 6 ? CreateFileA +4dfe29 6 ? GetEnvironmentVariableA +4dfe2f 6 ? GetFileAttributesA +4dfe35 6 ? GetFileType +4dfe3b 6 ? GetLastError +4dfe41 6 ? GetLocalTime +4dfe47 6 ? GetLogicalDrives +4dfe4d 6 ? GetModuleFileNameA +4dfe53 6 ? GetModuleHandleA +4dfe59 6 ? GetNumberOfConsoleInputEvents +4dfe5f 6 ? GetEnvironmentStrings +4dfe65 6 ? GetCommandLineA +4dfe6b 6 ? GetStdHandle +4dfe71 6 ? GetTickCount +4dfe7d 6 ? GetVersion +4dfe83 6 ? PeekConsoleInputA +4dfe89 6 ? RaiseException +4dfe8f 6 ? ReadConsoleInputA +4dfe95 6 ? ReadFile +4dfe9b 6 ? RtlUnwind +4dfea1 6 ? SetConsoleCtrlHandler +4dfea7 6 ? SetConsoleMode +4dfead 6 ? SetCurrentDirectoryA +4dfeb3 6 ? SetEnvironmentVariableA +4dfeb9 6 ? SetFilePointer +4dfebf 6 ? SetHandleCount +4dfec5 6 ? UnhandledExceptionFilter +4dfecb 6 ? VirtualAlloc +4dfed1 6 ? VirtualFree +4dfed7 6 ? WriteFile +4dfedd 6 ? GetProcAddress +4dfee3 6 ? MessageBoxA +4dfee9 6 ? EnumThreadWindows diff --git a/reference/decomp/archive_2025export/gap_census.tsv b/reference/decomp/archive_2025export/gap_census.tsv new file mode 100644 index 0000000..03e94ce --- /dev/null +++ b/reference/decomp/archive_2025export/gap_census.tsv @@ -0,0 +1,429 @@ +lo hi size code starts call_in visited tu +412e41 4146dc 6299 5936 412e6c,4142e8,4143ac,414418,4144b0,4146c4 0 munga/boxsolid.cpp|munga/iterator.cpp +4a9b5a 4ab188 5678 4957 4a9b5c 0 4a9b5a,4a9b5c,4a9b6c,4a9bff,4a9cb6,4a9cf0,4a9cf2,4a9d00,4a9d20,4a9d39,4a9d63,4a9d89,4a9d9e,4a9da4,4a9e80,4a9eb6,4a9f61,4a9f70,4aa007,4aa011,4aa0a9,4aa0af,4aa158,4aa254,4aa288,4aa2eb,4aa342,4aa388,4aa399,4aa3d3,4aa4ff,4aa505,4aa588,4aa5c6,4aa5e1,4aa5e6,4aa630,4aa633,4aa685,4aa6cf,4aa716,4aa741,4aa76c,4aa7ce,4aa81e,4aa86c,4aa89f,4aa8e2,4aa8f3,4aa984,4aaae2,4aab2f,4aab3a,4aab75,4aab9c,4aac2b,4aac6c,4aac88,4aad35,4aad3d,4aaf14,4aaf18,4aaf74,4aaf83,4aaf89,4aafab,4ab16c,4ab178,4ab184 bt/mech2.cpp|bt/heat.cpp +486467 487788 4897 4265 0 munga_l4/l4splr.cpp|bt/btmssn.cpp +49ffc8 4a1232 4714 4116 49ffcc,4a0164,4a0230,4a0c2c,4a122c 2 49ffc8,49ffcc,49ffde,49ffff,4a0027,4a0030,4a003c,4a0051,4a0065,4a006b,4a007d,4a0092,4a00b2,4a00d2,4a00f2,4a010a,4a0117,4a0121,4a0124,4a0148,4a0154,4a015c,4a0164,4a0208,4a0210,4a0218,4a0228,4a0230,4a0264,4a02f4,4a02fb,4a0300,4a0303,4a033c,4a034f,4a0358,4a0361,4a0368,4a036d,4a0375,4a037a,4a038c,4a0396,4a0423,4a0439,4a0450,4a0461,4a0473,4a0488,4a04b9,4a04cc,4a04d8,4a04da,4a0506,4a052b,4a05ce,4a05d9,4a06c0,4a06d2,4a07b2,4a07b5,4a07b8,4a07c0,4a07d4,4a07f6,4a0856,4a0887,4a0890,4a08bd,4a0aa8,4a0ac8,4a0ace,4a0ad6,4a0aef,4a0b21,4a0b33,4a0bda,4a0c2c,4a0c79,4a0d84,4a0e5b,4a0e9e,4a0fab,4a104d,4a10ff,4a117f,4a11cb,4a11d9,4a122c bt/btmssn.cpp|bt/mech.cpp +4cdce5 4ceecc 4583 3831 4cdcf0 0 4cdcf0,4cdd75,4cdd9d,4cddc1,4cde59,4cdede,4cdf6f,4ce2c2,4ce3e2,4ce6e0,4ce7e5,4ceb16,4cebf9,4cec12,4cec47,4cec98,4ced87,4cee64 bt_l4/btl4vid.cpp +4a68ce 4a71f4 2342 1822 4a6928,4a6d8c 0 4a6928,4a6989,4a69aa,4a69d6,4a6a06,4a6a38,4a6a6f,4a6aad,4a6ae2,4a6b21,4a6b37,4a6b4d,4a6b63,4a6b9d,4a6bdb,4a6c17,4a6c6e,4a6cc4,4a6d3d,4a6d6e,4a6d7f,4a6d8c,4a6de9,4a6e0a,4a6e36,4a6e66,4a6e9a,4a6ecc,4a6ed1,4a6f11,4a6f46,4a6f7b,4a6f85,4a6f9b,4a6fb1,4a6fc7,4a6ffc,4a7001,4a7041,4a7076,4a707d,4a712c,4a71d8,4a71e9 bt/mech2.cpp +4596ab 459eb8 2061 1795 0 4599ae munga_l4/l4vidrnd.cpp|munga_l4/l4video.cpp +480a2a 48116d 1859 1521 0 munga_l4/l4splr.cpp|bt/btmssn.cpp +42f3fe 42f9bc 1470 1341 42f404 0 munga/player.cpp|munga/explode.cpp +40c82a 40cdb4 1418 1322 0 munga/scalar.cpp|munga/boxsolid.cpp +464bf6 4651ac 1462 1312 464bfc,465140 0 munga_l4/l4audio.cpp|munga_l4/l4audlvl.cpp +40b68c 40bbe8 1372 1293 0 munga/scalar.cpp|munga/boxsolid.cpp +481f77 48255c 1509 1267 0 munga_l4/l4splr.cpp|bt/btmssn.cpp +47ae1b 47b2ec 1233 1060 0 munga_l4/l4ctrl.cpp|munga_l4/l4app.cpp +4dd80a 4ddc7c 1138 1030 0 bt_l4/btl4app.cpp|? +405b1e 405f44 1062 972 0 munga/filestrm.hpp|munga/scalar.cpp +427fd0 4283b8 1000 931 0 munga/network.cpp|munga/watcher.cpp +4cba73 4cbea0 1069 904 4cbaf0 0 4cbaf0 bt_l4/btl4gaug.cpp|bt_l4/btl4vid.cpp +4be3cf 4be7c4 1013 897 4be474 0 4be474 bt/mechweap.hpp|bt/btplayer.cpp +4b297b 4b2d8c 1041 894 4b2980 1 4b2980,4b298c,4b299e,4b29bd,4b29d7,4b2a0d,4b2a43,4b2a4a,4b2a62,4b2a67,4b2aa8,4b2ac2,4b2ac7,4b2aed,4b2afd,4b2b10,4b2b3d,4b2b8a,4b2be3,4b2c2d,4b2c75,4b2d00,4b2d23,4b2d2b,4b2d4b,4b2d6e,4b2d80,4b2d84,4b2d88,4b2d8b bt/powersub.cpp|bt/mechweap.cpp +4da08f 4da44c 957 866 4da090,4da108,4da208,4da300 0 bt_l4/btl4app.cpp|? +4147f9 414b60 871 789 414800,41486c,414904,414b18 0 munga/boxsolid.cpp|munga/iterator.cpp +4d41ae 4d45b0 1026 765 0 bt_l4/btl4app.cpp|? +412940 412c78 824 760 412944,4129b0,412a48,412c60 0 munga/boxsolid.cpp|munga/iterator.cpp +4af691 4af9cf 830 707 0 bt/heat.cpp|bt/mechmppr.cpp +4bc0fd 4bc3fc 767 693 4bc104 0 4bc100,4bc104,4bc136,4bc194,4bc3f4,4bc3f8 bt/mechweap.hpp|bt/btplayer.cpp +4829ab 482c9f 756 687 0 munga_l4/l4splr.cpp|bt/btmssn.cpp +4bdd7b 4be078 765 673 4bdd7c,4bddbc,4bddec,4be058 0 bt/mechweap.hpp|bt/btplayer.cpp +4105ff 4108b4 693 635 410604,410688,410754,4108a0 0 munga/boxsolid.cpp|munga/iterator.cpp +487a27 487ca0 633 632 0 munga_l4/l4splr.cpp|bt/btmssn.cpp +4221b9 42249c 739 631 4221c0,422360 0 munga/network.cpp|munga/watcher.cpp +4c08fc 4c0bc8 716 613 4c0904 0 bt/btplayer.cpp|bt_l4/btl4rdr.cpp +4bbcfd 4bbfcc 719 607 4bbd04,4bbf88 0 4bbd04,4bbd12,4bbd1b,4bbd28,4bbd36,4bbd71,4bbd80,4bbda9,4bbdcd,4bbdd2,4bbdd9,4bbdea,4bbdf5,4bbe04,4bbe0c,4bbe1d,4bbe25,4bbe30,4bbe44,4bbe4d,4bbe54,4bbe65,4bbe76,4bbe85,4bbe8e,4bbe95,4bbea6,4bbeb1,4bbec2,4bbee6,4bbef4,4bbf05,4bbf0d,4bbf11,4bbf2a,4bbf34,4bbf41,4bbf4c,4bbf51,4bbf5f,4bbf88 bt/mechweap.hpp|bt/btplayer.cpp +4c05be 4c083c 638 552 4c05c4 0 4c05c0,4c05c4,4c05df,4c0611,4c062b,4c0632,4c0641,4c064d,4c0668,4c0670,4c0674,4c067a,4c06a4,4c06da,4c06dd,4c06e3,4c06e9,4c0701,4c072b,4c07cd,4c0828,4c0830 bt/btplayer.cpp|bt_l4/btl4rdr.cpp +4bfca1 4bfee0 575 535 4bfcac 0 4bfcac bt/mechweap.hpp|bt/btplayer.cpp +483b9b 483df0 597 520 0 munga_l4/l4splr.cpp|bt/btmssn.cpp +4b8837 4b8a8c 597 509 4b8838,4b8974,4b8a48 0 4b8837,4b8a48,4b8a50,4b8a5b,4b8a68,4b8a6f bt/powersub.cpp|bt/mechweap.cpp +4c11b3 4c1408 597 499 4c11b4,4c1200,4c1230,4c13d4 0 4c11b3,4c1230,4c13d4 bt/btplayer.cpp|bt_l4/btl4rdr.cpp +47b8e2 47bb20 574 488 47b8ec 0 munga_l4/l4app.cpp|munga_l4/l4splr.cpp +4d95b6 4d9800 586 487 0 bt_l4/btl4app.cpp|? +423202 423414 530 460 0 munga/network.cpp|munga/watcher.cpp +45472a 454924 506 451 0 munga_l4/l4vidrnd.cpp +4dc096 4dc260 458 432 4dc098,4dc0b8,4dc1d8,4dc1e0 0 bt_l4/btl4app.cpp|? +4c6482 4c668d 523 426 4c6488 0 4c6488 bt_l4/btl4gaug.cpp|bt_l4/btl4vid.cpp +474671 474855 484 421 0 munga_l4/l4gauge.cpp|munga_l4/l4ctrl.cpp +4d2813 4d29fc 489 414 4d2814 0 bt_l4/btl4vid.cpp|bt_l4/btl4mssn.cpp +4816b2 48186d 443 404 0 munga_l4/l4splr.cpp|bt/btmssn.cpp +4be903 4beae4 481 396 4be904,4be960,4be9a0 0 4be9a0 bt/mechweap.hpp|bt/btplayer.cpp +45fa03 45fbf4 497 394 45fa08 0 45fb14 munga_l4/l4video.cpp +42ddc4 42df8c 456 391 42ddcc 0 munga/player.cpp|munga/explode.cpp +4551b8 4553ac 500 389 4551c0,455355 0 4551b8 munga_l4/l4vidrnd.cpp +49f84f 49fa00 433 381 49f854 0 49f854,49f88e,49f8cf bt/btmssn.cpp|bt/mech.cpp +443cf5 443e94 415 380 0 munga/watcher.hpp|munga/gauge.cpp +4df975 4dfb04 399 357 4df97c 0 bt_l4/btl4app.cpp|? +4c0f43 4c10dc 409 356 4c1008,4c1011,4c1044 0 bt/btplayer.cpp|bt_l4/btl4rdr.cpp +4109e2 410b5c 378 347 4109e8,410a94 0 munga/boxsolid.cpp|munga/iterator.cpp +4bb947 4bbae0 409 332 4bb948,4bb988,4bb9b8 0 4bb9b8,4bb9d0,4bba29,4bbabe,4bbacf bt/mechweap.hpp|bt/btplayer.cpp +4d993f 4d9c38 761 321 4d9940,4d997d,4d99c5,4d9a15,4d9a55,4d9a6b,4d9a8c,4d9aad,4d9ac5,4d9b2d,4d9b95,4d9be5 0 bt_l4/btl4app.cpp|? +4deec5 4df048 387 321 0 bt_l4/btl4app.cpp|? +4ab9c8 4abb40 376 318 4ab9d8 0 4ab9d8,4aba86,4abab9 bt/mech2.cpp|bt/heat.cpp +409c41 409d9c 347 312 0 munga/scalar.cpp|munga/boxsolid.cpp +4c8ded 4c8f54 359 311 4c8df4 1 4c8df4 bt_l4/btl4gaug.cpp|bt_l4/btl4vid.cpp +4b1a3b 4b1bb1 374 308 4b1a40 0 4b1a40 bt/powersub.cpp|bt/mechweap.cpp +484ed6 485020 330 307 0 munga_l4/l4splr.cpp|bt/btmssn.cpp +43223f 4323a8 361 306 0 munga/explode.cpp|munga/registry.cpp +4b8b92 4b8d18 390 305 4b8b9c 0 4b8b9a,4b8b9c,4b8bab,4b8bb9,4b8be3,4b8bf0,4b8c0f,4b8c16,4b8c1b,4b8c1e,4b8c5a,4b8ce8,4b8ceb,4b8d0d bt/powersub.cpp|bt/mechweap.cpp +47bc11 47bd48 311 284 47bc14,47bccc 0 munga_l4/l4app.cpp|munga_l4/l4splr.cpp +40f6a7 40f7d8 305 283 0 munga/boxsolid.cpp|munga/iterator.cpp +410070 4101a0 304 279 41007c,410180 0 munga/boxsolid.cpp|munga/iterator.cpp +4310c3 431200 317 267 4310c4,431170,4311dc 0 munga/explode.cpp|munga/registry.cpp +4b1e33 4b1f7c 329 258 4b1e34,4b1e90,4b1ed0 0 4b1ed0 bt/powersub.cpp|bt/mechweap.cpp +481565 481675 272 247 0 munga_l4/l4splr.cpp|bt/btmssn.cpp +44e5a2 44e6c0 286 246 44e5a8 0 munga/app.cpp +4cd7f4 4cd918 292 244 4cd804 0 bt_l4/btl4gaug.cpp|bt_l4/btl4vid.cpp +45888e 4589a0 274 241 0 munga_l4/l4vidrnd.cpp +4d2016 4d2150 314 241 0 bt_l4/btl4vid.cpp|bt_l4/btl4mssn.cpp +466ac2 466bc4 258 235 0 munga_l4/l4audwtr.cpp|munga_l4/l4audres.cpp +466702 466804 258 234 0 munga_l4/l4audwtr.cpp|munga_l4/l4audres.cpp +484076 48416d 247 229 0 munga_l4/l4splr.cpp|bt/btmssn.cpp +480899 4809ba 289 222 0 munga_l4/l4splr.cpp|bt/btmssn.cpp +483e86 483f75 239 213 0 munga_l4/l4splr.cpp|bt/btmssn.cpp +4b76c3 4b77bc 249 201 4b7780 0 4b7780 bt/powersub.cpp|bt/mechweap.cpp +4c452c 4c462c 256 201 4c4534 0 bt_l4/btl4gaug.cpp|bt_l4/btl4vid.cpp +4bac04 4bace8 228 199 4bac0c 0 4bac0c bt/mechweap.hpp|bt/btplayer.cpp +42e630 42e718 232 198 42e650,42e6cc 0 munga/player.cpp|munga/explode.cpp +4b9470 4b9550 224 193 0 bt/powersub.cpp|bt/mechweap.cpp +41d9ec 41dac6 218 192 41da5c 0 munga/network.cpp|munga/watcher.cpp +4b257f 4b2660 225 192 0 bt/powersub.cpp|bt/mechweap.cpp +4ba379 4ba45c 227 192 4ba39c,4ba410 0 bt/mechweap.cpp|bt/mechweap.hpp +4036af 403798 233 190 0 munga/filestrm.hpp|munga/scalar.cpp +4bb796 4bb878 226 190 0 bt/mechweap.hpp|bt/btplayer.cpp +42c936 42ca20 234 188 42c93c 0 munga/cammgr.cpp|munga/player.cpp +4825f5 4826d1 220 187 0 munga_l4/l4splr.cpp|bt/btmssn.cpp +4063ee 4064bc 206 186 0 munga/filestrm.hpp|munga/scalar.cpp +40cee4 40cfb8 212 186 0 munga/scalar.cpp|munga/boxsolid.cpp +40a66e 40a738 202 185 40a67c 1 munga/scalar.cpp|munga/boxsolid.cpp +4424e9 4425af 198 185 4424ef 0 munga/watcher.hpp|munga/gauge.cpp +468476 46853c 198 185 46847c 0 munga_l4/l4audrnd.cpp|munga_l4/l4gauge.cpp +470c15 470cfc 231 184 470c1c 0 munga_l4/l4audrnd.cpp|munga_l4/l4gauge.cpp +4bfb43 4bfc20 221 184 4bfb44,4bfba8,4bfbe8 0 4bfbe8 bt/mechweap.hpp|bt/btplayer.cpp +4851da 4852b1 215 183 0 munga_l4/l4splr.cpp|bt/btmssn.cpp +4328f7 4329d4 221 179 4328f8,432944,432974 0 munga/explode.cpp|munga/registry.cpp +4b5b1e 4b5bf8 218 178 4b5b44,4b5ba0,4b5be0 0 4b5be0 bt/powersub.cpp|bt/mechweap.cpp +481e2b 481eff 212 174 0 munga_l4/l4splr.cpp|bt/btmssn.cpp +4d8725 4d87e8 195 174 4d87d4 0 bt_l4/btl4app.cpp|? +4a4c97 4a4d60 201 173 4a4c98,4a4d14 0 bt/mech.cpp|bt/mech2.cpp +4c60ef 4c61c8 217 173 4c60f4 0 bt_l4/btl4gaug.cpp|bt_l4/btl4vid.cpp +42a087 42a150 201 172 42a088,42a104 0 munga/hostmgr.cpp|munga/caminst.cpp +42d1f7 42d2c0 201 172 0 munga/cammgr.cpp|munga/player.cpp +420d90 420e58 200 171 420d90 0 munga/network.cpp|munga/watcher.cpp +433153 433220 205 170 0 munga/explode.cpp|munga/registry.cpp +4c1b45 4c1c24 223 170 4c1b4c 0 bt/btplayer.cpp|bt_l4/btl4rdr.cpp +40793f 4079fc 189 165 0 munga/filestrm.hpp|munga/scalar.cpp +42d53f 42d600 193 165 42d540,42d5b4 0 munga/cammgr.cpp|munga/player.cpp +4bcaed 4bcbb0 195 165 0 bt/mechweap.hpp|bt/btplayer.cpp +41a2be 41a37f 193 164 41a324 0 munga/hash.cpp|munga/event.cpp +4b08db 4b099c 193 164 4b08dc,4b0950 0 bt/mechmppr.cpp|bt/powersub.cpp +44475e 444818 186 163 444764 0 munga/gauge.cpp|munga/lamp.cpp +4bd1fb 4bd2c0 197 163 4bd1fc,4bd23c,4bd26c 0 4bd26c,4bd271 bt/mechweap.hpp|bt/btplayer.cpp +4bee8b 4bef4c 193 163 4bef28 0 bt/mechweap.hpp|bt/btplayer.cpp +409145 4091f4 175 160 0 munga/scalar.cpp|munga/boxsolid.cpp +409747 4097f4 173 160 0 munga/scalar.cpp|munga/boxsolid.cpp +4acee9 4acfa9 192 159 0 4acf10 bt/mech2.cpp|bt/heat.cpp +495fbe 496078 186 157 0 munga_l4/l4splr.cpp|bt/btmssn.cpp +47f761 47f807 166 156 0 munga_l4/l4splr.cpp|bt/btmssn.cpp +405f51 406018 199 155 0 munga/filestrm.hpp|munga/scalar.cpp +4d7fcb 4d8080 181 155 0 bt_l4/btl4app.cpp|? +41c378 41c42c 180 153 41c378 0 munga/cmpnnt.cpp|munga/network.cpp +4a2cae 4a2d48 154 147 0 4a2d44 bt/mech.cpp|bt/mech2.cpp +43d723 43d7bc 153 146 43d730 0 munga/audseq.cpp|munga/audwthr.cpp +422f35 422fe0 171 145 422f44 0 munga/network.cpp|munga/watcher.cpp +44de75 44df10 155 144 44de78,44de8c,44dea0,44deb8,44ded0,44dee8,44defc 0 munga/controls.cpp|munga/app.cpp +4bdbff 4bdcb4 181 142 4bdca4 0 4bdca4 bt/mechweap.hpp|bt/btplayer.cpp +4c5ac4 4c5b7c 184 141 4c5ad4 0 4c5ac8 bt_l4/btl4gaug.cpp|bt_l4/btl4vid.cpp +42c58b 42c630 165 139 42c58c 0 42c611 munga/cammgr.cpp|munga/player.cpp +4d68ba 4d6958 158 139 0 bt_l4/btl4app.cpp|? +47a999 47aa48 175 138 47a9bc 0 munga_l4/l4ctrl.cpp|munga_l4/l4app.cpp +423ce3 423d88 165 137 0 munga/network.cpp|munga/watcher.cpp +42855f 428601 162 137 428560,4285c4 0 munga/network.cpp|munga/watcher.cpp +42f07f 42f121 162 136 0 munga/player.cpp|munga/explode.cpp +411950 4119dc 140 133 411958 0 munga/boxsolid.cpp|munga/iterator.cpp +411b54 411be0 140 133 411b5c 0 munga/boxsolid.cpp|munga/iterator.cpp +42f9d7 42fa79 162 133 42f9d8,42fa3c 0 munga/player.cpp|munga/explode.cpp +41215a 4121e8 142 132 412164 0 munga/boxsolid.cpp|munga/iterator.cpp +412367 4123f4 141 132 412370 0 munga/boxsolid.cpp|munga/iterator.cpp +41256e 4125fc 142 132 412578 0 munga/boxsolid.cpp|munga/iterator.cpp +411178 411200 136 131 41117c 0 munga/boxsolid.cpp|munga/iterator.cpp +41136c 4113f4 136 131 411370 0 munga/boxsolid.cpp|munga/iterator.cpp +411d4d 411ddc 143 131 411d58 0 munga/boxsolid.cpp|munga/iterator.cpp +411f52 411fe0 142 131 411f5c 0 munga/boxsolid.cpp|munga/iterator.cpp +41277b 412808 141 131 412784 0 munga/boxsolid.cpp|munga/iterator.cpp +46d5ec 46d694 168 131 0 munga_l4/l4audrnd.cpp|munga_l4/l4gauge.cpp +41155e 4115e8 138 129 411564 0 munga/boxsolid.cpp|munga/iterator.cpp +41174d 4117d8 139 129 411754 0 munga/boxsolid.cpp|munga/iterator.cpp +422b1d 422bac 143 126 0 munga/network.cpp|munga/watcher.cpp +4ad57f 4ad619 154 126 4ad580,4ad5dc 0 bt/mech2.cpp|bt/heat.cpp +44df5b 44dfe0 133 124 0 munga/controls.cpp|munga/app.cpp +479aee 479b78 138 123 0 munga_l4/l4ctrl.cpp|munga_l4/l4app.cpp +4d160b 4d168c 129 119 0 bt_l4/btl4vid.cpp|bt_l4/btl4mssn.cpp +481202 481286 132 118 0 munga_l4/l4splr.cpp|bt/btmssn.cpp +42943c 4294c1 133 115 0 munga/hostmgr.cpp|munga/caminst.cpp +433895 433920 139 115 433898,4338e0 0 munga/registry.cpp|munga/intorgn.cpp +4366e1 436769 136 115 0 munga/renderer.cpp|munga/audio.cpp +436ecc 436f51 133 115 436ecc,436f14 0 munga/audio.cpp|munga/audlvl.cpp +43c096 43c11d 135 115 0 munga/audsrc.cpp|munga/audmidi.cpp +44f050 44f0d5 133 115 44f050,44f098 0 munga/app.cpp|munga/appmgr.cpp +452996 452a1d 135 115 452998,4529e0 0 munga_l4/l4net.cpp|munga_l4/l4vidrnd.cpp +47c760 47c7e8 136 115 0 munga_l4/l4splr.cpp|bt/btmssn.cpp +4d3ae9 4d3b74 139 115 4d3b34 0 bt_l4/btl4app.cpp|? +4d40f3 4d4179 134 115 4d40f4 0 bt_l4/btl4app.cpp|? +4db2ed 4db428 315 115 4db2ed,4db34d,4db3a5,4db411,4db41b 0 bt_l4/btl4app.cpp|? +4dc3a6 4dc41c 118 115 4dc3a8 0 bt_l4/btl4app.cpp|? +4352f0 435375 133 114 0 munga/interest.cpp|munga/renderer.cpp +47d528 47d5a2 122 113 0 munga_l4/l4splr.cpp|bt/btmssn.cpp +463b3b 463bbc 129 111 463b60 0 munga_l4/l4audio.cpp +474542 4745e0 158 111 474550 0 munga_l4/l4gauge.cpp|munga_l4/l4ctrl.cpp +48128b 48130d 130 110 0 munga_l4/l4splr.cpp|bt/btmssn.cpp +40a742 40a7c0 126 109 40a744 0 munga/scalar.cpp|munga/boxsolid.cpp +437360 4373e8 136 107 0 munga/audio.cpp|munga/audlvl.cpp +4b2140 4b21d0 144 105 4b215c 0 4b2154,4b2158,4b215c,4b2164,4b2194,4b219f bt/powersub.cpp|bt/mechweap.cpp +4d769d 4d771c 127 104 0 bt_l4/btl4app.cpp|? +4d9dad 4d9e28 123 104 4d9db0 3 bt_l4/btl4app.cpp|? +47f5a7 47f629 130 103 0 munga_l4/l4splr.cpp|bt/btmssn.cpp +49e80e 49e880 114 103 49e814 0 49e814 bt/btmssn.cpp|bt/mech.cpp +49f367 49f3d5 110 102 49f36d 0 bt/btmssn.cpp|bt/mech.cpp +42d913 42d990 125 101 0 munga/cammgr.cpp|munga/player.cpp +4c14cb 4c1548 125 101 0 bt/btplayer.cpp|bt_l4/btl4rdr.cpp +4308cf 43094a 123 100 0 munga/explode.cpp|munga/registry.cpp +46416b 4641e0 117 100 464178 0 munga_l4/l4audio.cpp +47d390 47d3fd 109 99 0 munga_l4/l4splr.cpp|bt/btmssn.cpp +4c4aff 4c4b84 133 95 4c4b08 0 4c4b08 bt_l4/btl4gaug.cpp|bt_l4/btl4vid.cpp +41ca44 41cab2 110 93 41ca84 0 munga/cmpnnt.cpp|munga/network.cpp +4ae45e 4ae4d8 122 93 4ae464 0 4ae464,4ae497,4ae499,4ae4a5,4ae4b1,4ae4bd bt/heat.cpp|bt/mechmppr.cpp +41d27b 41d2ea 111 92 41d27c 0 munga/cmpnnt.cpp|munga/network.cpp +464818 46487c 100 92 464824 0 munga_l4/l4audio.cpp +4ca194 4ca208 116 92 4ca1a0 0 4ca194 bt_l4/btl4gaug.cpp|bt_l4/btl4vid.cpp +49bf6f 49bfde 111 90 0 bt/btmssn.cpp|bt/mech.cpp +4da822 4da914 242 90 4da822,4da88a,4da894,4da89e,4da8a8 0 bt_l4/btl4app.cpp|? +4de3b9 4de420 103 86 0 bt_l4/btl4app.cpp|? +4d7c7d 4d7cd8 91 84 0 bt_l4/btl4app.cpp|? +4dc625 4dc680 91 84 4dc628,4dc660 0 bt_l4/btl4app.cpp|? +4b6a11 4b6a78 103 82 4b6a1c 0 4b6a1c bt/powersub.cpp|bt/mechweap.cpp +4dc779 4dc7d4 91 81 4dc77c 2 bt_l4/btl4app.cpp|? +4bafb6 4bb014 94 80 4bafc8 0 4bafbc,4bafc8 bt/mechweap.hpp|bt/btplayer.cpp +41b8fb 41b956 91 79 41b928 0 munga/cmpnnt.cpp|munga/network.cpp +450004 45005e 90 79 0 munga/icom.cpp|munga_l4/l4net.cpp +47d002 47d062 96 79 47d008,47d034 0 munga_l4/l4splr.cpp|bt/btmssn.cpp +491bd6 491c2c 86 79 0 munga_l4/l4splr.cpp|bt/btmssn.cpp +4dbdfb 4dbe58 93 79 4dbdfc 0 bt_l4/btl4app.cpp|? +477a31 477a8e 93 78 477a34,477a60 0 munga_l4/l4ctrl.cpp|munga_l4/l4app.cpp +40a8de 40a938 90 77 0 munga/scalar.cpp|munga/boxsolid.cpp +42134f 4213aa 91 77 421350,42137c 0 munga/network.cpp|munga/watcher.cpp +4bcbfb 4bcc60 101 77 4bcbfc,4bcc3c 0 4bcc3c,4bcc4e bt/mechweap.hpp|bt/btplayer.cpp +4bbc18 4bbc78 96 76 4bbc20 0 4bbc20 bt/mechweap.hpp|bt/btplayer.cpp +4bb425 4bb478 83 74 4bb42c 0 4bb428,4bb42c bt/mechweap.hpp|bt/btplayer.cpp +40a482 40a4d8 86 73 0 munga/scalar.cpp|munga/boxsolid.cpp +40f2ac 40f2f8 76 72 0 munga/scalar.cpp|munga/boxsolid.cpp +4a7ef6 4a7f50 90 71 0 bt/mech2.cpp|bt/heat.cpp +4d6621 4d66b8 151 69 4d6670 0 bt_l4/btl4app.cpp|? +4dc836 4dc888 82 69 4dc838,4dc880 3 bt_l4/btl4app.cpp|? +40aa51 40aaa0 79 68 0 munga/scalar.cpp|munga/boxsolid.cpp +4c19ae 4c19fc 78 68 4c19b0 0 bt/btplayer.cpp|bt_l4/btl4rdr.cpp +4dd4ed 4dd53c 79 67 0 bt_l4/btl4app.cpp|? +40a1e3 40a22c 73 66 0 munga/scalar.cpp|munga/boxsolid.cpp +4ad6f5 4ad748 83 65 4ad6f8 0 4ad6f8,4ad700,4ad70d,4ad714,4ad722,4ad728,4ad731 bt/mech2.cpp|bt/heat.cpp +44c6ba 44c6fc 66 63 44c6bc 0 munga/controls.cpp|munga/app.cpp +488c3d 488c80 67 63 0 munga_l4/l4splr.cpp|bt/btmssn.cpp +4d706f 4d70b0 65 62 4d7070 4 bt_l4/btl4app.cpp|? +40c129 40c170 71 61 0 munga/scalar.cpp|munga/boxsolid.cpp +44ca29 44ca72 73 61 0 munga/controls.cpp|munga/app.cpp +47d4c8 47d517 79 61 0 munga_l4/l4splr.cpp|bt/btmssn.cpp +4a5bad 4a5bf8 75 61 0 bt/mech2.cpp +4a62f8 4a6344 76 61 0 bt/mech2.cpp +4af518 4af564 76 60 4af524 0 bt/heat.cpp|bt/mechmppr.cpp +4d0735 4d0774 63 60 0 bt_l4/btl4vid.cpp +408b51 408b98 71 59 408b54 0 munga/scalar.cpp|munga/boxsolid.cpp +4a562f 4a5678 73 59 0 bt/mech2.cpp +4a7924 4a7970 76 59 0 4a7924 bt/mech2.cpp|bt/heat.cpp +4082d7 40831c 69 58 0 munga/scalar.cpp|munga/boxsolid.cpp +4ae971 4ae9c0 79 58 4ae980 0 bt/heat.cpp|bt/mechmppr.cpp +409f1b 409f58 61 57 0 munga/scalar.cpp|munga/boxsolid.cpp +4aee28 4aee70 72 57 4aee2c 0 4aee2c bt/heat.cpp|bt/mechmppr.cpp +40edc5 40ee00 59 54 0 munga/scalar.cpp|munga/boxsolid.cpp +47f864 47f8a2 62 54 0 munga_l4/l4splr.cpp|bt/btmssn.cpp +4890c4 4890fc 56 54 0 munga_l4/l4splr.cpp|bt/btmssn.cpp +492110 492150 64 54 0 munga_l4/l4splr.cpp|bt/btmssn.cpp +43dfc8 43e004 60 53 43dfcc 0 munga/audwthr.cpp +43e2a8 43e2e4 60 53 43e2ac 0 munga/audwthr.cpp +4d9c83 4d9cc4 65 52 0 bt_l4/btl4app.cpp|? +4d5603 4d563c 57 51 4d5603 6 bt_l4/btl4app.cpp|? +4b025f 4b029c 61 48 4b0280 0 4b0280 bt/heat.cpp|bt/mechmppr.cpp +4da6d3 4da754 129 48 4da6d3,4da73f,4da749 0 bt_l4/btl4app.cpp|? +4db06c 4db0ec 128 48 4db06c,4db0d8,4db0e2 0 bt_l4/btl4app.cpp|? +40df2d 40df68 59 47 0 munga/scalar.cpp|munga/boxsolid.cpp +47a48f 47a4cc 61 47 0 munga_l4/l4ctrl.cpp|munga_l4/l4app.cpp +47edac 47eddd 49 47 0 munga_l4/l4splr.cpp|bt/btmssn.cpp +4adcfa 4add30 54 47 4add00 0 4add00 bt/mech2.cpp|bt/heat.cpp +4b6fb8 4b6fec 52 47 4b6fc0 0 4b6fc0 bt/powersub.cpp|bt/mechweap.cpp +4ded5f 4deda4 69 47 4ded60 0 bt_l4/btl4app.cpp|? +458688 4586bc 52 46 458690 0 munga_l4/l4vidrnd.cpp +45d397 45d3cc 53 46 0 munga_l4/l4video.cpp +4be8b7 4be8e8 49 46 4be8bc 0 4be8b8,4be8bc bt/mechweap.hpp|bt/btplayer.cpp +42eb06 42eb38 50 45 42eb08 0 munga/player.cpp|munga/explode.cpp +456526 456558 50 45 45652c 0 munga_l4/l4vidrnd.cpp +4dcdb9 4dcdec 51 45 4dcdbc 1 bt_l4/btl4app.cpp|? +457103 457138 53 44 45710c 0 munga_l4/l4vidrnd.cpp +45773f 457770 49 44 457744 0 munga_l4/l4vidrnd.cpp +49013c 49016c 48 44 0 munga_l4/l4splr.cpp|bt/btmssn.cpp +4ae530 4ae568 56 44 4ae534 0 4ae534 bt/heat.cpp|bt/mechmppr.cpp +4b910f 4b9140 49 44 4b9114 0 4b9114 bt/powersub.cpp|bt/mechweap.cpp +4bee3d 4bee70 51 44 4bee44 0 4bee44 bt/mechweap.hpp|bt/btplayer.cpp +4ddcec 4ddd20 52 44 4ddcec 0 bt_l4/btl4app.cpp|? +40ddf3 40de34 65 43 40ddf8,40de28 0 munga/scalar.cpp|munga/boxsolid.cpp +446fa7 446fdc 53 43 0 munga/gaugrend.cpp +4563c9 4563fc 51 43 4563d0 0 munga_l4/l4vidrnd.cpp +4c9b9b 4c9bd0 53 43 4c9b9c 0 bt_l4/btl4gaug.cpp|bt_l4/btl4vid.cpp +4cc0b0 4cc0e1 49 43 4cc0b0 0 bt_l4/btl4gaug.cpp|bt_l4/btl4vid.cpp +4dc322 4dc35c 58 43 4dc324 0 bt_l4/btl4app.cpp|? +41f56e 41f59c 46 42 41f570 0 munga/network.cpp|munga/watcher.cpp +47d932 47d962 48 42 0 munga_l4/l4splr.cpp|bt/btmssn.cpp +4d6997 4d69d0 57 42 4d69a4,4d69bc 0 bt_l4/btl4app.cpp|? +4093ff 40942c 45 41 0 munga/scalar.cpp|munga/boxsolid.cpp +43bcf0 43bd20 48 41 0 munga/audsrc.cpp +465cda 465d08 46 41 465cdc 0 munga_l4/l4audlvl.cpp|munga_l4/l4audwtr.cpp +48c271 48c2a0 47 41 0 munga_l4/l4splr.cpp|bt/btmssn.cpp +49f6f6 49f728 50 41 49f700 0 49f700 bt/btmssn.cpp|bt/mech.cpp +4dd095 4dd0c8 51 41 4dd098 1 bt_l4/btl4app.cpp|? +44425e 444290 50 40 0 munga/gauge.cpp +46055c 460590 52 40 460564 1 munga_l4/l4video.cpp +4941b6 4941e4 46 40 0 munga_l4/l4splr.cpp|bt/btmssn.cpp +4b8387 4b83b8 49 40 4b838c 0 4b838c,4b83b0 bt/powersub.cpp|bt/mechweap.cpp +4da4d1 4da538 103 40 4da4d1,4da52d 0 bt_l4/btl4app.cpp|? +4dd461 4dd494 51 40 4dd464 0 bt_l4/btl4app.cpp|? +47c34f 47c380 49 39 47c358 0 munga_l4/l4app.cpp|munga_l4/l4splr.cpp +48c1c0 48c1f0 48 39 0 munga_l4/l4splr.cpp|bt/btmssn.cpp +4d3e72 4d3ea0 46 39 4d3e78 0 bt_l4/btl4app.cpp|? +402344 402370 44 38 402344 0 munga/heap.cpp|munga/cstr.cpp +40eb36 40eb64 46 38 40eb38,40eb54 0 munga/scalar.cpp|munga/boxsolid.cpp +40ee0a 40ee38 46 38 0 munga/scalar.cpp|munga/boxsolid.cpp +4360dc 43610c 48 38 4360e4 0 munga/interest.cpp|munga/renderer.cpp +47e58a 47e5c1 55 38 0 munga_l4/l4splr.cpp|bt/btmssn.cpp +496d36 496d68 50 38 0 munga_l4/l4splr.cpp|bt/btmssn.cpp +4ae89b 4ae8d0 53 38 4ae8b0 0 4ae8b0 bt/heat.cpp|bt/mechmppr.cpp +4d7ee5 4d7f10 43 38 0 bt_l4/btl4app.cpp|? +417edd 417f0c 47 37 417efc 0 munga/socket.cpp|munga/sfeskt.cpp +41858d 4185bc 47 37 418590 0 munga/srtskt.cpp|munga/vchain.cpp +41b65a 41b688 46 37 41b65c 0 munga/event.cpp|munga/cmpnnt.cpp +497ae7 497b18 49 37 0 munga_l4/l4splr.cpp|bt/btmssn.cpp +417aca 417af8 46 36 417acc 0 munga/socket.cpp|munga/sfeskt.cpp +4423fe 44242c 46 36 442400,44241c 0 munga/watcher.hpp|munga/gauge.cpp +447110 447138 40 36 0 munga/gaugrend.cpp +4472c1 4472ec 43 36 0 munga/gaugrend.cpp|munga/gaugalrm.cpp +47d5e7 47d61b 52 36 0 munga_l4/l4splr.cpp|bt/btmssn.cpp +49ecff 49ed28 41 36 49ed0c 2 49ed0c bt/btmssn.cpp|bt/mech.cpp +4a164a 4a1674 42 36 0 bt/btmssn.cpp|bt/mech.cpp +4c8115 4c8140 43 36 0 bt_l4/btl4gaug.cpp|bt_l4/btl4vid.cpp +43597a 4359a8 46 35 43597c,435998 0 munga/interest.cpp|munga/renderer.cpp +447682 4476ac 42 35 0 munga/gaugrend.cpp|munga/gaugalrm.cpp +45435f 454394 53 35 0 munga_l4/l4vidrnd.cpp +460811 460840 47 35 460820 0 munga_l4/l4video.cpp +49463e 494668 42 35 0 munga_l4/l4splr.cpp|bt/btmssn.cpp +4c18c4 4c18f4 48 35 4c18cc 1 bt/btplayer.cpp|bt_l4/btl4rdr.cpp +446c11 446c3c 43 34 0 munga/gaugrend.cpp +4713b3 4713e0 45 34 4713b4 0 munga_l4/l4audrnd.cpp|munga_l4/l4gauge.cpp +4cc242 4cc264 34 34 0 bt_l4/btl4gaug.cpp|bt_l4/btl4vid.cpp +401073 40109c 41 33 401074 1 ?|munga/heap.cpp +40aab2 40aadc 42 33 40aab4 0 munga/scalar.cpp|munga/boxsolid.cpp +44aa90 44aab0 32 32 0 munga/graph2d.cpp +46b6b4 46b6d4 32 32 0 munga_l4/l4audrnd.cpp|munga_l4/l4gauge.cpp +481501 481528 39 32 0 munga_l4/l4splr.cpp|bt/btmssn.cpp +43f87f 43f8ab 44 31 43f883 0 munga/audwthr.hpp +43fd9e 43fdca 44 31 43fda2 0 munga/audwthr.hpp|munga/watcher.hpp +4d45f8 4d461f 39 31 0 bt_l4/btl4app.cpp|? +408c95 408cbc 39 30 0 munga/scalar.cpp|munga/boxsolid.cpp +410e99 410ec8 47 30 410eb0 0 munga/boxsolid.cpp|munga/iterator.cpp +4d1bcb 4d1bf0 37 30 0 bt_l4/btl4vid.cpp|bt_l4/btl4mssn.cpp +4d6290 4d62b7 39 30 0 bt_l4/btl4app.cpp|? +42e0dc 42e100 36 29 42e0e0 0 munga/player.cpp|munga/explode.cpp +440faf 440fdb 44 29 440fb3 0 munga/audwthr.hpp +472a9a 472ac4 42 29 472aa8 0 munga_l4/l4audrnd.cpp|munga_l4/l4gauge.cpp +446843 446860 29 28 0 munga/gaugrend.cpp +475a31 475a54 35 28 475a38 0 munga_l4/l4ctrl.cpp +4bca9a 4bcabc 34 28 0 bt/mechweap.hpp|bt/btplayer.cpp +4d1abd 4d1ae4 39 28 4d1acc 0 4d1acc bt_l4/btl4vid.cpp|bt_l4/btl4mssn.cpp +4464b4 4464d4 32 27 0 munga/gaugrend.cpp +494de1 494e00 31 27 0 munga_l4/l4splr.cpp|bt/btmssn.cpp +4bdb71 4bdb94 35 27 0 bt/mechweap.hpp|bt/btplayer.cpp +4dee51 4dee74 35 27 0 bt_l4/btl4app.cpp|? +41739a 4173b8 30 26 4173a8 0 munga/objstrm.cpp|munga/socket.cpp +41d886 41d8a8 34 26 0 munga/network.cpp +432431 432450 31 26 0 munga/explode.cpp|munga/registry.cpp +4693c0 4693e0 32 26 0 munga_l4/l4audrnd.cpp|munga_l4/l4gauge.cpp +4b9c98 4b9cbc 36 26 4b9c9c 0 4b9c9c bt/mechweap.cpp|bt/mechweap.hpp +4c62d2 4c62fc 42 26 4c62d8 0 bt_l4/btl4gaug.cpp|bt_l4/btl4vid.cpp +4d918a 4d91ac 34 26 0 bt_l4/btl4app.cpp|? +429939 42995c 35 25 0 munga/hostmgr.cpp|munga/caminst.cpp +401bc9 401be8 31 24 401bdc 0 ?|munga/heap.cpp +4284ee 428508 26 24 0 munga/network.cpp|munga/watcher.cpp +45e727 45e744 29 24 0 munga_l4/l4video.cpp +45f584 45f59c 24 24 0 munga_l4/l4video.cpp +49f603 49f624 33 24 49f604 0 49f604 bt/btmssn.cpp|bt/mech.cpp +4b177c 4b179c 32 24 4b1780 0 4b1780 bt/powersub.cpp|bt/mechweap.cpp +41cca5 41ccc0 27 23 0 munga/cmpnnt.cpp|munga/network.cpp +43af9a 43afbc 34 23 0 munga/audcmp.cpp|munga/audsrc.cpp +4965e2 496600 30 23 0 munga_l4/l4splr.cpp|bt/btmssn.cpp +4ae707 4ae724 29 23 4ae70c 0 bt/heat.cpp|bt/mechmppr.cpp +4afbc2 4afbe0 30 23 4afbc4 0 4afbc4 bt/heat.cpp|bt/mechmppr.cpp +432bfb 432c18 29 22 0 munga/explode.cpp|munga/registry.cpp +47008e 4700ac 30 22 470090 0 munga_l4/l4audrnd.cpp|munga_l4/l4gauge.cpp +47cc87 47cca0 25 22 0 munga_l4/l4splr.cpp|bt/btmssn.cpp +47df60 47df82 34 22 0 munga_l4/l4splr.cpp|bt/btmssn.cpp +4c2a02 4c2a1d 27 22 4c2a04 0 bt_l4/btl4rdr.cpp|bt_l4/btl4gaug.cpp +496bff 496c18 25 21 0 munga_l4/l4splr.cpp|bt/btmssn.cpp +4aeedc 4aeef8 28 21 4aeee0 0 bt/heat.cpp|bt/mechmppr.cpp +4d5cc7 4d5cdf 24 21 0 bt_l4/btl4app.cpp|? +4d881a 4d8834 26 21 0 bt_l4/btl4app.cpp|? +4657ae 4657c9 27 19 0 munga_l4/l4audio.cpp|munga_l4/l4audlvl.cpp +4b375a 4b3778 30 19 0 bt/powersub.cpp|bt/mechweap.cpp +4bb3ac 4bb3c8 28 19 0 bt/mechweap.hpp|bt/btplayer.cpp +4dd172 4dd188 22 19 4dd174 1 bt_l4/btl4app.cpp|? +40d1f8 40d210 24 18 0 munga/scalar.cpp|munga/boxsolid.cpp +41dd52 41dd68 22 18 0 munga/network.cpp|munga/watcher.cpp +46312b 463148 29 18 0 munga_l4/l4audhdw.cpp|munga_l4/l4audio.cpp +4703df 4703f4 21 18 0 munga_l4/l4audrnd.cpp|munga_l4/l4gauge.cpp +47407a 474094 26 18 0 munga_l4/l4gauge.cpp|munga_l4/l4ctrl.cpp +475233 47524c 25 18 0 munga_l4/l4gauge.cpp|munga_l4/l4ctrl.cpp +403687 4036a0 25 17 0 munga/filestrm.hpp|munga/scalar.cpp +41e37e 41e394 22 17 0 munga/network.cpp|munga/watcher.cpp +42c83a 42c850 22 17 0 munga/cammgr.cpp|munga/player.cpp +48d03c 48d050 20 17 0 munga_l4/l4splr.cpp|bt/btmssn.cpp +4913d9 4913f0 23 17 0 munga_l4/l4splr.cpp|bt/btmssn.cpp +49b533 49b54c 25 17 0 munga_l4/l4splr.cpp|bt/btmssn.cpp +4bf593 4bf5b4 33 17 0 4bf594,4bf5b0 bt/mechweap.hpp|bt/btplayer.cpp +4dafc2 4dafd8 22 17 0 bt_l4/btl4app.cpp|? +45a93f 45a954 21 16 0 munga_l4/l4vidrnd.cpp|munga_l4/l4video.cpp +4b1398 4b13ac 20 16 0 bt/powersub.cpp|bt/mechweap.cpp +4b7eb8 4b7ed4 28 16 0 bt/powersub.cpp|bt/mechweap.cpp +4d5d37 4d5d4b 20 16 0 bt_l4/btl4app.cpp|? +42b5bd 42b5d4 23 15 0 munga/caminst.cpp|munga/cammgr.cpp +4c6bce 4c6be4 22 15 0 4c6bd0 bt_l4/btl4gaug.cpp|bt_l4/btl4vid.cpp +4080fe 408110 18 14 0 munga/scalar.cpp|munga/boxsolid.cpp +40825f 408270 17 14 0 munga/scalar.cpp|munga/boxsolid.cpp +49e72a 49e740 22 14 0 bt/btmssn.cpp|bt/mech.cpp +4b64f6 4b6510 26 14 0 bt/powersub.cpp|bt/mechweap.cpp +4cc187 4cc1a0 25 14 0 bt_l4/btl4gaug.cpp|bt_l4/btl4vid.cpp +4d5474 4d5488 20 14 0 bt_l4/btl4app.cpp|? +42cd35 42cd48 19 13 0 munga/cammgr.cpp|munga/player.cpp +4da9e0 4da9f4 20 13 4da9e0,4da9ea 0 bt_l4/btl4app.cpp|? +4dec26 4dec40 26 13 0 bt_l4/btl4app.cpp|? +49c509 49c51c 19 12 0 49c514 bt/btmssn.cpp|bt/mech.cpp +4ad870 4ad884 20 12 0 bt/mech2.cpp|bt/heat.cpp +4ba818 4ba838 32 12 0 bt/mechweap.hpp|bt/btplayer.cpp +4d3ba7 4d3bb8 17 12 4d3ba8 0 4d3ba8 bt_l4/btl4app.cpp|? +40dda1 40ddb8 23 11 40ddac 0 munga/scalar.cpp|munga/boxsolid.cpp +40ea57 40ea6c 21 11 0 munga/scalar.cpp|munga/boxsolid.cpp +427d82 427d92 16 11 0 munga/network.cpp|munga/watcher.cpp +43743b 43744c 17 11 43743c,437448 0 munga/audio.cpp|munga/audlvl.cpp +4bc676 4bc688 18 11 0 bt/mechweap.hpp|bt/btplayer.cpp +443ec6 443edc 22 10 0 munga/watcher.hpp|munga/gauge.cpp +448533 448548 21 10 448538 0 munga/gaugrend.cpp|munga/gaugalrm.cpp +47a0d3 47a0e8 21 10 0 munga_l4/l4ctrl.cpp|munga_l4/l4app.cpp +41e57b 41e590 21 9 0 munga/network.cpp|munga/watcher.cpp +476e23 476e34 17 9 0 munga_l4/l4ctrl.cpp +4bec17 4bec34 29 9 0 4bec18,4bec24,4bec28 bt/mechweap.hpp|bt/btplayer.cpp +4de29d 4de2bc 31 9 0 bt_l4/btl4app.cpp|? +479fbf 479fd0 17 7 0 munga_l4/l4ctrl.cpp|munga_l4/l4app.cpp +4af39f 4af3b0 17 4 0 4af3a0 bt/heat.cpp|bt/mechmppr.cpp +4dfeef 4e0000 273 0 0 bt_l4/btl4app.cpp|? diff --git a/reference/decomp/archive_2025export/run.out b/reference/decomp/archive_2025export/run.out new file mode 100644 index 0000000..7cafd05 --- /dev/null +++ b/reference/decomp/archive_2025export/run.out @@ -0,0 +1,179 @@ +openjdk version "21.0.12" 2026-07-21 LTS +== analyzeHeadless: -import == +INFO Using log config file: jar:file:/C:/Users/Joe%20Laptop/AppData/Local/bt411-tools/ghidra_12.1.2_PUBLIC/Ghidra/Framework/Generic/lib/Generic.jar!/generic.log4j.xml (LoggingInitialization) +INFO Using log file: C:\git\bt411\reference\decomp\reexport\headless.log (LoggingInitialization) +INFO Loading user preferences: C:\Users\Joe Laptop\AppData\Roaming\ghidra\ghidra_12.1.2_PUBLIC\preferences (Preferences) +INFO Searching for classes... (ClassSearcher) +INFO Class search complete (3903 ms) (ClassSearcher) +INFO Initializing SSL Context (DefaultSSLContextInitializer) +INFO Initializing Random Number Generator... (SecureRandomFactory) +INFO Random Number Generator initialization complete: SHA1PRNG (SecureRandomFactory) +INFO Trust manager disabled, cacerts have not been set (DefaultTrustManagerFactory) +INFO Starting cache cleanup: C:\Users\Joe Laptop\AppData\Local\ghidra\fscache2 (FileCacheMaintenanceDaemon) +INFO Finished cache cleanup, estimated storage used: 0 (FileCacheMaintenanceDaemon) +INFO Headless startup complete (22970 ms) (AnalyzeHeadless) +INFO Class searcher loaded 59 extension points (20 false positives) (ClassSearcher) +INFO HEADLESS Script Paths: + C:\Users\Joe Laptop\AppData\Local\bt411-tools\ghidra_12.1.2_PUBLIC\Ghidra\Features\FunctionID\ghidra_scripts + C:\Users\Joe Laptop\AppData\Local\bt411-tools\ghidra_12.1.2_PUBLIC\Ghidra\Features\WildcardAssembler\ghidra_scripts + C:\Users\Joe Laptop\AppData\Local\bt411-tools\ghidra_12.1.2_PUBLIC\Ghidra\Features\Decompiler\ghidra_scripts + C:\Users\Joe Laptop\AppData\Local\bt411-tools\ghidra_12.1.2_PUBLIC\Ghidra\Features\Base\ghidra_scripts + C:\Users\Joe Laptop\AppData\Local\bt411-tools\ghidra_12.1.2_PUBLIC\Ghidra\Features\MicrosoftCodeAnalyzer\ghidra_scripts + C:\Users\Joe Laptop\AppData\Local\bt411-tools\ghidra_12.1.2_PUBLIC\Ghidra\Features\PDB\ghidra_scripts + C:\Users\Joe Laptop\AppData\Local\bt411-tools\ghidra_12.1.2_PUBLIC\Ghidra\Features\SwiftDemangler\ghidra_scripts + C:\Users\Joe Laptop\AppData\Local\bt411-tools\ghidra_12.1.2_PUBLIC\Ghidra\Processors\DATA\ghidra_scripts + C:\git\bt411\reference\ghidra_scripts + C:\Users\Joe Laptop\AppData\Local\bt411-tools\ghidra_12.1.2_PUBLIC\Ghidra\Processors\PIC\ghidra_scripts + C:\Users\Joe Laptop\AppData\Local\bt411-tools\ghidra_12.1.2_PUBLIC\Ghidra\Features\FileFormats\ghidra_scripts + C:\Users\Joe Laptop\AppData\Local\bt411-tools\ghidra_12.1.2_PUBLIC\Ghidra\Features\PyGhidra\ghidra_scripts + C:\Users\Joe Laptop\AppData\Local\bt411-tools\ghidra_12.1.2_PUBLIC\Ghidra\Debug\Debugger-rmi-trace\ghidra_scripts + C:\Users\Joe Laptop\AppData\Local\bt411-tools\ghidra_12.1.2_PUBLIC\Ghidra\Processors\Atmel\ghidra_scripts + C:\Users\Joe Laptop\AppData\Local\bt411-tools\ghidra_12.1.2_PUBLIC\Ghidra\Features\BytePatterns\ghidra_scripts + C:\Users\Joe Laptop\AppData\Local\bt411-tools\ghidra_12.1.2_PUBLIC\Ghidra\Features\SystemEmulation\ghidra_scripts + C:\Users\Joe Laptop\AppData\Local\bt411-tools\ghidra_12.1.2_PUBLIC\Ghidra\Features\GnuDemangler\ghidra_scripts + C:\Users\Joe Laptop\AppData\Local\bt411-tools\ghidra_12.1.2_PUBLIC\Ghidra\Debug\Debugger\ghidra_scripts + C:\Users\Joe Laptop\AppData\Local\bt411-tools\ghidra_12.1.2_PUBLIC\Ghidra\Processors\8051\ghidra_scripts + C:\Users\Joe Laptop\AppData\Local\bt411-tools\ghidra_12.1.2_PUBLIC\Ghidra\Features\BSim\ghidra_scripts + C:\Users\Joe Laptop\AppData\Local\bt411-tools\ghidra_12.1.2_PUBLIC\Ghidra\Features\DecompilerDependent\ghidra_scripts + C:\Users\Joe Laptop\AppData\Local\bt411-tools\ghidra_12.1.2_PUBLIC\Ghidra\Features\VersionTracking\ghidra_scripts + C:\Users\Joe Laptop\AppData\Local\bt411-tools\ghidra_12.1.2_PUBLIC\Ghidra\Processors\JVM\ghidra_scripts (HeadlessAnalyzer) +INFO HEADLESS: execution starts (HeadlessAnalyzer) +INFO Creating project: C:\Users\JOELAP~1\AppData\Local\BT411-~1\ghidra_projects\BT411 (HeadlessAnalyzer) +INFO Creating project: C:\Users\JOELAP~1\AppData\Local\BT411-~1\ghidra_projects\BT411 (DefaultProject) +INFO REPORT: Processing input files: (HeadlessAnalyzer) +INFO project: C:\Users\JOELAP~1\AppData\Local\BT411-~1\ghidra_projects\BT411 (HeadlessAnalyzer) +INFO IMPORTING: file:///C:/git/bt411/content/BTL4OPT.EXE (HeadlessAnalyzer) +INFO Using Loader: Portable Executable (PE) (ProgramLoader) +INFO Using Language/Compiler: x86:LE:32:default:windows (ProgramLoader) +INFO Using Library Search Path: [., C:\WINDOWS\SysWOW64, C:\Users\JOELAP~1\AppData\Local\BT411-~1\JDK-21~1.12_\bin, C:\WINDOWS\Sun\Java\bin, C:\WINDOWS\system32, C:\WINDOWS, C:\Users\Joe Laptop\bin, C:\Program Files\Git\mingw64\bin, C:\Program Files\Git\usr\local\bin, C:\Program Files\Git\usr\bin, C:\WINDOWS\System32\Wbem, C:\WINDOWS\System32\WindowsPowerShell\v1.0, C:\WINDOWS\System32\OpenSSH, C:\Program Files\dotnet, C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL, C:\Program Files\Intel\Intel(R) Management Engine Components\DAL, C:\Program Files\Git\cmd, C:\Program Files\PuTTY, C:\Program Files\CMake\bin, C:\Users\Joe Laptop\AppData\Local\Programs\Python\Python311\Scripts, C:\Users\Joe Laptop\AppData\Local\Programs\Python\Python311, C:\Users\Joe Laptop\AppData\Local\Microsoft\WindowsApps, C:\Users\Joe Laptop\.local\bin, C:\Users\Joe Laptop\AppData\Local\bt411-tools\cmake-3.31.6-windows-x86_64\bin, C:\Users\Joe Laptop\AppData\Local\bt411-tools\dbg\Windows Kits\10\Debuggers\x86, C:\Users\Joe Laptop\AppData\Local\bt411-tools\bin, C:\Users\Joe Laptop\AppData\Local\Microsoft\WinGet\Packages\Gyan.FFmpeg_Microsoft.Winget.Source_8wekyb3d8bbwe\ffmpeg-8.1.2-full_build\bin, C:\Program Files\Git\usr\bin\vendor_perl, C:\Program Files\Git\usr\bin\core_perl] (ProgramLoader) +WARN Invalid or missing function at 69e9f8f8 (ExportDataDirectory) +INFO Additional info: +Loading file:///C:/git/bt411/content/BTL4OPT.EXE?MD5=a97075bcb5634d13263e9ad5a2b96fd0... +------------------------------------------------ + +Searching 26 paths for library KERNEL32.DLL... +Loading file:///C:/Windows/SysWOW64/kernel32.dll?MD5=0ce1f5f3d23f51b9ecfd453e34ca0af7... +Created exports file: C:\Users\Joe Laptop\AppData\Roaming\ghidra\ghidra_12.1.2_PUBLIC\symbols\win32\kernel32.exports +Library not saved to project. +------------------------------------------------ + +Searching 26 paths for library USER32.DLL... +Loading file:///C:/Windows/SysWOW64/user32.dll?MD5=0927ed96558e5b2392df6cf7582f2655... +[user32.dll]: failed to create WEVTResource at 69eb6a70: Failed to resolve data length for WEVTResource +Created exports file: C:\Users\Joe Laptop\AppData\Roaming\ghidra\ghidra_12.1.2_PUBLIC\symbols\win32\user32.exports +Library not saved to project. +------------------------------------------------ + +Applying cached symbols from KERNEL32.DLL +Applying cached symbols from USER32.DLL +Linking the External Programs of 'BTL4OPT.EXE' to imported libraries... + [KERNEL32.DLL] -> not found in project + [USER32.DLL] -> not found in project +------------------------------------------------ + + (ProgramLoader) +INFO IMPORTING: Loaded 0 additional files (HeadlessAnalyzer) +INFO ANALYZING all memory and code: file:///C:/git/bt411/content/BTL4OPT.EXE (HeadlessAnalyzer) +WARN Ignoring leading '_' chars on no-return name '___raise_securityfailure' specified in file: C:\Users\Joe Laptop\AppData\Local\bt411-tools\ghidra_12.1.2_PUBLIC\Ghidra\Features\Base\data\PEFunctionsThatDoNotReturn (NoReturnFunctionAnalyzer) +WARN Ignoring leading '_' chars on no-return name '___report_rangecheckfailure' specified in file: C:\Users\Joe Laptop\AppData\Local\bt411-tools\ghidra_12.1.2_PUBLIC\Ghidra\Features\Base\data\PEFunctionsThatDoNotReturn (NoReturnFunctionAnalyzer) +INFO Skipping PDB processing: missing PDB information in program metadata (PdbUniversalAnalyzer) +INFO hit non-returning function, restarting decompiler switch analyzer later (DecompilerSwitchAnalyzer) +INFO Packed database cache: C:\Users\Joe Laptop\AppData\Local\ghidra\packed-db-cache (PackedDatabaseCache) +INFO Applied data type archive: windows_vs12_32 (ApplyDataArchiveAnalyzer) +INFO ----------------------------------------------------- + ASCII Strings 1.502 secs + Apply Data Archives 1.959 secs + Call Convention ID 0.096 secs + Call-Fixup Installer 0.369 secs + Create Address Tables 1.043 secs + Create Address Tables - One Time 1.493 secs + Create Function 3.694 secs + Data Reference 1.505 secs + Decompiler Parameter ID 46.048 secs + Decompiler Switch Analysis 23.274 secs + Decompiler Switch Analysis - One Time 0.000 secs + Demangler Microsoft 0.057 secs + Disassemble 15.567 secs + Disassemble Entry Points 0.163 secs + Disassemble Entry Points - One Time 0.005 secs + Embedded Media 0.066 secs + External Entry References 0.000 secs + Function ID 6.001 secs + Function Start Pre Search 0.110 secs + Function Start Search 0.509 secs + Function Start Search After Code 0.637 secs + Function Start Search After Data 0.421 secs + Non-Returning Functions - Discovered 1.607 secs + Non-Returning Functions - Known 0.030 secs + PDB Universal 0.004 secs + Reference 2.537 secs + Scalar Operand References 5.788 secs + Shared Return Calls 1.163 secs + Stack 26.351 secs + Subroutine References 1.439 secs + Subroutine References - One Time 0.000 secs + WindowsResourceReference 13.414 secs + X86 Function Callee Purge 4.715 secs + x86 Constant Reference Analyzer 22.977 secs +----------------------------------------------------- + Total Time 184 secs +----------------------------------------------------- + (AutoAnalysisManager) +INFO REPORT: Analysis succeeded for file: file:///C:/git/bt411/content/BTL4OPT.EXE (HeadlessAnalyzer) +INFO REPORT: Execute script: ExportGaps.java 'C:\git\bt411\reference\decomp\reexport' (HeadlessAnalyzer) +INFO SCRIPT: C:\git\bt411\reference\ghidra_scripts\ExportGaps.java (HeadlessAnalyzer) +INFO ExportGaps.java> functions after auto-analysis: 6309 (GhidraScript) +INFO ExportGaps.java> census starts loaded: 332 (GhidraScript) +INFO ExportGaps.java> data->code pointers: 2053 (GhidraScript) +INFO ExportGaps.java> round 1: call targets added 3093 (candidates 5478) (GhidraScript) +INFO ExportGaps.java> round 1: functions created 205 (GhidraScript) +INFO ExportGaps.java> round 2: call targets added 0 (candidates 5478) (GhidraScript) +INFO ExportGaps.java> round 2: functions created 0 (GhidraScript) +INFO ExportGaps.java> GAP FILL created 205 functions (6309 -> 6514) (GhidraScript) +INFO ----------------------------------------------------- + Call Convention ID 0.010 secs + Call-Fixup Installer 0.005 secs + Data Reference 0.000 secs + Decompiler Parameter ID 7.926 secs + Decompiler Switch Analysis 0.571 secs + Function Start Search 0.004 secs + Function Start Search After Code 0.007 secs + Function Start Search After Data 0.001 secs + Non-Returning Functions - Discovered 0.032 secs + Reference 0.030 secs + Scalar Operand References 0.112 secs + Shared Return Calls 0.060 secs + Stack 1.714 secs + Subroutine References 0.032 secs + WindowsResourceReference 0.573 secs + X86 Function Callee Purge 0.036 secs + x86 Constant Reference Analyzer 0.356 secs +----------------------------------------------------- + Total Time 11 secs +----------------------------------------------------- + (AutoAnalysisManager) +INFO ExportGaps.java> attributed functions: 232 (GhidraScript) +INFO ExportGaps.java> vtables recovered: 162 (GhidraScript) +INFO ExportGaps.java> decompiled 500 ... (GhidraScript) +INFO ExportGaps.java> decompiled 1000 ... (GhidraScript) +INFO ExportGaps.java> decompiled 1500 ... (GhidraScript) +INFO ExportGaps.java> decompiled 2000 ... (GhidraScript) +INFO ExportGaps.java> decompiled 2500 ... (GhidraScript) +INFO ExportGaps.java> decompiled 3000 ... (GhidraScript) +INFO ExportGaps.java> decompiled 3500 ... (GhidraScript) +INFO ExportGaps.java> decompiled 4000 ... (GhidraScript) +INFO ExportGaps.java> decompiled 4500 ... (GhidraScript) +INFO ExportGaps.java> decompiled 5000 ... (GhidraScript) +INFO ExportGaps.java> decompiled 5500 ... (GhidraScript) +INFO ExportGaps.java> decompiled 6000 ... (GhidraScript) +INFO ExportGaps.java> DONE. functions: 6472 (shards 17, decompile failures 0) (GhidraScript) +INFO ANALYZING changes made by post scripts: file:///C:/git/bt411/content/BTL4OPT.EXE (HeadlessAnalyzer) +INFO REPORT: Post-analysis succeeded for file: file:///C:/git/bt411/content/BTL4OPT.EXE (HeadlessAnalyzer) +INFO /BTL4OPT.EXE: file created (JoeLaptop) (LocalFileSystem) +INFO REPORT: Save succeeded for: /BTL4OPT.EXE (BT411:/BTL4OPT.EXE) (HeadlessAnalyzer) +INFO REPORT: Import succeeded (HeadlessAnalyzer) +== done; scoring == +text 892KB indexed 93.5% dark 321 regions/49KB unexported 0 fns/0KB +wrote C:\git\bt411\reference\decomp\reexport\GAP_CENSUS.md +wrote C:\git\bt411\reference\decomp\reexport\gap_census.tsv +EXIT=0 diff --git a/reference/decomp/archive_2025export/vtables.tsv b/reference/decomp/archive_2025export/vtables.tsv new file mode 100644 index 0000000..8c1c6d2 --- /dev/null +++ b/reference/decomp/archive_2025export/vtables.tsv @@ -0,0 +1,309 @@ +004e03b0 4016bf 418434 418448 41845c 418470 4184dc 4016eb 4016fa 401709 401718 418484 4184a4 4184c4 4184fc 401727 40173a 40174d 401760 418530 41854c 418570 401636 417d9c 417db0 417dc4 417dd8 417e44 4016eb 4016fa 401709 401718 417dec 417e0c 417e2c 417e64 401727 40173a 40174d 401760 417e98 417ebc 4015ad 417c74 401562 417a80 401517 418434 418448 41845c 418470 4184dc 4016eb 4016fa 401709 401718 418484 4184a4 4184c4 4184fc 401727 40173a 40174d 401760 418530 41854c 418570 40148e 419564 419578 419590 4195ac 419640 4016eb 4016fa 401709 401718 4195c0 4195f4 419620 41964c 401727 40173a 40174d 401760 419674 4178b0 419704 419698 418164 401424 419564 419578 419590 4195ac 419640 4016eb 4016fa 401709 401718 4195c0 4195f4 419620 41964c 401727 40173a 40174d 401760 419674 4178b0 419704 419698 418164 4013ba 419564 419578 419590 4195ac 419640 4016eb 4016fa 401709 401718 4195c0 4195f4 419620 41964c 401727 40173a 40174d 401760 419674 4178b0 419704 419698 418164 401350 419564 419578 419590 4195ac 419640 4016eb 4016fa 401709 401718 4195c0 4195f4 419620 41964c 401727 40173a 40174d 401760 419674 4178b0 419704 419698 418164 4012e6 419564 419578 419590 4195ac 419640 4016eb 4016fa 401709 401718 4195c0 4195f4 419620 41964c 401727 40173a 40174d 401760 419674 4178b0 419704 419698 418164 +004e08e4 403428 403433 403446 403454 403344 403465 403473 403104 4033d0 403428 403481 403446 403454 403494 403465 403473 403104 403134 +004e09e0 403642 403481 40365d 403588 403494 4035a8 4035cc 4035f0 403614 +004e0b1c 403dcc 403df8 403c90 403a80 403a48 403a80 +004e1590 40ff8c 40ffd4 40ffec 410004 +004e15a4 40ffbc 40f2f8 40f304 40eea8 +004e15c4 40f324 40f2f8 40f304 410530 410560 +004e15e8 40f2f8 40f304 4108e4 410914 +004e1608 40f2f8 40f304 411630 411660 4116ac 4116f4 +004e1624 4117d8 40f2f8 40f304 41143c 41146c 4114b8 411504 +004e1644 4115e8 40f2f8 40f304 411248 411278 4112c4 411310 +004e1664 4113f4 40f2f8 40f304 411054 411084 4110d0 41111c +004e1684 411200 40f2f8 40f304 411e24 411e54 411ea0 411eec +004e16a4 411fe0 40f2f8 40f304 411c28 411c58 411ca0 411ce8 +004e16c4 411ddc 40f2f8 40f304 411a24 411a54 411aa0 411aec +004e16e4 411be0 40f2f8 40f304 411820 411850 41189c 4118e8 +004e1704 4119dc 40f2f8 40f304 412644 412674 4126c0 41270c +004e1724 412808 40f2f8 40f304 41243c 41246c 4124b8 412500 +004e1744 4125fc 40f2f8 40f304 412230 412260 4122ac 4122f8 +004e1764 4123f4 40f2f8 40f304 412028 412058 4120a4 4120ec +004e1784 4121e8 40f2f8 40f304 41470c 41473c +004e17a8 40f2f8 40f304 412ca8 +004e1b28 4157e1 4187a4 4187bc 418878 41593f 41580d 41585a 41569c 4187a4 4187bc 418878 41596f 4156c8 4156f7 41564d 418fa4 418fc4 418fcc 419010 419030 4016eb 4016fa 401709 401718 415d38 415d5c 419018 415da0 401727 40173a 40174d 401760 419078 4178b0 4190c8 419098 418164 41554c 418c44 418c5c 418c94 41599f 415578 4155c5 4154e8 414bfc +004e1dc4 415c80 415cac 415cc8 415ce4 415d00 415d1c 4016eb 4016fa 401709 401718 415d38 415d5c 415d80 415da0 401727 40173a 40174d 401760 415e04 +004e1e48 415f90 415fd0 415fe8 41601c 416034 4160c0 4016eb 4016fa 401709 401718 41604c 416078 4160a4 4160ec 401727 40173a 40174d 401760 415ed8 +004e20a8 4176bc 418978 41898c 4189a0 4189b4 418a20 4016eb 4016fa 401709 401718 4189c8 4189e8 418a08 418a40 401727 40173a 40174d 401760 418a74 4178b0 418ac0 418a90 418164 417633 4199c8 4199dc 4199e4 419a28 419a7c 4016eb 4016fa 401709 401718 415d38 415d5c 419a30 415da0 401727 40173a 40174d 401760 419ac4 4178b0 419b14 419b0c 418164 4175c9 418fa4 418fc4 418fcc 419010 419030 4016eb 4016fa 401709 401718 415d38 415d5c 419018 415da0 401727 40173a 40174d 401760 419078 4178b0 4190c8 419098 418164 4174c8 418c44 418c5c 418c94 4176e8 4174f4 417541 417437 419854 41986c 4198b0 417463 417492 4173e4 403428 403433 403446 403454 403344 403465 403473 403104 4033d0 417054 417120 41639c 417094 416db0 417198 416e1c 4173b8 417938 403428 403433 403446 403454 403344 403465 403473 403104 4033d0 41632c 4163cc 41639c 4163c4 416db0 416dd0 +004e2374 417794 415cac 415cc8 415ce4 415d00 415d1c 4016eb 4016fa 401709 401718 415d38 415d5c 415d80 415da0 401727 40173a 40174d 401760 4177cc 4178b0 41772c 417758 41790c 4173b8 417938 +004e240c 4179f8 417a80 417964 +004e244c 417d54 417d9c 417db0 417dc4 417dd8 417e44 4016eb 4016fa 401709 401718 417dec 417e0c 417e2c 417e64 401727 40173a 40174d 401760 417e98 417ebc 417c0c 417c74 417b38 +004e24fc 417fe0 415cac 415cc8 415ce4 415d00 415d1c 4016eb 4016fa 401709 401718 415d38 415d5c 415d80 415da0 401727 40173a 40174d 401760 4177cc 4178b0 418054 417f30 417758 +004e26c4 41811c 415cac 415cc8 415ce4 415d00 415d1c 4016eb 4016fa 401709 401718 415d38 415d5c 415d80 415da0 401727 40173a 40174d 401760 4177cc 4178b0 418054 418148 418164 418098 417758 4180c4 4180e0 +004e2764 4183ec 418434 418448 41845c 418470 4184dc 4016eb 4016fa 401709 401718 418484 4184a4 4184c4 4184fc 401727 40173a 40174d 401760 418530 41854c 418570 4182a8 41830c 4181c4 +004e28bc 418930 418978 41898c 4189a0 4189b4 418a20 4016eb 4016fa 401709 401718 4189c8 4189e8 418a08 418a40 401727 40173a 40174d 401760 418a74 4178b0 418ac0 418a90 418164 4186dc 4187a4 4187bc 418878 418744 418764 418784 4185ec +004e2a20 418f5c 418fa4 418fc4 418fcc 419010 419030 4016eb 4016fa 401709 401718 415d38 415d5c 419018 415da0 401727 40173a 40174d 401760 419078 4178b0 4190c8 419098 418164 418be0 418c44 418c5c 418c94 418cbc 418cdc 418cfc 418b14 +004e2b90 41951c 419564 419578 419590 4195ac 419640 4016eb 4016fa 401709 401718 4195c0 4195f4 419620 41964c 401727 40173a 40174d 401760 419674 4178b0 419704 419698 418164 4191b4 419228 419240 41927c 4192a8 4192c8 4192e8 41910c +004e2c9c 419968 4199c8 4199dc 4199e4 419a28 419a7c 4016eb 4016fa 401709 401718 415d38 415d5c 419a30 415da0 401727 40173a 40174d 401760 419ac4 4178b0 419b14 419b0c 418164 4197d4 419854 41986c 4198b0 4198e8 419908 +004e2de8 41a6ae 415fd0 415fe8 41601c 416034 4160c0 4016eb 4016fa 401709 401718 41604c 416078 4160a4 4160ec 401727 40173a 40174d 401760 41a61d 417d9c 417db0 417dc4 417dd8 417e44 4016eb 4016fa 401709 401718 417dec 417e0c 417e2c 417e64 401727 40173a 40174d 401760 417e98 417ebc 41a594 415fd0 415fe8 41601c 416034 4160c0 4016eb 4016fa 401709 401718 41604c 416078 4160a4 4160ec 401727 40173a 40174d 401760 41a503 415fd0 415fe8 41601c 416034 4160c0 4016eb 4016fa 401709 401718 41604c 416078 4160a4 4160ec 401727 40173a 40174d 401760 41a472 417d9c 417db0 417dc4 417dd8 417e44 4016eb 4016fa 401709 401718 417dec 417e0c 417e2c 417e64 401727 40173a 40174d 401760 417e98 417ebc 41a3e9 417c74 41a39e 417c74 41a6da 4173b8 417938 41a71c 403428 403433 403446 403454 403344 403465 403473 403104 419e60 +004e3174 41b80c 417d9c 417db0 417dc4 417dd8 417e44 4016eb 4016fa 401709 401718 417dec 417e0c 417e2c 417e64 401727 40173a 40174d 401760 417e98 417ebc 41b783 415fd0 415fe8 41601c 416034 4160c0 4016eb 4016fa 401709 401718 41604c 416078 4160a4 4160ec 401727 40173a 40174d 401760 41b6f2 417c74 41b6a7 417a80 41b5f8 4173b8 41b644 41b444 4173b8 417938 41ac50 4173b8 417938 41ab1c 4173b8 417938 41ab48 41a7fc 41a860 4173b8 41aac8 41a9c0 41a9e0 41a7a4 4173b8 417938 41a7e0 41a7fc +004e3308 41b898 4173b8 417938 41b956 419c90 41b8c4 41b96b 4173b8 417938 41b956 419c90 +004e33c4 41c4d4 418434 418448 41845c 418470 4184dc 4016eb 4016fa 401709 401718 418484 4184a4 4184c4 4184fc 401727 40173a 40174d 401760 418530 41854c 418570 41c44b 41830c 41bec4 4173b8 417938 41b956 419c90 41c018 41bd34 41bd60 41baa4 4173b8 417938 +004e3598 41c648 4173b8 417938 41b956 419c90 41c018 41bd34 41c500 41c800 41cab2 41cacd 41cad2 +004e3634 41d3d2 419564 419578 419590 4195ac 419640 4016eb 4016fa 401709 401718 4195c0 4195f4 419620 41964c 401727 40173a 40174d 401760 419674 4178b0 419704 419698 418164 41d30d 419228 419240 41927c 41d3fe 41d339 41d368 41d1dc 4173b8 417938 41b956 419c90 41c018 41bd34 41c500 41c800 41cab2 41cacd 41cad2 41cf40 +004e3918 41d6a8 4173b8 417938 41b956 419c90 41d59c 41d7a8 41d7e8 41d9a4 41d5f0 41d66c 41dac6 41dacb 41d9b0 41d9d0 41d554 4173b8 417938 41b956 419c90 41d59c +004e3b64 41f4f1 418434 418448 41845c 418470 4184dc 4016eb 4016fa 401709 401718 418484 4184a4 4184c4 4184fc 401727 40173a 40174d 401760 418530 41854c 418570 41f468 41830c 41f3c2 419228 419240 41927c 41f51d 41f3ee 41f41d 41f373 418434 418448 41845c 418470 4184dc 4016eb 4016fa 401709 401718 418484 4184a4 4184c4 4184fc 401727 40173a 40174d 401760 418530 41854c 418570 41f2ea 41830c 41f29f 419564 419578 419590 4195ac 419640 4016eb 4016fa 401709 401718 4195c0 4195f4 419620 41964c 401727 40173a 40174d 401760 419674 4178b0 419704 419698 418164 41f235 419564 419578 419590 4195ac 419640 4016eb 4016fa 401709 401718 4195c0 4195f4 419620 41964c 401727 40173a 40174d 401760 419674 4178b0 419704 419698 418164 41e394 4173b8 417938 41f54d 41ddd8 41dd98 41e4e0 41db20 +004e4278 420508 4173b8 417938 41f59c +004e428c 41fc58 41f76c 41f680 420e58 420e6e 4206d4 420754 420e84 403428 403433 403446 403454 403344 403465 403473 403104 419e60 +004e435c 421452 417d9c 417db0 417dc4 417dd8 417e44 4016eb 4016fa 401709 401718 417dec 417e0c 417e2c 417e64 401727 40173a 40174d 401760 417e98 417ebc 4213c9 417c74 421154 4173b8 417938 41b956 419c90 42120c 4210d8 4173b8 417938 +004e4414 421584 418434 418448 41845c 418470 4184dc 4016eb 4016fa 401709 401718 418484 4184a4 4184c4 4184fc 401727 40173a 40174d 401760 418530 41854c 418570 421534 418434 418448 41845c 418470 4184dc 4016eb 4016fa 401709 401718 418484 4184a4 4184c4 4184fc 401727 40173a 40174d 401760 418530 41854c 418570 4214c4 418434 418448 41845c 418470 4184dc 4016eb 4016fa 401709 401718 418484 4184a4 4184c4 4184fc 401727 40173a 40174d 401760 418530 41854c 418570 421ad4 421b12 +004e4950 423c18 4173b8 417938 41f59c +004e4968 42249c 4225a4 423dd3 423df4 4206d4 420754 420e84 422684 422fe0 +004e49bc 424982 418978 41898c 4189a0 4189b4 418a20 4016eb 4016fa 401709 401718 4189c8 4189e8 418a08 418a40 401727 40173a 40174d 401760 418a74 4178b0 418ac0 418a90 418164 42489e 419228 419240 41927c 4249ae 4248ca 4248f9 42484f 419564 419578 419590 4195ac 419640 4016eb 4016fa 401709 401718 4195c0 4195f4 419620 41964c 401727 40173a 40174d 401760 419674 4178b0 419704 419698 418164 42478a 419228 419240 41927c 4249de 4247b6 4247e5 42473b 42468f 419228 419240 41927c 424a0e 4246bb 4246ea 42454a 4187a4 4187bc 418878 424a3e 424576 4245a5 4240c4 423e6c +004e4fb0 428620 417a80 4278d4 425550 4173b8 417938 41f59c +004e4fd4 42249c 4225a4 423dd3 423df4 4206d4 420754 420e84 422684 422fe0 +004e52e4 42864c 4173b8 417938 41b956 419c90 41b8c4 428a5c +004e5348 428d5c 418434 418448 41845c 418470 4184dc 4016eb 4016fa 401709 401718 418484 4184a4 4184c4 4184fc 401727 40173a 40174d 401760 418530 41854c 418570 428cd3 41830c 428c88 418434 418448 41845c 418470 4184dc 4016eb 4016fa 401709 401718 418484 4184a4 4184c4 4184fc 401727 40173a 40174d 401760 418530 41854c 418570 428c38 418434 418448 41845c 418470 4184dc 4016eb 4016fa 401709 401718 418484 4184a4 4184c4 4184fc 401727 40173a 40174d 401760 418530 41854c 418570 428be8 418434 418448 41845c 418470 4184dc 4016eb 4016fa 401709 401718 418484 4184a4 4184c4 4184fc 401727 40173a 40174d 401760 418530 41854c 418570 428ad8 4173b8 417938 +004e56cc 429694 4187a4 4187bc 418878 4297d6 4296c0 4296ff 4295fc 419854 41986c 4198b0 429628 429657 4295a9 419564 419578 419590 4195ac 419640 4016eb 4016fa 401709 401718 4195c0 4195f4 419620 41964c 401727 40173a 40174d 401760 419674 4178b0 419704 419698 418164 4294e4 419228 419240 41927c 429806 429510 42953f 429410 419564 419578 419590 4195ac 419640 4016eb 4016fa 401709 401718 4195c0 4195f4 419620 41964c 401727 40173a 40174d 401760 419674 4178b0 419704 419698 418164 4293c0 419564 419578 419590 4195ac 419640 4016eb 4016fa 401709 401718 4195c0 4195f4 419620 41964c 401727 40173a 40174d 401760 419674 4178b0 419704 419698 418164 429370 418434 418448 41845c 418470 4184dc 4016eb 4016fa 401709 401718 418484 4184a4 4184c4 4184fc 401727 40173a 40174d 401760 418530 41854c 418570 429320 418434 418448 41845c 418470 4184dc 4016eb 4016fa 401709 401718 418484 4184a4 4184c4 4184fc 401727 40173a 40174d 401760 418530 41854c 418570 4292d0 418434 418448 41845c 418470 4184dc 4016eb 4016fa 401709 401718 418484 4184a4 4184c4 4184fc 401727 40173a 40174d 401760 418530 41854c 418570 428df8 4173b8 417938 41b956 419c90 41d59c +004e5ac8 429ba8 4173b8 417938 +004e5bb8 429f30 4173b8 417938 41f59c +004e5bcc 41fc58 41f76c 41f680 420e58 420e6e 4206d4 420754 420e84 429e9c +004e5cd4 42ac79 417d9c 417db0 417dc4 417dd8 417e44 4016eb 4016fa 401709 401718 417dec 417e0c 417e2c 417e64 401727 40173a 40174d 401760 417e98 417ebc 42ab95 419228 419240 41927c 42aca5 42abc1 42abf0 42a9f4 4173b8 417938 41b956 419c90 42aa2c 42a7cc 419228 419240 41927c 42aca5 42abc1 42abf0 42a334 +004e6198 42ba4e 42ba3c 42b1d0 42b550 +004e621c 42c55f 418434 418448 41845c 418470 4184dc 4016eb 4016fa 401709 401718 418484 4184a4 4184c4 4184fc 401727 40173a 40174d 401760 418530 41854c 418570 42c4d6 41830c +004e6360 42d19c 4173b8 417938 41f59c +004e6378 42249c 4225a4 423dd3 423df4 4206d4 420754 420e84 422684 422fe0 +004e65d4 42d4f8 4173b8 417938 41b956 419c90 41c018 41bd34 41c500 41c800 41cab2 41cacd 41cad2 +004e66b0 42d7d0 4173b8 417938 41f59c +004e66c4 41fc58 41f76c 41f680 420e58 420e6e 4206d4 420754 420e84 +004e6978 42e992 417d9c 417db0 417dc4 417dd8 417e44 4016eb 4016fa 401709 401718 417dec 417e0c 417e2c 417e64 401727 40173a 40174d 401760 417e98 417ebc 42e909 418978 41898c 4189a0 4189b4 418a20 4016eb 4016fa 401709 401718 4189c8 4189e8 418a08 418a40 401727 40173a 40174d 401760 418a74 4178b0 418ac0 418a90 418164 42e786 4187a4 4187bc 418878 42e9be 42e7b2 42e7e3 42e737 417c74 42e524 4173b8 417938 41f59c +004e6a5c 41fc58 42e2ac 42e2e4 420e58 420e6e 42da08 420754 420e84 42e1ac 42e100 +004e6a88 42da68 42e9ee 4173b8 417938 +004e6b44 42f140 417a80 42efa4 4173b8 417938 41f59c +004e6b60 41fc58 42e2ac 42e2e4 420e58 420e6e 42da08 420754 420e84 42e1ac 42e100 +004e6c60 42f328 4173b8 417938 41f59c +004e6c74 41fc58 41f76c 41f680 420e58 420e6e 4206d4 420754 420e84 +004e6e3c 430b74 418978 41898c 4189a0 4189b4 418a20 4016eb 4016fa 401709 401718 4189c8 4189e8 418a08 418a40 401727 40173a 40174d 401760 418a74 4178b0 418ac0 418a90 418164 43096d 4187a4 4187bc 418878 430ba0 430999 430a0c 43059c 430340 4173b8 417938 41f59c +004e6ecc 41fc58 41f76c 41f680 420e58 420e6e 4206d4 4304cc 420e84 +004e6fd0 431058 4173b8 417938 41f59c +004e6fe4 41fc58 41f76c 41f680 420e58 420e6e 4206d4 420754 420e84 430e84 4173b8 417938 41f59c +004e7018 41fc58 41f76c 41f680 420e58 420e6e 4206d4 420754 420e84 +004e7388 432405 418978 41898c 4189a0 4189b4 418a20 4016eb 4016fa 401709 401718 4189c8 4189e8 418a08 418a40 401727 40173a 40174d 401760 418a74 4178b0 418ac0 418a90 418164 432020 4173b8 417938 41f59c +004e73f8 41fc58 43162c 41f680 420e58 420e6e 4206d4 420754 420e84 4316c8 4173b8 417938 41f59c +004e742c 41fc58 43162c 41f680 420e58 420e6e 4206d4 420754 420e84 +004e7538 4325c0 4173b8 417938 41f59c +004e754c 41fc58 41f76c 41f680 420e58 420e6e 4206d4 420754 420e84 +004e76cc 432f34 4173b8 417938 41b956 419c90 41c018 +004e76e8 4329d4 41c800 41cab2 41cacd 41cad2 +004e7864 403428 403433 403446 403454 403344 403465 403473 403104 4033d0 417054 417120 4337d8 433818 43383c 433874 43324c 4173b8 417938 41b956 419c90 4332fc 4333b0 +004e7984 4341f3 417a80 4341a7 +004e79a4 433c44 4173b8 417938 433bf0 4173b8 417938 433b78 4173b8 417938 433a68 4339ec 433950 +004e7afc 434383 417a80 434260 4173b8 417938 4342d0 434310 43432c 434348 434550 418434 418448 41845c 418470 4184dc 4016eb 4016fa 401709 401718 418484 4184a4 4184c4 4184fc 401727 40173a 40174d 401760 418530 41854c 418570 4343e4 4173b8 417938 4342d0 434434 4344a4 4344e4 +004e8018 43541d 418434 418448 41845c 418470 4184dc 4016eb 4016fa 401709 401718 418484 4184a4 4184c4 4184fc 401727 40173a 40174d 401760 418530 41854c 418570 435394 41830c 4345c0 4173b8 417938 41b956 419c90 41d59c 434648 434668 4349e4 435633 417a80 4355e8 418434 418448 41845c 418470 4184dc 4016eb 4016fa 401709 401718 418484 4184a4 4184c4 4184fc 401727 40173a 40174d 401760 418530 41854c 418570 4354b8 4173b8 417938 +004e813c 435a50 417d9c 417db0 417dc4 417dd8 417e44 4016eb 4016fa 401709 401718 417dec 417e0c 417e2c 417e64 401727 40173a 40174d 401760 417e98 417ebc 4359c7 417c74 435700 4173b8 417938 43569c +004e81c8 435d04 418434 418448 41845c 418470 4184dc 4016eb 4016fa 401709 401718 418484 4184a4 4184c4 4184fc 401727 40173a 40174d 401760 418530 41854c 418570 435ba8 4173b8 417938 4342d0 435bf8 435c44 435c94 +004e84dc 43685c 418434 418448 41845c 418470 4184dc 4016eb 4016fa 401709 401718 418484 4184a4 4184c4 4184fc 401727 40173a 40174d 401760 418530 41854c 418570 4367d3 41830c 436788 417a80 4362c0 4173b8 417938 41b956 419c90 435df8 4173b8 417938 41b956 419c90 435e70 435ee4 436888 43688f 436899 43689e 436234 436250 43626c 4368a3 4368a8 4368ad 4368b2 +004e85e0 4368f4 4173b8 417938 41b956 419c90 435e70 435ee4 436888 43688f 436920 4369a0 436a40 436ae0 436ae8 4368a3 4368a8 4368ad 4368b2 436a48 +004e8714 437082 417d9c 417db0 417dc4 417dd8 417e44 4016eb 4016fa 401709 401718 417dec 417e0c 417e2c 417e64 401727 40173a 40174d 401760 417e98 417ebc 436ff9 418978 41898c 4189a0 4189b4 418a20 4016eb 4016fa 401709 401718 4189c8 4189e8 418a08 418a40 401727 40173a 40174d 401760 418a74 4178b0 418ac0 418a90 418164 436f70 417c74 436d4c 4173b8 417938 41b956 419c90 436e14 436e24 436bd8 436c08 436c38 +004e884c 437154 4173b8 417938 41f59c +004e8860 41fc58 41f76c 41f680 420e58 420e6e 4206d4 4304cc 420e84 +004e8a64 437ee2 419564 419578 419590 4195ac 419640 4016eb 4016fa 401709 401718 4195c0 4195f4 419620 41964c 401727 40173a 40174d 401760 419674 4178b0 419704 419698 418164 437e49 419564 419578 419590 4195ac 419640 4016eb 4016fa 401709 401718 4195c0 4195f4 419620 41964c 401727 40173a 40174d 401760 419674 4178b0 419704 419698 418164 437d55 419228 419240 41927c 437f0e 437d81 437db0 437ca7 419228 419240 41927c 437f3e 437cd3 437d04 437b9c 4173b8 417938 437968 4173b8 417938 437678 +004e8c74 4380f8 4173b8 417938 41b956 419c90 436e14 438340 4383b4 438d20 +004e9f40 43b048 418434 418448 41845c 418470 4184dc 4016eb 4016fa 401709 401718 418484 4184a4 4184c4 4184fc 401727 40173a 40174d 401760 418530 41854c 418570 43ad16 41830c 43accb 417a80 43ab88 4173b8 417938 41b956 419c90 43abc4 43abdc 43a59c 4173b8 417938 41b956 419c90 43a5d8 43a610 439d68 4173b8 417938 41b956 419c90 436e14 43a1a0 439a0c 4173b8 417938 41b956 419c90 436e14 439d18 439650 4173b8 417938 41b956 419c90 436e14 4399a8 43929c 4173b8 417938 41b956 419c90 436e14 4395f0 439094 4173b8 417938 41b956 419c90 436e14 439248 438dc8 4173b8 417938 41b956 419c90 436e14 438fec 438d84 4173b8 417938 41b956 419c90 436e14 438d58 438db0 4389fc 4173b8 417938 41b956 419c90 436e14 438d58 43b0d2 +004ea820 43b998 4173b8 417938 41b956 419c90 43c030 43bbc0 43bb14 43c14c 43bb70 43be20 43be70 43be84 43bed4 43bf20 43bf6c 43bf84 43bfa4 43bfc4 43bfe0 43c014 43c160 43c165 43c16a +004ea9d0 43c1b4 4173b8 417938 43ca48 43ca68 43ca84 43ca89 43ca8e 43ca93 43ca98 43ca9d 43caa2 43caa7 43caac 43cab1 43cab6 43cabb 43cac0 43cac5 43caca 43cacf 43cad4 43cad9 43cade 43cae3 43cae8 +004eac0c 43da37 418978 41898c 4189a0 4189b4 418a20 4016eb 4016fa 401709 401718 4189c8 4189e8 418a08 418a40 401727 40173a 40174d 401760 418a74 4178b0 418ac0 418a90 418164 43d8b8 4187a4 4187bc 418878 43da63 43d8e4 43d913 43d869 418434 418448 41845c 418470 4184dc 4016eb 4016fa 401709 401718 418484 4184a4 4184c4 4184fc 401727 40173a 40174d 401760 418530 41854c 418570 43d7e0 41830c 43d4bc 4173b8 417938 43d5dc 43d600 43ca84 43ca89 43ca8e 43d61c 43d62c +004ead0c 43caa2 43caa7 43caac 43cab1 43cab6 43cabb 43cac0 43cac5 43caca 43cacf 43cad4 43d7bc 43cade 43cae3 43cae8 43ce78 4173b8 417938 41b956 419c90 436e14 43d3a4 43cb4c +004ed690 441dca 4173b8 417938 41b956 419c90 441f04 428a5c 441f66 441cdd 4173b8 441d9a 41b956 419c90 441f04 428a5c 441f66 441845 4173b8 441395 41b956 419c90 4414e7 441bb7 441537 441c64 4415b5 4173b8 441395 41b956 419c90 4414e7 441756 441537 4413c5 4173b8 417938 41b956 419c90 4414e7 428a5c 441537 4412d8 4173b8 441395 41b956 419c90 4414e7 428a5c 441537 44104e 4173b8 441395 41b956 419c90 4414e7 441231 441537 441269 440b61 4173b8 44069c 41b956 419c90 4407ee 440ed3 44083f +004ed79c 4408bd 4173b8 44069c 41b956 419c90 4407ee 440a60 44083f 4406cc 4173b8 417938 41b956 419c90 4407ee 428a5c 44083f 4405df 4173b8 44069c 41b956 419c90 4407ee 428a5c 44083f 440147 4173b8 44069c 41b956 419c90 4407ee 4404b9 44083f 440566 43ff08 4173b8 417938 41b956 419c90 44002a 428a5c 440097 43fe1b 4173b8 43fed8 41b956 419c90 44002a 428a5c 440097 43f950 4173b8 43fed8 41b956 419c90 44002a 43fcc2 440097 +004ed884 43f431 4173b8 43f1d0 41b956 419c90 43f325 43f7a3 43f387 +004ed8a8 43f200 4173b8 417938 41b956 419c90 43f325 428a5c 43f387 43f113 4173b8 43f1d0 41b956 419c90 43f325 428a5c 43f387 43ec7b 4173b8 43f1d0 41b956 419c90 43f325 43efed 43f387 43f09a 43e878 4173b8 441d9a 41b956 419c90 441f04 43e79c 441f66 43eb40 43e770 4173b8 441d9a 41b956 419c90 441f04 43e79c 441f66 43e7b8 43e6e0 4173b8 441395 41b956 419c90 4414e7 441bb7 441537 43e72c 43e65c 4173b8 441395 41b956 419c90 4414e7 441bb7 441537 43e6a8 43e5e4 4173b8 441395 41b956 419c90 4414e7 441756 441537 43e560 4173b8 441395 41b956 419c90 4414e7 441231 441537 43e5ac 43e4dc 4173b8 441395 41b956 419c90 4414e7 441231 441537 43e528 43e478 4173b8 44069c 41b956 419c90 4407ee 440ed3 44083f 43e4a4 43e400 4173b8 44069c 41b956 419c90 4407ee 440a60 44083f 43e37c 4173b8 44069c 41b956 419c90 4407ee 4404b9 44083f 43e3c8 43e310 4173b8 43fed8 41b956 419c90 44002a 43fcc2 43e348 43e33c 43e054 4173b8 43f1d0 41b956 419c90 43f325 43f7a3 +004edab0 43e1b4 43dd74 4173b8 43f1d0 41b956 419c90 43f325 43efed +004edad4 43ded4 43dc14 4173b8 43dcd4 41b956 419c90 43dd04 +004edb44 442619 417a80 44244f 4187a4 4187bc 418878 442645 44247b +004edb68 442398 4173b8 4423e8 441fb4 4173b8 417938 41b956 419c90 44202c 435ee4 442675 43688f 436899 43689e 442054 436250 43626c 442268 4368a8 4368ad 4368b2 441ffc 442248 +004edbcc 4426b9 44336c 4432cc 443229 4431ab 417d9c 417db0 417dc4 417dd8 417e44 4016eb 4016fa 401709 401718 417dec 417e0c 417e2c 417e64 401727 40173a 40174d 401760 417e98 417ebc 442f37 4173b8 417938 442cf8 4173b8 417938 442ab9 4173b8 417938 442a65 417c74 4429c0 442a14 442874 4173b8 417938 442810 +004edc88 443efb 417c74 4434a0 4173b8 417938 +004ee030 4449f3 417d9c 417db0 417dc4 417dd8 417e44 4016eb 4016fa 401709 401718 417dec 417e0c 417e2c 417e64 401727 40173a 40174d 401760 417e98 417ebc 44496a 417c74 444870 4173b8 417938 443fb4 444004 44400c 444720 +004ee0a8 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4446e0 444360 4173b8 417938 443fb4 444004 44400c 444720 +004ee0ec 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4446e0 444148 44419c 444180 444a1f 4173b8 417938 443fb4 444004 44400c 444078 444080 444028 444088 444090 444098 4440a0 444a53 4173b8 417938 443fb4 444004 44400c 444078 444080 444028 444088 444090 444098 4440a0 443f7c 4173b8 417938 443fb4 444004 44400c 444078 444080 444028 444088 444090 444098 4440a0 +004ee238 445007 417d9c 417db0 417dc4 417dd8 417e44 4016eb 4016fa 401709 401718 417dec 417e0c 417e2c 417e64 401727 40173a 40174d 401760 417e98 417ebc 444f7e 417c74 444f14 4173b8 417938 444e3c 444e9c 444eb8 444e04 4173b8 417938 444e3c 444e9c 444eb8 444ac0 444b20 +004eeb68 4489b6 41830c 447a14 4173b8 417938 41b956 419c90 447b70 435ee4 4482d4 43688f 447c58 447d38 448164 447e64 447e6c 4368a3 4368a8 447e18 447e40 447b58 4489e2 44895c 448188 448310 +004eed18 448f1a 417d9c 417db0 417dc4 417dd8 417e44 4016eb 4016fa 401709 401718 417dec 417e0c 417e2c 417e64 401727 40173a 40174d 401760 417e98 417ebc 448e91 417c74 448c74 448ab8 448ad4 448a28 4173b8 417938 +004ef59c 44ae0c 44aebc 44ae2c 44b1e8 44b1f8 44b240 44b250 44b260 44b2e0 44b2fc 44b318 44b32c 44b3c8 44b428 44b488 44b4f8 44b568 44b5e0 44b664 44b6d0 44b73c 44b744 44b88c 44b9e8 44bb30 44bc98 44bca8 44bcb8 44bc78 44a348 44a374 44a488 44a4b8 44a4d4 44a4f0 44a50c 44a528 44a544 44a560 44a57c 44a598 44a0ac 44a0cc 44a194 44a19c 44a1a4 44a1f0 44a20c 44a228 44a244 44a260 44a27c 44a298 44a2b4 449568 +004ef7c4 44cc39 417d9c 417db0 417dc4 417dd8 417e44 4016eb 4016fa 401709 401718 417dec 417e0c 417e2c 417e64 401727 40173a 40174d 401760 417e98 417ebc 44cbb0 417d9c 417db0 417dc4 417dd8 417e44 4016eb 4016fa 401709 401718 417dec 417e0c 417e2c 417e64 401727 40173a 40174d 401760 417e98 417ebc 44cb27 417c74 44cadc 417c74 44ca91 417a80 44c8cc 4173b8 417938 44c798 4173b8 417938 44c5e4 4173b8 417938 41b956 419c90 44c640 44c65c 44c73c 44c678 +004ef8bc 44c6fc 44c424 4173b8 417938 44c46c 44c4d0 44c388 4173b8 44c3e0 44c3c4 +004efac8 44dc7b 418978 41898c 4189a0 4189b4 418a20 4016eb 4016fa 401709 401718 4189c8 4189e8 418a08 418a40 401727 40173a 40174d 401760 418a74 4178b0 418ac0 418a90 418164 44dbf2 418434 418448 41845c 418470 4184dc 4016eb 4016fa 401709 401718 418484 4184a4 4184c4 4184fc 401727 40173a 40174d 401760 418530 41854c 418570 44da73 4187a4 4187bc 418878 44dca7 44da9f 44dace 44d8f2 4187a4 4187bc 418878 44dcd7 44d91e 44d96b 44d8a3 41830c 44d858 418434 418448 41845c 418470 4184dc 4016eb 4016fa 401709 401718 418484 4184a4 4184c4 4184fc 401727 40173a 40174d 401760 418530 41854c 418570 44d5d4 44d820 44cc98 +004efc5c 44df2f 41830c 44ddac 4173b8 417938 41b956 419c90 44de38 44dd2c 4173b8 417938 41b956 419c90 41b8c4 +004f02bc 44f13a 415fd0 415fe8 41601c 416034 4160c0 4016eb 4016fa 401709 401718 41604c 416078 4160a4 4160ec 401727 40173a 40174d 401760 44f166 4173b8 417938 41b956 419c90 +004f031c 44f192 4173b8 417938 41b956 419c90 +004f0334 44f1be 4173b8 417938 41b956 419c90 +004f034c 44f1ea 4173b8 417938 41b956 419c90 +004f0364 44f216 4173b8 417938 41b956 419c90 +004f037c 44f242 4173b8 417938 41b956 419c90 +004f0394 44f26e 4173b8 417938 41b956 419c90 +004f03ac 44e8a0 4173b8 417938 41b956 419c90 41d59c 44e1b0 44e254 44e488 +004f03d4 44e6e8 44e7ac 44ea8c 44ea28 44eb6c 44e3e0 44e408 44e448 44e468 44e3c0 44eb8c 44ebac 44ebcc 44e428 +004f0444 44f564 418434 418448 41845c 418470 4184dc 4016eb 4016fa 401709 401718 418484 4184a4 4184c4 4184fc 401727 40173a 40174d 401760 418530 41854c 418570 44f4db 41830c 44f2dc 4173b8 417938 +004f05f8 44f950 4173b8 417938 403428 403481 403446 403454 403494 403465 403473 403104 403134 +004f06c0 450106 417d9c 417db0 417dc4 417dd8 417e44 4016eb 4016fa 401709 401718 417dec 417e0c 417e2c 417e64 401727 40173a 40174d 401760 417e98 417ebc 45007d 417c74 44fd9c 4173b8 417938 41b956 419c90 44ffa4 44fe70 44fdfc 44fe04 44fe54 44feb4 44fb40 44fc00 44fc8c 44fd14 450190 4173b8 417938 +004f1230 452bd9 419564 419578 419590 4195ac 419640 4016eb 4016fa 401709 401718 4195c0 4195f4 419620 41964c 401727 40173a 40174d 401760 419674 4178b0 419704 419698 418164 452b6f 417d9c 417db0 417dc4 417dd8 417e44 4016eb 4016fa 401709 401718 417dec 417e0c 417e2c 417e64 401727 40173a 40174d 401760 417e98 417ebc 452a8b 419228 419240 41927c 452c05 452ab7 452ae6 452a3c 417c74 4527f8 4173b8 417938 452700 4173b8 417938 452688 450960 4173b8 417938 41b956 419c90 41d59c 450f48 45134c 451894 450554 45084c 4525bc 45255c 4518b8 4520f8 452ccc 417c74 +004f1610 4594cc 4173b8 417938 41b956 419c90 45950c 4591f8 4173b8 417938 41b956 419c90 459238 458e1c 4173b8 417938 41b956 419c90 458e5c 458cd4 4173b8 417938 41b956 419c90 458d24 4589a0 4173b8 417938 41b956 419c90 4589e0 4587c8 4173b8 417938 41b956 419c90 458808 +004f16a4 4173b8 417938 41b956 419c90 4586d0 458598 4173b8 417938 41b956 419c90 4596a6 4582fc 4173b8 417938 41b956 419c90 45833c 457fd8 4173b8 417938 41b956 419c90 458018 457d74 4173b8 417938 41b956 419c90 457dc4 457af4 4173b8 417938 41b956 419c90 457b48 +004f1734 4173b8 417938 41b956 419c90 457784 +004f174c 4173b8 417938 41b956 419c90 45714c 456c9c 4173b8 417938 41b956 419c90 456ce8 456afc 4173b8 417938 41b956 419c90 456b4c 4569bc 4173b8 417938 41b956 419c90 456a0c 4568b8 4173b8 417938 41b956 419c90 4568f8 4567d4 4173b8 417938 41b956 419c90 456814 456684 4173b8 417938 41b956 419c90 4566c4 +004f17f4 4173b8 417938 41b956 419c90 45656c +004f180c 4173b8 417938 41b956 419c90 456410 4562c0 4173b8 417938 41b956 419c90 456300 456198 4173b8 417938 41b956 419c90 4561d8 455e4c 4173b8 417938 41b956 419c90 455eb8 455d74 4173b8 417938 41b956 419c90 455db4 455cb0 4173b8 417938 41b956 419c90 455cf0 455bc8 4173b8 417938 41b956 419c90 455c34 455a68 4173b8 417938 41b956 419c90 455aa8 4558e0 4173b8 417938 41b956 419c90 455920 4557cc 4173b8 417938 41b956 419c90 455818 455690 4173b8 417938 41b956 419c90 4556fc +004f1914 4173b8 417938 41b956 419c90 4553ac 454924 4173b8 417938 41b956 419c90 454998 45443c 4173b8 417938 41b956 419c90 45447c 454038 4173b8 417938 41b956 419c90 4540ac 453d84 4173b8 417938 41b956 419c90 453dc4 453b84 4173b8 417938 41b956 419c90 453bc4 453a24 4173b8 417938 41b956 419c90 453a64 4538b4 4173b8 417938 41b956 419c90 4538f4 453768 4173b8 417938 41b956 419c90 4537d8 453600 4173b8 417938 41b956 419c90 45364c 453514 4173b8 417938 41b956 419c90 453570 4533fc 4173b8 417938 41b956 419c90 45346c 4532dc 4173b8 417938 41b956 419c90 453330 453198 4173b8 417938 41b956 419c90 4531d8 453068 4173b8 417938 41b956 419c90 4530e4 452e98 4173b8 417938 41b956 419c90 452f30 452da4 4173b8 417938 41b956 419c90 41b8c4 +004f31c4 461608 418fa4 418fc4 418fcc 419010 419030 4016eb 4016fa 401709 401718 415d38 415d5c 419018 415da0 401727 40173a 40174d 401760 419078 4178b0 4190c8 419098 418164 46159e 418434 418448 41845c 418470 4184dc 4016eb 4016fa 401709 401718 418484 4184a4 4184c4 4184fc 401727 40173a 40174d 401760 418530 41854c 418570 461515 417d9c 417db0 417dc4 417dd8 417e44 4016eb 4016fa 401709 401718 417dec 417e0c 417e2c 417e64 401727 40173a 40174d 401760 417e98 417ebc 461431 419228 419240 41927c 461634 46145d 46148c 46134b 418c44 418c5c 418c94 461664 461377 4613c4 4612fc 41830c 460dcc 461694 45d0f4 4173b8 417938 41b956 419c90 435e70 435ee4 436888 460590 436920 4369a0 +004f3340 460a7c 4368a3 4368a8 4368ad 4368b2 45e744 45a070 +004f3644 462cf6 417d9c 417db0 417dc4 417dd8 417e44 4016eb 4016fa 401709 401718 417dec 417e0c 417e2c 417e64 401727 40173a 40174d 401760 417e98 417ebc 462c6d 417c74 462b6c 4173b8 417938 462430 4173b8 417938 462340 +004f3838 465938 418978 41898c 4189a0 4189b4 418a20 4016eb 4016fa 401709 401718 4189c8 4189e8 418a08 418a40 401727 40173a 40174d 401760 418a74 4178b0 418ac0 418a90 418164 4658af 417d9c 417db0 417dc4 417dd8 417e44 4016eb 4016fa 401709 401718 417dec 417e0c 417e2c 417e64 401727 40173a 40174d 401760 417e98 417ebc 465826 418978 41898c 4189a0 4189b4 418a20 4016eb 4016fa 401709 401718 4189c8 4189e8 418a08 418a40 401727 40173a 40174d 401760 418a74 4178b0 418ac0 418a90 418164 4648d8 4173b8 417938 41b956 419c90 43c030 43bbc0 43bb14 43c14c 43bb70 43be20 43be70 43be84 43bed4 43bf20 43bf6c 43bf84 +004f398c 43bfe0 43c014 464a34 4636b0 4651ac 463d70 4173b8 417938 41b956 419c90 43c030 43bbc0 +004f39c0 43c14c 43bb70 43be20 43be70 43be84 43bed4 43bf20 43bf6c 43bf84 463ddc +004f39ec 43bfe0 43c014 463db0 4636b0 4641e0 4637fc 4173b8 417938 41b956 419c90 43c030 43bbc0 43bb14 43c14c 43bb70 43be20 43be70 43be84 43bed4 43bf20 43bf6c 43bf84 4638a8 +004f3a4c 43bfe0 43c014 463848 4636b0 463bbc 463670 4173b8 417938 41b956 419c90 43c030 43bbc0 43bb14 43c14c 43bb70 43be20 43be70 43be84 43bed4 43bf20 43bf6c 43bf84 43bfa4 43bfc4 43bfe0 43c014 43c160 4636b0 43c16a 4631f4 4173b8 417938 41b956 419c90 436e14 438340 463244 +004f3cf8 465c74 4173b8 417938 465b68 +004f3fd8 4173b8 441d9a 41b956 419c90 441f04 43e79c 4660c0 466048 +004f4144 466c30 4173b8 417938 403428 403433 403446 403454 403344 403465 403473 403104 4033d0 417054 417120 466184 466804 466844 466bc4 +004f4970 4685f5 4187a4 4187bc 418878 468717 468621 468650 4685a6 417c74 4683dc 4187a4 4187bc 418878 468747 468408 +004f49b0 467418 4173b8 417938 41b956 419c90 44202c 435ee4 442675 43688f 467908 467940 467b04 46795c 467964 442268 4368a8 4368ad 4368b2 4674c4 442248 468a94 46882b 4173b8 417938 46879c 4687d8 +004f4ad0 46a418 46a450 44a488 44a4b8 46a604 46a65c 46a6dc 46a758 46a760 46a80c 46a8bc 46a96c 468c04 468c74 44a194 44a19c 44a1a4 468ecc 468f40 4693e0 469518 469528 4698a4 469c3c 46a0e4 +004f4d0c 46d91c 46d954 44a488 46db5c 46dca0 46dd00 46dd8c 46de14 46de1c 46ded8 46df9c 46e058 46d050 46d1b8 46d260 44a19c 44a1a4 46af50 46aff8 46b6d4 46b91c 46b92c 46bdfc 46c324 46cac4 46ac08 46ac74 44a194 44a19c 44a1a4 46af50 46aff8 46b6d4 46b91c 46b92c 46bdfc 46c324 46cac4 +004f56a4 46fbcc 4173b8 417938 41b956 419c90 447b70 435ee4 4482d4 43688f 46fd6c 46fda0 448164 46fc98 46fcb0 4368a3 4368a8 447e18 447e40 46fc5c 46ffcc 44895c 46fce0 46fd10 470084 +004fb65c 474a10 474a4e 474a3c 474887 4748c5 4748b3 474b62 4173b8 417938 4742f0 444004 44400c 444720 +004fb694 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 474300 474094 4173b8 417938 4742f0 444004 44400c 444720 +004fb6d8 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 474300 473dac 4173b8 417938 473e9c 444004 44400c 444720 +004fb71c 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 473ebc 473a8c 4173b8 417938 473afc 444004 44400c 444720 +004fb760 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 473b10 4737fc 4173b8 417938 47386c 444004 44400c 444720 +004fb7a4 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 473880 4733b8 4173b8 417938 47246c 444004 44400c 444720 +004fb7e8 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 472480 473540 4735c4 472fb4 4173b8 417938 47246c 444004 44400c 444720 +004fb834 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 472480 47313c 4731d8 472c24 4173b8 417938 47246c 444004 44400c 444720 +004fb880 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 472480 472d78 472dc0 472364 4173b8 417938 47246c 444004 44400c 444720 +004fb8cc 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 472480 +004fb8f4 472ac4 472020 4173b8 417938 4720f8 472124 44400c 444720 +004fb918 44467c 47217c 444090 444098 4446fc 444588 4445a4 444600 472190 471d7c 4173b8 417938 471dec 444004 44400c 444078 444080 444028 444088 444090 444098 4440a0 471b2c 4173b8 417938 471b9c 444004 44400c 444078 444080 444028 444088 444090 444098 4440a0 474b88 4173b8 417938 4719a0 444004 44400c 444078 444080 444028 444088 444090 444098 4440a0 474bbc 4173b8 417938 471884 444004 44400c 444078 444080 444028 444088 444090 444098 4440a0 474bf0 4173b8 417938 471778 444004 44400c 444078 444080 444028 444088 444090 444098 4440a0 4715f0 4173b8 417938 471648 444004 44400c 444078 444080 444028 444088 444090 444098 4440a0 47107c 4173b8 417938 4711b8 444004 44400c 444720 +004fba94 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4711d0 470dc0 4173b8 417938 470eb0 444004 44400c 444720 +004fbad8 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 470ee8 474c24 4173b8 417938 470a3c 444004 44400c 444720 +004fbb1c 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 470bd0 47094c 4173b8 417938 470a3c 444004 44400c 444720 +004fbb60 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 470a74 +004fbbc8 474f98 4173b8 417938 444e3c 444e9c 474ffc 474dc4 4173b8 417938 444e3c 474e1c 474e94 474c98 474cf4 +004fbc3c 47516c 47524c 4753ac 475468 44a1a4 468ecc 468f40 4693e0 469518 469528 4698a4 469c3c 46a0e4 +004fcd84 478edc 4173b8 44c3e0 478f08 478de9 4173b8 44c3e0 478e15 478d2e 4173b8 44c3e0 478d5a 478c41 4173b8 44c3e0 478c6d 478b80 4173b8 44c3e0 478bac 478a8d 4173b8 44c3e0 478ab9 4789d2 4173b8 44c3e0 4789fe 4788e5 4173b8 44c3e0 478911 478514 4173b8 417938 44c46c 478540 47859b 4785e6 47862d 478711 4787e7 4781ab 4173b8 417938 44c46c 4781d7 478215 478260 4782a7 47838b 478461 477e25 4173b8 417938 44c46c 477e51 477eac 477ef7 477f3e 478022 4780f8 477ab9 4173b8 417938 44c46c 477ae5 477b26 477b71 477bb8 477c9c 477d72 476298 4173b8 417938 41b956 419c90 476484 47658c 476454 44c678 +004fcecc 44c6fc 475ad8 475604 475628 475b04 475668 475838 +004fceec 475a54 4758cc 475668 475704 475604 475628 475730 475668 47556c 475604 475628 475694 475668 +004fd2a4 479398 4793b4 479478 +004fd428 47add4 4173b8 417938 41b956 419c90 41c018 41bd34 41c500 41c800 41cab2 41cacd 41cad2 47acf4 4173b8 417938 41b956 419c90 41c018 41bd34 41c500 41c800 41cab2 41cacd 41cad2 47abb0 4173b8 417938 41b956 419c90 41c018 41bd34 41c500 41c800 41cab2 41cacd 41cad2 +004fd8bc 47b624 4173b8 417938 41b956 419c90 41d59c 47b44c 44e254 44e488 +004fd8e4 44e6e8 47b608 47b650 44ea28 47b678 47b49c 44e408 47b4c0 47b508 44e3c0 47b57c 47b530 47b5d0 47b478 +004fdb04 47c734 4173b8 417938 41b956 419c90 47c634 47c5f8 47c614 47c590 4173b8 417938 41b956 419c90 47c380 47c480 47c4b0 47c508 47c538 47c560 47b608 47b650 47c4d0 47c500 47c45c 47c434 47b4c0 47b508 47c43c 47c4c0 47c4b8 47c4c8 47b478 47c268 4173b8 417938 41b956 419c90 41d59c 41d7a8 41d7e8 41d9a4 47bfe4 47c1f0 41dac6 41dacb 47c260 41d9d0 47bf28 4173b8 417938 41b956 419c90 47bf54 450f48 45134c 451894 47bdf0 45084c 4525bc 45255c 4518b8 4520f8 47bd64 4173b8 417938 41b956 419c90 47bda0 47bd90 47bd98 47bdcc +004fdd20 47d081 417a80 47ce7c 4173b8 417938 41b956 419c90 44ffa4 47ced4 47cf3c 47cf54 47cf64 44feb4 47c880 47c92c 47c94c 47c9b4 +004ff380 4807af 4807c6 4807dd 4807f4 48080b +0050b864 49c352 418978 41898c 4189a0 4189b4 418a20 4016eb 4016fa 401709 401718 4189c8 4189e8 418a08 418a40 401727 40173a 40174d 401760 418a74 4178b0 418ac0 418a90 418164 49c2c9 418978 41898c 4189a0 4189b4 418a20 4016eb 4016fa 401709 401718 4189c8 4189e8 418a08 418a40 401727 40173a 40174d 401760 418a74 4178b0 418ac0 418a90 418164 49c146 4187a4 4187bc 418878 49c37e 49c172 49c1a3 49c001 4187a4 4187bc 418878 49c3ae 49c02d 49c05c 49bd7c 4173b8 417938 41b956 419c90 41c018 41bd34 41c500 41c800 41cab2 49c3de 41cad2 403428 403433 403446 403454 403344 403465 403473 403104 419e60 49c3e3 +0050bb7c 49dde8 417a80 49dd9d 417a80 49dd44 49d23c 4173b8 417938 49c66c 41ddd8 41dd98 49c690 +0050bd30 49f3f8 419228 419240 41927c 49f47f 49f424 49f453 49f2d5 419228 419240 41927c 49f4af 49f301 +0050bd68 49f227 419228 419240 41927c 49f4df 49f253 49f284 49eadc 4173b8 417938 +0050bd94 4173b8 417938 49df80 4173b8 417938 +0050ce94 4a4ffb 417d9c 417db0 417dc4 417dd8 417e44 4016eb 4016fa 401709 401718 417dec 417e0c 417e2c 417e64 401727 40173a 40174d 401760 417e98 417ebc 4a4f72 417d9c 417db0 417dc4 417dd8 417e44 4016eb 4016fa 401709 401718 417dec 417e0c 417e2c 417e64 401727 40173a 40174d 401760 417e98 417ebc 4a4ee9 418434 418448 41845c 418470 4184dc 4016eb 4016fa 401709 401718 418484 4184a4 4184c4 4184fc 401727 40173a 40174d 401760 418530 41854c 418570 4a4e60 417c74 4a4e15 417c74 4a4dca 417c74 4a4d7f 41830c 4a452c 4173b8 417938 41f59c +0050cfc8 423dd3 423df4 4206d4 420754 420e84 422684 422fe0 4abb40 +0050e170 4ad0e2 417d9c 417db0 417dc4 417dd8 417e44 4016eb 4016fa 401709 401718 417dec 417e0c 417e2c 417e64 401727 40173a 40174d 401760 417e98 417ebc 4ad059 417c74 4ad00e 415fd0 415fe8 41601c 416034 4160c0 4016eb 4016fa 401709 401718 41604c 416078 4160a4 4160ec 401727 40173a 40174d 401760 4ac868 4173b8 417938 41b956 419c90 41c018 41bd34 41c500 4ac1d4 4ac0bc 4ac22c 4ad10e 4ac144 4ac8c0 +0050e348 4ad6c9 417d9c 417db0 417dc4 417dd8 417e44 4016eb 4016fa 401709 401718 417dec 417e0c 417e2c 417e64 401727 40173a 40174d 401760 417e98 417ebc 4ad640 417c74 4ad1b8 4173b8 417938 41b956 419c90 41c018 41bd34 41c500 41c800 41cab2 41cacd 41cad2 4ad180 +0050ec1c 4afb96 417d9c 417db0 417dc4 417dd8 417e44 4016eb 4016fa 401709 401718 417dec 417e0c 417e2c 417e64 401727 40173a 40174d 401760 417e98 417ebc 4afb0d 417d9c 417db0 417dc4 417dd8 417e44 4016eb 4016fa 401709 401718 417dec 417e0c 417e2c 417e64 401727 40173a 40174d 401760 417e98 417ebc 4afa84 417c74 4afa39 417a80 4af9ee 417a80 +0050ecd8 4173b8 417938 41b956 419c90 41c018 4aeef8 4aef40 4add6c 4ad748 +0050ed00 4ad10e 4add30 4ae050 +0050ed10 4aebe8 4173b8 417938 41b956 419c90 41c018 41bd34 41c500 4ac1d4 4aea84 4aea9c 4ad10e 4ac144 4ac8c0 +0050ed50 4173b8 417938 41b956 419c90 41c018 41bd34 41c500 4add6c 4ae724 +0050ed78 4ad10e 4add30 4ae050 +0050ed88 4ae5fc 4173b8 417938 41b956 419c90 41c018 41bd34 41c500 4add6c 4ae4d8 +0050edb4 4ad10e 4add30 4ae050 +0050edc4 4adfd4 4173b8 417938 41b956 419c90 41c018 41bd34 41c500 4add6c 4ad748 4ad760 4ad10e 4add30 4ae050 +0050f45c 4b044c 4173b8 417938 41b956 419c90 41c018 41bd34 41c500 4ac1d4 4ac0bc 4ac22c 4ad10e 4ac144 4ac8c0 +0050f498 4b029c 4b02b8 4b02d4 4b048c 4b0494 +0050f994 4b1bd0 417a80 4b1930 4173b8 417938 41b956 419c90 41c018 41bd34 41c500 4ac1d4 4b179c 4b1804 4ad10e 4ac144 4ac8c0 +0050f9d8 4b115c 4173b8 417938 41b956 419c90 41c018 41bd34 41c500 4add6c 4b0efc 4b0e6c 4ad10e 4b0f48 4b1224 +0050fb0c 4b1d90 4173b8 417938 41b956 419c90 41c018 41bd34 41c500 4add6c 4b1bfc 4b1c18 4ad10e 4b0f48 4b1224 +0050fd74 4b237c 4173b8 417938 41b956 419c90 41c018 41bd34 41c500 4add6c 4b21d0 +0050fda0 4ad10e 4add30 4ae050 +00510abc 4b3e88 4173b8 417938 41b956 419c90 41c018 41bd34 41c500 4ac1d4 4b2660 4b2678 4ad10e 4ac144 4ac8c0 +00511040 4173b8 417938 41b956 419c90 41c018 4b6a78 +00511064 4b5bf8 4ad10e 4ac144 4ac8c0 +00511498 4b8794 4173b8 417938 41b956 419c90 41c018 41bd34 41c500 4ac1d4 4b179c 4b1804 4ad10e 4ac144 4ac8c0 +005114d4 4b8568 4173b8 417938 41b956 419c90 41c018 4b83b8 4b83f0 4ac1d4 4b179c 4b1804 4ad10e 4ac144 4ac8c0 +00511510 4b816c 4173b8 417938 41b956 419c90 41c018 41bd34 41c500 4ac1d4 +00511538 4b77bc 4ad10e 4ac144 4ac8c0 +005117e0 4173b8 417938 41b956 419c90 41c018 41bd34 41c500 4add6c 4b8a8c 4b8aa4 4ad10e 4b0f48 4b1224 +00511d2c 4b9b9c 4173b8 417938 41b956 419c90 41c018 4b964c 4b9690 4add6c 4b96d4 4b96ec 4ad10e 4b0f48 4b9d00 +00512078 4bb3c8 4173b8 417938 41b956 419c90 41c018 4ba568 4ba65c 4add6c +005120a0 4ba4d0 4ad10e 4b0f48 4bb014 +005120b8 4ba6e0 4ba738 4bace8 +0051214c 4bb8b4 4173b8 417938 41b956 419c90 41c018 4ba568 4ba65c 4add6c +00512174 4ba4d0 4ad10e 4b0f48 4bb014 +0051218c 4ba6e0 4ba738 4bb878 +00512424 4bcbcf 417a80 4bc688 4173b8 417938 41b956 419c90 41c018 4b964c 4b9690 4bcabc 4bbae0 4bbaf8 4ad10e +00512570 4bd060 4173b8 417938 41b956 419c90 41c018 4b964c 4b9690 4bcabc +0051286c 4bd6b0 4173b8 417938 41b956 419c90 41c018 41bd34 41c500 4bdb94 4bd2c0 +00512898 4ad10e 4ac144 4ac8c0 +00512934 4bdce8 4173b8 417938 41b956 419c90 41c018 4ba568 4ba65c 4add6c +0051295c 4ba4d0 4ad10e 4b0f48 4bb014 +00512a5c 4be358 4173b8 417938 41f59c +00512a74 42249c 4225a4 423dd3 423df4 4206d4 +00512a8c 420e84 422684 422fe0 +00512bc0 4173b8 417938 41b956 419c90 41c018 41bd34 41c500 41c800 41cab2 41cacd 41cad2 +00512cec 4173b8 417938 41b956 419c90 41c018 41bd34 41c500 41c800 41cab2 41cacd 41cad2 +00512f2c 4bf890 4173b8 417938 41f59c +00512f48 4bef4c 423dd3 423df4 4206d4 +00512f5c 420e84 422684 422fe0 +00513300 4c0efc 4173b8 417938 4bffa0 +00513314 41fc58 42e2ac 42e2e4 420e58 420e6e 42da08 420754 420e84 42e1ac 42e100 +005133dc 4c110c 4173b8 417938 41f59c +005133f0 41fc58 41f76c 41f680 420e58 420e6e 4206d4 420754 420e84 +005134c4 4c1484 4173b8 417938 41f59c +005134d8 41fc58 42e2ac 42e2e4 420e58 420e6e 42da08 420754 420e84 42e1ac 42e100 +00513588 4c1564 4173b8 417938 41b956 419c90 4c1590 4c15f0 +00514208 4c2d74 4c2db2 4c2da0 4c2bf2 4c2c30 4c2c1e 4c2a70 4c2aae 4c2a9c 4c1ea8 4173b8 417938 4c1fc0 444004 44400c 444720 +0051424c 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c1fd0 +0051898c 4c668d 4173b8 417938 4742f0 444004 44400c 444720 +005189ac 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 +005189d0 4c66b3 4173b8 417938 4742f0 444004 44400c 444720 +005189f0 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 +00518a14 4c66d9 4173b8 417938 4c5fa4 444004 44400c 444720 +00518a34 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c5fb8 4c5f30 4173b8 417938 4c5fa4 444004 44400c 444720 +00518a78 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c5fb8 4c5c80 4173b8 417938 4c5cf4 444004 44400c 444720 +00518abc 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c5d08 4c573c 4173b8 417938 4c58e8 444004 44400c 444720 +00518b00 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c5914 4c5500 4173b8 417938 4c4f14 444004 44400c 444720 +00518b44 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c552c 4c5364 4173b8 417938 4c4f14 444004 44400c 444720 +00518b88 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c4f28 4c51d8 4173b8 417938 4c4f14 444004 44400c 444720 +00518bcc 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c4f28 4c4e7c 4173b8 417938 4c4f14 444004 44400c 444720 +00518c10 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c4f28 4c4c68 4173b8 417938 4c4cac 444004 44400c 444720 +00518c54 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c4cc0 4c486c 4173b8 417938 4c48e0 444004 44400c 444720 +00518c98 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c48fc 4c42b0 4173b8 417938 4c4324 444004 44400c 444720 +00518cdc 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c4340 4c66ff 4173b8 417938 4c395c 444004 44400c 444720 +00518d20 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c3980 4c6725 4173b8 417938 4c395c 444004 44400c 444720 +00518d64 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c3980 4c674b 4173b8 417938 4c395c 444004 44400c 444720 +00518da8 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c3980 4c6771 4173b8 417938 4c395c 444004 44400c 444720 +00518dec 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c3c1c 4c38dc 4173b8 417938 4c395c 444004 44400c 444720 +00518e30 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c3980 4c36d8 4c3718 4c3720 4c35c8 4c3608 4c3610 4c34b4 4c34ec 4c34f4 4c33e8 4c3428 4c3430 4c3350 4c3388 4c3390 4c32b4 4c32ec 4c32f4 4c3218 4c3250 4c3258 4c3160 4c3198 4c31a0 +00519e98 4c9940 4173b8 417938 4c99cc 444004 44400c 444720 +00519eb8 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c9a38 4c9b24 4c9adc 4c9b50 4c94dc 4173b8 417938 4c9520 444004 44400c 444720 +00519f08 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c9290 4c92e4 4c8990 4c932c 4c91d4 4173b8 417938 4c9258 444004 44400c 444720 +00519f58 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c9290 4c92e4 4c8990 4c932c 4c8f54 4173b8 417938 4c8f98 444004 44400c 444720 +00519fa8 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c88e4 4c8a28 4c8990 4c8d18 4173b8 417938 4c8d5c 444004 44400c 444720 +00519ff4 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c8db0 4c8a28 4c8990 4c87dc 4173b8 417938 4c8820 444004 44400c 444720 +0051a040 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c88e4 4c8a28 4c8990 4c7d14 4173b8 417938 4c7e48 444004 44400c 444078 444080 444028 444088 444090 444098 4440a0 4c7778 4173b8 417938 4c77ec 444004 44400c 444720 +0051a0c0 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c7844 4c733c 4173b8 417938 47246c 444004 44400c 444720 +0051a104 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 472480 47313c 4731d8 4c71f0 4173b8 417938 4c4f14 444004 44400c 444720 +0051a150 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c4f28 4c7134 4173b8 417938 4c4f14 444004 44400c 444720 +0051a194 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c4f28 4c6e54 4173b8 417938 4c6ef4 444004 44400c 444720 +0051a1d8 44467c 4c6ee0 444090 444098 4446fc 444588 4445a4 444600 4c6f1c 4c68ac 4173b8 417938 4c6920 444004 44400c 444720 +0051a21c 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c6934 +0051bddc 4cb788 4173b8 417938 4cb7fc 444004 44400c 444720 +0051bdfc 44467c 4cb818 444090 444098 4446fc 444588 4445a4 444600 4cb82c 4cb28c 4173b8 417938 4cb310 444004 44400c 444720 +0051be40 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4cb358 4cab10 4173b8 417938 4caba4 444004 44400c 444720 +0051be84 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4cabd0 4ca39c 4173b8 417938 4ca438 444004 44400c 444720 +0051bec8 44467c 4ca424 444090 444098 4446fc 444588 4445a4 444600 4ca478 4c9f94 4173b8 417938 4ca038 444004 44400c 444720 +0051bf0c 44467c 4ca068 444090 444098 4446fc 444588 4445a4 444600 4ca07c +0051ceb0 4cc0e1 4cc294 4cc2fc 4cbf40 4173b8 417938 41b956 419c90 447b70 435ee4 4482d4 43688f 4cbfa0 4cc028 448164 46fc98 46fcb0 4368a3 4368a8 447e18 447e40 46fc5c 46ffcc 44895c 46fce0 46fd10 470084 +0051da98 4d12e3 418434 418448 41845c 418470 4184dc 4016eb 4016fa 401709 401718 418484 4184a4 4184c4 4184fc 401727 40173a 40174d 401760 418530 41854c 418570 4d125a 41830c 4ceefc 4173b8 417938 41b956 419c90 435e70 435ee4 436888 460590 436920 4d0c5c +0051db28 460a7c 4d097c 4d0c14 4368ad 4368b2 4d0774 4d130f +0051db48 4173b8 417938 41b956 419c90 +0051e3a0 4d27cc 4173b8 417938 41b956 419c90 41c018 41bd34 41c500 4ac1d4 4ac0bc 4ac22c 4ad10e 4ac144 4ac8c0 4d1840 4d18dc 4d25e8 4d262c +0051e3ec 4d1ae4 4d22b4 4173b8 417938 41b956 419c90 41c018 41bd34 41c500 4ac1d4 4ac0bc 4ac22c 4ad10e 4ac144 4ac8c0 4d1840 4d18dc 4d195c 4d1964 +0051e43c 4d1ae4 4d1814 4173b8 417938 41b956 419c90 41c018 41bd34 41c500 4ac1d4 4ac0bc 4ac22c 4ad10e 4ac144 4ac8c0 4d1840 4d18dc 4d195c 4d1964 +0051e518 4d2b90 4173b8 417938 41b956 419c90 44202c 435ee4 442675 43688f 467908 467940 467b04 46795c 467964 442268 4368a8 4368ad 4368b2 4674c4 4d2bbc 4d2a60 4d2b4c 4d2b34 +0051ed9c 4d350c 4173b8 417938 41b956 419c90 41d59c 47b44c 44e254 44e488 +0051edc4 44e6e8 47b608 47b650 4d36c4 4d36f4 47b49c 4d3538 4d3644 47b508 44e3c0 4d35b0 4d3564 4d368c 4d3614 +0051f1a4 4d3ea0 4173b8 417938 41b956 419c90 41d59c 4d3c34 4d3c44 4d3d40 +0051f1cc 44e6e8 47b608 47b650 4d36c4 4d36f4 4d3c14 4d3538 4d3644 47b508 44e3c0 4d35b0 4d3564 4d368c 4d3614 4d3bb8 4173b8 417938 41b956 419c90 47c634 4d3b90 +0052051c 4dc4d0 4dc41c 4d9e78 +005206fc 4dc4d0 4dc41c 4dbf44 +00520964 4dd24c 4dd24c 4dd258 4dd258 +00520c14 4dedc8 4dedc8 4dedc8 diff --git a/reference/decomp/functions_index.tsv b/reference/decomp/functions_index.tsv index 90277cd..f60fe51 100644 --- a/reference/decomp/functions_index.tsv +++ b/reference/decomp/functions_index.tsv @@ -1,5 +1,6 @@ 401000 110 ? entry 40106e 5 ? __GetExceptDLLinfo +401074 39 ? FUN_00401074 40109c 524 ? FUN_0040109c 4012a8 31 ? FUN_004012a8 4012c7 31 ? FUN_004012c7 @@ -378,6 +379,7 @@ 40a138 171 ? FUN_0040a138 40a22c 598 ? FUN_0040a22c 40a4d8 406 ? FUN_0040a4d8 +40a67c 188 ? FUN_0040a67c 40a738 10 ? FUN_0040a738 40a7c0 49 ? FUN_0040a7c0 40a7f4 47 ? FUN_0040a7f4 @@ -465,8 +467,11 @@ 40dbd4 44 ? FUN_0040dbd4 40dc00 82 ? FUN_0040dc00 40dc58 329 ? FUN_0040dc58 +40ddac 10 ? FUN_0040ddac 40ddb8 10 ? FUN_0040ddb8 40ddc4 47 ? FUN_0040ddc4 +40ddf8 41 ? FUN_0040ddf8 +40de28 10 ? FUN_0040de28 40de34 10 ? FUN_0040de34 40de40 53 ? FUN_0040de40 40de78 42 ? FUN_0040de78 @@ -516,98 +521,132 @@ 40ffd4 21 ? FUN_0040ffd4 40ffec 21 ? FUN_0040ffec 410004 108 ? FUN_00410004 +41007c 284 ? FUN_0041007c 4101a0 855 ? FUN_004101a0 4104f7 8 ? FUN_004104f7 410500 46 ? FUN_00410500 410530 45 ? FUN_00410530 410560 159 ? FUN_00410560 +410604 125 ? FUN_00410604 +410688 185 ? FUN_00410688 +410754 322 ? FUN_00410754 +4108a0 20 ? FUN_004108a0 4108b4 46 ? FUN_004108b4 4108e4 45 ? FUN_004108e4 410914 206 ? FUN_00410914 +4109e8 166 ? FUN_004109e8 +410a94 187 ? FUN_00410a94 410b5c 34 ? FUN_00410b5c 410b80 793 ? FUN_00410b80 +410eb0 22 ? FUN_00410eb0 410ec8 344 ? FUN_00410ec8 411024 46 ? FUN_00411024 411054 45 ? FUN_00411054 411084 75 ? FUN_00411084 4110d0 75 ? FUN_004110d0 41111c 92 ? FUN_0041111c +41117c 132 ? FUN_0041117c 411200 22 ? FUN_00411200 411218 46 ? FUN_00411218 411248 45 ? FUN_00411248 411278 75 ? FUN_00411278 4112c4 75 ? FUN_004112c4 411310 92 ? FUN_00411310 +411370 132 ? FUN_00411370 4113f4 22 ? FUN_004113f4 41140c 46 ? FUN_0041140c 41143c 45 ? FUN_0041143c 41146c 73 ? FUN_0041146c 4114b8 73 ? FUN_004114b8 411504 90 ? FUN_00411504 +411564 130 ? FUN_00411564 4115e8 22 ? FUN_004115e8 411600 46 ? FUN_00411600 411630 45 ? FUN_00411630 411660 73 ? FUN_00411660 4116ac 72 ? FUN_004116ac 4116f4 89 ? FUN_004116f4 +411754 130 ? FUN_00411754 4117d8 22 ? FUN_004117d8 4117f0 46 ? FUN_004117f0 411820 45 ? FUN_00411820 411850 75 ? FUN_00411850 41189c 75 ? FUN_0041189c 4118e8 104 ? FUN_004118e8 +411958 132 ? FUN_00411958 4119dc 22 ? FUN_004119dc 4119f4 46 ? FUN_004119f4 411a24 45 ? FUN_00411a24 411a54 75 ? FUN_00411a54 411aa0 75 ? FUN_00411aa0 411aec 104 ? FUN_00411aec +411b5c 132 ? FUN_00411b5c 411be0 22 ? FUN_00411be0 411bf8 46 ? FUN_00411bf8 411c28 45 ? FUN_00411c28 411c58 72 ? FUN_00411c58 411ca0 72 ? FUN_00411ca0 411ce8 101 ? FUN_00411ce8 +411d58 130 ? FUN_00411d58 411ddc 22 ? FUN_00411ddc 411df4 46 ? FUN_00411df4 411e24 45 ? FUN_00411e24 411e54 74 ? FUN_00411e54 411ea0 73 ? FUN_00411ea0 411eec 102 ? FUN_00411eec +411f5c 130 ? FUN_00411f5c 411fe0 22 ? FUN_00411fe0 411ff8 46 ? FUN_00411ff8 412028 45 ? FUN_00412028 412058 73 ? FUN_00412058 4120a4 72 ? FUN_004120a4 4120ec 110 ? FUN_004120ec +412164 131 ? FUN_00412164 4121e8 22 ? FUN_004121e8 412200 46 ? FUN_00412200 412230 45 ? FUN_00412230 412260 73 ? FUN_00412260 4122ac 73 ? FUN_004122ac 4122f8 111 ? FUN_004122f8 +412370 131 ? FUN_00412370 4123f4 22 ? FUN_004123f4 41240c 46 ? FUN_0041240c 41243c 45 ? FUN_0041243c 41246c 73 ? FUN_0041246c 4124b8 72 ? FUN_004124b8 412500 110 ? FUN_00412500 +412578 131 ? FUN_00412578 4125fc 22 ? FUN_004125fc 412614 46 ? FUN_00412614 412644 45 ? FUN_00412644 412674 73 ? FUN_00412674 4126c0 73 ? FUN_004126c0 41270c 111 ? FUN_0041270c +412784 130 ? FUN_00412784 412808 22 ? FUN_00412808 412820 46 ? FUN_00412820 412850 45 ? FUN_00412850 412880 192 ? FUN_00412880 +412944 104 ? FUN_00412944 +4129b0 140 ? FUN_004129b0 +412a48 515 ? FUN_00412a48 +412c60 22 ? FUN_00412c60 412c78 46 ? FUN_00412c78 412ca8 45 ? FUN_00412ca8 412cd8 361 ? FUN_00412cd8 +412e6c 5134 ? FUN_00412e6c +4142e8 189 ? FUN_004142e8 +4143ac 102 ? FUN_004143ac +414418 139 ? FUN_00414418 +4144b0 512 ? FUN_004144b0 +4146c4 22 ? FUN_004146c4 4146dc 46 ? FUN_004146dc 41470c 45 ? FUN_0041470c 41473c 189 ? FUN_0041473c +414800 102 ? FUN_00414800 +41486c 138 ? FUN_0041486c +414904 512 ? FUN_00414904 +414b18 22 ? FUN_00414b18 414b60 53 ? FUN_00414b60 414b98 10 ? FUN_00414b98 414ba4 56 ? FUN_00414ba4 @@ -956,6 +995,7 @@ 419b14 5 ? FUN_00419b14 419b1c 36 ? FUN_00419b1c 419b40 114 ? FUN_00419b40 +419bb4 5 ? FUN_00419bb4 419bbc 209 ? FUN_00419bbc 419c90 40 ? FUN_00419c90 419cb8 85 ? FUN_00419cb8 @@ -1189,6 +1229,7 @@ 41f4f1 44 ? FUN_0041f4f1 41f51d 48 ? FUN_0041f51d 41f54d 33 ? FUN_0041f54d +41f570 42 ? FUN_0041f570 41f59c 161 ? FUN_0041f59c 41f640 62 ? FUN_0041f640 41f680 144 ? FUN_0041f680 @@ -1287,6 +1328,8 @@ 421f5c 31 ? FUN_00421f5c 421f7c 225 ? FUN_00421f7c 422060 345 ? FUN_00422060 +4221c0 410 ? FUN_004221c0 +422360 306 ? FUN_00422360 42249c 257 ? FUN_0042249c 4225a4 223 ? FUN_004225a4 422684 294 ? FUN_00422684 @@ -1295,6 +1338,7 @@ 42291c 513 ? FUN_0042291c 422bac 6 ? FUN_00422bac 422bb2 899 ? FUN_00422bb2 +422f44 155 ? FUN_00422f44 422fe0 23 ? FUN_00422fe0 422ff8 522 ? FUN_00422ff8 423414 81 ? FUN_00423414 @@ -1538,11 +1582,13 @@ 42c521 31 ? FUN_0042c521 42c540 31 ? FUN_0042c540 42c55f 44 ? FUN_0042c55f +42c58c 158 ? FUN_0042c58c 42c630 47 ? FUN_0042c630 42c660 259 ? FUN_0042c660 42c764 214 ? FUN_0042c764 42c850 29 ? FUN_0042c850 42c870 198 ? FUN_0042c870 +42c93c 226 ? FUN_0042c93c 42ca20 35 ? FUN_0042ca20 42ca44 56 ? FUN_0042ca44 42ca7c 697 ? FUN_0042ca7c @@ -1579,7 +1625,9 @@ 42da4c 28 munga/player.cpp FUN_0042da4c 42da68 279 ? FUN_0042da68 42db80 580 ? FUN_0042db80 +42ddcc 437 ? FUN_0042ddcc 42df8c 336 ? FUN_0042df8c +42e0e0 29 ? FUN_0042e0e0 42e100 101 ? FUN_0042e100 42e168 68 ? FUN_0042e168 42e1ac 256 ? FUN_0042e1ac @@ -1612,7 +1660,9 @@ 42ea3f 44 ? FUN_0042ea3f 42ea6b 80 ? FUN_0042ea6b 42eabb 75 ? FUN_0042eabb +42eb08 48 ? FUN_0042eb08 42eb38 243 ? FUN_0042eb38 +42ec34 6 ? FUN_0042ec34 42ec3a 297 ? FUN_0042ec3a 42ed68 352 ? FUN_0042ed68 42eec8 169 ? FUN_0042eec8 @@ -1626,6 +1676,7 @@ 42f2f8 46 ? FUN_0042f2f8 42f328 100 ? FUN_0042f328 42f38c 114 ? FUN_0042f38c +42f404 1031 ? FUN_0042f404 42f9bc 27 ? FUN_0042f9bc 42fa79 8 ? FUN_0042fa79 42fa81 8 ? FUN_0042fa81 @@ -1668,6 +1719,7 @@ 431028 46 ? FUN_00431028 431058 80 ? FUN_00431058 4310a8 27 ? FUN_004310a8 +4311dc 33 ? FUN_004311dc 431200 548 ? FUN_00431200 431428 147 ? FUN_00431428 4314bc 366 ? FUN_004314bc @@ -1695,6 +1747,7 @@ 432588 55 ? FUN_00432588 4325c0 44 ? FUN_004325c0 4325ec 779 ? FUN_004325ec +432974 94 ? FUN_00432974 4329d4 46 ? FUN_004329d4 432a04 503 ? FUN_00432a04 432c18 272 ? FUN_00432c18 @@ -1857,6 +1910,7 @@ 435f9c 15 ? FUN_00435f9c 435fac 67 ? FUN_00435fac 435ff0 236 ? FUN_00435ff0 +4360e4 38 ? FUN_004360e4 43610c 24 ? FUN_0043610c 436124 132 ? FUN_00436124 4361a8 38 ? FUN_004361a8 @@ -2186,6 +2240,7 @@ 43d600 27 munga/audseq.cpp FUN_0043d600 43d61c 15 ? FUN_0043d61c 43d62c 247 ? FUN_0043d62c +43d730 137 ? FUN_0043d730 43d7bc 5 ? FUN_0043d7bc 43d7c1 31 ? FUN_0043d7c1 43d7e0 44 ? FUN_0043d7e0 @@ -2219,10 +2274,12 @@ 43dd74 44 ? FUN_0043dd74 43dda0 306 munga/audwthr.cpp FUN_0043dda0 43ded4 244 munga/audwthr.cpp FUN_0043ded4 +43dfcc 54 ? FUN_0043dfcc 43e004 78 ? FUN_0043e004 43e054 44 ? FUN_0043e054 43e080 306 munga/audwthr.cpp FUN_0043e080 43e1b4 244 munga/audwthr.cpp FUN_0043e1b4 +43e2ac 54 ? FUN_0043e2ac 43e2e4 42 ? FUN_0043e2e4 43e310 44 ? FUN_0043e310 43e33c 11 ? FUN_0043e33c @@ -2286,10 +2343,12 @@ 43f431 44 ? FUN_0043f431 43f45d 838 munga/audwthr.hpp FUN_0043f45d 43f7a3 220 ? FUN_0043f7a3 +43f883 34 munga/audwthr.hpp FUN_0043f883 43f8ab 165 ? FUN_0043f8ab 43f950 44 ? FUN_0043f950 43f97c 838 munga/audwthr.hpp FUN_0043f97c 43fcc2 220 ? FUN_0043fcc2 +43fda2 34 munga/audwthr.hpp FUN_0043fda2 43fdca 81 ? FUN_0043fdca 43fe1b 58 ? FUN_0043fe1b 43fe55 111 ? FUN_0043fe55 @@ -2329,6 +2388,7 @@ 440b61 44 ? FUN_00440b61 440b8d 838 munga/audwthr.hpp FUN_00440b8d 440ed3 220 ? FUN_00440ed3 +440fb3 34 munga/audwthr.hpp FUN_00440fb3 440fdb 115 ? FUN_00440fdb 44104e 44 ? FUN_0044104e 44107a 439 munga/audwthr.hpp FUN_0044107a @@ -2386,6 +2446,7 @@ 44242c 35 ? FUN_0044242c 44244f 44 ? FUN_0044244f 44247b 110 ? FUN_0044247b +4424ef 107 ? FUN_004424ef 4425af 75 ? FUN_004425af 4425fa 31 ? FUN_004425fa 442619 44 ? FUN_00442619 @@ -2515,6 +2576,7 @@ 4446e0 28 munga/gauge.cpp FUN_004446e0 4446fc 36 ? FUN_004446fc 444720 62 ? FUN_00444720 +444764 180 ? FUN_00444764 444818 85 ? FUN_00444818 444870 58 ? FUN_00444870 4448ac 15 ? FUN_004448ac @@ -2631,6 +2693,7 @@ 448318 193 ? FUN_00448318 4483dc 137 ? FUN_004483dc 448468 203 ? FUN_00448468 +448538 11 ? FUN_00448538 448548 268 ? FUN_00448548 448654 717 ? FUN_00448654 448928 50 ? FUN_00448928 @@ -2870,6 +2933,7 @@ 44e448 30 munga/app.cpp FUN_0044e448 44e468 30 munga/app.cpp FUN_0044e468 44e488 282 ? FUN_0044e488 +44e5a8 276 ? FUN_0044e5a8 44e6c0 40 ? FUN_0044e6c0 44e6e8 193 ? FUN_0044e6e8 44e7ac 241 ? FUN_0044e7ac @@ -3082,6 +3146,7 @@ 454984 20 ? FUN_00454984 454998 213 ? FUN_00454998 454a70 1864 ? FUN_00454a70 +4551c0 490 ? FUN_004551c0 4553ac 470 ? FUN_004553ac 455584 20 ? FUN_00455584 455598 245 ? FUN_00455598 @@ -3127,9 +3192,11 @@ 4562ec 20 ? FUN_004562ec 456300 90 ? FUN_00456300 45635c 109 ? FUN_0045635c +4563d0 44 ? FUN_004563d0 4563fc 20 ? FUN_004563fc 456410 149 ? FUN_00456410 4564a8 126 ? FUN_004564a8 +45652c 44 ? FUN_0045652c 456558 20 ? FUN_00456558 45656c 164 munga_l4/l4vidrnd.cpp FUN_0045656c 456610 115 ? FUN_00456610 @@ -3157,9 +3224,11 @@ 456cd4 20 ? FUN_00456cd4 456ce8 5 ? FUN_00456ce8 456cf0 1043 ? FUN_00456cf0 +45710c 44 ? FUN_0045710c 457138 20 ? FUN_00457138 45714c 653 ? FUN_0045714c 4573e4 859 ? FUN_004573e4 +457744 44 ? FUN_00457744 457770 20 ? FUN_00457770 457784 544 ? FUN_00457784 4579a8 330 ? FUN_004579a8 @@ -3182,6 +3251,7 @@ 458598 68 ? FUN_00458598 4585dc 27 ? FUN_004585dc 4585f8 144 ? FUN_004585f8 +458690 44 ? FUN_00458690 4586bc 20 ? FUN_004586bc 4586d0 131 ? FUN_004586d0 458754 114 ? FUN_00458754 @@ -3238,6 +3308,7 @@ 45f59c 486 munga_l4/l4video.cpp FUN_0045f59c 45f784 84 ? FUN_0045f784 45f7dc 551 ? FUN_0045f7dc +45fa08 485 ? FUN_0045fa08 45fbf4 48 ? FUN_0045fbf4 45fc24 50 ? FUN_0045fc24 45fc58 70 ? FUN_0045fc58 @@ -3246,10 +3317,12 @@ 45fe44 128 ? FUN_0045fe44 45fec8 131 ? FUN_0045fec8 45ff4c 1552 ? FUN_0045ff4c +460564 41 ? FUN_00460564 460590 192 ? FUN_00460590 460654 125 ? FUN_00460654 4606d4 154 munga_l4/l4video.cpp FUN_004606d4 460770 161 ? FUN_00460770 +460820 30 ? FUN_00460820 460840 211 ? FUN_00460840 460914 128 ? FUN_00460914 460994 69 munga_l4/l4video.cpp FUN_00460994 @@ -3372,19 +3445,24 @@ 463828 30 ? FUN_00463828 463848 96 ? FUN_00463848 4638a8 659 ? FUN_004638a8 +463b60 92 ? FUN_00463b60 463bbc 385 ? FUN_00463bbc 463d4c 35 ? FUN_00463d4c 463d70 44 ? FUN_00463d70 463d9c 20 ? FUN_00463d9c 463db0 42 ? FUN_00463db0 463ddc 911 ? FUN_00463ddc +464178 101 ? FUN_00464178 4641e0 1592 ? FUN_004641e0 +464824 86 ? FUN_00464824 46487c 90 ? FUN_0046487c 4648d8 61 ? FUN_004648d8 464918 219 munga_l4/l4audio.cpp FUN_00464918 4649f4 30 ? FUN_004649f4 464a14 29 ? FUN_00464a14 464a34 450 ? FUN_00464a34 +464bfc 1326 ? FUN_00464bfc +465140 105 ? FUN_00465140 4651ac 1538 ? FUN_004651ac 4657c9 31 ? FUN_004657c9 4657e8 31 ? FUN_004657e8 @@ -3409,6 +3487,7 @@ 465ca0 20 ? FUN_00465ca0 465cb4 24 ? FUN_00465cb4 465ccc 14 ? FUN_00465ccc +465cdc 44 ? FUN_00465cdc 465d08 199 ? FUN_00465d08 465dd0 611 munga_l4/l4audwtr.cpp FUN_00465dd0 466034 20 ? FUN_00466034 @@ -3456,6 +3535,7 @@ 4683b9 35 ? FUN_004683b9 4683dc 44 ? FUN_004683dc 468408 110 ? FUN_00468408 +46847c 107 ? FUN_0046847c 46853c 75 ? FUN_0046853c 468587 31 ? FUN_00468587 4685a6 44 ? FUN_004685a6 @@ -3635,6 +3715,7 @@ 470a98 218 ? FUN_00470a98 470b74 92 ? FUN_00470b74 470bd0 69 ? FUN_00470bd0 +470c1c 223 ? FUN_00470c1c 470cfc 195 ? FUN_00470cfc 470dc0 73 ? FUN_00470dc0 470e0c 15 ? FUN_00470e0c @@ -3688,6 +3769,7 @@ 4723a0 204 ? FUN_004723a0 47246c 18 ? FUN_0047246c 472480 1562 ? FUN_00472480 +472aa8 28 munga_l4/l4gauge.cpp FUN_00472aa8 472ac4 28 munga_l4/l4gauge.cpp FUN_00472ac4 472ae0 165 ? FUN_00472ae0 472b88 153 ? FUN_00472b88 @@ -3737,6 +3819,7 @@ 4740cc 545 ? FUN_004740cc 4742f0 16 ? FUN_004742f0 474300 578 ? FUN_00474300 +474550 142 ? FUN_00474550 4745e0 145 ? FUN_004745e0 474855 50 ? FUN_00474855 474887 44 ? FUN_00474887 @@ -3789,6 +3872,7 @@ 4757bc 123 ? FUN_004757bc 475838 145 ? FUN_00475838 4758cc 357 ? FUN_004758cc +475a38 26 ? FUN_00475a38 475a54 78 ? FUN_00475a54 475aa4 52 ? FUN_00475aa4 475ad8 44 ? FUN_00475ad8 @@ -3953,6 +4037,7 @@ 47a84c 34 ? FUN_0047a84c 47a86e 101 ? FUN_0047a86e 47a8d3 198 ? FUN_0047a8d3 +47a9bc 134 ? FUN_0047a9bc 47aa48 44 ? FUN_0047aa48 47aa78 309 ? FUN_0047aa78 47abb0 44 ? FUN_0047abb0 @@ -3982,9 +4067,11 @@ 47b678 271 munga_l4/l4app.cpp FUN_0047b678 47b788 218 munga_l4/l4app.cpp FUN_0047b788 47b864 126 ? FUN_0047b864 +47b8ec 563 ? FUN_0047b8ec 47bb20 19 ? FUN_0047bb20 47bb34 115 ? FUN_0047bb34 47bba8 105 ? FUN_0047bba8 +47bc14 181 ? FUN_0047bc14 47bd48 25 ? FUN_0047bd48 47bd64 44 ? FUN_0047bd64 47bd90 5 ? FUN_0047bd90 @@ -4004,6 +4091,7 @@ 47c294 22 ? FUN_0047c294 47c2ac 22 ? FUN_0047c2ac 47c2c4 139 ? FUN_0047c2c4 +47c358 37 ? FUN_0047c358 47c380 121 ? FUN_0047c380 47c3fc 53 ? FUN_0047c3fc 47c434 7 ? FUN_0047c434 @@ -4186,6 +4274,7 @@ 481f72 5 ? FUN_00481f72 48255c 43 ? FUN_0048255c 482587 110 ? FUN_00482587 +4825f5 220 ? FUN_004825f5 4826d1 474 ? FUN_004826d1 4828ab 94 ? FUN_004828ab 482909 72 ? FUN_00482909 @@ -4259,6 +4348,7 @@ 48644a 19 ? FUN_0048644a 48645d 5 ? FUN_0048645d 486462 5 ? FUN_00486462 +486a0e 4138 ? FUN_00486a0e 487788 381 ? FUN_00487788 487905 5 ? FUN_00487905 48790c 45 ? FUN_0048790c @@ -4763,6 +4853,7 @@ 492adc 65 ? FUN_00492adc 492b20 125 ? FUN_00492b20 492ba0 106 ? FUN_00492ba0 +492c0a 2 ? FUN_00492c0a 492c0c 118 ? FUN_00492c0c 492c84 45 ? FUN_00492c84 492cb4 89 ? FUN_00492cb4 @@ -5028,12 +5119,14 @@ 49e5e4 145 ? FUN_0049e5e4 49e678 178 ? FUN_0049e678 49e740 206 ? FUN_0049e740 +49e814 106 ? FUN_0049e814 49e880 10 ? FUN_0049e880 49e88c 443 ? FUN_0049e88c 49ea48 145 ? FUN_0049ea48 49eadc 106 ? FUN_0049eadc 49eb48 10 ? FUN_0049eb48 49eb54 427 ? FUN_0049eb54 +49ed0c 28 ? FUN_0049ed0c 49ed28 1244 ? FUN_0049ed28 49f204 35 ? FUN_0049f204 49f227 44 ? FUN_0049f227 @@ -5042,6 +5135,7 @@ 49f2b2 35 ? FUN_0049f2b2 49f2d5 44 ? FUN_0049f2d5 49f301 102 ? FUN_0049f301 +49f36d 99 ? FUN_0049f36d 49f3d5 35 ? FUN_0049f3d5 49f3f8 44 ? FUN_0049f3f8 49f424 47 ? FUN_0049f424 @@ -5053,10 +5147,13 @@ 49f53c 44 ? FUN_0049f53c 49f568 80 ? FUN_0049f568 49f5b8 75 ? FUN_0049f5b8 +49f604 29 ? FUN_0049f604 49f624 79 ? FUN_0049f624 49f674 130 ? FUN_0049f674 +49f700 39 ? FUN_0049f700 49f728 96 ? FUN_0049f728 49f788 199 ? FUN_0049f788 +49f854 426 ? FUN_0049f854 49fa00 28 ? FUN_0049fa00 49fa1c 306 ? FUN_0049fa1c 49fb54 30 ? FUN_0049fb54 @@ -5065,6 +5162,11 @@ 49fe40 47 ? FUN_0049fe40 49fe70 14 ? FUN_0049fe70 49fe80 328 ? FUN_0049fe80 +49ffcc 377 ? FUN_0049ffcc +4a0164 162 ? FUN_004a0164 +4a0230 2517 bt/mech.cpp FUN_004a0230 +4a0c2c 1493 ? FUN_004a0c2c +4a122c 6 ? FUN_004a122c 4a1232 1048 ? FUN_004a1232 4a1674 5690 bt/mech.cpp FUN_004a1674 4a2d48 46 ? FUN_004a2d48 @@ -5099,6 +5201,8 @@ 4a5678 1333 bt/mech2.cpp FUN_004a5678 4a5bf8 1792 bt/mech2.cpp FUN_004a5bf8 4a6344 1418 ? FUN_004a6344 +4a6928 1041 ? FUN_004a6928 +4a6d8c 1047 ? FUN_004a6d8c 4a71f4 1840 bt/mech2.cpp FUN_004a71f4 4a7970 1414 ? FUN_004a7970 4a7f50 114 ? FUN_004a7f50 @@ -5110,9 +5214,11 @@ 4a8cc0 1741 ? FUN_004a8cc0 4a9390 990 ? FUN_004a9390 4a9770 1002 ? FUN_004a9770 +4a9b5c 5645 bt/mech4.cpp FUN_004a9b5c 4ab188 63 ? FUN_004ab188 4ab1c8 615 ? FUN_004ab1c8 4ab430 1432 ? FUN_004ab430 +4ab9d8 360 ? FUN_004ab9d8 4abb40 1284 ? FUN_004abb40 4ac04c 23 ? FUN_004ac04c 4ac064 23 ? FUN_004ac064 @@ -5155,6 +5261,7 @@ 4ad68b 31 ? FUN_004ad68b 4ad6aa 31 ? FUN_004ad6aa 4ad6c9 44 ? FUN_004ad6c9 +4ad6f8 80 ? FUN_004ad6f8 4ad748 21 ? FUN_004ad748 4ad760 115 ? FUN_004ad760 4ad7d4 26 ? FUN_004ad7d4 @@ -5165,6 +5272,7 @@ 4ad9ec 163 ? FUN_004ad9ec 4ada94 349 ? FUN_004ada94 4adbf8 258 ? FUN_004adbf8 +4add00 47 ? FUN_004add00 4add30 58 ? FUN_004add30 4add6c 49 ? FUN_004add6c 4adda0 561 bt/heat.cpp FUN_004adda0 @@ -5172,14 +5280,19 @@ 4ae034 27 ? FUN_004ae034 4ae050 255 ? FUN_004ae050 4ae150 782 ? FUN_004ae150 +4ae464 113 ? FUN_004ae464 4ae4d8 88 ? FUN_004ae4d8 +4ae534 51 ? FUN_004ae534 4ae568 146 ? FUN_004ae568 4ae5fc 61 ? FUN_004ae5fc 4ae63c 27 ? FUN_004ae63c 4ae658 175 ? FUN_004ae658 +4ae70c 21 ? FUN_004ae70c 4ae724 21 ? FUN_004ae724 4ae73c 351 ? FUN_004ae73c +4ae8b0 32 ? FUN_004ae8b0 4ae8d0 161 ? FUN_004ae8d0 +4ae980 61 ? FUN_004ae980 4ae9c0 27 ? FUN_004ae9c0 4ae9dc 167 ? FUN_004ae9dc 4aea84 21 ? FUN_004aea84 @@ -5189,13 +5302,16 @@ 4aebe8 78 ? FUN_004aebe8 4aec38 27 ? FUN_004aec38 4aec54 468 ? FUN_004aec54 +4aee2c 68 ? FUN_004aee2c 4aee70 108 ? FUN_004aee70 +4aeee0 21 ? FUN_004aeee0 4aeef8 70 ? FUN_004aeef8 4aef40 53 ? FUN_004aef40 4aef78 44 ? FUN_004aef78 4aefa4 1019 ? FUN_004aefa4 4af3b0 84 ? FUN_004af3b0 4af408 272 ? FUN_004af408 +4af524 61 ? FUN_004af524 4af564 27 ? FUN_004af564 4af580 273 ? FUN_004af580 4af9cf 31 ? FUN_004af9cf @@ -5212,10 +5328,12 @@ 4afb58 31 ? FUN_004afb58 4afb77 31 ? FUN_004afb77 4afb96 44 ? FUN_004afb96 +4afbc4 25 bt/mechmppr.cpp FUN_004afbc4 4afbe0 201 ? FUN_004afbe0 4afcac 59 ? FUN_004afcac 4afce8 37 ? FUN_004afce8 4afd10 1359 ? FUN_004afd10 +4b0280 28 bt/mechmppr.cpp FUN_004b0280 4b029c 28 bt/mechmppr.cpp FUN_004b029c 4b02b8 28 bt/mechmppr.cpp FUN_004b02b8 4b02d4 28 bt/mechmppr.cpp FUN_004b02d4 @@ -5250,6 +5368,7 @@ 4b1208 27 ? FUN_004b1208 4b1224 372 ? FUN_004b1224 4b13ac 976 ? FUN_004b13ac +4b1780 14 ? FUN_004b1780 4b179c 101 ? FUN_004b179c 4b1804 21 ? FUN_004b1804 4b181c 133 ? FUN_004b181c @@ -5257,6 +5376,7 @@ 4b1930 61 ? FUN_004b1930 4b1970 27 ? FUN_004b1970 4b198c 175 ? FUN_004b198c +4b1a40 68 ? FUN_004b1a40 4b1bb1 31 ? FUN_004b1bb1 4b1bd0 44 ? FUN_004b1bd0 4b1bfc 26 ? FUN_004b1bfc @@ -5266,7 +5386,9 @@ 4b1d90 58 ? FUN_004b1d90 4b1dcc 73 ? FUN_004b1dcc 4b1e18 27 ? FUN_004b1e18 +4b1ed0 169 ? FUN_004b1ed0 4b1f7c 452 ? FUN_004b1f7c +4b215c 115 ? FUN_004b215c 4b21d0 134 ? FUN_004b21d0 4b225c 286 ? FUN_004b225c 4b237c 61 ? FUN_004b237c @@ -5274,6 +5396,7 @@ 4b2660 21 ? FUN_004b2660 4b2678 227 ? FUN_004b2678 4b275c 543 ? FUN_004b275c +4b2980 657 ? FUN_004b2980 4b2d8c 85 ? FUN_004b2d8c 4b2de4 107 ? FUN_004b2de4 4b2e50 89 ? FUN_004b2e50 @@ -5286,6 +5409,7 @@ 4b3778 1807 ? FUN_004b3778 4b3e88 44 ? FUN_004b3e88 4b3eb4 7274 ? FUN_004b3eb4 +4b5be0 21 ? FUN_004b5be0 4b5bf8 247 ? FUN_004b5bf8 4b5cf0 2054 ? FUN_004b5cf0 4b6510 231 ? FUN_004b6510 @@ -5293,9 +5417,12 @@ 4b66b4 310 ? FUN_004b66b4 4b67ec 297 ? FUN_004b67ec 4b6918 249 ? FUN_004b6918 +4b6a1c 92 ? FUN_004b6a1c 4b6a78 141 ? FUN_004b6a78 4b6b0c 1196 ? FUN_004b6b0c +4b6fc0 44 ? FUN_004b6fc0 4b6fec 1751 ? FUN_004b6fec +4b7780 58 ? FUN_004b7780 4b77bc 81 ? FUN_004b77bc 4b7810 29 ? FUN_004b7810 4b7830 1672 ? FUN_004b7830 @@ -5304,6 +5431,7 @@ 4b816c 75 ? FUN_004b816c 4b81b8 27 ? FUN_004b81b8 4b81d4 435 ? FUN_004b81d4 +4b838c 43 ? FUN_004b838c 4b83b8 54 ? FUN_004b83b8 4b83f0 44 ? FUN_004b83f0 4b841c 189 ? FUN_004b841c @@ -5317,14 +5445,17 @@ 4b8794 61 ? FUN_004b8794 4b87d4 71 ? FUN_004b87d4 4b881c 27 ? FUN_004b881c +4b8a48 67 ? FUN_004b8a48 4b8a8c 21 ? FUN_004b8a8c 4b8aa4 25 ? FUN_004b8aa4 4b8ac0 210 ? FUN_004b8ac0 +4b8b9c 370 ? FUN_004b8b9c 4b8d18 458 ? FUN_004b8d18 4b8ef0 74 ? FUN_004b8ef0 4b8f3c 86 ? FUN_004b8f3c 4b8f94 86 ? FUN_004b8f94 4b8fec 291 ? FUN_004b8fec +4b9114 44 ? FUN_004b9114 4b9140 816 ? FUN_004b9140 4b9550 101 ? FUN_004b9550 4b95b8 50 ? FUN_004b95b8 @@ -5340,6 +5471,7 @@ 4b99a8 493 ? FUN_004b99a8 4b9b9c 61 ? FUN_004b9b9c 4b9bdc 188 ? FUN_004b9bdc +4b9c9c 32 ? FUN_004b9c9c 4b9cbc 32 ? FUN_004b9cbc 4b9cdc 36 ? FUN_004b9cdc 4b9d00 15 ? FUN_004b9d00 @@ -5356,23 +5488,31 @@ 4ba9a8 118 ? FUN_004ba9a8 4baa20 103 ? FUN_004baa20 4baa88 380 ? FUN_004baa88 +4bac0c 218 ? FUN_004bac0c 4bace8 718 ? FUN_004bace8 +4bafc8 75 ? FUN_004bafc8 4bb014 267 ? FUN_004bb014 4bb120 652 ? FUN_004bb120 4bb3c8 44 ? FUN_004bb3c8 4bb3f4 49 ? FUN_004bb3f4 +4bb42c 74 ? FUN_004bb42c 4bb478 798 ? FUN_004bb478 4bb878 15 ? FUN_004bb878 4bb888 43 ? FUN_004bb888 4bb8b4 44 ? FUN_004bb8b4 4bb8e0 75 ? FUN_004bb8e0 4bb92c 27 ? FUN_004bb92c +4bb9b8 294 ? FUN_004bb9b8 4bbae0 21 ? FUN_004bbae0 4bbaf8 87 ? FUN_004bbaf8 4bbb50 200 ? FUN_004bbb50 +4bbc20 85 ? FUN_004bbc20 4bbc78 133 ? FUN_004bbc78 +4bbd04 637 ? FUN_004bbd04 +4bbf88 67 ? FUN_004bbf88 4bbfcc 152 ? FUN_004bbfcc 4bc06c 145 ? FUN_004bc06c +4bc104 752 ? FUN_004bc104 4bc3fc 634 ? FUN_004bc3fc 4bc688 61 ? FUN_004bc688 4bc6c8 259 ? FUN_004bc6c8 @@ -5380,11 +5520,14 @@ 4bcabc 49 ? FUN_004bcabc 4bcbb0 31 ? FUN_004bcbb0 4bcbcf 44 ? FUN_004bcbcf +4bcbfc 60 ? FUN_004bcbfc +4bcc3c 33 ? FUN_004bcc3c 4bcc60 912 ? FUN_004bcc60 4bcff0 109 ? FUN_004bcff0 4bd060 44 ? FUN_004bd060 4bd08c 337 ? FUN_004bd08c 4bd1e0 27 ? FUN_004bd1e0 +4bd26c 82 ? FUN_004bd26c 4bd2c0 64 ? FUN_004bd2c0 4bd300 148 ? FUN_004bd300 4bd394 340 ? FUN_004bd394 @@ -5394,21 +5537,29 @@ 4bd6b0 61 ? FUN_004bd6b0 4bd6f0 1153 ? FUN_004bd6f0 4bdb94 107 ? FUN_004bdb94 +4bdca4 16 ? FUN_004bdca4 4bdcb4 51 ? FUN_004bdcb4 4bdce8 44 ? FUN_004bdce8 4bdd14 75 ? FUN_004bdd14 4bdd60 27 ? FUN_004bdd60 +4bddec 610 ? FUN_004bddec +4be058 29 ? FUN_004be058 4be078 6 ? FUN_004be078 4be07e 318 ? FUN_004be07e 4be1bc 411 ? FUN_004be1bc 4be358 44 ? FUN_004be358 4be384 46 ? FUN_004be384 4be3b4 27 ? FUN_004be3b4 +4be474 843 ? FUN_004be474 4be7c4 243 ? FUN_004be7c4 +4be8bc 44 ? FUN_004be8bc 4be8e8 27 ? FUN_004be8e8 +4be9a0 320 ? FUN_004be9a0 4beae4 307 ? FUN_004beae4 4bec34 521 ? FUN_004bec34 +4bee44 44 ? FUN_004bee44 4bee70 27 ? FUN_004bee70 +4bef28 36 ? FUN_004bef28 4bef4c 44 ? FUN_004bef4c 4bef78 1563 ? FUN_004bef78 4bf5b4 729 ? FUN_004bf5b4 @@ -5416,7 +5567,9 @@ 4bf8bc 46 ? FUN_004bf8bc 4bf8ec 570 ? FUN_004bf8ec 4bfb28 27 ? FUN_004bfb28 +4bfbe8 56 ? FUN_004bfbe8 4bfc20 129 ? FUN_004bfc20 +4bfcac 564 ? FUN_004bfcac 4bfee0 146 ? FUN_004bfee0 4bff74 41 ? FUN_004bff74 4bffa0 45 ? FUN_004bffa0 @@ -5426,16 +5579,22 @@ 4c02a8 57 bt/btplayer.cpp FUN_004c02a8 4c02e4 583 bt/btplayer.cpp FUN_004c02e4 4c052c 146 ? FUN_004c052c +4c05c4 619 ? FUN_004c05c4 4c083c 192 ? FUN_004c083c +4c0904 694 ? FUN_004c0904 4c0bc8 770 ? FUN_004c0bc8 4c0ecc 46 ? FUN_004c0ecc 4c0efc 44 ? FUN_004c0efc 4c0f28 27 ? FUN_004c0f28 +4c1011 49 ? FUN_004c1011 +4c1044 145 ? FUN_004c1044 4c10dc 48 ? FUN_004c10dc 4c110c 44 ? FUN_004c110c 4c1138 46 ? FUN_004c1138 4c1168 48 ? FUN_004c1168 4c1198 27 ? FUN_004c1198 +4c1230 414 ? FUN_004c1230 +4c13d4 49 ? FUN_004c13d4 4c1408 73 ? FUN_004c1408 4c1454 46 ? FUN_004c1454 4c1484 44 ? FUN_004c1484 @@ -5444,12 +5603,15 @@ 4c1564 44 ? FUN_004c1564 4c1590 94 ? FUN_004c1590 4c15f0 724 ? FUN_004c15f0 +4c18cc 40 ? FUN_004c18cc 4c18f4 40 ? FUN_004c18f4 4c191c 40 ? FUN_004c191c 4c1944 70 ? FUN_004c1944 4c198c 34 ? FUN_004c198c +4c19b0 73 ? FUN_004c19b0 4c19fc 177 ? FUN_004c19fc 4c1ab0 149 ? FUN_004c1ab0 +4c1b4c 215 ? FUN_004c1b4c 4c1c24 644 ? FUN_004c1c24 4c1ea8 134 ? FUN_004c1ea8 4c1f30 15 ? FUN_004c1f30 @@ -5553,6 +5715,7 @@ 4c431c 5 ? FUN_004c431c 4c4324 28 ? FUN_004c4324 4c4340 492 ? FUN_004c4340 +4c4534 248 ? FUN_004c4534 4c462c 246 ? FUN_004c462c 4c4724 327 ? FUN_004c4724 4c486c 90 ? FUN_004c486c @@ -5560,6 +5723,7 @@ 4c48d8 5 ? FUN_004c48d8 4c48e0 28 ? FUN_004c48e0 4c48fc 515 ? FUN_004c48fc +4c4b08 122 ? FUN_004c4b08 4c4b84 227 ? FUN_004c4b84 4c4c68 44 ? FUN_004c4c68 4c4c94 15 ? FUN_004c4c94 @@ -5591,6 +5755,7 @@ 4c58e8 41 ? FUN_004c58e8 4c5914 6 ? FUN_004c5914 4c591a 426 ? FUN_004c591a +4c5ad4 167 ? FUN_004c5ad4 4c5b7c 260 ? FUN_004c5b7c 4c5c80 90 ? FUN_004c5c80 4c5cdc 15 ? FUN_004c5cdc @@ -5603,10 +5768,13 @@ 4c5f9c 5 ? FUN_004c5f9c 4c5fa4 18 ? FUN_004c5fa4 4c5fb8 311 ? FUN_004c5fb8 +4c60f4 209 ? FUN_004c60f4 4c61c8 123 ? FUN_004c61c8 4c6244 142 ? FUN_004c6244 +4c62d8 33 ? FUN_004c62d8 4c62fc 149 ? FUN_004c62fc 4c6394 238 ? FUN_004c6394 +4c6488 148 ? FUN_004c6488 4c668d 38 ? FUN_004c668d 4c66b3 38 ? FUN_004c66b3 4c66d9 38 ? FUN_004c66d9 @@ -5665,6 +5833,7 @@ 4c8d54 5 ? FUN_004c8d54 4c8d5c 82 ? FUN_004c8d5c 4c8db0 61 ? FUN_004c8db0 +4c8df4 352 ? FUN_004c8df4 4c8f54 44 ? FUN_004c8f54 4c8f80 15 ? FUN_004c8f80 4c8f90 5 ? FUN_004c8f90 @@ -5704,6 +5873,7 @@ 4ca038 46 ? FUN_004ca038 4ca068 17 ? FUN_004ca068 4ca07c 280 ? FUN_004ca07c +4ca1a0 104 ? FUN_004ca1a0 4ca208 404 ? FUN_004ca208 4ca39c 109 ? FUN_004ca39c 4ca40c 15 ? FUN_004ca40c @@ -5737,6 +5907,7 @@ 4cb7fc 28 ? FUN_004cb7fc 4cb818 17 ? FUN_004cb818 4cb82c 583 ? FUN_004cb82c +4cbaf0 902 ? FUN_004cbaf0 4cbea0 157 ? FUN_004cbea0 4cbf40 77 ? FUN_004cbf40 4cbf90 15 ? FUN_004cbf90 @@ -5751,9 +5922,11 @@ 4cc294 102 ? FUN_004cc294 4cc2fc 272 ? FUN_004cc2fc 4cc40c 5096 ? FUN_004cc40c +4cd804 273 ? FUN_004cd804 4cd918 32 ? FUN_004cd918 4cd938 386 ? FUN_004cd938 4cdac0 549 bt_l4/btl4vid.cpp FUN_004cdac0 +4cdcf0 4467 ? FUN_004cdcf0 4ceecc 45 ? FUN_004ceecc 4ceefc 44 ? FUN_004ceefc 4cef28 6157 bt_l4/btl4vid.cpp FUN_004cef28 @@ -5781,6 +5954,7 @@ 4d195c 5 ? FUN_004d195c 4d1964 5 ? FUN_004d1964 4d196c 337 ? FUN_004d196c +4d1acc 21 ? FUN_004d1acc 4d1ae4 62 ? FUN_004d1ae4 4d1b24 61 ? FUN_004d1b24 4d1b64 45 ? FUN_004d1b64 @@ -5848,6 +6022,7 @@ 4d3c34 15 ? FUN_004d3c34 4d3c44 250 ? FUN_004d3c44 4d3d40 306 ? FUN_004d3d40 +4d3e78 38 ? FUN_004d3e78 4d3ea0 44 ? FUN_004d3ea0 4d3ecc 42 ? FUN_004d3ecc 4d3ef8 74 ? FUN_004d3ef8 @@ -5907,6 +6082,7 @@ 4d5506 63 ? FUN_004d5506 4d5545 68 ? FUN_004d5545 4d5593 112 ? FUN_004d5593 +4d5603 57 ? FUN_004d5603 4d563c 134 ? FUN_004d563c 4d56c2 92 ? FUN_004d56c2 4d571e 436 ? FUN_004d571e @@ -5951,6 +6127,7 @@ 4d6a1d 44 ? FUN_004d6a1d 4d6a50 5 ? thunk_FUN_004d92c4 4d6a58 5 ? thunk_FUN_004d87e8 +4d6a60 5 ? thunk_FUN_004d9304 4d6a68 5 ? thunk_FUN_004d9334 4d6a70 5 ? thunk_FUN_004d93ac 4d6a78 5 ? thunk_FUN_004d892c @@ -5967,6 +6144,7 @@ 4d6f54 41 ? FUN_004d6f54 4d6f80 30 ? FUN_004d6f80 4d6fa0 207 ? FUN_004d6fa0 +4d7070 62 ? FUN_004d7070 4d70b0 302 ? FUN_004d70b0 4d71e0 51 ? FUN_004d71e0 4d7214 90 ? FUN_004d7214 @@ -5996,6 +6174,7 @@ 4d80d0 38 ? FUN_004d80d0 4d80f8 52 ? FUN_004d80f8 4d812c 1529 ? FUN_004d812c +4d87d4 17 ? FUN_004d87d4 4d87e8 50 ? FUN_004d87e8 4d8834 138 ? FUN_004d8834 4d88c0 107 ? FUN_004d88c0 @@ -6032,9 +6211,14 @@ 4d9c70 19 ? FUN_004d9c70 4d9cc4 110 ? FUN_004d9cc4 4d9d34 121 ? FUN_004d9d34 +4d9db0 120 ? FUN_004d9db0 4d9e28 77 ? FUN_004d9e28 4d9e78 230 ? FUN_004d9e78 4d9f60 303 ? FUN_004d9f60 +4da090 117 ? FUN_004da090 +4da108 254 ? FUN_004da108 +4da208 247 ? FUN_004da208 +4da300 331 ? FUN_004da300 4da44c 53 ? FUN_004da44c 4da484 77 ? FUN_004da484 4da538 98 ? FUN_004da538 @@ -6091,28 +6275,42 @@ 4dbdbc 53 ? FUN_004dbdbc 4dbdf1 5 ? FUN_004dbdf1 4dbdf6 5 ? FUN_004dbdf6 +4dbdfc 91 ? FUN_004dbdfc 4dbe58 87 ? FUN_004dbe58 4dbeb0 148 ? FUN_004dbeb0 4dbf44 338 ? FUN_004dbf44 +4dc098 29 ? FUN_004dc098 +4dc0b8 287 ? FUN_004dc0b8 +4dc1d8 7 ? FUN_004dc1d8 +4dc1e0 126 ? FUN_004dc1e0 4dc260 91 ? FUN_004dc260 4dc2c8 90 ? FUN_004dc2c8 +4dc324 53 ? FUN_004dc324 4dc35c 74 ? FUN_004dc35c +4dc3a8 116 ? FUN_004dc3a8 4dc41c 112 ? FUN_004dc41c 4dc48c 57 ? FUN_004dc48c +4dc4c8 8 ? FUN_004dc4c8 4dc4d0 8 ? FUN_004dc4d0 4dc4d8 33 ? FUN_004dc4d8 4dc4fc 103 ? FUN_004dc4fc 4dc564 52 ? FUN_004dc564 4dc598 37 ? FUN_004dc598 +4dc5c0 8 ? FUN_004dc5c0 4dc5c8 27 ? FUN_004dc5c8 4dc5e4 65 ? FUN_004dc5e4 +4dc628 55 ? FUN_004dc628 +4dc660 30 ? FUN_004dc660 4dc680 60 ? FUN_004dc680 4dc6bc 27 ? FUN_004dc6bc 4dc6d8 54 ? FUN_004dc6d8 4dc710 40 ? FUN_004dc710 4dc738 65 ? FUN_004dc738 +4dc77c 88 ? FUN_004dc77c 4dc7d4 53 ? FUN_004dc7d4 4dc80c 42 ? FUN_004dc80c +4dc838 70 ? FUN_004dc838 +4dc880 5 ? FUN_004dc880 4dc888 5 ? FUN_004dc888 4dc89c 40 ? FUN_004dc89c 4dc8c4 40 ? FUN_004dc8c4 @@ -6136,14 +6334,17 @@ 4dcd2c 77 ? FUN_004dcd2c 4dcd7c 23 ? FUN_004dcd7c 4dcd94 37 ? FUN_004dcd94 +4dcdbc 45 ? FUN_004dcdbc 4dcdec 33 ? FUN_004dcdec 4dce10 17 ? FUN_004dce10 4dce24 109 ? FUN_004dce24 4dce94 474 ? FUN_004dce94 4dd070 37 ? FUN_004dd070 +4dd098 46 ? FUN_004dd098 4dd0c8 44 ? FUN_004dd0c8 4dd0f4 66 ? FUN_004dd0f4 4dd138 58 ? FUN_004dd138 +4dd174 19 ? FUN_004dd174 4dd188 66 ? FUN_004dd188 4dd1cc 19 ? FUN_004dd1cc 4dd1e0 92 ? FUN_004dd1e0 @@ -6156,6 +6357,7 @@ 4dd3ec 48 ? FUN_004dd3ec 4dd41c 29 ? FUN_004dd41c 4dd43c 37 ? FUN_004dd43c +4dd464 46 ? FUN_004dd464 4dd494 21 ? FUN_004dd494 4dd4b0 15 ? FUN_004dd4b0 4dd4c0 20 ? FUN_004dd4c0 @@ -6163,6 +6365,7 @@ 4dd53c 55 ? FUN_004dd53c 4dd574 638 ? FUN_004dd574 4dd7f4 22 ? FUN_004dd7f4 +4dd861 1048 ? FUN_004dd861 4ddc7c 112 ? FUN_004ddc7c 4ddd20 10 ? FUN_004ddd20 4ddd2c 101 ? FUN_004ddd2c @@ -6220,6 +6423,7 @@ 4df7cc 361 ? FUN_004df7cc 4df938 21 ? FUN_004df938 4df950 37 ? FUN_004df950 +4df97c 391 ? FUN_004df97c 4dfb04 276 ? FUN_004dfb04 4dfc18 374 ? FUN_004dfc18 4dfd90 12 ? FUN_004dfd90 @@ -6246,6 +6450,7 @@ 4dfe65 6 ? GetCommandLineA 4dfe6b 6 ? GetStdHandle 4dfe71 6 ? GetTickCount +4dfe77 6 ? GetTimeZoneInformation 4dfe7d 6 ? GetVersion 4dfe83 6 ? PeekConsoleInputA 4dfe89 6 ? RaiseException diff --git a/reference/decomp/gap_census.tsv b/reference/decomp/gap_census.tsv index 03e94ce..b9fb975 100644 --- a/reference/decomp/gap_census.tsv +++ b/reference/decomp/gap_census.tsv @@ -1,88 +1,45 @@ lo hi size code starts call_in visited tu -412e41 4146dc 6299 5936 412e6c,4142e8,4143ac,414418,4144b0,4146c4 0 munga/boxsolid.cpp|munga/iterator.cpp -4a9b5a 4ab188 5678 4957 4a9b5c 0 4a9b5a,4a9b5c,4a9b6c,4a9bff,4a9cb6,4a9cf0,4a9cf2,4a9d00,4a9d20,4a9d39,4a9d63,4a9d89,4a9d9e,4a9da4,4a9e80,4a9eb6,4a9f61,4a9f70,4aa007,4aa011,4aa0a9,4aa0af,4aa158,4aa254,4aa288,4aa2eb,4aa342,4aa388,4aa399,4aa3d3,4aa4ff,4aa505,4aa588,4aa5c6,4aa5e1,4aa5e6,4aa630,4aa633,4aa685,4aa6cf,4aa716,4aa741,4aa76c,4aa7ce,4aa81e,4aa86c,4aa89f,4aa8e2,4aa8f3,4aa984,4aaae2,4aab2f,4aab3a,4aab75,4aab9c,4aac2b,4aac6c,4aac88,4aad35,4aad3d,4aaf14,4aaf18,4aaf74,4aaf83,4aaf89,4aafab,4ab16c,4ab178,4ab184 bt/mech2.cpp|bt/heat.cpp -486467 487788 4897 4265 0 munga_l4/l4splr.cpp|bt/btmssn.cpp -49ffc8 4a1232 4714 4116 49ffcc,4a0164,4a0230,4a0c2c,4a122c 2 49ffc8,49ffcc,49ffde,49ffff,4a0027,4a0030,4a003c,4a0051,4a0065,4a006b,4a007d,4a0092,4a00b2,4a00d2,4a00f2,4a010a,4a0117,4a0121,4a0124,4a0148,4a0154,4a015c,4a0164,4a0208,4a0210,4a0218,4a0228,4a0230,4a0264,4a02f4,4a02fb,4a0300,4a0303,4a033c,4a034f,4a0358,4a0361,4a0368,4a036d,4a0375,4a037a,4a038c,4a0396,4a0423,4a0439,4a0450,4a0461,4a0473,4a0488,4a04b9,4a04cc,4a04d8,4a04da,4a0506,4a052b,4a05ce,4a05d9,4a06c0,4a06d2,4a07b2,4a07b5,4a07b8,4a07c0,4a07d4,4a07f6,4a0856,4a0887,4a0890,4a08bd,4a0aa8,4a0ac8,4a0ace,4a0ad6,4a0aef,4a0b21,4a0b33,4a0bda,4a0c2c,4a0c79,4a0d84,4a0e5b,4a0e9e,4a0fab,4a104d,4a10ff,4a117f,4a11cb,4a11d9,4a122c bt/btmssn.cpp|bt/mech.cpp -4cdce5 4ceecc 4583 3831 4cdcf0 0 4cdcf0,4cdd75,4cdd9d,4cddc1,4cde59,4cdede,4cdf6f,4ce2c2,4ce3e2,4ce6e0,4ce7e5,4ceb16,4cebf9,4cec12,4cec47,4cec98,4ced87,4cee64 bt_l4/btl4vid.cpp -4a68ce 4a71f4 2342 1822 4a6928,4a6d8c 0 4a6928,4a6989,4a69aa,4a69d6,4a6a06,4a6a38,4a6a6f,4a6aad,4a6ae2,4a6b21,4a6b37,4a6b4d,4a6b63,4a6b9d,4a6bdb,4a6c17,4a6c6e,4a6cc4,4a6d3d,4a6d6e,4a6d7f,4a6d8c,4a6de9,4a6e0a,4a6e36,4a6e66,4a6e9a,4a6ecc,4a6ed1,4a6f11,4a6f46,4a6f7b,4a6f85,4a6f9b,4a6fb1,4a6fc7,4a6ffc,4a7001,4a7041,4a7076,4a707d,4a712c,4a71d8,4a71e9 bt/mech2.cpp 4596ab 459eb8 2061 1795 0 4599ae munga_l4/l4vidrnd.cpp|munga_l4/l4video.cpp 480a2a 48116d 1859 1521 0 munga_l4/l4splr.cpp|bt/btmssn.cpp -42f3fe 42f9bc 1470 1341 42f404 0 munga/player.cpp|munga/explode.cpp 40c82a 40cdb4 1418 1322 0 munga/scalar.cpp|munga/boxsolid.cpp -464bf6 4651ac 1462 1312 464bfc,465140 0 munga_l4/l4audio.cpp|munga_l4/l4audlvl.cpp 40b68c 40bbe8 1372 1293 0 munga/scalar.cpp|munga/boxsolid.cpp 481f77 48255c 1509 1267 0 munga_l4/l4splr.cpp|bt/btmssn.cpp +486467 486a0e 1447 1252 0 munga_l4/l4splr.cpp|bt/btmssn.cpp 47ae1b 47b2ec 1233 1060 0 munga_l4/l4ctrl.cpp|munga_l4/l4app.cpp -4dd80a 4ddc7c 1138 1030 0 bt_l4/btl4app.cpp|? 405b1e 405f44 1062 972 0 munga/filestrm.hpp|munga/scalar.cpp 427fd0 4283b8 1000 931 0 munga/network.cpp|munga/watcher.cpp -4cba73 4cbea0 1069 904 4cbaf0 0 4cbaf0 bt_l4/btl4gaug.cpp|bt_l4/btl4vid.cpp -4be3cf 4be7c4 1013 897 4be474 0 4be474 bt/mechweap.hpp|bt/btplayer.cpp -4b297b 4b2d8c 1041 894 4b2980 1 4b2980,4b298c,4b299e,4b29bd,4b29d7,4b2a0d,4b2a43,4b2a4a,4b2a62,4b2a67,4b2aa8,4b2ac2,4b2ac7,4b2aed,4b2afd,4b2b10,4b2b3d,4b2b8a,4b2be3,4b2c2d,4b2c75,4b2d00,4b2d23,4b2d2b,4b2d4b,4b2d6e,4b2d80,4b2d84,4b2d88,4b2d8b bt/powersub.cpp|bt/mechweap.cpp -4da08f 4da44c 957 866 4da090,4da108,4da208,4da300 0 bt_l4/btl4app.cpp|? -4147f9 414b60 871 789 414800,41486c,414904,414b18 0 munga/boxsolid.cpp|munga/iterator.cpp 4d41ae 4d45b0 1026 765 0 bt_l4/btl4app.cpp|? -412940 412c78 824 760 412944,4129b0,412a48,412c60 0 munga/boxsolid.cpp|munga/iterator.cpp 4af691 4af9cf 830 707 0 bt/heat.cpp|bt/mechmppr.cpp -4bc0fd 4bc3fc 767 693 4bc104 0 4bc100,4bc104,4bc136,4bc194,4bc3f4,4bc3f8 bt/mechweap.hpp|bt/btplayer.cpp 4829ab 482c9f 756 687 0 munga_l4/l4splr.cpp|bt/btmssn.cpp -4bdd7b 4be078 765 673 4bdd7c,4bddbc,4bddec,4be058 0 bt/mechweap.hpp|bt/btplayer.cpp -4105ff 4108b4 693 635 410604,410688,410754,4108a0 0 munga/boxsolid.cpp|munga/iterator.cpp -487a27 487ca0 633 632 0 munga_l4/l4splr.cpp|bt/btmssn.cpp -4221b9 42249c 739 631 4221c0,422360 0 munga/network.cpp|munga/watcher.cpp -4c08fc 4c0bc8 716 613 4c0904 0 bt/btplayer.cpp|bt_l4/btl4rdr.cpp -4bbcfd 4bbfcc 719 607 4bbd04,4bbf88 0 4bbd04,4bbd12,4bbd1b,4bbd28,4bbd36,4bbd71,4bbd80,4bbda9,4bbdcd,4bbdd2,4bbdd9,4bbdea,4bbdf5,4bbe04,4bbe0c,4bbe1d,4bbe25,4bbe30,4bbe44,4bbe4d,4bbe54,4bbe65,4bbe76,4bbe85,4bbe8e,4bbe95,4bbea6,4bbeb1,4bbec2,4bbee6,4bbef4,4bbf05,4bbf0d,4bbf11,4bbf2a,4bbf34,4bbf41,4bbf4c,4bbf51,4bbf5f,4bbf88 bt/mechweap.hpp|bt/btplayer.cpp -4c05be 4c083c 638 552 4c05c4 0 4c05c0,4c05c4,4c05df,4c0611,4c062b,4c0632,4c0641,4c064d,4c0668,4c0670,4c0674,4c067a,4c06a4,4c06da,4c06dd,4c06e3,4c06e9,4c0701,4c072b,4c07cd,4c0828,4c0830 bt/btplayer.cpp|bt_l4/btl4rdr.cpp -4bfca1 4bfee0 575 535 4bfcac 0 4bfcac bt/mechweap.hpp|bt/btplayer.cpp +487a38 487ca0 616 615 0 munga_l4/l4splr.cpp|bt/btmssn.cpp 483b9b 483df0 597 520 0 munga_l4/l4splr.cpp|bt/btmssn.cpp -4b8837 4b8a8c 597 509 4b8838,4b8974,4b8a48 0 4b8837,4b8a48,4b8a50,4b8a5b,4b8a68,4b8a6f bt/powersub.cpp|bt/mechweap.cpp -4c11b3 4c1408 597 499 4c11b4,4c1200,4c1230,4c13d4 0 4c11b3,4c1230,4c13d4 bt/btplayer.cpp|bt_l4/btl4rdr.cpp -47b8e2 47bb20 574 488 47b8ec 0 munga_l4/l4app.cpp|munga_l4/l4splr.cpp 4d95b6 4d9800 586 487 0 bt_l4/btl4app.cpp|? 423202 423414 530 460 0 munga/network.cpp|munga/watcher.cpp 45472a 454924 506 451 0 munga_l4/l4vidrnd.cpp -4dc096 4dc260 458 432 4dc098,4dc0b8,4dc1d8,4dc1e0 0 bt_l4/btl4app.cpp|? -4c6482 4c668d 523 426 4c6488 0 4c6488 bt_l4/btl4gaug.cpp|bt_l4/btl4vid.cpp +4b8837 4b8a48 529 448 4b8838,4b8974 0 4b8837 bt/powersub.cpp|bt/mechweap.cpp 474671 474855 484 421 0 munga_l4/l4gauge.cpp|munga_l4/l4ctrl.cpp 4d2813 4d29fc 489 414 4d2814 0 bt_l4/btl4vid.cpp|bt_l4/btl4mssn.cpp 4816b2 48186d 443 404 0 munga_l4/l4splr.cpp|bt/btmssn.cpp -4be903 4beae4 481 396 4be904,4be960,4be9a0 0 4be9a0 bt/mechweap.hpp|bt/btplayer.cpp -45fa03 45fbf4 497 394 45fa08 0 45fb14 munga_l4/l4video.cpp -42ddc4 42df8c 456 391 42ddcc 0 munga/player.cpp|munga/explode.cpp -4551b8 4553ac 500 389 4551c0,455355 0 4551b8 munga_l4/l4vidrnd.cpp -49f84f 49fa00 433 381 49f854 0 49f854,49f88e,49f8cf bt/btmssn.cpp|bt/mech.cpp +42f80b 42f9bc 433 394 0 munga/player.cpp|munga/explode.cpp 443cf5 443e94 415 380 0 munga/watcher.hpp|munga/gauge.cpp -4df975 4dfb04 399 357 4df97c 0 bt_l4/btl4app.cpp|? -4c0f43 4c10dc 409 356 4c1008,4c1011,4c1044 0 bt/btplayer.cpp|bt_l4/btl4rdr.cpp -4109e2 410b5c 378 347 4109e8,410a94 0 munga/boxsolid.cpp|munga/iterator.cpp -4bb947 4bbae0 409 332 4bb948,4bb988,4bb9b8 0 4bb9b8,4bb9d0,4bba29,4bbabe,4bbacf bt/mechweap.hpp|bt/btplayer.cpp +4b2c11 4b2d8c 379 324 0 4b2c2d,4b2c75,4b2d00,4b2d23,4b2d2b,4b2d4b,4b2d6e,4b2d80,4b2d84,4b2d88,4b2d8b bt/powersub.cpp|bt/mechweap.cpp 4d993f 4d9c38 761 321 4d9940,4d997d,4d99c5,4d9a15,4d9a55,4d9a6b,4d9a8c,4d9aad,4d9ac5,4d9b2d,4d9b95,4d9be5 0 bt_l4/btl4app.cpp|? 4deec5 4df048 387 321 0 bt_l4/btl4app.cpp|? -4ab9c8 4abb40 376 318 4ab9d8 0 4ab9d8,4aba86,4abab9 bt/mech2.cpp|bt/heat.cpp +4c651c 4c668d 369 318 0 bt_l4/btl4gaug.cpp|bt_l4/btl4vid.cpp 409c41 409d9c 347 312 0 munga/scalar.cpp|munga/boxsolid.cpp -4c8ded 4c8f54 359 311 4c8df4 1 4c8df4 bt_l4/btl4gaug.cpp|bt_l4/btl4vid.cpp -4b1a3b 4b1bb1 374 308 4b1a40 0 4b1a40 bt/powersub.cpp|bt/mechweap.cpp 484ed6 485020 330 307 0 munga_l4/l4splr.cpp|bt/btmssn.cpp 43223f 4323a8 361 306 0 munga/explode.cpp|munga/registry.cpp -4b8b92 4b8d18 390 305 4b8b9c 0 4b8b9a,4b8b9c,4b8bab,4b8bb9,4b8be3,4b8bf0,4b8c0f,4b8c16,4b8c1b,4b8c1e,4b8c5a,4b8ce8,4b8ceb,4b8d0d bt/powersub.cpp|bt/mechweap.cpp -47bc11 47bd48 311 284 47bc14,47bccc 0 munga_l4/l4app.cpp|munga_l4/l4splr.cpp 40f6a7 40f7d8 305 283 0 munga/boxsolid.cpp|munga/iterator.cpp -410070 4101a0 304 279 41007c,410180 0 munga/boxsolid.cpp|munga/iterator.cpp -4310c3 431200 317 267 4310c4,431170,4311dc 0 munga/explode.cpp|munga/registry.cpp -4b1e33 4b1f7c 329 258 4b1e34,4b1e90,4b1ed0 0 4b1ed0 bt/powersub.cpp|bt/mechweap.cpp +4b1a84 4b1bb1 301 251 0 bt/powersub.cpp|bt/mechweap.cpp 481565 481675 272 247 0 munga_l4/l4splr.cpp|bt/btmssn.cpp -44e5a2 44e6c0 286 246 44e5a8 0 munga/app.cpp -4cd7f4 4cd918 292 244 4cd804 0 bt_l4/btl4gaug.cpp|bt_l4/btl4vid.cpp 45888e 4589a0 274 241 0 munga_l4/l4vidrnd.cpp 4d2016 4d2150 314 241 0 bt_l4/btl4vid.cpp|bt_l4/btl4mssn.cpp 466ac2 466bc4 258 235 0 munga_l4/l4audwtr.cpp|munga_l4/l4audres.cpp +4310c3 4311dc 281 234 4310c4,431170 0 munga/explode.cpp|munga/registry.cpp 466702 466804 258 234 0 munga_l4/l4audwtr.cpp|munga_l4/l4audres.cpp 484076 48416d 247 229 0 munga_l4/l4splr.cpp|bt/btmssn.cpp 480899 4809ba 289 222 0 munga_l4/l4splr.cpp|bt/btmssn.cpp 483e86 483f75 239 213 0 munga_l4/l4splr.cpp|bt/btmssn.cpp -4b76c3 4b77bc 249 201 4b7780 0 4b7780 bt/powersub.cpp|bt/mechweap.cpp -4c452c 4c462c 256 201 4c4534 0 bt_l4/btl4gaug.cpp|bt_l4/btl4vid.cpp -4bac04 4bace8 228 199 4bac0c 0 4bac0c bt/mechweap.hpp|bt/btplayer.cpp 42e630 42e718 232 198 42e650,42e6cc 0 munga/player.cpp|munga/explode.cpp 4b9470 4b9550 224 193 0 bt/powersub.cpp|bt/mechweap.cpp 41d9ec 41dac6 218 192 41da5c 0 munga/network.cpp|munga/watcher.cpp @@ -90,75 +47,53 @@ lo hi size code starts call_in visited tu 4ba379 4ba45c 227 192 4ba39c,4ba410 0 bt/mechweap.cpp|bt/mechweap.hpp 4036af 403798 233 190 0 munga/filestrm.hpp|munga/scalar.cpp 4bb796 4bb878 226 190 0 bt/mechweap.hpp|bt/btplayer.cpp -42c936 42ca20 234 188 42c93c 0 munga/cammgr.cpp|munga/player.cpp -4825f5 4826d1 220 187 0 munga_l4/l4splr.cpp|bt/btmssn.cpp 4063ee 4064bc 206 186 0 munga/filestrm.hpp|munga/scalar.cpp 40cee4 40cfb8 212 186 0 munga/scalar.cpp|munga/boxsolid.cpp -40a66e 40a738 202 185 40a67c 1 munga/scalar.cpp|munga/boxsolid.cpp -4424e9 4425af 198 185 4424ef 0 munga/watcher.hpp|munga/gauge.cpp -468476 46853c 198 185 46847c 0 munga_l4/l4audrnd.cpp|munga_l4/l4gauge.cpp -470c15 470cfc 231 184 470c1c 0 munga_l4/l4audrnd.cpp|munga_l4/l4gauge.cpp -4bfb43 4bfc20 221 184 4bfb44,4bfba8,4bfbe8 0 4bfbe8 bt/mechweap.hpp|bt/btplayer.cpp 4851da 4852b1 215 183 0 munga_l4/l4splr.cpp|bt/btmssn.cpp -4328f7 4329d4 221 179 4328f8,432944,432974 0 munga/explode.cpp|munga/registry.cpp -4b5b1e 4b5bf8 218 178 4b5b44,4b5ba0,4b5be0 0 4b5be0 bt/powersub.cpp|bt/mechweap.cpp +4c0f43 4c1011 206 175 4c1008 0 bt/btplayer.cpp|bt_l4/btl4rdr.cpp 481e2b 481eff 212 174 0 munga_l4/l4splr.cpp|bt/btmssn.cpp -4d8725 4d87e8 195 174 4d87d4 0 bt_l4/btl4app.cpp|? 4a4c97 4a4d60 201 173 4a4c98,4a4d14 0 bt/mech.cpp|bt/mech2.cpp -4c60ef 4c61c8 217 173 4c60f4 0 bt_l4/btl4gaug.cpp|bt_l4/btl4vid.cpp 42a087 42a150 201 172 42a088,42a104 0 munga/hostmgr.cpp|munga/caminst.cpp 42d1f7 42d2c0 201 172 0 munga/cammgr.cpp|munga/player.cpp 420d90 420e58 200 171 420d90 0 munga/network.cpp|munga/watcher.cpp 433153 433220 205 170 0 munga/explode.cpp|munga/registry.cpp -4c1b45 4c1c24 223 170 4c1b4c 0 bt/btplayer.cpp|bt_l4/btl4rdr.cpp 40793f 4079fc 189 165 0 munga/filestrm.hpp|munga/scalar.cpp 42d53f 42d600 193 165 42d540,42d5b4 0 munga/cammgr.cpp|munga/player.cpp 4bcaed 4bcbb0 195 165 0 bt/mechweap.hpp|bt/btplayer.cpp 41a2be 41a37f 193 164 41a324 0 munga/hash.cpp|munga/event.cpp 4b08db 4b099c 193 164 4b08dc,4b0950 0 bt/mechmppr.cpp|bt/powersub.cpp -44475e 444818 186 163 444764 0 munga/gauge.cpp|munga/lamp.cpp -4bd1fb 4bd2c0 197 163 4bd1fc,4bd23c,4bd26c 0 4bd26c,4bd271 bt/mechweap.hpp|bt/btplayer.cpp -4bee8b 4bef4c 193 163 4bef28 0 bt/mechweap.hpp|bt/btplayer.cpp 409145 4091f4 175 160 0 munga/scalar.cpp|munga/boxsolid.cpp 409747 4097f4 173 160 0 munga/scalar.cpp|munga/boxsolid.cpp -4acee9 4acfa9 192 159 0 4acf10 bt/mech2.cpp|bt/heat.cpp +4acee9 4acfa9 192 159 0 4acf10 bt/mech4.cpp|bt/heat.cpp +4d8725 4d87d4 175 159 0 bt_l4/btl4app.cpp|? 495fbe 496078 186 157 0 munga_l4/l4splr.cpp|bt/btmssn.cpp +4b5b1e 4b5be0 194 157 4b5b44,4b5ba0 0 bt/powersub.cpp|bt/mechweap.cpp 47f761 47f807 166 156 0 munga_l4/l4splr.cpp|bt/btmssn.cpp 405f51 406018 199 155 0 munga/filestrm.hpp|munga/scalar.cpp +4b76c3 4b7780 189 155 0 bt/powersub.cpp|bt/mechweap.cpp 4d7fcb 4d8080 181 155 0 bt_l4/btl4app.cpp|? 41c378 41c42c 180 153 41c378 0 munga/cmpnnt.cpp|munga/network.cpp 4a2cae 4a2d48 154 147 0 4a2d44 bt/mech.cpp|bt/mech2.cpp -43d723 43d7bc 153 146 43d730 0 munga/audseq.cpp|munga/audwthr.cpp -422f35 422fe0 171 145 422f44 0 munga/network.cpp|munga/watcher.cpp 44de75 44df10 155 144 44de78,44de8c,44dea0,44deb8,44ded0,44dee8,44defc 0 munga/controls.cpp|munga/app.cpp -4bdbff 4bdcb4 181 142 4bdca4 0 4bdca4 bt/mechweap.hpp|bt/btplayer.cpp -4c5ac4 4c5b7c 184 141 4c5ad4 0 4c5ac8 bt_l4/btl4gaug.cpp|bt_l4/btl4vid.cpp -42c58b 42c630 165 139 42c58c 0 42c611 munga/cammgr.cpp|munga/player.cpp 4d68ba 4d6958 158 139 0 bt_l4/btl4app.cpp|? -47a999 47aa48 175 138 47a9bc 0 munga_l4/l4ctrl.cpp|munga_l4/l4app.cpp 423ce3 423d88 165 137 0 munga/network.cpp|munga/watcher.cpp 42855f 428601 162 137 428560,4285c4 0 munga/network.cpp|munga/watcher.cpp 42f07f 42f121 162 136 0 munga/player.cpp|munga/explode.cpp -411950 4119dc 140 133 411958 0 munga/boxsolid.cpp|munga/iterator.cpp -411b54 411be0 140 133 411b5c 0 munga/boxsolid.cpp|munga/iterator.cpp +4be3cf 4be474 165 136 0 bt/mechweap.hpp|bt/btplayer.cpp +4bfb43 4bfbe8 165 136 4bfb44,4bfba8 0 bt/mechweap.hpp|bt/btplayer.cpp 42f9d7 42fa79 162 133 42f9d8,42fa3c 0 munga/player.cpp|munga/explode.cpp -41215a 4121e8 142 132 412164 0 munga/boxsolid.cpp|munga/iterator.cpp -412367 4123f4 141 132 412370 0 munga/boxsolid.cpp|munga/iterator.cpp -41256e 4125fc 142 132 412578 0 munga/boxsolid.cpp|munga/iterator.cpp -411178 411200 136 131 41117c 0 munga/boxsolid.cpp|munga/iterator.cpp -41136c 4113f4 136 131 411370 0 munga/boxsolid.cpp|munga/iterator.cpp -411d4d 411ddc 143 131 411d58 0 munga/boxsolid.cpp|munga/iterator.cpp -411f52 411fe0 142 131 411f5c 0 munga/boxsolid.cpp|munga/iterator.cpp -41277b 412808 141 131 412784 0 munga/boxsolid.cpp|munga/iterator.cpp 46d5ec 46d694 168 131 0 munga_l4/l4audrnd.cpp|munga_l4/l4gauge.cpp -41155e 4115e8 138 129 411564 0 munga/boxsolid.cpp|munga/iterator.cpp -41174d 4117d8 139 129 411754 0 munga/boxsolid.cpp|munga/iterator.cpp +4b1e33 4b1ed0 157 129 4b1e34,4b1e90 0 bt/powersub.cpp|bt/mechweap.cpp +4bdbff 4bdca4 165 129 0 bt/mechweap.hpp|bt/btplayer.cpp +4bee8b 4bef28 157 129 0 bt/mechweap.hpp|bt/btplayer.cpp +4be903 4be9a0 157 128 4be904,4be960 0 bt/mechweap.hpp|bt/btplayer.cpp 422b1d 422bac 143 126 0 munga/network.cpp|munga/watcher.cpp -4ad57f 4ad619 154 126 4ad580,4ad5dc 0 bt/mech2.cpp|bt/heat.cpp +4ad57f 4ad619 154 126 4ad580,4ad5dc 0 bt/mech4.cpp|bt/heat.cpp 44df5b 44dfe0 133 124 0 munga/controls.cpp|munga/app.cpp 479aee 479b78 138 123 0 munga_l4/l4ctrl.cpp|munga_l4/l4app.cpp 4d160b 4d168c 129 119 0 bt_l4/btl4vid.cpp|bt_l4/btl4mssn.cpp 481202 481286 132 118 0 munga_l4/l4splr.cpp|bt/btmssn.cpp +47bcc9 47bd48 127 116 47bccc 0 munga_l4/l4app.cpp|munga_l4/l4splr.cpp 42943c 4294c1 133 115 0 munga/hostmgr.cpp|munga/caminst.cpp 433895 433920 139 115 433898,4338e0 0 munga/registry.cpp|munga/intorgn.cpp 4366e1 436769 136 115 0 munga/renderer.cpp|munga/audio.cpp @@ -170,179 +105,129 @@ lo hi size code starts call_in visited tu 4d3ae9 4d3b74 139 115 4d3b34 0 bt_l4/btl4app.cpp|? 4d40f3 4d4179 134 115 4d40f4 0 bt_l4/btl4app.cpp|? 4db2ed 4db428 315 115 4db2ed,4db34d,4db3a5,4db411,4db41b 0 bt_l4/btl4app.cpp|? -4dc3a6 4dc41c 118 115 4dc3a8 0 bt_l4/btl4app.cpp|? 4352f0 435375 133 114 0 munga/interest.cpp|munga/renderer.cpp 47d528 47d5a2 122 113 0 munga_l4/l4splr.cpp|bt/btmssn.cpp -463b3b 463bbc 129 111 463b60 0 munga_l4/l4audio.cpp -474542 4745e0 158 111 474550 0 munga_l4/l4gauge.cpp|munga_l4/l4ctrl.cpp 48128b 48130d 130 110 0 munga_l4/l4splr.cpp|bt/btmssn.cpp 40a742 40a7c0 126 109 40a744 0 munga/scalar.cpp|munga/boxsolid.cpp 437360 4373e8 136 107 0 munga/audio.cpp|munga/audlvl.cpp -4b2140 4b21d0 144 105 4b215c 0 4b2154,4b2158,4b215c,4b2164,4b2194,4b219f bt/powersub.cpp|bt/mechweap.cpp +4cba73 4cbaf0 125 105 0 bt_l4/btl4gaug.cpp|bt_l4/btl4vid.cpp 4d769d 4d771c 127 104 0 bt_l4/btl4app.cpp|? -4d9dad 4d9e28 123 104 4d9db0 3 bt_l4/btl4app.cpp|? 47f5a7 47f629 130 103 0 munga_l4/l4splr.cpp|bt/btmssn.cpp -49e80e 49e880 114 103 49e814 0 49e814 bt/btmssn.cpp|bt/mech.cpp -49f367 49f3d5 110 102 49f36d 0 bt/btmssn.cpp|bt/mech.cpp 42d913 42d990 125 101 0 munga/cammgr.cpp|munga/player.cpp +4328f7 432974 125 101 4328f8,432944 0 munga/explode.cpp|munga/registry.cpp 4c14cb 4c1548 125 101 0 bt/btplayer.cpp|bt_l4/btl4rdr.cpp 4308cf 43094a 123 100 0 munga/explode.cpp|munga/registry.cpp -46416b 4641e0 117 100 464178 0 munga_l4/l4audio.cpp +4c11b3 4c1230 125 100 4c11b4,4c1200 0 4c11b3 bt/btplayer.cpp|bt_l4/btl4rdr.cpp 47d390 47d3fd 109 99 0 munga_l4/l4splr.cpp|bt/btmssn.cpp -4c4aff 4c4b84 133 95 4c4b08 0 4c4b08 bt_l4/btl4gaug.cpp|bt_l4/btl4vid.cpp 41ca44 41cab2 110 93 41ca84 0 munga/cmpnnt.cpp|munga/network.cpp -4ae45e 4ae4d8 122 93 4ae464 0 4ae464,4ae497,4ae499,4ae4a5,4ae4b1,4ae4bd bt/heat.cpp|bt/mechmppr.cpp +4bd1fb 4bd26c 113 93 4bd1fc,4bd23c 0 bt/mechweap.hpp|bt/btplayer.cpp 41d27b 41d2ea 111 92 41d27c 0 munga/cmpnnt.cpp|munga/network.cpp -464818 46487c 100 92 464824 0 munga_l4/l4audio.cpp -4ca194 4ca208 116 92 4ca1a0 0 4ca194 bt_l4/btl4gaug.cpp|bt_l4/btl4vid.cpp +4bdd7b 4bddec 113 92 4bdd7c,4bddbc 0 bt/mechweap.hpp|bt/btplayer.cpp +4bb947 4bb9b8 113 91 4bb948,4bb988 0 bt/mechweap.hpp|bt/btplayer.cpp 49bf6f 49bfde 111 90 0 bt/btmssn.cpp|bt/mech.cpp 4da822 4da914 242 90 4da822,4da88a,4da894,4da89e,4da8a8 0 bt_l4/btl4app.cpp|? 4de3b9 4de420 103 86 0 bt_l4/btl4app.cpp|? +41427a 4142e8 110 85 0 munga/boxsolid.cpp|munga/iterator.cpp 4d7c7d 4d7cd8 91 84 0 bt_l4/btl4app.cpp|? -4dc625 4dc680 91 84 4dc628,4dc660 0 bt_l4/btl4app.cpp|? -4b6a11 4b6a78 103 82 4b6a1c 0 4b6a1c bt/powersub.cpp|bt/mechweap.cpp -4dc779 4dc7d4 91 81 4dc77c 2 bt_l4/btl4app.cpp|? -4bafb6 4bb014 94 80 4bafc8 0 4bafbc,4bafc8 bt/mechweap.hpp|bt/btplayer.cpp 41b8fb 41b956 91 79 41b928 0 munga/cmpnnt.cpp|munga/network.cpp +44255a 4425af 85 79 0 munga/watcher.hpp|munga/gauge.cpp 450004 45005e 90 79 0 munga/icom.cpp|munga_l4/l4net.cpp +4684e7 46853c 85 79 0 munga_l4/l4audrnd.cpp|munga_l4/l4gauge.cpp 47d002 47d062 96 79 47d008,47d034 0 munga_l4/l4splr.cpp|bt/btmssn.cpp 491bd6 491c2c 86 79 0 munga_l4/l4splr.cpp|bt/btmssn.cpp -4dbdfb 4dbe58 93 79 4dbdfc 0 bt_l4/btl4app.cpp|? 477a31 477a8e 93 78 477a34,477a60 0 munga_l4/l4ctrl.cpp|munga_l4/l4app.cpp 40a8de 40a938 90 77 0 munga/scalar.cpp|munga/boxsolid.cpp 42134f 4213aa 91 77 421350,42137c 0 munga/network.cpp|munga/watcher.cpp -4bcbfb 4bcc60 101 77 4bcbfc,4bcc3c 0 4bcc3c,4bcc4e bt/mechweap.hpp|bt/btplayer.cpp -4bbc18 4bbc78 96 76 4bbc20 0 4bbc20 bt/mechweap.hpp|bt/btplayer.cpp -4bb425 4bb478 83 74 4bb42c 0 4bb428,4bb42c bt/mechweap.hpp|bt/btplayer.cpp +4cee63 4ceecc 105 77 0 4cee64 bt_l4/btl4vid.cpp 40a482 40a4d8 86 73 0 munga/scalar.cpp|munga/boxsolid.cpp 40f2ac 40f2f8 76 72 0 munga/scalar.cpp|munga/boxsolid.cpp -4a7ef6 4a7f50 90 71 0 bt/mech2.cpp|bt/heat.cpp +4a68ce 4a6928 90 72 0 bt/mech2.cpp +4a7ef6 4a7f50 90 71 0 bt/mech2.cpp|bt/mech4.cpp 4d6621 4d66b8 151 69 4d6670 0 bt_l4/btl4app.cpp|? -4dc836 4dc888 82 69 4dc838,4dc880 3 bt_l4/btl4app.cpp|? 40aa51 40aaa0 79 68 0 munga/scalar.cpp|munga/boxsolid.cpp -4c19ae 4c19fc 78 68 4c19b0 0 bt/btplayer.cpp|bt_l4/btl4rdr.cpp 4dd4ed 4dd53c 79 67 0 bt_l4/btl4app.cpp|? 40a1e3 40a22c 73 66 0 munga/scalar.cpp|munga/boxsolid.cpp -4ad6f5 4ad748 83 65 4ad6f8 0 4ad6f8,4ad700,4ad70d,4ad714,4ad722,4ad728,4ad731 bt/mech2.cpp|bt/heat.cpp +4dd80a 4dd861 87 65 0 bt_l4/btl4app.cpp|? +4a6d39 4a6d8c 83 64 0 4a6d3d,4a6d6e,4a6d7f bt/mech2.cpp +4a71a3 4a71f4 81 64 0 4a71d8,4a71e9 bt/mech2.cpp 44c6ba 44c6fc 66 63 44c6bc 0 munga/controls.cpp|munga/app.cpp 488c3d 488c80 67 63 0 munga_l4/l4splr.cpp|bt/btmssn.cpp -4d706f 4d70b0 65 62 4d7070 4 bt_l4/btl4app.cpp|? 40c129 40c170 71 61 0 munga/scalar.cpp|munga/boxsolid.cpp 44ca29 44ca72 73 61 0 munga/controls.cpp|munga/app.cpp 47d4c8 47d517 79 61 0 munga_l4/l4splr.cpp|bt/btmssn.cpp 4a5bad 4a5bf8 75 61 0 bt/mech2.cpp 4a62f8 4a6344 76 61 0 bt/mech2.cpp -4af518 4af564 76 60 4af524 0 bt/heat.cpp|bt/mechmppr.cpp 4d0735 4d0774 63 60 0 bt_l4/btl4vid.cpp 408b51 408b98 71 59 408b54 0 munga/scalar.cpp|munga/boxsolid.cpp 4a562f 4a5678 73 59 0 bt/mech2.cpp -4a7924 4a7970 76 59 0 4a7924 bt/mech2.cpp|bt/heat.cpp +4a7924 4a7970 76 59 0 4a7924 bt/mech2.cpp|bt/mech4.cpp 4082d7 40831c 69 58 0 munga/scalar.cpp|munga/boxsolid.cpp -4ae971 4ae9c0 79 58 4ae980 0 bt/heat.cpp|bt/mechmppr.cpp 409f1b 409f58 61 57 0 munga/scalar.cpp|munga/boxsolid.cpp -4aee28 4aee70 72 57 4aee2c 0 4aee2c bt/heat.cpp|bt/mechmppr.cpp 40edc5 40ee00 59 54 0 munga/scalar.cpp|munga/boxsolid.cpp 47f864 47f8a2 62 54 0 munga_l4/l4splr.cpp|bt/btmssn.cpp 4890c4 4890fc 56 54 0 munga_l4/l4splr.cpp|bt/btmssn.cpp 492110 492150 64 54 0 munga_l4/l4splr.cpp|bt/btmssn.cpp -43dfc8 43e004 60 53 43dfcc 0 munga/audwthr.cpp -43e2a8 43e2e4 60 53 43e2ac 0 munga/audwthr.cpp 4d9c83 4d9cc4 65 52 0 bt_l4/btl4app.cpp|? -4d5603 4d563c 57 51 4d5603 6 bt_l4/btl4app.cpp|? -4b025f 4b029c 61 48 4b0280 0 4b0280 bt/heat.cpp|bt/mechmppr.cpp 4da6d3 4da754 129 48 4da6d3,4da73f,4da749 0 bt_l4/btl4app.cpp|? 4db06c 4db0ec 128 48 4db06c,4db0d8,4db0e2 0 bt_l4/btl4app.cpp|? 40df2d 40df68 59 47 0 munga/scalar.cpp|munga/boxsolid.cpp 47a48f 47a4cc 61 47 0 munga_l4/l4ctrl.cpp|munga_l4/l4app.cpp 47edac 47eddd 49 47 0 munga_l4/l4splr.cpp|bt/btmssn.cpp -4adcfa 4add30 54 47 4add00 0 4add00 bt/mech2.cpp|bt/heat.cpp -4b6fb8 4b6fec 52 47 4b6fc0 0 4b6fc0 bt/powersub.cpp|bt/mechweap.cpp 4ded5f 4deda4 69 47 4ded60 0 bt_l4/btl4app.cpp|? -458688 4586bc 52 46 458690 0 munga_l4/l4vidrnd.cpp 45d397 45d3cc 53 46 0 munga_l4/l4video.cpp -4be8b7 4be8e8 49 46 4be8bc 0 4be8b8,4be8bc bt/mechweap.hpp|bt/btplayer.cpp -42eb06 42eb38 50 45 42eb08 0 munga/player.cpp|munga/explode.cpp -456526 456558 50 45 45652c 0 munga_l4/l4vidrnd.cpp -4dcdb9 4dcdec 51 45 4dcdbc 1 bt_l4/btl4app.cpp|? -457103 457138 53 44 45710c 0 munga_l4/l4vidrnd.cpp -45773f 457770 49 44 457744 0 munga_l4/l4vidrnd.cpp 49013c 49016c 48 44 0 munga_l4/l4splr.cpp|bt/btmssn.cpp -4ae530 4ae568 56 44 4ae534 0 4ae534 bt/heat.cpp|bt/mechmppr.cpp -4b910f 4b9140 49 44 4b9114 0 4b9114 bt/powersub.cpp|bt/mechweap.cpp -4bee3d 4bee70 51 44 4bee44 0 4bee44 bt/mechweap.hpp|bt/btplayer.cpp 4ddcec 4ddd20 52 44 4ddcec 0 bt_l4/btl4app.cpp|? -40ddf3 40de34 65 43 40ddf8,40de28 0 munga/scalar.cpp|munga/boxsolid.cpp 446fa7 446fdc 53 43 0 munga/gaugrend.cpp -4563c9 4563fc 51 43 4563d0 0 munga_l4/l4vidrnd.cpp 4c9b9b 4c9bd0 53 43 4c9b9c 0 bt_l4/btl4gaug.cpp|bt_l4/btl4vid.cpp 4cc0b0 4cc0e1 49 43 4cc0b0 0 bt_l4/btl4gaug.cpp|bt_l4/btl4vid.cpp -4dc322 4dc35c 58 43 4dc324 0 bt_l4/btl4app.cpp|? -41f56e 41f59c 46 42 41f570 0 munga/network.cpp|munga/watcher.cpp 47d932 47d962 48 42 0 munga_l4/l4splr.cpp|bt/btmssn.cpp 4d6997 4d69d0 57 42 4d69a4,4d69bc 0 bt_l4/btl4app.cpp|? 4093ff 40942c 45 41 0 munga/scalar.cpp|munga/boxsolid.cpp 43bcf0 43bd20 48 41 0 munga/audsrc.cpp -465cda 465d08 46 41 465cdc 0 munga_l4/l4audlvl.cpp|munga_l4/l4audwtr.cpp 48c271 48c2a0 47 41 0 munga_l4/l4splr.cpp|bt/btmssn.cpp -49f6f6 49f728 50 41 49f700 0 49f700 bt/btmssn.cpp|bt/mech.cpp -4dd095 4dd0c8 51 41 4dd098 1 bt_l4/btl4app.cpp|? 44425e 444290 50 40 0 munga/gauge.cpp -46055c 460590 52 40 460564 1 munga_l4/l4video.cpp 4941b6 4941e4 46 40 0 munga_l4/l4splr.cpp|bt/btmssn.cpp -4b8387 4b83b8 49 40 4b838c 0 4b838c,4b83b0 bt/powersub.cpp|bt/mechweap.cpp 4da4d1 4da538 103 40 4da4d1,4da52d 0 bt_l4/btl4app.cpp|? -4dd461 4dd494 51 40 4dd464 0 bt_l4/btl4app.cpp|? -47c34f 47c380 49 39 47c358 0 munga_l4/l4app.cpp|munga_l4/l4splr.cpp +414b2e 414b60 50 39 0 munga/boxsolid.cpp|munga/iterator.cpp 48c1c0 48c1f0 48 39 0 munga_l4/l4splr.cpp|bt/btmssn.cpp -4d3e72 4d3ea0 46 39 4d3e78 0 bt_l4/btl4app.cpp|? +4cbe76 4cbea0 42 39 0 bt_l4/btl4gaug.cpp|bt_l4/btl4vid.cpp 402344 402370 44 38 402344 0 munga/heap.cpp|munga/cstr.cpp 40eb36 40eb64 46 38 40eb38,40eb54 0 munga/scalar.cpp|munga/boxsolid.cpp 40ee0a 40ee38 46 38 0 munga/scalar.cpp|munga/boxsolid.cpp -4360dc 43610c 48 38 4360e4 0 munga/interest.cpp|munga/renderer.cpp +412e41 412e6c 43 38 0 munga/boxsolid.cpp|munga/iterator.cpp 47e58a 47e5c1 55 38 0 munga_l4/l4splr.cpp|bt/btmssn.cpp 496d36 496d68 50 38 0 munga_l4/l4splr.cpp|bt/btmssn.cpp -4ae89b 4ae8d0 53 38 4ae8b0 0 4ae8b0 bt/heat.cpp|bt/mechmppr.cpp 4d7ee5 4d7f10 43 38 0 bt_l4/btl4app.cpp|? 417edd 417f0c 47 37 417efc 0 munga/socket.cpp|munga/sfeskt.cpp 41858d 4185bc 47 37 418590 0 munga/srtskt.cpp|munga/vchain.cpp 41b65a 41b688 46 37 41b65c 0 munga/event.cpp|munga/cmpnnt.cpp 497ae7 497b18 49 37 0 munga_l4/l4splr.cpp|bt/btmssn.cpp +4a1201 4a122c 43 37 0 bt/mech.cpp 417aca 417af8 46 36 417acc 0 munga/socket.cpp|munga/sfeskt.cpp 4423fe 44242c 46 36 442400,44241c 0 munga/watcher.hpp|munga/gauge.cpp 447110 447138 40 36 0 munga/gaugrend.cpp 4472c1 4472ec 43 36 0 munga/gaugrend.cpp|munga/gaugalrm.cpp 47d5e7 47d61b 52 36 0 munga_l4/l4splr.cpp|bt/btmssn.cpp -49ecff 49ed28 41 36 49ed0c 2 49ed0c bt/btmssn.cpp|bt/mech.cpp -4a164a 4a1674 42 36 0 bt/btmssn.cpp|bt/mech.cpp +4a164a 4a1674 42 36 0 bt/mech.cpp 4c8115 4c8140 43 36 0 bt_l4/btl4gaug.cpp|bt_l4/btl4vid.cpp 43597a 4359a8 46 35 43597c,435998 0 munga/interest.cpp|munga/renderer.cpp 447682 4476ac 42 35 0 munga/gaugrend.cpp|munga/gaugalrm.cpp 45435f 454394 53 35 0 munga_l4/l4vidrnd.cpp -460811 460840 47 35 460820 0 munga_l4/l4video.cpp 49463e 494668 42 35 0 munga_l4/l4splr.cpp|bt/btmssn.cpp -4c18c4 4c18f4 48 35 4c18cc 1 bt/btplayer.cpp|bt_l4/btl4rdr.cpp 446c11 446c3c 43 34 0 munga/gaugrend.cpp 4713b3 4713e0 45 34 4713b4 0 munga_l4/l4audrnd.cpp|munga_l4/l4gauge.cpp 4cc242 4cc264 34 34 0 bt_l4/btl4gaug.cpp|bt_l4/btl4vid.cpp -401073 40109c 41 33 401074 1 ?|munga/heap.cpp 40aab2 40aadc 42 33 40aab4 0 munga/scalar.cpp|munga/boxsolid.cpp 44aa90 44aab0 32 32 0 munga/graph2d.cpp 46b6b4 46b6d4 32 32 0 munga_l4/l4audrnd.cpp|munga_l4/l4gauge.cpp 481501 481528 39 32 0 munga_l4/l4splr.cpp|bt/btmssn.cpp -43f87f 43f8ab 44 31 43f883 0 munga/audwthr.hpp -43fd9e 43fdca 44 31 43fda2 0 munga/audwthr.hpp|munga/watcher.hpp 4d45f8 4d461f 39 31 0 bt_l4/btl4app.cpp|? 408c95 408cbc 39 30 0 munga/scalar.cpp|munga/boxsolid.cpp -410e99 410ec8 47 30 410eb0 0 munga/boxsolid.cpp|munga/iterator.cpp 4d1bcb 4d1bf0 37 30 0 bt_l4/btl4vid.cpp|bt_l4/btl4mssn.cpp 4d6290 4d62b7 39 30 0 bt_l4/btl4app.cpp|? -42e0dc 42e100 36 29 42e0e0 0 munga/player.cpp|munga/explode.cpp -440faf 440fdb 44 29 440fb3 0 munga/audwthr.hpp -472a9a 472ac4 42 29 472aa8 0 munga_l4/l4audrnd.cpp|munga_l4/l4gauge.cpp +463b3b 463b60 37 29 0 munga_l4/l4audio.cpp 446843 446860 29 28 0 munga/gaugrend.cpp -475a31 475a54 35 28 475a38 0 munga_l4/l4ctrl.cpp 4bca9a 4bcabc 34 28 0 bt/mechweap.hpp|bt/btplayer.cpp -4d1abd 4d1ae4 39 28 4d1acc 0 4d1acc bt_l4/btl4vid.cpp|bt_l4/btl4mssn.cpp 4464b4 4464d4 32 27 0 munga/gaugrend.cpp 494de1 494e00 31 27 0 munga_l4/l4splr.cpp|bt/btmssn.cpp 4bdb71 4bdb94 35 27 0 bt/mechweap.hpp|bt/btplayer.cpp @@ -351,34 +236,29 @@ lo hi size code starts call_in visited tu 41d886 41d8a8 34 26 0 munga/network.cpp 432431 432450 31 26 0 munga/explode.cpp|munga/registry.cpp 4693c0 4693e0 32 26 0 munga_l4/l4audrnd.cpp|munga_l4/l4gauge.cpp -4b9c98 4b9cbc 36 26 4b9c9c 0 4b9c9c bt/mechweap.cpp|bt/mechweap.hpp -4c62d2 4c62fc 42 26 4c62d8 0 bt_l4/btl4gaug.cpp|bt_l4/btl4vid.cpp 4d918a 4d91ac 34 26 0 bt_l4/btl4app.cpp|? 429939 42995c 35 25 0 munga/hostmgr.cpp|munga/caminst.cpp +4b025f 4b0280 33 25 0 bt/mechmppr.cpp 401bc9 401be8 31 24 401bdc 0 ?|munga/heap.cpp 4284ee 428508 26 24 0 munga/network.cpp|munga/watcher.cpp 45e727 45e744 29 24 0 munga_l4/l4video.cpp 45f584 45f59c 24 24 0 munga_l4/l4video.cpp -49f603 49f624 33 24 49f604 0 49f604 bt/btmssn.cpp|bt/mech.cpp -4b177c 4b179c 32 24 4b1780 0 4b1780 bt/powersub.cpp|bt/mechweap.cpp 41cca5 41ccc0 27 23 0 munga/cmpnnt.cpp|munga/network.cpp 43af9a 43afbc 34 23 0 munga/audcmp.cpp|munga/audsrc.cpp +47a999 47a9bc 35 23 0 munga_l4/l4ctrl.cpp|munga_l4/l4app.cpp 4965e2 496600 30 23 0 munga_l4/l4splr.cpp|bt/btmssn.cpp -4ae707 4ae724 29 23 4ae70c 0 bt/heat.cpp|bt/mechmppr.cpp -4afbc2 4afbe0 30 23 4afbc4 0 4afbc4 bt/heat.cpp|bt/mechmppr.cpp 432bfb 432c18 29 22 0 munga/explode.cpp|munga/registry.cpp 47008e 4700ac 30 22 470090 0 munga_l4/l4audrnd.cpp|munga_l4/l4gauge.cpp 47cc87 47cca0 25 22 0 munga_l4/l4splr.cpp|bt/btmssn.cpp 47df60 47df82 34 22 0 munga_l4/l4splr.cpp|bt/btmssn.cpp 4c2a02 4c2a1d 27 22 4c2a04 0 bt_l4/btl4rdr.cpp|bt_l4/btl4gaug.cpp 496bff 496c18 25 21 0 munga_l4/l4splr.cpp|bt/btmssn.cpp -4aeedc 4aeef8 28 21 4aeee0 0 bt/heat.cpp|bt/mechmppr.cpp 4d5cc7 4d5cdf 24 21 0 bt_l4/btl4app.cpp|? 4d881a 4d8834 26 21 0 bt_l4/btl4app.cpp|? +4a0206 4a0230 42 20 0 4a0208,4a0210,4a0218,4a0228 bt/btmssn.cpp|bt/mech.cpp 4657ae 4657c9 27 19 0 munga_l4/l4audio.cpp|munga_l4/l4audlvl.cpp 4b375a 4b3778 30 19 0 bt/powersub.cpp|bt/mechweap.cpp 4bb3ac 4bb3c8 28 19 0 bt/mechweap.hpp|bt/btplayer.cpp -4dd172 4dd188 22 19 4dd174 1 bt_l4/btl4app.cpp|? 40d1f8 40d210 24 18 0 munga/scalar.cpp|munga/boxsolid.cpp 41dd52 41dd68 22 18 0 munga/network.cpp|munga/watcher.cpp 46312b 463148 29 18 0 munga_l4/l4audhdw.cpp|munga_l4/l4audio.cpp @@ -391,9 +271,13 @@ lo hi size code starts call_in visited tu 48d03c 48d050 20 17 0 munga_l4/l4splr.cpp|bt/btmssn.cpp 4913d9 4913f0 23 17 0 munga_l4/l4splr.cpp|bt/btmssn.cpp 49b533 49b54c 25 17 0 munga_l4/l4splr.cpp|bt/btmssn.cpp +4b2140 4b215c 28 17 0 4b2154,4b2158 bt/powersub.cpp|bt/mechweap.cpp 4bf593 4bf5b4 33 17 0 4bf594,4bf5b0 bt/mechweap.hpp|bt/btplayer.cpp 4dafc2 4dafd8 22 17 0 bt_l4/btl4app.cpp|? 45a93f 45a954 21 16 0 munga_l4/l4vidrnd.cpp|munga_l4/l4video.cpp +4a0145 4a0164 31 16 0 4a0148,4a0154,4a015c bt/btmssn.cpp|bt/mech.cpp +4a0c05 4a0c2c 39 16 0 bt/mech.cpp +4ab169 4ab188 31 16 0 4ab16c,4ab178,4ab184 bt/mech4.cpp|bt/heat.cpp 4b1398 4b13ac 20 16 0 bt/powersub.cpp|bt/mechweap.cpp 4b7eb8 4b7ed4 28 16 0 bt/powersub.cpp|bt/mechweap.cpp 4d5d37 4d5d4b 20 16 0 bt_l4/btl4app.cpp|? @@ -409,21 +293,30 @@ lo hi size code starts call_in visited tu 4da9e0 4da9f4 20 13 4da9e0,4da9ea 0 bt_l4/btl4app.cpp|? 4dec26 4dec40 26 13 0 bt_l4/btl4app.cpp|? 49c509 49c51c 19 12 0 49c514 bt/btmssn.cpp|bt/mech.cpp -4ad870 4ad884 20 12 0 bt/mech2.cpp|bt/heat.cpp +4ad870 4ad884 20 12 0 bt/mech4.cpp|bt/heat.cpp 4ba818 4ba838 32 12 0 bt/mechweap.hpp|bt/btplayer.cpp 4d3ba7 4d3bb8 17 12 4d3ba8 0 4d3ba8 bt_l4/btl4app.cpp|? -40dda1 40ddb8 23 11 40ddac 0 munga/scalar.cpp|munga/boxsolid.cpp 40ea57 40ea6c 21 11 0 munga/scalar.cpp|munga/boxsolid.cpp 427d82 427d92 16 11 0 munga/network.cpp|munga/watcher.cpp 43743b 43744c 17 11 43743c,437448 0 munga/audio.cpp|munga/audlvl.cpp +4bafb6 4bafc8 18 11 0 4bafbc bt/mechweap.hpp|bt/btplayer.cpp 4bc676 4bc688 18 11 0 bt/mechweap.hpp|bt/btplayer.cpp 443ec6 443edc 22 10 0 munga/watcher.hpp|munga/gauge.cpp -448533 448548 21 10 448538 0 munga/gaugrend.cpp|munga/gaugalrm.cpp 47a0d3 47a0e8 21 10 0 munga_l4/l4ctrl.cpp|munga_l4/l4app.cpp +4ae89b 4ae8b0 21 10 0 bt/heat.cpp|bt/mechmppr.cpp 41e57b 41e590 21 9 0 munga/network.cpp|munga/watcher.cpp +46512a 465140 22 9 0 munga_l4/l4audio.cpp|munga_l4/l4audlvl.cpp 476e23 476e34 17 9 0 munga_l4/l4ctrl.cpp 4bec17 4bec34 29 9 0 4bec18,4bec24,4bec28 bt/mechweap.hpp|bt/btplayer.cpp +4cd7f4 4cd804 16 9 0 bt_l4/btl4gaug.cpp|bt_l4/btl4vid.cpp 4de29d 4de2bc 31 9 0 bt_l4/btl4app.cpp|? +410e99 410eb0 23 8 0 munga/boxsolid.cpp|munga/iterator.cpp +412c4b 412c60 21 8 0 munga/boxsolid.cpp|munga/iterator.cpp +4146b0 4146c4 20 8 0 munga/boxsolid.cpp|munga/iterator.cpp +414b04 414b18 20 8 0 munga/boxsolid.cpp|munga/iterator.cpp +410741 410754 19 7 0 munga/boxsolid.cpp|munga/iterator.cpp 479fbf 479fd0 17 7 0 munga_l4/l4ctrl.cpp|munga_l4/l4app.cpp +4ab9c8 4ab9d8 16 7 0 bt/mech4.cpp|bt/heat.cpp +4c5ac4 4c5ad4 16 7 0 4c5ac8 bt_l4/btl4gaug.cpp|bt_l4/btl4vid.cpp 4af39f 4af3b0 17 4 0 4af3a0 bt/heat.cpp|bt/mechmppr.cpp 4dfeef 4e0000 273 0 0 bt_l4/btl4app.cpp|? diff --git a/reference/decomp/gapfill_report.tsv b/reference/decomp/gapfill_report.tsv new file mode 100644 index 0000000..9f04e23 --- /dev/null +++ b/reference/decomp/gapfill_report.tsv @@ -0,0 +1,206 @@ +addr evidence round +00412e6c census 1 +004142e8 census 1 +004143ac census 1 +00414418 census 1 +004144b0 census 1 +004146c4 census 1 +004a9b5c census 1 +0049ffcc census 1 +004a0164 census 1 +004a0230 census 1 +004a0c2c census 1 +004a122c census 1 +004cdcf0 census 1 +004a6928 census 1 +004a6d8c census 1 +0042f404 census 1 +00464bfc census 1 +00465140 census 1 +004cbaf0 census 1 +004be474 census 1 +004b2980 census 1 +004da090 census 1 +004da108 census 1 +004da208 census 1 +004da300 census 1 +00414800 census 1 +0041486c census 1 +00414904 census 1 +00414b18 census 1 +00412944 census 1 +004129b0 census 1 +00412a48 census 1 +00412c60 census 1 +004bc104 census 1 +004bddec census 1 +004be058 census 1 +00410604 census 1 +00410688 census 1 +00410754 census 1 +004108a0 census 1 +004221c0 census 1 +00422360 census 1 +004c0904 census 1 +004bbd04 census 1 +004bbf88 census 1 +004c05c4 census 1 +004bfcac census 1 +004b8a48 census 1 +004c1230 census 1 +004c13d4 census 1 +0047b8ec census 1 +004dc098 census 1 +004dc0b8 census 1 +004dc1d8 census 1 +004dc1e0 census 1 +004c6488 census 1 +004be9a0 census 1 +0045fa08 census 1 +0042ddcc census 1 +004551c0 census 1 +0049f854 census 1 +004df97c census 1 +004c1011 census 1 +004c1044 census 1 +004109e8 census 1 +00410a94 census 1 +004bb9b8 census 1 +004ab9d8 census 1 +004c8df4 census 1 +004b1a40 census 1 +004b8b9c census 1 +0047bc14 census 1 +0041007c census 1 +004311dc census 1 +004b1ed0 census 1 +0044e5a8 census 1 +004cd804 census 1 +004b7780 census 1 +004c4534 census 1 +004bac0c census 1 +0042c93c census 1 +0040a67c census 1 +004424ef census 1 +0046847c census 1 +00470c1c census 1 +004bfbe8 census 1 +00432974 census 1 +004b5be0 census 1 +004d87d4 census 1 +004c60f4 census 1 +004c1b4c census 1 +00444764 census 1 +004bd26c census 1 +004bef28 census 1 +0043d730 census 1 +00422f44 census 1 +004bdca4 census 1 +004c5ad4 census 1 +0042c58c census 1 +0047a9bc census 1 +00411958 census 1 +00411b5c census 1 +00412164 census 1 +00412370 census 1 +00412578 census 1 +0041117c census 1 +00411370 census 1 +00411d58 census 1 +00411f5c census 1 +00412784 census 1 +00411564 census 1 +00411754 census 1 +004dc3a8 census 1 +00463b60 census 1 +00474550 census 1 +004b215c census 1 +004d9db0 census 1 +0049e814 census 1 +0049f36d census 1 +00464178 census 1 +004c4b08 census 1 +004ae464 census 1 +00464824 census 1 +004ca1a0 census 1 +004dc628 census 1 +004dc660 census 1 +004b6a1c census 1 +004dc77c census 1 +004bafc8 census 1 +004dbdfc census 1 +004bcbfc census 1 +004bcc3c census 1 +004bbc20 census 1 +004bb42c census 1 +004dc838 census 1 +004dc880 census 1 +004c19b0 census 1 +004ad6f8 census 1 +004d7070 census 1 +004af524 census 1 +004ae980 census 1 +004aee2c census 1 +0043dfcc census 1 +0043e2ac census 1 +004d5603 census 1 +004b0280 census 1 +004add00 census 1 +004b6fc0 census 1 +00458690 census 1 +004be8bc census 1 +0042eb08 census 1 +0045652c census 1 +004dcdbc census 1 +0045710c census 1 +00457744 census 1 +004ae534 census 1 +004b9114 census 1 +004bee44 census 1 +0040ddf8 census 1 +0040de28 census 1 +004563d0 census 1 +004dc324 census 1 +0041f570 census 1 +00465cdc census 1 +0049f700 census 1 +004dd098 census 1 +00460564 census 1 +004b838c census 1 +004dd464 census 1 +0047c358 census 1 +004d3e78 census 1 +004360e4 census 1 +004ae8b0 census 1 +0049ed0c census 1 +00460820 census 1 +004c18cc census 1 +00401074 census 1 +0043f883 census 1 +0043fda2 census 1 +00410eb0 census 1 +0042e0e0 census 1 +00440fb3 census 1 +00472aa8 census 1 +00475a38 census 1 +004d1acc census 1 +004b9c9c census 1 +004c62d8 census 1 +0049f604 census 1 +004b1780 census 1 +004ae70c census 1 +004afbc4 census 1 +004aeee0 census 1 +004dd174 census 1 +0040ddac census 1 +00448538 census 1 +00419bb4 dataptr 1 +0042ec34 dataptr 1 +004dc4c8 dataptr 1 +004dc5c0 dataptr 1 +004825f5 call 1 +00486a0e call 1 +00492c0a call 1 +004d6a60 call 1 +004dd861 call 1 +004dfe77 call 1 diff --git a/reference/decomp/vtables.tsv b/reference/decomp/vtables.tsv index 8c1c6d2..f064f61 100644 --- a/reference/decomp/vtables.tsv +++ b/reference/decomp/vtables.tsv @@ -1,25 +1,10 @@ +004e0044 40109c 403678 4dd464 004e03b0 4016bf 418434 418448 41845c 418470 4184dc 4016eb 4016fa 401709 401718 418484 4184a4 4184c4 4184fc 401727 40173a 40174d 401760 418530 41854c 418570 401636 417d9c 417db0 417dc4 417dd8 417e44 4016eb 4016fa 401709 401718 417dec 417e0c 417e2c 417e64 401727 40173a 40174d 401760 417e98 417ebc 4015ad 417c74 401562 417a80 401517 418434 418448 41845c 418470 4184dc 4016eb 4016fa 401709 401718 418484 4184a4 4184c4 4184fc 401727 40173a 40174d 401760 418530 41854c 418570 40148e 419564 419578 419590 4195ac 419640 4016eb 4016fa 401709 401718 4195c0 4195f4 419620 41964c 401727 40173a 40174d 401760 419674 4178b0 419704 419698 418164 401424 419564 419578 419590 4195ac 419640 4016eb 4016fa 401709 401718 4195c0 4195f4 419620 41964c 401727 40173a 40174d 401760 419674 4178b0 419704 419698 418164 4013ba 419564 419578 419590 4195ac 419640 4016eb 4016fa 401709 401718 4195c0 4195f4 419620 41964c 401727 40173a 40174d 401760 419674 4178b0 419704 419698 418164 401350 419564 419578 419590 4195ac 419640 4016eb 4016fa 401709 401718 4195c0 4195f4 419620 41964c 401727 40173a 40174d 401760 419674 4178b0 419704 419698 418164 4012e6 419564 419578 419590 4195ac 419640 4016eb 4016fa 401709 401718 4195c0 4195f4 419620 41964c 401727 40173a 40174d 401760 419674 4178b0 419704 419698 418164 004e08e4 403428 403433 403446 403454 403344 403465 403473 403104 4033d0 403428 403481 403446 403454 403494 403465 403473 403104 403134 004e09e0 403642 403481 40365d 403588 403494 4035a8 4035cc 4035f0 403614 004e0b1c 403dcc 403df8 403c90 403a80 403a48 403a80 -004e1590 40ff8c 40ffd4 40ffec 410004 -004e15a4 40ffbc 40f2f8 40f304 40eea8 -004e15c4 40f324 40f2f8 40f304 410530 410560 -004e15e8 40f2f8 40f304 4108e4 410914 -004e1608 40f2f8 40f304 411630 411660 4116ac 4116f4 -004e1624 4117d8 40f2f8 40f304 41143c 41146c 4114b8 411504 -004e1644 4115e8 40f2f8 40f304 411248 411278 4112c4 411310 -004e1664 4113f4 40f2f8 40f304 411054 411084 4110d0 41111c -004e1684 411200 40f2f8 40f304 411e24 411e54 411ea0 411eec -004e16a4 411fe0 40f2f8 40f304 411c28 411c58 411ca0 411ce8 -004e16c4 411ddc 40f2f8 40f304 411a24 411a54 411aa0 411aec -004e16e4 411be0 40f2f8 40f304 411820 411850 41189c 4118e8 -004e1704 4119dc 40f2f8 40f304 412644 412674 4126c0 41270c -004e1724 412808 40f2f8 40f304 41243c 41246c 4124b8 412500 -004e1744 4125fc 40f2f8 40f304 412230 412260 4122ac 4122f8 -004e1764 4123f4 40f2f8 40f304 412028 412058 4120a4 4120ec -004e1784 4121e8 40f2f8 40f304 41470c 41473c -004e17a8 40f2f8 40f304 412ca8 +004e11ac 40def8 40ddac 40ddb8 40ddc4 40ddf8 40de28 40db34 40ddac 40ddb8 40ddc4 40ddf8 40de28 +004e1590 40ff8c 40ffd4 40ffec 410004 41007c 40ffbc 40f2f8 40f304 40eea8 40ddac 40ddb8 40ddc4 40ddf8 40f324 40f2f8 40f304 410530 410560 410604 410688 410754 4108a0 40f2f8 40f304 4108e4 410914 4109e8 410a94 410b80 410eb0 40f2f8 40f304 411630 411660 4116ac 4116f4 411754 4117d8 40f2f8 40f304 41143c 41146c 4114b8 411504 411564 4115e8 40f2f8 40f304 411248 411278 4112c4 411310 411370 4113f4 40f2f8 40f304 411054 411084 4110d0 41111c 41117c 411200 40f2f8 40f304 411e24 411e54 411ea0 411eec 411f5c 411fe0 40f2f8 40f304 411c28 411c58 411ca0 411ce8 411d58 411ddc 40f2f8 40f304 411a24 411a54 411aa0 411aec 411b5c 411be0 40f2f8 40f304 411820 411850 41189c 4118e8 411958 4119dc 40f2f8 40f304 412644 412674 4126c0 41270c 412784 412808 40f2f8 40f304 41243c 41246c 4124b8 412500 412578 4125fc 40f2f8 40f304 412230 412260 4122ac 4122f8 412370 4123f4 40f2f8 40f304 412028 412058 4120a4 4120ec 412164 4121e8 40f2f8 40f304 41470c 41473c 414800 41486c 414904 414b18 40f2f8 40f304 412ca8 4142e8 4143ac 414418 4144b0 4146c4 412cd8 412e6c 412850 412880 412944 4129b0 412a48 412c60 40f2f8 40f304 004e1b28 4157e1 4187a4 4187bc 418878 41593f 41580d 41585a 41569c 4187a4 4187bc 418878 41596f 4156c8 4156f7 41564d 418fa4 418fc4 418fcc 419010 419030 4016eb 4016fa 401709 401718 415d38 415d5c 419018 415da0 401727 40173a 40174d 401760 419078 4178b0 4190c8 419098 418164 41554c 418c44 418c5c 418c94 41599f 415578 4155c5 4154e8 414bfc 004e1dc4 415c80 415cac 415cc8 415ce4 415d00 415d1c 4016eb 4016fa 401709 401718 415d38 415d5c 415d80 415da0 401727 40173a 40174d 401760 415e04 004e1e48 415f90 415fd0 415fe8 41601c 416034 4160c0 4016eb 4016fa 401709 401718 41604c 416078 4160a4 4160ec 401727 40173a 40174d 401760 415ed8 @@ -42,51 +27,33 @@ 004e3634 41d3d2 419564 419578 419590 4195ac 419640 4016eb 4016fa 401709 401718 4195c0 4195f4 419620 41964c 401727 40173a 40174d 401760 419674 4178b0 419704 419698 418164 41d30d 419228 419240 41927c 41d3fe 41d339 41d368 41d1dc 4173b8 417938 41b956 419c90 41c018 41bd34 41c500 41c800 41cab2 41cacd 41cad2 41cf40 004e3918 41d6a8 4173b8 417938 41b956 419c90 41d59c 41d7a8 41d7e8 41d9a4 41d5f0 41d66c 41dac6 41dacb 41d9b0 41d9d0 41d554 4173b8 417938 41b956 419c90 41d59c 004e3b64 41f4f1 418434 418448 41845c 418470 4184dc 4016eb 4016fa 401709 401718 418484 4184a4 4184c4 4184fc 401727 40173a 40174d 401760 418530 41854c 418570 41f468 41830c 41f3c2 419228 419240 41927c 41f51d 41f3ee 41f41d 41f373 418434 418448 41845c 418470 4184dc 4016eb 4016fa 401709 401718 418484 4184a4 4184c4 4184fc 401727 40173a 40174d 401760 418530 41854c 418570 41f2ea 41830c 41f29f 419564 419578 419590 4195ac 419640 4016eb 4016fa 401709 401718 4195c0 4195f4 419620 41964c 401727 40173a 40174d 401760 419674 4178b0 419704 419698 418164 41f235 419564 419578 419590 4195ac 419640 4016eb 4016fa 401709 401718 4195c0 4195f4 419620 41964c 401727 40173a 40174d 401760 419674 4178b0 419704 419698 418164 41e394 4173b8 417938 41f54d 41ddd8 41dd98 41e4e0 41db20 -004e4278 420508 4173b8 417938 41f59c -004e428c 41fc58 41f76c 41f680 420e58 420e6e 4206d4 420754 420e84 403428 403433 403446 403454 403344 403465 403473 403104 419e60 +004e4278 420508 4173b8 417938 41f59c 41f570 41fc58 41f76c 41f680 420e58 420e6e 4206d4 420754 420e84 403428 403433 403446 403454 403344 403465 403473 403104 419e60 004e435c 421452 417d9c 417db0 417dc4 417dd8 417e44 4016eb 4016fa 401709 401718 417dec 417e0c 417e2c 417e64 401727 40173a 40174d 401760 417e98 417ebc 4213c9 417c74 421154 4173b8 417938 41b956 419c90 42120c 4210d8 4173b8 417938 004e4414 421584 418434 418448 41845c 418470 4184dc 4016eb 4016fa 401709 401718 418484 4184a4 4184c4 4184fc 401727 40173a 40174d 401760 418530 41854c 418570 421534 418434 418448 41845c 418470 4184dc 4016eb 4016fa 401709 401718 418484 4184a4 4184c4 4184fc 401727 40173a 40174d 401760 418530 41854c 418570 4214c4 418434 418448 41845c 418470 4184dc 4016eb 4016fa 401709 401718 418484 4184a4 4184c4 4184fc 401727 40173a 40174d 401760 418530 41854c 418570 421ad4 421b12 -004e4950 423c18 4173b8 417938 41f59c -004e4968 42249c 4225a4 423dd3 423df4 4206d4 420754 420e84 422684 422fe0 +004e4950 423c18 4173b8 417938 41f59c 41f570 422360 42249c 4225a4 423dd3 423df4 4206d4 420754 420e84 422684 422fe0 422f44 004e49bc 424982 418978 41898c 4189a0 4189b4 418a20 4016eb 4016fa 401709 401718 4189c8 4189e8 418a08 418a40 401727 40173a 40174d 401760 418a74 4178b0 418ac0 418a90 418164 42489e 419228 419240 41927c 4249ae 4248ca 4248f9 42484f 419564 419578 419590 4195ac 419640 4016eb 4016fa 401709 401718 4195c0 4195f4 419620 41964c 401727 40173a 40174d 401760 419674 4178b0 419704 419698 418164 42478a 419228 419240 41927c 4249de 4247b6 4247e5 42473b 42468f 419228 419240 41927c 424a0e 4246bb 4246ea 42454a 4187a4 4187bc 418878 424a3e 424576 4245a5 4240c4 423e6c -004e4fb0 428620 417a80 4278d4 425550 4173b8 417938 41f59c -004e4fd4 42249c 4225a4 423dd3 423df4 4206d4 420754 420e84 422684 422fe0 +004e4fb0 428620 417a80 4278d4 425550 4173b8 417938 41f59c 41f570 422360 42249c 4225a4 423dd3 423df4 4206d4 420754 420e84 422684 422fe0 422f44 004e52e4 42864c 4173b8 417938 41b956 419c90 41b8c4 428a5c 004e5348 428d5c 418434 418448 41845c 418470 4184dc 4016eb 4016fa 401709 401718 418484 4184a4 4184c4 4184fc 401727 40173a 40174d 401760 418530 41854c 418570 428cd3 41830c 428c88 418434 418448 41845c 418470 4184dc 4016eb 4016fa 401709 401718 418484 4184a4 4184c4 4184fc 401727 40173a 40174d 401760 418530 41854c 418570 428c38 418434 418448 41845c 418470 4184dc 4016eb 4016fa 401709 401718 418484 4184a4 4184c4 4184fc 401727 40173a 40174d 401760 418530 41854c 418570 428be8 418434 418448 41845c 418470 4184dc 4016eb 4016fa 401709 401718 418484 4184a4 4184c4 4184fc 401727 40173a 40174d 401760 418530 41854c 418570 428ad8 4173b8 417938 004e56cc 429694 4187a4 4187bc 418878 4297d6 4296c0 4296ff 4295fc 419854 41986c 4198b0 429628 429657 4295a9 419564 419578 419590 4195ac 419640 4016eb 4016fa 401709 401718 4195c0 4195f4 419620 41964c 401727 40173a 40174d 401760 419674 4178b0 419704 419698 418164 4294e4 419228 419240 41927c 429806 429510 42953f 429410 419564 419578 419590 4195ac 419640 4016eb 4016fa 401709 401718 4195c0 4195f4 419620 41964c 401727 40173a 40174d 401760 419674 4178b0 419704 419698 418164 4293c0 419564 419578 419590 4195ac 419640 4016eb 4016fa 401709 401718 4195c0 4195f4 419620 41964c 401727 40173a 40174d 401760 419674 4178b0 419704 419698 418164 429370 418434 418448 41845c 418470 4184dc 4016eb 4016fa 401709 401718 418484 4184a4 4184c4 4184fc 401727 40173a 40174d 401760 418530 41854c 418570 429320 418434 418448 41845c 418470 4184dc 4016eb 4016fa 401709 401718 418484 4184a4 4184c4 4184fc 401727 40173a 40174d 401760 418530 41854c 418570 4292d0 418434 418448 41845c 418470 4184dc 4016eb 4016fa 401709 401718 418484 4184a4 4184c4 4184fc 401727 40173a 40174d 401760 418530 41854c 418570 428df8 4173b8 417938 41b956 419c90 41d59c 004e5ac8 429ba8 4173b8 417938 -004e5bb8 429f30 4173b8 417938 41f59c -004e5bcc 41fc58 41f76c 41f680 420e58 420e6e 4206d4 420754 420e84 429e9c +004e5bb8 429f30 4173b8 417938 41f59c 41f570 41fc58 41f76c 41f680 420e58 420e6e 4206d4 420754 420e84 429e9c 004e5cd4 42ac79 417d9c 417db0 417dc4 417dd8 417e44 4016eb 4016fa 401709 401718 417dec 417e0c 417e2c 417e64 401727 40173a 40174d 401760 417e98 417ebc 42ab95 419228 419240 41927c 42aca5 42abc1 42abf0 42a9f4 4173b8 417938 41b956 419c90 42aa2c 42a7cc 419228 419240 41927c 42aca5 42abc1 42abf0 42a334 004e6198 42ba4e 42ba3c 42b1d0 42b550 004e621c 42c55f 418434 418448 41845c 418470 4184dc 4016eb 4016fa 401709 401718 418484 4184a4 4184c4 4184fc 401727 40173a 40174d 401760 418530 41854c 418570 42c4d6 41830c -004e6360 42d19c 4173b8 417938 41f59c -004e6378 42249c 4225a4 423dd3 423df4 4206d4 420754 420e84 422684 422fe0 +004e6360 42d19c 4173b8 417938 41f59c 41f570 422360 42249c 4225a4 423dd3 423df4 4206d4 420754 420e84 422684 422fe0 422f44 004e65d4 42d4f8 4173b8 417938 41b956 419c90 41c018 41bd34 41c500 41c800 41cab2 41cacd 41cad2 -004e66b0 42d7d0 4173b8 417938 41f59c -004e66c4 41fc58 41f76c 41f680 420e58 420e6e 4206d4 420754 420e84 -004e6978 42e992 417d9c 417db0 417dc4 417dd8 417e44 4016eb 4016fa 401709 401718 417dec 417e0c 417e2c 417e64 401727 40173a 40174d 401760 417e98 417ebc 42e909 418978 41898c 4189a0 4189b4 418a20 4016eb 4016fa 401709 401718 4189c8 4189e8 418a08 418a40 401727 40173a 40174d 401760 418a74 4178b0 418ac0 418a90 418164 42e786 4187a4 4187bc 418878 42e9be 42e7b2 42e7e3 42e737 417c74 42e524 4173b8 417938 41f59c -004e6a5c 41fc58 42e2ac 42e2e4 420e58 420e6e 42da08 420754 420e84 42e1ac 42e100 -004e6a88 42da68 42e9ee 4173b8 417938 -004e6b44 42f140 417a80 42efa4 4173b8 417938 41f59c -004e6b60 41fc58 42e2ac 42e2e4 420e58 420e6e 42da08 420754 420e84 42e1ac 42e100 -004e6c60 42f328 4173b8 417938 41f59c -004e6c74 41fc58 41f76c 41f680 420e58 420e6e 4206d4 420754 420e84 -004e6e3c 430b74 418978 41898c 4189a0 4189b4 418a20 4016eb 4016fa 401709 401718 4189c8 4189e8 418a08 418a40 401727 40173a 40174d 401760 418a74 4178b0 418ac0 418a90 418164 43096d 4187a4 4187bc 418878 430ba0 430999 430a0c 43059c 430340 4173b8 417938 41f59c -004e6ecc 41fc58 41f76c 41f680 420e58 420e6e 4206d4 4304cc 420e84 -004e6fd0 431058 4173b8 417938 41f59c -004e6fe4 41fc58 41f76c 41f680 420e58 420e6e 4206d4 420754 420e84 430e84 4173b8 417938 41f59c -004e7018 41fc58 41f76c 41f680 420e58 420e6e 4206d4 420754 420e84 -004e7388 432405 418978 41898c 4189a0 4189b4 418a20 4016eb 4016fa 401709 401718 4189c8 4189e8 418a08 418a40 401727 40173a 40174d 401760 418a74 4178b0 418ac0 418a90 418164 432020 4173b8 417938 41f59c -004e73f8 41fc58 43162c 41f680 420e58 420e6e 4206d4 420754 420e84 4316c8 4173b8 417938 41f59c -004e742c 41fc58 43162c 41f680 420e58 420e6e 4206d4 420754 420e84 -004e7538 4325c0 4173b8 417938 41f59c -004e754c 41fc58 41f76c 41f680 420e58 420e6e 4206d4 420754 420e84 -004e76cc 432f34 4173b8 417938 41b956 419c90 41c018 -004e76e8 4329d4 41c800 41cab2 41cacd 41cad2 +004e66b0 42d7d0 4173b8 417938 41f59c 41f570 41fc58 41f76c 41f680 420e58 420e6e 4206d4 420754 420e84 +004e6978 42e992 417d9c 417db0 417dc4 417dd8 417e44 4016eb 4016fa 401709 401718 417dec 417e0c 417e2c 417e64 401727 40173a 40174d 401760 417e98 417ebc 42e909 418978 41898c 4189a0 4189b4 418a20 4016eb 4016fa 401709 401718 4189c8 4189e8 418a08 418a40 401727 40173a 40174d 401760 418a74 4178b0 418ac0 418a90 418164 42e786 4187a4 4187bc 418878 42e9be 42e7b2 42e7e3 42e737 417c74 42e524 4173b8 417938 41f59c 41f570 41fc58 42e2ac 42e2e4 420e58 420e6e 42da08 420754 420e84 42e1ac 42e100 42e0e0 42da68 42e9ee 4173b8 417938 +004e6b44 42f140 417a80 42efa4 4173b8 417938 41f59c 41f570 41fc58 42e2ac 42e2e4 420e58 420e6e 42da08 420754 420e84 42e1ac 42e100 42e0e0 42da68 +004e6c60 42f328 4173b8 417938 41f59c 41f570 41fc58 41f76c 41f680 420e58 420e6e 4206d4 420754 420e84 +004e6e3c 430b74 418978 41898c 4189a0 4189b4 418a20 4016eb 4016fa 401709 401718 4189c8 4189e8 418a08 418a40 401727 40173a 40174d 401760 418a74 4178b0 418ac0 418a90 418164 43096d 4187a4 4187bc 418878 430ba0 430999 430a0c 43059c 430340 4173b8 417938 41f59c 41f570 41fc58 41f76c 41f680 420e58 420e6e 4206d4 4304cc 420e84 +004e6fd0 431058 4173b8 417938 41f59c 41f570 41fc58 41f76c 41f680 420e58 420e6e 4206d4 420754 420e84 430e84 4173b8 417938 41f59c 41f570 41fc58 41f76c 41f680 420e58 420e6e 4206d4 420754 420e84 +004e7388 432405 418978 41898c 4189a0 4189b4 418a20 4016eb 4016fa 401709 401718 4189c8 4189e8 418a08 418a40 401727 40173a 40174d 401760 418a74 4178b0 418ac0 418a90 418164 432020 4173b8 417938 41f59c 41f570 41fc58 43162c 41f680 420e58 420e6e 4206d4 420754 420e84 4316c8 4173b8 417938 41f59c 41f570 41fc58 43162c 41f680 420e58 420e6e 4206d4 420754 420e84 +004e7538 4325c0 4173b8 417938 41f59c 41f570 41fc58 41f76c 41f680 420e58 420e6e 4206d4 420754 420e84 +004e76cc 432f34 4173b8 417938 41b956 419c90 41c018 432974 4329d4 41c800 41cab2 41cacd 41cad2 004e7864 403428 403433 403446 403454 403344 403465 403473 403104 4033d0 417054 417120 4337d8 433818 43383c 433874 43324c 4173b8 417938 41b956 419c90 4332fc 4333b0 -004e7984 4341f3 417a80 4341a7 -004e79a4 433c44 4173b8 417938 433bf0 4173b8 417938 433b78 4173b8 417938 433a68 4339ec 433950 +004e7984 4341f3 417a80 4341a7 40ddac 40ddb8 40ddc4 40ddf8 40de28 433c44 4173b8 417938 433bf0 4173b8 417938 433b78 4173b8 417938 433a68 4339ec 433950 004e7afc 434383 417a80 434260 4173b8 417938 4342d0 434310 43432c 434348 434550 418434 418448 41845c 418470 4184dc 4016eb 4016fa 401709 401718 418484 4184a4 4184c4 4184fc 401727 40173a 40174d 401760 418530 41854c 418570 4343e4 4173b8 417938 4342d0 434434 4344a4 4344e4 004e8018 43541d 418434 418448 41845c 418470 4184dc 4016eb 4016fa 401709 401718 418484 4184a4 4184c4 4184fc 401727 40173a 40174d 401760 418530 41854c 418570 435394 41830c 4345c0 4173b8 417938 41b956 419c90 41d59c 434648 434668 4349e4 435633 417a80 4355e8 418434 418448 41845c 418470 4184dc 4016eb 4016fa 401709 401718 418484 4184a4 4184c4 4184fc 401727 40173a 40174d 401760 418530 41854c 418570 4354b8 4173b8 417938 004e813c 435a50 417d9c 417db0 417dc4 417dd8 417e44 4016eb 4016fa 401709 401718 417dec 417e0c 417e2c 417e64 401727 40173a 40174d 401760 417e98 417ebc 4359c7 417c74 435700 4173b8 417938 43569c @@ -94,30 +61,20 @@ 004e84dc 43685c 418434 418448 41845c 418470 4184dc 4016eb 4016fa 401709 401718 418484 4184a4 4184c4 4184fc 401727 40173a 40174d 401760 418530 41854c 418570 4367d3 41830c 436788 417a80 4362c0 4173b8 417938 41b956 419c90 435df8 4173b8 417938 41b956 419c90 435e70 435ee4 436888 43688f 436899 43689e 436234 436250 43626c 4368a3 4368a8 4368ad 4368b2 004e85e0 4368f4 4173b8 417938 41b956 419c90 435e70 435ee4 436888 43688f 436920 4369a0 436a40 436ae0 436ae8 4368a3 4368a8 4368ad 4368b2 436a48 004e8714 437082 417d9c 417db0 417dc4 417dd8 417e44 4016eb 4016fa 401709 401718 417dec 417e0c 417e2c 417e64 401727 40173a 40174d 401760 417e98 417ebc 436ff9 418978 41898c 4189a0 4189b4 418a20 4016eb 4016fa 401709 401718 4189c8 4189e8 418a08 418a40 401727 40173a 40174d 401760 418a74 4178b0 418ac0 418a90 418164 436f70 417c74 436d4c 4173b8 417938 41b956 419c90 436e14 436e24 436bd8 436c08 436c38 -004e884c 437154 4173b8 417938 41f59c -004e8860 41fc58 41f76c 41f680 420e58 420e6e 4206d4 4304cc 420e84 +004e884c 437154 4173b8 417938 41f59c 41f570 41fc58 41f76c 41f680 420e58 420e6e 4206d4 4304cc 420e84 004e8a64 437ee2 419564 419578 419590 4195ac 419640 4016eb 4016fa 401709 401718 4195c0 4195f4 419620 41964c 401727 40173a 40174d 401760 419674 4178b0 419704 419698 418164 437e49 419564 419578 419590 4195ac 419640 4016eb 4016fa 401709 401718 4195c0 4195f4 419620 41964c 401727 40173a 40174d 401760 419674 4178b0 419704 419698 418164 437d55 419228 419240 41927c 437f0e 437d81 437db0 437ca7 419228 419240 41927c 437f3e 437cd3 437d04 437b9c 4173b8 417938 437968 4173b8 417938 437678 004e8c74 4380f8 4173b8 417938 41b956 419c90 436e14 438340 4383b4 438d20 004e9f40 43b048 418434 418448 41845c 418470 4184dc 4016eb 4016fa 401709 401718 418484 4184a4 4184c4 4184fc 401727 40173a 40174d 401760 418530 41854c 418570 43ad16 41830c 43accb 417a80 43ab88 4173b8 417938 41b956 419c90 43abc4 43abdc 43a59c 4173b8 417938 41b956 419c90 43a5d8 43a610 439d68 4173b8 417938 41b956 419c90 436e14 43a1a0 439a0c 4173b8 417938 41b956 419c90 436e14 439d18 439650 4173b8 417938 41b956 419c90 436e14 4399a8 43929c 4173b8 417938 41b956 419c90 436e14 4395f0 439094 4173b8 417938 41b956 419c90 436e14 439248 438dc8 4173b8 417938 41b956 419c90 436e14 438fec 438d84 4173b8 417938 41b956 419c90 436e14 438d58 438db0 4389fc 4173b8 417938 41b956 419c90 436e14 438d58 43b0d2 004ea820 43b998 4173b8 417938 41b956 419c90 43c030 43bbc0 43bb14 43c14c 43bb70 43be20 43be70 43be84 43bed4 43bf20 43bf6c 43bf84 43bfa4 43bfc4 43bfe0 43c014 43c160 43c165 43c16a 004ea9d0 43c1b4 4173b8 417938 43ca48 43ca68 43ca84 43ca89 43ca8e 43ca93 43ca98 43ca9d 43caa2 43caa7 43caac 43cab1 43cab6 43cabb 43cac0 43cac5 43caca 43cacf 43cad4 43cad9 43cade 43cae3 43cae8 -004eac0c 43da37 418978 41898c 4189a0 4189b4 418a20 4016eb 4016fa 401709 401718 4189c8 4189e8 418a08 418a40 401727 40173a 40174d 401760 418a74 4178b0 418ac0 418a90 418164 43d8b8 4187a4 4187bc 418878 43da63 43d8e4 43d913 43d869 418434 418448 41845c 418470 4184dc 4016eb 4016fa 401709 401718 418484 4184a4 4184c4 4184fc 401727 40173a 40174d 401760 418530 41854c 418570 43d7e0 41830c 43d4bc 4173b8 417938 43d5dc 43d600 43ca84 43ca89 43ca8e 43d61c 43d62c -004ead0c 43caa2 43caa7 43caac 43cab1 43cab6 43cabb 43cac0 43cac5 43caca 43cacf 43cad4 43d7bc 43cade 43cae3 43cae8 43ce78 4173b8 417938 41b956 419c90 436e14 43d3a4 43cb4c -004ed690 441dca 4173b8 417938 41b956 419c90 441f04 428a5c 441f66 441cdd 4173b8 441d9a 41b956 419c90 441f04 428a5c 441f66 441845 4173b8 441395 41b956 419c90 4414e7 441bb7 441537 441c64 4415b5 4173b8 441395 41b956 419c90 4414e7 441756 441537 4413c5 4173b8 417938 41b956 419c90 4414e7 428a5c 441537 4412d8 4173b8 441395 41b956 419c90 4414e7 428a5c 441537 44104e 4173b8 441395 41b956 419c90 4414e7 441231 441537 441269 440b61 4173b8 44069c 41b956 419c90 4407ee 440ed3 44083f -004ed79c 4408bd 4173b8 44069c 41b956 419c90 4407ee 440a60 44083f 4406cc 4173b8 417938 41b956 419c90 4407ee 428a5c 44083f 4405df 4173b8 44069c 41b956 419c90 4407ee 428a5c 44083f 440147 4173b8 44069c 41b956 419c90 4407ee 4404b9 44083f 440566 43ff08 4173b8 417938 41b956 419c90 44002a 428a5c 440097 43fe1b 4173b8 43fed8 41b956 419c90 44002a 428a5c 440097 43f950 4173b8 43fed8 41b956 419c90 44002a 43fcc2 440097 -004ed884 43f431 4173b8 43f1d0 41b956 419c90 43f325 43f7a3 43f387 -004ed8a8 43f200 4173b8 417938 41b956 419c90 43f325 428a5c 43f387 43f113 4173b8 43f1d0 41b956 419c90 43f325 428a5c 43f387 43ec7b 4173b8 43f1d0 41b956 419c90 43f325 43efed 43f387 43f09a 43e878 4173b8 441d9a 41b956 419c90 441f04 43e79c 441f66 43eb40 43e770 4173b8 441d9a 41b956 419c90 441f04 43e79c 441f66 43e7b8 43e6e0 4173b8 441395 41b956 419c90 4414e7 441bb7 441537 43e72c 43e65c 4173b8 441395 41b956 419c90 4414e7 441bb7 441537 43e6a8 43e5e4 4173b8 441395 41b956 419c90 4414e7 441756 441537 43e560 4173b8 441395 41b956 419c90 4414e7 441231 441537 43e5ac 43e4dc 4173b8 441395 41b956 419c90 4414e7 441231 441537 43e528 43e478 4173b8 44069c 41b956 419c90 4407ee 440ed3 44083f 43e4a4 43e400 4173b8 44069c 41b956 419c90 4407ee 440a60 44083f 43e37c 4173b8 44069c 41b956 419c90 4407ee 4404b9 44083f 43e3c8 43e310 4173b8 43fed8 41b956 419c90 44002a 43fcc2 43e348 43e33c 43e054 4173b8 43f1d0 41b956 419c90 43f325 43f7a3 -004edab0 43e1b4 43dd74 4173b8 43f1d0 41b956 419c90 43f325 43efed -004edad4 43ded4 43dc14 4173b8 43dcd4 41b956 419c90 43dd04 -004edb44 442619 417a80 44244f 4187a4 4187bc 418878 442645 44247b -004edb68 442398 4173b8 4423e8 441fb4 4173b8 417938 41b956 419c90 44202c 435ee4 442675 43688f 436899 43689e 442054 436250 43626c 442268 4368a8 4368ad 4368b2 441ffc 442248 +004eac0c 43da37 418978 41898c 4189a0 4189b4 418a20 4016eb 4016fa 401709 401718 4189c8 4189e8 418a08 418a40 401727 40173a 40174d 401760 418a74 4178b0 418ac0 418a90 418164 43d8b8 4187a4 4187bc 418878 43da63 43d8e4 43d913 43d869 418434 418448 41845c 418470 4184dc 4016eb 4016fa 401709 401718 418484 4184a4 4184c4 4184fc 401727 40173a 40174d 401760 418530 41854c 418570 43d7e0 41830c 43d4bc 4173b8 417938 43d5dc 43d600 43ca84 43ca89 43ca8e 43d61c 43d62c 43d730 43caa2 43caa7 43caac 43cab1 43cab6 43cabb 43cac0 43cac5 43caca 43cacf 43cad4 43d7bc 43cade 43cae3 43cae8 43ce78 4173b8 417938 41b956 419c90 436e14 43d3a4 43cb4c +004ed690 441dca 4173b8 417938 41b956 419c90 441f04 428a5c 441f66 441cdd 4173b8 441d9a 41b956 419c90 441f04 428a5c 441f66 441845 4173b8 441395 41b956 419c90 4414e7 441bb7 441537 441c64 4415b5 4173b8 441395 41b956 419c90 4414e7 441756 441537 4413c5 4173b8 417938 41b956 419c90 4414e7 428a5c 441537 4412d8 4173b8 441395 41b956 419c90 4414e7 428a5c 441537 44104e 4173b8 441395 41b956 419c90 4414e7 441231 441537 441269 440b61 4173b8 44069c 41b956 419c90 4407ee 440ed3 44083f 440fb3 4408bd 4173b8 44069c 41b956 419c90 4407ee 440a60 44083f 4406cc 4173b8 417938 41b956 419c90 4407ee 428a5c 44083f 4405df 4173b8 44069c 41b956 419c90 4407ee 428a5c 44083f 440147 4173b8 44069c 41b956 419c90 4407ee 4404b9 44083f 440566 43ff08 4173b8 417938 41b956 419c90 44002a 428a5c 440097 43fe1b 4173b8 43fed8 41b956 419c90 44002a 428a5c 440097 43f950 4173b8 43fed8 41b956 419c90 44002a 43fcc2 440097 43fda2 43f431 4173b8 43f1d0 41b956 419c90 43f325 43f7a3 43f387 43f883 43f200 4173b8 417938 41b956 419c90 43f325 428a5c 43f387 43f113 4173b8 43f1d0 41b956 419c90 43f325 428a5c 43f387 43ec7b 4173b8 43f1d0 41b956 419c90 43f325 43efed 43f387 43f09a 43e878 4173b8 441d9a 41b956 419c90 441f04 43e79c 441f66 43eb40 43e770 4173b8 441d9a 41b956 419c90 441f04 43e79c 441f66 43e7b8 43e6e0 4173b8 441395 41b956 419c90 4414e7 441bb7 441537 43e72c 43e65c 4173b8 441395 41b956 419c90 4414e7 441bb7 441537 43e6a8 43e5e4 4173b8 441395 41b956 419c90 4414e7 441756 441537 43e560 4173b8 441395 41b956 419c90 4414e7 441231 441537 43e5ac 43e4dc 4173b8 441395 41b956 419c90 4414e7 441231 441537 43e528 43e478 4173b8 44069c 41b956 419c90 4407ee 440ed3 44083f 43e4a4 43e400 4173b8 44069c 41b956 419c90 4407ee 440a60 44083f 43e37c 4173b8 44069c 41b956 419c90 4407ee 4404b9 44083f 43e3c8 43e310 4173b8 43fed8 41b956 419c90 44002a 43fcc2 43e348 43e33c 43e054 4173b8 43f1d0 41b956 419c90 43f325 43f7a3 43e2ac 43e1b4 43dd74 4173b8 43f1d0 41b956 419c90 43f325 43efed 43dfcc 43ded4 43dc14 4173b8 43dcd4 41b956 419c90 43dd04 +004edb44 442619 417a80 44244f 4187a4 4187bc 418878 442645 44247b 4424ef 442398 4173b8 4423e8 441fb4 4173b8 417938 41b956 419c90 44202c 435ee4 442675 43688f 436899 43689e 442054 436250 43626c 442268 4368a8 4368ad 4368b2 441ffc 442248 004edbcc 4426b9 44336c 4432cc 443229 4431ab 417d9c 417db0 417dc4 417dd8 417e44 4016eb 4016fa 401709 401718 417dec 417e0c 417e2c 417e64 401727 40173a 40174d 401760 417e98 417ebc 442f37 4173b8 417938 442cf8 4173b8 417938 442ab9 4173b8 417938 442a65 417c74 4429c0 442a14 442874 4173b8 417938 442810 004edc88 443efb 417c74 4434a0 4173b8 417938 -004ee030 4449f3 417d9c 417db0 417dc4 417dd8 417e44 4016eb 4016fa 401709 401718 417dec 417e0c 417e2c 417e64 401727 40173a 40174d 401760 417e98 417ebc 44496a 417c74 444870 4173b8 417938 443fb4 444004 44400c 444720 -004ee0a8 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4446e0 444360 4173b8 417938 443fb4 444004 44400c 444720 -004ee0ec 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4446e0 444148 44419c 444180 444a1f 4173b8 417938 443fb4 444004 44400c 444078 444080 444028 444088 444090 444098 4440a0 444a53 4173b8 417938 443fb4 444004 44400c 444078 444080 444028 444088 444090 444098 4440a0 443f7c 4173b8 417938 443fb4 444004 44400c 444078 444080 444028 444088 444090 444098 4440a0 +004ee030 4449f3 417d9c 417db0 417dc4 417dd8 417e44 4016eb 4016fa 401709 401718 417dec 417e0c 417e2c 417e64 401727 40173a 40174d 401760 417e98 417ebc 44496a 417c74 444870 4173b8 417938 443fb4 444004 44400c 444720 444764 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4446e0 444360 4173b8 417938 443fb4 444004 44400c 444720 444764 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4446e0 444148 44419c 444180 444a1f 4173b8 417938 443fb4 444004 44400c 444078 444080 444028 444088 444090 444098 4440a0 444a53 4173b8 417938 443fb4 444004 44400c 444078 444080 444028 444088 444090 444098 4440a0 443f7c 4173b8 417938 443fb4 444004 44400c 444078 444080 444028 444088 444090 444098 4440a0 004ee238 445007 417d9c 417db0 417dc4 417dd8 417e44 4016eb 4016fa 401709 401718 417dec 417e0c 417e2c 417e64 401727 40173a 40174d 401760 417e98 417ebc 444f7e 417c74 444f14 4173b8 417938 444e3c 444e9c 444eb8 444e04 4173b8 417938 444e3c 444e9c 444eb8 444ac0 444b20 -004eeb68 4489b6 41830c 447a14 4173b8 417938 41b956 419c90 447b70 435ee4 4482d4 43688f 447c58 447d38 448164 447e64 447e6c 4368a3 4368a8 447e18 447e40 447b58 4489e2 44895c 448188 448310 +004eeb68 4489b6 41830c 447a14 4173b8 417938 41b956 419c90 447b70 435ee4 4482d4 43688f 447c58 447d38 448164 447e64 447e6c 4368a3 4368a8 447e18 447e40 447b58 4489e2 44895c 448188 448310 448538 004eed18 448f1a 417d9c 417db0 417dc4 417dd8 417e44 4016eb 4016fa 401709 401718 417dec 417e0c 417e2c 417e64 401727 40173a 40174d 401760 417e98 417ebc 448e91 417c74 448c74 448ab8 448ad4 448a28 4173b8 417938 004ef59c 44ae0c 44aebc 44ae2c 44b1e8 44b1f8 44b240 44b250 44b260 44b2e0 44b2fc 44b318 44b32c 44b3c8 44b428 44b488 44b4f8 44b568 44b5e0 44b664 44b6d0 44b73c 44b744 44b88c 44b9e8 44bb30 44bc98 44bca8 44bcb8 44bc78 44a348 44a374 44a488 44a4b8 44a4d4 44a4f0 44a50c 44a528 44a544 44a560 44a57c 44a598 44a0ac 44a0cc 44a194 44a19c 44a1a4 44a1f0 44a20c 44a228 44a244 44a260 44a27c 44a298 44a2b4 449568 004ef7c4 44cc39 417d9c 417db0 417dc4 417dd8 417e44 4016eb 4016fa 401709 401718 417dec 417e0c 417e2c 417e64 401727 40173a 40174d 401760 417e98 417ebc 44cbb0 417d9c 417db0 417dc4 417dd8 417e44 4016eb 4016fa 401709 401718 417dec 417e0c 417e2c 417e64 401727 40173a 40174d 401760 417e98 417ebc 44cb27 417c74 44cadc 417c74 44ca91 417a80 44c8cc 4173b8 417938 44c798 4173b8 417938 44c5e4 4173b8 417938 41b956 419c90 44c640 44c65c 44c73c 44c678 @@ -131,179 +88,75 @@ 004f0364 44f216 4173b8 417938 41b956 419c90 004f037c 44f242 4173b8 417938 41b956 419c90 004f0394 44f26e 4173b8 417938 41b956 419c90 -004f03ac 44e8a0 4173b8 417938 41b956 419c90 41d59c 44e1b0 44e254 44e488 -004f03d4 44e6e8 44e7ac 44ea8c 44ea28 44eb6c 44e3e0 44e408 44e448 44e468 44e3c0 44eb8c 44ebac 44ebcc 44e428 +004f03ac 44e8a0 4173b8 417938 41b956 419c90 41d59c 44e1b0 44e254 44e488 44e5a8 44e6e8 44e7ac 44ea8c 44ea28 44eb6c 44e3e0 44e408 44e448 44e468 44e3c0 44eb8c 44ebac 44ebcc 44e428 004f0444 44f564 418434 418448 41845c 418470 4184dc 4016eb 4016fa 401709 401718 418484 4184a4 4184c4 4184fc 401727 40173a 40174d 401760 418530 41854c 418570 44f4db 41830c 44f2dc 4173b8 417938 004f05f8 44f950 4173b8 417938 403428 403481 403446 403454 403494 403465 403473 403104 403134 004f06c0 450106 417d9c 417db0 417dc4 417dd8 417e44 4016eb 4016fa 401709 401718 417dec 417e0c 417e2c 417e64 401727 40173a 40174d 401760 417e98 417ebc 45007d 417c74 44fd9c 4173b8 417938 41b956 419c90 44ffa4 44fe70 44fdfc 44fe04 44fe54 44feb4 44fb40 44fc00 44fc8c 44fd14 450190 4173b8 417938 004f1230 452bd9 419564 419578 419590 4195ac 419640 4016eb 4016fa 401709 401718 4195c0 4195f4 419620 41964c 401727 40173a 40174d 401760 419674 4178b0 419704 419698 418164 452b6f 417d9c 417db0 417dc4 417dd8 417e44 4016eb 4016fa 401709 401718 417dec 417e0c 417e2c 417e64 401727 40173a 40174d 401760 417e98 417ebc 452a8b 419228 419240 41927c 452c05 452ab7 452ae6 452a3c 417c74 4527f8 4173b8 417938 452700 4173b8 417938 452688 450960 4173b8 417938 41b956 419c90 41d59c 450f48 45134c 451894 450554 45084c 4525bc 45255c 4518b8 4520f8 452ccc 417c74 -004f1610 4594cc 4173b8 417938 41b956 419c90 45950c 4591f8 4173b8 417938 41b956 419c90 459238 458e1c 4173b8 417938 41b956 419c90 458e5c 458cd4 4173b8 417938 41b956 419c90 458d24 4589a0 4173b8 417938 41b956 419c90 4589e0 4587c8 4173b8 417938 41b956 419c90 458808 -004f16a4 4173b8 417938 41b956 419c90 4586d0 458598 4173b8 417938 41b956 419c90 4596a6 4582fc 4173b8 417938 41b956 419c90 45833c 457fd8 4173b8 417938 41b956 419c90 458018 457d74 4173b8 417938 41b956 419c90 457dc4 457af4 4173b8 417938 41b956 419c90 457b48 -004f1734 4173b8 417938 41b956 419c90 457784 -004f174c 4173b8 417938 41b956 419c90 45714c 456c9c 4173b8 417938 41b956 419c90 456ce8 456afc 4173b8 417938 41b956 419c90 456b4c 4569bc 4173b8 417938 41b956 419c90 456a0c 4568b8 4173b8 417938 41b956 419c90 4568f8 4567d4 4173b8 417938 41b956 419c90 456814 456684 4173b8 417938 41b956 419c90 4566c4 -004f17f4 4173b8 417938 41b956 419c90 45656c -004f180c 4173b8 417938 41b956 419c90 456410 4562c0 4173b8 417938 41b956 419c90 456300 456198 4173b8 417938 41b956 419c90 4561d8 455e4c 4173b8 417938 41b956 419c90 455eb8 455d74 4173b8 417938 41b956 419c90 455db4 455cb0 4173b8 417938 41b956 419c90 455cf0 455bc8 4173b8 417938 41b956 419c90 455c34 455a68 4173b8 417938 41b956 419c90 455aa8 4558e0 4173b8 417938 41b956 419c90 455920 4557cc 4173b8 417938 41b956 419c90 455818 455690 4173b8 417938 41b956 419c90 4556fc -004f1914 4173b8 417938 41b956 419c90 4553ac 454924 4173b8 417938 41b956 419c90 454998 45443c 4173b8 417938 41b956 419c90 45447c 454038 4173b8 417938 41b956 419c90 4540ac 453d84 4173b8 417938 41b956 419c90 453dc4 453b84 4173b8 417938 41b956 419c90 453bc4 453a24 4173b8 417938 41b956 419c90 453a64 4538b4 4173b8 417938 41b956 419c90 4538f4 453768 4173b8 417938 41b956 419c90 4537d8 453600 4173b8 417938 41b956 419c90 45364c 453514 4173b8 417938 41b956 419c90 453570 4533fc 4173b8 417938 41b956 419c90 45346c 4532dc 4173b8 417938 41b956 419c90 453330 453198 4173b8 417938 41b956 419c90 4531d8 453068 4173b8 417938 41b956 419c90 4530e4 452e98 4173b8 417938 41b956 419c90 452f30 452da4 4173b8 417938 41b956 419c90 41b8c4 -004f31c4 461608 418fa4 418fc4 418fcc 419010 419030 4016eb 4016fa 401709 401718 415d38 415d5c 419018 415da0 401727 40173a 40174d 401760 419078 4178b0 4190c8 419098 418164 46159e 418434 418448 41845c 418470 4184dc 4016eb 4016fa 401709 401718 418484 4184a4 4184c4 4184fc 401727 40173a 40174d 401760 418530 41854c 418570 461515 417d9c 417db0 417dc4 417dd8 417e44 4016eb 4016fa 401709 401718 417dec 417e0c 417e2c 417e64 401727 40173a 40174d 401760 417e98 417ebc 461431 419228 419240 41927c 461634 46145d 46148c 46134b 418c44 418c5c 418c94 461664 461377 4613c4 4612fc 41830c 460dcc 461694 45d0f4 4173b8 417938 41b956 419c90 435e70 435ee4 436888 460590 436920 4369a0 -004f3340 460a7c 4368a3 4368a8 4368ad 4368b2 45e744 45a070 +004f1610 4594cc 4173b8 417938 41b956 419c90 45950c 4591f8 4173b8 417938 41b956 419c90 459238 458e1c 4173b8 417938 41b956 419c90 458e5c 458cd4 4173b8 417938 41b956 419c90 458d24 4589a0 4173b8 417938 41b956 419c90 4589e0 4587c8 4173b8 417938 41b956 419c90 458808 458690 4173b8 417938 41b956 419c90 4586d0 458598 4173b8 417938 41b956 419c90 4596a6 4582fc 4173b8 417938 41b956 419c90 45833c 457fd8 4173b8 417938 41b956 419c90 458018 457d74 4173b8 417938 41b956 419c90 457dc4 457af4 4173b8 417938 41b956 419c90 457b48 457744 4173b8 417938 41b956 419c90 457784 45710c 4173b8 417938 41b956 419c90 45714c 456c9c 4173b8 417938 41b956 419c90 456ce8 456afc 4173b8 417938 41b956 419c90 456b4c 4569bc 4173b8 417938 41b956 419c90 456a0c 4568b8 4173b8 417938 41b956 419c90 4568f8 4567d4 4173b8 417938 41b956 419c90 456814 456684 4173b8 417938 41b956 419c90 4566c4 45652c 4173b8 417938 41b956 419c90 45656c 4563d0 4173b8 417938 41b956 419c90 456410 4562c0 4173b8 417938 41b956 419c90 456300 456198 4173b8 417938 41b956 419c90 4561d8 455e4c 4173b8 417938 41b956 419c90 455eb8 455d74 4173b8 417938 41b956 419c90 455db4 455cb0 4173b8 417938 41b956 419c90 455cf0 455bc8 4173b8 417938 41b956 419c90 455c34 455a68 4173b8 417938 41b956 419c90 455aa8 4558e0 4173b8 417938 41b956 419c90 455920 4557cc 4173b8 417938 41b956 419c90 455818 455690 4173b8 417938 41b956 419c90 4556fc 4551c0 4173b8 417938 41b956 419c90 4553ac 454924 4173b8 417938 41b956 419c90 454998 45443c 4173b8 417938 41b956 419c90 45447c 454038 4173b8 417938 41b956 419c90 4540ac 453d84 4173b8 417938 41b956 419c90 453dc4 453b84 4173b8 417938 41b956 419c90 453bc4 453a24 4173b8 417938 41b956 419c90 453a64 4538b4 4173b8 417938 41b956 419c90 4538f4 453768 4173b8 417938 41b956 419c90 4537d8 453600 4173b8 417938 41b956 419c90 45364c 453514 4173b8 417938 41b956 419c90 453570 4533fc 4173b8 417938 41b956 419c90 45346c 4532dc 4173b8 417938 41b956 419c90 453330 453198 4173b8 417938 41b956 419c90 4531d8 453068 4173b8 417938 41b956 419c90 4530e4 452e98 4173b8 417938 41b956 419c90 452f30 452da4 4173b8 417938 41b956 419c90 41b8c4 +004f31c4 461608 418fa4 418fc4 418fcc 419010 419030 4016eb 4016fa 401709 401718 415d38 415d5c 419018 415da0 401727 40173a 40174d 401760 419078 4178b0 4190c8 419098 418164 46159e 418434 418448 41845c 418470 4184dc 4016eb 4016fa 401709 401718 418484 4184a4 4184c4 4184fc 401727 40173a 40174d 401760 418530 41854c 418570 461515 417d9c 417db0 417dc4 417dd8 417e44 4016eb 4016fa 401709 401718 417dec 417e0c 417e2c 417e64 401727 40173a 40174d 401760 417e98 417ebc 461431 419228 419240 41927c 461634 46145d 46148c 46134b 418c44 418c5c 418c94 461664 461377 4613c4 4612fc 41830c 460dcc 461694 45d0f4 4173b8 417938 41b956 419c90 435e70 435ee4 436888 460590 436920 4369a0 45fa08 460820 460a7c 4368a3 4368a8 4368ad 4368b2 45e744 45a070 004f3644 462cf6 417d9c 417db0 417dc4 417dd8 417e44 4016eb 4016fa 401709 401718 417dec 417e0c 417e2c 417e64 401727 40173a 40174d 401760 417e98 417ebc 462c6d 417c74 462b6c 4173b8 417938 462430 4173b8 417938 462340 -004f3838 465938 418978 41898c 4189a0 4189b4 418a20 4016eb 4016fa 401709 401718 4189c8 4189e8 418a08 418a40 401727 40173a 40174d 401760 418a74 4178b0 418ac0 418a90 418164 4658af 417d9c 417db0 417dc4 417dd8 417e44 4016eb 4016fa 401709 401718 417dec 417e0c 417e2c 417e64 401727 40173a 40174d 401760 417e98 417ebc 465826 418978 41898c 4189a0 4189b4 418a20 4016eb 4016fa 401709 401718 4189c8 4189e8 418a08 418a40 401727 40173a 40174d 401760 418a74 4178b0 418ac0 418a90 418164 4648d8 4173b8 417938 41b956 419c90 43c030 43bbc0 43bb14 43c14c 43bb70 43be20 43be70 43be84 43bed4 43bf20 43bf6c 43bf84 -004f398c 43bfe0 43c014 464a34 4636b0 4651ac 463d70 4173b8 417938 41b956 419c90 43c030 43bbc0 -004f39c0 43c14c 43bb70 43be20 43be70 43be84 43bed4 43bf20 43bf6c 43bf84 463ddc -004f39ec 43bfe0 43c014 463db0 4636b0 4641e0 4637fc 4173b8 417938 41b956 419c90 43c030 43bbc0 43bb14 43c14c 43bb70 43be20 43be70 43be84 43bed4 43bf20 43bf6c 43bf84 4638a8 -004f3a4c 43bfe0 43c014 463848 4636b0 463bbc 463670 4173b8 417938 41b956 419c90 43c030 43bbc0 43bb14 43c14c 43bb70 43be20 43be70 43be84 43bed4 43bf20 43bf6c 43bf84 43bfa4 43bfc4 43bfe0 43c014 43c160 4636b0 43c16a 4631f4 4173b8 417938 41b956 419c90 436e14 438340 463244 +004f3838 465938 418978 41898c 4189a0 4189b4 418a20 4016eb 4016fa 401709 401718 4189c8 4189e8 418a08 418a40 401727 40173a 40174d 401760 418a74 4178b0 418ac0 418a90 418164 4658af 417d9c 417db0 417dc4 417dd8 417e44 4016eb 4016fa 401709 401718 417dec 417e0c 417e2c 417e64 401727 40173a 40174d 401760 417e98 417ebc 465826 418978 41898c 4189a0 4189b4 418a20 4016eb 4016fa 401709 401718 4189c8 4189e8 418a08 418a40 401727 40173a 40174d 401760 418a74 4178b0 418ac0 418a90 418164 4648d8 4173b8 417938 41b956 419c90 43c030 43bbc0 43bb14 43c14c 43bb70 43be20 43be70 43be84 43bed4 43bf20 43bf6c 43bf84 464bfc 465140 43bfe0 43c014 464a34 4636b0 4651ac 463d70 4173b8 417938 41b956 419c90 43c030 43bbc0 464824 43c14c 43bb70 43be20 43be70 43be84 43bed4 43bf20 43bf6c 43bf84 463ddc 464178 43bfe0 43c014 463db0 4636b0 4641e0 4637fc 4173b8 417938 41b956 419c90 43c030 43bbc0 43bb14 43c14c 43bb70 43be20 43be70 43be84 43bed4 43bf20 43bf6c 43bf84 4638a8 463b60 43bfe0 43c014 463848 4636b0 463bbc 463670 4173b8 417938 41b956 419c90 43c030 43bbc0 43bb14 43c14c 43bb70 43be20 43be70 43be84 43bed4 43bf20 43bf6c 43bf84 43bfa4 43bfc4 43bfe0 43c014 43c160 4636b0 43c16a 4631f4 4173b8 417938 41b956 419c90 436e14 438340 463244 004f3cf8 465c74 4173b8 417938 465b68 -004f3fd8 4173b8 441d9a 41b956 419c90 441f04 43e79c 4660c0 466048 +004f3fd4 465cdc 4173b8 441d9a 41b956 419c90 441f04 43e79c 4660c0 466048 004f4144 466c30 4173b8 417938 403428 403433 403446 403454 403344 403465 403473 403104 4033d0 417054 417120 466184 466804 466844 466bc4 -004f4970 4685f5 4187a4 4187bc 418878 468717 468621 468650 4685a6 417c74 4683dc 4187a4 4187bc 418878 468747 468408 -004f49b0 467418 4173b8 417938 41b956 419c90 44202c 435ee4 442675 43688f 467908 467940 467b04 46795c 467964 442268 4368a8 4368ad 4368b2 4674c4 442248 468a94 46882b 4173b8 417938 46879c 4687d8 +004f4970 4685f5 4187a4 4187bc 418878 468717 468621 468650 4685a6 417c74 4683dc 4187a4 4187bc 418878 468747 468408 46847c 467418 4173b8 417938 41b956 419c90 44202c 435ee4 442675 43688f 467908 467940 467b04 46795c 467964 442268 4368a8 4368ad 4368b2 4674c4 442248 468a94 46882b 4173b8 417938 46879c 4687d8 004f4ad0 46a418 46a450 44a488 44a4b8 46a604 46a65c 46a6dc 46a758 46a760 46a80c 46a8bc 46a96c 468c04 468c74 44a194 44a19c 44a1a4 468ecc 468f40 4693e0 469518 469528 4698a4 469c3c 46a0e4 004f4d0c 46d91c 46d954 44a488 46db5c 46dca0 46dd00 46dd8c 46de14 46de1c 46ded8 46df9c 46e058 46d050 46d1b8 46d260 44a19c 44a1a4 46af50 46aff8 46b6d4 46b91c 46b92c 46bdfc 46c324 46cac4 46ac08 46ac74 44a194 44a19c 44a1a4 46af50 46aff8 46b6d4 46b91c 46b92c 46bdfc 46c324 46cac4 004f56a4 46fbcc 4173b8 417938 41b956 419c90 447b70 435ee4 4482d4 43688f 46fd6c 46fda0 448164 46fc98 46fcb0 4368a3 4368a8 447e18 447e40 46fc5c 46ffcc 44895c 46fce0 46fd10 470084 -004fb65c 474a10 474a4e 474a3c 474887 4748c5 4748b3 474b62 4173b8 417938 4742f0 444004 44400c 444720 -004fb694 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 474300 474094 4173b8 417938 4742f0 444004 44400c 444720 -004fb6d8 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 474300 473dac 4173b8 417938 473e9c 444004 44400c 444720 -004fb71c 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 473ebc 473a8c 4173b8 417938 473afc 444004 44400c 444720 -004fb760 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 473b10 4737fc 4173b8 417938 47386c 444004 44400c 444720 -004fb7a4 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 473880 4733b8 4173b8 417938 47246c 444004 44400c 444720 -004fb7e8 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 472480 473540 4735c4 472fb4 4173b8 417938 47246c 444004 44400c 444720 -004fb834 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 472480 47313c 4731d8 472c24 4173b8 417938 47246c 444004 44400c 444720 -004fb880 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 472480 472d78 472dc0 472364 4173b8 417938 47246c 444004 44400c 444720 -004fb8cc 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 472480 -004fb8f4 472ac4 472020 4173b8 417938 4720f8 472124 44400c 444720 -004fb918 44467c 47217c 444090 444098 4446fc 444588 4445a4 444600 472190 471d7c 4173b8 417938 471dec 444004 44400c 444078 444080 444028 444088 444090 444098 4440a0 471b2c 4173b8 417938 471b9c 444004 44400c 444078 444080 444028 444088 444090 444098 4440a0 474b88 4173b8 417938 4719a0 444004 44400c 444078 444080 444028 444088 444090 444098 4440a0 474bbc 4173b8 417938 471884 444004 44400c 444078 444080 444028 444088 444090 444098 4440a0 474bf0 4173b8 417938 471778 444004 44400c 444078 444080 444028 444088 444090 444098 4440a0 4715f0 4173b8 417938 471648 444004 44400c 444078 444080 444028 444088 444090 444098 4440a0 47107c 4173b8 417938 4711b8 444004 44400c 444720 -004fba94 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4711d0 470dc0 4173b8 417938 470eb0 444004 44400c 444720 -004fbad8 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 470ee8 474c24 4173b8 417938 470a3c 444004 44400c 444720 -004fbb1c 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 470bd0 47094c 4173b8 417938 470a3c 444004 44400c 444720 -004fbb60 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 470a74 +004fb65c 474a10 474a4e 474a3c 474887 4748c5 4748b3 474b62 4173b8 417938 4742f0 444004 44400c 444720 444764 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 474300 474094 4173b8 417938 4742f0 444004 44400c 444720 444764 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 474300 473dac 4173b8 417938 473e9c 444004 44400c 444720 444764 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 473ebc 473a8c 4173b8 417938 473afc 444004 44400c 444720 444764 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 473b10 4737fc 4173b8 417938 47386c 444004 44400c 444720 444764 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 473880 4733b8 4173b8 417938 47246c 444004 44400c 444720 444764 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 472480 473540 4735c4 472fb4 4173b8 417938 47246c 444004 44400c 444720 444764 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 472480 47313c 4731d8 472c24 4173b8 417938 47246c 444004 44400c 444720 444764 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 472480 472d78 472dc0 472364 4173b8 417938 47246c 444004 44400c 444720 444764 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 472480 472aa8 472ac4 472020 4173b8 417938 4720f8 472124 44400c 444720 444764 44467c 47217c 444090 444098 4446fc 444588 4445a4 444600 472190 471d7c 4173b8 417938 471dec 444004 44400c 444078 444080 444028 444088 444090 444098 4440a0 471b2c 4173b8 417938 471b9c 444004 44400c 444078 444080 444028 444088 444090 444098 4440a0 474b88 4173b8 417938 4719a0 444004 44400c 444078 444080 444028 444088 444090 444098 4440a0 474bbc 4173b8 417938 471884 444004 44400c 444078 444080 444028 444088 444090 444098 4440a0 474bf0 4173b8 417938 471778 444004 44400c 444078 444080 444028 444088 444090 444098 4440a0 4715f0 4173b8 417938 471648 444004 44400c 444078 444080 444028 444088 444090 444098 4440a0 47107c 4173b8 417938 4711b8 444004 44400c 444720 444764 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4711d0 470dc0 4173b8 417938 470eb0 444004 44400c 444720 444764 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 470ee8 474c24 4173b8 417938 470a3c 444004 44400c 444720 444764 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 470bd0 47094c 4173b8 417938 470a3c 444004 44400c 444720 444764 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 470a74 004fbbc8 474f98 4173b8 417938 444e3c 444e9c 474ffc 474dc4 4173b8 417938 444e3c 474e1c 474e94 474c98 474cf4 004fbc3c 47516c 47524c 4753ac 475468 44a1a4 468ecc 468f40 4693e0 469518 469528 4698a4 469c3c 46a0e4 004fcd84 478edc 4173b8 44c3e0 478f08 478de9 4173b8 44c3e0 478e15 478d2e 4173b8 44c3e0 478d5a 478c41 4173b8 44c3e0 478c6d 478b80 4173b8 44c3e0 478bac 478a8d 4173b8 44c3e0 478ab9 4789d2 4173b8 44c3e0 4789fe 4788e5 4173b8 44c3e0 478911 478514 4173b8 417938 44c46c 478540 47859b 4785e6 47862d 478711 4787e7 4781ab 4173b8 417938 44c46c 4781d7 478215 478260 4782a7 47838b 478461 477e25 4173b8 417938 44c46c 477e51 477eac 477ef7 477f3e 478022 4780f8 477ab9 4173b8 417938 44c46c 477ae5 477b26 477b71 477bb8 477c9c 477d72 476298 4173b8 417938 41b956 419c90 476484 47658c 476454 44c678 -004fcecc 44c6fc 475ad8 475604 475628 475b04 475668 475838 -004fceec 475a54 4758cc 475668 475704 475604 475628 475730 475668 47556c 475604 475628 475694 475668 +004fcecc 44c6fc 475ad8 475604 475628 475b04 475668 475838 475a38 475a54 4758cc 475668 475704 475604 475628 475730 475668 47556c 475604 475628 475694 475668 004fd2a4 479398 4793b4 479478 004fd428 47add4 4173b8 417938 41b956 419c90 41c018 41bd34 41c500 41c800 41cab2 41cacd 41cad2 47acf4 4173b8 417938 41b956 419c90 41c018 41bd34 41c500 41c800 41cab2 41cacd 41cad2 47abb0 4173b8 417938 41b956 419c90 41c018 41bd34 41c500 41c800 41cab2 41cacd 41cad2 -004fd8bc 47b624 4173b8 417938 41b956 419c90 41d59c 47b44c 44e254 44e488 -004fd8e4 44e6e8 47b608 47b650 44ea28 47b678 47b49c 44e408 47b4c0 47b508 44e3c0 47b57c 47b530 47b5d0 47b478 +004fd8bc 47b624 4173b8 417938 41b956 419c90 41d59c 47b44c 44e254 44e488 44e5a8 44e6e8 47b608 47b650 44ea28 47b678 47b49c 44e408 47b4c0 47b508 44e3c0 47b57c 47b530 47b5d0 47b478 004fdb04 47c734 4173b8 417938 41b956 419c90 47c634 47c5f8 47c614 47c590 4173b8 417938 41b956 419c90 47c380 47c480 47c4b0 47c508 47c538 47c560 47b608 47b650 47c4d0 47c500 47c45c 47c434 47b4c0 47b508 47c43c 47c4c0 47c4b8 47c4c8 47b478 47c268 4173b8 417938 41b956 419c90 41d59c 41d7a8 41d7e8 41d9a4 47bfe4 47c1f0 41dac6 41dacb 47c260 41d9d0 47bf28 4173b8 417938 41b956 419c90 47bf54 450f48 45134c 451894 47bdf0 45084c 4525bc 45255c 4518b8 4520f8 47bd64 4173b8 417938 41b956 419c90 47bda0 47bd90 47bd98 47bdcc 004fdd20 47d081 417a80 47ce7c 4173b8 417938 41b956 419c90 44ffa4 47ced4 47cf3c 47cf54 47cf64 44feb4 47c880 47c92c 47c94c 47c9b4 004ff380 4807af 4807c6 4807dd 4807f4 48080b 0050b864 49c352 418978 41898c 4189a0 4189b4 418a20 4016eb 4016fa 401709 401718 4189c8 4189e8 418a08 418a40 401727 40173a 40174d 401760 418a74 4178b0 418ac0 418a90 418164 49c2c9 418978 41898c 4189a0 4189b4 418a20 4016eb 4016fa 401709 401718 4189c8 4189e8 418a08 418a40 401727 40173a 40174d 401760 418a74 4178b0 418ac0 418a90 418164 49c146 4187a4 4187bc 418878 49c37e 49c172 49c1a3 49c001 4187a4 4187bc 418878 49c3ae 49c02d 49c05c 49bd7c 4173b8 417938 41b956 419c90 41c018 41bd34 41c500 41c800 41cab2 49c3de 41cad2 403428 403433 403446 403454 403344 403465 403473 403104 419e60 49c3e3 0050bb7c 49dde8 417a80 49dd9d 417a80 49dd44 49d23c 4173b8 417938 49c66c 41ddd8 41dd98 49c690 -0050bd30 49f3f8 419228 419240 41927c 49f47f 49f424 49f453 49f2d5 419228 419240 41927c 49f4af 49f301 -0050bd68 49f227 419228 419240 41927c 49f4df 49f253 49f284 49eadc 4173b8 417938 -0050bd94 4173b8 417938 49df80 4173b8 417938 -0050ce94 4a4ffb 417d9c 417db0 417dc4 417dd8 417e44 4016eb 4016fa 401709 401718 417dec 417e0c 417e2c 417e64 401727 40173a 40174d 401760 417e98 417ebc 4a4f72 417d9c 417db0 417dc4 417dd8 417e44 4016eb 4016fa 401709 401718 417dec 417e0c 417e2c 417e64 401727 40173a 40174d 401760 417e98 417ebc 4a4ee9 418434 418448 41845c 418470 4184dc 4016eb 4016fa 401709 401718 418484 4184a4 4184c4 4184fc 401727 40173a 40174d 401760 418530 41854c 418570 4a4e60 417c74 4a4e15 417c74 4a4dca 417c74 4a4d7f 41830c 4a452c 4173b8 417938 41f59c -0050cfc8 423dd3 423df4 4206d4 420754 420e84 422684 422fe0 4abb40 +0050bd30 49f3f8 419228 419240 41927c 49f47f 49f424 49f453 49f2d5 419228 419240 41927c 49f4af 49f301 49f36d 49f227 419228 419240 41927c 49f4df 49f253 49f284 49eadc 4173b8 417938 49e814 4173b8 417938 49df80 4173b8 417938 +0050ce94 4a4ffb 417d9c 417db0 417dc4 417dd8 417e44 4016eb 4016fa 401709 401718 417dec 417e0c 417e2c 417e64 401727 40173a 40174d 401760 417e98 417ebc 4a4f72 417d9c 417db0 417dc4 417dd8 417e44 4016eb 4016fa 401709 401718 417dec 417e0c 417e2c 417e64 401727 40173a 40174d 401760 417e98 417ebc 4a4ee9 418434 418448 41845c 418470 4184dc 4016eb 4016fa 401709 401718 418484 4184a4 4184c4 4184fc 401727 40173a 40174d 401760 418530 41854c 418570 4a4e60 417c74 4a4e15 417c74 4a4dca 417c74 4a4d7f 41830c 4a452c 4173b8 417938 41f59c 41f570 422360 4a122c 4a0c2c 423dd3 423df4 4206d4 420754 420e84 422684 422fe0 4abb40 0050e170 4ad0e2 417d9c 417db0 417dc4 417dd8 417e44 4016eb 4016fa 401709 401718 417dec 417e0c 417e2c 417e64 401727 40173a 40174d 401760 417e98 417ebc 4ad059 417c74 4ad00e 415fd0 415fe8 41601c 416034 4160c0 4016eb 4016fa 401709 401718 41604c 416078 4160a4 4160ec 401727 40173a 40174d 401760 4ac868 4173b8 417938 41b956 419c90 41c018 41bd34 41c500 4ac1d4 4ac0bc 4ac22c 4ad10e 4ac144 4ac8c0 0050e348 4ad6c9 417d9c 417db0 417dc4 417dd8 417e44 4016eb 4016fa 401709 401718 417dec 417e0c 417e2c 417e64 401727 40173a 40174d 401760 417e98 417ebc 4ad640 417c74 4ad1b8 4173b8 417938 41b956 419c90 41c018 41bd34 41c500 41c800 41cab2 41cacd 41cad2 4ad180 -0050ec1c 4afb96 417d9c 417db0 417dc4 417dd8 417e44 4016eb 4016fa 401709 401718 417dec 417e0c 417e2c 417e64 401727 40173a 40174d 401760 417e98 417ebc 4afb0d 417d9c 417db0 417dc4 417dd8 417e44 4016eb 4016fa 401709 401718 417dec 417e0c 417e2c 417e64 401727 40173a 40174d 401760 417e98 417ebc 4afa84 417c74 4afa39 417a80 4af9ee 417a80 -0050ecd8 4173b8 417938 41b956 419c90 41c018 4aeef8 4aef40 4add6c 4ad748 -0050ed00 4ad10e 4add30 4ae050 -0050ed10 4aebe8 4173b8 417938 41b956 419c90 41c018 41bd34 41c500 4ac1d4 4aea84 4aea9c 4ad10e 4ac144 4ac8c0 -0050ed50 4173b8 417938 41b956 419c90 41c018 41bd34 41c500 4add6c 4ae724 -0050ed78 4ad10e 4add30 4ae050 -0050ed88 4ae5fc 4173b8 417938 41b956 419c90 41c018 41bd34 41c500 4add6c 4ae4d8 -0050edb4 4ad10e 4add30 4ae050 -0050edc4 4adfd4 4173b8 417938 41b956 419c90 41c018 41bd34 41c500 4add6c 4ad748 4ad760 4ad10e 4add30 4ae050 -0050f45c 4b044c 4173b8 417938 41b956 419c90 41c018 41bd34 41c500 4ac1d4 4ac0bc 4ac22c 4ad10e 4ac144 4ac8c0 -0050f498 4b029c 4b02b8 4b02d4 4b048c 4b0494 -0050f994 4b1bd0 417a80 4b1930 4173b8 417938 41b956 419c90 41c018 41bd34 41c500 4ac1d4 4b179c 4b1804 4ad10e 4ac144 4ac8c0 -0050f9d8 4b115c 4173b8 417938 41b956 419c90 41c018 41bd34 41c500 4add6c 4b0efc 4b0e6c 4ad10e 4b0f48 4b1224 -0050fb0c 4b1d90 4173b8 417938 41b956 419c90 41c018 41bd34 41c500 4add6c 4b1bfc 4b1c18 4ad10e 4b0f48 4b1224 -0050fd74 4b237c 4173b8 417938 41b956 419c90 41c018 41bd34 41c500 4add6c 4b21d0 -0050fda0 4ad10e 4add30 4ae050 -00510abc 4b3e88 4173b8 417938 41b956 419c90 41c018 41bd34 41c500 4ac1d4 4b2660 4b2678 4ad10e 4ac144 4ac8c0 -00511040 4173b8 417938 41b956 419c90 41c018 4b6a78 -00511064 4b5bf8 4ad10e 4ac144 4ac8c0 -00511498 4b8794 4173b8 417938 41b956 419c90 41c018 41bd34 41c500 4ac1d4 4b179c 4b1804 4ad10e 4ac144 4ac8c0 -005114d4 4b8568 4173b8 417938 41b956 419c90 41c018 4b83b8 4b83f0 4ac1d4 4b179c 4b1804 4ad10e 4ac144 4ac8c0 -00511510 4b816c 4173b8 417938 41b956 419c90 41c018 41bd34 41c500 4ac1d4 -00511538 4b77bc 4ad10e 4ac144 4ac8c0 -005117e0 4173b8 417938 41b956 419c90 41c018 41bd34 41c500 4add6c 4b8a8c 4b8aa4 4ad10e 4b0f48 4b1224 -00511d2c 4b9b9c 4173b8 417938 41b956 419c90 41c018 4b964c 4b9690 4add6c 4b96d4 4b96ec 4ad10e 4b0f48 4b9d00 -00512078 4bb3c8 4173b8 417938 41b956 419c90 41c018 4ba568 4ba65c 4add6c -005120a0 4ba4d0 4ad10e 4b0f48 4bb014 -005120b8 4ba6e0 4ba738 4bace8 -0051214c 4bb8b4 4173b8 417938 41b956 419c90 41c018 4ba568 4ba65c 4add6c -00512174 4ba4d0 4ad10e 4b0f48 4bb014 -0051218c 4ba6e0 4ba738 4bb878 -00512424 4bcbcf 417a80 4bc688 4173b8 417938 41b956 419c90 41c018 4b964c 4b9690 4bcabc 4bbae0 4bbaf8 4ad10e -00512570 4bd060 4173b8 417938 41b956 419c90 41c018 4b964c 4b9690 4bcabc -0051286c 4bd6b0 4173b8 417938 41b956 419c90 41c018 41bd34 41c500 4bdb94 4bd2c0 -00512898 4ad10e 4ac144 4ac8c0 -00512934 4bdce8 4173b8 417938 41b956 419c90 41c018 4ba568 4ba65c 4add6c -0051295c 4ba4d0 4ad10e 4b0f48 4bb014 -00512a5c 4be358 4173b8 417938 41f59c -00512a74 42249c 4225a4 423dd3 423df4 4206d4 -00512a8c 420e84 422684 422fe0 -00512bc0 4173b8 417938 41b956 419c90 41c018 41bd34 41c500 41c800 41cab2 41cacd 41cad2 -00512cec 4173b8 417938 41b956 419c90 41c018 41bd34 41c500 41c800 41cab2 41cacd 41cad2 -00512f2c 4bf890 4173b8 417938 41f59c -00512f48 4bef4c 423dd3 423df4 4206d4 -00512f5c 420e84 422684 422fe0 -00513300 4c0efc 4173b8 417938 4bffa0 -00513314 41fc58 42e2ac 42e2e4 420e58 420e6e 42da08 420754 420e84 42e1ac 42e100 -005133dc 4c110c 4173b8 417938 41f59c -005133f0 41fc58 41f76c 41f680 420e58 420e6e 4206d4 420754 420e84 -005134c4 4c1484 4173b8 417938 41f59c -005134d8 41fc58 42e2ac 42e2e4 420e58 420e6e 42da08 420754 420e84 42e1ac 42e100 +0050ec1c 4afb96 417d9c 417db0 417dc4 417dd8 417e44 4016eb 4016fa 401709 401718 417dec 417e0c 417e2c 417e64 401727 40173a 40174d 401760 417e98 417ebc 4afb0d 417d9c 417db0 417dc4 417dd8 417e44 4016eb 4016fa 401709 401718 417dec 417e0c 417e2c 417e64 401727 40173a 40174d 401760 417e98 417ebc 4afa84 417c74 4afa39 417a80 4af9ee 417a80 4af524 4173b8 417938 41b956 419c90 41c018 4aeef8 4aef40 4add6c 4ad748 4aeee0 4ad10e 4add30 4ae050 4add00 4aebe8 4173b8 417938 41b956 419c90 41c018 41bd34 41c500 4ac1d4 4aea84 4aea9c 4ad10e 4ac144 4ac8c0 4aee2c 4ae980 4173b8 417938 41b956 419c90 41c018 41bd34 41c500 4add6c 4ae724 4ae70c 4ad10e 4add30 4ae050 4ae8b0 4ae5fc 4173b8 417938 41b956 419c90 41c018 41bd34 41c500 4add6c 4ae4d8 4ae534 4ad10e 4add30 4ae050 4add00 4adfd4 4173b8 417938 41b956 419c90 41c018 41bd34 41c500 4add6c 4ad748 4ad760 4ad10e 4add30 4ae050 4add00 +0050f45c 4b044c 4173b8 417938 41b956 419c90 41c018 41bd34 41c500 4ac1d4 4ac0bc 4ac22c 4ad10e 4ac144 4ac8c0 4b0280 4b029c 4b02b8 4b02d4 4b048c 4b0494 +0050f994 4b1bd0 417a80 4b1930 4173b8 417938 41b956 419c90 41c018 41bd34 41c500 4ac1d4 4b179c 4b1804 4ad10e 4ac144 4ac8c0 4b1a40 4b115c 4173b8 417938 41b956 419c90 41c018 41bd34 41c500 4add6c 4b0efc 4b0e6c 4ad10e 4b0f48 4b1224 4add00 4b1780 4b0b5c +0050fb0c 4b1d90 4173b8 417938 41b956 419c90 41c018 41bd34 41c500 4add6c 4b1bfc 4b1c18 4ad10e 4b0f48 4b1224 4add00 4b1780 4b0b5c +0050fd74 4b237c 4173b8 417938 41b956 419c90 41c018 41bd34 41c500 4add6c 4b21d0 4b215c 4ad10e 4add30 4ae050 4add00 +00510abc 4b3e88 4173b8 417938 41b956 419c90 41c018 41bd34 41c500 4ac1d4 4b2660 4b2678 4ad10e 4ac144 4ac8c0 4b1a40 +0051103c 4b6fc0 4173b8 417938 41b956 419c90 41c018 4b6a78 4b6a1c 4ac1d4 4b5be0 4b5bf8 4ad10e 4ac144 4ac8c0 4b1a40 +00511498 4b8794 4173b8 417938 41b956 419c90 41c018 41bd34 41c500 4ac1d4 4b179c 4b1804 4ad10e 4ac144 4ac8c0 4b1a40 4b8568 4173b8 417938 41b956 419c90 41c018 4b83b8 4b83f0 4ac1d4 4b179c 4b1804 4ad10e 4ac144 4ac8c0 4b1a40 4b816c 4173b8 417938 41b956 419c90 41c018 41bd34 41c500 4ac1d4 4b7780 4b77bc 4ad10e 4ac144 4ac8c0 4b1a40 +005117dc 4b9114 4173b8 417938 41b956 419c90 41c018 41bd34 41c500 4add6c 4b8a8c 4b8aa4 4ad10e 4b0f48 4b1224 4add00 4b8f94 4b8f3c +00511d2c 4b9b9c 4173b8 417938 41b956 419c90 41c018 4b964c 4b9690 4add6c 4b96d4 4b96ec 4ad10e 4b0f48 4b9d00 4add00 4b1780 4b0b5c 4b9c9c 4ba45c +00512078 4bb3c8 4173b8 417938 41b956 419c90 41c018 4ba568 4ba65c 4add6c 4bafc8 4ba4d0 4ad10e 4b0f48 4bb014 4add00 4bb42c 4ba6e0 4ba738 4bace8 +0051214c 4bb8b4 4173b8 417938 41b956 419c90 41c018 4ba568 4ba65c 4add6c 4bafc8 4ba4d0 4ad10e 4b0f48 4bb014 4add00 4bb42c 4ba6e0 4ba738 4bb878 +00512424 4bcbcf 417a80 4bc688 4173b8 417938 41b956 419c90 41c018 4b964c 4b9690 4bcabc 4bbae0 4bbaf8 4ad10e 4bbf88 4bc6c8 4add00 4b1780 4bbc20 4b9c9c 4bc104 +00512570 4bd060 4173b8 417938 41b956 419c90 41c018 4b964c 4b9690 4bcabc 4bcbfc 4bcc3c 4ad10e 4bbf88 4bc6c8 4add00 4b1780 4bbc20 4b9c9c 4bcc60 +0051286c 4bd6b0 4173b8 417938 41b956 419c90 41c018 41bd34 41c500 4bdb94 4bd2c0 4bd26c 4ad10e 4ac144 4ac8c0 4aee2c +00512934 4bdce8 4173b8 417938 41b956 419c90 41c018 4ba568 4ba65c 4add6c 4bafc8 4ba4d0 4ad10e 4b0f48 4bb014 4add00 4bb42c 4ba6e0 4ba738 4bdca4 +00512a5c 4be358 4173b8 417938 41f59c 41f570 422360 42249c 4225a4 423dd3 423df4 4206d4 4be058 420e84 422684 422fe0 422f44 +00512bbc 4be8bc 4173b8 417938 41b956 419c90 41c018 41bd34 41c500 41c800 41cab2 41cacd 41cad2 +00512ce8 4bee44 4173b8 417938 41b956 419c90 41c018 41bd34 41c500 41c800 41cab2 41cacd 41cad2 +00512f2c 4bf890 4173b8 417938 41f59c 41f570 422360 4bef28 4bef4c 423dd3 423df4 4206d4 4be058 420e84 422684 422fe0 422f44 +00513300 4c0efc 4173b8 417938 4bffa0 41f570 41fc58 42e2ac 42e2e4 420e58 420e6e 42da08 420754 420e84 42e1ac 42e100 42e0e0 4bfcac 4c1011 4173b8 417938 +005133dc 4c110c 4173b8 417938 41f59c 41f570 41fc58 41f76c 41f680 420e58 420e6e 4206d4 420754 420e84 4c1044 +005134c4 4c1484 4173b8 417938 41f59c 41f570 41fc58 42e2ac 42e2e4 420e58 420e6e 42da08 420754 420e84 42e1ac 42e100 42e0e0 42da68 00513588 4c1564 4173b8 417938 41b956 419c90 4c1590 4c15f0 -00514208 4c2d74 4c2db2 4c2da0 4c2bf2 4c2c30 4c2c1e 4c2a70 4c2aae 4c2a9c 4c1ea8 4173b8 417938 4c1fc0 444004 44400c 444720 -0051424c 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c1fd0 -0051898c 4c668d 4173b8 417938 4742f0 444004 44400c 444720 -005189ac 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 -005189d0 4c66b3 4173b8 417938 4742f0 444004 44400c 444720 -005189f0 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 -00518a14 4c66d9 4173b8 417938 4c5fa4 444004 44400c 444720 -00518a34 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c5fb8 4c5f30 4173b8 417938 4c5fa4 444004 44400c 444720 -00518a78 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c5fb8 4c5c80 4173b8 417938 4c5cf4 444004 44400c 444720 -00518abc 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c5d08 4c573c 4173b8 417938 4c58e8 444004 44400c 444720 -00518b00 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c5914 4c5500 4173b8 417938 4c4f14 444004 44400c 444720 -00518b44 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c552c 4c5364 4173b8 417938 4c4f14 444004 44400c 444720 -00518b88 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c4f28 4c51d8 4173b8 417938 4c4f14 444004 44400c 444720 -00518bcc 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c4f28 4c4e7c 4173b8 417938 4c4f14 444004 44400c 444720 -00518c10 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c4f28 4c4c68 4173b8 417938 4c4cac 444004 44400c 444720 -00518c54 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c4cc0 4c486c 4173b8 417938 4c48e0 444004 44400c 444720 -00518c98 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c48fc 4c42b0 4173b8 417938 4c4324 444004 44400c 444720 -00518cdc 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c4340 4c66ff 4173b8 417938 4c395c 444004 44400c 444720 -00518d20 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c3980 4c6725 4173b8 417938 4c395c 444004 44400c 444720 -00518d64 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c3980 4c674b 4173b8 417938 4c395c 444004 44400c 444720 -00518da8 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c3980 4c6771 4173b8 417938 4c395c 444004 44400c 444720 -00518dec 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c3c1c 4c38dc 4173b8 417938 4c395c 444004 44400c 444720 -00518e30 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c3980 4c36d8 4c3718 4c3720 4c35c8 4c3608 4c3610 4c34b4 4c34ec 4c34f4 4c33e8 4c3428 4c3430 4c3350 4c3388 4c3390 4c32b4 4c32ec 4c32f4 4c3218 4c3250 4c3258 4c3160 4c3198 4c31a0 -00519e98 4c9940 4173b8 417938 4c99cc 444004 44400c 444720 -00519eb8 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c9a38 4c9b24 4c9adc 4c9b50 4c94dc 4173b8 417938 4c9520 444004 44400c 444720 -00519f08 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c9290 4c92e4 4c8990 4c932c 4c91d4 4173b8 417938 4c9258 444004 44400c 444720 -00519f58 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c9290 4c92e4 4c8990 4c932c 4c8f54 4173b8 417938 4c8f98 444004 44400c 444720 -00519fa8 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c88e4 4c8a28 4c8990 4c8d18 4173b8 417938 4c8d5c 444004 44400c 444720 -00519ff4 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c8db0 4c8a28 4c8990 4c87dc 4173b8 417938 4c8820 444004 44400c 444720 -0051a040 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c88e4 4c8a28 4c8990 4c7d14 4173b8 417938 4c7e48 444004 44400c 444078 444080 444028 444088 444090 444098 4440a0 4c7778 4173b8 417938 4c77ec 444004 44400c 444720 -0051a0c0 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c7844 4c733c 4173b8 417938 47246c 444004 44400c 444720 -0051a104 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 472480 47313c 4731d8 4c71f0 4173b8 417938 4c4f14 444004 44400c 444720 -0051a150 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c4f28 4c7134 4173b8 417938 4c4f14 444004 44400c 444720 -0051a194 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c4f28 4c6e54 4173b8 417938 4c6ef4 444004 44400c 444720 -0051a1d8 44467c 4c6ee0 444090 444098 4446fc 444588 4445a4 444600 4c6f1c 4c68ac 4173b8 417938 4c6920 444004 44400c 444720 -0051a21c 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c6934 -0051bddc 4cb788 4173b8 417938 4cb7fc 444004 44400c 444720 -0051bdfc 44467c 4cb818 444090 444098 4446fc 444588 4445a4 444600 4cb82c 4cb28c 4173b8 417938 4cb310 444004 44400c 444720 -0051be40 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4cb358 4cab10 4173b8 417938 4caba4 444004 44400c 444720 -0051be84 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4cabd0 4ca39c 4173b8 417938 4ca438 444004 44400c 444720 -0051bec8 44467c 4ca424 444090 444098 4446fc 444588 4445a4 444600 4ca478 4c9f94 4173b8 417938 4ca038 444004 44400c 444720 -0051bf0c 44467c 4ca068 444090 444098 4446fc 444588 4445a4 444600 4ca07c +00514208 4c2d74 4c2db2 4c2da0 4c2bf2 4c2c30 4c2c1e 4c2a70 4c2aae 4c2a9c 4c1ea8 4173b8 417938 4c1fc0 444004 44400c 444720 444764 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c1fd0 +0051898c 4c668d 4173b8 417938 4742f0 444004 44400c 444720 444764 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c6488 4c66b3 4173b8 417938 4742f0 444004 44400c 444720 444764 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c62d8 4c66d9 4173b8 417938 4c5fa4 444004 44400c 444720 444764 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c5fb8 4c5f30 4173b8 417938 4c5fa4 444004 44400c 444720 444764 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c5fb8 4c5c80 4173b8 417938 4c5cf4 444004 44400c 444720 444764 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c5d08 4c573c 4173b8 417938 4c58e8 444004 44400c 444720 444764 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c5914 4c5500 4173b8 417938 4c4f14 444004 44400c 444720 444764 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c552c 4c5364 4173b8 417938 4c4f14 444004 44400c 444720 444764 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c4f28 4c51d8 4173b8 417938 4c4f14 444004 44400c 444720 444764 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c4f28 4c4e7c 4173b8 417938 4c4f14 444004 44400c 444720 444764 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c4f28 4c4c68 4173b8 417938 4c4cac 444004 44400c 444720 444764 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c4cc0 4c486c 4173b8 417938 4c48e0 444004 44400c 444720 444764 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c48fc 4c42b0 4173b8 417938 4c4324 444004 44400c 444720 444764 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c4340 4c66ff 4173b8 417938 4c395c 444004 44400c 444720 444764 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c3980 4c6725 4173b8 417938 4c395c 444004 44400c 444720 444764 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c3980 4c674b 4173b8 417938 4c395c 444004 44400c 444720 444764 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c3980 4c6771 4173b8 417938 4c395c 444004 44400c 444720 444764 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c3c1c 4c38dc 4173b8 417938 4c395c 444004 44400c 444720 444764 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c3980 4c36d8 4c3718 4c3720 4c35c8 4c3608 4c3610 4c34b4 4c34ec 4c34f4 4c33e8 4c3428 4c3430 4c3350 4c3388 4c3390 4c32b4 4c32ec 4c32f4 4c3218 4c3250 4c3258 4c3160 4c3198 4c31a0 +00519e98 4c9940 4173b8 417938 4c99cc 444004 44400c 444720 444764 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c9a38 4c9b24 4c9adc 4c9b50 4c94dc 4173b8 417938 4c9520 444004 44400c 444720 444764 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c9290 4c92e4 4c8990 4c932c 4c91d4 4173b8 417938 4c9258 444004 44400c 444720 444764 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c9290 4c92e4 4c8990 4c932c 4c8f54 4173b8 417938 4c8f98 444004 44400c 444720 444764 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c88e4 4c8a28 4c8990 4c8d18 4173b8 417938 4c8d5c 444004 44400c 444720 444764 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c8db0 4c8a28 4c8990 4c87dc 4173b8 417938 4c8820 444004 44400c 444720 444764 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c88e4 4c8a28 4c8990 4c7d14 4173b8 417938 4c7e48 444004 44400c 444078 444080 444028 444088 444090 444098 4440a0 4c7778 4173b8 417938 4c77ec 444004 44400c 444720 444764 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c7844 4c733c 4173b8 417938 47246c 444004 44400c 444720 444764 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 472480 47313c 4731d8 4c71f0 4173b8 417938 4c4f14 444004 44400c 444720 444764 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c4f28 4c7134 4173b8 417938 4c4f14 444004 44400c 444720 444764 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c4f28 4c6e54 4173b8 417938 4c6ef4 444004 44400c 444720 444764 44467c 4c6ee0 444090 444098 4446fc 444588 4445a4 444600 4c6f1c 4c68ac 4173b8 417938 4c6920 444004 44400c 444720 444764 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4c6934 +0051bddc 4cb788 4173b8 417938 4cb7fc 444004 44400c 444720 444764 44467c 4cb818 444090 444098 4446fc 444588 4445a4 444600 4cb82c 4cb28c 4173b8 417938 4cb310 444004 44400c 444720 444764 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4cb358 4cab10 4173b8 417938 4caba4 444004 44400c 444720 444764 44467c 444088 444090 444098 4446fc 444588 4445a4 444600 4cabd0 4ca39c 4173b8 417938 4ca438 444004 44400c 444720 444764 44467c 4ca424 444090 444098 4446fc 444588 4445a4 444600 4ca478 4c9f94 4173b8 417938 4ca038 444004 44400c 444720 444764 44467c 4ca068 444090 444098 4446fc 444588 4445a4 444600 4ca07c 0051ceb0 4cc0e1 4cc294 4cc2fc 4cbf40 4173b8 417938 41b956 419c90 447b70 435ee4 4482d4 43688f 4cbfa0 4cc028 448164 46fc98 46fcb0 4368a3 4368a8 447e18 447e40 46fc5c 46ffcc 44895c 46fce0 46fd10 470084 -0051da98 4d12e3 418434 418448 41845c 418470 4184dc 4016eb 4016fa 401709 401718 418484 4184a4 4184c4 4184fc 401727 40173a 40174d 401760 418530 41854c 418570 4d125a 41830c 4ceefc 4173b8 417938 41b956 419c90 435e70 435ee4 436888 460590 436920 4d0c5c -0051db28 460a7c 4d097c 4d0c14 4368ad 4368b2 4d0774 4d130f -0051db48 4173b8 417938 41b956 419c90 -0051e3a0 4d27cc 4173b8 417938 41b956 419c90 41c018 41bd34 41c500 4ac1d4 4ac0bc 4ac22c 4ad10e 4ac144 4ac8c0 4d1840 4d18dc 4d25e8 4d262c -0051e3ec 4d1ae4 4d22b4 4173b8 417938 41b956 419c90 41c018 41bd34 41c500 4ac1d4 4ac0bc 4ac22c 4ad10e 4ac144 4ac8c0 4d1840 4d18dc 4d195c 4d1964 -0051e43c 4d1ae4 4d1814 4173b8 417938 41b956 419c90 41c018 41bd34 41c500 4ac1d4 4ac0bc 4ac22c 4ad10e 4ac144 4ac8c0 4d1840 4d18dc 4d195c 4d1964 +0051da98 4d12e3 418434 418448 41845c 418470 4184dc 4016eb 4016fa 401709 401718 418484 4184a4 4184c4 4184fc 401727 40173a 40174d 401760 418530 41854c 418570 4d125a 41830c 4ceefc 4173b8 417938 41b956 419c90 435e70 435ee4 436888 460590 436920 4d0c5c 45fa08 460820 460a7c 4d097c 4d0c14 4368ad 4368b2 4d0774 4d130f 4cd804 4173b8 417938 41b956 419c90 4cdcf0 +0051e3a0 4d27cc 4173b8 417938 41b956 419c90 41c018 41bd34 41c500 4ac1d4 4ac0bc 4ac22c 4ad10e 4ac144 4ac8c0 4d1840 4d18dc 4d25e8 4d262c 4d1acc 4d1ae4 4d22b4 4173b8 417938 41b956 419c90 41c018 41bd34 41c500 4ac1d4 4ac0bc 4ac22c 4ad10e 4ac144 4ac8c0 4d1840 4d18dc 4d195c 4d1964 4d1acc 4d1ae4 4d1814 4173b8 417938 41b956 419c90 41c018 41bd34 41c500 4ac1d4 4ac0bc 4ac22c 4ad10e 4ac144 4ac8c0 4d1840 4d18dc 4d195c 4d1964 4d1acc 4d1ae4 0051e518 4d2b90 4173b8 417938 41b956 419c90 44202c 435ee4 442675 43688f 467908 467940 467b04 46795c 467964 442268 4368a8 4368ad 4368b2 4674c4 4d2bbc 4d2a60 4d2b4c 4d2b34 -0051ed9c 4d350c 4173b8 417938 41b956 419c90 41d59c 47b44c 44e254 44e488 -0051edc4 44e6e8 47b608 47b650 4d36c4 4d36f4 47b49c 4d3538 4d3644 47b508 44e3c0 4d35b0 4d3564 4d368c 4d3614 -0051f1a4 4d3ea0 4173b8 417938 41b956 419c90 41d59c 4d3c34 4d3c44 4d3d40 -0051f1cc 44e6e8 47b608 47b650 4d36c4 4d36f4 4d3c14 4d3538 4d3644 47b508 44e3c0 4d35b0 4d3564 4d368c 4d3614 4d3bb8 4173b8 417938 41b956 419c90 47c634 4d3b90 -0052051c 4dc4d0 4dc41c 4d9e78 -005206fc 4dc4d0 4dc41c 4dbf44 +0051ed98 4c19b0 4d350c 4173b8 417938 41b956 419c90 41d59c 47b44c 44e254 44e488 44e5a8 44e6e8 47b608 47b650 4d36c4 4d36f4 47b49c 4d3538 4d3644 47b508 44e3c0 4d35b0 4d3564 4d368c 4d3614 +0051f1a4 4d3ea0 4173b8 417938 41b956 419c90 41d59c 4d3c34 4d3c44 4d3d40 4d3e78 44e6e8 47b608 47b650 4d36c4 4d36f4 4d3c14 4d3538 4d3644 47b508 44e3c0 4d35b0 4d3564 4d368c 4d3614 4d3bb8 4173b8 417938 41b956 419c90 47c634 4d3b90 +0052050c 4d9e28 4da090 4dc3a8 4da300 4dc4d0 4dc41c 4d9e78 4da108 4dc5c8 4da208 4dc880 4dc888 4dc324 +005206ec 4dbe58 4dc098 4dc3a8 4dc1e0 4dc4d0 4dc41c 4dbf44 4dc0b8 4dc5c8 4dc1d8 4dbdf1 4dbdf6 4dbdfc +00520748 4dc48c 4dc4d8 4dc3a8 4dc660 4dc4d0 4dc41c 4dc4c8 4dc5c0 4dc5c8 4dc628 4dbdf1 4dbdf6 4dc324 00520964 4dd24c 4dd24c 4dd258 4dd258 00520c14 4dedc8 4dedc8 4dedc8 diff --git a/reference/ghidra_scripts/ExportGaps.java b/reference/ghidra_scripts/ExportGaps.java new file mode 100644 index 0000000..412b8df --- /dev/null +++ b/reference/ghidra_scripts/ExportGaps.java @@ -0,0 +1,264 @@ +// ExportGaps -- the #60 re-export: FILL the dark regions, then decompile everything. +// +// Same output contract as ExportAll.java (so tools/gapcensus.py, the KB's @ADDR +// citations and every existing grep keep working): +// /all/part_NNN.c "/* @ADDR file=TAG name=NAME */" + pseudocode, 400 fns/shard +// /functions_index.tsv addrsizefileTagname +// /vtables.tsv runs of >=3 consecutive function pointers in data +// /gapfill_report.tsv what this pass CREATED (addr, evidence, round) +// +// What it adds: before exporting, force disassembly + function creation at every +// plausible function start Ghidra's auto-analysis missed -- +// (a) E8 call targets that land outside any function, +// (b) data-section dwords pointing into .text (vtables / handler tables / +// Performance pointers) at a plausible prologue, +// (c) the starts discovered by tools/gapcensus.py (gap_census.tsv, col 5), +// iterated to a fixpoint because each new function reveals new call targets. +// +// Output dir is overridable: analyzeHeadless ... -postScript ExportGaps.java +import ghidra.app.script.GhidraScript; +import ghidra.app.decompiler.*; +import ghidra.program.model.address.*; +import ghidra.program.model.listing.*; +import ghidra.program.model.mem.*; +import ghidra.program.model.symbol.*; +import java.io.*; +import java.util.*; + +public class ExportGaps extends GhidraScript { + + static final String DEFAULT_OUT = "C:\\git\\bt411\\reference\\decomp\\reexport"; + static final String CENSUS_TSV = "C:\\git\\bt411\\reference\\decomp\\gap_census.tsv"; + + FunctionManager fm; + Memory mem; + + public void run() throws Exception { + String[] args = getScriptArgs(); + File outDir = new File(args.length > 0 ? args[0] : DEFAULT_OUT); + outDir.mkdirs(); + File allDir = new File(outDir, "all"); + allDir.mkdirs(); + + fm = currentProgram.getFunctionManager(); + mem = currentProgram.getMemory(); + ReferenceManager rm = currentProgram.getReferenceManager(); + Listing listing = currentProgram.getListing(); + + int before = fm.getFunctionCount(); + println("functions after auto-analysis: " + before); + + // --------------------------------------------------------------- + // 0) THE GAP FILL + // --------------------------------------------------------------- + PrintWriter gf = new PrintWriter(new FileWriter(new File(outDir, "gapfill_report.tsv"))); + gf.println("addr\tevidence\tround"); + + List code = new ArrayList<>(); + List dataBlocks = new ArrayList<>(); + for (MemoryBlock b : mem.getBlocks()) { + if (!b.isInitialized()) continue; + if (b.isExecute()) code.add(b); else dataBlocks.add(b); + } + + // candidate -> evidence string (first evidence wins) + LinkedHashMap cand = new LinkedHashMap<>(); + + // (c) census starts -- cheap, load first so they carry that evidence tag + int censusN = 0; + File cf = new File(CENSUS_TSV); + if (cf.exists()) { + BufferedReader br = new BufferedReader(new FileReader(cf)); + String line = br.readLine(); // header + while ((line = br.readLine()) != null) { + String[] f = line.split("\t", -1); + if (f.length < 5 || f[4].isEmpty()) continue; + for (String s : f[4].split(",")) { + if (s.isEmpty()) continue; + try { cand.put(Long.parseLong(s.trim(), 16), "census"); censusN++; } + catch (NumberFormatException ex) { /* skip */ } + } + } + br.close(); + } + println("census starts loaded: " + censusN); + + // (b) data-section pointers into code + int dptrN = 0; + for (MemoryBlock b : dataBlocks) { + byte[] buf = new byte[(int) b.getSize()]; + try { b.getBytes(b.getStart(), buf); } catch (Exception ex) { continue; } + for (int i = 0; i + 4 <= buf.length; i += 4) { + long v = le32(buf, i); + if (!inCode(code, v)) continue; + if (!cand.containsKey(v)) { cand.put(v, "dataptr"); dptrN++; } + } + } + println("data->code pointers: " + dptrN); + + // (a) E8 call targets (rounds happen below; the scan itself is per-round + // because newly disassembled bytes can expose more calls) + int created = 0; + for (int round = 1; round <= 4 && !monitor.isCancelled(); round++) { + int callN = 0; + for (MemoryBlock b : code) { + byte[] buf = new byte[(int) b.getSize()]; + try { b.getBytes(b.getStart(), buf); } catch (Exception ex) { continue; } + long base = b.getStart().getOffset(); + for (int i = 0; i + 5 <= buf.length; i++) { + if ((buf[i] & 0xff) != 0xE8) continue; + long tgt = base + i + 5 + (int) le32(buf, i + 1); + if (!inCode(code, tgt)) continue; + if (!cand.containsKey(tgt)) { cand.put(tgt, "call"); callN++; } + } + } + println("round " + round + ": call targets added " + callN + + " (candidates " + cand.size() + ")"); + + int made = 0; + for (Map.Entry e : new ArrayList<>(cand.entrySet())) { + if (monitor.isCancelled()) break; + long va = e.getKey(); + Address a; + try { a = toAddr(va); } catch (Exception ex) { continue; } + if (fm.getFunctionContaining(a) != null) continue; // already covered + if (!"call".equals(e.getValue()) && !looksLikePrologue(a)) continue; + try { + if (listing.getInstructionAt(a) == null) disassemble(a); + Function nf = createFunction(a, null); + if (nf != null) { + made++; created++; + gf.println(a + "\t" + e.getValue() + "\t" + round); + } + } catch (Exception ex) { /* not code / collides -- skip */ } + } + println("round " + round + ": functions created " + made); + if (made == 0) break; + } + gf.close(); + println("GAP FILL created " + created + " functions (" + + before + " -> " + fm.getFunctionCount() + ")"); + + // let the analyzers process the new code before decompiling + try { analyzeChanges(currentProgram); } catch (Exception ex) { + println("analyzeChanges skipped: " + ex.getMessage()); + } + + // --------------------------------------------------------------- + // 1) file attribution via embedded assert paths (unchanged from ExportAll) + // --------------------------------------------------------------- + Map funcFile = new HashMap<>(); + DataIterator di = listing.getDefinedData(true); + while (di.hasNext() && !monitor.isCancelled()) { + Data d = di.next(); + if (d == null || !d.hasStringValue()) continue; + Object v = d.getValue(); + if (v == null) continue; + String s = v.toString().toLowerCase().replace('/', '\\'); + if (!s.contains("\\tesla_bt\\")) continue; + if (!(s.endsWith(".cpp") || s.endsWith(".hpp"))) continue; + String file = s.substring(s.lastIndexOf('\\') + 1); + String dir = s.contains("\\bt_l4\\") ? "bt_l4" : s.contains("\\bt\\") ? "bt" + : s.contains("\\munga_l4\\") ? "munga_l4" : "munga"; + String tag = dir + "/" + file; + for (Reference ref : rm.getReferencesTo(d.getAddress())) { + Function f = fm.getFunctionContaining(ref.getFromAddress()); + if (f != null) funcFile.put(f.getEntryPoint().getOffset(), tag); + } + } + println("attributed functions: " + funcFile.size()); + + // --------------------------------------------------------------- + // 2) vtable recovery (unchanged) + // --------------------------------------------------------------- + PrintWriter vt = new PrintWriter(new FileWriter(new File(outDir, "vtables.tsv"))); + int vtCount = 0; + for (MemoryBlock b : mem.getBlocks()) { + if (!b.isInitialized() || b.isExecute()) continue; + Address a = b.getStart(), end = b.getEnd(); + List run = new ArrayList<>(); + Address runStart = null; + while (a.compareTo(end) < 0 && !monitor.isCancelled()) { + long val; + try { val = mem.getInt(a) & 0xffffffffL; } catch (Exception ex) { break; } + Function f = null; + try { f = fm.getFunctionAt(a.getNewAddress(val)); } catch (Exception ex) {} + if (f != null) { if (run.isEmpty()) runStart = a; run.add(val); } + else { if (run.size() >= 3) { writeVt(vt, runStart, run); vtCount++; } run.clear(); } + a = a.add(4); + } + if (run.size() >= 3) { writeVt(vt, runStart, run); vtCount++; } + } + vt.close(); + println("vtables recovered: " + vtCount); + + // --------------------------------------------------------------- + // 3) decompile everything, sharded 400/file (unchanged contract) + // --------------------------------------------------------------- + DecompInterface dec = new DecompInterface(); + dec.openProgram(currentProgram); + PrintWriter idx = new PrintWriter(new FileWriter(new File(outDir, "functions_index.tsv"))); + FunctionIterator it = fm.getFunctions(true); + int count = 0, shard = 0, failed = 0; + PrintWriter out = null; + while (it.hasNext() && !monitor.isCancelled()) { + Function f = it.next(); + if (count % 400 == 0) { + if (out != null) out.close(); + out = new PrintWriter(new FileWriter(new File(allDir, String.format("part_%03d.c", shard++)))); + } + count++; + long off = f.getEntryPoint().getOffset(); + String tag = funcFile.getOrDefault(off, "?"); + idx.println(Long.toHexString(off) + "\t" + f.getBody().getNumAddresses() + "\t" + tag + "\t" + f.getName()); + try { + DecompileResults r = dec.decompileFunction(f, 45, monitor); + out.println("/* @" + f.getEntryPoint() + " file=" + tag + " name=" + f.getName() + " */"); + if (r != null && r.decompileCompleted() && r.getDecompiledFunction() != null) + out.println(r.getDecompiledFunction().getC()); + else { out.println("// "); failed++; } + out.println(); + } catch (Exception ex) { + out.println("// \n"); + failed++; + } + if (count % 500 == 0) println("decompiled " + count + " ..."); + } + if (out != null) out.close(); + idx.close(); + dec.dispose(); + println("DONE. functions: " + count + " (shards " + shard + ", decompile failures " + failed + ")"); + } + + boolean inCode(List code, long va) { + for (MemoryBlock b : code) + if (va >= b.getStart().getOffset() && va < b.getEnd().getOffset()) return true; + return false; + } + + boolean looksLikePrologue(Address a) { + try { + byte[] p = new byte[3]; + mem.getBytes(a, p); + int b0 = p[0] & 0xff, b1 = p[1] & 0xff; + return (b0 == 0x55 && b1 == 0x8b) // push ebp; mov ebp,esp + || b0 == 0x53 || b0 == 0x56 || b0 == 0x57 // push ebx/esi/edi + || b0 == 0xC8 // enter + || (b0 == 0x83 && b1 == 0xEC) // sub esp, imm8 + || (b0 == 0x81 && b1 == 0xEC); // sub esp, imm32 + } catch (Exception ex) { return false; } + } + + static long le32(byte[] b, int i) { + return ((long) (b[i] & 0xff)) + | ((long) (b[i + 1] & 0xff) << 8) + | ((long) (b[i + 2] & 0xff) << 16) + | ((long) (b[i + 3] & 0xff) << 24); + } + + void writeVt(PrintWriter vt, Address start, List run) { + StringBuilder sb = new StringBuilder(start.toString()); + for (Long v : run) sb.append("\t").append(Long.toHexString(v)); + vt.println(sb.toString()); + } +} diff --git a/tools/gapcensus.py b/tools/gapcensus.py index 23cd3b3..44e258e 100644 --- a/tools/gapcensus.py +++ b/tools/gapcensus.py @@ -30,10 +30,19 @@ import sys ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) EXE = os.path.join(ROOT, 'content', 'BTL4OPT.EXE') -IDX = os.path.join(ROOT, 'reference', 'decomp', 'functions_index.tsv') -PARTS = os.path.join(ROOT, 'reference', 'decomp', 'all', 'part_*.c') -OUT_MD = os.path.join(ROOT, 'reference', 'decomp', 'GAP_CENSUS.md') -OUT_TSV = os.path.join(ROOT, 'reference', 'decomp', 'gap_census.tsv') + +# Census any export tree: gapcensus.py [] +# default = reference/decomp (the canonical export) +# e.g. reference/decomp/reexport (a candidate re-export -- writes its +# own GAP_CENSUS.md/gap_census.tsv inside that dir, so the two are +# directly diffable) +DECOMP = os.path.join(ROOT, 'reference', 'decomp') +if len(sys.argv) > 1: + DECOMP = os.path.abspath(sys.argv[1]) +IDX = os.path.join(DECOMP, 'functions_index.tsv') +PARTS = os.path.join(DECOMP, 'all', 'part_*.c') +OUT_MD = os.path.join(DECOMP, 'GAP_CENSUS.md') +OUT_TSV = os.path.join(DECOMP, 'gap_census.tsv') MIN_REGION = 16 # ignore alignment slivers below this many bytes TOP_REGIONS = 40 # detail table size diff --git a/tools/gapdiff.py b/tools/gapdiff.py new file mode 100644 index 0000000..5ebc03a --- /dev/null +++ b/tools/gapdiff.py @@ -0,0 +1,122 @@ +#!/usr/bin/env python3 +"""gapdiff.py -- score a candidate re-export against the canonical one. + + python tools/gapdiff.py [oldDecompDir] [newDecompDir] + defaults: reference/decomp reference/decomp/reexport + +Both dirs must already have been censused (tools/gapcensus.py ). +Reports: index/coverage deltas, dark regions closed, and -- the part that +matters for reconstruction -- which previously-dark addresses the KB already +cites (past raw-disasm digs) now have real pseudocode, plus how much of the +never-touched game-side dark came into the light. +""" +import os +import re +import sys +import glob + +ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) +OLD = os.path.abspath(sys.argv[1]) if len(sys.argv) > 1 else os.path.join(ROOT, 'reference', 'decomp') +NEW = os.path.abspath(sys.argv[2]) if len(sys.argv) > 2 else os.path.join(ROOT, 'reference', 'decomp', 'reexport') + +# addresses the KB/port cite (a past dig reached them) -- the practical audience +CITE = set() +_pat = re.compile(r'(?:@|FUN_|0x)0{0,2}(4[0-9a-f]{5})\b', re.I) +for base in ('game', 'context', 'docs'): + for dp, _d, fs in os.walk(os.path.join(ROOT, base)): + for fn in fs: + if fn.lower().endswith(('.cpp', '.hpp', '.h', '.md')): + try: + for m in _pat.finditer(open(os.path.join(dp, fn), encoding='utf-8', + errors='replace').read()): + CITE.add(int(m.group(1), 16)) + except OSError: + pass + + +def load_index(d): + idx = {} + p = os.path.join(d, 'functions_index.tsv') + for line in open(p, encoding='utf-8', errors='replace'): + f = line.rstrip('\n').split('\t') + if len(f) < 4: + continue + try: + idx[int(f[0], 16)] = (int(f[1]), f[2], f[3]) + except ValueError: + pass + return idx + + +def load_regions(d): + p = os.path.join(d, 'gap_census.tsv') + out = [] + for line in open(p, encoding='utf-8', errors='replace').read().splitlines()[1:]: + f = line.split('\t') + if len(f) < 8: + f += [''] * (8 - len(f)) + out.append({'lo': int(f[0], 16), 'hi': int(f[1], 16), 'size': int(f[2]), + 'code': int(f[3]), 'visited': f[6], 'tu': f[7]}) + return out + + +def exported_addrs(d): + got = set() + hdr = re.compile(r'/\* @(00[0-9a-f]{6}) ') + for p in sorted(glob.glob(os.path.join(d, 'all', 'part_*.c'))): + for m in hdr.finditer(open(p, encoding='utf-8', errors='replace').read()): + got.add(int(m.group(1), 16)) + return got + + +def main(): + oi, ni = load_index(OLD), load_index(NEW) + orr, nr = load_regions(OLD), load_regions(NEW) + oe, ne = exported_addrs(OLD), exported_addrs(NEW) + + o_dark = sum(r['code'] for r in orr) + n_dark = sum(r['code'] for r in nr) + o_game = sum(r['code'] for r in orr if 'bt/' in r['tu'] or 'bt_l4/' in r['tu']) + n_game = sum(r['code'] for r in nr if 'bt/' in r['tu'] or 'bt_l4/' in r['tu']) + + new_fns = sorted(set(ni) - set(oi)) + # which new functions land in what USED to be dark + def in_old_dark(a): + for r in orr: + if r['lo'] <= a < r['hi']: + return True + return False + new_in_dark = [a for a in new_fns if in_old_dark(a)] + cited_new = [a for a in new_in_dark if a in CITE] + + print('=== GAP DIFF: %s -> %s' % (os.path.basename(OLD), os.path.basename(NEW))) + print('indexed functions : %d -> %d (+%d)' % (len(oi), len(ni), len(ni) - len(oi))) + print('exported pseudocode: %d -> %d (+%d)' % (len(oe), len(ne), len(ne) - len(oe))) + print('dark regions : %d -> %d (%+d)' % (len(orr), len(nr), len(nr) - len(orr))) + print('dark REAL code : %.1f KB -> %.1f KB (%+.1f KB, %.1f%% recovered)' + % (o_dark / 1024, n_dark / 1024, (n_dark - o_dark) / 1024, + 100.0 * (o_dark - n_dark) / o_dark if o_dark else 0)) + print(' game-side dark : %.1f KB -> %.1f KB (%+.1f KB)' + % (o_game / 1024, n_game / 1024, (n_game - o_game) / 1024)) + print('new functions in previously-DARK bytes: %d' % len(new_in_dark)) + print(' ...of which the KB/port already cites (past raw-disasm digs): %d' % len(cited_new)) + if cited_new: + print(' ' + ' '.join('%x' % a for a in cited_new[:24]) + + (' ...' if len(cited_new) > 24 else '')) + + # celebrity check -- the addresses that historically burned us + fam = [(0x4c05c4, 'VehicleDead handler'), (0x4b838c, 'Searchlight ToggleLamp'), + (0x4a07b8, 'TakeDamage death tail'), (0x4a9b5c, 'master perf'), + (0x4b8be3, 'myomer integrator'), (0x4aa011, 'duck consumer'), + (0x486467, 'btmssn dispatch cluster'), (0x4c090a, 'btplayer hole')] + print('--- celebrities (function created? exported?)') + for a, what in fam: + # nearest containing function in the new index + owner = max((x for x in ni if x <= a and x + ni[x][0] > a), default=None) + print(' %-24s %s' % (what, ('IN %06x (%s)%s' % (owner, ni[owner][2], + ' +pseudocode' if owner in ne else '')) + if owner else 'still dark')) + + +if __name__ == '__main__': + main() diff --git a/tools/ghidra_reexport.sh b/tools/ghidra_reexport.sh new file mode 100644 index 0000000..6a93798 --- /dev/null +++ b/tools/ghidra_reexport.sh @@ -0,0 +1,50 @@ +#!/usr/bin/env bash +# #60 re-export -- headless Ghidra: analyze BTL4OPT.EXE, fill the dark regions +# (ExportGaps.java), and write a full pseudocode export we can diff against the +# canonical one. +# +# tools/ghidra_reexport.sh # first run: import + full auto-analysis +# tools/ghidra_reexport.sh reprocess # re-run the script on the saved project +# +# Output: reference/decomp/reexport/{all/part_*.c, functions_index.tsv, +# vtables.tsv, gapfill_report.tsv, headless.log} +# Score it with: python tools/gapcensus.py reference/decomp/reexport +set -e + +# NB: Ghidra's launcher .bat uses %JAVA_HOME% UNQUOTED, so a space anywhere in +# these paths kills it ("'C:\Users\Joe' is not recognized"). The tools live under +# the user profile (space in "Joe Laptop"), so use the 8.3 SHORT forms. +TOOLS="/c/Users/JOELAP~1/AppData/Local/BT411-~1" +GHIDRA="$TOOLS/GHIDRA~1.2_P" +export JAVA_HOME='C:\Users\JOELAP~1\AppData\Local\BT411-~1\JDK-21~1.12_' +PROJDIR="$TOOLS/ghidra_projects" +PROJ="BT411" + +OUT_W='C:\git\bt411\reference\decomp\reexport' +SCRIPTS_W='C:\git\bt411\reference\ghidra_scripts' +EXE_W='C:\git\bt411\content\BTL4OPT.EXE' +PROJDIR_W="$(cygpath -w "$PROJDIR")" +LOG_W='C:\git\bt411\reference\decomp\reexport\headless.log' + +mkdir -p "$PROJDIR" /c/git/bt411/reference/decomp/reexport + +if [ ! -x "$GHIDRA/support/analyzeHeadless.bat" ] && [ ! -f "$GHIDRA/support/analyzeHeadless.bat" ]; then + echo "ghidra not found at $GHIDRA" >&2; exit 1 +fi +"$TOOLS/JDK-21~1.12_/bin/java.exe" -version 2>&1 | head -1 + +if [ "$1" = "reprocess" ]; then + MODE=(-process BTL4OPT.EXE -noanalysis) +else + MODE=(-import "$EXE_W") +fi + +echo "== analyzeHeadless: ${MODE[0]} ==" +"$GHIDRA/support/analyzeHeadless.bat" "$PROJDIR_W" "$PROJ" \ + "${MODE[@]}" \ + -scriptPath "$SCRIPTS_W" \ + -postScript ExportGaps.java "$OUT_W" \ + -log "$LOG_W" + +echo "== done; scoring ==" +python /c/git/bt411/tools/gapcensus.py /c/git/bt411/reference/decomp/reexport | tail -3